<?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>233240</bug_id>
          
          <creation_ts>2021-11-16 22:24:43 -0800</creation_ts>
          <short_desc>Miscellaneous Heap related clean ups.</short_desc>
          <delta_ts>2021-11-23 22:26:18 -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>JavaScriptCore</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>ASSIGNED</bug_status>
          <resolution></resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Mark Lam">mark.lam</reporter>
          <assigned_to name="Mark Lam">mark.lam</assigned_to>
          <cc>alecflett</cc>
    
    <cc>annulen</cc>
    
    <cc>beidson</cc>
    
    <cc>cdumez</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>hi</cc>
    
    <cc>joepeck</cc>
    
    <cc>jsbell</cc>
    
    <cc>keith_miller</cc>
    
    <cc>msaboff</cc>
    
    <cc>pangle</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>saam</cc>
    
    <cc>sergio</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1815822</commentid>
    <comment_count>0</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2021-11-16 22:24:43 -0800</bug_when>
    <thetext>This is a collection of things that I noticed while reading Heap code that can use some clean up.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1815826</commentid>
    <comment_count>1</comment_count>
      <attachid>444480</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2021-11-16 22:28:16 -0800</bug_when>
    <thetext>Created attachment 444480
work in progress for EWS testing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1816564</commentid>
    <comment_count>2</comment_count>
      <attachid>444716</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2021-11-18 12:31:13 -0800</bug_when>
    <thetext>Created attachment 444716
work in progress.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1816576</commentid>
    <comment_count>3</comment_count>
      <attachid>444721</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2021-11-18 12:52:20 -0800</bug_when>
    <thetext>Created attachment 444721
proposed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1816623</commentid>
    <comment_count>4</comment_count>
      <attachid>444734</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2021-11-18 14:17:27 -0800</bug_when>
    <thetext>Created attachment 444734
proposed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1816640</commentid>
    <comment_count>5</comment_count>
      <attachid>444742</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2021-11-18 14:44:29 -0800</bug_when>
    <thetext>Created attachment 444742
proposed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1816973</commentid>
    <comment_count>6</comment_count>
      <attachid>444849</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2021-11-19 13:12:12 -0800</bug_when>
    <thetext>Created attachment 444849
work in progress.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1816992</commentid>
    <comment_count>7</comment_count>
      <attachid>444853</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2021-11-19 14:06:18 -0800</bug_when>
    <thetext>Created attachment 444853
work in progress.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1816996</commentid>
    <comment_count>8</comment_count>
      <attachid>444855</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2021-11-19 14:26:42 -0800</bug_when>
    <thetext>Created attachment 444855
work in progress.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1817015</commentid>
    <comment_count>9</comment_count>
      <attachid>444861</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2021-11-19 15:10:24 -0800</bug_when>
    <thetext>Created attachment 444861
work in progress.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1817103</commentid>
    <comment_count>10</comment_count>
      <attachid>444890</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2021-11-20 02:07:10 -0800</bug_when>
    <thetext>Created attachment 444890
work in progress.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1817105</commentid>
    <comment_count>11</comment_count>
      <attachid>444891</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2021-11-20 02:38:58 -0800</bug_when>
    <thetext>Created attachment 444891
work in progress.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1817111</commentid>
    <comment_count>12</comment_count>
      <attachid>444895</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2021-11-20 06:24:06 -0800</bug_when>
    <thetext>Created attachment 444895
work in progress.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1817115</commentid>
    <comment_count>13</comment_count>
      <attachid>444896</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2021-11-20 07:51:26 -0800</bug_when>
    <thetext>Created attachment 444896
work in progress.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1817116</commentid>
    <comment_count>14</comment_count>
      <attachid>444897</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2021-11-20 08:27:37 -0800</bug_when>
    <thetext>Created attachment 444897
work in progress.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1817224</commentid>
    <comment_count>15</comment_count>
      <attachid>444937</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2021-11-21 20:22:53 -0800</bug_when>
    <thetext>Created attachment 444937
EWS test.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1817382</commentid>
    <comment_count>16</comment_count>
      <attachid>444996</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2021-11-22 20:45:01 -0800</bug_when>
    <thetext>Created attachment 444996
Another Win EWS test.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1817568</commentid>
    <comment_count>17</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-11-23 22:26:18 -0800</bug_when>
    <thetext>&lt;rdar://problem/85718170&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>444480</attachid>
            <date>2021-11-16 22:28:16 -0800</date>
            <delta_ts>2021-11-18 12:31:13 -0800</delta_ts>
            <desc>work in progress for EWS testing.</desc>
            <filename>bug-233240.patch</filename>
            <type>text/plain</type>
            <size>7531</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0Jsb2NrRGlyZWN0b3J5LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQmxvY2tEaXJlY3RvcnkuaAkocmV2
aXNpb24gMjg1ODk2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQmxvY2tEaXJlY3Rv
cnkuaAkod29ya2luZyBjb3B5KQpAQCAtNzQsNyArNzQsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBz
aHJpbmsoKTsKICAgICB2b2lkIGFzc2VydE5vVW5zd2VwdCgpOwogICAgIHNpemVfdCBjZWxsU2l6
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fY2VsbFNpemU7IH0KLSAgICBjb25zdCBDZWxsQXR0cmlidXRl
cyYgYXR0cmlidXRlcygpIGNvbnN0IHsgcmV0dXJuIG1fYXR0cmlidXRlczsgfQorICAgIGNvbnN0
IENlbGxBdHRyaWJ1dGVzIGF0dHJpYnV0ZXMoKSBjb25zdCB7IHJldHVybiBtX2F0dHJpYnV0ZXM7
IH0KICAgICBib29sIG5lZWRzRGVzdHJ1Y3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2F0dHJpYnV0
ZXMuZGVzdHJ1Y3Rpb24gPT0gTmVlZHNEZXN0cnVjdGlvbjsgfQogICAgIERlc3RydWN0aW9uTW9k
ZSBkZXN0cnVjdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fYXR0cmlidXRlcy5kZXN0cnVjdGlvbjsg
fQogICAgIEhlYXBDZWxsOjpLaW5kIGNlbGxLaW5kKCkgY29uc3QgeyByZXR1cm4gbV9hdHRyaWJ1
dGVzLmNlbGxLaW5kOyB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcAkocmV2
aXNpb24gMjg1ODk2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTk1NSwxMCArOTU1LDEwIEBAIHZvaWQgSGVhcDo6ZGVsZXRlQWxsVW5s
aW5rZWRDb2RlQmxvY2tzKEQKIAogdm9pZCBIZWFwOjpkZWxldGVVbm1hcmtlZENvbXBpbGVkQ29k
ZSgpCiB7Ci0gICAgdm0oKS5mb3JFYWNoU2NyaXB0RXhlY3V0YWJsZVNwYWNlKFtdIChhdXRvJiBz
cGFjZSkgeyBzcGFjZS5zcGFjZS5zd2VlcCgpOyB9KTsKKyAgICB2bSgpLmZvckVhY2hTY3JpcHRF
eGVjdXRhYmxlU3BhY2UoW10gKGF1dG8mIHNwYWNlKSB7IHNwYWNlLnNwYWNlLnN3ZWVwMygpOyB9
KTsKICAgICAvLyBTd2VlcGluZyBtdXN0IG9jY3VyIGJlZm9yZSBkZWxldGluZyBzdHVicywgb3Ro
ZXJ3aXNlIHRoZSBzdHVicyBtaWdodCBzdGlsbCB0aGluayB0aGV5J3JlIGFsaXZlIGFzIHRoZXkg
Z2V0IGRlbGV0ZWQuCiAgICAgLy8gQW5kIENvZGVCbG9jayBkZXN0cnVjdG9yIGlzIGFzc3VtaW5n
IHRoYXQgQ29kZUJsb2NrIGdldHMgZGVzdHJveWVkIGJlZm9yZSBVbmxpbmtlZENvZGVCbG9jayBn
ZXRzIGRlc3Ryb3llZC4KLSAgICB2bSgpLmZvckVhY2hDb2RlQmxvY2tTcGFjZShbXSAoYXV0byYg
c3BhY2UpIHsgc3BhY2Uuc3BhY2Uuc3dlZXAoKTsgfSk7CisgICAgdm0oKS5mb3JFYWNoQ29kZUJs
b2NrU3BhY2UoW10gKGF1dG8mIHNwYWNlKSB7IHNwYWNlLnNwYWNlLnN3ZWVwMygpOyB9KTsKICAg
ICBtX2ppdFN0dWJSb3V0aW5lcy0+ZGVsZXRlVW5tYXJrZWRKZXR0aXNvbmVkU3R1YlJvdXRpbmVz
KCk7CiB9CiAKQEAgLTIxMDEsNyArMjEwMSw3IEBAIHZvaWQgSGVhcDo6c3dlZXBJbkZpbmFsaXpl
KCkKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAgICAgLy8gV2UgaG9sZCBvbnRvIGEgbG90IG9m
IG1lbW9yeSwgc28gaXQgbWFrZXMgYSBsb3Qgb2Ygc2Vuc2UgdG8gYmUgc3dlcHQgZWFnZXJseS4K
ICAgICBpZiAodm0oKS5tX3dlYkFzc2VtYmx5TWVtb3J5U3BhY2UpCi0gICAgICAgIHZtKCkubV93
ZWJBc3NlbWJseU1lbW9yeVNwYWNlLT5zd2VlcCgpOworICAgICAgICB2bSgpLm1fd2ViQXNzZW1i
bHlNZW1vcnlTcGFjZS0+c3dlZXAzKCk7CiAjZW5kaWYKIH0KIApJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvSGVhcENlbGxUeXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvSGVhcENlbGxUeXBlLmgJKHJldmlzaW9uIDI4NTg5NikKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBDZWxsVHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0z
Niw3ICszNiw3IEBAIHB1YmxpYzoKICAgICBKU19FWFBPUlRfUFJJVkFURSBIZWFwQ2VsbFR5cGUo
Q2VsbEF0dHJpYnV0ZXMpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHZpcnR1YWwgfkhlYXBDZWxs
VHlwZSgpOwogCi0gICAgY29uc3QgQ2VsbEF0dHJpYnV0ZXMmIGF0dHJpYnV0ZXMoKSBjb25zdCB7
IHJldHVybiBtX2F0dHJpYnV0ZXM7IH0KKyAgICBjb25zdCBDZWxsQXR0cmlidXRlcyBhdHRyaWJ1
dGVzKCkgY29uc3QgeyByZXR1cm4gbV9hdHRyaWJ1dGVzOyB9CiAKICAgICAvLyBUaGUgcHVycG9z
ZSBvZiBvdmVycmlkaW5nIHRoaXMgaXMgdG8gc3BlY2lhbGl6ZSB0aGUgc3dlZXAgZm9yIHlvdXIg
ZGVzdHJ1Y3RvcnMuIFRoaXMgd29uJ3QKICAgICAvLyBiZSBjYWxsZWQgZm9yIG5vLWRlc3RydWN0
b3IgYmxvY2tzLiBUaGlzIG11c3QgY2FsbCBNYXJrZWRCbG9jazo6ZmluaXNoU3dlZXBLbm93aW5n
U3Vic3BhY2UuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Jc29TdWJzcGFjZS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lzb1N1YnNwYWNlLmgJ
KHJldmlzaW9uIDI4NTg5NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lzb1N1YnNw
YWNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTU0LDcgKzU0LDcgQEAgcHVibGljOgogICAgIHZvaWQq
IHRyeUFsbG9jYXRlRnJvbUxvd2VyVGllcigpOwogICAgIHZvaWQgZGVzdHJveUxvd2VyVGllckZy
ZWVMaXN0KCk7CiAKLSAgICB2b2lkIHN3ZWVwKCk7CisgICAgdm9pZCBzd2VlcDMoKTsKIAogICAg
IHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmM+IHZvaWQgZm9yRWFjaExvd2VyVGllckZyZWVMaXN0ZWRQ
cmVjaXNlQWxsb2NhdGlvbihjb25zdCBGdW5jJik7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL0lzb1N1YnNwYWNlSW5saW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL0lzb1N1YnNwYWNlSW5saW5lcy5oCShyZXZpc2lvbiAyODU4OTYpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Jc29TdWJzcGFjZUlubGluZXMuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNDQsNyArNDQsNyBAQCBpbmxpbmUgdm9pZCBJc29TdWJzcGFjZTo6Y2xlYXJJ
c29DZWxsU2V0CiAgICAgICAgIH0pOwogfQogCi1pbmxpbmUgdm9pZCBJc29TdWJzcGFjZTo6c3dl
ZXAoKQoraW5saW5lIHZvaWQgSXNvU3Vic3BhY2U6OnN3ZWVwMygpCiB7CiAgICAgU3Vic3BhY2U6
OnN3ZWVwQmxvY2tzKCk7CiAgICAgLy8gV2Ugc3dlZXAgcHJlY2lzZS1hbGxvY2F0aW9ucyBlYWdl
cmx5LCBidXQgd2UgZG8gbm90IGZyZWUgaXQgaW1tZWRpYXRlbHkuCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9jay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrLmgJKHJldmlzaW9uIDI4NTg5NikKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrLmgJKHdvcmtpbmcgY29weSkKQEAgLTE2
MSw3ICsxNjEsNyBAQCBwdWJsaWM6CiAgICAgICAgIHNpemVfdCBjZWxsU2l6ZSgpOwogICAgICAg
ICBpbmxpbmUgdW5zaWduZWQgY2VsbHNQZXJCbG9jaygpOwogICAgICAgICAKLSAgICAgICAgY29u
c3QgQ2VsbEF0dHJpYnV0ZXMmIGF0dHJpYnV0ZXMoKSBjb25zdDsKKyAgICAgICAgY29uc3QgQ2Vs
bEF0dHJpYnV0ZXMgYXR0cmlidXRlcygpIGNvbnN0OwogICAgICAgICBEZXN0cnVjdGlvbk1vZGUg
ZGVzdHJ1Y3Rpb24oKSBjb25zdDsKICAgICAgICAgYm9vbCBuZWVkc0Rlc3RydWN0aW9uKCkgY29u
c3Q7CiAgICAgICAgIEhlYXBDZWxsOjpLaW5kIGNlbGxLaW5kKCkgY29uc3Q7CkBAIC0zNDcsNyAr
MzQ3LDcgQEAgcHVibGljOgogICAgIHZvaWQgcmVzZXRBbGxvY2F0ZWQoKTsKICAgICAgICAgCiAg
ICAgc2l6ZV90IGNlbGxTaXplKCk7Ci0gICAgY29uc3QgQ2VsbEF0dHJpYnV0ZXMmIGF0dHJpYnV0
ZXMoKSBjb25zdDsKKyAgICBjb25zdCBDZWxsQXR0cmlidXRlcyBhdHRyaWJ1dGVzKCkgY29uc3Q7
CiAgICAgCiAgICAgYm9vbCBoYXNBbnlNYXJrZWQoKSBjb25zdDsKICAgICB2b2lkIG5vdGVNYXJr
ZWQoKTsKQEAgLTUxMSwxMiArNTExLDEyIEBAIGlubGluZSBzaXplX3QgTWFya2VkQmxvY2s6OmNl
bGxTaXplKCkKICAgICByZXR1cm4gaGFuZGxlKCkuY2VsbFNpemUoKTsKIH0KIAotaW5saW5lIGNv
bnN0IENlbGxBdHRyaWJ1dGVzJiBNYXJrZWRCbG9jazo6SGFuZGxlOjphdHRyaWJ1dGVzKCkgY29u
c3QKK2lubGluZSBjb25zdCBDZWxsQXR0cmlidXRlcyBNYXJrZWRCbG9jazo6SGFuZGxlOjphdHRy
aWJ1dGVzKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9hdHRyaWJ1dGVzOwogfQogCi1pbmxpbmUg
Y29uc3QgQ2VsbEF0dHJpYnV0ZXMmIE1hcmtlZEJsb2NrOjphdHRyaWJ1dGVzKCkgY29uc3QKK2lu
bGluZSBjb25zdCBDZWxsQXR0cmlidXRlcyBNYXJrZWRCbG9jazo6YXR0cmlidXRlcygpIGNvbnN0
CiB7CiAgICAgcmV0dXJuIGhhbmRsZSgpLmF0dHJpYnV0ZXMoKTsKIH0KSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL1ByZWNpc2VBbGxvY2F0aW9uLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvUHJlY2lzZUFsbG9jYXRpb24uaAkocmV2aXNpb24gMjg1
ODk2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvUHJlY2lzZUFsbG9jYXRpb24uaAko
d29ya2luZyBjb3B5KQpAQCAtMTIxLDcgKzEyMSw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJu
IGFib3ZlTG93ZXJCb3VuZChyYXdQdHIpICYmIGJlbG93VXBwZXJCb3VuZChyYXdQdHIpOwogICAg
IH0KICAgICAKLSAgICBjb25zdCBDZWxsQXR0cmlidXRlcyYgYXR0cmlidXRlcygpIGNvbnN0IHsg
cmV0dXJuIG1fYXR0cmlidXRlczsgfQorICAgIGNvbnN0IENlbGxBdHRyaWJ1dGVzIGF0dHJpYnV0
ZXMoKSBjb25zdCB7IHJldHVybiBtX2F0dHJpYnV0ZXM7IH0KICAgICAKICAgICBEZXBlbmRlbmN5
IGFib3V0VG9NYXJrKEhlYXBWZXJzaW9uKSB7IHJldHVybiBEZXBlbmRlbmN5KCk7IH0KICAgICAK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1N1YnNwYWNlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvU3Vic3BhY2UuaAkocmV2aXNpb24gMjg1ODk2
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvU3Vic3BhY2UuaAkod29ya2luZyBjb3B5
KQpAQCAtMzksMTggKzM5LDE3IEBAIGNsYXNzIEhlYXBDZWxsVHlwZTsKIAogLy8gVGhlIGlkZWEg
b2Ygc3Vic3BhY2VzIGlzIHRoYXQgeW91IGNhbiBwcm92aWRlIHNvbWUgY3VzdG9tIGJlaGF2aW9y
IGZvciB5b3VyIG9iamVjdHMgaWYgeW91CiAvLyBhbGxvY2F0ZSB0aGVtIGZyb20gYSBjdXN0b20g
U3Vic3BhY2UgaW4gd2hpY2ggeW91IG92ZXJyaWRlIHNvbWUgb2YgdGhlIHZpcnR1YWwgbWV0aG9k
cy4gVGhpcwotLy8gY2xhc3MgaXMgdGhlIGJhc2VjbGFzcyBvZiBTdWJzcGFjZXMuIFVzdWFsbHkg
eW91IHdpbGwgdXNlIGVpdGhlciBTdWJzcGFjZSBvciBGaXhlZFNpemVTdWJzcGFjZS4KKy8vIGNs
YXNzIGlzIHRoZSBiYXNlY2xhc3Mgb2YgYWxsIHN1YnNwYWNlcyBlLmcuIENvbXBsZXRlU3Vic3Bh
Y2UsIElzb1N1YnNwYWNlLgogY2xhc3MgU3Vic3BhY2UgewogICAgIFdURl9NQUtFX05PTkNPUFlB
QkxFKFN1YnNwYWNlKTsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAg
ICBKU19FWFBPUlRfUFJJVkFURSBTdWJzcGFjZShDU3RyaW5nIG5hbWUsIEhlYXAmKTsKICAgICBK
U19FWFBPUlRfUFJJVkFURSB2aXJ0dWFsIH5TdWJzcGFjZSgpOwogCiAgICAgY29uc3QgY2hhciog
bmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fbmFtZS5kYXRhKCk7IH0KICAgICBNYXJrZWRTcGFjZSYg
c3BhY2UoKSBjb25zdCB7IHJldHVybiBtX3NwYWNlOyB9CiAgICAgCi0gICAgY29uc3QgQ2VsbEF0
dHJpYnV0ZXMmIGF0dHJpYnV0ZXMoKSBjb25zdDsKKyAgICBjb25zdCBDZWxsQXR0cmlidXRlcyBh
dHRyaWJ1dGVzKCkgY29uc3Q7CiAgICAgSGVhcENlbGxUeXBlKiBoZWFwQ2VsbFR5cGUoKSBjb25z
dCB7IHJldHVybiBtX2hlYXBDZWxsVHlwZTsgfQogICAgIEFsaWduZWRNZW1vcnlBbGxvY2F0b3Iq
IGFsaWduZWRNZW1vcnlBbGxvY2F0b3IoKSBjb25zdCB7IHJldHVybiBtX2FsaWduZWRNZW1vcnlB
bGxvY2F0b3I7IH0KICAgICAKQEAgLTEwNCw2ICsxMDMsOCBAQCBwdWJsaWM6CiAgICAgYm9vbCBp
c0lzb1N1YnNwYWNlKCkgY29uc3QgeyByZXR1cm4gbV9pc0lzb1N1YnNwYWNlOyB9CiAKIHByb3Rl
Y3RlZDoKKyAgICBTdWJzcGFjZShDU3RyaW5nIG5hbWUsIEhlYXAmKTsKKwogICAgIHZvaWQgaW5p
dGlhbGl6ZShIZWFwQ2VsbFR5cGUqLCBBbGlnbmVkTWVtb3J5QWxsb2NhdG9yKik7CiAgICAgCiAg
ICAgTWFya2VkU3BhY2UmIG1fc3BhY2U7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVh
cC9TdWJzcGFjZUlubGluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9TdWJzcGFjZUlubGluZXMuaAkocmV2aXNpb24gMjg1ODk2KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvU3Vic3BhY2VJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTE1Miw3
ICsxNTIsNyBAQCB2b2lkIFN1YnNwYWNlOjpmb3JFYWNoTGl2ZUNlbGwoY29uc3QgRnVuCiAgICAg
ICAgIH0pOwogfQogCi1pbmxpbmUgY29uc3QgQ2VsbEF0dHJpYnV0ZXMmIFN1YnNwYWNlOjphdHRy
aWJ1dGVzKCkgY29uc3QKK2lubGluZSBjb25zdCBDZWxsQXR0cmlidXRlcyBTdWJzcGFjZTo6YXR0
cmlidXRlcygpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1faGVhcENlbGxUeXBlLT5hdHRyaWJ1dGVz
KCk7CiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>444716</attachid>
            <date>2021-11-18 12:31:13 -0800</date>
            <delta_ts>2021-11-18 13:09:25 -0800</delta_ts>
            <desc>work in progress.</desc>
            <filename>bug-233240b.patch</filename>
            <type>text/plain</type>
            <size>433585</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDI4NjAxMSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpA
QCAtMTEzOSwxMiArMTEzOSwxMiBAQCBzZXQoSmF2YVNjcmlwdENvcmVfUFJJVkFURV9GUkFNRVdP
UktfSEVBCiAgICAgcnVudGltZS9Qcml2YXRlTmFtZS5oCiAgICAgcnVudGltZS9Qcm9ncmFtRXhl
Y3V0YWJsZS5oCiAgICAgcnVudGltZS9Qcm9wZXJ0eURlc2NyaXB0b3IuaAotICAgIHJ1bnRpbWUv
UHJvcGVydHlNYXBIYXNoVGFibGUuaAogICAgIHJ1bnRpbWUvUHJvcGVydHlOYW1lLmgKICAgICBy
dW50aW1lL1Byb3BlcnR5TmFtZUFycmF5LmgKICAgICBydW50aW1lL1Byb3BlcnR5T2Zmc2V0LmgK
ICAgICBydW50aW1lL1Byb3BlcnR5U2xvdC5oCiAgICAgcnVudGltZS9Qcm9wZXJ0eVN0b3JhZ2Uu
aAorICAgIHJ1bnRpbWUvUHJvcGVydHlUYWJsZS5oCiAgICAgcnVudGltZS9Qcm90ZWN0LmgKICAg
ICBydW50aW1lL1Byb3RvdHlwZUtleS5oCiAgICAgcnVudGltZS9Qcm94eU9iamVjdC5oCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvanNjLmNwcAkocmV2aXNpb24gMjg2MDExKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2pzYy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0MjksNyArMTQyOSw3IEBAIHB1Ymxp
YzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vic3BhY2VBY2Nlc3M+CiAgICAg
c3RhdGljIENvbXBsZXRlU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7Ci0gICAg
ICAgIHJldHVybiAmdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAm
dm0uZGVzdHJ1Y3RpYmxlT2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBKU0NNZW1vcnlGb290
cHJpbnQoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKQEAgLTE3NjIsNyArMTc2Miw3IEBA
IHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vic3BhY2VBY2Nlc3M+
CiAgICAgc3RhdGljIENvbXBsZXRlU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7
Ci0gICAgICAgIHJldHVybiAmdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0U3BhY2U7CisgICAgICAgIHJl
dHVybiAmdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMg
U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCShyZXZpc2lvbiAyODYwMTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTc1MCw3
ICsxNzUwLDcgQEAKIAkJQkM3NTZGQzkwRTIwMzFCMjAwREU3RDEyIC8qIEpTR2xvYmFsT2JqZWN0
RnVuY3Rpb25zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBCQzc1NkZDNzBFMjAzMUIyMDBERTdEMTIgLyogSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlCQzg3Q0RC
OTEwNzEyQUQ0MDAwNjE0Q0YgLyogSlNPTk9iamVjdC5sdXQuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDODdDREI4MTA3MTJBQ0EwMDA2MTRDRiAvKiBK
U09OT2JqZWN0Lmx1dC5oICovOyB9OwogCQlCQzkwNDE0ODBFQjkyNTA5MDBGRTI2RkEgLyogU3Ry
dWN0dXJlVHJhbnNpdGlvblRhYmxlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBCQzkwNDE0NzBFQjkyNTA5MDBGRTI2RkEgLyogU3RydWN0dXJlVHJhbnNp
dGlvblRhYmxlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKLQkJQkM5NTQzN0QwRUJBNzBGRDAwNzJCNkQzIC8qIFByb3BlcnR5TWFwSGFzaFRhYmxlLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzk1NDM3QzBF
QkE3MEZEMDA3MkI2RDMgLyogUHJvcGVydHlNYXBIYXNoVGFibGUuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlCQzk1NDM3RDBFQkE3MEZEMDA3MkI2
RDMgLyogUHJvcGVydHlUYWJsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQkM5NTQzN0MwRUJBNzBGRDAwNzJCNkQzIC8qIFByb3BlcnR5VGFibGUuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlCQ0JFMkNB
RTE0RTk4NUFBMDAwNTkzQUQgLyogR0NBc3NlcnRpb25zLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0JFMkNBRDE0RTk4NUFBMDAwNTkzQUQgLyogR0NB
c3NlcnRpb25zLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJQkNDRjBEMDgwRUYwQUFCOTAwNDEzQzhGIC8qIFN0cnVjdHVyZVN0dWJJbmZvLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0NGMEQwNzBFRjBB
QUI5MDA0MTNDOEYgLyogU3RydWN0dXJlU3R1YkluZm8uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlCQ0QyMDJDMjBFMTcwNkE3MDAyQzdFODIgLyog
UmVnRXhwQ29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEJDRDIwMkJFMEUxNzA2QTcwMDJDN0U4MiAvKiBSZWdFeHBDb25zdHJ1Y3Rvci5o
ICovOyB9OwpAQCAtMTk1OSw3ICsxOTU5LDcgQEAKIAkJRTNDNjk0QjMyMzAyNjg3NzAwNkZCRTQy
IC8qIFdhc21PU1JFbnRyeURhdGEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEUzQzY5NEIxMjMwMjY4NzMwMDZGQkU0MiAvKiBXYXNtT1NSRW50cnlEYXRh
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTND
NzNBOTEyNUJGQTczQjAwRUZFMzAzIC8qIFdhc21TdHJlYW1pbmdQbGFuLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFM0M3M0E5MDI1QkZBNzM0MDBFRkUz
MDMgLyogV2FzbVN0cmVhbWluZ1BsYW4uaCAqLzsgfTsKIAkJRTNDNzlDQUIxREI5QTREQzAwRDFF
Q0E0IC8qIERPTUpJVEVmZmVjdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRTNDNzlDQUExREI5QTRENjAwRDFFQ0E0IC8qIERPTUpJVEVmZmVjdC5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCUUzQzhFRDQz
MjNBMURCQ0IwMDEzMTk1OCAvKiBJc29JbmxpbmVkSGVhcENlbGxUeXBlLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFM0M4RUQ0MjIzQTFEQkM1MDAxMzE5
NTggLyogSXNvSW5saW5lZEhlYXBDZWxsVHlwZS5oICovOyB9OworCQlFM0M4RUQ0MzIzQTFEQkNC
MDAxMzE5NTggLyogSXNvSW5saW5lZEhlYXBDZWxsVHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTNDOEVENDIyM0ExREJDNTAwMTMxOTU4IC8qIElz
b0lubGluZWRIZWFwQ2VsbFR5cGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQlFM0NBM0E0RTI1MjdBQjJGMDA0ODAyQkYgLyogSklUT3BlcmF0aW9u
TGlzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTND
QTNBNEMyNTI3QUIyRjAwNDgwMkJGIC8qIEpJVE9wZXJhdGlvbkxpc3QuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFM0QyMzlDOTFCODI5QzFDMDBC
QkVGNjcgLyogSlNNb2R1bGVFbnZpcm9ubWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRTNEMjM5QzcxQjgyOUMxQzAwQkJFRjY3IC8qIEpTTW9kdWxl
RW52aXJvbm1lbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQlFM0QzNTE1RjI0MUI4OUQ3MDA4REMxNkUgLyogTWFya2VkSlNWYWx1ZVJlZkFycmF5
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFM0QzNTE1
RDI0MUI4OUNFMDA4REMxNkUgLyogTWFya2VkSlNWYWx1ZVJlZkFycmF5LmggKi87IH07CkBAIC00
OTkxLDcgKzQ5OTEsNyBAQAogCQlCQzg3Q0RCODEwNzEyQUNBMDAwNjE0Q0YgLyogSlNPTk9iamVj
dC5sdXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNPTk9iamVjdC5sdXQu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkM4RjNDQ0YwREFGMTdCQTAwNTc3QTgw
IC8qIENvbnN0cnVjdERhdGEuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29u
c3RydWN0RGF0YS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzkwNDE0NzBFQjky
NTA5MDBGRTI2RkEgLyogU3RydWN0dXJlVHJhbnNpdGlvblRhYmxlLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFN0cnVjdHVyZVRyYW5zaXRpb25UYWJsZS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwotCQlCQzk1NDM3QzBFQkE3MEZEMDA3MkI2RDMgLyogUHJvcGVydHlN
YXBIYXNoVGFibGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUHJvcGVydHlN
YXBIYXNoVGFibGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkM5NTQzN0MwRUJB
NzBGRDAwNzJCNkQzIC8qIFByb3BlcnR5VGFibGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gUHJvcGVydHlUYWJsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlC
QzlCQjk1QjBFMTk2ODA2MDBERjg4NTUgLyogSW50ZXJuYWxGdW5jdGlvbi5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbnRlcm5hbEZ1bmN0aW9uLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkNBNjJERkUwRTI4MjYyMzAwMDRGMzBEIC8qIENhbGxE
YXRhLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENhbGxEYXRhLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkNBNjJERkYwRTI4MjYzMTAwMDRGMzBE
IC8qIENvbnN0cnVjdERhdGEuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gQ29uc3RydWN0RGF0YS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC03OTU4
LDcgKzc5NTgsNiBAQAogCQkJCTE0NzM0MUQzMURDMDJFNkQwMEFBMjlCQSAvKiBQcm9ncmFtRXhl
Y3V0YWJsZS5oICovLAogCQkJCUE3RkI2MEEzMTAzRjdEQzIwMDE3QTI4NiAvKiBQcm9wZXJ0eURl
c2NyaXB0b3IuY3BwICovLAogCQkJCUE3RkI2MDRCMTAzRjVFQUIwMDE3QTI4NiAvKiBQcm9wZXJ0
eURlc2NyaXB0b3IuaCAqLywKLQkJCQlCQzk1NDM3QzBFQkE3MEZEMDA3MkI2RDMgLyogUHJvcGVy
dHlNYXBIYXNoVGFibGUuaCAqLywKIAkJCQk4NjE1OEFCMjE1NUM4QjNGMDBCNDVDOUMgLyogUHJv
cGVydHlOYW1lLmggKi8sCiAJCQkJNjU0MDBDMTAwQTY5QkFGMjAwNTA5ODg3IC8qIFByb3BlcnR5
TmFtZUFycmF5LmggKi8sCiAJCQkJMEZGNzE2OEExNUEzQjIzMTAwOEY1REFBIC8qIFByb3BlcnR5
T2Zmc2V0LmggKi8sCkBAIC03OTY2LDYgKzc5NjUsNyBAQAogCQkJCTY1NjIxRTZDMDg5RTg1OTcw
MDc2MEYzNSAvKiBQcm9wZXJ0eVNsb3QuaCAqLywKIAkJCQkwRkI3RjM5MDE1RUQ4RTM4MDBGMTY3
QjIgLyogUHJvcGVydHlTdG9yYWdlLmggKi8sCiAJCQkJQUQxQ0YwNjgxNkRDQUIyRDAwQjk3MTIz
IC8qIFByb3BlcnR5VGFibGUuY3BwICovLAorCQkJCUJDOTU0MzdDMEVCQTcwRkQwMDcyQjZEMyAv
KiBQcm9wZXJ0eVRhYmxlLmggKi8sCiAJCQkJNjVDMDJGQkIwNjM3NDYyQTAwM0U3RUU2IC8qIFBy
b3RlY3QuaCAqLywKIAkJCQkwRjc0QjkzQTFGODk2MTQ1MDBCOTM1RDMgLyogUHJvdG90eXBlS2V5
LmggKi8sCiAJCQkJNzlCMDBDQjgxQzZBQjA3RTAwODhDNjVEIC8qIFByb3h5Q29uc3RydWN0b3Iu
Y3BwICovLApAQCAtMTA2NzYsNyArMTA2NzYsNyBAQAogCQkJCTE0NzM0MUQ0MURDMDJFNkQwMEFB
MjlCQSAvKiBQcm9ncmFtRXhlY3V0YWJsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZEM0U0MEUx
QjYxOEI2NjAwQzgwRTFFIC8qIFByb3BlcnR5Q29uZGl0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlBN0ZCNjEwMDEwNDBDMzhCMDAxN0EyODYgLyogUHJvcGVydHlEZXNjcmlwdG9yLmggaW4gSGVh
ZGVycyAqLywKLQkJCQlCQzk1NDM3RDBFQkE3MEZEMDA3MkI2RDMgLyogUHJvcGVydHlNYXBIYXNo
VGFibGUuaCBpbiBIZWFkZXJzICovLAorCQkJCUJDOTU0MzdEMEVCQTcwRkQwMDcyQjZEMyAvKiBQ
cm9wZXJ0eVRhYmxlLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NjE1OEFCMzE1NUM4QjQwMDBCNDVD
OUMgLyogUHJvcGVydHlOYW1lLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzQ1NDBFMTZGNUNE
MDBCMzQ0NjAgLyogUHJvcGVydHlOYW1lQXJyYXkuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRjcx
NjhDMTVBM0IyMzUwMDhGNURBQSAvKiBQcm9wZXJ0eU9mZnNldC5oIGluIEhlYWRlcnMgKi8sCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vzc0Nhc2UuY3BwCShy
ZXZpc2lvbiAyODYwMTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNz
Q2FzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIyNzcsNyArMjI3Nyw3IEBAIHZvaWQgQWNjZXNz
Q2FzZTo6Z2VuZXJhdGVJbXBsKEFjY2Vzc0dlbmUKICAgICAgICAgICAgIHNpemVfdCBuZXdTaXpl
ID0gbmV3U3RydWN0dXJlKCktPm91dE9mTGluZUNhcGFjaXR5KCkgKiBzaXplb2YoSlNWYWx1ZSk7
CiAKICAgICAgICAgICAgIGlmIChhbGxvY2F0aW5nSW5saW5lKSB7Ci0gICAgICAgICAgICAgICAg
QWxsb2NhdG9yIGFsbG9jYXRvciA9IHZtLmpzVmFsdWVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlLmFs
bG9jYXRvckZvcihuZXdTaXplLCBBbGxvY2F0b3JGb3JNb2RlOjpBbGxvY2F0b3JJZkV4aXN0cyk7
CisgICAgICAgICAgICAgICAgQWxsb2NhdG9yIGFsbG9jYXRvciA9IHZtLmpzVmFsdWVHaWdhY2Fn
ZUF1eGlsaWFyeVNwYWNlKCkuYWxsb2NhdG9yRm9yKG5ld1NpemUsIEFsbG9jYXRvckZvck1vZGU6
OkFsbG9jYXRvcklmRXhpc3RzKTsKIAogICAgICAgICAgICAgICAgIGppdC5lbWl0QWxsb2NhdGUo
c2NyYXRjaEdQUiwgSklUQWxsb2NhdG9yOjpjb25zdGFudChhbGxvY2F0b3IpLCBzY3JhdGNoR1BS
Miwgc2NyYXRjaEdQUjMsIHNsb3dQYXRoKTsKICAgICAgICAgICAgICAgICBqaXQuYWRkUHRyKEND
YWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKG5ld1NpemUgKyBzaXplb2YoSW5kZXhpbmdIZWFkZXIp
KSwgc2NyYXRjaEdQUik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXZh
bENvZGVCbG9jay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9FdmFsQ29kZUJsb2NrLmgJKHJldmlzaW9uIDI4NjAxMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9FdmFsQ29kZUJsb2NrLmgJKHdvcmtpbmcgY29weSkKQEAgLTQxLDcgKzQx
LDcgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lLCBTdWJzcGFjZUFjY2Vzcz4KICAg
ICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7Ci0gICAgICAg
IHJldHVybiAmdm0uY29kZUJsb2NrU3BhY2Uuc3BhY2U7CisgICAgICAgIHJldHVybiAmdm0uY29k
ZUJsb2NrU3BhY2UoKS5zcGFjZTsKICAgICB9CiAKICAgICBzdGF0aWMgRXZhbENvZGVCbG9jayog
Y3JlYXRlKFZNJiB2bSwgQ29weVBhcnNlZEJsb2NrVGFnLCBFdmFsQ29kZUJsb2NrJiBvdGhlcikK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FeGVjdXRhYmxlVG9Db2RlQmxv
Y2tFZGdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
RXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZS5jcHAJKHJldmlzaW9uIDI4NjAxMSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtODEsNyArODEsNyBAQCB2b2lkIEV4ZWN1dGFibGVUb0NvZGVCbG9j
a0VkZ2U6OnZpc2l0Q2hpCiAgICAgICAgIHZpc2l0b3IuYXBwZW5kVW5iYXJyaWVyZWQoY29kZUJs
b2NrKTsKICAgICAKICAgICBpZiAoIXZpc2l0b3IuaXNNYXJrZWQoY29kZUJsb2NrKSkKLSAgICAg
ICAgdm0uZXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZXNXaXRoRmluYWxpemVycy5hZGQoZWRnZSk7
CisgICAgICAgIHZtLmV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2VzV2l0aEZpbmFsaXplcnMoKS5h
ZGQoZWRnZSk7CiAgICAgCiAgICAgaWYgKEpJVENvZGU6OmlzT3B0aW1pemluZ0pJVChjb2RlQmxv
Y2stPmppdFR5cGUoKSkpIHsKICAgICAgICAgLy8gSWYgd2UgamV0dGlzb24gb3Vyc2VsdmVzIHdl
J2xsIGluc3RhbGwgb3VyIGFsdGVybmF0aXZlLCBzbyBtYWtlIHN1cmUgdGhhdCBpdApAQCAtMTE0
LDcgKzExNCw3IEBAIHZvaWQgRXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZTo6dmlzaXRDaGkKICAg
ICAvLyBub3QgeWV0IG1hcmtlZCBiZWNhdXNlIGl0IHdlYWtseSBkZXBlbmRzIG9uIGEgc3RydWN0
dXJlIHRoYXQgd2UgZGlkIG5vdCB5ZXQgbWFyaywgdGhlbiB3ZQogICAgIC8vIHdpbGwga2VlcCBm
aXhwb2ludGluZyB1bnRpbCB0aGUgZW5kLgogICAgIHZpc2l0b3IuYXBwZW5kVW5iYXJyaWVyZWQo
Y29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSk7Ci0gICAgdm0uZXhlY3V0YWJsZVRvQ29kZUJsb2Nr
RWRnZXNXaXRoQ29uc3RyYWludHMuYWRkKGVkZ2UpOworICAgIHZtLmV4ZWN1dGFibGVUb0NvZGVC
bG9ja0VkZ2VzV2l0aENvbnN0cmFpbnRzKCkuYWRkKGVkZ2UpOwogICAgIGVkZ2UtPnJ1bkNvbnN0
cmFpbnQobG9ja2VyLCB2bSwgdmlzaXRvcik7CiB9CiAKQEAgLTE0Myw4ICsxNDMsOCBAQCB2b2lk
IEV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2U6OmZpbmFsaXplCiAgICAgICAgIG1fY29kZUJsb2Nr
LmNsZWFyKCk7CiAgICAgfQogICAgIAotICAgIHZtLmV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2Vz
V2l0aEZpbmFsaXplcnMucmVtb3ZlKHRoaXMpOwotICAgIHZtLmV4ZWN1dGFibGVUb0NvZGVCbG9j
a0VkZ2VzV2l0aENvbnN0cmFpbnRzLnJlbW92ZSh0aGlzKTsKKyAgICB2bS5leGVjdXRhYmxlVG9D
b2RlQmxvY2tFZGdlc1dpdGhGaW5hbGl6ZXJzKCkucmVtb3ZlKHRoaXMpOworICAgIHZtLmV4ZWN1
dGFibGVUb0NvZGVCbG9ja0VkZ2VzV2l0aENvbnN0cmFpbnRzKCkucmVtb3ZlKHRoaXMpOwogfQog
CiBpbmxpbmUgdm9pZCBFeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlOjphY3RpdmF0ZSgpCkBAIC0y
MDEsNyArMjAxLDcgQEAgdm9pZCBFeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlOjpydW5Db25zdAog
ICAgIGNvZGVCbG9jay0+ZGV0ZXJtaW5lTGl2ZW5lc3MobG9ja2VyLCB2aXNpdG9yKTsKIAogICAg
IGlmICh2aXNpdG9yLmlzTWFya2VkKGNvZGVCbG9jaykpCi0gICAgICAgIHZtLmV4ZWN1dGFibGVU
b0NvZGVCbG9ja0VkZ2VzV2l0aENvbnN0cmFpbnRzLnJlbW92ZSh0aGlzKTsKKyAgICAgICAgdm0u
ZXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZXNXaXRoQ29uc3RyYWludHMoKS5yZW1vdmUodGhpcyk7
CiB9CiAKIHRlbXBsYXRlIHZvaWQgRXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZTo6cnVuQ29uc3Ry
YWludChjb25zdCBDb25jdXJyZW50SlNMb2NrZXImLCBWTSYsIEFic3RyYWN0U2xvdFZpc2l0b3Im
KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FeGVjdXRhYmxlVG9Db2Rl
QmxvY2tFZGdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0V4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2UuaAkocmV2aXNpb24gMjg2MDExKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0V4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2UuaAkod29y
a2luZyBjb3B5KQpAQCAtNDMsNyArNDMsNyBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5h
bWUgQ2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNzPgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vi
c3BhY2VGb3IoVk0mIHZtKQogICAgIHsKLSAgICAgICAgcmV0dXJuICZ2bS5leGVjdXRhYmxlVG9D
b2RlQmxvY2tFZGdlU3BhY2U7CisgICAgICAgIHJldHVybiAmdm0uZXhlY3V0YWJsZVRvQ29kZUJs
b2NrRWRnZVNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3Ry
dWN0dXJlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlIHByb3RvdHlwZSk7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRnVuY3Rpb25Db2RlQmxvY2suaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRnVuY3Rpb25Db2RlQmxvY2su
aAkocmV2aXNpb24gMjg2MDExKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Z1
bmN0aW9uQ29kZUJsb2NrLmgJKHdvcmtpbmcgY29weSkKQEAgLTQyLDcgKzQyLDcgQEAgcHVibGlj
OgogICAgIHRlbXBsYXRlPHR5cGVuYW1lLCBTdWJzcGFjZUFjY2Vzcz4KICAgICBzdGF0aWMgSXNv
U3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7Ci0gICAgICAgIHJldHVybiAmdm0u
Y29kZUJsb2NrU3BhY2Uuc3BhY2U7CisgICAgICAgIHJldHVybiAmdm0uY29kZUJsb2NrU3BhY2Uo
KS5zcGFjZTsKICAgICB9CiAKICAgICBzdGF0aWMgRnVuY3Rpb25Db2RlQmxvY2sqIGNyZWF0ZShW
TSYgdm0sIENvcHlQYXJzZWRCbG9ja1RhZywgRnVuY3Rpb25Db2RlQmxvY2smIG90aGVyKQpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL01vZHVsZVByb2dyYW1Db2RlQmxvY2su
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTW9kdWxlUHJv
Z3JhbUNvZGVCbG9jay5oCShyZXZpc2lvbiAyODYwMTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvTW9kdWxlUHJvZ3JhbUNvZGVCbG9jay5oCSh3b3JraW5nIGNvcHkpCkBAIC00
Miw3ICs0Miw3IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSwgU3Vic3BhY2VBY2Nl
c3M+CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewot
ICAgICAgICByZXR1cm4gJnZtLmNvZGVCbG9ja1NwYWNlLnNwYWNlOworICAgICAgICByZXR1cm4g
JnZtLmNvZGVCbG9ja1NwYWNlKCkuc3BhY2U7CiAgICAgfQogCiAgICAgc3RhdGljIE1vZHVsZVBy
b2dyYW1Db2RlQmxvY2sqIGNyZWF0ZShWTSYgdm0sIENvcHlQYXJzZWRCbG9ja1RhZywgTW9kdWxl
UHJvZ3JhbUNvZGVCbG9jayYgb3RoZXIpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvUHJvZ3JhbUNvZGVCbG9jay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9Qcm9ncmFtQ29kZUJsb2NrLmgJKHJldmlzaW9uIDI4NjAxMSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qcm9ncmFtQ29kZUJsb2NrLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTQyLDcgKzQyLDcgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lLCBT
dWJzcGFjZUFjY2Vzcz4KICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2
bSkKICAgICB7Ci0gICAgICAgIHJldHVybiAmdm0uY29kZUJsb2NrU3BhY2Uuc3BhY2U7CisgICAg
ICAgIHJldHVybiAmdm0uY29kZUJsb2NrU3BhY2UoKS5zcGFjZTsKICAgICB9CiAKICAgICBzdGF0
aWMgUHJvZ3JhbUNvZGVCbG9jayogY3JlYXRlKFZNJiB2bSwgQ29weVBhcnNlZEJsb2NrVGFnLCBQ
cm9ncmFtQ29kZUJsb2NrJiBvdGhlcikKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmNwcAko
cmV2aXNpb24gMjg2MDExKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlu
a2VkRnVuY3Rpb25FeGVjdXRhYmxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjUxLDcgKzI1MSw3
IEBAIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIFVubGlua2VkRnVuY3QKICAgICAgICAgbV91
bmxpbmtlZENvZGVCbG9ja0ZvckNvbnN0cnVjdC5zZXQodm0sIHRoaXMsIHJlc3VsdCk7CiAgICAg
ICAgIGJyZWFrOwogICAgIH0KLSAgICB2bS51bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZVNwYWNl
LnNldC5hZGQodGhpcyk7CisgICAgdm0udW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGVTcGFjZSgp
LnNldC5hZGQodGhpcyk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApAQCAtMzEwLDcgKzMxMCw3
IEBAIHZvaWQgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OmZpbmFsaXoKICAgICAgICAgY2xl
YXJJZkRlYWQobV91bmxpbmtlZENvZGVCbG9ja0ZvckNhbGwpOwogICAgICAgICBjbGVhcklmRGVh
ZChtX3VubGlua2VkQ29kZUJsb2NrRm9yQ29uc3RydWN0KTsKICAgICAgICAgaWYgKGlzQ2xlYXJl
ZCAmJiAhaXNTdGlsbFZhbGlkKQotICAgICAgICAgICAgdm0udW5saW5rZWRGdW5jdGlvbkV4ZWN1
dGFibGVTcGFjZS5zZXQucmVtb3ZlKHRoaXMpOworICAgICAgICAgICAgdm0udW5saW5rZWRGdW5j
dGlvbkV4ZWN1dGFibGVTcGFjZSgpLnNldC5yZW1vdmUodGhpcyk7CiAgICAgfQogfQogCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFi
bGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5r
ZWRGdW5jdGlvbkV4ZWN1dGFibGUuaAkocmV2aXNpb24gMjg2MDExKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTY3LDcgKzY3LDcgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENl
bGxUeXBlLCBTdWJzcGFjZUFjY2Vzcz4KICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNl
Rm9yKFZNJiB2bSkKICAgICB7Ci0gICAgICAgIHJldHVybiAmdm0udW5saW5rZWRGdW5jdGlvbkV4
ZWN1dGFibGVTcGFjZS5zcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS51bmxpbmtlZEZ1bmN0aW9u
RXhlY3V0YWJsZVNwYWNlKCkuc3BhY2U7CiAgICAgfQogCiAgICAgc3RhdGljIFVubGlua2VkRnVu
Y3Rpb25FeGVjdXRhYmxlKiBjcmVhdGUoVk0mIHZtLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2Us
IEZ1bmN0aW9uTWV0YWRhdGFOb2RlKiBub2RlLCBVbmxpbmtlZEZ1bmN0aW9uS2luZCB1bmxpbmtl
ZEZ1bmN0aW9uS2luZCwgQ29uc3RydWN0QWJpbGl0eSBjb25zdHJ1Y3RBYmlsaXR5LCBKU1BhcnNl
clNjcmlwdE1vZGUgc2NyaXB0TW9kZSwgUmVmUHRyPFREWkVudmlyb25tZW50TGluaz4gcGFyZW50
U2NvcGVURFpWYXJpYWJsZXMsIHN0ZDo6b3B0aW9uYWw8UHJpdmF0ZU5hbWVFbnZpcm9ubWVudD4g
cGFyZW50UHJpdmF0ZU5hbWVFbnZpcm9ubWVudCwgRGVyaXZlZENvbnRleHRUeXBlIGRlcml2ZWRD
b250ZXh0VHlwZSwgTmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIgbmVlZHNDbGFzc0ZpZWxkSW5p
dGlhbGl6ZXIsIFByaXZhdGVCcmFuZFJlcXVpcmVtZW50IHByaXZhdGVCcmFuZFJlcXVpcmVtZW50
LCBib29sIGlzQnVpbHRpbkRlZmF1bHRDbGFzc0NvbnN0cnVjdG9yID0gZmFsc2UpCkBAIC0xMzEs
NyArMTMxLDcgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgbV91bmxpbmtlZENvZGVCbG9ja0Zv
ckNhbGwuY2xlYXIoKTsKICAgICAgICAgbV91bmxpbmtlZENvZGVCbG9ja0ZvckNvbnN0cnVjdC5j
bGVhcigpOwotICAgICAgICB2bS51bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZVNwYWNlLnNldC5y
ZW1vdmUodGhpcyk7CisgICAgICAgIHZtLnVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlU3BhY2Uo
KS5zZXQucmVtb3ZlKHRoaXMpOwogICAgIH0KIAogICAgIHZvaWQgcmVjb3JkUGFyc2UoQ29kZUZl
YXR1cmVzIGZlYXR1cmVzLCBMZXhpY2FsU2NvcGVGZWF0dXJlcyBsZXhpY2FsU2NvcGVGZWF0dXJl
cywgYm9vbCBoYXNDYXB0dXJlZFZhcmlhYmxlcykKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCShyZXZpc2lvbiAyODYwMTEpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTIwLDcgKzEyMCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRBbGxvY2F0
ZVJhd09iamUKIAogICAgIFZNJiB2bSA9IHRoaXMtPnZtKCk7CiAgICAgaWYgKHNpemUpIHsKLSAg
ICAgICAgaWYgKEFsbG9jYXRvciBhbGxvY2F0b3IgPSB2bS5qc1ZhbHVlR2lnYWNhZ2VBdXhpbGlh
cnlTcGFjZS5hbGxvY2F0b3JGb3JOb25WaXJ0dWFsKHNpemUsIEFsbG9jYXRvckZvck1vZGU6OkFs
bG9jYXRvcklmRXhpc3RzKSkgeworICAgICAgICBpZiAoQWxsb2NhdG9yIGFsbG9jYXRvciA9IHZt
LmpzVmFsdWVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlKCkuYWxsb2NhdG9yRm9yTm9uVmlydHVhbChz
aXplLCBBbGxvY2F0b3JGb3JNb2RlOjpBbGxvY2F0b3JJZkV4aXN0cykpIHsKICAgICAgICAgICAg
IG1faml0LmVtaXRBbGxvY2F0ZShzdG9yYWdlR1BSLCBKSVRBbGxvY2F0b3I6OmNvbnN0YW50KGFs
bG9jYXRvciksIHNjcmF0Y2hHUFIsIHNjcmF0Y2gyR1BSLCBzbG93Q2FzZXMpOwogICAgICAgICAg
ICAgCiAgICAgICAgICAgICBtX2ppdC5hZGRQdHIoCkBAIC0xMDczOCw3ICsxMDczOCw3IEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVBbGxvY2F0ZVByb3AKICAgICAKICAgICBzaXplX3Qg
c2l6ZSA9IGluaXRpYWxPdXRPZkxpbmVDYXBhY2l0eSAqIHNpemVvZihKU1ZhbHVlKTsKIAotICAg
IEFsbG9jYXRvciBhbGxvY2F0b3IgPSB2bSgpLmpzVmFsdWVHaWdhY2FnZUF1eGlsaWFyeVNwYWNl
LmFsbG9jYXRvckZvck5vblZpcnR1YWwoc2l6ZSwgQWxsb2NhdG9yRm9yTW9kZTo6QWxsb2NhdG9y
SWZFeGlzdHMpOworICAgIEFsbG9jYXRvciBhbGxvY2F0b3IgPSB2bSgpLmpzVmFsdWVHaWdhY2Fn
ZUF1eGlsaWFyeVNwYWNlKCkuYWxsb2NhdG9yRm9yTm9uVmlydHVhbChzaXplLCBBbGxvY2F0b3JG
b3JNb2RlOjpBbGxvY2F0b3JJZkV4aXN0cyk7CiAKICAgICBpZiAoIWFsbG9jYXRvciB8fCBub2Rl
LT50cmFuc2l0aW9uKCktPnByZXZpb3VzLT5jb3VsZEhhdmVJbmRleGluZ0hlYWRlcigpKSB7CiAg
ICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGJhc2UodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwpA
QCAtMTA3ODIsNyArMTA3ODIsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlUmVhbGxv
Y2F0ZVByCiAgICAgc2l6ZV90IG5ld1NpemUgPSBvbGRTaXplICogb3V0T2ZMaW5lR3Jvd3RoRmFj
dG9yOwogICAgIEFTU0VSVChuZXdTaXplID09IG5vZGUtPnRyYW5zaXRpb24oKS0+bmV4dC0+b3V0
T2ZMaW5lQ2FwYWNpdHkoKSAqIHNpemVvZihKU1ZhbHVlKSk7CiAgICAgCi0gICAgQWxsb2NhdG9y
IGFsbG9jYXRvciA9IHZtKCkuanNWYWx1ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UuYWxsb2NhdG9y
Rm9yTm9uVmlydHVhbChuZXdTaXplLCBBbGxvY2F0b3JGb3JNb2RlOjpBbGxvY2F0b3JJZkV4aXN0
cyk7CisgICAgQWxsb2NhdG9yIGFsbG9jYXRvciA9IHZtKCkuanNWYWx1ZUdpZ2FjYWdlQXV4aWxp
YXJ5U3BhY2UoKS5hbGxvY2F0b3JGb3JOb25WaXJ0dWFsKG5ld1NpemUsIEFsbG9jYXRvckZvck1v
ZGU6OkFsbG9jYXRvcklmRXhpc3RzKTsKIAogICAgIGlmICghYWxsb2NhdG9yIHx8IG5vZGUtPnRy
YW5zaXRpb24oKS0+cHJldmlvdXMtPmNvdWxkSGF2ZUluZGV4aW5nSGVhZGVyKCkpIHsKICAgICAg
ICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYmFzZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CkBAIC0x
MTQ5OSw3ICsxMTQ5OSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXROZXdUeXBlZEFycmF5
V2kKICAgICAgICAgbV9qaXQuYW5kMzIoVHJ1c3RlZEltbTMyKH43KSwgc2NyYXRjaEdQUik7CiAg
ICAgfQogICAgIG1faml0LmVtaXRBbGxvY2F0ZVZhcmlhYmxlU2l6ZWQoCi0gICAgICAgIHN0b3Jh
Z2VHUFIsIHZtKCkucHJpbWl0aXZlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZSwgc2NyYXRjaEdQUiwg
c2NyYXRjaEdQUiwKKyAgICAgICAgc3RvcmFnZUdQUiwgdm0oKS5wcmltaXRpdmVHaWdhY2FnZUF1
eGlsaWFyeVNwYWNlKCksIHNjcmF0Y2hHUFIsIHNjcmF0Y2hHUFIsCiAgICAgICAgIHNjcmF0Y2hH
UFIyLCBzbG93Q2FzZXMpOwogICAgIAogICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIGRvbmUgPSBt
X2ppdC5icmFuY2hUZXN0MzIoTWFjcm9Bc3NlbWJsZXI6Olplcm8sIHNpemVHUFIpOwpAQCAtMTM3
MDAsNyArMTM3MDAsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0QWxsb2NhdGVCdXR0ZXJm
CiAgICAgZGlkTm90T3ZlcmZsb3cubGluaygmbV9qaXQpOwogI2VuZGlmCiAgICAgbV9qaXQuZW1p
dEFsbG9jYXRlVmFyaWFibGVTaXplZCgKLSAgICAgICAgc3RvcmFnZVJlc3VsdEdQUiwgdm0oKS5q
c1ZhbHVlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZSwgc2NyYXRjaDIsIHNjcmF0Y2gxLCBzY3JhdGNo
Mywgc2xvd0Nhc2VzKTsKKyAgICAgICAgc3RvcmFnZVJlc3VsdEdQUiwgdm0oKS5qc1ZhbHVlR2ln
YWNhZ2VBdXhpbGlhcnlTcGFjZSgpLCBzY3JhdGNoMiwgc2NyYXRjaDEsIHNjcmF0Y2gzLCBzbG93
Q2FzZXMpOwogICAgIG1faml0LmFkZFB0cihUcnVzdGVkSW1tMzIoc2l6ZW9mKEluZGV4aW5nSGVh
ZGVyKSksIHN0b3JhZ2VSZXN1bHRHUFIpOwogCiAgICAgbV9qaXQuc3RvcmUzMihzaXplR1BSLCBN
YWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzdG9yYWdlUmVzdWx0R1BSLCBCdXR0ZXJmbHk6Om9mZnNl
dE9mUHVibGljTGVuZ3RoKCkpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
TG93ZXJERkdUb0IzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRs
L0ZUTExvd2VyREZHVG9CMy5jcHAJKHJldmlzaW9uIDI4NjAxMSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODMwMCw3
ICs4MzAwLDcgQEAgSUdOT1JFX0NMQU5HX1dBUk5JTkdTX0VORAogICAgICAgICAgICAgICAgIG1f
b3V0LmNvbnN0SW50UHRyKH5zdGF0aWNfY2FzdDxpbnRwdHJfdD4oNykpKTsKICAgICAgICAgfQog
Ci0gICAgICAgIExWYWx1ZSBhbGxvY2F0b3IgPSBhbGxvY2F0b3JGb3JTaXplKHZtKCkucHJpbWl0
aXZlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZSwgYnl0ZVNpemUsIHNsb3dDYXNlKTsKKyAgICAgICAg
TFZhbHVlIGFsbG9jYXRvciA9IGFsbG9jYXRvckZvclNpemUodm0oKS5wcmltaXRpdmVHaWdhY2Fn
ZUF1eGlsaWFyeVNwYWNlKCksIGJ5dGVTaXplLCBzbG93Q2FzZSk7CiAgICAgICAgIExWYWx1ZSBz
dG9yYWdlID0gYWxsb2NhdGVIZWFwQ2VsbChhbGxvY2F0b3IsIHNsb3dDYXNlKTsKIAogICAgICAg
ICBzcGxhdFdvcmRzKApAQCAtMTM5MjEsNyArMTM5MjEsNyBAQCBJR05PUkVfQ0xBTkdfV0FSTklO
R1NfRU5ECiAgICAgICAgICAgICAgICAgVmFsdWVGcm9tQmxvY2sgbm9CdXR0ZXJmbHkgPSBtX291
dC5hbmNob3IobV9vdXQuaW50UHRyWmVybyk7CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAg
ICAgICAgTFZhbHVlIHN0YXJ0T2ZTdG9yYWdlID0gYWxsb2NhdGVIZWFwQ2VsbCgKLSAgICAgICAg
ICAgICAgICAgICAgYWxsb2NhdG9yRm9yU2l6ZSh2bSgpLmpzVmFsdWVHaWdhY2FnZUF1eGlsaWFy
eVNwYWNlLCBidXR0ZXJmbHlTaXplLCBzbG93UGF0aCksCisgICAgICAgICAgICAgICAgICAgIGFs
bG9jYXRvckZvclNpemUodm0oKS5qc1ZhbHVlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZSgpLCBidXR0
ZXJmbHlTaXplLCBzbG93UGF0aCksCiAgICAgICAgICAgICAgICAgICAgIHNsb3dQYXRoKTsKIAog
ICAgICAgICAgICAgICAgIExWYWx1ZSBmYXN0QnV0dGVyZmx5VmFsdWUgPSBtX291dC5hZGQoCkBA
IC0xNTAxNiw3ICsxNTAxNiw3IEBAIElHTk9SRV9DTEFOR19XQVJOSU5HU19FTkQKICAgICAgICAg
TEJhc2ljQmxvY2sgbGFzdE5leHQgPSBtX291dC5pbnNlcnROZXdCbG9ja3NCZWZvcmUoc2xvd1Bh
dGgpOwogCiAgICAgICAgIHNpemVfdCBzaXplSW5CeXRlcyA9IHNpemVJblZhbHVlcyAqIHNpemVv
ZihKU1ZhbHVlKTsKLSAgICAgICAgQWxsb2NhdG9yIGFsbG9jYXRvciA9IHZtKCkuanNWYWx1ZUdp
Z2FjYWdlQXV4aWxpYXJ5U3BhY2UuYWxsb2NhdG9yRm9yTm9uVmlydHVhbChzaXplSW5CeXRlcywg
QWxsb2NhdG9yRm9yTW9kZTo6QWxsb2NhdG9ySWZFeGlzdHMpOworICAgICAgICBBbGxvY2F0b3Ig
YWxsb2NhdG9yID0gdm0oKS5qc1ZhbHVlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZSgpLmFsbG9jYXRv
ckZvck5vblZpcnR1YWwoc2l6ZUluQnl0ZXMsIEFsbG9jYXRvckZvck1vZGU6OkFsbG9jYXRvcklm
RXhpc3RzKTsKICAgICAgICAgTFZhbHVlIHN0YXJ0T2ZTdG9yYWdlID0gYWxsb2NhdGVIZWFwQ2Vs
bCgKICAgICAgICAgICAgIG1fb3V0LmNvbnN0SW50UHRyKGFsbG9jYXRvci5sb2NhbEFsbG9jYXRv
cigpKSwgc2xvd1BhdGgpOwogICAgICAgICBWYWx1ZUZyb21CbG9jayBmYXN0QnV0dGVyZmx5ID0g
bV9vdXQuYW5jaG9yKApAQCAtMTcwMzgsNyArMTcwMzgsNyBAQCBJR05PUkVfQ0xBTkdfV0FSTklO
R1NfRU5ECiAgICAgICAgIExWYWx1ZSBidXR0ZXJmbHlTaXplID0gbV9vdXQuYWRkKAogICAgICAg
ICAgICAgcGF5bG9hZFNpemUsIG1fb3V0LmNvbnN0SW50UHRyKHNpemVvZihJbmRleGluZ0hlYWRl
cikpKTsKIAotICAgICAgICBMVmFsdWUgYWxsb2NhdG9yID0gYWxsb2NhdG9yRm9yU2l6ZSh2bSgp
LmpzVmFsdWVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlLCBidXR0ZXJmbHlTaXplLCBmYWlsQ2FzZSk7
CisgICAgICAgIExWYWx1ZSBhbGxvY2F0b3IgPSBhbGxvY2F0b3JGb3JTaXplKHZtKCkuanNWYWx1
ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UoKSwgYnV0dGVyZmx5U2l6ZSwgZmFpbENhc2UpOwogICAg
ICAgICBMVmFsdWUgc3RhcnRPZlN0b3JhZ2UgPSBhbGxvY2F0ZUhlYXBDZWxsKGFsbG9jYXRvciwg
ZmFpbENhc2UpOwogCiAgICAgICAgIExWYWx1ZSBidXR0ZXJmbHkgPSBtX291dC5hZGQoc3RhcnRP
ZlN0b3JhZ2UsIG1fb3V0LmNvbnN0SW50UHRyKHNpemVvZihJbmRleGluZ0hlYWRlcikpKTsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0Jsb2NrRGlyZWN0b3J5LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQmxvY2tEaXJlY3RvcnkuaAkocmV2aXNp
b24gMjg2MDExKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQmxvY2tEaXJlY3Rvcnku
aAkod29ya2luZyBjb3B5KQpAQCAtNzQsNyArNzQsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzaHJp
bmsoKTsKICAgICB2b2lkIGFzc2VydE5vVW5zd2VwdCgpOwogICAgIHNpemVfdCBjZWxsU2l6ZSgp
IGNvbnN0IHsgcmV0dXJuIG1fY2VsbFNpemU7IH0KLSAgICBjb25zdCBDZWxsQXR0cmlidXRlcyYg
YXR0cmlidXRlcygpIGNvbnN0IHsgcmV0dXJuIG1fYXR0cmlidXRlczsgfQorICAgIGNvbnN0IENl
bGxBdHRyaWJ1dGVzIGF0dHJpYnV0ZXMoKSBjb25zdCB7IHJldHVybiBtX2F0dHJpYnV0ZXM7IH0K
ICAgICBib29sIG5lZWRzRGVzdHJ1Y3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2F0dHJpYnV0ZXMu
ZGVzdHJ1Y3Rpb24gPT0gTmVlZHNEZXN0cnVjdGlvbjsgfQogICAgIERlc3RydWN0aW9uTW9kZSBk
ZXN0cnVjdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fYXR0cmlidXRlcy5kZXN0cnVjdGlvbjsgfQog
ICAgIEhlYXBDZWxsOjpLaW5kIGNlbGxLaW5kKCkgY29uc3QgeyByZXR1cm4gbV9hdHRyaWJ1dGVz
LmNlbGxLaW5kOyB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Db2RlQmxvY2tT
ZXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Db2RlQmxvY2tT
ZXQuaAkocmV2aXNpb24gMjg2MDExKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ29k
ZUJsb2NrU2V0LmgJKHdvcmtpbmcgY29weSkKQEAgLTY2LDggKzY2LDYgQEAgcHVibGljOgogICAg
IHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+IHZvaWQgaXRlcmF0ZShjb25zdCBGdW5jdG9yJik7
CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4gdm9pZCBpdGVyYXRlKGNvbnN0IEFic3Ry
YWN0TG9ja2VyJiwgY29uc3QgRnVuY3RvciYpOwogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVu
Y3Rvcj4gdm9pZCBpdGVyYXRlVmlhU3Vic3BhY2VzKFZNJiwgY29uc3QgRnVuY3RvciYpOwotICAg
IAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+IHZvaWQgaXRlcmF0ZUN1cnJlbnRseUV4
ZWN1dGluZyhjb25zdCBGdW5jdG9yJik7CiAgICAgCiAgICAgdm9pZCBkdW1wKFByaW50U3RyZWFt
JikgY29uc3Q7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Db2RlQmxvY2tTZXRJ
bmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ29kZUJs
b2NrU2V0SW5saW5lcy5oCShyZXZpc2lvbiAyODYwMTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9Db2RlQmxvY2tTZXRJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTYwLDE4ICs2
MCw2IEBAIHZvaWQgQ29kZUJsb2NrU2V0OjppdGVyYXRlKGNvbnN0IEFic3RyYWMKIH0KIAogdGVt
cGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4KLXZvaWQgQ29kZUJsb2NrU2V0OjppdGVyYXRlVmlhU3Vi
c3BhY2VzKFZNJiB2bSwgY29uc3QgRnVuY3RvciYgZnVuY3RvcikKLXsKLSAgICB2bS5mb3JFYWNo
Q29kZUJsb2NrU3BhY2UoCi0gICAgICAgIFsmXSAoYXV0byYgc3BhY2VBbmRTZXQpIHsKLSAgICAg
ICAgICAgIHNwYWNlQW5kU2V0LnNwYWNlLmZvckVhY2hMaXZlQ2VsbCgKLSAgICAgICAgICAgICAg
ICBbJl0gKEhlYXBDZWxsKiBjZWxsLCBIZWFwQ2VsbDo6S2luZCkgewotICAgICAgICAgICAgICAg
ICAgICBmdW5jdG9yKGpzQ2FzdDxDb2RlQmxvY2sqPihzdGF0aWNfY2FzdDxKU0NlbGwqPihjZWxs
KSkpOwotICAgICAgICAgICAgICAgIH0pOwotICAgICAgICB9KTsKLX0KLQotdGVtcGxhdGU8dHlw
ZW5hbWUgRnVuY3Rvcj4KIHZvaWQgQ29kZUJsb2NrU2V0OjppdGVyYXRlQ3VycmVudGx5RXhlY3V0
aW5nKGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3IpCiB7CiAgICAgTG9ja2VyIGxvY2tlciB7IG1fbG9j
ayB9OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ29tcGxldGVTdWJzcGFjZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ29tcGxldGVTdWJz
cGFjZS5jcHAJKHJldmlzaW9uIDI4NjAxMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L0NvbXBsZXRlU3Vic3BhY2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw3ICszNSw3IEBACiAK
IG5hbWVzcGFjZSBKU0MgewogCi1Db21wbGV0ZVN1YnNwYWNlOjpDb21wbGV0ZVN1YnNwYWNlKENT
dHJpbmcgbmFtZSwgSGVhcCYgaGVhcCwgSGVhcENlbGxUeXBlKiBoZWFwQ2VsbFR5cGUsIEFsaWdu
ZWRNZW1vcnlBbGxvY2F0b3IqIGFsaWduZWRNZW1vcnlBbGxvY2F0b3IpCitDb21wbGV0ZVN1YnNw
YWNlOjpDb21wbGV0ZVN1YnNwYWNlKENTdHJpbmcgbmFtZSwgSGVhcCYgaGVhcCwgY29uc3QgSGVh
cENlbGxUeXBlJiBoZWFwQ2VsbFR5cGUsIEFsaWduZWRNZW1vcnlBbGxvY2F0b3IqIGFsaWduZWRN
ZW1vcnlBbGxvY2F0b3IpCiAgICAgOiBTdWJzcGFjZShuYW1lLCBoZWFwKQogewogICAgIGluaXRp
YWxpemUoaGVhcENlbGxUeXBlLCBhbGlnbmVkTWVtb3J5QWxsb2NhdG9yKTsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0NvbXBsZXRlU3Vic3BhY2UuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Db21wbGV0ZVN1YnNwYWNlLmgJKHJldmlzaW9uIDI4
NjAxMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0NvbXBsZXRlU3Vic3BhY2UuaAko
d29ya2luZyBjb3B5KQpAQCAtMzEsNyArMzEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogY2xhc3Mg
Q29tcGxldGVTdWJzcGFjZSBmaW5hbCA6IHB1YmxpYyBTdWJzcGFjZSB7CiBwdWJsaWM6Ci0gICAg
SlNfRVhQT1JUX1BSSVZBVEUgQ29tcGxldGVTdWJzcGFjZShDU3RyaW5nIG5hbWUsIEhlYXAmLCBI
ZWFwQ2VsbFR5cGUqLCBBbGlnbmVkTWVtb3J5QWxsb2NhdG9yKik7CisgICAgSlNfRVhQT1JUX1BS
SVZBVEUgQ29tcGxldGVTdWJzcGFjZShDU3RyaW5nIG5hbWUsIEhlYXAmLCBjb25zdCBIZWFwQ2Vs
bFR5cGUmLCBBbGlnbmVkTWVtb3J5QWxsb2NhdG9yKik7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUg
fkNvbXBsZXRlU3Vic3BhY2UoKSBmaW5hbDsKIAogICAgIC8vIEluIHNvbWUgY29kZSBwYXRocywg
d2UgbmVlZCBpdCB0byBiZSBhIGNvbXBpbGUgZXJyb3IgdG8gY2FsbCB0aGUgdmlydHVhbCB2ZXJz
aW9uIG9mIG9uZSBvZgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAJKHJldmlz
aW9uIDI4NjAxMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yMSwxMyArMjEsMjAgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNs
dWRlICJIZWFwLmgiCiAKKyNpbmNsdWRlICJCaWdJbnRPYmplY3QuaCIKKyNpbmNsdWRlICJCb29s
ZWFuT2JqZWN0LmgiCiAjaW5jbHVkZSAiQnVpbHRpbkV4ZWN1dGFibGVzLmgiCisjaW5jbHVkZSAi
QnJhbmRlZFN0cnVjdHVyZS5oIgorI2luY2x1ZGUgIkNsb25lZEFyZ3VtZW50cy5oIgogI2luY2x1
ZGUgIkNvZGVCbG9jay5oIgogI2luY2x1ZGUgIkNvZGVCbG9ja1NldElubGluZXMuaCIKICNpbmNs
dWRlICJDb2xsZWN0aW5nU2NvcGUuaCIKICNpbmNsdWRlICJDb25zZXJ2YXRpdmVSb290cy5oIgor
I2luY2x1ZGUgIkRhdGVJbnN0YW5jZS5oIgorI2luY2x1ZGUgIkRlYnVnZ2VyU2NvcGUuaCIKICNp
bmNsdWRlICJFZGVuR0NBY3Rpdml0eUNhbGxiYWNrLmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uLmgi
CisjaW5jbHVkZSAiRmFzdE1hbGxvY0FsaWduZWRNZW1vcnlBbGxvY2F0b3IuaCIKICNpbmNsdWRl
ICJGdWxsR0NBY3Rpdml0eUNhbGxiYWNrLmgiCiAjaW5jbHVkZSAiRnVuY3Rpb25FeGVjdXRhYmxl
SW5saW5lcy5oIgogI2luY2x1ZGUgIkdDQWN0aXZpdHlDYWxsYmFjay5oIgpAQCAtMzUsNiArNDIs
NyBAQAogI2luY2x1ZGUgIkdDSW5jb21pbmdSZWZDb3VudGVkU2V0SW5saW5lcy5oIgogI2luY2x1
ZGUgIkdDU2VnbWVudGVkQXJyYXlJbmxpbmVzLmgiCiAjaW5jbHVkZSAiR0NUeXBlTWFwLmgiCisj
aW5jbHVkZSAiR2V0dGVyU2V0dGVyLmgiCiAjaW5jbHVkZSAiSGFzT3duUHJvcGVydHlDYWNoZS5o
IgogI2luY2x1ZGUgIkhlYXBIZWxwZXJQb29sLmgiCiAjaW5jbHVkZSAiSGVhcEl0ZXJhdGlvblNj
b3BlLmgiCkBAIC00MywzNyArNTEsMTE1IEBACiAjaW5jbHVkZSAiSGVhcFZlcmlmaWVyLmgiCiAj
aW5jbHVkZSAiSW5jcmVtZW50YWxTd2VlcGVyLmgiCiAjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIK
KyNpbmNsdWRlICJJbnRsQ29sbGF0b3IuaCIKKyNpbmNsdWRlICJJbnRsRGF0ZVRpbWVGb3JtYXQu
aCIKKyNpbmNsdWRlICJJbnRsRGlzcGxheU5hbWVzLmgiCisjaW5jbHVkZSAiSW50bExpc3RGb3Jt
YXQuaCIKKyNpbmNsdWRlICJJbnRsTG9jYWxlLmgiCisjaW5jbHVkZSAiSW50bE51bWJlckZvcm1h
dC5oIgorI2luY2x1ZGUgIkludGxQbHVyYWxSdWxlcy5oIgorI2luY2x1ZGUgIkludGxSZWxhdGl2
ZVRpbWVGb3JtYXQuaCIKKyNpbmNsdWRlICJJbnRsU2VnbWVudEl0ZXJhdG9yLmgiCisjaW5jbHVk
ZSAiSW50bFNlZ21lbnRlci5oIgorI2luY2x1ZGUgIkludGxTZWdtZW50cy5oIgogI2luY2x1ZGUg
Iklzb0NlbGxTZXRJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSklUU3R1YlJvdXRpbmVTZXQuaCIKICNp
bmNsdWRlICJKSVRXb3JrbGlzdElubGluZXMuaCIKKyNpbmNsdWRlICJKU0FQSUdsb2JhbE9iamVj
dC5oIgorI2luY2x1ZGUgIkpTQVBJVmFsdWVXcmFwcGVyLmgiCisjaW5jbHVkZSAiSlNBUElXcmFw
cGVyT2JqZWN0LmgiCisjaW5jbHVkZSAiSlNBcnJheS5oIgorI2luY2x1ZGUgIkpTQXJyYXlCdWZm
ZXIuaCIKKyNpbmNsdWRlICJKU0FycmF5SXRlcmF0b3IuaCIKKyNpbmNsdWRlICJKU0FzeW5jR2Vu
ZXJhdG9yLmgiCisjaW5jbHVkZSAiSlNCaWdJbnQuaCIKKyNpbmNsdWRlICJKU0JvdW5kRnVuY3Rp
b24uaCIKKyNpbmNsdWRlICJKU0NhbGxiYWNrQ29uc3RydWN0b3IuaCIKKyNpbmNsdWRlICJKU0Nh
bGxiYWNrRnVuY3Rpb24uaCIKKyNpbmNsdWRlICJKU0NhbGxiYWNrT2JqZWN0LmgiCisjaW5jbHVk
ZSAiSlNDYWxsZWUuaCIKKyNpbmNsdWRlICJKU0N1c3RvbUdldHRlckZ1bmN0aW9uLmgiCisjaW5j
bHVkZSAiSlNDdXN0b21TZXR0ZXJGdW5jdGlvbi5oIgorI2luY2x1ZGUgIkpTRGF0YVZpZXcuaCIK
ICNpbmNsdWRlICJKU0ZpbmFsaXphdGlvblJlZ2lzdHJ5LmgiCisjaW5jbHVkZSAiSlNGdW5jdGlv
bi5oIgorI2luY2x1ZGUgIkpTR2xvYmFsTGV4aWNhbEVudmlyb25tZW50LmgiCisjaW5jbHVkZSAi
SlNHbG9iYWxPYmplY3QuaCIKKyNpbmNsdWRlICJKU0luamVjdGVkU2NyaXB0SG9zdC5oIgorI2lu
Y2x1ZGUgIkpTSmF2YVNjcmlwdENhbGxGcmFtZS5oIgorI2luY2x1ZGUgIkpTTWFwLmgiCisjaW5j
bHVkZSAiSlNNYXBJdGVyYXRvci5oIgorI2luY2x1ZGUgIkpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0
LmgiCisjaW5jbHVkZSAiSlNNb2R1bGVSZWNvcmQuaCIKKyNpbmNsdWRlICJKU05hdGl2ZVN0ZEZ1
bmN0aW9uLmgiCisjaW5jbHVkZSAiSlNQcm9taXNlLmgiCisjaW5jbHVkZSAiSlNQcm9wZXJ0eU5h
bWVFbnVtZXJhdG9yLmgiCisjaW5jbHVkZSAiSlNQcm94eS5oIgorI2luY2x1ZGUgIkpTU2NyaXB0
RmV0Y2hQYXJhbWV0ZXJzLmgiCiAjaW5jbHVkZSAiSlNWaXJ0dWFsTWFjaGluZUludGVybmFsLmgi
CisjaW5jbHVkZSAiSlNTY3JpcHRGZXRjaGVyLmgiCisjaW5jbHVkZSAiSlNTZXQuaCIKKyNpbmNs
dWRlICJKU1NldEl0ZXJhdG9yLmgiCisjaW5jbHVkZSAiSlNTb3VyY2VDb2RlLmgiCisjaW5jbHVk
ZSAiSlNTdHJpbmdJdGVyYXRvci5oIgorI2luY2x1ZGUgIkpTVGVtcGxhdGVPYmplY3REZXNjcmlw
dG9yLmgiCisjaW5jbHVkZSAiSlNUb1dhc21JQ0NhbGxlZS5oIgorI2luY2x1ZGUgIkpTVHlwZWRB
cnJheXMuaCIKICNpbmNsdWRlICJKU1dlYWtNYXAuaCIKICNpbmNsdWRlICJKU1dlYWtPYmplY3RS
ZWYuaCIKICNpbmNsdWRlICJKU1dlYWtTZXQuaCIKICNpbmNsdWRlICJKU1dlYkFzc2VtYmx5Q29k
ZUJsb2NrLmgiCisjaW5jbHVkZSAiSlNXZWJBc3NlbWJseUV4Y2VwdGlvbi5oIgorI2luY2x1ZGUg
IkpTV2ViQXNzZW1ibHlHbG9iYWwuaCIKKyNpbmNsdWRlICJKU1dlYkFzc2VtYmx5SW5zdGFuY2Uu
aCIKKyNpbmNsdWRlICJKU1dlYkFzc2VtYmx5TWVtb3J5LmgiCisjaW5jbHVkZSAiSlNXZWJBc3Nl
bWJseU1vZHVsZS5oIgorI2luY2x1ZGUgIkpTV2ViQXNzZW1ibHlUYWJsZS5oIgorI2luY2x1ZGUg
IkpTV2ViQXNzZW1ibHlUYWcuaCIKKyNpbmNsdWRlICJKU1dpdGhTY29wZS5oIgogI2luY2x1ZGUg
Ik1hY2hpbmVTdGFja01hcmtlci5oIgogI2luY2x1ZGUgIk1hcmtTdGFja01lcmdpbmdDb25zdHJh
aW50LmgiCiAjaW5jbHVkZSAiTWFya2VkSlNWYWx1ZVJlZkFycmF5LmgiCiAjaW5jbHVkZSAiTWFy
a2VkU3BhY2VJbmxpbmVzLmgiCiAjaW5jbHVkZSAiTWFya2luZ0NvbnN0cmFpbnRTZXQuaCIKICNp
bmNsdWRlICJQcmV2ZW50Q29sbGVjdGlvblNjb3BlLmgiCisjaW5jbHVkZSAiUHJvZ3JhbUV4ZWN1
dGFibGUuaCIKKyNpbmNsdWRlICJQcm9wZXJ0eVRhYmxlLmgiCisjaW5jbHVkZSAiUHJveHlSZXZv
a2UuaCIKKyNpbmNsdWRlICJSZWdFeHBPYmplY3QuaCIKICNpbmNsdWRlICJTYW1wbGluZ1Byb2Zp
bGVyLmgiCisjaW5jbHVkZSAiU2NvcGVkQXJndW1lbnRzLmgiCiAjaW5jbHVkZSAiU2hhZG93Q2hp
Y2tlbi5oIgorI2luY2x1ZGUgIlNoYWRvd1JlYWxtT2JqZWN0LmgiCiAjaW5jbHVkZSAiU3BhY2VU
aW1lTXV0YXRvclNjaGVkdWxlci5oIgogI2luY2x1ZGUgIlN0b2NoYXN0aWNTcGFjZVRpbWVNdXRh
dG9yU2NoZWR1bGVyLmgiCiAjaW5jbHVkZSAiU3RvcElmTmVjZXNzYXJ5VGltZXIuaCIKKyNpbmNs
dWRlICJTdHJpY3RFdmFsQWN0aXZhdGlvbi5oIgorI2luY2x1ZGUgIlN0cmluZ09iamVjdC5oIgor
I2luY2x1ZGUgIlN0cnVjdHVyZUNoYWluLmgiCiAjaW5jbHVkZSAiU3Vic3BhY2VJbmxpbmVzLmgi
CiAjaW5jbHVkZSAiU3VwZXJTYW1wbGVyLmgiCiAjaW5jbHVkZSAiU3dlZXBpbmdTY29wZS5oIgor
I2luY2x1ZGUgIlN5bWJvbE9iamVjdC5oIgogI2luY2x1ZGUgIlN5bWJvbFRhYmxlSW5saW5lcy5o
IgogI2luY2x1ZGUgIlN5bmNocm9ub3VzU3RvcFRoZVdvcmxkTXV0YXRvclNjaGVkdWxlci5oIgor
I2luY2x1ZGUgIlRlbXBvcmFsQ2FsZW5kYXIuaCIKKyNpbmNsdWRlICJUZW1wb3JhbER1cmF0aW9u
LmgiCisjaW5jbHVkZSAiVGVtcG9yYWxJbnN0YW50LmgiCisjaW5jbHVkZSAiVGVtcG9yYWxQbGFp
blRpbWUuaCIKKyNpbmNsdWRlICJUZW1wb3JhbFRpbWVab25lLmgiCiAjaW5jbHVkZSAiVHlwZVBy
b2ZpbGVyLmgiCiAjaW5jbHVkZSAiVHlwZVByb2ZpbGVyTG9nLmgiCisjaW5jbHVkZSAiVW5saW5r
ZWRGdW5jdGlvbkNvZGVCbG9jay5oIgorI2luY2x1ZGUgIlVubGlua2VkTW9kdWxlUHJvZ3JhbUNv
ZGVCbG9jay5oIgorI2luY2x1ZGUgIlVubGlua2VkUHJvZ3JhbUNvZGVCbG9jay5oIgogI2luY2x1
ZGUgIlZNLmgiCiAjaW5jbHVkZSAiVmVyaWZpZXJTbG90VmlzaXRvcklubGluZXMuaCIKICNpbmNs
dWRlICJXZWFrTWFwSW1wbElubGluZXMuaCIKICNpbmNsdWRlICJXZWFrU2V0SW5saW5lcy5oIgor
I2luY2x1ZGUgIldlYkFzc2VtYmx5RnVuY3Rpb24uaCIKKyNpbmNsdWRlICJXZWJBc3NlbWJseU1v
ZHVsZVJlY29yZC5oIgorI2luY2x1ZGUgIldlYkFzc2VtYmx5V3JhcHBlckZ1bmN0aW9uLmgiCiAj
aW5jbHVkZSA8YWxnb3JpdGhtPgogI2luY2x1ZGUgPHd0Zi9DcnlwdG9ncmFwaGljYWxseVJhbmRv
bU51bWJlci5oPgogI2luY2x1ZGUgPHd0Zi9MaXN0RHVtcC5oPgpAQCAtOTQsNiArMTgwLDEwIEBA
CiAjaW5jbHVkZSAiSlNDR0xpYldyYXBwZXJPYmplY3QuaCIKICNlbmRpZgogCisjaWYgSlNDX09C
SkNfQVBJX0VOQUJMRUQKKyNpbmNsdWRlICJPYmpDQ2FsbGJhY2tGdW5jdGlvbi5oIgorI2VuZGlm
CisKIG5hbWVzcGFjZSBKU0MgewogCiBuYW1lc3BhY2UgewpAQCAtMjg2LDYgKzM3NiwxMTYgQEAg
SGVhcDo6SGVhcChWTSYgdm0sIEhlYXBUeXBlIGhlYXBUeXBlKQogICAgICwgbV9oZWxwZXJDbGll
bnQoJmhlYXBIZWxwZXJQb29sKCkpCiAgICAgLCBtX3RocmVhZExvY2soQm94PExvY2s+OjpjcmVh
dGUoKSkKICAgICAsIG1fdGhyZWFkQ29uZGl0aW9uKEF1dG9tYXRpY1RocmVhZENvbmRpdGlvbjo6
Y3JlYXRlKCkpCisKKyAgICAvLyBtbGFtIEhlYXBDZWxsVHlwZXMKKyAgICAsIGF1eGlsaWFyeUhl
YXBDZWxsVHlwZShDZWxsQXR0cmlidXRlcyhEb2VzTm90TmVlZERlc3RydWN0aW9uLCBIZWFwQ2Vs
bDo6QXV4aWxpYXJ5KSkKKyAgICAsIGltbXV0YWJsZUJ1dHRlcmZseUhlYXBDZWxsVHlwZShDZWxs
QXR0cmlidXRlcyhEb2VzTm90TmVlZERlc3RydWN0aW9uLCBIZWFwQ2VsbDo6SlNDZWxsV2l0aElu
ZGV4aW5nSGVhZGVyKSkKKyAgICAsIGNlbGxIZWFwQ2VsbFR5cGUoQ2VsbEF0dHJpYnV0ZXMoRG9l
c05vdE5lZWREZXN0cnVjdGlvbiwgSGVhcENlbGw6OkpTQ2VsbCkpCisgICAgLCBkZXN0cnVjdGli
bGVDZWxsSGVhcENlbGxUeXBlKENlbGxBdHRyaWJ1dGVzKE5lZWRzRGVzdHJ1Y3Rpb24sIEhlYXBD
ZWxsOjpKU0NlbGwpKQorICAgICwgYXBpR2xvYmFsT2JqZWN0SGVhcENlbGxUeXBlKElzb0hlYXBD
ZWxsVHlwZTo6QXJnczxKU0FQSUdsb2JhbE9iamVjdD4oKSkKKyAgICAsIGNhbGxiYWNrQ29uc3Ry
dWN0b3JIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpBcmdzPEpTQ2FsbGJhY2tDb25zdHJ1
Y3Rvcj4oKSkKKyAgICAsIGNhbGxiYWNrR2xvYmFsT2JqZWN0SGVhcENlbGxUeXBlKElzb0hlYXBD
ZWxsVHlwZTo6QXJnczxKU0NhbGxiYWNrT2JqZWN0PEpTR2xvYmFsT2JqZWN0Pj4oKSkKKyAgICAs
IGNhbGxiYWNrT2JqZWN0SGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6QXJnczxKU0NhbGxi
YWNrT2JqZWN0PEpTTm9uRmluYWxPYmplY3Q+PigpKQorICAgICwgY3VzdG9tR2V0dGVyRnVuY3Rp
b25IZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpBcmdzPEpTQ3VzdG9tR2V0dGVyRnVuY3Rp
b24+KCkpCisgICAgLCBjdXN0b21TZXR0ZXJGdW5jdGlvbkhlYXBDZWxsVHlwZShJc29IZWFwQ2Vs
bFR5cGU6OkFyZ3M8SlNDdXN0b21TZXR0ZXJGdW5jdGlvbj4oKSkKKyAgICAsIGRhdGVJbnN0YW5j
ZUhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OkFyZ3M8RGF0ZUluc3RhbmNlPigpKQorICAg
ICwgZXJyb3JJbnN0YW5jZUhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OkFyZ3M8RXJyb3JJ
bnN0YW5jZT4oKSkKKyAgICAsIGZpbmFsaXphdGlvblJlZ2lzdHJ5Q2VsbFR5cGUoSXNvSGVhcENl
bGxUeXBlOjpBcmdzPEpTRmluYWxpemF0aW9uUmVnaXN0cnk+KCkpCisgICAgLCBnbG9iYWxMZXhp
Y2FsRW52aXJvbm1lbnRIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpBcmdzPEpTR2xvYmFs
TGV4aWNhbEVudmlyb25tZW50PigpKQorICAgICwgZ2xvYmFsT2JqZWN0SGVhcENlbGxUeXBlKElz
b0hlYXBDZWxsVHlwZTo6QXJnczxKU0dsb2JhbE9iamVjdD4oKSkKKyAgICAsIGluamVjdGVkU2Ny
aXB0SG9zdFNwYWNlSGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6QXJnczxJbnNwZWN0b3I6
OkpTSW5qZWN0ZWRTY3JpcHRIb3N0PigpKQorICAgICwgamF2YVNjcmlwdENhbGxGcmFtZUhlYXBD
ZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OkFyZ3M8SW5zcGVjdG9yOjpKU0phdmFTY3JpcHRDYWxs
RnJhbWU+KCkpCisgICAgLCBqc01vZHVsZVJlY29yZEhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5
cGU6OkFyZ3M8SlNNb2R1bGVSZWNvcmQ+KCkpCisgICAgLCBtb2R1bGVOYW1lc3BhY2VPYmplY3RI
ZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpBcmdzPEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0
PigpKQorICAgICwgbmF0aXZlU3RkRnVuY3Rpb25IZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBl
OjpBcmdzPEpTTmF0aXZlU3RkRnVuY3Rpb24+KCkpCisvLyAgICAsIHN0cmluZ0hlYXBDZWxsVHlw
ZShtYWtlVW5pcXVlPElzb0lubGluZWRIZWFwQ2VsbFR5cGU8SlNTdHJpbmc+PigpKQorICAgICwg
d2Vha01hcEhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OkFyZ3M8SlNXZWFrTWFwPigpKQor
ICAgICwgd2Vha1NldEhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OkFyZ3M8SlNXZWFrU2V0
PigpKQorLy8gICAgLCBkZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUobWFrZVVuaXF1ZTxK
U0Rlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZT4oKSkKKyNpZiBKU0NfT0JKQ19BUElfRU5B
QkxFRAorICAgICwgYXBpV3JhcHBlck9iamVjdEhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6
OkFyZ3M8SlNDYWxsYmFja09iamVjdDxKU0FQSVdyYXBwZXJPYmplY3Q+PigpKQorICAgICwgb2Jq
Q0NhbGxiYWNrRnVuY3Rpb25IZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpBcmdzPE9iakND
YWxsYmFja0Z1bmN0aW9uPigpKQorI2VuZGlmCisjaWZkZWYgSlNDX0dMSUJfQVBJX0VOQUJMRUQK
KyAgICAsIGFwaVdyYXBwZXJPYmplY3RIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpBcmdz
PEpTQ2FsbGJhY2tPYmplY3Q8SlNBUElXcmFwcGVyT2JqZWN0Pj4oKSkKKyAgICAsIGNhbGxiYWNr
QVBJV3JhcHBlckdsb2JhbE9iamVjdEhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OkFyZ3M8
SlNDYWxsYmFja09iamVjdDxKU0FQSVdyYXBwZXJHbG9iYWxPYmplY3Q+PigpKQorICAgICwganNj
Q2FsbGJhY2tGdW5jdGlvbkhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OkFyZ3M8SlNDQ2Fs
bGJhY2tGdW5jdGlvbj4oKSkKKyNlbmRpZgorICAgICwgaW50bENvbGxhdG9ySGVhcENlbGxUeXBl
KElzb0hlYXBDZWxsVHlwZTo6QXJnczxJbnRsQ29sbGF0b3I+KCkpCisgICAgLCBpbnRsRGF0ZVRp
bWVGb3JtYXRIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpBcmdzPEludGxEYXRlVGltZUZv
cm1hdD4oKSkKKyAgICAsIGludGxEaXNwbGF5TmFtZXNIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxU
eXBlOjpBcmdzPEludGxEaXNwbGF5TmFtZXM+KCkpCisgICAgLCBpbnRsTGlzdEZvcm1hdEhlYXBD
ZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OkFyZ3M8SW50bExpc3RGb3JtYXQ+KCkpCisgICAgLCBp
bnRsTG9jYWxlSGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6QXJnczxJbnRsTG9jYWxlPigp
KQorICAgICwgaW50bE51bWJlckZvcm1hdEhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OkFy
Z3M8SW50bE51bWJlckZvcm1hdD4oKSkKKyAgICAsIGludGxQbHVyYWxSdWxlc0hlYXBDZWxsVHlw
ZShJc29IZWFwQ2VsbFR5cGU6OkFyZ3M8SW50bFBsdXJhbFJ1bGVzPigpKQorICAgICwgaW50bFJl
bGF0aXZlVGltZUZvcm1hdEhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OkFyZ3M8SW50bFJl
bGF0aXZlVGltZUZvcm1hdD4oKSkKKyAgICAsIGludGxTZWdtZW50SXRlcmF0b3JIZWFwQ2VsbFR5
cGUoSXNvSGVhcENlbGxUeXBlOjpBcmdzPEludGxTZWdtZW50SXRlcmF0b3I+KCkpCisgICAgLCBp
bnRsU2VnbWVudGVySGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6QXJnczxJbnRsU2VnbWVu
dGVyPigpKQorICAgICwgaW50bFNlZ21lbnRzSGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6
QXJnczxJbnRsU2VnbWVudHM+KCkpCisjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQorICAgICwgd2Vi
QXNzZW1ibHlDb2RlQmxvY2tIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpBcmdzPEpTV2Vi
QXNzZW1ibHlDb2RlQmxvY2s+KCkpCisgICAgLCB3ZWJBc3NlbWJseUV4Y2VwdGlvbkhlYXBDZWxs
VHlwZShJc29IZWFwQ2VsbFR5cGU6OkFyZ3M8SlNXZWJBc3NlbWJseUV4Y2VwdGlvbj4oKSkKKyAg
ICAsIHdlYkFzc2VtYmx5RnVuY3Rpb25IZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpBcmdz
PFdlYkFzc2VtYmx5RnVuY3Rpb24+KCkpCisgICAgLCB3ZWJBc3NlbWJseUdsb2JhbEhlYXBDZWxs
VHlwZShJc29IZWFwQ2VsbFR5cGU6OkFyZ3M8SlNXZWJBc3NlbWJseUdsb2JhbD4oKSkKKyAgICAs
IHdlYkFzc2VtYmx5SW5zdGFuY2VIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpBcmdzPEpT
V2ViQXNzZW1ibHlJbnN0YW5jZT4oKSkKKyAgICAsIHdlYkFzc2VtYmx5TWVtb3J5SGVhcENlbGxU
eXBlKElzb0hlYXBDZWxsVHlwZTo6QXJnczxKU1dlYkFzc2VtYmx5TWVtb3J5PigpKQorICAgICwg
d2ViQXNzZW1ibHlNb2R1bGVIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpBcmdzPEpTV2Vi
QXNzZW1ibHlNb2R1bGU+KCkpCisgICAgLCB3ZWJBc3NlbWJseU1vZHVsZVJlY29yZEhlYXBDZWxs
VHlwZShJc29IZWFwQ2VsbFR5cGU6OkFyZ3M8V2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQ+KCkpCisg
ICAgLCB3ZWJBc3NlbWJseVRhYmxlSGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6QXJnczxK
U1dlYkFzc2VtYmx5VGFibGU+KCkpCisgICAgLCB3ZWJBc3NlbWJseVRhZ0hlYXBDZWxsVHlwZShJ
c29IZWFwQ2VsbFR5cGU6OkFyZ3M8SlNXZWJBc3NlbWJseVRhZz4oKSkKKyNlbmRpZgorCisgICAg
Ly8gbWxhbSBBbGlnbmVkTWVtb3J5QWxsb2NhdG9ycworICAgICwgZmFzdE1hbGxvY0FsbG9jYXRv
cihtYWtlVW5pcXVlPEZhc3RNYWxsb2NBbGlnbmVkTWVtb3J5QWxsb2NhdG9yPigpKQorICAgICwg
cHJpbWl0aXZlR2lnYWNhZ2VBbGxvY2F0b3IobWFrZVVuaXF1ZTxHaWdhY2FnZUFsaWduZWRNZW1v
cnlBbGxvY2F0b3I+KEdpZ2FjYWdlOjpQcmltaXRpdmUpKQorICAgICwganNWYWx1ZUdpZ2FjYWdl
QWxsb2NhdG9yKG1ha2VVbmlxdWU8R2lnYWNhZ2VBbGlnbmVkTWVtb3J5QWxsb2NhdG9yPihHaWdh
Y2FnZTo6SlNWYWx1ZSkpCisKKyAgICAvLyBtbGFtIFN1YnNwYWNlcworICAgICwgcHJpbWl0aXZl
R2lnYWNhZ2VBdXhpbGlhcnlTcGFjZSgiUHJpbWl0aXZlIEdpZ2FjYWdlIEF1eGlsaWFyeSIsICp0
aGlzLCBhdXhpbGlhcnlIZWFwQ2VsbFR5cGUsIHByaW1pdGl2ZUdpZ2FjYWdlQWxsb2NhdG9yLmdl
dCgpKSAvLyBIYXNoOjB4M2U3Y2Q3NjIKKyAgICAsIGpzVmFsdWVHaWdhY2FnZUF1eGlsaWFyeVNw
YWNlKCJKU1ZhbHVlIEdpZ2FjYWdlIEF1eGlsaWFyeSIsICp0aGlzLCBhdXhpbGlhcnlIZWFwQ2Vs
bFR5cGUsIGpzVmFsdWVHaWdhY2FnZUFsbG9jYXRvci5nZXQoKSkgLy8gSGFzaDoweDI0MWU5NDYK
KyAgICAsIGltbXV0YWJsZUJ1dHRlcmZseUpTVmFsdWVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlKCJJ
bW11dGFibGVCdXR0ZXJmbHkgR2lnYWNhZ2UgSlNDZWxsV2l0aEluZGV4aW5nSGVhZGVyIiwgKnRo
aXMsIGltbXV0YWJsZUJ1dHRlcmZseUhlYXBDZWxsVHlwZSwganNWYWx1ZUdpZ2FjYWdlQWxsb2Nh
dG9yLmdldCgpKSAvLyBIYXNoOjB4N2E5NDUzMDAKKyAgICAsIGNlbGxTcGFjZSgiSlNDZWxsIiwg
KnRoaXMsIGNlbGxIZWFwQ2VsbFR5cGUsIGZhc3RNYWxsb2NBbGxvY2F0b3IuZ2V0KCkpIC8vIEhh
c2g6MHhhZGZiNWE3OQorICAgICwgdmFyaWFibGVTaXplZENlbGxTcGFjZSgiVmFyaWFibGUgU2l6
ZWQgSlNDZWxsIiwgKnRoaXMsIGNlbGxIZWFwQ2VsbFR5cGUsIGZhc3RNYWxsb2NBbGxvY2F0b3Iu
Z2V0KCkpIC8vIEhhc2g6MHhiY2Q3NjljYworICAgICwgZGVzdHJ1Y3RpYmxlT2JqZWN0U3BhY2Uo
IkpTRGVzdHJ1Y3RpYmxlT2JqZWN0IiwgKnRoaXMsIGRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxs
VHlwZSwgZmFzdE1hbGxvY0FsbG9jYXRvci5nZXQoKSkgLy8gSGFzaDoweDRmNWVkN2E5CisgICAg
LCBhcnJheVNwYWNlIElTT19TVUJTUEFDRV9JTklUKCp0aGlzLCBjZWxsSGVhcENlbGxUeXBlLCBK
U0FycmF5KQorICAgICwgYmlnSW50U3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoKnRoaXMsIGNlbGxI
ZWFwQ2VsbFR5cGUsIEpTQmlnSW50KQorICAgICwgY2FsbGVlU3BhY2UgSVNPX1NVQlNQQUNFX0lO
SVQoKnRoaXMsIGNlbGxIZWFwQ2VsbFR5cGUsIEpTQ2FsbGVlKQorICAgICwgY2xvbmVkQXJndW1l
bnRzU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoKnRoaXMsIGNlbGxIZWFwQ2VsbFR5cGUsIENsb25l
ZEFyZ3VtZW50cykKKyAgICAsIGN1c3RvbUdldHRlclNldHRlclNwYWNlIElTT19TVUJTUEFDRV9J
TklUKCp0aGlzLCBjZWxsSGVhcENlbGxUeXBlLCBDdXN0b21HZXR0ZXJTZXR0ZXIpCisgICAgLCBk
YXRlSW5zdGFuY2VTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVCgqdGhpcywgZGF0ZUluc3RhbmNlSGVh
cENlbGxUeXBlLCBEYXRlSW5zdGFuY2UpCisgICAgLCBkb21BdHRyaWJ1dGVHZXR0ZXJTZXR0ZXJT
cGFjZSBJU09fU1VCU1BBQ0VfSU5JVCgqdGhpcywgY2VsbEhlYXBDZWxsVHlwZSwgRE9NQXR0cmli
dXRlR2V0dGVyU2V0dGVyKQorICAgICwgZXhjZXB0aW9uU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQo
KnRoaXMsIGRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUsIEV4Y2VwdGlvbikKKyAgICAsIGV4
ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2VTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVCgqdGhpcywgY2Vs
bEhlYXBDZWxsVHlwZSwgRXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZSkgLy8gSGFzaDoweDdiNzMw
YjIwCisgICAgLCBmdW5jdGlvblNwYWNlIElTT19TVUJTUEFDRV9JTklUKCp0aGlzLCBjZWxsSGVh
cENlbGxUeXBlLCBKU0Z1bmN0aW9uKSAvLyBIYXNoOjB4ODAwZmNhNzIKKyAgICAsIGdldHRlclNl
dHRlclNwYWNlIElTT19TVUJTUEFDRV9JTklUKCp0aGlzLCBjZWxsSGVhcENlbGxUeXBlLCBHZXR0
ZXJTZXR0ZXIpCisgICAgLCBnbG9iYWxMZXhpY2FsRW52aXJvbm1lbnRTcGFjZSBJU09fU1VCU1BB
Q0VfSU5JVCgqdGhpcywgZ2xvYmFsTGV4aWNhbEVudmlyb25tZW50SGVhcENlbGxUeXBlLCBKU0ds
b2JhbExleGljYWxFbnZpcm9ubWVudCkKKyAgICAsIGludGVybmFsRnVuY3Rpb25TcGFjZSBJU09f
U1VCU1BBQ0VfSU5JVCgqdGhpcywgY2VsbEhlYXBDZWxsVHlwZSwgSW50ZXJuYWxGdW5jdGlvbikg
Ly8gSGFzaDoweGY4NDVjNDY0CisgICAgLCBqc1Byb3h5U3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQo
KnRoaXMsIGNlbGxIZWFwQ2VsbFR5cGUsIEpTUHJveHkpCisgICAgLCBuYXRpdmVFeGVjdXRhYmxl
U3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoKnRoaXMsIGRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5
cGUsIE5hdGl2ZUV4ZWN1dGFibGUpIC8vIEhhc2g6MHg2NzU2N2Y5NQorICAgICwgbnVtYmVyT2Jq
ZWN0U3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoKnRoaXMsIGNlbGxIZWFwQ2VsbFR5cGUsIE51bWJl
ck9iamVjdCkKKyAgICAsIHBsYWluT2JqZWN0U3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoKnRoaXMs
IGNlbGxIZWFwQ2VsbFR5cGUsIEpTTm9uRmluYWxPYmplY3QpIC8vIE1haW5seSB1c2VkIGZvciBw
cm90b3R5cGVzLgorICAgICwgcHJvbWlzZVNwYWNlIElTT19TVUJTUEFDRV9JTklUKCp0aGlzLCBj
ZWxsSGVhcENlbGxUeXBlLCBKU1Byb21pc2UpCisgICAgLCBwcm9wZXJ0eU5hbWVFbnVtZXJhdG9y
U3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoKnRoaXMsIGNlbGxIZWFwQ2VsbFR5cGUsIEpTUHJvcGVy
dHlOYW1lRW51bWVyYXRvcikKKyAgICAsIHByb3BlcnR5VGFibGVTcGFjZSBJU09fU1VCU1BBQ0Vf
SU5JVCgqdGhpcywgZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZSwgUHJvcGVydHlUYWJsZSkg
Ly8gSGFzaDoweGM2YmM5ZjEyCisgICAgLCByZWdFeHBTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVCgq
dGhpcywgZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZSwgUmVnRXhwKQorICAgICwgcmVnRXhw
T2JqZWN0U3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoKnRoaXMsIGNlbGxIZWFwQ2VsbFR5cGUsIFJl
Z0V4cE9iamVjdCkKKyAgICAsIHJvcGVTdHJpbmdTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVCgqdGhp
cywgc3RyaW5nSGVhcENlbGxUeXBlLCBKU1JvcGVTdHJpbmcpCisgICAgLCBzY29wZWRBcmd1bWVu
dHNTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVCgqdGhpcywgY2VsbEhlYXBDZWxsVHlwZSwgU2NvcGVk
QXJndW1lbnRzKQorICAgICwgc3BhcnNlQXJyYXlWYWx1ZU1hcFNwYWNlIElTT19TVUJTUEFDRV9J
TklUKCp0aGlzLCBkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlLCBTcGFyc2VBcnJheVZhbHVl
TWFwKQorICAgICwgc3RyaW5nU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoKnRoaXMsIHN0cmluZ0hl
YXBDZWxsVHlwZSwgSlNTdHJpbmcpIC8vIEhhc2g6MHg5MGNmNzU4ZgorICAgICwgc3RyaW5nT2Jq
ZWN0U3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoKnRoaXMsIGNlbGxIZWFwQ2VsbFR5cGUsIFN0cmlu
Z09iamVjdCkKKyAgICAsIHN0cnVjdHVyZUNoYWluU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoKnRo
aXMsIGNlbGxIZWFwQ2VsbFR5cGUsIFN0cnVjdHVyZUNoYWluKQorICAgICwgc3RydWN0dXJlUmFy
ZURhdGFTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVCgqdGhpcywgZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBD
ZWxsVHlwZSwgU3RydWN0dXJlUmFyZURhdGEpIC8vIEhhc2g6MHhhY2E0ZTYyZAorICAgICwgc3Ry
dWN0dXJlU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoKnRoaXMsIGRlc3RydWN0aWJsZUNlbGxIZWFw
Q2VsbFR5cGUsIFN0cnVjdHVyZSkgLy8gSGFzaDoweDFmMWJjZGNhCisgICAgLCBicmFuZGVkU3Ry
dWN0dXJlU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoKnRoaXMsIGRlc3RydWN0aWJsZUNlbGxIZWFw
Q2VsbFR5cGUsIEJyYW5kZWRTdHJ1Y3R1cmUpCisgICAgLCBzeW1ib2xUYWJsZVNwYWNlIElTT19T
VUJTUEFDRV9JTklUKCp0aGlzLCBkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlLCBTeW1ib2xU
YWJsZSkgLy8gSGFzaDoweGM1MjE1YWZkCisgICAgLCBleGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdl
c1dpdGhDb25zdHJhaW50cyhleGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlU3BhY2UpCisgICAgLCBl
eGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlc1dpdGhGaW5hbGl6ZXJzKGV4ZWN1dGFibGVUb0NvZGVC
bG9ja0VkZ2VTcGFjZSkKKyAgICAsIGNvZGVCbG9ja1NwYWNlIElTT19TVUJTUEFDRV9JTklUKCp0
aGlzLCBkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlLCBDb2RlQmxvY2spIC8vIEhhc2g6MHg3
N2U2NmVjOQorICAgICwgZnVuY3Rpb25FeGVjdXRhYmxlU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQo
KnRoaXMsIGRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUsIEZ1bmN0aW9uRXhlY3V0YWJsZSkg
Ly8gSGFzaDoweDVkMTU4ZjMKKyAgICAsIHByb2dyYW1FeGVjdXRhYmxlU3BhY2UgSVNPX1NVQlNQ
QUNFX0lOSVQoKnRoaXMsIGRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUsIFByb2dyYW1FeGVj
dXRhYmxlKSAvLyBIYXNoOjB4NTI3Yzc3ZTcKKyAgICAsIHVubGlua2VkRnVuY3Rpb25FeGVjdXRh
YmxlU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoKnRoaXMsIGRlc3RydWN0aWJsZUNlbGxIZWFwQ2Vs
bFR5cGUsIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKSAvLyBIYXNoOjB4ZjZiODI4ZDkKKwog
ewogICAgIG1fd29ybGRTdGF0ZS5zdG9yZSgwKTsKIApAQCAtNTc5LDMxICs3NzksMzEgQEAgdm9p
ZCBIZWFwOjpmaW5hbGl6ZVVuY29uZGl0aW9uYWxGaW5hbGl6ZQogewogICAgIFZNJiB2bSA9IHRo
aXMtPnZtKCk7CiAgICAgdm0uYnVpbHRpbkV4ZWN1dGFibGVzKCktPmZpbmFsaXplVW5jb25kaXRp
b25hbGx5KCk7Ci0gICAgZmluYWxpemVNYXJrZWRVbmNvbmRpdGlvbmFsRmluYWxpemVyczxGdW5j
dGlvbkV4ZWN1dGFibGU+KHZtLmZ1bmN0aW9uRXhlY3V0YWJsZVNwYWNlLnNwYWNlKTsKLSAgICBm
aW5hbGl6ZU1hcmtlZFVuY29uZGl0aW9uYWxGaW5hbGl6ZXJzPFN5bWJvbFRhYmxlPih2bS5zeW1i
b2xUYWJsZVNwYWNlKTsKLSAgICBmaW5hbGl6ZU1hcmtlZFVuY29uZGl0aW9uYWxGaW5hbGl6ZXJz
PEV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2U+KHZtLmV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2Vz
V2l0aEZpbmFsaXplcnMpOyAvLyBXZSBydW4gdGhpcyBiZWZvcmUgQ29kZUJsb2NrJ3MgdW5jb25k
aXRpb25hbCBmaW5hbGl6ZXIgc2luY2UgQ29kZUJsb2NrIGxvb2tzIGF0IHRoZSBvd25lciBleGVj
dXRhYmxlJ3MgaW5zdGFsbGVkIENvZGVCbG9jayBpbiBpdHMgZmluYWxpemVVbmNvbmRpdGlvbmFs
bHkuCi0gICAgdm0uZm9yRWFjaENvZGVCbG9ja1NwYWNlKAorICAgIGZpbmFsaXplTWFya2VkVW5j
b25kaXRpb25hbEZpbmFsaXplcnM8RnVuY3Rpb25FeGVjdXRhYmxlPihmdW5jdGlvbkV4ZWN1dGFi
bGVTcGFjZS5zcGFjZSk7CisgICAgZmluYWxpemVNYXJrZWRVbmNvbmRpdGlvbmFsRmluYWxpemVy
czxTeW1ib2xUYWJsZT4oc3ltYm9sVGFibGVTcGFjZSk7CisgICAgZmluYWxpemVNYXJrZWRVbmNv
bmRpdGlvbmFsRmluYWxpemVyczxFeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlPihleGVjdXRhYmxl
VG9Db2RlQmxvY2tFZGdlc1dpdGhGaW5hbGl6ZXJzKTsgLy8gV2UgcnVuIHRoaXMgYmVmb3JlIENv
ZGVCbG9jaydzIHVuY29uZGl0aW9uYWwgZmluYWxpemVyIHNpbmNlIENvZGVCbG9jayBsb29rcyBh
dCB0aGUgb3duZXIgZXhlY3V0YWJsZSdzIGluc3RhbGxlZCBDb2RlQmxvY2sgaW4gaXRzIGZpbmFs
aXplVW5jb25kaXRpb25hbGx5LgorICAgIGZvckVhY2hDb2RlQmxvY2tTcGFjZSgKICAgICAgICAg
WyZdIChhdXRvJiBzcGFjZSkgewogICAgICAgICAgICAgdGhpcy0+ZmluYWxpemVNYXJrZWRVbmNv
bmRpdGlvbmFsRmluYWxpemVyczxDb2RlQmxvY2s+KHNwYWNlLnNldCk7CiAgICAgICAgIH0pOwot
ICAgIGZpbmFsaXplTWFya2VkVW5jb25kaXRpb25hbEZpbmFsaXplcnM8U3RydWN0dXJlUmFyZURh
dGE+KHZtLnN0cnVjdHVyZVJhcmVEYXRhU3BhY2UpOwotICAgIGZpbmFsaXplTWFya2VkVW5jb25k
aXRpb25hbEZpbmFsaXplcnM8VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU+KHZtLnVubGlua2Vk
RnVuY3Rpb25FeGVjdXRhYmxlU3BhY2Uuc2V0KTsKLSAgICBpZiAodm0ubV93ZWFrU2V0U3BhY2Up
Ci0gICAgICAgIGZpbmFsaXplTWFya2VkVW5jb25kaXRpb25hbEZpbmFsaXplcnM8SlNXZWFrU2V0
Pigqdm0ubV93ZWFrU2V0U3BhY2UpOwotICAgIGlmICh2bS5tX3dlYWtNYXBTcGFjZSkKLSAgICAg
ICAgZmluYWxpemVNYXJrZWRVbmNvbmRpdGlvbmFsRmluYWxpemVyczxKU1dlYWtNYXA+KCp2bS5t
X3dlYWtNYXBTcGFjZSk7Ci0gICAgaWYgKHZtLm1fd2Vha09iamVjdFJlZlNwYWNlKQotICAgICAg
ICBmaW5hbGl6ZU1hcmtlZFVuY29uZGl0aW9uYWxGaW5hbGl6ZXJzPEpTV2Vha09iamVjdFJlZj4o
KnZtLm1fd2Vha09iamVjdFJlZlNwYWNlKTsKLSAgICBpZiAodm0ubV9lcnJvckluc3RhbmNlU3Bh
Y2UpCi0gICAgICAgIGZpbmFsaXplTWFya2VkVW5jb25kaXRpb25hbEZpbmFsaXplcnM8RXJyb3JJ
bnN0YW5jZT4oKnZtLm1fZXJyb3JJbnN0YW5jZVNwYWNlKTsKKyAgICBmaW5hbGl6ZU1hcmtlZFVu
Y29uZGl0aW9uYWxGaW5hbGl6ZXJzPFN0cnVjdHVyZVJhcmVEYXRhPihzdHJ1Y3R1cmVSYXJlRGF0
YVNwYWNlKTsKKyAgICBmaW5hbGl6ZU1hcmtlZFVuY29uZGl0aW9uYWxGaW5hbGl6ZXJzPFVubGlu
a2VkRnVuY3Rpb25FeGVjdXRhYmxlPih1bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZVNwYWNlLnNl
dCk7CisgICAgaWYgKG1fd2Vha1NldFNwYWNlKQorICAgICAgICBmaW5hbGl6ZU1hcmtlZFVuY29u
ZGl0aW9uYWxGaW5hbGl6ZXJzPEpTV2Vha1NldD4oKm1fd2Vha1NldFNwYWNlKTsKKyAgICBpZiAo
bV93ZWFrTWFwU3BhY2UpCisgICAgICAgIGZpbmFsaXplTWFya2VkVW5jb25kaXRpb25hbEZpbmFs
aXplcnM8SlNXZWFrTWFwPigqbV93ZWFrTWFwU3BhY2UpOworICAgIGlmIChtX3dlYWtPYmplY3RS
ZWZTcGFjZSkKKyAgICAgICAgZmluYWxpemVNYXJrZWRVbmNvbmRpdGlvbmFsRmluYWxpemVyczxK
U1dlYWtPYmplY3RSZWY+KCptX3dlYWtPYmplY3RSZWZTcGFjZSk7CisgICAgaWYgKG1fZXJyb3JJ
bnN0YW5jZVNwYWNlKQorICAgICAgICBmaW5hbGl6ZU1hcmtlZFVuY29uZGl0aW9uYWxGaW5hbGl6
ZXJzPEVycm9ySW5zdGFuY2U+KCptX2Vycm9ySW5zdGFuY2VTcGFjZSk7CiAKICAgICAvLyBGaW5h
bGl6YXRpb25SZWdpc3RyaWVzIGN1cnJlbnRseSByZWx5IG9uIHNlcmlhbCBmaW5hbGl6YXRpb24g
YmVjYXVzZSB0aGV5IGNhbiBwb3N0IHRhc2tzIHRvIHRoZSBkZWZlcnJlZFdvcmtUaW1lciwgd2hp
Y2ggbm9ybWFsbHkgZXhwZWN0cyB0YXNrcyB0byBvbmx5IGJlIHBvc3RlZCBieSB0aGUgQVBJIGxv
Y2sgaG9sZGVyLgotICAgIGlmICh2bS5tX2ZpbmFsaXphdGlvblJlZ2lzdHJ5U3BhY2UpCi0gICAg
ICAgIGZpbmFsaXplTWFya2VkVW5jb25kaXRpb25hbEZpbmFsaXplcnM8SlNGaW5hbGl6YXRpb25S
ZWdpc3RyeT4oKnZtLm1fZmluYWxpemF0aW9uUmVnaXN0cnlTcGFjZSk7CisgICAgaWYgKG1fZmlu
YWxpemF0aW9uUmVnaXN0cnlTcGFjZSkKKyAgICAgICAgZmluYWxpemVNYXJrZWRVbmNvbmRpdGlv
bmFsRmluYWxpemVyczxKU0ZpbmFsaXphdGlvblJlZ2lzdHJ5PigqbV9maW5hbGl6YXRpb25SZWdp
c3RyeVNwYWNlKTsKIAogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKLSAgICBpZiAodm0ubV93ZWJB
c3NlbWJseUNvZGVCbG9ja1NwYWNlKQotICAgICAgICBmaW5hbGl6ZU1hcmtlZFVuY29uZGl0aW9u
YWxGaW5hbGl6ZXJzPEpTV2ViQXNzZW1ibHlDb2RlQmxvY2s+KCp2bS5tX3dlYkFzc2VtYmx5Q29k
ZUJsb2NrU3BhY2UpOworICAgIGlmIChtX3dlYkFzc2VtYmx5Q29kZUJsb2NrU3BhY2UpCisgICAg
ICAgIGZpbmFsaXplTWFya2VkVW5jb25kaXRpb25hbEZpbmFsaXplcnM8SlNXZWJBc3NlbWJseUNv
ZGVCbG9jaz4oKm1fd2ViQXNzZW1ibHlDb2RlQmxvY2tTcGFjZSk7CiAjZW5kaWYKIH0KIApAQCAt
OTA1LDcgKzExMDUsNyBAQCB2b2lkIEhlYXA6OmRlbGV0ZUFsbENvZGVCbG9ja3MoRGVsZXRlQWxs
CiAKICAgICBjb21wbGV0ZUFsbEpJVFBsYW5zKCk7CiAKLSAgICB2bS5mb3JFYWNoU2NyaXB0RXhl
Y3V0YWJsZVNwYWNlKAorICAgIGZvckVhY2hTY3JpcHRFeGVjdXRhYmxlU3BhY2UoCiAgICAgICAg
IFsmXSAoYXV0byYgc3BhY2VBbmRTZXQpIHsKICAgICAgICAgICAgIEhlYXBJdGVyYXRpb25TY29w
ZSBoZWFwSXRlcmF0aW9uU2NvcGUoKnRoaXMpOwogICAgICAgICAgICAgYXV0byYgc2V0ID0gc3Bh
Y2VBbmRTZXQuc2V0OwpAQCAtOTI0LDggKzExMjQsOCBAQCB2b2lkIEhlYXA6OmRlbGV0ZUFsbENv
ZGVCbG9ja3MoRGVsZXRlQWxsCiAgICAgICAgIC8vIHBvaW50cyBpbnRvIGEgQ29kZUJsb2NrIHRo
YXQgY291bGQgYmUgZGVhZC4gVGhlIElDIHdpbGwgc3RpbGwgc3VjY2VlZCBiZWNhdXNlCiAgICAg
ICAgIC8vIGl0IHVzZXMgYSBjYWxsZWUgY2hlY2ssIGJ1dCB0aGVuIGl0IHdpbGwgY2FsbCBpbnRv
IGRlYWQgY29kZS4KICAgICAgICAgSGVhcEl0ZXJhdGlvblNjb3BlIGhlYXBJdGVyYXRpb25TY29w
ZSgqdGhpcyk7Ci0gICAgICAgIGlmICh2bS5tX3dlYkFzc2VtYmx5Q29kZUJsb2NrU3BhY2UpIHsK
LSAgICAgICAgICAgIHZtLm1fd2ViQXNzZW1ibHlDb2RlQmxvY2tTcGFjZS0+Zm9yRWFjaExpdmVD
ZWxsKFsmXSAoSGVhcENlbGwqIGNlbGwsIEhlYXBDZWxsOjpLaW5kIGtpbmQpIHsKKyAgICAgICAg
aWYgKG1fd2ViQXNzZW1ibHlDb2RlQmxvY2tTcGFjZSkgeworICAgICAgICAgICAgbV93ZWJBc3Nl
bWJseUNvZGVCbG9ja1NwYWNlLT5mb3JFYWNoTGl2ZUNlbGwoWyZdIChIZWFwQ2VsbCogY2VsbCwg
SGVhcENlbGw6OktpbmQga2luZCkgewogICAgICAgICAgICAgICAgIEFTU0VSVF9VTlVTRUQoa2lu
ZCwga2luZCA9PSBIZWFwQ2VsbDo6SlNDZWxsKTsKICAgICAgICAgICAgICAgICBKU1dlYkFzc2Vt
Ymx5Q29kZUJsb2NrKiBjb2RlQmxvY2sgPSBzdGF0aWNfY2FzdDxKU1dlYkFzc2VtYmx5Q29kZUJs
b2NrKj4oY2VsbCk7CiAgICAgICAgICAgICAgICAgY29kZUJsb2NrLT5jbGVhckpTQ2FsbElDcyh2
bSk7CkBAIC05NDYsNyArMTE0Niw3IEBAIHZvaWQgSGVhcDo6ZGVsZXRlQWxsVW5saW5rZWRDb2Rl
QmxvY2tzKEQKICAgICBSRUxFQVNFX0FTU0VSVCghbV9jb2xsZWN0aW9uU2NvcGUpOwogCiAgICAg
SGVhcEl0ZXJhdGlvblNjb3BlIGhlYXBJdGVyYXRpb25TY29wZSgqdGhpcyk7Ci0gICAgdm0udW5s
aW5rZWRGdW5jdGlvbkV4ZWN1dGFibGVTcGFjZS5zZXQuZm9yRWFjaExpdmVDZWxsKAorICAgIHVu
bGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlU3BhY2Uuc2V0LmZvckVhY2hMaXZlQ2VsbCgKICAgICAg
ICAgWyZdIChIZWFwQ2VsbCogY2VsbCwgSGVhcENlbGw6OktpbmQpIHsKICAgICAgICAgICAgIFVu
bGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlID0gc3RhdGljX2Nhc3Q8VW5saW5r
ZWRGdW5jdGlvbkV4ZWN1dGFibGUqPihjZWxsKTsKICAgICAgICAgICAgIGV4ZWN1dGFibGUtPmNs
ZWFyQ29kZSh2bSk7CkBAIC05NTUsMTAgKzExNTUsMTAgQEAgdm9pZCBIZWFwOjpkZWxldGVBbGxV
bmxpbmtlZENvZGVCbG9ja3MoRAogCiB2b2lkIEhlYXA6OmRlbGV0ZVVubWFya2VkQ29tcGlsZWRD
b2RlKCkKIHsKLSAgICB2bSgpLmZvckVhY2hTY3JpcHRFeGVjdXRhYmxlU3BhY2UoW10gKGF1dG8m
IHNwYWNlKSB7IHNwYWNlLnNwYWNlLnN3ZWVwKCk7IH0pOworICAgIGZvckVhY2hTY3JpcHRFeGVj
dXRhYmxlU3BhY2UoW10gKGF1dG8mIHNwYWNlKSB7IHNwYWNlLnNwYWNlLnN3ZWVwMygpOyB9KTsK
ICAgICAvLyBTd2VlcGluZyBtdXN0IG9jY3VyIGJlZm9yZSBkZWxldGluZyBzdHVicywgb3RoZXJ3
aXNlIHRoZSBzdHVicyBtaWdodCBzdGlsbCB0aGluayB0aGV5J3JlIGFsaXZlIGFzIHRoZXkgZ2V0
IGRlbGV0ZWQuCiAgICAgLy8gQW5kIENvZGVCbG9jayBkZXN0cnVjdG9yIGlzIGFzc3VtaW5nIHRo
YXQgQ29kZUJsb2NrIGdldHMgZGVzdHJveWVkIGJlZm9yZSBVbmxpbmtlZENvZGVCbG9jayBnZXRz
IGRlc3Ryb3llZC4KLSAgICB2bSgpLmZvckVhY2hDb2RlQmxvY2tTcGFjZShbXSAoYXV0byYgc3Bh
Y2UpIHsgc3BhY2Uuc3BhY2Uuc3dlZXAoKTsgfSk7CisgICAgZm9yRWFjaENvZGVCbG9ja1NwYWNl
KFtdIChhdXRvJiBzcGFjZSkgeyBzcGFjZS5zcGFjZS5zd2VlcDMoKTsgfSk7CiAgICAgbV9qaXRT
dHViUm91dGluZXMtPmRlbGV0ZVVubWFya2VkSmV0dGlzb25lZFN0dWJSb3V0aW5lcygpOwogfQog
CkBAIC0yMTAzLDggKzIzMDMsOCBAQCB2b2lkIEhlYXA6OnN3ZWVwSW5GaW5hbGl6ZSgpCiAgICAg
bV9vYmplY3RTcGFjZS5zd2VlcFByZWNpc2VBbGxvY2F0aW9ucygpOwogI2lmIEVOQUJMRShXRUJB
U1NFTUJMWSkKICAgICAvLyBXZSBob2xkIG9udG8gYSBsb3Qgb2YgbWVtb3J5LCBzbyBpdCBtYWtl
cyBhIGxvdCBvZiBzZW5zZSB0byBiZSBzd2VwdCBlYWdlcmx5LgotICAgIGlmICh2bSgpLm1fd2Vi
QXNzZW1ibHlNZW1vcnlTcGFjZSkKLSAgICAgICAgdm0oKS5tX3dlYkFzc2VtYmx5TWVtb3J5U3Bh
Y2UtPnN3ZWVwKCk7CisgICAgaWYgKG1fd2ViQXNzZW1ibHlNZW1vcnlTcGFjZSkKKyAgICAgICAg
bV93ZWJBc3NlbWJseU1lbW9yeVNwYWNlLT5zd2VlcDMoKTsKICNlbmRpZgogfQogCkBAIC0yODA1
LDcgKzMwMDUsNyBAQCB2b2lkIEhlYXA6OmFkZENvcmVDb25zdHJhaW50cygpCiAgICAgICAgICJP
IiwgIk91dHB1dCIsCiAgICAgICAgIE1BS0VfTUFSS0lOR19DT05TVFJBSU5UX0VYRUNVVE9SX1BB
SVIoKFtdIChhdXRvJiB2aXNpdG9yKSB7CiAgICAgICAgICAgICB1c2luZyBWaXNpdG9yID0gZGVj
bHR5cGUodmlzaXRvcik7Ci0gICAgICAgICAgICBWTSYgdm0gPSB2aXNpdG9yLnZtKCk7CisgICAg
ICAgICAgICBIZWFwKiBoZWFwID0gdmlzaXRvci5oZWFwKCk7CiAKICAgICAgICAgICAgIC8vIFRo
ZSBgdmlzaXRvcjJgIGFyZ3VtZW50IGlzIHN0cmFuZ2VseSBuYW1lZCBiZWNhdXNlIHRoZSBXaW5D
YWlybyBwb3J0CiAgICAgICAgICAgICAvLyBnZXRzIGNvbmZ1c2VkICBhbmQgdGhpbmtzIHdlJ3Jl
IHRyeWluZyB0byBjYXB0dXJlIHRoZSBvdXRlciB2aXNpdG9yCkBAIC0yODI0LDExICszMDI0LDEx
IEBAIHZvaWQgSGVhcDo6YWRkQ29yZUNvbnN0cmFpbnRzKCkKIAogICAgICAgICAgICAgewogICAg
ICAgICAgICAgICAgIFNldFJvb3RNYXJrUmVhc29uU2NvcGUgcm9vdFNjb3BlKHZpc2l0b3IsIFJv
b3RNYXJrUmVhc29uOjpFeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlcyk7Ci0gICAgICAgICAgICAg
ICAgYWRkKHZtLmV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2VzV2l0aENvbnN0cmFpbnRzKTsKKyAg
ICAgICAgICAgICAgICBhZGQoaGVhcC0+ZXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZXNXaXRoQ29u
c3RyYWludHMpOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKHZtLm1fd2Vha01hcFNw
YWNlKSB7CisgICAgICAgICAgICBpZiAoaGVhcC0+bV93ZWFrTWFwU3BhY2UpIHsKICAgICAgICAg
ICAgICAgICBTZXRSb290TWFya1JlYXNvblNjb3BlIHJvb3RTY29wZSh2aXNpdG9yLCBSb290TWFy
a1JlYXNvbjo6V2Vha01hcFNwYWNlKTsKLSAgICAgICAgICAgICAgICBhZGQoKnZtLm1fd2Vha01h
cFNwYWNlKTsKKyAgICAgICAgICAgICAgICBhZGQoKmhlYXAtPm1fd2Vha01hcFNwYWNlKTsKICAg
ICAgICAgICAgIH0KICAgICAgICAgfSkpLAogICAgICAgICBDb25zdHJhaW50Vm9sYXRpbGl0eTo6
R3JleWVkQnlNYXJraW5nLApAQCAtMzA2Miw0ICszMjYyLDEzNSBAQCB2b2lkIEhlYXA6OnZlcmlm
eUdDKCkKICAgICBtX3ZlcmlmaWVyU2xvdFZpc2l0b3IgPSBudWxscHRyOwogfQogCisjZGVmaW5l
IERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhuYW1lLCBoZWFwQ2VsbFR5
cGUsIHR5cGUpIFwKKyAgICBJc29TdWJzcGFjZSogSGVhcDo6bmFtZSMjU2xvdygpIFwKKyAgICB7
IFwKKyAgICAgICAgQVNTRVJUKCFtXyMjbmFtZSk7IFwKKyAgICAgICAgYXV0byBzcGFjZSA9IG1h
a2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKCp0aGlzLCBoZWFwQ2VsbFR5
cGUsIHR5cGUpOyBcCisgICAgICAgIFdURjo6c3RvcmVTdG9yZUZlbmNlKCk7IFwKKyAgICAgICAg
bV8jI25hbWUgPSBXVEZNb3ZlKHNwYWNlKTsgXAorICAgICAgICByZXR1cm4gbV8jI25hbWUuZ2V0
KCk7IFwKKyAgICB9CisKKworRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9X
KGFwaUdsb2JhbE9iamVjdFNwYWNlLCBhcGlHbG9iYWxPYmplY3RIZWFwQ2VsbFR5cGUsIEpTQVBJ
R2xvYmFsT2JqZWN0KQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGFw
aVZhbHVlV3JhcHBlclNwYWNlLCBjZWxsSGVhcENlbGxUeXBlLCBKU0FQSVZhbHVlV3JhcHBlcikK
K0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhhcnJheUJ1ZmZlclNwYWNl
LCBjZWxsSGVhcENlbGxUeXBlLCBKU0FycmF5QnVmZmVyKQorRFlOQU1JQ19JU09fU1VCU1BBQ0Vf
REVGSU5FX01FTUJFUl9TTE9XKGFycmF5SXRlcmF0b3JTcGFjZSwgY2VsbEhlYXBDZWxsVHlwZSwg
SlNBcnJheUl0ZXJhdG9yKQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9X
KGFzeW5jR2VuZXJhdG9yU3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUsIEpTQXN5bmNHZW5lcmF0b3Ip
CitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coYmlnSW50NjRBcnJheVNw
YWNlLCBjZWxsSGVhcENlbGxUeXBlLCBKU0JpZ0ludDY0QXJyYXkpCitEWU5BTUlDX0lTT19TVUJT
UEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coYmlnSW50T2JqZWN0U3BhY2UsIGNlbGxIZWFwQ2VsbFR5
cGUsIEJpZ0ludE9iamVjdCkKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xP
VyhiaWdVaW50NjRBcnJheVNwYWNlLCBjZWxsSGVhcENlbGxUeXBlLCBKU0JpZ1VpbnQ2NEFycmF5
KQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGJvb2xlYW5PYmplY3RT
cGFjZSwgY2VsbEhlYXBDZWxsVHlwZSwgQm9vbGVhbk9iamVjdCkKK0RZTkFNSUNfSVNPX1NVQlNQ
QUNFX0RFRklORV9NRU1CRVJfU0xPVyhib3VuZEZ1bmN0aW9uU3BhY2UsIGNlbGxIZWFwQ2VsbFR5
cGUsIEpTQm91bmRGdW5jdGlvbikgLy8gSGFzaDoweGQ3OTE2ZDQxCitEWU5BTUlDX0lTT19TVUJT
UEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coY2FsbGJhY2tDb25zdHJ1Y3RvclNwYWNlLCBjYWxsYmFj
a0NvbnN0cnVjdG9ySGVhcENlbGxUeXBlLCBKU0NhbGxiYWNrQ29uc3RydWN0b3IpCitEWU5BTUlD
X0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coY2FsbGJhY2tHbG9iYWxPYmplY3RTcGFj
ZSwgY2FsbGJhY2tHbG9iYWxPYmplY3RIZWFwQ2VsbFR5cGUsIEpTQ2FsbGJhY2tPYmplY3Q8SlNH
bG9iYWxPYmplY3Q+KQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGNh
bGxiYWNrRnVuY3Rpb25TcGFjZSwgY2VsbEhlYXBDZWxsVHlwZSwgSlNDYWxsYmFja0Z1bmN0aW9u
KSAvLyBIYXNoOjB4ZTc2NDhlYmMKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJf
U0xPVyhjYWxsYmFja09iamVjdFNwYWNlLCBjYWxsYmFja09iamVjdEhlYXBDZWxsVHlwZSwgSlND
YWxsYmFja09iamVjdDxKU05vbkZpbmFsT2JqZWN0PikKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RF
RklORV9NRU1CRVJfU0xPVyhjdXN0b21HZXR0ZXJGdW5jdGlvblNwYWNlLCBjdXN0b21HZXR0ZXJG
dW5jdGlvbkhlYXBDZWxsVHlwZSwgSlNDdXN0b21HZXR0ZXJGdW5jdGlvbikKK0RZTkFNSUNfSVNP
X1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhjdXN0b21TZXR0ZXJGdW5jdGlvblNwYWNlLCBj
dXN0b21TZXR0ZXJGdW5jdGlvbkhlYXBDZWxsVHlwZSwgSlNDdXN0b21TZXR0ZXJGdW5jdGlvbikK
K0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhkYXRhVmlld1NwYWNlLCBj
ZWxsSGVhcENlbGxUeXBlLCBKU0RhdGFWaWV3KQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5F
X01FTUJFUl9TTE9XKGRlYnVnZ2VyU2NvcGVTcGFjZSwgY2VsbEhlYXBDZWxsVHlwZSwgRGVidWdn
ZXJTY29wZSkKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhlcnJvcklu
c3RhbmNlU3BhY2UsIGVycm9ySW5zdGFuY2VIZWFwQ2VsbFR5cGUsIEVycm9ySW5zdGFuY2UpIC8v
IEhhc2g6MHgzZjQwZDRhCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1co
ZmxvYXQzMkFycmF5U3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUsIEpTRmxvYXQzMkFycmF5KQorRFlO
QU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGZsb2F0NjRBcnJheVNwYWNlLCBj
ZWxsSGVhcENlbGxUeXBlLCBKU0Zsb2F0NjRBcnJheSkKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RF
RklORV9NRU1CRVJfU0xPVyhmdW5jdGlvblJhcmVEYXRhU3BhY2UsIGRlc3RydWN0aWJsZUNlbGxI
ZWFwQ2VsbFR5cGUsIEZ1bmN0aW9uUmFyZURhdGEpCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJ
TkVfTUVNQkVSX1NMT1coZ2VuZXJhdG9yU3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUsIEpTR2VuZXJh
dG9yKQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGdsb2JhbE9iamVj
dFNwYWNlLCBnbG9iYWxPYmplY3RIZWFwQ2VsbFR5cGUsIEpTR2xvYmFsT2JqZWN0KQorRFlOQU1J
Q19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGluamVjdGVkU2NyaXB0SG9zdFNwYWNl
LCBpbmplY3RlZFNjcmlwdEhvc3RTcGFjZUhlYXBDZWxsVHlwZSwgSW5zcGVjdG9yOjpKU0luamVj
dGVkU2NyaXB0SG9zdCkKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhp
bnQ4QXJyYXlTcGFjZSwgY2VsbEhlYXBDZWxsVHlwZSwgSlNJbnQ4QXJyYXkpCitEWU5BTUlDX0lT
T19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coaW50MTZBcnJheVNwYWNlLCBjZWxsSGVhcENl
bGxUeXBlLCBKU0ludDE2QXJyYXkpCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVS
X1NMT1coaW50MzJBcnJheVNwYWNlLCBjZWxsSGVhcENlbGxUeXBlLCBKU0ludDMyQXJyYXkpCitE
WU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coamF2YVNjcmlwdENhbGxGcmFt
ZVNwYWNlLCBqYXZhU2NyaXB0Q2FsbEZyYW1lSGVhcENlbGxUeXBlLCBJbnNwZWN0b3I6OkpTSmF2
YVNjcmlwdENhbGxGcmFtZSkKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xP
Vyhqc01vZHVsZVJlY29yZFNwYWNlLCBqc01vZHVsZVJlY29yZEhlYXBDZWxsVHlwZSwgSlNNb2R1
bGVSZWNvcmQpCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1cobWFwQnVj
a2V0U3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUsIEpTTWFwOjpCdWNrZXRUeXBlKQorRFlOQU1JQ19J
U09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKG1hcEl0ZXJhdG9yU3BhY2UsIGNlbGxIZWFw
Q2VsbFR5cGUsIEpTTWFwSXRlcmF0b3IpCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVN
QkVSX1NMT1cobWFwU3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUsIEpTTWFwKQorRFlOQU1JQ19JU09f
U1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKG1vZHVsZU5hbWVzcGFjZU9iamVjdFNwYWNlLCBt
b2R1bGVOYW1lc3BhY2VPYmplY3RIZWFwQ2VsbFR5cGUsIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0
KQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKG5hdGl2ZVN0ZEZ1bmN0
aW9uU3BhY2UsIG5hdGl2ZVN0ZEZ1bmN0aW9uSGVhcENlbGxUeXBlLCBKU05hdGl2ZVN0ZEZ1bmN0
aW9uKSAvLyBIYXNoOjB4NzBlZDYxZTQKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1C
RVJfU0xPVyhwcm94eU9iamVjdFNwYWNlLCBjZWxsSGVhcENlbGxUeXBlLCBQcm94eU9iamVjdCkK
K0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhwcm94eVJldm9rZVNwYWNl
LCBjZWxsSGVhcENlbGxUeXBlLCBQcm94eVJldm9rZSkgLy8gSGFzaDoweGI1MDZhOTM5CitEWU5B
TUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coc2NvcGVkQXJndW1lbnRzVGFibGVT
cGFjZSwgZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZSwgU2NvcGVkQXJndW1lbnRzVGFibGUp
CitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coc2NyaXB0RmV0Y2hQYXJh
bWV0ZXJzU3BhY2UsIGRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUsIEpTU2NyaXB0RmV0Y2hQ
YXJhbWV0ZXJzKQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHNjcmlw
dEZldGNoZXJTcGFjZSwgZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZSwgSlNTY3JpcHRGZXRj
aGVyKQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHNldEJ1Y2tldFNw
YWNlLCBjZWxsSGVhcENlbGxUeXBlLCBKU1NldDo6QnVja2V0VHlwZSkKK0RZTkFNSUNfSVNPX1NV
QlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhzZXRJdGVyYXRvclNwYWNlLCBjZWxsSGVhcENlbGxU
eXBlLCBKU1NldEl0ZXJhdG9yKQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9T
TE9XKHNldFNwYWNlLCBjZWxsSGVhcENlbGxUeXBlLCBKU1NldCkKK0RZTkFNSUNfSVNPX1NVQlNQ
QUNFX0RFRklORV9NRU1CRVJfU0xPVyhzaGFkb3dSZWFsbVNwYWNlLCBjZWxsSGVhcENlbGxUeXBl
LCBTaGFkb3dSZWFsbU9iamVjdCkKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJf
U0xPVyhzdHJpY3RFdmFsQWN0aXZhdGlvblNwYWNlLCBjZWxsSGVhcENlbGxUeXBlLCBTdHJpY3RF
dmFsQWN0aXZhdGlvbikKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhz
dHJpbmdJdGVyYXRvclNwYWNlLCBjZWxsSGVhcENlbGxUeXBlLCBKU1N0cmluZ0l0ZXJhdG9yKQor
RFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHNvdXJjZUNvZGVTcGFjZSwg
ZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZSwgSlNTb3VyY2VDb2RlKQorRFlOQU1JQ19JU09f
U1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHN5bWJvbFNwYWNlLCBkZXN0cnVjdGlibGVDZWxs
SGVhcENlbGxUeXBlLCBTeW1ib2wpCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVS
X1NMT1coc3ltYm9sT2JqZWN0U3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUsIFN5bWJvbE9iamVjdCkK
K0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh0ZW1wbGF0ZU9iamVjdERl
c2NyaXB0b3JTcGFjZSwgZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZSwgSlNUZW1wbGF0ZU9i
amVjdERlc2NyaXB0b3IpCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1co
dGVtcG9yYWxDYWxlbmRhclNwYWNlLCBjZWxsSGVhcENlbGxUeXBlLCBUZW1wb3JhbENhbGVuZGFy
KQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHRlbXBvcmFsRHVyYXRp
b25TcGFjZSwgY2VsbEhlYXBDZWxsVHlwZSwgVGVtcG9yYWxEdXJhdGlvbikKK0RZTkFNSUNfSVNP
X1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh0ZW1wb3JhbEluc3RhbnRTcGFjZSwgY2VsbEhl
YXBDZWxsVHlwZSwgVGVtcG9yYWxJbnN0YW50KQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5F
X01FTUJFUl9TTE9XKHRlbXBvcmFsUGxhaW5UaW1lU3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUsIFRl
bXBvcmFsUGxhaW5UaW1lKQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9X
KHRlbXBvcmFsVGltZVpvbmVTcGFjZSwgY2VsbEhlYXBDZWxsVHlwZSwgVGVtcG9yYWxUaW1lWm9u
ZSkKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh1aW50OEFycmF5U3Bh
Y2UsIGNlbGxIZWFwQ2VsbFR5cGUsIEpTVWludDhBcnJheSkKK0RZTkFNSUNfSVNPX1NVQlNQQUNF
X0RFRklORV9NRU1CRVJfU0xPVyh1aW50OENsYW1wZWRBcnJheVNwYWNlLCBjZWxsSGVhcENlbGxU
eXBlLCBKU1VpbnQ4Q2xhbXBlZEFycmF5KQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01F
TUJFUl9TTE9XKHVpbnQxNkFycmF5U3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUsIEpTVWludDE2QXJy
YXkpCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1codWludDMyQXJyYXlT
cGFjZSwgY2VsbEhlYXBDZWxsVHlwZSwgSlNVaW50MzJBcnJheSkKK0RZTkFNSUNfSVNPX1NVQlNQ
QUNFX0RFRklORV9NRU1CRVJfU0xPVyh1bmxpbmtlZEV2YWxDb2RlQmxvY2tTcGFjZSwgZGVzdHJ1
Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZSwgVW5saW5rZWRFdmFsQ29kZUJsb2NrKQorRFlOQU1JQ19J
U09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2tT
cGFjZSwgZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZSwgVW5saW5rZWRGdW5jdGlvbkNvZGVC
bG9jaykKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh1bmxpbmtlZE1v
ZHVsZVByb2dyYW1Db2RlQmxvY2tTcGFjZSwgZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZSwg
VW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVG
SU5FX01FTUJFUl9TTE9XKHVubGlua2VkUHJvZ3JhbUNvZGVCbG9ja1NwYWNlLCBkZXN0cnVjdGli
bGVDZWxsSGVhcENlbGxUeXBlLCBVbmxpbmtlZFByb2dyYW1Db2RlQmxvY2spCitEWU5BTUlDX0lT
T19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1cod2Vha01hcFNwYWNlLCB3ZWFrTWFwSGVhcENl
bGxUeXBlLCBKU1dlYWtNYXApIC8vIEhhc2g6MHg2NjJiMTJhMworRFlOQU1JQ19JU09fU1VCU1BB
Q0VfREVGSU5FX01FTUJFUl9TTE9XKHdlYWtTZXRTcGFjZSwgd2Vha1NldEhlYXBDZWxsVHlwZSwg
SlNXZWFrU2V0KSAvLyBIYXNoOjB4NGM3ODFiMzAKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklO
RV9NRU1CRVJfU0xPVyh3ZWFrT2JqZWN0UmVmU3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUsIEpTV2Vh
a09iamVjdFJlZikgLy8gSGFzaDoweDhlYzY4ZjFmCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJ
TkVfTUVNQkVSX1NMT1cod2l0aFNjb3BlU3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUsIEpTV2l0aFNj
b3BlKQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGZpbmFsaXphdGlv
blJlZ2lzdHJ5U3BhY2UsIGZpbmFsaXphdGlvblJlZ2lzdHJ5Q2VsbFR5cGUsIEpTRmluYWxpemF0
aW9uUmVnaXN0cnkpCisjaWYgSlNDX09CSkNfQVBJX0VOQUJMRUQKK0RZTkFNSUNfSVNPX1NVQlNQ
QUNFX0RFRklORV9NRU1CRVJfU0xPVyhhcGlXcmFwcGVyT2JqZWN0U3BhY2UsIGFwaVdyYXBwZXJP
YmplY3RIZWFwQ2VsbFR5cGUsIEpTQ2FsbGJhY2tPYmplY3Q8SlNBUElXcmFwcGVyT2JqZWN0PikK
K0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhvYmpDQ2FsbGJhY2tGdW5j
dGlvblNwYWNlLCBvYmpDQ2FsbGJhY2tGdW5jdGlvbkhlYXBDZWxsVHlwZSwgT2JqQ0NhbGxiYWNr
RnVuY3Rpb24pIC8vIEhhc2g6MHgxMGY2MTBiOAorI2VuZGlmCisjaWZkZWYgSlNDX0dMSUJfQVBJ
X0VOQUJMRUQKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhhcGlXcmFw
cGVyT2JqZWN0U3BhY2UsIGFwaVdyYXBwZXJPYmplY3RIZWFwQ2VsbFR5cGUsIEpTQ2FsbGJhY2tP
YmplY3Q8SlNBUElXcmFwcGVyT2JqZWN0PikKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9N
RU1CRVJfU0xPVyhqc2NDYWxsYmFja0Z1bmN0aW9uU3BhY2UsIGpzY0NhbGxiYWNrRnVuY3Rpb25I
ZWFwQ2VsbFR5cGUsIEpTQ0NhbGxiYWNrRnVuY3Rpb24pCitEWU5BTUlDX0lTT19TVUJTUEFDRV9E
RUZJTkVfTUVNQkVSX1NMT1coY2FsbGJhY2tBUElXcmFwcGVyR2xvYmFsT2JqZWN0U3BhY2UsIGNh
bGxiYWNrQVBJV3JhcHBlckdsb2JhbE9iamVjdEhlYXBDZWxsVHlwZSwgSlNDYWxsYmFja09iamVj
dDxKU0FQSVdyYXBwZXJHbG9iYWxPYmplY3Q+KQorI2VuZGlmCitEWU5BTUlDX0lTT19TVUJTUEFD
RV9ERUZJTkVfTUVNQkVSX1NMT1coaW50bENvbGxhdG9yU3BhY2UsIGludGxDb2xsYXRvckhlYXBD
ZWxsVHlwZSwgSW50bENvbGxhdG9yKQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJF
Ul9TTE9XKGludGxEYXRlVGltZUZvcm1hdFNwYWNlLCBpbnRsRGF0ZVRpbWVGb3JtYXRIZWFwQ2Vs
bFR5cGUsIEludGxEYXRlVGltZUZvcm1hdCkKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9N
RU1CRVJfU0xPVyhpbnRsRGlzcGxheU5hbWVzU3BhY2UsIGludGxEaXNwbGF5TmFtZXNIZWFwQ2Vs
bFR5cGUsIEludGxEaXNwbGF5TmFtZXMpCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVN
QkVSX1NMT1coaW50bExpc3RGb3JtYXRTcGFjZSwgaW50bExpc3RGb3JtYXRIZWFwQ2VsbFR5cGUs
IEludGxMaXN0Rm9ybWF0KQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9X
KGludGxMb2NhbGVTcGFjZSwgaW50bExvY2FsZUhlYXBDZWxsVHlwZSwgSW50bExvY2FsZSkKK0RZ
TkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhpbnRsTnVtYmVyRm9ybWF0U3Bh
Y2UsIGludGxOdW1iZXJGb3JtYXRIZWFwQ2VsbFR5cGUsIEludGxOdW1iZXJGb3JtYXQpCitEWU5B
TUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coaW50bFBsdXJhbFJ1bGVzU3BhY2Us
IGludGxQbHVyYWxSdWxlc0hlYXBDZWxsVHlwZSwgSW50bFBsdXJhbFJ1bGVzKQorRFlOQU1JQ19J
U09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGludGxSZWxhdGl2ZVRpbWVGb3JtYXRTcGFj
ZSwgaW50bFJlbGF0aXZlVGltZUZvcm1hdEhlYXBDZWxsVHlwZSwgSW50bFJlbGF0aXZlVGltZUZv
cm1hdCkKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhpbnRsU2VnbWVu
dEl0ZXJhdG9yU3BhY2UsIGludGxTZWdtZW50SXRlcmF0b3JIZWFwQ2VsbFR5cGUsIEludGxTZWdt
ZW50SXRlcmF0b3IpCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coaW50
bFNlZ21lbnRlclNwYWNlLCBpbnRsU2VnbWVudGVySGVhcENlbGxUeXBlLCBJbnRsU2VnbWVudGVy
KQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGludGxTZWdtZW50c1Nw
YWNlLCBpbnRsU2VnbWVudHNIZWFwQ2VsbFR5cGUsIEludGxTZWdtZW50cykKKyNpZiBFTkFCTEUo
V0VCQVNTRU1CTFkpCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coanNU
b1dhc21JQ0NhbGxlZVNwYWNlLCBjZWxsSGVhcENlbGxUeXBlLCBKU1RvV2FzbUlDQ2FsbGVlKQor
RFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHdlYkFzc2VtYmx5Q29kZUJs
b2NrU3BhY2UsIHdlYkFzc2VtYmx5Q29kZUJsb2NrSGVhcENlbGxUeXBlLCBKU1dlYkFzc2VtYmx5
Q29kZUJsb2NrKSAvLyBIYXNoOjB4OWFkOTk1Y2QKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklO
RV9NRU1CRVJfU0xPVyh3ZWJBc3NlbWJseUV4Y2VwdGlvblNwYWNlLCB3ZWJBc3NlbWJseUV4Y2Vw
dGlvbkhlYXBDZWxsVHlwZSwgSlNXZWJBc3NlbWJseUV4Y2VwdGlvbikKK0RZTkFNSUNfSVNPX1NV
QlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh3ZWJBc3NlbWJseUZ1bmN0aW9uU3BhY2UsIHdlYkFz
c2VtYmx5RnVuY3Rpb25IZWFwQ2VsbFR5cGUsIFdlYkFzc2VtYmx5RnVuY3Rpb24pIC8vIEhhc2g6
MHg4YjdjMzJkYgorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHdlYkFz
c2VtYmx5R2xvYmFsU3BhY2UsIHdlYkFzc2VtYmx5R2xvYmFsSGVhcENlbGxUeXBlLCBKU1dlYkFz
c2VtYmx5R2xvYmFsKQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHdl
YkFzc2VtYmx5SW5zdGFuY2VTcGFjZSwgd2ViQXNzZW1ibHlJbnN0YW5jZUhlYXBDZWxsVHlwZSwg
SlNXZWJBc3NlbWJseUluc3RhbmNlKQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJF
Ul9TTE9XKHdlYkFzc2VtYmx5TWVtb3J5U3BhY2UsIHdlYkFzc2VtYmx5TWVtb3J5SGVhcENlbGxU
eXBlLCBKU1dlYkFzc2VtYmx5TWVtb3J5KQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01F
TUJFUl9TTE9XKHdlYkFzc2VtYmx5TW9kdWxlU3BhY2UsIHdlYkFzc2VtYmx5TW9kdWxlSGVhcENl
bGxUeXBlLCBKU1dlYkFzc2VtYmx5TW9kdWxlKQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5F
X01FTUJFUl9TTE9XKHdlYkFzc2VtYmx5TW9kdWxlUmVjb3JkU3BhY2UsIHdlYkFzc2VtYmx5TW9k
dWxlUmVjb3JkSGVhcENlbGxUeXBlLCBXZWJBc3NlbWJseU1vZHVsZVJlY29yZCkKK0RZTkFNSUNf
SVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh3ZWJBc3NlbWJseVRhYmxlU3BhY2UsIHdl
YkFzc2VtYmx5VGFibGVIZWFwQ2VsbFR5cGUsIEpTV2ViQXNzZW1ibHlUYWJsZSkKK0RZTkFNSUNf
SVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh3ZWJBc3NlbWJseVRhZ1NwYWNlLCB3ZWJB
c3NlbWJseVRhZ0hlYXBDZWxsVHlwZSwgSlNXZWJBc3NlbWJseVRhZykKK0RZTkFNSUNfSVNPX1NV
QlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh3ZWJBc3NlbWJseVdyYXBwZXJGdW5jdGlvblNwYWNl
LCBjZWxsSGVhcENlbGxUeXBlLCBXZWJBc3NlbWJseVdyYXBwZXJGdW5jdGlvbikgLy8gSGFzaDow
eGQ0YTVmZjAxCisjZW5kaWYKKworI3VuZGVmIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9N
RU1CRVJfU0xPVworCisjZGVmaW5lIERZTkFNSUNfU1BBQ0VfQU5EX1NFVF9ERUZJTkVfTUVNQkVS
X1NMT1cobmFtZSwgaGVhcENlbGxUeXBlLCB0eXBlKSBcCisgICAgSXNvU3Vic3BhY2UqIEhlYXA6
Om5hbWUjI1Nsb3coKSBcCisgICAgeyBcCisgICAgICAgIEFTU0VSVCghbV8jI25hbWUpOyBcCisg
ICAgICAgIGF1dG8gc3BhY2UgPSBtYWtlVW5pcXVlPFNwYWNlQW5kU2V0PiBJU09fU1VCU1BBQ0Vf
SU5JVCgqdGhpcywgaGVhcENlbGxUeXBlLCB0eXBlKTsgXAorICAgICAgICBXVEY6OnN0b3JlU3Rv
cmVGZW5jZSgpOyBcCisgICAgICAgIG1fIyNuYW1lID0gV1RGTW92ZShzcGFjZSk7IFwKKyAgICAg
ICAgcmV0dXJuICZtXyMjbmFtZS0+c3BhY2U7IFwKKyAgICB9CisKK0RZTkFNSUNfU1BBQ0VfQU5E
X1NFVF9ERUZJTkVfTUVNQkVSX1NMT1coZXZhbEV4ZWN1dGFibGVTcGFjZSwgZGVzdHJ1Y3RpYmxl
Q2VsbEhlYXBDZWxsVHlwZSwgRXZhbEV4ZWN1dGFibGUpIC8vIEhhc2g6MHg5NThlM2U5ZAorRFlO
QU1JQ19TUEFDRV9BTkRfU0VUX0RFRklORV9NRU1CRVJfU0xPVyhtb2R1bGVQcm9ncmFtRXhlY3V0
YWJsZVNwYWNlLCBkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlLCBNb2R1bGVQcm9ncmFtRXhl
Y3V0YWJsZSkgLy8gSGFzaDoweDY1MDZmYTNjCisKKyN1bmRlZiBEWU5BTUlDX1NQQUNFX0FORF9T
RVRfREVGSU5FX01FTUJFUl9TTE9XCisKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL0hlYXAuaAkocmV2aXNpb24gMjg2MDExKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvSGVhcC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw2ICsyNSw3IEBACiAjaW5j
bHVkZSAiQ2VsbFN0YXRlLmgiCiAjaW5jbHVkZSAiQ29sbGVjdGlvblNjb3BlLmgiCiAjaW5jbHVk
ZSAiQ29sbGVjdG9yUGhhc2UuaCIKKyNpbmNsdWRlICJDb21wbGV0ZVN1YnNwYWNlLmgiCiAjaW5j
bHVkZSAiRGVsZXRlQWxsQ29kZUVmZm9ydC5oIgogI2luY2x1ZGUgIkdDQ29uZHVjdG9yLmgiCiAj
aW5jbHVkZSAiR0NJbmNvbWluZ1JlZkNvdW50ZWRTZXQuaCIKQEAgLTMzLDYgKzM0LDExIEBACiAj
aW5jbHVkZSAiSGFuZGxlU2V0LmgiCiAjaW5jbHVkZSAiSGVhcEZpbmFsaXplckNhbGxiYWNrLmgi
CiAjaW5jbHVkZSAiSGVhcE9ic2VydmVyLmgiCisjaW5jbHVkZSAiSXNvQ2VsbFNldC5oIgorI2lu
Y2x1ZGUgIklzb0hlYXBDZWxsVHlwZS5oIgorI2luY2x1ZGUgIklzb0lubGluZWRIZWFwQ2VsbFR5
cGUuaCIKKyNpbmNsdWRlICJJc29TdWJzcGFjZS5oIgorI2luY2x1ZGUgIkpTRGVzdHJ1Y3RpYmxl
T2JqZWN0SGVhcENlbGxUeXBlLmgiCiAjaW5jbHVkZSAiTWFya2VkQmxvY2suaCIKICNpbmNsdWRl
ICJNYXJrZWRTcGFjZS5oIgogI2luY2x1ZGUgIk11dGF0b3JTdGF0ZS5oIgpAQCAtNTgsOSArNjQs
MTEgQEAgY2xhc3MgQ29sbGVjdGluZ1Njb3BlOwogY2xhc3MgQ29uc2VydmF0aXZlUm9vdHM7CiBj
bGFzcyBHQ0RlZmVycmFsQ29udGV4dDsKIGNsYXNzIEVkZW5HQ0FjdGl2aXR5Q2FsbGJhY2s7Citj
bGFzcyBGYXN0TWFsbG9jQWxpZ25lZE1lbW9yeUFsbG9jYXRvcjsKIGNsYXNzIEZ1bGxHQ0FjdGl2
aXR5Q2FsbGJhY2s7CiBjbGFzcyBHQ0FjdGl2aXR5Q2FsbGJhY2s7CiBjbGFzcyBHQ0F3YXJlSklU
U3R1YlJvdXRpbmU7CitjbGFzcyBHaWdhY2FnZUFsaWduZWRNZW1vcnlBbGxvY2F0b3I7CiBjbGFz
cyBIZWFwOwogY2xhc3MgSGVhcFByb2ZpbGVyOwogY2xhc3MgSGVhcFZlcmlmaWVyOwpAQCAtNzI5
LDYgKzczNywzMTggQEAgcHJpdmF0ZToKICAgICBib29sIG1fcGFyYWxsZWxNYXJrZXJzU2hvdWxk
RXhpdCB7IGZhbHNlIH07CiAgICAgTG9jayBtX2NvbGxlY3RDb250aW51b3VzbHlMb2NrOwogICAg
IENvbmRpdGlvbiBtX2NvbGxlY3RDb250aW51b3VzbHlDb25kaXRpb247CisKK3B1YmxpYzoKKyAg
ICAvLyBIZWFwQ2VsbFR5cGVzCisgICAgSGVhcENlbGxUeXBlIGF1eGlsaWFyeUhlYXBDZWxsVHlw
ZTsKKyAgICBIZWFwQ2VsbFR5cGUgaW1tdXRhYmxlQnV0dGVyZmx5SGVhcENlbGxUeXBlOworICAg
IEhlYXBDZWxsVHlwZSBjZWxsSGVhcENlbGxUeXBlOworICAgIEhlYXBDZWxsVHlwZSBkZXN0cnVj
dGlibGVDZWxsSGVhcENlbGxUeXBlOworICAgIElzb0hlYXBDZWxsVHlwZSBhcGlHbG9iYWxPYmpl
Y3RIZWFwQ2VsbFR5cGU7CisgICAgSXNvSGVhcENlbGxUeXBlIGNhbGxiYWNrQ29uc3RydWN0b3JI
ZWFwQ2VsbFR5cGU7CisgICAgSXNvSGVhcENlbGxUeXBlIGNhbGxiYWNrR2xvYmFsT2JqZWN0SGVh
cENlbGxUeXBlOworICAgIElzb0hlYXBDZWxsVHlwZSBjYWxsYmFja09iamVjdEhlYXBDZWxsVHlw
ZTsKKyAgICBJc29IZWFwQ2VsbFR5cGUgY3VzdG9tR2V0dGVyRnVuY3Rpb25IZWFwQ2VsbFR5cGU7
CisgICAgSXNvSGVhcENlbGxUeXBlIGN1c3RvbVNldHRlckZ1bmN0aW9uSGVhcENlbGxUeXBlOwor
ICAgIElzb0hlYXBDZWxsVHlwZSBkYXRlSW5zdGFuY2VIZWFwQ2VsbFR5cGU7CisgICAgSXNvSGVh
cENlbGxUeXBlIGVycm9ySW5zdGFuY2VIZWFwQ2VsbFR5cGU7CisgICAgSXNvSGVhcENlbGxUeXBl
IGZpbmFsaXphdGlvblJlZ2lzdHJ5Q2VsbFR5cGU7CisgICAgSXNvSGVhcENlbGxUeXBlIGdsb2Jh
bExleGljYWxFbnZpcm9ubWVudEhlYXBDZWxsVHlwZTsKKyAgICBJc29IZWFwQ2VsbFR5cGUgZ2xv
YmFsT2JqZWN0SGVhcENlbGxUeXBlOworICAgIElzb0hlYXBDZWxsVHlwZSBpbmplY3RlZFNjcmlw
dEhvc3RTcGFjZUhlYXBDZWxsVHlwZTsKKyAgICBJc29IZWFwQ2VsbFR5cGUgamF2YVNjcmlwdENh
bGxGcmFtZUhlYXBDZWxsVHlwZTsKKyAgICBJc29IZWFwQ2VsbFR5cGUganNNb2R1bGVSZWNvcmRI
ZWFwQ2VsbFR5cGU7CisgICAgSXNvSGVhcENlbGxUeXBlIG1vZHVsZU5hbWVzcGFjZU9iamVjdEhl
YXBDZWxsVHlwZTsKKyAgICBJc29IZWFwQ2VsbFR5cGUgbmF0aXZlU3RkRnVuY3Rpb25IZWFwQ2Vs
bFR5cGU7CisgICAgSXNvSW5saW5lZEhlYXBDZWxsVHlwZTxKU1N0cmluZz4gc3RyaW5nSGVhcENl
bGxUeXBlOworICAgIElzb0hlYXBDZWxsVHlwZSB3ZWFrTWFwSGVhcENlbGxUeXBlOworICAgIElz
b0hlYXBDZWxsVHlwZSB3ZWFrU2V0SGVhcENlbGxUeXBlOworICAgIEpTRGVzdHJ1Y3RpYmxlT2Jq
ZWN0SGVhcENlbGxUeXBlIGRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZTsKKyNpZiBKU0Nf
T0JKQ19BUElfRU5BQkxFRAorICAgIElzb0hlYXBDZWxsVHlwZSBhcGlXcmFwcGVyT2JqZWN0SGVh
cENlbGxUeXBlOworICAgIElzb0hlYXBDZWxsVHlwZSBvYmpDQ2FsbGJhY2tGdW5jdGlvbkhlYXBD
ZWxsVHlwZTsKKyNlbmRpZgorI2lmZGVmIEpTQ19HTElCX0FQSV9FTkFCTEVECisgICAgSXNvSGVh
cENlbGxUeXBlIGFwaVdyYXBwZXJPYmplY3RIZWFwQ2VsbFR5cGU7CisgICAgSXNvSGVhcENlbGxU
eXBlIGNhbGxiYWNrQVBJV3JhcHBlckdsb2JhbE9iamVjdEhlYXBDZWxsVHlwZTsKKyAgICBJc29I
ZWFwQ2VsbFR5cGUganNjQ2FsbGJhY2tGdW5jdGlvbkhlYXBDZWxsVHlwZTsKKyNlbmRpZgorICAg
IElzb0hlYXBDZWxsVHlwZSBpbnRsQ29sbGF0b3JIZWFwQ2VsbFR5cGU7CisgICAgSXNvSGVhcENl
bGxUeXBlIGludGxEYXRlVGltZUZvcm1hdEhlYXBDZWxsVHlwZTsKKyAgICBJc29IZWFwQ2VsbFR5
cGUgaW50bERpc3BsYXlOYW1lc0hlYXBDZWxsVHlwZTsKKyAgICBJc29IZWFwQ2VsbFR5cGUgaW50
bExpc3RGb3JtYXRIZWFwQ2VsbFR5cGU7CisgICAgSXNvSGVhcENlbGxUeXBlIGludGxMb2NhbGVI
ZWFwQ2VsbFR5cGU7CisgICAgSXNvSGVhcENlbGxUeXBlIGludGxOdW1iZXJGb3JtYXRIZWFwQ2Vs
bFR5cGU7CisgICAgSXNvSGVhcENlbGxUeXBlIGludGxQbHVyYWxSdWxlc0hlYXBDZWxsVHlwZTsK
KyAgICBJc29IZWFwQ2VsbFR5cGUgaW50bFJlbGF0aXZlVGltZUZvcm1hdEhlYXBDZWxsVHlwZTsK
KyAgICBJc29IZWFwQ2VsbFR5cGUgaW50bFNlZ21lbnRJdGVyYXRvckhlYXBDZWxsVHlwZTsKKyAg
ICBJc29IZWFwQ2VsbFR5cGUgaW50bFNlZ21lbnRlckhlYXBDZWxsVHlwZTsKKyAgICBJc29IZWFw
Q2VsbFR5cGUgaW50bFNlZ21lbnRzSGVhcENlbGxUeXBlOworI2lmIEVOQUJMRShXRUJBU1NFTUJM
WSkKKyAgICBJc29IZWFwQ2VsbFR5cGUgd2ViQXNzZW1ibHlDb2RlQmxvY2tIZWFwQ2VsbFR5cGU7
CisgICAgSXNvSGVhcENlbGxUeXBlIHdlYkFzc2VtYmx5RXhjZXB0aW9uSGVhcENlbGxUeXBlOwor
ICAgIElzb0hlYXBDZWxsVHlwZSB3ZWJBc3NlbWJseUZ1bmN0aW9uSGVhcENlbGxUeXBlOworICAg
IElzb0hlYXBDZWxsVHlwZSB3ZWJBc3NlbWJseUdsb2JhbEhlYXBDZWxsVHlwZTsKKyAgICBJc29I
ZWFwQ2VsbFR5cGUgd2ViQXNzZW1ibHlJbnN0YW5jZUhlYXBDZWxsVHlwZTsKKyAgICBJc29IZWFw
Q2VsbFR5cGUgd2ViQXNzZW1ibHlNZW1vcnlIZWFwQ2VsbFR5cGU7CisgICAgSXNvSGVhcENlbGxU
eXBlIHdlYkFzc2VtYmx5TW9kdWxlSGVhcENlbGxUeXBlOworICAgIElzb0hlYXBDZWxsVHlwZSB3
ZWJBc3NlbWJseU1vZHVsZVJlY29yZEhlYXBDZWxsVHlwZTsKKyAgICBJc29IZWFwQ2VsbFR5cGUg
d2ViQXNzZW1ibHlUYWJsZUhlYXBDZWxsVHlwZTsKKyAgICBJc29IZWFwQ2VsbFR5cGUgd2ViQXNz
ZW1ibHlUYWdIZWFwQ2VsbFR5cGU7CisjZW5kaWYKKworICAgIC8vIEFsaWduZWRNZW1vcnlBbGxv
Y2F0b3JzCisgICAgc3RkOjp1bmlxdWVfcHRyPEZhc3RNYWxsb2NBbGlnbmVkTWVtb3J5QWxsb2Nh
dG9yPiBmYXN0TWFsbG9jQWxsb2NhdG9yOworICAgIHN0ZDo6dW5pcXVlX3B0cjxHaWdhY2FnZUFs
aWduZWRNZW1vcnlBbGxvY2F0b3I+IHByaW1pdGl2ZUdpZ2FjYWdlQWxsb2NhdG9yOworICAgIHN0
ZDo6dW5pcXVlX3B0cjxHaWdhY2FnZUFsaWduZWRNZW1vcnlBbGxvY2F0b3I+IGpzVmFsdWVHaWdh
Y2FnZUFsbG9jYXRvcjsKKworICAgIC8vIFN1YnNwYWNlcworICAgIENvbXBsZXRlU3Vic3BhY2Ug
cHJpbWl0aXZlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZTsgLy8gVHlwZWQgYXJyYXlzLCBzdHJpbmdz
LCBiaXR2ZWN0b3JzLCBldGMgZ28gaGVyZS4KKyAgICBDb21wbGV0ZVN1YnNwYWNlIGpzVmFsdWVH
aWdhY2FnZUF1eGlsaWFyeVNwYWNlOyAvLyBCdXR0ZXJmbGllcywgYXJyYXlzIG9mIEpTVmFsdWVz
LCBldGMgZ28gaGVyZS4KKyAgICBDb21wbGV0ZVN1YnNwYWNlIGltbXV0YWJsZUJ1dHRlcmZseUpT
VmFsdWVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlOyAvLyBKU0ltbXV0YWJsZUJ1dHRlcmZseSBnb2Vz
IGhlcmUuCisKKyAgICAvLyBXZSBtYWtlIGNyb3NzLWN1dHRpbmcgYXNzdW1wdGlvbnMgYWJvdXQg
dHlwZWQgYXJyYXlzIGJlaW5nIGluIHRoZSBwcmltaXRpdmUgR2lnYWNhZ2UgYW5kIGJ1dHRlcmZs
aWVzCisgICAgLy8gYmVpbmcgaW4gdGhlIEpTVmFsdWUgZ2lnYWNhZ2UuIEZvciBzb21lIHR5cGVz
LCBpdCdzIHN1cGVyIG9idmlvdXMgd2hlcmUgdGhleSBzaG91bGQgZ28sIGFuZCBzbyB3ZQorICAg
IC8vIGNhbiBoYXJkY29kZSB0aGF0IGZhY3QuIEJ1dCBzb21ldGltZXMgaXQncyBub3QgY2xlYXIs
IHNvIHdlIGFic3RyYWN0IGl0IGJ5IGhhdmluZyBhIEdpZ2FjYWdlOjpLaW5kCisgICAgLy8gY29u
c3RhbnQgc29tZXdoZXJlLgorICAgIC8vIEZJWE1FOiBNYXliZSBpdCB3b3VsZCBiZSBiZXR0ZXIg
aWYgZXZlcnlvbmUgYWJzdHJhY3RlZCB0aGlzPworICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNzUyNDgKKyAgICBBTFdBWVNfSU5MSU5FIENvbXBsZXRlU3Vi
c3BhY2UmIGdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UoR2lnYWNhZ2U6OktpbmQga2luZCkKKyAgICB7
CisgICAgICAgIHN3aXRjaCAoa2luZCkgeworICAgICAgICBjYXNlIEdpZ2FjYWdlOjpQcmltaXRp
dmU6CisgICAgICAgICAgICByZXR1cm4gcHJpbWl0aXZlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZTsK
KyAgICAgICAgY2FzZSBHaWdhY2FnZTo6SlNWYWx1ZToKKyAgICAgICAgICAgIHJldHVybiBqc1Zh
bHVlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZTsKKyAgICAgICAgY2FzZSBHaWdhY2FnZTo6TnVtYmVy
T2ZLaW5kczoKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIFJFTEVBU0Vf
QVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiBwcmltaXRpdmVHaWdhY2FnZUF1
eGlsaWFyeVNwYWNlOworICAgIH0KKyAgICAKKyAgICAvLyBXaGVuZXZlciBwb3NzaWJsZSwgdXNl
IHN1YnNwYWNlRm9yPENlbGxUeXBlPih2bSkgdG8gZ2V0IG9uZSBvZiB0aGVzZSBzdWJzcGFjZXMu
CisgICAgQ29tcGxldGVTdWJzcGFjZSBjZWxsU3BhY2U7CisgICAgQ29tcGxldGVTdWJzcGFjZSB2
YXJpYWJsZVNpemVkQ2VsbFNwYWNlOyAvLyBGSVhNRTogVGhpcyBzcGFjZSBpcyBwcm9ibGVtYXRp
YyBiZWNhdXNlIHdlIGhhdmUgdGhpbmdzIGluIGhlcmUgbGlrZSBEaXJlY3RBcmd1bWVudHMgYW5k
IFNjb3BlZEFyZ3VtZW50czsgdGhvc2Ugc2hvdWxkIGJlIHNwbGl0IGludG8gSlNWYWx1ZU9PQiBj
ZWxscyBhbmQgSlNWYWx1ZVN0cmljdCBhdXhpbGlhcmllcy4gaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE4Mjg1OAorICAgIENvbXBsZXRlU3Vic3BhY2UgZGVzdHJ1Y3Rp
YmxlT2JqZWN0U3BhY2U7CisKKyAgICBJc29TdWJzcGFjZSBhcnJheVNwYWNlOworICAgIElzb1N1
YnNwYWNlIGJpZ0ludFNwYWNlOworICAgIElzb1N1YnNwYWNlIGNhbGxlZVNwYWNlOworICAgIElz
b1N1YnNwYWNlIGNsb25lZEFyZ3VtZW50c1NwYWNlOworICAgIElzb1N1YnNwYWNlIGN1c3RvbUdl
dHRlclNldHRlclNwYWNlOworICAgIElzb1N1YnNwYWNlIGRhdGVJbnN0YW5jZVNwYWNlOworICAg
IElzb1N1YnNwYWNlIGRvbUF0dHJpYnV0ZUdldHRlclNldHRlclNwYWNlOworICAgIElzb1N1YnNw
YWNlIGV4Y2VwdGlvblNwYWNlOworICAgIElzb1N1YnNwYWNlIGV4ZWN1dGFibGVUb0NvZGVCbG9j
a0VkZ2VTcGFjZTsKKyAgICBJc29TdWJzcGFjZSBmdW5jdGlvblNwYWNlOworICAgIElzb1N1YnNw
YWNlIGdldHRlclNldHRlclNwYWNlOworICAgIElzb1N1YnNwYWNlIGdsb2JhbExleGljYWxFbnZp
cm9ubWVudFNwYWNlOworICAgIElzb1N1YnNwYWNlIGludGVybmFsRnVuY3Rpb25TcGFjZTsKKyAg
ICBJc29TdWJzcGFjZSBqc1Byb3h5U3BhY2U7CisgICAgSXNvU3Vic3BhY2UgbmF0aXZlRXhlY3V0
YWJsZVNwYWNlOworICAgIElzb1N1YnNwYWNlIG51bWJlck9iamVjdFNwYWNlOworICAgIElzb1N1
YnNwYWNlIHBsYWluT2JqZWN0U3BhY2U7CisgICAgSXNvU3Vic3BhY2UgcHJvbWlzZVNwYWNlOwor
ICAgIElzb1N1YnNwYWNlIHByb3BlcnR5TmFtZUVudW1lcmF0b3JTcGFjZTsKKyAgICBJc29TdWJz
cGFjZSBwcm9wZXJ0eVRhYmxlU3BhY2U7CisgICAgSXNvU3Vic3BhY2UgcmVnRXhwU3BhY2U7Cisg
ICAgSXNvU3Vic3BhY2UgcmVnRXhwT2JqZWN0U3BhY2U7CisgICAgSXNvU3Vic3BhY2Ugcm9wZVN0
cmluZ1NwYWNlOworICAgIElzb1N1YnNwYWNlIHNjb3BlZEFyZ3VtZW50c1NwYWNlOworICAgIElz
b1N1YnNwYWNlIHNwYXJzZUFycmF5VmFsdWVNYXBTcGFjZTsKKyAgICBJc29TdWJzcGFjZSBzdHJp
bmdTcGFjZTsKKyAgICBJc29TdWJzcGFjZSBzdHJpbmdPYmplY3RTcGFjZTsKKyAgICBJc29TdWJz
cGFjZSBzdHJ1Y3R1cmVDaGFpblNwYWNlOworICAgIElzb1N1YnNwYWNlIHN0cnVjdHVyZVJhcmVE
YXRhU3BhY2U7CisgICAgSXNvU3Vic3BhY2Ugc3RydWN0dXJlU3BhY2U7CisgICAgSXNvU3Vic3Bh
Y2UgYnJhbmRlZFN0cnVjdHVyZVNwYWNlOworICAgIElzb1N1YnNwYWNlIHN5bWJvbFRhYmxlU3Bh
Y2U7CisKKyNkZWZpbmUgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihuYW1lKSBc
CisgICAgdGVtcGxhdGU8U3Vic3BhY2VBY2Nlc3MgbW9kZT4gXAorICAgIElzb1N1YnNwYWNlKiBu
YW1lKCkgXAorICAgIHsgXAorICAgICAgICBpZiAobV8jI25hbWUgfHwgbW9kZSA9PSBTdWJzcGFj
ZUFjY2Vzczo6Q29uY3VycmVudGx5KSBcCisgICAgICAgICAgICByZXR1cm4gbV8jI25hbWUuZ2V0
KCk7IFwKKyAgICAgICAgcmV0dXJuIG5hbWUjI1Nsb3coKTsgXAorICAgIH0gXAorICAgIEpTX0VY
UE9SVF9QUklWQVRFIElzb1N1YnNwYWNlKiBuYW1lIyNTbG93KCk7IFwKKyAgICBzdGQ6OnVuaXF1
ZV9wdHI8SXNvU3Vic3BhY2U+IG1fIyNuYW1lOworCisKKyNpZiBKU0NfT0JKQ19BUElfRU5BQkxF
RAorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoYXBpV3JhcHBlck9iamVj
dFNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIob2JqQ0NhbGxi
YWNrRnVuY3Rpb25TcGFjZSkKKyNlbmRpZgorI2lmZGVmIEpTQ19HTElCX0FQSV9FTkFCTEVECisg
ICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihhcGlXcmFwcGVyT2JqZWN0U3Bh
Y2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihqc2NDYWxsYmFja0Z1
bmN0aW9uU3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihjYWxs
YmFja0FQSVdyYXBwZXJHbG9iYWxPYmplY3RTcGFjZSkKKyNlbmRpZgorICAgIERZTkFNSUNfSVNP
X1NVQlNQQUNFX0RFRklORV9NRU1CRVIoYXBpR2xvYmFsT2JqZWN0U3BhY2UpCisgICAgRFlOQU1J
Q19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihhcGlWYWx1ZVdyYXBwZXJTcGFjZSkKKyAgICBE
WU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKGFycmF5QnVmZmVyU3BhY2UpCisgICAg
RFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihhcnJheUl0ZXJhdG9yU3BhY2UpCisg
ICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihhc3luY0dlbmVyYXRvclNwYWNl
KQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoYmlnSW50NjRBcnJheVNw
YWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoYmlnSW50T2JqZWN0
U3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihiaWdVaW50NjRB
cnJheVNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoYm9vbGVh
bk9iamVjdFNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoYm91
bmRGdW5jdGlvblNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIo
Y2FsbGJhY2tDb25zdHJ1Y3RvclNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklO
RV9NRU1CRVIoY2FsbGJhY2tHbG9iYWxPYmplY3RTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJT
UEFDRV9ERUZJTkVfTUVNQkVSKGNhbGxiYWNrRnVuY3Rpb25TcGFjZSkKKyAgICBEWU5BTUlDX0lT
T19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKGNhbGxiYWNrT2JqZWN0U3BhY2UpCisgICAgRFlOQU1J
Q19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihjdXN0b21HZXR0ZXJGdW5jdGlvblNwYWNlKQor
ICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoY3VzdG9tU2V0dGVyRnVuY3Rp
b25TcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKGRhdGFWaWV3
U3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihkZWJ1Z2dlclNj
b3BlU3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihlcnJvcklu
c3RhbmNlU3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihmbG9h
dDMyQXJyYXlTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKGZs
b2F0NjRBcnJheVNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIo
ZnVuY3Rpb25SYXJlRGF0YVNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9N
RU1CRVIoZ2VuZXJhdG9yU3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01F
TUJFUihnbG9iYWxPYmplY3RTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVf
TUVNQkVSKGluamVjdGVkU2NyaXB0SG9zdFNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNF
X0RFRklORV9NRU1CRVIoaW50OEFycmF5U3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0Vf
REVGSU5FX01FTUJFUihpbnQxNkFycmF5U3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0Vf
REVGSU5FX01FTUJFUihpbnQzMkFycmF5U3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0Vf
REVGSU5FX01FTUJFUihqYXZhU2NyaXB0Q2FsbEZyYW1lU3BhY2UpCisgICAgRFlOQU1JQ19JU09f
U1VCU1BBQ0VfREVGSU5FX01FTUJFUihqc01vZHVsZVJlY29yZFNwYWNlKQorICAgIERZTkFNSUNf
SVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIobWFwQnVja2V0U3BhY2UpCisgICAgRFlOQU1JQ19J
U09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihtYXBJdGVyYXRvclNwYWNlKQorICAgIERZTkFNSUNf
SVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIobWFwU3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VC
U1BBQ0VfREVGSU5FX01FTUJFUihtb2R1bGVOYW1lc3BhY2VPYmplY3RTcGFjZSkKKyAgICBEWU5B
TUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKG5hdGl2ZVN0ZEZ1bmN0aW9uU3BhY2UpCisg
ICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihwcm94eU9iamVjdFNwYWNlKQor
ICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIocHJveHlSZXZva2VTcGFjZSkK
KyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKHNjb3BlZEFyZ3VtZW50c1Rh
YmxlU3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihzY3JpcHRG
ZXRjaFBhcmFtZXRlcnNTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVN
QkVSKHNjcmlwdEZldGNoZXJTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVf
TUVNQkVSKHNldEJ1Y2tldFNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9N
RU1CRVIoc2V0SXRlcmF0b3JTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVf
TUVNQkVSKHNldFNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIo
c2hhZG93UmVhbG1TcGFjZSk7CisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJF
UihzdHJpY3RFdmFsQWN0aXZhdGlvblNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RF
RklORV9NRU1CRVIoc3RyaW5nSXRlcmF0b3JTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFD
RV9ERUZJTkVfTUVNQkVSKHNvdXJjZUNvZGVTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFD
RV9ERUZJTkVfTUVNQkVSKHN5bWJvbFNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RF
RklORV9NRU1CRVIoc3ltYm9sT2JqZWN0U3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0Vf
REVGSU5FX01FTUJFUih0ZW1wbGF0ZU9iamVjdERlc2NyaXB0b3JTcGFjZSkKKyAgICBEWU5BTUlD
X0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKHRlbXBvcmFsQ2FsZW5kYXJTcGFjZSkKKyAgICBE
WU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKHRlbXBvcmFsRHVyYXRpb25TcGFjZSkK
KyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKHRlbXBvcmFsSW5zdGFudFNw
YWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIodGVtcG9yYWxQbGFp
blRpbWVTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKHRlbXBv
cmFsVGltZVpvbmVTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVS
KHVpbnQ4QXJyYXlTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVS
KHVpbnQ4Q2xhbXBlZEFycmF5U3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5F
X01FTUJFUih1aW50MTZBcnJheVNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklO
RV9NRU1CRVIodWludDMyQXJyYXlTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJ
TkVfTUVNQkVSKHVubGlua2VkRXZhbENvZGVCbG9ja1NwYWNlKQorICAgIERZTkFNSUNfSVNPX1NV
QlNQQUNFX0RFRklORV9NRU1CRVIodW5saW5rZWRGdW5jdGlvbkNvZGVCbG9ja1NwYWNlKQorICAg
IERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIodW5saW5rZWRNb2R1bGVQcm9ncmFt
Q29kZUJsb2NrU3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUih1
bmxpbmtlZFByb2dyYW1Db2RlQmxvY2tTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9E
RUZJTkVfTUVNQkVSKGZpbmFsaXphdGlvblJlZ2lzdHJ5U3BhY2UpCisgICAgRFlOQU1JQ19JU09f
U1VCU1BBQ0VfREVGSU5FX01FTUJFUih3ZWFrT2JqZWN0UmVmU3BhY2UpCisgICAgRFlOQU1JQ19J
U09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUih3ZWFrU2V0U3BhY2UpCisgICAgRFlOQU1JQ19JU09f
U1VCU1BBQ0VfREVGSU5FX01FTUJFUih3ZWFrTWFwU3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VC
U1BBQ0VfREVGSU5FX01FTUJFUih3aXRoU2NvcGVTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJT
UEFDRV9ERUZJTkVfTUVNQkVSKGludGxDb2xsYXRvclNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NV
QlNQQUNFX0RFRklORV9NRU1CRVIoaW50bERhdGVUaW1lRm9ybWF0U3BhY2UpCisgICAgRFlOQU1J
Q19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihpbnRsRGlzcGxheU5hbWVzU3BhY2UpCisgICAg
RFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihpbnRsTGlzdEZvcm1hdFNwYWNlKQor
ICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoaW50bExvY2FsZVNwYWNlKQor
ICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoaW50bE51bWJlckZvcm1hdFNw
YWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoaW50bFBsdXJhbFJ1
bGVzU3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihpbnRsUmVs
YXRpdmVUaW1lRm9ybWF0U3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01F
TUJFUihpbnRsU2VnbWVudEl0ZXJhdG9yU3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0Vf
REVGSU5FX01FTUJFUihpbnRsU2VnbWVudGVyU3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BB
Q0VfREVGSU5FX01FTUJFUihpbnRsU2VnbWVudHNTcGFjZSkKKyNpZiBFTkFCTEUoV0VCQVNTRU1C
TFkpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihqc1RvV2FzbUlDQ2Fs
bGVlU3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUih3ZWJBc3Nl
bWJseUNvZGVCbG9ja1NwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1C
RVIod2ViQXNzZW1ibHlFeGNlcHRpb25TcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9E
RUZJTkVfTUVNQkVSKHdlYkFzc2VtYmx5RnVuY3Rpb25TcGFjZSkKKyAgICBEWU5BTUlDX0lTT19T
VUJTUEFDRV9ERUZJTkVfTUVNQkVSKHdlYkFzc2VtYmx5R2xvYmFsU3BhY2UpCisgICAgRFlOQU1J
Q19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUih3ZWJBc3NlbWJseUluc3RhbmNlU3BhY2UpCisg
ICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUih3ZWJBc3NlbWJseU1lbW9yeVNw
YWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIod2ViQXNzZW1ibHlN
b2R1bGVTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKHdlYkFz
c2VtYmx5TW9kdWxlUmVjb3JkU3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5F
X01FTUJFUih3ZWJBc3NlbWJseVRhYmxlU3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0Vf
REVGSU5FX01FTUJFUih3ZWJBc3NlbWJseVRhZ1NwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQ
QUNFX0RFRklORV9NRU1CRVIod2ViQXNzZW1ibHlXcmFwcGVyRnVuY3Rpb25TcGFjZSkKKyNlbmRp
ZgorCisjdW5kZWYgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUgorICAgIAorICAg
IElzb0NlbGxTZXQgZXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZXNXaXRoQ29uc3RyYWludHM7Cisg
ICAgSXNvQ2VsbFNldCBleGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlc1dpdGhGaW5hbGl6ZXJzOwor
CisjZGVmaW5lIERZTkFNSUNfU1BBQ0VfQU5EX1NFVF9ERUZJTkVfTUVNQkVSKG5hbWUpIFwKKyAg
ICB0ZW1wbGF0ZTxTdWJzcGFjZUFjY2VzcyBtb2RlPiBcCisgICAgSXNvU3Vic3BhY2UqIG5hbWUo
KSBcCisgICAgeyBcCisgICAgICAgIGlmIChhdXRvKiBzcGFjZUFuZFNldCA9IG1fIyNuYW1lLmdl
dCgpKSBcCisgICAgICAgICAgICByZXR1cm4gJnNwYWNlQW5kU2V0LT5zcGFjZTsgXAorICAgICAg
ICBpZiAobW9kZSA9PSBTdWJzcGFjZUFjY2Vzczo6Q29uY3VycmVudGx5KSBcCisgICAgICAgICAg
ICByZXR1cm4gbnVsbHB0cjsgXAorICAgICAgICByZXR1cm4gbmFtZSMjU2xvdygpOyBcCisgICAg
fSBcCisgICAgSXNvU3Vic3BhY2UqIG5hbWUjI1Nsb3coKTsgXAorICAgIHN0ZDo6dW5pcXVlX3B0
cjxTcGFjZUFuZFNldD4gbV8jI25hbWU7CisgICAgCisgICAgc3RydWN0IFNwYWNlQW5kU2V0IHsK
KyAgICAgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOworCisgICAgICAgIElzb1N1
YnNwYWNlIHNwYWNlOworICAgICAgICBJc29DZWxsU2V0IHNldDsKKyAgICAgICAgCisgICAgICAg
IHRlbXBsYXRlPHR5cGVuYW1lLi4uIEFyZ3VtZW50cz4KKyAgICAgICAgU3BhY2VBbmRTZXQoQXJn
dW1lbnRzJiYuLi4gYXJndW1lbnRzKQorICAgICAgICAgICAgOiBzcGFjZShzdGQ6OmZvcndhcmQ8
QXJndW1lbnRzPihhcmd1bWVudHMpLi4uKQorICAgICAgICAgICAgLCBzZXQoc3BhY2UpCisgICAg
ICAgIHsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgc3RhdGljIElzb0NlbGxTZXQmIHNl
dEZvcihTdWJzcGFjZSYgc3BhY2UpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiAqYml0
d2lzZV9jYXN0PElzb0NlbGxTZXQqPigKKyAgICAgICAgICAgICAgICBiaXR3aXNlX2Nhc3Q8Y2hh
cio+KCZzcGFjZSkgLQorICAgICAgICAgICAgICAgIE9CSkVDVF9PRkZTRVRPRihTcGFjZUFuZFNl
dCwgc3BhY2UpICsKKyAgICAgICAgICAgICAgICBPQkpFQ1RfT0ZGU0VUT0YoU3BhY2VBbmRTZXQs
IHNldCkpOworICAgICAgICB9CisgICAgfTsKKyAgICAKKyAgICBTcGFjZUFuZFNldCBjb2RlQmxv
Y2tTcGFjZTsKKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmM+CisgICAgdm9pZCBmb3JFYWNo
Q29kZUJsb2NrU3BhY2UoY29uc3QgRnVuYyYgZnVuYykKKyAgICB7CisgICAgICAgIC8vIFRoaXMg
c2hvdWxkIG5vdCBpbmNsdWRlIHdlYkFzc2VtYmx5Q29kZUJsb2NrU3BhY2UgYmVjYXVzZSB0aGlz
IGlzIGFib3V0IHN1YnNjbGFzc2VzIG9mCisgICAgICAgIC8vIEpTQzo6Q29kZUJsb2NrLgorICAg
ICAgICBmdW5jKGNvZGVCbG9ja1NwYWNlKTsKKyAgICB9CisKKyAgICBEWU5BTUlDX1NQQUNFX0FO
RF9TRVRfREVGSU5FX01FTUJFUihldmFsRXhlY3V0YWJsZVNwYWNlKQorICAgIERZTkFNSUNfU1BB
Q0VfQU5EX1NFVF9ERUZJTkVfTUVNQkVSKG1vZHVsZVByb2dyYW1FeGVjdXRhYmxlU3BhY2UpCisg
ICAgU3BhY2VBbmRTZXQgZnVuY3Rpb25FeGVjdXRhYmxlU3BhY2U7CisgICAgU3BhY2VBbmRTZXQg
cHJvZ3JhbUV4ZWN1dGFibGVTcGFjZTsKKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmM+Cisg
ICAgdm9pZCBmb3JFYWNoU2NyaXB0RXhlY3V0YWJsZVNwYWNlKGNvbnN0IEZ1bmMmIGZ1bmMpCisg
ICAgeworICAgICAgICBpZiAobV9ldmFsRXhlY3V0YWJsZVNwYWNlKQorICAgICAgICAgICAgZnVu
YygqbV9ldmFsRXhlY3V0YWJsZVNwYWNlKTsKKyAgICAgICAgZnVuYyhmdW5jdGlvbkV4ZWN1dGFi
bGVTcGFjZSk7CisgICAgICAgIGlmIChtX21vZHVsZVByb2dyYW1FeGVjdXRhYmxlU3BhY2UpCisg
ICAgICAgICAgICBmdW5jKCptX21vZHVsZVByb2dyYW1FeGVjdXRhYmxlU3BhY2UpOworICAgICAg
ICBmdW5jKHByb2dyYW1FeGVjdXRhYmxlU3BhY2UpOworICAgIH0KKworICAgIFNwYWNlQW5kU2V0
IHVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlU3BhY2U7CisKKyN1bmRlZiBEWU5BTUlDX1NQQUNF
X0FORF9TRVRfREVGSU5FX01FTUJFUgogfTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwQ2VsbFR5cGUuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBDZWxsVHlwZS5jcHAJKHJldmlzaW9uIDI4
NjAxMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBDZWxsVHlwZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE3IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNy0yMDIx
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtNTYsMTIgKzU2LDEyIEBAIEhlYXBDZWxsVHlwZTo6fkhlYXBDZWxsVHlwZSgp
CiB7CiB9CiAKLXZvaWQgSGVhcENlbGxUeXBlOjpmaW5pc2hTd2VlcChNYXJrZWRCbG9jazo6SGFu
ZGxlJiBibG9jaywgRnJlZUxpc3QqIGZyZWVMaXN0KQordm9pZCBIZWFwQ2VsbFR5cGU6OmZpbmlz
aFN3ZWVwKE1hcmtlZEJsb2NrOjpIYW5kbGUmIGJsb2NrLCBGcmVlTGlzdCogZnJlZUxpc3QpIGNv
bnN0CiB7CiAgICAgYmxvY2suZmluaXNoU3dlZXBLbm93aW5nSGVhcENlbGxUeXBlKGZyZWVMaXN0
LCBEZWZhdWx0RGVzdHJveUZ1bmMoKSk7CiB9CiAKLXZvaWQgSGVhcENlbGxUeXBlOjpkZXN0cm95
KFZNJiB2bSwgSlNDZWxsKiBjZWxsKQordm9pZCBIZWFwQ2VsbFR5cGU6OmRlc3Ryb3koVk0mIHZt
LCBKU0NlbGwqIGNlbGwpIGNvbnN0CiB7CiAgICAgRGVmYXVsdERlc3Ryb3lGdW5jKCkodm0sIGNl
bGwpOwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcENlbGxUeXBlLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcENlbGxUeXBlLmgJ
KHJldmlzaW9uIDI4NjAxMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBDZWxs
VHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTctMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKQEAgLTM2LDE0ICszNiwxNCBAQCBwdWJsaWM6CiAgICAgSlNfRVhQ
T1JUX1BSSVZBVEUgSGVhcENlbGxUeXBlKENlbGxBdHRyaWJ1dGVzKTsKICAgICBKU19FWFBPUlRf
UFJJVkFURSB2aXJ0dWFsIH5IZWFwQ2VsbFR5cGUoKTsKIAotICAgIGNvbnN0IENlbGxBdHRyaWJ1
dGVzJiBhdHRyaWJ1dGVzKCkgY29uc3QgeyByZXR1cm4gbV9hdHRyaWJ1dGVzOyB9CisgICAgY29u
c3QgQ2VsbEF0dHJpYnV0ZXMgYXR0cmlidXRlcygpIGNvbnN0IHsgcmV0dXJuIG1fYXR0cmlidXRl
czsgfQogCiAgICAgLy8gVGhlIHB1cnBvc2Ugb2Ygb3ZlcnJpZGluZyB0aGlzIGlzIHRvIHNwZWNp
YWxpemUgdGhlIHN3ZWVwIGZvciB5b3VyIGRlc3RydWN0b3JzLiBUaGlzIHdvbid0CiAgICAgLy8g
YmUgY2FsbGVkIGZvciBuby1kZXN0cnVjdG9yIGJsb2Nrcy4gVGhpcyBtdXN0IGNhbGwgTWFya2Vk
QmxvY2s6OmZpbmlzaFN3ZWVwS25vd2luZ1N1YnNwYWNlLgotICAgIHZpcnR1YWwgdm9pZCBmaW5p
c2hTd2VlcChNYXJrZWRCbG9jazo6SGFuZGxlJiwgRnJlZUxpc3QqKTsKKyAgICB2aXJ0dWFsIHZv
aWQgZmluaXNoU3dlZXAoTWFya2VkQmxvY2s6OkhhbmRsZSYsIEZyZWVMaXN0KikgY29uc3Q7CiAK
ICAgICAvLyBUaGVzZSBnZXQgY2FsbGVkIGZvciBsYXJnZSBvYmplY3RzLgotICAgIHZpcnR1YWwg
dm9pZCBkZXN0cm95KFZNJiwgSlNDZWxsKik7CisgICAgdmlydHVhbCB2b2lkIGRlc3Ryb3koVk0m
LCBKU0NlbGwqKSBjb25zdDsKIAogcHJpdmF0ZToKICAgICBDZWxsQXR0cmlidXRlcyBtX2F0dHJp
YnV0ZXM7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Jc29IZWFwQ2VsbFR5cGUu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lzb0hlYXBDZWxs
VHlwZS5jcHAJKHJldmlzaW9uIDI4NjAxMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L0lzb0hlYXBDZWxsVHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgot
ICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAxOS0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzksMTIgKzM5LDEyIEBAIElzb0hl
YXBDZWxsVHlwZTo6SXNvSGVhcENlbGxUeXBlKERlc3RydWMKIAogSXNvSGVhcENlbGxUeXBlOjp+
SXNvSGVhcENlbGxUeXBlKCkgPSBkZWZhdWx0OwogCi12b2lkIElzb0hlYXBDZWxsVHlwZTo6Zmlu
aXNoU3dlZXAoTWFya2VkQmxvY2s6OkhhbmRsZSYgaGFuZGxlLCBGcmVlTGlzdCogZnJlZUxpc3Qp
Cit2b2lkIElzb0hlYXBDZWxsVHlwZTo6ZmluaXNoU3dlZXAoTWFya2VkQmxvY2s6OkhhbmRsZSYg
aGFuZGxlLCBGcmVlTGlzdCogZnJlZUxpc3QpIGNvbnN0CiB7CiAgICAgaGFuZGxlLmZpbmlzaFN3
ZWVwS25vd2luZ0hlYXBDZWxsVHlwZShmcmVlTGlzdCwgKnRoaXMpOwogfQogCi12b2lkIElzb0hl
YXBDZWxsVHlwZTo6ZGVzdHJveShWTSYsIEpTQ2VsbCogY2VsbCkKK3ZvaWQgSXNvSGVhcENlbGxU
eXBlOjpkZXN0cm95KFZNJiwgSlNDZWxsKiBjZWxsKSBjb25zdAogewogICAgIG1fZGVzdHJveShj
ZWxsKTsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lzb0hlYXBDZWxsVHlw
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lzb0hlYXBDZWxs
VHlwZS5oCShyZXZpc2lvbiAyODYwMTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9J
c29IZWFwQ2VsbFR5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTktMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTktMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI2LDcgKzI2LDYgQEAKICNwcmFn
bWEgb25jZQogCiAjaW5jbHVkZSAiSGVhcENlbGxUeXBlLmgiCi0jaW5jbHVkZSAiTWFya2VkQmxv
Y2tJbmxpbmVzLmgiCiAKIG5hbWVzcGFjZSBKU0MgewogCkBAIC0zOSwxMyArMzgsMjkgQEAgcHVi
bGljOgogICAgIEpTX0VYUE9SVF9QUklWQVRFIElzb0hlYXBDZWxsVHlwZShEZXN0cnVjdGlvbk1v
ZGUsIERlc3Ryb3lGdW5jdGlvblB0cik7CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlw
ZT4KKyAgICBzdHJ1Y3QgQXJncyB7CisgICAgICAgIEFyZ3MoKQorICAgICAgICAgICAgOiBtb2Rl
KENlbGxUeXBlOjpuZWVkc0Rlc3RydWN0aW9uID8gTmVlZHNEZXN0cnVjdGlvbiA6IERvZXNOb3RO
ZWVkRGVzdHJ1Y3Rpb24pCisgICAgICAgICAgICAsIGZ1bmN0aW9uUHRyKCZDZWxsVHlwZTo6ZGVz
dHJveSkKKyAgICAgICAgeyB9CisKKyAgICAgICAgRGVzdHJ1Y3Rpb25Nb2RlIG1vZGU7CisgICAg
ICAgIERlc3Ryb3lGdW5jdGlvblB0ciBmdW5jdGlvblB0cjsKKyAgICB9OworCisgICAgdGVtcGxh
dGU8dHlwZW5hbWUgQ2VsbFR5cGU+CisgICAgSXNvSGVhcENlbGxUeXBlKEFyZ3M8Q2VsbFR5cGU+
JiYgYXJncykKKyAgICAgICAgOiBJc29IZWFwQ2VsbFR5cGUoYXJncy5tb2RlLCBhcmdzLmZ1bmN0
aW9uUHRyKQorICAgIHsgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGU+CiAgICAg
c3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxJc29IZWFwQ2VsbFR5cGU+IGNyZWF0ZSgpCiAgICAgewog
ICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxJc29IZWFwQ2VsbFR5cGU+KENlbGxUeXBlOjpuZWVk
c0Rlc3RydWN0aW9uID8gTmVlZHNEZXN0cnVjdGlvbiA6IERvZXNOb3ROZWVkRGVzdHJ1Y3Rpb24s
ICZDZWxsVHlwZTo6ZGVzdHJveSk7CiAgICAgfQogCi0gICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9p
ZCBmaW5pc2hTd2VlcChNYXJrZWRCbG9jazo6SGFuZGxlJiwgRnJlZUxpc3QqKSBmaW5hbDsKLSAg
ICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIGRlc3Ryb3koVk0mLCBKU0NlbGwqKSBmaW5hbDsKKyAg
ICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIGZpbmlzaFN3ZWVwKE1hcmtlZEJsb2NrOjpIYW5kbGUm
LCBGcmVlTGlzdCopIGNvbnN0IGZpbmFsOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgZGVz
dHJveShWTSYsIEpTQ2VsbCopIGNvbnN0IGZpbmFsOwogCiAgICAgQUxXQVlTX0lOTElORSB2b2lk
IG9wZXJhdG9yKCkoVk0mLCBKU0NlbGwqIGNlbGwpIGNvbnN0CiAgICAgewpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvSXNvSW5saW5lZEhlYXBDZWxsVHlwZS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lzb0lubGluZWRIZWFwQ2VsbFR5cGUuaAko
cmV2aXNpb24gMjg2MDExKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSXNvSW5saW5l
ZEhlYXBDZWxsVHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxOS0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAxOS0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjYsNyArMjYsNiBAQAogI3ByYWdt
YSBvbmNlCiAKICNpbmNsdWRlICJIZWFwQ2VsbFR5cGUuaCIKLSNpbmNsdWRlICJNYXJrZWRCbG9j
a0lubGluZXMuaCIKIAogbmFtZXNwYWNlIEpTQyB7CiAKQEAgLTQ1LDEyICs0NCwxMiBAQCBwdWJs
aWM6CiAgICAgICAgIH0KICAgICB9OwogCi0gICAgdm9pZCBmaW5pc2hTd2VlcChNYXJrZWRCbG9j
azo6SGFuZGxlJiBoYW5kbGUsIEZyZWVMaXN0KiBmcmVlTGlzdCkgZmluYWwKKyAgICB2b2lkIGZp
bmlzaFN3ZWVwKE1hcmtlZEJsb2NrOjpIYW5kbGUmIGhhbmRsZSwgRnJlZUxpc3QqIGZyZWVMaXN0
KSBjb25zdCBmaW5hbAogICAgIHsKICAgICAgICAgaGFuZGxlLmZpbmlzaFN3ZWVwS25vd2luZ0hl
YXBDZWxsVHlwZShmcmVlTGlzdCwgRGVzdHJveUZ1bmMoKSk7CiAgICAgfQogCi0gICAgdm9pZCBk
ZXN0cm95KFZNJiwgSlNDZWxsKiBjZWxsKSBmaW5hbAorICAgIHZvaWQgZGVzdHJveShWTSYsIEpT
Q2VsbCogY2VsbCkgY29uc3QgZmluYWwKICAgICB7CiAgICAgICAgIENlbGxUeXBlOjpkZXN0cm95
KGNlbGwpOwogICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lzb1N1YnNw
YWNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Jc29TdWJz
cGFjZS5jcHAJKHJldmlzaW9uIDI4NjAxMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L0lzb1N1YnNwYWNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMsNyArMzMsNyBAQAogCiBuYW1l
c3BhY2UgSlNDIHsKIAotSXNvU3Vic3BhY2U6Oklzb1N1YnNwYWNlKENTdHJpbmcgbmFtZSwgSGVh
cCYgaGVhcCwgSGVhcENlbGxUeXBlKiBoZWFwQ2VsbFR5cGUsIHNpemVfdCBzaXplLCB1aW50OF90
IG51bWJlck9mTG93ZXJUaWVyQ2VsbHMpCitJc29TdWJzcGFjZTo6SXNvU3Vic3BhY2UoQ1N0cmlu
ZyBuYW1lLCBIZWFwJiBoZWFwLCBjb25zdCBIZWFwQ2VsbFR5cGUmIGhlYXBDZWxsVHlwZSwgc2l6
ZV90IHNpemUsIHVpbnQ4X3QgbnVtYmVyT2ZMb3dlclRpZXJDZWxscykKICAgICA6IFN1YnNwYWNl
KG5hbWUsIGhlYXApCiAgICAgLCBtX2RpcmVjdG9yeShXVEY6OnJvdW5kVXBUb011bHRpcGxlT2Y8
TWFya2VkQmxvY2s6OmF0b21TaXplPihzaXplKSkKICAgICAsIG1fbG9jYWxBbGxvY2F0b3IoJm1f
ZGlyZWN0b3J5KQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSXNvU3Vic3BhY2Uu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Jc29TdWJzcGFjZS5o
CShyZXZpc2lvbiAyODYwMTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Jc29TdWJz
cGFjZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw3ICszNyw3IEBAIGNsYXNzIElzb0NlbGxTZXQ7
CiAKIGNsYXNzIElzb1N1YnNwYWNlIDogcHVibGljIFN1YnNwYWNlIHsKIHB1YmxpYzoKLSAgICBK
U19FWFBPUlRfUFJJVkFURSBJc29TdWJzcGFjZShDU3RyaW5nIG5hbWUsIEhlYXAmLCBIZWFwQ2Vs
bFR5cGUqLCBzaXplX3Qgc2l6ZSwgdWludDhfdCBudW1iZXJPZkxvd2VyVGllckNlbGxzKTsKKyAg
ICBKU19FWFBPUlRfUFJJVkFURSBJc29TdWJzcGFjZShDU3RyaW5nIG5hbWUsIEhlYXAmLCBjb25z
dCBIZWFwQ2VsbFR5cGUmLCBzaXplX3Qgc2l6ZSwgdWludDhfdCBudW1iZXJPZkxvd2VyVGllckNl
bGxzKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSB+SXNvU3Vic3BhY2UoKSBvdmVycmlkZTsKIAog
ICAgIHNpemVfdCBjZWxsU2l6ZSgpIHsgcmV0dXJuIG1fZGlyZWN0b3J5LmNlbGxTaXplKCk7IH0K
QEAgLTU0LDcgKzU0LDcgQEAgcHVibGljOgogICAgIHZvaWQqIHRyeUFsbG9jYXRlRnJvbUxvd2Vy
VGllcigpOwogICAgIHZvaWQgZGVzdHJveUxvd2VyVGllckZyZWVMaXN0KCk7CiAKLSAgICB2b2lk
IHN3ZWVwKCk7CisgICAgdm9pZCBzd2VlcDMoKTsKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1
bmM+IHZvaWQgZm9yRWFjaExvd2VyVGllckZyZWVMaXN0ZWRQcmVjaXNlQWxsb2NhdGlvbihjb25z
dCBGdW5jJik7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lzb1N1YnNwYWNl
SW5saW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lzb1N1
YnNwYWNlSW5saW5lcy5oCShyZXZpc2lvbiAyODYwMTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9Jc29TdWJzcGFjZUlubGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtNDQsNyArNDQs
NyBAQCBpbmxpbmUgdm9pZCBJc29TdWJzcGFjZTo6Y2xlYXJJc29DZWxsU2V0CiAgICAgICAgIH0p
OwogfQogCi1pbmxpbmUgdm9pZCBJc29TdWJzcGFjZTo6c3dlZXAoKQoraW5saW5lIHZvaWQgSXNv
U3Vic3BhY2U6OnN3ZWVwMygpCiB7CiAgICAgU3Vic3BhY2U6OnN3ZWVwQmxvY2tzKCk7CiAgICAg
Ly8gV2Ugc3dlZXAgcHJlY2lzZS1hbGxvY2F0aW9ucyBlYWdlcmx5LCBidXQgd2UgZG8gbm90IGZy
ZWUgaXQgaW1tZWRpYXRlbHkuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Jc29T
dWJzcGFjZVBlclZNLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVh
cC9Jc29TdWJzcGFjZVBlclZNLmNwcAkocmV2aXNpb24gMjg2MDExKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvSXNvU3Vic3BhY2VQZXJWTS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMz
LDcgKzMzLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKIGNsYXNzIElzb1N1YnNwYWNlUGVyVk06OkF1
dG9yZW1vdmluZ0lzb1N1YnNwYWNlIGZpbmFsIDogcHVibGljIElzb1N1YnNwYWNlIHsKIHB1Ymxp
YzoKLSAgICBBdXRvcmVtb3ZpbmdJc29TdWJzcGFjZShJc29TdWJzcGFjZVBlclZNJiBwZXJWTSwg
Q1N0cmluZyBuYW1lLCBIZWFwJiBoZWFwLCBIZWFwQ2VsbFR5cGUqIGhlYXBDZWxsVHlwZSwgc2l6
ZV90IHNpemUpCisgICAgQXV0b3JlbW92aW5nSXNvU3Vic3BhY2UoSXNvU3Vic3BhY2VQZXJWTSYg
cGVyVk0sIENTdHJpbmcgbmFtZSwgSGVhcCYgaGVhcCwgY29uc3QgSGVhcENlbGxUeXBlJiBoZWFw
Q2VsbFR5cGUsIHNpemVfdCBzaXplKQogICAgICAgICA6IElzb1N1YnNwYWNlKG5hbWUsIGhlYXAs
IGhlYXBDZWxsVHlwZSwgc2l6ZSwgLyogbnVtYmVyT2ZMb3dlclRpZXJDZWxscyAqLyAwKQogICAg
ICAgICAsIG1fcGVyVk0ocGVyVk0pCiAgICAgewpAQCAtNjUsNyArNjUsNyBAQCBJc29TdWJzcGFj
ZSYgSXNvU3Vic3BhY2VQZXJWTTo6Zm9yVk0oVk0mCiAgICAgYXV0byByZXN1bHQgPSBtX3N1YnNw
YWNlUGVyVk0uYWRkKCZ2bSwgbnVsbHB0cik7CiAgICAgaWYgKHJlc3VsdC5pc05ld0VudHJ5KSB7
CiAgICAgICAgIFN1YnNwYWNlUGFyYW1ldGVycyBwYXJhbXMgPSBtX3N1YnNwYWNlUGFyYW1ldGVy
cyh2bSk7Ci0gICAgICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBuZXcgQXV0b3JlbW92aW5n
SXNvU3Vic3BhY2UoKnRoaXMsIHBhcmFtcy5uYW1lLCB2bS5oZWFwLCBwYXJhbXMuaGVhcENlbGxU
eXBlLCBwYXJhbXMuc2l6ZSk7CisgICAgICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBuZXcg
QXV0b3JlbW92aW5nSXNvU3Vic3BhY2UoKnRoaXMsIHBhcmFtcy5uYW1lLCB2bS5oZWFwLCAqcGFy
YW1zLmhlYXBDZWxsVHlwZSwgcGFyYW1zLnNpemUpOwogICAgIH0KICAgICByZXR1cm4gKnJlc3Vs
dC5pdGVyYXRvci0+dmFsdWU7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9J
c29TdWJzcGFjZVBlclZNLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvSXNvU3Vic3BhY2VQZXJWTS5oCShyZXZpc2lvbiAyODYwMTEpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9Jc29TdWJzcGFjZVBlclZNLmgJKHdvcmtpbmcgY29weSkKQEAgLTQxLDE1
ICs0MSwxNSBAQCBwdWJsaWM6CiAgICAgc3RydWN0IFN1YnNwYWNlUGFyYW1ldGVycyB7CiAgICAg
ICAgIFN1YnNwYWNlUGFyYW1ldGVycygpIHsgfQogICAgICAgICAKLSAgICAgICAgU3Vic3BhY2VQ
YXJhbWV0ZXJzKENTdHJpbmcgbmFtZSwgSGVhcENlbGxUeXBlKiBoZWFwQ2VsbFR5cGUsIHNpemVf
dCBzaXplKQorICAgICAgICBTdWJzcGFjZVBhcmFtZXRlcnMoQ1N0cmluZyBuYW1lLCBjb25zdCBI
ZWFwQ2VsbFR5cGUmIGhlYXBDZWxsVHlwZSwgc2l6ZV90IHNpemUpCiAgICAgICAgICAgICA6IG5h
bWUoV1RGTW92ZShuYW1lKSkKLSAgICAgICAgICAgICwgaGVhcENlbGxUeXBlKGhlYXBDZWxsVHlw
ZSkKKyAgICAgICAgICAgICwgaGVhcENlbGxUeXBlKCZoZWFwQ2VsbFR5cGUpCiAgICAgICAgICAg
ICAsIHNpemUoc2l6ZSkKICAgICAgICAgewogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBD
U3RyaW5nIG5hbWU7Ci0gICAgICAgIEhlYXBDZWxsVHlwZSogaGVhcENlbGxUeXBlIHsgbnVsbHB0
ciB9OworICAgICAgICBjb25zdCBIZWFwQ2VsbFR5cGUqIGhlYXBDZWxsVHlwZSB7IG51bGxwdHIg
fTsKICAgICAgICAgc2l6ZV90IHNpemUgeyAwIH07CiAgICAgfTsKICAgICAKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2suaAkocmV2aXNpb24gMjg2MDExKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2suaAkod29ya2luZyBjb3B5KQpA
QCAtMTYxLDcgKzE2MSw3IEBAIHB1YmxpYzoKICAgICAgICAgc2l6ZV90IGNlbGxTaXplKCk7CiAg
ICAgICAgIGlubGluZSB1bnNpZ25lZCBjZWxsc1BlckJsb2NrKCk7CiAgICAgICAgIAotICAgICAg
ICBjb25zdCBDZWxsQXR0cmlidXRlcyYgYXR0cmlidXRlcygpIGNvbnN0OworICAgICAgICBjb25z
dCBDZWxsQXR0cmlidXRlcyBhdHRyaWJ1dGVzKCkgY29uc3Q7CiAgICAgICAgIERlc3RydWN0aW9u
TW9kZSBkZXN0cnVjdGlvbigpIGNvbnN0OwogICAgICAgICBib29sIG5lZWRzRGVzdHJ1Y3Rpb24o
KSBjb25zdDsKICAgICAgICAgSGVhcENlbGw6OktpbmQgY2VsbEtpbmQoKSBjb25zdDsKQEAgLTM0
Nyw3ICszNDcsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCByZXNldEFsbG9jYXRlZCgpOwogICAgICAg
ICAKICAgICBzaXplX3QgY2VsbFNpemUoKTsKLSAgICBjb25zdCBDZWxsQXR0cmlidXRlcyYgYXR0
cmlidXRlcygpIGNvbnN0OworICAgIGNvbnN0IENlbGxBdHRyaWJ1dGVzIGF0dHJpYnV0ZXMoKSBj
b25zdDsKICAgICAKICAgICBib29sIGhhc0FueU1hcmtlZCgpIGNvbnN0OwogICAgIHZvaWQgbm90
ZU1hcmtlZCgpOwpAQCAtNTExLDEyICs1MTEsMTIgQEAgaW5saW5lIHNpemVfdCBNYXJrZWRCbG9j
azo6Y2VsbFNpemUoKQogICAgIHJldHVybiBoYW5kbGUoKS5jZWxsU2l6ZSgpOwogfQogCi1pbmxp
bmUgY29uc3QgQ2VsbEF0dHJpYnV0ZXMmIE1hcmtlZEJsb2NrOjpIYW5kbGU6OmF0dHJpYnV0ZXMo
KSBjb25zdAoraW5saW5lIGNvbnN0IENlbGxBdHRyaWJ1dGVzIE1hcmtlZEJsb2NrOjpIYW5kbGU6
OmF0dHJpYnV0ZXMoKSBjb25zdAogewogICAgIHJldHVybiBtX2F0dHJpYnV0ZXM7CiB9CiAKLWlu
bGluZSBjb25zdCBDZWxsQXR0cmlidXRlcyYgTWFya2VkQmxvY2s6OmF0dHJpYnV0ZXMoKSBjb25z
dAoraW5saW5lIGNvbnN0IENlbGxBdHRyaWJ1dGVzIE1hcmtlZEJsb2NrOjphdHRyaWJ1dGVzKCkg
Y29uc3QKIHsKICAgICByZXR1cm4gaGFuZGxlKCkuYXR0cmlidXRlcygpOwogfQpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2tJbmxpbmVzLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2tJbmxpbmVzLmgJKHJldmlz
aW9uIDI4NjAxMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrSW5s
aW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxNi0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAxNi0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjEzLDcgKzIxMyw3IEBAIGlubGluZSBib29sIE1h
cmtlZEJsb2NrOjpIYW5kbGU6OmFyZU1hcmsKIC8vIHN3ZWVwTW9kZSA9PSBTd2VlcFRvRnJlZUxp
c3QKIC8vIHNjcmliYmxlTW9kZSA9PSBEb250U2NyaWJibGUKIC8vIG5ld2x5QWxsb2NhdGVkTW9k
ZSA9PSBEb2VzTm90SGF2ZU5ld2x5QWxsb2NhdGVkCi0vLyBkZXN0cnVjdGlvbk1vZGUgIT0gQmxv
Y2tIYXNEZXN0cmljdG9yc0FuZENvbGxlY3RvcklzUnVubmluZworLy8gZGVzdHJ1Y3Rpb25Nb2Rl
ICE9IEJsb2NrSGFzRGVzdHJ1Y3RvcnNBbmRDb2xsZWN0b3JJc1J1bm5pbmcKIC8vCiAvLyBlbXB0
eU1vZGUgPSBJc0VtcHR5CiAvLyAgICAgZGVzdHJ1Y3Rpb25Nb2RlID0gRG9lc05vdE5lZWREZXN0
cnVjdGlvbgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvUHJlY2lzZUFsbG9jYXRp
b24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9QcmVjaXNlQWxs
b2NhdGlvbi5oCShyZXZpc2lvbiAyODYwMTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVh
cC9QcmVjaXNlQWxsb2NhdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjEsNyArMTIxLDcgQEAg
cHVibGljOgogICAgICAgICByZXR1cm4gYWJvdmVMb3dlckJvdW5kKHJhd1B0cikgJiYgYmVsb3dV
cHBlckJvdW5kKHJhd1B0cik7CiAgICAgfQogICAgIAotICAgIGNvbnN0IENlbGxBdHRyaWJ1dGVz
JiBhdHRyaWJ1dGVzKCkgY29uc3QgeyByZXR1cm4gbV9hdHRyaWJ1dGVzOyB9CisgICAgY29uc3Qg
Q2VsbEF0dHJpYnV0ZXMgYXR0cmlidXRlcygpIGNvbnN0IHsgcmV0dXJuIG1fYXR0cmlidXRlczsg
fQogICAgIAogICAgIERlcGVuZGVuY3kgYWJvdXRUb01hcmsoSGVhcFZlcnNpb24pIHsgcmV0dXJu
IERlcGVuZGVuY3koKTsgfQogICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
U3Vic3BhY2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1N1
YnNwYWNlLmNwcAkocmV2aXNpb24gMjg2MDExKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvU3Vic3BhY2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MCw5ICs0MCw5IEBAIFN1YnNwYWNl
OjpTdWJzcGFjZShDU3RyaW5nIG5hbWUsIEhlYXAmIGgKIHsKIH0KIAotdm9pZCBTdWJzcGFjZTo6
aW5pdGlhbGl6ZShIZWFwQ2VsbFR5cGUqIGhlYXBDZWxsVHlwZSwgQWxpZ25lZE1lbW9yeUFsbG9j
YXRvciogYWxpZ25lZE1lbW9yeUFsbG9jYXRvcikKK3ZvaWQgU3Vic3BhY2U6OmluaXRpYWxpemUo
Y29uc3QgSGVhcENlbGxUeXBlJiBoZWFwQ2VsbFR5cGUsIEFsaWduZWRNZW1vcnlBbGxvY2F0b3Iq
IGFsaWduZWRNZW1vcnlBbGxvY2F0b3IpCiB7Ci0gICAgbV9oZWFwQ2VsbFR5cGUgPSBoZWFwQ2Vs
bFR5cGU7CisgICAgbV9oZWFwQ2VsbFR5cGUgPSAmaGVhcENlbGxUeXBlOwogICAgIG1fYWxpZ25l
ZE1lbW9yeUFsbG9jYXRvciA9IGFsaWduZWRNZW1vcnlBbGxvY2F0b3I7CiAgICAgbV9kaXJlY3Rv
cnlGb3JFbXB0eUFsbG9jYXRpb24gPSBtX2FsaWduZWRNZW1vcnlBbGxvY2F0b3ItPmZpcnN0RGly
ZWN0b3J5KCk7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1N1YnNwYWNlLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvU3Vic3BhY2UuaAkocmV2
aXNpb24gMjg2MDExKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvU3Vic3BhY2UuaAko
d29ya2luZyBjb3B5KQpAQCAtMzksMTkgKzM5LDE4IEBAIGNsYXNzIEhlYXBDZWxsVHlwZTsKIAog
Ly8gVGhlIGlkZWEgb2Ygc3Vic3BhY2VzIGlzIHRoYXQgeW91IGNhbiBwcm92aWRlIHNvbWUgY3Vz
dG9tIGJlaGF2aW9yIGZvciB5b3VyIG9iamVjdHMgaWYgeW91CiAvLyBhbGxvY2F0ZSB0aGVtIGZy
b20gYSBjdXN0b20gU3Vic3BhY2UgaW4gd2hpY2ggeW91IG92ZXJyaWRlIHNvbWUgb2YgdGhlIHZp
cnR1YWwgbWV0aG9kcy4gVGhpcwotLy8gY2xhc3MgaXMgdGhlIGJhc2VjbGFzcyBvZiBTdWJzcGFj
ZXMuIFVzdWFsbHkgeW91IHdpbGwgdXNlIGVpdGhlciBTdWJzcGFjZSBvciBGaXhlZFNpemVTdWJz
cGFjZS4KKy8vIGNsYXNzIGlzIHRoZSBiYXNlY2xhc3Mgb2YgYWxsIHN1YnNwYWNlcyBlLmcuIENv
bXBsZXRlU3Vic3BhY2UsIElzb1N1YnNwYWNlLgogY2xhc3MgU3Vic3BhY2UgewogICAgIFdURl9N
QUtFX05PTkNPUFlBQkxFKFN1YnNwYWNlKTsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
IHB1YmxpYzoKLSAgICBKU19FWFBPUlRfUFJJVkFURSBTdWJzcGFjZShDU3RyaW5nIG5hbWUsIEhl
YXAmKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSB2aXJ0dWFsIH5TdWJzcGFjZSgpOwogCiAgICAg
Y29uc3QgY2hhciogbmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fbmFtZS5kYXRhKCk7IH0KICAgICBN
YXJrZWRTcGFjZSYgc3BhY2UoKSBjb25zdCB7IHJldHVybiBtX3NwYWNlOyB9CiAgICAgCi0gICAg
Y29uc3QgQ2VsbEF0dHJpYnV0ZXMmIGF0dHJpYnV0ZXMoKSBjb25zdDsKLSAgICBIZWFwQ2VsbFR5
cGUqIGhlYXBDZWxsVHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1faGVhcENlbGxUeXBlOyB9CisgICAg
Y29uc3QgQ2VsbEF0dHJpYnV0ZXMgYXR0cmlidXRlcygpIGNvbnN0OworICAgIGNvbnN0IEhlYXBD
ZWxsVHlwZSogaGVhcENlbGxUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9oZWFwQ2VsbFR5cGU7IH0K
ICAgICBBbGlnbmVkTWVtb3J5QWxsb2NhdG9yKiBhbGlnbmVkTWVtb3J5QWxsb2NhdG9yKCkgY29u
c3QgeyByZXR1cm4gbV9hbGlnbmVkTWVtb3J5QWxsb2NhdG9yOyB9CiAgICAgCiAgICAgdm9pZCBm
aW5pc2hTd2VlcChNYXJrZWRCbG9jazo6SGFuZGxlJiwgRnJlZUxpc3QqKTsKQEAgLTEwNCwxMSAr
MTAzLDEzIEBAIHB1YmxpYzoKICAgICBib29sIGlzSXNvU3Vic3BhY2UoKSBjb25zdCB7IHJldHVy
biBtX2lzSXNvU3Vic3BhY2U7IH0KIAogcHJvdGVjdGVkOgotICAgIHZvaWQgaW5pdGlhbGl6ZShI
ZWFwQ2VsbFR5cGUqLCBBbGlnbmVkTWVtb3J5QWxsb2NhdG9yKik7CisgICAgU3Vic3BhY2UoQ1N0
cmluZyBuYW1lLCBIZWFwJik7CisKKyAgICB2b2lkIGluaXRpYWxpemUoY29uc3QgSGVhcENlbGxU
eXBlJiwgQWxpZ25lZE1lbW9yeUFsbG9jYXRvciopOwogICAgIAogICAgIE1hcmtlZFNwYWNlJiBt
X3NwYWNlOwogICAgIAotICAgIEhlYXBDZWxsVHlwZSogbV9oZWFwQ2VsbFR5cGUgeyBudWxscHRy
IH07CisgICAgY29uc3QgSGVhcENlbGxUeXBlKiBtX2hlYXBDZWxsVHlwZSB7IG51bGxwdHIgfTsK
ICAgICBBbGlnbmVkTWVtb3J5QWxsb2NhdG9yKiBtX2FsaWduZWRNZW1vcnlBbGxvY2F0b3IgeyBu
dWxscHRyIH07CiAgICAgCiAgICAgQmxvY2tEaXJlY3RvcnkqIG1fZmlyc3REaXJlY3RvcnkgeyBu
dWxscHRyIH07CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9TdWJzcGFjZUlubGlu
ZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9TdWJzcGFjZUlu
bGluZXMuaAkocmV2aXNpb24gMjg2MDExKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
U3Vic3BhY2VJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTE1Miw3ICsxNTIsNyBAQCB2b2lk
IFN1YnNwYWNlOjpmb3JFYWNoTGl2ZUNlbGwoY29uc3QgRnVuCiAgICAgICAgIH0pOwogfQogCi1p
bmxpbmUgY29uc3QgQ2VsbEF0dHJpYnV0ZXMmIFN1YnNwYWNlOjphdHRyaWJ1dGVzKCkgY29uc3QK
K2lubGluZSBjb25zdCBDZWxsQXR0cmlidXRlcyBTdWJzcGFjZTo6YXR0cmlidXRlcygpIGNvbnN0
CiB7CiAgICAgcmV0dXJuIG1faGVhcENlbGxUeXBlLT5hdHRyaWJ1dGVzKCk7CiB9CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90
eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0lu
amVjdGVkU2NyaXB0SG9zdFByb3RvdHlwZS5oCShyZXZpc2lvbiAyODYwMTEpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBlLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTQwLDcgKzQwLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6
Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNU
QVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTSW5qZWN0ZWRTY3JpcHRIb3N0UHJv
dG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAg
ICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBERUNMQVJF
X0lORk87CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTSmF2YVNjcmlw
dENhbGxGcmFtZVByb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3IvSlNKYXZhU2NyaXB0Q2FsbEZyYW1lUHJvdG90eXBlLmgJKHJldmlzaW9uIDI4
NjAxMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNKYXZhU2NyaXB0Q2Fs
bEZyYW1lUHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQwLDcgKzQwLDcgQEAgcHVibGlj
OgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkK
ICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTSmF2
YVNjcmlwdENhbGxGcmFtZVByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxh
aW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAg
ICAgfQogCiAgICAgREVDTEFSRV9JTkZPOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQWdncmVnYXRlRXJyb3JQcm90b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9BZ2dyZWdhdGVFcnJvclByb3RvdHlwZS5oCShyZXZpc2lvbiAy
ODYwMTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BZ2dyZWdhdGVFcnJvclBy
b3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00NCw3ICs0NCw3IEBAIHB1YmxpYzoKICAgICBz
dGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAgIFNU
QVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEFnZ3JlZ2F0ZUVycm9yUHJvdG90eXBl
LCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICBy
ZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgU3RydWN0
dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBKU1ZhbHVlIHByb3RvdHlwZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0FycmF5SXRlcmF0b3JQcm90b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9BcnJheUl0ZXJhdG9yUHJvdG90eXBlLmgJKHJldmlzaW9uIDI4NjAxMSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5SXRlcmF0b3JQcm90b3R5cGUu
aAkod29ya2luZyBjb3B5KQpAQCAtMzgsNyArMzgsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIElz
b1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNT
RVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShBcnJheUl0ZXJhdG9yUHJvdG90eXBlLCBCYXNlKTsK
LSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZt
LnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgQXJyYXlJdGVyYXRvclBy
b3RvdHlwZSogY3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9B
c3luY0Zyb21TeW5jSXRlcmF0b3JQcm90b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Bc3luY0Zyb21TeW5jSXRlcmF0b3JQcm90b3R5cGUuaAkocmV2
aXNpb24gMjg2MDExKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXN5bmNGcm9t
U3luY0l0ZXJhdG9yUHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw2IEBACiAv
KgogICogQ29weXJpZ2h0IChDKSAyMDE3LTIwMTkgT2xla3NhbmRyIFNrYWNoa292IDxnc2thY2hr
b3ZAZ21haWwuY29tPi4KKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSwgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zNyw3ICsz
OCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2
bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEFz
eW5jRnJvbVN5bmNJdGVyYXRvclByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0u
cGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7
CiAgICAgfQogCiAgICAgREVDTEFSRV9JTkZPOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQXN5bmNGdW5jdGlvblByb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0FzeW5jRnVuY3Rpb25Qcm90b3R5cGUuaAkocmV2aXNpb24g
Mjg2MDExKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXN5bmNGdW5jdGlvblBy
b3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw3ICszOCw3IEBAIHB1YmxpYzoKICAgICBz
dGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAgIFNU
QVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEFzeW5jRnVuY3Rpb25Qcm90b3R5cGUs
IEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJl
dHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIERFQ0xBUkVfSU5GTzsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FzeW5jR2VuZXJhdG9yRnVuY3Rp
b25Qcm90b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Bc3luY0dlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmgJKHJldmlzaW9uIDI4NjAxMSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FzeW5jR2VuZXJhdG9yRnVuY3Rpb25Qcm90
b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzgsNyArMzgsNyBAQCBwdWJsaWM6CiAgICAgc3Rh
dGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFU
SUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShBc3luY0dlbmVyYXRvckZ1bmN0aW9uUHJv
dG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAg
ICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBERUNMQVJF
X0lORk87CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bc3luY0dlbmVyYXRv
clByb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0FzeW5jR2VuZXJhdG9yUHJvdG90eXBlLmgJKHJldmlzaW9uIDI4NjAxMSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0FzeW5jR2VuZXJhdG9yUHJvdG90eXBlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTQxLDcgKzQxLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSog
c3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VC
U1BBQ0VfU0hBUkFCTEUoQXN5bmNHZW5lcmF0b3JQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICBy
ZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmpl
Y3RTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBBc3luY0dlbmVyYXRvclByb3RvdHlwZSog
Y3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FzeW5jSXRlcmF0b3JQcm90b3R5cGUu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bc3luY0l0ZXJh
dG9yUHJvdG90eXBlLmgJKHJldmlzaW9uIDI4NjAxMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0FzeW5jSXRlcmF0b3JQcm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzks
NyArMzksNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihW
TSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJM
RShBc3luY0l0ZXJhdG9yUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFp
bk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAg
ICB9CiAKICAgICBzdGF0aWMgQXN5bmNJdGVyYXRvclByb3RvdHlwZSogY3JlYXRlKFZNJiB2bSwg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BdG9taWNzT2JqZWN0LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXRvbWljc09iamVjdC5oCShyZXZp
c2lvbiAyODYwMTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BdG9taWNzT2Jq
ZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChD
KSAyMDE2LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDE2LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zNyw3ICszNyw3IEBAIHB1YmxpYzoKICAgICBzdGF0
aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJ
Q19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEF0b21pY3NPYmplY3QsIEJhc2UpOwotICAg
ICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxh
aW5PYmplY3RTcGFjZSgpOwogICAgIH0KICAgICAKICAgICBzdGF0aWMgQXRvbWljc09iamVjdCog
Y3JlYXRlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqKTsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0JpZ0ludFByb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0JpZ0ludFByb3RvdHlwZS5oCShyZXZpc2lvbiAy
ODYwMTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9CaWdJbnRQcm90b3R5cGUu
aAkod29ya2luZyBjb3B5KQpAQCAtMzksNyArMzksNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIElz
b1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNT
RVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShCaWdJbnRQcm90b3R5cGUsIEJhc2UpOwotICAgICAg
ICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5P
YmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBCaWdJbnRQcm90b3R5cGUqIGNyZWF0
ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0
dXJlKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQnJhbmRlZFN0cnVjdHVy
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0JyYW5kZWRT
dHJ1Y3R1cmUuaAkocmV2aXNpb24gMjg2MDExKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQnJhbmRlZFN0cnVjdHVyZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00Nyw3ICs0Nyw3IEBA
IHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vic3BhY2VBY2Nlc3M+
CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewotICAg
ICAgICByZXR1cm4gJnZtLmJyYW5kZWRTdHJ1Y3R1cmVTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2
bS5icmFuZGVkU3RydWN0dXJlU3BhY2UoKTsKICAgICB9CiAKICAgICBBTFdBWVNfSU5MSU5FIGJv
b2wgY2hlY2tCcmFuZChTeW1ib2wqIGJyYW5kKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQnV0dGVyZmx5SW5saW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0J1dHRlcmZseUlubGluZXMuaAkocmV2aXNpb24gMjg2MDExKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQnV0dGVyZmx5SW5saW5lcy5oCSh3b3JraW5n
IGNvcHkpCkBAIC03Nyw3ICs3Nyw3IEBAIEFMV0FZU19JTkxJTkUgdW5zaWduZWQgQnV0dGVyZmx5
OjpvcHRpbWEKIGlubGluZSBCdXR0ZXJmbHkqIEJ1dHRlcmZseTo6dHJ5Q3JlYXRlVW5pbml0aWFs
aXplZChWTSYgdm0sIEpTT2JqZWN0Kiwgc2l6ZV90IHByZUNhcGFjaXR5LCBzaXplX3QgcHJvcGVy
dHlDYXBhY2l0eSwgYm9vbCBoYXNJbmRleGluZ0hlYWRlciwgc2l6ZV90IGluZGV4aW5nUGF5bG9h
ZFNpemVJbkJ5dGVzLCBHQ0RlZmVycmFsQ29udGV4dCogZGVmZXJyYWxDb250ZXh0KQogewogICAg
IHNpemVfdCBzaXplID0gdG90YWxTaXplKHByZUNhcGFjaXR5LCBwcm9wZXJ0eUNhcGFjaXR5LCBo
YXNJbmRleGluZ0hlYWRlciwgaW5kZXhpbmdQYXlsb2FkU2l6ZUluQnl0ZXMpOwotICAgIHZvaWQq
IGJhc2UgPSB2bS5qc1ZhbHVlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZS5hbGxvY2F0ZU5vblZpcnR1
YWwodm0sIHNpemUsIGRlZmVycmFsQ29udGV4dCwgQWxsb2NhdGlvbkZhaWx1cmVNb2RlOjpSZXR1
cm5OdWxsKTsKKyAgICB2b2lkKiBiYXNlID0gdm0uanNWYWx1ZUdpZ2FjYWdlQXV4aWxpYXJ5U3Bh
Y2UoKS5hbGxvY2F0ZU5vblZpcnR1YWwodm0sIHNpemUsIGRlZmVycmFsQ29udGV4dCwgQWxsb2Nh
dGlvbkZhaWx1cmVNb2RlOjpSZXR1cm5OdWxsKTsKICAgICBpZiAoVU5MSUtFTFkoIWJhc2UpKQog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApAQCAtODksNyArODksNyBAQCBpbmxpbmUgQnV0dGVy
Zmx5KiBCdXR0ZXJmbHk6OnRyeUNyZWF0ZVVuCiBpbmxpbmUgQnV0dGVyZmx5KiBCdXR0ZXJmbHk6
OmNyZWF0ZVVuaW5pdGlhbGl6ZWQoVk0mIHZtLCBKU09iamVjdCosIHNpemVfdCBwcmVDYXBhY2l0
eSwgc2l6ZV90IHByb3BlcnR5Q2FwYWNpdHksIGJvb2wgaGFzSW5kZXhpbmdIZWFkZXIsIHNpemVf
dCBpbmRleGluZ1BheWxvYWRTaXplSW5CeXRlcykKIHsKICAgICBzaXplX3Qgc2l6ZSA9IHRvdGFs
U2l6ZShwcmVDYXBhY2l0eSwgcHJvcGVydHlDYXBhY2l0eSwgaGFzSW5kZXhpbmdIZWFkZXIsIGlu
ZGV4aW5nUGF5bG9hZFNpemVJbkJ5dGVzKTsKLSAgICB2b2lkKiBiYXNlID0gdm0uanNWYWx1ZUdp
Z2FjYWdlQXV4aWxpYXJ5U3BhY2UuYWxsb2NhdGVOb25WaXJ0dWFsKHZtLCBzaXplLCBudWxscHRy
LCBBbGxvY2F0aW9uRmFpbHVyZU1vZGU6OkFzc2VydCk7CisgICAgdm9pZCogYmFzZSA9IHZtLmpz
VmFsdWVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlKCkuYWxsb2NhdGVOb25WaXJ0dWFsKHZtLCBzaXpl
LCBudWxscHRyLCBBbGxvY2F0aW9uRmFpbHVyZU1vZGU6OkFzc2VydCk7CiAgICAgQnV0dGVyZmx5
KiByZXN1bHQgPSBmcm9tQmFzZShiYXNlLCBwcmVDYXBhY2l0eSwgcHJvcGVydHlDYXBhY2l0eSk7
CiAKICAgICByZXR1cm4gcmVzdWx0OwpAQCAtOTgsNyArOTgsNyBAQCBpbmxpbmUgQnV0dGVyZmx5
KiBCdXR0ZXJmbHk6OmNyZWF0ZVVuaW5pCiBpbmxpbmUgQnV0dGVyZmx5KiBCdXR0ZXJmbHk6OnRy
eUNyZWF0ZShWTSYgdm0sIEpTT2JqZWN0Kiwgc2l6ZV90IHByZUNhcGFjaXR5LCBzaXplX3QgcHJv
cGVydHlDYXBhY2l0eSwgYm9vbCBoYXNJbmRleGluZ0hlYWRlciwgY29uc3QgSW5kZXhpbmdIZWFk
ZXImIGluZGV4aW5nSGVhZGVyLCBzaXplX3QgaW5kZXhpbmdQYXlsb2FkU2l6ZUluQnl0ZXMpCiB7
CiAgICAgc2l6ZV90IHNpemUgPSB0b3RhbFNpemUocHJlQ2FwYWNpdHksIHByb3BlcnR5Q2FwYWNp
dHksIGhhc0luZGV4aW5nSGVhZGVyLCBpbmRleGluZ1BheWxvYWRTaXplSW5CeXRlcyk7Ci0gICAg
dm9pZCogYmFzZSA9IHZtLmpzVmFsdWVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlLmFsbG9jYXRlTm9u
VmlydHVhbCh2bSwgc2l6ZSwgbnVsbHB0ciwgQWxsb2NhdGlvbkZhaWx1cmVNb2RlOjpSZXR1cm5O
dWxsKTsKKyAgICB2b2lkKiBiYXNlID0gdm0uanNWYWx1ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2Uo
KS5hbGxvY2F0ZU5vblZpcnR1YWwodm0sIHNpemUsIG51bGxwdHIsIEFsbG9jYXRpb25GYWlsdXJl
TW9kZTo6UmV0dXJuTnVsbCk7CiAgICAgaWYgKCFiYXNlKQogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKICAgICBCdXR0ZXJmbHkqIHJlc3VsdCA9IGZyb21CYXNlKGJhc2UsIHByZUNhcGFjaXR5LCBw
cm9wZXJ0eUNhcGFjaXR5KTsKQEAgLTE3NCw3ICsxNzQsNyBAQCBpbmxpbmUgQnV0dGVyZmx5KiBC
dXR0ZXJmbHk6Omdyb3dBcnJheVJpCiAgICAgdm9pZCogdGhlQmFzZSA9IGJhc2UoMCwgcHJvcGVy
dHlDYXBhY2l0eSk7CiAgICAgc2l6ZV90IG9sZFNpemUgPSB0b3RhbFNpemUoMCwgcHJvcGVydHlD
YXBhY2l0eSwgaGFkSW5kZXhpbmdIZWFkZXIsIG9sZEluZGV4aW5nUGF5bG9hZFNpemVJbkJ5dGVz
KTsKICAgICBzaXplX3QgbmV3U2l6ZSA9IHRvdGFsU2l6ZSgwLCBwcm9wZXJ0eUNhcGFjaXR5LCB0
cnVlLCBuZXdJbmRleGluZ1BheWxvYWRTaXplSW5CeXRlcyk7Ci0gICAgdm9pZCogbmV3QmFzZSA9
IHZtLmpzVmFsdWVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlLmFsbG9jYXRlTm9uVmlydHVhbCh2bSwg
bmV3U2l6ZSwgbnVsbHB0ciwgQWxsb2NhdGlvbkZhaWx1cmVNb2RlOjpSZXR1cm5OdWxsKTsKKyAg
ICB2b2lkKiBuZXdCYXNlID0gdm0uanNWYWx1ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UoKS5hbGxv
Y2F0ZU5vblZpcnR1YWwodm0sIG5ld1NpemUsIG51bGxwdHIsIEFsbG9jYXRpb25GYWlsdXJlTW9k
ZTo6UmV0dXJuTnVsbCk7CiAgICAgaWYgKCFuZXdCYXNlKQogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKICAgICAvLyBGSVhNRTogVGhpcyBwcm9iYWJseSBzaG91bGRuJ3QgYmUgYSBtZW1jcHkuCkBA
IC0yMTEsMTMgKzIxMSwxMyBAQCBpbmxpbmUgQnV0dGVyZmx5KiBCdXR0ZXJmbHk6OnJlYWxsb2NB
cnJhCiAgICAgLy8gT2JqZWN0cyB3aXRoIG5vIHByb3BlcnRpZXMgYXJlIGNvbW1vbiBpbiBhcnJh
eXMsIGFuZCB3ZSBhcmUgZm9jdXNpbmcgb24gdmVyeSBsYXJnZSBhcnJheSBjcmFmdGVkIGJ5IHJl
cGVhdGluZyBBcnJheSNwdXNoLCBzby4uLiB0aGF0J3MgZmluZSEKICAgICBib29sIGNhblJlYWxs
b2MgPSAhcHJvcGVydHlDYXBhY2l0eSAmJiAhdm0uaGVhcC5tdXRhdG9yU2hvdWxkQmVGZW5jZWQo
KSAmJiBiaXR3aXNlX2Nhc3Q8SGVhcENlbGwqPih0aGVCYXNlKS0+aXNQcmVjaXNlQWxsb2NhdGlv
bigpOwogICAgIGlmIChjYW5SZWFsbG9jKSB7Ci0gICAgICAgIHZvaWQqIG5ld0Jhc2UgPSB2bS5q
c1ZhbHVlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZS5yZWFsbG9jYXRlUHJlY2lzZUFsbG9jYXRpb25O
b25WaXJ0dWFsKHZtLCBiaXR3aXNlX2Nhc3Q8SGVhcENlbGwqPih0aGVCYXNlKSwgbmV3U2l6ZSwg
JmRlZmVycmFsQ29udGV4dCwgQWxsb2NhdGlvbkZhaWx1cmVNb2RlOjpSZXR1cm5OdWxsKTsKKyAg
ICAgICAgdm9pZCogbmV3QmFzZSA9IHZtLmpzVmFsdWVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlKCku
cmVhbGxvY2F0ZVByZWNpc2VBbGxvY2F0aW9uTm9uVmlydHVhbCh2bSwgYml0d2lzZV9jYXN0PEhl
YXBDZWxsKj4odGhlQmFzZSksIG5ld1NpemUsICZkZWZlcnJhbENvbnRleHQsIEFsbG9jYXRpb25G
YWlsdXJlTW9kZTo6UmV0dXJuTnVsbCk7CiAgICAgICAgIGlmICghbmV3QmFzZSkKICAgICAgICAg
ICAgIHJldHVybiBudWxscHRyOwogICAgICAgICByZXR1cm4gZnJvbUJhc2UobmV3QmFzZSwgMCwg
cHJvcGVydHlDYXBhY2l0eSk7CiAgICAgfQogCi0gICAgdm9pZCogbmV3QmFzZSA9IHZtLmpzVmFs
dWVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlLmFsbG9jYXRlTm9uVmlydHVhbCh2bSwgbmV3U2l6ZSwg
JmRlZmVycmFsQ29udGV4dCwgQWxsb2NhdGlvbkZhaWx1cmVNb2RlOjpSZXR1cm5OdWxsKTsKKyAg
ICB2b2lkKiBuZXdCYXNlID0gdm0uanNWYWx1ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UoKS5hbGxv
Y2F0ZU5vblZpcnR1YWwodm0sIG5ld1NpemUsICZkZWZlcnJhbENvbnRleHQsIEFsbG9jYXRpb25G
YWlsdXJlTW9kZTo6UmV0dXJuTnVsbCk7CiAgICAgaWYgKCFuZXdCYXNlKQogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKICAgICBnY1NhZmVNZW1jcHkoc3RhdGljX2Nhc3Q8SlNWYWx1ZSo+KG5ld0Jh
c2UpLCBzdGF0aWNfY2FzdDxKU1ZhbHVlKj4odGhlQmFzZSksIG9sZFNpemUpOwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2xvbmVkQXJndW1lbnRzLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2xvbmVkQXJndW1lbnRzLmgJKHJldmlz
aW9uIDI4NjAxMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nsb25lZEFyZ3Vt
ZW50cy5oCSh3b3JraW5nIGNvcHkpCkBAIC00Niw3ICs0Niw3IEBAIHB1YmxpYzoKICAgICBzdGF0
aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAgIHN0YXRp
Y19hc3NlcnQoIUNlbGxUeXBlOjpuZWVkc0Rlc3RydWN0aW9uLCAiIik7Ci0gICAgICAgIHJldHVy
biAmdm0uY2xvbmVkQXJndW1lbnRzU3BhY2U7CisgICAgICAgIHJldHVybiAmdm0uY2xvbmVkQXJn
dW1lbnRzU3BhY2UoKTsKICAgICB9CiAgICAgCiBwcml2YXRlOgpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQ29uc29sZU9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbnNvbGVPYmplY3QuaAkocmV2aXNpb24gMjg2MDExKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29uc29sZU9iamVjdC5oCSh3b3JraW5n
IGNvcHkpCkBAIC0zNyw3ICszNyw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2Uq
IHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NV
QlNQQUNFX1NIQVJBQkxFKENvbnNvbGVPYmplY3QsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZt
LnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgp
OwogICAgIH0KIAogICAgIHN0YXRpYyBDb25zb2xlT2JqZWN0KiBjcmVhdGUoVk0mIHZtLCBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0N1c3RvbUdldHRlclNldHRlci5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0N1c3RvbUdldHRlclNldHRlci5o
CShyZXZpc2lvbiAyODYwMTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DdXN0
b21HZXR0ZXJTZXR0ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNDMsNyArNDMsNyBAQCBwdWJsaWM6
CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNzPgogICAgIHN0
YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKLSAgICAgICAgcmV0
dXJuICZ2bS5jdXN0b21HZXR0ZXJTZXR0ZXJTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5jdXN0
b21HZXR0ZXJTZXR0ZXJTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBDdXN0b21HZXR0ZXJT
ZXR0ZXIqIGNyZWF0ZShWTSYgdm0sIEN1c3RvbUdldHRlciBjdXN0b21HZXR0ZXIsIEN1c3RvbVNl
dHRlciBjdXN0b21TZXR0ZXIpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9E
T01BdHRyaWJ1dGVHZXR0ZXJTZXR0ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9ET01BdHRyaWJ1dGVHZXR0ZXJTZXR0ZXIuaAkocmV2aXNpb24gMjg2MDEx
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRE9NQXR0cmlidXRlR2V0dGVyU2V0
dGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTQzLDcgKzQzLDcgQEAgcHVibGljOgogICAgIHRlbXBs
YXRlPHR5cGVuYW1lIENlbGxUeXBlLCBTdWJzcGFjZUFjY2Vzcz4KICAgICBzdGF0aWMgSXNvU3Vi
c3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7Ci0gICAgICAgIHJldHVybiAmdm0uZG9t
QXR0cmlidXRlR2V0dGVyU2V0dGVyU3BhY2U7CisgICAgICAgIHJldHVybiAmdm0uZG9tQXR0cmli
dXRlR2V0dGVyU2V0dGVyU3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgRE9NQXR0cmlidXRl
R2V0dGVyU2V0dGVyKiBjcmVhdGUoVk0mIHZtLCBDdXN0b21HZXR0ZXIgY3VzdG9tR2V0dGVyLCBD
dXN0b21TZXR0ZXIgY3VzdG9tU2V0dGVyLCBET01BdHRyaWJ1dGVBbm5vdGF0aW9uIGRvbUF0dHJp
YnV0ZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVJbnN0YW5jZS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVJbnN0YW5j
ZS5oCShyZXZpc2lvbiAyODYwMTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9E
YXRlSW5zdGFuY2UuaAkod29ya2luZyBjb3B5KQpAQCAtMzcsNyArMzcsNyBAQCBwdWJsaWM6CiAg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNzIG1vZGU+CiAgICAg
c3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewotICAgICAgICBy
ZXR1cm4gJnZtLmRhdGVJbnN0YW5jZVNwYWNlOworICAgICAgICByZXR1cm4gJnZtLmRhdGVJbnN0
YW5jZVNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIERhdGVJbnN0YW5jZSogY3JlYXRlKFZN
JiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGRvdWJsZSBkYXRlKQpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZVByb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVQcm90b3R5cGUuaAkocmV2aXNpb24gMjg2MDEx
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZVByb3RvdHlwZS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zNSw3ICszNSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vic3Bh
Y2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNP
X1NVQlNQQUNFX1NIQVJBQkxFKERhdGVQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4g
JnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFj
ZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBEYXRlUHJvdG90eXBlKiBjcmVhdGUoVk0mIHZtLCBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RpcmVjdEFyZ3VtZW50cy5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RpcmVjdEFyZ3VtZW50cy5oCShy
ZXZpc2lvbiAyODYwMTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EaXJlY3RB
cmd1bWVudHMuaAkod29ya2luZyBjb3B5KQpAQCAtNTAsNyArNTAsNyBAQCBwdWJsaWM6CiAgICAg
c3RhdGljIENvbXBsZXRlU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAg
ICAgIHN0YXRpY19hc3NlcnQoIUNlbGxUeXBlOjpuZWVkc0Rlc3RydWN0aW9uLCAiIik7Ci0gICAg
ICAgIHJldHVybiAmdm0udmFyaWFibGVTaXplZENlbGxTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2
bS52YXJpYWJsZVNpemVkQ2VsbFNwYWNlKCk7CiAgICAgfQogCiAgICAgLy8gQ3JlYXRlcyBhbiBh
cmd1bWVudHMgb2JqZWN0IGJ1dCBsZWF2ZXMgaXQgdW5pbml0aWFsaXplZC4gVGhpcyBpcyBkYW5n
ZXJvdXMgaWYgd2UgR0MgcmlnaHQKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0Vycm9yUHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvRXJyb3JQcm90b3R5cGUuaAkocmV2aXNpb24gMjg2MDExKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JQcm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtNDUs
NyArNDUsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihW
TSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJM
RShFcnJvclByb3RvdHlwZUJhc2UsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2Jq
ZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0K
IAogICAgIERFQ0xBUkVfSU5GTzsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0V4Y2VwdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0V4Y2VwdGlvbi5oCShyZXZpc2lvbiAyODYwMTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9FeGNlcHRpb24uaAkod29ya2luZyBjb3B5KQpAQCAtNDAsNyArNDAsNyBAQCBwdWJs
aWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNzIG1vZGU+
CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewotICAg
ICAgICByZXR1cm4gJnZtLmV4Y2VwdGlvblNwYWNlOworICAgICAgICByZXR1cm4gJnZtLmV4Y2Vw
dGlvblNwYWNlKCk7CiAgICAgfQogCiAgICAgZW51bSBTdGFja0NhcHR1cmVBY3Rpb24gewpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRmluYWxpemF0aW9uUmVnaXN0cnlQcm90
b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GaW5h
bGl6YXRpb25SZWdpc3RyeVByb3RvdHlwZS5oCShyZXZpc2lvbiAyODYwMTEpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9GaW5hbGl6YXRpb25SZWdpc3RyeVByb3RvdHlwZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC0zNyw3ICszNyw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vi
c3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRf
SVNPX1NVQlNQQUNFX1NIQVJBQkxFKEZpbmFsaXphdGlvblJlZ2lzdHJ5UHJvdG90eXBlLCBCYXNl
KTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4g
JnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgRmluYWxpemF0aW9u
UmVnaXN0cnlQcm90b3R5cGUqIGNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvRnVuY3Rpb25FeGVjdXRhYmxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25FeGVjdXRhYmxlLmgJKHJldmlzaW9uIDI4NjAxMSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uRXhlY3V0YWJsZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC00Niw3ICs0Niw3IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBDZWxsVHlwZSwgU3Vic3BhY2VBY2Nlc3M+CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBz
dWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewotICAgICAgICByZXR1cm4gJnZtLmZ1bmN0aW9uRXhl
Y3V0YWJsZVNwYWNlLnNwYWNlOworICAgICAgICByZXR1cm4gJnZtLmZ1bmN0aW9uRXhlY3V0YWJs
ZVNwYWNlKCkuc3BhY2U7CiAgICAgfQogCiAgICAgc3RhdGljIEZ1bmN0aW9uRXhlY3V0YWJsZSog
Y3JlYXRlKFZNJiB2bSwgU2NyaXB0RXhlY3V0YWJsZSogdG9wTGV2ZWxFeGVjdXRhYmxlLCBjb25z
dCBTb3VyY2VDb2RlJiBzb3VyY2UsIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiB1bmxpbmtl
ZEV4ZWN1dGFibGUsIEludHJpbnNpYyBpbnRyaW5zaWMsIGJvb2wgaXNJbnNpZGVPcmRpbmFyeUZ1
bmN0aW9uKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yRnVu
Y3Rpb25Qcm90b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9HZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5oCShyZXZpc2lvbiAyODYwMTEpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC00MCw3ICs0MCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNv
U3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NF
UlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLCBCYXNl
KTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4g
JnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgR2VuZXJhdG9yRnVu
Y3Rpb25Qcm90b3R5cGUqIGNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yUHJvdG90eXBlLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yUHJvdG90
eXBlLmgJKHJldmlzaW9uIDI4NjAxMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0dlbmVyYXRvclByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00MSw3ICs0MSw3IEBAIHB1
YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7
CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEdlbmVyYXRvclBy
b3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAg
ICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGlj
IEdlbmVyYXRvclByb3RvdHlwZSogY3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dl
dHRlclNldHRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0dldHRlclNldHRlci5oCShyZXZpc2lvbiAyODYwMTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9HZXR0ZXJTZXR0ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNTksNyArNTksNyBA
QCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNz
PgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKLSAg
ICAgICAgcmV0dXJuICZ2bS5nZXR0ZXJTZXR0ZXJTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5n
ZXR0ZXJTZXR0ZXJTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBHZXR0ZXJTZXR0ZXIqIGNy
ZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTT2JqZWN0KiBnZXR0
ZXIsIEpTT2JqZWN0KiBzZXR0ZXIpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9IYXNoTWFwSW1wbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0hhc2hNYXBJbXBsLmgJKHJldmlzaW9uIDI4NjAxMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0hhc2hNYXBJbXBsLmgJKHdvcmtpbmcgY29weSkKQEAgLTIxMyw3ICsyMTMs
NyBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CiAgICAgICAgIHNpemVfdCBhbGxvY2F0aW9uU2l6ZSA9IEhhc2hNYXBCdWZmZXI6
OmFsbG9jYXRpb25TaXplKGNhcGFjaXR5KTsKLSAgICAgICAgdm9pZCogZGF0YSA9IHZtLmpzVmFs
dWVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlLmFsbG9jYXRlTm9uVmlydHVhbCh2bSwgYWxsb2NhdGlv
blNpemUsIG51bGxwdHIsIEFsbG9jYXRpb25GYWlsdXJlTW9kZTo6UmV0dXJuTnVsbCk7CisgICAg
ICAgIHZvaWQqIGRhdGEgPSB2bS5qc1ZhbHVlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZSgpLmFsbG9j
YXRlTm9uVmlydHVhbCh2bSwgYWxsb2NhdGlvblNpemUsIG51bGxwdHIsIEFsbG9jYXRpb25GYWls
dXJlTW9kZTo6UmV0dXJuTnVsbCk7CiAgICAgICAgIGlmICghZGF0YSkgewogICAgICAgICAgICAg
dGhyb3dPdXRPZk1lbW9yeUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUpOwogICAgICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRl
cm5hbEZ1bmN0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSW50ZXJuYWxGdW5jdGlvbi5oCShyZXZpc2lvbiAyODYwMTEpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9JbnRlcm5hbEZ1bmN0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTQx
LDcgKzQxLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3Io
Vk0mIHZtKQogICAgIHsKICAgICAgICAgc3RhdGljX2Fzc2VydChzaXplb2YoQ2VsbFR5cGUpID09
IHNpemVvZihJbnRlcm5hbEZ1bmN0aW9uKSwgIkludGVybmFsRnVuY3Rpb24gc3ViY2xhc3NlcyB0
aGF0IGFkZCBmaWVsZHMgbmVlZCB0byBvdmVycmlkZSBzdWJzcGFjZUZvcjw+KCkiKTsKLSAgICAg
ICAgcmV0dXJuICZ2bS5pbnRlcm5hbEZ1bmN0aW9uU3BhY2U7CisgICAgICAgIHJldHVybiAmdm0u
aW50ZXJuYWxGdW5jdGlvblNwYWNlKCk7CiAgICAgfQogCiAgICAgREVDTEFSRV9FWFBPUlRfSU5G
TzsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxDb2xsYXRvclByb3Rv
dHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxD
b2xsYXRvclByb3RvdHlwZS5oCShyZXZpc2lvbiAyODYwMTEpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9JbnRsQ29sbGF0b3JQcm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAt
MSw2ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQW5keSBWYW5XYWdvbmVyIChh
bmR5QHZhbndhZ29uZXIuZmFtaWx5KQotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxOS0yMDIxIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpA
QCAtMzksNyArMzksNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFj
ZUZvcihWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9T
SEFSQUJMRShJbnRsQ29sbGF0b3JQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZt
LnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgp
OwogICAgIH0KIAogICAgIHN0YXRpYyBJbnRsQ29sbGF0b3JQcm90b3R5cGUqIGNyZWF0ZShWTSYs
IEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUu
aAkocmV2aXNpb24gMjg2MDExKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50
bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw2IEBA
CiAvKgogICogQ29weXJpZ2h0IChDKSAyMDE1IEFuZHkgVmFuV2Fnb25lciAoYW5keUB2YW53YWdv
bmVyLmZhbWlseSkKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTktMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM5LDcgKzM5
LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZt
KQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSW50
bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFp
bk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAg
ICB9CiAKICAgICBzdGF0aWMgSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlKiBjcmVhdGUoVk0m
LCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSopOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSW50bERpc3BsYXlOYW1lc1Byb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEaXNwbGF5TmFtZXNQcm90b3R5cGUuaAko
cmV2aXNpb24gMjg2MDExKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERp
c3BsYXlOYW1lc1Byb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoK
LSAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMjAtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM4LDcgKzM4LDcgQEAgcHVibGlj
OgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAg
ICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSW50bERpc3BsYXlOYW1l
c1Byb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsK
KyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAgc3Rh
dGljIEludGxEaXNwbGF5TmFtZXNQcm90b3R5cGUqIGNyZWF0ZShWTSYsIFN0cnVjdHVyZSopOwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bExpc3RGb3JtYXRQcm90b3R5
cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTGlz
dEZvcm1hdFByb3RvdHlwZS5oCShyZXZpc2lvbiAyODYwMTEpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9JbnRsTGlzdEZvcm1hdFByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAtMjAyMSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM4
LDcgKzM4LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3Io
Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFC
TEUoSW50bExpc3RGb3JtYXRQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBs
YWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwog
ICAgIH0KIAogICAgIHN0YXRpYyBJbnRsTGlzdEZvcm1hdFByb3RvdHlwZSogY3JlYXRlKFZNJiwg
U3RydWN0dXJlKik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTG9j
YWxlUHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSW50bExvY2FsZVByb3RvdHlwZS5oCShyZXZpc2lvbiAyODYwMTEpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTG9jYWxlUHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkK
QEAgLTEsNSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDIwIFNvbnkgSW50ZXJhY3Rp
dmUgRW50ZXJ0YWlubWVudCBJbmMuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0z
OCw3ICszOSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9y
KFZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJB
QkxFKEludGxMb2NhbGVQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWlu
T2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAg
IH0KIAogICAgIHN0YXRpYyBJbnRsTG9jYWxlUHJvdG90eXBlKiBjcmVhdGUoVk0mLCBTdHJ1Y3R1
cmUqKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3Jt
YXRQcm90b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9JbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlLmgJKHJldmlzaW9uIDI4NjAxMSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUuaAkod29y
a2luZyBjb3B5KQpAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQW5k
eSBWYW5XYWdvbmVyIChhbmR5QHZhbndhZ29uZXIuZmFtaWx5KQotICogQ29weXJpZ2h0IChDKSAy
MDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAx
OS0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpAQCAtMzksNyArMzksNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIElzb1N1
YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJU
X0lTT19TVUJTUEFDRV9TSEFSQUJMRShJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlLCBCYXNlKTsK
LSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZt
LnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgSW50bE51bWJlckZvcm1h
dFByb3RvdHlwZSogY3JlYXRlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqKTsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxPYmplY3QuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsT2JqZWN0LmgJKHJldmlzaW9u
IDI4NjAxMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxPYmplY3QuaAko
d29ya2luZyBjb3B5KQpAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTUg
QW5keSBWYW5XYWdvbmVyIChhbmR5QHZhbndhZ29uZXIuZmFtaWx5KQotICogQ29weXJpZ2h0IChD
KSAyMDE5LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDE5LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJp
Z2h0IChDKSAyMDIwIFNvbnkgSW50ZXJhY3RpdmUgRW50ZXJ0YWlubWVudCBJbmMuCiAgKgogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CkBAIC03Niw3ICs3Niw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vic3Bh
Y2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNP
X1NVQlNQQUNFX1NIQVJBQkxFKEludGxPYmplY3QsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZt
LnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgp
OwogICAgIH0KIAogICAgIHN0YXRpYyBJbnRsT2JqZWN0KiBjcmVhdGUoVk0mLCBKU0dsb2JhbE9i
amVjdCosIFN0cnVjdHVyZSopOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SW50bFBsdXJhbFJ1bGVzUHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSW50bFBsdXJhbFJ1bGVzUHJvdG90eXBlLmgJKHJldmlzaW9uIDI4NjAx
MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxQbHVyYWxSdWxlc1Byb3Rv
dHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAo
QykgMjAxOCBBbmR5IFZhbldhZ29uZXIgKGFuZHlAdmFud2Fnb25lci5mYW1pbHkpCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDE5LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zOSw3ICszOSw3IEBAIHB1YmxpYzoKICAgICBz
dGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAgIFNU
QVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEludGxQbHVyYWxSdWxlc1Byb3RvdHlw
ZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAg
cmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIEludGxQ
bHVyYWxSdWxlc1Byb3RvdHlwZSogY3JlYXRlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1
cmUqKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxSZWxhdGl2ZVRp
bWVGb3JtYXRQcm90b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9JbnRsUmVsYXRpdmVUaW1lRm9ybWF0UHJvdG90eXBlLmgJKHJldmlzaW9uIDI4NjAx
MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxSZWxhdGl2ZVRpbWVGb3Jt
YXRQcm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5
cmlnaHQgKEMpIDIwMjAgU29ueSBJbnRlcmFjdGl2ZSBFbnRlcnRhaW5tZW50IEluYy4KKyAqIENv
cHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM4LDcgKzM5LDcgQEAgcHVibGljOgogICAgIHN0
YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAgICAgU1RB
VElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSW50bFJlbGF0aXZlVGltZUZvcm1hdFBy
b3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAg
ICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGlj
IEludGxSZWxhdGl2ZVRpbWVGb3JtYXRQcm90b3R5cGUqIGNyZWF0ZShWTSYsIFN0cnVjdHVyZSop
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFNlZ21lbnRJdGVyYXRv
clByb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0ludGxTZWdtZW50SXRlcmF0b3JQcm90b3R5cGUuaAkocmV2aXNpb24gMjg2MDExKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFNlZ21lbnRJdGVyYXRvclByb3RvdHlwZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAy
MCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAt
MjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTM4LDcgKzM4LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJc29TdWJz
cGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9J
U09fU1VCU1BBQ0VfU0hBUkFCTEUoSW50bFNlZ21lbnRJdGVyYXRvclByb3RvdHlwZSwgQmFzZSk7
Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2
bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIEludGxTZWdtZW50SXRl
cmF0b3JQcm90b3R5cGUqIGNyZWF0ZShWTSYsIFN0cnVjdHVyZSopOwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFNlZ21lbnRlclByb3RvdHlwZS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxTZWdtZW50ZXJQcm90b3R5cGUu
aAkocmV2aXNpb24gMjg2MDExKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50
bFNlZ21lbnRlclByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoK
LSAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMjAtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM4LDcgKzM4LDcgQEAgcHVibGlj
OgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAg
ICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSW50bFNlZ21lbnRlclBy
b3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAg
ICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGlj
IEludGxTZWdtZW50ZXJQcm90b3R5cGUqIGNyZWF0ZShWTSYsIFN0cnVjdHVyZSopOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFNlZ21lbnRzUHJvdG90eXBlLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFNlZ21lbnRzUHJv
dG90eXBlLmgJKHJldmlzaW9uIDI4NjAxMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0ludGxTZWdtZW50c1Byb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBA
QAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM4LDcgKzM4LDcgQEAg
cHVibGljOgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAg
IHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSW50bFNlZ21l
bnRzUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNl
OworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBz
dGF0aWMgSW50bFNlZ21lbnRzUHJvdG90eXBlKiBjcmVhdGUoVk0mLCBKU0dsb2JhbE9iamVjdCos
IFN0cnVjdHVyZSopOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSXRlcmF0
b3JQcm90b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9JdGVyYXRvclByb3RvdHlwZS5oCShyZXZpc2lvbiAyODYwMTEpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9JdGVyYXRvclByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0z
OSw3ICszOSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9y
KFZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJB
QkxFKEl0ZXJhdG9yUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9i
amVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9
CiAKICAgICBzdGF0aWMgSXRlcmF0b3JQcm90b3R5cGUqIGNyZWF0ZShWTSYgdm0sIEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlKQpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5jcHAJKHJldmlzaW9uIDI4NjAxMSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC01Niw3ICs1Niw3IEBAIEpTQXJyYXkqIEpTQXJyYXk6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6
ZWQKICAgICAgICAgICAgIHx8IGhhc0NvbnRpZ3VvdXMoaW5kZXhpbmdUeXBlKSk7CiAKICAgICAg
ICAgdW5zaWduZWQgdmVjdG9yTGVuZ3RoID0gQnV0dGVyZmx5OjpvcHRpbWFsQ29udGlndW91c1Zl
Y3Rvckxlbmd0aChzdHJ1Y3R1cmUsIGluaXRpYWxMZW5ndGgpOwotICAgICAgICB2b2lkKiB0ZW1w
ID0gdm0uanNWYWx1ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UuYWxsb2NhdGVOb25WaXJ0dWFsKAor
ICAgICAgICB2b2lkKiB0ZW1wID0gdm0uanNWYWx1ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UoKS5h
bGxvY2F0ZU5vblZpcnR1YWwoCiAgICAgICAgICAgICB2bSwKICAgICAgICAgICAgIEJ1dHRlcmZs
eTo6dG90YWxTaXplKDAsIG91dE9mTGluZVN0b3JhZ2UsIHRydWUsIHZlY3Rvckxlbmd0aCAqIHNp
emVvZihFbmNvZGVkSlNWYWx1ZSkpLAogICAgICAgICAgICAgZGVmZXJyYWxDb250ZXh0LCBBbGxv
Y2F0aW9uRmFpbHVyZU1vZGU6OlJldHVybk51bGwpOwpAQCAtNzgsNyArNzgsNyBAQCBKU0FycmF5
KiBKU0FycmF5Ojp0cnlDcmVhdGVVbmluaXRpYWxpemVkCiAgICAgICAgICAgICB8fCBpbmRleGlu
Z1R5cGUgPT0gQXJyYXlXaXRoQXJyYXlTdG9yYWdlKTsKICAgICAgICAgc3RhdGljIGNvbnN0ZXhw
ciB1bnNpZ25lZCBpbmRleEJpYXMgPSAwOwogICAgICAgICB1bnNpZ25lZCB2ZWN0b3JMZW5ndGgg
PSBBcnJheVN0b3JhZ2U6Om9wdGltYWxWZWN0b3JMZW5ndGgoaW5kZXhCaWFzLCBzdHJ1Y3R1cmUs
IGluaXRpYWxMZW5ndGgpOwotICAgICAgICB2b2lkKiB0ZW1wID0gdm0uanNWYWx1ZUdpZ2FjYWdl
QXV4aWxpYXJ5U3BhY2UuYWxsb2NhdGVOb25WaXJ0dWFsKAorICAgICAgICB2b2lkKiB0ZW1wID0g
dm0uanNWYWx1ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UoKS5hbGxvY2F0ZU5vblZpcnR1YWwoCiAg
ICAgICAgICAgICB2bSwKICAgICAgICAgICAgIEJ1dHRlcmZseTo6dG90YWxTaXplKGluZGV4Qmlh
cywgb3V0T2ZMaW5lU3RvcmFnZSwgdHJ1ZSwgQXJyYXlTdG9yYWdlOjpzaXplRm9yKHZlY3Rvckxl
bmd0aCkpLAogICAgICAgICAgICAgZGVmZXJyYWxDb250ZXh0LCBBbGxvY2F0aW9uRmFpbHVyZU1v
ZGU6OlJldHVybk51bGwpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNB
cnJheS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJy
YXkuaAkocmV2aXNpb24gMjg2MDExKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNBcnJheS5oCSh3b3JraW5nIGNvcHkpCkBAIC01MSw3ICs1MSw3IEBAIHB1YmxpYzoKICAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vic3BhY2VBY2Nlc3M+CiAgICAgc3RhdGljIElz
b1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewotICAgICAgICByZXR1cm4gJnZt
LmFycmF5U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0uYXJyYXlTcGFjZSgpOwogICAgIH0KICAg
ICAgICAgCiBwcm90ZWN0ZWQ6CkBAIC0yNDQsNyArMjQ0LDcgQEAgaW5saW5lIEpTQXJyYXkqIEpT
QXJyYXk6OnRyeUNyZWF0ZShWTSYgdgogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAg
ICAgICAgdW5zaWduZWQgdmVjdG9yTGVuZ3RoID0gQnV0dGVyZmx5OjpvcHRpbWFsQ29udGlndW91
c1ZlY3Rvckxlbmd0aChzdHJ1Y3R1cmUsIHZlY3Rvckxlbmd0aEhpbnQpOwotICAgICAgICB2b2lk
KiB0ZW1wID0gdm0uanNWYWx1ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UuYWxsb2NhdGVOb25WaXJ0
dWFsKAorICAgICAgICB2b2lkKiB0ZW1wID0gdm0uanNWYWx1ZUdpZ2FjYWdlQXV4aWxpYXJ5U3Bh
Y2UoKS5hbGxvY2F0ZU5vblZpcnR1YWwoCiAgICAgICAgICAgICB2bSwKICAgICAgICAgICAgIEJ1
dHRlcmZseTo6dG90YWxTaXplKDAsIG91dE9mTGluZVN0b3JhZ2UsIHRydWUsIHZlY3Rvckxlbmd0
aCAqIHNpemVvZihFbmNvZGVkSlNWYWx1ZSkpLAogICAgICAgICAgICAgbnVsbHB0ciwgQWxsb2Nh
dGlvbkZhaWx1cmVNb2RlOjpSZXR1cm5OdWxsKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJQcm90b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyUHJvdG90eXBlLmgJKHJldmlzaW9u
IDI4NjAxMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJQ
cm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTMsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDEzLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zNyw3ICszNyw3IEBAIHB1YmxpYzoKICAg
ICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAg
IFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTQXJyYXlCdWZmZXJQcm90b3R5
cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAg
IHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBKU0Fy
cmF5QnVmZmVyUHJvdG90eXBlKiBjcmVhdGUoVk0mLCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVy
ZSosIEFycmF5QnVmZmVyU2hhcmluZ01vZGUgPSBBcnJheUJ1ZmZlclNoYXJpbmdNb2RlOjpEZWZh
dWx0KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJW
aWV3LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Fy
cmF5QnVmZmVyVmlldy5jcHAJKHJldmlzaW9uIDI4NjAxMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjQs
NyArNjQsNyBAQCBKU0FycmF5QnVmZmVyVmlldzo6Q29uc3RydWN0aW9uQ29udGV4dDo6CiAgICAg
ICAgIC8vIEF0dGVtcHQgR0MgYWxsb2NhdGlvbi4KICAgICAgICAgdm9pZCogdGVtcDsKICAgICAg
ICAgc2l6ZV90IHNpemUgPSBzaXplT2YobGVuZ3RoLCBlbGVtZW50U2l6ZSk7Ci0gICAgICAgIHRl
bXAgPSB2bS5wcmltaXRpdmVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlLmFsbG9jYXRlTm9uVmlydHVh
bCh2bSwgc2l6ZSwgbnVsbHB0ciwgQWxsb2NhdGlvbkZhaWx1cmVNb2RlOjpSZXR1cm5OdWxsKTsK
KyAgICAgICAgdGVtcCA9IHZtLnByaW1pdGl2ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UoKS5hbGxv
Y2F0ZU5vblZpcnR1YWwodm0sIHNpemUsIG51bGxwdHIsIEFsbG9jYXRpb25GYWlsdXJlTW9kZTo6
UmV0dXJuTnVsbCk7CiAgICAgICAgIGlmICghdGVtcCkKICAgICAgICAgICAgIHJldHVybjsKIApJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCaWdJbnQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQmlnSW50LmNwcAkocmV2aXNp
b24gMjg2MDExKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCaWdJbnQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xMTcsNyArMTE3LDcgQEAgaW5saW5lIEpTQmlnSW50KiBKU0Jp
Z0ludDo6Y3JlYXRlV2l0aExlbgogICAgIH0KIAogICAgIEFTU0VSVChsZW5ndGggPD0gbWF4TGVu
Z3RoKTsKLSAgICB2b2lkKiBkYXRhID0gdm0ucHJpbWl0aXZlR2lnYWNhZ2VBdXhpbGlhcnlTcGFj
ZS5hbGxvY2F0ZU5vblZpcnR1YWwodm0sIGxlbmd0aCAqIHNpemVvZihEaWdpdCksIG51bGxwdHIs
IEFsbG9jYXRpb25GYWlsdXJlTW9kZTo6UmV0dXJuTnVsbCk7CisgICAgdm9pZCogZGF0YSA9IHZt
LnByaW1pdGl2ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UoKS5hbGxvY2F0ZU5vblZpcnR1YWwodm0s
IGxlbmd0aCAqIHNpemVvZihEaWdpdCksIG51bGxwdHIsIEFsbG9jYXRpb25GYWlsdXJlTW9kZTo6
UmV0dXJuTnVsbCk7CiAgICAgaWYgKFVOTElLRUxZKCFkYXRhKSkgewogICAgICAgICBpZiAobnVs
bE9yR2xvYmFsT2JqZWN0Rm9yT09NKSB7CiAgICAgICAgICAgICBhdXRvIHNjb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0JpZ0ludC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
QmlnSW50LmgJKHJldmlzaW9uIDI4NjAxMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQmlnSW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTU2LDcgKzU2LDcgQEAgcHVibGljOgog
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlLCBTdWJzcGFjZUFjY2Vzcz4KICAgICBzdGF0
aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7Ci0gICAgICAgIHJldHVy
biAmdm0uYmlnSW50U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0uYmlnSW50U3BhY2UoKTsKICAg
ICB9CiAKICAgICBlbnVtIGNsYXNzIEluaXRpYWxpemF0aW9uVHlwZSB7IE5vbmUsIFdpdGhaZXJv
IH07CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NhbGxlZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2FsbGVlLmgJKHJldmlz
aW9uIDI4NjAxMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2FsbGVlLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTUwLDcgKzUwLDcgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5
cGVuYW1lIENlbGxUeXBlLCBTdWJzcGFjZUFjY2Vzcz4KICAgICBzdGF0aWMgSXNvU3Vic3BhY2Uq
IHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7Ci0gICAgICAgIHJldHVybiAmdm0uY2FsbGVlU3Bh
Y2U7CisgICAgICAgIHJldHVybiAmdm0uY2FsbGVlU3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0
aWMgSlNDYWxsZWUqIGNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IEpTU2NvcGUqIHNjb3BlKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNE
YXRhVmlld1Byb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTRGF0YVZpZXdQcm90b3R5cGUuaAkocmV2aXNpb24gMjg2MDExKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRhVmlld1Byb3RvdHlwZS5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE5IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDIxIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwpAQCAtMzgsNyArMzgsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBz
dWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJT
UEFDRV9TSEFSQUJMRShKU0RhdGFWaWV3UHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJu
ICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3Bh
Y2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgSlNEYXRhVmlld1Byb3RvdHlwZSogY3JlYXRlKFZN
JiwgU3RydWN0dXJlKik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Rl
c3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuY3Bw
CShyZXZpc2lvbiAyODYwMTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Rl
c3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSAr
MSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE3LTIwMTggQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE3LTIwMjEgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00OCwx
MiArNDgsMTIgQEAgSlNEZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGU6On5KU0Rlcwogewog
fQogCi12b2lkIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlOjpmaW5pc2hTd2VlcChN
YXJrZWRCbG9jazo6SGFuZGxlJiBoYW5kbGUsIEZyZWVMaXN0KiBmcmVlTGlzdCkKK3ZvaWQgSlNE
ZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGU6OmZpbmlzaFN3ZWVwKE1hcmtlZEJsb2NrOjpI
YW5kbGUmIGhhbmRsZSwgRnJlZUxpc3QqIGZyZWVMaXN0KSBjb25zdAogewogICAgIGhhbmRsZS5m
aW5pc2hTd2VlcEtub3dpbmdIZWFwQ2VsbFR5cGUoZnJlZUxpc3QsIEpTRGVzdHJ1Y3RpYmxlT2Jq
ZWN0RGVzdHJveUZ1bmMoKSk7CiB9CiAKLXZvaWQgSlNEZXN0cnVjdGlibGVPYmplY3RIZWFwQ2Vs
bFR5cGU6OmRlc3Ryb3koVk0mIHZtLCBKU0NlbGwqIGNlbGwpCit2b2lkIEpTRGVzdHJ1Y3RpYmxl
T2JqZWN0SGVhcENlbGxUeXBlOjpkZXN0cm95KFZNJiB2bSwgSlNDZWxsKiBjZWxsKSBjb25zdAog
ewogICAgIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0RGVzdHJveUZ1bmMoKSh2bSwgY2VsbCk7CiB9Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Rlc3RydWN0aWJsZU9iamVjdEhl
YXBDZWxsVHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTRGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmgJKHJldmlzaW9uIDI4NjAxMSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENl
bGxUeXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAxNy0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzQsOCArMzQsOCBAQCBwdWJsaWM6CiAgICAgSlNfRVhQ
T1JUX1BSSVZBVEUgSlNEZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKTsKICAgICBKU19F
WFBPUlRfUFJJVkFURSB+SlNEZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSBmaW5hbDsK
ICAgICAKLSAgICB2b2lkIGZpbmlzaFN3ZWVwKE1hcmtlZEJsb2NrOjpIYW5kbGUmLCBGcmVlTGlz
dCopIGZpbmFsOwotICAgIHZvaWQgZGVzdHJveShWTSYsIEpTQ2VsbCopIGZpbmFsOworICAgIHZv
aWQgZmluaXNoU3dlZXAoTWFya2VkQmxvY2s6OkhhbmRsZSYsIEZyZWVMaXN0KikgY29uc3QgZmlu
YWw7CisgICAgdm9pZCBkZXN0cm95KFZNJiwgSlNDZWxsKikgY29uc3QgZmluYWw7CiB9OwogCiB9
IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
RnVuY3Rpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0Z1bmN0aW9uLmgJKHJldmlzaW9uIDI4NjAxMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTRnVuY3Rpb24uaAkod29ya2luZyBjb3B5KQpAQCAtNjYsNyArNjYsNyBAQCBwdWJs
aWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNzPgogICAg
IHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKLSAgICAgICAg
cmV0dXJuICZ2bS5mdW5jdGlvblNwYWNlOworICAgICAgICByZXR1cm4gJnZtLmZ1bmN0aW9uU3Bh
Y2UoKTsKICAgICB9CiAgICAgCiAgICAgdHlwZWRlZiBKU0NhbGxlZSBCYXNlOwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b3R5
cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVy
aWNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZS5oCShyZXZpc2lvbiAyODYwMTEpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
MyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMt
MjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTM4LDcgKzM4LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJc29TdWJz
cGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9J
U09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNHZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b3R5cGUsIEJh
c2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVy
biAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBKU0dlbmVyaWNU
eXBlZEFycmF5Vmlld1Byb3RvdHlwZSogY3JlYXRlKApJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNHbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbExleGljYWxFbnZpcm9ubWVudC5o
CShyZXZpc2lvbiAyODYwMTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ds
b2JhbExleGljYWxFbnZpcm9ubWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw3ICszOCw3IEBA
IHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vic3BhY2VBY2Nlc3Mg
bW9kZT4KICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7
Ci0gICAgICAgIHJldHVybiAmdm0uZ2xvYmFsTGV4aWNhbEVudmlyb25tZW50U3BhY2U7CisgICAg
ICAgIHJldHVybiAmdm0uZ2xvYmFsTGV4aWNhbEVudmlyb25tZW50U3BhY2UoKTsKICAgICB9CiAK
ICAgICBzdGF0aWMgSlNHbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQqIGNyZWF0ZShWTSYgdm0sIFN0
cnVjdHVyZSogc3RydWN0dXJlLCBKU1Njb3BlKiBwYXJlbnRTY29wZSkKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTSW1tdXRhYmxlQnV0dGVyZmx5LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNJbW11dGFibGVCdXR0ZXJmbHkuaAko
cmV2aXNpb24gMjg2MDExKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNJbW11
dGFibGVCdXR0ZXJmbHkuaAkod29ya2luZyBjb3B5KQpAQCAtMTUzLDcgKzE1Myw3IEBAIHB1Ymxp
YzoKICAgICBzdGF0aWMgQ29tcGxldGVTdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAg
IHsKICAgICAgICAgLy8gV2UgYWxsb2NhdGUgb3V0IG9mIHRoZSBKU1ZhbHVlIGdpZ2FjYWdlIGFz
IG90aGVyIGNvZGUgZXhwZWN0cyBhbGwgYnV0dGVyZmxpZXMgdG8gbGl2ZSB0aGVyZS4KLSAgICAg
ICAgcmV0dXJuICZ2bS5pbW11dGFibGVCdXR0ZXJmbHlKU1ZhbHVlR2lnYWNhZ2VBdXhpbGlhcnlT
cGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5pbW11dGFibGVCdXR0ZXJmbHlKU1ZhbHVlR2lnYWNh
Z2VBdXhpbGlhcnlTcGFjZSgpOwogICAgIH0KIAogICAgIC8vIE9ubHkgY2FsbCB0aGlzIGlmIHlv
dSBqdXN0IGFsbG9jYXRlZCB0aGlzIGJ1dHRlcmZseS4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTTGV4aWNhbEVudmlyb25tZW50LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNMZXhpY2FsRW52aXJvbm1lbnQuaAkocmV2aXNpb24g
Mjg2MDExKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNMZXhpY2FsRW52aXJv
bm1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNDQsNyArNDQsNyBAQCBwdWJsaWM6CiAgICAgc3Rh
dGljIENvbXBsZXRlU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAg
IHN0YXRpY19hc3NlcnQoIUNlbGxUeXBlOjpuZWVkc0Rlc3RydWN0aW9uLCAiIik7Ci0gICAgICAg
IHJldHVybiAmdm0udmFyaWFibGVTaXplZENlbGxTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS52
YXJpYWJsZVNpemVkQ2VsbFNwYWNlKCk7CiAgICAgfQogCiAgICAgdXNpbmcgQmFzZSA9IEpTU3lt
Ym9sVGFibGVPYmplY3Q7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01v
ZHVsZUxvYWRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTTW9kdWxlTG9hZGVyLmgJKHJldmlzaW9uIDI4NjAxMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTTW9kdWxlTG9hZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDcgKzQ0
LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZt
KQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNN
b2R1bGVMb2FkZXIsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7
CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIGVu
dW0gU3RhdHVzIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT05PYmpl
Y3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09OT2Jq
ZWN0LmgJKHJldmlzaW9uIDI4NjAxMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTT05PYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtMzgsNyArMzgsNyBAQCBwdWJsaWM6CiAg
ICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewogICAgICAg
ICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU09OT2JqZWN0LCBCYXNlKTsK
LSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZt
LnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgSlNPTk9iamVjdCogY3Jl
YXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU09iamVjdElubGluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdElubGluZXMuaAkocmV2aXNpb24gMjg2MDExKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3RJbmxpbmVzLmgJKHdvcmtp
bmcgY29weSkKQEAgLTQxLDcgKzQxLDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUsIFN1
YnNwYWNlQWNjZQogQ29tcGxldGVTdWJzcGFjZSogSlNGaW5hbE9iamVjdDo6c3Vic3BhY2VGb3Io
Vk0mIHZtKQogewogICAgIHN0YXRpY19hc3NlcnQoIUNlbGxUeXBlOjpuZWVkc0Rlc3RydWN0aW9u
KTsKLSAgICByZXR1cm4gJnZtLmNlbGxTcGFjZTsKKyAgICByZXR1cm4gJnZtLmNlbGxTcGFjZSgp
OwogfQogCiAvLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWNyZWF0ZWxpc3Rmcm9tYXJy
YXlsaWtlCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2UuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2UuaAko
cmV2aXNpb24gMjg2MDExKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9t
aXNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM3LDcgKzM3LDcgQEAgcHVibGljOgogICAgIHRlbXBs
YXRlPHR5cGVuYW1lIENlbGxUeXBlLCBTdWJzcGFjZUFjY2VzcyBtb2RlPgogICAgIHN0YXRpYyBJ
c29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKLSAgICAgICAgcmV0dXJuICZ2
bS5wcm9taXNlU3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucHJvbWlzZVNwYWNlKCk7CiAgICAg
fQogCiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIEpTUHJvbWlzZSogY3JlYXRlKFZNJiwg
U3RydWN0dXJlKik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21p
c2VQcm90b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU1Byb21pc2VQcm90b3R5cGUuaAkocmV2aXNpb24gMjg2MDExKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9taXNlUHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAg
LTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMTkgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMjEgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC0zOCw3ICszOCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNl
Rm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NI
QVJBQkxFKEpTUHJvbWlzZVByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxh
aW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAg
ICAgfQogCiAgICAgc3RhdGljIEpTUHJvbWlzZVByb3RvdHlwZSogY3JlYXRlKFZNJiwgSlNHbG9i
YWxPYmplY3QqLCBTdHJ1Y3R1cmUqKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTUHJvcGVydHlOYW1lRW51bWVyYXRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yLmNwcAkocmV2aXNp
b24gMjg2MDExKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5h
bWVFbnVtZXJhdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzgsNyArMzgsNyBAQCBKU1Byb3Bl
cnR5TmFtZUVudW1lcmF0b3IqIEpTUHJvcGVydHlOYW1lCiAgICAgdW5zaWduZWQgcHJvcGVydHlO
YW1lc0J1ZmZlclNpemVJbkJ5dGVzID0gQ2hlY2tlZDx1bnNpZ25lZD4ocHJvcGVydHlOYW1lc1Np
emUpICogc2l6ZW9mKFdyaXRlQmFycmllcjxKU1N0cmluZz4pOwogICAgIFdyaXRlQmFycmllcjxK
U1N0cmluZz4qIHByb3BlcnR5TmFtZXNCdWZmZXIgPSBudWxscHRyOwogICAgIGlmIChwcm9wZXJ0
eU5hbWVzQnVmZmVyU2l6ZUluQnl0ZXMpIHsKLSAgICAgICAgcHJvcGVydHlOYW1lc0J1ZmZlciA9
IHN0YXRpY19jYXN0PFdyaXRlQmFycmllcjxKU1N0cmluZz4qPih2bS5qc1ZhbHVlR2lnYWNhZ2VB
dXhpbGlhcnlTcGFjZS5hbGxvY2F0ZU5vblZpcnR1YWwodm0sIHByb3BlcnR5TmFtZXNCdWZmZXJT
aXplSW5CeXRlcywgbnVsbHB0ciwgQWxsb2NhdGlvbkZhaWx1cmVNb2RlOjpBc3NlcnQpKTsKKyAg
ICAgICAgcHJvcGVydHlOYW1lc0J1ZmZlciA9IHN0YXRpY19jYXN0PFdyaXRlQmFycmllcjxKU1N0
cmluZz4qPih2bS5qc1ZhbHVlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZSgpLmFsbG9jYXRlTm9uVmly
dHVhbCh2bSwgcHJvcGVydHlOYW1lc0J1ZmZlclNpemVJbkJ5dGVzLCBudWxscHRyLCBBbGxvY2F0
aW9uRmFpbHVyZU1vZGU6OkFzc2VydCkpOwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgcHJvcGVydHlOYW1lc1NpemU7ICsraSkKICAgICAgICAgICAgIHByb3BlcnR5TmFtZXNCdWZm
ZXJbaV0uY2xlYXIoKTsKICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU1Byb3BlcnR5TmFtZUVudW1lcmF0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUVudW1lcmF0b3IuaAkocmV2aXNpb24gMjg2
MDExKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVFbnVt
ZXJhdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTUxLDcgKzUxLDcgQEAgcHVibGljOgogICAgIHRl
bXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlLCBTdWJzcGFjZUFjY2VzcyBtb2RlPgogICAgIHN0YXRp
YyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKLSAgICAgICAgcmV0dXJu
ICZ2bS5wcm9wZXJ0eU5hbWVFbnVtZXJhdG9yU3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucHJv
cGVydHlOYW1lRW51bWVyYXRvclNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIEpTUHJvcGVy
dHlOYW1lRW51bWVyYXRvciogY3JlYXRlKFZNJiwgU3RydWN0dXJlKiwgdWludDMyX3QsIHVpbnQz
Ml90LCBQcm9wZXJ0eU5hbWVBcnJheSYmKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTUHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU1Byb3h5LmgJKHJldmlzaW9uIDI4NjAxMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTUHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAtMzgsNyArMzgsNyBAQCBwdWJs
aWM6CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewog
ICAgICAgICBzdGF0aWNfYXNzZXJ0KHNpemVvZihDZWxsVHlwZSkgPT0gc2l6ZW9mKEpTUHJveHkp
KTsKLSAgICAgICAgcmV0dXJuICZ2bS5qc1Byb3h5U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0u
anNQcm94eVNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIEpTUHJveHkqIGNyZWF0ZShWTSYg
dm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBKU09iamVjdCogdGFyZ2V0KQpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5oCShyZXZpc2lvbiAyODYwMTEpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xMTEsNyArMTExLDcgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lLCBTdWJzcGFj
ZUFjY2Vzcz4KICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAg
ICB7Ci0gICAgICAgIHJldHVybiAmdm0uc3RyaW5nU3BhY2U7CisgICAgICAgIHJldHVybiAmdm0u
c3RyaW5nU3BhY2UoKTsKICAgICB9CiAgICAgCiAgICAgLy8gV2UgZW1wbG95IG92ZXJmbG93IGNo
ZWNrcyBpbiBtYW55IHBsYWNlcyB3aXRoIHRoZSBhc3N1bXB0aW9uIHRoYXQgTWF4TGVuZ3RoCkBA
IC0yNzAsNyArMjcwLDcgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lLCBTdWJzcGFj
ZUFjY2Vzcz4KICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAg
ICB7Ci0gICAgICAgIHJldHVybiAmdm0ucm9wZVN0cmluZ1NwYWNlOworICAgICAgICByZXR1cm4g
JnZtLnJvcGVTdHJpbmdTcGFjZSgpOwogICAgIH0KIAogICAgIC8vIFdlIHVzZSBsb3dlciAzYml0
cyBvZiBmaWJlcjAgZm9yIGZsYWdzLiBUaGVzZSBiaXRzIGFyZSB1c2FibGUgZHVlIHRvIGFsaWdu
bWVudCwgYW5kIGl0IGlzIE9LIGV2ZW4gaW4gMzJiaXQgYXJjaGl0ZWN0dXJlLgpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZWRBcnJheVZp
ZXdQcm90b3R5cGUuaAkocmV2aXNpb24gMjg2MDExKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAyMSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM3LDcg
KzM3LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0m
IHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUo
SlNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxh
aW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAg
ICAgfQogCiAgICAgc3RhdGljIEpTVHlwZWRBcnJheVZpZXdQcm90b3R5cGUqIGNyZWF0ZShWTSYs
IEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9NYXBJdGVyYXRvclByb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL01hcEl0ZXJhdG9yUHJvdG90eXBlLmgJKHJldmlzaW9uIDI4
NjAxMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hcEl0ZXJhdG9yUHJvdG90
eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM3LDcgKzM3LDcgQEAgcHVibGljOgogICAgIHN0YXRp
YyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElD
X0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoTWFwSXRlcmF0b3JQcm90b3R5cGUsIEJhc2Up
OwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAm
dm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBNYXBJdGVyYXRvclBy
b3RvdHlwZSogY3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9N
YXBQcm90b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9NYXBQcm90b3R5cGUuaAkocmV2aXNpb24gMjg2MDExKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvTWFwUHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM3LDcgKzM3LDcg
QEAgcHVibGljOgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQog
ICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoTWFwUHJv
dG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAg
ICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMg
Y29uc3RleHByIHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3Mg
fCBIYXNTdGF0aWNQcm9wZXJ0eVRhYmxlOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvTWF0aE9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL01hdGhPYmplY3QuaAkocmV2aXNpb24gMjg2MDExKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvTWF0aE9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw3ICszMiw3
IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkK
ICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKE1hdGhP
YmplY3QsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAg
ICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBN
YXRoT2JqZWN0KiBjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L05hdGl2ZUVycm9yUHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvTmF0aXZlRXJyb3JQcm90b3R5cGUuaAkocmV2aXNpb24gMjg2MDExKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRXJyb3JQcm90b3R5cGUuaAkod29y
a2luZyBjb3B5KQpAQCAtMzQsNyArMzQsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIElzb1N1YnNw
YWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lT
T19TVUJTUEFDRV9TSEFSQUJMRShOYXRpdmVFcnJvclByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAg
IHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9i
amVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0
dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5
cGUpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OYXRpdmVFeGVjdXRhYmxl
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRXhl
Y3V0YWJsZS5oCShyZXZpc2lvbiAyODYwMTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9OYXRpdmVFeGVjdXRhYmxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAv
KgotICogQ29weXJpZ2h0IChDKSAyMDA5LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA5LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00Myw3ICs0Myw3IEBA
IHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vic3BhY2VBY2Nlc3M+
CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewotICAg
ICAgICByZXR1cm4gJnZtLm5hdGl2ZUV4ZWN1dGFibGVTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2
bS5uYXRpdmVFeGVjdXRhYmxlU3BhY2UoKTsKICAgICB9CiAKICAgICBDb2RlQmxvY2tIYXNoIGhh
c2hGb3IoQ29kZVNwZWNpYWxpemF0aW9uS2luZCkgY29uc3Q7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9OdW1iZXJPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9OdW1iZXJPYmplY3QuaAkocmV2aXNpb24gMjg2MDExKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVyT2JqZWN0LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTM1LDcgKzM1LDcgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lLCBTdWJz
cGFjZUFjY2VzcyBtb2RlPgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0m
IHZtKQogICAgIHsKLSAgICAgICAgcmV0dXJuICZ2bS5udW1iZXJPYmplY3RTcGFjZTsKKyAgICAg
ICAgcmV0dXJuICZ2bS5udW1iZXJPYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBO
dW1iZXJPYmplY3QqIGNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0UHJvdG90eXBlLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0UHJvdG90eXBlLmgJKHJl
dmlzaW9uIDI4NjAxMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdFBy
b3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNiBAQAogLyoKICAqICBDb3B5cmln
aHQgKEMpIDE5OTktMjAwMCBIYXJyaSBQb3J0ZW4gKHBvcnRlbkBrZGUub3JnKQotICogIENvcHly
aWdodCAoQykgMjAwOC0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqICBD
b3B5cmlnaHQgKEMpIDIwMDgtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KgogICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0
ZSBpdCBhbmQvb3IKICAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVz
c2VyIEdlbmVyYWwgUHVibGljCkBAIC0zMyw3ICszMyw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMg
SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19B
U1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKE9iamVjdFByb3RvdHlwZSwgQmFzZSk7Ci0gICAg
ICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFp
bk9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIE9iamVjdFByb3RvdHlwZSogY3Jl
YXRlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqKTsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1Byb2dyYW1FeGVjdXRhYmxlLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvZ3JhbUV4ZWN1dGFibGUuaAkocmV2aXNpb24g
Mjg2MDExKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvZ3JhbUV4ZWN1dGFi
bGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzksNyArMzksNyBAQCBwdWJsaWM6CiAgICAgdGVtcGxh
dGU8dHlwZW5hbWUgQ2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNzPgogICAgIHN0YXRpYyBJc29TdWJz
cGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKLSAgICAgICAgcmV0dXJuICZ2bS5wcm9n
cmFtRXhlY3V0YWJsZVNwYWNlLnNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnByb2dyYW1FeGVj
dXRhYmxlU3BhY2UoKS5zcGFjZTsKICAgICB9CiAKICAgICBzdGF0aWMgUHJvZ3JhbUV4ZWN1dGFi
bGUqIGNyZWF0ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBTb3VyY2VDb2Rl
JiBzb3VyY2UpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eU1h
cEhhc2hUYWJsZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1Byb3BlcnR5TWFwSGFzaFRhYmxlLmgJKHJldmlzaW9uIDI4NjAxMSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5TWFwSGFzaFRhYmxlLmgJKG5vbmV4aXN0ZW50KQpA
QCAtMSw1ODcgKzAsMCBAQAotLyoKLSAqICBDb3B5cmlnaHQgKEMpIDIwMDQtMjAyMSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNv
ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqICBtb2RpZnkgaXQgdW5k
ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICogIExpY2Vu
c2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgot
ICogIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0
ZXIgdmVyc2lvbi4KLSAqCi0gKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBo
b3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZ
OyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqICBNRVJDSEFOVEFCSUxJ
VFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICog
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAq
ICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5l
cmFsIFB1YmxpYyBMaWNlbnNlCi0gKiAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUg
ZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAqICB0aGUgRnJlZSBTb2Z0d2Fy
ZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICog
IEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICoKLSAqLwotCi0jcHJhZ21hIG9uY2UKLQot
I2luY2x1ZGUgIkpTRXhwb3J0TWFjcm9zLmgiCi0jaW5jbHVkZSAiUHJvcGVydHlPZmZzZXQuaCIK
LSNpbmNsdWRlICJTdHJ1Y3R1cmUuaCIKLSNpbmNsdWRlICJXcml0ZUJhcnJpZXIuaCIKLSNpbmNs
dWRlIDx3dGYvSGFzaFRhYmxlLmg+Ci0jaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KLSNpbmNs
dWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+Ci0jaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgotI2luY2x1
ZGUgPHd0Zi90ZXh0L0F0b21TdHJpbmdJbXBsLmg+Ci0KLQotI2RlZmluZSBEVU1QX1BST1BFUlRZ
TUFQX1NUQVRTIDAKLSNkZWZpbmUgRFVNUF9QUk9QRVJUWU1BUF9DT0xMSVNJT05TIDAKLQotI2Rl
ZmluZSBQUk9QRVJUWV9NQVBfREVMRVRFRF9FTlRSWV9LRVkgKChVbmlxdWVkU3RyaW5nSW1wbCop
MSkKLQotbmFtZXNwYWNlIEpTQyB7Ci0KLURFQ0xBUkVfQUxMT0NBVE9SX1dJVEhfSEVBUF9JREVO
VElGSUVSKFByb3BlcnR5VGFibGUpOwotCi0jaWYgRFVNUF9QUk9QRVJUWU1BUF9TVEFUUwotCi1z
dHJ1Y3QgUHJvcGVydHlNYXBIYXNoVGFibGVTdGF0cyB7Ci0gICAgc3RkOjphdG9taWM8dW5zaWdu
ZWQ+IG51bUZpbmRzOwotICAgIHN0ZDo6YXRvbWljPHVuc2lnbmVkPiBudW1Db2xsaXNpb25zOwot
ICAgIHN0ZDo6YXRvbWljPHVuc2lnbmVkPiBudW1Mb29rdXBzOwotICAgIHN0ZDo6YXRvbWljPHVu
c2lnbmVkPiBudW1Mb29rdXBQcm9iaW5nOwotICAgIHN0ZDo6YXRvbWljPHVuc2lnbmVkPiBudW1B
ZGRzOwotICAgIHN0ZDo6YXRvbWljPHVuc2lnbmVkPiBudW1SZW1vdmVzOwotICAgIHN0ZDo6YXRv
bWljPHVuc2lnbmVkPiBudW1SZWhhc2hlczsKLSAgICBzdGQ6OmF0b21pYzx1bnNpZ25lZD4gbnVt
UmVpbnNlcnRzOwotfTsKLQotSlNfRVhQT1JUX1BSSVZBVEUgZXh0ZXJuIFByb3BlcnR5TWFwSGFz
aFRhYmxlU3RhdHMqIHByb3BlcnR5TWFwSGFzaFRhYmxlU3RhdHM7Ci0KLSNlbmRpZgotCi1pbmxp
bmUgYm9vbCBpc1Bvd2VyT2YyKHVuc2lnbmVkIHYpCi17Ci0gICAgcmV0dXJuIGhhc09uZUJpdFNl
dCh2KTsKLX0KLQotaW5saW5lIHVuc2lnbmVkIG5leHRQb3dlck9mMih1bnNpZ25lZCB2KQotewot
ICAgIC8vIFRha2VuIGZyb20gaHR0cDovL3d3dy5jcy51dGsuZWR1L352b3NlL2Mtc3R1ZmYvYml0
aGFja3MuaHRtbAotICAgIC8vIERldmlzZWQgYnkgU2VhbiBBbmRlcnNvbiwgU2VwZW1iZXIgMTQs
IDIwMDEKLQotICAgIHYtLTsKLSAgICB2IHw9IHYgPj4gMTsKLSAgICB2IHw9IHYgPj4gMjsKLSAg
ICB2IHw9IHYgPj4gNDsKLSAgICB2IHw9IHYgPj4gODsKLSAgICB2IHw9IHYgPj4gMTY7Ci0gICAg
disrOwotCi0gICAgcmV0dXJuIHY7Ci19Ci0KLWNsYXNzIFByb3BlcnR5VGFibGUgZmluYWwgOiBw
dWJsaWMgSlNDZWxsIHsKLQotICAgIC8vIFRoaXMgaXMgdGhlIGltcGxlbWVudGF0aW9uIGZvciAn
aXRlcmF0b3InIGFuZCAnY29uc3RfaXRlcmF0b3InLAotICAgIC8vIHVzZWQgZm9yIGl0ZXJhdGlu
ZyBvdmVyIHRoZSB0YWJsZSBpbiBpbnNlcnRpb24gb3JkZXIuCi0gICAgdGVtcGxhdGU8dHlwZW5h
bWUgVD4KLSAgICBjbGFzcyBvcmRlcmVkX2l0ZXJhdG9yIHsKLSAgICBwdWJsaWM6Ci0gICAgICAg
IG9yZGVyZWRfaXRlcmF0b3I8VD4mIG9wZXJhdG9yKysoKQotICAgICAgICB7Ci0gICAgICAgICAg
ICBtX3ZhbHVlUHRyID0gc2tpcERlbGV0ZWRFbnRyaWVzKG1fdmFsdWVQdHIgKyAxLCBtX2VuZFZh
bHVlUHRyKTsKLSAgICAgICAgICAgIHJldHVybiAqdGhpczsKLSAgICAgICAgfQotCi0gICAgICAg
IGJvb2wgb3BlcmF0b3I9PShjb25zdCBvcmRlcmVkX2l0ZXJhdG9yPFQ+JiBvdGhlcikKLSAgICAg
ICAgewotICAgICAgICAgICAgcmV0dXJuIG1fdmFsdWVQdHIgPT0gb3RoZXIubV92YWx1ZVB0cjsK
LSAgICAgICAgfQotCi0gICAgICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBvcmRlcmVkX2l0ZXJh
dG9yPFQ+JiBvdGhlcikKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIG1fdmFsdWVQdHIg
IT0gb3RoZXIubV92YWx1ZVB0cjsKLSAgICAgICAgfQotCi0gICAgICAgIFQmIG9wZXJhdG9yKigp
Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiAqbV92YWx1ZVB0cjsKLSAgICAgICAgfQot
Ci0gICAgICAgIFQqIG9wZXJhdG9yLT4oKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4g
bV92YWx1ZVB0cjsKLSAgICAgICAgfQotCi0gICAgICAgIG9yZGVyZWRfaXRlcmF0b3IoVCogdmFs
dWVQdHIsIFQqIGVuZFZhbHVlUHRyKQotICAgICAgICAgICAgOiBtX3ZhbHVlUHRyKHZhbHVlUHRy
KQotICAgICAgICAgICAgLCBtX2VuZFZhbHVlUHRyKGVuZFZhbHVlUHRyKQotICAgICAgICB7Ci0g
ICAgICAgIH0KLQotICAgIHByaXZhdGU6Ci0gICAgICAgIFQqIG1fdmFsdWVQdHI7Ci0gICAgICAg
IFQqIG1fZW5kVmFsdWVQdHI7Ci0gICAgfTsKLQotcHVibGljOgotICAgIHR5cGVkZWYgSlNDZWxs
IEJhc2U7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJh
c2U6OlN0cnVjdHVyZUZsYWdzIHwgU3RydWN0dXJlSXNJbW1vcnRhbDsKLQotICAgIHRlbXBsYXRl
PHR5cGVuYW1lIENlbGxUeXBlLCBTdWJzcGFjZUFjY2Vzcz4KLSAgICBzdGF0aWMgSXNvU3Vic3Bh
Y2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKLSAgICB7Ci0gICAgICAgIHJldHVybiAmdm0ucHJvcGVy
dHlUYWJsZVNwYWNlOwotICAgIH0KLQotICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBuZWVkc0Rl
c3RydWN0aW9uID0gdHJ1ZTsKLSAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCopOwotICAg
IERFQ0xBUkVfVklTSVRfQ0hJTERSRU47Ci0KLSAgICBERUNMQVJFX0VYUE9SVF9JTkZPOwotCi0g
ICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCi0gICAgewotICAgICAgICByZXR1
cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5m
byhDZWxsVHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOwotICAgIH0KLQotICAgIHR5cGVk
ZWYgVW5pcXVlZFN0cmluZ0ltcGwqIEtleVR5cGU7Ci0gICAgdHlwZWRlZiBQcm9wZXJ0eU1hcEVu
dHJ5IFZhbHVlVHlwZTsKLQotICAgIC8vIFRoZSBpbiBvcmRlciBpdGVyYXRvciBwcm92aWRlcyBv
dmVybG9hZGVkICogYW5kIC0+IHRvIGFjY2VzcyB0aGUgVmFsdWUgYXQgdGhlIGN1cnJlbnQgcG9z
aXRpb24uCi0gICAgdHlwZWRlZiBvcmRlcmVkX2l0ZXJhdG9yPFZhbHVlVHlwZT4gaXRlcmF0b3I7
Ci0gICAgdHlwZWRlZiBvcmRlcmVkX2l0ZXJhdG9yPGNvbnN0IFZhbHVlVHlwZT4gY29uc3RfaXRl
cmF0b3I7Ci0KLSAgICAvLyBUaGUgZmluZF9pdGVyYXRvciBpcyBhIHBhaXIgb2YgYSBwb2ludGVy
IHRvIGEgVmFsdWUqIGFuIHRoZSBlbnRyeSBpbiB0aGUgaW5kZXguCi0gICAgLy8gSWYgJ2ZpbmQn
IGRvZXMgbm90IGZpbmQgYW4gZW50cnkgdGhlbiBpdGVyLmZpcnN0IHdpbGwgYmUgMCwgYW5kIGl0
ZXIuc2Vjb25kIHdpbGwKLSAgICAvLyBnaXZlIHRoZSBwb2ludCBpbiBtX2luZGV4IHdoZXJlIGFu
IGVudHJ5IHNob3VsZCBiZSBpbnNlcnRlZC4KLSAgICB0eXBlZGVmIHN0ZDo6cGFpcjxWYWx1ZVR5
cGUqLCB1bnNpZ25lZD4gZmluZF9pdGVyYXRvcjsKLQotICAgIC8vIENvbnN0cnVjdG9yIGlzIHBh
c3NlZCBhbiBpbml0aWFsIGNhcGFjaXR5LCBhIFByb3BlcnR5VGFibGUgdG8gY29weSwgb3IgYm90
aC4KLSAgICBzdGF0aWMgUHJvcGVydHlUYWJsZSogY3JlYXRlKFZNJiwgdW5zaWduZWQgaW5pdGlh
bENhcGFjaXR5KTsKLSAgICBzdGF0aWMgUHJvcGVydHlUYWJsZSogY2xvbmUoVk0mLCBjb25zdCBQ
cm9wZXJ0eVRhYmxlJik7Ci0gICAgc3RhdGljIFByb3BlcnR5VGFibGUqIGNsb25lKFZNJiwgdW5z
aWduZWQgaW5pdGlhbENhcGFjaXR5LCBjb25zdCBQcm9wZXJ0eVRhYmxlJik7Ci0gICAgflByb3Bl
cnR5VGFibGUoKTsKLQotICAgIC8vIE9yZGVyZWQgaXRlcmF0aW9uIG1ldGhvZHMuCi0gICAgaXRl
cmF0b3IgYmVnaW4oKTsKLSAgICBpdGVyYXRvciBlbmQoKTsKLSAgICBjb25zdF9pdGVyYXRvciBi
ZWdpbigpIGNvbnN0OwotICAgIGNvbnN0X2l0ZXJhdG9yIGVuZCgpIGNvbnN0OwotCi0gICAgLy8g
RmluZCBhIHZhbHVlIGluIHRoZSB0YWJsZS4KLSAgICBmaW5kX2l0ZXJhdG9yIGZpbmQoY29uc3Qg
S2V5VHlwZSYpOwotICAgIFZhbHVlVHlwZSogZ2V0KGNvbnN0IEtleVR5cGUmKTsKLSAgICAvLyBB
ZGQgYSB2YWx1ZSB0byB0aGUgdGFibGUKLSAgICBzdGQ6OnBhaXI8ZmluZF9pdGVyYXRvciwgYm9v
bD4gV0FSTl9VTlVTRURfUkVUVVJOIGFkZChWTSYsIGNvbnN0IFZhbHVlVHlwZSYgZW50cnkpOwot
ICAgIC8vIFJlbW92ZSBhIHZhbHVlIGZyb20gdGhlIHRhYmxlLgotICAgIHZvaWQgcmVtb3ZlKFZN
JiwgY29uc3QgZmluZF9pdGVyYXRvciYgaXRlcik7Ci0gICAgdm9pZCByZW1vdmUoVk0mLCBjb25z
dCBLZXlUeXBlJiBrZXkpOwotCi0gICAgLy8gUmV0dXJucyB0aGUgbnVtYmVyIG9mIHZhbHVlcyBp
biB0aGUgaGFzaHRhYmxlLgotICAgIHVuc2lnbmVkIHNpemUoKSBjb25zdDsKLQotICAgIC8vIENo
ZWNrcyBpZiB0aGVyZSBhcmUgYW55IHZhbHVlcyBpbiB0aGUgaGFzaHRhYmxlLgotICAgIGJvb2wg
aXNFbXB0eSgpIGNvbnN0OwotCi0gICAgLy8gTnVtYmVyIG9mIHNsb3RzIGluIHRoZSBwcm9wZXJ0
eSBzdG9yYWdlIGFycmF5IGluIHVzZSwgaW5jbHVkZWQgZGVsZXRlZE9mZnNldHMuCi0gICAgdW5z
aWduZWQgcHJvcGVydHlTdG9yYWdlU2l6ZSgpIGNvbnN0OwotCi0gICAgLy8gVXNlZCB0byBtYWlu
dGFpbiBhIGxpc3Qgb2YgdW51c2VkIGVudHJpZXMgaW4gdGhlIHByb3BlcnR5IHN0b3JhZ2UuCi0g
ICAgdm9pZCBjbGVhckRlbGV0ZWRPZmZzZXRzKCk7Ci0gICAgYm9vbCBoYXNEZWxldGVkT2Zmc2V0
KCk7Ci0gICAgUHJvcGVydHlPZmZzZXQgZ2V0RGVsZXRlZE9mZnNldCgpOwotICAgIHZvaWQgYWRk
RGVsZXRlZE9mZnNldChQcm9wZXJ0eU9mZnNldCk7Ci0gICAgCi0gICAgUHJvcGVydHlPZmZzZXQg
bmV4dE9mZnNldChQcm9wZXJ0eU9mZnNldCBpbmxpbmVDYXBhY2l0eSk7Ci0KLSAgICAvLyBDb3B5
IHRoaXMgUHJvcGVydHlUYWJsZSwgZW5zdXJpbmcgdGhlIGNvcHkgaGFzIGF0IGxlYXN0IHRoZSBj
YXBhY2l0eSBwcm92aWRlZC4KLSAgICBQcm9wZXJ0eVRhYmxlKiBjb3B5KFZNJiwgdW5zaWduZWQg
bmV3Q2FwYWNpdHkpOwotCi0jaWZuZGVmIE5ERUJVRwotICAgIHNpemVfdCBzaXplSW5NZW1vcnko
KTsKLSAgICB2b2lkIGNoZWNrQ29uc2lzdGVuY3koKTsKLSNlbmRpZgotICAgIAotICAgIHN0YXRp
YyBwdHJkaWZmX3Qgb2Zmc2V0T2ZJbmRleFNpemUoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0Yo
UHJvcGVydHlUYWJsZSwgbV9pbmRleFNpemUpOyB9Ci0gICAgc3RhdGljIHB0cmRpZmZfdCBvZmZz
ZXRPZkluZGV4TWFzaygpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihQcm9wZXJ0eVRhYmxlLCBt
X2luZGV4TWFzayk7IH0KLSAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9mSW5kZXgoKSB7IHJl
dHVybiBPQkpFQ1RfT0ZGU0VUT0YoUHJvcGVydHlUYWJsZSwgbV9pbmRleCk7IH0KLQotICAgIHN0
YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgRW1wdHlFbnRyeUluZGV4ID0gMDsKLQotcHJpdmF0ZToK
LSAgICBQcm9wZXJ0eVRhYmxlKFZNJiwgdW5zaWduZWQgaW5pdGlhbENhcGFjaXR5KTsKLSAgICBQ
cm9wZXJ0eVRhYmxlKFZNJiwgY29uc3QgUHJvcGVydHlUYWJsZSYpOwotICAgIFByb3BlcnR5VGFi
bGUoVk0mLCB1bnNpZ25lZCBpbml0aWFsQ2FwYWNpdHksIGNvbnN0IFByb3BlcnR5VGFibGUmKTsK
LQotICAgIFByb3BlcnR5VGFibGUoY29uc3QgUHJvcGVydHlUYWJsZSYpOwotCi0gICAgdm9pZCBm
aW5pc2hDcmVhdGlvbihWTSYpOwotCi0gICAgLy8gVXNlZCB0byBpbnNlcnQgYSB2YWx1ZSBrbm93
biBub3QgdG8gYmUgaW4gdGhlIHRhYmxlLCBhbmQgd2hlcmUgd2Uga25vdyBjYXBhY2l0eSB0byBi
ZSBhdmFpbGFibGUuCi0gICAgdm9pZCByZWluc2VydChjb25zdCBWYWx1ZVR5cGUmIGVudHJ5KTsK
LQotICAgIC8vIFJlaGFzaCB0aGUgdGFibGUuICBVc2VkIHRvIGdyb3csIG9yIHRvIHJlY292ZXIg
ZGVsZXRlZCBzbG90cy4KLSAgICB2b2lkIHJlaGFzaChWTSYsIHVuc2lnbmVkIG5ld0NhcGFjaXR5
KTsKLQotICAgIC8vIFRoZSBjYXBhY2l0eSBvZiB0aGUgdGFibGUgb2YgdmFsdWVzIGlzIGhhbGYg
b2YgdGhlIHNpemUgb2YgdGhlIGluZGV4LgotICAgIHVuc2lnbmVkIHRhYmxlQ2FwYWNpdHkoKSBj
b25zdDsKLQotICAgIC8vIFdlIGtlZXAgYW4gZXh0cmEgZGVsZXRlZCBzbG90IGFmdGVyIHRoZSBh
cnJheSB0byBtYWtlIGl0ZXJhdGlvbiB3b3JrLAotICAgIC8vIGFuZCB0byB1c2UgZm9yIGRlbGV0
ZWQgdmFsdWVzLiBJbmRleCB2YWx1ZXMgaW50byB0aGUgYXJyYXkgYXJlIDEtYmFzZWQsCi0gICAg
Ly8gc28gdGhpcyBpcyB0YWJsZUNhcGFjaXR5KCkgKyAxLgotICAgIC8vIEZvciBleGFtcGxlLCBp
ZiBtX3RhYmxlU2l6ZSBpcyAxNiwgdGhlbiB0YWJsZUNhcGFjaXR5KCkgaXMgOCAtIGJ1dCB0aGUK
LSAgICAvLyB2YWx1ZXMgYXJyYXkgaXMgYWN0dWFsbHkgOSBsb25nICh0aGUgOXRoIHVzZWQgZm9y
IHRoZSBkZWxldGVkIHZhbHVlLwotICAgIC8vIGl0ZXJhdGlvbiBndWFyZCkuICBUaGUgOCB2YWxp
ZCBlbnRyaWVzIGFyZSBudW1iZXJlZCAxLi44LCBzbyB0aGUKLSAgICAvLyBkZWxldGVkIGluZGV4
IGlzIDkgKDAgYmVpbmcgcmVzZXJ2ZWQgZm9yIGVtcHR5KS4KLSAgICB1bnNpZ25lZCBkZWxldGVk
RW50cnlJbmRleCgpIGNvbnN0OwotCi0gICAgLy8gVXNlZCBpbiBpdGVyYXRvciBjcmVhdGlvbi9w
cm9ncmVzc2lvbi4KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgIHN0YXRpYyBUKiBza2lw
RGVsZXRlZEVudHJpZXMoVCogdmFsdWVQdHIsIFQqIGVuZFZhbHVlUHRyKTsKLQotICAgIC8vIFRo
ZSB0YWJsZSBvZiB2YWx1ZXMgbGllcyBhZnRlciB0aGUgaGFzaCBpbmRleC4KLSAgICBWYWx1ZVR5
cGUqIHRhYmxlKCk7Ci0gICAgY29uc3QgVmFsdWVUeXBlKiB0YWJsZSgpIGNvbnN0OwotCi0gICAg
VmFsdWVUeXBlKiB0YWJsZUVuZCgpIHsgcmV0dXJuIHRhYmxlKCkgKyB1c2VkQ291bnQoKTsgfQot
ICAgIGNvbnN0IFZhbHVlVHlwZSogdGFibGVFbmQoKSBjb25zdCB7IHJldHVybiB0YWJsZSgpICsg
dXNlZENvdW50KCk7IH0KLQotICAgIC8vIHRvdGFsIG51bWJlciBvZiAgdXNlZCBlbnRyaWVzIGlu
IHRoZSB2YWx1ZXMgYXJyYXkgLSBieSBlaXRoZXIgdmFsaWQgZW50cmllcywgb3IgZGVsZXRlZCBv
bmVzLgotICAgIHVuc2lnbmVkIHVzZWRDb3VudCgpIGNvbnN0OwotCi0gICAgLy8gVGhlIHNpemUg
aW4gYnl0ZXMgb2YgZGF0YSBuZWVkZWQgZm9yIGJ5IHRoZSB0YWJsZS4KLSAgICBzaXplX3QgZGF0
YVNpemUoKTsKLQotICAgIC8vIENhbGN1bGF0ZXMgdGhlIGFwcHJvcHJpYXRlIHRhYmxlIHNpemUg
KHJvdW5kcyB1cCB0byBhIHBvd2VyIG9mIHR3bykuCi0gICAgc3RhdGljIHVuc2lnbmVkIHNpemVG
b3JDYXBhY2l0eSh1bnNpZ25lZCBjYXBhY2l0eSk7Ci0KLSAgICAvLyBDaGVjayBpZiBjYXBhY2l0
eSBpcyBhdmFpbGFibGUuCi0gICAgYm9vbCBjYW5JbnNlcnQoKTsKLQotICAgIHVuc2lnbmVkIG1f
aW5kZXhTaXplOwotICAgIHVuc2lnbmVkIG1faW5kZXhNYXNrOwotICAgIHVuc2lnbmVkKiBtX2lu
ZGV4OwotICAgIHVuc2lnbmVkIG1fa2V5Q291bnQ7Ci0gICAgdW5zaWduZWQgbV9kZWxldGVkQ291
bnQ7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPFZlY3RvcjxQcm9wZXJ0eU9mZnNldD4+IG1fZGVsZXRl
ZE9mZnNldHM7Ci0KLSAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIE1pbmltdW1UYWJsZVNp
emUgPSAxNjsKLX07Ci0KLWlubGluZSBQcm9wZXJ0eVRhYmxlOjppdGVyYXRvciBQcm9wZXJ0eVRh
YmxlOjpiZWdpbigpCi17Ci0gICAgYXV0byogdGFibGVFbmQgPSB0aGlzLT50YWJsZUVuZCgpOwot
ICAgIHJldHVybiBpdGVyYXRvcihza2lwRGVsZXRlZEVudHJpZXModGFibGUoKSwgdGFibGVFbmQp
LCB0YWJsZUVuZCk7Ci19Ci0KLWlubGluZSBQcm9wZXJ0eVRhYmxlOjppdGVyYXRvciBQcm9wZXJ0
eVRhYmxlOjplbmQoKQotewotICAgIGF1dG8qIHRhYmxlRW5kID0gdGhpcy0+dGFibGVFbmQoKTsK
LSAgICByZXR1cm4gaXRlcmF0b3IodGFibGVFbmQsIHRhYmxlRW5kKTsKLX0KLQotaW5saW5lIFBy
b3BlcnR5VGFibGU6OmNvbnN0X2l0ZXJhdG9yIFByb3BlcnR5VGFibGU6OmJlZ2luKCkgY29uc3QK
LXsKLSAgICBhdXRvKiB0YWJsZUVuZCA9IHRoaXMtPnRhYmxlRW5kKCk7Ci0gICAgcmV0dXJuIGNv
bnN0X2l0ZXJhdG9yKHNraXBEZWxldGVkRW50cmllcyh0YWJsZSgpLCB0YWJsZUVuZCksIHRhYmxl
RW5kKTsKLX0KLQotaW5saW5lIFByb3BlcnR5VGFibGU6OmNvbnN0X2l0ZXJhdG9yIFByb3BlcnR5
VGFibGU6OmVuZCgpIGNvbnN0Ci17Ci0gICAgYXV0byogdGFibGVFbmQgPSB0aGlzLT50YWJsZUVu
ZCgpOwotICAgIHJldHVybiBjb25zdF9pdGVyYXRvcih0YWJsZUVuZCwgdGFibGVFbmQpOwotfQot
Ci1pbmxpbmUgUHJvcGVydHlUYWJsZTo6ZmluZF9pdGVyYXRvciBQcm9wZXJ0eVRhYmxlOjpmaW5k
KGNvbnN0IEtleVR5cGUmIGtleSkKLXsKLSAgICBBU1NFUlQoa2V5KTsKLSAgICBBU1NFUlQoa2V5
LT5pc0F0b20oKSB8fCBrZXktPmlzU3ltYm9sKCkpOwotICAgIHVuc2lnbmVkIGhhc2ggPSBJZGVu
dGlmaWVyUmVwSGFzaDo6aGFzaChrZXkpOwotCi0jaWYgRFVNUF9QUk9QRVJUWU1BUF9TVEFUUwot
ICAgICsrcHJvcGVydHlNYXBIYXNoVGFibGVTdGF0cy0+bnVtRmluZHM7Ci0jZW5kaWYKLQotICAg
IHdoaWxlICh0cnVlKSB7Ci0gICAgICAgIHVuc2lnbmVkIGVudHJ5SW5kZXggPSBtX2luZGV4W2hh
c2ggJiBtX2luZGV4TWFza107Ci0gICAgICAgIGlmIChlbnRyeUluZGV4ID09IEVtcHR5RW50cnlJ
bmRleCkKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfcGFpcigoVmFsdWVUeXBlKiludWxs
cHRyLCBoYXNoICYgbV9pbmRleE1hc2spOwotICAgICAgICBpZiAoa2V5ID09IHRhYmxlKClbZW50
cnlJbmRleCAtIDFdLmtleSkKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfcGFpcigmdGFi
bGUoKVtlbnRyeUluZGV4IC0gMV0sIGhhc2ggJiBtX2luZGV4TWFzayk7Ci0KLSNpZiBEVU1QX1BS
T1BFUlRZTUFQX1NUQVRTCi0gICAgICAgICsrcHJvcGVydHlNYXBIYXNoVGFibGVTdGF0cy0+bnVt
Q29sbGlzaW9uczsKLSNlbmRpZgotCi0jaWYgRFVNUF9QUk9QRVJUWU1BUF9DT0xMSVNJT05TCi0g
ICAgICAgIGRhdGFMb2coIlByb3BlcnR5VGFibGUgY29sbGlzaW9uIGZvciAiLCBrZXksICIgKCIs
IGhhc2gsICIpXG4iKTsKLSAgICAgICAgZGF0YUxvZygiQ29sbGlkZWQgd2l0aCAiLCB0YWJsZSgp
W2VudHJ5SW5kZXggLSAxXS5rZXksICIoIiwgSWRlbnRpZmllclJlcEhhc2g6Omhhc2godGFibGUo
KVtlbnRyeUluZGV4IC0gMV0ua2V5KSwgIilcbiIpOwotI2VuZGlmCi0KLSAgICAgICAgaGFzaCsr
OwotICAgIH0KLX0KLQotaW5saW5lIFByb3BlcnR5VGFibGU6OlZhbHVlVHlwZSogUHJvcGVydHlU
YWJsZTo6Z2V0KGNvbnN0IEtleVR5cGUmIGtleSkKLXsKLSAgICBBU1NFUlQoa2V5KTsKLSAgICBB
U1NFUlQoa2V5LT5pc0F0b20oKSB8fCBrZXktPmlzU3ltYm9sKCkpOwotICAgIEFTU0VSVChrZXkg
IT0gUFJPUEVSVFlfTUFQX0RFTEVURURfRU5UUllfS0VZKTsKLQotICAgIGlmICghbV9rZXlDb3Vu
dCkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICB1bnNpZ25lZCBoYXNoID0gSWRlbnRp
ZmllclJlcEhhc2g6Omhhc2goa2V5KTsKLQotI2lmIERVTVBfUFJPUEVSVFlNQVBfU1RBVFMKLSAg
ICArK3Byb3BlcnR5TWFwSGFzaFRhYmxlU3RhdHMtPm51bUxvb2t1cHM7Ci0jZW5kaWYKLQotICAg
IHdoaWxlICh0cnVlKSB7Ci0gICAgICAgIHVuc2lnbmVkIGVudHJ5SW5kZXggPSBtX2luZGV4W2hh
c2ggJiBtX2luZGV4TWFza107Ci0gICAgICAgIGlmIChlbnRyeUluZGV4ID09IEVtcHR5RW50cnlJ
bmRleCkKLSAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgICAgICBpZiAoa2V5ID09IHRh
YmxlKClbZW50cnlJbmRleCAtIDFdLmtleSkgewotICAgICAgICAgICAgQVNTRVJUKCFtX2RlbGV0
ZWRPZmZzZXRzIHx8ICFtX2RlbGV0ZWRPZmZzZXRzLT5jb250YWlucyh0YWJsZSgpW2VudHJ5SW5k
ZXggLSAxXS5vZmZzZXQpKTsKLSAgICAgICAgICAgIHJldHVybiAmdGFibGUoKVtlbnRyeUluZGV4
IC0gMV07Ci0gICAgICAgIH0KLQotI2lmIERVTVBfUFJPUEVSVFlNQVBfU1RBVFMKLSAgICAgICAg
Kytwcm9wZXJ0eU1hcEhhc2hUYWJsZVN0YXRzLT5udW1Mb29rdXBQcm9iaW5nOwotI2VuZGlmCi0K
LSAgICAgICAgaGFzaCsrOwotICAgIH0KLX0KLQotaW5saW5lIHN0ZDo6cGFpcjxQcm9wZXJ0eVRh
YmxlOjpmaW5kX2l0ZXJhdG9yLCBib29sPiBXQVJOX1VOVVNFRF9SRVRVUk4gUHJvcGVydHlUYWJs
ZTo6YWRkKFZNJiB2bSwgY29uc3QgVmFsdWVUeXBlJiBlbnRyeSkKLXsKLSAgICBBU1NFUlQoIW1f
ZGVsZXRlZE9mZnNldHMgfHwgIW1fZGVsZXRlZE9mZnNldHMtPmNvbnRhaW5zKGVudHJ5Lm9mZnNl
dCkpOwotCi0gICAgLy8gTG9vayBmb3IgYSB2YWx1ZSB3aXRoIGEgbWF0Y2hpbmcga2V5IGFscmVh
ZHkgaW4gdGhlIGFycmF5LgotICAgIGZpbmRfaXRlcmF0b3IgaXRlciA9IGZpbmQoZW50cnkua2V5
KTsKLSAgICBpZiAoaXRlci5maXJzdCkKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV9wYWlyKGl0
ZXIsIGZhbHNlKTsKLQotI2lmIERVTVBfUFJPUEVSVFlNQVBfU1RBVFMKLSAgICArK3Byb3BlcnR5
TWFwSGFzaFRhYmxlU3RhdHMtPm51bUFkZHM7Ci0jZW5kaWYKLQotICAgIC8vIFJlZiB0aGUga2V5
Ci0gICAgZW50cnkua2V5LT5yZWYoKTsKLQotICAgIC8vIGVuc3VyZSBjYXBhY2l0eSBpcyBhdmFp
bGFibGUuCi0gICAgaWYgKCFjYW5JbnNlcnQoKSkgewotICAgICAgICByZWhhc2godm0sIG1fa2V5
Q291bnQgKyAxKTsKLSAgICAgICAgaXRlciA9IGZpbmQoZW50cnkua2V5KTsKLSAgICAgICAgQVNT
RVJUKCFpdGVyLmZpcnN0KTsKLSAgICB9Ci0KLSAgICAvLyBBbGxvY2F0ZSBhIHNsb3QgaW4gdGhl
IGhhc2h0YWJsZSwgYW5kIHNldCB0aGUgaW5kZXggdG8gcmVmZXJlbmNlIHRoaXMuCi0gICAgdW5z
aWduZWQgZW50cnlJbmRleCA9IHVzZWRDb3VudCgpICsgMTsKLSAgICBtX2luZGV4W2l0ZXIuc2Vj
b25kXSA9IGVudHJ5SW5kZXg7Ci0gICAgaXRlci5maXJzdCA9ICZ0YWJsZSgpW2VudHJ5SW5kZXgg
LSAxXTsKLSAgICAqaXRlci5maXJzdCA9IGVudHJ5OwotCi0gICAgKyttX2tleUNvdW50OwotICAg
IAotICAgIHJldHVybiBzdGQ6Om1ha2VfcGFpcihpdGVyLCB0cnVlKTsKLX0KLQotaW5saW5lIHZv
aWQgUHJvcGVydHlUYWJsZTo6cmVtb3ZlKFZNJiB2bSwgY29uc3QgZmluZF9pdGVyYXRvciYgaXRl
cikKLXsKLSAgICAvLyBSZW1vdmluZyBhIGtleSB0aGF0IGRvZXNuJ3QgZXhpc3QgZG9lcyBub3Ro
aW5nIQotICAgIGlmICghaXRlci5maXJzdCkKLSAgICAgICAgcmV0dXJuOwotCi0jaWYgRFVNUF9Q
Uk9QRVJUWU1BUF9TVEFUUwotICAgICsrcHJvcGVydHlNYXBIYXNoVGFibGVTdGF0cy0+bnVtUmVt
b3ZlczsKLSNlbmRpZgotCi0gICAgLy8gUmVwbGFjZSB0aGlzIG9uZSBlbGVtZW50IHdpdGggdGhl
IGRlbGV0ZWQgc2VudGluZWwuIEFsc28gY2xlYXIgb3V0Ci0gICAgLy8gdGhlIGVudHJ5IHNvIHdl
IGNhbiBpdGVyYXRlIGFsbCB0aGUgZW50cmllcyBhcyBuZWVkZWQuCi0gICAgbV9pbmRleFtpdGVy
LnNlY29uZF0gPSBkZWxldGVkRW50cnlJbmRleCgpOwotICAgIGl0ZXIuZmlyc3QtPmtleS0+ZGVy
ZWYoKTsKLSAgICBpdGVyLmZpcnN0LT5rZXkgPSBQUk9QRVJUWV9NQVBfREVMRVRFRF9FTlRSWV9L
RVk7Ci0KLSAgICBBU1NFUlQobV9rZXlDb3VudCA+PSAxKTsKLSAgICAtLW1fa2V5Q291bnQ7Ci0g
ICAgKyttX2RlbGV0ZWRDb3VudDsKLQotICAgIGlmIChtX2RlbGV0ZWRDb3VudCAqIDQgPj0gbV9p
bmRleFNpemUpCi0gICAgICAgIHJlaGFzaCh2bSwgbV9rZXlDb3VudCk7Ci19Ci0KLWlubGluZSB2
b2lkIFByb3BlcnR5VGFibGU6OnJlbW92ZShWTSYgdm0sIGNvbnN0IEtleVR5cGUmIGtleSkKLXsK
LSAgICByZW1vdmUodm0sIGZpbmQoa2V5KSk7Ci19Ci0KLS8vIHJldHVybnMgdGhlIG51bWJlciBv
ZiB2YWx1ZXMgaW4gdGhlIGhhc2h0YWJsZS4KLWlubGluZSB1bnNpZ25lZCBQcm9wZXJ0eVRhYmxl
OjpzaXplKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9rZXlDb3VudDsKLX0KLQotaW5saW5lIGJv
b2wgUHJvcGVydHlUYWJsZTo6aXNFbXB0eSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuICFtX2tleUNv
dW50OwotfQotCi1pbmxpbmUgdW5zaWduZWQgUHJvcGVydHlUYWJsZTo6cHJvcGVydHlTdG9yYWdl
U2l6ZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIHNpemUoKSArIChtX2RlbGV0ZWRPZmZzZXRzID8g
bV9kZWxldGVkT2Zmc2V0cy0+c2l6ZSgpIDogMCk7Ci19Ci0KLWlubGluZSB2b2lkIFByb3BlcnR5
VGFibGU6OmNsZWFyRGVsZXRlZE9mZnNldHMoKQotewotICAgIG1fZGVsZXRlZE9mZnNldHMgPSBu
dWxscHRyOwotfQotCi1pbmxpbmUgYm9vbCBQcm9wZXJ0eVRhYmxlOjpoYXNEZWxldGVkT2Zmc2V0
KCkKLXsKLSAgICByZXR1cm4gbV9kZWxldGVkT2Zmc2V0cyAmJiAhbV9kZWxldGVkT2Zmc2V0cy0+
aXNFbXB0eSgpOwotfQotCi1pbmxpbmUgUHJvcGVydHlPZmZzZXQgUHJvcGVydHlUYWJsZTo6Z2V0
RGVsZXRlZE9mZnNldCgpCi17Ci0gICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0ID0gbV9kZWxldGVk
T2Zmc2V0cy0+bGFzdCgpOwotICAgIG1fZGVsZXRlZE9mZnNldHMtPnJlbW92ZUxhc3QoKTsKLSAg
ICByZXR1cm4gb2Zmc2V0OwotfQotCi1pbmxpbmUgdm9pZCBQcm9wZXJ0eVRhYmxlOjphZGREZWxl
dGVkT2Zmc2V0KFByb3BlcnR5T2Zmc2V0IG9mZnNldCkKLXsKLSAgICBpZiAoIW1fZGVsZXRlZE9m
ZnNldHMpCi0gICAgICAgIG1fZGVsZXRlZE9mZnNldHMgPSBtYWtlVW5pcXVlPFZlY3RvcjxQcm9w
ZXJ0eU9mZnNldD4+KCk7Ci0gICAgQVNTRVJUKCFtX2RlbGV0ZWRPZmZzZXRzLT5jb250YWlucyhv
ZmZzZXQpKTsKLSAgICBtX2RlbGV0ZWRPZmZzZXRzLT5hcHBlbmQob2Zmc2V0KTsKLX0KLQotaW5s
aW5lIFByb3BlcnR5T2Zmc2V0IFByb3BlcnR5VGFibGU6Om5leHRPZmZzZXQoUHJvcGVydHlPZmZz
ZXQgaW5saW5lQ2FwYWNpdHkpCi17Ci0gICAgaWYgKGhhc0RlbGV0ZWRPZmZzZXQoKSkKLSAgICAg
ICAgcmV0dXJuIGdldERlbGV0ZWRPZmZzZXQoKTsKLQotICAgIHJldHVybiBvZmZzZXRGb3JQcm9w
ZXJ0eU51bWJlcihzaXplKCksIGlubGluZUNhcGFjaXR5KTsKLX0KLQotaW5saW5lIFByb3BlcnR5
VGFibGUqIFByb3BlcnR5VGFibGU6OmNvcHkoVk0mIHZtLCB1bnNpZ25lZCBuZXdDYXBhY2l0eSkK
LXsKLSAgICBBU1NFUlQobmV3Q2FwYWNpdHkgPj0gbV9rZXlDb3VudCk7Ci0KLSAgICAvLyBGYXN0
IGNhc2U7IGlmIHRoZSBuZXcgdGFibGUgd2lsbCBiZSB0aGUgc2FtZSBtX2luZGV4U2l6ZSBhcyB0
aGlzIG9uZSwgd2UgY2FuIG1lbWNweSBpdCwKLSAgICAvLyBzYXZlIHJlaGFzaGluZyBhbGwga2V5
cy4KLSAgICBpZiAoc2l6ZUZvckNhcGFjaXR5KG5ld0NhcGFjaXR5KSA9PSBtX2luZGV4U2l6ZSkK
LSAgICAgICAgcmV0dXJuIFByb3BlcnR5VGFibGU6OmNsb25lKHZtLCAqdGhpcyk7Ci0gICAgcmV0
dXJuIFByb3BlcnR5VGFibGU6OmNsb25lKHZtLCBuZXdDYXBhY2l0eSwgKnRoaXMpOwotfQotCi0j
aWZuZGVmIE5ERUJVRwotaW5saW5lIHNpemVfdCBQcm9wZXJ0eVRhYmxlOjpzaXplSW5NZW1vcnko
KQotewotICAgIHNpemVfdCByZXN1bHQgPSBzaXplb2YoUHJvcGVydHlUYWJsZSkgKyBkYXRhU2l6
ZSgpOwotICAgIGlmIChtX2RlbGV0ZWRPZmZzZXRzKQotICAgICAgICByZXN1bHQgKz0gKG1fZGVs
ZXRlZE9mZnNldHMtPmNhcGFjaXR5KCkgKiBzaXplb2YoUHJvcGVydHlPZmZzZXQpKTsKLSAgICBy
ZXR1cm4gcmVzdWx0OwotfQotI2VuZGlmCi0KLWlubGluZSB2b2lkIFByb3BlcnR5VGFibGU6OnJl
aW5zZXJ0KGNvbnN0IFZhbHVlVHlwZSYgZW50cnkpCi17Ci0jaWYgRFVNUF9QUk9QRVJUWU1BUF9T
VEFUUwotICAgICsrcHJvcGVydHlNYXBIYXNoVGFibGVTdGF0cy0+bnVtUmVpbnNlcnRzOwotI2Vu
ZGlmCi0KLSAgICAvLyBVc2VkIHRvIGluc2VydCBhIHZhbHVlIGtub3duIG5vdCB0byBiZSBpbiB0
aGUgdGFibGUsIGFuZCB3aGVyZQotICAgIC8vIHdlIGtub3cgY2FwYWNpdHkgdG8gYmUgYXZhaWxh
YmxlLgotICAgIEFTU0VSVChjYW5JbnNlcnQoKSk7Ci0gICAgZmluZF9pdGVyYXRvciBpdGVyID0g
ZmluZChlbnRyeS5rZXkpOwotICAgIEFTU0VSVCghaXRlci5maXJzdCk7Ci0KLSAgICB1bnNpZ25l
ZCBlbnRyeUluZGV4ID0gdXNlZENvdW50KCkgKyAxOwotICAgIG1faW5kZXhbaXRlci5zZWNvbmRd
ID0gZW50cnlJbmRleDsKLSAgICB0YWJsZSgpW2VudHJ5SW5kZXggLSAxXSA9IGVudHJ5OwotCi0g
ICAgKyttX2tleUNvdW50OwotfQotCi1pbmxpbmUgdm9pZCBQcm9wZXJ0eVRhYmxlOjpyZWhhc2go
Vk0mIHZtLCB1bnNpZ25lZCBuZXdDYXBhY2l0eSkKLXsKLSNpZiBEVU1QX1BST1BFUlRZTUFQX1NU
QVRTCi0gICAgKytwcm9wZXJ0eU1hcEhhc2hUYWJsZVN0YXRzLT5udW1SZWhhc2hlczsKLSNlbmRp
ZgotCi0gICAgc2l6ZV90IG9sZERhdGFTaXplID0gZGF0YVNpemUoKTsKLSAgICB1bnNpZ25lZCog
b2xkRW50cnlJbmRpY2VzID0gbV9pbmRleDsKLSAgICBpdGVyYXRvciBpdGVyID0gdGhpcy0+YmVn
aW4oKTsKLSAgICBpdGVyYXRvciBlbmQgPSB0aGlzLT5lbmQoKTsKLQotICAgIG1faW5kZXhTaXpl
ID0gc2l6ZUZvckNhcGFjaXR5KG5ld0NhcGFjaXR5KTsKLSAgICBtX2luZGV4TWFzayA9IG1faW5k
ZXhTaXplIC0gMTsKLSAgICBtX2tleUNvdW50ID0gMDsKLSAgICBtX2RlbGV0ZWRDb3VudCA9IDA7
Ci0KLSAgICBtX2luZGV4ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQqPihQcm9wZXJ0eVRhYmxlTWFs
bG9jOjp6ZXJvZWRNYWxsb2MoZGF0YVNpemUoKSkpOwotCi0gICAgZm9yICg7IGl0ZXIgIT0gZW5k
OyArK2l0ZXIpIHsKLSAgICAgICAgQVNTRVJUKGNhbkluc2VydCgpKTsKLSAgICAgICAgcmVpbnNl
cnQoKml0ZXIpOwotICAgIH0KLQotICAgIFByb3BlcnR5VGFibGVNYWxsb2M6OmZyZWUob2xkRW50
cnlJbmRpY2VzKTsKLQotICAgIGlmIChvbGREYXRhU2l6ZSA8IGRhdGFTaXplKCkpCi0gICAgICAg
IHZtLmhlYXAucmVwb3J0RXh0cmFNZW1vcnlBbGxvY2F0ZWQoZGF0YVNpemUoKSAtIG9sZERhdGFT
aXplKTsKLX0KLQotaW5saW5lIHVuc2lnbmVkIFByb3BlcnR5VGFibGU6OnRhYmxlQ2FwYWNpdHko
KSBjb25zdCB7IHJldHVybiBtX2luZGV4U2l6ZSA+PiAxOyB9Ci0KLWlubGluZSB1bnNpZ25lZCBQ
cm9wZXJ0eVRhYmxlOjpkZWxldGVkRW50cnlJbmRleCgpIGNvbnN0IHsgcmV0dXJuIHRhYmxlQ2Fw
YWNpdHkoKSArIDE7IH0KLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLWlubGluZSBUKiBQcm9wZXJ0
eVRhYmxlOjpza2lwRGVsZXRlZEVudHJpZXMoVCogdmFsdWVQdHIsIFQqIGVuZFZhbHVlUHRyKQot
ewotICAgIHdoaWxlICh2YWx1ZVB0ciA8IGVuZFZhbHVlUHRyICYmIHZhbHVlUHRyLT5rZXkgPT0g
UFJPUEVSVFlfTUFQX0RFTEVURURfRU5UUllfS0VZKQotICAgICAgICArK3ZhbHVlUHRyOwotICAg
IHJldHVybiB2YWx1ZVB0cjsKLX0KLQotaW5saW5lIFByb3BlcnR5VGFibGU6OlZhbHVlVHlwZSog
UHJvcGVydHlUYWJsZTo6dGFibGUoKQotewotICAgIC8vIFRoZSB0YWJsZSBvZiB2YWx1ZXMgbGll
cyBhZnRlciB0aGUgaGFzaCBpbmRleC4KLSAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdF9wdHI8
VmFsdWVUeXBlKj4obV9pbmRleCArIG1faW5kZXhTaXplKTsKLX0KLQotaW5saW5lIGNvbnN0IFBy
b3BlcnR5VGFibGU6OlZhbHVlVHlwZSogUHJvcGVydHlUYWJsZTo6dGFibGUoKSBjb25zdAotewot
ICAgIC8vIFRoZSB0YWJsZSBvZiB2YWx1ZXMgbGllcyBhZnRlciB0aGUgaGFzaCBpbmRleC4KLSAg
ICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdF9wdHI8Y29uc3QgVmFsdWVUeXBlKj4obV9pbmRleCAr
IG1faW5kZXhTaXplKTsKLX0KLQotaW5saW5lIHVuc2lnbmVkIFByb3BlcnR5VGFibGU6OnVzZWRD
b3VudCgpIGNvbnN0Ci17Ci0gICAgLy8gVG90YWwgbnVtYmVyIG9mICB1c2VkIGVudHJpZXMgaW4g
dGhlIHZhbHVlcyBhcnJheSAtIGJ5IGVpdGhlciB2YWxpZCBlbnRyaWVzLCBvciBkZWxldGVkIG9u
ZXMuCi0gICAgcmV0dXJuIG1fa2V5Q291bnQgKyBtX2RlbGV0ZWRDb3VudDsKLX0KLQotaW5saW5l
IHNpemVfdCBQcm9wZXJ0eVRhYmxlOjpkYXRhU2l6ZSgpCi17Ci0gICAgLy8gVGhlIHNpemUgaW4g
Ynl0ZXMgb2YgZGF0YSBuZWVkZWQgZm9yIGJ5IHRoZSB0YWJsZS4KLSAgICAvLyBFbnN1cmUgdGhh
dCB0aGlzIGZ1bmN0aW9uIGNhbiBiZSBjYWxsZWQgY29uY3VycmVudGx5LgotICAgIHVuc2lnbmVk
IGluZGV4U2l6ZSA9IG1faW5kZXhTaXplOwotICAgIHJldHVybiBpbmRleFNpemUgKiBzaXplb2Yo
dW5zaWduZWQpICsgKChpbmRleFNpemUgPj4gMSkgKyAxKSAqIHNpemVvZihWYWx1ZVR5cGUpOwot
fQotCi1pbmxpbmUgdW5zaWduZWQgUHJvcGVydHlUYWJsZTo6c2l6ZUZvckNhcGFjaXR5KHVuc2ln
bmVkIGNhcGFjaXR5KQotewotICAgIGlmIChjYXBhY2l0eSA8IE1pbmltdW1UYWJsZVNpemUgLyAy
KQotICAgICAgICByZXR1cm4gTWluaW11bVRhYmxlU2l6ZTsKLSAgICByZXR1cm4gbmV4dFBvd2Vy
T2YyKGNhcGFjaXR5ICsgMSkgKiAyOwotfQotCi1pbmxpbmUgYm9vbCBQcm9wZXJ0eVRhYmxlOjpj
YW5JbnNlcnQoKQotewotICAgIHJldHVybiB1c2VkQ291bnQoKSA8IHRhYmxlQ2FwYWNpdHkoKTsK
LX0KLQotfSAvLyBuYW1lc3BhY2UgSlNDCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eU1hcEhhc2hUYWJsZS5oCl9fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KRGVs
ZXRlZDogc3ZuOmVvbC1zdHlsZQojIyAtMSArMCwwICMjCi1uYXRpdmUKXCBObyBuZXdsaW5lIGF0
IGVuZCBvZiBwcm9wZXJ0eQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJv
cGVydHlUYWJsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvUHJvcGVydHlUYWJsZS5jcHAJKHJldmlzaW9uIDI4NjAxMSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5VGFibGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNCw3
ICsyNCw3IEBACiAgKi8KIAogI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlByb3BlcnR5
TWFwSGFzaFRhYmxlLmgiCisjaW5jbHVkZSAiUHJvcGVydHlUYWJsZS5oIgogCiAjaW5jbHVkZSAi
SlNDSlNWYWx1ZUlubGluZXMuaCIKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvUHJvcGVydHlUYWJsZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1Byb3BlcnR5VGFibGUuaAkocmV2aXNpb24gMjg2MDExKQkoZnJvbSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eU1hcEhhc2hUYWJsZS5oOjI4NjAxMSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5VGFibGUuaAkod29ya2luZyBjb3B5
KQpAQCAtMCwwICsxLDU4NyBAQAorLyoKKyAqICBDb3B5cmlnaHQgKEMpIDIwMDQtMjAyMSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogIFRoaXMgbGlicmFyeSBpcyBmcmVl
IHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqICBtb2RpZnkgaXQg
dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogIExp
Y2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhl
cgorICogIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkg
bGF0ZXIgdmVyc2lvbi4KKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRo
ZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJB
TlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqICBNRVJDSEFOVEFC
SUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQor
ICogIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoK
KyAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0
aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqICB0aGUgRnJlZSBTb2Z0
d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAor
ICogIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICoKKyAqLworCisjcHJhZ21hIG9uY2UK
KworI2luY2x1ZGUgIkpTRXhwb3J0TWFjcm9zLmgiCisjaW5jbHVkZSAiUHJvcGVydHlPZmZzZXQu
aCIKKyNpbmNsdWRlICJTdHJ1Y3R1cmUuaCIKKyNpbmNsdWRlICJXcml0ZUJhcnJpZXIuaCIKKyNp
bmNsdWRlIDx3dGYvSGFzaFRhYmxlLmg+CisjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KKyNp
bmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorI2lu
Y2x1ZGUgPHd0Zi90ZXh0L0F0b21TdHJpbmdJbXBsLmg+CisKKworI2RlZmluZSBEVU1QX1BST1BF
UlRZTUFQX1NUQVRTIDAKKyNkZWZpbmUgRFVNUF9QUk9QRVJUWU1BUF9DT0xMSVNJT05TIDAKKwor
I2RlZmluZSBQUk9QRVJUWV9NQVBfREVMRVRFRF9FTlRSWV9LRVkgKChVbmlxdWVkU3RyaW5nSW1w
bCopMSkKKworbmFtZXNwYWNlIEpTQyB7CisKK0RFQ0xBUkVfQUxMT0NBVE9SX1dJVEhfSEVBUF9J
REVOVElGSUVSKFByb3BlcnR5VGFibGUpOworCisjaWYgRFVNUF9QUk9QRVJUWU1BUF9TVEFUUwor
CitzdHJ1Y3QgUHJvcGVydHlNYXBIYXNoVGFibGVTdGF0cyB7CisgICAgc3RkOjphdG9taWM8dW5z
aWduZWQ+IG51bUZpbmRzOworICAgIHN0ZDo6YXRvbWljPHVuc2lnbmVkPiBudW1Db2xsaXNpb25z
OworICAgIHN0ZDo6YXRvbWljPHVuc2lnbmVkPiBudW1Mb29rdXBzOworICAgIHN0ZDo6YXRvbWlj
PHVuc2lnbmVkPiBudW1Mb29rdXBQcm9iaW5nOworICAgIHN0ZDo6YXRvbWljPHVuc2lnbmVkPiBu
dW1BZGRzOworICAgIHN0ZDo6YXRvbWljPHVuc2lnbmVkPiBudW1SZW1vdmVzOworICAgIHN0ZDo6
YXRvbWljPHVuc2lnbmVkPiBudW1SZWhhc2hlczsKKyAgICBzdGQ6OmF0b21pYzx1bnNpZ25lZD4g
bnVtUmVpbnNlcnRzOworfTsKKworSlNfRVhQT1JUX1BSSVZBVEUgZXh0ZXJuIFByb3BlcnR5TWFw
SGFzaFRhYmxlU3RhdHMqIHByb3BlcnR5TWFwSGFzaFRhYmxlU3RhdHM7CisKKyNlbmRpZgorCitp
bmxpbmUgYm9vbCBpc1Bvd2VyT2YyKHVuc2lnbmVkIHYpCit7CisgICAgcmV0dXJuIGhhc09uZUJp
dFNldCh2KTsKK30KKworaW5saW5lIHVuc2lnbmVkIG5leHRQb3dlck9mMih1bnNpZ25lZCB2KQor
eworICAgIC8vIFRha2VuIGZyb20gaHR0cDovL3d3dy5jcy51dGsuZWR1L352b3NlL2Mtc3R1ZmYv
Yml0aGFja3MuaHRtbAorICAgIC8vIERldmlzZWQgYnkgU2VhbiBBbmRlcnNvbiwgU2VwZW1iZXIg
MTQsIDIwMDEKKworICAgIHYtLTsKKyAgICB2IHw9IHYgPj4gMTsKKyAgICB2IHw9IHYgPj4gMjsK
KyAgICB2IHw9IHYgPj4gNDsKKyAgICB2IHw9IHYgPj4gODsKKyAgICB2IHw9IHYgPj4gMTY7Cisg
ICAgdisrOworCisgICAgcmV0dXJuIHY7Cit9CisKK2NsYXNzIFByb3BlcnR5VGFibGUgZmluYWwg
OiBwdWJsaWMgSlNDZWxsIHsKKworICAgIC8vIFRoaXMgaXMgdGhlIGltcGxlbWVudGF0aW9uIGZv
ciAnaXRlcmF0b3InIGFuZCAnY29uc3RfaXRlcmF0b3InLAorICAgIC8vIHVzZWQgZm9yIGl0ZXJh
dGluZyBvdmVyIHRoZSB0YWJsZSBpbiBpbnNlcnRpb24gb3JkZXIuCisgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgVD4KKyAgICBjbGFzcyBvcmRlcmVkX2l0ZXJhdG9yIHsKKyAgICBwdWJsaWM6CisgICAg
ICAgIG9yZGVyZWRfaXRlcmF0b3I8VD4mIG9wZXJhdG9yKysoKQorICAgICAgICB7CisgICAgICAg
ICAgICBtX3ZhbHVlUHRyID0gc2tpcERlbGV0ZWRFbnRyaWVzKG1fdmFsdWVQdHIgKyAxLCBtX2Vu
ZFZhbHVlUHRyKTsKKyAgICAgICAgICAgIHJldHVybiAqdGhpczsKKyAgICAgICAgfQorCisgICAg
ICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBvcmRlcmVkX2l0ZXJhdG9yPFQ+JiBvdGhlcikKKyAg
ICAgICAgeworICAgICAgICAgICAgcmV0dXJuIG1fdmFsdWVQdHIgPT0gb3RoZXIubV92YWx1ZVB0
cjsKKyAgICAgICAgfQorCisgICAgICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBvcmRlcmVkX2l0
ZXJhdG9yPFQ+JiBvdGhlcikKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIG1fdmFsdWVQ
dHIgIT0gb3RoZXIubV92YWx1ZVB0cjsKKyAgICAgICAgfQorCisgICAgICAgIFQmIG9wZXJhdG9y
KigpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiAqbV92YWx1ZVB0cjsKKyAgICAgICAg
fQorCisgICAgICAgIFQqIG9wZXJhdG9yLT4oKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1
cm4gbV92YWx1ZVB0cjsKKyAgICAgICAgfQorCisgICAgICAgIG9yZGVyZWRfaXRlcmF0b3IoVCog
dmFsdWVQdHIsIFQqIGVuZFZhbHVlUHRyKQorICAgICAgICAgICAgOiBtX3ZhbHVlUHRyKHZhbHVl
UHRyKQorICAgICAgICAgICAgLCBtX2VuZFZhbHVlUHRyKGVuZFZhbHVlUHRyKQorICAgICAgICB7
CisgICAgICAgIH0KKworICAgIHByaXZhdGU6CisgICAgICAgIFQqIG1fdmFsdWVQdHI7CisgICAg
ICAgIFQqIG1fZW5kVmFsdWVQdHI7CisgICAgfTsKKworcHVibGljOgorICAgIHR5cGVkZWYgSlND
ZWxsIEJhc2U7CisgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9
IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgU3RydWN0dXJlSXNJbW1vcnRhbDsKKworICAgIHRlbXBs
YXRlPHR5cGVuYW1lIENlbGxUeXBlLCBTdWJzcGFjZUFjY2Vzcz4KKyAgICBzdGF0aWMgSXNvU3Vi
c3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKKyAgICB7CisgICAgICAgIHJldHVybiAmdm0ucHJv
cGVydHlUYWJsZVNwYWNlOworICAgIH0KKworICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBuZWVk
c0Rlc3RydWN0aW9uID0gdHJ1ZTsKKyAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCopOwor
ICAgIERFQ0xBUkVfVklTSVRfQ0hJTERSRU47CisKKyAgICBERUNMQVJFX0VYUE9SVF9JTkZPOwor
CisgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCisgICAgeworICAgICAgICBy
ZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBl
SW5mbyhDZWxsVHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOworICAgIH0KKworICAgIHR5
cGVkZWYgVW5pcXVlZFN0cmluZ0ltcGwqIEtleVR5cGU7CisgICAgdHlwZWRlZiBQcm9wZXJ0eU1h
cEVudHJ5IFZhbHVlVHlwZTsKKworICAgIC8vIFRoZSBpbiBvcmRlciBpdGVyYXRvciBwcm92aWRl
cyBvdmVybG9hZGVkICogYW5kIC0+IHRvIGFjY2VzcyB0aGUgVmFsdWUgYXQgdGhlIGN1cnJlbnQg
cG9zaXRpb24uCisgICAgdHlwZWRlZiBvcmRlcmVkX2l0ZXJhdG9yPFZhbHVlVHlwZT4gaXRlcmF0
b3I7CisgICAgdHlwZWRlZiBvcmRlcmVkX2l0ZXJhdG9yPGNvbnN0IFZhbHVlVHlwZT4gY29uc3Rf
aXRlcmF0b3I7CisKKyAgICAvLyBUaGUgZmluZF9pdGVyYXRvciBpcyBhIHBhaXIgb2YgYSBwb2lu
dGVyIHRvIGEgVmFsdWUqIGFuIHRoZSBlbnRyeSBpbiB0aGUgaW5kZXguCisgICAgLy8gSWYgJ2Zp
bmQnIGRvZXMgbm90IGZpbmQgYW4gZW50cnkgdGhlbiBpdGVyLmZpcnN0IHdpbGwgYmUgMCwgYW5k
IGl0ZXIuc2Vjb25kIHdpbGwKKyAgICAvLyBnaXZlIHRoZSBwb2ludCBpbiBtX2luZGV4IHdoZXJl
IGFuIGVudHJ5IHNob3VsZCBiZSBpbnNlcnRlZC4KKyAgICB0eXBlZGVmIHN0ZDo6cGFpcjxWYWx1
ZVR5cGUqLCB1bnNpZ25lZD4gZmluZF9pdGVyYXRvcjsKKworICAgIC8vIENvbnN0cnVjdG9yIGlz
IHBhc3NlZCBhbiBpbml0aWFsIGNhcGFjaXR5LCBhIFByb3BlcnR5VGFibGUgdG8gY29weSwgb3Ig
Ym90aC4KKyAgICBzdGF0aWMgUHJvcGVydHlUYWJsZSogY3JlYXRlKFZNJiwgdW5zaWduZWQgaW5p
dGlhbENhcGFjaXR5KTsKKyAgICBzdGF0aWMgUHJvcGVydHlUYWJsZSogY2xvbmUoVk0mLCBjb25z
dCBQcm9wZXJ0eVRhYmxlJik7CisgICAgc3RhdGljIFByb3BlcnR5VGFibGUqIGNsb25lKFZNJiwg
dW5zaWduZWQgaW5pdGlhbENhcGFjaXR5LCBjb25zdCBQcm9wZXJ0eVRhYmxlJik7CisgICAgflBy
b3BlcnR5VGFibGUoKTsKKworICAgIC8vIE9yZGVyZWQgaXRlcmF0aW9uIG1ldGhvZHMuCisgICAg
aXRlcmF0b3IgYmVnaW4oKTsKKyAgICBpdGVyYXRvciBlbmQoKTsKKyAgICBjb25zdF9pdGVyYXRv
ciBiZWdpbigpIGNvbnN0OworICAgIGNvbnN0X2l0ZXJhdG9yIGVuZCgpIGNvbnN0OworCisgICAg
Ly8gRmluZCBhIHZhbHVlIGluIHRoZSB0YWJsZS4KKyAgICBmaW5kX2l0ZXJhdG9yIGZpbmQoY29u
c3QgS2V5VHlwZSYpOworICAgIFZhbHVlVHlwZSogZ2V0KGNvbnN0IEtleVR5cGUmKTsKKyAgICAv
LyBBZGQgYSB2YWx1ZSB0byB0aGUgdGFibGUKKyAgICBzdGQ6OnBhaXI8ZmluZF9pdGVyYXRvciwg
Ym9vbD4gV0FSTl9VTlVTRURfUkVUVVJOIGFkZChWTSYsIGNvbnN0IFZhbHVlVHlwZSYgZW50cnkp
OworICAgIC8vIFJlbW92ZSBhIHZhbHVlIGZyb20gdGhlIHRhYmxlLgorICAgIHZvaWQgcmVtb3Zl
KFZNJiwgY29uc3QgZmluZF9pdGVyYXRvciYgaXRlcik7CisgICAgdm9pZCByZW1vdmUoVk0mLCBj
b25zdCBLZXlUeXBlJiBrZXkpOworCisgICAgLy8gUmV0dXJucyB0aGUgbnVtYmVyIG9mIHZhbHVl
cyBpbiB0aGUgaGFzaHRhYmxlLgorICAgIHVuc2lnbmVkIHNpemUoKSBjb25zdDsKKworICAgIC8v
IENoZWNrcyBpZiB0aGVyZSBhcmUgYW55IHZhbHVlcyBpbiB0aGUgaGFzaHRhYmxlLgorICAgIGJv
b2wgaXNFbXB0eSgpIGNvbnN0OworCisgICAgLy8gTnVtYmVyIG9mIHNsb3RzIGluIHRoZSBwcm9w
ZXJ0eSBzdG9yYWdlIGFycmF5IGluIHVzZSwgaW5jbHVkZWQgZGVsZXRlZE9mZnNldHMuCisgICAg
dW5zaWduZWQgcHJvcGVydHlTdG9yYWdlU2l6ZSgpIGNvbnN0OworCisgICAgLy8gVXNlZCB0byBt
YWludGFpbiBhIGxpc3Qgb2YgdW51c2VkIGVudHJpZXMgaW4gdGhlIHByb3BlcnR5IHN0b3JhZ2Uu
CisgICAgdm9pZCBjbGVhckRlbGV0ZWRPZmZzZXRzKCk7CisgICAgYm9vbCBoYXNEZWxldGVkT2Zm
c2V0KCk7CisgICAgUHJvcGVydHlPZmZzZXQgZ2V0RGVsZXRlZE9mZnNldCgpOworICAgIHZvaWQg
YWRkRGVsZXRlZE9mZnNldChQcm9wZXJ0eU9mZnNldCk7CisgICAgCisgICAgUHJvcGVydHlPZmZz
ZXQgbmV4dE9mZnNldChQcm9wZXJ0eU9mZnNldCBpbmxpbmVDYXBhY2l0eSk7CisKKyAgICAvLyBD
b3B5IHRoaXMgUHJvcGVydHlUYWJsZSwgZW5zdXJpbmcgdGhlIGNvcHkgaGFzIGF0IGxlYXN0IHRo
ZSBjYXBhY2l0eSBwcm92aWRlZC4KKyAgICBQcm9wZXJ0eVRhYmxlKiBjb3B5KFZNJiwgdW5zaWdu
ZWQgbmV3Q2FwYWNpdHkpOworCisjaWZuZGVmIE5ERUJVRworICAgIHNpemVfdCBzaXplSW5NZW1v
cnkoKTsKKyAgICB2b2lkIGNoZWNrQ29uc2lzdGVuY3koKTsKKyNlbmRpZgorICAgIAorICAgIHN0
YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZJbmRleFNpemUoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VU
T0YoUHJvcGVydHlUYWJsZSwgbV9pbmRleFNpemUpOyB9CisgICAgc3RhdGljIHB0cmRpZmZfdCBv
ZmZzZXRPZkluZGV4TWFzaygpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihQcm9wZXJ0eVRhYmxl
LCBtX2luZGV4TWFzayk7IH0KKyAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9mSW5kZXgoKSB7
IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoUHJvcGVydHlUYWJsZSwgbV9pbmRleCk7IH0KKworICAg
IHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgRW1wdHlFbnRyeUluZGV4ID0gMDsKKworcHJpdmF0
ZToKKyAgICBQcm9wZXJ0eVRhYmxlKFZNJiwgdW5zaWduZWQgaW5pdGlhbENhcGFjaXR5KTsKKyAg
ICBQcm9wZXJ0eVRhYmxlKFZNJiwgY29uc3QgUHJvcGVydHlUYWJsZSYpOworICAgIFByb3BlcnR5
VGFibGUoVk0mLCB1bnNpZ25lZCBpbml0aWFsQ2FwYWNpdHksIGNvbnN0IFByb3BlcnR5VGFibGUm
KTsKKworICAgIFByb3BlcnR5VGFibGUoY29uc3QgUHJvcGVydHlUYWJsZSYpOworCisgICAgdm9p
ZCBmaW5pc2hDcmVhdGlvbihWTSYpOworCisgICAgLy8gVXNlZCB0byBpbnNlcnQgYSB2YWx1ZSBr
bm93biBub3QgdG8gYmUgaW4gdGhlIHRhYmxlLCBhbmQgd2hlcmUgd2Uga25vdyBjYXBhY2l0eSB0
byBiZSBhdmFpbGFibGUuCisgICAgdm9pZCByZWluc2VydChjb25zdCBWYWx1ZVR5cGUmIGVudHJ5
KTsKKworICAgIC8vIFJlaGFzaCB0aGUgdGFibGUuICBVc2VkIHRvIGdyb3csIG9yIHRvIHJlY292
ZXIgZGVsZXRlZCBzbG90cy4KKyAgICB2b2lkIHJlaGFzaChWTSYsIHVuc2lnbmVkIG5ld0NhcGFj
aXR5KTsKKworICAgIC8vIFRoZSBjYXBhY2l0eSBvZiB0aGUgdGFibGUgb2YgdmFsdWVzIGlzIGhh
bGYgb2YgdGhlIHNpemUgb2YgdGhlIGluZGV4LgorICAgIHVuc2lnbmVkIHRhYmxlQ2FwYWNpdHko
KSBjb25zdDsKKworICAgIC8vIFdlIGtlZXAgYW4gZXh0cmEgZGVsZXRlZCBzbG90IGFmdGVyIHRo
ZSBhcnJheSB0byBtYWtlIGl0ZXJhdGlvbiB3b3JrLAorICAgIC8vIGFuZCB0byB1c2UgZm9yIGRl
bGV0ZWQgdmFsdWVzLiBJbmRleCB2YWx1ZXMgaW50byB0aGUgYXJyYXkgYXJlIDEtYmFzZWQsCisg
ICAgLy8gc28gdGhpcyBpcyB0YWJsZUNhcGFjaXR5KCkgKyAxLgorICAgIC8vIEZvciBleGFtcGxl
LCBpZiBtX3RhYmxlU2l6ZSBpcyAxNiwgdGhlbiB0YWJsZUNhcGFjaXR5KCkgaXMgOCAtIGJ1dCB0
aGUKKyAgICAvLyB2YWx1ZXMgYXJyYXkgaXMgYWN0dWFsbHkgOSBsb25nICh0aGUgOXRoIHVzZWQg
Zm9yIHRoZSBkZWxldGVkIHZhbHVlLworICAgIC8vIGl0ZXJhdGlvbiBndWFyZCkuICBUaGUgOCB2
YWxpZCBlbnRyaWVzIGFyZSBudW1iZXJlZCAxLi44LCBzbyB0aGUKKyAgICAvLyBkZWxldGVkIGlu
ZGV4IGlzIDkgKDAgYmVpbmcgcmVzZXJ2ZWQgZm9yIGVtcHR5KS4KKyAgICB1bnNpZ25lZCBkZWxl
dGVkRW50cnlJbmRleCgpIGNvbnN0OworCisgICAgLy8gVXNlZCBpbiBpdGVyYXRvciBjcmVhdGlv
bi9wcm9ncmVzc2lvbi4KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorICAgIHN0YXRpYyBUKiBz
a2lwRGVsZXRlZEVudHJpZXMoVCogdmFsdWVQdHIsIFQqIGVuZFZhbHVlUHRyKTsKKworICAgIC8v
IFRoZSB0YWJsZSBvZiB2YWx1ZXMgbGllcyBhZnRlciB0aGUgaGFzaCBpbmRleC4KKyAgICBWYWx1
ZVR5cGUqIHRhYmxlKCk7CisgICAgY29uc3QgVmFsdWVUeXBlKiB0YWJsZSgpIGNvbnN0OworCisg
ICAgVmFsdWVUeXBlKiB0YWJsZUVuZCgpIHsgcmV0dXJuIHRhYmxlKCkgKyB1c2VkQ291bnQoKTsg
fQorICAgIGNvbnN0IFZhbHVlVHlwZSogdGFibGVFbmQoKSBjb25zdCB7IHJldHVybiB0YWJsZSgp
ICsgdXNlZENvdW50KCk7IH0KKworICAgIC8vIHRvdGFsIG51bWJlciBvZiAgdXNlZCBlbnRyaWVz
IGluIHRoZSB2YWx1ZXMgYXJyYXkgLSBieSBlaXRoZXIgdmFsaWQgZW50cmllcywgb3IgZGVsZXRl
ZCBvbmVzLgorICAgIHVuc2lnbmVkIHVzZWRDb3VudCgpIGNvbnN0OworCisgICAgLy8gVGhlIHNp
emUgaW4gYnl0ZXMgb2YgZGF0YSBuZWVkZWQgZm9yIGJ5IHRoZSB0YWJsZS4KKyAgICBzaXplX3Qg
ZGF0YVNpemUoKTsKKworICAgIC8vIENhbGN1bGF0ZXMgdGhlIGFwcHJvcHJpYXRlIHRhYmxlIHNp
emUgKHJvdW5kcyB1cCB0byBhIHBvd2VyIG9mIHR3bykuCisgICAgc3RhdGljIHVuc2lnbmVkIHNp
emVGb3JDYXBhY2l0eSh1bnNpZ25lZCBjYXBhY2l0eSk7CisKKyAgICAvLyBDaGVjayBpZiBjYXBh
Y2l0eSBpcyBhdmFpbGFibGUuCisgICAgYm9vbCBjYW5JbnNlcnQoKTsKKworICAgIHVuc2lnbmVk
IG1faW5kZXhTaXplOworICAgIHVuc2lnbmVkIG1faW5kZXhNYXNrOworICAgIHVuc2lnbmVkKiBt
X2luZGV4OworICAgIHVuc2lnbmVkIG1fa2V5Q291bnQ7CisgICAgdW5zaWduZWQgbV9kZWxldGVk
Q291bnQ7CisgICAgc3RkOjp1bmlxdWVfcHRyPFZlY3RvcjxQcm9wZXJ0eU9mZnNldD4+IG1fZGVs
ZXRlZE9mZnNldHM7CisKKyAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIE1pbmltdW1UYWJs
ZVNpemUgPSAxNjsKK307CisKK2lubGluZSBQcm9wZXJ0eVRhYmxlOjppdGVyYXRvciBQcm9wZXJ0
eVRhYmxlOjpiZWdpbigpCit7CisgICAgYXV0byogdGFibGVFbmQgPSB0aGlzLT50YWJsZUVuZCgp
OworICAgIHJldHVybiBpdGVyYXRvcihza2lwRGVsZXRlZEVudHJpZXModGFibGUoKSwgdGFibGVF
bmQpLCB0YWJsZUVuZCk7Cit9CisKK2lubGluZSBQcm9wZXJ0eVRhYmxlOjppdGVyYXRvciBQcm9w
ZXJ0eVRhYmxlOjplbmQoKQoreworICAgIGF1dG8qIHRhYmxlRW5kID0gdGhpcy0+dGFibGVFbmQo
KTsKKyAgICByZXR1cm4gaXRlcmF0b3IodGFibGVFbmQsIHRhYmxlRW5kKTsKK30KKworaW5saW5l
IFByb3BlcnR5VGFibGU6OmNvbnN0X2l0ZXJhdG9yIFByb3BlcnR5VGFibGU6OmJlZ2luKCkgY29u
c3QKK3sKKyAgICBhdXRvKiB0YWJsZUVuZCA9IHRoaXMtPnRhYmxlRW5kKCk7CisgICAgcmV0dXJu
IGNvbnN0X2l0ZXJhdG9yKHNraXBEZWxldGVkRW50cmllcyh0YWJsZSgpLCB0YWJsZUVuZCksIHRh
YmxlRW5kKTsKK30KKworaW5saW5lIFByb3BlcnR5VGFibGU6OmNvbnN0X2l0ZXJhdG9yIFByb3Bl
cnR5VGFibGU6OmVuZCgpIGNvbnN0Cit7CisgICAgYXV0byogdGFibGVFbmQgPSB0aGlzLT50YWJs
ZUVuZCgpOworICAgIHJldHVybiBjb25zdF9pdGVyYXRvcih0YWJsZUVuZCwgdGFibGVFbmQpOwor
fQorCitpbmxpbmUgUHJvcGVydHlUYWJsZTo6ZmluZF9pdGVyYXRvciBQcm9wZXJ0eVRhYmxlOjpm
aW5kKGNvbnN0IEtleVR5cGUmIGtleSkKK3sKKyAgICBBU1NFUlQoa2V5KTsKKyAgICBBU1NFUlQo
a2V5LT5pc0F0b20oKSB8fCBrZXktPmlzU3ltYm9sKCkpOworICAgIHVuc2lnbmVkIGhhc2ggPSBJ
ZGVudGlmaWVyUmVwSGFzaDo6aGFzaChrZXkpOworCisjaWYgRFVNUF9QUk9QRVJUWU1BUF9TVEFU
UworICAgICsrcHJvcGVydHlNYXBIYXNoVGFibGVTdGF0cy0+bnVtRmluZHM7CisjZW5kaWYKKwor
ICAgIHdoaWxlICh0cnVlKSB7CisgICAgICAgIHVuc2lnbmVkIGVudHJ5SW5kZXggPSBtX2luZGV4
W2hhc2ggJiBtX2luZGV4TWFza107CisgICAgICAgIGlmIChlbnRyeUluZGV4ID09IEVtcHR5RW50
cnlJbmRleCkKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfcGFpcigoVmFsdWVUeXBlKilu
dWxscHRyLCBoYXNoICYgbV9pbmRleE1hc2spOworICAgICAgICBpZiAoa2V5ID09IHRhYmxlKClb
ZW50cnlJbmRleCAtIDFdLmtleSkKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfcGFpcigm
dGFibGUoKVtlbnRyeUluZGV4IC0gMV0sIGhhc2ggJiBtX2luZGV4TWFzayk7CisKKyNpZiBEVU1Q
X1BST1BFUlRZTUFQX1NUQVRTCisgICAgICAgICsrcHJvcGVydHlNYXBIYXNoVGFibGVTdGF0cy0+
bnVtQ29sbGlzaW9uczsKKyNlbmRpZgorCisjaWYgRFVNUF9QUk9QRVJUWU1BUF9DT0xMSVNJT05T
CisgICAgICAgIGRhdGFMb2coIlByb3BlcnR5VGFibGUgY29sbGlzaW9uIGZvciAiLCBrZXksICIg
KCIsIGhhc2gsICIpXG4iKTsKKyAgICAgICAgZGF0YUxvZygiQ29sbGlkZWQgd2l0aCAiLCB0YWJs
ZSgpW2VudHJ5SW5kZXggLSAxXS5rZXksICIoIiwgSWRlbnRpZmllclJlcEhhc2g6Omhhc2godGFi
bGUoKVtlbnRyeUluZGV4IC0gMV0ua2V5KSwgIilcbiIpOworI2VuZGlmCisKKyAgICAgICAgaGFz
aCsrOworICAgIH0KK30KKworaW5saW5lIFByb3BlcnR5VGFibGU6OlZhbHVlVHlwZSogUHJvcGVy
dHlUYWJsZTo6Z2V0KGNvbnN0IEtleVR5cGUmIGtleSkKK3sKKyAgICBBU1NFUlQoa2V5KTsKKyAg
ICBBU1NFUlQoa2V5LT5pc0F0b20oKSB8fCBrZXktPmlzU3ltYm9sKCkpOworICAgIEFTU0VSVChr
ZXkgIT0gUFJPUEVSVFlfTUFQX0RFTEVURURfRU5UUllfS0VZKTsKKworICAgIGlmICghbV9rZXlD
b3VudCkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICB1bnNpZ25lZCBoYXNoID0gSWRl
bnRpZmllclJlcEhhc2g6Omhhc2goa2V5KTsKKworI2lmIERVTVBfUFJPUEVSVFlNQVBfU1RBVFMK
KyAgICArK3Byb3BlcnR5TWFwSGFzaFRhYmxlU3RhdHMtPm51bUxvb2t1cHM7CisjZW5kaWYKKwor
ICAgIHdoaWxlICh0cnVlKSB7CisgICAgICAgIHVuc2lnbmVkIGVudHJ5SW5kZXggPSBtX2luZGV4
W2hhc2ggJiBtX2luZGV4TWFza107CisgICAgICAgIGlmIChlbnRyeUluZGV4ID09IEVtcHR5RW50
cnlJbmRleCkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICBpZiAoa2V5ID09
IHRhYmxlKClbZW50cnlJbmRleCAtIDFdLmtleSkgeworICAgICAgICAgICAgQVNTRVJUKCFtX2Rl
bGV0ZWRPZmZzZXRzIHx8ICFtX2RlbGV0ZWRPZmZzZXRzLT5jb250YWlucyh0YWJsZSgpW2VudHJ5
SW5kZXggLSAxXS5vZmZzZXQpKTsKKyAgICAgICAgICAgIHJldHVybiAmdGFibGUoKVtlbnRyeUlu
ZGV4IC0gMV07CisgICAgICAgIH0KKworI2lmIERVTVBfUFJPUEVSVFlNQVBfU1RBVFMKKyAgICAg
ICAgKytwcm9wZXJ0eU1hcEhhc2hUYWJsZVN0YXRzLT5udW1Mb29rdXBQcm9iaW5nOworI2VuZGlm
CisKKyAgICAgICAgaGFzaCsrOworICAgIH0KK30KKworaW5saW5lIHN0ZDo6cGFpcjxQcm9wZXJ0
eVRhYmxlOjpmaW5kX2l0ZXJhdG9yLCBib29sPiBXQVJOX1VOVVNFRF9SRVRVUk4gUHJvcGVydHlU
YWJsZTo6YWRkKFZNJiB2bSwgY29uc3QgVmFsdWVUeXBlJiBlbnRyeSkKK3sKKyAgICBBU1NFUlQo
IW1fZGVsZXRlZE9mZnNldHMgfHwgIW1fZGVsZXRlZE9mZnNldHMtPmNvbnRhaW5zKGVudHJ5Lm9m
ZnNldCkpOworCisgICAgLy8gTG9vayBmb3IgYSB2YWx1ZSB3aXRoIGEgbWF0Y2hpbmcga2V5IGFs
cmVhZHkgaW4gdGhlIGFycmF5LgorICAgIGZpbmRfaXRlcmF0b3IgaXRlciA9IGZpbmQoZW50cnku
a2V5KTsKKyAgICBpZiAoaXRlci5maXJzdCkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV9wYWly
KGl0ZXIsIGZhbHNlKTsKKworI2lmIERVTVBfUFJPUEVSVFlNQVBfU1RBVFMKKyAgICArK3Byb3Bl
cnR5TWFwSGFzaFRhYmxlU3RhdHMtPm51bUFkZHM7CisjZW5kaWYKKworICAgIC8vIFJlZiB0aGUg
a2V5CisgICAgZW50cnkua2V5LT5yZWYoKTsKKworICAgIC8vIGVuc3VyZSBjYXBhY2l0eSBpcyBh
dmFpbGFibGUuCisgICAgaWYgKCFjYW5JbnNlcnQoKSkgeworICAgICAgICByZWhhc2godm0sIG1f
a2V5Q291bnQgKyAxKTsKKyAgICAgICAgaXRlciA9IGZpbmQoZW50cnkua2V5KTsKKyAgICAgICAg
QVNTRVJUKCFpdGVyLmZpcnN0KTsKKyAgICB9CisKKyAgICAvLyBBbGxvY2F0ZSBhIHNsb3QgaW4g
dGhlIGhhc2h0YWJsZSwgYW5kIHNldCB0aGUgaW5kZXggdG8gcmVmZXJlbmNlIHRoaXMuCisgICAg
dW5zaWduZWQgZW50cnlJbmRleCA9IHVzZWRDb3VudCgpICsgMTsKKyAgICBtX2luZGV4W2l0ZXIu
c2Vjb25kXSA9IGVudHJ5SW5kZXg7CisgICAgaXRlci5maXJzdCA9ICZ0YWJsZSgpW2VudHJ5SW5k
ZXggLSAxXTsKKyAgICAqaXRlci5maXJzdCA9IGVudHJ5OworCisgICAgKyttX2tleUNvdW50Owor
ICAgIAorICAgIHJldHVybiBzdGQ6Om1ha2VfcGFpcihpdGVyLCB0cnVlKTsKK30KKworaW5saW5l
IHZvaWQgUHJvcGVydHlUYWJsZTo6cmVtb3ZlKFZNJiB2bSwgY29uc3QgZmluZF9pdGVyYXRvciYg
aXRlcikKK3sKKyAgICAvLyBSZW1vdmluZyBhIGtleSB0aGF0IGRvZXNuJ3QgZXhpc3QgZG9lcyBu
b3RoaW5nIQorICAgIGlmICghaXRlci5maXJzdCkKKyAgICAgICAgcmV0dXJuOworCisjaWYgRFVN
UF9QUk9QRVJUWU1BUF9TVEFUUworICAgICsrcHJvcGVydHlNYXBIYXNoVGFibGVTdGF0cy0+bnVt
UmVtb3ZlczsKKyNlbmRpZgorCisgICAgLy8gUmVwbGFjZSB0aGlzIG9uZSBlbGVtZW50IHdpdGgg
dGhlIGRlbGV0ZWQgc2VudGluZWwuIEFsc28gY2xlYXIgb3V0CisgICAgLy8gdGhlIGVudHJ5IHNv
IHdlIGNhbiBpdGVyYXRlIGFsbCB0aGUgZW50cmllcyBhcyBuZWVkZWQuCisgICAgbV9pbmRleFtp
dGVyLnNlY29uZF0gPSBkZWxldGVkRW50cnlJbmRleCgpOworICAgIGl0ZXIuZmlyc3QtPmtleS0+
ZGVyZWYoKTsKKyAgICBpdGVyLmZpcnN0LT5rZXkgPSBQUk9QRVJUWV9NQVBfREVMRVRFRF9FTlRS
WV9LRVk7CisKKyAgICBBU1NFUlQobV9rZXlDb3VudCA+PSAxKTsKKyAgICAtLW1fa2V5Q291bnQ7
CisgICAgKyttX2RlbGV0ZWRDb3VudDsKKworICAgIGlmIChtX2RlbGV0ZWRDb3VudCAqIDQgPj0g
bV9pbmRleFNpemUpCisgICAgICAgIHJlaGFzaCh2bSwgbV9rZXlDb3VudCk7Cit9CisKK2lubGlu
ZSB2b2lkIFByb3BlcnR5VGFibGU6OnJlbW92ZShWTSYgdm0sIGNvbnN0IEtleVR5cGUmIGtleSkK
K3sKKyAgICByZW1vdmUodm0sIGZpbmQoa2V5KSk7Cit9CisKKy8vIHJldHVybnMgdGhlIG51bWJl
ciBvZiB2YWx1ZXMgaW4gdGhlIGhhc2h0YWJsZS4KK2lubGluZSB1bnNpZ25lZCBQcm9wZXJ0eVRh
YmxlOjpzaXplKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9rZXlDb3VudDsKK30KKworaW5saW5l
IGJvb2wgUHJvcGVydHlUYWJsZTo6aXNFbXB0eSgpIGNvbnN0Cit7CisgICAgcmV0dXJuICFtX2tl
eUNvdW50OworfQorCitpbmxpbmUgdW5zaWduZWQgUHJvcGVydHlUYWJsZTo6cHJvcGVydHlTdG9y
YWdlU2l6ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIHNpemUoKSArIChtX2RlbGV0ZWRPZmZzZXRz
ID8gbV9kZWxldGVkT2Zmc2V0cy0+c2l6ZSgpIDogMCk7Cit9CisKK2lubGluZSB2b2lkIFByb3Bl
cnR5VGFibGU6OmNsZWFyRGVsZXRlZE9mZnNldHMoKQoreworICAgIG1fZGVsZXRlZE9mZnNldHMg
PSBudWxscHRyOworfQorCitpbmxpbmUgYm9vbCBQcm9wZXJ0eVRhYmxlOjpoYXNEZWxldGVkT2Zm
c2V0KCkKK3sKKyAgICByZXR1cm4gbV9kZWxldGVkT2Zmc2V0cyAmJiAhbV9kZWxldGVkT2Zmc2V0
cy0+aXNFbXB0eSgpOworfQorCitpbmxpbmUgUHJvcGVydHlPZmZzZXQgUHJvcGVydHlUYWJsZTo6
Z2V0RGVsZXRlZE9mZnNldCgpCit7CisgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0ID0gbV9kZWxl
dGVkT2Zmc2V0cy0+bGFzdCgpOworICAgIG1fZGVsZXRlZE9mZnNldHMtPnJlbW92ZUxhc3QoKTsK
KyAgICByZXR1cm4gb2Zmc2V0OworfQorCitpbmxpbmUgdm9pZCBQcm9wZXJ0eVRhYmxlOjphZGRE
ZWxldGVkT2Zmc2V0KFByb3BlcnR5T2Zmc2V0IG9mZnNldCkKK3sKKyAgICBpZiAoIW1fZGVsZXRl
ZE9mZnNldHMpCisgICAgICAgIG1fZGVsZXRlZE9mZnNldHMgPSBtYWtlVW5pcXVlPFZlY3RvcjxQ
cm9wZXJ0eU9mZnNldD4+KCk7CisgICAgQVNTRVJUKCFtX2RlbGV0ZWRPZmZzZXRzLT5jb250YWlu
cyhvZmZzZXQpKTsKKyAgICBtX2RlbGV0ZWRPZmZzZXRzLT5hcHBlbmQob2Zmc2V0KTsKK30KKwor
aW5saW5lIFByb3BlcnR5T2Zmc2V0IFByb3BlcnR5VGFibGU6Om5leHRPZmZzZXQoUHJvcGVydHlP
ZmZzZXQgaW5saW5lQ2FwYWNpdHkpCit7CisgICAgaWYgKGhhc0RlbGV0ZWRPZmZzZXQoKSkKKyAg
ICAgICAgcmV0dXJuIGdldERlbGV0ZWRPZmZzZXQoKTsKKworICAgIHJldHVybiBvZmZzZXRGb3JQ
cm9wZXJ0eU51bWJlcihzaXplKCksIGlubGluZUNhcGFjaXR5KTsKK30KKworaW5saW5lIFByb3Bl
cnR5VGFibGUqIFByb3BlcnR5VGFibGU6OmNvcHkoVk0mIHZtLCB1bnNpZ25lZCBuZXdDYXBhY2l0
eSkKK3sKKyAgICBBU1NFUlQobmV3Q2FwYWNpdHkgPj0gbV9rZXlDb3VudCk7CisKKyAgICAvLyBG
YXN0IGNhc2U7IGlmIHRoZSBuZXcgdGFibGUgd2lsbCBiZSB0aGUgc2FtZSBtX2luZGV4U2l6ZSBh
cyB0aGlzIG9uZSwgd2UgY2FuIG1lbWNweSBpdCwKKyAgICAvLyBzYXZlIHJlaGFzaGluZyBhbGwg
a2V5cy4KKyAgICBpZiAoc2l6ZUZvckNhcGFjaXR5KG5ld0NhcGFjaXR5KSA9PSBtX2luZGV4U2l6
ZSkKKyAgICAgICAgcmV0dXJuIFByb3BlcnR5VGFibGU6OmNsb25lKHZtLCAqdGhpcyk7CisgICAg
cmV0dXJuIFByb3BlcnR5VGFibGU6OmNsb25lKHZtLCBuZXdDYXBhY2l0eSwgKnRoaXMpOworfQor
CisjaWZuZGVmIE5ERUJVRworaW5saW5lIHNpemVfdCBQcm9wZXJ0eVRhYmxlOjpzaXplSW5NZW1v
cnkoKQoreworICAgIHNpemVfdCByZXN1bHQgPSBzaXplb2YoUHJvcGVydHlUYWJsZSkgKyBkYXRh
U2l6ZSgpOworICAgIGlmIChtX2RlbGV0ZWRPZmZzZXRzKQorICAgICAgICByZXN1bHQgKz0gKG1f
ZGVsZXRlZE9mZnNldHMtPmNhcGFjaXR5KCkgKiBzaXplb2YoUHJvcGVydHlPZmZzZXQpKTsKKyAg
ICByZXR1cm4gcmVzdWx0OworfQorI2VuZGlmCisKK2lubGluZSB2b2lkIFByb3BlcnR5VGFibGU6
OnJlaW5zZXJ0KGNvbnN0IFZhbHVlVHlwZSYgZW50cnkpCit7CisjaWYgRFVNUF9QUk9QRVJUWU1B
UF9TVEFUUworICAgICsrcHJvcGVydHlNYXBIYXNoVGFibGVTdGF0cy0+bnVtUmVpbnNlcnRzOwor
I2VuZGlmCisKKyAgICAvLyBVc2VkIHRvIGluc2VydCBhIHZhbHVlIGtub3duIG5vdCB0byBiZSBp
biB0aGUgdGFibGUsIGFuZCB3aGVyZQorICAgIC8vIHdlIGtub3cgY2FwYWNpdHkgdG8gYmUgYXZh
aWxhYmxlLgorICAgIEFTU0VSVChjYW5JbnNlcnQoKSk7CisgICAgZmluZF9pdGVyYXRvciBpdGVy
ID0gZmluZChlbnRyeS5rZXkpOworICAgIEFTU0VSVCghaXRlci5maXJzdCk7CisKKyAgICB1bnNp
Z25lZCBlbnRyeUluZGV4ID0gdXNlZENvdW50KCkgKyAxOworICAgIG1faW5kZXhbaXRlci5zZWNv
bmRdID0gZW50cnlJbmRleDsKKyAgICB0YWJsZSgpW2VudHJ5SW5kZXggLSAxXSA9IGVudHJ5Owor
CisgICAgKyttX2tleUNvdW50OworfQorCitpbmxpbmUgdm9pZCBQcm9wZXJ0eVRhYmxlOjpyZWhh
c2goVk0mIHZtLCB1bnNpZ25lZCBuZXdDYXBhY2l0eSkKK3sKKyNpZiBEVU1QX1BST1BFUlRZTUFQ
X1NUQVRTCisgICAgKytwcm9wZXJ0eU1hcEhhc2hUYWJsZVN0YXRzLT5udW1SZWhhc2hlczsKKyNl
bmRpZgorCisgICAgc2l6ZV90IG9sZERhdGFTaXplID0gZGF0YVNpemUoKTsKKyAgICB1bnNpZ25l
ZCogb2xkRW50cnlJbmRpY2VzID0gbV9pbmRleDsKKyAgICBpdGVyYXRvciBpdGVyID0gdGhpcy0+
YmVnaW4oKTsKKyAgICBpdGVyYXRvciBlbmQgPSB0aGlzLT5lbmQoKTsKKworICAgIG1faW5kZXhT
aXplID0gc2l6ZUZvckNhcGFjaXR5KG5ld0NhcGFjaXR5KTsKKyAgICBtX2luZGV4TWFzayA9IG1f
aW5kZXhTaXplIC0gMTsKKyAgICBtX2tleUNvdW50ID0gMDsKKyAgICBtX2RlbGV0ZWRDb3VudCA9
IDA7CisKKyAgICBtX2luZGV4ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQqPihQcm9wZXJ0eVRhYmxl
TWFsbG9jOjp6ZXJvZWRNYWxsb2MoZGF0YVNpemUoKSkpOworCisgICAgZm9yICg7IGl0ZXIgIT0g
ZW5kOyArK2l0ZXIpIHsKKyAgICAgICAgQVNTRVJUKGNhbkluc2VydCgpKTsKKyAgICAgICAgcmVp
bnNlcnQoKml0ZXIpOworICAgIH0KKworICAgIFByb3BlcnR5VGFibGVNYWxsb2M6OmZyZWUob2xk
RW50cnlJbmRpY2VzKTsKKworICAgIGlmIChvbGREYXRhU2l6ZSA8IGRhdGFTaXplKCkpCisgICAg
ICAgIHZtLmhlYXAucmVwb3J0RXh0cmFNZW1vcnlBbGxvY2F0ZWQoZGF0YVNpemUoKSAtIG9sZERh
dGFTaXplKTsKK30KKworaW5saW5lIHVuc2lnbmVkIFByb3BlcnR5VGFibGU6OnRhYmxlQ2FwYWNp
dHkoKSBjb25zdCB7IHJldHVybiBtX2luZGV4U2l6ZSA+PiAxOyB9CisKK2lubGluZSB1bnNpZ25l
ZCBQcm9wZXJ0eVRhYmxlOjpkZWxldGVkRW50cnlJbmRleCgpIGNvbnN0IHsgcmV0dXJuIHRhYmxl
Q2FwYWNpdHkoKSArIDE7IH0KKwordGVtcGxhdGU8dHlwZW5hbWUgVD4KK2lubGluZSBUKiBQcm9w
ZXJ0eVRhYmxlOjpza2lwRGVsZXRlZEVudHJpZXMoVCogdmFsdWVQdHIsIFQqIGVuZFZhbHVlUHRy
KQoreworICAgIHdoaWxlICh2YWx1ZVB0ciA8IGVuZFZhbHVlUHRyICYmIHZhbHVlUHRyLT5rZXkg
PT0gUFJPUEVSVFlfTUFQX0RFTEVURURfRU5UUllfS0VZKQorICAgICAgICArK3ZhbHVlUHRyOwor
ICAgIHJldHVybiB2YWx1ZVB0cjsKK30KKworaW5saW5lIFByb3BlcnR5VGFibGU6OlZhbHVlVHlw
ZSogUHJvcGVydHlUYWJsZTo6dGFibGUoKQoreworICAgIC8vIFRoZSB0YWJsZSBvZiB2YWx1ZXMg
bGllcyBhZnRlciB0aGUgaGFzaCBpbmRleC4KKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdF9w
dHI8VmFsdWVUeXBlKj4obV9pbmRleCArIG1faW5kZXhTaXplKTsKK30KKworaW5saW5lIGNvbnN0
IFByb3BlcnR5VGFibGU6OlZhbHVlVHlwZSogUHJvcGVydHlUYWJsZTo6dGFibGUoKSBjb25zdAor
eworICAgIC8vIFRoZSB0YWJsZSBvZiB2YWx1ZXMgbGllcyBhZnRlciB0aGUgaGFzaCBpbmRleC4K
KyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdF9wdHI8Y29uc3QgVmFsdWVUeXBlKj4obV9pbmRl
eCArIG1faW5kZXhTaXplKTsKK30KKworaW5saW5lIHVuc2lnbmVkIFByb3BlcnR5VGFibGU6OnVz
ZWRDb3VudCgpIGNvbnN0Cit7CisgICAgLy8gVG90YWwgbnVtYmVyIG9mICB1c2VkIGVudHJpZXMg
aW4gdGhlIHZhbHVlcyBhcnJheSAtIGJ5IGVpdGhlciB2YWxpZCBlbnRyaWVzLCBvciBkZWxldGVk
IG9uZXMuCisgICAgcmV0dXJuIG1fa2V5Q291bnQgKyBtX2RlbGV0ZWRDb3VudDsKK30KKworaW5s
aW5lIHNpemVfdCBQcm9wZXJ0eVRhYmxlOjpkYXRhU2l6ZSgpCit7CisgICAgLy8gVGhlIHNpemUg
aW4gYnl0ZXMgb2YgZGF0YSBuZWVkZWQgZm9yIGJ5IHRoZSB0YWJsZS4KKyAgICAvLyBFbnN1cmUg
dGhhdCB0aGlzIGZ1bmN0aW9uIGNhbiBiZSBjYWxsZWQgY29uY3VycmVudGx5LgorICAgIHVuc2ln
bmVkIGluZGV4U2l6ZSA9IG1faW5kZXhTaXplOworICAgIHJldHVybiBpbmRleFNpemUgKiBzaXpl
b2YodW5zaWduZWQpICsgKChpbmRleFNpemUgPj4gMSkgKyAxKSAqIHNpemVvZihWYWx1ZVR5cGUp
OworfQorCitpbmxpbmUgdW5zaWduZWQgUHJvcGVydHlUYWJsZTo6c2l6ZUZvckNhcGFjaXR5KHVu
c2lnbmVkIGNhcGFjaXR5KQoreworICAgIGlmIChjYXBhY2l0eSA8IE1pbmltdW1UYWJsZVNpemUg
LyAyKQorICAgICAgICByZXR1cm4gTWluaW11bVRhYmxlU2l6ZTsKKyAgICByZXR1cm4gbmV4dFBv
d2VyT2YyKGNhcGFjaXR5ICsgMSkgKiAyOworfQorCitpbmxpbmUgYm9vbCBQcm9wZXJ0eVRhYmxl
OjpjYW5JbnNlcnQoKQoreworICAgIHJldHVybiB1c2VkQ291bnQoKSA8IHRhYmxlQ2FwYWNpdHko
KTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eVRhYmxlLmgKX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpBZGRlZDog
c3ZuOmVvbC1zdHlsZQojIyAtMCwwICsxICMjCituYXRpdmUKXCBObyBuZXdsaW5lIGF0IGVuZCBv
ZiBwcm9wZXJ0eQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlU
YWJsZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3Bl
cnR5VGFibGUuaAkocmV2aXNpb24gMjg2MDExKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvUHJvcGVydHlUYWJsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjksNyArMTI5LDcgQEAg
cHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlLCBTdWJzcGFjZUFjY2Vzcz4K
ICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7Ci0gICAg
ICAgIHJldHVybiAmdm0ucHJvcGVydHlUYWJsZVNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBy
b3BlcnR5VGFibGVTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBu
ZWVkc0Rlc3RydWN0aW9uID0gdHJ1ZTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1JlZmxlY3RPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9SZWZsZWN0T2JqZWN0LmgJKHJldmlzaW9uIDI4NjAxMSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1JlZmxlY3RPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtMzgs
NyArMzgsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihW
TSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJM
RShSZWZsZWN0T2JqZWN0LCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNw
YWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAg
ICBzdGF0aWMgUmVmbGVjdE9iamVjdCogY3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9SZWdFeHAuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9SZWdFeHAuaAkocmV2aXNpb24gMjg2MDExKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvUmVnRXhwLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ5LDcgKzQ5LDcgQEAg
cHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlLCBTdWJzcGFjZUFjY2VzcyBt
b2RlPgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsK
LSAgICAgICAgcmV0dXJuICZ2bS5yZWdFeHBTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5yZWdF
eHBTcGFjZSgpOwogICAgIH0KIAogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWdFeHAq
IGNyZWF0ZShWTSYsIGNvbnN0IFN0cmluZyYgcGF0dGVybiwgT3B0aW9uU2V0PFlhcnI6OkZsYWdz
Pik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBPYmplY3QuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBPYmplY3Qu
aAkocmV2aXNpb24gMjg2MDExKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVn
RXhwT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTM2LDcgKzM2LDcgQEAgcHVibGljOgogICAg
IHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAgICAg
c3RhdGljX2Fzc2VydCghQ2VsbFR5cGU6Om5lZWRzRGVzdHJ1Y3Rpb24sICIiKTsKLSAgICAgICAg
cmV0dXJuICZ2bS5yZWdFeHBPYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5yZWdFeHBP
YmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBjb25zdGV4cHIgdWludHB0cl90IGxh
c3RJbmRleElzTm90V3JpdGFibGVGbGFnID0gMGIwMTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1JlZ0V4cFByb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cFByb3RvdHlwZS5oCShyZXZpc2lvbiAyODYwMTEpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBQcm90b3R5cGUuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMzQsNyArMzQsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIElzb1N1YnNwYWNl
KiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19T
VUJTUEFDRV9TSEFSQUJMRShSZWdFeHBQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4g
JnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFj
ZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBSZWdFeHBQcm90b3R5cGUqIGNyZWF0ZShWTSYgdm0s
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlKQpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwU3RyaW5nSXRlcmF0b3JQcm90
b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdF
eHBTdHJpbmdJdGVyYXRvclByb3RvdHlwZS5oCShyZXZpc2lvbiAyODYwMTEpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBTdHJpbmdJdGVyYXRvclByb3RvdHlwZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC0zOSw3ICszOSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vi
c3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRf
SVNPX1NVQlNQQUNFX1NIQVJBQkxFKFJlZ0V4cFN0cmluZ0l0ZXJhdG9yUHJvdG90eXBlLCBCYXNl
KTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4g
JnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgUmVnRXhwU3RyaW5n
SXRlcmF0b3JQcm90b3R5cGUqIGNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvU2NvcGVkQXJndW1lbnRzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9TY29wZWRBcmd1bWVudHMuY3BwCShyZXZpc2lvbiAyODYwMTEpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TY29wZWRBcmd1bWVudHMuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC01NSw3ICs1NSw3IEBAIFNjb3BlZEFyZ3VtZW50cyogU2NvcGVkQXJndW1l
bnRzOjpjcmVhdGUKICAgICBXcml0ZUJhcnJpZXI8VW5rbm93bj4qIHN0b3JhZ2UgPSBudWxscHRy
OwogICAgIGlmICh0b3RhbExlbmd0aCA+IHRhYmxlLT5sZW5ndGgoKSkgewogICAgICAgICBDaGVj
a2VkPHVuc2lnbmVkPiBvdmVyZmxvd0xlbmd0aCA9IHRvdGFsTGVuZ3RoIC0gdGFibGUtPmxlbmd0
aCgpOwotICAgICAgICBzdG9yYWdlID0gc3RhdGljX2Nhc3Q8V3JpdGVCYXJyaWVyPFVua25vd24+
Kj4odm0uanNWYWx1ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UuYWxsb2NhdGVOb25WaXJ0dWFsKHZt
LCBvdmVyZmxvd0xlbmd0aCAqIHNpemVvZihXcml0ZUJhcnJpZXI8VW5rbm93bj4pLCBudWxscHRy
LCBBbGxvY2F0aW9uRmFpbHVyZU1vZGU6OkFzc2VydCkpOworICAgICAgICBzdG9yYWdlID0gc3Rh
dGljX2Nhc3Q8V3JpdGVCYXJyaWVyPFVua25vd24+Kj4odm0uanNWYWx1ZUdpZ2FjYWdlQXV4aWxp
YXJ5U3BhY2UoKS5hbGxvY2F0ZU5vblZpcnR1YWwodm0sIG92ZXJmbG93TGVuZ3RoICogc2l6ZW9m
KFdyaXRlQmFycmllcjxVbmtub3duPiksIG51bGxwdHIsIEFsbG9jYXRpb25GYWlsdXJlTW9kZTo6
QXNzZXJ0KSk7CiAgICAgfQogCiAgICAgU2NvcGVkQXJndW1lbnRzKiByZXN1bHQgPSBuZXcgKApJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2NvcGVkQXJndW1lbnRzLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2NvcGVkQXJndW1lbnRz
LmgJKHJldmlzaW9uIDI4NjAxMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Nj
b3BlZEFyZ3VtZW50cy5oCSh3b3JraW5nIGNvcHkpCkBAIC00Nyw3ICs0Nyw3IEBAIHB1YmxpYzoK
ICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAg
ICAgIHN0YXRpY19hc3NlcnQoIUNlbGxUeXBlOjpuZWVkc0Rlc3RydWN0aW9uLCAiIik7Ci0gICAg
ICAgIHJldHVybiAmdm0uc2NvcGVkQXJndW1lbnRzU3BhY2U7CisgICAgICAgIHJldHVybiAmdm0u
c2NvcGVkQXJndW1lbnRzU3BhY2UoKTsKICAgICB9CiAKICAgICAvLyBDcmVhdGVzIGFuIGFyZ3Vt
ZW50cyBvYmplY3QgYnV0IGxlYXZlcyBpdCB1bmluaXRpYWxpemVkLiBUaGlzIGlzIGRhbmdlcm91
cyBpZiB3ZSBHQyByaWdodApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2V0
SXRlcmF0b3JQcm90b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9TZXRJdGVyYXRvclByb3RvdHlwZS5oCShyZXZpc2lvbiAyODYwMTEpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TZXRJdGVyYXRvclByb3RvdHlwZS5oCSh3b3JraW5n
IGNvcHkpCkBAIC0zNyw3ICszNyw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2Uq
IHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NV
QlNQQUNFX1NIQVJBQkxFKFNldEl0ZXJhdG9yUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0
dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0
U3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgU2V0SXRlcmF0b3JQcm90b3R5cGUqIGNyZWF0
ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0
dXJlKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2V0UHJvdG90eXBlLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2V0UHJvdG90eXBl
LmgJKHJldmlzaW9uIDI4NjAxMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Nl
dFByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw3ICszNyw3IEBAIHB1YmxpYzoKICAg
ICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAg
IFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKFNldFByb3RvdHlwZSwgQmFzZSk7
Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2
bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNp
Z25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgSGFzU3RhdGljUHJv
cGVydHlUYWJsZTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NoYWRvd1Jl
YWxtUHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU2hhZG93UmVhbG1Qcm90b3R5cGUuaAkocmV2aXNpb24gMjg2MDExKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvU2hhZG93UmVhbG1Qcm90b3R5cGUuaAkod29ya2luZyBjb3B5
KQpAQCAtMzksNyArMzksNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJz
cGFjZUZvcihWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFD
RV9TSEFSQUJMRShTaGFkb3dSZWFsbVByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAm
dm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNl
KCk7CiAgICAgfQogCiAgICAgc3RhdGljIFNoYWRvd1JlYWxtUHJvdG90eXBlKiBjcmVhdGUoVk0m
IHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1NwYXJzZUFycmF5VmFsdWVNYXAuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9TcGFyc2VBcnJheVZhbHVlTWFwLmgJKHJldmlzaW9uIDI4NjAxMSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NwYXJzZUFycmF5VmFsdWVNYXAuaAko
d29ya2luZyBjb3B5KQpAQCAtMTEwLDcgKzExMCw3IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBDZWxsVHlwZSwgU3Vic3BhY2VBY2Nlc3M+CiAgICAgc3RhdGljIElzb1N1YnNwYWNl
KiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewotICAgICAgICByZXR1cm4gJnZtLnNwYXJzZUFy
cmF5VmFsdWVNYXBTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5zcGFyc2VBcnJheVZhbHVlTWFw
U3BhY2UoKTsKICAgICB9CiAgICAgCiAgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0
dXJlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlIHByb3RvdHlwZSk7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdJdGVyYXRvclByb3RvdHlwZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ0l0ZXJhdG9yUHJv
dG90eXBlLmgJKHJldmlzaW9uIDI4NjAxMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1N0cmluZ0l0ZXJhdG9yUHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM5LDcgKzM5
LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZt
KQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoU3Ry
aW5nSXRlcmF0b3JQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2Jq
ZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0K
IAogICAgIHN0YXRpYyBTdHJpbmdJdGVyYXRvclByb3RvdHlwZSogY3JlYXRlKFZNJiB2bSwgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdPYmplY3QuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdPYmplY3QuaAkocmV2aXNpb24g
Mjg2MDExKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nT2JqZWN0LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTMzLDcgKzMzLDcgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5
cGVuYW1lLCBTdWJzcGFjZUFjY2VzcyBtb2RlPgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vi
c3BhY2VGb3IoVk0mIHZtKQogICAgIHsKLSAgICAgICAgcmV0dXJuICZ2bS5zdHJpbmdPYmplY3RT
cGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5zdHJpbmdPYmplY3RTcGFjZSgpOwogICAgIH0KIAog
ICAgIHN0YXRpYyBTdHJpbmdPYmplY3QqIGNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0
dXJlKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3Bw
CShyZXZpc2lvbiAyODYwMTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1
Y3R1cmUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw4ICszMSw4IEBACiAjaW5jbHVkZSAiQnVp
bHRpbk5hbWVzLmgiCiAjaW5jbHVkZSAiRHVtcENvbnRleHQuaCIKICNpbmNsdWRlICJKU0NJbmxp
bmVzLmgiCi0jaW5jbHVkZSAiUHJvcGVydHlNYXBIYXNoVGFibGUuaCIKICNpbmNsdWRlICJQcm9w
ZXJ0eU5hbWVBcnJheS5oIgorI2luY2x1ZGUgIlByb3BlcnR5VGFibGUuaCIKICNpbmNsdWRlIDx3
dGYvQ29tbWFQcmludGVyLmg+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW5j
bHVkZSA8d3RmL1JlZlB0ci5oPgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
U3RydWN0dXJlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
U3RydWN0dXJlLmgJKHJldmlzaW9uIDI4NjAxMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1N0cnVjdHVyZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjgsNyArMTI4LDcgQEAgcHVi
bGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlLCBTdWJzcGFjZUFjY2Vzcz4KICAg
ICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7Ci0gICAgICAg
IHJldHVybiAmdm0uc3RydWN0dXJlU3BhY2U7CisgICAgICAgIHJldHVybiAmdm0uc3RydWN0dXJl
U3BhY2UoKTsKICAgICB9CiAKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBpc1Zh
bGlkUHJvdG90eXBlKEpTVmFsdWUpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU3RydWN0dXJlQ2hhaW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1N0cnVjdHVyZUNoYWluLmNwcAkocmV2aXNpb24gMjg2MDExKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlQ2hhaW4uY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC00OCw3ICs0OCw3IEBAIFN0cnVjdHVyZUNoYWluKiBTdHJ1Y3R1cmVDaGFpbjo6Y3JlYXRl
KFYKICAgICAgICAgKytzaXplOwogICAgICsrc2l6ZTsgLy8gU2VudGluZWwgbnVsbHB0ci4KICAg
ICBzaXplX3QgYnl0ZXMgPSBDaGVja2VkPHNpemVfdD4oc2l6ZSkgKiBzaXplb2YoU3RydWN0dXJl
SUQpOwotICAgIFN0cnVjdHVyZUlEKiB2ZWN0b3IgPSBzdGF0aWNfY2FzdDxTdHJ1Y3R1cmVJRCo+
KHZtLmpzVmFsdWVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlLmFsbG9jYXRlTm9uVmlydHVhbCh2bSwg
Ynl0ZXMsIG51bGxwdHIsIEFsbG9jYXRpb25GYWlsdXJlTW9kZTo6QXNzZXJ0KSk7CisgICAgU3Ry
dWN0dXJlSUQqIHZlY3RvciA9IHN0YXRpY19jYXN0PFN0cnVjdHVyZUlEKj4odm0uanNWYWx1ZUdp
Z2FjYWdlQXV4aWxpYXJ5U3BhY2UoKS5hbGxvY2F0ZU5vblZpcnR1YWwodm0sIGJ5dGVzLCBudWxs
cHRyLCBBbGxvY2F0aW9uRmFpbHVyZU1vZGU6OkFzc2VydCkpOwogICAgIG1lbXNldCh2ZWN0b3Is
IDAsIGJ5dGVzKTsKICAgICBTdHJ1Y3R1cmVDaGFpbiogY2hhaW4gPSBuZXcgKE5vdE51bGwsIGFs
bG9jYXRlQ2VsbDxTdHJ1Y3R1cmVDaGFpbj4odm0pKSBTdHJ1Y3R1cmVDaGFpbih2bSwgdm0uc3Ry
dWN0dXJlQ2hhaW5TdHJ1Y3R1cmUuZ2V0KCksIHZlY3Rvcik7CiAgICAgY2hhaW4tPmZpbmlzaENy
ZWF0aW9uKHZtLCBoZWFkKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0
cnVjdHVyZUNoYWluLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU3RydWN0dXJlQ2hhaW4uaAkocmV2aXNpb24gMjg2MDExKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlQ2hhaW4uaAkod29ya2luZyBjb3B5KQpAQCAtNDYsNyAr
NDYsNyBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUsIFN1YnNwYWNl
QWNjZXNzPgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAg
IHsKLSAgICAgICAgcmV0dXJuICZ2bS5zdHJ1Y3R1cmVDaGFpblNwYWNlOworICAgICAgICByZXR1
cm4gJnZtLnN0cnVjdHVyZUNoYWluU3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgU3RydWN0
dXJlQ2hhaW4qIGNyZWF0ZShWTSYsIEpTT2JqZWN0Kik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TdHJ1Y3R1cmVJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlSW5saW5lcy5oCShyZXZpc2lvbiAyODYwMTEp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVJbmxpbmVzLmgJKHdv
cmtpbmcgY29weSkKQEAgLTI5LDcgKzI5LDcgQEAKICNpbmNsdWRlICJKU0FycmF5QnVmZmVyVmll
dy5oIgogI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNHbG9iYWxP
YmplY3QuaCIKLSNpbmNsdWRlICJQcm9wZXJ0eU1hcEhhc2hUYWJsZS5oIgorI2luY2x1ZGUgIlBy
b3BlcnR5VGFibGUuaCIKICNpbmNsdWRlICJTdHJ1Y3R1cmUuaCIKICNpbmNsdWRlICJTdHJ1Y3R1
cmVDaGFpbi5oIgogI2luY2x1ZGUgIlN0cnVjdHVyZVJhcmVEYXRhSW5saW5lcy5oIgpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlUmFyZURhdGEuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVSYXJlRGF0YS5o
CShyZXZpc2lvbiAyODYwMTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1
Y3R1cmVSYXJlRGF0YS5oCSh3b3JraW5nIGNvcHkpCkBAIC02Niw3ICs2Niw3IEBAIHB1YmxpYzoK
ICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vic3BhY2VBY2Nlc3M+CiAgICAgc3Rh
dGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewotICAgICAgICByZXR1
cm4gJnZtLnN0cnVjdHVyZVJhcmVEYXRhU3BhY2U7CisgICAgICAgIHJldHVybiAmdm0uc3RydWN0
dXJlUmFyZURhdGFTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBTdHJ1Y3R1cmVSYXJlRGF0
YSogY3JlYXRlKFZNJiwgU3RydWN0dXJlKik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9TeW1ib2xQcm90b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TeW1ib2xQcm90b3R5cGUuaAkocmV2aXNpb24gMjg2MDExKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sUHJvdG90eXBlLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTQxLDcgKzQxLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vi
c3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BB
Q0VfU0hBUkFCTEUoU3ltYm9sUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5w
bGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsK
ICAgICB9CiAKICAgICBzdGF0aWMgU3ltYm9sUHJvdG90eXBlKiBjcmVhdGUoVk0mIHZtLCBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbFRhYmxlLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sVGFibGUuaAkocmV2aXNpb24gMjg2
MDExKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sVGFibGUuaAkod29y
a2luZyBjb3B5KQpAQCAtNDU2LDcgKzQ1Niw3IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBDZWxsVHlwZSwgU3Vic3BhY2VBY2Nlc3M+CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBz
dWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewotICAgICAgICByZXR1cm4gJnZtLnN5bWJvbFRhYmxl
U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0uc3ltYm9sVGFibGVTcGFjZSgpOwogICAgIH0KIAog
ICAgIHN0YXRpYyBTeW1ib2xUYWJsZSogY3JlYXRlKFZNJiB2bSkKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsQ2FsZW5kYXJQcm90b3R5cGUuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbENhbGVuZGFyUHJvdG90
eXBlLmgJKHJldmlzaW9uIDI4NjAxMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1RlbXBvcmFsQ2FsZW5kYXJQcm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzgsNyArMzgs
NyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0p
CiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShUZW1w
b3JhbENhbGVuZGFyUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9i
amVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9
CiAKICAgICBzdGF0aWMgVGVtcG9yYWxDYWxlbmRhclByb3RvdHlwZSogY3JlYXRlKFZNJiwgSlNH
bG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1RlbXBvcmFsRHVyYXRpb25Qcm90b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbER1cmF0aW9uUHJvdG90eXBlLmgJKHJldmlz
aW9uIDI4NjAxMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsRHVy
YXRpb25Qcm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBD
b3B5cmlnaHQgKEMpIDIwMjEgU29ueSBJbnRlcmFjdGl2ZSBFbnRlcnRhaW5tZW50IEluYy4KKyAq
IENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM4LDcgKzM5LDcgQEAgcHVibGljOgogICAg
IHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAgICAg
U1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoVGVtcG9yYWxEdXJhdGlvblByb3Rv
dHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAg
ICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIFRl
bXBvcmFsRHVyYXRpb25Qcm90b3R5cGUqIGNyZWF0ZShWTSYsIFN0cnVjdHVyZSopOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxJbnN0YW50UHJvdG90eXBlLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxJbnN0
YW50UHJvdG90eXBlLmgJKHJldmlzaW9uIDI4NjAxMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1RlbXBvcmFsSW5zdGFudFByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAyMSBJZ2FsaWEgUy5MLgorICogQ29w
eXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzgsNyArMzksNyBAQCBwdWJsaWM6CiAgICAgc3Rh
dGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFU
SUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShUZW1wb3JhbEluc3RhbnRQcm90b3R5cGUs
IEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJl
dHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBUZW1wb3Jh
bEluc3RhbnRQcm90b3R5cGUqIGNyZWF0ZShWTSYsIFN0cnVjdHVyZSopOwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxOb3cuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbE5vdy5oCShyZXZpc2lvbiAyODYwMTEp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbE5vdy5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqICBDb3B5cmlnaHQgKEMpIDIwMjEgSWdhbGlh
LCBTLkwuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAgQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUg
c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogIG1vZGlmeSBpdCB1
bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKQEAgLTMyLDcg
KzMzLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0m
IHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUo
VGVtcG9yYWxOb3csIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7
CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIHN0
YXRpYyBUZW1wb3JhbE5vdyogY3JlYXRlKFZNJiwgU3RydWN0dXJlKik7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbE9iamVjdC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsT2JqZWN0LmgJKHJldmlzaW9uIDI4
NjAxMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsT2JqZWN0LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw3IEBACiAvKgogICogIENvcHlyaWdodCAoQykgMjAy
MSBJZ2FsaWEsIFMuTC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqICBDb3B5cmlnaHQgKEMpIDIw
MjEgU29ueSBJbnRlcmFjdGl2ZSBFbnRlcnRhaW5tZW50IEluYy4KKyAqICBDb3B5cmlnaHQgKEMp
IDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqICBUaGlzIGxpYnJh
cnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiAg
bW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1Ymxp
YwpAQCAtNjQsNyArNjUsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJz
cGFjZUZvcihWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFD
RV9TSEFSQUJMRShUZW1wb3JhbE9iamVjdCwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxh
aW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAg
ICAgfQogCiAgICAgc3RhdGljIFRlbXBvcmFsT2JqZWN0KiBjcmVhdGUoVk0mLCBTdHJ1Y3R1cmUq
KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsUGxhaW5UaW1l
UHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
VGVtcG9yYWxQbGFpblRpbWVQcm90b3R5cGUuaAkocmV2aXNpb24gMjg2MDExKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxQbGFpblRpbWVQcm90b3R5cGUuaAkod29y
a2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBw
bGUgSW5jLgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzgsNyArMzgsNyBAQCBw
dWJsaWM6CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAg
ewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShUZW1wb3JhbFBs
YWluVGltZVByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RT
cGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAg
ICAgc3RhdGljIFRlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlKiBjcmVhdGUoVk0mLCBKU0dsb2Jh
bE9iamVjdCosIFN0cnVjdHVyZSopOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvVGVtcG9yYWxUaW1lWm9uZVByb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsVGltZVpvbmVQcm90b3R5cGUuaAkocmV2aXNpb24g
Mjg2MDExKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxUaW1lWm9u
ZVByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw3ICszOCw3IEBAIHB1YmxpYzoKICAg
ICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAg
IFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKFRlbXBvcmFsVGltZVpvbmVQcm90
b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAg
ICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBU
ZW1wb3JhbFRpbWVab25lUHJvdG90eXBlKiBjcmVhdGUoVk0mLCBKU0dsb2JhbE9iamVjdCosIFN0
cnVjdHVyZSopOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAkocmV2aXNp
b24gMjg2MDExKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMiwyMSArMzIsMTUgQEAKICNpbmNsdWRlICJBY2Nlc3NDYXNlLmgiCiAj
aW5jbHVkZSAiQWdncmVnYXRlRXJyb3IuaCIKICNpbmNsdWRlICJBcmdMaXN0LmgiCi0jaW5jbHVk
ZSAiQmlnSW50T2JqZWN0LmgiCi0jaW5jbHVkZSAiQm9vbGVhbk9iamVjdC5oIgotI2luY2x1ZGUg
IkJyYW5kZWRTdHJ1Y3R1cmUuaCIKICNpbmNsdWRlICJCdWlsdGluRXhlY3V0YWJsZXMuaCIKICNp
bmNsdWRlICJCeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5LmgiCiAjaW5jbHVkZSAiQ2hlY2twb2lu
dE9TUkV4aXRTaWRlU3RhdGUuaCIKLSNpbmNsdWRlICJDbG9uZWRBcmd1bWVudHMuaCIKICNpbmNs
dWRlICJDb2RlQmxvY2suaCIKICNpbmNsdWRlICJDb2RlQ2FjaGUuaCIKICNpbmNsdWRlICJDb21t
b25JZGVudGlmaWVycy5oIgogI2luY2x1ZGUgIkNvbnRyb2xGbG93UHJvZmlsZXIuaCIKICNpbmNs
dWRlICJDdXN0b21HZXR0ZXJTZXR0ZXIuaCIKICNpbmNsdWRlICJET01BdHRyaWJ1dGVHZXR0ZXJT
ZXR0ZXIuaCIKLSNpbmNsdWRlICJEYXRlSW5zdGFuY2UuaCIKLSNpbmNsdWRlICJEZWJ1Z2dlclNj
b3BlLmgiCiAjaW5jbHVkZSAiRGVmZXJyZWRXb3JrVGltZXIuaCIKICNpbmNsdWRlICJEaXNhc3Nl
bWJsZXIuaCIKICNpbmNsdWRlICJEb3VibGVQcmVkaWN0aW9uRnV6emVyQWdlbnQuaCIKQEAgLTU1
LDcgKzQ5LDYgQEAKICNpbmNsdWRlICJFeGNlcHRpb24uaCIKICNpbmNsdWRlICJFeGVjdXRhYmxl
VG9Db2RlQmxvY2tFZGdlLmgiCiAjaW5jbHVkZSAiRlRMVGh1bmtzLmgiCi0jaW5jbHVkZSAiRmFz
dE1hbGxvY0FsaWduZWRNZW1vcnlBbGxvY2F0b3IuaCIKICNpbmNsdWRlICJGaWxlQmFzZWRGdXp6
ZXJBZ2VudC5oIgogI2luY2x1ZGUgIkZ1bmN0aW9uQ29kZUJsb2NrLmgiCiAjaW5jbHVkZSAiRnVu
Y3Rpb25FeGVjdXRhYmxlLmgiCkBAIC02Niw3NyArNTksMjcgQEAKICNpbmNsdWRlICJIZWFwUHJv
ZmlsZXIuaCIKICNpbmNsdWRlICJJbnRlcnByZXRlci5oIgogI2luY2x1ZGUgIkludGxDYWNoZS5o
IgotI2luY2x1ZGUgIkludGxDb2xsYXRvci5oIgotI2luY2x1ZGUgIkludGxEYXRlVGltZUZvcm1h
dC5oIgotI2luY2x1ZGUgIkludGxEaXNwbGF5TmFtZXMuaCIKLSNpbmNsdWRlICJJbnRsTGlzdEZv
cm1hdC5oIgotI2luY2x1ZGUgIkludGxMb2NhbGUuaCIKLSNpbmNsdWRlICJJbnRsTnVtYmVyRm9y
bWF0LmgiCi0jaW5jbHVkZSAiSW50bFBsdXJhbFJ1bGVzLmgiCi0jaW5jbHVkZSAiSW50bFJlbGF0
aXZlVGltZUZvcm1hdC5oIgotI2luY2x1ZGUgIkludGxTZWdtZW50SXRlcmF0b3IuaCIKLSNpbmNs
dWRlICJJbnRsU2VnbWVudGVyLmgiCi0jaW5jbHVkZSAiSW50bFNlZ21lbnRzLmgiCi0jaW5jbHVk
ZSAiSXNvSGVhcENlbGxUeXBlLmgiCi0jaW5jbHVkZSAiSXNvSW5saW5lZEhlYXBDZWxsVHlwZS5o
IgorLy8jaW5jbHVkZSAiSXNvSGVhcENlbGxUeXBlLmgiIC8vIG1sYW0KKy8vI2luY2x1ZGUgIklz
b0lubGluZWRIZWFwQ2VsbFR5cGUuaCIgLy8gbWxhbQogI2luY2x1ZGUgIkpJVENvZGUuaCIKICNp
bmNsdWRlICJKSVRPcGVyYXRpb25MaXN0LmgiCiAjaW5jbHVkZSAiSklUU2l6ZVN0YXRpc3RpY3Mu
aCIKICNpbmNsdWRlICJKSVRUaHVua3MuaCIKICNpbmNsdWRlICJKSVRXb3JrbGlzdC5oIgotI2lu
Y2x1ZGUgIkpTQVBJR2xvYmFsT2JqZWN0LmgiCiAjaW5jbHVkZSAiSlNBUElWYWx1ZVdyYXBwZXIu
aCIKLSNpbmNsdWRlICJKU0FQSVdyYXBwZXJPYmplY3QuaCIKLSNpbmNsdWRlICJKU0FycmF5Lmgi
Ci0jaW5jbHVkZSAiSlNBcnJheUJ1ZmZlci5oIgotI2luY2x1ZGUgIkpTQXJyYXlJdGVyYXRvci5o
IgotI2luY2x1ZGUgIkpTQXN5bmNHZW5lcmF0b3IuaCIKICNpbmNsdWRlICJKU0JpZ0ludC5oIgot
I2luY2x1ZGUgIkpTQm91bmRGdW5jdGlvbi5oIgotI2luY2x1ZGUgIkpTQ2FsbGJhY2tDb25zdHJ1
Y3Rvci5oIgotI2luY2x1ZGUgIkpTQ2FsbGJhY2tGdW5jdGlvbi5oIgotI2luY2x1ZGUgIkpTQ2Fs
bGJhY2tPYmplY3QuaCIKLSNpbmNsdWRlICJKU0NhbGxlZS5oIgotI2luY2x1ZGUgIkpTQ3VzdG9t
R2V0dGVyRnVuY3Rpb24uaCIKLSNpbmNsdWRlICJKU0N1c3RvbVNldHRlckZ1bmN0aW9uLmgiCi0j
aW5jbHVkZSAiSlNEZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuaCIKLSNpbmNsdWRlICJK
U0ZpbmFsaXphdGlvblJlZ2lzdHJ5LmgiCi0jaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgotI2luY2x1
ZGUgIkpTR2xvYmFsTGV4aWNhbEVudmlyb25tZW50LmgiCiAjaW5jbHVkZSAiSlNHbG9iYWxPYmpl
Y3QuaCIKICNpbmNsdWRlICJKU0ltbXV0YWJsZUJ1dHRlcmZseS5oIgotI2luY2x1ZGUgIkpTSW5q
ZWN0ZWRTY3JpcHRIb3N0LmgiCi0jaW5jbHVkZSAiSlNKYXZhU2NyaXB0Q2FsbEZyYW1lLmgiCiAj
aW5jbHVkZSAiSlNMb2NrLmgiCiAjaW5jbHVkZSAiSlNNYXAuaCIKLSNpbmNsdWRlICJKU01hcEl0
ZXJhdG9yLmgiCi0jaW5jbHVkZSAiSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QuaCIKLSNpbmNsdWRl
ICJKU01vZHVsZVJlY29yZC5oIgotI2luY2x1ZGUgIkpTTmF0aXZlU3RkRnVuY3Rpb24uaCIKICNp
bmNsdWRlICJKU1Byb21pc2UuaCIKICNpbmNsdWRlICJKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3Iu
aCIKLSNpbmNsdWRlICJKU1Byb3h5LmgiCiAjaW5jbHVkZSAiSlNTY3JpcHRGZXRjaFBhcmFtZXRl
cnMuaCIKICNpbmNsdWRlICJKU1NjcmlwdEZldGNoZXIuaCIKICNpbmNsdWRlICJKU1NldC5oIgot
I2luY2x1ZGUgIkpTU2V0SXRlcmF0b3IuaCIKICNpbmNsdWRlICJKU1NvdXJjZUNvZGUuaCIKLSNp
bmNsdWRlICJKU1N0cmluZ0l0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiSlNUZW1wbGF0ZU9iamVjdERl
c2NyaXB0b3IuaCIKLSNpbmNsdWRlICJKU1RvV2FzbUlDQ2FsbGVlLmgiCi0jaW5jbHVkZSAiSlNU
eXBlZEFycmF5cy5oIgotI2luY2x1ZGUgIkpTV2Vha01hcC5oIgotI2luY2x1ZGUgIkpTV2Vha09i
amVjdFJlZi5oIgotI2luY2x1ZGUgIkpTV2Vha1NldC5oIgogI2luY2x1ZGUgIkpTV2ViQXNzZW1i
bHlDb2RlQmxvY2suaCIKLSNpbmNsdWRlICJKU1dlYkFzc2VtYmx5RXhjZXB0aW9uLmgiCi0jaW5j
bHVkZSAiSlNXZWJBc3NlbWJseUdsb2JhbC5oIgotI2luY2x1ZGUgIkpTV2ViQXNzZW1ibHlJbnN0
YW5jZS5oIgotI2luY2x1ZGUgIkpTV2ViQXNzZW1ibHlNZW1vcnkuaCIKLSNpbmNsdWRlICJKU1dl
YkFzc2VtYmx5TW9kdWxlLmgiCi0jaW5jbHVkZSAiSlNXZWJBc3NlbWJseVRhYmxlLmgiCi0jaW5j
bHVkZSAiSlNXZWJBc3NlbWJseVRhZy5oIgotI2luY2x1ZGUgIkpTV2l0aFNjb3BlLmgiCiAjaW5j
bHVkZSAiTExJbnREYXRhLmgiCiAjaW5jbHVkZSAiTExJbnRFeGNlcHRpb25zLmgiCiAjaW5jbHVk
ZSAiTWluaW11bVJlc2VydmVkWm9uZVNpemUuaCIKQEAgLTE0OSwyOCArOTIsMTcgQEAKICNpbmNs
dWRlICJQcm9maWxlckRhdGFiYXNlLmgiCiAjaW5jbHVkZSAiUHJvZ3JhbUNvZGVCbG9jay5oIgog
I2luY2x1ZGUgIlByb2dyYW1FeGVjdXRhYmxlLmgiCi0jaW5jbHVkZSAiUHJvcGVydHlNYXBIYXNo
VGFibGUuaCIKLSNpbmNsdWRlICJQcm94eVJldm9rZS5oIgorI2luY2x1ZGUgIlByb3BlcnR5VGFi
bGUuaCIKICNpbmNsdWRlICJSYW5kb21pemluZ0Z1enplckFnZW50LmgiCiAjaW5jbHVkZSAiUmVn
RXhwQ2FjaGUuaCIKLSNpbmNsdWRlICJSZWdFeHBPYmplY3QuaCIKICNpbmNsdWRlICJTYW1wbGlu
Z1Byb2ZpbGVyLmgiCiAjaW5jbHVkZSAiU2NvcGVkQXJndW1lbnRzLmgiCiAjaW5jbHVkZSAiU2hh
ZG93Q2hpY2tlbi5oIgotI2luY2x1ZGUgIlNoYWRvd1JlYWxtT2JqZWN0LmgiCiAjaW5jbHVkZSAi
U2ltcGxlVHlwZWRBcnJheUNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJTb3VyY2VQcm92aWRlckNh
Y2hlLmgiCi0jaW5jbHVkZSAiU3RyaWN0RXZhbEFjdGl2YXRpb24uaCIKLSNpbmNsdWRlICJTdHJp
bmdPYmplY3QuaCIKICNpbmNsdWRlICJTdHJvbmdJbmxpbmVzLmgiCiAjaW5jbHVkZSAiU3RydWN0
dXJlQ2hhaW4uaCIKICNpbmNsdWRlICJTdHJ1Y3R1cmVJbmxpbmVzLmgiCi0jaW5jbHVkZSAiU3lt
Ym9sT2JqZWN0LmgiCi0jaW5jbHVkZSAiVGVtcG9yYWxDYWxlbmRhci5oIgotI2luY2x1ZGUgIlRl
bXBvcmFsRHVyYXRpb24uaCIKLSNpbmNsdWRlICJUZW1wb3JhbEluc3RhbnQuaCIKLSNpbmNsdWRl
ICJUZW1wb3JhbFBsYWluVGltZS5oIgotI2luY2x1ZGUgIlRlbXBvcmFsVGltZVpvbmUuaCIKICNp
bmNsdWRlICJUZXN0UnVubmVyVXRpbHMuaCIKICNpbmNsdWRlICJUaHVua0dlbmVyYXRvcnMuaCIK
ICNpbmNsdWRlICJUeXBlUHJvZmlsZXIuaCIKQEAgLTE4Miw5ICsxMTQsNiBAQAogI2luY2x1ZGUg
Ildhc21Xb3JrbGlzdC5oIgogI2luY2x1ZGUgIldhdGNoZG9nLmgiCiAjaW5jbHVkZSAiV2Vha0dD
TWFwSW5saW5lcy5oIgotI2luY2x1ZGUgIldlYkFzc2VtYmx5RnVuY3Rpb24uaCIKLSNpbmNsdWRl
ICJXZWJBc3NlbWJseU1vZHVsZVJlY29yZC5oIgotI2luY2x1ZGUgIldlYkFzc2VtYmx5V3JhcHBl
ckZ1bmN0aW9uLmgiCiAjaW5jbHVkZSAiV2lkZW5pbmdOdW1iZXJQcmVkaWN0aW9uRnV6emVyQWdl
bnQuaCIKICNpbmNsdWRlIDx3dGYvUHJvY2Vzc0lELmg+CiAjaW5jbHVkZSA8d3RmL1JlYWRXcml0
ZUxvY2suaD4KQEAgLTIwNiwxMCArMTM1LDYgQEAKICNpbmNsdWRlICJSZWdFeHAuaCIKICNlbmRp
ZgogCi0jaWYgSlNDX09CSkNfQVBJX0VOQUJMRUQKLSNpbmNsdWRlICJPYmpDQ2FsbGJhY2tGdW5j
dGlvbi5oIgotI2VuZGlmCi0KICNpZmRlZiBKU0NfR0xJQl9BUElfRU5BQkxFRAogI2luY2x1ZGUg
IkpTQVBJV3JhcHBlckdsb2JhbE9iamVjdC5oIgogI2luY2x1ZGUgIkpTQ0NhbGxiYWNrRnVuY3Rp
b24uaCIKQEAgLTI5MCwxMDkgKzIxNSw2IEBAIFZNOjpWTShWTVR5cGUgdm1UeXBlLCBIZWFwVHlw
ZSBoZWFwVHlwZSwKICAgICAsIG1fcmFuZG9tKE9wdGlvbnM6OnNlZWRPZlZNUmFuZG9tRm9yRnV6
emVyKCkgPyBPcHRpb25zOjpzZWVkT2ZWTVJhbmRvbUZvckZ1enplcigpIDogY3J5cHRvZ3JhcGhp
Y2FsbHlSYW5kb21OdW1iZXIoKSkKICAgICAsIG1faW50ZWdyaXR5UmFuZG9tKCp0aGlzKQogICAg
ICwgaGVhcCgqdGhpcywgaGVhcFR5cGUpCi0gICAgLCBmYXN0TWFsbG9jQWxsb2NhdG9yKG1ha2VV
bmlxdWU8RmFzdE1hbGxvY0FsaWduZWRNZW1vcnlBbGxvY2F0b3I+KCkpCi0gICAgLCBwcmltaXRp
dmVHaWdhY2FnZUFsbG9jYXRvcihtYWtlVW5pcXVlPEdpZ2FjYWdlQWxpZ25lZE1lbW9yeUFsbG9j
YXRvcj4oR2lnYWNhZ2U6OlByaW1pdGl2ZSkpCi0gICAgLCBqc1ZhbHVlR2lnYWNhZ2VBbGxvY2F0
b3IobWFrZVVuaXF1ZTxHaWdhY2FnZUFsaWduZWRNZW1vcnlBbGxvY2F0b3I+KEdpZ2FjYWdlOjpK
U1ZhbHVlKSkKLSAgICAsIGF1eGlsaWFyeUhlYXBDZWxsVHlwZShtYWtlVW5pcXVlPEhlYXBDZWxs
VHlwZT4oQ2VsbEF0dHJpYnV0ZXMoRG9lc05vdE5lZWREZXN0cnVjdGlvbiwgSGVhcENlbGw6OkF1
eGlsaWFyeSkpKQotICAgICwgaW1tdXRhYmxlQnV0dGVyZmx5SGVhcENlbGxUeXBlKG1ha2VVbmlx
dWU8SGVhcENlbGxUeXBlPihDZWxsQXR0cmlidXRlcyhEb2VzTm90TmVlZERlc3RydWN0aW9uLCBI
ZWFwQ2VsbDo6SlNDZWxsV2l0aEluZGV4aW5nSGVhZGVyKSkpCi0gICAgLCBjZWxsSGVhcENlbGxU
eXBlKG1ha2VVbmlxdWU8SGVhcENlbGxUeXBlPihDZWxsQXR0cmlidXRlcyhEb2VzTm90TmVlZERl
c3RydWN0aW9uLCBIZWFwQ2VsbDo6SlNDZWxsKSkpCi0gICAgLCBkZXN0cnVjdGlibGVDZWxsSGVh
cENlbGxUeXBlKG1ha2VVbmlxdWU8SGVhcENlbGxUeXBlPihDZWxsQXR0cmlidXRlcyhOZWVkc0Rl
c3RydWN0aW9uLCBIZWFwQ2VsbDo6SlNDZWxsKSkpCi0gICAgLCBhcGlHbG9iYWxPYmplY3RIZWFw
Q2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpjcmVhdGU8SlNBUElHbG9iYWxPYmplY3Q+KCkpCi0g
ICAgLCBjYWxsYmFja0NvbnN0cnVjdG9ySGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6Y3Jl
YXRlPEpTQ2FsbGJhY2tDb25zdHJ1Y3Rvcj4oKSkKLSAgICAsIGNhbGxiYWNrR2xvYmFsT2JqZWN0
SGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6Y3JlYXRlPEpTQ2FsbGJhY2tPYmplY3Q8SlNH
bG9iYWxPYmplY3Q+PigpKQotICAgICwgY2FsbGJhY2tPYmplY3RIZWFwQ2VsbFR5cGUoSXNvSGVh
cENlbGxUeXBlOjpjcmVhdGU8SlNDYWxsYmFja09iamVjdDxKU05vbkZpbmFsT2JqZWN0Pj4oKSkK
LSAgICAsIGN1c3RvbUdldHRlckZ1bmN0aW9uSGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6
Y3JlYXRlPEpTQ3VzdG9tR2V0dGVyRnVuY3Rpb24+KCkpCi0gICAgLCBjdXN0b21TZXR0ZXJGdW5j
dGlvbkhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OmNyZWF0ZTxKU0N1c3RvbVNldHRlckZ1
bmN0aW9uPigpKQotICAgICwgZGF0ZUluc3RhbmNlSGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlw
ZTo6Y3JlYXRlPERhdGVJbnN0YW5jZT4oKSkKLSAgICAsIGVycm9ySW5zdGFuY2VIZWFwQ2VsbFR5
cGUoSXNvSGVhcENlbGxUeXBlOjpjcmVhdGU8RXJyb3JJbnN0YW5jZT4oKSkKLSAgICAsIGZpbmFs
aXphdGlvblJlZ2lzdHJ5Q2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpjcmVhdGU8SlNGaW5hbGl6
YXRpb25SZWdpc3RyeT4oKSkKLSAgICAsIGdsb2JhbExleGljYWxFbnZpcm9ubWVudEhlYXBDZWxs
VHlwZShJc29IZWFwQ2VsbFR5cGU6OmNyZWF0ZTxKU0dsb2JhbExleGljYWxFbnZpcm9ubWVudD4o
KSkKLSAgICAsIGdsb2JhbE9iamVjdEhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OmNyZWF0
ZTxKU0dsb2JhbE9iamVjdD4oKSkKLSAgICAsIGluamVjdGVkU2NyaXB0SG9zdFNwYWNlSGVhcENl
bGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6Y3JlYXRlPEluc3BlY3Rvcjo6SlNJbmplY3RlZFNjcmlw
dEhvc3Q+KCkpCi0gICAgLCBqYXZhU2NyaXB0Q2FsbEZyYW1lSGVhcENlbGxUeXBlKElzb0hlYXBD
ZWxsVHlwZTo6Y3JlYXRlPEluc3BlY3Rvcjo6SlNKYXZhU2NyaXB0Q2FsbEZyYW1lPigpKQotICAg
ICwganNNb2R1bGVSZWNvcmRIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpjcmVhdGU8SlNN
b2R1bGVSZWNvcmQ+KCkpCi0gICAgLCBtb2R1bGVOYW1lc3BhY2VPYmplY3RIZWFwQ2VsbFR5cGUo
SXNvSGVhcENlbGxUeXBlOjpjcmVhdGU8SlNNb2R1bGVOYW1lc3BhY2VPYmplY3Q+KCkpCi0gICAg
LCBuYXRpdmVTdGRGdW5jdGlvbkhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OmNyZWF0ZTxK
U05hdGl2ZVN0ZEZ1bmN0aW9uPigpKQotICAgICwgc3RyaW5nSGVhcENlbGxUeXBlKG1ha2VVbmlx
dWU8SXNvSW5saW5lZEhlYXBDZWxsVHlwZTxKU1N0cmluZz4+KCkpCi0gICAgLCB3ZWFrTWFwSGVh
cENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6Y3JlYXRlPEpTV2Vha01hcD4oKSkKLSAgICAsIHdl
YWtTZXRIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpjcmVhdGU8SlNXZWFrU2V0PigpKQot
ICAgICwgZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKG1ha2VVbmlxdWU8SlNEZXN0cnVj
dGlibGVPYmplY3RIZWFwQ2VsbFR5cGU+KCkpCi0jaWYgSlNDX09CSkNfQVBJX0VOQUJMRUQKLSAg
ICAsIGFwaVdyYXBwZXJPYmplY3RIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpjcmVhdGU8
SlNDYWxsYmFja09iamVjdDxKU0FQSVdyYXBwZXJPYmplY3Q+PigpKQotICAgICwgb2JqQ0NhbGxi
YWNrRnVuY3Rpb25IZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpjcmVhdGU8T2JqQ0NhbGxi
YWNrRnVuY3Rpb24+KCkpCi0jZW5kaWYKLSNpZmRlZiBKU0NfR0xJQl9BUElfRU5BQkxFRAotICAg
ICwgYXBpV3JhcHBlck9iamVjdEhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OmNyZWF0ZTxK
U0NhbGxiYWNrT2JqZWN0PEpTQVBJV3JhcHBlck9iamVjdD4+KCkpCi0gICAgLCBjYWxsYmFja0FQ
SVdyYXBwZXJHbG9iYWxPYmplY3RIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpjcmVhdGU8
SlNDYWxsYmFja09iamVjdDxKU0FQSVdyYXBwZXJHbG9iYWxPYmplY3Q+PigpKQotICAgICwganNj
Q2FsbGJhY2tGdW5jdGlvbkhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OmNyZWF0ZTxKU0ND
YWxsYmFja0Z1bmN0aW9uPigpKQotI2VuZGlmCi0gICAgLCBpbnRsQ29sbGF0b3JIZWFwQ2VsbFR5
cGUoSXNvSGVhcENlbGxUeXBlOjpjcmVhdGU8SW50bENvbGxhdG9yPigpKQotICAgICwgaW50bERh
dGVUaW1lRm9ybWF0SGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6Y3JlYXRlPEludGxEYXRl
VGltZUZvcm1hdD4oKSkKLSAgICAsIGludGxEaXNwbGF5TmFtZXNIZWFwQ2VsbFR5cGUoSXNvSGVh
cENlbGxUeXBlOjpjcmVhdGU8SW50bERpc3BsYXlOYW1lcz4oKSkKLSAgICAsIGludGxMaXN0Rm9y
bWF0SGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6Y3JlYXRlPEludGxMaXN0Rm9ybWF0Pigp
KQotICAgICwgaW50bExvY2FsZUhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OmNyZWF0ZTxJ
bnRsTG9jYWxlPigpKQotICAgICwgaW50bE51bWJlckZvcm1hdEhlYXBDZWxsVHlwZShJc29IZWFw
Q2VsbFR5cGU6OmNyZWF0ZTxJbnRsTnVtYmVyRm9ybWF0PigpKQotICAgICwgaW50bFBsdXJhbFJ1
bGVzSGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6Y3JlYXRlPEludGxQbHVyYWxSdWxlcz4o
KSkKLSAgICAsIGludGxSZWxhdGl2ZVRpbWVGb3JtYXRIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxU
eXBlOjpjcmVhdGU8SW50bFJlbGF0aXZlVGltZUZvcm1hdD4oKSkKLSAgICAsIGludGxTZWdtZW50
SXRlcmF0b3JIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpjcmVhdGU8SW50bFNlZ21lbnRJ
dGVyYXRvcj4oKSkKLSAgICAsIGludGxTZWdtZW50ZXJIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxU
eXBlOjpjcmVhdGU8SW50bFNlZ21lbnRlcj4oKSkKLSAgICAsIGludGxTZWdtZW50c0hlYXBDZWxs
VHlwZShJc29IZWFwQ2VsbFR5cGU6OmNyZWF0ZTxJbnRsU2VnbWVudHM+KCkpCi0jaWYgRU5BQkxF
KFdFQkFTU0VNQkxZKQotICAgICwgd2ViQXNzZW1ibHlDb2RlQmxvY2tIZWFwQ2VsbFR5cGUoSXNv
SGVhcENlbGxUeXBlOjpjcmVhdGU8SlNXZWJBc3NlbWJseUNvZGVCbG9jaz4oKSkKLSAgICAsIHdl
YkFzc2VtYmx5RXhjZXB0aW9uSGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6Y3JlYXRlPEpT
V2ViQXNzZW1ibHlFeGNlcHRpb24+KCkpCi0gICAgLCB3ZWJBc3NlbWJseUZ1bmN0aW9uSGVhcENl
bGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6Y3JlYXRlPFdlYkFzc2VtYmx5RnVuY3Rpb24+KCkpCi0g
ICAgLCB3ZWJBc3NlbWJseUdsb2JhbEhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OmNyZWF0
ZTxKU1dlYkFzc2VtYmx5R2xvYmFsPigpKQotICAgICwgd2ViQXNzZW1ibHlJbnN0YW5jZUhlYXBD
ZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OmNyZWF0ZTxKU1dlYkFzc2VtYmx5SW5zdGFuY2U+KCkp
Ci0gICAgLCB3ZWJBc3NlbWJseU1lbW9yeUhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OmNy
ZWF0ZTxKU1dlYkFzc2VtYmx5TWVtb3J5PigpKQotICAgICwgd2ViQXNzZW1ibHlNb2R1bGVIZWFw
Q2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpjcmVhdGU8SlNXZWJBc3NlbWJseU1vZHVsZT4oKSkK
LSAgICAsIHdlYkFzc2VtYmx5TW9kdWxlUmVjb3JkSGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlw
ZTo6Y3JlYXRlPFdlYkFzc2VtYmx5TW9kdWxlUmVjb3JkPigpKQotICAgICwgd2ViQXNzZW1ibHlU
YWJsZUhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OmNyZWF0ZTxKU1dlYkFzc2VtYmx5VGFi
bGU+KCkpCi0gICAgLCB3ZWJBc3NlbWJseVRhZ0hlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6
OmNyZWF0ZTxKU1dlYkFzc2VtYmx5VGFnPigpKQotI2VuZGlmCi0gICAgLCBwcmltaXRpdmVHaWdh
Y2FnZUF1eGlsaWFyeVNwYWNlKCJQcmltaXRpdmUgR2lnYWNhZ2UgQXV4aWxpYXJ5IiwgaGVhcCwg
YXV4aWxpYXJ5SGVhcENlbGxUeXBlLmdldCgpLCBwcmltaXRpdmVHaWdhY2FnZUFsbG9jYXRvci5n
ZXQoKSkgLy8gSGFzaDoweDNlN2NkNzYyCi0gICAgLCBqc1ZhbHVlR2lnYWNhZ2VBdXhpbGlhcnlT
cGFjZSgiSlNWYWx1ZSBHaWdhY2FnZSBBdXhpbGlhcnkiLCBoZWFwLCBhdXhpbGlhcnlIZWFwQ2Vs
bFR5cGUuZ2V0KCksIGpzVmFsdWVHaWdhY2FnZUFsbG9jYXRvci5nZXQoKSkgLy8gSGFzaDoweDI0
MWU5NDYKLSAgICAsIGltbXV0YWJsZUJ1dHRlcmZseUpTVmFsdWVHaWdhY2FnZUF1eGlsaWFyeVNw
YWNlKCJJbW11dGFibGVCdXR0ZXJmbHkgR2lnYWNhZ2UgSlNDZWxsV2l0aEluZGV4aW5nSGVhZGVy
IiwgaGVhcCwgaW1tdXRhYmxlQnV0dGVyZmx5SGVhcENlbGxUeXBlLmdldCgpLCBqc1ZhbHVlR2ln
YWNhZ2VBbGxvY2F0b3IuZ2V0KCkpIC8vIEhhc2g6MHg3YTk0NTMwMAotICAgICwgY2VsbFNwYWNl
KCJKU0NlbGwiLCBoZWFwLCBjZWxsSGVhcENlbGxUeXBlLmdldCgpLCBmYXN0TWFsbG9jQWxsb2Nh
dG9yLmdldCgpKSAvLyBIYXNoOjB4YWRmYjVhNzkKLSAgICAsIHZhcmlhYmxlU2l6ZWRDZWxsU3Bh
Y2UoIlZhcmlhYmxlIFNpemVkIEpTQ2VsbCIsIGhlYXAsIGNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCks
IGZhc3RNYWxsb2NBbGxvY2F0b3IuZ2V0KCkpIC8vIEhhc2g6MHhiY2Q3NjljYwotICAgICwgZGVz
dHJ1Y3RpYmxlT2JqZWN0U3BhY2UoIkpTRGVzdHJ1Y3RpYmxlT2JqZWN0IiwgaGVhcCwgZGVzdHJ1
Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmdldCgpLCBmYXN0TWFsbG9jQWxsb2NhdG9yLmdldCgp
KSAvLyBIYXNoOjB4NGY1ZWQ3YTkKLSAgICAsIGFycmF5U3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQo
aGVhcCwgY2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNBcnJheSkKLSAgICAsIGJpZ0ludFNwYWNl
IElTT19TVUJTUEFDRV9JTklUKGhlYXAsIGNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTQmlnSW50
KQotICAgICwgY2FsbGVlU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoaGVhcCwgY2VsbEhlYXBDZWxs
VHlwZS5nZXQoKSwgSlNDYWxsZWUpCi0gICAgLCBjbG9uZWRBcmd1bWVudHNTcGFjZSBJU09fU1VC
U1BBQ0VfSU5JVChoZWFwLCBjZWxsSGVhcENlbGxUeXBlLmdldCgpLCBDbG9uZWRBcmd1bWVudHMp
Ci0gICAgLCBjdXN0b21HZXR0ZXJTZXR0ZXJTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVChoZWFwLCBj
ZWxsSGVhcENlbGxUeXBlLmdldCgpLCBDdXN0b21HZXR0ZXJTZXR0ZXIpCi0gICAgLCBkYXRlSW5z
dGFuY2VTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVChoZWFwLCBkYXRlSW5zdGFuY2VIZWFwQ2VsbFR5
cGUuZ2V0KCksIERhdGVJbnN0YW5jZSkKLSAgICAsIGRvbUF0dHJpYnV0ZUdldHRlclNldHRlclNw
YWNlIElTT19TVUJTUEFDRV9JTklUKGhlYXAsIGNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIERPTUF0
dHJpYnV0ZUdldHRlclNldHRlcikKLSAgICAsIGV4Y2VwdGlvblNwYWNlIElTT19TVUJTUEFDRV9J
TklUKGhlYXAsIGRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEV4Y2VwdGlvbikK
LSAgICAsIGV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2VTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVCho
ZWFwLCBjZWxsSGVhcENlbGxUeXBlLmdldCgpLCBFeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlKSAv
LyBIYXNoOjB4N2I3MzBiMjAKLSAgICAsIGZ1bmN0aW9uU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQo
aGVhcCwgY2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNGdW5jdGlvbikgLy8gSGFzaDoweDgwMGZj
YTcyCi0gICAgLCBnZXR0ZXJTZXR0ZXJTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVChoZWFwLCBjZWxs
SGVhcENlbGxUeXBlLmdldCgpLCBHZXR0ZXJTZXR0ZXIpCi0gICAgLCBnbG9iYWxMZXhpY2FsRW52
aXJvbm1lbnRTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVChoZWFwLCBnbG9iYWxMZXhpY2FsRW52aXJv
bm1lbnRIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTR2xvYmFsTGV4aWNhbEVudmlyb25tZW50KQotICAg
ICwgaW50ZXJuYWxGdW5jdGlvblNwYWNlIElTT19TVUJTUEFDRV9JTklUKGhlYXAsIGNlbGxIZWFw
Q2VsbFR5cGUuZ2V0KCksIEludGVybmFsRnVuY3Rpb24pIC8vIEhhc2g6MHhmODQ1YzQ2NAotICAg
ICwganNQcm94eVNwYWNlIElTT19TVUJTUEFDRV9JTklUKGhlYXAsIGNlbGxIZWFwQ2VsbFR5cGUu
Z2V0KCksIEpTUHJveHkpCi0gICAgLCBuYXRpdmVFeGVjdXRhYmxlU3BhY2UgSVNPX1NVQlNQQUNF
X0lOSVQoaGVhcCwgZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgTmF0aXZlRXhl
Y3V0YWJsZSkgLy8gSGFzaDoweDY3NTY3Zjk1Ci0gICAgLCBudW1iZXJPYmplY3RTcGFjZSBJU09f
U1VCU1BBQ0VfSU5JVChoZWFwLCBjZWxsSGVhcENlbGxUeXBlLmdldCgpLCBOdW1iZXJPYmplY3Qp
Ci0gICAgLCBwbGFpbk9iamVjdFNwYWNlIElTT19TVUJTUEFDRV9JTklUKGhlYXAsIGNlbGxIZWFw
Q2VsbFR5cGUuZ2V0KCksIEpTTm9uRmluYWxPYmplY3QpIC8vIE1haW5seSB1c2VkIGZvciBwcm90
b3R5cGVzLgotICAgICwgcHJvbWlzZVNwYWNlIElTT19TVUJTUEFDRV9JTklUKGhlYXAsIGNlbGxI
ZWFwQ2VsbFR5cGUuZ2V0KCksIEpTUHJvbWlzZSkKLSAgICAsIHByb3BlcnR5TmFtZUVudW1lcmF0
b3JTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVChoZWFwLCBjZWxsSGVhcENlbGxUeXBlLmdldCgpLCBK
U1Byb3BlcnR5TmFtZUVudW1lcmF0b3IpCi0gICAgLCBwcm9wZXJ0eVRhYmxlU3BhY2UgSVNPX1NV
QlNQQUNFX0lOSVQoaGVhcCwgZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgUHJv
cGVydHlUYWJsZSkgLy8gSGFzaDoweGM2YmM5ZjEyCi0gICAgLCByZWdFeHBTcGFjZSBJU09fU1VC
U1BBQ0VfSU5JVChoZWFwLCBkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlLmdldCgpLCBSZWdF
eHApCi0gICAgLCByZWdFeHBPYmplY3RTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVChoZWFwLCBjZWxs
SGVhcENlbGxUeXBlLmdldCgpLCBSZWdFeHBPYmplY3QpCi0gICAgLCByb3BlU3RyaW5nU3BhY2Ug
SVNPX1NVQlNQQUNFX0lOSVQoaGVhcCwgc3RyaW5nSGVhcENlbGxUeXBlLmdldCgpLCBKU1JvcGVT
dHJpbmcpCi0gICAgLCBzY29wZWRBcmd1bWVudHNTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVChoZWFw
LCBjZWxsSGVhcENlbGxUeXBlLmdldCgpLCBTY29wZWRBcmd1bWVudHMpCi0gICAgLCBzcGFyc2VB
cnJheVZhbHVlTWFwU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoaGVhcCwgZGVzdHJ1Y3RpYmxlQ2Vs
bEhlYXBDZWxsVHlwZS5nZXQoKSwgU3BhcnNlQXJyYXlWYWx1ZU1hcCkKLSAgICAsIHN0cmluZ1Nw
YWNlIElTT19TVUJTUEFDRV9JTklUKGhlYXAsIHN0cmluZ0hlYXBDZWxsVHlwZS5nZXQoKSwgSlNT
dHJpbmcpIC8vIEhhc2g6MHg5MGNmNzU4ZgotICAgICwgc3RyaW5nT2JqZWN0U3BhY2UgSVNPX1NV
QlNQQUNFX0lOSVQoaGVhcCwgY2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgU3RyaW5nT2JqZWN0KQot
ICAgICwgc3RydWN0dXJlQ2hhaW5TcGFjZSBJU09fU1VCU1BBQ0VfSU5JVChoZWFwLCBjZWxsSGVh
cENlbGxUeXBlLmdldCgpLCBTdHJ1Y3R1cmVDaGFpbikKLSAgICAsIHN0cnVjdHVyZVJhcmVEYXRh
U3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoaGVhcCwgZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlw
ZS5nZXQoKSwgU3RydWN0dXJlUmFyZURhdGEpIC8vIEhhc2g6MHhhY2E0ZTYyZAotICAgICwgc3Ry
dWN0dXJlU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoaGVhcCwgZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBD
ZWxsVHlwZS5nZXQoKSwgU3RydWN0dXJlKSAvLyBIYXNoOjB4MWYxYmNkY2EKLSAgICAsIGJyYW5k
ZWRTdHJ1Y3R1cmVTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVChoZWFwLCBkZXN0cnVjdGlibGVDZWxs
SGVhcENlbGxUeXBlLmdldCgpLCBCcmFuZGVkU3RydWN0dXJlKQotICAgICwgc3ltYm9sVGFibGVT
cGFjZSBJU09fU1VCU1BBQ0VfSU5JVChoZWFwLCBkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBl
LmdldCgpLCBTeW1ib2xUYWJsZSkgLy8gSGFzaDoweGM1MjE1YWZkCi0gICAgLCBleGVjdXRhYmxl
VG9Db2RlQmxvY2tFZGdlc1dpdGhDb25zdHJhaW50cyhleGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdl
U3BhY2UpCi0gICAgLCBleGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlc1dpdGhGaW5hbGl6ZXJzKGV4
ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2VTcGFjZSkKLSAgICAsIGNvZGVCbG9ja1NwYWNlIElTT19T
VUJTUEFDRV9JTklUKGhlYXAsIGRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIENv
ZGVCbG9jaykgLy8gSGFzaDoweDc3ZTY2ZWM5Ci0gICAgLCBmdW5jdGlvbkV4ZWN1dGFibGVTcGFj
ZSBJU09fU1VCU1BBQ0VfSU5JVChoZWFwLCBkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlLmdl
dCgpLCBGdW5jdGlvbkV4ZWN1dGFibGUpIC8vIEhhc2g6MHg1ZDE1OGYzCi0gICAgLCBwcm9ncmFt
RXhlY3V0YWJsZVNwYWNlIElTT19TVUJTUEFDRV9JTklUKGhlYXAsIGRlc3RydWN0aWJsZUNlbGxI
ZWFwQ2VsbFR5cGUuZ2V0KCksIFByb2dyYW1FeGVjdXRhYmxlKSAvLyBIYXNoOjB4NTI3Yzc3ZTcK
LSAgICAsIHVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQo
aGVhcCwgZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgVW5saW5rZWRGdW5jdGlv
bkV4ZWN1dGFibGUpIC8vIEhhc2g6MHhmNmI4MjhkOQogICAgICwgdm1UeXBlKHZtVHlwZSkKICAg
ICAsIGNsaWVudERhdGEobnVsbHB0cikKICAgICAsIHRvcEVudHJ5RnJhbWUobnVsbHB0cikKQEAg
LTE1NzEsMTM3ICsxMzkzLDYgQEAgdm9pZCBWTTo6ZW5zdXJlU2hhZG93Q2hpY2tlbigpCiAgICAg
bV9zaGFkb3dDaGlja2VuID0gbWFrZVVuaXF1ZTxTaGFkb3dDaGlja2VuPigpOwogfQogCi0jZGVm
aW5lIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhuYW1lLCBoZWFwQ2Vs
bFR5cGUsIHR5cGUpIFwKLSAgICBJc29TdWJzcGFjZSogVk06Om5hbWUjI1Nsb3coKSBcCi0gICAg
eyBcCi0gICAgICAgIEFTU0VSVCghbV8jI25hbWUpOyBcCi0gICAgICAgIGF1dG8gc3BhY2UgPSBt
YWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVChoZWFwLCBoZWFwQ2VsbFR5
cGUsIHR5cGUpOyBcCi0gICAgICAgIFdURjo6c3RvcmVTdG9yZUZlbmNlKCk7IFwKLSAgICAgICAg
bV8jI25hbWUgPSBXVEZNb3ZlKHNwYWNlKTsgXAotICAgICAgICByZXR1cm4gbV8jI25hbWUuZ2V0
KCk7IFwKLSAgICB9Ci0KLQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9X
KGFwaUdsb2JhbE9iamVjdFNwYWNlLCBhcGlHbG9iYWxPYmplY3RIZWFwQ2VsbFR5cGUuZ2V0KCks
IEpTQVBJR2xvYmFsT2JqZWN0KQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9T
TE9XKGFwaVZhbHVlV3JhcHBlclNwYWNlLCBjZWxsSGVhcENlbGxUeXBlLmdldCgpLCBKU0FQSVZh
bHVlV3JhcHBlcikKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhhcnJh
eUJ1ZmZlclNwYWNlLCBjZWxsSGVhcENlbGxUeXBlLmdldCgpLCBKU0FycmF5QnVmZmVyKQotRFlO
QU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGFycmF5SXRlcmF0b3JTcGFjZSwg
Y2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNBcnJheUl0ZXJhdG9yKQotRFlOQU1JQ19JU09fU1VC
U1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGFzeW5jR2VuZXJhdG9yU3BhY2UsIGNlbGxIZWFwQ2Vs
bFR5cGUuZ2V0KCksIEpTQXN5bmNHZW5lcmF0b3IpCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJ
TkVfTUVNQkVSX1NMT1coYmlnSW50NjRBcnJheVNwYWNlLCBjZWxsSGVhcENlbGxUeXBlLmdldCgp
LCBKU0JpZ0ludDY0QXJyYXkpCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NM
T1coYmlnSW50T2JqZWN0U3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEJpZ0ludE9iamVj
dCkKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhiaWdVaW50NjRBcnJh
eVNwYWNlLCBjZWxsSGVhcENlbGxUeXBlLmdldCgpLCBKU0JpZ1VpbnQ2NEFycmF5KQotRFlOQU1J
Q19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGJvb2xlYW5PYmplY3RTcGFjZSwgY2Vs
bEhlYXBDZWxsVHlwZS5nZXQoKSwgQm9vbGVhbk9iamVjdCkKLURZTkFNSUNfSVNPX1NVQlNQQUNF
X0RFRklORV9NRU1CRVJfU0xPVyhib3VuZEZ1bmN0aW9uU3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUu
Z2V0KCksIEpTQm91bmRGdW5jdGlvbikgLy8gSGFzaDoweGQ3OTE2ZDQxCi1EWU5BTUlDX0lTT19T
VUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coY2FsbGJhY2tDb25zdHJ1Y3RvclNwYWNlLCBjYWxs
YmFja0NvbnN0cnVjdG9ySGVhcENlbGxUeXBlLmdldCgpLCBKU0NhbGxiYWNrQ29uc3RydWN0b3Ip
Ci1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coY2FsbGJhY2tHbG9iYWxP
YmplY3RTcGFjZSwgY2FsbGJhY2tHbG9iYWxPYmplY3RIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTQ2Fs
bGJhY2tPYmplY3Q8SlNHbG9iYWxPYmplY3Q+KQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5F
X01FTUJFUl9TTE9XKGNhbGxiYWNrRnVuY3Rpb25TcGFjZSwgY2VsbEhlYXBDZWxsVHlwZS5nZXQo
KSwgSlNDYWxsYmFja0Z1bmN0aW9uKSAvLyBIYXNoOjB4ZTc2NDhlYmMKLURZTkFNSUNfSVNPX1NV
QlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhjYWxsYmFja09iamVjdFNwYWNlLCBjYWxsYmFja09i
amVjdEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNDYWxsYmFja09iamVjdDxKU05vbkZpbmFsT2JqZWN0
PikKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhjdXN0b21HZXR0ZXJG
dW5jdGlvblNwYWNlLCBjdXN0b21HZXR0ZXJGdW5jdGlvbkhlYXBDZWxsVHlwZS5nZXQoKSwgSlND
dXN0b21HZXR0ZXJGdW5jdGlvbikKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJf
U0xPVyhjdXN0b21TZXR0ZXJGdW5jdGlvblNwYWNlLCBjdXN0b21TZXR0ZXJGdW5jdGlvbkhlYXBD
ZWxsVHlwZS5nZXQoKSwgSlNDdXN0b21TZXR0ZXJGdW5jdGlvbikKLURZTkFNSUNfSVNPX1NVQlNQ
QUNFX0RFRklORV9NRU1CRVJfU0xPVyhkYXRhVmlld1NwYWNlLCBjZWxsSGVhcENlbGxUeXBlLmdl
dCgpLCBKU0RhdGFWaWV3KQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9X
KGRlYnVnZ2VyU2NvcGVTcGFjZSwgY2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgRGVidWdnZXJTY29w
ZSkKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhlcnJvckluc3RhbmNl
U3BhY2UsIGVycm9ySW5zdGFuY2VIZWFwQ2VsbFR5cGUuZ2V0KCksIEVycm9ySW5zdGFuY2UpIC8v
IEhhc2g6MHgzZjQwZDRhCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1co
ZmxvYXQzMkFycmF5U3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTRmxvYXQzMkFycmF5
KQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGZsb2F0NjRBcnJheVNw
YWNlLCBjZWxsSGVhcENlbGxUeXBlLmdldCgpLCBKU0Zsb2F0NjRBcnJheSkKLURZTkFNSUNfSVNP
X1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhmdW5jdGlvblJhcmVEYXRhU3BhY2UsIGRlc3Ry
dWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEZ1bmN0aW9uUmFyZURhdGEpCi1EWU5BTUlD
X0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coZ2VuZXJhdG9yU3BhY2UsIGNlbGxIZWFw
Q2VsbFR5cGUuZ2V0KCksIEpTR2VuZXJhdG9yKQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5F
X01FTUJFUl9TTE9XKGdsb2JhbE9iamVjdFNwYWNlLCBnbG9iYWxPYmplY3RIZWFwQ2VsbFR5cGUu
Z2V0KCksIEpTR2xvYmFsT2JqZWN0KQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJF
Ul9TTE9XKGluamVjdGVkU2NyaXB0SG9zdFNwYWNlLCBpbmplY3RlZFNjcmlwdEhvc3RTcGFjZUhl
YXBDZWxsVHlwZS5nZXQoKSwgSW5zcGVjdG9yOjpKU0luamVjdGVkU2NyaXB0SG9zdCkKLURZTkFN
SUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhpbnQ4QXJyYXlTcGFjZSwgY2VsbEhl
YXBDZWxsVHlwZS5nZXQoKSwgSlNJbnQ4QXJyYXkpCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJ
TkVfTUVNQkVSX1NMT1coaW50MTZBcnJheVNwYWNlLCBjZWxsSGVhcENlbGxUeXBlLmdldCgpLCBK
U0ludDE2QXJyYXkpCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coaW50
MzJBcnJheVNwYWNlLCBjZWxsSGVhcENlbGxUeXBlLmdldCgpLCBKU0ludDMyQXJyYXkpCi1EWU5B
TUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coamF2YVNjcmlwdENhbGxGcmFtZVNw
YWNlLCBqYXZhU2NyaXB0Q2FsbEZyYW1lSGVhcENlbGxUeXBlLmdldCgpLCBJbnNwZWN0b3I6OkpT
SmF2YVNjcmlwdENhbGxGcmFtZSkKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJf
U0xPVyhqc01vZHVsZVJlY29yZFNwYWNlLCBqc01vZHVsZVJlY29yZEhlYXBDZWxsVHlwZS5nZXQo
KSwgSlNNb2R1bGVSZWNvcmQpCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NM
T1cobWFwQnVja2V0U3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTTWFwOjpCdWNrZXRU
eXBlKQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKG1hcEl0ZXJhdG9y
U3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTTWFwSXRlcmF0b3IpCi1EWU5BTUlDX0lT
T19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1cobWFwU3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUu
Z2V0KCksIEpTTWFwKQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKG1v
ZHVsZU5hbWVzcGFjZU9iamVjdFNwYWNlLCBtb2R1bGVOYW1lc3BhY2VPYmplY3RIZWFwQ2VsbFR5
cGUuZ2V0KCksIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0KQotRFlOQU1JQ19JU09fU1VCU1BBQ0Vf
REVGSU5FX01FTUJFUl9TTE9XKG5hdGl2ZVN0ZEZ1bmN0aW9uU3BhY2UsIG5hdGl2ZVN0ZEZ1bmN0
aW9uSGVhcENlbGxUeXBlLmdldCgpLCBKU05hdGl2ZVN0ZEZ1bmN0aW9uKSAvLyBIYXNoOjB4NzBl
ZDYxZTQKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhwcm94eU9iamVj
dFNwYWNlLCBjZWxsSGVhcENlbGxUeXBlLmdldCgpLCBQcm94eU9iamVjdCkKLURZTkFNSUNfSVNP
X1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhwcm94eVJldm9rZVNwYWNlLCBjZWxsSGVhcENl
bGxUeXBlLmdldCgpLCBQcm94eVJldm9rZSkgLy8gSGFzaDoweGI1MDZhOTM5Ci1EWU5BTUlDX0lT
T19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coc2NvcGVkQXJndW1lbnRzVGFibGVTcGFjZSwg
ZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgU2NvcGVkQXJndW1lbnRzVGFibGUp
Ci1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coc2NyaXB0RmV0Y2hQYXJh
bWV0ZXJzU3BhY2UsIGRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTU2NyaXB0
RmV0Y2hQYXJhbWV0ZXJzKQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9X
KHNjcmlwdEZldGNoZXJTcGFjZSwgZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwg
SlNTY3JpcHRGZXRjaGVyKQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9X
KHNldEJ1Y2tldFNwYWNlLCBjZWxsSGVhcENlbGxUeXBlLmdldCgpLCBKU1NldDo6QnVja2V0VHlw
ZSkKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhzZXRJdGVyYXRvclNw
YWNlLCBjZWxsSGVhcENlbGxUeXBlLmdldCgpLCBKU1NldEl0ZXJhdG9yKQotRFlOQU1JQ19JU09f
U1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHNldFNwYWNlLCBjZWxsSGVhcENlbGxUeXBlLmdl
dCgpLCBKU1NldCkKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhzaGFk
b3dSZWFsbVNwYWNlLCBjZWxsSGVhcENlbGxUeXBlLmdldCgpLCBTaGFkb3dSZWFsbU9iamVjdCkK
LURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhzdHJpY3RFdmFsQWN0aXZh
dGlvblNwYWNlLCBjZWxsSGVhcENlbGxUeXBlLmdldCgpLCBTdHJpY3RFdmFsQWN0aXZhdGlvbikK
LURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhzdHJpbmdJdGVyYXRvclNw
YWNlLCBjZWxsSGVhcENlbGxUeXBlLmdldCgpLCBKU1N0cmluZ0l0ZXJhdG9yKQotRFlOQU1JQ19J
U09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHNvdXJjZUNvZGVTcGFjZSwgZGVzdHJ1Y3Rp
YmxlQ2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNTb3VyY2VDb2RlKQotRFlOQU1JQ19JU09fU1VC
U1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHN5bWJvbFNwYWNlLCBkZXN0cnVjdGlibGVDZWxsSGVh
cENlbGxUeXBlLmdldCgpLCBTeW1ib2wpCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVN
QkVSX1NMT1coc3ltYm9sT2JqZWN0U3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIFN5bWJv
bE9iamVjdCkKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh0ZW1wbGF0
ZU9iamVjdERlc2NyaXB0b3JTcGFjZSwgZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZS5nZXQo
KSwgSlNUZW1wbGF0ZU9iamVjdERlc2NyaXB0b3IpCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJ
TkVfTUVNQkVSX1NMT1codGVtcG9yYWxDYWxlbmRhclNwYWNlLCBjZWxsSGVhcENlbGxUeXBlLmdl
dCgpLCBUZW1wb3JhbENhbGVuZGFyKQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJF
Ul9TTE9XKHRlbXBvcmFsRHVyYXRpb25TcGFjZSwgY2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgVGVt
cG9yYWxEdXJhdGlvbikKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh0
ZW1wb3JhbEluc3RhbnRTcGFjZSwgY2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgVGVtcG9yYWxJbnN0
YW50KQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHRlbXBvcmFsUGxh
aW5UaW1lU3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIFRlbXBvcmFsUGxhaW5UaW1lKQot
RFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHRlbXBvcmFsVGltZVpvbmVT
cGFjZSwgY2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgVGVtcG9yYWxUaW1lWm9uZSkKLURZTkFNSUNf
SVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh1aW50OEFycmF5U3BhY2UsIGNlbGxIZWFw
Q2VsbFR5cGUuZ2V0KCksIEpTVWludDhBcnJheSkKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklO
RV9NRU1CRVJfU0xPVyh1aW50OENsYW1wZWRBcnJheVNwYWNlLCBjZWxsSGVhcENlbGxUeXBlLmdl
dCgpLCBKU1VpbnQ4Q2xhbXBlZEFycmF5KQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01F
TUJFUl9TTE9XKHVpbnQxNkFycmF5U3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVWlu
dDE2QXJyYXkpCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1codWludDMy
QXJyYXlTcGFjZSwgY2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNVaW50MzJBcnJheSkKLURZTkFN
SUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh1bmxpbmtlZEV2YWxDb2RlQmxvY2tT
cGFjZSwgZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgVW5saW5rZWRFdmFsQ29k
ZUJsb2NrKQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHVubGlua2Vk
RnVuY3Rpb25Db2RlQmxvY2tTcGFjZSwgZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZS5nZXQo
KSwgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jaykKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklO
RV9NRU1CRVJfU0xPVyh1bmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2tTcGFjZSwgZGVzdHJ1
Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgVW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJs
b2NrKQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHVubGlua2VkUHJv
Z3JhbUNvZGVCbG9ja1NwYWNlLCBkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlLmdldCgpLCBV
bmxpbmtlZFByb2dyYW1Db2RlQmxvY2spCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVN
QkVSX1NMT1cod2Vha01hcFNwYWNlLCB3ZWFrTWFwSGVhcENlbGxUeXBlLmdldCgpLCBKU1dlYWtN
YXApIC8vIEhhc2g6MHg2NjJiMTJhMwotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJF
Ul9TTE9XKHdlYWtTZXRTcGFjZSwgd2Vha1NldEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNXZWFrU2V0
KSAvLyBIYXNoOjB4NGM3ODFiMzAKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJf
U0xPVyh3ZWFrT2JqZWN0UmVmU3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTV2Vha09i
amVjdFJlZikgLy8gSGFzaDoweDhlYzY4ZjFmCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVf
TUVNQkVSX1NMT1cod2l0aFNjb3BlU3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTV2l0
aFNjb3BlKQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGZpbmFsaXph
dGlvblJlZ2lzdHJ5U3BhY2UsIGZpbmFsaXphdGlvblJlZ2lzdHJ5Q2VsbFR5cGUuZ2V0KCksIEpT
RmluYWxpemF0aW9uUmVnaXN0cnkpCi0jaWYgSlNDX09CSkNfQVBJX0VOQUJMRUQKLURZTkFNSUNf
SVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhhcGlXcmFwcGVyT2JqZWN0U3BhY2UsIGFw
aVdyYXBwZXJPYmplY3RIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTQ2FsbGJhY2tPYmplY3Q8SlNBUElX
cmFwcGVyT2JqZWN0PikKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhv
YmpDQ2FsbGJhY2tGdW5jdGlvblNwYWNlLCBvYmpDQ2FsbGJhY2tGdW5jdGlvbkhlYXBDZWxsVHlw
ZS5nZXQoKSwgT2JqQ0NhbGxiYWNrRnVuY3Rpb24pIC8vIEhhc2g6MHgxMGY2MTBiOAotI2VuZGlm
Ci0jaWZkZWYgSlNDX0dMSUJfQVBJX0VOQUJMRUQKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklO
RV9NRU1CRVJfU0xPVyhhcGlXcmFwcGVyT2JqZWN0U3BhY2UsIGFwaVdyYXBwZXJPYmplY3RIZWFw
Q2VsbFR5cGUuZ2V0KCksIEpTQ2FsbGJhY2tPYmplY3Q8SlNBUElXcmFwcGVyT2JqZWN0PikKLURZ
TkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhqc2NDYWxsYmFja0Z1bmN0aW9u
U3BhY2UsIGpzY0NhbGxiYWNrRnVuY3Rpb25IZWFwQ2VsbFR5cGUuZ2V0KCksIEpTQ0NhbGxiYWNr
RnVuY3Rpb24pCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coY2FsbGJh
Y2tBUElXcmFwcGVyR2xvYmFsT2JqZWN0U3BhY2UsIGNhbGxiYWNrQVBJV3JhcHBlckdsb2JhbE9i
amVjdEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNDYWxsYmFja09iamVjdDxKU0FQSVdyYXBwZXJHbG9i
YWxPYmplY3Q+KQotI2VuZGlmCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NM
T1coaW50bENvbGxhdG9yU3BhY2UsIGludGxDb2xsYXRvckhlYXBDZWxsVHlwZS5nZXQoKSwgSW50
bENvbGxhdG9yKQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGludGxE
YXRlVGltZUZvcm1hdFNwYWNlLCBpbnRsRGF0ZVRpbWVGb3JtYXRIZWFwQ2VsbFR5cGUuZ2V0KCks
IEludGxEYXRlVGltZUZvcm1hdCkKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJf
U0xPVyhpbnRsRGlzcGxheU5hbWVzU3BhY2UsIGludGxEaXNwbGF5TmFtZXNIZWFwQ2VsbFR5cGUu
Z2V0KCksIEludGxEaXNwbGF5TmFtZXMpCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVN
QkVSX1NMT1coaW50bExpc3RGb3JtYXRTcGFjZSwgaW50bExpc3RGb3JtYXRIZWFwQ2VsbFR5cGUu
Z2V0KCksIEludGxMaXN0Rm9ybWF0KQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJF
Ul9TTE9XKGludGxMb2NhbGVTcGFjZSwgaW50bExvY2FsZUhlYXBDZWxsVHlwZS5nZXQoKSwgSW50
bExvY2FsZSkKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhpbnRsTnVt
YmVyRm9ybWF0U3BhY2UsIGludGxOdW1iZXJGb3JtYXRIZWFwQ2VsbFR5cGUuZ2V0KCksIEludGxO
dW1iZXJGb3JtYXQpCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coaW50
bFBsdXJhbFJ1bGVzU3BhY2UsIGludGxQbHVyYWxSdWxlc0hlYXBDZWxsVHlwZS5nZXQoKSwgSW50
bFBsdXJhbFJ1bGVzKQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGlu
dGxSZWxhdGl2ZVRpbWVGb3JtYXRTcGFjZSwgaW50bFJlbGF0aXZlVGltZUZvcm1hdEhlYXBDZWxs
VHlwZS5nZXQoKSwgSW50bFJlbGF0aXZlVGltZUZvcm1hdCkKLURZTkFNSUNfSVNPX1NVQlNQQUNF
X0RFRklORV9NRU1CRVJfU0xPVyhpbnRsU2VnbWVudEl0ZXJhdG9yU3BhY2UsIGludGxTZWdtZW50
SXRlcmF0b3JIZWFwQ2VsbFR5cGUuZ2V0KCksIEludGxTZWdtZW50SXRlcmF0b3IpCi1EWU5BTUlD
X0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coaW50bFNlZ21lbnRlclNwYWNlLCBpbnRs
U2VnbWVudGVySGVhcENlbGxUeXBlLmdldCgpLCBJbnRsU2VnbWVudGVyKQotRFlOQU1JQ19JU09f
U1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGludGxTZWdtZW50c1NwYWNlLCBpbnRsU2VnbWVu
dHNIZWFwQ2VsbFR5cGUuZ2V0KCksIEludGxTZWdtZW50cykKLSNpZiBFTkFCTEUoV0VCQVNTRU1C
TFkpCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coanNUb1dhc21JQ0Nh
bGxlZVNwYWNlLCBjZWxsSGVhcENlbGxUeXBlLmdldCgpLCBKU1RvV2FzbUlDQ2FsbGVlKQotRFlO
QU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHdlYkFzc2VtYmx5Q29kZUJsb2Nr
U3BhY2UsIHdlYkFzc2VtYmx5Q29kZUJsb2NrSGVhcENlbGxUeXBlLmdldCgpLCBKU1dlYkFzc2Vt
Ymx5Q29kZUJsb2NrKSAvLyBIYXNoOjB4OWFkOTk1Y2QKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RF
RklORV9NRU1CRVJfU0xPVyh3ZWJBc3NlbWJseUV4Y2VwdGlvblNwYWNlLCB3ZWJBc3NlbWJseUV4
Y2VwdGlvbkhlYXBDZWxsVHlwZS5nZXQoKSwgSlNXZWJBc3NlbWJseUV4Y2VwdGlvbikKLURZTkFN
SUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh3ZWJBc3NlbWJseUZ1bmN0aW9uU3Bh
Y2UsIHdlYkFzc2VtYmx5RnVuY3Rpb25IZWFwQ2VsbFR5cGUuZ2V0KCksIFdlYkFzc2VtYmx5RnVu
Y3Rpb24pIC8vIEhhc2g6MHg4YjdjMzJkYgotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01F
TUJFUl9TTE9XKHdlYkFzc2VtYmx5R2xvYmFsU3BhY2UsIHdlYkFzc2VtYmx5R2xvYmFsSGVhcENl
bGxUeXBlLmdldCgpLCBKU1dlYkFzc2VtYmx5R2xvYmFsKQotRFlOQU1JQ19JU09fU1VCU1BBQ0Vf
REVGSU5FX01FTUJFUl9TTE9XKHdlYkFzc2VtYmx5SW5zdGFuY2VTcGFjZSwgd2ViQXNzZW1ibHlJ
bnN0YW5jZUhlYXBDZWxsVHlwZS5nZXQoKSwgSlNXZWJBc3NlbWJseUluc3RhbmNlKQotRFlOQU1J
Q19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHdlYkFzc2VtYmx5TWVtb3J5U3BhY2Us
IHdlYkFzc2VtYmx5TWVtb3J5SGVhcENlbGxUeXBlLmdldCgpLCBKU1dlYkFzc2VtYmx5TWVtb3J5
KQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHdlYkFzc2VtYmx5TW9k
dWxlU3BhY2UsIHdlYkFzc2VtYmx5TW9kdWxlSGVhcENlbGxUeXBlLmdldCgpLCBKU1dlYkFzc2Vt
Ymx5TW9kdWxlKQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHdlYkFz
c2VtYmx5TW9kdWxlUmVjb3JkU3BhY2UsIHdlYkFzc2VtYmx5TW9kdWxlUmVjb3JkSGVhcENlbGxU
eXBlLmdldCgpLCBXZWJBc3NlbWJseU1vZHVsZVJlY29yZCkKLURZTkFNSUNfSVNPX1NVQlNQQUNF
X0RFRklORV9NRU1CRVJfU0xPVyh3ZWJBc3NlbWJseVRhYmxlU3BhY2UsIHdlYkFzc2VtYmx5VGFi
bGVIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTV2ViQXNzZW1ibHlUYWJsZSkKLURZTkFNSUNfSVNPX1NV
QlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh3ZWJBc3NlbWJseVRhZ1NwYWNlLCB3ZWJBc3NlbWJs
eVRhZ0hlYXBDZWxsVHlwZS5nZXQoKSwgSlNXZWJBc3NlbWJseVRhZykKLURZTkFNSUNfSVNPX1NV
QlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh3ZWJBc3NlbWJseVdyYXBwZXJGdW5jdGlvblNwYWNl
LCBjZWxsSGVhcENlbGxUeXBlLmdldCgpLCBXZWJBc3NlbWJseVdyYXBwZXJGdW5jdGlvbikgLy8g
SGFzaDoweGQ0YTVmZjAxCi0jZW5kaWYKLQotI3VuZGVmIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RF
RklORV9NRU1CRVJfU0xPVwotCi0jZGVmaW5lIERZTkFNSUNfU1BBQ0VfQU5EX1NFVF9ERUZJTkVf
TUVNQkVSX1NMT1cobmFtZSwgaGVhcENlbGxUeXBlLCB0eXBlKSBcCi0gICAgSXNvU3Vic3BhY2Uq
IFZNOjpuYW1lIyNTbG93KCkgXAotICAgIHsgXAotICAgICAgICBBU1NFUlQoIW1fIyNuYW1lKTsg
XAotICAgICAgICBhdXRvIHNwYWNlID0gbWFrZVVuaXF1ZTxTcGFjZUFuZFNldD4gSVNPX1NVQlNQ
QUNFX0lOSVQoaGVhcCwgaGVhcENlbGxUeXBlLCB0eXBlKTsgXAotICAgICAgICBXVEY6OnN0b3Jl
U3RvcmVGZW5jZSgpOyBcCi0gICAgICAgIG1fIyNuYW1lID0gV1RGTW92ZShzcGFjZSk7IFwKLSAg
ICAgICAgcmV0dXJuICZtXyMjbmFtZS0+c3BhY2U7IFwKLSAgICB9Ci0KLURZTkFNSUNfU1BBQ0Vf
QU5EX1NFVF9ERUZJTkVfTUVNQkVSX1NMT1coZXZhbEV4ZWN1dGFibGVTcGFjZSwgZGVzdHJ1Y3Rp
YmxlQ2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgRXZhbEV4ZWN1dGFibGUpIC8vIEhhc2g6MHg5NThl
M2U5ZAotRFlOQU1JQ19TUEFDRV9BTkRfU0VUX0RFRklORV9NRU1CRVJfU0xPVyhtb2R1bGVQcm9n
cmFtRXhlY3V0YWJsZVNwYWNlLCBkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlLmdldCgpLCBN
b2R1bGVQcm9ncmFtRXhlY3V0YWJsZSkgLy8gSGFzaDoweDY1MDZmYTNjCi0KLSN1bmRlZiBEWU5B
TUlDX1NQQUNFX0FORF9TRVRfREVGSU5FX01FTUJFUl9TTE9XCi0KIEpTQ2VsbCogVk06OnNlbnRp
bmVsU2V0QnVja2V0U2xvdygpCiB7CiAgICAgQVNTRVJUKCFtX3NlbnRpbmVsU2V0QnVja2V0KTsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAkocmV2aXNpb24gMjg2MDExKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAkod29ya2luZyBjb3B5KQpAQCAtMzEs
NyArMzEsNiBAQAogI2luY2x1ZGUgIkNhbGxEYXRhLmgiCiAjaW5jbHVkZSAiQ2FsbGVlQml0cy5o
IgogI2luY2x1ZGUgIkNvZGVTcGVjaWFsaXphdGlvbktpbmQuaCIKLSNpbmNsdWRlICJDb21wbGV0
ZVN1YnNwYWNlLmgiCiAjaW5jbHVkZSAiQ29uY3VycmVudEpTTG9jay5oIgogI2luY2x1ZGUgIkRG
R0RvZXNHQ0NoZWNrLmgiCiAjaW5jbHVkZSAiRGVsZXRlQWxsQ29kZUVmZm9ydC5oIgpAQCAtNDIs
OCArNDEsNiBAQAogI2luY2x1ZGUgIkhlYXAuaCIKICNpbmNsdWRlICJJbnRlZ3JpdHkuaCIKICNp
bmNsdWRlICJJbnRyaW5zaWMuaCIKLSNpbmNsdWRlICJJc29DZWxsU2V0LmgiCi0jaW5jbHVkZSAi
SXNvU3Vic3BhY2UuaCIKICNpbmNsdWRlICJKU0NKU1ZhbHVlLmgiCiAjaW5jbHVkZSAiSlNEYXRl
TWF0aC5oIgogI2luY2x1ZGUgIkpTTG9jay5oIgpAQCAtMTIyLDggKzExOSw2IEBAIGNsYXNzIERh
dGVJbnN0YW5jZTsKIGNsYXNzIEVycm9ySW5zdGFuY2U7CiBjbGFzcyBFeGNlcHRpb247CiBjbGFz
cyBFeGNlcHRpb25TY29wZTsKLWNsYXNzIEZhc3RNYWxsb2NBbGlnbmVkTWVtb3J5QWxsb2NhdG9y
OwotY2xhc3MgR2lnYWNhZ2VBbGlnbmVkTWVtb3J5QWxsb2NhdG9yOwogY2xhc3MgSGFuZGxlU3Rh
Y2s7CiBjbGFzcyBIYXNPd25Qcm9wZXJ0eUNhY2hlOwogY2xhc3MgSGVhcEFuYWx5emVyOwpAQCAt
MjIwLDggKzIxNSw2IEBAIGNsYXNzIFdlYkFzc2VtYmx5TW9kdWxlUmVjb3JkOwogCiBjb25zdGV4
cHIgYm9vbCB2YWxpZGF0ZURGR0RvZXNHQyA9IEVOQUJMRV9ERkdfRE9FU19HQ19WQUxJREFUSU9O
OwogCi1jbGFzcyBJc29IZWFwQ2VsbFR5cGU7Ci10ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZT4g
Y2xhc3MgSXNvSW5saW5lZEhlYXBDZWxsVHlwZTsKIHRlbXBsYXRlPHR5cGVuYW1lIFBhcmVudD4g
Y2xhc3MgSlNDYWxsYmFja09iamVjdDsKIAogI2lmIEVOQUJMRShGVExfSklUKQpAQCAtNDEzLDE0
NSArNDA2LDU4IEBAIHByaXZhdGU6CiAKIHB1YmxpYzoKICAgICBIZWFwIGhlYXA7Ci0gICAgCi0g
ICAgc3RkOjp1bmlxdWVfcHRyPEZhc3RNYWxsb2NBbGlnbmVkTWVtb3J5QWxsb2NhdG9yPiBmYXN0
TWFsbG9jQWxsb2NhdG9yOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxHaWdhY2FnZUFsaWduZWRNZW1v
cnlBbGxvY2F0b3I+IHByaW1pdGl2ZUdpZ2FjYWdlQWxsb2NhdG9yOwotICAgIHN0ZDo6dW5pcXVl
X3B0cjxHaWdhY2FnZUFsaWduZWRNZW1vcnlBbGxvY2F0b3I+IGpzVmFsdWVHaWdhY2FnZUFsbG9j
YXRvcjsKLQotICAgIHN0ZDo6dW5pcXVlX3B0cjxIZWFwQ2VsbFR5cGU+IGF1eGlsaWFyeUhlYXBD
ZWxsVHlwZTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SGVhcENlbGxUeXBlPiBpbW11dGFibGVCdXR0
ZXJmbHlIZWFwQ2VsbFR5cGU7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPEhlYXBDZWxsVHlwZT4gY2Vs
bEhlYXBDZWxsVHlwZTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SGVhcENlbGxUeXBlPiBkZXN0cnVj
dGlibGVDZWxsSGVhcENlbGxUeXBlOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxJc29IZWFwQ2VsbFR5
cGU+IGFwaUdsb2JhbE9iamVjdEhlYXBDZWxsVHlwZTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SXNv
SGVhcENlbGxUeXBlPiBjYWxsYmFja0NvbnN0cnVjdG9ySGVhcENlbGxUeXBlOwotICAgIHN0ZDo6
dW5pcXVlX3B0cjxJc29IZWFwQ2VsbFR5cGU+IGNhbGxiYWNrR2xvYmFsT2JqZWN0SGVhcENlbGxU
eXBlOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxJc29IZWFwQ2VsbFR5cGU+IGNhbGxiYWNrT2JqZWN0
SGVhcENlbGxUeXBlOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxJc29IZWFwQ2VsbFR5cGU+IGN1c3Rv
bUdldHRlckZ1bmN0aW9uSGVhcENlbGxUeXBlOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxJc29IZWFw
Q2VsbFR5cGU+IGN1c3RvbVNldHRlckZ1bmN0aW9uSGVhcENlbGxUeXBlOwotICAgIHN0ZDo6dW5p
cXVlX3B0cjxJc29IZWFwQ2VsbFR5cGU+IGRhdGVJbnN0YW5jZUhlYXBDZWxsVHlwZTsKLSAgICBz
dGQ6OnVuaXF1ZV9wdHI8SXNvSGVhcENlbGxUeXBlPiBlcnJvckluc3RhbmNlSGVhcENlbGxUeXBl
OwotICAgIHN0ZDo6dW5pcXVlX3B0cjxJc29IZWFwQ2VsbFR5cGU+IGZpbmFsaXphdGlvblJlZ2lz
dHJ5Q2VsbFR5cGU7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPElzb0hlYXBDZWxsVHlwZT4gZ2xvYmFs
TGV4aWNhbEVudmlyb25tZW50SGVhcENlbGxUeXBlOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxJc29I
ZWFwQ2VsbFR5cGU+IGdsb2JhbE9iamVjdEhlYXBDZWxsVHlwZTsKLSAgICBzdGQ6OnVuaXF1ZV9w
dHI8SXNvSGVhcENlbGxUeXBlPiBpbmplY3RlZFNjcmlwdEhvc3RTcGFjZUhlYXBDZWxsVHlwZTsK
LSAgICBzdGQ6OnVuaXF1ZV9wdHI8SXNvSGVhcENlbGxUeXBlPiBqYXZhU2NyaXB0Q2FsbEZyYW1l
SGVhcENlbGxUeXBlOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxJc29IZWFwQ2VsbFR5cGU+IGpzTW9k
dWxlUmVjb3JkSGVhcENlbGxUeXBlOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxJc29IZWFwQ2VsbFR5
cGU+IG1vZHVsZU5hbWVzcGFjZU9iamVjdEhlYXBDZWxsVHlwZTsKLSAgICBzdGQ6OnVuaXF1ZV9w
dHI8SXNvSGVhcENlbGxUeXBlPiBuYXRpdmVTdGRGdW5jdGlvbkhlYXBDZWxsVHlwZTsKLSAgICBz
dGQ6OnVuaXF1ZV9wdHI8SXNvSW5saW5lZEhlYXBDZWxsVHlwZTxKU1N0cmluZz4+IHN0cmluZ0hl
YXBDZWxsVHlwZTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SXNvSGVhcENlbGxUeXBlPiB3ZWFrTWFw
SGVhcENlbGxUeXBlOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxJc29IZWFwQ2VsbFR5cGU+IHdlYWtT
ZXRIZWFwQ2VsbFR5cGU7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPEpTRGVzdHJ1Y3RpYmxlT2JqZWN0
SGVhcENlbGxUeXBlPiBkZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGU7Ci0jaWYgSlNDX09C
SkNfQVBJX0VOQUJMRUQKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SXNvSGVhcENlbGxUeXBlPiBhcGlX
cmFwcGVyT2JqZWN0SGVhcENlbGxUeXBlOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxJc29IZWFwQ2Vs
bFR5cGU+IG9iakNDYWxsYmFja0Z1bmN0aW9uSGVhcENlbGxUeXBlOwotI2VuZGlmCi0jaWZkZWYg
SlNDX0dMSUJfQVBJX0VOQUJMRUQKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SXNvSGVhcENlbGxUeXBl
PiBhcGlXcmFwcGVyT2JqZWN0SGVhcENlbGxUeXBlOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxJc29I
ZWFwQ2VsbFR5cGU+IGNhbGxiYWNrQVBJV3JhcHBlckdsb2JhbE9iamVjdEhlYXBDZWxsVHlwZTsK
LSAgICBzdGQ6OnVuaXF1ZV9wdHI8SXNvSGVhcENlbGxUeXBlPiBqc2NDYWxsYmFja0Z1bmN0aW9u
SGVhcENlbGxUeXBlOwotI2VuZGlmCi0gICAgc3RkOjp1bmlxdWVfcHRyPElzb0hlYXBDZWxsVHlw
ZT4gaW50bENvbGxhdG9ySGVhcENlbGxUeXBlOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxJc29IZWFw
Q2VsbFR5cGU+IGludGxEYXRlVGltZUZvcm1hdEhlYXBDZWxsVHlwZTsKLSAgICBzdGQ6OnVuaXF1
ZV9wdHI8SXNvSGVhcENlbGxUeXBlPiBpbnRsRGlzcGxheU5hbWVzSGVhcENlbGxUeXBlOwotICAg
IHN0ZDo6dW5pcXVlX3B0cjxJc29IZWFwQ2VsbFR5cGU+IGludGxMaXN0Rm9ybWF0SGVhcENlbGxU
eXBlOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxJc29IZWFwQ2VsbFR5cGU+IGludGxMb2NhbGVIZWFw
Q2VsbFR5cGU7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPElzb0hlYXBDZWxsVHlwZT4gaW50bE51bWJl
ckZvcm1hdEhlYXBDZWxsVHlwZTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SXNvSGVhcENlbGxUeXBl
PiBpbnRsUGx1cmFsUnVsZXNIZWFwQ2VsbFR5cGU7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPElzb0hl
YXBDZWxsVHlwZT4gaW50bFJlbGF0aXZlVGltZUZvcm1hdEhlYXBDZWxsVHlwZTsKLSAgICBzdGQ6
OnVuaXF1ZV9wdHI8SXNvSGVhcENlbGxUeXBlPiBpbnRsU2VnbWVudEl0ZXJhdG9ySGVhcENlbGxU
eXBlOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxJc29IZWFwQ2VsbFR5cGU+IGludGxTZWdtZW50ZXJI
ZWFwQ2VsbFR5cGU7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPElzb0hlYXBDZWxsVHlwZT4gaW50bFNl
Z21lbnRzSGVhcENlbGxUeXBlOwotI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKLSAgICBzdGQ6OnVu
aXF1ZV9wdHI8SXNvSGVhcENlbGxUeXBlPiB3ZWJBc3NlbWJseUNvZGVCbG9ja0hlYXBDZWxsVHlw
ZTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SXNvSGVhcENlbGxUeXBlPiB3ZWJBc3NlbWJseUV4Y2Vw
dGlvbkhlYXBDZWxsVHlwZTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SXNvSGVhcENlbGxUeXBlPiB3
ZWJBc3NlbWJseUZ1bmN0aW9uSGVhcENlbGxUeXBlOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxJc29I
ZWFwQ2VsbFR5cGU+IHdlYkFzc2VtYmx5R2xvYmFsSGVhcENlbGxUeXBlOwotICAgIHN0ZDo6dW5p
cXVlX3B0cjxJc29IZWFwQ2VsbFR5cGU+IHdlYkFzc2VtYmx5SW5zdGFuY2VIZWFwQ2VsbFR5cGU7
Ci0gICAgc3RkOjp1bmlxdWVfcHRyPElzb0hlYXBDZWxsVHlwZT4gd2ViQXNzZW1ibHlNZW1vcnlI
ZWFwQ2VsbFR5cGU7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPElzb0hlYXBDZWxsVHlwZT4gd2ViQXNz
ZW1ibHlNb2R1bGVIZWFwQ2VsbFR5cGU7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPElzb0hlYXBDZWxs
VHlwZT4gd2ViQXNzZW1ibHlNb2R1bGVSZWNvcmRIZWFwQ2VsbFR5cGU7Ci0gICAgc3RkOjp1bmlx
dWVfcHRyPElzb0hlYXBDZWxsVHlwZT4gd2ViQXNzZW1ibHlUYWJsZUhlYXBDZWxsVHlwZTsKLSAg
ICBzdGQ6OnVuaXF1ZV9wdHI8SXNvSGVhcENlbGxUeXBlPiB3ZWJBc3NlbWJseVRhZ0hlYXBDZWxs
VHlwZTsKLSNlbmRpZgorCisgICAgY29uc3QgSGVhcENlbGxUeXBlJiBjZWxsSGVhcENlbGxUeXBl
KCkgeyByZXR1cm4gaGVhcC5jZWxsSGVhcENlbGxUeXBlOyB9CisgICAgY29uc3QgSlNEZXN0cnVj
dGlibGVPYmplY3RIZWFwQ2VsbFR5cGUmIGRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgp
IHsgcmV0dXJuIGhlYXAuZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlOyB9OwogCiAjaWYg
RU5BQkxFKEpJVCkKICAgICBzdGQ6OnVuaXF1ZV9wdHI8SklUU2l6ZVN0YXRpc3RpY3M+IGppdFNp
emVTdGF0aXN0aWNzOwogI2VuZGlmCiAgICAgCi0gICAgQ29tcGxldGVTdWJzcGFjZSBwcmltaXRp
dmVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlOyAvLyBUeXBlZCBhcnJheXMsIHN0cmluZ3MsIGJpdHZl
Y3RvcnMsIGV0YyBnbyBoZXJlLgotICAgIENvbXBsZXRlU3Vic3BhY2UganNWYWx1ZUdpZ2FjYWdl
QXV4aWxpYXJ5U3BhY2U7IC8vIEJ1dHRlcmZsaWVzLCBhcnJheXMgb2YgSlNWYWx1ZXMsIGV0YyBn
byBoZXJlLgotICAgIENvbXBsZXRlU3Vic3BhY2UgaW1tdXRhYmxlQnV0dGVyZmx5SlNWYWx1ZUdp
Z2FjYWdlQXV4aWxpYXJ5U3BhY2U7IC8vIEpTSW1tdXRhYmxlQnV0dGVyZmx5IGdvZXMgaGVyZS4K
LQotICAgIC8vIFdlIG1ha2UgY3Jvc3MtY3V0dGluZyBhc3N1bXB0aW9ucyBhYm91dCB0eXBlZCBh
cnJheXMgYmVpbmcgaW4gdGhlIHByaW1pdGl2ZSBHaWdhY2FnZSBhbmQgYnV0dGVyZmxpZXMKLSAg
ICAvLyBiZWluZyBpbiB0aGUgSlNWYWx1ZSBnaWdhY2FnZS4gRm9yIHNvbWUgdHlwZXMsIGl0J3Mg
c3VwZXIgb2J2aW91cyB3aGVyZSB0aGV5IHNob3VsZCBnbywgYW5kIHNvIHdlCi0gICAgLy8gY2Fu
IGhhcmRjb2RlIHRoYXQgZmFjdC4gQnV0IHNvbWV0aW1lcyBpdCdzIG5vdCBjbGVhciwgc28gd2Ug
YWJzdHJhY3QgaXQgYnkgaGF2aW5nIGEgR2lnYWNhZ2U6OktpbmQKLSAgICAvLyBjb25zdGFudCBz
b21ld2hlcmUuCi0gICAgLy8gRklYTUU6IE1heWJlIGl0IHdvdWxkIGJlIGJldHRlciBpZiBldmVy
eW9uZSBhYnN0cmFjdGVkIHRoaXM/Ci0gICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE3NTI0OAotICAgIEFMV0FZU19JTkxJTkUgQ29tcGxldGVTdWJzcGFjZSYg
Z2lnYWNhZ2VBdXhpbGlhcnlTcGFjZShHaWdhY2FnZTo6S2luZCBraW5kKQotICAgIHsKLSAgICAg
ICAgc3dpdGNoIChraW5kKSB7Ci0gICAgICAgIGNhc2UgR2lnYWNhZ2U6OlByaW1pdGl2ZToKLSAg
ICAgICAgICAgIHJldHVybiBwcmltaXRpdmVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlOwotICAgICAg
ICBjYXNlIEdpZ2FjYWdlOjpKU1ZhbHVlOgotICAgICAgICAgICAgcmV0dXJuIGpzVmFsdWVHaWdh
Y2FnZUF1eGlsaWFyeVNwYWNlOwotICAgICAgICBjYXNlIEdpZ2FjYWdlOjpOdW1iZXJPZktpbmRz
OgotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgUkVMRUFTRV9BU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJuIHByaW1pdGl2ZUdpZ2FjYWdlQXV4aWxpYXJ5
U3BhY2U7Ci0gICAgfQotICAgIAotICAgIC8vIFdoZW5ldmVyIHBvc3NpYmxlLCB1c2Ugc3Vic3Bh
Y2VGb3I8Q2VsbFR5cGU+KHZtKSB0byBnZXQgb25lIG9mIHRoZXNlIHN1YnNwYWNlcy4KLSAgICBD
b21wbGV0ZVN1YnNwYWNlIGNlbGxTcGFjZTsKLSAgICBDb21wbGV0ZVN1YnNwYWNlIHZhcmlhYmxl
U2l6ZWRDZWxsU3BhY2U7IC8vIEZJWE1FOiBUaGlzIHNwYWNlIGlzIHByb2JsZW1hdGljIGJlY2F1
c2Ugd2UgaGF2ZSB0aGluZ3MgaW4gaGVyZSBsaWtlIERpcmVjdEFyZ3VtZW50cyBhbmQgU2NvcGVk
QXJndW1lbnRzOyB0aG9zZSBzaG91bGQgYmUgc3BsaXQgaW50byBKU1ZhbHVlT09CIGNlbGxzIGFu
ZCBKU1ZhbHVlU3RyaWN0IGF1eGlsaWFyaWVzLiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTgyODU4Ci0gICAgQ29tcGxldGVTdWJzcGFjZSBkZXN0cnVjdGlibGVPYmpl
Y3RTcGFjZTsKLSAgICAKLSAgICBJc29TdWJzcGFjZSBhcnJheVNwYWNlOwotICAgIElzb1N1YnNw
YWNlIGJpZ0ludFNwYWNlOwotICAgIElzb1N1YnNwYWNlIGNhbGxlZVNwYWNlOwotICAgIElzb1N1
YnNwYWNlIGNsb25lZEFyZ3VtZW50c1NwYWNlOwotICAgIElzb1N1YnNwYWNlIGN1c3RvbUdldHRl
clNldHRlclNwYWNlOwotICAgIElzb1N1YnNwYWNlIGRhdGVJbnN0YW5jZVNwYWNlOwotICAgIElz
b1N1YnNwYWNlIGRvbUF0dHJpYnV0ZUdldHRlclNldHRlclNwYWNlOwotICAgIElzb1N1YnNwYWNl
IGV4Y2VwdGlvblNwYWNlOwotICAgIElzb1N1YnNwYWNlIGV4ZWN1dGFibGVUb0NvZGVCbG9ja0Vk
Z2VTcGFjZTsKLSAgICBJc29TdWJzcGFjZSBmdW5jdGlvblNwYWNlOwotICAgIElzb1N1YnNwYWNl
IGdldHRlclNldHRlclNwYWNlOwotICAgIElzb1N1YnNwYWNlIGdsb2JhbExleGljYWxFbnZpcm9u
bWVudFNwYWNlOwotICAgIElzb1N1YnNwYWNlIGludGVybmFsRnVuY3Rpb25TcGFjZTsKLSAgICBJ
c29TdWJzcGFjZSBqc1Byb3h5U3BhY2U7Ci0gICAgSXNvU3Vic3BhY2UgbmF0aXZlRXhlY3V0YWJs
ZVNwYWNlOwotICAgIElzb1N1YnNwYWNlIG51bWJlck9iamVjdFNwYWNlOwotICAgIElzb1N1YnNw
YWNlIHBsYWluT2JqZWN0U3BhY2U7Ci0gICAgSXNvU3Vic3BhY2UgcHJvbWlzZVNwYWNlOwotICAg
IElzb1N1YnNwYWNlIHByb3BlcnR5TmFtZUVudW1lcmF0b3JTcGFjZTsKLSAgICBJc29TdWJzcGFj
ZSBwcm9wZXJ0eVRhYmxlU3BhY2U7Ci0gICAgSXNvU3Vic3BhY2UgcmVnRXhwU3BhY2U7Ci0gICAg
SXNvU3Vic3BhY2UgcmVnRXhwT2JqZWN0U3BhY2U7Ci0gICAgSXNvU3Vic3BhY2Ugcm9wZVN0cmlu
Z1NwYWNlOwotICAgIElzb1N1YnNwYWNlIHNjb3BlZEFyZ3VtZW50c1NwYWNlOwotICAgIElzb1N1
YnNwYWNlIHNwYXJzZUFycmF5VmFsdWVNYXBTcGFjZTsKLSAgICBJc29TdWJzcGFjZSBzdHJpbmdT
cGFjZTsKLSAgICBJc29TdWJzcGFjZSBzdHJpbmdPYmplY3RTcGFjZTsKLSAgICBJc29TdWJzcGFj
ZSBzdHJ1Y3R1cmVDaGFpblNwYWNlOwotICAgIElzb1N1YnNwYWNlIHN0cnVjdHVyZVJhcmVEYXRh
U3BhY2U7Ci0gICAgSXNvU3Vic3BhY2Ugc3RydWN0dXJlU3BhY2U7Ci0gICAgSXNvU3Vic3BhY2Ug
YnJhbmRlZFN0cnVjdHVyZVNwYWNlOwotICAgIElzb1N1YnNwYWNlIHN5bWJvbFRhYmxlU3BhY2U7
CisgICAgQUxXQVlTX0lOTElORSBDb21wbGV0ZVN1YnNwYWNlJiBwcmltaXRpdmVHaWdhY2FnZUF1
eGlsaWFyeVNwYWNlKCkgeyByZXR1cm4gaGVhcC5wcmltaXRpdmVHaWdhY2FnZUF1eGlsaWFyeVNw
YWNlOyB9CisgICAgQUxXQVlTX0lOTElORSBDb21wbGV0ZVN1YnNwYWNlJiBqc1ZhbHVlR2lnYWNh
Z2VBdXhpbGlhcnlTcGFjZSgpIHsgcmV0dXJuIGhlYXAuanNWYWx1ZUdpZ2FjYWdlQXV4aWxpYXJ5
U3BhY2U7IH0KKyAgICBBTFdBWVNfSU5MSU5FIENvbXBsZXRlU3Vic3BhY2UmIGltbXV0YWJsZUJ1
dHRlcmZseUpTVmFsdWVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlKCkgeyByZXR1cm4gaGVhcC5pbW11
dGFibGVCdXR0ZXJmbHlKU1ZhbHVlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZTsgfQorICAgIEFMV0FZ
U19JTkxJTkUgQ29tcGxldGVTdWJzcGFjZSYgZ2lnYWNhZ2VBdXhpbGlhcnlTcGFjZShHaWdhY2Fn
ZTo6S2luZCBraW5kKSB7IHJldHVybiBoZWFwLmdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2Uoa2luZCk7
IH0KKyAgICBBTFdBWVNfSU5MSU5FIENvbXBsZXRlU3Vic3BhY2UmIGNlbGxTcGFjZSgpIHsgcmV0
dXJuIGhlYXAuY2VsbFNwYWNlOyB9CisgICAgQUxXQVlTX0lOTElORSBDb21wbGV0ZVN1YnNwYWNl
JiB2YXJpYWJsZVNpemVkQ2VsbFNwYWNlKCkgeyByZXR1cm4gaGVhcC52YXJpYWJsZVNpemVkQ2Vs
bFNwYWNlOyB9CisgICAgQUxXQVlTX0lOTElORSBDb21wbGV0ZVN1YnNwYWNlJiBkZXN0cnVjdGli
bGVPYmplY3RTcGFjZSgpIHsgcmV0dXJuIGhlYXAuZGVzdHJ1Y3RpYmxlT2JqZWN0U3BhY2U7IH0K
KworICAgIEFMV0FZU19JTkxJTkUgSXNvU3Vic3BhY2UmIGFycmF5U3BhY2UoKSB7IHJldHVybiBo
ZWFwLmFycmF5U3BhY2U7IH0KKyAgICBBTFdBWVNfSU5MSU5FIElzb1N1YnNwYWNlJiBiaWdJbnRT
cGFjZSgpIHsgcmV0dXJuIGhlYXAuYmlnSW50U3BhY2U7IH0KKyAgICBBTFdBWVNfSU5MSU5FIElz
b1N1YnNwYWNlJiBjYWxsZWVTcGFjZSgpIHsgcmV0dXJuIGhlYXAuY2FsbGVlU3BhY2U7IH0KKyAg
ICBBTFdBWVNfSU5MSU5FIElzb1N1YnNwYWNlJiBjbG9uZWRBcmd1bWVudHNTcGFjZSgpIHsgcmV0
dXJuIGhlYXAuY2xvbmVkQXJndW1lbnRzU3BhY2U7IH0KKyAgICBBTFdBWVNfSU5MSU5FIElzb1N1
YnNwYWNlJiBjdXN0b21HZXR0ZXJTZXR0ZXJTcGFjZSgpIHsgcmV0dXJuIGhlYXAuY3VzdG9tR2V0
dGVyU2V0dGVyU3BhY2U7IH0KKyAgICBBTFdBWVNfSU5MSU5FIElzb1N1YnNwYWNlJiBkYXRlSW5z
dGFuY2VTcGFjZSgpIHsgcmV0dXJuIGhlYXAuZGF0ZUluc3RhbmNlU3BhY2U7IH0KKyAgICBBTFdB
WVNfSU5MSU5FIElzb1N1YnNwYWNlJiBkb21BdHRyaWJ1dGVHZXR0ZXJTZXR0ZXJTcGFjZSgpIHsg
cmV0dXJuIGhlYXAuZG9tQXR0cmlidXRlR2V0dGVyU2V0dGVyU3BhY2U7IH0KKyAgICBBTFdBWVNf
SU5MSU5FIElzb1N1YnNwYWNlJiBleGNlcHRpb25TcGFjZSgpIHsgcmV0dXJuIGhlYXAuZXhjZXB0
aW9uU3BhY2U7IH0KKyAgICBBTFdBWVNfSU5MSU5FIElzb1N1YnNwYWNlJiBleGVjdXRhYmxlVG9D
b2RlQmxvY2tFZGdlU3BhY2UoKSB7IHJldHVybiBoZWFwLmV4ZWN1dGFibGVUb0NvZGVCbG9ja0Vk
Z2VTcGFjZTsgfQorICAgIEFMV0FZU19JTkxJTkUgSXNvU3Vic3BhY2UmIGZ1bmN0aW9uU3BhY2Uo
KSB7IHJldHVybiBoZWFwLmZ1bmN0aW9uU3BhY2U7IH0KKyAgICBBTFdBWVNfSU5MSU5FIElzb1N1
YnNwYWNlJiBnZXR0ZXJTZXR0ZXJTcGFjZSgpIHsgcmV0dXJuIGhlYXAuZ2V0dGVyU2V0dGVyU3Bh
Y2U7IH0KKyAgICBBTFdBWVNfSU5MSU5FIElzb1N1YnNwYWNlJiBnbG9iYWxMZXhpY2FsRW52aXJv
bm1lbnRTcGFjZSgpIHsgcmV0dXJuIGhlYXAuZ2xvYmFsTGV4aWNhbEVudmlyb25tZW50U3BhY2U7
IH0KKyAgICBBTFdBWVNfSU5MSU5FIElzb1N1YnNwYWNlJiBpbnRlcm5hbEZ1bmN0aW9uU3BhY2Uo
KSB7IHJldHVybiBoZWFwLmludGVybmFsRnVuY3Rpb25TcGFjZTsgfQorICAgIEFMV0FZU19JTkxJ
TkUgSXNvU3Vic3BhY2UmIGpzUHJveHlTcGFjZSgpIHsgcmV0dXJuIGhlYXAuanNQcm94eVNwYWNl
OyB9CisgICAgQUxXQVlTX0lOTElORSBJc29TdWJzcGFjZSYgbmF0aXZlRXhlY3V0YWJsZVNwYWNl
KCkgeyByZXR1cm4gaGVhcC5uYXRpdmVFeGVjdXRhYmxlU3BhY2U7IH0KKyAgICBBTFdBWVNfSU5M
SU5FIElzb1N1YnNwYWNlJiBudW1iZXJPYmplY3RTcGFjZSgpIHsgcmV0dXJuIGhlYXAubnVtYmVy
T2JqZWN0U3BhY2U7IH0KKyAgICBBTFdBWVNfSU5MSU5FIElzb1N1YnNwYWNlJiBwbGFpbk9iamVj
dFNwYWNlKCkgeyByZXR1cm4gaGVhcC5wbGFpbk9iamVjdFNwYWNlOyB9CisgICAgQUxXQVlTX0lO
TElORSBJc29TdWJzcGFjZSYgcHJvbWlzZVNwYWNlKCkgeyByZXR1cm4gaGVhcC5wcm9taXNlU3Bh
Y2U7IH0KKyAgICBBTFdBWVNfSU5MSU5FIElzb1N1YnNwYWNlJiBwcm9wZXJ0eU5hbWVFbnVtZXJh
dG9yU3BhY2UoKSB7IHJldHVybiBoZWFwLnByb3BlcnR5TmFtZUVudW1lcmF0b3JTcGFjZTsgfQor
ICAgIEFMV0FZU19JTkxJTkUgSXNvU3Vic3BhY2UmIHByb3BlcnR5VGFibGVTcGFjZSgpIHsgcmV0
dXJuIGhlYXAucHJvcGVydHlUYWJsZVNwYWNlOyB9CisgICAgQUxXQVlTX0lOTElORSBJc29TdWJz
cGFjZSYgcmVnRXhwU3BhY2UoKSB7IHJldHVybiBoZWFwLnJlZ0V4cFNwYWNlOyB9CisgICAgQUxX
QVlTX0lOTElORSBJc29TdWJzcGFjZSYgcmVnRXhwT2JqZWN0U3BhY2UoKSB7IHJldHVybiBoZWFw
LnJlZ0V4cE9iamVjdFNwYWNlOyB9CisgICAgQUxXQVlTX0lOTElORSBJc29TdWJzcGFjZSYgcm9w
ZVN0cmluZ1NwYWNlKCkgeyByZXR1cm4gaGVhcC5yb3BlU3RyaW5nU3BhY2U7IH0KKyAgICBBTFdB
WVNfSU5MSU5FIElzb1N1YnNwYWNlJiBzY29wZWRBcmd1bWVudHNTcGFjZSgpIHsgcmV0dXJuIGhl
YXAuc2NvcGVkQXJndW1lbnRzU3BhY2U7IH0KKyAgICBBTFdBWVNfSU5MSU5FIElzb1N1YnNwYWNl
JiBzcGFyc2VBcnJheVZhbHVlTWFwU3BhY2UoKSB7IHJldHVybiBoZWFwLnNwYXJzZUFycmF5VmFs
dWVNYXBTcGFjZTsgfQorICAgIEFMV0FZU19JTkxJTkUgSXNvU3Vic3BhY2UmIHN0cmluZ1NwYWNl
KCkgeyByZXR1cm4gaGVhcC5zdHJpbmdTcGFjZTsgfQorICAgIEFMV0FZU19JTkxJTkUgSXNvU3Vi
c3BhY2UmIHN0cmluZ09iamVjdFNwYWNlKCkgeyByZXR1cm4gaGVhcC5zdHJpbmdPYmplY3RTcGFj
ZTsgfQorICAgIEFMV0FZU19JTkxJTkUgSXNvU3Vic3BhY2UmIHN0cnVjdHVyZUNoYWluU3BhY2Uo
KSB7IHJldHVybiBoZWFwLnN0cnVjdHVyZUNoYWluU3BhY2U7IH0KKyAgICBBTFdBWVNfSU5MSU5F
IElzb1N1YnNwYWNlJiBzdHJ1Y3R1cmVSYXJlRGF0YVNwYWNlKCkgeyByZXR1cm4gaGVhcC5zdHJ1
Y3R1cmVSYXJlRGF0YVNwYWNlOyB9CisgICAgQUxXQVlTX0lOTElORSBJc29TdWJzcGFjZSYgc3Ry
dWN0dXJlU3BhY2UoKSB7IHJldHVybiBoZWFwLnN0cnVjdHVyZVNwYWNlOyB9CisgICAgQUxXQVlT
X0lOTElORSBJc29TdWJzcGFjZSYgYnJhbmRlZFN0cnVjdHVyZVNwYWNlKCkgeyByZXR1cm4gaGVh
cC5icmFuZGVkU3RydWN0dXJlU3BhY2U7IH0KKyAgICBBTFdBWVNfSU5MSU5FIElzb1N1YnNwYWNl
JiBzeW1ib2xUYWJsZVNwYWNlKCkgeyByZXR1cm4gaGVhcC5zeW1ib2xUYWJsZVNwYWNlOyB9CiAK
ICNkZWZpbmUgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihuYW1lKSBcCiAgICAg
dGVtcGxhdGU8U3Vic3BhY2VBY2Nlc3MgbW9kZT4gXAotICAgIElzb1N1YnNwYWNlKiBuYW1lKCkg
XAotICAgIHsgXAotICAgICAgICBpZiAobV8jI25hbWUgfHwgbW9kZSA9PSBTdWJzcGFjZUFjY2Vz
czo6Q29uY3VycmVudGx5KSBcCi0gICAgICAgICAgICByZXR1cm4gbV8jI25hbWUuZ2V0KCk7IFwK
LSAgICAgICAgcmV0dXJuIG5hbWUjI1Nsb3coKTsgXAotICAgIH0gXAotICAgIEpTX0VYUE9SVF9Q
UklWQVRFIElzb1N1YnNwYWNlKiBuYW1lIyNTbG93KCk7IFwKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8
SXNvU3Vic3BhY2U+IG1fIyNuYW1lOwotCisgICAgQUxXQVlTX0lOTElORSBJc29TdWJzcGFjZSog
bmFtZSgpIHsgcmV0dXJuIGhlYXAubmFtZTxtb2RlPigpOyB9CiAKICNpZiBKU0NfT0JKQ19BUElf
RU5BQkxFRAogICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoYXBpV3JhcHBl
ck9iamVjdFNwYWNlKQpAQCAtNjU3LDc0ICs1NjMsMjMgQEAgcHVibGljOgogI2VuZGlmCiAKICN1
bmRlZiBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSCi0gICAgCi0gICAgSXNvQ2Vs
bFNldCBleGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlc1dpdGhDb25zdHJhaW50czsKLSAgICBJc29D
ZWxsU2V0IGV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2VzV2l0aEZpbmFsaXplcnM7CisKKyAgICBB
TFdBWVNfSU5MSU5FIElzb0NlbGxTZXQmIGV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2VzV2l0aENv
bnN0cmFpbnRzKCkgeyByZXR1cm4gaGVhcC5leGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlc1dpdGhD
b25zdHJhaW50czsgfQorICAgIEFMV0FZU19JTkxJTkUgSXNvQ2VsbFNldCYgZXhlY3V0YWJsZVRv
Q29kZUJsb2NrRWRnZXNXaXRoRmluYWxpemVycygpIHsgcmV0dXJuIGhlYXAuZXhlY3V0YWJsZVRv
Q29kZUJsb2NrRWRnZXNXaXRoRmluYWxpemVyczsgfQogCiAjZGVmaW5lIERZTkFNSUNfU1BBQ0Vf
QU5EX1NFVF9ERUZJTkVfTUVNQkVSKG5hbWUpIFwKICAgICB0ZW1wbGF0ZTxTdWJzcGFjZUFjY2Vz
cyBtb2RlPiBcCi0gICAgSXNvU3Vic3BhY2UqIG5hbWUoKSBcCi0gICAgeyBcCi0gICAgICAgIGlm
IChhdXRvKiBzcGFjZUFuZFNldCA9IG1fIyNuYW1lLmdldCgpKSBcCi0gICAgICAgICAgICByZXR1
cm4gJnNwYWNlQW5kU2V0LT5zcGFjZTsgXAotICAgICAgICBpZiAobW9kZSA9PSBTdWJzcGFjZUFj
Y2Vzczo6Q29uY3VycmVudGx5KSBcCi0gICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsgXAotICAg
ICAgICByZXR1cm4gbmFtZSMjU2xvdygpOyBcCi0gICAgfSBcCi0gICAgSXNvU3Vic3BhY2UqIG5h
bWUjI1Nsb3coKTsgXAotICAgIHN0ZDo6dW5pcXVlX3B0cjxTcGFjZUFuZFNldD4gbV8jI25hbWU7
Ci0gICAgCi0gICAgc3RydWN0IFNwYWNlQW5kU2V0IHsKLSAgICAgICAgV1RGX01BS0VfU1RSVUNU
X0ZBU1RfQUxMT0NBVEVEOworICAgIEFMV0FZU19JTkxJTkUgSXNvU3Vic3BhY2UqIG5hbWUoKSB7
IHJldHVybiBoZWFwLm5hbWU8bW9kZT4oKTsgfQogCi0gICAgICAgIElzb1N1YnNwYWNlIHNwYWNl
OwotICAgICAgICBJc29DZWxsU2V0IHNldDsKLSAgICAgICAgCi0gICAgICAgIHRlbXBsYXRlPHR5
cGVuYW1lLi4uIEFyZ3VtZW50cz4KLSAgICAgICAgU3BhY2VBbmRTZXQoQXJndW1lbnRzJiYuLi4g
YXJndW1lbnRzKQotICAgICAgICAgICAgOiBzcGFjZShzdGQ6OmZvcndhcmQ8QXJndW1lbnRzPihh
cmd1bWVudHMpLi4uKQotICAgICAgICAgICAgLCBzZXQoc3BhY2UpCi0gICAgICAgIHsKLSAgICAg
ICAgfQotICAgICAgICAKLSAgICAgICAgc3RhdGljIElzb0NlbGxTZXQmIHNldEZvcihTdWJzcGFj
ZSYgc3BhY2UpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiAqYml0d2lzZV9jYXN0PElz
b0NlbGxTZXQqPigKLSAgICAgICAgICAgICAgICBiaXR3aXNlX2Nhc3Q8Y2hhcio+KCZzcGFjZSkg
LQotICAgICAgICAgICAgICAgIE9CSkVDVF9PRkZTRVRPRihTcGFjZUFuZFNldCwgc3BhY2UpICsK
LSAgICAgICAgICAgICAgICBPQkpFQ1RfT0ZGU0VUT0YoU3BhY2VBbmRTZXQsIHNldCkpOwotICAg
ICAgICB9Ci0gICAgfTsKLSAgICAKLSAgICBTcGFjZUFuZFNldCBjb2RlQmxvY2tTcGFjZTsKLQot
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmM+Ci0gICAgdm9pZCBmb3JFYWNoQ29kZUJsb2NrU3Bh
Y2UoY29uc3QgRnVuYyYgZnVuYykKLSAgICB7Ci0gICAgICAgIC8vIFRoaXMgc2hvdWxkIG5vdCBp
bmNsdWRlIHdlYkFzc2VtYmx5Q29kZUJsb2NrU3BhY2UgYmVjYXVzZSB0aGlzIGlzIGFib3V0IHN1
YnNjbGFzc2VzIG9mCi0gICAgICAgIC8vIEpTQzo6Q29kZUJsb2NrLgotICAgICAgICBmdW5jKGNv
ZGVCbG9ja1NwYWNlKTsKLSAgICB9CisgICAgdXNpbmcgU3BhY2VBbmRTZXQgPSBIZWFwOjpTcGFj
ZUFuZFNldDsKKyAgICBBTFdBWVNfSU5MSU5FIFNwYWNlQW5kU2V0JiBjb2RlQmxvY2tTcGFjZSgp
IHsgcmV0dXJuIGhlYXAuY29kZUJsb2NrU3BhY2U7IH0KIAogICAgIERZTkFNSUNfU1BBQ0VfQU5E
X1NFVF9ERUZJTkVfTUVNQkVSKGV2YWxFeGVjdXRhYmxlU3BhY2UpCiAgICAgRFlOQU1JQ19TUEFD
RV9BTkRfU0VUX0RFRklORV9NRU1CRVIobW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGVTcGFjZSkKLSAg
ICBTcGFjZUFuZFNldCBmdW5jdGlvbkV4ZWN1dGFibGVTcGFjZTsKLSAgICBTcGFjZUFuZFNldCBw
cm9ncmFtRXhlY3V0YWJsZVNwYWNlOwotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuYz4KLSAg
ICB2b2lkIGZvckVhY2hTY3JpcHRFeGVjdXRhYmxlU3BhY2UoY29uc3QgRnVuYyYgZnVuYykKLSAg
ICB7Ci0gICAgICAgIGlmIChtX2V2YWxFeGVjdXRhYmxlU3BhY2UpCi0gICAgICAgICAgICBmdW5j
KCptX2V2YWxFeGVjdXRhYmxlU3BhY2UpOwotICAgICAgICBmdW5jKGZ1bmN0aW9uRXhlY3V0YWJs
ZVNwYWNlKTsKLSAgICAgICAgaWYgKG1fbW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGVTcGFjZSkKLSAg
ICAgICAgICAgIGZ1bmMoKm1fbW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGVTcGFjZSk7Ci0gICAgICAg
IGZ1bmMocHJvZ3JhbUV4ZWN1dGFibGVTcGFjZSk7Ci0gICAgfQotCi0gICAgU3BhY2VBbmRTZXQg
dW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGVTcGFjZTsKIAotI3VuZGVmIERZTkFNSUNfU1BBQ0Vf
QU5EX1NFVF9ERUZJTkVfTUVNQkVSCisgICAgQUxXQVlTX0lOTElORSBTcGFjZUFuZFNldCYgZnVu
Y3Rpb25FeGVjdXRhYmxlU3BhY2UoKSB7IHJldHVybiBoZWFwLmZ1bmN0aW9uRXhlY3V0YWJsZVNw
YWNlOyB9CisgICAgQUxXQVlTX0lOTElORSBTcGFjZUFuZFNldCYgcHJvZ3JhbUV4ZWN1dGFibGVT
cGFjZSgpIHsgcmV0dXJuIGhlYXAucHJvZ3JhbUV4ZWN1dGFibGVTcGFjZTsgfQorICAgIEFMV0FZ
U19JTkxJTkUgU3BhY2VBbmRTZXQmIHVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlU3BhY2UoKSB7
IHJldHVybiBoZWFwLnVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlU3BhY2U7IH0KIAogICAgIFZN
VHlwZSB2bVR5cGU7CiAgICAgQ2xpZW50RGF0YSogY2xpZW50RGF0YTsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1dlYWtNYXBQcm90b3R5cGUuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFrTWFwUHJvdG90eXBlLmgJKHJldmlzaW9u
IDI4NjAxMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dlYWtNYXBQcm90b3R5
cGUuaAkod29ya2luZyBjb3B5KQpAQCAtNDEsNyArNDEsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGlj
IElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNf
QVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShXZWFrTWFwUHJvdG90eXBlLCBCYXNlKTsKLSAg
ICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBs
YWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgV2Vha01hcFByb3RvdHlwZSog
Y3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFrT2JqZWN0
UmVmUHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvV2Vha09iamVjdFJlZlByb3RvdHlwZS5oCShyZXZpc2lvbiAyODYwMTEpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFrT2JqZWN0UmVmUHJvdG90eXBlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTM3LDcgKzM3LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSog
c3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VC
U1BBQ0VfU0hBUkFCTEUoV2Vha09iamVjdFJlZlByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJl
dHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVj
dFNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIFdlYWtPYmplY3RSZWZQcm90b3R5cGUqIGNy
ZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3Ry
dWN0dXJlKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha1NldFByb3Rv
dHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dlYWtT
ZXRQcm90b3R5cGUuaAkocmV2aXNpb24gMjg2MDExKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvV2Vha1NldFByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00MSw3ICs0MSw3
IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkK
ICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKFdlYWtT
ZXRQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7
CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIHN0
YXRpYyBXZWFrU2V0UHJvdG90eXBlKiBjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS90b29scy9KU0RvbGxhclZNLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvdG9vbHMvSlNEb2xsYXJWTS5jcHAJKHJldmlzaW9uIDI4NjAxMSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxhclZNLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTMz
LDcgKzEzMyw3IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vi
c3BhY2VBY2Nlc3M+CiAgICAgc3RhdGljIENvbXBsZXRlU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZN
JiB2bSkKICAgICB7Ci0gICAgICAgIHJldHVybiAmdm0uY2VsbFNwYWNlOworICAgICAgICByZXR1
cm4gJnZtLmNlbGxTcGFjZSgpOwogICAgIH0KIAogICAgIEpTRG9sbGFyVk1DYWxsRnJhbWUoVk0m
IHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKQEAgLTIyMyw3ICsyMjMsNyBAQCBwdWJsaWM6CiAg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNzPgogICAgIHN0YXRp
YyBDb21wbGV0ZVN1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewotICAgICAgICBy
ZXR1cm4gJnZtLmNlbGxTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5jZWxsU3BhY2UoKTsKICAg
ICB9CiAKICAgICBSb290KiByb290KCkgY29uc3QgeyByZXR1cm4gbV9yb290LmdldCgpOyB9CkBA
IC0yODcsNyArMjg3LDcgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBl
LCBTdWJzcGFjZUFjY2Vzcz4KICAgICBzdGF0aWMgQ29tcGxldGVTdWJzcGFjZSogc3Vic3BhY2VG
b3IoVk0mIHZtKQogICAgIHsKLSAgICAgICAgcmV0dXJuICZ2bS5kZXN0cnVjdGlibGVPYmplY3RT
cGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5kZXN0cnVjdGlibGVPYmplY3RTcGFjZSgpOwogICAg
IH0KIAogICAgIFJvb3QoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKQEAgLTM1NCw3ICsz
NTQsNyBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUsIFN1YnNwYWNl
QWNjZXNzPgogICAgIHN0YXRpYyBDb21wbGV0ZVN1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0p
CiAgICAgewotICAgICAgICByZXR1cm4gJnZtLmNlbGxTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2
bS5jZWxsU3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgU2ltcGxlT2JqZWN0KiBjcmVhdGUo
Vk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQpAQCAtNDI2LDcgKzQyNiw3IEBA
IHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vic3BhY2VBY2Nlc3M+
CiAgICAgc3RhdGljIENvbXBsZXRlU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7
Ci0gICAgICAgIHJldHVybiAmdm0uY2VsbFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLmNlbGxT
cGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShW
TSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQpA
QCAtNTA4LDcgKzUwOCw3IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlw
ZSwgU3Vic3BhY2VBY2Nlc3M+CiAgICAgc3RhdGljIENvbXBsZXRlU3Vic3BhY2UqIHN1YnNwYWNl
Rm9yKFZNJiB2bSkKICAgICB7Ci0gICAgICAgIHJldHVybiAmdm0uY2VsbFNwYWNlOworICAgICAg
ICByZXR1cm4gJnZtLmNlbGxTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBTdHJ1Y3R1cmUq
IGNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpT
VmFsdWUgcHJvdG90eXBlKQpAQCAtNTkwLDcgKzU5MCw3IEBAIElHTk9SRV9XQVJOSU5HU19FTkQK
ICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vic3BhY2VBY2Nlc3M+CiAgICAgc3Rh
dGljIENvbXBsZXRlU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7Ci0gICAgICAg
IHJldHVybiAmdm0uY2VsbFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLmNlbGxTcGFjZSgpOwog
ICAgIH0KIAogICAgIHN0YXRpYyBSdW50aW1lQXJyYXkqIGNyZWF0ZShKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKQEAgLTc3Miw3ICs3NzIsNyBAQCBw
dWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNzPgog
ICAgIHN0YXRpYyBDb21wbGV0ZVN1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewot
ICAgICAgICByZXR1cm4gJnZtLmNlbGxTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5jZWxsU3Bh
Y2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0m
IHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKQEAg
LTg3Miw3ICs4NzIsNyBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUs
IFN1YnNwYWNlQWNjZXNzPgogICAgIHN0YXRpYyBDb21wbGV0ZVN1YnNwYWNlKiBzdWJzcGFjZUZv
cihWTSYgdm0pCiAgICAgewotICAgICAgICByZXR1cm4gJnZtLmNlbGxTcGFjZTsKKyAgICAgICAg
cmV0dXJuICZ2bS5jZWxsU3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgU3RydWN0dXJlKiBj
cmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1Zh
bHVlIHByb3RvdHlwZSkKQEAgLTg5Nyw3ICs4OTcsNyBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8
dHlwZW5hbWUgQ2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNzPgogICAgIHN0YXRpYyBDb21wbGV0ZVN1
YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewotICAgICAgICByZXR1cm4gJnZtLmNl
bGxTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5jZWxsU3BhY2UoKTsKICAgICB9CiAKICAgICBP
YmplY3REb2luZ1NpZGVFZmZlY3RQdXRXaXRob3V0Q29ycmVjdFNsb3RTdGF0dXMoVk0mIHZtLCBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSkKQEAgLTk0OCw3ICs5NDgsNyBAQCBwdWJsaWM6CiAgICAgdGVt
cGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNzPgogICAgIHN0YXRpYyBDb21w
bGV0ZVN1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewotICAgICAgICByZXR1cm4g
JnZtLmNlbGxTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5jZWxsU3BhY2UoKTsKICAgICB9CiAK
ICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKQEAgLTE1ODUsNyArMTU4NSw3
IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vic3BhY2VBY2Nl
c3M+CiAgICAgc3RhdGljIENvbXBsZXRlU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAg
ICB7Ci0gICAgICAgIHJldHVybiAmdm0uY2VsbFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLmNl
bGxTcGFjZSgpOwogICAgIH0KIAogICAgIEpTVGVzdEN1c3RvbUdldHRlclNldHRlcihWTSYgdm0s
IFN0cnVjdHVyZSogc3RydWN0dXJlKQpAQCAtMTgzOCw3ICsxODM4LDcgQEAgcHVibGljOgogICAg
IHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlLCBTdWJzcGFjZUFjY2Vzcz4KICAgICBzdGF0aWMg
Q29tcGxldGVTdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKLSAgICAgICAgcmV0
dXJuICZ2bS5kZXN0cnVjdGlibGVPYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5kZXN0
cnVjdGlibGVPYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIGNsYXNzIENsaWVudCBmaW5hbCA6
IHB1YmxpYyBXYXNtOjpTdHJlYW1pbmdQYXJzZXJDbGllbnQgewpAQCAtMTkzMyw3ICsxOTMzLDcg
QEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlLCBTdWJzcGFjZUFjY2Vz
cz4KICAgICBzdGF0aWMgQ29tcGxldGVTdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAg
IHsKLSAgICAgICAgcmV0dXJuICZ2bS5kZXN0cnVjdGlibGVPYmplY3RTcGFjZTsKKyAgICAgICAg
cmV0dXJuICZ2bS5kZXN0cnVjdGlibGVPYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIFdhc21T
dHJlYW1pbmdDb21waWxlcihWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBXYXNtOjpDb21w
aWxlck1vZGUgY29tcGlsZXJNb2RlLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1By
b21pc2UqIHByb21pc2UsIEpTT2JqZWN0KiBpbXBvcnRPYmplY3QpCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvdG9vbHMvSlNEb2xsYXJWTS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS90b29scy9KU0RvbGxhclZNLmgJKHJldmlzaW9uIDI4NjAxMSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxhclZNLmgJKHdvcmtpbmcgY29weSkKQEAgLTQy
LDcgKzQyLDcgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlLCBTdWJz
cGFjZUFjY2Vzcz4KICAgICBzdGF0aWMgQ29tcGxldGVTdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0m
IHZtKQogICAgIHsKLSAgICAgICAgcmV0dXJuICZ2bS5jZWxsU3BhY2U7CisgICAgICAgIHJldHVy
biAmdm0uY2VsbFNwYWNlKCk7CiAgICAgfQogICAgIAogICAgIERFQ0xBUkVfRVhQT1JUX0lORk87
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseS5o
CShyZXZpc2lvbiAyODYwMTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dl
YkFzc2VtYmx5LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDE2LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDE2LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00MSw3ICs0MSw3IEBAIHB1YmxpYzoKICAg
ICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAg
IFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTV2ViQXNzZW1ibHksIEJhc2Up
OwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAm
dm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBKU1dlYkFzc2VtYmx5
KiBjcmVhdGUoVk0mLCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSopOwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlDb21waWxlRXJyb3JQcm90b3R5cGUu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJs
eUNvbXBpbGVFcnJvclByb3RvdHlwZS5oCShyZXZpc2lvbiAyODYwMTEpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUNvbXBpbGVFcnJvclByb3RvdHlwZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNi0y
MDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAx
Ni0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpAQCAtNDEsNyArNDEsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIElzb1N1
YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJU
X0lTT19TVUJTUEFDRV9TSEFSQUJMRShXZWJBc3NlbWJseUNvbXBpbGVFcnJvclByb3RvdHlwZSwg
QmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0
dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIFdlYkFzc2Vt
Ymx5Q29tcGlsZUVycm9yUHJvdG90eXBlKiBjcmVhdGUoVk0mLCBKU0dsb2JhbE9iamVjdCosIFN0
cnVjdHVyZSopOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1i
bHlFeGNlcHRpb25Qcm90b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9qcy9XZWJBc3NlbWJseUV4Y2VwdGlvblByb3RvdHlwZS5oCShyZXZpc2lvbiAyODYw
MTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUV4Y2VwdGlv
blByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00MSw3ICs0MSw3IEBAIHB1YmxpYzoKICAg
ICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAg
IFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKFdlYkFzc2VtYmx5RXhjZXB0aW9u
UHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOwor
ICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0
aWMgV2ViQXNzZW1ibHlFeGNlcHRpb25Qcm90b3R5cGUqIGNyZWF0ZShWTSYsIEpTR2xvYmFsT2Jq
ZWN0KiwgU3RydWN0dXJlKik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9X
ZWJBc3NlbWJseUdsb2JhbFByb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5R2xvYmFsUHJvdG90eXBlLmgJKHJldmlzaW9uIDI4
NjAxMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5R2xvYmFs
UHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAxOS0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDAsNyArNDAsNyBAQCBwdWJsaWM6CiAgICAgc3Rh
dGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFU
SUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShXZWJBc3NlbWJseUdsb2JhbFByb3RvdHlw
ZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAg
cmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIFdlYkFz
c2VtYmx5R2xvYmFsUHJvdG90eXBlKiBjcmVhdGUoVk0mLCBKU0dsb2JhbE9iamVjdCosIFN0cnVj
dHVyZSopOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlJ
bnN0YW5jZVByb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL2pzL1dlYkFzc2VtYmx5SW5zdGFuY2VQcm90b3R5cGUuaAkocmV2aXNpb24gMjg2MDExKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlJbnN0YW5jZVByb3Rv
dHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxNi0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAxNi0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDEsNyArNDEsNyBAQCBwdWJsaWM6CiAgICAgc3Rh
dGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFU
SUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShXZWJBc3NlbWJseUluc3RhbmNlUHJvdG90
eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAg
ICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgV2Vi
QXNzZW1ibHlJbnN0YW5jZVByb3RvdHlwZSogY3JlYXRlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBT
dHJ1Y3R1cmUqKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2Vt
Ymx5TGlua0Vycm9yUHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vanMvV2ViQXNzZW1ibHlMaW5rRXJyb3JQcm90b3R5cGUuaAkocmV2aXNpb24gMjg2
MDExKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlMaW5rRXJy
b3JQcm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTYtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTYtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQxLDcgKzQxLDcgQEAgcHVibGljOgog
ICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAg
ICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoV2ViQXNzZW1ibHlMaW5rRXJy
b3JQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7
CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIHN0
YXRpYyBXZWJBc3NlbWJseUxpbmtFcnJvclByb3RvdHlwZSogY3JlYXRlKFZNJiwgSlNHbG9iYWxP
YmplY3QqLCBTdHJ1Y3R1cmUqKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pz
L1dlYkFzc2VtYmx5TWVtb3J5UHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlNZW1vcnlQcm90b3R5cGUuaAkocmV2aXNpb24g
Mjg2MDExKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlNZW1v
cnlQcm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTYtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTYtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQxLDcgKzQxLDcgQEAgcHVibGljOgog
ICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAg
ICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoV2ViQXNzZW1ibHlNZW1vcnlQ
cm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7Cisg
ICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRp
YyBXZWJBc3NlbWJseU1lbW9yeVByb3RvdHlwZSogY3JlYXRlKFZNJiwgSlNHbG9iYWxPYmplY3Qq
LCBTdHJ1Y3R1cmUqKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFz
c2VtYmx5TW9kdWxlUHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vanMvV2ViQXNzZW1ibHlNb2R1bGVQcm90b3R5cGUuaAkocmV2aXNpb24gMjg2MDEx
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlNb2R1bGVQcm90
b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTYtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMTYtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQxLDcgKzQxLDcgQEAgcHVibGljOgogICAgIHN0
YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAgICAgU1RB
VElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoV2ViQXNzZW1ibHlNb2R1bGVQcm90b3R5
cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAg
IHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBXZWJB
c3NlbWJseU1vZHVsZVByb3RvdHlwZSogY3JlYXRlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1
Y3R1cmUqKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5
UnVudGltZUVycm9yUHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vanMvV2ViQXNzZW1ibHlSdW50aW1lRXJyb3JQcm90b3R5cGUuaAkocmV2aXNpb24g
Mjg2MDExKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlSdW50
aW1lRXJyb3JQcm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQxLDcgKzQxLDcgQEAgcHVi
bGljOgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsK
ICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoV2ViQXNzZW1ibHlS
dW50aW1lRXJyb3JQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2Jq
ZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0K
IAogICAgIHN0YXRpYyBXZWJBc3NlbWJseVJ1bnRpbWVFcnJvclByb3RvdHlwZSogY3JlYXRlKFZN
JiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5VGFibGVQcm90b3R5cGUuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseVRhYmxlUHJvdG90eXBlLmgJ
KHJldmlzaW9uIDI4NjAxMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFz
c2VtYmx5VGFibGVQcm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQxLDcgKzQxLDcgQEAg
cHVibGljOgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAg
IHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoV2ViQXNzZW1i
bHlUYWJsZVByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RT
cGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAg
ICAgc3RhdGljIFdlYkFzc2VtYmx5VGFibGVQcm90b3R5cGUqIGNyZWF0ZShWTSYsIEpTR2xvYmFs
T2JqZWN0KiwgU3RydWN0dXJlKik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9q
cy9XZWJBc3NlbWJseVRhZ1Byb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5VGFnUHJvdG90eXBlLmgJKHJldmlzaW9uIDI4NjAx
MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5VGFnUHJvdG90
eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQwLDcgKzQwLDcgQEAgcHVibGljOgogICAgIHN0YXRp
YyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElD
X0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoV2ViQXNzZW1ibHlUYWdQcm90b3R5cGUsIEJh
c2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVy
biAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBXZWJBc3NlbWJs
eVRhZ1Byb3RvdHlwZSogY3JlYXRlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqKTsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQXN5bmNJdGVyYXRvci5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQXN5bmNJdGVyYXRv
ci5oCShyZXZpc2lvbiAyODYwMTEpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RP
TUFzeW5jSXRlcmF0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtNDgsNyArNDgsNyBAQCBwdWJsaWM6
CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQog
ICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNET01B
c3luY0l0ZXJhdG9yUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9i
amVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9
CiAKICAgICBzdGF0aWMgSlNET01Bc3luY0l0ZXJhdG9yUHJvdG90eXBlKiBjcmVhdGUoSlNDOjpW
TSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NSXRlcmF0
b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUl0ZXJh
dG9yLmgJKHJldmlzaW9uIDI4NjAxMSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RE9NSXRlcmF0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtNTUsNyArNTUsNyBAQCBwdWJsaWM6CiAg
ICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAg
IHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNET01JdGVy
YXRvclByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFj
ZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAg
c3RhdGljIEpTRE9NSXRlcmF0b3JQcm90b3R5cGUqIGNyZWF0ZShKU0M6OlZNJiB2bSwgSlNDOjpK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlKQpJ
bmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNGaWxlU3lzdGVtRGlyZWN0b3J5SGFu
ZGxlSXRlcmF0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTRmlsZVN5c3RlbURpcmVjdG9yeUhhbmRsZUl0ZXJhdG9yLmNwcAkocmV2aXNpb24gMjg2MDEx
KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNGaWxlU3lzdGVtRGlyZWN0b3J5SGFu
ZGxlSXRlcmF0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NSw5ICs1NSw5IEBAIElzb1N1YnNw
YWNlKiBKU0ZpbGVTeXN0ZW1EaXJlY3RvcnlIYW5kbGUKICAgICAgICAgcmV0dXJuIHNwYWNlOwog
ICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9i
amVjdCwgSlNGaWxlU3lzdGVtRGlyZWN0b3J5SGFuZGxlSXRlcmF0b3I+IHx8ICFKU0ZpbGVTeXN0
ZW1EaXJlY3RvcnlIYW5kbGVJdGVyYXRvcjo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgaWYgY29u
c3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU0Zp
bGVTeXN0ZW1EaXJlY3RvcnlIYW5kbGVJdGVyYXRvcj4pCi0gICAgICAgIGNsaWVudERhdGEuc2V0
RmlsZVN5c3RlbURpcmVjdG9yeUhhbmRsZUl0ZXJhdG9yU3BhY2UobWFrZVVuaXF1ZTxJc29TdWJz
cGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVh
cENlbGxUeXBlLmdldCgpLCBKU0ZpbGVTeXN0ZW1EaXJlY3RvcnlIYW5kbGVJdGVyYXRvcikpOwor
ICAgICAgICBjbGllbnREYXRhLnNldEZpbGVTeXN0ZW1EaXJlY3RvcnlIYW5kbGVJdGVyYXRvclNw
YWNlKG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZt
LmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBKU0ZpbGVTeXN0ZW1EaXJlY3RvcnlI
YW5kbGVJdGVyYXRvcikpOwogICAgIGVsc2UKLSAgICAgICAgY2xpZW50RGF0YS5zZXRGaWxlU3lz
dGVtRGlyZWN0b3J5SGFuZGxlSXRlcmF0b3JTcGFjZShtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJ
U09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlLmdldCgpLCBKU0Zp
bGVTeXN0ZW1EaXJlY3RvcnlIYW5kbGVJdGVyYXRvcikpOworICAgICAgICBjbGllbnREYXRhLnNl
dEZpbGVTeXN0ZW1EaXJlY3RvcnlIYW5kbGVJdGVyYXRvclNwYWNlKG1ha2VVbmlxdWU8SXNvU3Vi
c3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwg
SlNGaWxlU3lzdGVtRGlyZWN0b3J5SGFuZGxlSXRlcmF0b3IpKTsKICAgICBhdXRvKiBzcGFjZSA9
IGNsaWVudERhdGEuZmlsZVN5c3RlbURpcmVjdG9yeUhhbmRsZUl0ZXJhdG9yU3BhY2UoKTsKIElH
Tk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1Nf
QkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL1dlYkNvcmVKU0NsaWVudERhdGEuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL1dlYkNvcmVKU0NsaWVudERhdGEuY3BwCShyZXZpc2lvbiAyODYwMTEp
CisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9XZWJDb3JlSlNDbGllbnREYXRhLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTct
MjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTctMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTc3LDE1ICs3NywxNSBAQCBKU1ZNQ2xpZW50RGF0YTo6SlNWTUNs
aWVudERhdGEoVk0mIHZtKQogICAgICwgbV9oZWFwQ2VsbFR5cGVGb3JKU0F1ZGlvV29ya2xldEds
b2JhbFNjb3BlKEpTQzo6SXNvSGVhcENlbGxUeXBlOjpjcmVhdGU8SlNBdWRpb1dvcmtsZXRHbG9i
YWxTY29wZT4oKSkKICNlbmRpZgogICAgICwgbV9oZWFwQ2VsbFR5cGVGb3JKU0lEQlNlcmlhbGl6
YXRpb25HbG9iYWxPYmplY3QoSlNDOjpJc29IZWFwQ2VsbFR5cGU6OmNyZWF0ZTxKU0lEQlNlcmlh
bGl6YXRpb25HbG9iYWxPYmplY3Q+KCkpCi0gICAgLCBtX2RvbUJ1aWx0aW5Db25zdHJ1Y3RvclNw
YWNlIElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCks
IEpTRE9NQnVpbHRpbkNvbnN0cnVjdG9yQmFzZSkKLSAgICAsIG1fZG9tQ29uc3RydWN0b3JTcGFj
ZSBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlLmdldCgpLCBK
U0RPTUNvbnN0cnVjdG9yQmFzZSkKLSAgICAsIG1fZG9tTmFtZXNwYWNlT2JqZWN0U3BhY2UgSVNP
X1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNET01P
YmplY3QpCi0gICAgLCBtX2RvbVdpbmRvd1Byb3BlcnRpZXNTcGFjZSBJU09fU1VCU1BBQ0VfSU5J
VCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlLmdldCgpLCBKU0RPTVdpbmRvd1Byb3BlcnRp
ZXMpCi0gICAgLCBtX3J1bnRpbWVBcnJheVNwYWNlIElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAs
IG1fcnVudGltZUFycmF5SGVhcENlbGxUeXBlLmdldCgpLCBSdW50aW1lQXJyYXkpCi0gICAgLCBt
X3J1bnRpbWVNZXRob2RTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVh
cENlbGxUeXBlLmdldCgpLCBSdW50aW1lTWV0aG9kKSAvLyBIYXNoOjB4ZjcwYzRhODUKLSAgICAs
IG1fcnVudGltZU9iamVjdFNwYWNlIElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIG1fcnVudGlt
ZU9iamVjdEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNDOjpCaW5kaW5nczo6UnVudGltZU9iamVjdCkK
LSAgICAsIG1fd2luZG93UHJveHlTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCBtX3dp
bmRvd1Byb3h5SGVhcENlbGxUeXBlLmdldCgpLCBKU1dpbmRvd1Byb3h5KQotICAgICwgbV9pZGJT
ZXJpYWxpemF0aW9uU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgbV9oZWFwQ2VsbFR5
cGVGb3JKU0lEQlNlcmlhbGl6YXRpb25HbG9iYWxPYmplY3QuZ2V0KCksIEpTSURCU2VyaWFsaXph
dGlvbkdsb2JhbE9iamVjdCkKKyAgICAsIG1fZG9tQnVpbHRpbkNvbnN0cnVjdG9yU3BhY2UgSVNP
X1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU0RPTUJ1aWx0
aW5Db25zdHJ1Y3RvckJhc2UpCisgICAgLCBtX2RvbUNvbnN0cnVjdG9yU3BhY2UgSVNPX1NVQlNQ
QUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU0RPTUNvbnN0cnVjdG9y
QmFzZSkKKyAgICAsIG1fZG9tTmFtZXNwYWNlT2JqZWN0U3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQo
dm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU0RPTU9iamVjdCkKKyAgICAsIG1fZG9t
V2luZG93UHJvcGVydGllc1NwYWNlIElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxI
ZWFwQ2VsbFR5cGUoKSwgSlNET01XaW5kb3dQcm9wZXJ0aWVzKQorICAgICwgbV9ydW50aW1lQXJy
YXlTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqbV9ydW50aW1lQXJyYXlIZWFwQ2Vs
bFR5cGUsIFJ1bnRpbWVBcnJheSkKKyAgICAsIG1fcnVudGltZU1ldGhvZFNwYWNlIElTT19TVUJT
UEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgUnVudGltZU1ldGhvZCkg
Ly8gSGFzaDoweGY3MGM0YTg1CisgICAgLCBtX3J1bnRpbWVPYmplY3RTcGFjZSBJU09fU1VCU1BB
Q0VfSU5JVCh2bS5oZWFwLCAqbV9ydW50aW1lT2JqZWN0SGVhcENlbGxUeXBlLCBKU0M6OkJpbmRp
bmdzOjpSdW50aW1lT2JqZWN0KQorICAgICwgbV93aW5kb3dQcm94eVNwYWNlIElTT19TVUJTUEFD
RV9JTklUKHZtLmhlYXAsICptX3dpbmRvd1Byb3h5SGVhcENlbGxUeXBlLCBKU1dpbmRvd1Byb3h5
KQorICAgICwgbV9pZGJTZXJpYWxpemF0aW9uU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVh
cCwgKm1faGVhcENlbGxUeXBlRm9ySlNJREJTZXJpYWxpemF0aW9uR2xvYmFsT2JqZWN0LCBKU0lE
QlNlcmlhbGl6YXRpb25HbG9iYWxPYmplY3QpCiAgICAgLCBtX3N1YnNwYWNlcyhtYWtlVW5pcXVl
PERPTUlzb1N1YnNwYWNlcz4oKSkKIHsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCShyZXZpc2lvbiAyODYwMTEpCisr
KyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQkod29y
a2luZyBjb3B5KQpAQCAtNDg1MiwxMyArNDg1MiwxMyBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRh
dGlvbgogICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGlmIChhdXRvKiBzcGFjZSA9IHNwYWNl
cy5tX3N1YnNwYWNlRm9yJHtpbnRlcmZhY2VOYW1lfS5nZXQoKSlcbiIpOwogICAgIHB1c2goQGlt
cGxDb250ZW50LCAiICAgICAgICByZXR1cm4gc3BhY2U7XG4iKTsKICAgICBpZiAoSXNET01HbG9i
YWxPYmplY3QoJGludGVyZmFjZSkpIHsKLSAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAg
c3BhY2VzLm1fc3Vic3BhY2VGb3Ike2ludGVyZmFjZU5hbWV9ID0gbWFrZVVuaXF1ZTxJc29TdWJz
cGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgY2xpZW50RGF0YS5tX2hlYXBDZWxsVHlw
ZUZvciR7Y2xhc3NOYW1lfS5nZXQoKSwgJHtjbGFzc05hbWV9KTtcbiIpOworICAgICAgICBwdXNo
KEBpbXBsQ29udGVudCwgIiAgICBzcGFjZXMubV9zdWJzcGFjZUZvciR7aW50ZXJmYWNlTmFtZX0g
PSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqY2xp
ZW50RGF0YS5tX2hlYXBDZWxsVHlwZUZvciR7Y2xhc3NOYW1lfSwgJHtjbGFzc05hbWV9KTtcbiIp
OwogICAgIH0gZWxzZSB7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHN0YXRpY19h
c3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgJHtjbGFz
c05hbWV9PiB8fCAhJHtjbGFzc05hbWV9OjpuZWVkc0Rlc3RydWN0aW9uKTtcbiIpOwogICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92
PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsICR7Y2xhc3NOYW1lfT4pXG4iKTsKLSAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yJHtpbnRlcmZh
Y2VOYW1lfSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhl
YXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5nZXQoKSwgJHtjbGFzc05hbWV9
KTtcbiIpOworICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgc3BhY2VzLm1fc3Vi
c3BhY2VGb3Ike2ludGVyZmFjZU5hbWV9ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NV
QlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCks
ICR7Y2xhc3NOYW1lfSk7XG4iKTsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgZWxz
ZVxuIik7Ci0gICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICBzcGFjZXMubV9zdWJz
cGFjZUZvciR7aW50ZXJmYWNlTmFtZX0gPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VC
U1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlLmdldCgpLCAke2NsYXNzTmFt
ZX0pO1xuIik7CisgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICBzcGFjZXMubV9z
dWJzcGFjZUZvciR7aW50ZXJmYWNlTmFtZX0gPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09f
U1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCksICR7Y2xhc3NOYW1l
fSk7XG4iKTsKICAgICB9CiAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgYXV0byogc3BhY2Ug
PSBzcGFjZXMubV9zdWJzcGFjZUZvciR7aW50ZXJmYWNlTmFtZX0uZ2V0KCk7XG4iKTsKICAgICBw
dXNoKEBpbXBsQ29udGVudCwgIklHTk9SRV9XQVJOSU5HU19CRUdJTihcInVucmVhY2hhYmxlLWNv
ZGVcIilcbiIpOwpAQCAtNjczMSw5ICs2NzMxLDkgQEAgcHVibGljOgogICAgICAgICAgICAgcmV0
dXJuIHNwYWNlOwogICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6
SlNEZXN0cnVjdGlibGVPYmplY3QsICR7aXRlcmF0b3JOYW1lfT4gfHwgISR7aXRlcmF0b3JOYW1l
fTo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNl
X29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgJHtpdGVyYXRvck5hbWV9PikKLSAgICAg
ICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yJHtpdGVyYXRvck5hbWV9ID0gbWFrZVVuaXF1ZTxJ
c29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2Jq
ZWN0SGVhcENlbGxUeXBlLmdldCgpLCAke2l0ZXJhdG9yTmFtZX0pOworICAgICAgICAgICAgc3Bh
Y2VzLm1fc3Vic3BhY2VGb3Ike2l0ZXJhdG9yTmFtZX0gPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNl
PiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2Vs
bFR5cGUoKSwgJHtpdGVyYXRvck5hbWV9KTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgc3Bh
Y2VzLm1fc3Vic3BhY2VGb3Ike2l0ZXJhdG9yTmFtZX0gPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNl
PiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlLmdldCgpLCAk
e2l0ZXJhdG9yTmFtZX0pOworICAgICAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3Ike2l0ZXJh
dG9yTmFtZX0gPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5o
ZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCksICR7aXRlcmF0b3JOYW1lfSk7CiAgICAgICAgIGF1
dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3Ike2l0ZXJhdG9yTmFtZX0uZ2V0KCk7CiBJ
R05PUkVfV0FSTklOR1NfQkVHSU4oXCJ1bnJlYWNoYWJsZS1jb2RlXCIpCiBJR05PUkVfV0FSTklO
R1NfQkVHSU4oXCJ0YXV0b2xvZ2ljYWwtY29tcGFyZVwiKQpAQCAtNzUyOSw3ICs3NTI5LDcgQEAg
c3ViIEdlbmVyYXRlUHJvdG90eXBlRGVjbGFyYXRpb24KICAgICBwdXNoKEAkb3V0cHV0QXJyYXks
ICIgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKVxu
Iik7CiAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIHtcbiIpOwogICAgIHB1c2goQCRvdXRw
dXRBcnJheSwgIiAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoJHtw
cm90b3R5cGVDbGFzc05hbWV9LCBCYXNlKTtcbiIpOwotICAgIHB1c2goQCRvdXRwdXRBcnJheSwg
IiAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlO1xuIik7CisgICAgcHVzaChAJG91
dHB1dEFycmF5LCAiICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTtcbiIpOwog
ICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICB9XG4iKTsKIAogICAgIHB1c2goQCRvdXRwdXRB
cnJheSwgIiAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZN
JiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJv
dG90eXBlKVxuIik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNET01XaW5kb3cuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU0RPTVdpbmRvdy5jcHAJKHJldmlzaW9uIDI4NjAxMSkKKysrIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU0RPTVdpbmRvdy5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTM2OSw3ICszNjksNyBAQCBKU0M6Oklzb1N1YnNwYWNlKiBKU0RPTVdp
bmRvdzo6c3Vic3BhY2VGCiAgICAgYXV0byYgc3BhY2VzID0gY2xpZW50RGF0YS5zdWJzcGFjZXMo
KTsKICAgICBpZiAoYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvckRPTVdpbmRvdy5n
ZXQoKSkKICAgICAgICAgcmV0dXJuIHNwYWNlOwotICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yRE9N
V2luZG93ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVh
cCwgY2xpZW50RGF0YS5tX2hlYXBDZWxsVHlwZUZvckpTRE9NV2luZG93LmdldCgpLCBKU0RPTVdp
bmRvdyk7CisgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JET01XaW5kb3cgPSBtYWtlVW5pcXVlPElz
b1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqY2xpZW50RGF0YS5tX2hlYXBD
ZWxsVHlwZUZvckpTRE9NV2luZG93LCBKU0RPTVdpbmRvdyk7CiAgICAgYXV0byogc3BhY2UgPSBz
cGFjZXMubV9zdWJzcGFjZUZvckRPTVdpbmRvdy5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJ
TigidW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNh
bC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU0RPTVdpbmRvdy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU0RPTVdpbmRvdy5oCShyZXZpc2lvbiAyODYwMTEpCisrKyBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNET01XaW5kb3cuaAkod29ya2luZyBj
b3B5KQpAQCAtODUsNyArODUsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3Bh
Y2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VS
VF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNET01XaW5kb3dQcm90b3R5cGUsIEJhc2UpOwotICAg
ICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxh
aW5PYmplY3RTcGFjZSgpOwogICAgIH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0
ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNE
ZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZS5jcHAJKHJldmlzaW9uIDI4NjAxMSkKKysrIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU0RlZGljYXRlZFdvcmtlckdsb2Jh
bFNjb3BlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTcwLDcgKzE3MCw3IEBAIEpTQzo6SXNvU3Vi
c3BhY2UqIEpTRGVkaWNhdGVkV29ya2VyR2xvYmEKICAgICBhdXRvJiBzcGFjZXMgPSBjbGllbnRE
YXRhLnN1YnNwYWNlcygpOwogICAgIGlmIChhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNl
Rm9yRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUuZ2V0KCkpCiAgICAgICAgIHJldHVybiBzcGFj
ZTsKLSAgICBzcGFjZXMubV9zdWJzcGFjZUZvckRlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlID0g
bWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgY2xpZW50
RGF0YS5tX2hlYXBDZWxsVHlwZUZvckpTRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUuZ2V0KCks
IEpTRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUpOworICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9y
RGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09f
U1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqY2xpZW50RGF0YS5tX2hlYXBDZWxsVHlwZUZvckpTRGVk
aWNhdGVkV29ya2VyR2xvYmFsU2NvcGUsIEpTRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUpOwog
ICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JEZWRpY2F0ZWRXb3JrZXJHbG9i
YWxTY29wZS5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIp
CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU0RlZGljYXRlZFdvcmtlckds
b2JhbFNjb3BlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUuaAkocmV2aXNpb24gMjg2MDEx
KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTRGVkaWNhdGVk
V29ya2VyR2xvYmFsU2NvcGUuaAkod29ya2luZyBjb3B5KQpAQCAtODIsNyArODIsNyBAQCBwdWJs
aWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZt
KQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNE
ZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZVByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVy
biAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNw
YWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJl
KEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNW
YWx1ZSBwcm90b3R5cGUpCiAgICAgewpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTRXhwb3NlZFN0YXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU0V4cG9zZWRTdGFyLmNwcAkocmV2aXNpb24g
Mjg2MDExKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTRXhw
b3NlZFN0YXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03MSw3ICs3MSw3IEBAIHB1YmxpYzoKICAg
ICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAg
ewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU0V4cG9zZWRT
dGFyUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNl
OworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3Rh
dGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7
CkBAIC0yMzYsOSArMjM2LDkgQEAgSlNDOjpJc29TdWJzcGFjZSogSlNFeHBvc2VkU3Rhcjo6c3Vi
c3BhYwogICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jh
c2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU0V4cG9zZWRTdGFyPiB8fCAhSlNF
eHBvc2VkU3Rhcjo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3RleHByIChzdGQ6Omlz
X2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU0V4cG9zZWRTdGFyPikKLSAg
ICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JFeHBvc2VkU3RhciA9IG1ha2VVbmlxdWU8SXNvU3Vi
c3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhl
YXBDZWxsVHlwZS5nZXQoKSwgSlNFeHBvc2VkU3Rhcik7CisgICAgICAgIHNwYWNlcy5tX3N1YnNw
YWNlRm9yRXhwb3NlZFN0YXIgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0Vf
SU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwgSlNFeHBv
c2VkU3Rhcik7CiAgICAgZWxzZQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvckV4cG9zZWRT
dGFyID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwg
dm0uY2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNFeHBvc2VkU3Rhcik7CisgICAgICAgIHNwYWNl
cy5tX3N1YnNwYWNlRm9yRXhwb3NlZFN0YXIgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09f
U1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCksIEpTRXhwb3NlZFN0
YXIpOwogICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JFeHBvc2VkU3Rhci5n
ZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVf
V0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU0V4cG9zZWRUb1dvcmtlckFuZFdpbmRvdy5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTRXhwb3NlZFRvV29ya2VyQW5kV2luZG93LmNwcAkocmV2aXNpb24gMjg2MDExKQorKysgU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTRXhwb3NlZFRvV29ya2VyQW5k
V2luZG93LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTEyLDcgKzExMiw3IEBAIHB1YmxpYzoKICAg
ICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAg
ewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU0V4cG9zZWRU
b1dvcmtlckFuZFdpbmRvd1Byb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxh
aW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAg
ICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0m
IHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90
b3R5cGUpCiAgICAgewpAQCAtMjUyLDkgKzI1Miw5IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTRXhw
b3NlZFRvV29ya2VyQW5kV2kKICAgICAgICAgcmV0dXJuIHNwYWNlOwogICAgIHN0YXRpY19hc3Nl
cnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNFeHBvc2Vk
VG9Xb3JrZXJBbmRXaW5kb3c+IHx8ICFKU0V4cG9zZWRUb1dvcmtlckFuZFdpbmRvdzo6bmVlZHNE
ZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpT
RGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU0V4cG9zZWRUb1dvcmtlckFuZFdpbmRvdz4pCi0gICAgICAg
IHNwYWNlcy5tX3N1YnNwYWNlRm9yRXhwb3NlZFRvV29ya2VyQW5kV2luZG93ID0gbWFrZVVuaXF1
ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxl
T2JqZWN0SGVhcENlbGxUeXBlLmdldCgpLCBKU0V4cG9zZWRUb1dvcmtlckFuZFdpbmRvdyk7Cisg
ICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yRXhwb3NlZFRvV29ya2VyQW5kV2luZG93ID0gbWFr
ZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1
Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCksIEpTRXhwb3NlZFRvV29ya2VyQW5kV2luZG93KTsK
ICAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yRXhwb3NlZFRvV29ya2VyQW5k
V2luZG93ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVh
cCwgdm0uY2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNFeHBvc2VkVG9Xb3JrZXJBbmRXaW5kb3cp
OworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvckV4cG9zZWRUb1dvcmtlckFuZFdpbmRvdyA9
IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNl
bGxIZWFwQ2VsbFR5cGUoKSwgSlNFeHBvc2VkVG9Xb3JrZXJBbmRXaW5kb3cpOwogICAgIGF1dG8q
IHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JFeHBvc2VkVG9Xb3JrZXJBbmRXaW5kb3cuZ2V0
KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dB
Uk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNQYWludFdvcmtsZXRHbG9iYWxTY29wZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
UGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuY3BwCShyZXZpc2lvbiAyODYwMTEpCisrKyBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNQYWludFdvcmtsZXRHbG9iYWxTY29w
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2OSw3ICsxNjksNyBAQCBKU0M6Oklzb1N1YnNwYWNl
KiBKU1BhaW50V29ya2xldEdsb2JhbFNjCiAgICAgYXV0byYgc3BhY2VzID0gY2xpZW50RGF0YS5z
dWJzcGFjZXMoKTsKICAgICBpZiAoYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclBh
aW50V29ya2xldEdsb2JhbFNjb3BlLmdldCgpKQogICAgICAgICByZXR1cm4gc3BhY2U7Ci0gICAg
c3BhY2VzLm1fc3Vic3BhY2VGb3JQYWludFdvcmtsZXRHbG9iYWxTY29wZSA9IG1ha2VVbmlxdWU8
SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIGNsaWVudERhdGEubV9oZWFw
Q2VsbFR5cGVGb3JKU1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmdldCgpLCBKU1BhaW50V29ya2xl
dEdsb2JhbFNjb3BlKTsKKyAgICBzcGFjZXMubV9zdWJzcGFjZUZvclBhaW50V29ya2xldEdsb2Jh
bFNjb3BlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVh
cCwgKmNsaWVudERhdGEubV9oZWFwQ2VsbFR5cGVGb3JKU1BhaW50V29ya2xldEdsb2JhbFNjb3Bl
LCBKU1BhaW50V29ya2xldEdsb2JhbFNjb3BlKTsKICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5t
X3N1YnNwYWNlRm9yUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuZ2V0KCk7CiBJR05PUkVfV0FSTklO
R1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0
b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNQYWludFdvcmtsZXRHbG9iYWxTY29wZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1BhaW50V29ya2xldEdsb2JhbFNj
b3BlLmgJKHJldmlzaW9uIDI4NjAxMSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmgJKHdvcmtpbmcgY29weSkKQEAg
LTgyLDcgKzgyLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJz
cGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NV
QlNQQUNFX1NIQVJBQkxFKEpTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGVQcm90b3R5cGUsIEJhc2Up
OwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAm
dm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUq
IGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTU2VydmljZVdvcmtlckdsb2JhbFNjb3BlLmNwcAkocmV2aXNpb24gMjg2MDExKQorKysgU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTU2VydmljZVdvcmtlckdsb2Jh
bFNjb3BlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTY5LDcgKzE2OSw3IEBAIEpTQzo6SXNvU3Vi
c3BhY2UqIEpTU2VydmljZVdvcmtlckdsb2JhbFMKICAgICBhdXRvJiBzcGFjZXMgPSBjbGllbnRE
YXRhLnN1YnNwYWNlcygpOwogICAgIGlmIChhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNl
Rm9yU2VydmljZVdvcmtlckdsb2JhbFNjb3BlLmdldCgpKQogICAgICAgICByZXR1cm4gc3BhY2U7
Ci0gICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUgPSBtYWtl
VW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCBjbGllbnREYXRh
Lm1faGVhcENlbGxUeXBlRm9ySlNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUuZ2V0KCksIEpTU2Vy
dmljZVdvcmtlckdsb2JhbFNjb3BlKTsKKyAgICBzcGFjZXMubV9zdWJzcGFjZUZvclNlcnZpY2VX
b3JrZXJHbG9iYWxTY29wZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9J
TklUKHZtLmhlYXAsICpjbGllbnREYXRhLm1faGVhcENlbGxUeXBlRm9ySlNTZXJ2aWNlV29ya2Vy
R2xvYmFsU2NvcGUsIEpTU2VydmljZVdvcmtlckdsb2JhbFNjb3BlKTsKICAgICBhdXRvKiBzcGFj
ZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yU2VydmljZVdvcmtlckdsb2JhbFNjb3BlLmdldCgpOwog
SUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKIElHTk9SRV9XQVJOSU5H
U19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTU2VydmljZVdvcmtlckdsb2JhbFNjb3BlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTU2Vydmlj
ZVdvcmtlckdsb2JhbFNjb3BlLmgJKHJldmlzaW9uIDI4NjAxMSkKKysrIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC04Miw3ICs4Miw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJ
c29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFU
SUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1NlcnZpY2VXb3JrZXJHbG9iYWxTY29w
ZVByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsK
KyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRp
YyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpJ
bmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTU2hhcmVkV29y
a2VyR2xvYmFsU2NvcGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1NoYXJlZFdvcmtlckdsb2JhbFNjb3BlLmNwcAkocmV2aXNpb24g
Mjg2MDExKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTU2hh
cmVkV29ya2VyR2xvYmFsU2NvcGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTMsNyArMTUzLDcg
QEAgSlNDOjpJc29TdWJzcGFjZSogSlNTaGFyZWRXb3JrZXJHbG9iYWxTYwogICAgIGF1dG8mIHNw
YWNlcyA9IGNsaWVudERhdGEuc3Vic3BhY2VzKCk7CiAgICAgaWYgKGF1dG8qIHNwYWNlID0gc3Bh
Y2VzLm1fc3Vic3BhY2VGb3JTaGFyZWRXb3JrZXJHbG9iYWxTY29wZS5nZXQoKSkKICAgICAgICAg
cmV0dXJuIHNwYWNlOwotICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yU2hhcmVkV29ya2VyR2xvYmFs
U2NvcGUgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFw
LCBjbGllbnREYXRhLm1faGVhcENlbGxUeXBlRm9ySlNTaGFyZWRXb3JrZXJHbG9iYWxTY29wZS5n
ZXQoKSwgSlNTaGFyZWRXb3JrZXJHbG9iYWxTY29wZSk7CisgICAgc3BhY2VzLm1fc3Vic3BhY2VG
b3JTaGFyZWRXb3JrZXJHbG9iYWxTY29wZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19T
VUJTUEFDRV9JTklUKHZtLmhlYXAsICpjbGllbnREYXRhLm1faGVhcENlbGxUeXBlRm9ySlNTaGFy
ZWRXb3JrZXJHbG9iYWxTY29wZSwgSlNTaGFyZWRXb3JrZXJHbG9iYWxTY29wZSk7CiAgICAgYXV0
byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclNoYXJlZFdvcmtlckdsb2JhbFNjb3BlLmdl
dCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKIElHTk9SRV9X
QVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRleDogU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTU2hhcmVkV29ya2VyR2xvYmFsU2NvcGUuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNT
aGFyZWRXb3JrZXJHbG9iYWxTY29wZS5oCShyZXZpc2lvbiAyODYwMTEpCisrKyBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNTaGFyZWRXb3JrZXJHbG9iYWxTY29wZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC04Miw3ICs4Miw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlND
OjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBT
VEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1NoYXJlZFdvcmtlckdsb2JhbFNj
b3BlUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNl
OworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3Rh
dGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q0VS
ZWFjdGlvbnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RDRVJlYWN0aW9ucy5jcHAJKHJldmlzaW9uIDI4NjAxMSkKKysrIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDRVJlYWN0aW9ucy5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTkxLDcgKzkxLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBK
U0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAg
IFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdENFUmVhY3Rpb25zUHJv
dG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAg
ICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpT
Qzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC00
MzgsOSArNDM4LDkgQEAgSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0Q0VSZWFjdGlvbnM6OnN1Ygog
ICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2Zf
djxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RDRVJlYWN0aW9ucz4gfHwgIUpTVGVz
dENFUmVhY3Rpb25zOjpuZWVkc0Rlc3RydWN0aW9uKTsKICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6
aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdENFUmVhY3Rpb25z
PikKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0Q0VSZWFjdGlvbnMgPSBtYWtlVW5p
cXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGli
bGVPYmplY3RIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVGVzdENFUmVhY3Rpb25zKTsKKyAgICAgICAg
c3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0Q0VSZWFjdGlvbnMgPSBtYWtlVW5pcXVlPElzb1N1YnNw
YWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFw
Q2VsbFR5cGUoKSwgSlNUZXN0Q0VSZWFjdGlvbnMpOwogICAgIGVsc2UKLSAgICAgICAgc3BhY2Vz
Lm1fc3Vic3BhY2VGb3JUZXN0Q0VSZWFjdGlvbnMgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJ
U09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlLmdldCgpLCBKU1Rl
c3RDRVJlYWN0aW9ucyk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdENFUmVhY3Rp
b25zID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwg
dm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RDRVJlYWN0aW9ucyk7CiAgICAgYXV0byogc3Bh
Y2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RDRVJlYWN0aW9ucy5nZXQoKTsKIElHTk9SRV9X
QVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4o
InRhdXRvbG9naWNhbC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q0VSZWFj
dGlvbnNTdHJpbmdpZmllci5jcHAJKHJldmlzaW9uIDI4NjAxMSkKKysrIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNzUsNyArNzUsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpT
Qzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAg
U1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0Q0VSZWFjdGlvbnNTdHJp
bmdpZmllclByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RT
cGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAg
IHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6
OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAg
ICAgewpAQCAtMjY0LDkgKzI2NCw5IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdENFUmVhY3Rp
b25zU3RyaW4KICAgICAgICAgcmV0dXJuIHNwYWNlOwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjpp
c19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0Q0VSZWFjdGlvbnNT
dHJpbmdpZmllcj4gfHwgIUpTVGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXI6Om5lZWRzRGVzdHJ1
Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3Ry
dWN0aWJsZU9iamVjdCwgSlNUZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllcj4pCi0gICAgICAgIHNw
YWNlcy5tX3N1YnNwYWNlRm9yVGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXIgPSBtYWtlVW5pcXVl
PElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVP
YmplY3RIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXIpOwor
ICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyID0g
bWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVz
dHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCksIEpTVGVzdENFUmVhY3Rpb25zU3RyaW5naWZp
ZXIpOwogICAgIGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0Q0VSZWFjdGlv
bnNTdHJpbmdpZmllciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklU
KHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVGVzdENFUmVhY3Rpb25zU3Ry
aW5naWZpZXIpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RDRVJlYWN0aW9uc1N0
cmluZ2lmaWVyID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0u
aGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVy
KTsKICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdENFUmVhY3Rpb25z
U3RyaW5naWZpZXIuZ2V0KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNv
ZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2FsbFRyYWNl
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdENhbGxUcmFjZXIuY3BwCShyZXZpc2lvbiAyODYwMTEpCisrKyBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2FsbFRyYWNlci5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTk3LDcgKzk3LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1
YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19B
U1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdENhbGxUcmFjZXJQcm90b3R5cGUsIEJh
c2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVy
biAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1
cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKQEAgLTUxMyw5ICs1MTMs
OSBAQCBKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3RDYWxsVHJhY2VyOjpzdWJzCiAgICAgICAgIHJl
dHVybiBzcGFjZTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNE
ZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdENhbGxUcmFjZXI+IHx8ICFKU1Rlc3RDYWxsVHJhY2Vy
OjpuZWVkc0Rlc3RydWN0aW9uKTsKICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92
PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdENhbGxUcmFjZXI+KQotICAgICAgICBz
cGFjZXMubV9zdWJzcGFjZUZvclRlc3RDYWxsVHJhY2VyID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFj
ZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENl
bGxUeXBlLmdldCgpLCBKU1Rlc3RDYWxsVHJhY2VyKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3Bh
Y2VGb3JUZXN0Q2FsbFRyYWNlciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFD
RV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBKU1Rl
c3RDYWxsVHJhY2VyKTsKICAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVz
dENhbGxUcmFjZXIgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2
bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlLmdldCgpLCBKU1Rlc3RDYWxsVHJhY2VyKTsKKyAg
ICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0Q2FsbFRyYWNlciA9IG1ha2VVbmlxdWU8SXNv
U3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUo
KSwgSlNUZXN0Q2FsbFRyYWNlcik7CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFj
ZUZvclRlc3RDYWxsVHJhY2VyLmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNo
YWJsZS1jb2RlIikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUi
KQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENs
YXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29u
c3RydWN0b3IuY3BwCShyZXZpc2lvbiAyODYwMTEpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3IuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC02NCw3ICs2NCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlND
OjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBT
VEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3RDbGFzc1dpdGhKU0J1aWx0
aW5Db25zdHJ1Y3RvclByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5P
YmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAg
fQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZt
LCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5
cGUpCiAgICAgewpAQCAtMTc2LDkgKzE3Niw5IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdENs
YXNzV2l0aEpTQnVpbHQKICAgICAgICAgcmV0dXJuIHNwYWNlOwogICAgIHN0YXRpY19hc3NlcnQo
c3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0Q2xhc3NX
aXRoSlNCdWlsdGluQ29uc3RydWN0b3I+IHx8ICFKU1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25z
dHJ1Y3Rvcjo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jh
c2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RDbGFzc1dpdGhKU0J1aWx0
aW5Db25zdHJ1Y3Rvcj4pCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdENsYXNzV2l0
aEpTQnVpbHRpbkNvbnN0cnVjdG9yID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQ
QUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmdldCgp
LCBKU1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3Rvcik7CisgICAgICAgIHNwYWNlcy5t
X3N1YnNwYWNlRm9yVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yID0gbWFrZVVuaXF1
ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxl
T2JqZWN0SGVhcENlbGxUeXBlKCksIEpTVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9y
KTsKICAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdENsYXNzV2l0aEpT
QnVpbHRpbkNvbnN0cnVjdG9yID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNF
X0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNUZXN0Q2xhc3NXaXRo
SlNCdWlsdGluQ29uc3RydWN0b3IpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RD
bGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3RvciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElT
T19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0Q2xh
c3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3IpOwogICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1f
c3Vic3BhY2VGb3JUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3IuZ2V0KCk7CiBJR05P
UkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JF
R0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlcy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENvbmRp
dGlvbmFsSW5jbHVkZXMuY3BwCShyZXZpc2lvbiAyODYwMTEpCisrKyBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlcy5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTEyNyw3ICsxMjcsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6
SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RB
VElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRl
c1Byb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsK
KyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRp
YyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpA
QCAtNzg5LDkgKzc4OSw5IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdENvbmRpdGlvbmFsSW5j
bHUKICAgICAgICAgcmV0dXJuIHNwYWNlOwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNl
X29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRl
cz4gfHwgIUpTVGVzdENvbmRpdGlvbmFsSW5jbHVkZXM6Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAg
IGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVj
dCwgSlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlcz4pCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNl
Rm9yVGVzdENvbmRpdGlvbmFsSW5jbHVkZXMgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09f
U1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUu
Z2V0KCksIEpTVGVzdENvbmRpdGlvbmFsSW5jbHVkZXMpOworICAgICAgICBzcGFjZXMubV9zdWJz
cGFjZUZvclRlc3RDb25kaXRpb25hbEluY2x1ZGVzID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4g
SVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxU
eXBlKCksIEpTVGVzdENvbmRpdGlvbmFsSW5jbHVkZXMpOwogICAgIGVsc2UKLSAgICAgICAgc3Bh
Y2VzLm1fc3Vic3BhY2VGb3JUZXN0Q29uZGl0aW9uYWxJbmNsdWRlcyA9IG1ha2VVbmlxdWU8SXNv
U3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUu
Z2V0KCksIEpTVGVzdENvbmRpdGlvbmFsSW5jbHVkZXMpOworICAgICAgICBzcGFjZXMubV9zdWJz
cGFjZUZvclRlc3RDb25kaXRpb25hbEluY2x1ZGVzID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4g
SVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RD
b25kaXRpb25hbEluY2x1ZGVzKTsKICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNl
Rm9yVGVzdENvbmRpdGlvbmFsSW5jbHVkZXMuZ2V0KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4o
InVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwt
Y29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0Q29uZGl0aW9uYWxseVJlYWRXcml0ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENvbmRpdGlvbmFsbHlSZWFkV3Jp
dGUuY3BwCShyZXZpc2lvbiAyODYwMTEpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0Q29uZGl0aW9uYWxseVJlYWRXcml0ZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTk4LDcgKzk4LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNl
KiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRf
SVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdENvbmRpdGlvbmFsbHlSZWFkV3JpdGVQcm90b3R5
cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAg
IHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KICAgICBzdGF0aWMgSlNDOjpT
dHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKQEAgLTYxMSw5
ICs2MTEsOSBAQCBKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3RDb25kaXRpb25hbGx5UmVhCiAgICAg
ICAgIHJldHVybiBzcGFjZTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpT
Qzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdENvbmRpdGlvbmFsbHlSZWFkV3JpdGU+IHx8
ICFKU1Rlc3RDb25kaXRpb25hbGx5UmVhZFdyaXRlOjpuZWVkc0Rlc3RydWN0aW9uKTsKICAgICBp
ZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3Qs
IEpTVGVzdENvbmRpdGlvbmFsbHlSZWFkV3JpdGU+KQotICAgICAgICBzcGFjZXMubV9zdWJzcGFj
ZUZvclRlc3RDb25kaXRpb25hbGx5UmVhZFdyaXRlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4g
SVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxU
eXBlLmdldCgpLCBKU1Rlc3RDb25kaXRpb25hbGx5UmVhZFdyaXRlKTsKKyAgICAgICAgc3BhY2Vz
Lm1fc3Vic3BhY2VGb3JUZXN0Q29uZGl0aW9uYWxseVJlYWRXcml0ZSA9IG1ha2VVbmlxdWU8SXNv
U3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVj
dEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RDb25kaXRpb25hbGx5UmVhZFdyaXRlKTsKICAgICBlbHNl
Ci0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdENvbmRpdGlvbmFsbHlSZWFkV3JpdGUg
PSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5j
ZWxsSGVhcENlbGxUeXBlLmdldCgpLCBKU1Rlc3RDb25kaXRpb25hbGx5UmVhZFdyaXRlKTsKKyAg
ICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0Q29uZGl0aW9uYWxseVJlYWRXcml0ZSA9IG1h
a2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxI
ZWFwQ2VsbFR5cGUoKSwgSlNUZXN0Q29uZGl0aW9uYWxseVJlYWRXcml0ZSk7CiAgICAgYXV0byog
c3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RDb25kaXRpb25hbGx5UmVhZFdyaXRlLmdl
dCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKIElHTk9SRV9X
QVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRleDogU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERPTUpJVC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERPTUpJVC5j
cHAJKHJldmlzaW9uIDI4NjAxMSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RET01KSVQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00ODEsNyArNDgxLDcg
QEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6
OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJB
QkxFKEpTVGVzdERPTUpJVFByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxh
aW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAg
ICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0m
IHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90
b3R5cGUpCiAgICAgewpAQCAtMTI1Miw5ICsxMjUyLDkgQEAgSlNDOjpJc29TdWJzcGFjZSogSlNU
ZXN0RE9NSklUOjpzdWJzcGFjZQogICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fz
c2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RE
T01KSVQ+IHx8ICFKU1Rlc3RET01KSVQ6Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0
ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0
RE9NSklUPikKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0RE9NSklUID0gbWFrZVVu
aXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3Rp
YmxlT2JqZWN0SGVhcENlbGxUeXBlLmdldCgpLCBKU1Rlc3RET01KSVQpOworICAgICAgICBzcGFj
ZXMubV9zdWJzcGFjZUZvclRlc3RET01KSVQgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09f
U1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUo
KSwgSlNUZXN0RE9NSklUKTsKICAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9y
VGVzdERPTUpJVCA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZt
LmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVGVzdERPTUpJVCk7CisgICAgICAg
IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdERPTUpJVCA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+
IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0
RE9NSklUKTsKICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdERPTUpJ
VC5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJR05P
UkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3REZWZhdWx0VG9KU09OLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0RGVmYXVsdFRvSlNPTi5jcHAJKHJldmlzaW9uIDI4NjAxMSkKKysrIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3REZWZhdWx0VG9KU09OLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTI0LDcgKzEyNCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29T
dWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNf
QVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3REZWZhdWx0VG9KU09OUHJvdG90eXBl
LCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICBy
ZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3Ry
dWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC04MDgsOSAr
ODA4LDkgQEAgSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0RGVmYXVsdFRvSlNPTjo6cwogICAgICAg
ICByZXR1cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6
OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3REZWZhdWx0VG9KU09OPiB8fCAhSlNUZXN0RGVm
YXVsdFRvSlNPTjo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3RleHByIChzdGQ6Omlz
X2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3REZWZhdWx0VG9KU09O
PikKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0RGVmYXVsdFRvSlNPTiA9IG1ha2VV
bmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0
aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNUZXN0RGVmYXVsdFRvSlNPTik7CisgICAg
ICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdERlZmF1bHRUb0pTT04gPSBtYWtlVW5pcXVlPElz
b1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmpl
Y3RIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0RGVmYXVsdFRvSlNPTik7CiAgICAgZWxzZQotICAgICAg
ICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3REZWZhdWx0VG9KU09OID0gbWFrZVVuaXF1ZTxJc29T
dWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZS5n
ZXQoKSwgSlNUZXN0RGVmYXVsdFRvSlNPTik7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9y
VGVzdERlZmF1bHRUb0pTT04gPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0Vf
SU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCksIEpTVGVzdERlZmF1bHRUb0pTT04p
OwogICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0RGVmYXVsdFRvSlNP
Ti5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJR05P
UkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3REZWZhdWx0VG9KU09ORmlsdGVy
ZWRCeUV4cG9zZWQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWQuY3BwCShy
ZXZpc2lvbiAyODYwMTEpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNzUsNyArNzUsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2Uq
IHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9J
U09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2Vk
UHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOwor
ICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGlj
IEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBA
IC0yNzAsOSArMjcwLDkgQEAgSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0RGVmYXVsdFRvSlNPTkZp
bAogICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vf
b2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3REZWZhdWx0VG9KU09ORmlsdGVy
ZWRCeUV4cG9zZWQ+IHx8ICFKU1Rlc3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWQ6Om5l
ZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlND
OjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBv
c2VkPikKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0RGVmYXVsdFRvSlNPTkZpbHRl
cmVkQnlFeHBvc2VkID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQo
dm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmdldCgpLCBKU1Rlc3RE
ZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWQpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFj
ZUZvclRlc3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWQgPSBtYWtlVW5pcXVlPElzb1N1
YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RI
ZWFwQ2VsbFR5cGUoKSwgSlNUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkKTsKICAg
ICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdERlZmF1bHRUb0pTT05GaWx0
ZXJlZEJ5RXhwb3NlZCA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklU
KHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVGVzdERlZmF1bHRUb0pTT05G
aWx0ZXJlZEJ5RXhwb3NlZCk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdERlZmF1
bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZCA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19T
VUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0RGVmYXVs
dFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkKTsKICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1
YnNwYWNlRm9yVGVzdERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZC5nZXQoKTsKIElHTk9S
RV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVH
SU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3REZWZhdWx0VG9KU09OSW5kaXJlY3RJbmhlcml0YW5jZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdERlZmF1bHRUb0pTT05JbmRpcmVjdEluaGVyaXRhbmNlLmNwcAkocmV2aXNpb24gMjg2
MDExKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERl
ZmF1bHRUb0pTT05JbmRpcmVjdEluaGVyaXRhbmNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjIs
NyArNjIsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNl
Rm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BB
Q0VfU0hBUkFCTEUoSlNUZXN0RGVmYXVsdFRvSlNPTkluZGlyZWN0SW5oZXJpdGFuY2VQcm90b3R5
cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAg
IHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KICAgICBzdGF0aWMgSlNDOjpT
dHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKQEAgLTE2Miw5
ICsxNjIsOSBAQCBKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3REZWZhdWx0VG9KU09OSW5kCiAgICAg
ICAgIHJldHVybiBzcGFjZTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpT
Qzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdERlZmF1bHRUb0pTT05JbmRpcmVjdEluaGVy
aXRhbmNlPiB8fCAhSlNUZXN0RGVmYXVsdFRvSlNPTkluZGlyZWN0SW5oZXJpdGFuY2U6Om5lZWRz
RGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpK
U0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0RGVmYXVsdFRvSlNPTkluZGlyZWN0SW5oZXJpdGFu
Y2U+KQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3REZWZhdWx0VG9KU09OSW5kaXJl
Y3RJbmhlcml0YW5jZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklU
KHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNUZXN0
RGVmYXVsdFRvSlNPTkluZGlyZWN0SW5oZXJpdGFuY2UpOworICAgICAgICBzcGFjZXMubV9zdWJz
cGFjZUZvclRlc3REZWZhdWx0VG9KU09OSW5kaXJlY3RJbmhlcml0YW5jZSA9IG1ha2VVbmlxdWU8
SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9i
amVjdEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3REZWZhdWx0VG9KU09OSW5kaXJlY3RJbmhlcml0YW5j
ZSk7CiAgICAgZWxzZQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3REZWZhdWx0VG9K
U09OSW5kaXJlY3RJbmhlcml0YW5jZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJT
UEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVGVzdERlZmF1
bHRUb0pTT05JbmRpcmVjdEluaGVyaXRhbmNlKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VG
b3JUZXN0RGVmYXVsdFRvSlNPTkluZGlyZWN0SW5oZXJpdGFuY2UgPSBtYWtlVW5pcXVlPElzb1N1
YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCks
IEpTVGVzdERlZmF1bHRUb0pTT05JbmRpcmVjdEluaGVyaXRhbmNlKTsKICAgICBhdXRvKiBzcGFj
ZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdERlZmF1bHRUb0pTT05JbmRpcmVjdEluaGVyaXRh
bmNlLmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKIElH
Tk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRleDogU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERlZmF1bHRUb0pTT05Jbmhl
cml0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0RGVmYXVsdFRvSlNPTkluaGVyaXQuY3BwCShyZXZpc2lvbiAyODYwMTEpCisr
KyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RGVmYXVsdFRv
SlNPTkluaGVyaXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04OSw3ICs4OSw3IEBAIHB1YmxpYzoK
ICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAg
ICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3RE
ZWZhdWx0VG9KU09OSW5oZXJpdFByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0u
cGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7
CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6
Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBw
cm90b3R5cGUpCiAgICAgewpAQCAtMjkyLDkgKzI5Miw5IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpT
VGVzdERlZmF1bHRUb0pTT05JbmgKICAgICAgICAgcmV0dXJuIHNwYWNlOwogICAgIHN0YXRpY19h
c3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0
RGVmYXVsdFRvSlNPTkluaGVyaXQ+IHx8ICFKU1Rlc3REZWZhdWx0VG9KU09OSW5oZXJpdDo6bmVl
ZHNEZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6
OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3REZWZhdWx0VG9KU09OSW5oZXJpdD4pCi0gICAg
ICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdERlZmF1bHRUb0pTT05Jbmhlcml0ID0gbWFrZVVu
aXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3Rp
YmxlT2JqZWN0SGVhcENlbGxUeXBlLmdldCgpLCBKU1Rlc3REZWZhdWx0VG9KU09OSW5oZXJpdCk7
CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdERlZmF1bHRUb0pTT05Jbmhlcml0ID0g
bWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVz
dHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCksIEpTVGVzdERlZmF1bHRUb0pTT05Jbmhlcml0
KTsKICAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdERlZmF1bHRUb0pT
T05Jbmhlcml0ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0u
aGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNUZXN0RGVmYXVsdFRvSlNPTkluaGVy
aXQpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3REZWZhdWx0VG9KU09OSW5oZXJp
dCA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZt
LmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0RGVmYXVsdFRvSlNPTkluaGVyaXQpOwogICAgIGF1
dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0RGVmYXVsdFRvSlNPTkluaGVyaXQu
Z2V0KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JF
X1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RGVmYXVsdFRvSlNPTkluaGVyaXRG
aW5hbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdERlZmF1bHRUb0pTT05Jbmhlcml0RmluYWwuY3BwCShyZXZpc2lvbiAyODYw
MTEpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RGVm
YXVsdFRvSlNPTkluaGVyaXRGaW5hbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTkxLDcgKzkxLDcg
QEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6
OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJB
QkxFKEpTVGVzdERlZmF1bHRUb0pTT05Jbmhlcml0RmluYWxQcm90b3R5cGUsIEJhc2UpOwotICAg
ICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxh
aW5PYmplY3RTcGFjZSgpOwogICAgIH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0
ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKQEAgLTMzMiw5ICszMzIsOSBAQCBKU0M6
Oklzb1N1YnNwYWNlKiBKU1Rlc3REZWZhdWx0VG9KU09OSW5oCiAgICAgICAgIHJldHVybiBzcGFj
ZTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGli
bGVPYmplY3QsIEpTVGVzdERlZmF1bHRUb0pTT05Jbmhlcml0RmluYWw+IHx8ICFKU1Rlc3REZWZh
dWx0VG9KU09OSW5oZXJpdEZpbmFsOjpuZWVkc0Rlc3RydWN0aW9uKTsKICAgICBpZiBjb25zdGV4
cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdERl
ZmF1bHRUb0pTT05Jbmhlcml0RmluYWw+KQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRl
c3REZWZhdWx0VG9KU09OSW5oZXJpdEZpbmFsID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNP
X1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBl
LmdldCgpLCBKU1Rlc3REZWZhdWx0VG9KU09OSW5oZXJpdEZpbmFsKTsKKyAgICAgICAgc3BhY2Vz
Lm1fc3Vic3BhY2VGb3JUZXN0RGVmYXVsdFRvSlNPTkluaGVyaXRGaW5hbCA9IG1ha2VVbmlxdWU8
SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9i
amVjdEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3REZWZhdWx0VG9KU09OSW5oZXJpdEZpbmFsKTsKICAg
ICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdERlZmF1bHRUb0pTT05Jbmhl
cml0RmluYWwgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5o
ZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlLmdldCgpLCBKU1Rlc3REZWZhdWx0VG9KU09OSW5oZXJp
dEZpbmFsKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0RGVmYXVsdFRvSlNPTklu
aGVyaXRGaW5hbCA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZt
LmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0RGVmYXVsdFRvSlNPTkluaGVyaXRG
aW5hbCk7CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3REZWZhdWx0
VG9KU09OSW5oZXJpdEZpbmFsLmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNo
YWJsZS1jb2RlIikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUi
KQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERl
bGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGUuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3REZWxlZ2F0ZVRvU2hhcmVk
U3ludGhldGljQXR0cmlidXRlLmNwcAkocmV2aXNpb24gMjg2MDExKQorKysgU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0
aWNBdHRyaWJ1dGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03MCw3ICs3MCw3IEBAIHB1YmxpYzoK
ICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAg
ICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3RE
ZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlUHJvdG90eXBlLCBCYXNlKTsKLSAgICAg
ICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWlu
T2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVT
dHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
SlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC0yNDYsOSArMjQ2LDkgQEAgSlNDOjpJ
c29TdWJzcGFjZSogSlNUZXN0RGVsZWdhdGVUb1NoYXJlZAogICAgICAgICByZXR1cm4gc3BhY2U7
CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxl
T2JqZWN0LCBKU1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlPiB8fCAhSlNU
ZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZTo6bmVlZHNEZXN0cnVjdGlvbik7
CiAgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxl
T2JqZWN0LCBKU1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlPikKLSAgICAg
ICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJp
YnV0ZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAs
IHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNUZXN0RGVsZWdhdGVU
b1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZSk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9y
VGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGUgPSBtYWtlVW5pcXVlPElzb1N1
YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RI
ZWFwQ2VsbFR5cGUoKSwgSlNUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZSk7
CiAgICAgZWxzZQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3REZWxlZ2F0ZVRvU2hh
cmVkU3ludGhldGljQXR0cmlidXRlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQ
QUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNUZXN0RGVsZWdh
dGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZSk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNl
Rm9yVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGUgPSBtYWtlVW5pcXVlPElz
b1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBl
KCksIEpTVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGUpOwogICAgIGF1dG8q
IHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRp
Y0F0dHJpYnV0ZS5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29k
ZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3REb21haW5TZWN1
cml0eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdERvbWFpblNlY3VyaXR5LmNwcAkocmV2aXNpb24gMjg2MDExKQorKysgU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERvbWFpblNlY3VyaXR5
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtODAsNyArODAsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGlj
IEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAg
ICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0RG9tYWluU2VjdXJp
dHlQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7
CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KICAgICBzdGF0
aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsK
QEAgLTMyMCw5ICszMjAsOSBAQCBKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3REb21haW5TZWN1cml0
eTo6CiAgICAgICAgIHJldHVybiBzcGFjZTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFz
ZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdERvbWFpblNlY3VyaXR5PiB8
fCAhSlNUZXN0RG9tYWluU2VjdXJpdHk6Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0
ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0
RG9tYWluU2VjdXJpdHk+KQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3REb21haW5T
ZWN1cml0eSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhl
YXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNUZXN0RG9tYWlu
U2VjdXJpdHkpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3REb21haW5TZWN1cml0
eSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZt
LmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3REb21haW5TZWN1cml0eSk7
CiAgICAgZWxzZQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3REb21haW5TZWN1cml0
eSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZt
LmNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVGVzdERvbWFpblNlY3VyaXR5KTsKKyAgICAgICAg
c3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0RG9tYWluU2VjdXJpdHkgPSBtYWtlVW5pcXVlPElzb1N1
YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCks
IEpTVGVzdERvbWFpblNlY3VyaXR5KTsKICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNw
YWNlRm9yVGVzdERvbWFpblNlY3VyaXR5LmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1
bnJlYWNoYWJsZS1jb2RlIikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNv
bXBhcmUiKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdEVuYWJsZWRCeVNldHRpbmcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFbmFibGVkQnlTZXR0aW5nLmNwcAkocmV2aXNp
b24gMjg2MDExKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdEVuYWJsZWRCeVNldHRpbmcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05Miw3ICs5Miw3IEBA
IHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpW
TSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJM
RShKU1Rlc3RFbmFibGVkQnlTZXR0aW5nUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJu
ICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3Bh
Y2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUo
SlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1Zh
bHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC00NTksOSArNDU5LDkgQEAgSlNDOjpJc29TdWJzcGFj
ZSogSlNUZXN0RW5hYmxlZEJ5U2V0dGluZwogICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAgc3Rh
dGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBK
U1Rlc3RFbmFibGVkQnlTZXR0aW5nPiB8fCAhSlNUZXN0RW5hYmxlZEJ5U2V0dGluZzo6bmVlZHNE
ZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpT
RGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RFbmFibGVkQnlTZXR0aW5nPikKLSAgICAgICAgc3Bh
Y2VzLm1fc3Vic3BhY2VGb3JUZXN0RW5hYmxlZEJ5U2V0dGluZyA9IG1ha2VVbmlxdWU8SXNvU3Vi
c3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhl
YXBDZWxsVHlwZS5nZXQoKSwgSlNUZXN0RW5hYmxlZEJ5U2V0dGluZyk7CisgICAgICAgIHNwYWNl
cy5tX3N1YnNwYWNlRm9yVGVzdEVuYWJsZWRCeVNldHRpbmcgPSBtYWtlVW5pcXVlPElzb1N1YnNw
YWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFw
Q2VsbFR5cGUoKSwgSlNUZXN0RW5hYmxlZEJ5U2V0dGluZyk7CiAgICAgZWxzZQotICAgICAgICBz
cGFjZXMubV9zdWJzcGFjZUZvclRlc3RFbmFibGVkQnlTZXR0aW5nID0gbWFrZVVuaXF1ZTxJc29T
dWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZS5n
ZXQoKSwgSlNUZXN0RW5hYmxlZEJ5U2V0dGluZyk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNl
Rm9yVGVzdEVuYWJsZWRCeVNldHRpbmcgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VC
U1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCksIEpTVGVzdEVuYWJsZWRC
eVNldHRpbmcpOwogICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0RW5h
YmxlZEJ5U2V0dGluZy5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUt
Y29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFbmFibGVk
Rm9yQ29udGV4dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdEVuYWJsZWRGb3JDb250ZXh0LmNwcAkocmV2aXNpb24gMjg2MDEx
KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEVuYWJs
ZWRGb3JDb250ZXh0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjYsNyArNjYsNyBAQCBwdWJsaWM6
CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQog
ICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0
RW5hYmxlZEZvckNvbnRleHRQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBs
YWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwog
ICAgIH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZN
JiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJv
dG90eXBlKQogICAgIHsKQEAgLTE4Niw5ICsxODYsOSBAQCBKU0M6Oklzb1N1YnNwYWNlKiBKU1Rl
c3RFbmFibGVkRm9yQ29udGV4CiAgICAgICAgIHJldHVybiBzcGFjZTsKICAgICBzdGF0aWNfYXNz
ZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdEVu
YWJsZWRGb3JDb250ZXh0PiB8fCAhSlNUZXN0RW5hYmxlZEZvckNvbnRleHQ6Om5lZWRzRGVzdHJ1
Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3Ry
dWN0aWJsZU9iamVjdCwgSlNUZXN0RW5hYmxlZEZvckNvbnRleHQ+KQotICAgICAgICBzcGFjZXMu
bV9zdWJzcGFjZUZvclRlc3RFbmFibGVkRm9yQ29udGV4dCA9IG1ha2VVbmlxdWU8SXNvU3Vic3Bh
Y2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBD
ZWxsVHlwZS5nZXQoKSwgSlNUZXN0RW5hYmxlZEZvckNvbnRleHQpOworICAgICAgICBzcGFjZXMu
bV9zdWJzcGFjZUZvclRlc3RFbmFibGVkRm9yQ29udGV4dCA9IG1ha2VVbmlxdWU8SXNvU3Vic3Bh
Y2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBD
ZWxsVHlwZSgpLCBKU1Rlc3RFbmFibGVkRm9yQ29udGV4dCk7CiAgICAgZWxzZQotICAgICAgICBz
cGFjZXMubV9zdWJzcGFjZUZvclRlc3RFbmFibGVkRm9yQ29udGV4dCA9IG1ha2VVbmlxdWU8SXNv
U3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUu
Z2V0KCksIEpTVGVzdEVuYWJsZWRGb3JDb250ZXh0KTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3Bh
Y2VGb3JUZXN0RW5hYmxlZEZvckNvbnRleHQgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09f
U1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCksIEpTVGVzdEVuYWJs
ZWRGb3JDb250ZXh0KTsKICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVz
dEVuYWJsZWRGb3JDb250ZXh0LmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNo
YWJsZS1jb2RlIikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUi
KQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2
ZW50Q29uc3RydWN0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudENvbnN0cnVjdG9yLmNwcAkocmV2aXNpb24gMjg2
MDExKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2
ZW50Q29uc3RydWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDcsNyArMTQ3LDcgQEAgcHVi
bGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2
bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpT
VGVzdEV2ZW50Q29uc3RydWN0b3JQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZt
LnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgp
OwogICAgIH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6
OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUg
cHJvdG90eXBlKQogICAgIHsKQEAgLTMyMSw5ICszMjEsOSBAQCBKU0M6Oklzb1N1YnNwYWNlKiBK
U1Rlc3RFdmVudENvbnN0cnVjdG9yCiAgICAgICAgIHJldHVybiBzcGFjZTsKICAgICBzdGF0aWNf
YXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVz
dEV2ZW50Q29uc3RydWN0b3I+IHx8ICFKU1Rlc3RFdmVudENvbnN0cnVjdG9yOjpuZWVkc0Rlc3Ry
dWN0aW9uKTsKICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0
cnVjdGlibGVPYmplY3QsIEpTVGVzdEV2ZW50Q29uc3RydWN0b3I+KQotICAgICAgICBzcGFjZXMu
bV9zdWJzcGFjZUZvclRlc3RFdmVudENvbnN0cnVjdG9yID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFj
ZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENl
bGxUeXBlLmdldCgpLCBKU1Rlc3RFdmVudENvbnN0cnVjdG9yKTsKKyAgICAgICAgc3BhY2VzLm1f
c3Vic3BhY2VGb3JUZXN0RXZlbnRDb25zdHJ1Y3RvciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+
IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxs
VHlwZSgpLCBKU1Rlc3RFdmVudENvbnN0cnVjdG9yKTsKICAgICBlbHNlCi0gICAgICAgIHNwYWNl
cy5tX3N1YnNwYWNlRm9yVGVzdEV2ZW50Q29uc3RydWN0b3IgPSBtYWtlVW5pcXVlPElzb1N1YnNw
YWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlLmdldCgp
LCBKU1Rlc3RFdmVudENvbnN0cnVjdG9yKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JU
ZXN0RXZlbnRDb25zdHJ1Y3RvciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFD
RV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0RXZlbnRDb25zdHJ1
Y3Rvcik7CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RFdmVudENv
bnN0cnVjdG9yLmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2Rl
IikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRleDog
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50VGFyZ2V0
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0RXZlbnRUYXJnZXQuY3BwCShyZXZpc2lvbiAyODYwMTEpCisrKyBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRUYXJnZXQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC03Myw3ICs3Myw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29T
dWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNf
QVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3RFdmVudFRhcmdldFByb3RvdHlwZSwg
QmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0
dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVj
dHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAtMjYyLDkgKzI2
Miw5IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdEV2ZW50VGFyZ2V0OjpzdWIKICAgICAgICAg
cmV0dXJuIHNwYWNlOwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpK
U0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0RXZlbnRUYXJnZXQ+IHx8ICFKU1Rlc3RFdmVudFRh
cmdldDo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vf
b2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RFdmVudFRhcmdldD4pCi0gICAg
ICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEV2ZW50VGFyZ2V0ID0gbWFrZVVuaXF1ZTxJc29T
dWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0
SGVhcENlbGxUeXBlLmdldCgpLCBKU1Rlc3RFdmVudFRhcmdldCk7CisgICAgICAgIHNwYWNlcy5t
X3N1YnNwYWNlRm9yVGVzdEV2ZW50VGFyZ2V0ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNP
X1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBl
KCksIEpTVGVzdEV2ZW50VGFyZ2V0KTsKICAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNw
YWNlRm9yVGVzdEV2ZW50VGFyZ2V0ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQ
QUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNUZXN0RXZlbnRU
YXJnZXQpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RFdmVudFRhcmdldCA9IG1h
a2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxI
ZWFwQ2VsbFR5cGUoKSwgSlNUZXN0RXZlbnRUYXJnZXQpOwogICAgIGF1dG8qIHNwYWNlID0gc3Bh
Y2VzLm1fc3Vic3BhY2VGb3JUZXN0RXZlbnRUYXJnZXQuZ2V0KCk7CiBJR05PUkVfV0FSTklOR1Nf
QkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xv
Z2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0RXhjZXB0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXhjZXB0aW9uLmNwcAkocmV2aXNpb24gMjg2
MDExKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV4
Y2VwdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY2LDcgKzY2LDcgQEAgcHVibGljOgogICAg
IHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7
CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdEV4Y2Vw
dGlvblByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFj
ZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0
YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAg
ewpAQCAtMTg3LDkgKzE4Nyw5IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdEV4Y2VwdGlvbjo6
c3Vic3AKICAgICAgICAgcmV0dXJuIHNwYWNlOwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19i
YXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0RXhjZXB0aW9uPiB8fCAh
SlNUZXN0RXhjZXB0aW9uOjpuZWVkc0Rlc3RydWN0aW9uKTsKICAgICBpZiBjb25zdGV4cHIgKHN0
ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdEV4Y2VwdGlv
bj4pCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEV4Y2VwdGlvbiA9IG1ha2VVbmlx
dWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJs
ZU9iamVjdEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNUZXN0RXhjZXB0aW9uKTsKKyAgICAgICAgc3Bh
Y2VzLm1fc3Vic3BhY2VGb3JUZXN0RXhjZXB0aW9uID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4g
SVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxU
eXBlKCksIEpTVGVzdEV4Y2VwdGlvbik7CiAgICAgZWxzZQotICAgICAgICBzcGFjZXMubV9zdWJz
cGFjZUZvclRlc3RFeGNlcHRpb24gPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BB
Q0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlLmdldCgpLCBKU1Rlc3RFeGNlcHRp
b24pOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RFeGNlcHRpb24gPSBtYWtlVW5p
cXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENl
bGxUeXBlKCksIEpTVGVzdEV4Y2VwdGlvbik7CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9z
dWJzcGFjZUZvclRlc3RFeGNlcHRpb24uZ2V0KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVu
cmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29t
cGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0R2VuZXJhdGVBZGRPcGFxdWVSb290LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2VuZXJhdGVBZGRPcGFxdWVSb290LmNw
cAkocmV2aXNpb24gMjg2MDExKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdEdlbmVyYXRlQWRkT3BhcXVlUm9vdC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTY2LDcgKzY2LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJz
cGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NV
QlNQQUNFX1NIQVJBQkxFKEpTVGVzdEdlbmVyYXRlQWRkT3BhcXVlUm9vdFByb3RvdHlwZSwgQmFz
ZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJu
ICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVy
ZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAtMTg3LDkgKzE4Nyw5
IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdEdlbmVyYXRlQWRkT3BhcXUKICAgICAgICAgcmV0
dXJuIHNwYWNlOwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rl
c3RydWN0aWJsZU9iamVjdCwgSlNUZXN0R2VuZXJhdGVBZGRPcGFxdWVSb290PiB8fCAhSlNUZXN0
R2VuZXJhdGVBZGRPcGFxdWVSb290OjpuZWVkc0Rlc3RydWN0aW9uKTsKICAgICBpZiBjb25zdGV4
cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdEdl
bmVyYXRlQWRkT3BhcXVlUm9vdD4pCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEdl
bmVyYXRlQWRkT3BhcXVlUm9vdCA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFD
RV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5nZXQoKSwg
SlNUZXN0R2VuZXJhdGVBZGRPcGFxdWVSb290KTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VG
b3JUZXN0R2VuZXJhdGVBZGRPcGFxdWVSb290ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNP
X1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBl
KCksIEpTVGVzdEdlbmVyYXRlQWRkT3BhcXVlUm9vdCk7CiAgICAgZWxzZQotICAgICAgICBzcGFj
ZXMubV9zdWJzcGFjZUZvclRlc3RHZW5lcmF0ZUFkZE9wYXF1ZVJvb3QgPSBtYWtlVW5pcXVlPElz
b1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBl
LmdldCgpLCBKU1Rlc3RHZW5lcmF0ZUFkZE9wYXF1ZVJvb3QpOworICAgICAgICBzcGFjZXMubV9z
dWJzcGFjZUZvclRlc3RHZW5lcmF0ZUFkZE9wYXF1ZVJvb3QgPSBtYWtlVW5pcXVlPElzb1N1YnNw
YWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCksIEpT
VGVzdEdlbmVyYXRlQWRkT3BhcXVlUm9vdCk7CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9z
dWJzcGFjZUZvclRlc3RHZW5lcmF0ZUFkZE9wYXF1ZVJvb3QuZ2V0KCk7CiBJR05PUkVfV0FSTklO
R1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0
b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEdlbmVyYXRlSXNSZWFj
aGFibGUuY3BwCShyZXZpc2lvbiAyODYwMTEpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTY2LDcgKzY2LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNl
KiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRf
SVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGVQcm90b3R5cGUs
IEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJl
dHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1
Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKQEAgLTE5Nyw5ICsx
OTcsOSBAQCBKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhCiAgICAgICAg
IHJldHVybiBzcGFjZTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6
SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGU+IHx8ICFKU1Rl
c3RHZW5lcmF0ZUlzUmVhY2hhYmxlOjpuZWVkc0Rlc3RydWN0aW9uKTsKICAgICBpZiBjb25zdGV4
cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdEdl
bmVyYXRlSXNSZWFjaGFibGU+KQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RHZW5l
cmF0ZUlzUmVhY2hhYmxlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lO
SVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmdldCgpLCBKU1Rl
c3RHZW5lcmF0ZUlzUmVhY2hhYmxlKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0
R2VuZXJhdGVJc1JlYWNoYWJsZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFD
RV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBKU1Rl
c3RHZW5lcmF0ZUlzUmVhY2hhYmxlKTsKICAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNw
YWNlRm9yVGVzdEdlbmVyYXRlSXNSZWFjaGFibGUgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJ
U09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlLmdldCgpLCBKU1Rl
c3RHZW5lcmF0ZUlzUmVhY2hhYmxlKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0
R2VuZXJhdGVJc1JlYWNoYWJsZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFD
RV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0R2VuZXJhdGVJc1Jl
YWNoYWJsZSk7CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RHZW5l
cmF0ZUlzUmVhY2hhYmxlLmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJs
ZS1jb2RlIikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJ
bmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEdsb2Jh
bE9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdEdsb2JhbE9iamVjdC5jcHAJKHJldmlzaW9uIDI4NjAxMSkKKysrIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RHbG9iYWxPYmplY3Qu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xODE0LDcgKzE4MTQsNyBAQCBKU0M6Oklzb1N1YnNwYWNl
KiBKU1Rlc3RHbG9iYWxPYmplY3Q6OnN1CiAgICAgYXV0byYgc3BhY2VzID0gY2xpZW50RGF0YS5z
dWJzcGFjZXMoKTsKICAgICBpZiAoYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRl
c3RHbG9iYWxPYmplY3QuZ2V0KCkpCiAgICAgICAgIHJldHVybiBzcGFjZTsKLSAgICBzcGFjZXMu
bV9zdWJzcGFjZUZvclRlc3RHbG9iYWxPYmplY3QgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJ
U09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCBjbGllbnREYXRhLm1faGVhcENlbGxUeXBlRm9ySlNU
ZXN0R2xvYmFsT2JqZWN0LmdldCgpLCBKU1Rlc3RHbG9iYWxPYmplY3QpOworICAgIHNwYWNlcy5t
X3N1YnNwYWNlRm9yVGVzdEdsb2JhbE9iamVjdCA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElT
T19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICpjbGllbnREYXRhLm1faGVhcENlbGxUeXBlRm9ySlNU
ZXN0R2xvYmFsT2JqZWN0LCBKU1Rlc3RHbG9iYWxPYmplY3QpOwogICAgIGF1dG8qIHNwYWNlID0g
c3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0R2xvYmFsT2JqZWN0LmdldCgpOwogSUdOT1JFX1dBUk5J
TkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1
dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdEdsb2JhbE9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RHbG9iYWxPYmplY3QuaAkocmV2aXNp
b24gMjg2MDExKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdEdsb2JhbE9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC05OCw3ICs5OCw3IEBAIHB1Ymxp
YzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0p
CiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rl
c3RHbG9iYWxPYmplY3RQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWlu
T2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAg
IH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2
bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90
eXBlKQogICAgIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW5kZXhlZFNldHRlck5v
SWRlbnRpZmllci5jcHAJKHJldmlzaW9uIDI4NjAxMSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNjUsNyArNjUsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6
SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RB
VElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0SW5kZXhlZFNldHRlck5vSWRl
bnRpZmllclByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RT
cGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAg
IHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6
OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAg
ICAgewpAQCAtMjc2LDkgKzI3Niw5IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdEluZGV4ZWRT
ZXR0ZXJOb0kKICAgICAgICAgcmV0dXJuIHNwYWNlOwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjpp
c19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0SW5kZXhlZFNldHRl
ck5vSWRlbnRpZmllcj4gfHwgIUpTVGVzdEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXI6Om5lZWRz
RGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpK
U0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0SW5kZXhlZFNldHRlck5vSWRlbnRpZmllcj4pCi0g
ICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXIg
PSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5k
ZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVGVzdEluZGV4ZWRTZXR0ZXJO
b0lkZW50aWZpZXIpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RJbmRleGVkU2V0
dGVyTm9JZGVudGlmaWVyID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lO
SVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCksIEpTVGVzdElu
ZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXIpOwogICAgIGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vi
c3BhY2VGb3JUZXN0SW5kZXhlZFNldHRlck5vSWRlbnRpZmllciA9IG1ha2VVbmlxdWU8SXNvU3Vi
c3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUuZ2V0
KCksIEpTVGVzdEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXIpOworICAgICAgICBzcGFjZXMubV9z
dWJzcGFjZUZvclRlc3RJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyID0gbWFrZVVuaXF1ZTxJc29T
dWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgp
LCBKU1Rlc3RJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyKTsKICAgICBhdXRvKiBzcGFjZSA9IHNw
YWNlcy5tX3N1YnNwYWNlRm9yVGVzdEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXIuZ2V0KCk7CiBJ
R05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdT
X0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9u
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0SW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uLmNwcAkocmV2aXNpb24gMjg2
MDExKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdElu
ZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY1LDcg
KzY1LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZv
cihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNF
X1NIQVJBQkxFKEpTVGVzdEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvblByb3RvdHlwZSwg
QmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0
dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVj
dHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAtMjc2LDkgKzI3
Niw5IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdEluZGV4ZWRTZXR0ZXJUaHIKICAgICAgICAg
cmV0dXJuIHNwYWNlOwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpK
U0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0SW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9u
PiB8fCAhSlNUZXN0SW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uOjpuZWVkc0Rlc3RydWN0
aW9uKTsKICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVj
dGlibGVPYmplY3QsIEpTVGVzdEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbj4pCi0gICAg
ICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlv
biA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZt
LmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNUZXN0SW5kZXhlZFNldHRl
clRocm93aW5nRXhjZXB0aW9uKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0SW5k
ZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNP
X1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBl
KCksIEpTVGVzdEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbik7CiAgICAgZWxzZQotICAg
ICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRp
b24gPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2
bS5jZWxsSGVhcENlbGxUeXBlLmdldCgpLCBKU1Rlc3RJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNl
cHRpb24pOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RJbmRleGVkU2V0dGVyVGhy
b3dpbmdFeGNlcHRpb24gPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5J
VCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCksIEpTVGVzdEluZGV4ZWRTZXR0ZXJUaHJv
d2luZ0V4Y2VwdGlvbik7CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRl
c3RJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24uZ2V0KCk7CiBJR05PUkVfV0FSTklOR1Nf
QkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xv
Z2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0SW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW5kZXhlZFNl
dHRlcldpdGhJZGVudGlmaWVyLmNwcAkocmV2aXNpb24gMjg2MDExKQorKysgU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRp
Zmllci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTczLDcgKzczLDcgQEAgcHVibGljOgogICAgIHN0
YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAg
ICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdEluZGV4ZWRT
ZXR0ZXJXaXRoSWRlbnRpZmllclByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0u
cGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7
CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6
Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBw
cm90b3R5cGUpCiAgICAgewpAQCAtMzA4LDkgKzMwOCw5IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpT
VGVzdEluZGV4ZWRTZXR0ZXJXaXQKICAgICAgICAgcmV0dXJuIHNwYWNlOwogICAgIHN0YXRpY19h
c3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0
SW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyPiB8fCAhSlNUZXN0SW5kZXhlZFNldHRlcldpdGhJ
ZGVudGlmaWVyOjpuZWVkc0Rlc3RydWN0aW9uKTsKICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNf
YmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdEluZGV4ZWRTZXR0ZXJX
aXRoSWRlbnRpZmllcj4pCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEluZGV4ZWRT
ZXR0ZXJXaXRoSWRlbnRpZmllciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFD
RV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5nZXQoKSwg
SlNUZXN0SW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vi
c3BhY2VGb3JUZXN0SW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyID0gbWFrZVVuaXF1ZTxJc29T
dWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0
SGVhcENlbGxUeXBlKCksIEpTVGVzdEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllcik7CiAgICAg
ZWxzZQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RJbmRleGVkU2V0dGVyV2l0aElk
ZW50aWZpZXIgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5o
ZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlLmdldCgpLCBKU1Rlc3RJbmRleGVkU2V0dGVyV2l0aElk
ZW50aWZpZXIpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RJbmRleGVkU2V0dGVy
V2l0aElkZW50aWZpZXIgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5J
VCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCksIEpTVGVzdEluZGV4ZWRTZXR0ZXJXaXRo
SWRlbnRpZmllcik7CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RJ
bmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXIuZ2V0KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4o
InVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwt
Y29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0SW50ZXJmYWNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlLmNwcAkocmV2aXNpb24gMjg2MDExKQor
KysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFj
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE4MSw3ICsxODEsNyBAQCBwdWJsaWM6CiAgICAgc3Rh
dGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAg
ICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0SW50ZXJmYWNl
UHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOwor
ICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGlj
IEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBA
IC0xMTA0LDkgKzExMDQsOSBAQCBwdWJsaWM6CiAgICAgICAgICAgICByZXR1cm4gc3BhY2U7CiAg
ICAgICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJs
ZU9iamVjdCwgVGVzdEludGVyZmFjZUl0ZXJhdG9yPiB8fCAhVGVzdEludGVyZmFjZUl0ZXJhdG9y
OjpuZWVkc0Rlc3RydWN0aW9uKTsKICAgICAgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vf
b2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBUZXN0SW50ZXJmYWNlSXRlcmF0b3I+KQot
ICAgICAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0SW50ZXJmYWNlSXRlcmF0b3IgPSBt
YWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0
cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuZ2V0KCksIFRlc3RJbnRlcmZhY2VJdGVyYXRvcik7
CisgICAgICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RJbnRlcmZhY2VJdGVyYXRvciA9
IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRl
c3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBUZXN0SW50ZXJmYWNlSXRlcmF0b3IpOwog
ICAgICAgICBlbHNlCi0gICAgICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RJbnRlcmZh
Y2VJdGVyYXRvciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZt
LmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIFRlc3RJbnRlcmZhY2VJdGVyYXRvcik7
CisgICAgICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RJbnRlcmZhY2VJdGVyYXRvciA9
IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNl
bGxIZWFwQ2VsbFR5cGUoKSwgVGVzdEludGVyZmFjZUl0ZXJhdG9yKTsKICAgICAgICAgYXV0byog
c3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RJbnRlcmZhY2VJdGVyYXRvci5nZXQoKTsK
IElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklO
R1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKQEAgLTExOTYsOSArMTE5Niw5IEBAIEpT
Qzo6SXNvU3Vic3BhY2UqIEpTVGVzdEludGVyZmFjZTo6c3Vic3AKICAgICAgICAgcmV0dXJuIHNw
YWNlOwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0
aWJsZU9iamVjdCwgSlNUZXN0SW50ZXJmYWNlPiB8fCAhSlNUZXN0SW50ZXJmYWNlOjpuZWVkc0Rl
c3RydWN0aW9uKTsKICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNE
ZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdEludGVyZmFjZT4pCi0gICAgICAgIHNwYWNlcy5tX3N1
YnNwYWNlRm9yVGVzdEludGVyZmFjZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJT
UEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5nZXQo
KSwgSlNUZXN0SW50ZXJmYWNlKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0SW50
ZXJmYWNlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVh
cCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCksIEpTVGVzdEludGVyZmFjZSk7
CiAgICAgZWxzZQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RJbnRlcmZhY2UgPSBt
YWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxs
SGVhcENlbGxUeXBlLmdldCgpLCBKU1Rlc3RJbnRlcmZhY2UpOworICAgICAgICBzcGFjZXMubV9z
dWJzcGFjZUZvclRlc3RJbnRlcmZhY2UgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VC
U1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCksIEpTVGVzdEludGVyZmFj
ZSk7CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RJbnRlcmZhY2Uu
Z2V0KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JF
X1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlTGVhZGluZ1VuZGVy
c2NvcmUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2VMZWFkaW5nVW5kZXJzY29yZS5jcHAJKHJldmlzaW9uIDI4
NjAxMSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJ
bnRlcmZhY2VMZWFkaW5nVW5kZXJzY29yZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY2LDcgKzY2
LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihK
U0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NI
QVJBQkxFKEpTVGVzdEludGVyZmFjZUxlYWRpbmdVbmRlcnNjb3JlUHJvdG90eXBlLCBCYXNlKTsK
LSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZt
LnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBj
cmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC0xODcsOSArMTg3LDkgQEAg
SlNDOjpJc29TdWJzcGFjZSogSlNUZXN0SW50ZXJmYWNlTGVhZGluZwogICAgICAgICByZXR1cm4g
c3BhY2U7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1
Y3RpYmxlT2JqZWN0LCBKU1Rlc3RJbnRlcmZhY2VMZWFkaW5nVW5kZXJzY29yZT4gfHwgIUpTVGVz
dEludGVyZmFjZUxlYWRpbmdVbmRlcnNjb3JlOjpuZWVkc0Rlc3RydWN0aW9uKTsKICAgICBpZiBj
b25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpT
VGVzdEludGVyZmFjZUxlYWRpbmdVbmRlcnNjb3JlPikKLSAgICAgICAgc3BhY2VzLm1fc3Vic3Bh
Y2VGb3JUZXN0SW50ZXJmYWNlTGVhZGluZ1VuZGVyc2NvcmUgPSBtYWtlVW5pcXVlPElzb1N1YnNw
YWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFw
Q2VsbFR5cGUuZ2V0KCksIEpTVGVzdEludGVyZmFjZUxlYWRpbmdVbmRlcnNjb3JlKTsKKyAgICAg
ICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0SW50ZXJmYWNlTGVhZGluZ1VuZGVyc2NvcmUgPSBt
YWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0
cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0SW50ZXJmYWNlTGVhZGluZ1VuZGVy
c2NvcmUpOwogICAgIGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0SW50ZXJm
YWNlTGVhZGluZ1VuZGVyc2NvcmUgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BB
Q0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlLmdldCgpLCBKU1Rlc3RJbnRlcmZh
Y2VMZWFkaW5nVW5kZXJzY29yZSk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdElu
dGVyZmFjZUxlYWRpbmdVbmRlcnNjb3JlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NV
QlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RJbnRlcmZh
Y2VMZWFkaW5nVW5kZXJzY29yZSk7CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFj
ZUZvclRlc3RJbnRlcmZhY2VMZWFkaW5nVW5kZXJzY29yZS5nZXQoKTsKIElHTk9SRV9XQVJOSU5H
U19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRv
bG9naWNhbC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RJdGVyYWJsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEl0ZXJhYmxlLmNwcAkocmV2aXNpb24gMjg2
MDExKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEl0
ZXJhYmxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzUsNyArNzUsNyBAQCBwdWJsaWM6CiAgICAg
c3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsK
ICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0SXRlcmFi
bGVQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7
CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KICAgICBzdGF0
aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsK
QEAgLTIwMSw5ICsyMDEsOSBAQCBwdWJsaWM6CiAgICAgICAgICAgICByZXR1cm4gc3BhY2U7CiAg
ICAgICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJs
ZU9iamVjdCwgVGVzdEl0ZXJhYmxlSXRlcmF0b3I+IHx8ICFUZXN0SXRlcmFibGVJdGVyYXRvcjo6
bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29m
X3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgVGVzdEl0ZXJhYmxlSXRlcmF0b3I+KQotICAg
ICAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0SXRlcmFibGVJdGVyYXRvciA9IG1ha2VV
bmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0
aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5nZXQoKSwgVGVzdEl0ZXJhYmxlSXRlcmF0b3IpOworICAg
ICAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0SXRlcmFibGVJdGVyYXRvciA9IG1ha2VV
bmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0
aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBUZXN0SXRlcmFibGVJdGVyYXRvcik7CiAgICAgICAg
IGVsc2UKLSAgICAgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEl0ZXJhYmxlSXRlcmF0
b3IgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2
bS5jZWxsSGVhcENlbGxUeXBlLmdldCgpLCBUZXN0SXRlcmFibGVJdGVyYXRvcik7CisgICAgICAg
ICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RJdGVyYWJsZUl0ZXJhdG9yID0gbWFrZVVuaXF1
ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxs
VHlwZSgpLCBUZXN0SXRlcmFibGVJdGVyYXRvcik7CiAgICAgICAgIGF1dG8qIHNwYWNlID0gc3Bh
Y2VzLm1fc3Vic3BhY2VGb3JUZXN0SXRlcmFibGVJdGVyYXRvci5nZXQoKTsKIElHTk9SRV9XQVJO
SU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRh
dXRvbG9naWNhbC1jb21wYXJlIikKQEAgLTI5Myw5ICsyOTMsOSBAQCBKU0M6Oklzb1N1YnNwYWNl
KiBKU1Rlc3RJdGVyYWJsZTo6c3Vic3BhCiAgICAgICAgIHJldHVybiBzcGFjZTsKICAgICBzdGF0
aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpT
VGVzdEl0ZXJhYmxlPiB8fCAhSlNUZXN0SXRlcmFibGU6Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAg
IGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVj
dCwgSlNUZXN0SXRlcmFibGU+KQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RJdGVy
YWJsZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAs
IHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNUZXN0SXRlcmFibGUp
OworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RJdGVyYWJsZSA9IG1ha2VVbmlxdWU8
SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9i
amVjdEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RJdGVyYWJsZSk7CiAgICAgZWxzZQotICAgICAgICBz
cGFjZXMubV9zdWJzcGFjZUZvclRlc3RJdGVyYWJsZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+
IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEpT
VGVzdEl0ZXJhYmxlKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0SXRlcmFibGUg
PSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5j
ZWxsSGVhcENlbGxUeXBlKCksIEpTVGVzdEl0ZXJhYmxlKTsKICAgICBhdXRvKiBzcGFjZSA9IHNw
YWNlcy5tX3N1YnNwYWNlRm9yVGVzdEl0ZXJhYmxlLmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JF
R0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dp
Y2FsLWNvbXBhcmUiKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SlNCdWlsdGluQ29uc3RydWN0
b3IuY3BwCShyZXZpc2lvbiAyODYwMTEpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3IuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC02OSw3ICs2OSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSog
c3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lT
T19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvclByb3RvdHlwZSwg
QmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0
dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVj
dHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAtMjMwLDkgKzIz
MCw5IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdEpTQnVpbHRpbkNvbnN0cnUKICAgICAgICAg
cmV0dXJuIHNwYWNlOwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpK
U0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3I+IHx8ICFKU1Rl
c3RKU0J1aWx0aW5Db25zdHJ1Y3Rvcjo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3Rl
eHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RK
U0J1aWx0aW5Db25zdHJ1Y3Rvcj4pCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEpT
QnVpbHRpbkNvbnN0cnVjdG9yID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNF
X0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmdldCgpLCBK
U1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rvcik7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9y
VGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NV
QlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCks
IEpTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yKTsKICAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5t
X3N1YnNwYWNlRm9yVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yID0gbWFrZVVuaXF1ZTxJc29TdWJz
cGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZS5nZXQo
KSwgSlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3IpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFj
ZUZvclRlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElT
T19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0SlNC
dWlsdGluQ29uc3RydWN0b3IpOwogICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VG
b3JUZXN0SlNCdWlsdGluQ29uc3RydWN0b3IuZ2V0KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4o
InVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwt
Y29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9u
LmNwcAkocmV2aXNpb24gMjg2MDExKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlvbi5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTY3LDcgKzY3LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBz
dWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNP
X1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlvblByb3RvdHlwZSwg
QmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0
dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVj
dHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAtMjMwLDkgKzIz
MCw5IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdExlZ2FjeUZhY3RvcnlGdW4KICAgICAgICAg
cmV0dXJuIHNwYWNlOwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpK
U0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uPiB8fCAhSlNU
ZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uOjpuZWVkc0Rlc3RydWN0aW9uKTsKICAgICBpZiBjb25z
dGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVz
dExlZ2FjeUZhY3RvcnlGdW5jdGlvbj4pCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVz
dExlZ2FjeUZhY3RvcnlGdW5jdGlvbiA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJT
UEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5nZXQo
KSwgSlNUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3Bh
Y2VGb3JUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4g
SVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxU
eXBlKCksIEpTVGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlvbik7CiAgICAgZWxzZQotICAgICAgICBz
cGFjZXMubV9zdWJzcGFjZUZvclRlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb24gPSBtYWtlVW5pcXVl
PElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxU
eXBlLmdldCgpLCBKU1Rlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb24pOworICAgICAgICBzcGFjZXMu
bV9zdWJzcGFjZUZvclRlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb24gPSBtYWtlVW5pcXVlPElzb1N1
YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCks
IEpTVGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlvbik7CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMu
bV9zdWJzcGFjZUZvclRlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb24uZ2V0KCk7CiBJR05PUkVfV0FS
TklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0
YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0TGVnYWN5Tm9JbnRlcmZhY2VPYmplY3QuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RMZWdhY3lO
b0ludGVyZmFjZU9iamVjdC5jcHAJKHJldmlzaW9uIDI4NjAxMSkKKysrIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RMZWdhY3lOb0ludGVyZmFjZU9iamVjdC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTg1LDcgKzg1LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBK
U0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAg
IFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdExlZ2FjeU5vSW50ZXJm
YWNlT2JqZWN0UHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVj
dFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAg
ICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpT
Qzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkK
ICAgICB7CkBAIC0zMzUsOSArMzM1LDkgQEAgSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0TGVnYWN5
Tm9JbnRlcmZhYwogICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6
OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RMZWdhY3lOb0lu
dGVyZmFjZU9iamVjdD4gfHwgIUpTVGVzdExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0OjpuZWVkc0Rl
c3RydWN0aW9uKTsKICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNE
ZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0PikKLSAgICAg
ICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TGVnYWN5Tm9JbnRlcmZhY2VPYmplY3QgPSBtYWtl
VW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVj
dGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVGVzdExlZ2FjeU5vSW50ZXJmYWNlT2Jq
ZWN0KTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TGVnYWN5Tm9JbnRlcmZhY2VP
YmplY3QgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFw
LCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0TGVnYWN5Tm9JbnRl
cmZhY2VPYmplY3QpOwogICAgIGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0
TGVnYWN5Tm9JbnRlcmZhY2VPYmplY3QgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VC
U1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlLmdldCgpLCBKU1Rlc3RMZWdh
Y3lOb0ludGVyZmFjZU9iamVjdCk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdExl
Z2FjeU5vSW50ZXJmYWNlT2JqZWN0ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQ
QUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RMZWdhY3lOb0lu
dGVyZmFjZU9iamVjdCk7CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRl
c3RMZWdhY3lOb0ludGVyZmFjZU9iamVjdC5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigi
dW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1j
b21wYXJlIikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdElu
cy5jcHAJKHJldmlzaW9uIDI4NjAxMSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNzMsNyArNzMsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2Uq
IHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9J
U09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdEluc1Byb3RvdHlw
ZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAg
cmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0
cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAtMjQ5LDkg
KzI0OSw5IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdExlZ2FjeU92ZXJyaWRlQnUKICAgICAg
ICAgcmV0dXJuIHNwYWNlOwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlND
OjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdElucz4gfHwg
IUpTVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM6Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlm
IGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwg
SlNUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdElucz4pCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNl
Rm9yVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJ
U09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5
cGUuZ2V0KCksIEpTVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMpOworICAgICAgICBzcGFjZXMu
bV9zdWJzcGFjZUZvclRlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zID0gbWFrZVVuaXF1ZTxJc29T
dWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0
SGVhcENlbGxUeXBlKCksIEpTVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMpOwogICAgIGVsc2UK
LSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdElucyA9
IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNl
bGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMpOworICAg
ICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zID0gbWFr
ZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhl
YXBDZWxsVHlwZSgpLCBKU1Rlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zKTsKICAgICBhdXRvKiBz
cGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMuZ2V0
KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dB
Uk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TWFwTGlrZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE1hcExpa2Uu
Y3BwCShyZXZpc2lvbiAyODYwMTEpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0TWFwTGlrZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgyLDcgKzgyLDcg
QEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6
OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJB
QkxFKEpTVGVzdE1hcExpa2VQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBs
YWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwog
ICAgIH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZN
JiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJv
dG90eXBlKQogICAgIHsKQEAgLTM2Niw5ICszNjYsOSBAQCBKU0M6Oklzb1N1YnNwYWNlKiBKU1Rl
c3RNYXBMaWtlOjpzdWJzcGFjCiAgICAgICAgIHJldHVybiBzcGFjZTsKICAgICBzdGF0aWNfYXNz
ZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdE1h
cExpa2U+IHx8ICFKU1Rlc3RNYXBMaWtlOjpuZWVkc0Rlc3RydWN0aW9uKTsKICAgICBpZiBjb25z
dGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVz
dE1hcExpa2U+KQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RNYXBMaWtlID0gbWFr
ZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1
Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmdldCgpLCBKU1Rlc3RNYXBMaWtlKTsKKyAgICAgICAg
c3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TWFwTGlrZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+
IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxs
VHlwZSgpLCBKU1Rlc3RNYXBMaWtlKTsKICAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNw
YWNlRm9yVGVzdE1hcExpa2UgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0Vf
SU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlLmdldCgpLCBKU1Rlc3RNYXBMaWtlKTsK
KyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TWFwTGlrZSA9IG1ha2VVbmlxdWU8SXNv
U3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUo
KSwgSlNUZXN0TWFwTGlrZSk7CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZv
clRlc3RNYXBMaWtlLmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1j
b2RlIikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRl
eDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE1hcExpa2VX
aXRoT3ZlcnJpZGRlbk9wZXJhdGlvbnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RNYXBMaWtlV2l0aE92ZXJyaWRkZW5PcGVy
YXRpb25zLmNwcAkocmV2aXNpb24gMjg2MDExKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdE1hcExpa2VXaXRoT3ZlcnJpZGRlbk9wZXJhdGlvbnMuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC04Niw3ICs4Niw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlND
OjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBT
VEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3RNYXBMaWtlV2l0aE92ZXJy
aWRkZW5PcGVyYXRpb25zUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFp
bk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAg
ICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYg
dm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3Rv
dHlwZSkKICAgICB7CkBAIC0zODAsOSArMzgwLDkgQEAgSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0
TWFwTGlrZVdpdGhPdmVycgogICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fzc2Vy
dChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RNYXBM
aWtlV2l0aE92ZXJyaWRkZW5PcGVyYXRpb25zPiB8fCAhSlNUZXN0TWFwTGlrZVdpdGhPdmVycmlk
ZGVuT3BlcmF0aW9uczo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3RleHByIChzdGQ6
OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RNYXBMaWtlV2l0
aE92ZXJyaWRkZW5PcGVyYXRpb25zPikKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0
TWFwTGlrZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9ucyA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+
IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxs
VHlwZS5nZXQoKSwgSlNUZXN0TWFwTGlrZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9ucyk7CisgICAg
ICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE1hcExpa2VXaXRoT3ZlcnJpZGRlbk9wZXJhdGlv
bnMgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2
bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0TWFwTGlrZVdpdGhPdmVy
cmlkZGVuT3BlcmF0aW9ucyk7CiAgICAgZWxzZQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZv
clRlc3RNYXBMaWtlV2l0aE92ZXJyaWRkZW5PcGVyYXRpb25zID0gbWFrZVVuaXF1ZTxJc29TdWJz
cGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZS5nZXQo
KSwgSlNUZXN0TWFwTGlrZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9ucyk7CisgICAgICAgIHNwYWNl
cy5tX3N1YnNwYWNlRm9yVGVzdE1hcExpa2VXaXRoT3ZlcnJpZGRlbk9wZXJhdGlvbnMgPSBtYWtl
VW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVh
cENlbGxUeXBlKCksIEpTVGVzdE1hcExpa2VXaXRoT3ZlcnJpZGRlbk9wZXJhdGlvbnMpOwogICAg
IGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TWFwTGlrZVdpdGhPdmVycmlk
ZGVuT3BlcmF0aW9ucy5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUt
Y29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEFu
ZEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJO
b0lkZW50aWZpZXIuY3BwCShyZXZpc2lvbiAyODYwMTEpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyTm9JZGVudGlm
aWVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjYsNyArNjYsNyBAQCBwdWJsaWM6CiAgICAgc3Rh
dGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAg
ICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0TmFtZWRBbmRJ
bmRleGVkU2V0dGVyTm9JZGVudGlmaWVyUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJu
ICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3Bh
Y2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUo
SlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1Zh
bHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC0zNDQsOSArMzQ0LDkgQEAgSlNDOjpJc29TdWJzcGFj
ZSogSlNUZXN0TmFtZWRBbmRJbmRleGVkUwogICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAgc3Rh
dGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBK
U1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXI+IHx8ICFKU1Rlc3ROYW1lZEFu
ZEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXI6Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNv
bnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNU
ZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyPikKLSAgICAgICAgc3BhY2VzLm1f
c3Vic3BhY2VGb3JUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyID0gbWFrZVVu
aXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3Rp
YmxlT2JqZWN0SGVhcENlbGxUeXBlLmdldCgpLCBKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJO
b0lkZW50aWZpZXIpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZEFuZElu
ZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXIgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VC
U1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwg
SlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyKTsKICAgICBlbHNlCi0gICAg
ICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlck5vSWRlbnRp
ZmllciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAs
IHZtLmNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlck5v
SWRlbnRpZmllcik7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkQW5kSW5k
ZXhlZFNldHRlck5vSWRlbnRpZmllciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJT
UEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0TmFtZWRBbmRJ
bmRleGVkU2V0dGVyTm9JZGVudGlmaWVyKTsKICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1
YnNwYWNlRm9yVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlck5vSWRlbnRpZmllci5nZXQoKTsKIElH
Tk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1Nf
QkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4
Y2VwdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uLmNw
cAkocmV2aXNpb24gMjg2MDExKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNjYsNyArNjYsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6
SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RB
VElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0
dGVyVGhyb3dpbmdFeGNlcHRpb25Qcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZt
LnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgp
OwogICAgIH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6
OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUg
cHJvdG90eXBlKQogICAgIHsKQEAgLTM0NCw5ICszNDQsOSBAQCBKU0M6Oklzb1N1YnNwYWNlKiBK
U1Rlc3ROYW1lZEFuZEluZGV4ZWRTCiAgICAgICAgIHJldHVybiBzcGFjZTsKICAgICBzdGF0aWNf
YXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVz
dE5hbWVkQW5kSW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uPiB8fCAhSlNUZXN0TmFtZWRB
bmRJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb246Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAg
IGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVj
dCwgSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24+KQotICAgICAg
ICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4
Y2VwdGlvbiA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhl
YXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNUZXN0TmFtZWRB
bmRJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24pOworICAgICAgICBzcGFjZXMubV9zdWJz
cGFjZUZvclRlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbiA9IG1ha2VV
bmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0
aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJUaHJv
d2luZ0V4Y2VwdGlvbik7CiAgICAgZWxzZQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRl
c3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbiA9IG1ha2VVbmlxdWU8SXNv
U3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUu
Z2V0KCksIEpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uKTsKKyAg
ICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyVGhyb3dp
bmdFeGNlcHRpb24gPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2
bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCksIEpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRl
clRocm93aW5nRXhjZXB0aW9uKTsKICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNl
Rm9yVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uLmdldCgpOwogSUdO
T1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKIElHTk9SRV9XQVJOSU5HU19C
RUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlcldpdGhJZGVudGlm
aWVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXIuY3BwCShyZXZp
c2lvbiAyODYwMTEpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXIuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC03NSw3ICs3NSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFj
ZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJU
X0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJXaXRoSWRl
bnRpZmllclByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RT
cGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAg
IHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6
OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAg
ICAgewpAQCAtNDAxLDkgKzQwMSw5IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdE5hbWVkQW5k
SW5kZXhlZFMKICAgICAgICAgcmV0dXJuIHNwYWNlOwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjpp
c19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0TmFtZWRBbmRJbmRl
eGVkU2V0dGVyV2l0aElkZW50aWZpZXI+IHx8ICFKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJX
aXRoSWRlbnRpZmllcjo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3RleHByIChzdGQ6
OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3ROYW1lZEFuZElu
ZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllcj4pCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9y
VGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyID0gbWFrZVVuaXF1ZTxJc29T
dWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0
SGVhcENlbGxUeXBlLmdldCgpLCBKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRp
Zmllcik7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkQW5kSW5kZXhlZFNl
dHRlcldpdGhJZGVudGlmaWVyID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNF
X0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCksIEpTVGVz
dE5hbWVkQW5kSW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyKTsKICAgICBlbHNlCi0gICAgICAg
IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlcldpdGhJZGVudGlm
aWVyID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwg
dm0uY2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0
aElkZW50aWZpZXIpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZEFuZElu
ZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19T
VUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0TmFtZWRB
bmRJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXIpOwogICAgIGF1dG8qIHNwYWNlID0gc3BhY2Vz
Lm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXIuZ2V0
KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dB
Uk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyTm9JZGVudGlmaWVy
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0TmFtZWREZWxldGVyTm9JZGVudGlmaWVyLmNwcAkocmV2aXNpb24gMjg2MDExKQor
KysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVs
ZXRlck5vSWRlbnRpZmllci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY1LDcgKzY1LDcgQEAgcHVi
bGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2
bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpT
VGVzdE5hbWVkRGVsZXRlck5vSWRlbnRpZmllclByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJl
dHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVj
dFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0
dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6
SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAtMjQ2LDkgKzI0Niw5IEBAIEpTQzo6SXNvU3Vi
c3BhY2UqIEpTVGVzdE5hbWVkRGVsZXRlck5vSWQKICAgICAgICAgcmV0dXJuIHNwYWNlOwogICAg
IHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVj
dCwgSlNUZXN0TmFtZWREZWxldGVyTm9JZGVudGlmaWVyPiB8fCAhSlNUZXN0TmFtZWREZWxldGVy
Tm9JZGVudGlmaWVyOjpuZWVkc0Rlc3RydWN0aW9uKTsKICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6
aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdE5hbWVkRGVsZXRl
ck5vSWRlbnRpZmllcj4pCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkRGVs
ZXRlck5vSWRlbnRpZmllciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9J
TklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNU
ZXN0TmFtZWREZWxldGVyTm9JZGVudGlmaWVyKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VG
b3JUZXN0TmFtZWREZWxldGVyTm9JZGVudGlmaWVyID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4g
SVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxU
eXBlKCksIEpTVGVzdE5hbWVkRGVsZXRlck5vSWRlbnRpZmllcik7CiAgICAgZWxzZQotICAgICAg
ICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZERlbGV0ZXJOb0lkZW50aWZpZXIgPSBtYWtl
VW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVh
cENlbGxUeXBlLmdldCgpLCBKU1Rlc3ROYW1lZERlbGV0ZXJOb0lkZW50aWZpZXIpOworICAgICAg
ICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZERlbGV0ZXJOb0lkZW50aWZpZXIgPSBtYWtl
VW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVh
cENlbGxUeXBlKCksIEpTVGVzdE5hbWVkRGVsZXRlck5vSWRlbnRpZmllcik7CiAgICAgYXV0byog
c3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZERlbGV0ZXJOb0lkZW50aWZpZXIu
Z2V0KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JF
X1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyVGhyb3dpbmdF
eGNlcHRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5jcHAJKHJldmlz
aW9uIDI4NjAxMSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3ROYW1lZERlbGV0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTY1LDcgKzY1LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJz
cGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NV
QlNQQUNFX1NIQVJBQkxFKEpTVGVzdE5hbWVkRGVsZXRlclRocm93aW5nRXhjZXB0aW9uUHJvdG90
eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAg
ICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6
U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC0yNDYs
OSArMjQ2LDkgQEAgSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0TmFtZWREZWxldGVyVGhybwogICAg
ICAgICByZXR1cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxK
U0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3ROYW1lZERlbGV0ZXJUaHJvd2luZ0V4Y2Vw
dGlvbj4gfHwgIUpTVGVzdE5hbWVkRGVsZXRlclRocm93aW5nRXhjZXB0aW9uOjpuZWVkc0Rlc3Ry
dWN0aW9uKTsKICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0
cnVjdGlibGVPYmplY3QsIEpTVGVzdE5hbWVkRGVsZXRlclRocm93aW5nRXhjZXB0aW9uPikKLSAg
ICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWREZWxldGVyVGhyb3dpbmdFeGNlcHRp
b24gPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2
bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVGVzdE5hbWVkRGVsZXRl
clRocm93aW5nRXhjZXB0aW9uKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFt
ZWREZWxldGVyVGhyb3dpbmdFeGNlcHRpb24gPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09f
U1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUo
KSwgSlNUZXN0TmFtZWREZWxldGVyVGhyb3dpbmdFeGNlcHRpb24pOwogICAgIGVsc2UKLSAgICAg
ICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWREZWxldGVyVGhyb3dpbmdFeGNlcHRpb24g
PSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5j
ZWxsSGVhcENlbGxUeXBlLmdldCgpLCBKU1Rlc3ROYW1lZERlbGV0ZXJUaHJvd2luZ0V4Y2VwdGlv
bik7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkRGVsZXRlclRocm93aW5n
RXhjZXB0aW9uID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0u
aGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3ROYW1lZERlbGV0ZXJUaHJvd2luZ0V4
Y2VwdGlvbik7CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1l
ZERlbGV0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigi
dW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1j
b21wYXJlIikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlcldpdGhJ
ZGVudGlmaWVyLmNwcAkocmV2aXNpb24gMjg2MDExKQorKysgU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlcldpdGhJZGVudGlmaWVyLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNzIsNyArNzIsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6
SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RB
VElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0TmFtZWREZWxldGVyV2l0aElk
ZW50aWZpZXJQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0
U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KICAg
ICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlND
OjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQog
ICAgIHsKQEAgLTI3MCw5ICsyNzAsOSBAQCBKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3ROYW1lZERl
bGV0ZXJXaXRoCiAgICAgICAgIHJldHVybiBzcGFjZTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6
aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdE5hbWVkRGVsZXRl
cldpdGhJZGVudGlmaWVyPiB8fCAhSlNUZXN0TmFtZWREZWxldGVyV2l0aElkZW50aWZpZXI6Om5l
ZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlND
OjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0TmFtZWREZWxldGVyV2l0aElkZW50aWZpZXI+
KQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRp
ZmllciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAs
IHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNUZXN0TmFtZWREZWxl
dGVyV2l0aElkZW50aWZpZXIpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1l
ZERlbGV0ZXJXaXRoSWRlbnRpZmllciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJT
UEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBK
U1Rlc3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllcik7CiAgICAgZWxzZQotICAgICAgICBzcGFj
ZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllciA9IG1ha2VVbmlx
dWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2Vs
bFR5cGUuZ2V0KCksIEpTVGVzdE5hbWVkRGVsZXRlcldpdGhJZGVudGlmaWVyKTsKKyAgICAgICAg
c3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWREZWxldGVyV2l0aElkZW50aWZpZXIgPSBtYWtl
VW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVh
cENlbGxUeXBlKCksIEpTVGVzdE5hbWVkRGVsZXRlcldpdGhJZGVudGlmaWVyKTsKICAgICBhdXRv
KiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkRGVsZXRlcldpdGhJZGVudGlm
aWVyLmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKIElH
Tk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRleDogU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlcldpdGhJ
bmRleGVkR2V0dGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyV2l0aEluZGV4ZWRHZXR0ZXIuY3BwCShy
ZXZpc2lvbiAyODYwMTEpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0TmFtZWREZWxldGVyV2l0aEluZGV4ZWRHZXR0ZXIuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC02Niw3ICs2Niw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSog
c3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lT
T19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSW5kZXhlZEdldHRlclBy
b3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAg
ICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBK
U0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAt
MjYyLDkgKzI2Miw5IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdE5hbWVkRGVsZXRlcldpdGgK
ICAgICAgICAgcmV0dXJuIHNwYWNlOwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29m
X3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0TmFtZWREZWxldGVyV2l0aEluZGV4
ZWRHZXR0ZXI+IHx8ICFKU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSW5kZXhlZEdldHRlcjo6bmVlZHNE
ZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpT
RGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSW5kZXhlZEdldHRlcj4p
Ci0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkRGVsZXRlcldpdGhJbmRleGVk
R2V0dGVyID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVh
cCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmdldCgpLCBKU1Rlc3ROYW1lZERl
bGV0ZXJXaXRoSW5kZXhlZEdldHRlcik7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVz
dE5hbWVkRGVsZXRlcldpdGhJbmRleGVkR2V0dGVyID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4g
SVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxU
eXBlKCksIEpTVGVzdE5hbWVkRGVsZXRlcldpdGhJbmRleGVkR2V0dGVyKTsKICAgICBlbHNlCi0g
ICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkRGVsZXRlcldpdGhJbmRleGVkR2V0
dGVyID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwg
dm0uY2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNUZXN0TmFtZWREZWxldGVyV2l0aEluZGV4ZWRH
ZXR0ZXIpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZERlbGV0ZXJXaXRo
SW5kZXhlZEdldHRlciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklU
KHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0TmFtZWREZWxldGVyV2l0aElu
ZGV4ZWRHZXR0ZXIpOwogICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0
TmFtZWREZWxldGVyV2l0aEluZGV4ZWRHZXR0ZXIuZ2V0KCk7CiBJR05PUkVfV0FSTklOR1NfQkVH
SU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2lj
YWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0TmFtZWRHZXR0ZXJDYWxsV2l0aC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkR2V0dGVyQ2FsbFdpdGgu
Y3BwCShyZXZpc2lvbiAyODYwMTEpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0TmFtZWRHZXR0ZXJDYWxsV2l0aC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTY1LDcgKzY1LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJz
cGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NV
QlNQQUNFX1NIQVJBQkxFKEpTVGVzdE5hbWVkR2V0dGVyQ2FsbFdpdGhQcm90b3R5cGUsIEJhc2Up
OwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAm
dm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUq
IGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKQEAgLTIyMCw5ICsyMjAsOSBA
QCBKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3ROYW1lZEdldHRlckNhbGxXCiAgICAgICAgIHJldHVy
biBzcGFjZTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0
cnVjdGlibGVPYmplY3QsIEpTVGVzdE5hbWVkR2V0dGVyQ2FsbFdpdGg+IHx8ICFKU1Rlc3ROYW1l
ZEdldHRlckNhbGxXaXRoOjpuZWVkc0Rlc3RydWN0aW9uKTsKICAgICBpZiBjb25zdGV4cHIgKHN0
ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdE5hbWVkR2V0
dGVyQ2FsbFdpdGg+KQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZEdldHRl
ckNhbGxXaXRoID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0u
aGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmdldCgpLCBKU1Rlc3ROYW1l
ZEdldHRlckNhbGxXaXRoKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRH
ZXR0ZXJDYWxsV2l0aCA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklU
KHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3ROYW1l
ZEdldHRlckNhbGxXaXRoKTsKICAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9y
VGVzdE5hbWVkR2V0dGVyQ2FsbFdpdGggPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VC
U1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlLmdldCgpLCBKU1Rlc3ROYW1l
ZEdldHRlckNhbGxXaXRoKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRH
ZXR0ZXJDYWxsV2l0aCA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklU
KHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0TmFtZWRHZXR0ZXJDYWxsV2l0
aCk7CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZEdldHRl
ckNhbGxXaXRoLmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2Rl
IikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRleDog
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkR2V0dGVy
Tm9JZGVudGlmaWVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRHZXR0ZXJOb0lkZW50aWZpZXIuY3BwCShyZXZpc2lv
biAyODYwMTEpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0TmFtZWRHZXR0ZXJOb0lkZW50aWZpZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NSw3ICs2
NSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3Io
SlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9T
SEFSQUJMRShKU1Rlc3ROYW1lZEdldHRlck5vSWRlbnRpZmllclByb3RvdHlwZSwgQmFzZSk7Ci0g
ICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5w
bGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3Jl
YXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAtMjIwLDkgKzIyMCw5IEBAIEpT
Qzo6SXNvU3Vic3BhY2UqIEpTVGVzdE5hbWVkR2V0dGVyTm9JZGUKICAgICAgICAgcmV0dXJuIHNw
YWNlOwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0
aWJsZU9iamVjdCwgSlNUZXN0TmFtZWRHZXR0ZXJOb0lkZW50aWZpZXI+IHx8ICFKU1Rlc3ROYW1l
ZEdldHRlck5vSWRlbnRpZmllcjo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3RleHBy
IChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3ROYW1l
ZEdldHRlck5vSWRlbnRpZmllcj4pCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5h
bWVkR2V0dGVyTm9JZGVudGlmaWVyID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQ
QUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmdldCgp
LCBKU1Rlc3ROYW1lZEdldHRlck5vSWRlbnRpZmllcik7CisgICAgICAgIHNwYWNlcy5tX3N1YnNw
YWNlRm9yVGVzdE5hbWVkR2V0dGVyTm9JZGVudGlmaWVyID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFj
ZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENl
bGxUeXBlKCksIEpTVGVzdE5hbWVkR2V0dGVyTm9JZGVudGlmaWVyKTsKICAgICBlbHNlCi0gICAg
ICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkR2V0dGVyTm9JZGVudGlmaWVyID0gbWFr
ZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhl
YXBDZWxsVHlwZS5nZXQoKSwgSlNUZXN0TmFtZWRHZXR0ZXJOb0lkZW50aWZpZXIpOworICAgICAg
ICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZEdldHRlck5vSWRlbnRpZmllciA9IG1ha2VV
bmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFw
Q2VsbFR5cGUoKSwgSlNUZXN0TmFtZWRHZXR0ZXJOb0lkZW50aWZpZXIpOwogICAgIGF1dG8qIHNw
YWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRHZXR0ZXJOb0lkZW50aWZpZXIuZ2V0
KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dB
Uk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRHZXR0ZXJXaXRoSWRlbnRpZmll
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdE5hbWVkR2V0dGVyV2l0aElkZW50aWZpZXIuY3BwCShyZXZpc2lvbiAyODYwMTEp
CisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRH
ZXR0ZXJXaXRoSWRlbnRpZmllci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcwLDcgKzcwLDcgQEAg
cHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZN
JiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxF
KEpTVGVzdE5hbWVkR2V0dGVyV2l0aElkZW50aWZpZXJQcm90b3R5cGUsIEJhc2UpOwotICAgICAg
ICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5P
YmplY3RTcGFjZSgpOwogICAgIH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0
cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBK
U0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKQEAgLTI0Niw5ICsyNDYsOSBAQCBKU0M6Oklz
b1N1YnNwYWNlKiBKU1Rlc3ROYW1lZEdldHRlcldpdGhJCiAgICAgICAgIHJldHVybiBzcGFjZTsK
ICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVP
YmplY3QsIEpTVGVzdE5hbWVkR2V0dGVyV2l0aElkZW50aWZpZXI+IHx8ICFKU1Rlc3ROYW1lZEdl
dHRlcldpdGhJZGVudGlmaWVyOjpuZWVkc0Rlc3RydWN0aW9uKTsKICAgICBpZiBjb25zdGV4cHIg
KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdE5hbWVk
R2V0dGVyV2l0aElkZW50aWZpZXI+KQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RO
YW1lZEdldHRlcldpdGhJZGVudGlmaWVyID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NV
QlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmdl
dCgpLCBKU1Rlc3ROYW1lZEdldHRlcldpdGhJZGVudGlmaWVyKTsKKyAgICAgICAgc3BhY2VzLm1f
c3Vic3BhY2VGb3JUZXN0TmFtZWRHZXR0ZXJXaXRoSWRlbnRpZmllciA9IG1ha2VVbmlxdWU8SXNv
U3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVj
dEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3ROYW1lZEdldHRlcldpdGhJZGVudGlmaWVyKTsKICAgICBl
bHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkR2V0dGVyV2l0aElkZW50
aWZpZXIgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFw
LCB2bS5jZWxsSGVhcENlbGxUeXBlLmdldCgpLCBKU1Rlc3ROYW1lZEdldHRlcldpdGhJZGVudGlm
aWVyKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRHZXR0ZXJXaXRoSWRl
bnRpZmllciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhl
YXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0TmFtZWRHZXR0ZXJXaXRoSWRlbnRpZmll
cik7CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZEdldHRl
cldpdGhJZGVudGlmaWVyLmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJs
ZS1jb2RlIikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJ
bmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVk
U2V0dGVyTm9JZGVudGlmaWVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJOb0lkZW50aWZpZXIuY3BwCShy
ZXZpc2lvbiAyODYwMTEpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0TmFtZWRTZXR0ZXJOb0lkZW50aWZpZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02
NSw3ICs2NSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3Bh
Y2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJT
UEFDRV9TSEFSQUJMRShKU1Rlc3ROYW1lZFNldHRlck5vSWRlbnRpZmllclByb3RvdHlwZSwgQmFz
ZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJu
ICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVy
ZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAtMzAwLDkgKzMwMCw5
IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdE5hbWVkU2V0dGVyTm9JZGUKICAgICAgICAgcmV0
dXJuIHNwYWNlOwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rl
c3RydWN0aWJsZU9iamVjdCwgSlNUZXN0TmFtZWRTZXR0ZXJOb0lkZW50aWZpZXI+IHx8ICFKU1Rl
c3ROYW1lZFNldHRlck5vSWRlbnRpZmllcjo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgaWYgY29u
c3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rl
c3ROYW1lZFNldHRlck5vSWRlbnRpZmllcj4pCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9y
VGVzdE5hbWVkU2V0dGVyTm9JZGVudGlmaWVyID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNP
X1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBl
LmdldCgpLCBKU1Rlc3ROYW1lZFNldHRlck5vSWRlbnRpZmllcik7CisgICAgICAgIHNwYWNlcy5t
X3N1YnNwYWNlRm9yVGVzdE5hbWVkU2V0dGVyTm9JZGVudGlmaWVyID0gbWFrZVVuaXF1ZTxJc29T
dWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0
SGVhcENlbGxUeXBlKCksIEpTVGVzdE5hbWVkU2V0dGVyTm9JZGVudGlmaWVyKTsKICAgICBlbHNl
Ci0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkU2V0dGVyTm9JZGVudGlmaWVy
ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0u
Y2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNUZXN0TmFtZWRTZXR0ZXJOb0lkZW50aWZpZXIpOwor
ICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZFNldHRlck5vSWRlbnRpZmllciA9
IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNl
bGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0TmFtZWRTZXR0ZXJOb0lkZW50aWZpZXIpOwogICAgIGF1
dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRTZXR0ZXJOb0lkZW50aWZp
ZXIuZ2V0KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdO
T1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJUaHJvd2lu
Z0V4Y2VwdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24uY3BwCShyZXZp
c2lvbiAyODYwMTEpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0TmFtZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTY1LDcgKzY1LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJz
cGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NV
QlNQQUNFX1NIQVJBQkxFKEpTVGVzdE5hbWVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb25Qcm90b3R5
cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAg
IHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KICAgICBzdGF0aWMgSlNDOjpT
dHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKQEAgLTMwMCw5
ICszMDAsOSBAQCBKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3ROYW1lZFNldHRlclRocm93CiAgICAg
ICAgIHJldHVybiBzcGFjZTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpT
Qzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdE5hbWVkU2V0dGVyVGhyb3dpbmdFeGNlcHRp
b24+IHx8ICFKU1Rlc3ROYW1lZFNldHRlclRocm93aW5nRXhjZXB0aW9uOjpuZWVkc0Rlc3RydWN0
aW9uKTsKICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVj
dGlibGVPYmplY3QsIEpTVGVzdE5hbWVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24+KQotICAgICAg
ICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZFNldHRlclRocm93aW5nRXhjZXB0aW9uID0g
bWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVz
dHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmdldCgpLCBKU1Rlc3ROYW1lZFNldHRlclRocm93
aW5nRXhjZXB0aW9uKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRTZXR0
ZXJUaHJvd2luZ0V4Y2VwdGlvbiA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFD
RV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBKU1Rl
c3ROYW1lZFNldHRlclRocm93aW5nRXhjZXB0aW9uKTsKICAgICBlbHNlCi0gICAgICAgIHNwYWNl
cy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24gPSBtYWtlVW5p
cXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENl
bGxUeXBlLmdldCgpLCBKU1Rlc3ROYW1lZFNldHRlclRocm93aW5nRXhjZXB0aW9uKTsKKyAgICAg
ICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbiA9
IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNl
bGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0TmFtZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbik7CiAg
ICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZFNldHRlclRocm93
aW5nRXhjZXB0aW9uLmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1j
b2RlIikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRl
eDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0
dGVyV2l0aElkZW50aWZpZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhJZGVudGlmaWVyLmNwcAko
cmV2aXNpb24gMjg2MDExKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aElkZW50aWZpZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC03Miw3ICs3Miw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vi
c3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19T
VUJTUEFDRV9TSEFSQUJMRShKU1Rlc3ROYW1lZFNldHRlcldpdGhJZGVudGlmaWVyUHJvdG90eXBl
LCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICBy
ZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3Ry
dWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC0zMzEsOSAr
MzMxLDkgQEAgSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSQogICAgICAg
ICByZXR1cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6
OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3ROYW1lZFNldHRlcldpdGhJZGVudGlmaWVyPiB8
fCAhSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmllcjo6bmVlZHNEZXN0cnVjdGlvbik7CiAg
ICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2Jq
ZWN0LCBKU1Rlc3ROYW1lZFNldHRlcldpdGhJZGVudGlmaWVyPikKLSAgICAgICAgc3BhY2VzLm1f
c3Vic3BhY2VGb3JUZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmllciA9IG1ha2VVbmlxdWU8SXNv
U3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVj
dEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmllcik7Cisg
ICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkU2V0dGVyV2l0aElkZW50aWZpZXIg
PSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5k
ZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSWRl
bnRpZmllcik7CiAgICAgZWxzZQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1l
ZFNldHRlcldpdGhJZGVudGlmaWVyID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQ
QUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNUZXN0TmFtZWRT
ZXR0ZXJXaXRoSWRlbnRpZmllcik7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5h
bWVkU2V0dGVyV2l0aElkZW50aWZpZXIgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VC
U1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCksIEpTVGVzdE5hbWVkU2V0
dGVyV2l0aElkZW50aWZpZXIpOwogICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VG
b3JUZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmllci5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19C
RUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9n
aWNhbC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0
ZXJXaXRoSW5kZXhlZEdldHRlci5jcHAJKHJldmlzaW9uIDI4NjAxMSkKKysrIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVk
R2V0dGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzUsNyArNzUsNyBAQCBwdWJsaWM6CiAgICAg
c3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsK
ICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0TmFtZWRT
ZXR0ZXJXaXRoSW5kZXhlZEdldHRlclByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAm
dm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNl
KCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpT
Qzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1
ZSBwcm90b3R5cGUpCiAgICAgewpAQCAtMzc4LDkgKzM3OCw5IEBAIEpTQzo6SXNvU3Vic3BhY2Uq
IEpTVGVzdE5hbWVkU2V0dGVyV2l0aEkKICAgICAgICAgcmV0dXJuIHNwYWNlOwogICAgIHN0YXRp
Y19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNU
ZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlcj4gfHwgIUpTVGVzdE5hbWVkU2V0dGVyV2l0
aEluZGV4ZWRHZXR0ZXI6Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhwciAoc3Rk
Ojppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0TmFtZWRTZXR0
ZXJXaXRoSW5kZXhlZEdldHRlcj4pCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5h
bWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXIgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09f
U1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUu
Z2V0KCksIEpTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXIpOworICAgICAgICBzcGFj
ZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyID0gbWFrZVVu
aXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3Rp
YmxlT2JqZWN0SGVhcENlbGxUeXBlKCksIEpTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0
ZXIpOwogICAgIGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRTZXR0
ZXJXaXRoSW5kZXhlZEdldHRlciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFD
RV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVGVzdE5hbWVkU2V0
dGVyV2l0aEluZGV4ZWRHZXR0ZXIpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RO
YW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNP
X1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3ROYW1l
ZFNldHRlcldpdGhJbmRleGVkR2V0dGVyKTsKICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1
YnNwYWNlRm9yVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXIuZ2V0KCk7CiBJR05PUkVf
V0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lO
KCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlckFuZFNldHRl
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0ZXIuY3BwCShyZXZp
c2lvbiAyODYwMTEpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlckFuZFNldHRlci5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTc1LDcgKzc1LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNw
YWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NF
UlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0
ZXJBbmRTZXR0ZXJQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2Jq
ZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0K
ICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwg
SlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBl
KQogICAgIHsKQEAgLTQyOCw5ICs0MjgsOSBAQCBKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3ROYW1l
ZFNldHRlcldpdGhJCiAgICAgICAgIHJldHVybiBzcGFjZTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0
ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdE5hbWVkU2V0
dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0ZXI+IHx8ICFKU1Rlc3ROYW1lZFNldHRlcldpdGhJ
bmRleGVkR2V0dGVyQW5kU2V0dGVyOjpuZWVkc0Rlc3RydWN0aW9uKTsKICAgICBpZiBjb25zdGV4
cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdE5h
bWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0ZXI+KQotICAgICAgICBzcGFjZXMubV9z
dWJzcGFjZUZvclRlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQW5kU2V0dGVyID0gbWFr
ZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1
Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmdldCgpLCBKU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRl
eGVkR2V0dGVyQW5kU2V0dGVyKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFt
ZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlckFuZFNldHRlciA9IG1ha2VVbmlxdWU8SXNvU3Vic3Bh
Y2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBD
ZWxsVHlwZSgpLCBKU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQW5kU2V0dGVyKTsK
ICAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkU2V0dGVyV2l0
aEluZGV4ZWRHZXR0ZXJBbmRTZXR0ZXIgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VC
U1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlLmdldCgpLCBKU1Rlc3ROYW1l
ZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQW5kU2V0dGVyKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vi
c3BhY2VGb3JUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlckFuZFNldHRlciA9IG1ha2VV
bmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFw
Q2VsbFR5cGUoKSwgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlckFuZFNldHRlcik7
CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZFNldHRlcldp
dGhJbmRleGVkR2V0dGVyQW5kU2V0dGVyLmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1
bnJlYWNoYWJsZS1jb2RlIikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNv
bXBhcmUiKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNl
dHRlcldpdGhMZWdhY3lPdmVycmlkZUJ1aWx0SW5zLmNwcAkocmV2aXNpb24gMjg2MDExKQorKysg
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVy
V2l0aExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NSw3ICs2
NSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3Io
SlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9T
SEFSQUJMRShKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lPdmVycmlkZUJ1aWx0SW5zUHJvdG90
eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAg
ICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6
U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC0yNzcs
OSArMjc3LDkgQEAgSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTAogICAg
ICAgICByZXR1cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxK
U0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lPdmVy
cmlkZUJ1aWx0SW5zPiB8fCAhSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5T3ZlcnJpZGVCdWls
dEluczo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vf
b2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdh
Y3lPdmVycmlkZUJ1aWx0SW5zPikKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFt
ZWRTZXR0ZXJXaXRoTGVnYWN5T3ZlcnJpZGVCdWlsdElucyA9IG1ha2VVbmlxdWU8SXNvU3Vic3Bh
Y2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBD
ZWxsVHlwZS5nZXQoKSwgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5T3ZlcnJpZGVCdWlsdElu
cyk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2Fj
eU92ZXJyaWRlQnVpbHRJbnMgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0Vf
SU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0
TmFtZWRTZXR0ZXJXaXRoTGVnYWN5T3ZlcnJpZGVCdWlsdElucyk7CiAgICAgZWxzZQotICAgICAg
ICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lPdmVycmlkZUJ1
aWx0SW5zID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVh
cCwgdm0uY2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5
T3ZlcnJpZGVCdWlsdElucyk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVk
U2V0dGVyV2l0aExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNl
PiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCksIEpTVGVz
dE5hbWVkU2V0dGVyV2l0aExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMpOwogICAgIGF1dG8qIHNwYWNl
ID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5T3ZlcnJpZGVC
dWlsdElucy5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIp
CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldp
dGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdh
Y3lVbmZvcmdlYWJsZVByb3BlcnRpZXMuY3BwCShyZXZpc2lvbiAyODYwMTEpCisrKyBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVn
YWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzQsNyArNzQs
NyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpT
Qzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hB
UkFCTEUoSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzUHJv
dG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAg
ICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpT
Qzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC0z
NjEsOSArMzYxLDkgQEAgSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTAog
ICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2Zf
djxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lV
bmZvcmdlYWJsZVByb3BlcnRpZXM+IHx8ICFKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZv
cmdlYWJsZVByb3BlcnRpZXM6Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhwciAo
c3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0TmFtZWRT
ZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzPikKLSAgICAgICAgc3BhY2VzLm1f
c3Vic3BhY2VGb3JUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVz
ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0u
ZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmdldCgpLCBKU1Rlc3ROYW1lZFNldHRlcldp
dGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXMpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFj
ZUZvclRlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXMgPSBtYWtl
VW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVj
dGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5m
b3JnZWFibGVQcm9wZXJ0aWVzKTsKICAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNl
Rm9yVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllcyA9IG1ha2VV
bmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFw
Q2VsbFR5cGUuZ2V0KCksIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJv
cGVydGllcyk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkU2V0dGVyV2l0
aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllcyA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElT
T19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0TmFt
ZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzKTsKICAgICBhdXRvKiBzcGFj
ZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2Vh
YmxlUHJvcGVydGllcy5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUt
Y29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNl
dHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0
SW5zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5k
TGVnYWN5T3ZlcnJpZGVCdWlsdElucy5jcHAJKHJldmlzaW9uIDI4NjAxMSkKKysrIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdh
Y3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNzQsNyArNzQsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNv
U3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElD
X0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5
VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdEluc1Byb3RvdHlwZSwg
QmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0
dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVj
dHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAtMzM4LDkgKzMz
OCw5IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdE5hbWVkU2V0dGVyV2l0aEwKICAgICAgICAg
cmV0dXJuIHNwYWNlOwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpK
U0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFi
bGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdElucz4gfHwgIUpTVGVzdE5hbWVkU2V0
dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJ
bnM6Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29m
X3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5
VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdElucz4pCi0gICAgICAg
IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxl
UHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMgPSBtYWtlVW5pcXVlPElzb1N1YnNw
YWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFw
Q2VsbFR5cGUuZ2V0KCksIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJv
cGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMpOworICAgICAgICBzcGFjZXMubV9zdWJz
cGFjZUZvclRlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRM
ZWdhY3lPdmVycmlkZUJ1aWx0SW5zID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQ
QUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCksIEpT
VGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92
ZXJyaWRlQnVpbHRJbnMpOwogICAgIGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JU
ZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3Zl
cnJpZGVCdWlsdElucyA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklU
KHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVGVzdE5hbWVkU2V0dGVyV2l0
aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMpOwor
ICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZv
cmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zID0gbWFrZVVuaXF1ZTxJ
c29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlw
ZSgpLCBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRM
ZWdhY3lPdmVycmlkZUJ1aWx0SW5zKTsKICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNw
YWNlRm9yVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExl
Z2FjeU92ZXJyaWRlQnVpbHRJbnMuZ2V0KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVh
Y2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFy
ZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
TmFtZXNwYWNlT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZXNwYWNlT2JqZWN0LmNwcAkocmV2aXNpb24gMjg2
MDExKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5h
bWVzcGFjZU9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4MCw5ICsyODAsOSBAQCBKU0M6
Oklzb1N1YnNwYWNlKiBKU1Rlc3ROYW1lc3BhY2VPYmplY3Q6CiAgICAgICAgIHJldHVybiBzcGFj
ZTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGli
bGVPYmplY3QsIEpTVGVzdE5hbWVzcGFjZU9iamVjdD4gfHwgIUpTVGVzdE5hbWVzcGFjZU9iamVj
dDo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2Zf
djxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3ROYW1lc3BhY2VPYmplY3Q+KQotICAg
ICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lc3BhY2VPYmplY3QgPSBtYWtlVW5pcXVl
PElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVP
YmplY3RIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVGVzdE5hbWVzcGFjZU9iamVjdCk7CisgICAgICAg
IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVzcGFjZU9iamVjdCA9IG1ha2VVbmlxdWU8SXNv
U3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVj
dEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3ROYW1lc3BhY2VPYmplY3QpOwogICAgIGVsc2UKLSAgICAg
ICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZXNwYWNlT2JqZWN0ID0gbWFrZVVuaXF1ZTxJ
c29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlw
ZS5nZXQoKSwgSlNUZXN0TmFtZXNwYWNlT2JqZWN0KTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3Bh
Y2VGb3JUZXN0TmFtZXNwYWNlT2JqZWN0ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NV
QlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3ROYW1lc3Bh
Y2VPYmplY3QpOwogICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFt
ZXNwYWNlT2JqZWN0LmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1j
b2RlIikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRl
eDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5vZGUuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3ROb2RlLmNwcAkocmV2aXNpb24gMjg2MDExKQorKysgU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5vZGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05NSw3
ICs5NSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VG
b3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFD
RV9TSEFSQUJMRShKU1Rlc3ROb2RlUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2
bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2Uo
KTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlND
OjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVl
IHByb3RvdHlwZSkKICAgICB7CkBAIC00MDUsOSArNDA1LDkgQEAgcHVibGljOgogICAgICAgICAg
ICAgcmV0dXJuIHNwYWNlOwogICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92
PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIFRlc3ROb2RlSXRlcmF0b3I+IHx8ICFUZXN0Tm9k
ZUl0ZXJhdG9yOjpuZWVkc0Rlc3RydWN0aW9uKTsKICAgICAgICAgaWYgY29uc3RleHByIChzdGQ6
OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBUZXN0Tm9kZUl0ZXJhdG9y
PikKLSAgICAgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5vZGVJdGVyYXRvciA9IG1h
a2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3Ry
dWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5nZXQoKSwgVGVzdE5vZGVJdGVyYXRvcik7CisgICAg
ICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROb2RlSXRlcmF0b3IgPSBtYWtlVW5pcXVl
PElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVP
YmplY3RIZWFwQ2VsbFR5cGUoKSwgVGVzdE5vZGVJdGVyYXRvcik7CiAgICAgICAgIGVsc2UKLSAg
ICAgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5vZGVJdGVyYXRvciA9IG1ha2VVbmlx
dWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2Vs
bFR5cGUuZ2V0KCksIFRlc3ROb2RlSXRlcmF0b3IpOworICAgICAgICAgICAgc3BhY2VzLm1fc3Vi
c3BhY2VGb3JUZXN0Tm9kZUl0ZXJhdG9yID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NV
QlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBUZXN0Tm9kZUl0ZXJh
dG9yKTsKICAgICAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROb2Rl
SXRlcmF0b3IuZ2V0KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUi
KQogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkBAIC00OTcs
OSArNDk3LDkgQEAgSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0Tm9kZTo6c3Vic3BhY2VGbwogICAg
ICAgICByZXR1cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxK
U0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3ROb2RlPiB8fCAhSlNUZXN0Tm9kZTo6bmVl
ZHNEZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6
OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3ROb2RlPikKLSAgICAgICAgc3BhY2VzLm1fc3Vi
c3BhY2VGb3JUZXN0Tm9kZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9J
TklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNU
ZXN0Tm9kZSk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5vZGUgPSBtYWtlVW5p
cXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGli
bGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0Tm9kZSk7CiAgICAgZWxzZQotICAgICAgICBz
cGFjZXMubV9zdWJzcGFjZUZvclRlc3ROb2RlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNP
X1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNUZXN0
Tm9kZSk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5vZGUgPSBtYWtlVW5pcXVl
PElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxU
eXBlKCksIEpTVGVzdE5vZGUpOwogICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VG
b3JUZXN0Tm9kZS5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29k
ZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RPYmouY3BwCShyZXZpc2lvbiAyODYwMTEpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTg2Niw3ICsx
ODY2LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZv
cihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNF
X1NIQVJBQkxFKEpTVGVzdE9ialByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0u
cGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7
CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6
Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBw
cm90b3R5cGUpCiAgICAgewpAQCAtOTAwNiw5ICs5MDA2LDkgQEAgSlNDOjpJc29TdWJzcGFjZSog
SlNUZXN0T2JqOjpzdWJzcGFjZUZvcgogICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAgc3RhdGlj
X2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rl
c3RPYmo+IHx8ICFKU1Rlc3RPYmo6Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhw
ciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0T2Jq
PikKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0T2JqID0gbWFrZVVuaXF1ZTxJc29T
dWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0
SGVhcENlbGxUeXBlLmdldCgpLCBKU1Rlc3RPYmopOworICAgICAgICBzcGFjZXMubV9zdWJzcGFj
ZUZvclRlc3RPYmogPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2
bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0T2JqKTsK
ICAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE9iaiA9IG1ha2VVbmlx
dWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2Vs
bFR5cGUuZ2V0KCksIEpTVGVzdE9iaik7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVz
dE9iaiA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAs
IHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0T2JqKTsKICAgICBhdXRvKiBzcGFjZSA9IHNw
YWNlcy5tX3N1YnNwYWNlRm9yVGVzdE9iai5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigi
dW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1j
b21wYXJlIikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RPcGVyYXRpb25Db25kaXRpb25hbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9wZXJhdGlvbkNvbmRpdGlvbmFsLmNw
cAkocmV2aXNpb24gMjg2MDExKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdE9wZXJhdGlvbkNvbmRpdGlvbmFsLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
ODEsNyArODEsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNw
YWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VC
U1BBQ0VfU0hBUkFCTEUoSlNUZXN0T3BlcmF0aW9uQ29uZGl0aW9uYWxQcm90b3R5cGUsIEJhc2Up
OwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAm
dm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUq
IGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKQEAgLTIzNCw5ICsyMzQsOSBA
QCBKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3RPcGVyYXRpb25Db25kaXRpCiAgICAgICAgIHJldHVy
biBzcGFjZTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0
cnVjdGlibGVPYmplY3QsIEpTVGVzdE9wZXJhdGlvbkNvbmRpdGlvbmFsPiB8fCAhSlNUZXN0T3Bl
cmF0aW9uQ29uZGl0aW9uYWw6Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhwciAo
c3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0T3BlcmF0
aW9uQ29uZGl0aW9uYWw+KQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RPcGVyYXRp
b25Db25kaXRpb25hbCA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklU
KHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNUZXN0
T3BlcmF0aW9uQ29uZGl0aW9uYWwpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RP
cGVyYXRpb25Db25kaXRpb25hbCA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFD
RV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBKU1Rl
c3RPcGVyYXRpb25Db25kaXRpb25hbCk7CiAgICAgZWxzZQotICAgICAgICBzcGFjZXMubV9zdWJz
cGFjZUZvclRlc3RPcGVyYXRpb25Db25kaXRpb25hbCA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+
IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEpT
VGVzdE9wZXJhdGlvbkNvbmRpdGlvbmFsKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JU
ZXN0T3BlcmF0aW9uQ29uZGl0aW9uYWwgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VC
U1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCksIEpTVGVzdE9wZXJhdGlv
bkNvbmRpdGlvbmFsKTsKICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVz
dE9wZXJhdGlvbkNvbmRpdGlvbmFsLmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJl
YWNoYWJsZS1jb2RlIikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBh
cmUiKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmNw
cAkocmV2aXNpb24gMjg2MDExKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC02OSw3ICs2OSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vi
c3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19T
VUJTUEFDRV9TSEFSQUJMRShKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzUHJvdG90eXBlLCBC
YXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1
cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0
dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC0yOTUsOSArMjk1
LDkgQEAgSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0T3ZlcmxvYWRlZENvbnN0cgogICAgICAgICBy
ZXR1cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpT
RGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzPiB8fCAhSlNU
ZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgaWYgY29u
c3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rl
c3RPdmVybG9hZGVkQ29uc3RydWN0b3JzPikKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JU
ZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19T
VUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5n
ZXQoKSwgSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyk7CisgICAgICAgIHNwYWNlcy5tX3N1
YnNwYWNlRm9yVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMgPSBtYWtlVW5pcXVlPElzb1N1YnNw
YWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFw
Q2VsbFR5cGUoKSwgSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyk7CiAgICAgZWxzZQotICAg
ICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzID0gbWFr
ZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhl
YXBDZWxsVHlwZS5nZXQoKSwgSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyk7CisgICAgICAg
IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMgPSBtYWtlVW5p
cXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENl
bGxUeXBlKCksIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMpOwogICAgIGF1dG8qIHNwYWNl
ID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5nZXQoKTsK
IElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklO
R1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzV2l0aFNl
cXVlbmNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5jZS5jcHAJKHJl
dmlzaW9uIDI4NjAxMSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzV2l0aFNlcXVlbmNlLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNjgsNyArNjgsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3Bh
Y2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VS
VF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dpdGhT
ZXF1ZW5jZVByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RT
cGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAg
IHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6
OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAg
ICAgewpAQCAtMjM4LDkgKzIzOCw5IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdE92ZXJsb2Fk
ZWRDb25zdHIKICAgICAgICAgcmV0dXJuIHNwYWNlOwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjpp
c19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0T3ZlcmxvYWRlZENv
bnN0cnVjdG9yc1dpdGhTZXF1ZW5jZT4gfHwgIUpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNX
aXRoU2VxdWVuY2U6Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjpp
c19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0T3ZlcmxvYWRlZENv
bnN0cnVjdG9yc1dpdGhTZXF1ZW5jZT4pCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVz
dE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2UgPSBtYWtlVW5pcXVlPElzb1N1YnNw
YWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFw
Q2VsbFR5cGUuZ2V0KCksIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2Up
OworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3Jz
V2l0aFNlcXVlbmNlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQo
dm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCksIEpTVGVzdE92ZXJs
b2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2UpOwogICAgIGVsc2UKLSAgICAgICAgc3BhY2Vz
Lm1fc3Vic3BhY2VGb3JUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5jZSA9IG1h
a2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxI
ZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVu
Y2UpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RPdmVybG9hZGVkQ29uc3RydWN0
b3JzV2l0aFNlcXVlbmNlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lO
SVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RPdmVybG9hZGVkQ29uc3Ry
dWN0b3JzV2l0aFNlcXVlbmNlKTsKICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNl
Rm9yVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2UuZ2V0KCk7CiBJR05PUkVf
V0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lO
KCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0UGx1Z2luSW50ZXJmYWNlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0UGx1Z2luSW50ZXJm
YWNlLmNwcAkocmV2aXNpb24gMjg2MDExKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdFBsdWdpbkludGVyZmFjZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTY0LDcgKzY0LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJz
cGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NV
QlNQQUNFX1NIQVJBQkxFKEpTVGVzdFBsdWdpbkludGVyZmFjZVByb3RvdHlwZSwgQmFzZSk7Ci0g
ICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5w
bGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3Jl
YXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAtMjQ0LDkgKzI0NCw5IEBAIEpT
Qzo6SXNvU3Vic3BhY2UqIEpTVGVzdFBsdWdpbkludGVyZmFjZToKICAgICAgICAgcmV0dXJuIHNw
YWNlOwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0
aWJsZU9iamVjdCwgSlNUZXN0UGx1Z2luSW50ZXJmYWNlPiB8fCAhSlNUZXN0UGx1Z2luSW50ZXJm
YWNlOjpuZWVkc0Rlc3RydWN0aW9uKTsKICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9v
Zl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdFBsdWdpbkludGVyZmFjZT4pCi0g
ICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFBsdWdpbkludGVyZmFjZSA9IG1ha2VVbmlx
dWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJs
ZU9iamVjdEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNUZXN0UGx1Z2luSW50ZXJmYWNlKTsKKyAgICAg
ICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0UGx1Z2luSW50ZXJmYWNlID0gbWFrZVVuaXF1ZTxJ
c29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2Jq
ZWN0SGVhcENlbGxUeXBlKCksIEpTVGVzdFBsdWdpbkludGVyZmFjZSk7CiAgICAgZWxzZQotICAg
ICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RQbHVnaW5JbnRlcmZhY2UgPSBtYWtlVW5pcXVl
PElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxU
eXBlLmdldCgpLCBKU1Rlc3RQbHVnaW5JbnRlcmZhY2UpOworICAgICAgICBzcGFjZXMubV9zdWJz
cGFjZUZvclRlc3RQbHVnaW5JbnRlcmZhY2UgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09f
U1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCksIEpTVGVzdFBsdWdp
bkludGVyZmFjZSk7CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RQ
bHVnaW5JbnRlcmZhY2UuZ2V0KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxl
LWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0UHJvbWlz
ZVJlamVjdGlvbkV2ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50LmNwcAkocmV2aXNp
b24gMjg2MDExKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdFByb21pc2VSZWplY3Rpb25FdmVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0OCw3ICsx
NDgsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9y
KEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0Vf
U0hBUkFCTEUoSlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50UHJvdG90eXBlLCBCYXNlKTsKLSAg
ICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBs
YWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVh
dGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC0zMDEsOSArMzAxLDkgQEAgSlND
OjpJc29TdWJzcGFjZSogSlNUZXN0UHJvbWlzZVJlamVjdGlvbgogICAgICAgICByZXR1cm4gc3Bh
Y2U7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3Rp
YmxlT2JqZWN0LCBKU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQ+IHx8ICFKU1Rlc3RQcm9taXNl
UmVqZWN0aW9uRXZlbnQ6Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhwciAoc3Rk
Ojppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0UHJvbWlzZVJl
amVjdGlvbkV2ZW50PikKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0UHJvbWlzZVJl
amVjdGlvbkV2ZW50ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQo
dm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmdldCgpLCBKU1Rlc3RQ
cm9taXNlUmVqZWN0aW9uRXZlbnQpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RQ
cm9taXNlUmVqZWN0aW9uRXZlbnQgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BB
Q0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwgSlNU
ZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50KTsKICAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1
YnNwYWNlRm9yVGVzdFByb21pc2VSZWplY3Rpb25FdmVudCA9IG1ha2VVbmlxdWU8SXNvU3Vic3Bh
Y2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCks
IEpTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudCk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNl
Rm9yVGVzdFByb21pc2VSZWplY3Rpb25FdmVudCA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElT
T19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0UHJv
bWlzZVJlamVjdGlvbkV2ZW50KTsKICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNl
Rm9yVGVzdFByb21pc2VSZWplY3Rpb25FdmVudC5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJ
TigidW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNh
bC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RSZWFkT25seU1hcExpa2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RSZWFkT25seU1hcExpa2UuY3BwCShyZXZp
c2lvbiAyODYwMTEpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0UmVhZE9ubHlNYXBMaWtlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzksNyArNzksNyBA
QCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6
Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFC
TEUoSlNUZXN0UmVhZE9ubHlNYXBMaWtlUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJu
ICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3Bh
Y2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUo
SlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1Zh
bHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC0zMDUsOSArMzA1LDkgQEAgSlNDOjpJc29TdWJzcGFj
ZSogSlNUZXN0UmVhZE9ubHlNYXBMaWtlOgogICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAgc3Rh
dGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBK
U1Rlc3RSZWFkT25seU1hcExpa2U+IHx8ICFKU1Rlc3RSZWFkT25seU1hcExpa2U6Om5lZWRzRGVz
dHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rl
c3RydWN0aWJsZU9iamVjdCwgSlNUZXN0UmVhZE9ubHlNYXBMaWtlPikKLSAgICAgICAgc3BhY2Vz
Lm1fc3Vic3BhY2VGb3JUZXN0UmVhZE9ubHlNYXBMaWtlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFj
ZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENl
bGxUeXBlLmdldCgpLCBKU1Rlc3RSZWFkT25seU1hcExpa2UpOworICAgICAgICBzcGFjZXMubV9z
dWJzcGFjZUZvclRlc3RSZWFkT25seU1hcExpa2UgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJ
U09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5
cGUoKSwgSlNUZXN0UmVhZE9ubHlNYXBMaWtlKTsKICAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5t
X3N1YnNwYWNlRm9yVGVzdFJlYWRPbmx5TWFwTGlrZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+
IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEpT
VGVzdFJlYWRPbmx5TWFwTGlrZSk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFJl
YWRPbmx5TWFwTGlrZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklU
KHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0UmVhZE9ubHlNYXBMaWtlKTsK
ICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFJlYWRPbmx5TWFwTGlr
ZS5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJR05P
UkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RSZWFkT25seVNldExpa2UuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RSZWFkT25seVNldExpa2UuY3BwCShyZXZpc2lvbiAyODYwMTEpCisrKyBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0UmVhZE9ubHlTZXRMaWtlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNzgsNyArNzgsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6
SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RB
VElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0UmVhZE9ubHlTZXRMaWtlUHJv
dG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAg
ICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpT
Qzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC0y
ODQsOSArMjg0LDkgQEAgSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0UmVhZE9ubHlTZXRMaWtlOgog
ICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2Zf
djxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RSZWFkT25seVNldExpa2U+IHx8ICFK
U1Rlc3RSZWFkT25seVNldExpa2U6Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhw
ciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0UmVh
ZE9ubHlTZXRMaWtlPikKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0UmVhZE9ubHlT
ZXRMaWtlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVh
cCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmdldCgpLCBKU1Rlc3RSZWFkT25s
eVNldExpa2UpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RSZWFkT25seVNldExp
a2UgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2
bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0UmVhZE9ubHlTZXRMaWtl
KTsKICAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFJlYWRPbmx5U2V0
TGlrZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAs
IHZtLmNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVGVzdFJlYWRPbmx5U2V0TGlrZSk7CisgICAg
ICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFJlYWRPbmx5U2V0TGlrZSA9IG1ha2VVbmlxdWU8
SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5
cGUoKSwgSlNUZXN0UmVhZE9ubHlTZXRMaWtlKTsKICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5t
X3N1YnNwYWNlRm9yVGVzdFJlYWRPbmx5U2V0TGlrZS5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19C
RUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9n
aWNhbC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RSZXBvcnRFeHRyYU1lbW9yeUNvc3QuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RSZXBvcnRFeHRyYU1lbW9y
eUNvc3QuY3BwCShyZXZpc2lvbiAyODYwMTEpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0UmVwb3J0RXh0cmFNZW1vcnlDb3N0LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNjMsNyArNjMsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3Bh
Y2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VS
VF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0UmVwb3J0RXh0cmFNZW1vcnlDb3N0UHJvdG90
eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAg
ICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6
U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC0xNzEs
OSArMTcxLDkgQEAgSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0UmVwb3J0RXh0cmFNZW1vcgogICAg
ICAgICByZXR1cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxK
U0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RSZXBvcnRFeHRyYU1lbW9yeUNvc3Q+IHx8
ICFKU1Rlc3RSZXBvcnRFeHRyYU1lbW9yeUNvc3Q6Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlm
IGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwg
SlNUZXN0UmVwb3J0RXh0cmFNZW1vcnlDb3N0PikKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VG
b3JUZXN0UmVwb3J0RXh0cmFNZW1vcnlDb3N0ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNP
X1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBl
LmdldCgpLCBKU1Rlc3RSZXBvcnRFeHRyYU1lbW9yeUNvc3QpOworICAgICAgICBzcGFjZXMubV9z
dWJzcGFjZUZvclRlc3RSZXBvcnRFeHRyYU1lbW9yeUNvc3QgPSBtYWtlVW5pcXVlPElzb1N1YnNw
YWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFw
Q2VsbFR5cGUoKSwgSlNUZXN0UmVwb3J0RXh0cmFNZW1vcnlDb3N0KTsKICAgICBlbHNlCi0gICAg
ICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFJlcG9ydEV4dHJhTWVtb3J5Q29zdCA9IG1ha2VV
bmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFw
Q2VsbFR5cGUuZ2V0KCksIEpTVGVzdFJlcG9ydEV4dHJhTWVtb3J5Q29zdCk7CisgICAgICAgIHNw
YWNlcy5tX3N1YnNwYWNlRm9yVGVzdFJlcG9ydEV4dHJhTWVtb3J5Q29zdCA9IG1ha2VVbmlxdWU8
SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5
cGUoKSwgSlNUZXN0UmVwb3J0RXh0cmFNZW1vcnlDb3N0KTsKICAgICBhdXRvKiBzcGFjZSA9IHNw
YWNlcy5tX3N1YnNwYWNlRm9yVGVzdFJlcG9ydEV4dHJhTWVtb3J5Q29zdC5nZXQoKTsKIElHTk9S
RV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVH
SU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuY3BwCShyZXZpc2lvbiAyODYwMTEp
CisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFs
aXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODksNyArODks
NyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpT
Qzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hB
UkFCTEUoSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlUHJvdG90eXBlLCBCYXNl
KTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4g
JnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJl
KiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC0zNDksOSArMzQ5LDkg
QEAgSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0U2VyaWFsaXplZFNjcmlwdAogICAgICAgICByZXR1
cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVz
dHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2U+IHx8
ICFKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2U6Om5lZWRzRGVzdHJ1Y3Rpb24p
OwogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJs
ZU9iamVjdCwgSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlPikKLSAgICAgICAg
c3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlID0g
bWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVz
dHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmdldCgpLCBKU1Rlc3RTZXJpYWxpemVkU2NyaXB0
VmFsdWVJbnRlcmZhY2UpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RTZXJpYWxp
emVkU2NyaXB0VmFsdWVJbnRlcmZhY2UgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VC
U1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwg
SlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlKTsKICAgICBlbHNlCi0gICAgICAg
IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSA9
IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNl
bGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFj
ZSk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZUludGVyZmFjZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZt
LmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVl
SW50ZXJmYWNlKTsKICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJ
TigidW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNh
bC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RTZXRMaWtlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2V0TGlrZS5jcHAJKHJldmlzaW9uIDI4NjAxMSkKKysr
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXRMaWtlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtODEsNyArODEsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpT
Qzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAg
U1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0U2V0TGlrZVByb3RvdHlw
ZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAg
cmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0
cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAtMzQyLDkg
KzM0Miw5IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdFNldExpa2U6OnN1YnNwYWMKICAgICAg
ICAgcmV0dXJuIHNwYWNlOwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlND
OjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0U2V0TGlrZT4gfHwgIUpTVGVzdFNldExpa2U6
Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8
SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0U2V0TGlrZT4pCi0gICAgICAgIHNwYWNl
cy5tX3N1YnNwYWNlRm9yVGVzdFNldExpa2UgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09f
U1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUu
Z2V0KCksIEpTVGVzdFNldExpa2UpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RT
ZXRMaWtlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVh
cCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCksIEpTVGVzdFNldExpa2UpOwog
ICAgIGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0U2V0TGlrZSA9IG1ha2VV
bmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFw
Q2VsbFR5cGUuZ2V0KCksIEpTVGVzdFNldExpa2UpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFj
ZUZvclRlc3RTZXRMaWtlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lO
SVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RTZXRMaWtlKTsKICAgICBh
dXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFNldExpa2UuZ2V0KCk7CiBJR05P
UkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JF
R0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2V0TGlrZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9ucy5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdFNldExpa2VXaXRoT3ZlcnJpZGRlbk9wZXJhdGlvbnMuY3BwCShyZXZpc2lvbiAyODYw
MTEpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2V0
TGlrZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg1LDcg
Kzg1LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZv
cihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNF
X1NIQVJBQkxFKEpTVGVzdFNldExpa2VXaXRoT3ZlcnJpZGRlbk9wZXJhdGlvbnNQcm90b3R5cGUs
IEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJl
dHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1
Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKQEAgLTM1NCw5ICsz
NTQsOSBAQCBKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3RTZXRMaWtlV2l0aE92ZXJyCiAgICAgICAg
IHJldHVybiBzcGFjZTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6
SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdFNldExpa2VXaXRoT3ZlcnJpZGRlbk9wZXJhdGlv
bnM+IHx8ICFKU1Rlc3RTZXRMaWtlV2l0aE92ZXJyaWRkZW5PcGVyYXRpb25zOjpuZWVkc0Rlc3Ry
dWN0aW9uKTsKICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0
cnVjdGlibGVPYmplY3QsIEpTVGVzdFNldExpa2VXaXRoT3ZlcnJpZGRlbk9wZXJhdGlvbnM+KQot
ICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RTZXRMaWtlV2l0aE92ZXJyaWRkZW5PcGVy
YXRpb25zID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVh
cCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmdldCgpLCBKU1Rlc3RTZXRMaWtl
V2l0aE92ZXJyaWRkZW5PcGVyYXRpb25zKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JU
ZXN0U2V0TGlrZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9ucyA9IG1ha2VVbmlxdWU8SXNvU3Vic3Bh
Y2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBD
ZWxsVHlwZSgpLCBKU1Rlc3RTZXRMaWtlV2l0aE92ZXJyaWRkZW5PcGVyYXRpb25zKTsKICAgICBl
bHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFNldExpa2VXaXRoT3ZlcnJpZGRl
bk9wZXJhdGlvbnMgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2
bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlLmdldCgpLCBKU1Rlc3RTZXRMaWtlV2l0aE92ZXJy
aWRkZW5PcGVyYXRpb25zKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0U2V0TGlr
ZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9ucyA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19T
VUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0U2V0TGlr
ZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9ucyk7CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9z
dWJzcGFjZUZvclRlc3RTZXRMaWtlV2l0aE92ZXJyaWRkZW5PcGVyYXRpb25zLmdldCgpOwogSUdO
T1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKIElHTk9SRV9XQVJOSU5HU19C
RUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXIu
Y3BwCShyZXZpc2lvbiAyODYwMTEpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02OSw3ICs2
OSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3Io
SlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9T
SEFSQUJMRShKU1Rlc3RTdHJpbmdpZmllclByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVy
biAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNw
YWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJl
KEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNW
YWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAtMTkyLDkgKzE5Miw5IEBAIEpTQzo6SXNvU3Vic3Bh
Y2UqIEpTVGVzdFN0cmluZ2lmaWVyOjpzdWIKICAgICAgICAgcmV0dXJuIHNwYWNlOwogICAgIHN0
YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwg
SlNUZXN0U3RyaW5naWZpZXI+IHx8ICFKU1Rlc3RTdHJpbmdpZmllcjo6bmVlZHNEZXN0cnVjdGlv
bik7CiAgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3Rp
YmxlT2JqZWN0LCBKU1Rlc3RTdHJpbmdpZmllcj4pCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNl
Rm9yVGVzdFN0cmluZ2lmaWVyID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNF
X0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmdldCgpLCBK
U1Rlc3RTdHJpbmdpZmllcik7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFN0cmlu
Z2lmaWVyID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVh
cCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCksIEpTVGVzdFN0cmluZ2lmaWVy
KTsKICAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFN0cmluZ2lmaWVy
ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0u
Y2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNUZXN0U3RyaW5naWZpZXIpOworICAgICAgICBzcGFj
ZXMubV9zdWJzcGFjZUZvclRlc3RTdHJpbmdpZmllciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+
IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0
U3RyaW5naWZpZXIpOwogICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0
U3RyaW5naWZpZXIuZ2V0KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNv
ZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZp
ZXJBbm9ueW1vdXNPcGVyYXRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllckFub255bW91c09wZXJhdGlv
bi5jcHAJKHJldmlzaW9uIDI4NjAxMSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllckFub255bW91c09wZXJhdGlvbi5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTY5LDcgKzY5LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1
YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19B
U1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdFN0cmluZ2lmaWVyQW5vbnltb3VzT3Bl
cmF0aW9uUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNw
YWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAg
c3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAg
ICB7CkBAIC0xOTIsOSArMTkyLDkgQEAgSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0U3RyaW5naWZp
ZXJBbm9ueQogICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6Omlz
X2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RTdHJpbmdpZmllckFu
b255bW91c09wZXJhdGlvbj4gfHwgIUpTVGVzdFN0cmluZ2lmaWVyQW5vbnltb3VzT3BlcmF0aW9u
OjpuZWVkc0Rlc3RydWN0aW9uKTsKICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92
PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdFN0cmluZ2lmaWVyQW5vbnltb3VzT3Bl
cmF0aW9uPikKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0U3RyaW5naWZpZXJBbm9u
eW1vdXNPcGVyYXRpb24gPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5J
VCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVGVz
dFN0cmluZ2lmaWVyQW5vbnltb3VzT3BlcmF0aW9uKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3Bh
Y2VGb3JUZXN0U3RyaW5naWZpZXJBbm9ueW1vdXNPcGVyYXRpb24gPSBtYWtlVW5pcXVlPElzb1N1
YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RI
ZWFwQ2VsbFR5cGUoKSwgSlNUZXN0U3RyaW5naWZpZXJBbm9ueW1vdXNPcGVyYXRpb24pOwogICAg
IGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0U3RyaW5naWZpZXJBbm9ueW1v
dXNPcGVyYXRpb24gPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2
bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlLmdldCgpLCBKU1Rlc3RTdHJpbmdpZmllckFub255
bW91c09wZXJhdGlvbik7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFN0cmluZ2lm
aWVyQW5vbnltb3VzT3BlcmF0aW9uID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQ
QUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RTdHJpbmdpZmll
ckFub255bW91c09wZXJhdGlvbik7CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFj
ZUZvclRlc3RTdHJpbmdpZmllckFub255bW91c09wZXJhdGlvbi5nZXQoKTsKIElHTk9SRV9XQVJO
SU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRh
dXRvbG9naWNhbC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllck5hbWVkT3BlcmF0aW9uLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5n
aWZpZXJOYW1lZE9wZXJhdGlvbi5jcHAJKHJldmlzaW9uIDI4NjAxMSkKKysrIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllck5hbWVkT3BlcmF0
aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzAsNyArNzAsNyBAQCBwdWJsaWM6CiAgICAgc3Rh
dGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAg
ICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0U3RyaW5naWZp
ZXJOYW1lZE9wZXJhdGlvblByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxh
aW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAg
ICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0m
IHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90
b3R5cGUpCiAgICAgewpAQCAtMjA5LDkgKzIwOSw5IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVz
dFN0cmluZ2lmaWVyTmFtZWQKICAgICAgICAgcmV0dXJuIHNwYWNlOwogICAgIHN0YXRpY19hc3Nl
cnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0U3Ry
aW5naWZpZXJOYW1lZE9wZXJhdGlvbj4gfHwgIUpTVGVzdFN0cmluZ2lmaWVyTmFtZWRPcGVyYXRp
b246Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29m
X3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0U3RyaW5naWZpZXJOYW1lZE9wZXJh
dGlvbj4pCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFN0cmluZ2lmaWVyTmFtZWRP
cGVyYXRpb24gPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5o
ZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVGVzdFN0cmlu
Z2lmaWVyTmFtZWRPcGVyYXRpb24pOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RT
dHJpbmdpZmllck5hbWVkT3BlcmF0aW9uID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NV
QlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCks
IEpTVGVzdFN0cmluZ2lmaWVyTmFtZWRPcGVyYXRpb24pOwogICAgIGVsc2UKLSAgICAgICAgc3Bh
Y2VzLm1fc3Vic3BhY2VGb3JUZXN0U3RyaW5naWZpZXJOYW1lZE9wZXJhdGlvbiA9IG1ha2VVbmlx
dWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2Vs
bFR5cGUuZ2V0KCksIEpTVGVzdFN0cmluZ2lmaWVyTmFtZWRPcGVyYXRpb24pOworICAgICAgICBz
cGFjZXMubV9zdWJzcGFjZUZvclRlc3RTdHJpbmdpZmllck5hbWVkT3BlcmF0aW9uID0gbWFrZVVu
aXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBD
ZWxsVHlwZSgpLCBKU1Rlc3RTdHJpbmdpZmllck5hbWVkT3BlcmF0aW9uKTsKICAgICBhdXRvKiBz
cGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFN0cmluZ2lmaWVyTmFtZWRPcGVyYXRpb24u
Z2V0KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JF
X1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25J
bXBsZW1lbnRlZEFzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25JbXBsZW1lbnRlZEFzLmNw
cAkocmV2aXNpb24gMjg2MDExKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uSW1wbGVtZW50ZWRBcy5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTcwLDcgKzcwLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1
YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19B
U1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uSW1w
bGVtZW50ZWRBc1Byb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmpl
Y3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQog
ICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBK
U0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUp
CiAgICAgewpAQCAtMjA5LDkgKzIwOSw5IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdFN0cmlu
Z2lmaWVyT3BlcmEKICAgICAgICAgcmV0dXJuIHNwYWNlOwogICAgIHN0YXRpY19hc3NlcnQoc3Rk
Ojppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0U3RyaW5naWZp
ZXJPcGVyYXRpb25JbXBsZW1lbnRlZEFzPiB8fCAhSlNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25J
bXBsZW1lbnRlZEFzOjpuZWVkc0Rlc3RydWN0aW9uKTsKICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6
aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdFN0cmluZ2lmaWVy
T3BlcmF0aW9uSW1wbGVtZW50ZWRBcz4pCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVz
dFN0cmluZ2lmaWVyT3BlcmF0aW9uSW1wbGVtZW50ZWRBcyA9IG1ha2VVbmlxdWU8SXNvU3Vic3Bh
Y2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBD
ZWxsVHlwZS5nZXQoKSwgSlNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25JbXBsZW1lbnRlZEFzKTsK
KyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25JbXBs
ZW1lbnRlZEFzID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0u
aGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCksIEpTVGVzdFN0cmluZ2lm
aWVyT3BlcmF0aW9uSW1wbGVtZW50ZWRBcyk7CiAgICAgZWxzZQotICAgICAgICBzcGFjZXMubV9z
dWJzcGFjZUZvclRlc3RTdHJpbmdpZmllck9wZXJhdGlvbkltcGxlbWVudGVkQXMgPSBtYWtlVW5p
cXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENl
bGxUeXBlLmdldCgpLCBKU1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbkltcGxlbWVudGVkQXMpOwor
ICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RTdHJpbmdpZmllck9wZXJhdGlvbkltcGxl
bWVudGVkQXMgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5o
ZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCksIEpTVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uSW1w
bGVtZW50ZWRBcyk7CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RT
dHJpbmdpZmllck9wZXJhdGlvbkltcGxlbWVudGVkQXMuZ2V0KCk7CiBJR05PUkVfV0FSTklOR1Nf
QkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xv
Z2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25OYW1lZFRvU3RyaW5nLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3Ry
aW5naWZpZXJPcGVyYXRpb25OYW1lZFRvU3RyaW5nLmNwcAkocmV2aXNpb24gMjg2MDExKQorKysg
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVy
T3BlcmF0aW9uTmFtZWRUb1N0cmluZy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY5LDcgKzY5LDcg
QEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6
OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJB
QkxFKEpTVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uTmFtZWRUb1N0cmluZ1Byb3RvdHlwZSwgQmFz
ZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJu
ICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVy
ZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAtMTkyLDkgKzE5Miw5
IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdFN0cmluZ2lmaWVyT3BlcmEKICAgICAgICAgcmV0
dXJuIHNwYWNlOwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rl
c3RydWN0aWJsZU9iamVjdCwgSlNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25OYW1lZFRvU3RyaW5n
PiB8fCAhSlNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25OYW1lZFRvU3RyaW5nOjpuZWVkc0Rlc3Ry
dWN0aW9uKTsKICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0
cnVjdGlibGVPYmplY3QsIEpTVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uTmFtZWRUb1N0cmluZz4p
Ci0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uTmFt
ZWRUb1N0cmluZyA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZt
LmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNUZXN0U3Ry
aW5naWZpZXJPcGVyYXRpb25OYW1lZFRvU3RyaW5nKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3Bh
Y2VGb3JUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25OYW1lZFRvU3RyaW5nID0gbWFrZVVuaXF1ZTxJ
c29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2Jq
ZWN0SGVhcENlbGxUeXBlKCksIEpTVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uTmFtZWRUb1N0cmlu
Zyk7CiAgICAgZWxzZQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RTdHJpbmdpZmll
ck9wZXJhdGlvbk5hbWVkVG9TdHJpbmcgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VC
U1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlLmdldCgpLCBKU1Rlc3RTdHJp
bmdpZmllck9wZXJhdGlvbk5hbWVkVG9TdHJpbmcpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFj
ZUZvclRlc3RTdHJpbmdpZmllck9wZXJhdGlvbk5hbWVkVG9TdHJpbmcgPSBtYWtlVW5pcXVlPElz
b1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBl
KCksIEpTVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uTmFtZWRUb1N0cmluZyk7CiAgICAgYXV0byog
c3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RTdHJpbmdpZmllck9wZXJhdGlvbk5hbWVk
VG9TdHJpbmcuZ2V0KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUi
KQogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJS
ZWFkT25seUF0dHJpYnV0ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyUmVhZE9ubHlBdHRyaWJ1dGUuY3Bw
CShyZXZpc2lvbiAyODYwMTEpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0U3RyaW5naWZpZXJSZWFkT25seUF0dHJpYnV0ZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTcxLDcgKzcxLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNl
KiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRf
SVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdFN0cmluZ2lmaWVyUmVhZE9ubHlBdHRyaWJ1dGVQ
cm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7Cisg
ICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KICAgICBzdGF0aWMg
SlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKQEAg
LTIwOCw5ICsyMDgsOSBAQCBKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3RTdHJpbmdpZmllclJlYWRP
CiAgICAgICAgIHJldHVybiBzcGFjZTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9v
Zl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdFN0cmluZ2lmaWVyUmVhZE9ubHlB
dHRyaWJ1dGU+IHx8ICFKU1Rlc3RTdHJpbmdpZmllclJlYWRPbmx5QXR0cmlidXRlOjpuZWVkc0Rl
c3RydWN0aW9uKTsKICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNE
ZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdFN0cmluZ2lmaWVyUmVhZE9ubHlBdHRyaWJ1dGU+KQot
ICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RTdHJpbmdpZmllclJlYWRPbmx5QXR0cmli
dXRlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwg
dm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmdldCgpLCBKU1Rlc3RTdHJpbmdpZmll
clJlYWRPbmx5QXR0cmlidXRlKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0U3Ry
aW5naWZpZXJSZWFkT25seUF0dHJpYnV0ZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19T
VUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgp
LCBKU1Rlc3RTdHJpbmdpZmllclJlYWRPbmx5QXR0cmlidXRlKTsKICAgICBlbHNlCi0gICAgICAg
IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFN0cmluZ2lmaWVyUmVhZE9ubHlBdHRyaWJ1dGUgPSBt
YWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxs
SGVhcENlbGxUeXBlLmdldCgpLCBKU1Rlc3RTdHJpbmdpZmllclJlYWRPbmx5QXR0cmlidXRlKTsK
KyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0U3RyaW5naWZpZXJSZWFkT25seUF0dHJp
YnV0ZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAs
IHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0U3RyaW5naWZpZXJSZWFkT25seUF0dHJpYnV0
ZSk7CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RTdHJpbmdpZmll
clJlYWRPbmx5QXR0cmlidXRlLmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNo
YWJsZS1jb2RlIikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUi
KQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0
cmluZ2lmaWVyUmVhZFdyaXRlQXR0cmlidXRlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJSZWFkV3JpdGVB
dHRyaWJ1dGUuY3BwCShyZXZpc2lvbiAyODYwMTEpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJSZWFkV3JpdGVBdHRyaWJ1dGUuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC03Miw3ICs3Miw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlND
OjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBT
VEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3RTdHJpbmdpZmllclJlYWRX
cml0ZUF0dHJpYnV0ZVByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5P
YmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAg
fQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZt
LCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5
cGUpCiAgICAgewpAQCAtMjI3LDkgKzIyNyw5IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdFN0
cmluZ2lmaWVyUmVhZFcKICAgICAgICAgcmV0dXJuIHNwYWNlOwogICAgIHN0YXRpY19hc3NlcnQo
c3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0U3RyaW5n
aWZpZXJSZWFkV3JpdGVBdHRyaWJ1dGU+IHx8ICFKU1Rlc3RTdHJpbmdpZmllclJlYWRXcml0ZUF0
dHJpYnV0ZTo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jh
c2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RTdHJpbmdpZmllclJlYWRX
cml0ZUF0dHJpYnV0ZT4pCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFN0cmluZ2lm
aWVyUmVhZFdyaXRlQXR0cmlidXRlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQ
QUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmdldCgp
LCBKU1Rlc3RTdHJpbmdpZmllclJlYWRXcml0ZUF0dHJpYnV0ZSk7CisgICAgICAgIHNwYWNlcy5t
X3N1YnNwYWNlRm9yVGVzdFN0cmluZ2lmaWVyUmVhZFdyaXRlQXR0cmlidXRlID0gbWFrZVVuaXF1
ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxl
T2JqZWN0SGVhcENlbGxUeXBlKCksIEpTVGVzdFN0cmluZ2lmaWVyUmVhZFdyaXRlQXR0cmlidXRl
KTsKICAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFN0cmluZ2lmaWVy
UmVhZFdyaXRlQXR0cmlidXRlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNF
X0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNUZXN0U3RyaW5naWZp
ZXJSZWFkV3JpdGVBdHRyaWJ1dGUpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RT
dHJpbmdpZmllclJlYWRXcml0ZUF0dHJpYnV0ZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElT
T19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0U3Ry
aW5naWZpZXJSZWFkV3JpdGVBdHRyaWJ1dGUpOwogICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1f
c3Vic3BhY2VGb3JUZXN0U3RyaW5naWZpZXJSZWFkV3JpdGVBdHRyaWJ1dGUuZ2V0KCk7CiBJR05P
UkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JF
R0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0VHlwZWRlZnMuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RUeXBlZGVmcy5jcHAJKHJl
dmlzaW9uIDI4NjAxMSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RUeXBlZGVmcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExNiw3ICsxMTYsNyBAQCBw
dWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0m
IHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUo
SlNUZXN0VHlwZWRlZnNQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWlu
T2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAg
IH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2
bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90
eXBlKQogICAgIHsKQEAgLTc3OCw5ICs3NzgsOSBAQCBKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3RU
eXBlZGVmczo6c3Vic3BhCiAgICAgICAgIHJldHVybiBzcGFjZTsKICAgICBzdGF0aWNfYXNzZXJ0
KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdFR5cGVk
ZWZzPiB8fCAhSlNUZXN0VHlwZWRlZnM6Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0
ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0
VHlwZWRlZnM+KQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RUeXBlZGVmcyA9IG1h
a2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3Ry
dWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNUZXN0VHlwZWRlZnMpOworICAgICAg
ICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RUeXBlZGVmcyA9IG1ha2VVbmlxdWU8SXNvU3Vic3Bh
Y2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBD
ZWxsVHlwZSgpLCBKU1Rlc3RUeXBlZGVmcyk7CiAgICAgZWxzZQotICAgICAgICBzcGFjZXMubV9z
dWJzcGFjZUZvclRlc3RUeXBlZGVmcyA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJT
UEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVGVzdFR5cGVk
ZWZzKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0VHlwZWRlZnMgPSBtYWtlVW5p
cXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENl
bGxUeXBlKCksIEpTVGVzdFR5cGVkZWZzKTsKICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1
YnNwYWNlRm9yVGVzdFR5cGVkZWZzLmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJl
YWNoYWJsZS1jb2RlIikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBh
cmUiKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTV29y
a2VyR2xvYmFsU2NvcGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1dvcmtlckdsb2JhbFNjb3BlLmNwcAkocmV2aXNpb24gMjg2MDEx
KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTV29ya2VyR2xv
YmFsU2NvcGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNDksNyArMjQ5LDcgQEAgSlNDOjpJc29T
dWJzcGFjZSogSlNXb3JrZXJHbG9iYWxTY29wZTo6cwogICAgIGF1dG8mIHNwYWNlcyA9IGNsaWVu
dERhdGEuc3Vic3BhY2VzKCk7CiAgICAgaWYgKGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3Bh
Y2VGb3JXb3JrZXJHbG9iYWxTY29wZS5nZXQoKSkKICAgICAgICAgcmV0dXJuIHNwYWNlOwotICAg
IHNwYWNlcy5tX3N1YnNwYWNlRm9yV29ya2VyR2xvYmFsU2NvcGUgPSBtYWtlVW5pcXVlPElzb1N1
YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCBjbGllbnREYXRhLm1faGVhcENlbGxU
eXBlRm9ySlNXb3JrZXJHbG9iYWxTY29wZS5nZXQoKSwgSlNXb3JrZXJHbG9iYWxTY29wZSk7Cisg
ICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JXb3JrZXJHbG9iYWxTY29wZSA9IG1ha2VVbmlxdWU8SXNv
U3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICpjbGllbnREYXRhLm1faGVhcENl
bGxUeXBlRm9ySlNXb3JrZXJHbG9iYWxTY29wZSwgSlNXb3JrZXJHbG9iYWxTY29wZSk7CiAgICAg
YXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvcldvcmtlckdsb2JhbFNjb3BlLmdldCgp
OwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKIElHTk9SRV9XQVJO
SU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRleDogU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTV29ya2VyR2xvYmFsU2NvcGUuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNXb3JrZXJHbG9i
YWxTY29wZS5oCShyZXZpc2lvbiAyODYwMTEpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNXb3JrZXJHbG9iYWxTY29wZS5oCSh3b3JraW5nIGNvcHkpCkBAIC04
NSw3ICs4NSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3Bh
Y2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJT
UEFDRV9TSEFSQUJMRShKU1dvcmtlckdsb2JhbFNjb3BlUHJvdG90eXBlLCBCYXNlKTsKLSAgICAg
ICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWlu
T2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVT
dHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
SlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNXb3JrbGV0R2xvYmFsU2NvcGUuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1dvcmtsZXRHbG9i
YWxTY29wZS5jcHAJKHJldmlzaW9uIDI4NjAxMSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1dvcmtsZXRHbG9iYWxTY29wZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTE2Myw3ICsxNjMsNyBAQCBKU0M6Oklzb1N1YnNwYWNlKiBKU1dvcmtsZXRHbG9iYWxTY29w
ZTo6CiAgICAgYXV0byYgc3BhY2VzID0gY2xpZW50RGF0YS5zdWJzcGFjZXMoKTsKICAgICBpZiAo
YXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvcldvcmtsZXRHbG9iYWxTY29wZS5nZXQo
KSkKICAgICAgICAgcmV0dXJuIHNwYWNlOwotICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yV29ya2xl
dEdsb2JhbFNjb3BlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQo
dm0uaGVhcCwgY2xpZW50RGF0YS5tX2hlYXBDZWxsVHlwZUZvckpTV29ya2xldEdsb2JhbFNjb3Bl
LmdldCgpLCBKU1dvcmtsZXRHbG9iYWxTY29wZSk7CisgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JX
b3JrbGV0R2xvYmFsU2NvcGUgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0Vf
SU5JVCh2bS5oZWFwLCAqY2xpZW50RGF0YS5tX2hlYXBDZWxsVHlwZUZvckpTV29ya2xldEdsb2Jh
bFNjb3BlLCBKU1dvcmtsZXRHbG9iYWxTY29wZSk7CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMu
bV9zdWJzcGFjZUZvcldvcmtsZXRHbG9iYWxTY29wZS5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19C
RUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9n
aWNhbC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1dvcmtsZXRHbG9iYWxTY29wZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1dvcmtsZXRHbG9iYWxTY29wZS5oCShyZXZpc2lv
biAyODYwMTEpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNX
b3JrbGV0R2xvYmFsU2NvcGUuaAkod29ya2luZyBjb3B5KQpAQCAtODUsNyArODUsNyBAQCBwdWJs
aWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZt
KQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNX
b3JrbGV0R2xvYmFsU2NvcGVQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBs
YWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwog
ICAgIH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZN
JiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJv
dG90eXBlKQogICAgIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfcnVu
dGltZS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX3J1
bnRpbWUubW0JKHJldmlzaW9uIDI4NjAxMSkKKysrIFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpj
L29iamNfcnVudGltZS5tbQkod29ya2luZyBjb3B5KQpAQCAtMzM0LDcgKzMzNCw3IEBAIGJvb2wg
T2JqY0ZhbGxiYWNrT2JqZWN0SW1wOjp0b0Jvb2xlYW4oSlMKIAogSlNDOjpJc29TdWJzcGFjZSog
T2JqY0ZhbGxiYWNrT2JqZWN0SW1wOjpzdWJzcGFjZUZvckltcGwoSlNDOjpWTSYgdm0pCiB7Ci0g
ICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEpTQzo6SXNvU3Vic3BhY2VQZXJWTT4gcGVyVk0oW10g
KEpTQzo6Vk0mIHZtKSB7IHJldHVybiBJU09fU1VCU1BBQ0VfUEFSQU1FVEVSUyh2bS5kZXN0cnVj
dGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuZ2V0KCksIE9iamNGYWxsYmFja09iamVjdEltcCk7IH0p
OworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxKU0M6Oklzb1N1YnNwYWNlUGVyVk0+IHBlclZN
KFtdIChKU0M6OlZNJiB2bSkgeyByZXR1cm4gSVNPX1NVQlNQQUNFX1BBUkFNRVRFUlModm0uZGVz
dHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCksIE9iamNGYWxsYmFja09iamVjdEltcCk7IH0p
OwogICAgIHJldHVybiAmcGVyVk0uZ2V0KCkuZm9yVk0odm0pOwogfQogCg==
</data>
<flag name="commit-queue"
          id="469814"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>444721</attachid>
            <date>2021-11-18 12:52:20 -0800</date>
            <delta_ts>2021-11-18 14:17:27 -0800</delta_ts>
            <desc>proposed patch.</desc>
            <filename>bug-233240b.patch</filename>
            <type>text/plain</type>
            <size>434739</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDI4NjAxMSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpA
QCAtMTEzOSwxMiArMTEzOSwxMiBAQCBzZXQoSmF2YVNjcmlwdENvcmVfUFJJVkFURV9GUkFNRVdP
UktfSEVBCiAgICAgcnVudGltZS9Qcml2YXRlTmFtZS5oCiAgICAgcnVudGltZS9Qcm9ncmFtRXhl
Y3V0YWJsZS5oCiAgICAgcnVudGltZS9Qcm9wZXJ0eURlc2NyaXB0b3IuaAotICAgIHJ1bnRpbWUv
UHJvcGVydHlNYXBIYXNoVGFibGUuaAogICAgIHJ1bnRpbWUvUHJvcGVydHlOYW1lLmgKICAgICBy
dW50aW1lL1Byb3BlcnR5TmFtZUFycmF5LmgKICAgICBydW50aW1lL1Byb3BlcnR5T2Zmc2V0LmgK
ICAgICBydW50aW1lL1Byb3BlcnR5U2xvdC5oCiAgICAgcnVudGltZS9Qcm9wZXJ0eVN0b3JhZ2Uu
aAorICAgIHJ1bnRpbWUvUHJvcGVydHlUYWJsZS5oCiAgICAgcnVudGltZS9Qcm90ZWN0LmgKICAg
ICBydW50aW1lL1Byb3RvdHlwZUtleS5oCiAgICAgcnVudGltZS9Qcm94eU9iamVjdC5oCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvanNjLmNwcAkocmV2aXNpb24gMjg2MDExKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2pzYy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0MjksNyArMTQyOSw3IEBAIHB1Ymxp
YzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vic3BhY2VBY2Nlc3M+CiAgICAg
c3RhdGljIENvbXBsZXRlU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7Ci0gICAg
ICAgIHJldHVybiAmdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAm
dm0uZGVzdHJ1Y3RpYmxlT2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBKU0NNZW1vcnlGb290
cHJpbnQoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKQEAgLTE3NjIsNyArMTc2Miw3IEBA
IHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vic3BhY2VBY2Nlc3M+
CiAgICAgc3RhdGljIENvbXBsZXRlU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7
Ci0gICAgICAgIHJldHVybiAmdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0U3BhY2U7CisgICAgICAgIHJl
dHVybiAmdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMg
U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCShyZXZpc2lvbiAyODYwMTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTc1MCw3
ICsxNzUwLDcgQEAKIAkJQkM3NTZGQzkwRTIwMzFCMjAwREU3RDEyIC8qIEpTR2xvYmFsT2JqZWN0
RnVuY3Rpb25zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBCQzc1NkZDNzBFMjAzMUIyMDBERTdEMTIgLyogSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlCQzg3Q0RC
OTEwNzEyQUQ0MDAwNjE0Q0YgLyogSlNPTk9iamVjdC5sdXQuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDODdDREI4MTA3MTJBQ0EwMDA2MTRDRiAvKiBK
U09OT2JqZWN0Lmx1dC5oICovOyB9OwogCQlCQzkwNDE0ODBFQjkyNTA5MDBGRTI2RkEgLyogU3Ry
dWN0dXJlVHJhbnNpdGlvblRhYmxlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBCQzkwNDE0NzBFQjkyNTA5MDBGRTI2RkEgLyogU3RydWN0dXJlVHJhbnNp
dGlvblRhYmxlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKLQkJQkM5NTQzN0QwRUJBNzBGRDAwNzJCNkQzIC8qIFByb3BlcnR5TWFwSGFzaFRhYmxlLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzk1NDM3QzBF
QkE3MEZEMDA3MkI2RDMgLyogUHJvcGVydHlNYXBIYXNoVGFibGUuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlCQzk1NDM3RDBFQkE3MEZEMDA3MkI2
RDMgLyogUHJvcGVydHlUYWJsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQkM5NTQzN0MwRUJBNzBGRDAwNzJCNkQzIC8qIFByb3BlcnR5VGFibGUuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlCQ0JFMkNB
RTE0RTk4NUFBMDAwNTkzQUQgLyogR0NBc3NlcnRpb25zLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0JFMkNBRDE0RTk4NUFBMDAwNTkzQUQgLyogR0NB
c3NlcnRpb25zLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJQkNDRjBEMDgwRUYwQUFCOTAwNDEzQzhGIC8qIFN0cnVjdHVyZVN0dWJJbmZvLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0NGMEQwNzBFRjBB
QUI5MDA0MTNDOEYgLyogU3RydWN0dXJlU3R1YkluZm8uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlCQ0QyMDJDMjBFMTcwNkE3MDAyQzdFODIgLyog
UmVnRXhwQ29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEJDRDIwMkJFMEUxNzA2QTcwMDJDN0U4MiAvKiBSZWdFeHBDb25zdHJ1Y3Rvci5o
ICovOyB9OwpAQCAtMTk1OSw3ICsxOTU5LDcgQEAKIAkJRTNDNjk0QjMyMzAyNjg3NzAwNkZCRTQy
IC8qIFdhc21PU1JFbnRyeURhdGEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEUzQzY5NEIxMjMwMjY4NzMwMDZGQkU0MiAvKiBXYXNtT1NSRW50cnlEYXRh
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTND
NzNBOTEyNUJGQTczQjAwRUZFMzAzIC8qIFdhc21TdHJlYW1pbmdQbGFuLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFM0M3M0E5MDI1QkZBNzM0MDBFRkUz
MDMgLyogV2FzbVN0cmVhbWluZ1BsYW4uaCAqLzsgfTsKIAkJRTNDNzlDQUIxREI5QTREQzAwRDFF
Q0E0IC8qIERPTUpJVEVmZmVjdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRTNDNzlDQUExREI5QTRENjAwRDFFQ0E0IC8qIERPTUpJVEVmZmVjdC5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCUUzQzhFRDQz
MjNBMURCQ0IwMDEzMTk1OCAvKiBJc29JbmxpbmVkSGVhcENlbGxUeXBlLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFM0M4RUQ0MjIzQTFEQkM1MDAxMzE5
NTggLyogSXNvSW5saW5lZEhlYXBDZWxsVHlwZS5oICovOyB9OworCQlFM0M4RUQ0MzIzQTFEQkNC
MDAxMzE5NTggLyogSXNvSW5saW5lZEhlYXBDZWxsVHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTNDOEVENDIyM0ExREJDNTAwMTMxOTU4IC8qIElz
b0lubGluZWRIZWFwQ2VsbFR5cGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQlFM0NBM0E0RTI1MjdBQjJGMDA0ODAyQkYgLyogSklUT3BlcmF0aW9u
TGlzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTND
QTNBNEMyNTI3QUIyRjAwNDgwMkJGIC8qIEpJVE9wZXJhdGlvbkxpc3QuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFM0QyMzlDOTFCODI5QzFDMDBC
QkVGNjcgLyogSlNNb2R1bGVFbnZpcm9ubWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRTNEMjM5QzcxQjgyOUMxQzAwQkJFRjY3IC8qIEpTTW9kdWxl
RW52aXJvbm1lbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQlFM0QzNTE1RjI0MUI4OUQ3MDA4REMxNkUgLyogTWFya2VkSlNWYWx1ZVJlZkFycmF5
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFM0QzNTE1
RDI0MUI4OUNFMDA4REMxNkUgLyogTWFya2VkSlNWYWx1ZVJlZkFycmF5LmggKi87IH07CkBAIC00
OTkxLDcgKzQ5OTEsNyBAQAogCQlCQzg3Q0RCODEwNzEyQUNBMDAwNjE0Q0YgLyogSlNPTk9iamVj
dC5sdXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNPTk9iamVjdC5sdXQu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkM4RjNDQ0YwREFGMTdCQTAwNTc3QTgw
IC8qIENvbnN0cnVjdERhdGEuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29u
c3RydWN0RGF0YS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzkwNDE0NzBFQjky
NTA5MDBGRTI2RkEgLyogU3RydWN0dXJlVHJhbnNpdGlvblRhYmxlLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFN0cnVjdHVyZVRyYW5zaXRpb25UYWJsZS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwotCQlCQzk1NDM3QzBFQkE3MEZEMDA3MkI2RDMgLyogUHJvcGVydHlN
YXBIYXNoVGFibGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUHJvcGVydHlN
YXBIYXNoVGFibGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkM5NTQzN0MwRUJB
NzBGRDAwNzJCNkQzIC8qIFByb3BlcnR5VGFibGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gUHJvcGVydHlUYWJsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlC
QzlCQjk1QjBFMTk2ODA2MDBERjg4NTUgLyogSW50ZXJuYWxGdW5jdGlvbi5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbnRlcm5hbEZ1bmN0aW9uLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkNBNjJERkUwRTI4MjYyMzAwMDRGMzBEIC8qIENhbGxE
YXRhLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENhbGxEYXRhLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkNBNjJERkYwRTI4MjYzMTAwMDRGMzBE
IC8qIENvbnN0cnVjdERhdGEuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gQ29uc3RydWN0RGF0YS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC03OTU4
LDcgKzc5NTgsNiBAQAogCQkJCTE0NzM0MUQzMURDMDJFNkQwMEFBMjlCQSAvKiBQcm9ncmFtRXhl
Y3V0YWJsZS5oICovLAogCQkJCUE3RkI2MEEzMTAzRjdEQzIwMDE3QTI4NiAvKiBQcm9wZXJ0eURl
c2NyaXB0b3IuY3BwICovLAogCQkJCUE3RkI2MDRCMTAzRjVFQUIwMDE3QTI4NiAvKiBQcm9wZXJ0
eURlc2NyaXB0b3IuaCAqLywKLQkJCQlCQzk1NDM3QzBFQkE3MEZEMDA3MkI2RDMgLyogUHJvcGVy
dHlNYXBIYXNoVGFibGUuaCAqLywKIAkJCQk4NjE1OEFCMjE1NUM4QjNGMDBCNDVDOUMgLyogUHJv
cGVydHlOYW1lLmggKi8sCiAJCQkJNjU0MDBDMTAwQTY5QkFGMjAwNTA5ODg3IC8qIFByb3BlcnR5
TmFtZUFycmF5LmggKi8sCiAJCQkJMEZGNzE2OEExNUEzQjIzMTAwOEY1REFBIC8qIFByb3BlcnR5
T2Zmc2V0LmggKi8sCkBAIC03OTY2LDYgKzc5NjUsNyBAQAogCQkJCTY1NjIxRTZDMDg5RTg1OTcw
MDc2MEYzNSAvKiBQcm9wZXJ0eVNsb3QuaCAqLywKIAkJCQkwRkI3RjM5MDE1RUQ4RTM4MDBGMTY3
QjIgLyogUHJvcGVydHlTdG9yYWdlLmggKi8sCiAJCQkJQUQxQ0YwNjgxNkRDQUIyRDAwQjk3MTIz
IC8qIFByb3BlcnR5VGFibGUuY3BwICovLAorCQkJCUJDOTU0MzdDMEVCQTcwRkQwMDcyQjZEMyAv
KiBQcm9wZXJ0eVRhYmxlLmggKi8sCiAJCQkJNjVDMDJGQkIwNjM3NDYyQTAwM0U3RUU2IC8qIFBy
b3RlY3QuaCAqLywKIAkJCQkwRjc0QjkzQTFGODk2MTQ1MDBCOTM1RDMgLyogUHJvdG90eXBlS2V5
LmggKi8sCiAJCQkJNzlCMDBDQjgxQzZBQjA3RTAwODhDNjVEIC8qIFByb3h5Q29uc3RydWN0b3Iu
Y3BwICovLApAQCAtMTA2NzYsNyArMTA2NzYsNyBAQAogCQkJCTE0NzM0MUQ0MURDMDJFNkQwMEFB
MjlCQSAvKiBQcm9ncmFtRXhlY3V0YWJsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZEM0U0MEUx
QjYxOEI2NjAwQzgwRTFFIC8qIFByb3BlcnR5Q29uZGl0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlBN0ZCNjEwMDEwNDBDMzhCMDAxN0EyODYgLyogUHJvcGVydHlEZXNjcmlwdG9yLmggaW4gSGVh
ZGVycyAqLywKLQkJCQlCQzk1NDM3RDBFQkE3MEZEMDA3MkI2RDMgLyogUHJvcGVydHlNYXBIYXNo
VGFibGUuaCBpbiBIZWFkZXJzICovLAorCQkJCUJDOTU0MzdEMEVCQTcwRkQwMDcyQjZEMyAvKiBQ
cm9wZXJ0eVRhYmxlLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NjE1OEFCMzE1NUM4QjQwMDBCNDVD
OUMgLyogUHJvcGVydHlOYW1lLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzQ1NDBFMTZGNUNE
MDBCMzQ0NjAgLyogUHJvcGVydHlOYW1lQXJyYXkuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRjcx
NjhDMTVBM0IyMzUwMDhGNURBQSAvKiBQcm9wZXJ0eU9mZnNldC5oIGluIEhlYWRlcnMgKi8sCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vzc0Nhc2UuY3BwCShy
ZXZpc2lvbiAyODYwMTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNz
Q2FzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIyNzcsNyArMjI3Nyw3IEBAIHZvaWQgQWNjZXNz
Q2FzZTo6Z2VuZXJhdGVJbXBsKEFjY2Vzc0dlbmUKICAgICAgICAgICAgIHNpemVfdCBuZXdTaXpl
ID0gbmV3U3RydWN0dXJlKCktPm91dE9mTGluZUNhcGFjaXR5KCkgKiBzaXplb2YoSlNWYWx1ZSk7
CiAKICAgICAgICAgICAgIGlmIChhbGxvY2F0aW5nSW5saW5lKSB7Ci0gICAgICAgICAgICAgICAg
QWxsb2NhdG9yIGFsbG9jYXRvciA9IHZtLmpzVmFsdWVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlLmFs
bG9jYXRvckZvcihuZXdTaXplLCBBbGxvY2F0b3JGb3JNb2RlOjpBbGxvY2F0b3JJZkV4aXN0cyk7
CisgICAgICAgICAgICAgICAgQWxsb2NhdG9yIGFsbG9jYXRvciA9IHZtLmpzVmFsdWVHaWdhY2Fn
ZUF1eGlsaWFyeVNwYWNlKCkuYWxsb2NhdG9yRm9yKG5ld1NpemUsIEFsbG9jYXRvckZvck1vZGU6
OkFsbG9jYXRvcklmRXhpc3RzKTsKIAogICAgICAgICAgICAgICAgIGppdC5lbWl0QWxsb2NhdGUo
c2NyYXRjaEdQUiwgSklUQWxsb2NhdG9yOjpjb25zdGFudChhbGxvY2F0b3IpLCBzY3JhdGNoR1BS
Miwgc2NyYXRjaEdQUjMsIHNsb3dQYXRoKTsKICAgICAgICAgICAgICAgICBqaXQuYWRkUHRyKEND
YWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKG5ld1NpemUgKyBzaXplb2YoSW5kZXhpbmdIZWFkZXIp
KSwgc2NyYXRjaEdQUik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXZh
bENvZGVCbG9jay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9FdmFsQ29kZUJsb2NrLmgJKHJldmlzaW9uIDI4NjAxMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9FdmFsQ29kZUJsb2NrLmgJKHdvcmtpbmcgY29weSkKQEAgLTQxLDcgKzQx
LDcgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lLCBTdWJzcGFjZUFjY2Vzcz4KICAg
ICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7Ci0gICAgICAg
IHJldHVybiAmdm0uY29kZUJsb2NrU3BhY2Uuc3BhY2U7CisgICAgICAgIHJldHVybiAmdm0uY29k
ZUJsb2NrU3BhY2UoKS5zcGFjZTsKICAgICB9CiAKICAgICBzdGF0aWMgRXZhbENvZGVCbG9jayog
Y3JlYXRlKFZNJiB2bSwgQ29weVBhcnNlZEJsb2NrVGFnLCBFdmFsQ29kZUJsb2NrJiBvdGhlcikK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FeGVjdXRhYmxlVG9Db2RlQmxv
Y2tFZGdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
RXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZS5jcHAJKHJldmlzaW9uIDI4NjAxMSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtODEsNyArODEsNyBAQCB2b2lkIEV4ZWN1dGFibGVUb0NvZGVCbG9j
a0VkZ2U6OnZpc2l0Q2hpCiAgICAgICAgIHZpc2l0b3IuYXBwZW5kVW5iYXJyaWVyZWQoY29kZUJs
b2NrKTsKICAgICAKICAgICBpZiAoIXZpc2l0b3IuaXNNYXJrZWQoY29kZUJsb2NrKSkKLSAgICAg
ICAgdm0uZXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZXNXaXRoRmluYWxpemVycy5hZGQoZWRnZSk7
CisgICAgICAgIHZtLmV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2VzV2l0aEZpbmFsaXplcnMoKS5h
ZGQoZWRnZSk7CiAgICAgCiAgICAgaWYgKEpJVENvZGU6OmlzT3B0aW1pemluZ0pJVChjb2RlQmxv
Y2stPmppdFR5cGUoKSkpIHsKICAgICAgICAgLy8gSWYgd2UgamV0dGlzb24gb3Vyc2VsdmVzIHdl
J2xsIGluc3RhbGwgb3VyIGFsdGVybmF0aXZlLCBzbyBtYWtlIHN1cmUgdGhhdCBpdApAQCAtMTE0
LDcgKzExNCw3IEBAIHZvaWQgRXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZTo6dmlzaXRDaGkKICAg
ICAvLyBub3QgeWV0IG1hcmtlZCBiZWNhdXNlIGl0IHdlYWtseSBkZXBlbmRzIG9uIGEgc3RydWN0
dXJlIHRoYXQgd2UgZGlkIG5vdCB5ZXQgbWFyaywgdGhlbiB3ZQogICAgIC8vIHdpbGwga2VlcCBm
aXhwb2ludGluZyB1bnRpbCB0aGUgZW5kLgogICAgIHZpc2l0b3IuYXBwZW5kVW5iYXJyaWVyZWQo
Y29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSk7Ci0gICAgdm0uZXhlY3V0YWJsZVRvQ29kZUJsb2Nr
RWRnZXNXaXRoQ29uc3RyYWludHMuYWRkKGVkZ2UpOworICAgIHZtLmV4ZWN1dGFibGVUb0NvZGVC
bG9ja0VkZ2VzV2l0aENvbnN0cmFpbnRzKCkuYWRkKGVkZ2UpOwogICAgIGVkZ2UtPnJ1bkNvbnN0
cmFpbnQobG9ja2VyLCB2bSwgdmlzaXRvcik7CiB9CiAKQEAgLTE0Myw4ICsxNDMsOCBAQCB2b2lk
IEV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2U6OmZpbmFsaXplCiAgICAgICAgIG1fY29kZUJsb2Nr
LmNsZWFyKCk7CiAgICAgfQogICAgIAotICAgIHZtLmV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2Vz
V2l0aEZpbmFsaXplcnMucmVtb3ZlKHRoaXMpOwotICAgIHZtLmV4ZWN1dGFibGVUb0NvZGVCbG9j
a0VkZ2VzV2l0aENvbnN0cmFpbnRzLnJlbW92ZSh0aGlzKTsKKyAgICB2bS5leGVjdXRhYmxlVG9D
b2RlQmxvY2tFZGdlc1dpdGhGaW5hbGl6ZXJzKCkucmVtb3ZlKHRoaXMpOworICAgIHZtLmV4ZWN1
dGFibGVUb0NvZGVCbG9ja0VkZ2VzV2l0aENvbnN0cmFpbnRzKCkucmVtb3ZlKHRoaXMpOwogfQog
CiBpbmxpbmUgdm9pZCBFeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlOjphY3RpdmF0ZSgpCkBAIC0y
MDEsNyArMjAxLDcgQEAgdm9pZCBFeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlOjpydW5Db25zdAog
ICAgIGNvZGVCbG9jay0+ZGV0ZXJtaW5lTGl2ZW5lc3MobG9ja2VyLCB2aXNpdG9yKTsKIAogICAg
IGlmICh2aXNpdG9yLmlzTWFya2VkKGNvZGVCbG9jaykpCi0gICAgICAgIHZtLmV4ZWN1dGFibGVU
b0NvZGVCbG9ja0VkZ2VzV2l0aENvbnN0cmFpbnRzLnJlbW92ZSh0aGlzKTsKKyAgICAgICAgdm0u
ZXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZXNXaXRoQ29uc3RyYWludHMoKS5yZW1vdmUodGhpcyk7
CiB9CiAKIHRlbXBsYXRlIHZvaWQgRXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZTo6cnVuQ29uc3Ry
YWludChjb25zdCBDb25jdXJyZW50SlNMb2NrZXImLCBWTSYsIEFic3RyYWN0U2xvdFZpc2l0b3Im
KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FeGVjdXRhYmxlVG9Db2Rl
QmxvY2tFZGdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0V4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2UuaAkocmV2aXNpb24gMjg2MDExKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0V4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2UuaAkod29y
a2luZyBjb3B5KQpAQCAtNDMsNyArNDMsNyBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5h
bWUgQ2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNzPgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vi
c3BhY2VGb3IoVk0mIHZtKQogICAgIHsKLSAgICAgICAgcmV0dXJuICZ2bS5leGVjdXRhYmxlVG9D
b2RlQmxvY2tFZGdlU3BhY2U7CisgICAgICAgIHJldHVybiAmdm0uZXhlY3V0YWJsZVRvQ29kZUJs
b2NrRWRnZVNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3Ry
dWN0dXJlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlIHByb3RvdHlwZSk7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRnVuY3Rpb25Db2RlQmxvY2suaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRnVuY3Rpb25Db2RlQmxvY2su
aAkocmV2aXNpb24gMjg2MDExKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Z1
bmN0aW9uQ29kZUJsb2NrLmgJKHdvcmtpbmcgY29weSkKQEAgLTQyLDcgKzQyLDcgQEAgcHVibGlj
OgogICAgIHRlbXBsYXRlPHR5cGVuYW1lLCBTdWJzcGFjZUFjY2Vzcz4KICAgICBzdGF0aWMgSXNv
U3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7Ci0gICAgICAgIHJldHVybiAmdm0u
Y29kZUJsb2NrU3BhY2Uuc3BhY2U7CisgICAgICAgIHJldHVybiAmdm0uY29kZUJsb2NrU3BhY2Uo
KS5zcGFjZTsKICAgICB9CiAKICAgICBzdGF0aWMgRnVuY3Rpb25Db2RlQmxvY2sqIGNyZWF0ZShW
TSYgdm0sIENvcHlQYXJzZWRCbG9ja1RhZywgRnVuY3Rpb25Db2RlQmxvY2smIG90aGVyKQpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL01vZHVsZVByb2dyYW1Db2RlQmxvY2su
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTW9kdWxlUHJv
Z3JhbUNvZGVCbG9jay5oCShyZXZpc2lvbiAyODYwMTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvTW9kdWxlUHJvZ3JhbUNvZGVCbG9jay5oCSh3b3JraW5nIGNvcHkpCkBAIC00
Miw3ICs0Miw3IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSwgU3Vic3BhY2VBY2Nl
c3M+CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewot
ICAgICAgICByZXR1cm4gJnZtLmNvZGVCbG9ja1NwYWNlLnNwYWNlOworICAgICAgICByZXR1cm4g
JnZtLmNvZGVCbG9ja1NwYWNlKCkuc3BhY2U7CiAgICAgfQogCiAgICAgc3RhdGljIE1vZHVsZVBy
b2dyYW1Db2RlQmxvY2sqIGNyZWF0ZShWTSYgdm0sIENvcHlQYXJzZWRCbG9ja1RhZywgTW9kdWxl
UHJvZ3JhbUNvZGVCbG9jayYgb3RoZXIpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvUHJvZ3JhbUNvZGVCbG9jay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9Qcm9ncmFtQ29kZUJsb2NrLmgJKHJldmlzaW9uIDI4NjAxMSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qcm9ncmFtQ29kZUJsb2NrLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTQyLDcgKzQyLDcgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lLCBT
dWJzcGFjZUFjY2Vzcz4KICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2
bSkKICAgICB7Ci0gICAgICAgIHJldHVybiAmdm0uY29kZUJsb2NrU3BhY2Uuc3BhY2U7CisgICAg
ICAgIHJldHVybiAmdm0uY29kZUJsb2NrU3BhY2UoKS5zcGFjZTsKICAgICB9CiAKICAgICBzdGF0
aWMgUHJvZ3JhbUNvZGVCbG9jayogY3JlYXRlKFZNJiB2bSwgQ29weVBhcnNlZEJsb2NrVGFnLCBQ
cm9ncmFtQ29kZUJsb2NrJiBvdGhlcikKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmNwcAko
cmV2aXNpb24gMjg2MDExKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlu
a2VkRnVuY3Rpb25FeGVjdXRhYmxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjUxLDcgKzI1MSw3
IEBAIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIFVubGlua2VkRnVuY3QKICAgICAgICAgbV91
bmxpbmtlZENvZGVCbG9ja0ZvckNvbnN0cnVjdC5zZXQodm0sIHRoaXMsIHJlc3VsdCk7CiAgICAg
ICAgIGJyZWFrOwogICAgIH0KLSAgICB2bS51bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZVNwYWNl
LnNldC5hZGQodGhpcyk7CisgICAgdm0udW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGVTcGFjZSgp
LnNldC5hZGQodGhpcyk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApAQCAtMzEwLDcgKzMxMCw3
IEBAIHZvaWQgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OmZpbmFsaXoKICAgICAgICAgY2xl
YXJJZkRlYWQobV91bmxpbmtlZENvZGVCbG9ja0ZvckNhbGwpOwogICAgICAgICBjbGVhcklmRGVh
ZChtX3VubGlua2VkQ29kZUJsb2NrRm9yQ29uc3RydWN0KTsKICAgICAgICAgaWYgKGlzQ2xlYXJl
ZCAmJiAhaXNTdGlsbFZhbGlkKQotICAgICAgICAgICAgdm0udW5saW5rZWRGdW5jdGlvbkV4ZWN1
dGFibGVTcGFjZS5zZXQucmVtb3ZlKHRoaXMpOworICAgICAgICAgICAgdm0udW5saW5rZWRGdW5j
dGlvbkV4ZWN1dGFibGVTcGFjZSgpLnNldC5yZW1vdmUodGhpcyk7CiAgICAgfQogfQogCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFi
bGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5r
ZWRGdW5jdGlvbkV4ZWN1dGFibGUuaAkocmV2aXNpb24gMjg2MDExKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTY3LDcgKzY3LDcgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENl
bGxUeXBlLCBTdWJzcGFjZUFjY2Vzcz4KICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNl
Rm9yKFZNJiB2bSkKICAgICB7Ci0gICAgICAgIHJldHVybiAmdm0udW5saW5rZWRGdW5jdGlvbkV4
ZWN1dGFibGVTcGFjZS5zcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS51bmxpbmtlZEZ1bmN0aW9u
RXhlY3V0YWJsZVNwYWNlKCkuc3BhY2U7CiAgICAgfQogCiAgICAgc3RhdGljIFVubGlua2VkRnVu
Y3Rpb25FeGVjdXRhYmxlKiBjcmVhdGUoVk0mIHZtLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2Us
IEZ1bmN0aW9uTWV0YWRhdGFOb2RlKiBub2RlLCBVbmxpbmtlZEZ1bmN0aW9uS2luZCB1bmxpbmtl
ZEZ1bmN0aW9uS2luZCwgQ29uc3RydWN0QWJpbGl0eSBjb25zdHJ1Y3RBYmlsaXR5LCBKU1BhcnNl
clNjcmlwdE1vZGUgc2NyaXB0TW9kZSwgUmVmUHRyPFREWkVudmlyb25tZW50TGluaz4gcGFyZW50
U2NvcGVURFpWYXJpYWJsZXMsIHN0ZDo6b3B0aW9uYWw8UHJpdmF0ZU5hbWVFbnZpcm9ubWVudD4g
cGFyZW50UHJpdmF0ZU5hbWVFbnZpcm9ubWVudCwgRGVyaXZlZENvbnRleHRUeXBlIGRlcml2ZWRD
b250ZXh0VHlwZSwgTmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIgbmVlZHNDbGFzc0ZpZWxkSW5p
dGlhbGl6ZXIsIFByaXZhdGVCcmFuZFJlcXVpcmVtZW50IHByaXZhdGVCcmFuZFJlcXVpcmVtZW50
LCBib29sIGlzQnVpbHRpbkRlZmF1bHRDbGFzc0NvbnN0cnVjdG9yID0gZmFsc2UpCkBAIC0xMzEs
NyArMTMxLDcgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgbV91bmxpbmtlZENvZGVCbG9ja0Zv
ckNhbGwuY2xlYXIoKTsKICAgICAgICAgbV91bmxpbmtlZENvZGVCbG9ja0ZvckNvbnN0cnVjdC5j
bGVhcigpOwotICAgICAgICB2bS51bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZVNwYWNlLnNldC5y
ZW1vdmUodGhpcyk7CisgICAgICAgIHZtLnVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlU3BhY2Uo
KS5zZXQucmVtb3ZlKHRoaXMpOwogICAgIH0KIAogICAgIHZvaWQgcmVjb3JkUGFyc2UoQ29kZUZl
YXR1cmVzIGZlYXR1cmVzLCBMZXhpY2FsU2NvcGVGZWF0dXJlcyBsZXhpY2FsU2NvcGVGZWF0dXJl
cywgYm9vbCBoYXNDYXB0dXJlZFZhcmlhYmxlcykKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCShyZXZpc2lvbiAyODYwMTEpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTIwLDcgKzEyMCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRBbGxvY2F0
ZVJhd09iamUKIAogICAgIFZNJiB2bSA9IHRoaXMtPnZtKCk7CiAgICAgaWYgKHNpemUpIHsKLSAg
ICAgICAgaWYgKEFsbG9jYXRvciBhbGxvY2F0b3IgPSB2bS5qc1ZhbHVlR2lnYWNhZ2VBdXhpbGlh
cnlTcGFjZS5hbGxvY2F0b3JGb3JOb25WaXJ0dWFsKHNpemUsIEFsbG9jYXRvckZvck1vZGU6OkFs
bG9jYXRvcklmRXhpc3RzKSkgeworICAgICAgICBpZiAoQWxsb2NhdG9yIGFsbG9jYXRvciA9IHZt
LmpzVmFsdWVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlKCkuYWxsb2NhdG9yRm9yTm9uVmlydHVhbChz
aXplLCBBbGxvY2F0b3JGb3JNb2RlOjpBbGxvY2F0b3JJZkV4aXN0cykpIHsKICAgICAgICAgICAg
IG1faml0LmVtaXRBbGxvY2F0ZShzdG9yYWdlR1BSLCBKSVRBbGxvY2F0b3I6OmNvbnN0YW50KGFs
bG9jYXRvciksIHNjcmF0Y2hHUFIsIHNjcmF0Y2gyR1BSLCBzbG93Q2FzZXMpOwogICAgICAgICAg
ICAgCiAgICAgICAgICAgICBtX2ppdC5hZGRQdHIoCkBAIC0xMDczOCw3ICsxMDczOCw3IEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVBbGxvY2F0ZVByb3AKICAgICAKICAgICBzaXplX3Qg
c2l6ZSA9IGluaXRpYWxPdXRPZkxpbmVDYXBhY2l0eSAqIHNpemVvZihKU1ZhbHVlKTsKIAotICAg
IEFsbG9jYXRvciBhbGxvY2F0b3IgPSB2bSgpLmpzVmFsdWVHaWdhY2FnZUF1eGlsaWFyeVNwYWNl
LmFsbG9jYXRvckZvck5vblZpcnR1YWwoc2l6ZSwgQWxsb2NhdG9yRm9yTW9kZTo6QWxsb2NhdG9y
SWZFeGlzdHMpOworICAgIEFsbG9jYXRvciBhbGxvY2F0b3IgPSB2bSgpLmpzVmFsdWVHaWdhY2Fn
ZUF1eGlsaWFyeVNwYWNlKCkuYWxsb2NhdG9yRm9yTm9uVmlydHVhbChzaXplLCBBbGxvY2F0b3JG
b3JNb2RlOjpBbGxvY2F0b3JJZkV4aXN0cyk7CiAKICAgICBpZiAoIWFsbG9jYXRvciB8fCBub2Rl
LT50cmFuc2l0aW9uKCktPnByZXZpb3VzLT5jb3VsZEhhdmVJbmRleGluZ0hlYWRlcigpKSB7CiAg
ICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGJhc2UodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwpA
QCAtMTA3ODIsNyArMTA3ODIsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlUmVhbGxv
Y2F0ZVByCiAgICAgc2l6ZV90IG5ld1NpemUgPSBvbGRTaXplICogb3V0T2ZMaW5lR3Jvd3RoRmFj
dG9yOwogICAgIEFTU0VSVChuZXdTaXplID09IG5vZGUtPnRyYW5zaXRpb24oKS0+bmV4dC0+b3V0
T2ZMaW5lQ2FwYWNpdHkoKSAqIHNpemVvZihKU1ZhbHVlKSk7CiAgICAgCi0gICAgQWxsb2NhdG9y
IGFsbG9jYXRvciA9IHZtKCkuanNWYWx1ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UuYWxsb2NhdG9y
Rm9yTm9uVmlydHVhbChuZXdTaXplLCBBbGxvY2F0b3JGb3JNb2RlOjpBbGxvY2F0b3JJZkV4aXN0
cyk7CisgICAgQWxsb2NhdG9yIGFsbG9jYXRvciA9IHZtKCkuanNWYWx1ZUdpZ2FjYWdlQXV4aWxp
YXJ5U3BhY2UoKS5hbGxvY2F0b3JGb3JOb25WaXJ0dWFsKG5ld1NpemUsIEFsbG9jYXRvckZvck1v
ZGU6OkFsbG9jYXRvcklmRXhpc3RzKTsKIAogICAgIGlmICghYWxsb2NhdG9yIHx8IG5vZGUtPnRy
YW5zaXRpb24oKS0+cHJldmlvdXMtPmNvdWxkSGF2ZUluZGV4aW5nSGVhZGVyKCkpIHsKICAgICAg
ICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYmFzZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CkBAIC0x
MTQ5OSw3ICsxMTQ5OSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXROZXdUeXBlZEFycmF5
V2kKICAgICAgICAgbV9qaXQuYW5kMzIoVHJ1c3RlZEltbTMyKH43KSwgc2NyYXRjaEdQUik7CiAg
ICAgfQogICAgIG1faml0LmVtaXRBbGxvY2F0ZVZhcmlhYmxlU2l6ZWQoCi0gICAgICAgIHN0b3Jh
Z2VHUFIsIHZtKCkucHJpbWl0aXZlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZSwgc2NyYXRjaEdQUiwg
c2NyYXRjaEdQUiwKKyAgICAgICAgc3RvcmFnZUdQUiwgdm0oKS5wcmltaXRpdmVHaWdhY2FnZUF1
eGlsaWFyeVNwYWNlKCksIHNjcmF0Y2hHUFIsIHNjcmF0Y2hHUFIsCiAgICAgICAgIHNjcmF0Y2hH
UFIyLCBzbG93Q2FzZXMpOwogICAgIAogICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIGRvbmUgPSBt
X2ppdC5icmFuY2hUZXN0MzIoTWFjcm9Bc3NlbWJsZXI6Olplcm8sIHNpemVHUFIpOwpAQCAtMTM3
MDAsNyArMTM3MDAsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0QWxsb2NhdGVCdXR0ZXJm
CiAgICAgZGlkTm90T3ZlcmZsb3cubGluaygmbV9qaXQpOwogI2VuZGlmCiAgICAgbV9qaXQuZW1p
dEFsbG9jYXRlVmFyaWFibGVTaXplZCgKLSAgICAgICAgc3RvcmFnZVJlc3VsdEdQUiwgdm0oKS5q
c1ZhbHVlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZSwgc2NyYXRjaDIsIHNjcmF0Y2gxLCBzY3JhdGNo
Mywgc2xvd0Nhc2VzKTsKKyAgICAgICAgc3RvcmFnZVJlc3VsdEdQUiwgdm0oKS5qc1ZhbHVlR2ln
YWNhZ2VBdXhpbGlhcnlTcGFjZSgpLCBzY3JhdGNoMiwgc2NyYXRjaDEsIHNjcmF0Y2gzLCBzbG93
Q2FzZXMpOwogICAgIG1faml0LmFkZFB0cihUcnVzdGVkSW1tMzIoc2l6ZW9mKEluZGV4aW5nSGVh
ZGVyKSksIHN0b3JhZ2VSZXN1bHRHUFIpOwogCiAgICAgbV9qaXQuc3RvcmUzMihzaXplR1BSLCBN
YWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzdG9yYWdlUmVzdWx0R1BSLCBCdXR0ZXJmbHk6Om9mZnNl
dE9mUHVibGljTGVuZ3RoKCkpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
TG93ZXJERkdUb0IzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRs
L0ZUTExvd2VyREZHVG9CMy5jcHAJKHJldmlzaW9uIDI4NjAxMSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODMwMCw3
ICs4MzAwLDcgQEAgSUdOT1JFX0NMQU5HX1dBUk5JTkdTX0VORAogICAgICAgICAgICAgICAgIG1f
b3V0LmNvbnN0SW50UHRyKH5zdGF0aWNfY2FzdDxpbnRwdHJfdD4oNykpKTsKICAgICAgICAgfQog
Ci0gICAgICAgIExWYWx1ZSBhbGxvY2F0b3IgPSBhbGxvY2F0b3JGb3JTaXplKHZtKCkucHJpbWl0
aXZlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZSwgYnl0ZVNpemUsIHNsb3dDYXNlKTsKKyAgICAgICAg
TFZhbHVlIGFsbG9jYXRvciA9IGFsbG9jYXRvckZvclNpemUodm0oKS5wcmltaXRpdmVHaWdhY2Fn
ZUF1eGlsaWFyeVNwYWNlKCksIGJ5dGVTaXplLCBzbG93Q2FzZSk7CiAgICAgICAgIExWYWx1ZSBz
dG9yYWdlID0gYWxsb2NhdGVIZWFwQ2VsbChhbGxvY2F0b3IsIHNsb3dDYXNlKTsKIAogICAgICAg
ICBzcGxhdFdvcmRzKApAQCAtMTM5MjEsNyArMTM5MjEsNyBAQCBJR05PUkVfQ0xBTkdfV0FSTklO
R1NfRU5ECiAgICAgICAgICAgICAgICAgVmFsdWVGcm9tQmxvY2sgbm9CdXR0ZXJmbHkgPSBtX291
dC5hbmNob3IobV9vdXQuaW50UHRyWmVybyk7CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAg
ICAgICAgTFZhbHVlIHN0YXJ0T2ZTdG9yYWdlID0gYWxsb2NhdGVIZWFwQ2VsbCgKLSAgICAgICAg
ICAgICAgICAgICAgYWxsb2NhdG9yRm9yU2l6ZSh2bSgpLmpzVmFsdWVHaWdhY2FnZUF1eGlsaWFy
eVNwYWNlLCBidXR0ZXJmbHlTaXplLCBzbG93UGF0aCksCisgICAgICAgICAgICAgICAgICAgIGFs
bG9jYXRvckZvclNpemUodm0oKS5qc1ZhbHVlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZSgpLCBidXR0
ZXJmbHlTaXplLCBzbG93UGF0aCksCiAgICAgICAgICAgICAgICAgICAgIHNsb3dQYXRoKTsKIAog
ICAgICAgICAgICAgICAgIExWYWx1ZSBmYXN0QnV0dGVyZmx5VmFsdWUgPSBtX291dC5hZGQoCkBA
IC0xNTAxNiw3ICsxNTAxNiw3IEBAIElHTk9SRV9DTEFOR19XQVJOSU5HU19FTkQKICAgICAgICAg
TEJhc2ljQmxvY2sgbGFzdE5leHQgPSBtX291dC5pbnNlcnROZXdCbG9ja3NCZWZvcmUoc2xvd1Bh
dGgpOwogCiAgICAgICAgIHNpemVfdCBzaXplSW5CeXRlcyA9IHNpemVJblZhbHVlcyAqIHNpemVv
ZihKU1ZhbHVlKTsKLSAgICAgICAgQWxsb2NhdG9yIGFsbG9jYXRvciA9IHZtKCkuanNWYWx1ZUdp
Z2FjYWdlQXV4aWxpYXJ5U3BhY2UuYWxsb2NhdG9yRm9yTm9uVmlydHVhbChzaXplSW5CeXRlcywg
QWxsb2NhdG9yRm9yTW9kZTo6QWxsb2NhdG9ySWZFeGlzdHMpOworICAgICAgICBBbGxvY2F0b3Ig
YWxsb2NhdG9yID0gdm0oKS5qc1ZhbHVlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZSgpLmFsbG9jYXRv
ckZvck5vblZpcnR1YWwoc2l6ZUluQnl0ZXMsIEFsbG9jYXRvckZvck1vZGU6OkFsbG9jYXRvcklm
RXhpc3RzKTsKICAgICAgICAgTFZhbHVlIHN0YXJ0T2ZTdG9yYWdlID0gYWxsb2NhdGVIZWFwQ2Vs
bCgKICAgICAgICAgICAgIG1fb3V0LmNvbnN0SW50UHRyKGFsbG9jYXRvci5sb2NhbEFsbG9jYXRv
cigpKSwgc2xvd1BhdGgpOwogICAgICAgICBWYWx1ZUZyb21CbG9jayBmYXN0QnV0dGVyZmx5ID0g
bV9vdXQuYW5jaG9yKApAQCAtMTcwMzgsNyArMTcwMzgsNyBAQCBJR05PUkVfQ0xBTkdfV0FSTklO
R1NfRU5ECiAgICAgICAgIExWYWx1ZSBidXR0ZXJmbHlTaXplID0gbV9vdXQuYWRkKAogICAgICAg
ICAgICAgcGF5bG9hZFNpemUsIG1fb3V0LmNvbnN0SW50UHRyKHNpemVvZihJbmRleGluZ0hlYWRl
cikpKTsKIAotICAgICAgICBMVmFsdWUgYWxsb2NhdG9yID0gYWxsb2NhdG9yRm9yU2l6ZSh2bSgp
LmpzVmFsdWVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlLCBidXR0ZXJmbHlTaXplLCBmYWlsQ2FzZSk7
CisgICAgICAgIExWYWx1ZSBhbGxvY2F0b3IgPSBhbGxvY2F0b3JGb3JTaXplKHZtKCkuanNWYWx1
ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UoKSwgYnV0dGVyZmx5U2l6ZSwgZmFpbENhc2UpOwogICAg
ICAgICBMVmFsdWUgc3RhcnRPZlN0b3JhZ2UgPSBhbGxvY2F0ZUhlYXBDZWxsKGFsbG9jYXRvciwg
ZmFpbENhc2UpOwogCiAgICAgICAgIExWYWx1ZSBidXR0ZXJmbHkgPSBtX291dC5hZGQoc3RhcnRP
ZlN0b3JhZ2UsIG1fb3V0LmNvbnN0SW50UHRyKHNpemVvZihJbmRleGluZ0hlYWRlcikpKTsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0Jsb2NrRGlyZWN0b3J5LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQmxvY2tEaXJlY3RvcnkuaAkocmV2aXNp
b24gMjg2MDExKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQmxvY2tEaXJlY3Rvcnku
aAkod29ya2luZyBjb3B5KQpAQCAtNzQsNyArNzQsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzaHJp
bmsoKTsKICAgICB2b2lkIGFzc2VydE5vVW5zd2VwdCgpOwogICAgIHNpemVfdCBjZWxsU2l6ZSgp
IGNvbnN0IHsgcmV0dXJuIG1fY2VsbFNpemU7IH0KLSAgICBjb25zdCBDZWxsQXR0cmlidXRlcyYg
YXR0cmlidXRlcygpIGNvbnN0IHsgcmV0dXJuIG1fYXR0cmlidXRlczsgfQorICAgIGNvbnN0IENl
bGxBdHRyaWJ1dGVzIGF0dHJpYnV0ZXMoKSBjb25zdCB7IHJldHVybiBtX2F0dHJpYnV0ZXM7IH0K
ICAgICBib29sIG5lZWRzRGVzdHJ1Y3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2F0dHJpYnV0ZXMu
ZGVzdHJ1Y3Rpb24gPT0gTmVlZHNEZXN0cnVjdGlvbjsgfQogICAgIERlc3RydWN0aW9uTW9kZSBk
ZXN0cnVjdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fYXR0cmlidXRlcy5kZXN0cnVjdGlvbjsgfQog
ICAgIEhlYXBDZWxsOjpLaW5kIGNlbGxLaW5kKCkgY29uc3QgeyByZXR1cm4gbV9hdHRyaWJ1dGVz
LmNlbGxLaW5kOyB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Db2RlQmxvY2tT
ZXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Db2RlQmxvY2tT
ZXQuaAkocmV2aXNpb24gMjg2MDExKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ29k
ZUJsb2NrU2V0LmgJKHdvcmtpbmcgY29weSkKQEAgLTY2LDggKzY2LDYgQEAgcHVibGljOgogICAg
IHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+IHZvaWQgaXRlcmF0ZShjb25zdCBGdW5jdG9yJik7
CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4gdm9pZCBpdGVyYXRlKGNvbnN0IEFic3Ry
YWN0TG9ja2VyJiwgY29uc3QgRnVuY3RvciYpOwogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVu
Y3Rvcj4gdm9pZCBpdGVyYXRlVmlhU3Vic3BhY2VzKFZNJiwgY29uc3QgRnVuY3RvciYpOwotICAg
IAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+IHZvaWQgaXRlcmF0ZUN1cnJlbnRseUV4
ZWN1dGluZyhjb25zdCBGdW5jdG9yJik7CiAgICAgCiAgICAgdm9pZCBkdW1wKFByaW50U3RyZWFt
JikgY29uc3Q7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Db2RlQmxvY2tTZXRJ
bmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ29kZUJs
b2NrU2V0SW5saW5lcy5oCShyZXZpc2lvbiAyODYwMTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9Db2RlQmxvY2tTZXRJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTYwLDE4ICs2
MCw2IEBAIHZvaWQgQ29kZUJsb2NrU2V0OjppdGVyYXRlKGNvbnN0IEFic3RyYWMKIH0KIAogdGVt
cGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4KLXZvaWQgQ29kZUJsb2NrU2V0OjppdGVyYXRlVmlhU3Vi
c3BhY2VzKFZNJiB2bSwgY29uc3QgRnVuY3RvciYgZnVuY3RvcikKLXsKLSAgICB2bS5mb3JFYWNo
Q29kZUJsb2NrU3BhY2UoCi0gICAgICAgIFsmXSAoYXV0byYgc3BhY2VBbmRTZXQpIHsKLSAgICAg
ICAgICAgIHNwYWNlQW5kU2V0LnNwYWNlLmZvckVhY2hMaXZlQ2VsbCgKLSAgICAgICAgICAgICAg
ICBbJl0gKEhlYXBDZWxsKiBjZWxsLCBIZWFwQ2VsbDo6S2luZCkgewotICAgICAgICAgICAgICAg
ICAgICBmdW5jdG9yKGpzQ2FzdDxDb2RlQmxvY2sqPihzdGF0aWNfY2FzdDxKU0NlbGwqPihjZWxs
KSkpOwotICAgICAgICAgICAgICAgIH0pOwotICAgICAgICB9KTsKLX0KLQotdGVtcGxhdGU8dHlw
ZW5hbWUgRnVuY3Rvcj4KIHZvaWQgQ29kZUJsb2NrU2V0OjppdGVyYXRlQ3VycmVudGx5RXhlY3V0
aW5nKGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3IpCiB7CiAgICAgTG9ja2VyIGxvY2tlciB7IG1fbG9j
ayB9OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ29tcGxldGVTdWJzcGFjZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ29tcGxldGVTdWJz
cGFjZS5jcHAJKHJldmlzaW9uIDI4NjAxMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L0NvbXBsZXRlU3Vic3BhY2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw3ICszNSw3IEBACiAK
IG5hbWVzcGFjZSBKU0MgewogCi1Db21wbGV0ZVN1YnNwYWNlOjpDb21wbGV0ZVN1YnNwYWNlKENT
dHJpbmcgbmFtZSwgSGVhcCYgaGVhcCwgSGVhcENlbGxUeXBlKiBoZWFwQ2VsbFR5cGUsIEFsaWdu
ZWRNZW1vcnlBbGxvY2F0b3IqIGFsaWduZWRNZW1vcnlBbGxvY2F0b3IpCitDb21wbGV0ZVN1YnNw
YWNlOjpDb21wbGV0ZVN1YnNwYWNlKENTdHJpbmcgbmFtZSwgSGVhcCYgaGVhcCwgY29uc3QgSGVh
cENlbGxUeXBlJiBoZWFwQ2VsbFR5cGUsIEFsaWduZWRNZW1vcnlBbGxvY2F0b3IqIGFsaWduZWRN
ZW1vcnlBbGxvY2F0b3IpCiAgICAgOiBTdWJzcGFjZShuYW1lLCBoZWFwKQogewogICAgIGluaXRp
YWxpemUoaGVhcENlbGxUeXBlLCBhbGlnbmVkTWVtb3J5QWxsb2NhdG9yKTsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0NvbXBsZXRlU3Vic3BhY2UuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Db21wbGV0ZVN1YnNwYWNlLmgJKHJldmlzaW9uIDI4
NjAxMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0NvbXBsZXRlU3Vic3BhY2UuaAko
d29ya2luZyBjb3B5KQpAQCAtMzEsNyArMzEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogY2xhc3Mg
Q29tcGxldGVTdWJzcGFjZSBmaW5hbCA6IHB1YmxpYyBTdWJzcGFjZSB7CiBwdWJsaWM6Ci0gICAg
SlNfRVhQT1JUX1BSSVZBVEUgQ29tcGxldGVTdWJzcGFjZShDU3RyaW5nIG5hbWUsIEhlYXAmLCBI
ZWFwQ2VsbFR5cGUqLCBBbGlnbmVkTWVtb3J5QWxsb2NhdG9yKik7CisgICAgSlNfRVhQT1JUX1BS
SVZBVEUgQ29tcGxldGVTdWJzcGFjZShDU3RyaW5nIG5hbWUsIEhlYXAmLCBjb25zdCBIZWFwQ2Vs
bFR5cGUmLCBBbGlnbmVkTWVtb3J5QWxsb2NhdG9yKik7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUg
fkNvbXBsZXRlU3Vic3BhY2UoKSBmaW5hbDsKIAogICAgIC8vIEluIHNvbWUgY29kZSBwYXRocywg
d2UgbmVlZCBpdCB0byBiZSBhIGNvbXBpbGUgZXJyb3IgdG8gY2FsbCB0aGUgdmlydHVhbCB2ZXJz
aW9uIG9mIG9uZSBvZgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAJKHJldmlz
aW9uIDI4NjAxMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yMSwxMyArMjEsMjAgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNs
dWRlICJIZWFwLmgiCiAKKyNpbmNsdWRlICJCaWdJbnRPYmplY3QuaCIKKyNpbmNsdWRlICJCb29s
ZWFuT2JqZWN0LmgiCisjaW5jbHVkZSAiQnJhbmRlZFN0cnVjdHVyZS5oIgogI2luY2x1ZGUgIkJ1
aWx0aW5FeGVjdXRhYmxlcy5oIgorI2luY2x1ZGUgIkNsb25lZEFyZ3VtZW50cy5oIgogI2luY2x1
ZGUgIkNvZGVCbG9jay5oIgogI2luY2x1ZGUgIkNvZGVCbG9ja1NldElubGluZXMuaCIKICNpbmNs
dWRlICJDb2xsZWN0aW5nU2NvcGUuaCIKICNpbmNsdWRlICJDb25zZXJ2YXRpdmVSb290cy5oIgor
I2luY2x1ZGUgIkRhdGVJbnN0YW5jZS5oIgorI2luY2x1ZGUgIkRlYnVnZ2VyU2NvcGUuaCIKICNp
bmNsdWRlICJFZGVuR0NBY3Rpdml0eUNhbGxiYWNrLmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uLmgi
CisjaW5jbHVkZSAiRmFzdE1hbGxvY0FsaWduZWRNZW1vcnlBbGxvY2F0b3IuaCIKICNpbmNsdWRl
ICJGdWxsR0NBY3Rpdml0eUNhbGxiYWNrLmgiCiAjaW5jbHVkZSAiRnVuY3Rpb25FeGVjdXRhYmxl
SW5saW5lcy5oIgogI2luY2x1ZGUgIkdDQWN0aXZpdHlDYWxsYmFjay5oIgpAQCAtMzUsNiArNDIs
NyBAQAogI2luY2x1ZGUgIkdDSW5jb21pbmdSZWZDb3VudGVkU2V0SW5saW5lcy5oIgogI2luY2x1
ZGUgIkdDU2VnbWVudGVkQXJyYXlJbmxpbmVzLmgiCiAjaW5jbHVkZSAiR0NUeXBlTWFwLmgiCisj
aW5jbHVkZSAiR2V0dGVyU2V0dGVyLmgiCiAjaW5jbHVkZSAiSGFzT3duUHJvcGVydHlDYWNoZS5o
IgogI2luY2x1ZGUgIkhlYXBIZWxwZXJQb29sLmgiCiAjaW5jbHVkZSAiSGVhcEl0ZXJhdGlvblNj
b3BlLmgiCkBAIC00MywzNyArNTEsMTE2IEBACiAjaW5jbHVkZSAiSGVhcFZlcmlmaWVyLmgiCiAj
aW5jbHVkZSAiSW5jcmVtZW50YWxTd2VlcGVyLmgiCiAjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIK
KyNpbmNsdWRlICJJbnRsQ29sbGF0b3IuaCIKKyNpbmNsdWRlICJJbnRsRGF0ZVRpbWVGb3JtYXQu
aCIKKyNpbmNsdWRlICJJbnRsRGlzcGxheU5hbWVzLmgiCisjaW5jbHVkZSAiSW50bExpc3RGb3Jt
YXQuaCIKKyNpbmNsdWRlICJJbnRsTG9jYWxlLmgiCisjaW5jbHVkZSAiSW50bE51bWJlckZvcm1h
dC5oIgorI2luY2x1ZGUgIkludGxQbHVyYWxSdWxlcy5oIgorI2luY2x1ZGUgIkludGxSZWxhdGl2
ZVRpbWVGb3JtYXQuaCIKKyNpbmNsdWRlICJJbnRsU2VnbWVudEl0ZXJhdG9yLmgiCisjaW5jbHVk
ZSAiSW50bFNlZ21lbnRlci5oIgorI2luY2x1ZGUgIkludGxTZWdtZW50cy5oIgogI2luY2x1ZGUg
Iklzb0NlbGxTZXRJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSklUU3R1YlJvdXRpbmVTZXQuaCIKICNp
bmNsdWRlICJKSVRXb3JrbGlzdElubGluZXMuaCIKKyNpbmNsdWRlICJKU0FQSUdsb2JhbE9iamVj
dC5oIgorI2luY2x1ZGUgIkpTQVBJVmFsdWVXcmFwcGVyLmgiCisjaW5jbHVkZSAiSlNBUElXcmFw
cGVyT2JqZWN0LmgiCisjaW5jbHVkZSAiSlNBcnJheS5oIgorI2luY2x1ZGUgIkpTQXJyYXlCdWZm
ZXIuaCIKKyNpbmNsdWRlICJKU0FycmF5SXRlcmF0b3IuaCIKKyNpbmNsdWRlICJKU0FzeW5jR2Vu
ZXJhdG9yLmgiCisjaW5jbHVkZSAiSlNCaWdJbnQuaCIKKyNpbmNsdWRlICJKU0JvdW5kRnVuY3Rp
b24uaCIKKyNpbmNsdWRlICJKU0NhbGxiYWNrQ29uc3RydWN0b3IuaCIKKyNpbmNsdWRlICJKU0Nh
bGxiYWNrRnVuY3Rpb24uaCIKKyNpbmNsdWRlICJKU0NhbGxiYWNrT2JqZWN0LmgiCisjaW5jbHVk
ZSAiSlNDYWxsZWUuaCIKKyNpbmNsdWRlICJKU0N1c3RvbUdldHRlckZ1bmN0aW9uLmgiCisjaW5j
bHVkZSAiSlNDdXN0b21TZXR0ZXJGdW5jdGlvbi5oIgorI2luY2x1ZGUgIkpTRGF0YVZpZXcuaCIK
ICNpbmNsdWRlICJKU0ZpbmFsaXphdGlvblJlZ2lzdHJ5LmgiCisjaW5jbHVkZSAiSlNGdW5jdGlv
bi5oIgorI2luY2x1ZGUgIkpTR2xvYmFsTGV4aWNhbEVudmlyb25tZW50LmgiCisjaW5jbHVkZSAi
SlNHbG9iYWxPYmplY3QuaCIKKyNpbmNsdWRlICJKU0luamVjdGVkU2NyaXB0SG9zdC5oIgorI2lu
Y2x1ZGUgIkpTSmF2YVNjcmlwdENhbGxGcmFtZS5oIgorI2luY2x1ZGUgIkpTTWFwLmgiCisjaW5j
bHVkZSAiSlNNYXBJdGVyYXRvci5oIgorI2luY2x1ZGUgIkpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0
LmgiCisjaW5jbHVkZSAiSlNNb2R1bGVSZWNvcmQuaCIKKyNpbmNsdWRlICJKU05hdGl2ZVN0ZEZ1
bmN0aW9uLmgiCisjaW5jbHVkZSAiSlNQcm9taXNlLmgiCisjaW5jbHVkZSAiSlNQcm9wZXJ0eU5h
bWVFbnVtZXJhdG9yLmgiCisjaW5jbHVkZSAiSlNQcm94eS5oIgorI2luY2x1ZGUgIkpTU2NyaXB0
RmV0Y2hQYXJhbWV0ZXJzLmgiCisjaW5jbHVkZSAiSlNTY3JpcHRGZXRjaGVyLmgiCisjaW5jbHVk
ZSAiSlNTZXQuaCIKKyNpbmNsdWRlICJKU1NldEl0ZXJhdG9yLmgiCisjaW5jbHVkZSAiSlNTb3Vy
Y2VDb2RlLmgiCisjaW5jbHVkZSAiSlNTdHJpbmdJdGVyYXRvci5oIgorI2luY2x1ZGUgIkpTVGVt
cGxhdGVPYmplY3REZXNjcmlwdG9yLmgiCisjaW5jbHVkZSAiSlNUb1dhc21JQ0NhbGxlZS5oIgor
I2luY2x1ZGUgIkpTVHlwZWRBcnJheXMuaCIKICNpbmNsdWRlICJKU1ZpcnR1YWxNYWNoaW5lSW50
ZXJuYWwuaCIKICNpbmNsdWRlICJKU1dlYWtNYXAuaCIKICNpbmNsdWRlICJKU1dlYWtPYmplY3RS
ZWYuaCIKICNpbmNsdWRlICJKU1dlYWtTZXQuaCIKICNpbmNsdWRlICJKU1dlYkFzc2VtYmx5Q29k
ZUJsb2NrLmgiCisjaW5jbHVkZSAiSlNXZWJBc3NlbWJseUV4Y2VwdGlvbi5oIgorI2luY2x1ZGUg
IkpTV2ViQXNzZW1ibHlHbG9iYWwuaCIKKyNpbmNsdWRlICJKU1dlYkFzc2VtYmx5SW5zdGFuY2Uu
aCIKKyNpbmNsdWRlICJKU1dlYkFzc2VtYmx5TWVtb3J5LmgiCisjaW5jbHVkZSAiSlNXZWJBc3Nl
bWJseU1vZHVsZS5oIgorI2luY2x1ZGUgIkpTV2ViQXNzZW1ibHlUYWJsZS5oIgorI2luY2x1ZGUg
IkpTV2ViQXNzZW1ibHlUYWcuaCIKKyNpbmNsdWRlICJKU1dpdGhTY29wZS5oIgogI2luY2x1ZGUg
Ik1hY2hpbmVTdGFja01hcmtlci5oIgogI2luY2x1ZGUgIk1hcmtTdGFja01lcmdpbmdDb25zdHJh
aW50LmgiCiAjaW5jbHVkZSAiTWFya2VkSlNWYWx1ZVJlZkFycmF5LmgiCiAjaW5jbHVkZSAiTWFy
a2VkU3BhY2VJbmxpbmVzLmgiCiAjaW5jbHVkZSAiTWFya2luZ0NvbnN0cmFpbnRTZXQuaCIKKyNp
bmNsdWRlICJOYXRpdmVFeGVjdXRhYmxlLmgiCiAjaW5jbHVkZSAiUHJldmVudENvbGxlY3Rpb25T
Y29wZS5oIgorI2luY2x1ZGUgIlByb2dyYW1FeGVjdXRhYmxlLmgiCisjaW5jbHVkZSAiUHJvcGVy
dHlUYWJsZS5oIgorI2luY2x1ZGUgIlByb3h5UmV2b2tlLmgiCisjaW5jbHVkZSAiUmVnRXhwT2Jq
ZWN0LmgiCiAjaW5jbHVkZSAiU2FtcGxpbmdQcm9maWxlci5oIgorI2luY2x1ZGUgIlNjb3BlZEFy
Z3VtZW50cy5oIgogI2luY2x1ZGUgIlNoYWRvd0NoaWNrZW4uaCIKKyNpbmNsdWRlICJTaGFkb3dS
ZWFsbU9iamVjdC5oIgogI2luY2x1ZGUgIlNwYWNlVGltZU11dGF0b3JTY2hlZHVsZXIuaCIKICNp
bmNsdWRlICJTdG9jaGFzdGljU3BhY2VUaW1lTXV0YXRvclNjaGVkdWxlci5oIgogI2luY2x1ZGUg
IlN0b3BJZk5lY2Vzc2FyeVRpbWVyLmgiCisjaW5jbHVkZSAiU3RyaWN0RXZhbEFjdGl2YXRpb24u
aCIKKyNpbmNsdWRlICJTdHJpbmdPYmplY3QuaCIKKyNpbmNsdWRlICJTdHJ1Y3R1cmVDaGFpbi5o
IgogI2luY2x1ZGUgIlN1YnNwYWNlSW5saW5lcy5oIgogI2luY2x1ZGUgIlN1cGVyU2FtcGxlci5o
IgogI2luY2x1ZGUgIlN3ZWVwaW5nU2NvcGUuaCIKKyNpbmNsdWRlICJTeW1ib2xPYmplY3QuaCIK
ICNpbmNsdWRlICJTeW1ib2xUYWJsZUlubGluZXMuaCIKICNpbmNsdWRlICJTeW5jaHJvbm91c1N0
b3BUaGVXb3JsZE11dGF0b3JTY2hlZHVsZXIuaCIKKyNpbmNsdWRlICJUZW1wb3JhbENhbGVuZGFy
LmgiCisjaW5jbHVkZSAiVGVtcG9yYWxEdXJhdGlvbi5oIgorI2luY2x1ZGUgIlRlbXBvcmFsSW5z
dGFudC5oIgorI2luY2x1ZGUgIlRlbXBvcmFsUGxhaW5UaW1lLmgiCisjaW5jbHVkZSAiVGVtcG9y
YWxUaW1lWm9uZS5oIgogI2luY2x1ZGUgIlR5cGVQcm9maWxlci5oIgogI2luY2x1ZGUgIlR5cGVQ
cm9maWxlckxvZy5oIgorI2luY2x1ZGUgIlVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2suaCIKKyNp
bmNsdWRlICJVbmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2suaCIKKyNpbmNsdWRlICJVbmxp
bmtlZFByb2dyYW1Db2RlQmxvY2suaCIKICNpbmNsdWRlICJWTS5oIgogI2luY2x1ZGUgIlZlcmlm
aWVyU2xvdFZpc2l0b3JJbmxpbmVzLmgiCiAjaW5jbHVkZSAiV2Vha01hcEltcGxJbmxpbmVzLmgi
CiAjaW5jbHVkZSAiV2Vha1NldElubGluZXMuaCIKKyNpbmNsdWRlICJXZWJBc3NlbWJseUZ1bmN0
aW9uLmgiCisjaW5jbHVkZSAiV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQuaCIKKyNpbmNsdWRlICJX
ZWJBc3NlbWJseVdyYXBwZXJGdW5jdGlvbi5oIgogI2luY2x1ZGUgPGFsZ29yaXRobT4KICNpbmNs
dWRlIDx3dGYvQ3J5cHRvZ3JhcGhpY2FsbHlSYW5kb21OdW1iZXIuaD4KICNpbmNsdWRlIDx3dGYv
TGlzdER1bXAuaD4KQEAgLTk0LDYgKzE4MSwxMCBAQAogI2luY2x1ZGUgIkpTQ0dMaWJXcmFwcGVy
T2JqZWN0LmgiCiAjZW5kaWYKIAorI2lmIEpTQ19PQkpDX0FQSV9FTkFCTEVECisjaW5jbHVkZSAi
T2JqQ0NhbGxiYWNrRnVuY3Rpb24uaCIKKyNlbmRpZgorCiBuYW1lc3BhY2UgSlNDIHsKIAogbmFt
ZXNwYWNlIHsKQEAgLTI4Niw2ICszNzcsMTE0IEBAIEhlYXA6OkhlYXAoVk0mIHZtLCBIZWFwVHlw
ZSBoZWFwVHlwZSkKICAgICAsIG1faGVscGVyQ2xpZW50KCZoZWFwSGVscGVyUG9vbCgpKQogICAg
ICwgbV90aHJlYWRMb2NrKEJveDxMb2NrPjo6Y3JlYXRlKCkpCiAgICAgLCBtX3RocmVhZENvbmRp
dGlvbihBdXRvbWF0aWNUaHJlYWRDb25kaXRpb246OmNyZWF0ZSgpKQorCisgICAgLy8gbWxhbSBI
ZWFwQ2VsbFR5cGVzCisgICAgLCBhdXhpbGlhcnlIZWFwQ2VsbFR5cGUoQ2VsbEF0dHJpYnV0ZXMo
RG9lc05vdE5lZWREZXN0cnVjdGlvbiwgSGVhcENlbGw6OkF1eGlsaWFyeSkpCisgICAgLCBpbW11
dGFibGVCdXR0ZXJmbHlIZWFwQ2VsbFR5cGUoQ2VsbEF0dHJpYnV0ZXMoRG9lc05vdE5lZWREZXN0
cnVjdGlvbiwgSGVhcENlbGw6OkpTQ2VsbFdpdGhJbmRleGluZ0hlYWRlcikpCisgICAgLCBjZWxs
SGVhcENlbGxUeXBlKENlbGxBdHRyaWJ1dGVzKERvZXNOb3ROZWVkRGVzdHJ1Y3Rpb24sIEhlYXBD
ZWxsOjpKU0NlbGwpKQorICAgICwgZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZShDZWxsQXR0
cmlidXRlcyhOZWVkc0Rlc3RydWN0aW9uLCBIZWFwQ2VsbDo6SlNDZWxsKSkKKyAgICAsIGFwaUds
b2JhbE9iamVjdEhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OkFyZ3M8SlNBUElHbG9iYWxP
YmplY3Q+KCkpCisgICAgLCBjYWxsYmFja0NvbnN0cnVjdG9ySGVhcENlbGxUeXBlKElzb0hlYXBD
ZWxsVHlwZTo6QXJnczxKU0NhbGxiYWNrQ29uc3RydWN0b3I+KCkpCisgICAgLCBjYWxsYmFja0ds
b2JhbE9iamVjdEhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OkFyZ3M8SlNDYWxsYmFja09i
amVjdDxKU0dsb2JhbE9iamVjdD4+KCkpCisgICAgLCBjYWxsYmFja09iamVjdEhlYXBDZWxsVHlw
ZShJc29IZWFwQ2VsbFR5cGU6OkFyZ3M8SlNDYWxsYmFja09iamVjdDxKU05vbkZpbmFsT2JqZWN0
Pj4oKSkKKyAgICAsIGN1c3RvbUdldHRlckZ1bmN0aW9uSGVhcENlbGxUeXBlKElzb0hlYXBDZWxs
VHlwZTo6QXJnczxKU0N1c3RvbUdldHRlckZ1bmN0aW9uPigpKQorICAgICwgY3VzdG9tU2V0dGVy
RnVuY3Rpb25IZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpBcmdzPEpTQ3VzdG9tU2V0dGVy
RnVuY3Rpb24+KCkpCisgICAgLCBkYXRlSW5zdGFuY2VIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxU
eXBlOjpBcmdzPERhdGVJbnN0YW5jZT4oKSkKKyAgICAsIGVycm9ySW5zdGFuY2VIZWFwQ2VsbFR5
cGUoSXNvSGVhcENlbGxUeXBlOjpBcmdzPEVycm9ySW5zdGFuY2U+KCkpCisgICAgLCBmaW5hbGl6
YXRpb25SZWdpc3RyeUNlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6QXJnczxKU0ZpbmFsaXphdGlv
blJlZ2lzdHJ5PigpKQorICAgICwgZ2xvYmFsTGV4aWNhbEVudmlyb25tZW50SGVhcENlbGxUeXBl
KElzb0hlYXBDZWxsVHlwZTo6QXJnczxKU0dsb2JhbExleGljYWxFbnZpcm9ubWVudD4oKSkKKyAg
ICAsIGdsb2JhbE9iamVjdEhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OkFyZ3M8SlNHbG9i
YWxPYmplY3Q+KCkpCisgICAgLCBpbmplY3RlZFNjcmlwdEhvc3RTcGFjZUhlYXBDZWxsVHlwZShJ
c29IZWFwQ2VsbFR5cGU6OkFyZ3M8SW5zcGVjdG9yOjpKU0luamVjdGVkU2NyaXB0SG9zdD4oKSkK
KyAgICAsIGphdmFTY3JpcHRDYWxsRnJhbWVIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpB
cmdzPEluc3BlY3Rvcjo6SlNKYXZhU2NyaXB0Q2FsbEZyYW1lPigpKQorICAgICwganNNb2R1bGVS
ZWNvcmRIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpBcmdzPEpTTW9kdWxlUmVjb3JkPigp
KQorICAgICwgbW9kdWxlTmFtZXNwYWNlT2JqZWN0SGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlw
ZTo6QXJnczxKU01vZHVsZU5hbWVzcGFjZU9iamVjdD4oKSkKKyAgICAsIG5hdGl2ZVN0ZEZ1bmN0
aW9uSGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6QXJnczxKU05hdGl2ZVN0ZEZ1bmN0aW9u
PigpKQorICAgICwgd2Vha01hcEhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OkFyZ3M8SlNX
ZWFrTWFwPigpKQorICAgICwgd2Vha1NldEhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OkFy
Z3M8SlNXZWFrU2V0PigpKQorI2lmIEpTQ19PQkpDX0FQSV9FTkFCTEVECisgICAgLCBhcGlXcmFw
cGVyT2JqZWN0SGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6QXJnczxKU0NhbGxiYWNrT2Jq
ZWN0PEpTQVBJV3JhcHBlck9iamVjdD4+KCkpCisgICAgLCBvYmpDQ2FsbGJhY2tGdW5jdGlvbkhl
YXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OkFyZ3M8T2JqQ0NhbGxiYWNrRnVuY3Rpb24+KCkp
CisjZW5kaWYKKyNpZmRlZiBKU0NfR0xJQl9BUElfRU5BQkxFRAorICAgICwgYXBpV3JhcHBlck9i
amVjdEhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OkFyZ3M8SlNDYWxsYmFja09iamVjdDxK
U0FQSVdyYXBwZXJPYmplY3Q+PigpKQorICAgICwgY2FsbGJhY2tBUElXcmFwcGVyR2xvYmFsT2Jq
ZWN0SGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6QXJnczxKU0NhbGxiYWNrT2JqZWN0PEpT
QVBJV3JhcHBlckdsb2JhbE9iamVjdD4+KCkpCisgICAgLCBqc2NDYWxsYmFja0Z1bmN0aW9uSGVh
cENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6QXJnczxKU0NDYWxsYmFja0Z1bmN0aW9uPigpKQor
I2VuZGlmCisgICAgLCBpbnRsQ29sbGF0b3JIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpB
cmdzPEludGxDb2xsYXRvcj4oKSkKKyAgICAsIGludGxEYXRlVGltZUZvcm1hdEhlYXBDZWxsVHlw
ZShJc29IZWFwQ2VsbFR5cGU6OkFyZ3M8SW50bERhdGVUaW1lRm9ybWF0PigpKQorICAgICwgaW50
bERpc3BsYXlOYW1lc0hlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OkFyZ3M8SW50bERpc3Bs
YXlOYW1lcz4oKSkKKyAgICAsIGludGxMaXN0Rm9ybWF0SGVhcENlbGxUeXBlKElzb0hlYXBDZWxs
VHlwZTo6QXJnczxJbnRsTGlzdEZvcm1hdD4oKSkKKyAgICAsIGludGxMb2NhbGVIZWFwQ2VsbFR5
cGUoSXNvSGVhcENlbGxUeXBlOjpBcmdzPEludGxMb2NhbGU+KCkpCisgICAgLCBpbnRsTnVtYmVy
Rm9ybWF0SGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6QXJnczxJbnRsTnVtYmVyRm9ybWF0
PigpKQorICAgICwgaW50bFBsdXJhbFJ1bGVzSGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6
QXJnczxJbnRsUGx1cmFsUnVsZXM+KCkpCisgICAgLCBpbnRsUmVsYXRpdmVUaW1lRm9ybWF0SGVh
cENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6QXJnczxJbnRsUmVsYXRpdmVUaW1lRm9ybWF0Pigp
KQorICAgICwgaW50bFNlZ21lbnRJdGVyYXRvckhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6
OkFyZ3M8SW50bFNlZ21lbnRJdGVyYXRvcj4oKSkKKyAgICAsIGludGxTZWdtZW50ZXJIZWFwQ2Vs
bFR5cGUoSXNvSGVhcENlbGxUeXBlOjpBcmdzPEludGxTZWdtZW50ZXI+KCkpCisgICAgLCBpbnRs
U2VnbWVudHNIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpBcmdzPEludGxTZWdtZW50cz4o
KSkKKyNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCisgICAgLCB3ZWJBc3NlbWJseUNvZGVCbG9ja0hl
YXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OkFyZ3M8SlNXZWJBc3NlbWJseUNvZGVCbG9jaz4o
KSkKKyAgICAsIHdlYkFzc2VtYmx5RXhjZXB0aW9uSGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlw
ZTo6QXJnczxKU1dlYkFzc2VtYmx5RXhjZXB0aW9uPigpKQorICAgICwgd2ViQXNzZW1ibHlGdW5j
dGlvbkhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OkFyZ3M8V2ViQXNzZW1ibHlGdW5jdGlv
bj4oKSkKKyAgICAsIHdlYkFzc2VtYmx5R2xvYmFsSGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlw
ZTo6QXJnczxKU1dlYkFzc2VtYmx5R2xvYmFsPigpKQorICAgICwgd2ViQXNzZW1ibHlJbnN0YW5j
ZUhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OkFyZ3M8SlNXZWJBc3NlbWJseUluc3RhbmNl
PigpKQorICAgICwgd2ViQXNzZW1ibHlNZW1vcnlIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBl
OjpBcmdzPEpTV2ViQXNzZW1ibHlNZW1vcnk+KCkpCisgICAgLCB3ZWJBc3NlbWJseU1vZHVsZUhl
YXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OkFyZ3M8SlNXZWJBc3NlbWJseU1vZHVsZT4oKSkK
KyAgICAsIHdlYkFzc2VtYmx5TW9kdWxlUmVjb3JkSGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlw
ZTo6QXJnczxXZWJBc3NlbWJseU1vZHVsZVJlY29yZD4oKSkKKyAgICAsIHdlYkFzc2VtYmx5VGFi
bGVIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpBcmdzPEpTV2ViQXNzZW1ibHlUYWJsZT4o
KSkKKyAgICAsIHdlYkFzc2VtYmx5VGFnSGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6QXJn
czxKU1dlYkFzc2VtYmx5VGFnPigpKQorI2VuZGlmCisKKyAgICAvLyBtbGFtIEFsaWduZWRNZW1v
cnlBbGxvY2F0b3JzCisgICAgLCBmYXN0TWFsbG9jQWxsb2NhdG9yKG1ha2VVbmlxdWU8RmFzdE1h
bGxvY0FsaWduZWRNZW1vcnlBbGxvY2F0b3I+KCkpCisgICAgLCBwcmltaXRpdmVHaWdhY2FnZUFs
bG9jYXRvcihtYWtlVW5pcXVlPEdpZ2FjYWdlQWxpZ25lZE1lbW9yeUFsbG9jYXRvcj4oR2lnYWNh
Z2U6OlByaW1pdGl2ZSkpCisgICAgLCBqc1ZhbHVlR2lnYWNhZ2VBbGxvY2F0b3IobWFrZVVuaXF1
ZTxHaWdhY2FnZUFsaWduZWRNZW1vcnlBbGxvY2F0b3I+KEdpZ2FjYWdlOjpKU1ZhbHVlKSkKKwor
ICAgIC8vIG1sYW0gU3Vic3BhY2VzCisgICAgLCBwcmltaXRpdmVHaWdhY2FnZUF1eGlsaWFyeVNw
YWNlKCJQcmltaXRpdmUgR2lnYWNhZ2UgQXV4aWxpYXJ5IiwgKnRoaXMsIGF1eGlsaWFyeUhlYXBD
ZWxsVHlwZSwgcHJpbWl0aXZlR2lnYWNhZ2VBbGxvY2F0b3IuZ2V0KCkpIC8vIEhhc2g6MHgzZTdj
ZDc2MgorICAgICwganNWYWx1ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UoIkpTVmFsdWUgR2lnYWNh
Z2UgQXV4aWxpYXJ5IiwgKnRoaXMsIGF1eGlsaWFyeUhlYXBDZWxsVHlwZSwganNWYWx1ZUdpZ2Fj
YWdlQWxsb2NhdG9yLmdldCgpKSAvLyBIYXNoOjB4MjQxZTk0NgorICAgICwgaW1tdXRhYmxlQnV0
dGVyZmx5SlNWYWx1ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UoIkltbXV0YWJsZUJ1dHRlcmZseSBH
aWdhY2FnZSBKU0NlbGxXaXRoSW5kZXhpbmdIZWFkZXIiLCAqdGhpcywgaW1tdXRhYmxlQnV0dGVy
Zmx5SGVhcENlbGxUeXBlLCBqc1ZhbHVlR2lnYWNhZ2VBbGxvY2F0b3IuZ2V0KCkpIC8vIEhhc2g6
MHg3YTk0NTMwMAorICAgICwgY2VsbFNwYWNlKCJKU0NlbGwiLCAqdGhpcywgY2VsbEhlYXBDZWxs
VHlwZSwgZmFzdE1hbGxvY0FsbG9jYXRvci5nZXQoKSkgLy8gSGFzaDoweGFkZmI1YTc5CisgICAg
LCB2YXJpYWJsZVNpemVkQ2VsbFNwYWNlKCJWYXJpYWJsZSBTaXplZCBKU0NlbGwiLCAqdGhpcywg
Y2VsbEhlYXBDZWxsVHlwZSwgZmFzdE1hbGxvY0FsbG9jYXRvci5nZXQoKSkgLy8gSGFzaDoweGJj
ZDc2OWNjCisgICAgLCBkZXN0cnVjdGlibGVPYmplY3RTcGFjZSgiSlNEZXN0cnVjdGlibGVPYmpl
Y3QiLCAqdGhpcywgZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLCBmYXN0TWFsbG9jQWxs
b2NhdG9yLmdldCgpKSAvLyBIYXNoOjB4NGY1ZWQ3YTkKKyAgICAsIGFycmF5U3BhY2UgSVNPX1NV
QlNQQUNFX0lOSVQoKnRoaXMsIGNlbGxIZWFwQ2VsbFR5cGUsIEpTQXJyYXkpCisgICAgLCBiaWdJ
bnRTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVCgqdGhpcywgY2VsbEhlYXBDZWxsVHlwZSwgSlNCaWdJ
bnQpCisgICAgLCBjYWxsZWVTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVCgqdGhpcywgY2VsbEhlYXBD
ZWxsVHlwZSwgSlNDYWxsZWUpCisgICAgLCBjbG9uZWRBcmd1bWVudHNTcGFjZSBJU09fU1VCU1BB
Q0VfSU5JVCgqdGhpcywgY2VsbEhlYXBDZWxsVHlwZSwgQ2xvbmVkQXJndW1lbnRzKQorICAgICwg
Y3VzdG9tR2V0dGVyU2V0dGVyU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoKnRoaXMsIGNlbGxIZWFw
Q2VsbFR5cGUsIEN1c3RvbUdldHRlclNldHRlcikKKyAgICAsIGRhdGVJbnN0YW5jZVNwYWNlIElT
T19TVUJTUEFDRV9JTklUKCp0aGlzLCBkYXRlSW5zdGFuY2VIZWFwQ2VsbFR5cGUsIERhdGVJbnN0
YW5jZSkKKyAgICAsIGRvbUF0dHJpYnV0ZUdldHRlclNldHRlclNwYWNlIElTT19TVUJTUEFDRV9J
TklUKCp0aGlzLCBjZWxsSGVhcENlbGxUeXBlLCBET01BdHRyaWJ1dGVHZXR0ZXJTZXR0ZXIpCisg
ICAgLCBleGNlcHRpb25TcGFjZSBJU09fU1VCU1BBQ0VfSU5JVCgqdGhpcywgZGVzdHJ1Y3RpYmxl
Q2VsbEhlYXBDZWxsVHlwZSwgRXhjZXB0aW9uKQorICAgICwgZXhlY3V0YWJsZVRvQ29kZUJsb2Nr
RWRnZVNwYWNlIElTT19TVUJTUEFDRV9JTklUKCp0aGlzLCBjZWxsSGVhcENlbGxUeXBlLCBFeGVj
dXRhYmxlVG9Db2RlQmxvY2tFZGdlKSAvLyBIYXNoOjB4N2I3MzBiMjAKKyAgICAsIGZ1bmN0aW9u
U3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoKnRoaXMsIGNlbGxIZWFwQ2VsbFR5cGUsIEpTRnVuY3Rp
b24pIC8vIEhhc2g6MHg4MDBmY2E3MgorICAgICwgZ2V0dGVyU2V0dGVyU3BhY2UgSVNPX1NVQlNQ
QUNFX0lOSVQoKnRoaXMsIGNlbGxIZWFwQ2VsbFR5cGUsIEdldHRlclNldHRlcikKKyAgICAsIGds
b2JhbExleGljYWxFbnZpcm9ubWVudFNwYWNlIElTT19TVUJTUEFDRV9JTklUKCp0aGlzLCBnbG9i
YWxMZXhpY2FsRW52aXJvbm1lbnRIZWFwQ2VsbFR5cGUsIEpTR2xvYmFsTGV4aWNhbEVudmlyb25t
ZW50KQorICAgICwgaW50ZXJuYWxGdW5jdGlvblNwYWNlIElTT19TVUJTUEFDRV9JTklUKCp0aGlz
LCBjZWxsSGVhcENlbGxUeXBlLCBJbnRlcm5hbEZ1bmN0aW9uKSAvLyBIYXNoOjB4Zjg0NWM0NjQK
KyAgICAsIGpzUHJveHlTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVCgqdGhpcywgY2VsbEhlYXBDZWxs
VHlwZSwgSlNQcm94eSkKKyAgICAsIG5hdGl2ZUV4ZWN1dGFibGVTcGFjZSBJU09fU1VCU1BBQ0Vf
SU5JVCgqdGhpcywgZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZSwgTmF0aXZlRXhlY3V0YWJs
ZSkgLy8gSGFzaDoweDY3NTY3Zjk1CisgICAgLCBudW1iZXJPYmplY3RTcGFjZSBJU09fU1VCU1BB
Q0VfSU5JVCgqdGhpcywgY2VsbEhlYXBDZWxsVHlwZSwgTnVtYmVyT2JqZWN0KQorICAgICwgcGxh
aW5PYmplY3RTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVCgqdGhpcywgY2VsbEhlYXBDZWxsVHlwZSwg
SlNOb25GaW5hbE9iamVjdCkgLy8gTWFpbmx5IHVzZWQgZm9yIHByb3RvdHlwZXMuCisgICAgLCBw
cm9taXNlU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoKnRoaXMsIGNlbGxIZWFwQ2VsbFR5cGUsIEpT
UHJvbWlzZSkKKyAgICAsIHByb3BlcnR5TmFtZUVudW1lcmF0b3JTcGFjZSBJU09fU1VCU1BBQ0Vf
SU5JVCgqdGhpcywgY2VsbEhlYXBDZWxsVHlwZSwgSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yKQor
ICAgICwgcHJvcGVydHlUYWJsZVNwYWNlIElTT19TVUJTUEFDRV9JTklUKCp0aGlzLCBkZXN0cnVj
dGlibGVDZWxsSGVhcENlbGxUeXBlLCBQcm9wZXJ0eVRhYmxlKSAvLyBIYXNoOjB4YzZiYzlmMTIK
KyAgICAsIHJlZ0V4cFNwYWNlIElTT19TVUJTUEFDRV9JTklUKCp0aGlzLCBkZXN0cnVjdGlibGVD
ZWxsSGVhcENlbGxUeXBlLCBSZWdFeHApCisgICAgLCByZWdFeHBPYmplY3RTcGFjZSBJU09fU1VC
U1BBQ0VfSU5JVCgqdGhpcywgY2VsbEhlYXBDZWxsVHlwZSwgUmVnRXhwT2JqZWN0KQorICAgICwg
cm9wZVN0cmluZ1NwYWNlIElTT19TVUJTUEFDRV9JTklUKCp0aGlzLCBzdHJpbmdIZWFwQ2VsbFR5
cGUsIEpTUm9wZVN0cmluZykKKyAgICAsIHNjb3BlZEFyZ3VtZW50c1NwYWNlIElTT19TVUJTUEFD
RV9JTklUKCp0aGlzLCBjZWxsSGVhcENlbGxUeXBlLCBTY29wZWRBcmd1bWVudHMpCisgICAgLCBz
cGFyc2VBcnJheVZhbHVlTWFwU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoKnRoaXMsIGRlc3RydWN0
aWJsZUNlbGxIZWFwQ2VsbFR5cGUsIFNwYXJzZUFycmF5VmFsdWVNYXApCisgICAgLCBzdHJpbmdT
cGFjZSBJU09fU1VCU1BBQ0VfSU5JVCgqdGhpcywgc3RyaW5nSGVhcENlbGxUeXBlLCBKU1N0cmlu
ZykgLy8gSGFzaDoweDkwY2Y3NThmCisgICAgLCBzdHJpbmdPYmplY3RTcGFjZSBJU09fU1VCU1BB
Q0VfSU5JVCgqdGhpcywgY2VsbEhlYXBDZWxsVHlwZSwgU3RyaW5nT2JqZWN0KQorICAgICwgc3Ry
dWN0dXJlQ2hhaW5TcGFjZSBJU09fU1VCU1BBQ0VfSU5JVCgqdGhpcywgY2VsbEhlYXBDZWxsVHlw
ZSwgU3RydWN0dXJlQ2hhaW4pCisgICAgLCBzdHJ1Y3R1cmVSYXJlRGF0YVNwYWNlIElTT19TVUJT
UEFDRV9JTklUKCp0aGlzLCBkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlLCBTdHJ1Y3R1cmVS
YXJlRGF0YSkgLy8gSGFzaDoweGFjYTRlNjJkCisgICAgLCBzdHJ1Y3R1cmVTcGFjZSBJU09fU1VC
U1BBQ0VfSU5JVCgqdGhpcywgZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZSwgU3RydWN0dXJl
KSAvLyBIYXNoOjB4MWYxYmNkY2EKKyAgICAsIGJyYW5kZWRTdHJ1Y3R1cmVTcGFjZSBJU09fU1VC
U1BBQ0VfSU5JVCgqdGhpcywgZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZSwgQnJhbmRlZFN0
cnVjdHVyZSkKKyAgICAsIHN5bWJvbFRhYmxlU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoKnRoaXMs
IGRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUsIFN5bWJvbFRhYmxlKSAvLyBIYXNoOjB4YzUy
MTVhZmQKKyAgICAsIGV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2VzV2l0aENvbnN0cmFpbnRzKGV4
ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2VTcGFjZSkKKyAgICAsIGV4ZWN1dGFibGVUb0NvZGVCbG9j
a0VkZ2VzV2l0aEZpbmFsaXplcnMoZXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZVNwYWNlKQorICAg
ICwgY29kZUJsb2NrU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoKnRoaXMsIGRlc3RydWN0aWJsZUNl
bGxIZWFwQ2VsbFR5cGUsIENvZGVCbG9jaykgLy8gSGFzaDoweDc3ZTY2ZWM5CisgICAgLCBmdW5j
dGlvbkV4ZWN1dGFibGVTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVCgqdGhpcywgZGVzdHJ1Y3RpYmxl
Q2VsbEhlYXBDZWxsVHlwZSwgRnVuY3Rpb25FeGVjdXRhYmxlKSAvLyBIYXNoOjB4NWQxNThmMwor
ICAgICwgcHJvZ3JhbUV4ZWN1dGFibGVTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVCgqdGhpcywgZGVz
dHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZSwgUHJvZ3JhbUV4ZWN1dGFibGUpIC8vIEhhc2g6MHg1
MjdjNzdlNworICAgICwgdW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGVTcGFjZSBJU09fU1VCU1BB
Q0VfSU5JVCgqdGhpcywgZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZSwgVW5saW5rZWRGdW5j
dGlvbkV4ZWN1dGFibGUpIC8vIEhhc2g6MHhmNmI4MjhkOQorCiB7CiAgICAgbV93b3JsZFN0YXRl
LnN0b3JlKDApOwogCkBAIC01NzksMzEgKzc3OCwzMSBAQCB2b2lkIEhlYXA6OmZpbmFsaXplVW5j
b25kaXRpb25hbEZpbmFsaXplCiB7CiAgICAgVk0mIHZtID0gdGhpcy0+dm0oKTsKICAgICB2bS5i
dWlsdGluRXhlY3V0YWJsZXMoKS0+ZmluYWxpemVVbmNvbmRpdGlvbmFsbHkoKTsKLSAgICBmaW5h
bGl6ZU1hcmtlZFVuY29uZGl0aW9uYWxGaW5hbGl6ZXJzPEZ1bmN0aW9uRXhlY3V0YWJsZT4odm0u
ZnVuY3Rpb25FeGVjdXRhYmxlU3BhY2Uuc3BhY2UpOwotICAgIGZpbmFsaXplTWFya2VkVW5jb25k
aXRpb25hbEZpbmFsaXplcnM8U3ltYm9sVGFibGU+KHZtLnN5bWJvbFRhYmxlU3BhY2UpOwotICAg
IGZpbmFsaXplTWFya2VkVW5jb25kaXRpb25hbEZpbmFsaXplcnM8RXhlY3V0YWJsZVRvQ29kZUJs
b2NrRWRnZT4odm0uZXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZXNXaXRoRmluYWxpemVycyk7IC8v
IFdlIHJ1biB0aGlzIGJlZm9yZSBDb2RlQmxvY2sncyB1bmNvbmRpdGlvbmFsIGZpbmFsaXplciBz
aW5jZSBDb2RlQmxvY2sgbG9va3MgYXQgdGhlIG93bmVyIGV4ZWN1dGFibGUncyBpbnN0YWxsZWQg
Q29kZUJsb2NrIGluIGl0cyBmaW5hbGl6ZVVuY29uZGl0aW9uYWxseS4KLSAgICB2bS5mb3JFYWNo
Q29kZUJsb2NrU3BhY2UoCisgICAgZmluYWxpemVNYXJrZWRVbmNvbmRpdGlvbmFsRmluYWxpemVy
czxGdW5jdGlvbkV4ZWN1dGFibGU+KGZ1bmN0aW9uRXhlY3V0YWJsZVNwYWNlLnNwYWNlKTsKKyAg
ICBmaW5hbGl6ZU1hcmtlZFVuY29uZGl0aW9uYWxGaW5hbGl6ZXJzPFN5bWJvbFRhYmxlPihzeW1i
b2xUYWJsZVNwYWNlKTsKKyAgICBmaW5hbGl6ZU1hcmtlZFVuY29uZGl0aW9uYWxGaW5hbGl6ZXJz
PEV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2U+KGV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2VzV2l0
aEZpbmFsaXplcnMpOyAvLyBXZSBydW4gdGhpcyBiZWZvcmUgQ29kZUJsb2NrJ3MgdW5jb25kaXRp
b25hbCBmaW5hbGl6ZXIgc2luY2UgQ29kZUJsb2NrIGxvb2tzIGF0IHRoZSBvd25lciBleGVjdXRh
YmxlJ3MgaW5zdGFsbGVkIENvZGVCbG9jayBpbiBpdHMgZmluYWxpemVVbmNvbmRpdGlvbmFsbHku
CisgICAgZm9yRWFjaENvZGVCbG9ja1NwYWNlKAogICAgICAgICBbJl0gKGF1dG8mIHNwYWNlKSB7
CiAgICAgICAgICAgICB0aGlzLT5maW5hbGl6ZU1hcmtlZFVuY29uZGl0aW9uYWxGaW5hbGl6ZXJz
PENvZGVCbG9jaz4oc3BhY2Uuc2V0KTsKICAgICAgICAgfSk7Ci0gICAgZmluYWxpemVNYXJrZWRV
bmNvbmRpdGlvbmFsRmluYWxpemVyczxTdHJ1Y3R1cmVSYXJlRGF0YT4odm0uc3RydWN0dXJlUmFy
ZURhdGFTcGFjZSk7Ci0gICAgZmluYWxpemVNYXJrZWRVbmNvbmRpdGlvbmFsRmluYWxpemVyczxV
bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZT4odm0udW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGVT
cGFjZS5zZXQpOwotICAgIGlmICh2bS5tX3dlYWtTZXRTcGFjZSkKLSAgICAgICAgZmluYWxpemVN
YXJrZWRVbmNvbmRpdGlvbmFsRmluYWxpemVyczxKU1dlYWtTZXQ+KCp2bS5tX3dlYWtTZXRTcGFj
ZSk7Ci0gICAgaWYgKHZtLm1fd2Vha01hcFNwYWNlKQotICAgICAgICBmaW5hbGl6ZU1hcmtlZFVu
Y29uZGl0aW9uYWxGaW5hbGl6ZXJzPEpTV2Vha01hcD4oKnZtLm1fd2Vha01hcFNwYWNlKTsKLSAg
ICBpZiAodm0ubV93ZWFrT2JqZWN0UmVmU3BhY2UpCi0gICAgICAgIGZpbmFsaXplTWFya2VkVW5j
b25kaXRpb25hbEZpbmFsaXplcnM8SlNXZWFrT2JqZWN0UmVmPigqdm0ubV93ZWFrT2JqZWN0UmVm
U3BhY2UpOwotICAgIGlmICh2bS5tX2Vycm9ySW5zdGFuY2VTcGFjZSkKLSAgICAgICAgZmluYWxp
emVNYXJrZWRVbmNvbmRpdGlvbmFsRmluYWxpemVyczxFcnJvckluc3RhbmNlPigqdm0ubV9lcnJv
ckluc3RhbmNlU3BhY2UpOworICAgIGZpbmFsaXplTWFya2VkVW5jb25kaXRpb25hbEZpbmFsaXpl
cnM8U3RydWN0dXJlUmFyZURhdGE+KHN0cnVjdHVyZVJhcmVEYXRhU3BhY2UpOworICAgIGZpbmFs
aXplTWFya2VkVW5jb25kaXRpb25hbEZpbmFsaXplcnM8VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFi
bGU+KHVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlU3BhY2Uuc2V0KTsKKyAgICBpZiAobV93ZWFr
U2V0U3BhY2UpCisgICAgICAgIGZpbmFsaXplTWFya2VkVW5jb25kaXRpb25hbEZpbmFsaXplcnM8
SlNXZWFrU2V0PigqbV93ZWFrU2V0U3BhY2UpOworICAgIGlmIChtX3dlYWtNYXBTcGFjZSkKKyAg
ICAgICAgZmluYWxpemVNYXJrZWRVbmNvbmRpdGlvbmFsRmluYWxpemVyczxKU1dlYWtNYXA+KCpt
X3dlYWtNYXBTcGFjZSk7CisgICAgaWYgKG1fd2Vha09iamVjdFJlZlNwYWNlKQorICAgICAgICBm
aW5hbGl6ZU1hcmtlZFVuY29uZGl0aW9uYWxGaW5hbGl6ZXJzPEpTV2Vha09iamVjdFJlZj4oKm1f
d2Vha09iamVjdFJlZlNwYWNlKTsKKyAgICBpZiAobV9lcnJvckluc3RhbmNlU3BhY2UpCisgICAg
ICAgIGZpbmFsaXplTWFya2VkVW5jb25kaXRpb25hbEZpbmFsaXplcnM8RXJyb3JJbnN0YW5jZT4o
Km1fZXJyb3JJbnN0YW5jZVNwYWNlKTsKIAogICAgIC8vIEZpbmFsaXphdGlvblJlZ2lzdHJpZXMg
Y3VycmVudGx5IHJlbHkgb24gc2VyaWFsIGZpbmFsaXphdGlvbiBiZWNhdXNlIHRoZXkgY2FuIHBv
c3QgdGFza3MgdG8gdGhlIGRlZmVycmVkV29ya1RpbWVyLCB3aGljaCBub3JtYWxseSBleHBlY3Rz
IHRhc2tzIHRvIG9ubHkgYmUgcG9zdGVkIGJ5IHRoZSBBUEkgbG9jayBob2xkZXIuCi0gICAgaWYg
KHZtLm1fZmluYWxpemF0aW9uUmVnaXN0cnlTcGFjZSkKLSAgICAgICAgZmluYWxpemVNYXJrZWRV
bmNvbmRpdGlvbmFsRmluYWxpemVyczxKU0ZpbmFsaXphdGlvblJlZ2lzdHJ5Pigqdm0ubV9maW5h
bGl6YXRpb25SZWdpc3RyeVNwYWNlKTsKKyAgICBpZiAobV9maW5hbGl6YXRpb25SZWdpc3RyeVNw
YWNlKQorICAgICAgICBmaW5hbGl6ZU1hcmtlZFVuY29uZGl0aW9uYWxGaW5hbGl6ZXJzPEpTRmlu
YWxpemF0aW9uUmVnaXN0cnk+KCptX2ZpbmFsaXphdGlvblJlZ2lzdHJ5U3BhY2UpOwogCiAjaWYg
RU5BQkxFKFdFQkFTU0VNQkxZKQotICAgIGlmICh2bS5tX3dlYkFzc2VtYmx5Q29kZUJsb2NrU3Bh
Y2UpCi0gICAgICAgIGZpbmFsaXplTWFya2VkVW5jb25kaXRpb25hbEZpbmFsaXplcnM8SlNXZWJB
c3NlbWJseUNvZGVCbG9jaz4oKnZtLm1fd2ViQXNzZW1ibHlDb2RlQmxvY2tTcGFjZSk7CisgICAg
aWYgKG1fd2ViQXNzZW1ibHlDb2RlQmxvY2tTcGFjZSkKKyAgICAgICAgZmluYWxpemVNYXJrZWRV
bmNvbmRpdGlvbmFsRmluYWxpemVyczxKU1dlYkFzc2VtYmx5Q29kZUJsb2NrPigqbV93ZWJBc3Nl
bWJseUNvZGVCbG9ja1NwYWNlKTsKICNlbmRpZgogfQogCkBAIC05MDUsNyArMTEwNCw3IEBAIHZv
aWQgSGVhcDo6ZGVsZXRlQWxsQ29kZUJsb2NrcyhEZWxldGVBbGwKIAogICAgIGNvbXBsZXRlQWxs
SklUUGxhbnMoKTsKIAotICAgIHZtLmZvckVhY2hTY3JpcHRFeGVjdXRhYmxlU3BhY2UoCisgICAg
Zm9yRWFjaFNjcmlwdEV4ZWN1dGFibGVTcGFjZSgKICAgICAgICAgWyZdIChhdXRvJiBzcGFjZUFu
ZFNldCkgewogICAgICAgICAgICAgSGVhcEl0ZXJhdGlvblNjb3BlIGhlYXBJdGVyYXRpb25TY29w
ZSgqdGhpcyk7CiAgICAgICAgICAgICBhdXRvJiBzZXQgPSBzcGFjZUFuZFNldC5zZXQ7CkBAIC05
MjQsOCArMTEyMyw4IEBAIHZvaWQgSGVhcDo6ZGVsZXRlQWxsQ29kZUJsb2NrcyhEZWxldGVBbGwK
ICAgICAgICAgLy8gcG9pbnRzIGludG8gYSBDb2RlQmxvY2sgdGhhdCBjb3VsZCBiZSBkZWFkLiBU
aGUgSUMgd2lsbCBzdGlsbCBzdWNjZWVkIGJlY2F1c2UKICAgICAgICAgLy8gaXQgdXNlcyBhIGNh
bGxlZSBjaGVjaywgYnV0IHRoZW4gaXQgd2lsbCBjYWxsIGludG8gZGVhZCBjb2RlLgogICAgICAg
ICBIZWFwSXRlcmF0aW9uU2NvcGUgaGVhcEl0ZXJhdGlvblNjb3BlKCp0aGlzKTsKLSAgICAgICAg
aWYgKHZtLm1fd2ViQXNzZW1ibHlDb2RlQmxvY2tTcGFjZSkgewotICAgICAgICAgICAgdm0ubV93
ZWJBc3NlbWJseUNvZGVCbG9ja1NwYWNlLT5mb3JFYWNoTGl2ZUNlbGwoWyZdIChIZWFwQ2VsbCog
Y2VsbCwgSGVhcENlbGw6OktpbmQga2luZCkgeworICAgICAgICBpZiAobV93ZWJBc3NlbWJseUNv
ZGVCbG9ja1NwYWNlKSB7CisgICAgICAgICAgICBtX3dlYkFzc2VtYmx5Q29kZUJsb2NrU3BhY2Ut
PmZvckVhY2hMaXZlQ2VsbChbJl0gKEhlYXBDZWxsKiBjZWxsLCBIZWFwQ2VsbDo6S2luZCBraW5k
KSB7CiAgICAgICAgICAgICAgICAgQVNTRVJUX1VOVVNFRChraW5kLCBraW5kID09IEhlYXBDZWxs
OjpKU0NlbGwpOwogICAgICAgICAgICAgICAgIEpTV2ViQXNzZW1ibHlDb2RlQmxvY2sqIGNvZGVC
bG9jayA9IHN0YXRpY19jYXN0PEpTV2ViQXNzZW1ibHlDb2RlQmxvY2sqPihjZWxsKTsKICAgICAg
ICAgICAgICAgICBjb2RlQmxvY2stPmNsZWFySlNDYWxsSUNzKHZtKTsKQEAgLTk0Niw3ICsxMTQ1
LDcgQEAgdm9pZCBIZWFwOjpkZWxldGVBbGxVbmxpbmtlZENvZGVCbG9ja3MoRAogICAgIFJFTEVB
U0VfQVNTRVJUKCFtX2NvbGxlY3Rpb25TY29wZSk7CiAKICAgICBIZWFwSXRlcmF0aW9uU2NvcGUg
aGVhcEl0ZXJhdGlvblNjb3BlKCp0aGlzKTsKLSAgICB2bS51bmxpbmtlZEZ1bmN0aW9uRXhlY3V0
YWJsZVNwYWNlLnNldC5mb3JFYWNoTGl2ZUNlbGwoCisgICAgdW5saW5rZWRGdW5jdGlvbkV4ZWN1
dGFibGVTcGFjZS5zZXQuZm9yRWFjaExpdmVDZWxsKAogICAgICAgICBbJl0gKEhlYXBDZWxsKiBj
ZWxsLCBIZWFwQ2VsbDo6S2luZCkgewogICAgICAgICAgICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1
dGFibGUqIGV4ZWN1dGFibGUgPSBzdGF0aWNfY2FzdDxVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJs
ZSo+KGNlbGwpOwogICAgICAgICAgICAgZXhlY3V0YWJsZS0+Y2xlYXJDb2RlKHZtKTsKQEAgLTk1
NSwxMCArMTE1NCwxMCBAQCB2b2lkIEhlYXA6OmRlbGV0ZUFsbFVubGlua2VkQ29kZUJsb2NrcyhE
CiAKIHZvaWQgSGVhcDo6ZGVsZXRlVW5tYXJrZWRDb21waWxlZENvZGUoKQogewotICAgIHZtKCku
Zm9yRWFjaFNjcmlwdEV4ZWN1dGFibGVTcGFjZShbXSAoYXV0byYgc3BhY2UpIHsgc3BhY2Uuc3Bh
Y2Uuc3dlZXAoKTsgfSk7CisgICAgZm9yRWFjaFNjcmlwdEV4ZWN1dGFibGVTcGFjZShbXSAoYXV0
byYgc3BhY2UpIHsgc3BhY2Uuc3BhY2Uuc3dlZXAzKCk7IH0pOwogICAgIC8vIFN3ZWVwaW5nIG11
c3Qgb2NjdXIgYmVmb3JlIGRlbGV0aW5nIHN0dWJzLCBvdGhlcndpc2UgdGhlIHN0dWJzIG1pZ2h0
IHN0aWxsIHRoaW5rIHRoZXkncmUgYWxpdmUgYXMgdGhleSBnZXQgZGVsZXRlZC4KICAgICAvLyBB
bmQgQ29kZUJsb2NrIGRlc3RydWN0b3IgaXMgYXNzdW1pbmcgdGhhdCBDb2RlQmxvY2sgZ2V0cyBk
ZXN0cm95ZWQgYmVmb3JlIFVubGlua2VkQ29kZUJsb2NrIGdldHMgZGVzdHJveWVkLgotICAgIHZt
KCkuZm9yRWFjaENvZGVCbG9ja1NwYWNlKFtdIChhdXRvJiBzcGFjZSkgeyBzcGFjZS5zcGFjZS5z
d2VlcCgpOyB9KTsKKyAgICBmb3JFYWNoQ29kZUJsb2NrU3BhY2UoW10gKGF1dG8mIHNwYWNlKSB7
IHNwYWNlLnNwYWNlLnN3ZWVwMygpOyB9KTsKICAgICBtX2ppdFN0dWJSb3V0aW5lcy0+ZGVsZXRl
VW5tYXJrZWRKZXR0aXNvbmVkU3R1YlJvdXRpbmVzKCk7CiB9CiAKQEAgLTIxMDMsOCArMjMwMiw4
IEBAIHZvaWQgSGVhcDo6c3dlZXBJbkZpbmFsaXplKCkKICAgICBtX29iamVjdFNwYWNlLnN3ZWVw
UHJlY2lzZUFsbG9jYXRpb25zKCk7CiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQogICAgIC8vIFdl
IGhvbGQgb250byBhIGxvdCBvZiBtZW1vcnksIHNvIGl0IG1ha2VzIGEgbG90IG9mIHNlbnNlIHRv
IGJlIHN3ZXB0IGVhZ2VybHkuCi0gICAgaWYgKHZtKCkubV93ZWJBc3NlbWJseU1lbW9yeVNwYWNl
KQotICAgICAgICB2bSgpLm1fd2ViQXNzZW1ibHlNZW1vcnlTcGFjZS0+c3dlZXAoKTsKKyAgICBp
ZiAobV93ZWJBc3NlbWJseU1lbW9yeVNwYWNlKQorICAgICAgICBtX3dlYkFzc2VtYmx5TWVtb3J5
U3BhY2UtPnN3ZWVwMygpOwogI2VuZGlmCiB9CiAKQEAgLTI4MDUsNyArMzAwNCw3IEBAIHZvaWQg
SGVhcDo6YWRkQ29yZUNvbnN0cmFpbnRzKCkKICAgICAgICAgIk8iLCAiT3V0cHV0IiwKICAgICAg
ICAgTUFLRV9NQVJLSU5HX0NPTlNUUkFJTlRfRVhFQ1VUT1JfUEFJUigoW10gKGF1dG8mIHZpc2l0
b3IpIHsKICAgICAgICAgICAgIHVzaW5nIFZpc2l0b3IgPSBkZWNsdHlwZSh2aXNpdG9yKTsKLSAg
ICAgICAgICAgIFZNJiB2bSA9IHZpc2l0b3Iudm0oKTsKKyAgICAgICAgICAgIEhlYXAqIGhlYXAg
PSB2aXNpdG9yLmhlYXAoKTsKIAogICAgICAgICAgICAgLy8gVGhlIGB2aXNpdG9yMmAgYXJndW1l
bnQgaXMgc3RyYW5nZWx5IG5hbWVkIGJlY2F1c2UgdGhlIFdpbkNhaXJvIHBvcnQKICAgICAgICAg
ICAgIC8vIGdldHMgY29uZnVzZWQgIGFuZCB0aGlua3Mgd2UncmUgdHJ5aW5nIHRvIGNhcHR1cmUg
dGhlIG91dGVyIHZpc2l0b3IKQEAgLTI4MjQsMTEgKzMwMjMsMTEgQEAgdm9pZCBIZWFwOjphZGRD
b3JlQ29uc3RyYWludHMoKQogCiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgU2V0Um9v
dE1hcmtSZWFzb25TY29wZSByb290U2NvcGUodmlzaXRvciwgUm9vdE1hcmtSZWFzb246OkV4ZWN1
dGFibGVUb0NvZGVCbG9ja0VkZ2VzKTsKLSAgICAgICAgICAgICAgICBhZGQodm0uZXhlY3V0YWJs
ZVRvQ29kZUJsb2NrRWRnZXNXaXRoQ29uc3RyYWludHMpOworICAgICAgICAgICAgICAgIGFkZCho
ZWFwLT5leGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlc1dpdGhDb25zdHJhaW50cyk7CiAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICBpZiAodm0ubV93ZWFrTWFwU3BhY2UpIHsKKyAgICAgICAgICAg
IGlmIChoZWFwLT5tX3dlYWtNYXBTcGFjZSkgewogICAgICAgICAgICAgICAgIFNldFJvb3RNYXJr
UmVhc29uU2NvcGUgcm9vdFNjb3BlKHZpc2l0b3IsIFJvb3RNYXJrUmVhc29uOjpXZWFrTWFwU3Bh
Y2UpOwotICAgICAgICAgICAgICAgIGFkZCgqdm0ubV93ZWFrTWFwU3BhY2UpOworICAgICAgICAg
ICAgICAgIGFkZCgqaGVhcC0+bV93ZWFrTWFwU3BhY2UpOwogICAgICAgICAgICAgfQogICAgICAg
ICB9KSksCiAgICAgICAgIENvbnN0cmFpbnRWb2xhdGlsaXR5OjpHcmV5ZWRCeU1hcmtpbmcsCkBA
IC0zMDYyLDQgKzMyNjEsMTM1IEBAIHZvaWQgSGVhcDo6dmVyaWZ5R0MoKQogICAgIG1fdmVyaWZp
ZXJTbG90VmlzaXRvciA9IG51bGxwdHI7CiB9CiAKKyNkZWZpbmUgRFlOQU1JQ19JU09fU1VCU1BB
Q0VfREVGSU5FX01FTUJFUl9TTE9XKG5hbWUsIGhlYXBDZWxsVHlwZSwgdHlwZSkgXAorICAgIElz
b1N1YnNwYWNlKiBIZWFwOjpuYW1lIyNTbG93KCkgXAorICAgIHsgXAorICAgICAgICBBU1NFUlQo
IW1fIyNuYW1lKTsgXAorICAgICAgICBhdXRvIHNwYWNlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFj
ZT4gSVNPX1NVQlNQQUNFX0lOSVQoKnRoaXMsIGhlYXBDZWxsVHlwZSwgdHlwZSk7IFwKKyAgICAg
ICAgV1RGOjpzdG9yZVN0b3JlRmVuY2UoKTsgXAorICAgICAgICBtXyMjbmFtZSA9IFdURk1vdmUo
c3BhY2UpOyBcCisgICAgICAgIHJldHVybiBtXyMjbmFtZS5nZXQoKTsgXAorICAgIH0KKworCitE
WU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coYXBpR2xvYmFsT2JqZWN0U3Bh
Y2UsIGFwaUdsb2JhbE9iamVjdEhlYXBDZWxsVHlwZSwgSlNBUElHbG9iYWxPYmplY3QpCitEWU5B
TUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coYXBpVmFsdWVXcmFwcGVyU3BhY2Us
IGNlbGxIZWFwQ2VsbFR5cGUsIEpTQVBJVmFsdWVXcmFwcGVyKQorRFlOQU1JQ19JU09fU1VCU1BB
Q0VfREVGSU5FX01FTUJFUl9TTE9XKGFycmF5QnVmZmVyU3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUs
IEpTQXJyYXlCdWZmZXIpCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1co
YXJyYXlJdGVyYXRvclNwYWNlLCBjZWxsSGVhcENlbGxUeXBlLCBKU0FycmF5SXRlcmF0b3IpCitE
WU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coYXN5bmNHZW5lcmF0b3JTcGFj
ZSwgY2VsbEhlYXBDZWxsVHlwZSwgSlNBc3luY0dlbmVyYXRvcikKK0RZTkFNSUNfSVNPX1NVQlNQ
QUNFX0RFRklORV9NRU1CRVJfU0xPVyhiaWdJbnQ2NEFycmF5U3BhY2UsIGNlbGxIZWFwQ2VsbFR5
cGUsIEpTQmlnSW50NjRBcnJheSkKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJf
U0xPVyhiaWdJbnRPYmplY3RTcGFjZSwgY2VsbEhlYXBDZWxsVHlwZSwgQmlnSW50T2JqZWN0KQor
RFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGJpZ1VpbnQ2NEFycmF5U3Bh
Y2UsIGNlbGxIZWFwQ2VsbFR5cGUsIEpTQmlnVWludDY0QXJyYXkpCitEWU5BTUlDX0lTT19TVUJT
UEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coYm9vbGVhbk9iamVjdFNwYWNlLCBjZWxsSGVhcENlbGxU
eXBlLCBCb29sZWFuT2JqZWN0KQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9T
TE9XKGJvdW5kRnVuY3Rpb25TcGFjZSwgY2VsbEhlYXBDZWxsVHlwZSwgSlNCb3VuZEZ1bmN0aW9u
KSAvLyBIYXNoOjB4ZDc5MTZkNDEKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJf
U0xPVyhjYWxsYmFja0NvbnN0cnVjdG9yU3BhY2UsIGNhbGxiYWNrQ29uc3RydWN0b3JIZWFwQ2Vs
bFR5cGUsIEpTQ2FsbGJhY2tDb25zdHJ1Y3RvcikKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklO
RV9NRU1CRVJfU0xPVyhjYWxsYmFja0dsb2JhbE9iamVjdFNwYWNlLCBjYWxsYmFja0dsb2JhbE9i
amVjdEhlYXBDZWxsVHlwZSwgSlNDYWxsYmFja09iamVjdDxKU0dsb2JhbE9iamVjdD4pCitEWU5B
TUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coY2FsbGJhY2tGdW5jdGlvblNwYWNl
LCBjZWxsSGVhcENlbGxUeXBlLCBKU0NhbGxiYWNrRnVuY3Rpb24pIC8vIEhhc2g6MHhlNzY0OGVi
YworRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGNhbGxiYWNrT2JqZWN0
U3BhY2UsIGNhbGxiYWNrT2JqZWN0SGVhcENlbGxUeXBlLCBKU0NhbGxiYWNrT2JqZWN0PEpTTm9u
RmluYWxPYmplY3Q+KQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGN1
c3RvbUdldHRlckZ1bmN0aW9uU3BhY2UsIGN1c3RvbUdldHRlckZ1bmN0aW9uSGVhcENlbGxUeXBl
LCBKU0N1c3RvbUdldHRlckZ1bmN0aW9uKQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01F
TUJFUl9TTE9XKGN1c3RvbVNldHRlckZ1bmN0aW9uU3BhY2UsIGN1c3RvbVNldHRlckZ1bmN0aW9u
SGVhcENlbGxUeXBlLCBKU0N1c3RvbVNldHRlckZ1bmN0aW9uKQorRFlOQU1JQ19JU09fU1VCU1BB
Q0VfREVGSU5FX01FTUJFUl9TTE9XKGRhdGFWaWV3U3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUsIEpT
RGF0YVZpZXcpCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coZGVidWdn
ZXJTY29wZVNwYWNlLCBjZWxsSGVhcENlbGxUeXBlLCBEZWJ1Z2dlclNjb3BlKQorRFlOQU1JQ19J
U09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGVycm9ySW5zdGFuY2VTcGFjZSwgZXJyb3JJ
bnN0YW5jZUhlYXBDZWxsVHlwZSwgRXJyb3JJbnN0YW5jZSkgLy8gSGFzaDoweDNmNDBkNGEKK0RZ
TkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhmbG9hdDMyQXJyYXlTcGFjZSwg
Y2VsbEhlYXBDZWxsVHlwZSwgSlNGbG9hdDMyQXJyYXkpCitEWU5BTUlDX0lTT19TVUJTUEFDRV9E
RUZJTkVfTUVNQkVSX1NMT1coZmxvYXQ2NEFycmF5U3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUsIEpT
RmxvYXQ2NEFycmF5KQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGZ1
bmN0aW9uUmFyZURhdGFTcGFjZSwgZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZSwgRnVuY3Rp
b25SYXJlRGF0YSkKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhnZW5l
cmF0b3JTcGFjZSwgY2VsbEhlYXBDZWxsVHlwZSwgSlNHZW5lcmF0b3IpCitEWU5BTUlDX0lTT19T
VUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coZ2xvYmFsT2JqZWN0U3BhY2UsIGdsb2JhbE9iamVj
dEhlYXBDZWxsVHlwZSwgSlNHbG9iYWxPYmplY3QpCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJ
TkVfTUVNQkVSX1NMT1coaW5qZWN0ZWRTY3JpcHRIb3N0U3BhY2UsIGluamVjdGVkU2NyaXB0SG9z
dFNwYWNlSGVhcENlbGxUeXBlLCBJbnNwZWN0b3I6OkpTSW5qZWN0ZWRTY3JpcHRIb3N0KQorRFlO
QU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGludDhBcnJheVNwYWNlLCBjZWxs
SGVhcENlbGxUeXBlLCBKU0ludDhBcnJheSkKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9N
RU1CRVJfU0xPVyhpbnQxNkFycmF5U3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUsIEpTSW50MTZBcnJh
eSkKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhpbnQzMkFycmF5U3Bh
Y2UsIGNlbGxIZWFwQ2VsbFR5cGUsIEpTSW50MzJBcnJheSkKK0RZTkFNSUNfSVNPX1NVQlNQQUNF
X0RFRklORV9NRU1CRVJfU0xPVyhqYXZhU2NyaXB0Q2FsbEZyYW1lU3BhY2UsIGphdmFTY3JpcHRD
YWxsRnJhbWVIZWFwQ2VsbFR5cGUsIEluc3BlY3Rvcjo6SlNKYXZhU2NyaXB0Q2FsbEZyYW1lKQor
RFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGpzTW9kdWxlUmVjb3JkU3Bh
Y2UsIGpzTW9kdWxlUmVjb3JkSGVhcENlbGxUeXBlLCBKU01vZHVsZVJlY29yZCkKK0RZTkFNSUNf
SVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhtYXBCdWNrZXRTcGFjZSwgY2VsbEhlYXBD
ZWxsVHlwZSwgSlNNYXA6OkJ1Y2tldFR5cGUpCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVf
TUVNQkVSX1NMT1cobWFwSXRlcmF0b3JTcGFjZSwgY2VsbEhlYXBDZWxsVHlwZSwgSlNNYXBJdGVy
YXRvcikKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhtYXBTcGFjZSwg
Y2VsbEhlYXBDZWxsVHlwZSwgSlNNYXApCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVN
QkVSX1NMT1cobW9kdWxlTmFtZXNwYWNlT2JqZWN0U3BhY2UsIG1vZHVsZU5hbWVzcGFjZU9iamVj
dEhlYXBDZWxsVHlwZSwgSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QpCitEWU5BTUlDX0lTT19TVUJT
UEFDRV9ERUZJTkVfTUVNQkVSX1NMT1cobmF0aXZlU3RkRnVuY3Rpb25TcGFjZSwgbmF0aXZlU3Rk
RnVuY3Rpb25IZWFwQ2VsbFR5cGUsIEpTTmF0aXZlU3RkRnVuY3Rpb24pIC8vIEhhc2g6MHg3MGVk
NjFlNAorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHByb3h5T2JqZWN0
U3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUsIFByb3h5T2JqZWN0KQorRFlOQU1JQ19JU09fU1VCU1BB
Q0VfREVGSU5FX01FTUJFUl9TTE9XKHByb3h5UmV2b2tlU3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUs
IFByb3h5UmV2b2tlKSAvLyBIYXNoOjB4YjUwNmE5MzkKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RF
RklORV9NRU1CRVJfU0xPVyhzY29wZWRBcmd1bWVudHNUYWJsZVNwYWNlLCBkZXN0cnVjdGlibGVD
ZWxsSGVhcENlbGxUeXBlLCBTY29wZWRBcmd1bWVudHNUYWJsZSkKK0RZTkFNSUNfSVNPX1NVQlNQ
QUNFX0RFRklORV9NRU1CRVJfU0xPVyhzY3JpcHRGZXRjaFBhcmFtZXRlcnNTcGFjZSwgZGVzdHJ1
Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZSwgSlNTY3JpcHRGZXRjaFBhcmFtZXRlcnMpCitEWU5BTUlD
X0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coc2NyaXB0RmV0Y2hlclNwYWNlLCBkZXN0
cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlLCBKU1NjcmlwdEZldGNoZXIpCitEWU5BTUlDX0lTT19T
VUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coc2V0QnVja2V0U3BhY2UsIGNlbGxIZWFwQ2VsbFR5
cGUsIEpTU2V0OjpCdWNrZXRUeXBlKQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJF
Ul9TTE9XKHNldEl0ZXJhdG9yU3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUsIEpTU2V0SXRlcmF0b3Ip
CitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coc2V0U3BhY2UsIGNlbGxI
ZWFwQ2VsbFR5cGUsIEpTU2V0KQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9T
TE9XKHNoYWRvd1JlYWxtU3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUsIFNoYWRvd1JlYWxtT2JqZWN0
KQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHN0cmljdEV2YWxBY3Rp
dmF0aW9uU3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUsIFN0cmljdEV2YWxBY3RpdmF0aW9uKQorRFlO
QU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHN0cmluZ0l0ZXJhdG9yU3BhY2Us
IGNlbGxIZWFwQ2VsbFR5cGUsIEpTU3RyaW5nSXRlcmF0b3IpCitEWU5BTUlDX0lTT19TVUJTUEFD
RV9ERUZJTkVfTUVNQkVSX1NMT1coc291cmNlQ29kZVNwYWNlLCBkZXN0cnVjdGlibGVDZWxsSGVh
cENlbGxUeXBlLCBKU1NvdXJjZUNvZGUpCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVN
QkVSX1NMT1coc3ltYm9sU3BhY2UsIGRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUsIFN5bWJv
bCkKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhzeW1ib2xPYmplY3RT
cGFjZSwgY2VsbEhlYXBDZWxsVHlwZSwgU3ltYm9sT2JqZWN0KQorRFlOQU1JQ19JU09fU1VCU1BB
Q0VfREVGSU5FX01FTUJFUl9TTE9XKHRlbXBsYXRlT2JqZWN0RGVzY3JpcHRvclNwYWNlLCBkZXN0
cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlLCBKU1RlbXBsYXRlT2JqZWN0RGVzY3JpcHRvcikKK0RZ
TkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh0ZW1wb3JhbENhbGVuZGFyU3Bh
Y2UsIGNlbGxIZWFwQ2VsbFR5cGUsIFRlbXBvcmFsQ2FsZW5kYXIpCitEWU5BTUlDX0lTT19TVUJT
UEFDRV9ERUZJTkVfTUVNQkVSX1NMT1codGVtcG9yYWxEdXJhdGlvblNwYWNlLCBjZWxsSGVhcENl
bGxUeXBlLCBUZW1wb3JhbER1cmF0aW9uKQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01F
TUJFUl9TTE9XKHRlbXBvcmFsSW5zdGFudFNwYWNlLCBjZWxsSGVhcENlbGxUeXBlLCBUZW1wb3Jh
bEluc3RhbnQpCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1codGVtcG9y
YWxQbGFpblRpbWVTcGFjZSwgY2VsbEhlYXBDZWxsVHlwZSwgVGVtcG9yYWxQbGFpblRpbWUpCitE
WU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1codGVtcG9yYWxUaW1lWm9uZVNw
YWNlLCBjZWxsSGVhcENlbGxUeXBlLCBUZW1wb3JhbFRpbWVab25lKQorRFlOQU1JQ19JU09fU1VC
U1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHVpbnQ4QXJyYXlTcGFjZSwgY2VsbEhlYXBDZWxsVHlw
ZSwgSlNVaW50OEFycmF5KQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9X
KHVpbnQ4Q2xhbXBlZEFycmF5U3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUsIEpTVWludDhDbGFtcGVk
QXJyYXkpCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1codWludDE2QXJy
YXlTcGFjZSwgY2VsbEhlYXBDZWxsVHlwZSwgSlNVaW50MTZBcnJheSkKK0RZTkFNSUNfSVNPX1NV
QlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh1aW50MzJBcnJheVNwYWNlLCBjZWxsSGVhcENlbGxU
eXBlLCBKU1VpbnQzMkFycmF5KQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9T
TE9XKHVubGlua2VkRXZhbENvZGVCbG9ja1NwYWNlLCBkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxU
eXBlLCBVbmxpbmtlZEV2YWxDb2RlQmxvY2spCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVf
TUVNQkVSX1NMT1codW5saW5rZWRGdW5jdGlvbkNvZGVCbG9ja1NwYWNlLCBkZXN0cnVjdGlibGVD
ZWxsSGVhcENlbGxUeXBlLCBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKQorRFlOQU1JQ19JU09f
U1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9j
a1NwYWNlLCBkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlLCBVbmxpbmtlZE1vZHVsZVByb2dy
YW1Db2RlQmxvY2spCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1codW5s
aW5rZWRQcm9ncmFtQ29kZUJsb2NrU3BhY2UsIGRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUs
IFVubGlua2VkUHJvZ3JhbUNvZGVCbG9jaykKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9N
RU1CRVJfU0xPVyh3ZWFrTWFwU3BhY2UsIHdlYWtNYXBIZWFwQ2VsbFR5cGUsIEpTV2Vha01hcCkg
Ly8gSGFzaDoweDY2MmIxMmEzCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NM
T1cod2Vha1NldFNwYWNlLCB3ZWFrU2V0SGVhcENlbGxUeXBlLCBKU1dlYWtTZXQpIC8vIEhhc2g6
MHg0Yzc4MWIzMAorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHdlYWtP
YmplY3RSZWZTcGFjZSwgY2VsbEhlYXBDZWxsVHlwZSwgSlNXZWFrT2JqZWN0UmVmKSAvLyBIYXNo
OjB4OGVjNjhmMWYKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh3aXRo
U2NvcGVTcGFjZSwgY2VsbEhlYXBDZWxsVHlwZSwgSlNXaXRoU2NvcGUpCitEWU5BTUlDX0lTT19T
VUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coZmluYWxpemF0aW9uUmVnaXN0cnlTcGFjZSwgZmlu
YWxpemF0aW9uUmVnaXN0cnlDZWxsVHlwZSwgSlNGaW5hbGl6YXRpb25SZWdpc3RyeSkKKyNpZiBK
U0NfT0JKQ19BUElfRU5BQkxFRAorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9T
TE9XKGFwaVdyYXBwZXJPYmplY3RTcGFjZSwgYXBpV3JhcHBlck9iamVjdEhlYXBDZWxsVHlwZSwg
SlNDYWxsYmFja09iamVjdDxKU0FQSVdyYXBwZXJPYmplY3Q+KQorRFlOQU1JQ19JU09fU1VCU1BB
Q0VfREVGSU5FX01FTUJFUl9TTE9XKG9iakNDYWxsYmFja0Z1bmN0aW9uU3BhY2UsIG9iakNDYWxs
YmFja0Z1bmN0aW9uSGVhcENlbGxUeXBlLCBPYmpDQ2FsbGJhY2tGdW5jdGlvbikgLy8gSGFzaDow
eDEwZjYxMGI4CisjZW5kaWYKKyNpZmRlZiBKU0NfR0xJQl9BUElfRU5BQkxFRAorRFlOQU1JQ19J
U09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGFwaVdyYXBwZXJPYmplY3RTcGFjZSwgYXBp
V3JhcHBlck9iamVjdEhlYXBDZWxsVHlwZSwgSlNDYWxsYmFja09iamVjdDxKU0FQSVdyYXBwZXJP
YmplY3Q+KQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGpzY0NhbGxi
YWNrRnVuY3Rpb25TcGFjZSwganNjQ2FsbGJhY2tGdW5jdGlvbkhlYXBDZWxsVHlwZSwgSlNDQ2Fs
bGJhY2tGdW5jdGlvbikKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhj
YWxsYmFja0FQSVdyYXBwZXJHbG9iYWxPYmplY3RTcGFjZSwgY2FsbGJhY2tBUElXcmFwcGVyR2xv
YmFsT2JqZWN0SGVhcENlbGxUeXBlLCBKU0NhbGxiYWNrT2JqZWN0PEpTQVBJV3JhcHBlckdsb2Jh
bE9iamVjdD4pCisjZW5kaWYKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xP
VyhpbnRsQ29sbGF0b3JTcGFjZSwgaW50bENvbGxhdG9ySGVhcENlbGxUeXBlLCBJbnRsQ29sbGF0
b3IpCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coaW50bERhdGVUaW1l
Rm9ybWF0U3BhY2UsIGludGxEYXRlVGltZUZvcm1hdEhlYXBDZWxsVHlwZSwgSW50bERhdGVUaW1l
Rm9ybWF0KQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGludGxEaXNw
bGF5TmFtZXNTcGFjZSwgaW50bERpc3BsYXlOYW1lc0hlYXBDZWxsVHlwZSwgSW50bERpc3BsYXlO
YW1lcykKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhpbnRsTGlzdEZv
cm1hdFNwYWNlLCBpbnRsTGlzdEZvcm1hdEhlYXBDZWxsVHlwZSwgSW50bExpc3RGb3JtYXQpCitE
WU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coaW50bExvY2FsZVNwYWNlLCBp
bnRsTG9jYWxlSGVhcENlbGxUeXBlLCBJbnRsTG9jYWxlKQorRFlOQU1JQ19JU09fU1VCU1BBQ0Vf
REVGSU5FX01FTUJFUl9TTE9XKGludGxOdW1iZXJGb3JtYXRTcGFjZSwgaW50bE51bWJlckZvcm1h
dEhlYXBDZWxsVHlwZSwgSW50bE51bWJlckZvcm1hdCkKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RF
RklORV9NRU1CRVJfU0xPVyhpbnRsUGx1cmFsUnVsZXNTcGFjZSwgaW50bFBsdXJhbFJ1bGVzSGVh
cENlbGxUeXBlLCBJbnRsUGx1cmFsUnVsZXMpCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVf
TUVNQkVSX1NMT1coaW50bFJlbGF0aXZlVGltZUZvcm1hdFNwYWNlLCBpbnRsUmVsYXRpdmVUaW1l
Rm9ybWF0SGVhcENlbGxUeXBlLCBJbnRsUmVsYXRpdmVUaW1lRm9ybWF0KQorRFlOQU1JQ19JU09f
U1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGludGxTZWdtZW50SXRlcmF0b3JTcGFjZSwgaW50
bFNlZ21lbnRJdGVyYXRvckhlYXBDZWxsVHlwZSwgSW50bFNlZ21lbnRJdGVyYXRvcikKK0RZTkFN
SUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhpbnRsU2VnbWVudGVyU3BhY2UsIGlu
dGxTZWdtZW50ZXJIZWFwQ2VsbFR5cGUsIEludGxTZWdtZW50ZXIpCitEWU5BTUlDX0lTT19TVUJT
UEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coaW50bFNlZ21lbnRzU3BhY2UsIGludGxTZWdtZW50c0hl
YXBDZWxsVHlwZSwgSW50bFNlZ21lbnRzKQorI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKK0RZTkFN
SUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhqc1RvV2FzbUlDQ2FsbGVlU3BhY2Us
IGNlbGxIZWFwQ2VsbFR5cGUsIEpTVG9XYXNtSUNDYWxsZWUpCitEWU5BTUlDX0lTT19TVUJTUEFD
RV9ERUZJTkVfTUVNQkVSX1NMT1cod2ViQXNzZW1ibHlDb2RlQmxvY2tTcGFjZSwgd2ViQXNzZW1i
bHlDb2RlQmxvY2tIZWFwQ2VsbFR5cGUsIEpTV2ViQXNzZW1ibHlDb2RlQmxvY2spIC8vIEhhc2g6
MHg5YWQ5OTVjZAorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHdlYkFz
c2VtYmx5RXhjZXB0aW9uU3BhY2UsIHdlYkFzc2VtYmx5RXhjZXB0aW9uSGVhcENlbGxUeXBlLCBK
U1dlYkFzc2VtYmx5RXhjZXB0aW9uKQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJF
Ul9TTE9XKHdlYkFzc2VtYmx5RnVuY3Rpb25TcGFjZSwgd2ViQXNzZW1ibHlGdW5jdGlvbkhlYXBD
ZWxsVHlwZSwgV2ViQXNzZW1ibHlGdW5jdGlvbikgLy8gSGFzaDoweDhiN2MzMmRiCitEWU5BTUlD
X0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1cod2ViQXNzZW1ibHlHbG9iYWxTcGFjZSwg
d2ViQXNzZW1ibHlHbG9iYWxIZWFwQ2VsbFR5cGUsIEpTV2ViQXNzZW1ibHlHbG9iYWwpCitEWU5B
TUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1cod2ViQXNzZW1ibHlJbnN0YW5jZVNw
YWNlLCB3ZWJBc3NlbWJseUluc3RhbmNlSGVhcENlbGxUeXBlLCBKU1dlYkFzc2VtYmx5SW5zdGFu
Y2UpCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1cod2ViQXNzZW1ibHlN
ZW1vcnlTcGFjZSwgd2ViQXNzZW1ibHlNZW1vcnlIZWFwQ2VsbFR5cGUsIEpTV2ViQXNzZW1ibHlN
ZW1vcnkpCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1cod2ViQXNzZW1i
bHlNb2R1bGVTcGFjZSwgd2ViQXNzZW1ibHlNb2R1bGVIZWFwQ2VsbFR5cGUsIEpTV2ViQXNzZW1i
bHlNb2R1bGUpCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1cod2ViQXNz
ZW1ibHlNb2R1bGVSZWNvcmRTcGFjZSwgd2ViQXNzZW1ibHlNb2R1bGVSZWNvcmRIZWFwQ2VsbFR5
cGUsIFdlYkFzc2VtYmx5TW9kdWxlUmVjb3JkKQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5F
X01FTUJFUl9TTE9XKHdlYkFzc2VtYmx5VGFibGVTcGFjZSwgd2ViQXNzZW1ibHlUYWJsZUhlYXBD
ZWxsVHlwZSwgSlNXZWJBc3NlbWJseVRhYmxlKQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5F
X01FTUJFUl9TTE9XKHdlYkFzc2VtYmx5VGFnU3BhY2UsIHdlYkFzc2VtYmx5VGFnSGVhcENlbGxU
eXBlLCBKU1dlYkFzc2VtYmx5VGFnKQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJF
Ul9TTE9XKHdlYkFzc2VtYmx5V3JhcHBlckZ1bmN0aW9uU3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUs
IFdlYkFzc2VtYmx5V3JhcHBlckZ1bmN0aW9uKSAvLyBIYXNoOjB4ZDRhNWZmMDEKKyNlbmRpZgor
CisjdW5kZWYgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XCisKKyNkZWZp
bmUgRFlOQU1JQ19TUEFDRV9BTkRfU0VUX0RFRklORV9NRU1CRVJfU0xPVyhuYW1lLCBoZWFwQ2Vs
bFR5cGUsIHR5cGUpIFwKKyAgICBJc29TdWJzcGFjZSogSGVhcDo6bmFtZSMjU2xvdygpIFwKKyAg
ICB7IFwKKyAgICAgICAgQVNTRVJUKCFtXyMjbmFtZSk7IFwKKyAgICAgICAgYXV0byBzcGFjZSA9
IG1ha2VVbmlxdWU8U3BhY2VBbmRTZXQ+IElTT19TVUJTUEFDRV9JTklUKCp0aGlzLCBoZWFwQ2Vs
bFR5cGUsIHR5cGUpOyBcCisgICAgICAgIFdURjo6c3RvcmVTdG9yZUZlbmNlKCk7IFwKKyAgICAg
ICAgbV8jI25hbWUgPSBXVEZNb3ZlKHNwYWNlKTsgXAorICAgICAgICByZXR1cm4gJm1fIyNuYW1l
LT5zcGFjZTsgXAorICAgIH0KKworRFlOQU1JQ19TUEFDRV9BTkRfU0VUX0RFRklORV9NRU1CRVJf
U0xPVyhldmFsRXhlY3V0YWJsZVNwYWNlLCBkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlLCBF
dmFsRXhlY3V0YWJsZSkgLy8gSGFzaDoweDk1OGUzZTlkCitEWU5BTUlDX1NQQUNFX0FORF9TRVRf
REVGSU5FX01FTUJFUl9TTE9XKG1vZHVsZVByb2dyYW1FeGVjdXRhYmxlU3BhY2UsIGRlc3RydWN0
aWJsZUNlbGxIZWFwQ2VsbFR5cGUsIE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlKSAvLyBIYXNoOjB4
NjUwNmZhM2MKKworI3VuZGVmIERZTkFNSUNfU1BBQ0VfQU5EX1NFVF9ERUZJTkVfTUVNQkVSX1NM
T1cKKwogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVh
cC9IZWFwLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5o
CShyZXZpc2lvbiAyODYwMTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTI1LDYgKzI1LDcgQEAKICNpbmNsdWRlICJDZWxsU3RhdGUuaCIK
ICNpbmNsdWRlICJDb2xsZWN0aW9uU2NvcGUuaCIKICNpbmNsdWRlICJDb2xsZWN0b3JQaGFzZS5o
IgorI2luY2x1ZGUgIkNvbXBsZXRlU3Vic3BhY2UuaCIKICNpbmNsdWRlICJEZWxldGVBbGxDb2Rl
RWZmb3J0LmgiCiAjaW5jbHVkZSAiR0NDb25kdWN0b3IuaCIKICNpbmNsdWRlICJHQ0luY29taW5n
UmVmQ291bnRlZFNldC5oIgpAQCAtMzMsNiArMzQsMTEgQEAKICNpbmNsdWRlICJIYW5kbGVTZXQu
aCIKICNpbmNsdWRlICJIZWFwRmluYWxpemVyQ2FsbGJhY2suaCIKICNpbmNsdWRlICJIZWFwT2Jz
ZXJ2ZXIuaCIKKyNpbmNsdWRlICJJc29DZWxsU2V0LmgiCisjaW5jbHVkZSAiSXNvSGVhcENlbGxU
eXBlLmgiCisjaW5jbHVkZSAiSXNvSW5saW5lZEhlYXBDZWxsVHlwZS5oIgorI2luY2x1ZGUgIklz
b1N1YnNwYWNlLmgiCisjaW5jbHVkZSAiSlNEZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUu
aCIKICNpbmNsdWRlICJNYXJrZWRCbG9jay5oIgogI2luY2x1ZGUgIk1hcmtlZFNwYWNlLmgiCiAj
aW5jbHVkZSAiTXV0YXRvclN0YXRlLmgiCkBAIC01OCw5ICs2NCwxMSBAQCBjbGFzcyBDb2xsZWN0
aW5nU2NvcGU7CiBjbGFzcyBDb25zZXJ2YXRpdmVSb290czsKIGNsYXNzIEdDRGVmZXJyYWxDb250
ZXh0OwogY2xhc3MgRWRlbkdDQWN0aXZpdHlDYWxsYmFjazsKK2NsYXNzIEZhc3RNYWxsb2NBbGln
bmVkTWVtb3J5QWxsb2NhdG9yOwogY2xhc3MgRnVsbEdDQWN0aXZpdHlDYWxsYmFjazsKIGNsYXNz
IEdDQWN0aXZpdHlDYWxsYmFjazsKIGNsYXNzIEdDQXdhcmVKSVRTdHViUm91dGluZTsKK2NsYXNz
IEdpZ2FjYWdlQWxpZ25lZE1lbW9yeUFsbG9jYXRvcjsKIGNsYXNzIEhlYXA7CiBjbGFzcyBIZWFw
UHJvZmlsZXI7CiBjbGFzcyBIZWFwVmVyaWZpZXI7CkBAIC03MjksNiArNzM3LDMxOCBAQCBwcml2
YXRlOgogICAgIGJvb2wgbV9wYXJhbGxlbE1hcmtlcnNTaG91bGRFeGl0IHsgZmFsc2UgfTsKICAg
ICBMb2NrIG1fY29sbGVjdENvbnRpbnVvdXNseUxvY2s7CiAgICAgQ29uZGl0aW9uIG1fY29sbGVj
dENvbnRpbnVvdXNseUNvbmRpdGlvbjsKKworcHVibGljOgorICAgIC8vIEhlYXBDZWxsVHlwZXMK
KyAgICBIZWFwQ2VsbFR5cGUgYXV4aWxpYXJ5SGVhcENlbGxUeXBlOworICAgIEhlYXBDZWxsVHlw
ZSBpbW11dGFibGVCdXR0ZXJmbHlIZWFwQ2VsbFR5cGU7CisgICAgSGVhcENlbGxUeXBlIGNlbGxI
ZWFwQ2VsbFR5cGU7CisgICAgSGVhcENlbGxUeXBlIGRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5
cGU7CisgICAgSXNvSGVhcENlbGxUeXBlIGFwaUdsb2JhbE9iamVjdEhlYXBDZWxsVHlwZTsKKyAg
ICBJc29IZWFwQ2VsbFR5cGUgY2FsbGJhY2tDb25zdHJ1Y3RvckhlYXBDZWxsVHlwZTsKKyAgICBJ
c29IZWFwQ2VsbFR5cGUgY2FsbGJhY2tHbG9iYWxPYmplY3RIZWFwQ2VsbFR5cGU7CisgICAgSXNv
SGVhcENlbGxUeXBlIGNhbGxiYWNrT2JqZWN0SGVhcENlbGxUeXBlOworICAgIElzb0hlYXBDZWxs
VHlwZSBjdXN0b21HZXR0ZXJGdW5jdGlvbkhlYXBDZWxsVHlwZTsKKyAgICBJc29IZWFwQ2VsbFR5
cGUgY3VzdG9tU2V0dGVyRnVuY3Rpb25IZWFwQ2VsbFR5cGU7CisgICAgSXNvSGVhcENlbGxUeXBl
IGRhdGVJbnN0YW5jZUhlYXBDZWxsVHlwZTsKKyAgICBJc29IZWFwQ2VsbFR5cGUgZXJyb3JJbnN0
YW5jZUhlYXBDZWxsVHlwZTsKKyAgICBJc29IZWFwQ2VsbFR5cGUgZmluYWxpemF0aW9uUmVnaXN0
cnlDZWxsVHlwZTsKKyAgICBJc29IZWFwQ2VsbFR5cGUgZ2xvYmFsTGV4aWNhbEVudmlyb25tZW50
SGVhcENlbGxUeXBlOworICAgIElzb0hlYXBDZWxsVHlwZSBnbG9iYWxPYmplY3RIZWFwQ2VsbFR5
cGU7CisgICAgSXNvSGVhcENlbGxUeXBlIGluamVjdGVkU2NyaXB0SG9zdFNwYWNlSGVhcENlbGxU
eXBlOworICAgIElzb0hlYXBDZWxsVHlwZSBqYXZhU2NyaXB0Q2FsbEZyYW1lSGVhcENlbGxUeXBl
OworICAgIElzb0hlYXBDZWxsVHlwZSBqc01vZHVsZVJlY29yZEhlYXBDZWxsVHlwZTsKKyAgICBJ
c29IZWFwQ2VsbFR5cGUgbW9kdWxlTmFtZXNwYWNlT2JqZWN0SGVhcENlbGxUeXBlOworICAgIElz
b0hlYXBDZWxsVHlwZSBuYXRpdmVTdGRGdW5jdGlvbkhlYXBDZWxsVHlwZTsKKyAgICBJc29Jbmxp
bmVkSGVhcENlbGxUeXBlPEpTU3RyaW5nPiBzdHJpbmdIZWFwQ2VsbFR5cGU7CisgICAgSXNvSGVh
cENlbGxUeXBlIHdlYWtNYXBIZWFwQ2VsbFR5cGU7CisgICAgSXNvSGVhcENlbGxUeXBlIHdlYWtT
ZXRIZWFwQ2VsbFR5cGU7CisgICAgSlNEZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUgZGVz
dHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlOworI2lmIEpTQ19PQkpDX0FQSV9FTkFCTEVECisg
ICAgSXNvSGVhcENlbGxUeXBlIGFwaVdyYXBwZXJPYmplY3RIZWFwQ2VsbFR5cGU7CisgICAgSXNv
SGVhcENlbGxUeXBlIG9iakNDYWxsYmFja0Z1bmN0aW9uSGVhcENlbGxUeXBlOworI2VuZGlmCisj
aWZkZWYgSlNDX0dMSUJfQVBJX0VOQUJMRUQKKyAgICBJc29IZWFwQ2VsbFR5cGUgYXBpV3JhcHBl
ck9iamVjdEhlYXBDZWxsVHlwZTsKKyAgICBJc29IZWFwQ2VsbFR5cGUgY2FsbGJhY2tBUElXcmFw
cGVyR2xvYmFsT2JqZWN0SGVhcENlbGxUeXBlOworICAgIElzb0hlYXBDZWxsVHlwZSBqc2NDYWxs
YmFja0Z1bmN0aW9uSGVhcENlbGxUeXBlOworI2VuZGlmCisgICAgSXNvSGVhcENlbGxUeXBlIGlu
dGxDb2xsYXRvckhlYXBDZWxsVHlwZTsKKyAgICBJc29IZWFwQ2VsbFR5cGUgaW50bERhdGVUaW1l
Rm9ybWF0SGVhcENlbGxUeXBlOworICAgIElzb0hlYXBDZWxsVHlwZSBpbnRsRGlzcGxheU5hbWVz
SGVhcENlbGxUeXBlOworICAgIElzb0hlYXBDZWxsVHlwZSBpbnRsTGlzdEZvcm1hdEhlYXBDZWxs
VHlwZTsKKyAgICBJc29IZWFwQ2VsbFR5cGUgaW50bExvY2FsZUhlYXBDZWxsVHlwZTsKKyAgICBJ
c29IZWFwQ2VsbFR5cGUgaW50bE51bWJlckZvcm1hdEhlYXBDZWxsVHlwZTsKKyAgICBJc29IZWFw
Q2VsbFR5cGUgaW50bFBsdXJhbFJ1bGVzSGVhcENlbGxUeXBlOworICAgIElzb0hlYXBDZWxsVHlw
ZSBpbnRsUmVsYXRpdmVUaW1lRm9ybWF0SGVhcENlbGxUeXBlOworICAgIElzb0hlYXBDZWxsVHlw
ZSBpbnRsU2VnbWVudEl0ZXJhdG9ySGVhcENlbGxUeXBlOworICAgIElzb0hlYXBDZWxsVHlwZSBp
bnRsU2VnbWVudGVySGVhcENlbGxUeXBlOworICAgIElzb0hlYXBDZWxsVHlwZSBpbnRsU2VnbWVu
dHNIZWFwQ2VsbFR5cGU7CisjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQorICAgIElzb0hlYXBDZWxs
VHlwZSB3ZWJBc3NlbWJseUNvZGVCbG9ja0hlYXBDZWxsVHlwZTsKKyAgICBJc29IZWFwQ2VsbFR5
cGUgd2ViQXNzZW1ibHlFeGNlcHRpb25IZWFwQ2VsbFR5cGU7CisgICAgSXNvSGVhcENlbGxUeXBl
IHdlYkFzc2VtYmx5RnVuY3Rpb25IZWFwQ2VsbFR5cGU7CisgICAgSXNvSGVhcENlbGxUeXBlIHdl
YkFzc2VtYmx5R2xvYmFsSGVhcENlbGxUeXBlOworICAgIElzb0hlYXBDZWxsVHlwZSB3ZWJBc3Nl
bWJseUluc3RhbmNlSGVhcENlbGxUeXBlOworICAgIElzb0hlYXBDZWxsVHlwZSB3ZWJBc3NlbWJs
eU1lbW9yeUhlYXBDZWxsVHlwZTsKKyAgICBJc29IZWFwQ2VsbFR5cGUgd2ViQXNzZW1ibHlNb2R1
bGVIZWFwQ2VsbFR5cGU7CisgICAgSXNvSGVhcENlbGxUeXBlIHdlYkFzc2VtYmx5TW9kdWxlUmVj
b3JkSGVhcENlbGxUeXBlOworICAgIElzb0hlYXBDZWxsVHlwZSB3ZWJBc3NlbWJseVRhYmxlSGVh
cENlbGxUeXBlOworICAgIElzb0hlYXBDZWxsVHlwZSB3ZWJBc3NlbWJseVRhZ0hlYXBDZWxsVHlw
ZTsKKyNlbmRpZgorCisgICAgLy8gQWxpZ25lZE1lbW9yeUFsbG9jYXRvcnMKKyAgICBzdGQ6OnVu
aXF1ZV9wdHI8RmFzdE1hbGxvY0FsaWduZWRNZW1vcnlBbGxvY2F0b3I+IGZhc3RNYWxsb2NBbGxv
Y2F0b3I7CisgICAgc3RkOjp1bmlxdWVfcHRyPEdpZ2FjYWdlQWxpZ25lZE1lbW9yeUFsbG9jYXRv
cj4gcHJpbWl0aXZlR2lnYWNhZ2VBbGxvY2F0b3I7CisgICAgc3RkOjp1bmlxdWVfcHRyPEdpZ2Fj
YWdlQWxpZ25lZE1lbW9yeUFsbG9jYXRvcj4ganNWYWx1ZUdpZ2FjYWdlQWxsb2NhdG9yOworCisg
ICAgLy8gU3Vic3BhY2VzCisgICAgQ29tcGxldGVTdWJzcGFjZSBwcmltaXRpdmVHaWdhY2FnZUF1
eGlsaWFyeVNwYWNlOyAvLyBUeXBlZCBhcnJheXMsIHN0cmluZ3MsIGJpdHZlY3RvcnMsIGV0YyBn
byBoZXJlLgorICAgIENvbXBsZXRlU3Vic3BhY2UganNWYWx1ZUdpZ2FjYWdlQXV4aWxpYXJ5U3Bh
Y2U7IC8vIEJ1dHRlcmZsaWVzLCBhcnJheXMgb2YgSlNWYWx1ZXMsIGV0YyBnbyBoZXJlLgorICAg
IENvbXBsZXRlU3Vic3BhY2UgaW1tdXRhYmxlQnV0dGVyZmx5SlNWYWx1ZUdpZ2FjYWdlQXV4aWxp
YXJ5U3BhY2U7IC8vIEpTSW1tdXRhYmxlQnV0dGVyZmx5IGdvZXMgaGVyZS4KKworICAgIC8vIFdl
IG1ha2UgY3Jvc3MtY3V0dGluZyBhc3N1bXB0aW9ucyBhYm91dCB0eXBlZCBhcnJheXMgYmVpbmcg
aW4gdGhlIHByaW1pdGl2ZSBHaWdhY2FnZSBhbmQgYnV0dGVyZmxpZXMKKyAgICAvLyBiZWluZyBp
biB0aGUgSlNWYWx1ZSBnaWdhY2FnZS4gRm9yIHNvbWUgdHlwZXMsIGl0J3Mgc3VwZXIgb2J2aW91
cyB3aGVyZSB0aGV5IHNob3VsZCBnbywgYW5kIHNvIHdlCisgICAgLy8gY2FuIGhhcmRjb2RlIHRo
YXQgZmFjdC4gQnV0IHNvbWV0aW1lcyBpdCdzIG5vdCBjbGVhciwgc28gd2UgYWJzdHJhY3QgaXQg
YnkgaGF2aW5nIGEgR2lnYWNhZ2U6OktpbmQKKyAgICAvLyBjb25zdGFudCBzb21ld2hlcmUuCisg
ICAgLy8gRklYTUU6IE1heWJlIGl0IHdvdWxkIGJlIGJldHRlciBpZiBldmVyeW9uZSBhYnN0cmFj
dGVkIHRoaXM/CisgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE3NTI0OAorICAgIEFMV0FZU19JTkxJTkUgQ29tcGxldGVTdWJzcGFjZSYgZ2lnYWNhZ2VBdXhp
bGlhcnlTcGFjZShHaWdhY2FnZTo6S2luZCBraW5kKQorICAgIHsKKyAgICAgICAgc3dpdGNoIChr
aW5kKSB7CisgICAgICAgIGNhc2UgR2lnYWNhZ2U6OlByaW1pdGl2ZToKKyAgICAgICAgICAgIHJl
dHVybiBwcmltaXRpdmVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlOworICAgICAgICBjYXNlIEdpZ2Fj
YWdlOjpKU1ZhbHVlOgorICAgICAgICAgICAgcmV0dXJuIGpzVmFsdWVHaWdhY2FnZUF1eGlsaWFy
eVNwYWNlOworICAgICAgICBjYXNlIEdpZ2FjYWdlOjpOdW1iZXJPZktpbmRzOgorICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQo
KTsKKyAgICAgICAgcmV0dXJuIHByaW1pdGl2ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2U7CisgICAg
fQorICAgIAorICAgIC8vIFdoZW5ldmVyIHBvc3NpYmxlLCB1c2Ugc3Vic3BhY2VGb3I8Q2VsbFR5
cGU+KHZtKSB0byBnZXQgb25lIG9mIHRoZXNlIHN1YnNwYWNlcy4KKyAgICBDb21wbGV0ZVN1YnNw
YWNlIGNlbGxTcGFjZTsKKyAgICBDb21wbGV0ZVN1YnNwYWNlIHZhcmlhYmxlU2l6ZWRDZWxsU3Bh
Y2U7IC8vIEZJWE1FOiBUaGlzIHNwYWNlIGlzIHByb2JsZW1hdGljIGJlY2F1c2Ugd2UgaGF2ZSB0
aGluZ3MgaW4gaGVyZSBsaWtlIERpcmVjdEFyZ3VtZW50cyBhbmQgU2NvcGVkQXJndW1lbnRzOyB0
aG9zZSBzaG91bGQgYmUgc3BsaXQgaW50byBKU1ZhbHVlT09CIGNlbGxzIGFuZCBKU1ZhbHVlU3Ry
aWN0IGF1eGlsaWFyaWVzLiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTgyODU4CisgICAgQ29tcGxldGVTdWJzcGFjZSBkZXN0cnVjdGlibGVPYmplY3RTcGFjZTsKKwor
ICAgIElzb1N1YnNwYWNlIGFycmF5U3BhY2U7CisgICAgSXNvU3Vic3BhY2UgYmlnSW50U3BhY2U7
CisgICAgSXNvU3Vic3BhY2UgY2FsbGVlU3BhY2U7CisgICAgSXNvU3Vic3BhY2UgY2xvbmVkQXJn
dW1lbnRzU3BhY2U7CisgICAgSXNvU3Vic3BhY2UgY3VzdG9tR2V0dGVyU2V0dGVyU3BhY2U7Cisg
ICAgSXNvU3Vic3BhY2UgZGF0ZUluc3RhbmNlU3BhY2U7CisgICAgSXNvU3Vic3BhY2UgZG9tQXR0
cmlidXRlR2V0dGVyU2V0dGVyU3BhY2U7CisgICAgSXNvU3Vic3BhY2UgZXhjZXB0aW9uU3BhY2U7
CisgICAgSXNvU3Vic3BhY2UgZXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZVNwYWNlOworICAgIElz
b1N1YnNwYWNlIGZ1bmN0aW9uU3BhY2U7CisgICAgSXNvU3Vic3BhY2UgZ2V0dGVyU2V0dGVyU3Bh
Y2U7CisgICAgSXNvU3Vic3BhY2UgZ2xvYmFsTGV4aWNhbEVudmlyb25tZW50U3BhY2U7CisgICAg
SXNvU3Vic3BhY2UgaW50ZXJuYWxGdW5jdGlvblNwYWNlOworICAgIElzb1N1YnNwYWNlIGpzUHJv
eHlTcGFjZTsKKyAgICBJc29TdWJzcGFjZSBuYXRpdmVFeGVjdXRhYmxlU3BhY2U7CisgICAgSXNv
U3Vic3BhY2UgbnVtYmVyT2JqZWN0U3BhY2U7CisgICAgSXNvU3Vic3BhY2UgcGxhaW5PYmplY3RT
cGFjZTsKKyAgICBJc29TdWJzcGFjZSBwcm9taXNlU3BhY2U7CisgICAgSXNvU3Vic3BhY2UgcHJv
cGVydHlOYW1lRW51bWVyYXRvclNwYWNlOworICAgIElzb1N1YnNwYWNlIHByb3BlcnR5VGFibGVT
cGFjZTsKKyAgICBJc29TdWJzcGFjZSByZWdFeHBTcGFjZTsKKyAgICBJc29TdWJzcGFjZSByZWdF
eHBPYmplY3RTcGFjZTsKKyAgICBJc29TdWJzcGFjZSByb3BlU3RyaW5nU3BhY2U7CisgICAgSXNv
U3Vic3BhY2Ugc2NvcGVkQXJndW1lbnRzU3BhY2U7CisgICAgSXNvU3Vic3BhY2Ugc3BhcnNlQXJy
YXlWYWx1ZU1hcFNwYWNlOworICAgIElzb1N1YnNwYWNlIHN0cmluZ1NwYWNlOworICAgIElzb1N1
YnNwYWNlIHN0cmluZ09iamVjdFNwYWNlOworICAgIElzb1N1YnNwYWNlIHN0cnVjdHVyZUNoYWlu
U3BhY2U7CisgICAgSXNvU3Vic3BhY2Ugc3RydWN0dXJlUmFyZURhdGFTcGFjZTsKKyAgICBJc29T
dWJzcGFjZSBzdHJ1Y3R1cmVTcGFjZTsKKyAgICBJc29TdWJzcGFjZSBicmFuZGVkU3RydWN0dXJl
U3BhY2U7CisgICAgSXNvU3Vic3BhY2Ugc3ltYm9sVGFibGVTcGFjZTsKKworI2RlZmluZSBEWU5B
TUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKG5hbWUpIFwKKyAgICB0ZW1wbGF0ZTxTdWJz
cGFjZUFjY2VzcyBtb2RlPiBcCisgICAgSXNvU3Vic3BhY2UqIG5hbWUoKSBcCisgICAgeyBcCisg
ICAgICAgIGlmIChtXyMjbmFtZSB8fCBtb2RlID09IFN1YnNwYWNlQWNjZXNzOjpDb25jdXJyZW50
bHkpIFwKKyAgICAgICAgICAgIHJldHVybiBtXyMjbmFtZS5nZXQoKTsgXAorICAgICAgICByZXR1
cm4gbmFtZSMjU2xvdygpOyBcCisgICAgfSBcCisgICAgSlNfRVhQT1JUX1BSSVZBVEUgSXNvU3Vi
c3BhY2UqIG5hbWUjI1Nsb3coKTsgXAorICAgIHN0ZDo6dW5pcXVlX3B0cjxJc29TdWJzcGFjZT4g
bV8jI25hbWU7CisKKworI2lmIEpTQ19PQkpDX0FQSV9FTkFCTEVECisgICAgRFlOQU1JQ19JU09f
U1VCU1BBQ0VfREVGSU5FX01FTUJFUihhcGlXcmFwcGVyT2JqZWN0U3BhY2UpCisgICAgRFlOQU1J
Q19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihvYmpDQ2FsbGJhY2tGdW5jdGlvblNwYWNlKQor
I2VuZGlmCisjaWZkZWYgSlNDX0dMSUJfQVBJX0VOQUJMRUQKKyAgICBEWU5BTUlDX0lTT19TVUJT
UEFDRV9ERUZJTkVfTUVNQkVSKGFwaVdyYXBwZXJPYmplY3RTcGFjZSkKKyAgICBEWU5BTUlDX0lT
T19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKGpzY0NhbGxiYWNrRnVuY3Rpb25TcGFjZSkKKyAgICBE
WU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKGNhbGxiYWNrQVBJV3JhcHBlckdsb2Jh
bE9iamVjdFNwYWNlKQorI2VuZGlmCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01F
TUJFUihhcGlHbG9iYWxPYmplY3RTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJ
TkVfTUVNQkVSKGFwaVZhbHVlV3JhcHBlclNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNF
X0RFRklORV9NRU1CRVIoYXJyYXlCdWZmZXJTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFD
RV9ERUZJTkVfTUVNQkVSKGFycmF5SXRlcmF0b3JTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJT
UEFDRV9ERUZJTkVfTUVNQkVSKGFzeW5jR2VuZXJhdG9yU3BhY2UpCisgICAgRFlOQU1JQ19JU09f
U1VCU1BBQ0VfREVGSU5FX01FTUJFUihiaWdJbnQ2NEFycmF5U3BhY2UpCisgICAgRFlOQU1JQ19J
U09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihiaWdJbnRPYmplY3RTcGFjZSkKKyAgICBEWU5BTUlD
X0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKGJpZ1VpbnQ2NEFycmF5U3BhY2UpCisgICAgRFlO
QU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihib29sZWFuT2JqZWN0U3BhY2UpCisgICAg
RFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihib3VuZEZ1bmN0aW9uU3BhY2UpCisg
ICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihjYWxsYmFja0NvbnN0cnVjdG9y
U3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihjYWxsYmFja0ds
b2JhbE9iamVjdFNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIo
Y2FsbGJhY2tGdW5jdGlvblNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9N
RU1CRVIoY2FsbGJhY2tPYmplY3RTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJ
TkVfTUVNQkVSKGN1c3RvbUdldHRlckZ1bmN0aW9uU3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VC
U1BBQ0VfREVGSU5FX01FTUJFUihjdXN0b21TZXR0ZXJGdW5jdGlvblNwYWNlKQorICAgIERZTkFN
SUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoZGF0YVZpZXdTcGFjZSkKKyAgICBEWU5BTUlD
X0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKGRlYnVnZ2VyU2NvcGVTcGFjZSkKKyAgICBEWU5B
TUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKGVycm9ySW5zdGFuY2VTcGFjZSkKKyAgICBE
WU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKGZsb2F0MzJBcnJheVNwYWNlKQorICAg
IERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoZmxvYXQ2NEFycmF5U3BhY2UpCisg
ICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihmdW5jdGlvblJhcmVEYXRhU3Bh
Y2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihnZW5lcmF0b3JTcGFj
ZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKGdsb2JhbE9iamVjdFNw
YWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoaW5qZWN0ZWRTY3Jp
cHRIb3N0U3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihpbnQ4
QXJyYXlTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKGludDE2
QXJyYXlTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKGludDMy
QXJyYXlTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKGphdmFT
Y3JpcHRDYWxsRnJhbWVTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVN
QkVSKGpzTW9kdWxlUmVjb3JkU3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5F
X01FTUJFUihtYXBCdWNrZXRTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVf
TUVNQkVSKG1hcEl0ZXJhdG9yU3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5F
X01FTUJFUihtYXBTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVS
KG1vZHVsZU5hbWVzcGFjZU9iamVjdFNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RF
RklORV9NRU1CRVIobmF0aXZlU3RkRnVuY3Rpb25TcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJT
UEFDRV9ERUZJTkVfTUVNQkVSKHByb3h5T2JqZWN0U3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VC
U1BBQ0VfREVGSU5FX01FTUJFUihwcm94eVJldm9rZVNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NV
QlNQQUNFX0RFRklORV9NRU1CRVIoc2NvcGVkQXJndW1lbnRzVGFibGVTcGFjZSkKKyAgICBEWU5B
TUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKHNjcmlwdEZldGNoUGFyYW1ldGVyc1NwYWNl
KQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoc2NyaXB0RmV0Y2hlclNw
YWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoc2V0QnVja2V0U3Bh
Y2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihzZXRJdGVyYXRvclNw
YWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoc2V0U3BhY2UpCisg
ICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihzaGFkb3dSZWFsbVNwYWNlKTsK
KyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKHN0cmljdEV2YWxBY3RpdmF0
aW9uU3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihzdHJpbmdJ
dGVyYXRvclNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoc291
cmNlQ29kZVNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoc3lt
Ym9sU3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihzeW1ib2xP
YmplY3RTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKHRlbXBs
YXRlT2JqZWN0RGVzY3JpcHRvclNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklO
RV9NRU1CRVIodGVtcG9yYWxDYWxlbmRhclNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNF
X0RFRklORV9NRU1CRVIodGVtcG9yYWxEdXJhdGlvblNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NV
QlNQQUNFX0RFRklORV9NRU1CRVIodGVtcG9yYWxJbnN0YW50U3BhY2UpCisgICAgRFlOQU1JQ19J
U09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUih0ZW1wb3JhbFBsYWluVGltZVNwYWNlKQorICAgIERZ
TkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIodGVtcG9yYWxUaW1lWm9uZVNwYWNlKQor
ICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIodWludDhBcnJheVNwYWNlKQor
ICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIodWludDhDbGFtcGVkQXJyYXlT
cGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKHVpbnQxNkFycmF5
U3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUih1aW50MzJBcnJh
eVNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIodW5saW5rZWRF
dmFsQ29kZUJsb2NrU3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJF
Uih1bmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrU3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BB
Q0VfREVGSU5FX01FTUJFUih1bmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2tTcGFjZSkKKyAg
ICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKHVubGlua2VkUHJvZ3JhbUNvZGVC
bG9ja1NwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoZmluYWxp
emF0aW9uUmVnaXN0cnlTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVN
QkVSKHdlYWtPYmplY3RSZWZTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVf
TUVNQkVSKHdlYWtTZXRTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVN
QkVSKHdlYWtNYXBTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVS
KHdpdGhTY29wZVNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIo
aW50bENvbGxhdG9yU3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJF
UihpbnRsRGF0ZVRpbWVGb3JtYXRTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJ
TkVfTUVNQkVSKGludGxEaXNwbGF5TmFtZXNTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFD
RV9ERUZJTkVfTUVNQkVSKGludGxMaXN0Rm9ybWF0U3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VC
U1BBQ0VfREVGSU5FX01FTUJFUihpbnRsTG9jYWxlU3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VC
U1BBQ0VfREVGSU5FX01FTUJFUihpbnRsTnVtYmVyRm9ybWF0U3BhY2UpCisgICAgRFlOQU1JQ19J
U09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihpbnRsUGx1cmFsUnVsZXNTcGFjZSkKKyAgICBEWU5B
TUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKGludGxSZWxhdGl2ZVRpbWVGb3JtYXRTcGFj
ZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKGludGxTZWdtZW50SXRl
cmF0b3JTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKGludGxT
ZWdtZW50ZXJTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKGlu
dGxTZWdtZW50c1NwYWNlKQorI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKKyAgICBEWU5BTUlDX0lT
T19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKGpzVG9XYXNtSUNDYWxsZWVTcGFjZSkKKyAgICBEWU5B
TUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKHdlYkFzc2VtYmx5Q29kZUJsb2NrU3BhY2Up
CisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUih3ZWJBc3NlbWJseUV4Y2Vw
dGlvblNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIod2ViQXNz
ZW1ibHlGdW5jdGlvblNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1C
RVIod2ViQXNzZW1ibHlHbG9iYWxTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJ
TkVfTUVNQkVSKHdlYkFzc2VtYmx5SW5zdGFuY2VTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJT
UEFDRV9ERUZJTkVfTUVNQkVSKHdlYkFzc2VtYmx5TWVtb3J5U3BhY2UpCisgICAgRFlOQU1JQ19J
U09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUih3ZWJBc3NlbWJseU1vZHVsZVNwYWNlKQorICAgIERZ
TkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIod2ViQXNzZW1ibHlNb2R1bGVSZWNvcmRT
cGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKHdlYkFzc2VtYmx5
VGFibGVTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKHdlYkFz
c2VtYmx5VGFnU3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUih3
ZWJBc3NlbWJseVdyYXBwZXJGdW5jdGlvblNwYWNlKQorI2VuZGlmCisKKyN1bmRlZiBEWU5BTUlD
X0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSCisgICAgCisgICAgSXNvQ2VsbFNldCBleGVjdXRh
YmxlVG9Db2RlQmxvY2tFZGdlc1dpdGhDb25zdHJhaW50czsKKyAgICBJc29DZWxsU2V0IGV4ZWN1
dGFibGVUb0NvZGVCbG9ja0VkZ2VzV2l0aEZpbmFsaXplcnM7CisKKyNkZWZpbmUgRFlOQU1JQ19T
UEFDRV9BTkRfU0VUX0RFRklORV9NRU1CRVIobmFtZSkgXAorICAgIHRlbXBsYXRlPFN1YnNwYWNl
QWNjZXNzIG1vZGU+IFwKKyAgICBJc29TdWJzcGFjZSogbmFtZSgpIFwKKyAgICB7IFwKKyAgICAg
ICAgaWYgKGF1dG8qIHNwYWNlQW5kU2V0ID0gbV8jI25hbWUuZ2V0KCkpIFwKKyAgICAgICAgICAg
IHJldHVybiAmc3BhY2VBbmRTZXQtPnNwYWNlOyBcCisgICAgICAgIGlmIChtb2RlID09IFN1YnNw
YWNlQWNjZXNzOjpDb25jdXJyZW50bHkpIFwKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOyBc
CisgICAgICAgIHJldHVybiBuYW1lIyNTbG93KCk7IFwKKyAgICB9IFwKKyAgICBJc29TdWJzcGFj
ZSogbmFtZSMjU2xvdygpOyBcCisgICAgc3RkOjp1bmlxdWVfcHRyPFNwYWNlQW5kU2V0PiBtXyMj
bmFtZTsKKyAgICAKKyAgICBzdHJ1Y3QgU3BhY2VBbmRTZXQgeworICAgICAgICBXVEZfTUFLRV9T
VFJVQ1RfRkFTVF9BTExPQ0FURUQ7CisKKyAgICAgICAgSXNvU3Vic3BhY2Ugc3BhY2U7CisgICAg
ICAgIElzb0NlbGxTZXQgc2V0OworICAgICAgICAKKyAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUu
Li4gQXJndW1lbnRzPgorICAgICAgICBTcGFjZUFuZFNldChBcmd1bWVudHMmJi4uLiBhcmd1bWVu
dHMpCisgICAgICAgICAgICA6IHNwYWNlKHN0ZDo6Zm9yd2FyZDxBcmd1bWVudHM+KGFyZ3VtZW50
cykuLi4pCisgICAgICAgICAgICAsIHNldChzcGFjZSkKKyAgICAgICAgeworICAgICAgICB9Cisg
ICAgICAgIAorICAgICAgICBzdGF0aWMgSXNvQ2VsbFNldCYgc2V0Rm9yKFN1YnNwYWNlJiBzcGFj
ZSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuICpiaXR3aXNlX2Nhc3Q8SXNvQ2VsbFNl
dCo+KAorICAgICAgICAgICAgICAgIGJpdHdpc2VfY2FzdDxjaGFyKj4oJnNwYWNlKSAtCisgICAg
ICAgICAgICAgICAgT0JKRUNUX09GRlNFVE9GKFNwYWNlQW5kU2V0LCBzcGFjZSkgKworICAgICAg
ICAgICAgICAgIE9CSkVDVF9PRkZTRVRPRihTcGFjZUFuZFNldCwgc2V0KSk7CisgICAgICAgIH0K
KyAgICB9OworICAgIAorICAgIFNwYWNlQW5kU2V0IGNvZGVCbG9ja1NwYWNlOworCisgICAgdGVt
cGxhdGU8dHlwZW5hbWUgRnVuYz4KKyAgICB2b2lkIGZvckVhY2hDb2RlQmxvY2tTcGFjZShjb25z
dCBGdW5jJiBmdW5jKQorICAgIHsKKyAgICAgICAgLy8gVGhpcyBzaG91bGQgbm90IGluY2x1ZGUg
d2ViQXNzZW1ibHlDb2RlQmxvY2tTcGFjZSBiZWNhdXNlIHRoaXMgaXMgYWJvdXQgc3Vic2NsYXNz
ZXMgb2YKKyAgICAgICAgLy8gSlNDOjpDb2RlQmxvY2suCisgICAgICAgIGZ1bmMoY29kZUJsb2Nr
U3BhY2UpOworICAgIH0KKworICAgIERZTkFNSUNfU1BBQ0VfQU5EX1NFVF9ERUZJTkVfTUVNQkVS
KGV2YWxFeGVjdXRhYmxlU3BhY2UpCisgICAgRFlOQU1JQ19TUEFDRV9BTkRfU0VUX0RFRklORV9N
RU1CRVIobW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGVTcGFjZSkKKyAgICBTcGFjZUFuZFNldCBmdW5j
dGlvbkV4ZWN1dGFibGVTcGFjZTsKKyAgICBTcGFjZUFuZFNldCBwcm9ncmFtRXhlY3V0YWJsZVNw
YWNlOworCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuYz4KKyAgICB2b2lkIGZvckVhY2hTY3Jp
cHRFeGVjdXRhYmxlU3BhY2UoY29uc3QgRnVuYyYgZnVuYykKKyAgICB7CisgICAgICAgIGlmICht
X2V2YWxFeGVjdXRhYmxlU3BhY2UpCisgICAgICAgICAgICBmdW5jKCptX2V2YWxFeGVjdXRhYmxl
U3BhY2UpOworICAgICAgICBmdW5jKGZ1bmN0aW9uRXhlY3V0YWJsZVNwYWNlKTsKKyAgICAgICAg
aWYgKG1fbW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGVTcGFjZSkKKyAgICAgICAgICAgIGZ1bmMoKm1f
bW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGVTcGFjZSk7CisgICAgICAgIGZ1bmMocHJvZ3JhbUV4ZWN1
dGFibGVTcGFjZSk7CisgICAgfQorCisgICAgU3BhY2VBbmRTZXQgdW5saW5rZWRGdW5jdGlvbkV4
ZWN1dGFibGVTcGFjZTsKKworI3VuZGVmIERZTkFNSUNfU1BBQ0VfQU5EX1NFVF9ERUZJTkVfTUVN
QkVSCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL0hlYXBDZWxsVHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvSGVhcENlbGxUeXBlLmNwcAkocmV2aXNpb24gMjg2MDExKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvSGVhcENlbGxUeXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE3LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC01NiwxMiAr
NTYsMTIgQEAgSGVhcENlbGxUeXBlOjp+SGVhcENlbGxUeXBlKCkKIHsKIH0KIAotdm9pZCBIZWFw
Q2VsbFR5cGU6OmZpbmlzaFN3ZWVwKE1hcmtlZEJsb2NrOjpIYW5kbGUmIGJsb2NrLCBGcmVlTGlz
dCogZnJlZUxpc3QpCit2b2lkIEhlYXBDZWxsVHlwZTo6ZmluaXNoU3dlZXAoTWFya2VkQmxvY2s6
OkhhbmRsZSYgYmxvY2ssIEZyZWVMaXN0KiBmcmVlTGlzdCkgY29uc3QKIHsKICAgICBibG9jay5m
aW5pc2hTd2VlcEtub3dpbmdIZWFwQ2VsbFR5cGUoZnJlZUxpc3QsIERlZmF1bHREZXN0cm95RnVu
YygpKTsKIH0KIAotdm9pZCBIZWFwQ2VsbFR5cGU6OmRlc3Ryb3koVk0mIHZtLCBKU0NlbGwqIGNl
bGwpCit2b2lkIEhlYXBDZWxsVHlwZTo6ZGVzdHJveShWTSYgdm0sIEpTQ2VsbCogY2VsbCkgY29u
c3QKIHsKICAgICBEZWZhdWx0RGVzdHJveUZ1bmMoKSh2bSwgY2VsbCk7CiB9CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwQ2VsbFR5cGUuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwQ2VsbFR5cGUuaAkocmV2aXNpb24gMjg2MDExKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcENlbGxUeXBlLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNy0yMDIxIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpA
QCAtMzYsMTQgKzM2LDE0IEBAIHB1YmxpYzoKICAgICBKU19FWFBPUlRfUFJJVkFURSBIZWFwQ2Vs
bFR5cGUoQ2VsbEF0dHJpYnV0ZXMpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHZpcnR1YWwgfkhl
YXBDZWxsVHlwZSgpOwogCi0gICAgY29uc3QgQ2VsbEF0dHJpYnV0ZXMmIGF0dHJpYnV0ZXMoKSBj
b25zdCB7IHJldHVybiBtX2F0dHJpYnV0ZXM7IH0KKyAgICBjb25zdCBDZWxsQXR0cmlidXRlcyBh
dHRyaWJ1dGVzKCkgY29uc3QgeyByZXR1cm4gbV9hdHRyaWJ1dGVzOyB9CiAKICAgICAvLyBUaGUg
cHVycG9zZSBvZiBvdmVycmlkaW5nIHRoaXMgaXMgdG8gc3BlY2lhbGl6ZSB0aGUgc3dlZXAgZm9y
IHlvdXIgZGVzdHJ1Y3RvcnMuIFRoaXMgd29uJ3QKICAgICAvLyBiZSBjYWxsZWQgZm9yIG5vLWRl
c3RydWN0b3IgYmxvY2tzLiBUaGlzIG11c3QgY2FsbCBNYXJrZWRCbG9jazo6ZmluaXNoU3dlZXBL
bm93aW5nU3Vic3BhY2UuCi0gICAgdmlydHVhbCB2b2lkIGZpbmlzaFN3ZWVwKE1hcmtlZEJsb2Nr
OjpIYW5kbGUmLCBGcmVlTGlzdCopOworICAgIHZpcnR1YWwgdm9pZCBmaW5pc2hTd2VlcChNYXJr
ZWRCbG9jazo6SGFuZGxlJiwgRnJlZUxpc3QqKSBjb25zdDsKIAogICAgIC8vIFRoZXNlIGdldCBj
YWxsZWQgZm9yIGxhcmdlIG9iamVjdHMuCi0gICAgdmlydHVhbCB2b2lkIGRlc3Ryb3koVk0mLCBK
U0NlbGwqKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGVzdHJveShWTSYsIEpTQ2VsbCopIGNvbnN0Owog
CiBwcml2YXRlOgogICAgIENlbGxBdHRyaWJ1dGVzIG1fYXR0cmlidXRlczsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lzb0hlYXBDZWxsVHlwZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSXNvSGVhcENlbGxUeXBlLmNwcAkocmV2aXNpb24g
Mjg2MDExKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSXNvSGVhcENlbGxUeXBlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE5
LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCkBAIC0zOSwxMiArMzksMTIgQEAgSXNvSGVhcENlbGxUeXBlOjpJc29IZWFw
Q2VsbFR5cGUoRGVzdHJ1YwogCiBJc29IZWFwQ2VsbFR5cGU6On5Jc29IZWFwQ2VsbFR5cGUoKSA9
IGRlZmF1bHQ7CiAKLXZvaWQgSXNvSGVhcENlbGxUeXBlOjpmaW5pc2hTd2VlcChNYXJrZWRCbG9j
azo6SGFuZGxlJiBoYW5kbGUsIEZyZWVMaXN0KiBmcmVlTGlzdCkKK3ZvaWQgSXNvSGVhcENlbGxU
eXBlOjpmaW5pc2hTd2VlcChNYXJrZWRCbG9jazo6SGFuZGxlJiBoYW5kbGUsIEZyZWVMaXN0KiBm
cmVlTGlzdCkgY29uc3QKIHsKICAgICBoYW5kbGUuZmluaXNoU3dlZXBLbm93aW5nSGVhcENlbGxU
eXBlKGZyZWVMaXN0LCAqdGhpcyk7CiB9CiAKLXZvaWQgSXNvSGVhcENlbGxUeXBlOjpkZXN0cm95
KFZNJiwgSlNDZWxsKiBjZWxsKQordm9pZCBJc29IZWFwQ2VsbFR5cGU6OmRlc3Ryb3koVk0mLCBK
U0NlbGwqIGNlbGwpIGNvbnN0CiB7CiAgICAgbV9kZXN0cm95KGNlbGwpOwogfQpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSXNvSGVhcENlbGxUeXBlLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSXNvSGVhcENlbGxUeXBlLmgJKHJldmlzaW9uIDI4
NjAxMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lzb0hlYXBDZWxsVHlwZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOS0y
MDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAx
OS0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpAQCAtMjYsNyArMjYsNiBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRl
ICJIZWFwQ2VsbFR5cGUuaCIKLSNpbmNsdWRlICJNYXJrZWRCbG9ja0lubGluZXMuaCIKIAogbmFt
ZXNwYWNlIEpTQyB7CiAKQEAgLTM5LDEzICszOCwyOSBAQCBwdWJsaWM6CiAgICAgSlNfRVhQT1JU
X1BSSVZBVEUgSXNvSGVhcENlbGxUeXBlKERlc3RydWN0aW9uTW9kZSwgRGVzdHJveUZ1bmN0aW9u
UHRyKTsKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlPgorICAgIHN0cnVjdCBBcmdz
IHsKKyAgICAgICAgQXJncygpCisgICAgICAgICAgICA6IG1vZGUoQ2VsbFR5cGU6Om5lZWRzRGVz
dHJ1Y3Rpb24gPyBOZWVkc0Rlc3RydWN0aW9uIDogRG9lc05vdE5lZWREZXN0cnVjdGlvbikKKyAg
ICAgICAgICAgICwgZnVuY3Rpb25QdHIoJkNlbGxUeXBlOjpkZXN0cm95KQorICAgICAgICB7IH0K
KworICAgICAgICBEZXN0cnVjdGlvbk1vZGUgbW9kZTsKKyAgICAgICAgRGVzdHJveUZ1bmN0aW9u
UHRyIGZ1bmN0aW9uUHRyOworICAgIH07CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlw
ZT4KKyAgICBJc29IZWFwQ2VsbFR5cGUoQXJnczxDZWxsVHlwZT4mJiBhcmdzKQorICAgICAgICA6
IElzb0hlYXBDZWxsVHlwZShhcmdzLm1vZGUsIGFyZ3MuZnVuY3Rpb25QdHIpCisgICAgeyB9CisK
KyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZT4KICAgICBzdGF0aWMgc3RkOjp1bmlxdWVf
cHRyPElzb0hlYXBDZWxsVHlwZT4gY3JlYXRlKCkKICAgICB7CiAgICAgICAgIHJldHVybiBtYWtl
VW5pcXVlPElzb0hlYXBDZWxsVHlwZT4oQ2VsbFR5cGU6Om5lZWRzRGVzdHJ1Y3Rpb24gPyBOZWVk
c0Rlc3RydWN0aW9uIDogRG9lc05vdE5lZWREZXN0cnVjdGlvbiwgJkNlbGxUeXBlOjpkZXN0cm95
KTsKICAgICB9CiAKLSAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIGZpbmlzaFN3ZWVwKE1hcmtl
ZEJsb2NrOjpIYW5kbGUmLCBGcmVlTGlzdCopIGZpbmFsOwotICAgIEpTX0VYUE9SVF9QUklWQVRF
IHZvaWQgZGVzdHJveShWTSYsIEpTQ2VsbCopIGZpbmFsOworICAgIEpTX0VYUE9SVF9QUklWQVRF
IHZvaWQgZmluaXNoU3dlZXAoTWFya2VkQmxvY2s6OkhhbmRsZSYsIEZyZWVMaXN0KikgY29uc3Qg
ZmluYWw7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBkZXN0cm95KFZNJiwgSlNDZWxsKikg
Y29uc3QgZmluYWw7CiAKICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgb3BlcmF0b3IoKShWTSYsIEpT
Q2VsbCogY2VsbCkgY29uc3QKICAgICB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVh
cC9Jc29JbmxpbmVkSGVhcENlbGxUeXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvSXNvSW5saW5lZEhlYXBDZWxsVHlwZS5oCShyZXZpc2lvbiAyODYwMTEpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Jc29JbmxpbmVkSGVhcENlbGxUeXBlLmgJKHdv
cmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE5LTIw
MjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE5
LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCkBAIC0yNiw3ICsyNiw2IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUg
IkhlYXBDZWxsVHlwZS5oIgotI2luY2x1ZGUgIk1hcmtlZEJsb2NrSW5saW5lcy5oIgogCiBuYW1l
c3BhY2UgSlNDIHsKIApAQCAtNDUsMTIgKzQ0LDEyIEBAIHB1YmxpYzoKICAgICAgICAgfQogICAg
IH07CiAKLSAgICB2b2lkIGZpbmlzaFN3ZWVwKE1hcmtlZEJsb2NrOjpIYW5kbGUmIGhhbmRsZSwg
RnJlZUxpc3QqIGZyZWVMaXN0KSBmaW5hbAorICAgIHZvaWQgZmluaXNoU3dlZXAoTWFya2VkQmxv
Y2s6OkhhbmRsZSYgaGFuZGxlLCBGcmVlTGlzdCogZnJlZUxpc3QpIGNvbnN0IGZpbmFsCiAgICAg
ewogICAgICAgICBoYW5kbGUuZmluaXNoU3dlZXBLbm93aW5nSGVhcENlbGxUeXBlKGZyZWVMaXN0
LCBEZXN0cm95RnVuYygpKTsKICAgICB9CiAKLSAgICB2b2lkIGRlc3Ryb3koVk0mLCBKU0NlbGwq
IGNlbGwpIGZpbmFsCisgICAgdm9pZCBkZXN0cm95KFZNJiwgSlNDZWxsKiBjZWxsKSBjb25zdCBm
aW5hbAogICAgIHsKICAgICAgICAgQ2VsbFR5cGU6OmRlc3Ryb3koY2VsbCk7CiAgICAgfQpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSXNvU3Vic3BhY2UuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lzb1N1YnNwYWNlLmNwcAkocmV2aXNpb24g
Mjg2MDExKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSXNvU3Vic3BhY2UuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zMyw3ICszMyw3IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1Jc29T
dWJzcGFjZTo6SXNvU3Vic3BhY2UoQ1N0cmluZyBuYW1lLCBIZWFwJiBoZWFwLCBIZWFwQ2VsbFR5
cGUqIGhlYXBDZWxsVHlwZSwgc2l6ZV90IHNpemUsIHVpbnQ4X3QgbnVtYmVyT2ZMb3dlclRpZXJD
ZWxscykKK0lzb1N1YnNwYWNlOjpJc29TdWJzcGFjZShDU3RyaW5nIG5hbWUsIEhlYXAmIGhlYXAs
IGNvbnN0IEhlYXBDZWxsVHlwZSYgaGVhcENlbGxUeXBlLCBzaXplX3Qgc2l6ZSwgdWludDhfdCBu
dW1iZXJPZkxvd2VyVGllckNlbGxzKQogICAgIDogU3Vic3BhY2UobmFtZSwgaGVhcCkKICAgICAs
IG1fZGlyZWN0b3J5KFdURjo6cm91bmRVcFRvTXVsdGlwbGVPZjxNYXJrZWRCbG9jazo6YXRvbVNp
emU+KHNpemUpKQogICAgICwgbV9sb2NhbEFsbG9jYXRvcigmbV9kaXJlY3RvcnkpCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Jc29TdWJzcGFjZS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lzb1N1YnNwYWNlLmgJKHJldmlzaW9uIDI4NjAxMSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lzb1N1YnNwYWNlLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTM3LDcgKzM3LDcgQEAgY2xhc3MgSXNvQ2VsbFNldDsKIAogY2xhc3MgSXNvU3Vic3Bh
Y2UgOiBwdWJsaWMgU3Vic3BhY2UgewogcHVibGljOgotICAgIEpTX0VYUE9SVF9QUklWQVRFIElz
b1N1YnNwYWNlKENTdHJpbmcgbmFtZSwgSGVhcCYsIEhlYXBDZWxsVHlwZSosIHNpemVfdCBzaXpl
LCB1aW50OF90IG51bWJlck9mTG93ZXJUaWVyQ2VsbHMpOworICAgIEpTX0VYUE9SVF9QUklWQVRF
IElzb1N1YnNwYWNlKENTdHJpbmcgbmFtZSwgSGVhcCYsIGNvbnN0IEhlYXBDZWxsVHlwZSYsIHNp
emVfdCwgdWludDhfdCBudW1iZXJPZkxvd2VyVGllckNlbGxzKTsKICAgICBKU19FWFBPUlRfUFJJ
VkFURSB+SXNvU3Vic3BhY2UoKSBvdmVycmlkZTsKIAogICAgIHNpemVfdCBjZWxsU2l6ZSgpIHsg
cmV0dXJuIG1fZGlyZWN0b3J5LmNlbGxTaXplKCk7IH0KQEAgLTU0LDcgKzU0LDcgQEAgcHVibGlj
OgogICAgIHZvaWQqIHRyeUFsbG9jYXRlRnJvbUxvd2VyVGllcigpOwogICAgIHZvaWQgZGVzdHJv
eUxvd2VyVGllckZyZWVMaXN0KCk7CiAKLSAgICB2b2lkIHN3ZWVwKCk7CisgICAgdm9pZCBzd2Vl
cDMoKTsKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmM+IHZvaWQgZm9yRWFjaExvd2VyVGll
ckZyZWVMaXN0ZWRQcmVjaXNlQWxsb2NhdGlvbihjb25zdCBGdW5jJik7CiAKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lzb1N1YnNwYWNlSW5saW5lcy5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lzb1N1YnNwYWNlSW5saW5lcy5oCShyZXZpc2lv
biAyODYwMTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Jc29TdWJzcGFjZUlubGlu
ZXMuaAkod29ya2luZyBjb3B5KQpAQCAtNDQsNyArNDQsNyBAQCBpbmxpbmUgdm9pZCBJc29TdWJz
cGFjZTo6Y2xlYXJJc29DZWxsU2V0CiAgICAgICAgIH0pOwogfQogCi1pbmxpbmUgdm9pZCBJc29T
dWJzcGFjZTo6c3dlZXAoKQoraW5saW5lIHZvaWQgSXNvU3Vic3BhY2U6OnN3ZWVwMygpCiB7CiAg
ICAgU3Vic3BhY2U6OnN3ZWVwQmxvY2tzKCk7CiAgICAgLy8gV2Ugc3dlZXAgcHJlY2lzZS1hbGxv
Y2F0aW9ucyBlYWdlcmx5LCBidXQgd2UgZG8gbm90IGZyZWUgaXQgaW1tZWRpYXRlbHkuCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Jc29TdWJzcGFjZVBlclZNLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Jc29TdWJzcGFjZVBlclZNLmNwcAko
cmV2aXNpb24gMjg2MDExKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSXNvU3Vic3Bh
Y2VQZXJWTS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzLDcgKzMzLDcgQEAgbmFtZXNwYWNlIEpT
QyB7CiAKIGNsYXNzIElzb1N1YnNwYWNlUGVyVk06OkF1dG9yZW1vdmluZ0lzb1N1YnNwYWNlIGZp
bmFsIDogcHVibGljIElzb1N1YnNwYWNlIHsKIHB1YmxpYzoKLSAgICBBdXRvcmVtb3ZpbmdJc29T
dWJzcGFjZShJc29TdWJzcGFjZVBlclZNJiBwZXJWTSwgQ1N0cmluZyBuYW1lLCBIZWFwJiBoZWFw
LCBIZWFwQ2VsbFR5cGUqIGhlYXBDZWxsVHlwZSwgc2l6ZV90IHNpemUpCisgICAgQXV0b3JlbW92
aW5nSXNvU3Vic3BhY2UoSXNvU3Vic3BhY2VQZXJWTSYgcGVyVk0sIENTdHJpbmcgbmFtZSwgSGVh
cCYgaGVhcCwgY29uc3QgSGVhcENlbGxUeXBlJiBoZWFwQ2VsbFR5cGUsIHNpemVfdCBzaXplKQog
ICAgICAgICA6IElzb1N1YnNwYWNlKG5hbWUsIGhlYXAsIGhlYXBDZWxsVHlwZSwgc2l6ZSwgLyog
bnVtYmVyT2ZMb3dlclRpZXJDZWxscyAqLyAwKQogICAgICAgICAsIG1fcGVyVk0ocGVyVk0pCiAg
ICAgewpAQCAtNjUsNyArNjUsNyBAQCBJc29TdWJzcGFjZSYgSXNvU3Vic3BhY2VQZXJWTTo6Zm9y
Vk0oVk0mCiAgICAgYXV0byByZXN1bHQgPSBtX3N1YnNwYWNlUGVyVk0uYWRkKCZ2bSwgbnVsbHB0
cik7CiAgICAgaWYgKHJlc3VsdC5pc05ld0VudHJ5KSB7CiAgICAgICAgIFN1YnNwYWNlUGFyYW1l
dGVycyBwYXJhbXMgPSBtX3N1YnNwYWNlUGFyYW1ldGVycyh2bSk7Ci0gICAgICAgIHJlc3VsdC5p
dGVyYXRvci0+dmFsdWUgPSBuZXcgQXV0b3JlbW92aW5nSXNvU3Vic3BhY2UoKnRoaXMsIHBhcmFt
cy5uYW1lLCB2bS5oZWFwLCBwYXJhbXMuaGVhcENlbGxUeXBlLCBwYXJhbXMuc2l6ZSk7CisgICAg
ICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBuZXcgQXV0b3JlbW92aW5nSXNvU3Vic3BhY2Uo
KnRoaXMsIHBhcmFtcy5uYW1lLCB2bS5oZWFwLCAqcGFyYW1zLmhlYXBDZWxsVHlwZSwgcGFyYW1z
LnNpemUpOwogICAgIH0KICAgICByZXR1cm4gKnJlc3VsdC5pdGVyYXRvci0+dmFsdWU7CiB9Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Jc29TdWJzcGFjZVBlclZNLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSXNvU3Vic3BhY2VQZXJWTS5oCShy
ZXZpc2lvbiAyODYwMTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Jc29TdWJzcGFj
ZVBlclZNLmgJKHdvcmtpbmcgY29weSkKQEAgLTQxLDE1ICs0MSwxNSBAQCBwdWJsaWM6CiAgICAg
c3RydWN0IFN1YnNwYWNlUGFyYW1ldGVycyB7CiAgICAgICAgIFN1YnNwYWNlUGFyYW1ldGVycygp
IHsgfQogICAgICAgICAKLSAgICAgICAgU3Vic3BhY2VQYXJhbWV0ZXJzKENTdHJpbmcgbmFtZSwg
SGVhcENlbGxUeXBlKiBoZWFwQ2VsbFR5cGUsIHNpemVfdCBzaXplKQorICAgICAgICBTdWJzcGFj
ZVBhcmFtZXRlcnMoQ1N0cmluZyBuYW1lLCBjb25zdCBIZWFwQ2VsbFR5cGUmIGhlYXBDZWxsVHlw
ZSwgc2l6ZV90IHNpemUpCiAgICAgICAgICAgICA6IG5hbWUoV1RGTW92ZShuYW1lKSkKLSAgICAg
ICAgICAgICwgaGVhcENlbGxUeXBlKGhlYXBDZWxsVHlwZSkKKyAgICAgICAgICAgICwgaGVhcENl
bGxUeXBlKCZoZWFwQ2VsbFR5cGUpCiAgICAgICAgICAgICAsIHNpemUoc2l6ZSkKICAgICAgICAg
ewogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBDU3RyaW5nIG5hbWU7Ci0gICAgICAgIEhl
YXBDZWxsVHlwZSogaGVhcENlbGxUeXBlIHsgbnVsbHB0ciB9OworICAgICAgICBjb25zdCBIZWFw
Q2VsbFR5cGUqIGhlYXBDZWxsVHlwZSB7IG51bGxwdHIgfTsKICAgICAgICAgc2l6ZV90IHNpemUg
eyAwIH07CiAgICAgfTsKICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01h
cmtlZEJsb2NrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFy
a2VkQmxvY2suaAkocmV2aXNpb24gMjg2MDExKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvTWFya2VkQmxvY2suaAkod29ya2luZyBjb3B5KQpAQCAtMTYxLDcgKzE2MSw3IEBAIHB1Ymxp
YzoKICAgICAgICAgc2l6ZV90IGNlbGxTaXplKCk7CiAgICAgICAgIGlubGluZSB1bnNpZ25lZCBj
ZWxsc1BlckJsb2NrKCk7CiAgICAgICAgIAotICAgICAgICBjb25zdCBDZWxsQXR0cmlidXRlcyYg
YXR0cmlidXRlcygpIGNvbnN0OworICAgICAgICBjb25zdCBDZWxsQXR0cmlidXRlcyBhdHRyaWJ1
dGVzKCkgY29uc3Q7CiAgICAgICAgIERlc3RydWN0aW9uTW9kZSBkZXN0cnVjdGlvbigpIGNvbnN0
OwogICAgICAgICBib29sIG5lZWRzRGVzdHJ1Y3Rpb24oKSBjb25zdDsKICAgICAgICAgSGVhcENl
bGw6OktpbmQgY2VsbEtpbmQoKSBjb25zdDsKQEAgLTM0Nyw3ICszNDcsNyBAQCBwdWJsaWM6CiAg
ICAgdm9pZCByZXNldEFsbG9jYXRlZCgpOwogICAgICAgICAKICAgICBzaXplX3QgY2VsbFNpemUo
KTsKLSAgICBjb25zdCBDZWxsQXR0cmlidXRlcyYgYXR0cmlidXRlcygpIGNvbnN0OworICAgIGNv
bnN0IENlbGxBdHRyaWJ1dGVzIGF0dHJpYnV0ZXMoKSBjb25zdDsKICAgICAKICAgICBib29sIGhh
c0FueU1hcmtlZCgpIGNvbnN0OwogICAgIHZvaWQgbm90ZU1hcmtlZCgpOwpAQCAtNTExLDEyICs1
MTEsMTIgQEAgaW5saW5lIHNpemVfdCBNYXJrZWRCbG9jazo6Y2VsbFNpemUoKQogICAgIHJldHVy
biBoYW5kbGUoKS5jZWxsU2l6ZSgpOwogfQogCi1pbmxpbmUgY29uc3QgQ2VsbEF0dHJpYnV0ZXMm
IE1hcmtlZEJsb2NrOjpIYW5kbGU6OmF0dHJpYnV0ZXMoKSBjb25zdAoraW5saW5lIGNvbnN0IENl
bGxBdHRyaWJ1dGVzIE1hcmtlZEJsb2NrOjpIYW5kbGU6OmF0dHJpYnV0ZXMoKSBjb25zdAogewog
ICAgIHJldHVybiBtX2F0dHJpYnV0ZXM7CiB9CiAKLWlubGluZSBjb25zdCBDZWxsQXR0cmlidXRl
cyYgTWFya2VkQmxvY2s6OmF0dHJpYnV0ZXMoKSBjb25zdAoraW5saW5lIGNvbnN0IENlbGxBdHRy
aWJ1dGVzIE1hcmtlZEJsb2NrOjphdHRyaWJ1dGVzKCkgY29uc3QKIHsKICAgICByZXR1cm4gaGFu
ZGxlKCkuYXR0cmlidXRlcygpOwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
TWFya2VkQmxvY2tJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvTWFya2VkQmxvY2tJbmxpbmVzLmgJKHJldmlzaW9uIDI4NjAxMSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrSW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNi0yMDE5IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNi0yMDIxIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpA
QCAtMjEzLDcgKzIxMyw3IEBAIGlubGluZSBib29sIE1hcmtlZEJsb2NrOjpIYW5kbGU6OmFyZU1h
cmsKIC8vIHN3ZWVwTW9kZSA9PSBTd2VlcFRvRnJlZUxpc3QKIC8vIHNjcmliYmxlTW9kZSA9PSBE
b250U2NyaWJibGUKIC8vIG5ld2x5QWxsb2NhdGVkTW9kZSA9PSBEb2VzTm90SGF2ZU5ld2x5QWxs
b2NhdGVkCi0vLyBkZXN0cnVjdGlvbk1vZGUgIT0gQmxvY2tIYXNEZXN0cmljdG9yc0FuZENvbGxl
Y3RvcklzUnVubmluZworLy8gZGVzdHJ1Y3Rpb25Nb2RlICE9IEJsb2NrSGFzRGVzdHJ1Y3RvcnNB
bmRDb2xsZWN0b3JJc1J1bm5pbmcKIC8vCiAvLyBlbXB0eU1vZGUgPSBJc0VtcHR5CiAvLyAgICAg
ZGVzdHJ1Y3Rpb25Nb2RlID0gRG9lc05vdE5lZWREZXN0cnVjdGlvbgpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvUHJlY2lzZUFsbG9jYXRpb24uaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9QcmVjaXNlQWxsb2NhdGlvbi5oCShyZXZpc2lvbiAyODYw
MTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9QcmVjaXNlQWxsb2NhdGlvbi5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xMjEsNyArMTIxLDcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4g
YWJvdmVMb3dlckJvdW5kKHJhd1B0cikgJiYgYmVsb3dVcHBlckJvdW5kKHJhd1B0cik7CiAgICAg
fQogICAgIAotICAgIGNvbnN0IENlbGxBdHRyaWJ1dGVzJiBhdHRyaWJ1dGVzKCkgY29uc3QgeyBy
ZXR1cm4gbV9hdHRyaWJ1dGVzOyB9CisgICAgY29uc3QgQ2VsbEF0dHJpYnV0ZXMgYXR0cmlidXRl
cygpIGNvbnN0IHsgcmV0dXJuIG1fYXR0cmlidXRlczsgfQogICAgIAogICAgIERlcGVuZGVuY3kg
YWJvdXRUb01hcmsoSGVhcFZlcnNpb24pIHsgcmV0dXJuIERlcGVuZGVuY3koKTsgfQogICAgIApJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvU3Vic3BhY2UuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1N1YnNwYWNlLmNwcAkocmV2aXNpb24gMjg2
MDExKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvU3Vic3BhY2UuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC00MCw5ICs0MCw5IEBAIFN1YnNwYWNlOjpTdWJzcGFjZShDU3RyaW5nIG5hbWUs
IEhlYXAmIGgKIHsKIH0KIAotdm9pZCBTdWJzcGFjZTo6aW5pdGlhbGl6ZShIZWFwQ2VsbFR5cGUq
IGhlYXBDZWxsVHlwZSwgQWxpZ25lZE1lbW9yeUFsbG9jYXRvciogYWxpZ25lZE1lbW9yeUFsbG9j
YXRvcikKK3ZvaWQgU3Vic3BhY2U6OmluaXRpYWxpemUoY29uc3QgSGVhcENlbGxUeXBlJiBoZWFw
Q2VsbFR5cGUsIEFsaWduZWRNZW1vcnlBbGxvY2F0b3IqIGFsaWduZWRNZW1vcnlBbGxvY2F0b3Ip
CiB7Ci0gICAgbV9oZWFwQ2VsbFR5cGUgPSBoZWFwQ2VsbFR5cGU7CisgICAgbV9oZWFwQ2VsbFR5
cGUgPSAmaGVhcENlbGxUeXBlOwogICAgIG1fYWxpZ25lZE1lbW9yeUFsbG9jYXRvciA9IGFsaWdu
ZWRNZW1vcnlBbGxvY2F0b3I7CiAgICAgbV9kaXJlY3RvcnlGb3JFbXB0eUFsbG9jYXRpb24gPSBt
X2FsaWduZWRNZW1vcnlBbGxvY2F0b3ItPmZpcnN0RGlyZWN0b3J5KCk7CiAKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1N1YnNwYWNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvU3Vic3BhY2UuaAkocmV2aXNpb24gMjg2MDExKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvU3Vic3BhY2UuaAkod29ya2luZyBjb3B5KQpAQCAtMzksMTkg
KzM5LDE4IEBAIGNsYXNzIEhlYXBDZWxsVHlwZTsKIAogLy8gVGhlIGlkZWEgb2Ygc3Vic3BhY2Vz
IGlzIHRoYXQgeW91IGNhbiBwcm92aWRlIHNvbWUgY3VzdG9tIGJlaGF2aW9yIGZvciB5b3VyIG9i
amVjdHMgaWYgeW91CiAvLyBhbGxvY2F0ZSB0aGVtIGZyb20gYSBjdXN0b20gU3Vic3BhY2UgaW4g
d2hpY2ggeW91IG92ZXJyaWRlIHNvbWUgb2YgdGhlIHZpcnR1YWwgbWV0aG9kcy4gVGhpcwotLy8g
Y2xhc3MgaXMgdGhlIGJhc2VjbGFzcyBvZiBTdWJzcGFjZXMuIFVzdWFsbHkgeW91IHdpbGwgdXNl
IGVpdGhlciBTdWJzcGFjZSBvciBGaXhlZFNpemVTdWJzcGFjZS4KKy8vIGNsYXNzIGlzIHRoZSBi
YXNlY2xhc3Mgb2YgYWxsIHN1YnNwYWNlcyBlLmcuIENvbXBsZXRlU3Vic3BhY2UsIElzb1N1YnNw
YWNlLgogY2xhc3MgU3Vic3BhY2UgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFN1YnNwYWNl
KTsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBKU19FWFBPUlRf
UFJJVkFURSBTdWJzcGFjZShDU3RyaW5nIG5hbWUsIEhlYXAmKTsKICAgICBKU19FWFBPUlRfUFJJ
VkFURSB2aXJ0dWFsIH5TdWJzcGFjZSgpOwogCiAgICAgY29uc3QgY2hhciogbmFtZSgpIGNvbnN0
IHsgcmV0dXJuIG1fbmFtZS5kYXRhKCk7IH0KICAgICBNYXJrZWRTcGFjZSYgc3BhY2UoKSBjb25z
dCB7IHJldHVybiBtX3NwYWNlOyB9CiAgICAgCi0gICAgY29uc3QgQ2VsbEF0dHJpYnV0ZXMmIGF0
dHJpYnV0ZXMoKSBjb25zdDsKLSAgICBIZWFwQ2VsbFR5cGUqIGhlYXBDZWxsVHlwZSgpIGNvbnN0
IHsgcmV0dXJuIG1faGVhcENlbGxUeXBlOyB9CisgICAgY29uc3QgQ2VsbEF0dHJpYnV0ZXMgYXR0
cmlidXRlcygpIGNvbnN0OworICAgIGNvbnN0IEhlYXBDZWxsVHlwZSogaGVhcENlbGxUeXBlKCkg
Y29uc3QgeyByZXR1cm4gbV9oZWFwQ2VsbFR5cGU7IH0KICAgICBBbGlnbmVkTWVtb3J5QWxsb2Nh
dG9yKiBhbGlnbmVkTWVtb3J5QWxsb2NhdG9yKCkgY29uc3QgeyByZXR1cm4gbV9hbGlnbmVkTWVt
b3J5QWxsb2NhdG9yOyB9CiAgICAgCiAgICAgdm9pZCBmaW5pc2hTd2VlcChNYXJrZWRCbG9jazo6
SGFuZGxlJiwgRnJlZUxpc3QqKTsKQEAgLTEwNCwxMSArMTAzLDEzIEBAIHB1YmxpYzoKICAgICBi
b29sIGlzSXNvU3Vic3BhY2UoKSBjb25zdCB7IHJldHVybiBtX2lzSXNvU3Vic3BhY2U7IH0KIAog
cHJvdGVjdGVkOgotICAgIHZvaWQgaW5pdGlhbGl6ZShIZWFwQ2VsbFR5cGUqLCBBbGlnbmVkTWVt
b3J5QWxsb2NhdG9yKik7CisgICAgU3Vic3BhY2UoQ1N0cmluZyBuYW1lLCBIZWFwJik7CisKKyAg
ICB2b2lkIGluaXRpYWxpemUoY29uc3QgSGVhcENlbGxUeXBlJiwgQWxpZ25lZE1lbW9yeUFsbG9j
YXRvciopOwogICAgIAogICAgIE1hcmtlZFNwYWNlJiBtX3NwYWNlOwogICAgIAotICAgIEhlYXBD
ZWxsVHlwZSogbV9oZWFwQ2VsbFR5cGUgeyBudWxscHRyIH07CisgICAgY29uc3QgSGVhcENlbGxU
eXBlKiBtX2hlYXBDZWxsVHlwZSB7IG51bGxwdHIgfTsKICAgICBBbGlnbmVkTWVtb3J5QWxsb2Nh
dG9yKiBtX2FsaWduZWRNZW1vcnlBbGxvY2F0b3IgeyBudWxscHRyIH07CiAgICAgCiAgICAgQmxv
Y2tEaXJlY3RvcnkqIG1fZmlyc3REaXJlY3RvcnkgeyBudWxscHRyIH07CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9TdWJzcGFjZUlubGluZXMuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9TdWJzcGFjZUlubGluZXMuaAkocmV2aXNpb24gMjg2MDEx
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvU3Vic3BhY2VJbmxpbmVzLmgJKHdvcmtp
bmcgY29weSkKQEAgLTE1Miw3ICsxNTIsNyBAQCB2b2lkIFN1YnNwYWNlOjpmb3JFYWNoTGl2ZUNl
bGwoY29uc3QgRnVuCiAgICAgICAgIH0pOwogfQogCi1pbmxpbmUgY29uc3QgQ2VsbEF0dHJpYnV0
ZXMmIFN1YnNwYWNlOjphdHRyaWJ1dGVzKCkgY29uc3QKK2lubGluZSBjb25zdCBDZWxsQXR0cmli
dXRlcyBTdWJzcGFjZTo6YXR0cmlidXRlcygpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1faGVhcENl
bGxUeXBlLT5hdHRyaWJ1dGVzKCk7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL0pTSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0luamVjdGVkU2NyaXB0SG9zdFByb3RvdHlw
ZS5oCShyZXZpc2lvbiAyODYwMTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L0pTSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQwLDcg
KzQwLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZv
cihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNF
X1NIQVJBQkxFKEpTSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAg
cmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2Jq
ZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBERUNMQVJFX0lORk87CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTSmF2YVNjcmlwdENhbGxGcmFtZVByb3RvdHlwZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNKYXZhU2NyaXB0
Q2FsbEZyYW1lUHJvdG90eXBlLmgJKHJldmlzaW9uIDI4NjAxMSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3IvSlNKYXZhU2NyaXB0Q2FsbEZyYW1lUHJvdG90eXBlLmgJKHdvcmtp
bmcgY29weSkKQEAgLTQwLDcgKzQwLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1
YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19B
U1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTSmF2YVNjcmlwdENhbGxGcmFtZVByb3RvdHlw
ZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAg
cmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAgREVDTEFSRV9JTkZP
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQWdncmVnYXRlRXJyb3JQcm90
b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BZ2dy
ZWdhdGVFcnJvclByb3RvdHlwZS5oCShyZXZpc2lvbiAyODYwMTEpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9BZ2dyZWdhdGVFcnJvclByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC00NCw3ICs0NCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNw
YWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNF
X1NIQVJBQkxFKEFnZ3JlZ2F0ZUVycm9yUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJu
ICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3Bh
Y2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0m
IHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5SXRlcmF0b3JQcm90b3R5cGUu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUl0ZXJh
dG9yUHJvdG90eXBlLmgJKHJldmlzaW9uIDI4NjAxMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0FycmF5SXRlcmF0b3JQcm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzgs
NyArMzgsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihW
TSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJM
RShBcnJheUl0ZXJhdG9yUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFp
bk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAg
ICB9CiAKICAgICBzdGF0aWMgQXJyYXlJdGVyYXRvclByb3RvdHlwZSogY3JlYXRlKFZNJiB2bSwg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bc3luY0Zyb21TeW5jSXRlcmF0b3JQcm90
b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bc3lu
Y0Zyb21TeW5jSXRlcmF0b3JQcm90b3R5cGUuaAkocmV2aXNpb24gMjg2MDExKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXN5bmNGcm9tU3luY0l0ZXJhdG9yUHJvdG90eXBlLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDE3
LTIwMTkgT2xla3NhbmRyIFNrYWNoa292IDxnc2thY2hrb3ZAZ21haWwuY29tPi4KKyAqIENvcHly
aWdodCAoQykgMjAyMSBBcHBsZSwgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zNyw3ICszOCw3IEBAIHB1YmxpYzoKICAgICBzdGF0
aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJ
Q19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEFzeW5jRnJvbVN5bmNJdGVyYXRvclByb3Rv
dHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAg
ICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAgREVDTEFSRV9J
TkZPOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXN5bmNGdW5jdGlvblBy
b3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Fz
eW5jRnVuY3Rpb25Qcm90b3R5cGUuaAkocmV2aXNpb24gMjg2MDExKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQXN5bmNGdW5jdGlvblByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC0zOCw3ICszOCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNw
YWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNF
X1NIQVJBQkxFKEFzeW5jRnVuY3Rpb25Qcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4g
JnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFj
ZSgpOwogICAgIH0KIAogICAgIERFQ0xBUkVfSU5GTzsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0FzeW5jR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bc3luY0dlbmVyYXRvckZ1bmN0aW9u
UHJvdG90eXBlLmgJKHJldmlzaW9uIDI4NjAxMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0FzeW5jR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpA
QCAtMzgsNyArMzgsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFj
ZUZvcihWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9T
SEFSQUJMRShBc3luY0dlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAg
cmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2Jq
ZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBERUNMQVJFX0lORk87CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Bc3luY0dlbmVyYXRvclByb3RvdHlwZS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FzeW5jR2VuZXJhdG9yUHJvdG90eXBl
LmgJKHJldmlzaW9uIDI4NjAxMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Fz
eW5jR2VuZXJhdG9yUHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQxLDcgKzQxLDcgQEAg
cHVibGljOgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAg
IHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoQXN5bmNHZW5l
cmF0b3JQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3Bh
Y2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAg
IHN0YXRpYyBBc3luY0dlbmVyYXRvclByb3RvdHlwZSogY3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxP
YmplY3QqLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0FzeW5jSXRlcmF0b3JQcm90b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Bc3luY0l0ZXJhdG9yUHJvdG90eXBlLmgJKHJldmlzaW9u
IDI4NjAxMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FzeW5jSXRlcmF0b3JQ
cm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzksNyArMzksNyBAQCBwdWJsaWM6CiAgICAg
c3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewogICAgICAgICBT
VEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShBc3luY0l0ZXJhdG9yUHJvdG90eXBl
LCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICBy
ZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgQXN5bmNJ
dGVyYXRvclByb3RvdHlwZSogY3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9BdG9taWNzT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQXRvbWljc09iamVjdC5oCShyZXZpc2lvbiAyODYwMTEpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9BdG9taWNzT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAg
LTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMTcgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMjEgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC0zNyw3ICszNyw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNl
Rm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NI
QVJBQkxFKEF0b21pY3NPYmplY3QsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2Jq
ZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0K
ICAgICAKICAgICBzdGF0aWMgQXRvbWljc09iamVjdCogY3JlYXRlKFZNJiwgSlNHbG9iYWxPYmpl
Y3QqLCBTdHJ1Y3R1cmUqKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Jp
Z0ludFByb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0JpZ0ludFByb3RvdHlwZS5oCShyZXZpc2lvbiAyODYwMTEpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9CaWdJbnRQcm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzks
NyArMzksNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihW
TSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJM
RShCaWdJbnRQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0
U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAog
ICAgIHN0YXRpYyBCaWdJbnRQcm90b3R5cGUqIGNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlKQpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQnJhbmRlZFN0cnVjdHVyZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0JyYW5kZWRTdHJ1Y3R1cmUuaAkocmV2aXNpb24gMjg2
MDExKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQnJhbmRlZFN0cnVjdHVyZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC00Nyw3ICs0Nyw3IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBDZWxsVHlwZSwgU3Vic3BhY2VBY2Nlc3M+CiAgICAgc3RhdGljIElzb1N1YnNwYWNl
KiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewotICAgICAgICByZXR1cm4gJnZtLmJyYW5kZWRT
dHJ1Y3R1cmVTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5icmFuZGVkU3RydWN0dXJlU3BhY2Uo
KTsKICAgICB9CiAKICAgICBBTFdBWVNfSU5MSU5FIGJvb2wgY2hlY2tCcmFuZChTeW1ib2wqIGJy
YW5kKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQnV0dGVyZmx5SW5saW5l
cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0J1dHRlcmZs
eUlubGluZXMuaAkocmV2aXNpb24gMjg2MDExKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQnV0dGVyZmx5SW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC03Nyw3ICs3Nyw3IEBA
IEFMV0FZU19JTkxJTkUgdW5zaWduZWQgQnV0dGVyZmx5OjpvcHRpbWEKIGlubGluZSBCdXR0ZXJm
bHkqIEJ1dHRlcmZseTo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZChWTSYgdm0sIEpTT2JqZWN0Kiwg
c2l6ZV90IHByZUNhcGFjaXR5LCBzaXplX3QgcHJvcGVydHlDYXBhY2l0eSwgYm9vbCBoYXNJbmRl
eGluZ0hlYWRlciwgc2l6ZV90IGluZGV4aW5nUGF5bG9hZFNpemVJbkJ5dGVzLCBHQ0RlZmVycmFs
Q29udGV4dCogZGVmZXJyYWxDb250ZXh0KQogewogICAgIHNpemVfdCBzaXplID0gdG90YWxTaXpl
KHByZUNhcGFjaXR5LCBwcm9wZXJ0eUNhcGFjaXR5LCBoYXNJbmRleGluZ0hlYWRlciwgaW5kZXhp
bmdQYXlsb2FkU2l6ZUluQnl0ZXMpOwotICAgIHZvaWQqIGJhc2UgPSB2bS5qc1ZhbHVlR2lnYWNh
Z2VBdXhpbGlhcnlTcGFjZS5hbGxvY2F0ZU5vblZpcnR1YWwodm0sIHNpemUsIGRlZmVycmFsQ29u
dGV4dCwgQWxsb2NhdGlvbkZhaWx1cmVNb2RlOjpSZXR1cm5OdWxsKTsKKyAgICB2b2lkKiBiYXNl
ID0gdm0uanNWYWx1ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UoKS5hbGxvY2F0ZU5vblZpcnR1YWwo
dm0sIHNpemUsIGRlZmVycmFsQ29udGV4dCwgQWxsb2NhdGlvbkZhaWx1cmVNb2RlOjpSZXR1cm5O
dWxsKTsKICAgICBpZiAoVU5MSUtFTFkoIWJhc2UpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
IApAQCAtODksNyArODksNyBAQCBpbmxpbmUgQnV0dGVyZmx5KiBCdXR0ZXJmbHk6OnRyeUNyZWF0
ZVVuCiBpbmxpbmUgQnV0dGVyZmx5KiBCdXR0ZXJmbHk6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQoVk0m
IHZtLCBKU09iamVjdCosIHNpemVfdCBwcmVDYXBhY2l0eSwgc2l6ZV90IHByb3BlcnR5Q2FwYWNp
dHksIGJvb2wgaGFzSW5kZXhpbmdIZWFkZXIsIHNpemVfdCBpbmRleGluZ1BheWxvYWRTaXplSW5C
eXRlcykKIHsKICAgICBzaXplX3Qgc2l6ZSA9IHRvdGFsU2l6ZShwcmVDYXBhY2l0eSwgcHJvcGVy
dHlDYXBhY2l0eSwgaGFzSW5kZXhpbmdIZWFkZXIsIGluZGV4aW5nUGF5bG9hZFNpemVJbkJ5dGVz
KTsKLSAgICB2b2lkKiBiYXNlID0gdm0uanNWYWx1ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UuYWxs
b2NhdGVOb25WaXJ0dWFsKHZtLCBzaXplLCBudWxscHRyLCBBbGxvY2F0aW9uRmFpbHVyZU1vZGU6
OkFzc2VydCk7CisgICAgdm9pZCogYmFzZSA9IHZtLmpzVmFsdWVHaWdhY2FnZUF1eGlsaWFyeVNw
YWNlKCkuYWxsb2NhdGVOb25WaXJ0dWFsKHZtLCBzaXplLCBudWxscHRyLCBBbGxvY2F0aW9uRmFp
bHVyZU1vZGU6OkFzc2VydCk7CiAgICAgQnV0dGVyZmx5KiByZXN1bHQgPSBmcm9tQmFzZShiYXNl
LCBwcmVDYXBhY2l0eSwgcHJvcGVydHlDYXBhY2l0eSk7CiAKICAgICByZXR1cm4gcmVzdWx0OwpA
QCAtOTgsNyArOTgsNyBAQCBpbmxpbmUgQnV0dGVyZmx5KiBCdXR0ZXJmbHk6OmNyZWF0ZVVuaW5p
CiBpbmxpbmUgQnV0dGVyZmx5KiBCdXR0ZXJmbHk6OnRyeUNyZWF0ZShWTSYgdm0sIEpTT2JqZWN0
Kiwgc2l6ZV90IHByZUNhcGFjaXR5LCBzaXplX3QgcHJvcGVydHlDYXBhY2l0eSwgYm9vbCBoYXNJ
bmRleGluZ0hlYWRlciwgY29uc3QgSW5kZXhpbmdIZWFkZXImIGluZGV4aW5nSGVhZGVyLCBzaXpl
X3QgaW5kZXhpbmdQYXlsb2FkU2l6ZUluQnl0ZXMpCiB7CiAgICAgc2l6ZV90IHNpemUgPSB0b3Rh
bFNpemUocHJlQ2FwYWNpdHksIHByb3BlcnR5Q2FwYWNpdHksIGhhc0luZGV4aW5nSGVhZGVyLCBp
bmRleGluZ1BheWxvYWRTaXplSW5CeXRlcyk7Ci0gICAgdm9pZCogYmFzZSA9IHZtLmpzVmFsdWVH
aWdhY2FnZUF1eGlsaWFyeVNwYWNlLmFsbG9jYXRlTm9uVmlydHVhbCh2bSwgc2l6ZSwgbnVsbHB0
ciwgQWxsb2NhdGlvbkZhaWx1cmVNb2RlOjpSZXR1cm5OdWxsKTsKKyAgICB2b2lkKiBiYXNlID0g
dm0uanNWYWx1ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UoKS5hbGxvY2F0ZU5vblZpcnR1YWwodm0s
IHNpemUsIG51bGxwdHIsIEFsbG9jYXRpb25GYWlsdXJlTW9kZTo6UmV0dXJuTnVsbCk7CiAgICAg
aWYgKCFiYXNlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBCdXR0ZXJmbHkqIHJlc3Vs
dCA9IGZyb21CYXNlKGJhc2UsIHByZUNhcGFjaXR5LCBwcm9wZXJ0eUNhcGFjaXR5KTsKQEAgLTE3
NCw3ICsxNzQsNyBAQCBpbmxpbmUgQnV0dGVyZmx5KiBCdXR0ZXJmbHk6Omdyb3dBcnJheVJpCiAg
ICAgdm9pZCogdGhlQmFzZSA9IGJhc2UoMCwgcHJvcGVydHlDYXBhY2l0eSk7CiAgICAgc2l6ZV90
IG9sZFNpemUgPSB0b3RhbFNpemUoMCwgcHJvcGVydHlDYXBhY2l0eSwgaGFkSW5kZXhpbmdIZWFk
ZXIsIG9sZEluZGV4aW5nUGF5bG9hZFNpemVJbkJ5dGVzKTsKICAgICBzaXplX3QgbmV3U2l6ZSA9
IHRvdGFsU2l6ZSgwLCBwcm9wZXJ0eUNhcGFjaXR5LCB0cnVlLCBuZXdJbmRleGluZ1BheWxvYWRT
aXplSW5CeXRlcyk7Ci0gICAgdm9pZCogbmV3QmFzZSA9IHZtLmpzVmFsdWVHaWdhY2FnZUF1eGls
aWFyeVNwYWNlLmFsbG9jYXRlTm9uVmlydHVhbCh2bSwgbmV3U2l6ZSwgbnVsbHB0ciwgQWxsb2Nh
dGlvbkZhaWx1cmVNb2RlOjpSZXR1cm5OdWxsKTsKKyAgICB2b2lkKiBuZXdCYXNlID0gdm0uanNW
YWx1ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UoKS5hbGxvY2F0ZU5vblZpcnR1YWwodm0sIG5ld1Np
emUsIG51bGxwdHIsIEFsbG9jYXRpb25GYWlsdXJlTW9kZTo6UmV0dXJuTnVsbCk7CiAgICAgaWYg
KCFuZXdCYXNlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAvLyBGSVhNRTogVGhpcyBw
cm9iYWJseSBzaG91bGRuJ3QgYmUgYSBtZW1jcHkuCkBAIC0yMTEsMTMgKzIxMSwxMyBAQCBpbmxp
bmUgQnV0dGVyZmx5KiBCdXR0ZXJmbHk6OnJlYWxsb2NBcnJhCiAgICAgLy8gT2JqZWN0cyB3aXRo
IG5vIHByb3BlcnRpZXMgYXJlIGNvbW1vbiBpbiBhcnJheXMsIGFuZCB3ZSBhcmUgZm9jdXNpbmcg
b24gdmVyeSBsYXJnZSBhcnJheSBjcmFmdGVkIGJ5IHJlcGVhdGluZyBBcnJheSNwdXNoLCBzby4u
LiB0aGF0J3MgZmluZSEKICAgICBib29sIGNhblJlYWxsb2MgPSAhcHJvcGVydHlDYXBhY2l0eSAm
JiAhdm0uaGVhcC5tdXRhdG9yU2hvdWxkQmVGZW5jZWQoKSAmJiBiaXR3aXNlX2Nhc3Q8SGVhcENl
bGwqPih0aGVCYXNlKS0+aXNQcmVjaXNlQWxsb2NhdGlvbigpOwogICAgIGlmIChjYW5SZWFsbG9j
KSB7Ci0gICAgICAgIHZvaWQqIG5ld0Jhc2UgPSB2bS5qc1ZhbHVlR2lnYWNhZ2VBdXhpbGlhcnlT
cGFjZS5yZWFsbG9jYXRlUHJlY2lzZUFsbG9jYXRpb25Ob25WaXJ0dWFsKHZtLCBiaXR3aXNlX2Nh
c3Q8SGVhcENlbGwqPih0aGVCYXNlKSwgbmV3U2l6ZSwgJmRlZmVycmFsQ29udGV4dCwgQWxsb2Nh
dGlvbkZhaWx1cmVNb2RlOjpSZXR1cm5OdWxsKTsKKyAgICAgICAgdm9pZCogbmV3QmFzZSA9IHZt
LmpzVmFsdWVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlKCkucmVhbGxvY2F0ZVByZWNpc2VBbGxvY2F0
aW9uTm9uVmlydHVhbCh2bSwgYml0d2lzZV9jYXN0PEhlYXBDZWxsKj4odGhlQmFzZSksIG5ld1Np
emUsICZkZWZlcnJhbENvbnRleHQsIEFsbG9jYXRpb25GYWlsdXJlTW9kZTo6UmV0dXJuTnVsbCk7
CiAgICAgICAgIGlmICghbmV3QmFzZSkKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAg
ICAgICByZXR1cm4gZnJvbUJhc2UobmV3QmFzZSwgMCwgcHJvcGVydHlDYXBhY2l0eSk7CiAgICAg
fQogCi0gICAgdm9pZCogbmV3QmFzZSA9IHZtLmpzVmFsdWVHaWdhY2FnZUF1eGlsaWFyeVNwYWNl
LmFsbG9jYXRlTm9uVmlydHVhbCh2bSwgbmV3U2l6ZSwgJmRlZmVycmFsQ29udGV4dCwgQWxsb2Nh
dGlvbkZhaWx1cmVNb2RlOjpSZXR1cm5OdWxsKTsKKyAgICB2b2lkKiBuZXdCYXNlID0gdm0uanNW
YWx1ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UoKS5hbGxvY2F0ZU5vblZpcnR1YWwodm0sIG5ld1Np
emUsICZkZWZlcnJhbENvbnRleHQsIEFsbG9jYXRpb25GYWlsdXJlTW9kZTo6UmV0dXJuTnVsbCk7
CiAgICAgaWYgKCFuZXdCYXNlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBnY1NhZmVN
ZW1jcHkoc3RhdGljX2Nhc3Q8SlNWYWx1ZSo+KG5ld0Jhc2UpLCBzdGF0aWNfY2FzdDxKU1ZhbHVl
Kj4odGhlQmFzZSksIG9sZFNpemUpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQ2xvbmVkQXJndW1lbnRzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQ2xvbmVkQXJndW1lbnRzLmgJKHJldmlzaW9uIDI4NjAxMSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nsb25lZEFyZ3VtZW50cy5oCSh3b3JraW5nIGNvcHkpCkBA
IC00Niw3ICs0Niw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNl
Rm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAgIHN0YXRpY19hc3NlcnQoIUNlbGxUeXBlOjpuZWVk
c0Rlc3RydWN0aW9uLCAiIik7Ci0gICAgICAgIHJldHVybiAmdm0uY2xvbmVkQXJndW1lbnRzU3Bh
Y2U7CisgICAgICAgIHJldHVybiAmdm0uY2xvbmVkQXJndW1lbnRzU3BhY2UoKTsKICAgICB9CiAg
ICAgCiBwcml2YXRlOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29uc29s
ZU9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nv
bnNvbGVPYmplY3QuaAkocmV2aXNpb24gMjg2MDExKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQ29uc29sZU9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw3ICszNyw3IEBA
IHB1YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAg
ICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKENvbnNvbGVP
YmplY3QsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAg
ICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBD
b25zb2xlT2JqZWN0KiBjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0N1c3RvbUdldHRlclNldHRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0N1c3RvbUdldHRlclNldHRlci5oCShyZXZpc2lvbiAyODYwMTEpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DdXN0b21HZXR0ZXJTZXR0ZXIuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNDMsNyArNDMsNyBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUg
Q2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNzPgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3Bh
Y2VGb3IoVk0mIHZtKQogICAgIHsKLSAgICAgICAgcmV0dXJuICZ2bS5jdXN0b21HZXR0ZXJTZXR0
ZXJTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5jdXN0b21HZXR0ZXJTZXR0ZXJTcGFjZSgpOwog
ICAgIH0KIAogICAgIHN0YXRpYyBDdXN0b21HZXR0ZXJTZXR0ZXIqIGNyZWF0ZShWTSYgdm0sIEN1
c3RvbUdldHRlciBjdXN0b21HZXR0ZXIsIEN1c3RvbVNldHRlciBjdXN0b21TZXR0ZXIpCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9ET01BdHRyaWJ1dGVHZXR0ZXJTZXR0ZXIu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9ET01BdHRyaWJ1
dGVHZXR0ZXJTZXR0ZXIuaAkocmV2aXNpb24gMjg2MDExKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvRE9NQXR0cmlidXRlR2V0dGVyU2V0dGVyLmgJKHdvcmtpbmcgY29weSkKQEAg
LTQzLDcgKzQzLDcgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlLCBT
dWJzcGFjZUFjY2Vzcz4KICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2
bSkKICAgICB7Ci0gICAgICAgIHJldHVybiAmdm0uZG9tQXR0cmlidXRlR2V0dGVyU2V0dGVyU3Bh
Y2U7CisgICAgICAgIHJldHVybiAmdm0uZG9tQXR0cmlidXRlR2V0dGVyU2V0dGVyU3BhY2UoKTsK
ICAgICB9CiAKICAgICBzdGF0aWMgRE9NQXR0cmlidXRlR2V0dGVyU2V0dGVyKiBjcmVhdGUoVk0m
IHZtLCBDdXN0b21HZXR0ZXIgY3VzdG9tR2V0dGVyLCBDdXN0b21TZXR0ZXIgY3VzdG9tU2V0dGVy
LCBET01BdHRyaWJ1dGVBbm5vdGF0aW9uIGRvbUF0dHJpYnV0ZSkKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0RhdGVJbnN0YW5jZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVJbnN0YW5jZS5oCShyZXZpc2lvbiAyODYwMTEpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlSW5zdGFuY2UuaAkod29ya2luZyBj
b3B5KQpAQCAtMzcsNyArMzcsNyBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2Vs
bFR5cGUsIFN1YnNwYWNlQWNjZXNzIG1vZGU+CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJz
cGFjZUZvcihWTSYgdm0pCiAgICAgewotICAgICAgICByZXR1cm4gJnZtLmRhdGVJbnN0YW5jZVNw
YWNlOworICAgICAgICByZXR1cm4gJnZtLmRhdGVJbnN0YW5jZVNwYWNlKCk7CiAgICAgfQogCiAg
ICAgc3RhdGljIERhdGVJbnN0YW5jZSogY3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUsIGRvdWJsZSBkYXRlKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0
ZVByb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0RhdGVQcm90b3R5cGUuaAkocmV2aXNpb24gMjg2MDExKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvRGF0ZVByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw3ICszNSw3
IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkK
ICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKERhdGVQ
cm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7Cisg
ICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRp
YyBEYXRlUHJvdG90eXBlKiBjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0RpcmVjdEFyZ3VtZW50cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0RpcmVjdEFyZ3VtZW50cy5oCShyZXZpc2lvbiAyODYwMTEpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EaXJlY3RBcmd1bWVudHMuaAkod29ya2luZyBjb3B5
KQpAQCAtNTAsNyArNTAsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIENvbXBsZXRlU3Vic3BhY2Uq
IHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAgIHN0YXRpY19hc3NlcnQoIUNlbGxU
eXBlOjpuZWVkc0Rlc3RydWN0aW9uLCAiIik7Ci0gICAgICAgIHJldHVybiAmdm0udmFyaWFibGVT
aXplZENlbGxTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS52YXJpYWJsZVNpemVkQ2VsbFNwYWNl
KCk7CiAgICAgfQogCiAgICAgLy8gQ3JlYXRlcyBhbiBhcmd1bWVudHMgb2JqZWN0IGJ1dCBsZWF2
ZXMgaXQgdW5pbml0aWFsaXplZC4gVGhpcyBpcyBkYW5nZXJvdXMgaWYgd2UgR0MgcmlnaHQKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yUHJvdG90eXBlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JQcm90b3R5cGUuaAko
cmV2aXNpb24gMjg2MDExKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JQ
cm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtNDUsNyArNDUsNyBAQCBwdWJsaWM6CiAgICAg
c3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewogICAgICAgICBT
VEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShFcnJvclByb3RvdHlwZUJhc2UsIEJh
c2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVy
biAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIERFQ0xBUkVfSU5GTzsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvbi5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvbi5oCShyZXZpc2lvbiAy
ODYwMTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNlcHRpb24uaAkod29y
a2luZyBjb3B5KQpAQCAtNDAsNyArNDAsNyBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5h
bWUgQ2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNzIG1vZGU+CiAgICAgc3RhdGljIElzb1N1YnNwYWNl
KiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewotICAgICAgICByZXR1cm4gJnZtLmV4Y2VwdGlv
blNwYWNlOworICAgICAgICByZXR1cm4gJnZtLmV4Y2VwdGlvblNwYWNlKCk7CiAgICAgfQogCiAg
ICAgZW51bSBTdGFja0NhcHR1cmVBY3Rpb24gewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvRmluYWxpemF0aW9uUmVnaXN0cnlQcm90b3R5cGUuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GaW5hbGl6YXRpb25SZWdpc3RyeVByb3RvdHlw
ZS5oCShyZXZpc2lvbiAyODYwMTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9G
aW5hbGl6YXRpb25SZWdpc3RyeVByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw3ICsz
Nyw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2
bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEZp
bmFsaXphdGlvblJlZ2lzdHJ5UHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5w
bGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsK
ICAgICB9CiAKICAgICBzdGF0aWMgRmluYWxpemF0aW9uUmVnaXN0cnlQcm90b3R5cGUqIGNyZWF0
ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0
dXJlKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25FeGVjdXRh
YmxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rp
b25FeGVjdXRhYmxlLmgJKHJldmlzaW9uIDI4NjAxMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0Z1bmN0aW9uRXhlY3V0YWJsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00Niw3ICs0
Niw3IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vic3BhY2VB
Y2Nlc3M+CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAg
ewotICAgICAgICByZXR1cm4gJnZtLmZ1bmN0aW9uRXhlY3V0YWJsZVNwYWNlLnNwYWNlOworICAg
ICAgICByZXR1cm4gJnZtLmZ1bmN0aW9uRXhlY3V0YWJsZVNwYWNlKCkuc3BhY2U7CiAgICAgfQog
CiAgICAgc3RhdGljIEZ1bmN0aW9uRXhlY3V0YWJsZSogY3JlYXRlKFZNJiB2bSwgU2NyaXB0RXhl
Y3V0YWJsZSogdG9wTGV2ZWxFeGVjdXRhYmxlLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIFVu
bGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiB1bmxpbmtlZEV4ZWN1dGFibGUsIEludHJpbnNpYyBp
bnRyaW5zaWMsIGJvb2wgaXNJbnNpZGVPcmRpbmFyeUZ1bmN0aW9uKQpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JGdW5jdGlvblBy
b3RvdHlwZS5oCShyZXZpc2lvbiAyODYwMTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9HZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00MCw3
ICs0MCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZN
JiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxF
KEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5w
bGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsK
ICAgICB9CiAKICAgICBzdGF0aWMgR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUqIGNyZWF0ZShW
TSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvR2VuZXJhdG9yUHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yUHJvdG90eXBlLmgJKHJldmlzaW9uIDI4NjAxMSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvclByb3RvdHlwZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC00MSw3ICs0MSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vi
c3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRf
SVNPX1NVQlNQQUNFX1NIQVJBQkxFKEdlbmVyYXRvclByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAg
IHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9i
amVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIEdlbmVyYXRvclByb3RvdHlwZSogY3Jl
YXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dldHRlclNldHRlci5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dldHRlclNldHRlci5oCShyZXZpc2lv
biAyODYwMTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZXR0ZXJTZXR0ZXIu
aAkod29ya2luZyBjb3B5KQpAQCAtNTksNyArNTksNyBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8
dHlwZW5hbWUgQ2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNzPgogICAgIHN0YXRpYyBJc29TdWJzcGFj
ZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKLSAgICAgICAgcmV0dXJuICZ2bS5nZXR0ZXJT
ZXR0ZXJTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5nZXR0ZXJTZXR0ZXJTcGFjZSgpOwogICAg
IH0KIAogICAgIHN0YXRpYyBHZXR0ZXJTZXR0ZXIqIGNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIEpTT2JqZWN0KiBnZXR0ZXIsIEpTT2JqZWN0KiBzZXR0ZXIpCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9IYXNoTWFwSW1wbC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0hhc2hNYXBJbXBsLmgJKHJldmlz
aW9uIDI4NjAxMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0hhc2hNYXBJbXBs
LmgJKHdvcmtpbmcgY29weSkKQEAgLTIxMyw3ICsyMTMsNyBAQCBwdWJsaWM6CiAgICAgewogICAg
ICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgICAgIHNpemVf
dCBhbGxvY2F0aW9uU2l6ZSA9IEhhc2hNYXBCdWZmZXI6OmFsbG9jYXRpb25TaXplKGNhcGFjaXR5
KTsKLSAgICAgICAgdm9pZCogZGF0YSA9IHZtLmpzVmFsdWVHaWdhY2FnZUF1eGlsaWFyeVNwYWNl
LmFsbG9jYXRlTm9uVmlydHVhbCh2bSwgYWxsb2NhdGlvblNpemUsIG51bGxwdHIsIEFsbG9jYXRp
b25GYWlsdXJlTW9kZTo6UmV0dXJuTnVsbCk7CisgICAgICAgIHZvaWQqIGRhdGEgPSB2bS5qc1Zh
bHVlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZSgpLmFsbG9jYXRlTm9uVmlydHVhbCh2bSwgYWxsb2Nh
dGlvblNpemUsIG51bGxwdHIsIEFsbG9jYXRpb25GYWlsdXJlTW9kZTo6UmV0dXJuTnVsbCk7CiAg
ICAgICAgIGlmICghZGF0YSkgewogICAgICAgICAgICAgdGhyb3dPdXRPZk1lbW9yeUVycm9yKGds
b2JhbE9iamVjdCwgc2NvcGUpOwogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRlcm5hbEZ1bmN0aW9uLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50ZXJuYWxGdW5jdGlvbi5oCShy
ZXZpc2lvbiAyODYwMTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRlcm5h
bEZ1bmN0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTQxLDcgKzQxLDcgQEAgcHVibGljOgogICAg
IHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAgICAg
c3RhdGljX2Fzc2VydChzaXplb2YoQ2VsbFR5cGUpID09IHNpemVvZihJbnRlcm5hbEZ1bmN0aW9u
KSwgIkludGVybmFsRnVuY3Rpb24gc3ViY2xhc3NlcyB0aGF0IGFkZCBmaWVsZHMgbmVlZCB0byBv
dmVycmlkZSBzdWJzcGFjZUZvcjw+KCkiKTsKLSAgICAgICAgcmV0dXJuICZ2bS5pbnRlcm5hbEZ1
bmN0aW9uU3BhY2U7CisgICAgICAgIHJldHVybiAmdm0uaW50ZXJuYWxGdW5jdGlvblNwYWNlKCk7
CiAgICAgfQogCiAgICAgREVDTEFSRV9FWFBPUlRfSU5GTzsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0ludGxDb2xsYXRvclByb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxDb2xsYXRvclByb3RvdHlwZS5oCShyZXZp
c2lvbiAyODYwMTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsQ29sbGF0
b3JQcm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiBDb3B5
cmlnaHQgKEMpIDIwMTUgQW5keSBWYW5XYWdvbmVyIChhbmR5QHZhbndhZ29uZXIuZmFtaWx5KQot
ICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAxOS0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzksNyArMzksNyBAQCBwdWJsaWM6
CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewogICAg
ICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShJbnRsQ29sbGF0b3JQcm90
b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAg
ICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBJ
bnRsQ29sbGF0b3JQcm90b3R5cGUqIGNyZWF0ZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0
dXJlKik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGF0ZVRpbWVG
b3JtYXRQcm90b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9JbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUuaAkocmV2aXNpb24gMjg2MDExKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBl
LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAy
MDE1IEFuZHkgVmFuV2Fnb25lciAoYW5keUB2YW53YWdvbmVyLmZhbWlseSkKLSAqIENvcHlyaWdo
dCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTktMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM5LDcgKzM5LDcgQEAgcHVibGljOgogICAgIHN0YXRp
YyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElD
X0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBl
LCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICBy
ZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgSW50bERh
dGVUaW1lRm9ybWF0UHJvdG90eXBlKiBjcmVhdGUoVk0mLCBKU0dsb2JhbE9iamVjdCosIFN0cnVj
dHVyZSopOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERpc3BsYXlO
YW1lc1Byb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0ludGxEaXNwbGF5TmFtZXNQcm90b3R5cGUuaAkocmV2aXNpb24gMjg2MDExKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERpc3BsYXlOYW1lc1Byb3RvdHlwZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAtMjAy
MSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKQEAgLTM4LDcgKzM4LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJc29TdWJzcGFj
ZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09f
U1VCU1BBQ0VfU0hBUkFCTEUoSW50bERpc3BsYXlOYW1lc1Byb3RvdHlwZSwgQmFzZSk7Ci0gICAg
ICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFp
bk9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIEludGxEaXNwbGF5TmFtZXNQcm90
b3R5cGUqIGNyZWF0ZShWTSYsIFN0cnVjdHVyZSopOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSW50bExpc3RGb3JtYXRQcm90b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTGlzdEZvcm1hdFByb3RvdHlwZS5oCShyZXZp
c2lvbiAyODYwMTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTGlzdEZv
cm1hdFByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENv
cHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMjAtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM4LDcgKzM4LDcgQEAgcHVibGljOgogICAg
IHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAgICAg
U1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSW50bExpc3RGb3JtYXRQcm90b3R5
cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAg
IHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBJbnRs
TGlzdEZvcm1hdFByb3RvdHlwZSogY3JlYXRlKFZNJiwgU3RydWN0dXJlKik7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTG9jYWxlUHJvdG90eXBlLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bExvY2FsZVByb3RvdHlwZS5o
CShyZXZpc2lvbiAyODYwMTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRs
TG9jYWxlUHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw2IEBACiAvKgogICog
Q29weXJpZ2h0IChDKSAyMDIwIFNvbnkgSW50ZXJhY3RpdmUgRW50ZXJ0YWlubWVudCBJbmMuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zOCw3ICszOSw3IEBAIHB1YmxpYzoKICAg
ICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAg
IFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEludGxMb2NhbGVQcm90b3R5cGUs
IEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJl
dHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBJbnRsTG9j
YWxlUHJvdG90eXBlKiBjcmVhdGUoVk0mLCBTdHJ1Y3R1cmUqKTsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0UHJvdG90
eXBlLmgJKHJldmlzaW9uIDI4NjAxMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0ludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMSw2ICsxLDYg
QEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQW5keSBWYW5XYWdvbmVyIChhbmR5QHZhbndh
Z29uZXIuZmFtaWx5KQotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxOS0yMDIxIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzksNyAr
MzksNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYg
dm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShJ
bnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFp
bk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAg
ICB9CiAKICAgICBzdGF0aWMgSW50bE51bWJlckZvcm1hdFByb3RvdHlwZSogY3JlYXRlKFZNJiwg
SlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0ludGxPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9JbnRsT2JqZWN0LmgJKHJldmlzaW9uIDI4NjAxMSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0ludGxPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtMSw2ICsx
LDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQW5keSBWYW5XYWdvbmVyIChhbmR5QHZh
bndhZ29uZXIuZmFtaWx5KQotICogQ29weXJpZ2h0IChDKSAyMDE5LTIwMjAgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE5LTIwMjEgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDIwIFNvbnkgSW50ZXJh
Y3RpdmUgRW50ZXJ0YWlubWVudCBJbmMuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC03Niw3ICs3Niw3
IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkK
ICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEludGxP
YmplY3QsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAg
ICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBJ
bnRsT2JqZWN0KiBjcmVhdGUoVk0mLCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSopOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFBsdXJhbFJ1bGVzUHJvdG90eXBl
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFBsdXJh
bFJ1bGVzUHJvdG90eXBlLmgJKHJldmlzaW9uIDI4NjAxMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0ludGxQbHVyYWxSdWxlc1Byb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDYgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxOCBBbmR5IFZhbldhZ29uZXIg
KGFuZHlAdmFud2Fnb25lci5mYW1pbHkpCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE5LTIwMjEgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CkBAIC0zOSw3ICszOSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNw
YWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNF
X1NIQVJBQkxFKEludGxQbHVyYWxSdWxlc1Byb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVy
biAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNw
YWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIEludGxQbHVyYWxSdWxlc1Byb3RvdHlwZSogY3Jl
YXRlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqKTsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0ludGxSZWxhdGl2ZVRpbWVGb3JtYXRQcm90b3R5cGUuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsUmVsYXRpdmVUaW1l
Rm9ybWF0UHJvdG90eXBlLmgJKHJldmlzaW9uIDI4NjAxMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0ludGxSZWxhdGl2ZVRpbWVGb3JtYXRQcm90b3R5cGUuaAkod29ya2luZyBj
b3B5KQpAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMjAgU29ueSBJbnRl
cmFjdGl2ZSBFbnRlcnRhaW5tZW50IEluYy4KKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
QEAgLTM4LDcgKzM5LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3Bh
Y2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0Vf
U0hBUkFCTEUoSW50bFJlbGF0aXZlVGltZUZvcm1hdFByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAg
IHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9i
amVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIEludGxSZWxhdGl2ZVRpbWVGb3JtYXRQ
cm90b3R5cGUqIGNyZWF0ZShWTSYsIFN0cnVjdHVyZSopOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSW50bFNlZ21lbnRJdGVyYXRvclByb3RvdHlwZS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxTZWdtZW50SXRlcmF0b3JQcm90
b3R5cGUuaAkocmV2aXNpb24gMjg2MDExKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSW50bFNlZ21lbnRJdGVyYXRvclByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM4LDcgKzM4
LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZt
KQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSW50
bFNlZ21lbnRJdGVyYXRvclByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxh
aW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAg
ICAgfQogCiAgICAgc3RhdGljIEludGxTZWdtZW50SXRlcmF0b3JQcm90b3R5cGUqIGNyZWF0ZShW
TSYsIFN0cnVjdHVyZSopOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50
bFNlZ21lbnRlclByb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0ludGxTZWdtZW50ZXJQcm90b3R5cGUuaAkocmV2aXNpb24gMjg2MDExKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFNlZ21lbnRlclByb3RvdHlwZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAtMjAy
MSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKQEAgLTM4LDcgKzM4LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJc29TdWJzcGFj
ZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09f
U1VCU1BBQ0VfU0hBUkFCTEUoSW50bFNlZ21lbnRlclByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAg
IHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9i
amVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIEludGxTZWdtZW50ZXJQcm90b3R5cGUq
IGNyZWF0ZShWTSYsIFN0cnVjdHVyZSopOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSW50bFNlZ21lbnRzUHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSW50bFNlZ21lbnRzUHJvdG90eXBlLmgJKHJldmlzaW9uIDI4NjAx
MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxTZWdtZW50c1Byb3RvdHlw
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MjAtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTM4LDcgKzM4LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJc29T
dWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VS
VF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSW50bFNlZ21lbnRzUHJvdG90eXBlLCBCYXNlKTsKLSAg
ICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBs
YWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgSW50bFNlZ21lbnRzUHJvdG90
eXBlKiBjcmVhdGUoVk0mLCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSopOwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSXRlcmF0b3JQcm90b3R5cGUuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JdGVyYXRvclByb3RvdHlwZS5oCShy
ZXZpc2lvbiAyODYwMTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JdGVyYXRv
clByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw3ICszOSw3IEBAIHB1YmxpYzoKICAg
ICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAg
IFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEl0ZXJhdG9yUHJvdG90eXBlLCBC
YXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1
cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgSXRlcmF0b3JQ
cm90b3R5cGUqIGNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0
cnVjdHVyZSogc3RydWN0dXJlKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNBcnJheS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNBcnJheS5jcHAJKHJldmlzaW9uIDI4NjAxMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTQXJyYXkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Niw3ICs1Niw3IEBAIEpTQXJy
YXkqIEpTQXJyYXk6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQKICAgICAgICAgICAgIHx8IGhhc0Nv
bnRpZ3VvdXMoaW5kZXhpbmdUeXBlKSk7CiAKICAgICAgICAgdW5zaWduZWQgdmVjdG9yTGVuZ3Ro
ID0gQnV0dGVyZmx5OjpvcHRpbWFsQ29udGlndW91c1ZlY3Rvckxlbmd0aChzdHJ1Y3R1cmUsIGlu
aXRpYWxMZW5ndGgpOwotICAgICAgICB2b2lkKiB0ZW1wID0gdm0uanNWYWx1ZUdpZ2FjYWdlQXV4
aWxpYXJ5U3BhY2UuYWxsb2NhdGVOb25WaXJ0dWFsKAorICAgICAgICB2b2lkKiB0ZW1wID0gdm0u
anNWYWx1ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UoKS5hbGxvY2F0ZU5vblZpcnR1YWwoCiAgICAg
ICAgICAgICB2bSwKICAgICAgICAgICAgIEJ1dHRlcmZseTo6dG90YWxTaXplKDAsIG91dE9mTGlu
ZVN0b3JhZ2UsIHRydWUsIHZlY3Rvckxlbmd0aCAqIHNpemVvZihFbmNvZGVkSlNWYWx1ZSkpLAog
ICAgICAgICAgICAgZGVmZXJyYWxDb250ZXh0LCBBbGxvY2F0aW9uRmFpbHVyZU1vZGU6OlJldHVy
bk51bGwpOwpAQCAtNzgsNyArNzgsNyBAQCBKU0FycmF5KiBKU0FycmF5Ojp0cnlDcmVhdGVVbmlu
aXRpYWxpemVkCiAgICAgICAgICAgICB8fCBpbmRleGluZ1R5cGUgPT0gQXJyYXlXaXRoQXJyYXlT
dG9yYWdlKTsKICAgICAgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBpbmRleEJpYXMgPSAw
OwogICAgICAgICB1bnNpZ25lZCB2ZWN0b3JMZW5ndGggPSBBcnJheVN0b3JhZ2U6Om9wdGltYWxW
ZWN0b3JMZW5ndGgoaW5kZXhCaWFzLCBzdHJ1Y3R1cmUsIGluaXRpYWxMZW5ndGgpOwotICAgICAg
ICB2b2lkKiB0ZW1wID0gdm0uanNWYWx1ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UuYWxsb2NhdGVO
b25WaXJ0dWFsKAorICAgICAgICB2b2lkKiB0ZW1wID0gdm0uanNWYWx1ZUdpZ2FjYWdlQXV4aWxp
YXJ5U3BhY2UoKS5hbGxvY2F0ZU5vblZpcnR1YWwoCiAgICAgICAgICAgICB2bSwKICAgICAgICAg
ICAgIEJ1dHRlcmZseTo6dG90YWxTaXplKGluZGV4Qmlhcywgb3V0T2ZMaW5lU3RvcmFnZSwgdHJ1
ZSwgQXJyYXlTdG9yYWdlOjpzaXplRm9yKHZlY3Rvckxlbmd0aCkpLAogICAgICAgICAgICAgZGVm
ZXJyYWxDb250ZXh0LCBBbGxvY2F0aW9uRmFpbHVyZU1vZGU6OlJldHVybk51bGwpOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuaAkocmV2aXNpb24gMjg2MDExKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5oCSh3b3JraW5nIGNvcHkp
CkBAIC01MSw3ICs1MSw3IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlw
ZSwgU3Vic3BhY2VBY2Nlc3M+CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihW
TSYgdm0pCiAgICAgewotICAgICAgICByZXR1cm4gJnZtLmFycmF5U3BhY2U7CisgICAgICAgIHJl
dHVybiAmdm0uYXJyYXlTcGFjZSgpOwogICAgIH0KICAgICAgICAgCiBwcm90ZWN0ZWQ6CkBAIC0y
NDQsNyArMjQ0LDcgQEAgaW5saW5lIEpTQXJyYXkqIEpTQXJyYXk6OnRyeUNyZWF0ZShWTSYgdgog
ICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICAgICAgdW5zaWduZWQgdmVjdG9yTGVu
Z3RoID0gQnV0dGVyZmx5OjpvcHRpbWFsQ29udGlndW91c1ZlY3Rvckxlbmd0aChzdHJ1Y3R1cmUs
IHZlY3Rvckxlbmd0aEhpbnQpOwotICAgICAgICB2b2lkKiB0ZW1wID0gdm0uanNWYWx1ZUdpZ2Fj
YWdlQXV4aWxpYXJ5U3BhY2UuYWxsb2NhdGVOb25WaXJ0dWFsKAorICAgICAgICB2b2lkKiB0ZW1w
ID0gdm0uanNWYWx1ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UoKS5hbGxvY2F0ZU5vblZpcnR1YWwo
CiAgICAgICAgICAgICB2bSwKICAgICAgICAgICAgIEJ1dHRlcmZseTo6dG90YWxTaXplKDAsIG91
dE9mTGluZVN0b3JhZ2UsIHRydWUsIHZlY3Rvckxlbmd0aCAqIHNpemVvZihFbmNvZGVkSlNWYWx1
ZSkpLAogICAgICAgICAgICAgbnVsbHB0ciwgQWxsb2NhdGlvbkZhaWx1cmVNb2RlOjpSZXR1cm5O
dWxsKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJQ
cm90b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0FycmF5QnVmZmVyUHJvdG90eXBlLmgJKHJldmlzaW9uIDI4NjAxMSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJQcm90b3R5cGUuaAkod29ya2luZyBjb3B5
KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTYgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMjEgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCkBAIC0zNyw3ICszNyw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1
YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQ
QUNFX1NIQVJBQkxFKEpTQXJyYXlCdWZmZXJQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1
cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RT
cGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBKU0FycmF5QnVmZmVyUHJvdG90eXBlKiBjcmVh
dGUoVk0mLCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIEFycmF5QnVmZmVyU2hhcmluZ01v
ZGUgPSBBcnJheUJ1ZmZlclNoYXJpbmdNb2RlOjpEZWZhdWx0KTsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyVmlldy5jcHAJKHJldmlz
aW9uIDI4NjAxMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZm
ZXJWaWV3LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjQsNyArNjQsNyBAQCBKU0FycmF5QnVmZmVy
Vmlldzo6Q29uc3RydWN0aW9uQ29udGV4dDo6CiAgICAgICAgIC8vIEF0dGVtcHQgR0MgYWxsb2Nh
dGlvbi4KICAgICAgICAgdm9pZCogdGVtcDsKICAgICAgICAgc2l6ZV90IHNpemUgPSBzaXplT2Yo
bGVuZ3RoLCBlbGVtZW50U2l6ZSk7Ci0gICAgICAgIHRlbXAgPSB2bS5wcmltaXRpdmVHaWdhY2Fn
ZUF1eGlsaWFyeVNwYWNlLmFsbG9jYXRlTm9uVmlydHVhbCh2bSwgc2l6ZSwgbnVsbHB0ciwgQWxs
b2NhdGlvbkZhaWx1cmVNb2RlOjpSZXR1cm5OdWxsKTsKKyAgICAgICAgdGVtcCA9IHZtLnByaW1p
dGl2ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UoKS5hbGxvY2F0ZU5vblZpcnR1YWwodm0sIHNpemUs
IG51bGxwdHIsIEFsbG9jYXRpb25GYWlsdXJlTW9kZTo6UmV0dXJuTnVsbCk7CiAgICAgICAgIGlm
ICghdGVtcCkKICAgICAgICAgICAgIHJldHVybjsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNCaWdJbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTQmlnSW50LmNwcAkocmV2aXNpb24gMjg2MDExKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCaWdJbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTcs
NyArMTE3LDcgQEAgaW5saW5lIEpTQmlnSW50KiBKU0JpZ0ludDo6Y3JlYXRlV2l0aExlbgogICAg
IH0KIAogICAgIEFTU0VSVChsZW5ndGggPD0gbWF4TGVuZ3RoKTsKLSAgICB2b2lkKiBkYXRhID0g
dm0ucHJpbWl0aXZlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZS5hbGxvY2F0ZU5vblZpcnR1YWwodm0s
IGxlbmd0aCAqIHNpemVvZihEaWdpdCksIG51bGxwdHIsIEFsbG9jYXRpb25GYWlsdXJlTW9kZTo6
UmV0dXJuTnVsbCk7CisgICAgdm9pZCogZGF0YSA9IHZtLnByaW1pdGl2ZUdpZ2FjYWdlQXV4aWxp
YXJ5U3BhY2UoKS5hbGxvY2F0ZU5vblZpcnR1YWwodm0sIGxlbmd0aCAqIHNpemVvZihEaWdpdCks
IG51bGxwdHIsIEFsbG9jYXRpb25GYWlsdXJlTW9kZTo6UmV0dXJuTnVsbCk7CiAgICAgaWYgKFVO
TElLRUxZKCFkYXRhKSkgewogICAgICAgICBpZiAobnVsbE9yR2xvYmFsT2JqZWN0Rm9yT09NKSB7
CiAgICAgICAgICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JpZ0ludC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQmlnSW50LmgJKHJldmlzaW9uIDI4NjAx
MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQmlnSW50LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTU2LDcgKzU2LDcgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENl
bGxUeXBlLCBTdWJzcGFjZUFjY2Vzcz4KICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNl
Rm9yKFZNJiB2bSkKICAgICB7Ci0gICAgICAgIHJldHVybiAmdm0uYmlnSW50U3BhY2U7CisgICAg
ICAgIHJldHVybiAmdm0uYmlnSW50U3BhY2UoKTsKICAgICB9CiAKICAgICBlbnVtIGNsYXNzIElu
aXRpYWxpemF0aW9uVHlwZSB7IE5vbmUsIFdpdGhaZXJvIH07CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0NhbGxlZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTQ2FsbGVlLmgJKHJldmlzaW9uIDI4NjAxMSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2FsbGVlLmgJKHdvcmtpbmcgY29weSkKQEAgLTUwLDcg
KzUwLDcgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlLCBTdWJzcGFj
ZUFjY2Vzcz4KICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAg
ICB7Ci0gICAgICAgIHJldHVybiAmdm0uY2FsbGVlU3BhY2U7CisgICAgICAgIHJldHVybiAmdm0u
Y2FsbGVlU3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgSlNDYWxsZWUqIGNyZWF0ZShWTSYg
dm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTU2NvcGUqIHNjb3BlKQpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRhVmlld1Byb3RvdHlwZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0YVZpZXdQcm90b3R5
cGUuaAkocmV2aXNpb24gMjg2MDExKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNEYXRhVmlld1Byb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzgsNyArMzgsNyBAQCBw
dWJsaWM6CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAg
ewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU0RhdGFWaWV3
UHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOwor
ICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0
aWMgSlNEYXRhVmlld1Byb3RvdHlwZSogY3JlYXRlKFZNJiwgU3RydWN0dXJlKik7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Rlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxs
VHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNE
ZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuY3BwCShyZXZpc2lvbiAyODYwMTEpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Rlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxs
VHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDE3LTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDE3LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00OCwxMiArNDgsMTIgQEAgSlNEZXN0cnVjdGli
bGVPYmplY3RIZWFwQ2VsbFR5cGU6On5KU0RlcwogewogfQogCi12b2lkIEpTRGVzdHJ1Y3RpYmxl
T2JqZWN0SGVhcENlbGxUeXBlOjpmaW5pc2hTd2VlcChNYXJrZWRCbG9jazo6SGFuZGxlJiBoYW5k
bGUsIEZyZWVMaXN0KiBmcmVlTGlzdCkKK3ZvaWQgSlNEZXN0cnVjdGlibGVPYmplY3RIZWFwQ2Vs
bFR5cGU6OmZpbmlzaFN3ZWVwKE1hcmtlZEJsb2NrOjpIYW5kbGUmIGhhbmRsZSwgRnJlZUxpc3Qq
IGZyZWVMaXN0KSBjb25zdAogewogICAgIGhhbmRsZS5maW5pc2hTd2VlcEtub3dpbmdIZWFwQ2Vs
bFR5cGUoZnJlZUxpc3QsIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0RGVzdHJveUZ1bmMoKSk7CiB9CiAK
LXZvaWQgSlNEZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGU6OmRlc3Ryb3koVk0mIHZtLCBK
U0NlbGwqIGNlbGwpCit2b2lkIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlOjpkZXN0
cm95KFZNJiB2bSwgSlNDZWxsKiBjZWxsKSBjb25zdAogewogICAgIEpTRGVzdHJ1Y3RpYmxlT2Jq
ZWN0RGVzdHJveUZ1bmMoKSh2bSwgY2VsbCk7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0Rlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGVzdHJ1Y3RpYmxlT2JqZWN0SGVh
cENlbGxUeXBlLmgJKHJldmlzaW9uIDI4NjAxMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTRGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmgJKHdvcmtpbmcgY29weSkK
QEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNy0yMDIxIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAt
MzQsOCArMzQsOCBAQCBwdWJsaWM6CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgSlNEZXN0cnVjdGli
bGVPYmplY3RIZWFwQ2VsbFR5cGUoKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSB+SlNEZXN0cnVj
dGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSBmaW5hbDsKICAgICAKLSAgICB2b2lkIGZpbmlzaFN3
ZWVwKE1hcmtlZEJsb2NrOjpIYW5kbGUmLCBGcmVlTGlzdCopIGZpbmFsOwotICAgIHZvaWQgZGVz
dHJveShWTSYsIEpTQ2VsbCopIGZpbmFsOworICAgIHZvaWQgZmluaXNoU3dlZXAoTWFya2VkQmxv
Y2s6OkhhbmRsZSYsIEZyZWVMaXN0KikgY29uc3QgZmluYWw7CisgICAgdm9pZCBkZXN0cm95KFZN
JiwgSlNDZWxsKikgY29uc3QgZmluYWw7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmgJKHJldmlzaW9uIDI4
NjAxMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uaAkod29y
a2luZyBjb3B5KQpAQCAtNjYsNyArNjYsNyBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5h
bWUgQ2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNzPgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vi
c3BhY2VGb3IoVk0mIHZtKQogICAgIHsKLSAgICAgICAgcmV0dXJuICZ2bS5mdW5jdGlvblNwYWNl
OworICAgICAgICByZXR1cm4gJnZtLmZ1bmN0aW9uU3BhY2UoKTsKICAgICB9CiAgICAgCiAgICAg
dHlwZWRlZiBKU0NhbGxlZSBCYXNlOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvdHlw
ZS5oCShyZXZpc2lvbiAyODYwMTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0dlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM4LDcgKzM4
LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZt
KQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNH
ZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZt
LnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgp
OwogICAgIH0KIAogICAgIHN0YXRpYyBKU0dlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZSog
Y3JlYXRlKApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxMZXhp
Y2FsRW52aXJvbm1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0dsb2JhbExleGljYWxFbnZpcm9ubWVudC5oCShyZXZpc2lvbiAyODYwMTEpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbExleGljYWxFbnZpcm9ubWVudC5o
CSh3b3JraW5nIGNvcHkpCkBAIC0zOCw3ICszOCw3IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBDZWxsVHlwZSwgU3Vic3BhY2VBY2Nlc3MgbW9kZT4KICAgICBzdGF0aWMgSXNvU3Vi
c3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7Ci0gICAgICAgIHJldHVybiAmdm0uZ2xv
YmFsTGV4aWNhbEVudmlyb25tZW50U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0uZ2xvYmFsTGV4
aWNhbEVudmlyb25tZW50U3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgSlNHbG9iYWxMZXhp
Y2FsRW52aXJvbm1lbnQqIGNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBKU1Nj
b3BlKiBwYXJlbnRTY29wZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
SW1tdXRhYmxlQnV0dGVyZmx5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNJbW11dGFibGVCdXR0ZXJmbHkuaAkocmV2aXNpb24gMjg2MDExKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNJbW11dGFibGVCdXR0ZXJmbHkuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMTUzLDcgKzE1Myw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgQ29tcGxldGVT
dWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAgICAgLy8gV2UgYWxsb2Nh
dGUgb3V0IG9mIHRoZSBKU1ZhbHVlIGdpZ2FjYWdlIGFzIG90aGVyIGNvZGUgZXhwZWN0cyBhbGwg
YnV0dGVyZmxpZXMgdG8gbGl2ZSB0aGVyZS4KLSAgICAgICAgcmV0dXJuICZ2bS5pbW11dGFibGVC
dXR0ZXJmbHlKU1ZhbHVlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2
bS5pbW11dGFibGVCdXR0ZXJmbHlKU1ZhbHVlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZSgpOwogICAg
IH0KIAogICAgIC8vIE9ubHkgY2FsbCB0aGlzIGlmIHlvdSBqdXN0IGFsbG9jYXRlZCB0aGlzIGJ1
dHRlcmZseS4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTGV4aWNhbEVu
dmlyb25tZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNMZXhpY2FsRW52aXJvbm1lbnQuaAkocmV2aXNpb24gMjg2MDExKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNMZXhpY2FsRW52aXJvbm1lbnQuaAkod29ya2luZyBjb3B5KQpA
QCAtNDQsNyArNDQsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIENvbXBsZXRlU3Vic3BhY2UqIHN1
YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAgIHN0YXRpY19hc3NlcnQoIUNlbGxUeXBl
OjpuZWVkc0Rlc3RydWN0aW9uLCAiIik7Ci0gICAgICAgIHJldHVybiAmdm0udmFyaWFibGVTaXpl
ZENlbGxTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS52YXJpYWJsZVNpemVkQ2VsbFNwYWNlKCk7
CiAgICAgfQogCiAgICAgdXNpbmcgQmFzZSA9IEpTU3ltYm9sVGFibGVPYmplY3Q7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZUxvYWRlci5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlTG9hZGVyLmgJKHJldmlz
aW9uIDI4NjAxMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlTG9h
ZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDcgKzQ0LDcgQEAgcHVibGljOgogICAgIHN0YXRp
YyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElD
X0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNNb2R1bGVMb2FkZXIsIEJhc2UpOwotICAg
ICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxh
aW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIGVudW0gU3RhdHVzIHsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT05PYmplY3QuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09OT2JqZWN0LmgJKHJldmlzaW9uIDI4NjAxMSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT05PYmplY3QuaAkod29ya2luZyBj
b3B5KQpAQCAtMzgsNyArMzgsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBz
dWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJT
UEFDRV9TSEFSQUJMRShKU09OT2JqZWN0LCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFp
bk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAg
ICB9CiAKICAgICBzdGF0aWMgSlNPTk9iamVjdCogY3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdElu
bGluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09i
amVjdElubGluZXMuaAkocmV2aXNpb24gMjg2MDExKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNPYmplY3RJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTQxLDcgKzQxLDcg
QEAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUsIFN1YnNwYWNlQWNjZQogQ29tcGxldGVTdWJz
cGFjZSogSlNGaW5hbE9iamVjdDo6c3Vic3BhY2VGb3IoVk0mIHZtKQogewogICAgIHN0YXRpY19h
c3NlcnQoIUNlbGxUeXBlOjpuZWVkc0Rlc3RydWN0aW9uKTsKLSAgICByZXR1cm4gJnZtLmNlbGxT
cGFjZTsKKyAgICByZXR1cm4gJnZtLmNlbGxTcGFjZSgpOwogfQogCiAvLyBodHRwczovL3RjMzku
ZXMvZWNtYTI2Mi8jc2VjLWNyZWF0ZWxpc3Rmcm9tYXJyYXlsaWtlCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2UuaAkocmV2aXNpb24gMjg2MDExKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9taXNlLmgJKHdvcmtpbmcgY29weSkKQEAg
LTM3LDcgKzM3LDcgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlLCBT
dWJzcGFjZUFjY2VzcyBtb2RlPgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3Io
Vk0mIHZtKQogICAgIHsKLSAgICAgICAgcmV0dXJuICZ2bS5wcm9taXNlU3BhY2U7CisgICAgICAg
IHJldHVybiAmdm0ucHJvbWlzZVNwYWNlKCk7CiAgICAgfQogCiAgICAgSlNfRVhQT1JUX1BSSVZB
VEUgc3RhdGljIEpTUHJvbWlzZSogY3JlYXRlKFZNJiwgU3RydWN0dXJlKik7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2VQcm90b3R5cGUuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2VQcm90b3R5cGUuaAko
cmV2aXNpb24gMjg2MDExKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9t
aXNlUHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDEzLTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDEzLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zOCw3ICszOCw3IEBAIHB1YmxpYzoK
ICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAg
ICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTUHJvbWlzZVByb3RvdHlw
ZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAg
cmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIEpTUHJv
bWlzZVByb3RvdHlwZSogY3JlYXRlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqKTsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lRW51bWVy
YXRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQ
cm9wZXJ0eU5hbWVFbnVtZXJhdG9yLmNwcAkocmV2aXNpb24gMjg2MDExKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMzgsNyArMzgsNyBAQCBKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3IqIEpTUHJv
cGVydHlOYW1lCiAgICAgdW5zaWduZWQgcHJvcGVydHlOYW1lc0J1ZmZlclNpemVJbkJ5dGVzID0g
Q2hlY2tlZDx1bnNpZ25lZD4ocHJvcGVydHlOYW1lc1NpemUpICogc2l6ZW9mKFdyaXRlQmFycmll
cjxKU1N0cmluZz4pOwogICAgIFdyaXRlQmFycmllcjxKU1N0cmluZz4qIHByb3BlcnR5TmFtZXNC
dWZmZXIgPSBudWxscHRyOwogICAgIGlmIChwcm9wZXJ0eU5hbWVzQnVmZmVyU2l6ZUluQnl0ZXMp
IHsKLSAgICAgICAgcHJvcGVydHlOYW1lc0J1ZmZlciA9IHN0YXRpY19jYXN0PFdyaXRlQmFycmll
cjxKU1N0cmluZz4qPih2bS5qc1ZhbHVlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZS5hbGxvY2F0ZU5v
blZpcnR1YWwodm0sIHByb3BlcnR5TmFtZXNCdWZmZXJTaXplSW5CeXRlcywgbnVsbHB0ciwgQWxs
b2NhdGlvbkZhaWx1cmVNb2RlOjpBc3NlcnQpKTsKKyAgICAgICAgcHJvcGVydHlOYW1lc0J1ZmZl
ciA9IHN0YXRpY19jYXN0PFdyaXRlQmFycmllcjxKU1N0cmluZz4qPih2bS5qc1ZhbHVlR2lnYWNh
Z2VBdXhpbGlhcnlTcGFjZSgpLmFsbG9jYXRlTm9uVmlydHVhbCh2bSwgcHJvcGVydHlOYW1lc0J1
ZmZlclNpemVJbkJ5dGVzLCBudWxscHRyLCBBbGxvY2F0aW9uRmFpbHVyZU1vZGU6OkFzc2VydCkp
OwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcHJvcGVydHlOYW1lc1NpemU7ICsr
aSkKICAgICAgICAgICAgIHByb3BlcnR5TmFtZXNCdWZmZXJbaV0uY2xlYXIoKTsKICAgICB9Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUVudW1lcmF0
b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3Bl
cnR5TmFtZUVudW1lcmF0b3IuaAkocmV2aXNpb24gMjg2MDExKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yLmgJKHdvcmtpbmcgY29weSkK
QEAgLTUxLDcgKzUxLDcgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBl
LCBTdWJzcGFjZUFjY2VzcyBtb2RlPgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VG
b3IoVk0mIHZtKQogICAgIHsKLSAgICAgICAgcmV0dXJuICZ2bS5wcm9wZXJ0eU5hbWVFbnVtZXJh
dG9yU3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucHJvcGVydHlOYW1lRW51bWVyYXRvclNwYWNl
KCk7CiAgICAgfQogCiAgICAgc3RhdGljIEpTUHJvcGVydHlOYW1lRW51bWVyYXRvciogY3JlYXRl
KFZNJiwgU3RydWN0dXJlKiwgdWludDMyX3QsIHVpbnQzMl90LCBQcm9wZXJ0eU5hbWVBcnJheSYm
KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJveHkuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3h5LmgJKHJldmlzaW9u
IDI4NjAxMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJveHkuaAkod29y
a2luZyBjb3B5KQpAQCAtMzgsNyArMzgsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIElzb1N1YnNw
YWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewogICAgICAgICBzdGF0aWNfYXNzZXJ0KHNp
emVvZihDZWxsVHlwZSkgPT0gc2l6ZW9mKEpTUHJveHkpKTsKLSAgICAgICAgcmV0dXJuICZ2bS5q
c1Byb3h5U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0uanNQcm94eVNwYWNlKCk7CiAgICAgfQog
CiAgICAgc3RhdGljIEpTUHJveHkqIGNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJl
LCBKU09iamVjdCogdGFyZ2V0KQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNTdHJpbmcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U1N0cmluZy5oCShyZXZpc2lvbiAyODYwMTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU1N0cmluZy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTEsNyArMTExLDcgQEAgcHVibGlj
OgogICAgIHRlbXBsYXRlPHR5cGVuYW1lLCBTdWJzcGFjZUFjY2Vzcz4KICAgICBzdGF0aWMgSXNv
U3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7Ci0gICAgICAgIHJldHVybiAmdm0u
c3RyaW5nU3BhY2U7CisgICAgICAgIHJldHVybiAmdm0uc3RyaW5nU3BhY2UoKTsKICAgICB9CiAg
ICAgCiAgICAgLy8gV2UgZW1wbG95IG92ZXJmbG93IGNoZWNrcyBpbiBtYW55IHBsYWNlcyB3aXRo
IHRoZSBhc3N1bXB0aW9uIHRoYXQgTWF4TGVuZ3RoCkBAIC0yNzAsNyArMjcwLDcgQEAgcHVibGlj
OgogICAgIHRlbXBsYXRlPHR5cGVuYW1lLCBTdWJzcGFjZUFjY2Vzcz4KICAgICBzdGF0aWMgSXNv
U3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7Ci0gICAgICAgIHJldHVybiAmdm0u
cm9wZVN0cmluZ1NwYWNlOworICAgICAgICByZXR1cm4gJnZtLnJvcGVTdHJpbmdTcGFjZSgpOwog
ICAgIH0KIAogICAgIC8vIFdlIHVzZSBsb3dlciAzYml0cyBvZiBmaWJlcjAgZm9yIGZsYWdzLiBU
aGVzZSBiaXRzIGFyZSB1c2FibGUgZHVlIHRvIGFsaWdubWVudCwgYW5kIGl0IGlzIE9LIGV2ZW4g
aW4gMzJiaXQgYXJjaGl0ZWN0dXJlLgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZWRBcnJheVZpZXdQcm90b3R5cGUuaAkocmV2aXNpb24g
Mjg2MDExKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlZEFycmF5Vmll
d1Byb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHly
aWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMTUtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM3LDcgKzM3LDcgQEAgcHVibGljOgogICAgIHN0
YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAgICAgU1RB
VElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUeXBlZEFycmF5Vmlld1Byb3RvdHlw
ZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAg
cmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIEpTVHlw
ZWRBcnJheVZpZXdQcm90b3R5cGUqIGNyZWF0ZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0
dXJlKik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXBJdGVyYXRvclBy
b3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01h
cEl0ZXJhdG9yUHJvdG90eXBlLmgJKHJldmlzaW9uIDI4NjAxMSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL01hcEl0ZXJhdG9yUHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAg
LTM3LDcgKzM3LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VG
b3IoVk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hB
UkFCTEUoTWFwSXRlcmF0b3JQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBs
YWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwog
ICAgIH0KIAogICAgIHN0YXRpYyBNYXBJdGVyYXRvclByb3RvdHlwZSogY3JlYXRlKFZNJiB2bSwg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXBQcm90b3R5cGUuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXBQcm90b3R5cGUuaAkocmV2aXNp
b24gMjg2MDExKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFwUHJvdG90eXBl
LmgJKHdvcmtpbmcgY29weSkKQEAgLTM3LDcgKzM3LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJ
c29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FT
U0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoTWFwUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAg
cmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2Jq
ZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIFN0cnVj
dHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBIYXNTdGF0aWNQcm9wZXJ0eVRhYmxl
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWF0aE9iamVjdC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hdGhPYmplY3QuaAkocmV2
aXNpb24gMjg2MDExKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWF0aE9iamVj
dC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw3ICszMiw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMg
SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19B
U1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKE1hdGhPYmplY3QsIEJhc2UpOwotICAgICAgICBy
ZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmpl
Y3RTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBNYXRoT2JqZWN0KiBjcmVhdGUoVk0mIHZt
LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUVycm9yUHJvdG90eXBlLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRXJyb3JQ
cm90b3R5cGUuaAkocmV2aXNpb24gMjg2MDExKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvTmF0aXZlRXJyb3JQcm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzQsNyArMzQs
NyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0p
CiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShOYXRp
dmVFcnJvclByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RT
cGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAg
ICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9OYXRpdmVFeGVjdXRhYmxlLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRXhlY3V0YWJsZS5oCShyZXZpc2lvbiAyODYw
MTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OYXRpdmVFeGVjdXRhYmxlLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA5
LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDA5LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCkBAIC00Myw3ICs0Myw3IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBDZWxsVHlwZSwgU3Vic3BhY2VBY2Nlc3M+CiAgICAgc3RhdGljIElzb1N1YnNwYWNl
KiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewotICAgICAgICByZXR1cm4gJnZtLm5hdGl2ZUV4
ZWN1dGFibGVTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5uYXRpdmVFeGVjdXRhYmxlU3BhY2Uo
KTsKICAgICB9CiAKICAgICBDb2RlQmxvY2tIYXNoIGhhc2hGb3IoQ29kZVNwZWNpYWxpemF0aW9u
S2luZCkgY29uc3Q7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdW1iZXJP
YmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdW1i
ZXJPYmplY3QuaAkocmV2aXNpb24gMjg2MDExKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvTnVtYmVyT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTM1LDcgKzM1LDcgQEAgcHVi
bGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lLCBTdWJzcGFjZUFjY2VzcyBtb2RlPgogICAgIHN0
YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKLSAgICAgICAgcmV0
dXJuICZ2bS5udW1iZXJPYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5udW1iZXJPYmpl
Y3RTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBOdW1iZXJPYmplY3QqIGNyZWF0ZShWTSYg
dm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvT2JqZWN0UHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvT2JqZWN0UHJvdG90eXBlLmgJKHJldmlzaW9uIDI4NjAxMSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdFByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDYgKzEsNiBAQAogLyoKICAqICBDb3B5cmlnaHQgKEMpIDE5OTktMjAwMCBIYXJyaSBQ
b3J0ZW4gKHBvcnRlbkBrZGUub3JnKQotICogIENvcHlyaWdodCAoQykgMjAwOC0yMDE5IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqICBDb3B5cmlnaHQgKEMpIDIwMDgtMjAyMSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogIFRoaXMgbGlicmFyeSBpcyBm
cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqICBtb2RpZnkg
aXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCkBAIC0z
Myw3ICszMyw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9y
KFZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJB
QkxFKE9iamVjdFByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmpl
Y3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQog
CiAgICAgc3RhdGljIE9iamVjdFByb3RvdHlwZSogY3JlYXRlKFZNJiwgSlNHbG9iYWxPYmplY3Qq
LCBTdHJ1Y3R1cmUqKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb2dy
YW1FeGVjdXRhYmxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvUHJvZ3JhbUV4ZWN1dGFibGUuaAkocmV2aXNpb24gMjg2MDExKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvUHJvZ3JhbUV4ZWN1dGFibGUuaAkod29ya2luZyBjb3B5KQpAQCAt
MzksNyArMzksNyBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUsIFN1
YnNwYWNlQWNjZXNzPgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZt
KQogICAgIHsKLSAgICAgICAgcmV0dXJuICZ2bS5wcm9ncmFtRXhlY3V0YWJsZVNwYWNlLnNwYWNl
OworICAgICAgICByZXR1cm4gJnZtLnByb2dyYW1FeGVjdXRhYmxlU3BhY2UoKS5zcGFjZTsKICAg
ICB9CiAKICAgICBzdGF0aWMgUHJvZ3JhbUV4ZWN1dGFibGUqIGNyZWF0ZShKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UpCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eU1hcEhhc2hUYWJsZS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5TWFwSGFzaFRhYmxlLmgJ
KHJldmlzaW9uIDI4NjAxMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3Bl
cnR5TWFwSGFzaFRhYmxlLmgJKG5vbmV4aXN0ZW50KQpAQCAtMSw1ODcgKzAsMCBAQAotLyoKLSAq
ICBDb3B5cmlnaHQgKEMpIDIwMDQtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0gKgotICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJp
YnV0ZSBpdCBhbmQvb3IKLSAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICogIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBG
cmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogIHZlcnNpb24gMiBvZiB0aGUgTGlj
ZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiAgVGhp
cyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2Vm
dWwsCi0gKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxp
ZWQgd2FycmFudHkgb2YKLSAqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICogIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMg
TGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2
ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gKiAg
YWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5v
dCwgd3JpdGUgdG8KLSAqICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBG
cmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICogIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwg
VVNBLgotICoKLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2luY2x1ZGUgIkpTRXhwb3J0TWFjcm9z
LmgiCi0jaW5jbHVkZSAiUHJvcGVydHlPZmZzZXQuaCIKLSNpbmNsdWRlICJTdHJ1Y3R1cmUuaCIK
LSNpbmNsdWRlICJXcml0ZUJhcnJpZXIuaCIKLSNpbmNsdWRlIDx3dGYvSGFzaFRhYmxlLmg+Ci0j
aW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KLSNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+
Ci0jaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21TdHJpbmdJ
bXBsLmg+Ci0KLQotI2RlZmluZSBEVU1QX1BST1BFUlRZTUFQX1NUQVRTIDAKLSNkZWZpbmUgRFVN
UF9QUk9QRVJUWU1BUF9DT0xMSVNJT05TIDAKLQotI2RlZmluZSBQUk9QRVJUWV9NQVBfREVMRVRF
RF9FTlRSWV9LRVkgKChVbmlxdWVkU3RyaW5nSW1wbCopMSkKLQotbmFtZXNwYWNlIEpTQyB7Ci0K
LURFQ0xBUkVfQUxMT0NBVE9SX1dJVEhfSEVBUF9JREVOVElGSUVSKFByb3BlcnR5VGFibGUpOwot
Ci0jaWYgRFVNUF9QUk9QRVJUWU1BUF9TVEFUUwotCi1zdHJ1Y3QgUHJvcGVydHlNYXBIYXNoVGFi
bGVTdGF0cyB7Ci0gICAgc3RkOjphdG9taWM8dW5zaWduZWQ+IG51bUZpbmRzOwotICAgIHN0ZDo6
YXRvbWljPHVuc2lnbmVkPiBudW1Db2xsaXNpb25zOwotICAgIHN0ZDo6YXRvbWljPHVuc2lnbmVk
PiBudW1Mb29rdXBzOwotICAgIHN0ZDo6YXRvbWljPHVuc2lnbmVkPiBudW1Mb29rdXBQcm9iaW5n
OwotICAgIHN0ZDo6YXRvbWljPHVuc2lnbmVkPiBudW1BZGRzOwotICAgIHN0ZDo6YXRvbWljPHVu
c2lnbmVkPiBudW1SZW1vdmVzOwotICAgIHN0ZDo6YXRvbWljPHVuc2lnbmVkPiBudW1SZWhhc2hl
czsKLSAgICBzdGQ6OmF0b21pYzx1bnNpZ25lZD4gbnVtUmVpbnNlcnRzOwotfTsKLQotSlNfRVhQ
T1JUX1BSSVZBVEUgZXh0ZXJuIFByb3BlcnR5TWFwSGFzaFRhYmxlU3RhdHMqIHByb3BlcnR5TWFw
SGFzaFRhYmxlU3RhdHM7Ci0KLSNlbmRpZgotCi1pbmxpbmUgYm9vbCBpc1Bvd2VyT2YyKHVuc2ln
bmVkIHYpCi17Ci0gICAgcmV0dXJuIGhhc09uZUJpdFNldCh2KTsKLX0KLQotaW5saW5lIHVuc2ln
bmVkIG5leHRQb3dlck9mMih1bnNpZ25lZCB2KQotewotICAgIC8vIFRha2VuIGZyb20gaHR0cDov
L3d3dy5jcy51dGsuZWR1L352b3NlL2Mtc3R1ZmYvYml0aGFja3MuaHRtbAotICAgIC8vIERldmlz
ZWQgYnkgU2VhbiBBbmRlcnNvbiwgU2VwZW1iZXIgMTQsIDIwMDEKLQotICAgIHYtLTsKLSAgICB2
IHw9IHYgPj4gMTsKLSAgICB2IHw9IHYgPj4gMjsKLSAgICB2IHw9IHYgPj4gNDsKLSAgICB2IHw9
IHYgPj4gODsKLSAgICB2IHw9IHYgPj4gMTY7Ci0gICAgdisrOwotCi0gICAgcmV0dXJuIHY7Ci19
Ci0KLWNsYXNzIFByb3BlcnR5VGFibGUgZmluYWwgOiBwdWJsaWMgSlNDZWxsIHsKLQotICAgIC8v
IFRoaXMgaXMgdGhlIGltcGxlbWVudGF0aW9uIGZvciAnaXRlcmF0b3InIGFuZCAnY29uc3RfaXRl
cmF0b3InLAotICAgIC8vIHVzZWQgZm9yIGl0ZXJhdGluZyBvdmVyIHRoZSB0YWJsZSBpbiBpbnNl
cnRpb24gb3JkZXIuCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICBjbGFzcyBvcmRlcmVk
X2l0ZXJhdG9yIHsKLSAgICBwdWJsaWM6Ci0gICAgICAgIG9yZGVyZWRfaXRlcmF0b3I8VD4mIG9w
ZXJhdG9yKysoKQotICAgICAgICB7Ci0gICAgICAgICAgICBtX3ZhbHVlUHRyID0gc2tpcERlbGV0
ZWRFbnRyaWVzKG1fdmFsdWVQdHIgKyAxLCBtX2VuZFZhbHVlUHRyKTsKLSAgICAgICAgICAgIHJl
dHVybiAqdGhpczsKLSAgICAgICAgfQotCi0gICAgICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBv
cmRlcmVkX2l0ZXJhdG9yPFQ+JiBvdGhlcikKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJu
IG1fdmFsdWVQdHIgPT0gb3RoZXIubV92YWx1ZVB0cjsKLSAgICAgICAgfQotCi0gICAgICAgIGJv
b2wgb3BlcmF0b3IhPShjb25zdCBvcmRlcmVkX2l0ZXJhdG9yPFQ+JiBvdGhlcikKLSAgICAgICAg
ewotICAgICAgICAgICAgcmV0dXJuIG1fdmFsdWVQdHIgIT0gb3RoZXIubV92YWx1ZVB0cjsKLSAg
ICAgICAgfQotCi0gICAgICAgIFQmIG9wZXJhdG9yKigpCi0gICAgICAgIHsKLSAgICAgICAgICAg
IHJldHVybiAqbV92YWx1ZVB0cjsKLSAgICAgICAgfQotCi0gICAgICAgIFQqIG9wZXJhdG9yLT4o
KQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gbV92YWx1ZVB0cjsKLSAgICAgICAgfQot
Ci0gICAgICAgIG9yZGVyZWRfaXRlcmF0b3IoVCogdmFsdWVQdHIsIFQqIGVuZFZhbHVlUHRyKQot
ICAgICAgICAgICAgOiBtX3ZhbHVlUHRyKHZhbHVlUHRyKQotICAgICAgICAgICAgLCBtX2VuZFZh
bHVlUHRyKGVuZFZhbHVlUHRyKQotICAgICAgICB7Ci0gICAgICAgIH0KLQotICAgIHByaXZhdGU6
Ci0gICAgICAgIFQqIG1fdmFsdWVQdHI7Ci0gICAgICAgIFQqIG1fZW5kVmFsdWVQdHI7Ci0gICAg
fTsKLQotcHVibGljOgotICAgIHR5cGVkZWYgSlNDZWxsIEJhc2U7Ci0gICAgc3RhdGljIGNvbnN0
ZXhwciB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgU3Ry
dWN0dXJlSXNJbW1vcnRhbDsKLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlLCBTdWJz
cGFjZUFjY2Vzcz4KLSAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkK
LSAgICB7Ci0gICAgICAgIHJldHVybiAmdm0ucHJvcGVydHlUYWJsZVNwYWNlOwotICAgIH0KLQot
ICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBuZWVkc0Rlc3RydWN0aW9uID0gdHJ1ZTsKLSAgICBz
dGF0aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCopOwotICAgIERFQ0xBUkVfVklTSVRfQ0hJTERSRU47
Ci0KLSAgICBERUNMQVJFX0VYUE9SVF9JTkZPOwotCi0gICAgc3RhdGljIFN0cnVjdHVyZSogY3Jl
YXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1
ZSBwcm90b3R5cGUpCi0gICAgewotICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0s
IGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhDZWxsVHlwZSwgU3RydWN0dXJlRmxh
Z3MpLCBpbmZvKCkpOwotICAgIH0KLQotICAgIHR5cGVkZWYgVW5pcXVlZFN0cmluZ0ltcGwqIEtl
eVR5cGU7Ci0gICAgdHlwZWRlZiBQcm9wZXJ0eU1hcEVudHJ5IFZhbHVlVHlwZTsKLQotICAgIC8v
IFRoZSBpbiBvcmRlciBpdGVyYXRvciBwcm92aWRlcyBvdmVybG9hZGVkICogYW5kIC0+IHRvIGFj
Y2VzcyB0aGUgVmFsdWUgYXQgdGhlIGN1cnJlbnQgcG9zaXRpb24uCi0gICAgdHlwZWRlZiBvcmRl
cmVkX2l0ZXJhdG9yPFZhbHVlVHlwZT4gaXRlcmF0b3I7Ci0gICAgdHlwZWRlZiBvcmRlcmVkX2l0
ZXJhdG9yPGNvbnN0IFZhbHVlVHlwZT4gY29uc3RfaXRlcmF0b3I7Ci0KLSAgICAvLyBUaGUgZmlu
ZF9pdGVyYXRvciBpcyBhIHBhaXIgb2YgYSBwb2ludGVyIHRvIGEgVmFsdWUqIGFuIHRoZSBlbnRy
eSBpbiB0aGUgaW5kZXguCi0gICAgLy8gSWYgJ2ZpbmQnIGRvZXMgbm90IGZpbmQgYW4gZW50cnkg
dGhlbiBpdGVyLmZpcnN0IHdpbGwgYmUgMCwgYW5kIGl0ZXIuc2Vjb25kIHdpbGwKLSAgICAvLyBn
aXZlIHRoZSBwb2ludCBpbiBtX2luZGV4IHdoZXJlIGFuIGVudHJ5IHNob3VsZCBiZSBpbnNlcnRl
ZC4KLSAgICB0eXBlZGVmIHN0ZDo6cGFpcjxWYWx1ZVR5cGUqLCB1bnNpZ25lZD4gZmluZF9pdGVy
YXRvcjsKLQotICAgIC8vIENvbnN0cnVjdG9yIGlzIHBhc3NlZCBhbiBpbml0aWFsIGNhcGFjaXR5
LCBhIFByb3BlcnR5VGFibGUgdG8gY29weSwgb3IgYm90aC4KLSAgICBzdGF0aWMgUHJvcGVydHlU
YWJsZSogY3JlYXRlKFZNJiwgdW5zaWduZWQgaW5pdGlhbENhcGFjaXR5KTsKLSAgICBzdGF0aWMg
UHJvcGVydHlUYWJsZSogY2xvbmUoVk0mLCBjb25zdCBQcm9wZXJ0eVRhYmxlJik7Ci0gICAgc3Rh
dGljIFByb3BlcnR5VGFibGUqIGNsb25lKFZNJiwgdW5zaWduZWQgaW5pdGlhbENhcGFjaXR5LCBj
b25zdCBQcm9wZXJ0eVRhYmxlJik7Ci0gICAgflByb3BlcnR5VGFibGUoKTsKLQotICAgIC8vIE9y
ZGVyZWQgaXRlcmF0aW9uIG1ldGhvZHMuCi0gICAgaXRlcmF0b3IgYmVnaW4oKTsKLSAgICBpdGVy
YXRvciBlbmQoKTsKLSAgICBjb25zdF9pdGVyYXRvciBiZWdpbigpIGNvbnN0OwotICAgIGNvbnN0
X2l0ZXJhdG9yIGVuZCgpIGNvbnN0OwotCi0gICAgLy8gRmluZCBhIHZhbHVlIGluIHRoZSB0YWJs
ZS4KLSAgICBmaW5kX2l0ZXJhdG9yIGZpbmQoY29uc3QgS2V5VHlwZSYpOwotICAgIFZhbHVlVHlw
ZSogZ2V0KGNvbnN0IEtleVR5cGUmKTsKLSAgICAvLyBBZGQgYSB2YWx1ZSB0byB0aGUgdGFibGUK
LSAgICBzdGQ6OnBhaXI8ZmluZF9pdGVyYXRvciwgYm9vbD4gV0FSTl9VTlVTRURfUkVUVVJOIGFk
ZChWTSYsIGNvbnN0IFZhbHVlVHlwZSYgZW50cnkpOwotICAgIC8vIFJlbW92ZSBhIHZhbHVlIGZy
b20gdGhlIHRhYmxlLgotICAgIHZvaWQgcmVtb3ZlKFZNJiwgY29uc3QgZmluZF9pdGVyYXRvciYg
aXRlcik7Ci0gICAgdm9pZCByZW1vdmUoVk0mLCBjb25zdCBLZXlUeXBlJiBrZXkpOwotCi0gICAg
Ly8gUmV0dXJucyB0aGUgbnVtYmVyIG9mIHZhbHVlcyBpbiB0aGUgaGFzaHRhYmxlLgotICAgIHVu
c2lnbmVkIHNpemUoKSBjb25zdDsKLQotICAgIC8vIENoZWNrcyBpZiB0aGVyZSBhcmUgYW55IHZh
bHVlcyBpbiB0aGUgaGFzaHRhYmxlLgotICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0OwotCi0gICAg
Ly8gTnVtYmVyIG9mIHNsb3RzIGluIHRoZSBwcm9wZXJ0eSBzdG9yYWdlIGFycmF5IGluIHVzZSwg
aW5jbHVkZWQgZGVsZXRlZE9mZnNldHMuCi0gICAgdW5zaWduZWQgcHJvcGVydHlTdG9yYWdlU2l6
ZSgpIGNvbnN0OwotCi0gICAgLy8gVXNlZCB0byBtYWludGFpbiBhIGxpc3Qgb2YgdW51c2VkIGVu
dHJpZXMgaW4gdGhlIHByb3BlcnR5IHN0b3JhZ2UuCi0gICAgdm9pZCBjbGVhckRlbGV0ZWRPZmZz
ZXRzKCk7Ci0gICAgYm9vbCBoYXNEZWxldGVkT2Zmc2V0KCk7Ci0gICAgUHJvcGVydHlPZmZzZXQg
Z2V0RGVsZXRlZE9mZnNldCgpOwotICAgIHZvaWQgYWRkRGVsZXRlZE9mZnNldChQcm9wZXJ0eU9m
ZnNldCk7Ci0gICAgCi0gICAgUHJvcGVydHlPZmZzZXQgbmV4dE9mZnNldChQcm9wZXJ0eU9mZnNl
dCBpbmxpbmVDYXBhY2l0eSk7Ci0KLSAgICAvLyBDb3B5IHRoaXMgUHJvcGVydHlUYWJsZSwgZW5z
dXJpbmcgdGhlIGNvcHkgaGFzIGF0IGxlYXN0IHRoZSBjYXBhY2l0eSBwcm92aWRlZC4KLSAgICBQ
cm9wZXJ0eVRhYmxlKiBjb3B5KFZNJiwgdW5zaWduZWQgbmV3Q2FwYWNpdHkpOwotCi0jaWZuZGVm
IE5ERUJVRwotICAgIHNpemVfdCBzaXplSW5NZW1vcnkoKTsKLSAgICB2b2lkIGNoZWNrQ29uc2lz
dGVuY3koKTsKLSNlbmRpZgotICAgIAotICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZJbmRl
eFNpemUoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoUHJvcGVydHlUYWJsZSwgbV9pbmRleFNp
emUpOyB9Ci0gICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZkluZGV4TWFzaygpIHsgcmV0dXJu
IE9CSkVDVF9PRkZTRVRPRihQcm9wZXJ0eVRhYmxlLCBtX2luZGV4TWFzayk7IH0KLSAgICBzdGF0
aWMgcHRyZGlmZl90IG9mZnNldE9mSW5kZXgoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoUHJv
cGVydHlUYWJsZSwgbV9pbmRleCk7IH0KLQotICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQg
RW1wdHlFbnRyeUluZGV4ID0gMDsKLQotcHJpdmF0ZToKLSAgICBQcm9wZXJ0eVRhYmxlKFZNJiwg
dW5zaWduZWQgaW5pdGlhbENhcGFjaXR5KTsKLSAgICBQcm9wZXJ0eVRhYmxlKFZNJiwgY29uc3Qg
UHJvcGVydHlUYWJsZSYpOwotICAgIFByb3BlcnR5VGFibGUoVk0mLCB1bnNpZ25lZCBpbml0aWFs
Q2FwYWNpdHksIGNvbnN0IFByb3BlcnR5VGFibGUmKTsKLQotICAgIFByb3BlcnR5VGFibGUoY29u
c3QgUHJvcGVydHlUYWJsZSYpOwotCi0gICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYpOwotCi0g
ICAgLy8gVXNlZCB0byBpbnNlcnQgYSB2YWx1ZSBrbm93biBub3QgdG8gYmUgaW4gdGhlIHRhYmxl
LCBhbmQgd2hlcmUgd2Uga25vdyBjYXBhY2l0eSB0byBiZSBhdmFpbGFibGUuCi0gICAgdm9pZCBy
ZWluc2VydChjb25zdCBWYWx1ZVR5cGUmIGVudHJ5KTsKLQotICAgIC8vIFJlaGFzaCB0aGUgdGFi
bGUuICBVc2VkIHRvIGdyb3csIG9yIHRvIHJlY292ZXIgZGVsZXRlZCBzbG90cy4KLSAgICB2b2lk
IHJlaGFzaChWTSYsIHVuc2lnbmVkIG5ld0NhcGFjaXR5KTsKLQotICAgIC8vIFRoZSBjYXBhY2l0
eSBvZiB0aGUgdGFibGUgb2YgdmFsdWVzIGlzIGhhbGYgb2YgdGhlIHNpemUgb2YgdGhlIGluZGV4
LgotICAgIHVuc2lnbmVkIHRhYmxlQ2FwYWNpdHkoKSBjb25zdDsKLQotICAgIC8vIFdlIGtlZXAg
YW4gZXh0cmEgZGVsZXRlZCBzbG90IGFmdGVyIHRoZSBhcnJheSB0byBtYWtlIGl0ZXJhdGlvbiB3
b3JrLAotICAgIC8vIGFuZCB0byB1c2UgZm9yIGRlbGV0ZWQgdmFsdWVzLiBJbmRleCB2YWx1ZXMg
aW50byB0aGUgYXJyYXkgYXJlIDEtYmFzZWQsCi0gICAgLy8gc28gdGhpcyBpcyB0YWJsZUNhcGFj
aXR5KCkgKyAxLgotICAgIC8vIEZvciBleGFtcGxlLCBpZiBtX3RhYmxlU2l6ZSBpcyAxNiwgdGhl
biB0YWJsZUNhcGFjaXR5KCkgaXMgOCAtIGJ1dCB0aGUKLSAgICAvLyB2YWx1ZXMgYXJyYXkgaXMg
YWN0dWFsbHkgOSBsb25nICh0aGUgOXRoIHVzZWQgZm9yIHRoZSBkZWxldGVkIHZhbHVlLwotICAg
IC8vIGl0ZXJhdGlvbiBndWFyZCkuICBUaGUgOCB2YWxpZCBlbnRyaWVzIGFyZSBudW1iZXJlZCAx
Li44LCBzbyB0aGUKLSAgICAvLyBkZWxldGVkIGluZGV4IGlzIDkgKDAgYmVpbmcgcmVzZXJ2ZWQg
Zm9yIGVtcHR5KS4KLSAgICB1bnNpZ25lZCBkZWxldGVkRW50cnlJbmRleCgpIGNvbnN0OwotCi0g
ICAgLy8gVXNlZCBpbiBpdGVyYXRvciBjcmVhdGlvbi9wcm9ncmVzc2lvbi4KLSAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBUPgotICAgIHN0YXRpYyBUKiBza2lwRGVsZXRlZEVudHJpZXMoVCogdmFsdWVQ
dHIsIFQqIGVuZFZhbHVlUHRyKTsKLQotICAgIC8vIFRoZSB0YWJsZSBvZiB2YWx1ZXMgbGllcyBh
ZnRlciB0aGUgaGFzaCBpbmRleC4KLSAgICBWYWx1ZVR5cGUqIHRhYmxlKCk7Ci0gICAgY29uc3Qg
VmFsdWVUeXBlKiB0YWJsZSgpIGNvbnN0OwotCi0gICAgVmFsdWVUeXBlKiB0YWJsZUVuZCgpIHsg
cmV0dXJuIHRhYmxlKCkgKyB1c2VkQ291bnQoKTsgfQotICAgIGNvbnN0IFZhbHVlVHlwZSogdGFi
bGVFbmQoKSBjb25zdCB7IHJldHVybiB0YWJsZSgpICsgdXNlZENvdW50KCk7IH0KLQotICAgIC8v
IHRvdGFsIG51bWJlciBvZiAgdXNlZCBlbnRyaWVzIGluIHRoZSB2YWx1ZXMgYXJyYXkgLSBieSBl
aXRoZXIgdmFsaWQgZW50cmllcywgb3IgZGVsZXRlZCBvbmVzLgotICAgIHVuc2lnbmVkIHVzZWRD
b3VudCgpIGNvbnN0OwotCi0gICAgLy8gVGhlIHNpemUgaW4gYnl0ZXMgb2YgZGF0YSBuZWVkZWQg
Zm9yIGJ5IHRoZSB0YWJsZS4KLSAgICBzaXplX3QgZGF0YVNpemUoKTsKLQotICAgIC8vIENhbGN1
bGF0ZXMgdGhlIGFwcHJvcHJpYXRlIHRhYmxlIHNpemUgKHJvdW5kcyB1cCB0byBhIHBvd2VyIG9m
IHR3bykuCi0gICAgc3RhdGljIHVuc2lnbmVkIHNpemVGb3JDYXBhY2l0eSh1bnNpZ25lZCBjYXBh
Y2l0eSk7Ci0KLSAgICAvLyBDaGVjayBpZiBjYXBhY2l0eSBpcyBhdmFpbGFibGUuCi0gICAgYm9v
bCBjYW5JbnNlcnQoKTsKLQotICAgIHVuc2lnbmVkIG1faW5kZXhTaXplOwotICAgIHVuc2lnbmVk
IG1faW5kZXhNYXNrOwotICAgIHVuc2lnbmVkKiBtX2luZGV4OwotICAgIHVuc2lnbmVkIG1fa2V5
Q291bnQ7Ci0gICAgdW5zaWduZWQgbV9kZWxldGVkQ291bnQ7Ci0gICAgc3RkOjp1bmlxdWVfcHRy
PFZlY3RvcjxQcm9wZXJ0eU9mZnNldD4+IG1fZGVsZXRlZE9mZnNldHM7Ci0KLSAgICBzdGF0aWMg
Y29uc3RleHByIHVuc2lnbmVkIE1pbmltdW1UYWJsZVNpemUgPSAxNjsKLX07Ci0KLWlubGluZSBQ
cm9wZXJ0eVRhYmxlOjppdGVyYXRvciBQcm9wZXJ0eVRhYmxlOjpiZWdpbigpCi17Ci0gICAgYXV0
byogdGFibGVFbmQgPSB0aGlzLT50YWJsZUVuZCgpOwotICAgIHJldHVybiBpdGVyYXRvcihza2lw
RGVsZXRlZEVudHJpZXModGFibGUoKSwgdGFibGVFbmQpLCB0YWJsZUVuZCk7Ci19Ci0KLWlubGlu
ZSBQcm9wZXJ0eVRhYmxlOjppdGVyYXRvciBQcm9wZXJ0eVRhYmxlOjplbmQoKQotewotICAgIGF1
dG8qIHRhYmxlRW5kID0gdGhpcy0+dGFibGVFbmQoKTsKLSAgICByZXR1cm4gaXRlcmF0b3IodGFi
bGVFbmQsIHRhYmxlRW5kKTsKLX0KLQotaW5saW5lIFByb3BlcnR5VGFibGU6OmNvbnN0X2l0ZXJh
dG9yIFByb3BlcnR5VGFibGU6OmJlZ2luKCkgY29uc3QKLXsKLSAgICBhdXRvKiB0YWJsZUVuZCA9
IHRoaXMtPnRhYmxlRW5kKCk7Ci0gICAgcmV0dXJuIGNvbnN0X2l0ZXJhdG9yKHNraXBEZWxldGVk
RW50cmllcyh0YWJsZSgpLCB0YWJsZUVuZCksIHRhYmxlRW5kKTsKLX0KLQotaW5saW5lIFByb3Bl
cnR5VGFibGU6OmNvbnN0X2l0ZXJhdG9yIFByb3BlcnR5VGFibGU6OmVuZCgpIGNvbnN0Ci17Ci0g
ICAgYXV0byogdGFibGVFbmQgPSB0aGlzLT50YWJsZUVuZCgpOwotICAgIHJldHVybiBjb25zdF9p
dGVyYXRvcih0YWJsZUVuZCwgdGFibGVFbmQpOwotfQotCi1pbmxpbmUgUHJvcGVydHlUYWJsZTo6
ZmluZF9pdGVyYXRvciBQcm9wZXJ0eVRhYmxlOjpmaW5kKGNvbnN0IEtleVR5cGUmIGtleSkKLXsK
LSAgICBBU1NFUlQoa2V5KTsKLSAgICBBU1NFUlQoa2V5LT5pc0F0b20oKSB8fCBrZXktPmlzU3lt
Ym9sKCkpOwotICAgIHVuc2lnbmVkIGhhc2ggPSBJZGVudGlmaWVyUmVwSGFzaDo6aGFzaChrZXkp
OwotCi0jaWYgRFVNUF9QUk9QRVJUWU1BUF9TVEFUUwotICAgICsrcHJvcGVydHlNYXBIYXNoVGFi
bGVTdGF0cy0+bnVtRmluZHM7Ci0jZW5kaWYKLQotICAgIHdoaWxlICh0cnVlKSB7Ci0gICAgICAg
IHVuc2lnbmVkIGVudHJ5SW5kZXggPSBtX2luZGV4W2hhc2ggJiBtX2luZGV4TWFza107Ci0gICAg
ICAgIGlmIChlbnRyeUluZGV4ID09IEVtcHR5RW50cnlJbmRleCkKLSAgICAgICAgICAgIHJldHVy
biBzdGQ6Om1ha2VfcGFpcigoVmFsdWVUeXBlKiludWxscHRyLCBoYXNoICYgbV9pbmRleE1hc2sp
OwotICAgICAgICBpZiAoa2V5ID09IHRhYmxlKClbZW50cnlJbmRleCAtIDFdLmtleSkKLSAgICAg
ICAgICAgIHJldHVybiBzdGQ6Om1ha2VfcGFpcigmdGFibGUoKVtlbnRyeUluZGV4IC0gMV0sIGhh
c2ggJiBtX2luZGV4TWFzayk7Ci0KLSNpZiBEVU1QX1BST1BFUlRZTUFQX1NUQVRTCi0gICAgICAg
ICsrcHJvcGVydHlNYXBIYXNoVGFibGVTdGF0cy0+bnVtQ29sbGlzaW9uczsKLSNlbmRpZgotCi0j
aWYgRFVNUF9QUk9QRVJUWU1BUF9DT0xMSVNJT05TCi0gICAgICAgIGRhdGFMb2coIlByb3BlcnR5
VGFibGUgY29sbGlzaW9uIGZvciAiLCBrZXksICIgKCIsIGhhc2gsICIpXG4iKTsKLSAgICAgICAg
ZGF0YUxvZygiQ29sbGlkZWQgd2l0aCAiLCB0YWJsZSgpW2VudHJ5SW5kZXggLSAxXS5rZXksICIo
IiwgSWRlbnRpZmllclJlcEhhc2g6Omhhc2godGFibGUoKVtlbnRyeUluZGV4IC0gMV0ua2V5KSwg
IilcbiIpOwotI2VuZGlmCi0KLSAgICAgICAgaGFzaCsrOwotICAgIH0KLX0KLQotaW5saW5lIFBy
b3BlcnR5VGFibGU6OlZhbHVlVHlwZSogUHJvcGVydHlUYWJsZTo6Z2V0KGNvbnN0IEtleVR5cGUm
IGtleSkKLXsKLSAgICBBU1NFUlQoa2V5KTsKLSAgICBBU1NFUlQoa2V5LT5pc0F0b20oKSB8fCBr
ZXktPmlzU3ltYm9sKCkpOwotICAgIEFTU0VSVChrZXkgIT0gUFJPUEVSVFlfTUFQX0RFTEVURURf
RU5UUllfS0VZKTsKLQotICAgIGlmICghbV9rZXlDb3VudCkKLSAgICAgICAgcmV0dXJuIG51bGxw
dHI7Ci0KLSAgICB1bnNpZ25lZCBoYXNoID0gSWRlbnRpZmllclJlcEhhc2g6Omhhc2goa2V5KTsK
LQotI2lmIERVTVBfUFJPUEVSVFlNQVBfU1RBVFMKLSAgICArK3Byb3BlcnR5TWFwSGFzaFRhYmxl
U3RhdHMtPm51bUxvb2t1cHM7Ci0jZW5kaWYKLQotICAgIHdoaWxlICh0cnVlKSB7Ci0gICAgICAg
IHVuc2lnbmVkIGVudHJ5SW5kZXggPSBtX2luZGV4W2hhc2ggJiBtX2luZGV4TWFza107Ci0gICAg
ICAgIGlmIChlbnRyeUluZGV4ID09IEVtcHR5RW50cnlJbmRleCkKLSAgICAgICAgICAgIHJldHVy
biBudWxscHRyOwotICAgICAgICBpZiAoa2V5ID09IHRhYmxlKClbZW50cnlJbmRleCAtIDFdLmtl
eSkgewotICAgICAgICAgICAgQVNTRVJUKCFtX2RlbGV0ZWRPZmZzZXRzIHx8ICFtX2RlbGV0ZWRP
ZmZzZXRzLT5jb250YWlucyh0YWJsZSgpW2VudHJ5SW5kZXggLSAxXS5vZmZzZXQpKTsKLSAgICAg
ICAgICAgIHJldHVybiAmdGFibGUoKVtlbnRyeUluZGV4IC0gMV07Ci0gICAgICAgIH0KLQotI2lm
IERVTVBfUFJPUEVSVFlNQVBfU1RBVFMKLSAgICAgICAgKytwcm9wZXJ0eU1hcEhhc2hUYWJsZVN0
YXRzLT5udW1Mb29rdXBQcm9iaW5nOwotI2VuZGlmCi0KLSAgICAgICAgaGFzaCsrOwotICAgIH0K
LX0KLQotaW5saW5lIHN0ZDo6cGFpcjxQcm9wZXJ0eVRhYmxlOjpmaW5kX2l0ZXJhdG9yLCBib29s
PiBXQVJOX1VOVVNFRF9SRVRVUk4gUHJvcGVydHlUYWJsZTo6YWRkKFZNJiB2bSwgY29uc3QgVmFs
dWVUeXBlJiBlbnRyeSkKLXsKLSAgICBBU1NFUlQoIW1fZGVsZXRlZE9mZnNldHMgfHwgIW1fZGVs
ZXRlZE9mZnNldHMtPmNvbnRhaW5zKGVudHJ5Lm9mZnNldCkpOwotCi0gICAgLy8gTG9vayBmb3Ig
YSB2YWx1ZSB3aXRoIGEgbWF0Y2hpbmcga2V5IGFscmVhZHkgaW4gdGhlIGFycmF5LgotICAgIGZp
bmRfaXRlcmF0b3IgaXRlciA9IGZpbmQoZW50cnkua2V5KTsKLSAgICBpZiAoaXRlci5maXJzdCkK
LSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV9wYWlyKGl0ZXIsIGZhbHNlKTsKLQotI2lmIERVTVBf
UFJPUEVSVFlNQVBfU1RBVFMKLSAgICArK3Byb3BlcnR5TWFwSGFzaFRhYmxlU3RhdHMtPm51bUFk
ZHM7Ci0jZW5kaWYKLQotICAgIC8vIFJlZiB0aGUga2V5Ci0gICAgZW50cnkua2V5LT5yZWYoKTsK
LQotICAgIC8vIGVuc3VyZSBjYXBhY2l0eSBpcyBhdmFpbGFibGUuCi0gICAgaWYgKCFjYW5JbnNl
cnQoKSkgewotICAgICAgICByZWhhc2godm0sIG1fa2V5Q291bnQgKyAxKTsKLSAgICAgICAgaXRl
ciA9IGZpbmQoZW50cnkua2V5KTsKLSAgICAgICAgQVNTRVJUKCFpdGVyLmZpcnN0KTsKLSAgICB9
Ci0KLSAgICAvLyBBbGxvY2F0ZSBhIHNsb3QgaW4gdGhlIGhhc2h0YWJsZSwgYW5kIHNldCB0aGUg
aW5kZXggdG8gcmVmZXJlbmNlIHRoaXMuCi0gICAgdW5zaWduZWQgZW50cnlJbmRleCA9IHVzZWRD
b3VudCgpICsgMTsKLSAgICBtX2luZGV4W2l0ZXIuc2Vjb25kXSA9IGVudHJ5SW5kZXg7Ci0gICAg
aXRlci5maXJzdCA9ICZ0YWJsZSgpW2VudHJ5SW5kZXggLSAxXTsKLSAgICAqaXRlci5maXJzdCA9
IGVudHJ5OwotCi0gICAgKyttX2tleUNvdW50OwotICAgIAotICAgIHJldHVybiBzdGQ6Om1ha2Vf
cGFpcihpdGVyLCB0cnVlKTsKLX0KLQotaW5saW5lIHZvaWQgUHJvcGVydHlUYWJsZTo6cmVtb3Zl
KFZNJiB2bSwgY29uc3QgZmluZF9pdGVyYXRvciYgaXRlcikKLXsKLSAgICAvLyBSZW1vdmluZyBh
IGtleSB0aGF0IGRvZXNuJ3QgZXhpc3QgZG9lcyBub3RoaW5nIQotICAgIGlmICghaXRlci5maXJz
dCkKLSAgICAgICAgcmV0dXJuOwotCi0jaWYgRFVNUF9QUk9QRVJUWU1BUF9TVEFUUwotICAgICsr
cHJvcGVydHlNYXBIYXNoVGFibGVTdGF0cy0+bnVtUmVtb3ZlczsKLSNlbmRpZgotCi0gICAgLy8g
UmVwbGFjZSB0aGlzIG9uZSBlbGVtZW50IHdpdGggdGhlIGRlbGV0ZWQgc2VudGluZWwuIEFsc28g
Y2xlYXIgb3V0Ci0gICAgLy8gdGhlIGVudHJ5IHNvIHdlIGNhbiBpdGVyYXRlIGFsbCB0aGUgZW50
cmllcyBhcyBuZWVkZWQuCi0gICAgbV9pbmRleFtpdGVyLnNlY29uZF0gPSBkZWxldGVkRW50cnlJ
bmRleCgpOwotICAgIGl0ZXIuZmlyc3QtPmtleS0+ZGVyZWYoKTsKLSAgICBpdGVyLmZpcnN0LT5r
ZXkgPSBQUk9QRVJUWV9NQVBfREVMRVRFRF9FTlRSWV9LRVk7Ci0KLSAgICBBU1NFUlQobV9rZXlD
b3VudCA+PSAxKTsKLSAgICAtLW1fa2V5Q291bnQ7Ci0gICAgKyttX2RlbGV0ZWRDb3VudDsKLQot
ICAgIGlmIChtX2RlbGV0ZWRDb3VudCAqIDQgPj0gbV9pbmRleFNpemUpCi0gICAgICAgIHJlaGFz
aCh2bSwgbV9rZXlDb3VudCk7Ci19Ci0KLWlubGluZSB2b2lkIFByb3BlcnR5VGFibGU6OnJlbW92
ZShWTSYgdm0sIGNvbnN0IEtleVR5cGUmIGtleSkKLXsKLSAgICByZW1vdmUodm0sIGZpbmQoa2V5
KSk7Ci19Ci0KLS8vIHJldHVybnMgdGhlIG51bWJlciBvZiB2YWx1ZXMgaW4gdGhlIGhhc2h0YWJs
ZS4KLWlubGluZSB1bnNpZ25lZCBQcm9wZXJ0eVRhYmxlOjpzaXplKCkgY29uc3QKLXsKLSAgICBy
ZXR1cm4gbV9rZXlDb3VudDsKLX0KLQotaW5saW5lIGJvb2wgUHJvcGVydHlUYWJsZTo6aXNFbXB0
eSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuICFtX2tleUNvdW50OwotfQotCi1pbmxpbmUgdW5zaWdu
ZWQgUHJvcGVydHlUYWJsZTo6cHJvcGVydHlTdG9yYWdlU2l6ZSgpIGNvbnN0Ci17Ci0gICAgcmV0
dXJuIHNpemUoKSArIChtX2RlbGV0ZWRPZmZzZXRzID8gbV9kZWxldGVkT2Zmc2V0cy0+c2l6ZSgp
IDogMCk7Ci19Ci0KLWlubGluZSB2b2lkIFByb3BlcnR5VGFibGU6OmNsZWFyRGVsZXRlZE9mZnNl
dHMoKQotewotICAgIG1fZGVsZXRlZE9mZnNldHMgPSBudWxscHRyOwotfQotCi1pbmxpbmUgYm9v
bCBQcm9wZXJ0eVRhYmxlOjpoYXNEZWxldGVkT2Zmc2V0KCkKLXsKLSAgICByZXR1cm4gbV9kZWxl
dGVkT2Zmc2V0cyAmJiAhbV9kZWxldGVkT2Zmc2V0cy0+aXNFbXB0eSgpOwotfQotCi1pbmxpbmUg
UHJvcGVydHlPZmZzZXQgUHJvcGVydHlUYWJsZTo6Z2V0RGVsZXRlZE9mZnNldCgpCi17Ci0gICAg
UHJvcGVydHlPZmZzZXQgb2Zmc2V0ID0gbV9kZWxldGVkT2Zmc2V0cy0+bGFzdCgpOwotICAgIG1f
ZGVsZXRlZE9mZnNldHMtPnJlbW92ZUxhc3QoKTsKLSAgICByZXR1cm4gb2Zmc2V0OwotfQotCi1p
bmxpbmUgdm9pZCBQcm9wZXJ0eVRhYmxlOjphZGREZWxldGVkT2Zmc2V0KFByb3BlcnR5T2Zmc2V0
IG9mZnNldCkKLXsKLSAgICBpZiAoIW1fZGVsZXRlZE9mZnNldHMpCi0gICAgICAgIG1fZGVsZXRl
ZE9mZnNldHMgPSBtYWtlVW5pcXVlPFZlY3RvcjxQcm9wZXJ0eU9mZnNldD4+KCk7Ci0gICAgQVNT
RVJUKCFtX2RlbGV0ZWRPZmZzZXRzLT5jb250YWlucyhvZmZzZXQpKTsKLSAgICBtX2RlbGV0ZWRP
ZmZzZXRzLT5hcHBlbmQob2Zmc2V0KTsKLX0KLQotaW5saW5lIFByb3BlcnR5T2Zmc2V0IFByb3Bl
cnR5VGFibGU6Om5leHRPZmZzZXQoUHJvcGVydHlPZmZzZXQgaW5saW5lQ2FwYWNpdHkpCi17Ci0g
ICAgaWYgKGhhc0RlbGV0ZWRPZmZzZXQoKSkKLSAgICAgICAgcmV0dXJuIGdldERlbGV0ZWRPZmZz
ZXQoKTsKLQotICAgIHJldHVybiBvZmZzZXRGb3JQcm9wZXJ0eU51bWJlcihzaXplKCksIGlubGlu
ZUNhcGFjaXR5KTsKLX0KLQotaW5saW5lIFByb3BlcnR5VGFibGUqIFByb3BlcnR5VGFibGU6OmNv
cHkoVk0mIHZtLCB1bnNpZ25lZCBuZXdDYXBhY2l0eSkKLXsKLSAgICBBU1NFUlQobmV3Q2FwYWNp
dHkgPj0gbV9rZXlDb3VudCk7Ci0KLSAgICAvLyBGYXN0IGNhc2U7IGlmIHRoZSBuZXcgdGFibGUg
d2lsbCBiZSB0aGUgc2FtZSBtX2luZGV4U2l6ZSBhcyB0aGlzIG9uZSwgd2UgY2FuIG1lbWNweSBp
dCwKLSAgICAvLyBzYXZlIHJlaGFzaGluZyBhbGwga2V5cy4KLSAgICBpZiAoc2l6ZUZvckNhcGFj
aXR5KG5ld0NhcGFjaXR5KSA9PSBtX2luZGV4U2l6ZSkKLSAgICAgICAgcmV0dXJuIFByb3BlcnR5
VGFibGU6OmNsb25lKHZtLCAqdGhpcyk7Ci0gICAgcmV0dXJuIFByb3BlcnR5VGFibGU6OmNsb25l
KHZtLCBuZXdDYXBhY2l0eSwgKnRoaXMpOwotfQotCi0jaWZuZGVmIE5ERUJVRwotaW5saW5lIHNp
emVfdCBQcm9wZXJ0eVRhYmxlOjpzaXplSW5NZW1vcnkoKQotewotICAgIHNpemVfdCByZXN1bHQg
PSBzaXplb2YoUHJvcGVydHlUYWJsZSkgKyBkYXRhU2l6ZSgpOwotICAgIGlmIChtX2RlbGV0ZWRP
ZmZzZXRzKQotICAgICAgICByZXN1bHQgKz0gKG1fZGVsZXRlZE9mZnNldHMtPmNhcGFjaXR5KCkg
KiBzaXplb2YoUHJvcGVydHlPZmZzZXQpKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotI2VuZGlm
Ci0KLWlubGluZSB2b2lkIFByb3BlcnR5VGFibGU6OnJlaW5zZXJ0KGNvbnN0IFZhbHVlVHlwZSYg
ZW50cnkpCi17Ci0jaWYgRFVNUF9QUk9QRVJUWU1BUF9TVEFUUwotICAgICsrcHJvcGVydHlNYXBI
YXNoVGFibGVTdGF0cy0+bnVtUmVpbnNlcnRzOwotI2VuZGlmCi0KLSAgICAvLyBVc2VkIHRvIGlu
c2VydCBhIHZhbHVlIGtub3duIG5vdCB0byBiZSBpbiB0aGUgdGFibGUsIGFuZCB3aGVyZQotICAg
IC8vIHdlIGtub3cgY2FwYWNpdHkgdG8gYmUgYXZhaWxhYmxlLgotICAgIEFTU0VSVChjYW5JbnNl
cnQoKSk7Ci0gICAgZmluZF9pdGVyYXRvciBpdGVyID0gZmluZChlbnRyeS5rZXkpOwotICAgIEFT
U0VSVCghaXRlci5maXJzdCk7Ci0KLSAgICB1bnNpZ25lZCBlbnRyeUluZGV4ID0gdXNlZENvdW50
KCkgKyAxOwotICAgIG1faW5kZXhbaXRlci5zZWNvbmRdID0gZW50cnlJbmRleDsKLSAgICB0YWJs
ZSgpW2VudHJ5SW5kZXggLSAxXSA9IGVudHJ5OwotCi0gICAgKyttX2tleUNvdW50OwotfQotCi1p
bmxpbmUgdm9pZCBQcm9wZXJ0eVRhYmxlOjpyZWhhc2goVk0mIHZtLCB1bnNpZ25lZCBuZXdDYXBh
Y2l0eSkKLXsKLSNpZiBEVU1QX1BST1BFUlRZTUFQX1NUQVRTCi0gICAgKytwcm9wZXJ0eU1hcEhh
c2hUYWJsZVN0YXRzLT5udW1SZWhhc2hlczsKLSNlbmRpZgotCi0gICAgc2l6ZV90IG9sZERhdGFT
aXplID0gZGF0YVNpemUoKTsKLSAgICB1bnNpZ25lZCogb2xkRW50cnlJbmRpY2VzID0gbV9pbmRl
eDsKLSAgICBpdGVyYXRvciBpdGVyID0gdGhpcy0+YmVnaW4oKTsKLSAgICBpdGVyYXRvciBlbmQg
PSB0aGlzLT5lbmQoKTsKLQotICAgIG1faW5kZXhTaXplID0gc2l6ZUZvckNhcGFjaXR5KG5ld0Nh
cGFjaXR5KTsKLSAgICBtX2luZGV4TWFzayA9IG1faW5kZXhTaXplIC0gMTsKLSAgICBtX2tleUNv
dW50ID0gMDsKLSAgICBtX2RlbGV0ZWRDb3VudCA9IDA7Ci0KLSAgICBtX2luZGV4ID0gc3RhdGlj
X2Nhc3Q8dW5zaWduZWQqPihQcm9wZXJ0eVRhYmxlTWFsbG9jOjp6ZXJvZWRNYWxsb2MoZGF0YVNp
emUoKSkpOwotCi0gICAgZm9yICg7IGl0ZXIgIT0gZW5kOyArK2l0ZXIpIHsKLSAgICAgICAgQVNT
RVJUKGNhbkluc2VydCgpKTsKLSAgICAgICAgcmVpbnNlcnQoKml0ZXIpOwotICAgIH0KLQotICAg
IFByb3BlcnR5VGFibGVNYWxsb2M6OmZyZWUob2xkRW50cnlJbmRpY2VzKTsKLQotICAgIGlmIChv
bGREYXRhU2l6ZSA8IGRhdGFTaXplKCkpCi0gICAgICAgIHZtLmhlYXAucmVwb3J0RXh0cmFNZW1v
cnlBbGxvY2F0ZWQoZGF0YVNpemUoKSAtIG9sZERhdGFTaXplKTsKLX0KLQotaW5saW5lIHVuc2ln
bmVkIFByb3BlcnR5VGFibGU6OnRhYmxlQ2FwYWNpdHkoKSBjb25zdCB7IHJldHVybiBtX2luZGV4
U2l6ZSA+PiAxOyB9Ci0KLWlubGluZSB1bnNpZ25lZCBQcm9wZXJ0eVRhYmxlOjpkZWxldGVkRW50
cnlJbmRleCgpIGNvbnN0IHsgcmV0dXJuIHRhYmxlQ2FwYWNpdHkoKSArIDE7IH0KLQotdGVtcGxh
dGU8dHlwZW5hbWUgVD4KLWlubGluZSBUKiBQcm9wZXJ0eVRhYmxlOjpza2lwRGVsZXRlZEVudHJp
ZXMoVCogdmFsdWVQdHIsIFQqIGVuZFZhbHVlUHRyKQotewotICAgIHdoaWxlICh2YWx1ZVB0ciA8
IGVuZFZhbHVlUHRyICYmIHZhbHVlUHRyLT5rZXkgPT0gUFJPUEVSVFlfTUFQX0RFTEVURURfRU5U
UllfS0VZKQotICAgICAgICArK3ZhbHVlUHRyOwotICAgIHJldHVybiB2YWx1ZVB0cjsKLX0KLQot
aW5saW5lIFByb3BlcnR5VGFibGU6OlZhbHVlVHlwZSogUHJvcGVydHlUYWJsZTo6dGFibGUoKQot
ewotICAgIC8vIFRoZSB0YWJsZSBvZiB2YWx1ZXMgbGllcyBhZnRlciB0aGUgaGFzaCBpbmRleC4K
LSAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdF9wdHI8VmFsdWVUeXBlKj4obV9pbmRleCArIG1f
aW5kZXhTaXplKTsKLX0KLQotaW5saW5lIGNvbnN0IFByb3BlcnR5VGFibGU6OlZhbHVlVHlwZSog
UHJvcGVydHlUYWJsZTo6dGFibGUoKSBjb25zdAotewotICAgIC8vIFRoZSB0YWJsZSBvZiB2YWx1
ZXMgbGllcyBhZnRlciB0aGUgaGFzaCBpbmRleC4KLSAgICByZXR1cm4gcmVpbnRlcnByZXRfY2Fz
dF9wdHI8Y29uc3QgVmFsdWVUeXBlKj4obV9pbmRleCArIG1faW5kZXhTaXplKTsKLX0KLQotaW5s
aW5lIHVuc2lnbmVkIFByb3BlcnR5VGFibGU6OnVzZWRDb3VudCgpIGNvbnN0Ci17Ci0gICAgLy8g
VG90YWwgbnVtYmVyIG9mICB1c2VkIGVudHJpZXMgaW4gdGhlIHZhbHVlcyBhcnJheSAtIGJ5IGVp
dGhlciB2YWxpZCBlbnRyaWVzLCBvciBkZWxldGVkIG9uZXMuCi0gICAgcmV0dXJuIG1fa2V5Q291
bnQgKyBtX2RlbGV0ZWRDb3VudDsKLX0KLQotaW5saW5lIHNpemVfdCBQcm9wZXJ0eVRhYmxlOjpk
YXRhU2l6ZSgpCi17Ci0gICAgLy8gVGhlIHNpemUgaW4gYnl0ZXMgb2YgZGF0YSBuZWVkZWQgZm9y
IGJ5IHRoZSB0YWJsZS4KLSAgICAvLyBFbnN1cmUgdGhhdCB0aGlzIGZ1bmN0aW9uIGNhbiBiZSBj
YWxsZWQgY29uY3VycmVudGx5LgotICAgIHVuc2lnbmVkIGluZGV4U2l6ZSA9IG1faW5kZXhTaXpl
OwotICAgIHJldHVybiBpbmRleFNpemUgKiBzaXplb2YodW5zaWduZWQpICsgKChpbmRleFNpemUg
Pj4gMSkgKyAxKSAqIHNpemVvZihWYWx1ZVR5cGUpOwotfQotCi1pbmxpbmUgdW5zaWduZWQgUHJv
cGVydHlUYWJsZTo6c2l6ZUZvckNhcGFjaXR5KHVuc2lnbmVkIGNhcGFjaXR5KQotewotICAgIGlm
IChjYXBhY2l0eSA8IE1pbmltdW1UYWJsZVNpemUgLyAyKQotICAgICAgICByZXR1cm4gTWluaW11
bVRhYmxlU2l6ZTsKLSAgICByZXR1cm4gbmV4dFBvd2VyT2YyKGNhcGFjaXR5ICsgMSkgKiAyOwot
fQotCi1pbmxpbmUgYm9vbCBQcm9wZXJ0eVRhYmxlOjpjYW5JbnNlcnQoKQotewotICAgIHJldHVy
biB1c2VkQ291bnQoKSA8IHRhYmxlQ2FwYWNpdHkoKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgSlND
CgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9w
ZXJ0eU1hcEhhc2hUYWJsZS5oCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX18KRGVsZXRlZDogc3ZuOmVvbC1zdHlsZQojIyAt
MSArMCwwICMjCi1uYXRpdmUKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBwcm9wZXJ0eQpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlUYWJsZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlUYWJsZS5jcHAJKHJl
dmlzaW9uIDI4NjAxMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5
VGFibGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNCw3ICsyNCw3IEBACiAgKi8KIAogI2luY2x1
ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlByb3BlcnR5TWFwSGFzaFRhYmxlLmgiCisjaW5jbHVk
ZSAiUHJvcGVydHlUYWJsZS5oIgogCiAjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKIApJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlUYWJsZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5VGFibGUuaAko
cmV2aXNpb24gMjg2MDExKQkoZnJvbSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9w
ZXJ0eU1hcEhhc2hUYWJsZS5oOjI4NjAxMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1Byb3BlcnR5VGFibGUuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDU4NyBAQAorLyoK
KyAqICBDb3B5cmlnaHQgKEMpIDIwMDQtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz
dHJpYnV0ZSBpdCBhbmQvb3IKKyAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBH
TlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRo
ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogIHZlcnNpb24gMiBvZiB0aGUg
TGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiAg
VGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1
c2VmdWwsCisgKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGlt
cGxpZWQgd2FycmFudHkgb2YKKyAqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqICBZb3Ugc2hvdWxkIGhhdmUgcmVj
ZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisg
KiAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElm
IG5vdCwgd3JpdGUgdG8KKyAqICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1
MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogIEJvc3RvbiwgTUEgMDIxMTAtMTMw
MSwgVVNBLgorICoKKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkpTRXhwb3J0TWFj
cm9zLmgiCisjaW5jbHVkZSAiUHJvcGVydHlPZmZzZXQuaCIKKyNpbmNsdWRlICJTdHJ1Y3R1cmUu
aCIKKyNpbmNsdWRlICJXcml0ZUJhcnJpZXIuaCIKKyNpbmNsdWRlIDx3dGYvSGFzaFRhYmxlLmg+
CisjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KKyNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFz
Lmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21TdHJp
bmdJbXBsLmg+CisKKworI2RlZmluZSBEVU1QX1BST1BFUlRZTUFQX1NUQVRTIDAKKyNkZWZpbmUg
RFVNUF9QUk9QRVJUWU1BUF9DT0xMSVNJT05TIDAKKworI2RlZmluZSBQUk9QRVJUWV9NQVBfREVM
RVRFRF9FTlRSWV9LRVkgKChVbmlxdWVkU3RyaW5nSW1wbCopMSkKKworbmFtZXNwYWNlIEpTQyB7
CisKK0RFQ0xBUkVfQUxMT0NBVE9SX1dJVEhfSEVBUF9JREVOVElGSUVSKFByb3BlcnR5VGFibGUp
OworCisjaWYgRFVNUF9QUk9QRVJUWU1BUF9TVEFUUworCitzdHJ1Y3QgUHJvcGVydHlNYXBIYXNo
VGFibGVTdGF0cyB7CisgICAgc3RkOjphdG9taWM8dW5zaWduZWQ+IG51bUZpbmRzOworICAgIHN0
ZDo6YXRvbWljPHVuc2lnbmVkPiBudW1Db2xsaXNpb25zOworICAgIHN0ZDo6YXRvbWljPHVuc2ln
bmVkPiBudW1Mb29rdXBzOworICAgIHN0ZDo6YXRvbWljPHVuc2lnbmVkPiBudW1Mb29rdXBQcm9i
aW5nOworICAgIHN0ZDo6YXRvbWljPHVuc2lnbmVkPiBudW1BZGRzOworICAgIHN0ZDo6YXRvbWlj
PHVuc2lnbmVkPiBudW1SZW1vdmVzOworICAgIHN0ZDo6YXRvbWljPHVuc2lnbmVkPiBudW1SZWhh
c2hlczsKKyAgICBzdGQ6OmF0b21pYzx1bnNpZ25lZD4gbnVtUmVpbnNlcnRzOworfTsKKworSlNf
RVhQT1JUX1BSSVZBVEUgZXh0ZXJuIFByb3BlcnR5TWFwSGFzaFRhYmxlU3RhdHMqIHByb3BlcnR5
TWFwSGFzaFRhYmxlU3RhdHM7CisKKyNlbmRpZgorCitpbmxpbmUgYm9vbCBpc1Bvd2VyT2YyKHVu
c2lnbmVkIHYpCit7CisgICAgcmV0dXJuIGhhc09uZUJpdFNldCh2KTsKK30KKworaW5saW5lIHVu
c2lnbmVkIG5leHRQb3dlck9mMih1bnNpZ25lZCB2KQoreworICAgIC8vIFRha2VuIGZyb20gaHR0
cDovL3d3dy5jcy51dGsuZWR1L352b3NlL2Mtc3R1ZmYvYml0aGFja3MuaHRtbAorICAgIC8vIERl
dmlzZWQgYnkgU2VhbiBBbmRlcnNvbiwgU2VwZW1iZXIgMTQsIDIwMDEKKworICAgIHYtLTsKKyAg
ICB2IHw9IHYgPj4gMTsKKyAgICB2IHw9IHYgPj4gMjsKKyAgICB2IHw9IHYgPj4gNDsKKyAgICB2
IHw9IHYgPj4gODsKKyAgICB2IHw9IHYgPj4gMTY7CisgICAgdisrOworCisgICAgcmV0dXJuIHY7
Cit9CisKK2NsYXNzIFByb3BlcnR5VGFibGUgZmluYWwgOiBwdWJsaWMgSlNDZWxsIHsKKworICAg
IC8vIFRoaXMgaXMgdGhlIGltcGxlbWVudGF0aW9uIGZvciAnaXRlcmF0b3InIGFuZCAnY29uc3Rf
aXRlcmF0b3InLAorICAgIC8vIHVzZWQgZm9yIGl0ZXJhdGluZyBvdmVyIHRoZSB0YWJsZSBpbiBp
bnNlcnRpb24gb3JkZXIuCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KKyAgICBjbGFzcyBvcmRl
cmVkX2l0ZXJhdG9yIHsKKyAgICBwdWJsaWM6CisgICAgICAgIG9yZGVyZWRfaXRlcmF0b3I8VD4m
IG9wZXJhdG9yKysoKQorICAgICAgICB7CisgICAgICAgICAgICBtX3ZhbHVlUHRyID0gc2tpcERl
bGV0ZWRFbnRyaWVzKG1fdmFsdWVQdHIgKyAxLCBtX2VuZFZhbHVlUHRyKTsKKyAgICAgICAgICAg
IHJldHVybiAqdGhpczsKKyAgICAgICAgfQorCisgICAgICAgIGJvb2wgb3BlcmF0b3I9PShjb25z
dCBvcmRlcmVkX2l0ZXJhdG9yPFQ+JiBvdGhlcikKKyAgICAgICAgeworICAgICAgICAgICAgcmV0
dXJuIG1fdmFsdWVQdHIgPT0gb3RoZXIubV92YWx1ZVB0cjsKKyAgICAgICAgfQorCisgICAgICAg
IGJvb2wgb3BlcmF0b3IhPShjb25zdCBvcmRlcmVkX2l0ZXJhdG9yPFQ+JiBvdGhlcikKKyAgICAg
ICAgeworICAgICAgICAgICAgcmV0dXJuIG1fdmFsdWVQdHIgIT0gb3RoZXIubV92YWx1ZVB0cjsK
KyAgICAgICAgfQorCisgICAgICAgIFQmIG9wZXJhdG9yKigpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIHJldHVybiAqbV92YWx1ZVB0cjsKKyAgICAgICAgfQorCisgICAgICAgIFQqIG9wZXJhdG9y
LT4oKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gbV92YWx1ZVB0cjsKKyAgICAgICAg
fQorCisgICAgICAgIG9yZGVyZWRfaXRlcmF0b3IoVCogdmFsdWVQdHIsIFQqIGVuZFZhbHVlUHRy
KQorICAgICAgICAgICAgOiBtX3ZhbHVlUHRyKHZhbHVlUHRyKQorICAgICAgICAgICAgLCBtX2Vu
ZFZhbHVlUHRyKGVuZFZhbHVlUHRyKQorICAgICAgICB7CisgICAgICAgIH0KKworICAgIHByaXZh
dGU6CisgICAgICAgIFQqIG1fdmFsdWVQdHI7CisgICAgICAgIFQqIG1fZW5kVmFsdWVQdHI7Cisg
ICAgfTsKKworcHVibGljOgorICAgIHR5cGVkZWYgSlNDZWxsIEJhc2U7CisgICAgc3RhdGljIGNv
bnN0ZXhwciB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwg
U3RydWN0dXJlSXNJbW1vcnRhbDsKKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlLCBT
dWJzcGFjZUFjY2Vzcz4KKyAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2
bSkKKyAgICB7CisgICAgICAgIHJldHVybiAmdm0ucHJvcGVydHlUYWJsZVNwYWNlOworICAgIH0K
KworICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBuZWVkc0Rlc3RydWN0aW9uID0gdHJ1ZTsKKyAg
ICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCopOworICAgIERFQ0xBUkVfVklTSVRfQ0hJTERS
RU47CisKKyAgICBERUNMQVJFX0VYUE9SVF9JTkZPOworCisgICAgc3RhdGljIFN0cnVjdHVyZSog
Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNW
YWx1ZSBwcm90b3R5cGUpCisgICAgeworICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUo
dm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhDZWxsVHlwZSwgU3RydWN0dXJl
RmxhZ3MpLCBpbmZvKCkpOworICAgIH0KKworICAgIHR5cGVkZWYgVW5pcXVlZFN0cmluZ0ltcGwq
IEtleVR5cGU7CisgICAgdHlwZWRlZiBQcm9wZXJ0eU1hcEVudHJ5IFZhbHVlVHlwZTsKKworICAg
IC8vIFRoZSBpbiBvcmRlciBpdGVyYXRvciBwcm92aWRlcyBvdmVybG9hZGVkICogYW5kIC0+IHRv
IGFjY2VzcyB0aGUgVmFsdWUgYXQgdGhlIGN1cnJlbnQgcG9zaXRpb24uCisgICAgdHlwZWRlZiBv
cmRlcmVkX2l0ZXJhdG9yPFZhbHVlVHlwZT4gaXRlcmF0b3I7CisgICAgdHlwZWRlZiBvcmRlcmVk
X2l0ZXJhdG9yPGNvbnN0IFZhbHVlVHlwZT4gY29uc3RfaXRlcmF0b3I7CisKKyAgICAvLyBUaGUg
ZmluZF9pdGVyYXRvciBpcyBhIHBhaXIgb2YgYSBwb2ludGVyIHRvIGEgVmFsdWUqIGFuIHRoZSBl
bnRyeSBpbiB0aGUgaW5kZXguCisgICAgLy8gSWYgJ2ZpbmQnIGRvZXMgbm90IGZpbmQgYW4gZW50
cnkgdGhlbiBpdGVyLmZpcnN0IHdpbGwgYmUgMCwgYW5kIGl0ZXIuc2Vjb25kIHdpbGwKKyAgICAv
LyBnaXZlIHRoZSBwb2ludCBpbiBtX2luZGV4IHdoZXJlIGFuIGVudHJ5IHNob3VsZCBiZSBpbnNl
cnRlZC4KKyAgICB0eXBlZGVmIHN0ZDo6cGFpcjxWYWx1ZVR5cGUqLCB1bnNpZ25lZD4gZmluZF9p
dGVyYXRvcjsKKworICAgIC8vIENvbnN0cnVjdG9yIGlzIHBhc3NlZCBhbiBpbml0aWFsIGNhcGFj
aXR5LCBhIFByb3BlcnR5VGFibGUgdG8gY29weSwgb3IgYm90aC4KKyAgICBzdGF0aWMgUHJvcGVy
dHlUYWJsZSogY3JlYXRlKFZNJiwgdW5zaWduZWQgaW5pdGlhbENhcGFjaXR5KTsKKyAgICBzdGF0
aWMgUHJvcGVydHlUYWJsZSogY2xvbmUoVk0mLCBjb25zdCBQcm9wZXJ0eVRhYmxlJik7CisgICAg
c3RhdGljIFByb3BlcnR5VGFibGUqIGNsb25lKFZNJiwgdW5zaWduZWQgaW5pdGlhbENhcGFjaXR5
LCBjb25zdCBQcm9wZXJ0eVRhYmxlJik7CisgICAgflByb3BlcnR5VGFibGUoKTsKKworICAgIC8v
IE9yZGVyZWQgaXRlcmF0aW9uIG1ldGhvZHMuCisgICAgaXRlcmF0b3IgYmVnaW4oKTsKKyAgICBp
dGVyYXRvciBlbmQoKTsKKyAgICBjb25zdF9pdGVyYXRvciBiZWdpbigpIGNvbnN0OworICAgIGNv
bnN0X2l0ZXJhdG9yIGVuZCgpIGNvbnN0OworCisgICAgLy8gRmluZCBhIHZhbHVlIGluIHRoZSB0
YWJsZS4KKyAgICBmaW5kX2l0ZXJhdG9yIGZpbmQoY29uc3QgS2V5VHlwZSYpOworICAgIFZhbHVl
VHlwZSogZ2V0KGNvbnN0IEtleVR5cGUmKTsKKyAgICAvLyBBZGQgYSB2YWx1ZSB0byB0aGUgdGFi
bGUKKyAgICBzdGQ6OnBhaXI8ZmluZF9pdGVyYXRvciwgYm9vbD4gV0FSTl9VTlVTRURfUkVUVVJO
IGFkZChWTSYsIGNvbnN0IFZhbHVlVHlwZSYgZW50cnkpOworICAgIC8vIFJlbW92ZSBhIHZhbHVl
IGZyb20gdGhlIHRhYmxlLgorICAgIHZvaWQgcmVtb3ZlKFZNJiwgY29uc3QgZmluZF9pdGVyYXRv
ciYgaXRlcik7CisgICAgdm9pZCByZW1vdmUoVk0mLCBjb25zdCBLZXlUeXBlJiBrZXkpOworCisg
ICAgLy8gUmV0dXJucyB0aGUgbnVtYmVyIG9mIHZhbHVlcyBpbiB0aGUgaGFzaHRhYmxlLgorICAg
IHVuc2lnbmVkIHNpemUoKSBjb25zdDsKKworICAgIC8vIENoZWNrcyBpZiB0aGVyZSBhcmUgYW55
IHZhbHVlcyBpbiB0aGUgaGFzaHRhYmxlLgorICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0OworCisg
ICAgLy8gTnVtYmVyIG9mIHNsb3RzIGluIHRoZSBwcm9wZXJ0eSBzdG9yYWdlIGFycmF5IGluIHVz
ZSwgaW5jbHVkZWQgZGVsZXRlZE9mZnNldHMuCisgICAgdW5zaWduZWQgcHJvcGVydHlTdG9yYWdl
U2l6ZSgpIGNvbnN0OworCisgICAgLy8gVXNlZCB0byBtYWludGFpbiBhIGxpc3Qgb2YgdW51c2Vk
IGVudHJpZXMgaW4gdGhlIHByb3BlcnR5IHN0b3JhZ2UuCisgICAgdm9pZCBjbGVhckRlbGV0ZWRP
ZmZzZXRzKCk7CisgICAgYm9vbCBoYXNEZWxldGVkT2Zmc2V0KCk7CisgICAgUHJvcGVydHlPZmZz
ZXQgZ2V0RGVsZXRlZE9mZnNldCgpOworICAgIHZvaWQgYWRkRGVsZXRlZE9mZnNldChQcm9wZXJ0
eU9mZnNldCk7CisgICAgCisgICAgUHJvcGVydHlPZmZzZXQgbmV4dE9mZnNldChQcm9wZXJ0eU9m
ZnNldCBpbmxpbmVDYXBhY2l0eSk7CisKKyAgICAvLyBDb3B5IHRoaXMgUHJvcGVydHlUYWJsZSwg
ZW5zdXJpbmcgdGhlIGNvcHkgaGFzIGF0IGxlYXN0IHRoZSBjYXBhY2l0eSBwcm92aWRlZC4KKyAg
ICBQcm9wZXJ0eVRhYmxlKiBjb3B5KFZNJiwgdW5zaWduZWQgbmV3Q2FwYWNpdHkpOworCisjaWZu
ZGVmIE5ERUJVRworICAgIHNpemVfdCBzaXplSW5NZW1vcnkoKTsKKyAgICB2b2lkIGNoZWNrQ29u
c2lzdGVuY3koKTsKKyNlbmRpZgorICAgIAorICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZJ
bmRleFNpemUoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoUHJvcGVydHlUYWJsZSwgbV9pbmRl
eFNpemUpOyB9CisgICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZkluZGV4TWFzaygpIHsgcmV0
dXJuIE9CSkVDVF9PRkZTRVRPRihQcm9wZXJ0eVRhYmxlLCBtX2luZGV4TWFzayk7IH0KKyAgICBz
dGF0aWMgcHRyZGlmZl90IG9mZnNldE9mSW5kZXgoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0Yo
UHJvcGVydHlUYWJsZSwgbV9pbmRleCk7IH0KKworICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWdu
ZWQgRW1wdHlFbnRyeUluZGV4ID0gMDsKKworcHJpdmF0ZToKKyAgICBQcm9wZXJ0eVRhYmxlKFZN
JiwgdW5zaWduZWQgaW5pdGlhbENhcGFjaXR5KTsKKyAgICBQcm9wZXJ0eVRhYmxlKFZNJiwgY29u
c3QgUHJvcGVydHlUYWJsZSYpOworICAgIFByb3BlcnR5VGFibGUoVk0mLCB1bnNpZ25lZCBpbml0
aWFsQ2FwYWNpdHksIGNvbnN0IFByb3BlcnR5VGFibGUmKTsKKworICAgIFByb3BlcnR5VGFibGUo
Y29uc3QgUHJvcGVydHlUYWJsZSYpOworCisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYpOwor
CisgICAgLy8gVXNlZCB0byBpbnNlcnQgYSB2YWx1ZSBrbm93biBub3QgdG8gYmUgaW4gdGhlIHRh
YmxlLCBhbmQgd2hlcmUgd2Uga25vdyBjYXBhY2l0eSB0byBiZSBhdmFpbGFibGUuCisgICAgdm9p
ZCByZWluc2VydChjb25zdCBWYWx1ZVR5cGUmIGVudHJ5KTsKKworICAgIC8vIFJlaGFzaCB0aGUg
dGFibGUuICBVc2VkIHRvIGdyb3csIG9yIHRvIHJlY292ZXIgZGVsZXRlZCBzbG90cy4KKyAgICB2
b2lkIHJlaGFzaChWTSYsIHVuc2lnbmVkIG5ld0NhcGFjaXR5KTsKKworICAgIC8vIFRoZSBjYXBh
Y2l0eSBvZiB0aGUgdGFibGUgb2YgdmFsdWVzIGlzIGhhbGYgb2YgdGhlIHNpemUgb2YgdGhlIGlu
ZGV4LgorICAgIHVuc2lnbmVkIHRhYmxlQ2FwYWNpdHkoKSBjb25zdDsKKworICAgIC8vIFdlIGtl
ZXAgYW4gZXh0cmEgZGVsZXRlZCBzbG90IGFmdGVyIHRoZSBhcnJheSB0byBtYWtlIGl0ZXJhdGlv
biB3b3JrLAorICAgIC8vIGFuZCB0byB1c2UgZm9yIGRlbGV0ZWQgdmFsdWVzLiBJbmRleCB2YWx1
ZXMgaW50byB0aGUgYXJyYXkgYXJlIDEtYmFzZWQsCisgICAgLy8gc28gdGhpcyBpcyB0YWJsZUNh
cGFjaXR5KCkgKyAxLgorICAgIC8vIEZvciBleGFtcGxlLCBpZiBtX3RhYmxlU2l6ZSBpcyAxNiwg
dGhlbiB0YWJsZUNhcGFjaXR5KCkgaXMgOCAtIGJ1dCB0aGUKKyAgICAvLyB2YWx1ZXMgYXJyYXkg
aXMgYWN0dWFsbHkgOSBsb25nICh0aGUgOXRoIHVzZWQgZm9yIHRoZSBkZWxldGVkIHZhbHVlLwor
ICAgIC8vIGl0ZXJhdGlvbiBndWFyZCkuICBUaGUgOCB2YWxpZCBlbnRyaWVzIGFyZSBudW1iZXJl
ZCAxLi44LCBzbyB0aGUKKyAgICAvLyBkZWxldGVkIGluZGV4IGlzIDkgKDAgYmVpbmcgcmVzZXJ2
ZWQgZm9yIGVtcHR5KS4KKyAgICB1bnNpZ25lZCBkZWxldGVkRW50cnlJbmRleCgpIGNvbnN0Owor
CisgICAgLy8gVXNlZCBpbiBpdGVyYXRvciBjcmVhdGlvbi9wcm9ncmVzc2lvbi4KKyAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBUPgorICAgIHN0YXRpYyBUKiBza2lwRGVsZXRlZEVudHJpZXMoVCogdmFs
dWVQdHIsIFQqIGVuZFZhbHVlUHRyKTsKKworICAgIC8vIFRoZSB0YWJsZSBvZiB2YWx1ZXMgbGll
cyBhZnRlciB0aGUgaGFzaCBpbmRleC4KKyAgICBWYWx1ZVR5cGUqIHRhYmxlKCk7CisgICAgY29u
c3QgVmFsdWVUeXBlKiB0YWJsZSgpIGNvbnN0OworCisgICAgVmFsdWVUeXBlKiB0YWJsZUVuZCgp
IHsgcmV0dXJuIHRhYmxlKCkgKyB1c2VkQ291bnQoKTsgfQorICAgIGNvbnN0IFZhbHVlVHlwZSog
dGFibGVFbmQoKSBjb25zdCB7IHJldHVybiB0YWJsZSgpICsgdXNlZENvdW50KCk7IH0KKworICAg
IC8vIHRvdGFsIG51bWJlciBvZiAgdXNlZCBlbnRyaWVzIGluIHRoZSB2YWx1ZXMgYXJyYXkgLSBi
eSBlaXRoZXIgdmFsaWQgZW50cmllcywgb3IgZGVsZXRlZCBvbmVzLgorICAgIHVuc2lnbmVkIHVz
ZWRDb3VudCgpIGNvbnN0OworCisgICAgLy8gVGhlIHNpemUgaW4gYnl0ZXMgb2YgZGF0YSBuZWVk
ZWQgZm9yIGJ5IHRoZSB0YWJsZS4KKyAgICBzaXplX3QgZGF0YVNpemUoKTsKKworICAgIC8vIENh
bGN1bGF0ZXMgdGhlIGFwcHJvcHJpYXRlIHRhYmxlIHNpemUgKHJvdW5kcyB1cCB0byBhIHBvd2Vy
IG9mIHR3bykuCisgICAgc3RhdGljIHVuc2lnbmVkIHNpemVGb3JDYXBhY2l0eSh1bnNpZ25lZCBj
YXBhY2l0eSk7CisKKyAgICAvLyBDaGVjayBpZiBjYXBhY2l0eSBpcyBhdmFpbGFibGUuCisgICAg
Ym9vbCBjYW5JbnNlcnQoKTsKKworICAgIHVuc2lnbmVkIG1faW5kZXhTaXplOworICAgIHVuc2ln
bmVkIG1faW5kZXhNYXNrOworICAgIHVuc2lnbmVkKiBtX2luZGV4OworICAgIHVuc2lnbmVkIG1f
a2V5Q291bnQ7CisgICAgdW5zaWduZWQgbV9kZWxldGVkQ291bnQ7CisgICAgc3RkOjp1bmlxdWVf
cHRyPFZlY3RvcjxQcm9wZXJ0eU9mZnNldD4+IG1fZGVsZXRlZE9mZnNldHM7CisKKyAgICBzdGF0
aWMgY29uc3RleHByIHVuc2lnbmVkIE1pbmltdW1UYWJsZVNpemUgPSAxNjsKK307CisKK2lubGlu
ZSBQcm9wZXJ0eVRhYmxlOjppdGVyYXRvciBQcm9wZXJ0eVRhYmxlOjpiZWdpbigpCit7CisgICAg
YXV0byogdGFibGVFbmQgPSB0aGlzLT50YWJsZUVuZCgpOworICAgIHJldHVybiBpdGVyYXRvcihz
a2lwRGVsZXRlZEVudHJpZXModGFibGUoKSwgdGFibGVFbmQpLCB0YWJsZUVuZCk7Cit9CisKK2lu
bGluZSBQcm9wZXJ0eVRhYmxlOjppdGVyYXRvciBQcm9wZXJ0eVRhYmxlOjplbmQoKQoreworICAg
IGF1dG8qIHRhYmxlRW5kID0gdGhpcy0+dGFibGVFbmQoKTsKKyAgICByZXR1cm4gaXRlcmF0b3Io
dGFibGVFbmQsIHRhYmxlRW5kKTsKK30KKworaW5saW5lIFByb3BlcnR5VGFibGU6OmNvbnN0X2l0
ZXJhdG9yIFByb3BlcnR5VGFibGU6OmJlZ2luKCkgY29uc3QKK3sKKyAgICBhdXRvKiB0YWJsZUVu
ZCA9IHRoaXMtPnRhYmxlRW5kKCk7CisgICAgcmV0dXJuIGNvbnN0X2l0ZXJhdG9yKHNraXBEZWxl
dGVkRW50cmllcyh0YWJsZSgpLCB0YWJsZUVuZCksIHRhYmxlRW5kKTsKK30KKworaW5saW5lIFBy
b3BlcnR5VGFibGU6OmNvbnN0X2l0ZXJhdG9yIFByb3BlcnR5VGFibGU6OmVuZCgpIGNvbnN0Cit7
CisgICAgYXV0byogdGFibGVFbmQgPSB0aGlzLT50YWJsZUVuZCgpOworICAgIHJldHVybiBjb25z
dF9pdGVyYXRvcih0YWJsZUVuZCwgdGFibGVFbmQpOworfQorCitpbmxpbmUgUHJvcGVydHlUYWJs
ZTo6ZmluZF9pdGVyYXRvciBQcm9wZXJ0eVRhYmxlOjpmaW5kKGNvbnN0IEtleVR5cGUmIGtleSkK
K3sKKyAgICBBU1NFUlQoa2V5KTsKKyAgICBBU1NFUlQoa2V5LT5pc0F0b20oKSB8fCBrZXktPmlz
U3ltYm9sKCkpOworICAgIHVuc2lnbmVkIGhhc2ggPSBJZGVudGlmaWVyUmVwSGFzaDo6aGFzaChr
ZXkpOworCisjaWYgRFVNUF9QUk9QRVJUWU1BUF9TVEFUUworICAgICsrcHJvcGVydHlNYXBIYXNo
VGFibGVTdGF0cy0+bnVtRmluZHM7CisjZW5kaWYKKworICAgIHdoaWxlICh0cnVlKSB7CisgICAg
ICAgIHVuc2lnbmVkIGVudHJ5SW5kZXggPSBtX2luZGV4W2hhc2ggJiBtX2luZGV4TWFza107Cisg
ICAgICAgIGlmIChlbnRyeUluZGV4ID09IEVtcHR5RW50cnlJbmRleCkKKyAgICAgICAgICAgIHJl
dHVybiBzdGQ6Om1ha2VfcGFpcigoVmFsdWVUeXBlKiludWxscHRyLCBoYXNoICYgbV9pbmRleE1h
c2spOworICAgICAgICBpZiAoa2V5ID09IHRhYmxlKClbZW50cnlJbmRleCAtIDFdLmtleSkKKyAg
ICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfcGFpcigmdGFibGUoKVtlbnRyeUluZGV4IC0gMV0s
IGhhc2ggJiBtX2luZGV4TWFzayk7CisKKyNpZiBEVU1QX1BST1BFUlRZTUFQX1NUQVRTCisgICAg
ICAgICsrcHJvcGVydHlNYXBIYXNoVGFibGVTdGF0cy0+bnVtQ29sbGlzaW9uczsKKyNlbmRpZgor
CisjaWYgRFVNUF9QUk9QRVJUWU1BUF9DT0xMSVNJT05TCisgICAgICAgIGRhdGFMb2coIlByb3Bl
cnR5VGFibGUgY29sbGlzaW9uIGZvciAiLCBrZXksICIgKCIsIGhhc2gsICIpXG4iKTsKKyAgICAg
ICAgZGF0YUxvZygiQ29sbGlkZWQgd2l0aCAiLCB0YWJsZSgpW2VudHJ5SW5kZXggLSAxXS5rZXks
ICIoIiwgSWRlbnRpZmllclJlcEhhc2g6Omhhc2godGFibGUoKVtlbnRyeUluZGV4IC0gMV0ua2V5
KSwgIilcbiIpOworI2VuZGlmCisKKyAgICAgICAgaGFzaCsrOworICAgIH0KK30KKworaW5saW5l
IFByb3BlcnR5VGFibGU6OlZhbHVlVHlwZSogUHJvcGVydHlUYWJsZTo6Z2V0KGNvbnN0IEtleVR5
cGUmIGtleSkKK3sKKyAgICBBU1NFUlQoa2V5KTsKKyAgICBBU1NFUlQoa2V5LT5pc0F0b20oKSB8
fCBrZXktPmlzU3ltYm9sKCkpOworICAgIEFTU0VSVChrZXkgIT0gUFJPUEVSVFlfTUFQX0RFTEVU
RURfRU5UUllfS0VZKTsKKworICAgIGlmICghbV9rZXlDb3VudCkKKyAgICAgICAgcmV0dXJuIG51
bGxwdHI7CisKKyAgICB1bnNpZ25lZCBoYXNoID0gSWRlbnRpZmllclJlcEhhc2g6Omhhc2goa2V5
KTsKKworI2lmIERVTVBfUFJPUEVSVFlNQVBfU1RBVFMKKyAgICArK3Byb3BlcnR5TWFwSGFzaFRh
YmxlU3RhdHMtPm51bUxvb2t1cHM7CisjZW5kaWYKKworICAgIHdoaWxlICh0cnVlKSB7CisgICAg
ICAgIHVuc2lnbmVkIGVudHJ5SW5kZXggPSBtX2luZGV4W2hhc2ggJiBtX2luZGV4TWFza107Cisg
ICAgICAgIGlmIChlbnRyeUluZGV4ID09IEVtcHR5RW50cnlJbmRleCkKKyAgICAgICAgICAgIHJl
dHVybiBudWxscHRyOworICAgICAgICBpZiAoa2V5ID09IHRhYmxlKClbZW50cnlJbmRleCAtIDFd
LmtleSkgeworICAgICAgICAgICAgQVNTRVJUKCFtX2RlbGV0ZWRPZmZzZXRzIHx8ICFtX2RlbGV0
ZWRPZmZzZXRzLT5jb250YWlucyh0YWJsZSgpW2VudHJ5SW5kZXggLSAxXS5vZmZzZXQpKTsKKyAg
ICAgICAgICAgIHJldHVybiAmdGFibGUoKVtlbnRyeUluZGV4IC0gMV07CisgICAgICAgIH0KKwor
I2lmIERVTVBfUFJPUEVSVFlNQVBfU1RBVFMKKyAgICAgICAgKytwcm9wZXJ0eU1hcEhhc2hUYWJs
ZVN0YXRzLT5udW1Mb29rdXBQcm9iaW5nOworI2VuZGlmCisKKyAgICAgICAgaGFzaCsrOworICAg
IH0KK30KKworaW5saW5lIHN0ZDo6cGFpcjxQcm9wZXJ0eVRhYmxlOjpmaW5kX2l0ZXJhdG9yLCBi
b29sPiBXQVJOX1VOVVNFRF9SRVRVUk4gUHJvcGVydHlUYWJsZTo6YWRkKFZNJiB2bSwgY29uc3Qg
VmFsdWVUeXBlJiBlbnRyeSkKK3sKKyAgICBBU1NFUlQoIW1fZGVsZXRlZE9mZnNldHMgfHwgIW1f
ZGVsZXRlZE9mZnNldHMtPmNvbnRhaW5zKGVudHJ5Lm9mZnNldCkpOworCisgICAgLy8gTG9vayBm
b3IgYSB2YWx1ZSB3aXRoIGEgbWF0Y2hpbmcga2V5IGFscmVhZHkgaW4gdGhlIGFycmF5LgorICAg
IGZpbmRfaXRlcmF0b3IgaXRlciA9IGZpbmQoZW50cnkua2V5KTsKKyAgICBpZiAoaXRlci5maXJz
dCkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV9wYWlyKGl0ZXIsIGZhbHNlKTsKKworI2lmIERV
TVBfUFJPUEVSVFlNQVBfU1RBVFMKKyAgICArK3Byb3BlcnR5TWFwSGFzaFRhYmxlU3RhdHMtPm51
bUFkZHM7CisjZW5kaWYKKworICAgIC8vIFJlZiB0aGUga2V5CisgICAgZW50cnkua2V5LT5yZWYo
KTsKKworICAgIC8vIGVuc3VyZSBjYXBhY2l0eSBpcyBhdmFpbGFibGUuCisgICAgaWYgKCFjYW5J
bnNlcnQoKSkgeworICAgICAgICByZWhhc2godm0sIG1fa2V5Q291bnQgKyAxKTsKKyAgICAgICAg
aXRlciA9IGZpbmQoZW50cnkua2V5KTsKKyAgICAgICAgQVNTRVJUKCFpdGVyLmZpcnN0KTsKKyAg
ICB9CisKKyAgICAvLyBBbGxvY2F0ZSBhIHNsb3QgaW4gdGhlIGhhc2h0YWJsZSwgYW5kIHNldCB0
aGUgaW5kZXggdG8gcmVmZXJlbmNlIHRoaXMuCisgICAgdW5zaWduZWQgZW50cnlJbmRleCA9IHVz
ZWRDb3VudCgpICsgMTsKKyAgICBtX2luZGV4W2l0ZXIuc2Vjb25kXSA9IGVudHJ5SW5kZXg7Cisg
ICAgaXRlci5maXJzdCA9ICZ0YWJsZSgpW2VudHJ5SW5kZXggLSAxXTsKKyAgICAqaXRlci5maXJz
dCA9IGVudHJ5OworCisgICAgKyttX2tleUNvdW50OworICAgIAorICAgIHJldHVybiBzdGQ6Om1h
a2VfcGFpcihpdGVyLCB0cnVlKTsKK30KKworaW5saW5lIHZvaWQgUHJvcGVydHlUYWJsZTo6cmVt
b3ZlKFZNJiB2bSwgY29uc3QgZmluZF9pdGVyYXRvciYgaXRlcikKK3sKKyAgICAvLyBSZW1vdmlu
ZyBhIGtleSB0aGF0IGRvZXNuJ3QgZXhpc3QgZG9lcyBub3RoaW5nIQorICAgIGlmICghaXRlci5m
aXJzdCkKKyAgICAgICAgcmV0dXJuOworCisjaWYgRFVNUF9QUk9QRVJUWU1BUF9TVEFUUworICAg
ICsrcHJvcGVydHlNYXBIYXNoVGFibGVTdGF0cy0+bnVtUmVtb3ZlczsKKyNlbmRpZgorCisgICAg
Ly8gUmVwbGFjZSB0aGlzIG9uZSBlbGVtZW50IHdpdGggdGhlIGRlbGV0ZWQgc2VudGluZWwuIEFs
c28gY2xlYXIgb3V0CisgICAgLy8gdGhlIGVudHJ5IHNvIHdlIGNhbiBpdGVyYXRlIGFsbCB0aGUg
ZW50cmllcyBhcyBuZWVkZWQuCisgICAgbV9pbmRleFtpdGVyLnNlY29uZF0gPSBkZWxldGVkRW50
cnlJbmRleCgpOworICAgIGl0ZXIuZmlyc3QtPmtleS0+ZGVyZWYoKTsKKyAgICBpdGVyLmZpcnN0
LT5rZXkgPSBQUk9QRVJUWV9NQVBfREVMRVRFRF9FTlRSWV9LRVk7CisKKyAgICBBU1NFUlQobV9r
ZXlDb3VudCA+PSAxKTsKKyAgICAtLW1fa2V5Q291bnQ7CisgICAgKyttX2RlbGV0ZWRDb3VudDsK
KworICAgIGlmIChtX2RlbGV0ZWRDb3VudCAqIDQgPj0gbV9pbmRleFNpemUpCisgICAgICAgIHJl
aGFzaCh2bSwgbV9rZXlDb3VudCk7Cit9CisKK2lubGluZSB2b2lkIFByb3BlcnR5VGFibGU6OnJl
bW92ZShWTSYgdm0sIGNvbnN0IEtleVR5cGUmIGtleSkKK3sKKyAgICByZW1vdmUodm0sIGZpbmQo
a2V5KSk7Cit9CisKKy8vIHJldHVybnMgdGhlIG51bWJlciBvZiB2YWx1ZXMgaW4gdGhlIGhhc2h0
YWJsZS4KK2lubGluZSB1bnNpZ25lZCBQcm9wZXJ0eVRhYmxlOjpzaXplKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gbV9rZXlDb3VudDsKK30KKworaW5saW5lIGJvb2wgUHJvcGVydHlUYWJsZTo6aXNF
bXB0eSgpIGNvbnN0Cit7CisgICAgcmV0dXJuICFtX2tleUNvdW50OworfQorCitpbmxpbmUgdW5z
aWduZWQgUHJvcGVydHlUYWJsZTo6cHJvcGVydHlTdG9yYWdlU2l6ZSgpIGNvbnN0Cit7CisgICAg
cmV0dXJuIHNpemUoKSArIChtX2RlbGV0ZWRPZmZzZXRzID8gbV9kZWxldGVkT2Zmc2V0cy0+c2l6
ZSgpIDogMCk7Cit9CisKK2lubGluZSB2b2lkIFByb3BlcnR5VGFibGU6OmNsZWFyRGVsZXRlZE9m
ZnNldHMoKQoreworICAgIG1fZGVsZXRlZE9mZnNldHMgPSBudWxscHRyOworfQorCitpbmxpbmUg
Ym9vbCBQcm9wZXJ0eVRhYmxlOjpoYXNEZWxldGVkT2Zmc2V0KCkKK3sKKyAgICByZXR1cm4gbV9k
ZWxldGVkT2Zmc2V0cyAmJiAhbV9kZWxldGVkT2Zmc2V0cy0+aXNFbXB0eSgpOworfQorCitpbmxp
bmUgUHJvcGVydHlPZmZzZXQgUHJvcGVydHlUYWJsZTo6Z2V0RGVsZXRlZE9mZnNldCgpCit7Cisg
ICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0ID0gbV9kZWxldGVkT2Zmc2V0cy0+bGFzdCgpOworICAg
IG1fZGVsZXRlZE9mZnNldHMtPnJlbW92ZUxhc3QoKTsKKyAgICByZXR1cm4gb2Zmc2V0OworfQor
CitpbmxpbmUgdm9pZCBQcm9wZXJ0eVRhYmxlOjphZGREZWxldGVkT2Zmc2V0KFByb3BlcnR5T2Zm
c2V0IG9mZnNldCkKK3sKKyAgICBpZiAoIW1fZGVsZXRlZE9mZnNldHMpCisgICAgICAgIG1fZGVs
ZXRlZE9mZnNldHMgPSBtYWtlVW5pcXVlPFZlY3RvcjxQcm9wZXJ0eU9mZnNldD4+KCk7CisgICAg
QVNTRVJUKCFtX2RlbGV0ZWRPZmZzZXRzLT5jb250YWlucyhvZmZzZXQpKTsKKyAgICBtX2RlbGV0
ZWRPZmZzZXRzLT5hcHBlbmQob2Zmc2V0KTsKK30KKworaW5saW5lIFByb3BlcnR5T2Zmc2V0IFBy
b3BlcnR5VGFibGU6Om5leHRPZmZzZXQoUHJvcGVydHlPZmZzZXQgaW5saW5lQ2FwYWNpdHkpCit7
CisgICAgaWYgKGhhc0RlbGV0ZWRPZmZzZXQoKSkKKyAgICAgICAgcmV0dXJuIGdldERlbGV0ZWRP
ZmZzZXQoKTsKKworICAgIHJldHVybiBvZmZzZXRGb3JQcm9wZXJ0eU51bWJlcihzaXplKCksIGlu
bGluZUNhcGFjaXR5KTsKK30KKworaW5saW5lIFByb3BlcnR5VGFibGUqIFByb3BlcnR5VGFibGU6
OmNvcHkoVk0mIHZtLCB1bnNpZ25lZCBuZXdDYXBhY2l0eSkKK3sKKyAgICBBU1NFUlQobmV3Q2Fw
YWNpdHkgPj0gbV9rZXlDb3VudCk7CisKKyAgICAvLyBGYXN0IGNhc2U7IGlmIHRoZSBuZXcgdGFi
bGUgd2lsbCBiZSB0aGUgc2FtZSBtX2luZGV4U2l6ZSBhcyB0aGlzIG9uZSwgd2UgY2FuIG1lbWNw
eSBpdCwKKyAgICAvLyBzYXZlIHJlaGFzaGluZyBhbGwga2V5cy4KKyAgICBpZiAoc2l6ZUZvckNh
cGFjaXR5KG5ld0NhcGFjaXR5KSA9PSBtX2luZGV4U2l6ZSkKKyAgICAgICAgcmV0dXJuIFByb3Bl
cnR5VGFibGU6OmNsb25lKHZtLCAqdGhpcyk7CisgICAgcmV0dXJuIFByb3BlcnR5VGFibGU6OmNs
b25lKHZtLCBuZXdDYXBhY2l0eSwgKnRoaXMpOworfQorCisjaWZuZGVmIE5ERUJVRworaW5saW5l
IHNpemVfdCBQcm9wZXJ0eVRhYmxlOjpzaXplSW5NZW1vcnkoKQoreworICAgIHNpemVfdCByZXN1
bHQgPSBzaXplb2YoUHJvcGVydHlUYWJsZSkgKyBkYXRhU2l6ZSgpOworICAgIGlmIChtX2RlbGV0
ZWRPZmZzZXRzKQorICAgICAgICByZXN1bHQgKz0gKG1fZGVsZXRlZE9mZnNldHMtPmNhcGFjaXR5
KCkgKiBzaXplb2YoUHJvcGVydHlPZmZzZXQpKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorI2Vu
ZGlmCisKK2lubGluZSB2b2lkIFByb3BlcnR5VGFibGU6OnJlaW5zZXJ0KGNvbnN0IFZhbHVlVHlw
ZSYgZW50cnkpCit7CisjaWYgRFVNUF9QUk9QRVJUWU1BUF9TVEFUUworICAgICsrcHJvcGVydHlN
YXBIYXNoVGFibGVTdGF0cy0+bnVtUmVpbnNlcnRzOworI2VuZGlmCisKKyAgICAvLyBVc2VkIHRv
IGluc2VydCBhIHZhbHVlIGtub3duIG5vdCB0byBiZSBpbiB0aGUgdGFibGUsIGFuZCB3aGVyZQor
ICAgIC8vIHdlIGtub3cgY2FwYWNpdHkgdG8gYmUgYXZhaWxhYmxlLgorICAgIEFTU0VSVChjYW5J
bnNlcnQoKSk7CisgICAgZmluZF9pdGVyYXRvciBpdGVyID0gZmluZChlbnRyeS5rZXkpOworICAg
IEFTU0VSVCghaXRlci5maXJzdCk7CisKKyAgICB1bnNpZ25lZCBlbnRyeUluZGV4ID0gdXNlZENv
dW50KCkgKyAxOworICAgIG1faW5kZXhbaXRlci5zZWNvbmRdID0gZW50cnlJbmRleDsKKyAgICB0
YWJsZSgpW2VudHJ5SW5kZXggLSAxXSA9IGVudHJ5OworCisgICAgKyttX2tleUNvdW50OworfQor
CitpbmxpbmUgdm9pZCBQcm9wZXJ0eVRhYmxlOjpyZWhhc2goVk0mIHZtLCB1bnNpZ25lZCBuZXdD
YXBhY2l0eSkKK3sKKyNpZiBEVU1QX1BST1BFUlRZTUFQX1NUQVRTCisgICAgKytwcm9wZXJ0eU1h
cEhhc2hUYWJsZVN0YXRzLT5udW1SZWhhc2hlczsKKyNlbmRpZgorCisgICAgc2l6ZV90IG9sZERh
dGFTaXplID0gZGF0YVNpemUoKTsKKyAgICB1bnNpZ25lZCogb2xkRW50cnlJbmRpY2VzID0gbV9p
bmRleDsKKyAgICBpdGVyYXRvciBpdGVyID0gdGhpcy0+YmVnaW4oKTsKKyAgICBpdGVyYXRvciBl
bmQgPSB0aGlzLT5lbmQoKTsKKworICAgIG1faW5kZXhTaXplID0gc2l6ZUZvckNhcGFjaXR5KG5l
d0NhcGFjaXR5KTsKKyAgICBtX2luZGV4TWFzayA9IG1faW5kZXhTaXplIC0gMTsKKyAgICBtX2tl
eUNvdW50ID0gMDsKKyAgICBtX2RlbGV0ZWRDb3VudCA9IDA7CisKKyAgICBtX2luZGV4ID0gc3Rh
dGljX2Nhc3Q8dW5zaWduZWQqPihQcm9wZXJ0eVRhYmxlTWFsbG9jOjp6ZXJvZWRNYWxsb2MoZGF0
YVNpemUoKSkpOworCisgICAgZm9yICg7IGl0ZXIgIT0gZW5kOyArK2l0ZXIpIHsKKyAgICAgICAg
QVNTRVJUKGNhbkluc2VydCgpKTsKKyAgICAgICAgcmVpbnNlcnQoKml0ZXIpOworICAgIH0KKwor
ICAgIFByb3BlcnR5VGFibGVNYWxsb2M6OmZyZWUob2xkRW50cnlJbmRpY2VzKTsKKworICAgIGlm
IChvbGREYXRhU2l6ZSA8IGRhdGFTaXplKCkpCisgICAgICAgIHZtLmhlYXAucmVwb3J0RXh0cmFN
ZW1vcnlBbGxvY2F0ZWQoZGF0YVNpemUoKSAtIG9sZERhdGFTaXplKTsKK30KKworaW5saW5lIHVu
c2lnbmVkIFByb3BlcnR5VGFibGU6OnRhYmxlQ2FwYWNpdHkoKSBjb25zdCB7IHJldHVybiBtX2lu
ZGV4U2l6ZSA+PiAxOyB9CisKK2lubGluZSB1bnNpZ25lZCBQcm9wZXJ0eVRhYmxlOjpkZWxldGVk
RW50cnlJbmRleCgpIGNvbnN0IHsgcmV0dXJuIHRhYmxlQ2FwYWNpdHkoKSArIDE7IH0KKwordGVt
cGxhdGU8dHlwZW5hbWUgVD4KK2lubGluZSBUKiBQcm9wZXJ0eVRhYmxlOjpza2lwRGVsZXRlZEVu
dHJpZXMoVCogdmFsdWVQdHIsIFQqIGVuZFZhbHVlUHRyKQoreworICAgIHdoaWxlICh2YWx1ZVB0
ciA8IGVuZFZhbHVlUHRyICYmIHZhbHVlUHRyLT5rZXkgPT0gUFJPUEVSVFlfTUFQX0RFTEVURURf
RU5UUllfS0VZKQorICAgICAgICArK3ZhbHVlUHRyOworICAgIHJldHVybiB2YWx1ZVB0cjsKK30K
KworaW5saW5lIFByb3BlcnR5VGFibGU6OlZhbHVlVHlwZSogUHJvcGVydHlUYWJsZTo6dGFibGUo
KQoreworICAgIC8vIFRoZSB0YWJsZSBvZiB2YWx1ZXMgbGllcyBhZnRlciB0aGUgaGFzaCBpbmRl
eC4KKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdF9wdHI8VmFsdWVUeXBlKj4obV9pbmRleCAr
IG1faW5kZXhTaXplKTsKK30KKworaW5saW5lIGNvbnN0IFByb3BlcnR5VGFibGU6OlZhbHVlVHlw
ZSogUHJvcGVydHlUYWJsZTo6dGFibGUoKSBjb25zdAoreworICAgIC8vIFRoZSB0YWJsZSBvZiB2
YWx1ZXMgbGllcyBhZnRlciB0aGUgaGFzaCBpbmRleC4KKyAgICByZXR1cm4gcmVpbnRlcnByZXRf
Y2FzdF9wdHI8Y29uc3QgVmFsdWVUeXBlKj4obV9pbmRleCArIG1faW5kZXhTaXplKTsKK30KKwor
aW5saW5lIHVuc2lnbmVkIFByb3BlcnR5VGFibGU6OnVzZWRDb3VudCgpIGNvbnN0Cit7CisgICAg
Ly8gVG90YWwgbnVtYmVyIG9mICB1c2VkIGVudHJpZXMgaW4gdGhlIHZhbHVlcyBhcnJheSAtIGJ5
IGVpdGhlciB2YWxpZCBlbnRyaWVzLCBvciBkZWxldGVkIG9uZXMuCisgICAgcmV0dXJuIG1fa2V5
Q291bnQgKyBtX2RlbGV0ZWRDb3VudDsKK30KKworaW5saW5lIHNpemVfdCBQcm9wZXJ0eVRhYmxl
OjpkYXRhU2l6ZSgpCit7CisgICAgLy8gVGhlIHNpemUgaW4gYnl0ZXMgb2YgZGF0YSBuZWVkZWQg
Zm9yIGJ5IHRoZSB0YWJsZS4KKyAgICAvLyBFbnN1cmUgdGhhdCB0aGlzIGZ1bmN0aW9uIGNhbiBi
ZSBjYWxsZWQgY29uY3VycmVudGx5LgorICAgIHVuc2lnbmVkIGluZGV4U2l6ZSA9IG1faW5kZXhT
aXplOworICAgIHJldHVybiBpbmRleFNpemUgKiBzaXplb2YodW5zaWduZWQpICsgKChpbmRleFNp
emUgPj4gMSkgKyAxKSAqIHNpemVvZihWYWx1ZVR5cGUpOworfQorCitpbmxpbmUgdW5zaWduZWQg
UHJvcGVydHlUYWJsZTo6c2l6ZUZvckNhcGFjaXR5KHVuc2lnbmVkIGNhcGFjaXR5KQoreworICAg
IGlmIChjYXBhY2l0eSA8IE1pbmltdW1UYWJsZVNpemUgLyAyKQorICAgICAgICByZXR1cm4gTWlu
aW11bVRhYmxlU2l6ZTsKKyAgICByZXR1cm4gbmV4dFBvd2VyT2YyKGNhcGFjaXR5ICsgMSkgKiAy
OworfQorCitpbmxpbmUgYm9vbCBQcm9wZXJ0eVRhYmxlOjpjYW5JbnNlcnQoKQoreworICAgIHJl
dHVybiB1c2VkQ291bnQoKSA8IHRhYmxlQ2FwYWNpdHkoKTsKK30KKworfSAvLyBuYW1lc3BhY2Ug
SlNDCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Q
cm9wZXJ0eVRhYmxlLmgKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fXwpBZGRlZDogc3ZuOmVvbC1zdHlsZQojIyAtMCwwICsx
ICMjCituYXRpdmUKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBwcm9wZXJ0eQpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlUYWJsZS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5VGFibGUuaAkocmV2aXNpb24gMjg2
MDExKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlUYWJsZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xMjksNyArMTI5LDcgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5
cGVuYW1lIENlbGxUeXBlLCBTdWJzcGFjZUFjY2Vzcz4KICAgICBzdGF0aWMgSXNvU3Vic3BhY2Uq
IHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7Ci0gICAgICAgIHJldHVybiAmdm0ucHJvcGVydHlU
YWJsZVNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnByb3BlcnR5VGFibGVTcGFjZSgpOwogICAg
IH0KIAogICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBuZWVkc0Rlc3RydWN0aW9uID0gdHJ1ZTsK
QEAgLTE3Myw4ICsxNzMsOCBAQCBwdWJsaWM6CiAgICAgLy8gQWRkIGEgdmFsdWUgdG8gdGhlIHRh
YmxlCiAgICAgc3RkOjpwYWlyPGZpbmRfaXRlcmF0b3IsIGJvb2w+IFdBUk5fVU5VU0VEX1JFVFVS
TiBhZGQoVk0mLCBjb25zdCBWYWx1ZVR5cGUmIGVudHJ5KTsKICAgICAvLyBSZW1vdmUgYSB2YWx1
ZSBmcm9tIHRoZSB0YWJsZS4KLSAgICB2b2lkIHJlbW92ZShWTSYsIGNvbnN0IGZpbmRfaXRlcmF0
b3ImIGl0ZXIpOwotICAgIHZvaWQgcmVtb3ZlKFZNJiwgY29uc3QgS2V5VHlwZSYga2V5KTsKKyAg
ICB2b2lkIHJlbW92ZShWTSYsIGNvbnN0IGZpbmRfaXRlcmF0b3ImKTsKKyAgICB2b2lkIHJlbW92
ZShWTSYsIGNvbnN0IEtleVR5cGUmKTsKIAogICAgIC8vIFJldHVybnMgdGhlIG51bWJlciBvZiB2
YWx1ZXMgaW4gdGhlIGhhc2h0YWJsZS4KICAgICB1bnNpZ25lZCBzaXplKCkgY29uc3Q7CkBAIC0y
MTksNyArMjE5LDcgQEAgcHJpdmF0ZToKICAgICAvLyBVc2VkIHRvIGluc2VydCBhIHZhbHVlIGtu
b3duIG5vdCB0byBiZSBpbiB0aGUgdGFibGUsIGFuZCB3aGVyZSB3ZSBrbm93IGNhcGFjaXR5IHRv
IGJlIGF2YWlsYWJsZS4KICAgICB2b2lkIHJlaW5zZXJ0KGNvbnN0IFZhbHVlVHlwZSYgZW50cnkp
OwogCi0gICAgLy8gUmVoYXNoIHRoZSB0YWJsZS4gIFVzZWQgdG8gZ3Jvdywgb3IgdG8gcmVjb3Zl
ciBkZWxldGVkIHNsb3RzLgorICAgIC8vIFJlaGFzaCB0aGUgdGFibGUuIFVzZWQgdG8gZ3Jvdywg
b3IgdG8gcmVjb3ZlciBkZWxldGVkIHNsb3RzLgogICAgIHZvaWQgcmVoYXNoKFZNJiwgdW5zaWdu
ZWQgbmV3Q2FwYWNpdHkpOwogCiAgICAgLy8gVGhlIGNhcGFjaXR5IG9mIHRoZSB0YWJsZSBvZiB2
YWx1ZXMgaXMgaGFsZiBvZiB0aGUgc2l6ZSBvZiB0aGUgaW5kZXguCkBAIC0yMzAsNyArMjMwLDcg
QEAgcHJpdmF0ZToKICAgICAvLyBzbyB0aGlzIGlzIHRhYmxlQ2FwYWNpdHkoKSArIDEuCiAgICAg
Ly8gRm9yIGV4YW1wbGUsIGlmIG1fdGFibGVTaXplIGlzIDE2LCB0aGVuIHRhYmxlQ2FwYWNpdHko
KSBpcyA4IC0gYnV0IHRoZQogICAgIC8vIHZhbHVlcyBhcnJheSBpcyBhY3R1YWxseSA5IGxvbmcg
KHRoZSA5dGggdXNlZCBmb3IgdGhlIGRlbGV0ZWQgdmFsdWUvCi0gICAgLy8gaXRlcmF0aW9uIGd1
YXJkKS4gIFRoZSA4IHZhbGlkIGVudHJpZXMgYXJlIG51bWJlcmVkIDEuLjgsIHNvIHRoZQorICAg
IC8vIGl0ZXJhdGlvbiBndWFyZCkuIFRoZSA4IHZhbGlkIGVudHJpZXMgYXJlIG51bWJlcmVkIDEu
LjgsIHNvIHRoZQogICAgIC8vIGRlbGV0ZWQgaW5kZXggaXMgOSAoMCBiZWluZyByZXNlcnZlZCBm
b3IgZW1wdHkpLgogICAgIHVuc2lnbmVkIGRlbGV0ZWRFbnRyeUluZGV4KCkgY29uc3Q7CiAKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZmxlY3RPYmplY3QuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWZsZWN0T2JqZWN0LmgJKHJl
dmlzaW9uIDI4NjAxMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZmxlY3RP
YmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtMzgsNyArMzgsNyBAQCBwdWJsaWM6CiAgICAgc3Rh
dGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFU
SUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShSZWZsZWN0T2JqZWN0LCBCYXNlKTsKLSAg
ICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBs
YWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgUmVmbGVjdE9iamVjdCogY3Jl
YXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHAuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHAuaAkocmV2aXNp
b24gMjg2MDExKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwLmgJKHdv
cmtpbmcgY29weSkKQEAgLTQ5LDcgKzQ5LDcgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVu
YW1lIENlbGxUeXBlLCBTdWJzcGFjZUFjY2VzcyBtb2RlPgogICAgIHN0YXRpYyBJc29TdWJzcGFj
ZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKLSAgICAgICAgcmV0dXJuICZ2bS5yZWdFeHBT
cGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5yZWdFeHBTcGFjZSgpOwogICAgIH0KIAogICAgIEpT
X0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWdFeHAqIGNyZWF0ZShWTSYsIGNvbnN0IFN0cmluZyYg
cGF0dGVybiwgT3B0aW9uU2V0PFlhcnI6OkZsYWdzPik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9SZWdFeHBPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9SZWdFeHBPYmplY3QuaAkocmV2aXNpb24gMjg2MDExKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwT2JqZWN0LmgJKHdvcmtpbmcgY29weSkK
QEAgLTM2LDcgKzM2LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3Bh
Y2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAgICAgc3RhdGljX2Fzc2VydCghQ2VsbFR5cGU6Om5l
ZWRzRGVzdHJ1Y3Rpb24sICIiKTsKLSAgICAgICAgcmV0dXJuICZ2bS5yZWdFeHBPYmplY3RTcGFj
ZTsKKyAgICAgICAgcmV0dXJuICZ2bS5yZWdFeHBPYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAg
IHN0YXRpYyBjb25zdGV4cHIgdWludHB0cl90IGxhc3RJbmRleElzTm90V3JpdGFibGVGbGFnID0g
MGIwMTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cFByb3RvdHlw
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cFBy
b3RvdHlwZS5oCShyZXZpc2lvbiAyODYwMTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9SZWdFeHBQcm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzQsNyArMzQsNyBAQCBw
dWJsaWM6CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAg
ewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShSZWdFeHBQcm90
b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAg
ICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBS
ZWdFeHBQcm90b3R5cGUqIGNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIFN0cnVjdHVyZSogc3RydWN0dXJlKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvUmVnRXhwU3RyaW5nSXRlcmF0b3JQcm90b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBTdHJpbmdJdGVyYXRvclByb3RvdHlwZS5o
CShyZXZpc2lvbiAyODYwMTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdF
eHBTdHJpbmdJdGVyYXRvclByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw3ICszOSw3
IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkK
ICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKFJlZ0V4
cFN0cmluZ0l0ZXJhdG9yUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFp
bk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAg
ICB9CiAKICAgICBzdGF0aWMgUmVnRXhwU3RyaW5nSXRlcmF0b3JQcm90b3R5cGUqIGNyZWF0ZShW
TSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJl
KQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2NvcGVkQXJndW1lbnRzLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TY29wZWRBcmd1
bWVudHMuY3BwCShyZXZpc2lvbiAyODYwMTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9TY29wZWRBcmd1bWVudHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NSw3ICs1NSw3IEBA
IFNjb3BlZEFyZ3VtZW50cyogU2NvcGVkQXJndW1lbnRzOjpjcmVhdGUKICAgICBXcml0ZUJhcnJp
ZXI8VW5rbm93bj4qIHN0b3JhZ2UgPSBudWxscHRyOwogICAgIGlmICh0b3RhbExlbmd0aCA+IHRh
YmxlLT5sZW5ndGgoKSkgewogICAgICAgICBDaGVja2VkPHVuc2lnbmVkPiBvdmVyZmxvd0xlbmd0
aCA9IHRvdGFsTGVuZ3RoIC0gdGFibGUtPmxlbmd0aCgpOwotICAgICAgICBzdG9yYWdlID0gc3Rh
dGljX2Nhc3Q8V3JpdGVCYXJyaWVyPFVua25vd24+Kj4odm0uanNWYWx1ZUdpZ2FjYWdlQXV4aWxp
YXJ5U3BhY2UuYWxsb2NhdGVOb25WaXJ0dWFsKHZtLCBvdmVyZmxvd0xlbmd0aCAqIHNpemVvZihX
cml0ZUJhcnJpZXI8VW5rbm93bj4pLCBudWxscHRyLCBBbGxvY2F0aW9uRmFpbHVyZU1vZGU6OkFz
c2VydCkpOworICAgICAgICBzdG9yYWdlID0gc3RhdGljX2Nhc3Q8V3JpdGVCYXJyaWVyPFVua25v
d24+Kj4odm0uanNWYWx1ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UoKS5hbGxvY2F0ZU5vblZpcnR1
YWwodm0sIG92ZXJmbG93TGVuZ3RoICogc2l6ZW9mKFdyaXRlQmFycmllcjxVbmtub3duPiksIG51
bGxwdHIsIEFsbG9jYXRpb25GYWlsdXJlTW9kZTo6QXNzZXJ0KSk7CiAgICAgfQogCiAgICAgU2Nv
cGVkQXJndW1lbnRzKiByZXN1bHQgPSBuZXcgKApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvU2NvcGVkQXJndW1lbnRzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU2NvcGVkQXJndW1lbnRzLmgJKHJldmlzaW9uIDI4NjAxMSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Njb3BlZEFyZ3VtZW50cy5oCSh3b3JraW5nIGNv
cHkpCkBAIC00Nyw3ICs0Nyw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1
YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAgIHN0YXRpY19hc3NlcnQoIUNlbGxUeXBl
OjpuZWVkc0Rlc3RydWN0aW9uLCAiIik7Ci0gICAgICAgIHJldHVybiAmdm0uc2NvcGVkQXJndW1l
bnRzU3BhY2U7CisgICAgICAgIHJldHVybiAmdm0uc2NvcGVkQXJndW1lbnRzU3BhY2UoKTsKICAg
ICB9CiAKICAgICAvLyBDcmVhdGVzIGFuIGFyZ3VtZW50cyBvYmplY3QgYnV0IGxlYXZlcyBpdCB1
bmluaXRpYWxpemVkLiBUaGlzIGlzIGRhbmdlcm91cyBpZiB3ZSBHQyByaWdodApJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2V0SXRlcmF0b3JQcm90b3R5cGUuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TZXRJdGVyYXRvclByb3RvdHlw
ZS5oCShyZXZpc2lvbiAyODYwMTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
ZXRJdGVyYXRvclByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw3ICszNyw3IEBAIHB1
YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7
CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKFNldEl0ZXJhdG9y
UHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOwor
ICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0
aWMgU2V0SXRlcmF0b3JQcm90b3R5cGUqIGNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlKQpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU2V0UHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvU2V0UHJvdG90eXBlLmgJKHJldmlzaW9uIDI4NjAxMSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NldFByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC0zNyw3ICszNyw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNw
YWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNF
X1NIQVJBQkxFKFNldFByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5P
YmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAg
fQogCiAgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6
OlN0cnVjdHVyZUZsYWdzIHwgSGFzU3RhdGljUHJvcGVydHlUYWJsZTsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1NoYWRvd1JlYWxtUHJvdG90eXBlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2hhZG93UmVhbG1Qcm90b3R5cGUuaAko
cmV2aXNpb24gMjg2MDExKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2hhZG93
UmVhbG1Qcm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzksNyArMzksNyBAQCBwdWJsaWM6
CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewogICAg
ICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShTaGFkb3dSZWFsbVByb3Rv
dHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAg
ICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIFNo
YWRvd1JlYWxtUHJvdG90eXBlKiBjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NwYXJzZUFycmF5VmFsdWVNYXAu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TcGFyc2VBcnJh
eVZhbHVlTWFwLmgJKHJldmlzaW9uIDI4NjAxMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1NwYXJzZUFycmF5VmFsdWVNYXAuaAkod29ya2luZyBjb3B5KQpAQCAtMTEwLDcgKzEx
MCw3IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vic3BhY2VB
Y2Nlc3M+CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAg
ewotICAgICAgICByZXR1cm4gJnZtLnNwYXJzZUFycmF5VmFsdWVNYXBTcGFjZTsKKyAgICAgICAg
cmV0dXJuICZ2bS5zcGFyc2VBcnJheVZhbHVlTWFwU3BhY2UoKTsKICAgICB9CiAgICAgCiAgICAg
c3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBK
U1ZhbHVlIHByb3RvdHlwZSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
dHJpbmdJdGVyYXRvclByb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1N0cmluZ0l0ZXJhdG9yUHJvdG90eXBlLmgJKHJldmlzaW9uIDI4NjAxMSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ0l0ZXJhdG9yUHJvdG90eXBl
LmgJKHdvcmtpbmcgY29weSkKQEAgLTM5LDcgKzM5LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJ
c29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FT
U0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoU3RyaW5nSXRlcmF0b3JQcm90b3R5cGUsIEJhc2Up
OwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAm
dm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBTdHJpbmdJdGVyYXRv
clByb3RvdHlwZSogY3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9TdHJpbmdPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9TdHJpbmdPYmplY3QuaAkocmV2aXNpb24gMjg2MDExKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU3RyaW5nT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTMzLDcgKzMz
LDcgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lLCBTdWJzcGFjZUFjY2VzcyBtb2Rl
PgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKLSAg
ICAgICAgcmV0dXJuICZ2bS5zdHJpbmdPYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5z
dHJpbmdPYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBTdHJpbmdPYmplY3QqIGNy
ZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwCShyZXZpc2lvbiAyODYwMTEpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0zMSw4ICszMSw4IEBACiAjaW5jbHVkZSAiQnVpbHRpbk5hbWVzLmgiCiAjaW5jbHVkZSAiRHVt
cENvbnRleHQuaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCi0jaW5jbHVkZSAiUHJvcGVydHlN
YXBIYXNoVGFibGUuaCIKICNpbmNsdWRlICJQcm9wZXJ0eU5hbWVBcnJheS5oIgorI2luY2x1ZGUg
IlByb3BlcnR5VGFibGUuaCIKICNpbmNsdWRlIDx3dGYvQ29tbWFQcmludGVyLmg+CiAjaW5jbHVk
ZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmgJKHJldmlzaW9uIDI4NjAx
MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xMjgsNyArMTI4LDcgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1l
IENlbGxUeXBlLCBTdWJzcGFjZUFjY2Vzcz4KICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNw
YWNlRm9yKFZNJiB2bSkKICAgICB7Ci0gICAgICAgIHJldHVybiAmdm0uc3RydWN0dXJlU3BhY2U7
CisgICAgICAgIHJldHVybiAmdm0uc3RydWN0dXJlU3BhY2UoKTsKICAgICB9CiAKICAgICBKU19F
WFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBpc1ZhbGlkUHJvdG90eXBlKEpTVmFsdWUpOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlQ2hhaW4uY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUNoYWluLmNw
cAkocmV2aXNpb24gMjg2MDExKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3Ry
dWN0dXJlQ2hhaW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00OCw3ICs0OCw3IEBAIFN0cnVjdHVy
ZUNoYWluKiBTdHJ1Y3R1cmVDaGFpbjo6Y3JlYXRlKFYKICAgICAgICAgKytzaXplOwogICAgICsr
c2l6ZTsgLy8gU2VudGluZWwgbnVsbHB0ci4KICAgICBzaXplX3QgYnl0ZXMgPSBDaGVja2VkPHNp
emVfdD4oc2l6ZSkgKiBzaXplb2YoU3RydWN0dXJlSUQpOwotICAgIFN0cnVjdHVyZUlEKiB2ZWN0
b3IgPSBzdGF0aWNfY2FzdDxTdHJ1Y3R1cmVJRCo+KHZtLmpzVmFsdWVHaWdhY2FnZUF1eGlsaWFy
eVNwYWNlLmFsbG9jYXRlTm9uVmlydHVhbCh2bSwgYnl0ZXMsIG51bGxwdHIsIEFsbG9jYXRpb25G
YWlsdXJlTW9kZTo6QXNzZXJ0KSk7CisgICAgU3RydWN0dXJlSUQqIHZlY3RvciA9IHN0YXRpY19j
YXN0PFN0cnVjdHVyZUlEKj4odm0uanNWYWx1ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UoKS5hbGxv
Y2F0ZU5vblZpcnR1YWwodm0sIGJ5dGVzLCBudWxscHRyLCBBbGxvY2F0aW9uRmFpbHVyZU1vZGU6
OkFzc2VydCkpOwogICAgIG1lbXNldCh2ZWN0b3IsIDAsIGJ5dGVzKTsKICAgICBTdHJ1Y3R1cmVD
aGFpbiogY2hhaW4gPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxTdHJ1Y3R1cmVDaGFpbj4o
dm0pKSBTdHJ1Y3R1cmVDaGFpbih2bSwgdm0uc3RydWN0dXJlQ2hhaW5TdHJ1Y3R1cmUuZ2V0KCks
IHZlY3Rvcik7CiAgICAgY2hhaW4tPmZpbmlzaENyZWF0aW9uKHZtLCBoZWFkKTsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUNoYWluLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlQ2hhaW4uaAkocmV2aXNp
b24gMjg2MDExKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlQ2hh
aW4uaAkod29ya2luZyBjb3B5KQpAQCAtNDYsNyArNDYsNyBAQCBwdWJsaWM6CiAgICAgdGVtcGxh
dGU8dHlwZW5hbWUgQ2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNzPgogICAgIHN0YXRpYyBJc29TdWJz
cGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKLSAgICAgICAgcmV0dXJuICZ2bS5zdHJ1
Y3R1cmVDaGFpblNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnN0cnVjdHVyZUNoYWluU3BhY2Uo
KTsKICAgICB9CiAKICAgICBzdGF0aWMgU3RydWN0dXJlQ2hhaW4qIGNyZWF0ZShWTSYsIEpTT2Jq
ZWN0Kik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVJbmxp
bmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0
dXJlSW5saW5lcy5oCShyZXZpc2lvbiAyODYwMTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9TdHJ1Y3R1cmVJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTI5LDcgKzI5LDcg
QEAKICNpbmNsdWRlICJKU0FycmF5QnVmZmVyVmlldy5oIgogI2luY2x1ZGUgIkpTQ0pTVmFsdWVJ
bmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKLSNpbmNsdWRlICJQcm9wZXJ0
eU1hcEhhc2hUYWJsZS5oIgorI2luY2x1ZGUgIlByb3BlcnR5VGFibGUuaCIKICNpbmNsdWRlICJT
dHJ1Y3R1cmUuaCIKICNpbmNsdWRlICJTdHJ1Y3R1cmVDaGFpbi5oIgogI2luY2x1ZGUgIlN0cnVj
dHVyZVJhcmVEYXRhSW5saW5lcy5oIgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU3RydWN0dXJlUmFyZURhdGEuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9TdHJ1Y3R1cmVSYXJlRGF0YS5oCShyZXZpc2lvbiAyODYwMTEpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVSYXJlRGF0YS5oCSh3b3JraW5nIGNv
cHkpCkBAIC02Niw3ICs2Niw3IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxs
VHlwZSwgU3Vic3BhY2VBY2Nlc3M+CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZv
cihWTSYgdm0pCiAgICAgewotICAgICAgICByZXR1cm4gJnZtLnN0cnVjdHVyZVJhcmVEYXRhU3Bh
Y2U7CisgICAgICAgIHJldHVybiAmdm0uc3RydWN0dXJlUmFyZURhdGFTcGFjZSgpOwogICAgIH0K
IAogICAgIHN0YXRpYyBTdHJ1Y3R1cmVSYXJlRGF0YSogY3JlYXRlKFZNJiwgU3RydWN0dXJlKik7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xQcm90b3R5cGUuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xQcm90b3R5
cGUuaAkocmV2aXNpb24gMjg2MDExKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
U3ltYm9sUHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQxLDcgKzQxLDcgQEAgcHVibGlj
OgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAg
ICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoU3ltYm9sUHJvdG90eXBl
LCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICBy
ZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgU3ltYm9s
UHJvdG90eXBlKiBjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1N5bWJvbFRhYmxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU3ltYm9sVGFibGUuaAkocmV2aXNpb24gMjg2MDExKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvU3ltYm9sVGFibGUuaAkod29ya2luZyBjb3B5KQpAQCAtNDU2LDcgKzQ1Niw3
IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vic3BhY2VBY2Nl
c3M+CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewot
ICAgICAgICByZXR1cm4gJnZtLnN5bWJvbFRhYmxlU3BhY2U7CisgICAgICAgIHJldHVybiAmdm0u
c3ltYm9sVGFibGVTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBTeW1ib2xUYWJsZSogY3Jl
YXRlKFZNJiB2bSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFs
Q2FsZW5kYXJQcm90b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9UZW1wb3JhbENhbGVuZGFyUHJvdG90eXBlLmgJKHJldmlzaW9uIDI4NjAxMSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsQ2FsZW5kYXJQcm90b3R5cGUu
aAkod29ya2luZyBjb3B5KQpAQCAtMzgsNyArMzgsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIElz
b1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNT
RVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShUZW1wb3JhbENhbGVuZGFyUHJvdG90eXBlLCBCYXNl
KTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4g
JnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgVGVtcG9yYWxDYWxl
bmRhclByb3RvdHlwZSogY3JlYXRlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqKTsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsRHVyYXRpb25Qcm90
b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1w
b3JhbER1cmF0aW9uUHJvdG90eXBlLmgJKHJldmlzaW9uIDI4NjAxMSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsRHVyYXRpb25Qcm90b3R5cGUuaAkod29ya2luZyBj
b3B5KQpAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMjEgU29ueSBJbnRl
cmFjdGl2ZSBFbnRlcnRhaW5tZW50IEluYy4KKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
QEAgLTM4LDcgKzM5LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3Bh
Y2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0Vf
U0hBUkFCTEUoVGVtcG9yYWxEdXJhdGlvblByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVy
biAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNw
YWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIFRlbXBvcmFsRHVyYXRpb25Qcm90b3R5cGUqIGNy
ZWF0ZShWTSYsIFN0cnVjdHVyZSopOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvVGVtcG9yYWxJbnN0YW50UHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxJbnN0YW50UHJvdG90eXBlLmgJKHJldmlzaW9uIDI4
NjAxMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsSW5zdGFudFBy
b3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdo
dCAoQykgMjAyMSBJZ2FsaWEgUy5MLgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAt
MzgsNyArMzksNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZv
cihWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFS
QUJMRShUZW1wb3JhbEluc3RhbnRQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZt
LnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgp
OwogICAgIH0KIAogICAgIHN0YXRpYyBUZW1wb3JhbEluc3RhbnRQcm90b3R5cGUqIGNyZWF0ZShW
TSYsIFN0cnVjdHVyZSopOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVt
cG9yYWxOb3cuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9U
ZW1wb3JhbE5vdy5oCShyZXZpc2lvbiAyODYwMTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9UZW1wb3JhbE5vdy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNiBAQAogLyoK
ICAqICBDb3B5cmlnaHQgKEMpIDIwMjEgSWdhbGlhLCBTLkwuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiAgQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmli
dXRlIGl0IGFuZC9vcgogICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBM
ZXNzZXIgR2VuZXJhbCBQdWJsaWMKQEAgLTMyLDcgKzMzLDcgQEAgcHVibGljOgogICAgIHN0YXRp
YyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElD
X0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoVGVtcG9yYWxOb3csIEJhc2UpOwotICAgICAg
ICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5P
YmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBUZW1wb3JhbE5vdyogY3JlYXRlKFZN
JiwgU3RydWN0dXJlKik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1w
b3JhbE9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1RlbXBvcmFsT2JqZWN0LmgJKHJldmlzaW9uIDI4NjAxMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1RlbXBvcmFsT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw3
IEBACiAvKgogICogIENvcHlyaWdodCAoQykgMjAyMSBJZ2FsaWEsIFMuTC4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqICBDb3B5cmlnaHQgKEMpIDIwMjEgU29ueSBJbnRlcmFjdGl2ZSBFbnRlcnRh
aW5tZW50IEluYy4KKyAqICBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICoKICAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh
biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBv
ZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwpAQCAtNjQsNyArNjUsNyBAQCBwdWJsaWM6
CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewogICAg
ICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShUZW1wb3JhbE9iamVjdCwg
QmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0
dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIFRlbXBvcmFs
T2JqZWN0KiBjcmVhdGUoVk0mLCBTdHJ1Y3R1cmUqKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1RlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxQbGFpblRpbWVQcm90b3R5cGUu
aAkocmV2aXNpb24gMjg2MDExKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVt
cG9yYWxQbGFpblRpbWVQcm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAK
IC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLgorICogQ29weXJpZ2h0IChDKSAy
MDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwpAQCAtMzgsNyArMzgsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIElzb1N1YnNw
YWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lT
T19TVUJTUEFDRV9TSEFSQUJMRShUZW1wb3JhbFBsYWluVGltZVByb3RvdHlwZSwgQmFzZSk7Ci0g
ICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5w
bGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIFRlbXBvcmFsUGxhaW5UaW1l
UHJvdG90eXBlKiBjcmVhdGUoVk0mLCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSopOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxUaW1lWm9uZVByb3RvdHlw
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFs
VGltZVpvbmVQcm90b3R5cGUuaAkocmV2aXNpb24gMjg2MDExKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxUaW1lWm9uZVByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC0zOCw3ICszOCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNw
YWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNF
X1NIQVJBQkxFKFRlbXBvcmFsVGltZVpvbmVQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1
cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RT
cGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBUZW1wb3JhbFRpbWVab25lUHJvdG90eXBlKiBj
cmVhdGUoVk0mLCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSopOwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1ZNLmNwcAkocmV2aXNpb24gMjg2MDExKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMiwyMSArMzIsMTUg
QEAKICNpbmNsdWRlICJBY2Nlc3NDYXNlLmgiCiAjaW5jbHVkZSAiQWdncmVnYXRlRXJyb3IuaCIK
ICNpbmNsdWRlICJBcmdMaXN0LmgiCi0jaW5jbHVkZSAiQmlnSW50T2JqZWN0LmgiCi0jaW5jbHVk
ZSAiQm9vbGVhbk9iamVjdC5oIgotI2luY2x1ZGUgIkJyYW5kZWRTdHJ1Y3R1cmUuaCIKICNpbmNs
dWRlICJCdWlsdGluRXhlY3V0YWJsZXMuaCIKICNpbmNsdWRlICJCeXRlY29kZUludHJpbnNpY1Jl
Z2lzdHJ5LmgiCiAjaW5jbHVkZSAiQ2hlY2twb2ludE9TUkV4aXRTaWRlU3RhdGUuaCIKLSNpbmNs
dWRlICJDbG9uZWRBcmd1bWVudHMuaCIKICNpbmNsdWRlICJDb2RlQmxvY2suaCIKICNpbmNsdWRl
ICJDb2RlQ2FjaGUuaCIKICNpbmNsdWRlICJDb21tb25JZGVudGlmaWVycy5oIgogI2luY2x1ZGUg
IkNvbnRyb2xGbG93UHJvZmlsZXIuaCIKICNpbmNsdWRlICJDdXN0b21HZXR0ZXJTZXR0ZXIuaCIK
ICNpbmNsdWRlICJET01BdHRyaWJ1dGVHZXR0ZXJTZXR0ZXIuaCIKLSNpbmNsdWRlICJEYXRlSW5z
dGFuY2UuaCIKLSNpbmNsdWRlICJEZWJ1Z2dlclNjb3BlLmgiCiAjaW5jbHVkZSAiRGVmZXJyZWRX
b3JrVGltZXIuaCIKICNpbmNsdWRlICJEaXNhc3NlbWJsZXIuaCIKICNpbmNsdWRlICJEb3VibGVQ
cmVkaWN0aW9uRnV6emVyQWdlbnQuaCIKQEAgLTU1LDcgKzQ5LDYgQEAKICNpbmNsdWRlICJFeGNl
cHRpb24uaCIKICNpbmNsdWRlICJFeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlLmgiCiAjaW5jbHVk
ZSAiRlRMVGh1bmtzLmgiCi0jaW5jbHVkZSAiRmFzdE1hbGxvY0FsaWduZWRNZW1vcnlBbGxvY2F0
b3IuaCIKICNpbmNsdWRlICJGaWxlQmFzZWRGdXp6ZXJBZ2VudC5oIgogI2luY2x1ZGUgIkZ1bmN0
aW9uQ29kZUJsb2NrLmgiCiAjaW5jbHVkZSAiRnVuY3Rpb25FeGVjdXRhYmxlLmgiCkBAIC02Niw3
NyArNTksMjUgQEAKICNpbmNsdWRlICJIZWFwUHJvZmlsZXIuaCIKICNpbmNsdWRlICJJbnRlcnBy
ZXRlci5oIgogI2luY2x1ZGUgIkludGxDYWNoZS5oIgotI2luY2x1ZGUgIkludGxDb2xsYXRvci5o
IgotI2luY2x1ZGUgIkludGxEYXRlVGltZUZvcm1hdC5oIgotI2luY2x1ZGUgIkludGxEaXNwbGF5
TmFtZXMuaCIKLSNpbmNsdWRlICJJbnRsTGlzdEZvcm1hdC5oIgotI2luY2x1ZGUgIkludGxMb2Nh
bGUuaCIKLSNpbmNsdWRlICJJbnRsTnVtYmVyRm9ybWF0LmgiCi0jaW5jbHVkZSAiSW50bFBsdXJh
bFJ1bGVzLmgiCi0jaW5jbHVkZSAiSW50bFJlbGF0aXZlVGltZUZvcm1hdC5oIgotI2luY2x1ZGUg
IkludGxTZWdtZW50SXRlcmF0b3IuaCIKLSNpbmNsdWRlICJJbnRsU2VnbWVudGVyLmgiCi0jaW5j
bHVkZSAiSW50bFNlZ21lbnRzLmgiCi0jaW5jbHVkZSAiSXNvSGVhcENlbGxUeXBlLmgiCi0jaW5j
bHVkZSAiSXNvSW5saW5lZEhlYXBDZWxsVHlwZS5oIgogI2luY2x1ZGUgIkpJVENvZGUuaCIKICNp
bmNsdWRlICJKSVRPcGVyYXRpb25MaXN0LmgiCiAjaW5jbHVkZSAiSklUU2l6ZVN0YXRpc3RpY3Mu
aCIKICNpbmNsdWRlICJKSVRUaHVua3MuaCIKICNpbmNsdWRlICJKSVRXb3JrbGlzdC5oIgotI2lu
Y2x1ZGUgIkpTQVBJR2xvYmFsT2JqZWN0LmgiCiAjaW5jbHVkZSAiSlNBUElWYWx1ZVdyYXBwZXIu
aCIKLSNpbmNsdWRlICJKU0FQSVdyYXBwZXJPYmplY3QuaCIKLSNpbmNsdWRlICJKU0FycmF5Lmgi
Ci0jaW5jbHVkZSAiSlNBcnJheUJ1ZmZlci5oIgotI2luY2x1ZGUgIkpTQXJyYXlJdGVyYXRvci5o
IgotI2luY2x1ZGUgIkpTQXN5bmNHZW5lcmF0b3IuaCIKICNpbmNsdWRlICJKU0JpZ0ludC5oIgot
I2luY2x1ZGUgIkpTQm91bmRGdW5jdGlvbi5oIgotI2luY2x1ZGUgIkpTQ2FsbGJhY2tDb25zdHJ1
Y3Rvci5oIgotI2luY2x1ZGUgIkpTQ2FsbGJhY2tGdW5jdGlvbi5oIgotI2luY2x1ZGUgIkpTQ2Fs
bGJhY2tPYmplY3QuaCIKLSNpbmNsdWRlICJKU0NhbGxlZS5oIgotI2luY2x1ZGUgIkpTQ3VzdG9t
R2V0dGVyRnVuY3Rpb24uaCIKLSNpbmNsdWRlICJKU0N1c3RvbVNldHRlckZ1bmN0aW9uLmgiCi0j
aW5jbHVkZSAiSlNEZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuaCIKLSNpbmNsdWRlICJK
U0ZpbmFsaXphdGlvblJlZ2lzdHJ5LmgiCi0jaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgotI2luY2x1
ZGUgIkpTR2xvYmFsTGV4aWNhbEVudmlyb25tZW50LmgiCiAjaW5jbHVkZSAiSlNHbG9iYWxPYmpl
Y3QuaCIKICNpbmNsdWRlICJKU0ltbXV0YWJsZUJ1dHRlcmZseS5oIgotI2luY2x1ZGUgIkpTSW5q
ZWN0ZWRTY3JpcHRIb3N0LmgiCi0jaW5jbHVkZSAiSlNKYXZhU2NyaXB0Q2FsbEZyYW1lLmgiCiAj
aW5jbHVkZSAiSlNMb2NrLmgiCiAjaW5jbHVkZSAiSlNNYXAuaCIKLSNpbmNsdWRlICJKU01hcEl0
ZXJhdG9yLmgiCi0jaW5jbHVkZSAiSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QuaCIKLSNpbmNsdWRl
ICJKU01vZHVsZVJlY29yZC5oIgotI2luY2x1ZGUgIkpTTmF0aXZlU3RkRnVuY3Rpb24uaCIKICNp
bmNsdWRlICJKU1Byb21pc2UuaCIKICNpbmNsdWRlICJKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3Iu
aCIKLSNpbmNsdWRlICJKU1Byb3h5LmgiCiAjaW5jbHVkZSAiSlNTY3JpcHRGZXRjaFBhcmFtZXRl
cnMuaCIKICNpbmNsdWRlICJKU1NjcmlwdEZldGNoZXIuaCIKICNpbmNsdWRlICJKU1NldC5oIgot
I2luY2x1ZGUgIkpTU2V0SXRlcmF0b3IuaCIKICNpbmNsdWRlICJKU1NvdXJjZUNvZGUuaCIKLSNp
bmNsdWRlICJKU1N0cmluZ0l0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiSlNUZW1wbGF0ZU9iamVjdERl
c2NyaXB0b3IuaCIKLSNpbmNsdWRlICJKU1RvV2FzbUlDQ2FsbGVlLmgiCi0jaW5jbHVkZSAiSlNU
eXBlZEFycmF5cy5oIgotI2luY2x1ZGUgIkpTV2Vha01hcC5oIgotI2luY2x1ZGUgIkpTV2Vha09i
amVjdFJlZi5oIgotI2luY2x1ZGUgIkpTV2Vha1NldC5oIgogI2luY2x1ZGUgIkpTV2ViQXNzZW1i
bHlDb2RlQmxvY2suaCIKLSNpbmNsdWRlICJKU1dlYkFzc2VtYmx5RXhjZXB0aW9uLmgiCi0jaW5j
bHVkZSAiSlNXZWJBc3NlbWJseUdsb2JhbC5oIgotI2luY2x1ZGUgIkpTV2ViQXNzZW1ibHlJbnN0
YW5jZS5oIgotI2luY2x1ZGUgIkpTV2ViQXNzZW1ibHlNZW1vcnkuaCIKLSNpbmNsdWRlICJKU1dl
YkFzc2VtYmx5TW9kdWxlLmgiCi0jaW5jbHVkZSAiSlNXZWJBc3NlbWJseVRhYmxlLmgiCi0jaW5j
bHVkZSAiSlNXZWJBc3NlbWJseVRhZy5oIgotI2luY2x1ZGUgIkpTV2l0aFNjb3BlLmgiCiAjaW5j
bHVkZSAiTExJbnREYXRhLmgiCiAjaW5jbHVkZSAiTExJbnRFeGNlcHRpb25zLmgiCiAjaW5jbHVk
ZSAiTWluaW11bVJlc2VydmVkWm9uZVNpemUuaCIKQEAgLTE0OSwyOCArOTAsMTcgQEAKICNpbmNs
dWRlICJQcm9maWxlckRhdGFiYXNlLmgiCiAjaW5jbHVkZSAiUHJvZ3JhbUNvZGVCbG9jay5oIgog
I2luY2x1ZGUgIlByb2dyYW1FeGVjdXRhYmxlLmgiCi0jaW5jbHVkZSAiUHJvcGVydHlNYXBIYXNo
VGFibGUuaCIKLSNpbmNsdWRlICJQcm94eVJldm9rZS5oIgorI2luY2x1ZGUgIlByb3BlcnR5VGFi
bGUuaCIKICNpbmNsdWRlICJSYW5kb21pemluZ0Z1enplckFnZW50LmgiCiAjaW5jbHVkZSAiUmVn
RXhwQ2FjaGUuaCIKLSNpbmNsdWRlICJSZWdFeHBPYmplY3QuaCIKICNpbmNsdWRlICJTYW1wbGlu
Z1Byb2ZpbGVyLmgiCiAjaW5jbHVkZSAiU2NvcGVkQXJndW1lbnRzLmgiCiAjaW5jbHVkZSAiU2hh
ZG93Q2hpY2tlbi5oIgotI2luY2x1ZGUgIlNoYWRvd1JlYWxtT2JqZWN0LmgiCiAjaW5jbHVkZSAi
U2ltcGxlVHlwZWRBcnJheUNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJTb3VyY2VQcm92aWRlckNh
Y2hlLmgiCi0jaW5jbHVkZSAiU3RyaWN0RXZhbEFjdGl2YXRpb24uaCIKLSNpbmNsdWRlICJTdHJp
bmdPYmplY3QuaCIKICNpbmNsdWRlICJTdHJvbmdJbmxpbmVzLmgiCiAjaW5jbHVkZSAiU3RydWN0
dXJlQ2hhaW4uaCIKICNpbmNsdWRlICJTdHJ1Y3R1cmVJbmxpbmVzLmgiCi0jaW5jbHVkZSAiU3lt
Ym9sT2JqZWN0LmgiCi0jaW5jbHVkZSAiVGVtcG9yYWxDYWxlbmRhci5oIgotI2luY2x1ZGUgIlRl
bXBvcmFsRHVyYXRpb24uaCIKLSNpbmNsdWRlICJUZW1wb3JhbEluc3RhbnQuaCIKLSNpbmNsdWRl
ICJUZW1wb3JhbFBsYWluVGltZS5oIgotI2luY2x1ZGUgIlRlbXBvcmFsVGltZVpvbmUuaCIKICNp
bmNsdWRlICJUZXN0UnVubmVyVXRpbHMuaCIKICNpbmNsdWRlICJUaHVua0dlbmVyYXRvcnMuaCIK
ICNpbmNsdWRlICJUeXBlUHJvZmlsZXIuaCIKQEAgLTE4Miw5ICsxMTIsNiBAQAogI2luY2x1ZGUg
Ildhc21Xb3JrbGlzdC5oIgogI2luY2x1ZGUgIldhdGNoZG9nLmgiCiAjaW5jbHVkZSAiV2Vha0dD
TWFwSW5saW5lcy5oIgotI2luY2x1ZGUgIldlYkFzc2VtYmx5RnVuY3Rpb24uaCIKLSNpbmNsdWRl
ICJXZWJBc3NlbWJseU1vZHVsZVJlY29yZC5oIgotI2luY2x1ZGUgIldlYkFzc2VtYmx5V3JhcHBl
ckZ1bmN0aW9uLmgiCiAjaW5jbHVkZSAiV2lkZW5pbmdOdW1iZXJQcmVkaWN0aW9uRnV6emVyQWdl
bnQuaCIKICNpbmNsdWRlIDx3dGYvUHJvY2Vzc0lELmg+CiAjaW5jbHVkZSA8d3RmL1JlYWRXcml0
ZUxvY2suaD4KQEAgLTIwNiwxMCArMTMzLDYgQEAKICNpbmNsdWRlICJSZWdFeHAuaCIKICNlbmRp
ZgogCi0jaWYgSlNDX09CSkNfQVBJX0VOQUJMRUQKLSNpbmNsdWRlICJPYmpDQ2FsbGJhY2tGdW5j
dGlvbi5oIgotI2VuZGlmCi0KICNpZmRlZiBKU0NfR0xJQl9BUElfRU5BQkxFRAogI2luY2x1ZGUg
IkpTQVBJV3JhcHBlckdsb2JhbE9iamVjdC5oIgogI2luY2x1ZGUgIkpTQ0NhbGxiYWNrRnVuY3Rp
b24uaCIKQEAgLTI5MCwxMDkgKzIxMyw2IEBAIFZNOjpWTShWTVR5cGUgdm1UeXBlLCBIZWFwVHlw
ZSBoZWFwVHlwZSwKICAgICAsIG1fcmFuZG9tKE9wdGlvbnM6OnNlZWRPZlZNUmFuZG9tRm9yRnV6
emVyKCkgPyBPcHRpb25zOjpzZWVkT2ZWTVJhbmRvbUZvckZ1enplcigpIDogY3J5cHRvZ3JhcGhp
Y2FsbHlSYW5kb21OdW1iZXIoKSkKICAgICAsIG1faW50ZWdyaXR5UmFuZG9tKCp0aGlzKQogICAg
ICwgaGVhcCgqdGhpcywgaGVhcFR5cGUpCi0gICAgLCBmYXN0TWFsbG9jQWxsb2NhdG9yKG1ha2VV
bmlxdWU8RmFzdE1hbGxvY0FsaWduZWRNZW1vcnlBbGxvY2F0b3I+KCkpCi0gICAgLCBwcmltaXRp
dmVHaWdhY2FnZUFsbG9jYXRvcihtYWtlVW5pcXVlPEdpZ2FjYWdlQWxpZ25lZE1lbW9yeUFsbG9j
YXRvcj4oR2lnYWNhZ2U6OlByaW1pdGl2ZSkpCi0gICAgLCBqc1ZhbHVlR2lnYWNhZ2VBbGxvY2F0
b3IobWFrZVVuaXF1ZTxHaWdhY2FnZUFsaWduZWRNZW1vcnlBbGxvY2F0b3I+KEdpZ2FjYWdlOjpK
U1ZhbHVlKSkKLSAgICAsIGF1eGlsaWFyeUhlYXBDZWxsVHlwZShtYWtlVW5pcXVlPEhlYXBDZWxs
VHlwZT4oQ2VsbEF0dHJpYnV0ZXMoRG9lc05vdE5lZWREZXN0cnVjdGlvbiwgSGVhcENlbGw6OkF1
eGlsaWFyeSkpKQotICAgICwgaW1tdXRhYmxlQnV0dGVyZmx5SGVhcENlbGxUeXBlKG1ha2VVbmlx
dWU8SGVhcENlbGxUeXBlPihDZWxsQXR0cmlidXRlcyhEb2VzTm90TmVlZERlc3RydWN0aW9uLCBI
ZWFwQ2VsbDo6SlNDZWxsV2l0aEluZGV4aW5nSGVhZGVyKSkpCi0gICAgLCBjZWxsSGVhcENlbGxU
eXBlKG1ha2VVbmlxdWU8SGVhcENlbGxUeXBlPihDZWxsQXR0cmlidXRlcyhEb2VzTm90TmVlZERl
c3RydWN0aW9uLCBIZWFwQ2VsbDo6SlNDZWxsKSkpCi0gICAgLCBkZXN0cnVjdGlibGVDZWxsSGVh
cENlbGxUeXBlKG1ha2VVbmlxdWU8SGVhcENlbGxUeXBlPihDZWxsQXR0cmlidXRlcyhOZWVkc0Rl
c3RydWN0aW9uLCBIZWFwQ2VsbDo6SlNDZWxsKSkpCi0gICAgLCBhcGlHbG9iYWxPYmplY3RIZWFw
Q2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpjcmVhdGU8SlNBUElHbG9iYWxPYmplY3Q+KCkpCi0g
ICAgLCBjYWxsYmFja0NvbnN0cnVjdG9ySGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6Y3Jl
YXRlPEpTQ2FsbGJhY2tDb25zdHJ1Y3Rvcj4oKSkKLSAgICAsIGNhbGxiYWNrR2xvYmFsT2JqZWN0
SGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6Y3JlYXRlPEpTQ2FsbGJhY2tPYmplY3Q8SlNH
bG9iYWxPYmplY3Q+PigpKQotICAgICwgY2FsbGJhY2tPYmplY3RIZWFwQ2VsbFR5cGUoSXNvSGVh
cENlbGxUeXBlOjpjcmVhdGU8SlNDYWxsYmFja09iamVjdDxKU05vbkZpbmFsT2JqZWN0Pj4oKSkK
LSAgICAsIGN1c3RvbUdldHRlckZ1bmN0aW9uSGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6
Y3JlYXRlPEpTQ3VzdG9tR2V0dGVyRnVuY3Rpb24+KCkpCi0gICAgLCBjdXN0b21TZXR0ZXJGdW5j
dGlvbkhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OmNyZWF0ZTxKU0N1c3RvbVNldHRlckZ1
bmN0aW9uPigpKQotICAgICwgZGF0ZUluc3RhbmNlSGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlw
ZTo6Y3JlYXRlPERhdGVJbnN0YW5jZT4oKSkKLSAgICAsIGVycm9ySW5zdGFuY2VIZWFwQ2VsbFR5
cGUoSXNvSGVhcENlbGxUeXBlOjpjcmVhdGU8RXJyb3JJbnN0YW5jZT4oKSkKLSAgICAsIGZpbmFs
aXphdGlvblJlZ2lzdHJ5Q2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpjcmVhdGU8SlNGaW5hbGl6
YXRpb25SZWdpc3RyeT4oKSkKLSAgICAsIGdsb2JhbExleGljYWxFbnZpcm9ubWVudEhlYXBDZWxs
VHlwZShJc29IZWFwQ2VsbFR5cGU6OmNyZWF0ZTxKU0dsb2JhbExleGljYWxFbnZpcm9ubWVudD4o
KSkKLSAgICAsIGdsb2JhbE9iamVjdEhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OmNyZWF0
ZTxKU0dsb2JhbE9iamVjdD4oKSkKLSAgICAsIGluamVjdGVkU2NyaXB0SG9zdFNwYWNlSGVhcENl
bGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6Y3JlYXRlPEluc3BlY3Rvcjo6SlNJbmplY3RlZFNjcmlw
dEhvc3Q+KCkpCi0gICAgLCBqYXZhU2NyaXB0Q2FsbEZyYW1lSGVhcENlbGxUeXBlKElzb0hlYXBD
ZWxsVHlwZTo6Y3JlYXRlPEluc3BlY3Rvcjo6SlNKYXZhU2NyaXB0Q2FsbEZyYW1lPigpKQotICAg
ICwganNNb2R1bGVSZWNvcmRIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpjcmVhdGU8SlNN
b2R1bGVSZWNvcmQ+KCkpCi0gICAgLCBtb2R1bGVOYW1lc3BhY2VPYmplY3RIZWFwQ2VsbFR5cGUo
SXNvSGVhcENlbGxUeXBlOjpjcmVhdGU8SlNNb2R1bGVOYW1lc3BhY2VPYmplY3Q+KCkpCi0gICAg
LCBuYXRpdmVTdGRGdW5jdGlvbkhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OmNyZWF0ZTxK
U05hdGl2ZVN0ZEZ1bmN0aW9uPigpKQotICAgICwgc3RyaW5nSGVhcENlbGxUeXBlKG1ha2VVbmlx
dWU8SXNvSW5saW5lZEhlYXBDZWxsVHlwZTxKU1N0cmluZz4+KCkpCi0gICAgLCB3ZWFrTWFwSGVh
cENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6Y3JlYXRlPEpTV2Vha01hcD4oKSkKLSAgICAsIHdl
YWtTZXRIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpjcmVhdGU8SlNXZWFrU2V0PigpKQot
ICAgICwgZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKG1ha2VVbmlxdWU8SlNEZXN0cnVj
dGlibGVPYmplY3RIZWFwQ2VsbFR5cGU+KCkpCi0jaWYgSlNDX09CSkNfQVBJX0VOQUJMRUQKLSAg
ICAsIGFwaVdyYXBwZXJPYmplY3RIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpjcmVhdGU8
SlNDYWxsYmFja09iamVjdDxKU0FQSVdyYXBwZXJPYmplY3Q+PigpKQotICAgICwgb2JqQ0NhbGxi
YWNrRnVuY3Rpb25IZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpjcmVhdGU8T2JqQ0NhbGxi
YWNrRnVuY3Rpb24+KCkpCi0jZW5kaWYKLSNpZmRlZiBKU0NfR0xJQl9BUElfRU5BQkxFRAotICAg
ICwgYXBpV3JhcHBlck9iamVjdEhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OmNyZWF0ZTxK
U0NhbGxiYWNrT2JqZWN0PEpTQVBJV3JhcHBlck9iamVjdD4+KCkpCi0gICAgLCBjYWxsYmFja0FQ
SVdyYXBwZXJHbG9iYWxPYmplY3RIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpjcmVhdGU8
SlNDYWxsYmFja09iamVjdDxKU0FQSVdyYXBwZXJHbG9iYWxPYmplY3Q+PigpKQotICAgICwganNj
Q2FsbGJhY2tGdW5jdGlvbkhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OmNyZWF0ZTxKU0ND
YWxsYmFja0Z1bmN0aW9uPigpKQotI2VuZGlmCi0gICAgLCBpbnRsQ29sbGF0b3JIZWFwQ2VsbFR5
cGUoSXNvSGVhcENlbGxUeXBlOjpjcmVhdGU8SW50bENvbGxhdG9yPigpKQotICAgICwgaW50bERh
dGVUaW1lRm9ybWF0SGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6Y3JlYXRlPEludGxEYXRl
VGltZUZvcm1hdD4oKSkKLSAgICAsIGludGxEaXNwbGF5TmFtZXNIZWFwQ2VsbFR5cGUoSXNvSGVh
cENlbGxUeXBlOjpjcmVhdGU8SW50bERpc3BsYXlOYW1lcz4oKSkKLSAgICAsIGludGxMaXN0Rm9y
bWF0SGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6Y3JlYXRlPEludGxMaXN0Rm9ybWF0Pigp
KQotICAgICwgaW50bExvY2FsZUhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OmNyZWF0ZTxJ
bnRsTG9jYWxlPigpKQotICAgICwgaW50bE51bWJlckZvcm1hdEhlYXBDZWxsVHlwZShJc29IZWFw
Q2VsbFR5cGU6OmNyZWF0ZTxJbnRsTnVtYmVyRm9ybWF0PigpKQotICAgICwgaW50bFBsdXJhbFJ1
bGVzSGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6Y3JlYXRlPEludGxQbHVyYWxSdWxlcz4o
KSkKLSAgICAsIGludGxSZWxhdGl2ZVRpbWVGb3JtYXRIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxU
eXBlOjpjcmVhdGU8SW50bFJlbGF0aXZlVGltZUZvcm1hdD4oKSkKLSAgICAsIGludGxTZWdtZW50
SXRlcmF0b3JIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpjcmVhdGU8SW50bFNlZ21lbnRJ
dGVyYXRvcj4oKSkKLSAgICAsIGludGxTZWdtZW50ZXJIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxU
eXBlOjpjcmVhdGU8SW50bFNlZ21lbnRlcj4oKSkKLSAgICAsIGludGxTZWdtZW50c0hlYXBDZWxs
VHlwZShJc29IZWFwQ2VsbFR5cGU6OmNyZWF0ZTxJbnRsU2VnbWVudHM+KCkpCi0jaWYgRU5BQkxF
KFdFQkFTU0VNQkxZKQotICAgICwgd2ViQXNzZW1ibHlDb2RlQmxvY2tIZWFwQ2VsbFR5cGUoSXNv
SGVhcENlbGxUeXBlOjpjcmVhdGU8SlNXZWJBc3NlbWJseUNvZGVCbG9jaz4oKSkKLSAgICAsIHdl
YkFzc2VtYmx5RXhjZXB0aW9uSGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6Y3JlYXRlPEpT
V2ViQXNzZW1ibHlFeGNlcHRpb24+KCkpCi0gICAgLCB3ZWJBc3NlbWJseUZ1bmN0aW9uSGVhcENl
bGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6Y3JlYXRlPFdlYkFzc2VtYmx5RnVuY3Rpb24+KCkpCi0g
ICAgLCB3ZWJBc3NlbWJseUdsb2JhbEhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OmNyZWF0
ZTxKU1dlYkFzc2VtYmx5R2xvYmFsPigpKQotICAgICwgd2ViQXNzZW1ibHlJbnN0YW5jZUhlYXBD
ZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OmNyZWF0ZTxKU1dlYkFzc2VtYmx5SW5zdGFuY2U+KCkp
Ci0gICAgLCB3ZWJBc3NlbWJseU1lbW9yeUhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OmNy
ZWF0ZTxKU1dlYkFzc2VtYmx5TWVtb3J5PigpKQotICAgICwgd2ViQXNzZW1ibHlNb2R1bGVIZWFw
Q2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpjcmVhdGU8SlNXZWJBc3NlbWJseU1vZHVsZT4oKSkK
LSAgICAsIHdlYkFzc2VtYmx5TW9kdWxlUmVjb3JkSGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlw
ZTo6Y3JlYXRlPFdlYkFzc2VtYmx5TW9kdWxlUmVjb3JkPigpKQotICAgICwgd2ViQXNzZW1ibHlU
YWJsZUhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OmNyZWF0ZTxKU1dlYkFzc2VtYmx5VGFi
bGU+KCkpCi0gICAgLCB3ZWJBc3NlbWJseVRhZ0hlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6
OmNyZWF0ZTxKU1dlYkFzc2VtYmx5VGFnPigpKQotI2VuZGlmCi0gICAgLCBwcmltaXRpdmVHaWdh
Y2FnZUF1eGlsaWFyeVNwYWNlKCJQcmltaXRpdmUgR2lnYWNhZ2UgQXV4aWxpYXJ5IiwgaGVhcCwg
YXV4aWxpYXJ5SGVhcENlbGxUeXBlLmdldCgpLCBwcmltaXRpdmVHaWdhY2FnZUFsbG9jYXRvci5n
ZXQoKSkgLy8gSGFzaDoweDNlN2NkNzYyCi0gICAgLCBqc1ZhbHVlR2lnYWNhZ2VBdXhpbGlhcnlT
cGFjZSgiSlNWYWx1ZSBHaWdhY2FnZSBBdXhpbGlhcnkiLCBoZWFwLCBhdXhpbGlhcnlIZWFwQ2Vs
bFR5cGUuZ2V0KCksIGpzVmFsdWVHaWdhY2FnZUFsbG9jYXRvci5nZXQoKSkgLy8gSGFzaDoweDI0
MWU5NDYKLSAgICAsIGltbXV0YWJsZUJ1dHRlcmZseUpTVmFsdWVHaWdhY2FnZUF1eGlsaWFyeVNw
YWNlKCJJbW11dGFibGVCdXR0ZXJmbHkgR2lnYWNhZ2UgSlNDZWxsV2l0aEluZGV4aW5nSGVhZGVy
IiwgaGVhcCwgaW1tdXRhYmxlQnV0dGVyZmx5SGVhcENlbGxUeXBlLmdldCgpLCBqc1ZhbHVlR2ln
YWNhZ2VBbGxvY2F0b3IuZ2V0KCkpIC8vIEhhc2g6MHg3YTk0NTMwMAotICAgICwgY2VsbFNwYWNl
KCJKU0NlbGwiLCBoZWFwLCBjZWxsSGVhcENlbGxUeXBlLmdldCgpLCBmYXN0TWFsbG9jQWxsb2Nh
dG9yLmdldCgpKSAvLyBIYXNoOjB4YWRmYjVhNzkKLSAgICAsIHZhcmlhYmxlU2l6ZWRDZWxsU3Bh
Y2UoIlZhcmlhYmxlIFNpemVkIEpTQ2VsbCIsIGhlYXAsIGNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCks
IGZhc3RNYWxsb2NBbGxvY2F0b3IuZ2V0KCkpIC8vIEhhc2g6MHhiY2Q3NjljYwotICAgICwgZGVz
dHJ1Y3RpYmxlT2JqZWN0U3BhY2UoIkpTRGVzdHJ1Y3RpYmxlT2JqZWN0IiwgaGVhcCwgZGVzdHJ1
Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmdldCgpLCBmYXN0TWFsbG9jQWxsb2NhdG9yLmdldCgp
KSAvLyBIYXNoOjB4NGY1ZWQ3YTkKLSAgICAsIGFycmF5U3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQo
aGVhcCwgY2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNBcnJheSkKLSAgICAsIGJpZ0ludFNwYWNl
IElTT19TVUJTUEFDRV9JTklUKGhlYXAsIGNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTQmlnSW50
KQotICAgICwgY2FsbGVlU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoaGVhcCwgY2VsbEhlYXBDZWxs
VHlwZS5nZXQoKSwgSlNDYWxsZWUpCi0gICAgLCBjbG9uZWRBcmd1bWVudHNTcGFjZSBJU09fU1VC
U1BBQ0VfSU5JVChoZWFwLCBjZWxsSGVhcENlbGxUeXBlLmdldCgpLCBDbG9uZWRBcmd1bWVudHMp
Ci0gICAgLCBjdXN0b21HZXR0ZXJTZXR0ZXJTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVChoZWFwLCBj
ZWxsSGVhcENlbGxUeXBlLmdldCgpLCBDdXN0b21HZXR0ZXJTZXR0ZXIpCi0gICAgLCBkYXRlSW5z
dGFuY2VTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVChoZWFwLCBkYXRlSW5zdGFuY2VIZWFwQ2VsbFR5
cGUuZ2V0KCksIERhdGVJbnN0YW5jZSkKLSAgICAsIGRvbUF0dHJpYnV0ZUdldHRlclNldHRlclNw
YWNlIElTT19TVUJTUEFDRV9JTklUKGhlYXAsIGNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIERPTUF0
dHJpYnV0ZUdldHRlclNldHRlcikKLSAgICAsIGV4Y2VwdGlvblNwYWNlIElTT19TVUJTUEFDRV9J
TklUKGhlYXAsIGRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEV4Y2VwdGlvbikK
LSAgICAsIGV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2VTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVCho
ZWFwLCBjZWxsSGVhcENlbGxUeXBlLmdldCgpLCBFeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlKSAv
LyBIYXNoOjB4N2I3MzBiMjAKLSAgICAsIGZ1bmN0aW9uU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQo
aGVhcCwgY2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNGdW5jdGlvbikgLy8gSGFzaDoweDgwMGZj
YTcyCi0gICAgLCBnZXR0ZXJTZXR0ZXJTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVChoZWFwLCBjZWxs
SGVhcENlbGxUeXBlLmdldCgpLCBHZXR0ZXJTZXR0ZXIpCi0gICAgLCBnbG9iYWxMZXhpY2FsRW52
aXJvbm1lbnRTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVChoZWFwLCBnbG9iYWxMZXhpY2FsRW52aXJv
bm1lbnRIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTR2xvYmFsTGV4aWNhbEVudmlyb25tZW50KQotICAg
ICwgaW50ZXJuYWxGdW5jdGlvblNwYWNlIElTT19TVUJTUEFDRV9JTklUKGhlYXAsIGNlbGxIZWFw
Q2VsbFR5cGUuZ2V0KCksIEludGVybmFsRnVuY3Rpb24pIC8vIEhhc2g6MHhmODQ1YzQ2NAotICAg
ICwganNQcm94eVNwYWNlIElTT19TVUJTUEFDRV9JTklUKGhlYXAsIGNlbGxIZWFwQ2VsbFR5cGUu
Z2V0KCksIEpTUHJveHkpCi0gICAgLCBuYXRpdmVFeGVjdXRhYmxlU3BhY2UgSVNPX1NVQlNQQUNF
X0lOSVQoaGVhcCwgZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgTmF0aXZlRXhl
Y3V0YWJsZSkgLy8gSGFzaDoweDY3NTY3Zjk1Ci0gICAgLCBudW1iZXJPYmplY3RTcGFjZSBJU09f
U1VCU1BBQ0VfSU5JVChoZWFwLCBjZWxsSGVhcENlbGxUeXBlLmdldCgpLCBOdW1iZXJPYmplY3Qp
Ci0gICAgLCBwbGFpbk9iamVjdFNwYWNlIElTT19TVUJTUEFDRV9JTklUKGhlYXAsIGNlbGxIZWFw
Q2VsbFR5cGUuZ2V0KCksIEpTTm9uRmluYWxPYmplY3QpIC8vIE1haW5seSB1c2VkIGZvciBwcm90
b3R5cGVzLgotICAgICwgcHJvbWlzZVNwYWNlIElTT19TVUJTUEFDRV9JTklUKGhlYXAsIGNlbGxI
ZWFwQ2VsbFR5cGUuZ2V0KCksIEpTUHJvbWlzZSkKLSAgICAsIHByb3BlcnR5TmFtZUVudW1lcmF0
b3JTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVChoZWFwLCBjZWxsSGVhcENlbGxUeXBlLmdldCgpLCBK
U1Byb3BlcnR5TmFtZUVudW1lcmF0b3IpCi0gICAgLCBwcm9wZXJ0eVRhYmxlU3BhY2UgSVNPX1NV
QlNQQUNFX0lOSVQoaGVhcCwgZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgUHJv
cGVydHlUYWJsZSkgLy8gSGFzaDoweGM2YmM5ZjEyCi0gICAgLCByZWdFeHBTcGFjZSBJU09fU1VC
U1BBQ0VfSU5JVChoZWFwLCBkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlLmdldCgpLCBSZWdF
eHApCi0gICAgLCByZWdFeHBPYmplY3RTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVChoZWFwLCBjZWxs
SGVhcENlbGxUeXBlLmdldCgpLCBSZWdFeHBPYmplY3QpCi0gICAgLCByb3BlU3RyaW5nU3BhY2Ug
SVNPX1NVQlNQQUNFX0lOSVQoaGVhcCwgc3RyaW5nSGVhcENlbGxUeXBlLmdldCgpLCBKU1JvcGVT
dHJpbmcpCi0gICAgLCBzY29wZWRBcmd1bWVudHNTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVChoZWFw
LCBjZWxsSGVhcENlbGxUeXBlLmdldCgpLCBTY29wZWRBcmd1bWVudHMpCi0gICAgLCBzcGFyc2VB
cnJheVZhbHVlTWFwU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoaGVhcCwgZGVzdHJ1Y3RpYmxlQ2Vs
bEhlYXBDZWxsVHlwZS5nZXQoKSwgU3BhcnNlQXJyYXlWYWx1ZU1hcCkKLSAgICAsIHN0cmluZ1Nw
YWNlIElTT19TVUJTUEFDRV9JTklUKGhlYXAsIHN0cmluZ0hlYXBDZWxsVHlwZS5nZXQoKSwgSlNT
dHJpbmcpIC8vIEhhc2g6MHg5MGNmNzU4ZgotICAgICwgc3RyaW5nT2JqZWN0U3BhY2UgSVNPX1NV
QlNQQUNFX0lOSVQoaGVhcCwgY2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgU3RyaW5nT2JqZWN0KQot
ICAgICwgc3RydWN0dXJlQ2hhaW5TcGFjZSBJU09fU1VCU1BBQ0VfSU5JVChoZWFwLCBjZWxsSGVh
cENlbGxUeXBlLmdldCgpLCBTdHJ1Y3R1cmVDaGFpbikKLSAgICAsIHN0cnVjdHVyZVJhcmVEYXRh
U3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoaGVhcCwgZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlw
ZS5nZXQoKSwgU3RydWN0dXJlUmFyZURhdGEpIC8vIEhhc2g6MHhhY2E0ZTYyZAotICAgICwgc3Ry
dWN0dXJlU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoaGVhcCwgZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBD
ZWxsVHlwZS5nZXQoKSwgU3RydWN0dXJlKSAvLyBIYXNoOjB4MWYxYmNkY2EKLSAgICAsIGJyYW5k
ZWRTdHJ1Y3R1cmVTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVChoZWFwLCBkZXN0cnVjdGlibGVDZWxs
SGVhcENlbGxUeXBlLmdldCgpLCBCcmFuZGVkU3RydWN0dXJlKQotICAgICwgc3ltYm9sVGFibGVT
cGFjZSBJU09fU1VCU1BBQ0VfSU5JVChoZWFwLCBkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBl
LmdldCgpLCBTeW1ib2xUYWJsZSkgLy8gSGFzaDoweGM1MjE1YWZkCi0gICAgLCBleGVjdXRhYmxl
VG9Db2RlQmxvY2tFZGdlc1dpdGhDb25zdHJhaW50cyhleGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdl
U3BhY2UpCi0gICAgLCBleGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlc1dpdGhGaW5hbGl6ZXJzKGV4
ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2VTcGFjZSkKLSAgICAsIGNvZGVCbG9ja1NwYWNlIElTT19T
VUJTUEFDRV9JTklUKGhlYXAsIGRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIENv
ZGVCbG9jaykgLy8gSGFzaDoweDc3ZTY2ZWM5Ci0gICAgLCBmdW5jdGlvbkV4ZWN1dGFibGVTcGFj
ZSBJU09fU1VCU1BBQ0VfSU5JVChoZWFwLCBkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlLmdl
dCgpLCBGdW5jdGlvbkV4ZWN1dGFibGUpIC8vIEhhc2g6MHg1ZDE1OGYzCi0gICAgLCBwcm9ncmFt
RXhlY3V0YWJsZVNwYWNlIElTT19TVUJTUEFDRV9JTklUKGhlYXAsIGRlc3RydWN0aWJsZUNlbGxI
ZWFwQ2VsbFR5cGUuZ2V0KCksIFByb2dyYW1FeGVjdXRhYmxlKSAvLyBIYXNoOjB4NTI3Yzc3ZTcK
LSAgICAsIHVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQo
aGVhcCwgZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgVW5saW5rZWRGdW5jdGlv
bkV4ZWN1dGFibGUpIC8vIEhhc2g6MHhmNmI4MjhkOQogICAgICwgdm1UeXBlKHZtVHlwZSkKICAg
ICAsIGNsaWVudERhdGEobnVsbHB0cikKICAgICAsIHRvcEVudHJ5RnJhbWUobnVsbHB0cikKQEAg
LTE1NzEsMTM3ICsxMzkxLDYgQEAgdm9pZCBWTTo6ZW5zdXJlU2hhZG93Q2hpY2tlbigpCiAgICAg
bV9zaGFkb3dDaGlja2VuID0gbWFrZVVuaXF1ZTxTaGFkb3dDaGlja2VuPigpOwogfQogCi0jZGVm
aW5lIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhuYW1lLCBoZWFwQ2Vs
bFR5cGUsIHR5cGUpIFwKLSAgICBJc29TdWJzcGFjZSogVk06Om5hbWUjI1Nsb3coKSBcCi0gICAg
eyBcCi0gICAgICAgIEFTU0VSVCghbV8jI25hbWUpOyBcCi0gICAgICAgIGF1dG8gc3BhY2UgPSBt
YWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVChoZWFwLCBoZWFwQ2VsbFR5
cGUsIHR5cGUpOyBcCi0gICAgICAgIFdURjo6c3RvcmVTdG9yZUZlbmNlKCk7IFwKLSAgICAgICAg
bV8jI25hbWUgPSBXVEZNb3ZlKHNwYWNlKTsgXAotICAgICAgICByZXR1cm4gbV8jI25hbWUuZ2V0
KCk7IFwKLSAgICB9Ci0KLQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9X
KGFwaUdsb2JhbE9iamVjdFNwYWNlLCBhcGlHbG9iYWxPYmplY3RIZWFwQ2VsbFR5cGUuZ2V0KCks
IEpTQVBJR2xvYmFsT2JqZWN0KQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9T
TE9XKGFwaVZhbHVlV3JhcHBlclNwYWNlLCBjZWxsSGVhcENlbGxUeXBlLmdldCgpLCBKU0FQSVZh
bHVlV3JhcHBlcikKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhhcnJh
eUJ1ZmZlclNwYWNlLCBjZWxsSGVhcENlbGxUeXBlLmdldCgpLCBKU0FycmF5QnVmZmVyKQotRFlO
QU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGFycmF5SXRlcmF0b3JTcGFjZSwg
Y2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNBcnJheUl0ZXJhdG9yKQotRFlOQU1JQ19JU09fU1VC
U1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGFzeW5jR2VuZXJhdG9yU3BhY2UsIGNlbGxIZWFwQ2Vs
bFR5cGUuZ2V0KCksIEpTQXN5bmNHZW5lcmF0b3IpCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJ
TkVfTUVNQkVSX1NMT1coYmlnSW50NjRBcnJheVNwYWNlLCBjZWxsSGVhcENlbGxUeXBlLmdldCgp
LCBKU0JpZ0ludDY0QXJyYXkpCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NM
T1coYmlnSW50T2JqZWN0U3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEJpZ0ludE9iamVj
dCkKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhiaWdVaW50NjRBcnJh
eVNwYWNlLCBjZWxsSGVhcENlbGxUeXBlLmdldCgpLCBKU0JpZ1VpbnQ2NEFycmF5KQotRFlOQU1J
Q19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGJvb2xlYW5PYmplY3RTcGFjZSwgY2Vs
bEhlYXBDZWxsVHlwZS5nZXQoKSwgQm9vbGVhbk9iamVjdCkKLURZTkFNSUNfSVNPX1NVQlNQQUNF
X0RFRklORV9NRU1CRVJfU0xPVyhib3VuZEZ1bmN0aW9uU3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUu
Z2V0KCksIEpTQm91bmRGdW5jdGlvbikgLy8gSGFzaDoweGQ3OTE2ZDQxCi1EWU5BTUlDX0lTT19T
VUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coY2FsbGJhY2tDb25zdHJ1Y3RvclNwYWNlLCBjYWxs
YmFja0NvbnN0cnVjdG9ySGVhcENlbGxUeXBlLmdldCgpLCBKU0NhbGxiYWNrQ29uc3RydWN0b3Ip
Ci1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coY2FsbGJhY2tHbG9iYWxP
YmplY3RTcGFjZSwgY2FsbGJhY2tHbG9iYWxPYmplY3RIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTQ2Fs
bGJhY2tPYmplY3Q8SlNHbG9iYWxPYmplY3Q+KQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5F
X01FTUJFUl9TTE9XKGNhbGxiYWNrRnVuY3Rpb25TcGFjZSwgY2VsbEhlYXBDZWxsVHlwZS5nZXQo
KSwgSlNDYWxsYmFja0Z1bmN0aW9uKSAvLyBIYXNoOjB4ZTc2NDhlYmMKLURZTkFNSUNfSVNPX1NV
QlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhjYWxsYmFja09iamVjdFNwYWNlLCBjYWxsYmFja09i
amVjdEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNDYWxsYmFja09iamVjdDxKU05vbkZpbmFsT2JqZWN0
PikKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhjdXN0b21HZXR0ZXJG
dW5jdGlvblNwYWNlLCBjdXN0b21HZXR0ZXJGdW5jdGlvbkhlYXBDZWxsVHlwZS5nZXQoKSwgSlND
dXN0b21HZXR0ZXJGdW5jdGlvbikKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJf
U0xPVyhjdXN0b21TZXR0ZXJGdW5jdGlvblNwYWNlLCBjdXN0b21TZXR0ZXJGdW5jdGlvbkhlYXBD
ZWxsVHlwZS5nZXQoKSwgSlNDdXN0b21TZXR0ZXJGdW5jdGlvbikKLURZTkFNSUNfSVNPX1NVQlNQ
QUNFX0RFRklORV9NRU1CRVJfU0xPVyhkYXRhVmlld1NwYWNlLCBjZWxsSGVhcENlbGxUeXBlLmdl
dCgpLCBKU0RhdGFWaWV3KQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9X
KGRlYnVnZ2VyU2NvcGVTcGFjZSwgY2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgRGVidWdnZXJTY29w
ZSkKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhlcnJvckluc3RhbmNl
U3BhY2UsIGVycm9ySW5zdGFuY2VIZWFwQ2VsbFR5cGUuZ2V0KCksIEVycm9ySW5zdGFuY2UpIC8v
IEhhc2g6MHgzZjQwZDRhCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1co
ZmxvYXQzMkFycmF5U3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTRmxvYXQzMkFycmF5
KQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGZsb2F0NjRBcnJheVNw
YWNlLCBjZWxsSGVhcENlbGxUeXBlLmdldCgpLCBKU0Zsb2F0NjRBcnJheSkKLURZTkFNSUNfSVNP
X1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhmdW5jdGlvblJhcmVEYXRhU3BhY2UsIGRlc3Ry
dWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEZ1bmN0aW9uUmFyZURhdGEpCi1EWU5BTUlD
X0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coZ2VuZXJhdG9yU3BhY2UsIGNlbGxIZWFw
Q2VsbFR5cGUuZ2V0KCksIEpTR2VuZXJhdG9yKQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5F
X01FTUJFUl9TTE9XKGdsb2JhbE9iamVjdFNwYWNlLCBnbG9iYWxPYmplY3RIZWFwQ2VsbFR5cGUu
Z2V0KCksIEpTR2xvYmFsT2JqZWN0KQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJF
Ul9TTE9XKGluamVjdGVkU2NyaXB0SG9zdFNwYWNlLCBpbmplY3RlZFNjcmlwdEhvc3RTcGFjZUhl
YXBDZWxsVHlwZS5nZXQoKSwgSW5zcGVjdG9yOjpKU0luamVjdGVkU2NyaXB0SG9zdCkKLURZTkFN
SUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhpbnQ4QXJyYXlTcGFjZSwgY2VsbEhl
YXBDZWxsVHlwZS5nZXQoKSwgSlNJbnQ4QXJyYXkpCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJ
TkVfTUVNQkVSX1NMT1coaW50MTZBcnJheVNwYWNlLCBjZWxsSGVhcENlbGxUeXBlLmdldCgpLCBK
U0ludDE2QXJyYXkpCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coaW50
MzJBcnJheVNwYWNlLCBjZWxsSGVhcENlbGxUeXBlLmdldCgpLCBKU0ludDMyQXJyYXkpCi1EWU5B
TUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coamF2YVNjcmlwdENhbGxGcmFtZVNw
YWNlLCBqYXZhU2NyaXB0Q2FsbEZyYW1lSGVhcENlbGxUeXBlLmdldCgpLCBJbnNwZWN0b3I6OkpT
SmF2YVNjcmlwdENhbGxGcmFtZSkKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJf
U0xPVyhqc01vZHVsZVJlY29yZFNwYWNlLCBqc01vZHVsZVJlY29yZEhlYXBDZWxsVHlwZS5nZXQo
KSwgSlNNb2R1bGVSZWNvcmQpCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NM
T1cobWFwQnVja2V0U3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTTWFwOjpCdWNrZXRU
eXBlKQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKG1hcEl0ZXJhdG9y
U3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTTWFwSXRlcmF0b3IpCi1EWU5BTUlDX0lT
T19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1cobWFwU3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUu
Z2V0KCksIEpTTWFwKQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKG1v
ZHVsZU5hbWVzcGFjZU9iamVjdFNwYWNlLCBtb2R1bGVOYW1lc3BhY2VPYmplY3RIZWFwQ2VsbFR5
cGUuZ2V0KCksIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0KQotRFlOQU1JQ19JU09fU1VCU1BBQ0Vf
REVGSU5FX01FTUJFUl9TTE9XKG5hdGl2ZVN0ZEZ1bmN0aW9uU3BhY2UsIG5hdGl2ZVN0ZEZ1bmN0
aW9uSGVhcENlbGxUeXBlLmdldCgpLCBKU05hdGl2ZVN0ZEZ1bmN0aW9uKSAvLyBIYXNoOjB4NzBl
ZDYxZTQKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhwcm94eU9iamVj
dFNwYWNlLCBjZWxsSGVhcENlbGxUeXBlLmdldCgpLCBQcm94eU9iamVjdCkKLURZTkFNSUNfSVNP
X1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhwcm94eVJldm9rZVNwYWNlLCBjZWxsSGVhcENl
bGxUeXBlLmdldCgpLCBQcm94eVJldm9rZSkgLy8gSGFzaDoweGI1MDZhOTM5Ci1EWU5BTUlDX0lT
T19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coc2NvcGVkQXJndW1lbnRzVGFibGVTcGFjZSwg
ZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgU2NvcGVkQXJndW1lbnRzVGFibGUp
Ci1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coc2NyaXB0RmV0Y2hQYXJh
bWV0ZXJzU3BhY2UsIGRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTU2NyaXB0
RmV0Y2hQYXJhbWV0ZXJzKQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9X
KHNjcmlwdEZldGNoZXJTcGFjZSwgZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwg
SlNTY3JpcHRGZXRjaGVyKQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9X
KHNldEJ1Y2tldFNwYWNlLCBjZWxsSGVhcENlbGxUeXBlLmdldCgpLCBKU1NldDo6QnVja2V0VHlw
ZSkKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhzZXRJdGVyYXRvclNw
YWNlLCBjZWxsSGVhcENlbGxUeXBlLmdldCgpLCBKU1NldEl0ZXJhdG9yKQotRFlOQU1JQ19JU09f
U1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHNldFNwYWNlLCBjZWxsSGVhcENlbGxUeXBlLmdl
dCgpLCBKU1NldCkKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhzaGFk
b3dSZWFsbVNwYWNlLCBjZWxsSGVhcENlbGxUeXBlLmdldCgpLCBTaGFkb3dSZWFsbU9iamVjdCkK
LURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhzdHJpY3RFdmFsQWN0aXZh
dGlvblNwYWNlLCBjZWxsSGVhcENlbGxUeXBlLmdldCgpLCBTdHJpY3RFdmFsQWN0aXZhdGlvbikK
LURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhzdHJpbmdJdGVyYXRvclNw
YWNlLCBjZWxsSGVhcENlbGxUeXBlLmdldCgpLCBKU1N0cmluZ0l0ZXJhdG9yKQotRFlOQU1JQ19J
U09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHNvdXJjZUNvZGVTcGFjZSwgZGVzdHJ1Y3Rp
YmxlQ2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNTb3VyY2VDb2RlKQotRFlOQU1JQ19JU09fU1VC
U1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHN5bWJvbFNwYWNlLCBkZXN0cnVjdGlibGVDZWxsSGVh
cENlbGxUeXBlLmdldCgpLCBTeW1ib2wpCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVN
QkVSX1NMT1coc3ltYm9sT2JqZWN0U3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIFN5bWJv
bE9iamVjdCkKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh0ZW1wbGF0
ZU9iamVjdERlc2NyaXB0b3JTcGFjZSwgZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZS5nZXQo
KSwgSlNUZW1wbGF0ZU9iamVjdERlc2NyaXB0b3IpCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJ
TkVfTUVNQkVSX1NMT1codGVtcG9yYWxDYWxlbmRhclNwYWNlLCBjZWxsSGVhcENlbGxUeXBlLmdl
dCgpLCBUZW1wb3JhbENhbGVuZGFyKQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJF
Ul9TTE9XKHRlbXBvcmFsRHVyYXRpb25TcGFjZSwgY2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgVGVt
cG9yYWxEdXJhdGlvbikKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh0
ZW1wb3JhbEluc3RhbnRTcGFjZSwgY2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgVGVtcG9yYWxJbnN0
YW50KQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHRlbXBvcmFsUGxh
aW5UaW1lU3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIFRlbXBvcmFsUGxhaW5UaW1lKQot
RFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHRlbXBvcmFsVGltZVpvbmVT
cGFjZSwgY2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgVGVtcG9yYWxUaW1lWm9uZSkKLURZTkFNSUNf
SVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh1aW50OEFycmF5U3BhY2UsIGNlbGxIZWFw
Q2VsbFR5cGUuZ2V0KCksIEpTVWludDhBcnJheSkKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklO
RV9NRU1CRVJfU0xPVyh1aW50OENsYW1wZWRBcnJheVNwYWNlLCBjZWxsSGVhcENlbGxUeXBlLmdl
dCgpLCBKU1VpbnQ4Q2xhbXBlZEFycmF5KQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01F
TUJFUl9TTE9XKHVpbnQxNkFycmF5U3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVWlu
dDE2QXJyYXkpCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1codWludDMy
QXJyYXlTcGFjZSwgY2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNVaW50MzJBcnJheSkKLURZTkFN
SUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh1bmxpbmtlZEV2YWxDb2RlQmxvY2tT
cGFjZSwgZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgVW5saW5rZWRFdmFsQ29k
ZUJsb2NrKQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHVubGlua2Vk
RnVuY3Rpb25Db2RlQmxvY2tTcGFjZSwgZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZS5nZXQo
KSwgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jaykKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklO
RV9NRU1CRVJfU0xPVyh1bmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2tTcGFjZSwgZGVzdHJ1
Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgVW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJs
b2NrKQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHVubGlua2VkUHJv
Z3JhbUNvZGVCbG9ja1NwYWNlLCBkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlLmdldCgpLCBV
bmxpbmtlZFByb2dyYW1Db2RlQmxvY2spCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVN
QkVSX1NMT1cod2Vha01hcFNwYWNlLCB3ZWFrTWFwSGVhcENlbGxUeXBlLmdldCgpLCBKU1dlYWtN
YXApIC8vIEhhc2g6MHg2NjJiMTJhMwotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJF
Ul9TTE9XKHdlYWtTZXRTcGFjZSwgd2Vha1NldEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNXZWFrU2V0
KSAvLyBIYXNoOjB4NGM3ODFiMzAKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJf
U0xPVyh3ZWFrT2JqZWN0UmVmU3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTV2Vha09i
amVjdFJlZikgLy8gSGFzaDoweDhlYzY4ZjFmCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVf
TUVNQkVSX1NMT1cod2l0aFNjb3BlU3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTV2l0
aFNjb3BlKQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGZpbmFsaXph
dGlvblJlZ2lzdHJ5U3BhY2UsIGZpbmFsaXphdGlvblJlZ2lzdHJ5Q2VsbFR5cGUuZ2V0KCksIEpT
RmluYWxpemF0aW9uUmVnaXN0cnkpCi0jaWYgSlNDX09CSkNfQVBJX0VOQUJMRUQKLURZTkFNSUNf
SVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhhcGlXcmFwcGVyT2JqZWN0U3BhY2UsIGFw
aVdyYXBwZXJPYmplY3RIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTQ2FsbGJhY2tPYmplY3Q8SlNBUElX
cmFwcGVyT2JqZWN0PikKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhv
YmpDQ2FsbGJhY2tGdW5jdGlvblNwYWNlLCBvYmpDQ2FsbGJhY2tGdW5jdGlvbkhlYXBDZWxsVHlw
ZS5nZXQoKSwgT2JqQ0NhbGxiYWNrRnVuY3Rpb24pIC8vIEhhc2g6MHgxMGY2MTBiOAotI2VuZGlm
Ci0jaWZkZWYgSlNDX0dMSUJfQVBJX0VOQUJMRUQKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklO
RV9NRU1CRVJfU0xPVyhhcGlXcmFwcGVyT2JqZWN0U3BhY2UsIGFwaVdyYXBwZXJPYmplY3RIZWFw
Q2VsbFR5cGUuZ2V0KCksIEpTQ2FsbGJhY2tPYmplY3Q8SlNBUElXcmFwcGVyT2JqZWN0PikKLURZ
TkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhqc2NDYWxsYmFja0Z1bmN0aW9u
U3BhY2UsIGpzY0NhbGxiYWNrRnVuY3Rpb25IZWFwQ2VsbFR5cGUuZ2V0KCksIEpTQ0NhbGxiYWNr
RnVuY3Rpb24pCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coY2FsbGJh
Y2tBUElXcmFwcGVyR2xvYmFsT2JqZWN0U3BhY2UsIGNhbGxiYWNrQVBJV3JhcHBlckdsb2JhbE9i
amVjdEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNDYWxsYmFja09iamVjdDxKU0FQSVdyYXBwZXJHbG9i
YWxPYmplY3Q+KQotI2VuZGlmCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NM
T1coaW50bENvbGxhdG9yU3BhY2UsIGludGxDb2xsYXRvckhlYXBDZWxsVHlwZS5nZXQoKSwgSW50
bENvbGxhdG9yKQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGludGxE
YXRlVGltZUZvcm1hdFNwYWNlLCBpbnRsRGF0ZVRpbWVGb3JtYXRIZWFwQ2VsbFR5cGUuZ2V0KCks
IEludGxEYXRlVGltZUZvcm1hdCkKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJf
U0xPVyhpbnRsRGlzcGxheU5hbWVzU3BhY2UsIGludGxEaXNwbGF5TmFtZXNIZWFwQ2VsbFR5cGUu
Z2V0KCksIEludGxEaXNwbGF5TmFtZXMpCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVN
QkVSX1NMT1coaW50bExpc3RGb3JtYXRTcGFjZSwgaW50bExpc3RGb3JtYXRIZWFwQ2VsbFR5cGUu
Z2V0KCksIEludGxMaXN0Rm9ybWF0KQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJF
Ul9TTE9XKGludGxMb2NhbGVTcGFjZSwgaW50bExvY2FsZUhlYXBDZWxsVHlwZS5nZXQoKSwgSW50
bExvY2FsZSkKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhpbnRsTnVt
YmVyRm9ybWF0U3BhY2UsIGludGxOdW1iZXJGb3JtYXRIZWFwQ2VsbFR5cGUuZ2V0KCksIEludGxO
dW1iZXJGb3JtYXQpCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coaW50
bFBsdXJhbFJ1bGVzU3BhY2UsIGludGxQbHVyYWxSdWxlc0hlYXBDZWxsVHlwZS5nZXQoKSwgSW50
bFBsdXJhbFJ1bGVzKQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGlu
dGxSZWxhdGl2ZVRpbWVGb3JtYXRTcGFjZSwgaW50bFJlbGF0aXZlVGltZUZvcm1hdEhlYXBDZWxs
VHlwZS5nZXQoKSwgSW50bFJlbGF0aXZlVGltZUZvcm1hdCkKLURZTkFNSUNfSVNPX1NVQlNQQUNF
X0RFRklORV9NRU1CRVJfU0xPVyhpbnRsU2VnbWVudEl0ZXJhdG9yU3BhY2UsIGludGxTZWdtZW50
SXRlcmF0b3JIZWFwQ2VsbFR5cGUuZ2V0KCksIEludGxTZWdtZW50SXRlcmF0b3IpCi1EWU5BTUlD
X0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coaW50bFNlZ21lbnRlclNwYWNlLCBpbnRs
U2VnbWVudGVySGVhcENlbGxUeXBlLmdldCgpLCBJbnRsU2VnbWVudGVyKQotRFlOQU1JQ19JU09f
U1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGludGxTZWdtZW50c1NwYWNlLCBpbnRsU2VnbWVu
dHNIZWFwQ2VsbFR5cGUuZ2V0KCksIEludGxTZWdtZW50cykKLSNpZiBFTkFCTEUoV0VCQVNTRU1C
TFkpCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coanNUb1dhc21JQ0Nh
bGxlZVNwYWNlLCBjZWxsSGVhcENlbGxUeXBlLmdldCgpLCBKU1RvV2FzbUlDQ2FsbGVlKQotRFlO
QU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHdlYkFzc2VtYmx5Q29kZUJsb2Nr
U3BhY2UsIHdlYkFzc2VtYmx5Q29kZUJsb2NrSGVhcENlbGxUeXBlLmdldCgpLCBKU1dlYkFzc2Vt
Ymx5Q29kZUJsb2NrKSAvLyBIYXNoOjB4OWFkOTk1Y2QKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RF
RklORV9NRU1CRVJfU0xPVyh3ZWJBc3NlbWJseUV4Y2VwdGlvblNwYWNlLCB3ZWJBc3NlbWJseUV4
Y2VwdGlvbkhlYXBDZWxsVHlwZS5nZXQoKSwgSlNXZWJBc3NlbWJseUV4Y2VwdGlvbikKLURZTkFN
SUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh3ZWJBc3NlbWJseUZ1bmN0aW9uU3Bh
Y2UsIHdlYkFzc2VtYmx5RnVuY3Rpb25IZWFwQ2VsbFR5cGUuZ2V0KCksIFdlYkFzc2VtYmx5RnVu
Y3Rpb24pIC8vIEhhc2g6MHg4YjdjMzJkYgotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01F
TUJFUl9TTE9XKHdlYkFzc2VtYmx5R2xvYmFsU3BhY2UsIHdlYkFzc2VtYmx5R2xvYmFsSGVhcENl
bGxUeXBlLmdldCgpLCBKU1dlYkFzc2VtYmx5R2xvYmFsKQotRFlOQU1JQ19JU09fU1VCU1BBQ0Vf
REVGSU5FX01FTUJFUl9TTE9XKHdlYkFzc2VtYmx5SW5zdGFuY2VTcGFjZSwgd2ViQXNzZW1ibHlJ
bnN0YW5jZUhlYXBDZWxsVHlwZS5nZXQoKSwgSlNXZWJBc3NlbWJseUluc3RhbmNlKQotRFlOQU1J
Q19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHdlYkFzc2VtYmx5TWVtb3J5U3BhY2Us
IHdlYkFzc2VtYmx5TWVtb3J5SGVhcENlbGxUeXBlLmdldCgpLCBKU1dlYkFzc2VtYmx5TWVtb3J5
KQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHdlYkFzc2VtYmx5TW9k
dWxlU3BhY2UsIHdlYkFzc2VtYmx5TW9kdWxlSGVhcENlbGxUeXBlLmdldCgpLCBKU1dlYkFzc2Vt
Ymx5TW9kdWxlKQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHdlYkFz
c2VtYmx5TW9kdWxlUmVjb3JkU3BhY2UsIHdlYkFzc2VtYmx5TW9kdWxlUmVjb3JkSGVhcENlbGxU
eXBlLmdldCgpLCBXZWJBc3NlbWJseU1vZHVsZVJlY29yZCkKLURZTkFNSUNfSVNPX1NVQlNQQUNF
X0RFRklORV9NRU1CRVJfU0xPVyh3ZWJBc3NlbWJseVRhYmxlU3BhY2UsIHdlYkFzc2VtYmx5VGFi
bGVIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTV2ViQXNzZW1ibHlUYWJsZSkKLURZTkFNSUNfSVNPX1NV
QlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh3ZWJBc3NlbWJseVRhZ1NwYWNlLCB3ZWJBc3NlbWJs
eVRhZ0hlYXBDZWxsVHlwZS5nZXQoKSwgSlNXZWJBc3NlbWJseVRhZykKLURZTkFNSUNfSVNPX1NV
QlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh3ZWJBc3NlbWJseVdyYXBwZXJGdW5jdGlvblNwYWNl
LCBjZWxsSGVhcENlbGxUeXBlLmdldCgpLCBXZWJBc3NlbWJseVdyYXBwZXJGdW5jdGlvbikgLy8g
SGFzaDoweGQ0YTVmZjAxCi0jZW5kaWYKLQotI3VuZGVmIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RF
RklORV9NRU1CRVJfU0xPVwotCi0jZGVmaW5lIERZTkFNSUNfU1BBQ0VfQU5EX1NFVF9ERUZJTkVf
TUVNQkVSX1NMT1cobmFtZSwgaGVhcENlbGxUeXBlLCB0eXBlKSBcCi0gICAgSXNvU3Vic3BhY2Uq
IFZNOjpuYW1lIyNTbG93KCkgXAotICAgIHsgXAotICAgICAgICBBU1NFUlQoIW1fIyNuYW1lKTsg
XAotICAgICAgICBhdXRvIHNwYWNlID0gbWFrZVVuaXF1ZTxTcGFjZUFuZFNldD4gSVNPX1NVQlNQ
QUNFX0lOSVQoaGVhcCwgaGVhcENlbGxUeXBlLCB0eXBlKTsgXAotICAgICAgICBXVEY6OnN0b3Jl
U3RvcmVGZW5jZSgpOyBcCi0gICAgICAgIG1fIyNuYW1lID0gV1RGTW92ZShzcGFjZSk7IFwKLSAg
ICAgICAgcmV0dXJuICZtXyMjbmFtZS0+c3BhY2U7IFwKLSAgICB9Ci0KLURZTkFNSUNfU1BBQ0Vf
QU5EX1NFVF9ERUZJTkVfTUVNQkVSX1NMT1coZXZhbEV4ZWN1dGFibGVTcGFjZSwgZGVzdHJ1Y3Rp
YmxlQ2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgRXZhbEV4ZWN1dGFibGUpIC8vIEhhc2g6MHg5NThl
M2U5ZAotRFlOQU1JQ19TUEFDRV9BTkRfU0VUX0RFRklORV9NRU1CRVJfU0xPVyhtb2R1bGVQcm9n
cmFtRXhlY3V0YWJsZVNwYWNlLCBkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlLmdldCgpLCBN
b2R1bGVQcm9ncmFtRXhlY3V0YWJsZSkgLy8gSGFzaDoweDY1MDZmYTNjCi0KLSN1bmRlZiBEWU5B
TUlDX1NQQUNFX0FORF9TRVRfREVGSU5FX01FTUJFUl9TTE9XCi0KIEpTQ2VsbCogVk06OnNlbnRp
bmVsU2V0QnVja2V0U2xvdygpCiB7CiAgICAgQVNTRVJUKCFtX3NlbnRpbmVsU2V0QnVja2V0KTsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAkocmV2aXNpb24gMjg2MDExKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAkod29ya2luZyBjb3B5KQpAQCAtMzEs
NyArMzEsNiBAQAogI2luY2x1ZGUgIkNhbGxEYXRhLmgiCiAjaW5jbHVkZSAiQ2FsbGVlQml0cy5o
IgogI2luY2x1ZGUgIkNvZGVTcGVjaWFsaXphdGlvbktpbmQuaCIKLSNpbmNsdWRlICJDb21wbGV0
ZVN1YnNwYWNlLmgiCiAjaW5jbHVkZSAiQ29uY3VycmVudEpTTG9jay5oIgogI2luY2x1ZGUgIkRG
R0RvZXNHQ0NoZWNrLmgiCiAjaW5jbHVkZSAiRGVsZXRlQWxsQ29kZUVmZm9ydC5oIgpAQCAtNDIs
OCArNDEsNiBAQAogI2luY2x1ZGUgIkhlYXAuaCIKICNpbmNsdWRlICJJbnRlZ3JpdHkuaCIKICNp
bmNsdWRlICJJbnRyaW5zaWMuaCIKLSNpbmNsdWRlICJJc29DZWxsU2V0LmgiCi0jaW5jbHVkZSAi
SXNvU3Vic3BhY2UuaCIKICNpbmNsdWRlICJKU0NKU1ZhbHVlLmgiCiAjaW5jbHVkZSAiSlNEYXRl
TWF0aC5oIgogI2luY2x1ZGUgIkpTTG9jay5oIgpAQCAtMTIyLDggKzExOSw2IEBAIGNsYXNzIERh
dGVJbnN0YW5jZTsKIGNsYXNzIEVycm9ySW5zdGFuY2U7CiBjbGFzcyBFeGNlcHRpb247CiBjbGFz
cyBFeGNlcHRpb25TY29wZTsKLWNsYXNzIEZhc3RNYWxsb2NBbGlnbmVkTWVtb3J5QWxsb2NhdG9y
OwotY2xhc3MgR2lnYWNhZ2VBbGlnbmVkTWVtb3J5QWxsb2NhdG9yOwogY2xhc3MgSGFuZGxlU3Rh
Y2s7CiBjbGFzcyBIYXNPd25Qcm9wZXJ0eUNhY2hlOwogY2xhc3MgSGVhcEFuYWx5emVyOwpAQCAt
MjIwLDggKzIxNSw2IEBAIGNsYXNzIFdlYkFzc2VtYmx5TW9kdWxlUmVjb3JkOwogCiBjb25zdGV4
cHIgYm9vbCB2YWxpZGF0ZURGR0RvZXNHQyA9IEVOQUJMRV9ERkdfRE9FU19HQ19WQUxJREFUSU9O
OwogCi1jbGFzcyBJc29IZWFwQ2VsbFR5cGU7Ci10ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZT4g
Y2xhc3MgSXNvSW5saW5lZEhlYXBDZWxsVHlwZTsKIHRlbXBsYXRlPHR5cGVuYW1lIFBhcmVudD4g
Y2xhc3MgSlNDYWxsYmFja09iamVjdDsKIAogI2lmIEVOQUJMRShGVExfSklUKQpAQCAtNDEzLDE0
NSArNDA2LDU4IEBAIHByaXZhdGU6CiAKIHB1YmxpYzoKICAgICBIZWFwIGhlYXA7Ci0gICAgCi0g
ICAgc3RkOjp1bmlxdWVfcHRyPEZhc3RNYWxsb2NBbGlnbmVkTWVtb3J5QWxsb2NhdG9yPiBmYXN0
TWFsbG9jQWxsb2NhdG9yOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxHaWdhY2FnZUFsaWduZWRNZW1v
cnlBbGxvY2F0b3I+IHByaW1pdGl2ZUdpZ2FjYWdlQWxsb2NhdG9yOwotICAgIHN0ZDo6dW5pcXVl
X3B0cjxHaWdhY2FnZUFsaWduZWRNZW1vcnlBbGxvY2F0b3I+IGpzVmFsdWVHaWdhY2FnZUFsbG9j
YXRvcjsKLQotICAgIHN0ZDo6dW5pcXVlX3B0cjxIZWFwQ2VsbFR5cGU+IGF1eGlsaWFyeUhlYXBD
ZWxsVHlwZTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SGVhcENlbGxUeXBlPiBpbW11dGFibGVCdXR0
ZXJmbHlIZWFwQ2VsbFR5cGU7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPEhlYXBDZWxsVHlwZT4gY2Vs
bEhlYXBDZWxsVHlwZTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SGVhcENlbGxUeXBlPiBkZXN0cnVj
dGlibGVDZWxsSGVhcENlbGxUeXBlOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxJc29IZWFwQ2VsbFR5
cGU+IGFwaUdsb2JhbE9iamVjdEhlYXBDZWxsVHlwZTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SXNv
SGVhcENlbGxUeXBlPiBjYWxsYmFja0NvbnN0cnVjdG9ySGVhcENlbGxUeXBlOwotICAgIHN0ZDo6
dW5pcXVlX3B0cjxJc29IZWFwQ2VsbFR5cGU+IGNhbGxiYWNrR2xvYmFsT2JqZWN0SGVhcENlbGxU
eXBlOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxJc29IZWFwQ2VsbFR5cGU+IGNhbGxiYWNrT2JqZWN0
SGVhcENlbGxUeXBlOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxJc29IZWFwQ2VsbFR5cGU+IGN1c3Rv
bUdldHRlckZ1bmN0aW9uSGVhcENlbGxUeXBlOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxJc29IZWFw
Q2VsbFR5cGU+IGN1c3RvbVNldHRlckZ1bmN0aW9uSGVhcENlbGxUeXBlOwotICAgIHN0ZDo6dW5p
cXVlX3B0cjxJc29IZWFwQ2VsbFR5cGU+IGRhdGVJbnN0YW5jZUhlYXBDZWxsVHlwZTsKLSAgICBz
dGQ6OnVuaXF1ZV9wdHI8SXNvSGVhcENlbGxUeXBlPiBlcnJvckluc3RhbmNlSGVhcENlbGxUeXBl
OwotICAgIHN0ZDo6dW5pcXVlX3B0cjxJc29IZWFwQ2VsbFR5cGU+IGZpbmFsaXphdGlvblJlZ2lz
dHJ5Q2VsbFR5cGU7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPElzb0hlYXBDZWxsVHlwZT4gZ2xvYmFs
TGV4aWNhbEVudmlyb25tZW50SGVhcENlbGxUeXBlOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxJc29I
ZWFwQ2VsbFR5cGU+IGdsb2JhbE9iamVjdEhlYXBDZWxsVHlwZTsKLSAgICBzdGQ6OnVuaXF1ZV9w
dHI8SXNvSGVhcENlbGxUeXBlPiBpbmplY3RlZFNjcmlwdEhvc3RTcGFjZUhlYXBDZWxsVHlwZTsK
LSAgICBzdGQ6OnVuaXF1ZV9wdHI8SXNvSGVhcENlbGxUeXBlPiBqYXZhU2NyaXB0Q2FsbEZyYW1l
SGVhcENlbGxUeXBlOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxJc29IZWFwQ2VsbFR5cGU+IGpzTW9k
dWxlUmVjb3JkSGVhcENlbGxUeXBlOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxJc29IZWFwQ2VsbFR5
cGU+IG1vZHVsZU5hbWVzcGFjZU9iamVjdEhlYXBDZWxsVHlwZTsKLSAgICBzdGQ6OnVuaXF1ZV9w
dHI8SXNvSGVhcENlbGxUeXBlPiBuYXRpdmVTdGRGdW5jdGlvbkhlYXBDZWxsVHlwZTsKLSAgICBz
dGQ6OnVuaXF1ZV9wdHI8SXNvSW5saW5lZEhlYXBDZWxsVHlwZTxKU1N0cmluZz4+IHN0cmluZ0hl
YXBDZWxsVHlwZTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SXNvSGVhcENlbGxUeXBlPiB3ZWFrTWFw
SGVhcENlbGxUeXBlOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxJc29IZWFwQ2VsbFR5cGU+IHdlYWtT
ZXRIZWFwQ2VsbFR5cGU7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPEpTRGVzdHJ1Y3RpYmxlT2JqZWN0
SGVhcENlbGxUeXBlPiBkZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGU7Ci0jaWYgSlNDX09C
SkNfQVBJX0VOQUJMRUQKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SXNvSGVhcENlbGxUeXBlPiBhcGlX
cmFwcGVyT2JqZWN0SGVhcENlbGxUeXBlOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxJc29IZWFwQ2Vs
bFR5cGU+IG9iakNDYWxsYmFja0Z1bmN0aW9uSGVhcENlbGxUeXBlOwotI2VuZGlmCi0jaWZkZWYg
SlNDX0dMSUJfQVBJX0VOQUJMRUQKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SXNvSGVhcENlbGxUeXBl
PiBhcGlXcmFwcGVyT2JqZWN0SGVhcENlbGxUeXBlOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxJc29I
ZWFwQ2VsbFR5cGU+IGNhbGxiYWNrQVBJV3JhcHBlckdsb2JhbE9iamVjdEhlYXBDZWxsVHlwZTsK
LSAgICBzdGQ6OnVuaXF1ZV9wdHI8SXNvSGVhcENlbGxUeXBlPiBqc2NDYWxsYmFja0Z1bmN0aW9u
SGVhcENlbGxUeXBlOwotI2VuZGlmCi0gICAgc3RkOjp1bmlxdWVfcHRyPElzb0hlYXBDZWxsVHlw
ZT4gaW50bENvbGxhdG9ySGVhcENlbGxUeXBlOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxJc29IZWFw
Q2VsbFR5cGU+IGludGxEYXRlVGltZUZvcm1hdEhlYXBDZWxsVHlwZTsKLSAgICBzdGQ6OnVuaXF1
ZV9wdHI8SXNvSGVhcENlbGxUeXBlPiBpbnRsRGlzcGxheU5hbWVzSGVhcENlbGxUeXBlOwotICAg
IHN0ZDo6dW5pcXVlX3B0cjxJc29IZWFwQ2VsbFR5cGU+IGludGxMaXN0Rm9ybWF0SGVhcENlbGxU
eXBlOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxJc29IZWFwQ2VsbFR5cGU+IGludGxMb2NhbGVIZWFw
Q2VsbFR5cGU7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPElzb0hlYXBDZWxsVHlwZT4gaW50bE51bWJl
ckZvcm1hdEhlYXBDZWxsVHlwZTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SXNvSGVhcENlbGxUeXBl
PiBpbnRsUGx1cmFsUnVsZXNIZWFwQ2VsbFR5cGU7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPElzb0hl
YXBDZWxsVHlwZT4gaW50bFJlbGF0aXZlVGltZUZvcm1hdEhlYXBDZWxsVHlwZTsKLSAgICBzdGQ6
OnVuaXF1ZV9wdHI8SXNvSGVhcENlbGxUeXBlPiBpbnRsU2VnbWVudEl0ZXJhdG9ySGVhcENlbGxU
eXBlOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxJc29IZWFwQ2VsbFR5cGU+IGludGxTZWdtZW50ZXJI
ZWFwQ2VsbFR5cGU7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPElzb0hlYXBDZWxsVHlwZT4gaW50bFNl
Z21lbnRzSGVhcENlbGxUeXBlOwotI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKLSAgICBzdGQ6OnVu
aXF1ZV9wdHI8SXNvSGVhcENlbGxUeXBlPiB3ZWJBc3NlbWJseUNvZGVCbG9ja0hlYXBDZWxsVHlw
ZTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SXNvSGVhcENlbGxUeXBlPiB3ZWJBc3NlbWJseUV4Y2Vw
dGlvbkhlYXBDZWxsVHlwZTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SXNvSGVhcENlbGxUeXBlPiB3
ZWJBc3NlbWJseUZ1bmN0aW9uSGVhcENlbGxUeXBlOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxJc29I
ZWFwQ2VsbFR5cGU+IHdlYkFzc2VtYmx5R2xvYmFsSGVhcENlbGxUeXBlOwotICAgIHN0ZDo6dW5p
cXVlX3B0cjxJc29IZWFwQ2VsbFR5cGU+IHdlYkFzc2VtYmx5SW5zdGFuY2VIZWFwQ2VsbFR5cGU7
Ci0gICAgc3RkOjp1bmlxdWVfcHRyPElzb0hlYXBDZWxsVHlwZT4gd2ViQXNzZW1ibHlNZW1vcnlI
ZWFwQ2VsbFR5cGU7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPElzb0hlYXBDZWxsVHlwZT4gd2ViQXNz
ZW1ibHlNb2R1bGVIZWFwQ2VsbFR5cGU7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPElzb0hlYXBDZWxs
VHlwZT4gd2ViQXNzZW1ibHlNb2R1bGVSZWNvcmRIZWFwQ2VsbFR5cGU7Ci0gICAgc3RkOjp1bmlx
dWVfcHRyPElzb0hlYXBDZWxsVHlwZT4gd2ViQXNzZW1ibHlUYWJsZUhlYXBDZWxsVHlwZTsKLSAg
ICBzdGQ6OnVuaXF1ZV9wdHI8SXNvSGVhcENlbGxUeXBlPiB3ZWJBc3NlbWJseVRhZ0hlYXBDZWxs
VHlwZTsKLSNlbmRpZgorCisgICAgY29uc3QgSGVhcENlbGxUeXBlJiBjZWxsSGVhcENlbGxUeXBl
KCkgeyByZXR1cm4gaGVhcC5jZWxsSGVhcENlbGxUeXBlOyB9CisgICAgY29uc3QgSlNEZXN0cnVj
dGlibGVPYmplY3RIZWFwQ2VsbFR5cGUmIGRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgp
IHsgcmV0dXJuIGhlYXAuZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlOyB9OwogCiAjaWYg
RU5BQkxFKEpJVCkKICAgICBzdGQ6OnVuaXF1ZV9wdHI8SklUU2l6ZVN0YXRpc3RpY3M+IGppdFNp
emVTdGF0aXN0aWNzOwogI2VuZGlmCiAgICAgCi0gICAgQ29tcGxldGVTdWJzcGFjZSBwcmltaXRp
dmVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlOyAvLyBUeXBlZCBhcnJheXMsIHN0cmluZ3MsIGJpdHZl
Y3RvcnMsIGV0YyBnbyBoZXJlLgotICAgIENvbXBsZXRlU3Vic3BhY2UganNWYWx1ZUdpZ2FjYWdl
QXV4aWxpYXJ5U3BhY2U7IC8vIEJ1dHRlcmZsaWVzLCBhcnJheXMgb2YgSlNWYWx1ZXMsIGV0YyBn
byBoZXJlLgotICAgIENvbXBsZXRlU3Vic3BhY2UgaW1tdXRhYmxlQnV0dGVyZmx5SlNWYWx1ZUdp
Z2FjYWdlQXV4aWxpYXJ5U3BhY2U7IC8vIEpTSW1tdXRhYmxlQnV0dGVyZmx5IGdvZXMgaGVyZS4K
LQotICAgIC8vIFdlIG1ha2UgY3Jvc3MtY3V0dGluZyBhc3N1bXB0aW9ucyBhYm91dCB0eXBlZCBh
cnJheXMgYmVpbmcgaW4gdGhlIHByaW1pdGl2ZSBHaWdhY2FnZSBhbmQgYnV0dGVyZmxpZXMKLSAg
ICAvLyBiZWluZyBpbiB0aGUgSlNWYWx1ZSBnaWdhY2FnZS4gRm9yIHNvbWUgdHlwZXMsIGl0J3Mg
c3VwZXIgb2J2aW91cyB3aGVyZSB0aGV5IHNob3VsZCBnbywgYW5kIHNvIHdlCi0gICAgLy8gY2Fu
IGhhcmRjb2RlIHRoYXQgZmFjdC4gQnV0IHNvbWV0aW1lcyBpdCdzIG5vdCBjbGVhciwgc28gd2Ug
YWJzdHJhY3QgaXQgYnkgaGF2aW5nIGEgR2lnYWNhZ2U6OktpbmQKLSAgICAvLyBjb25zdGFudCBz
b21ld2hlcmUuCi0gICAgLy8gRklYTUU6IE1heWJlIGl0IHdvdWxkIGJlIGJldHRlciBpZiBldmVy
eW9uZSBhYnN0cmFjdGVkIHRoaXM/Ci0gICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE3NTI0OAotICAgIEFMV0FZU19JTkxJTkUgQ29tcGxldGVTdWJzcGFjZSYg
Z2lnYWNhZ2VBdXhpbGlhcnlTcGFjZShHaWdhY2FnZTo6S2luZCBraW5kKQotICAgIHsKLSAgICAg
ICAgc3dpdGNoIChraW5kKSB7Ci0gICAgICAgIGNhc2UgR2lnYWNhZ2U6OlByaW1pdGl2ZToKLSAg
ICAgICAgICAgIHJldHVybiBwcmltaXRpdmVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlOwotICAgICAg
ICBjYXNlIEdpZ2FjYWdlOjpKU1ZhbHVlOgotICAgICAgICAgICAgcmV0dXJuIGpzVmFsdWVHaWdh
Y2FnZUF1eGlsaWFyeVNwYWNlOwotICAgICAgICBjYXNlIEdpZ2FjYWdlOjpOdW1iZXJPZktpbmRz
OgotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgUkVMRUFTRV9BU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJuIHByaW1pdGl2ZUdpZ2FjYWdlQXV4aWxpYXJ5
U3BhY2U7Ci0gICAgfQotICAgIAotICAgIC8vIFdoZW5ldmVyIHBvc3NpYmxlLCB1c2Ugc3Vic3Bh
Y2VGb3I8Q2VsbFR5cGU+KHZtKSB0byBnZXQgb25lIG9mIHRoZXNlIHN1YnNwYWNlcy4KLSAgICBD
b21wbGV0ZVN1YnNwYWNlIGNlbGxTcGFjZTsKLSAgICBDb21wbGV0ZVN1YnNwYWNlIHZhcmlhYmxl
U2l6ZWRDZWxsU3BhY2U7IC8vIEZJWE1FOiBUaGlzIHNwYWNlIGlzIHByb2JsZW1hdGljIGJlY2F1
c2Ugd2UgaGF2ZSB0aGluZ3MgaW4gaGVyZSBsaWtlIERpcmVjdEFyZ3VtZW50cyBhbmQgU2NvcGVk
QXJndW1lbnRzOyB0aG9zZSBzaG91bGQgYmUgc3BsaXQgaW50byBKU1ZhbHVlT09CIGNlbGxzIGFu
ZCBKU1ZhbHVlU3RyaWN0IGF1eGlsaWFyaWVzLiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTgyODU4Ci0gICAgQ29tcGxldGVTdWJzcGFjZSBkZXN0cnVjdGlibGVPYmpl
Y3RTcGFjZTsKLSAgICAKLSAgICBJc29TdWJzcGFjZSBhcnJheVNwYWNlOwotICAgIElzb1N1YnNw
YWNlIGJpZ0ludFNwYWNlOwotICAgIElzb1N1YnNwYWNlIGNhbGxlZVNwYWNlOwotICAgIElzb1N1
YnNwYWNlIGNsb25lZEFyZ3VtZW50c1NwYWNlOwotICAgIElzb1N1YnNwYWNlIGN1c3RvbUdldHRl
clNldHRlclNwYWNlOwotICAgIElzb1N1YnNwYWNlIGRhdGVJbnN0YW5jZVNwYWNlOwotICAgIElz
b1N1YnNwYWNlIGRvbUF0dHJpYnV0ZUdldHRlclNldHRlclNwYWNlOwotICAgIElzb1N1YnNwYWNl
IGV4Y2VwdGlvblNwYWNlOwotICAgIElzb1N1YnNwYWNlIGV4ZWN1dGFibGVUb0NvZGVCbG9ja0Vk
Z2VTcGFjZTsKLSAgICBJc29TdWJzcGFjZSBmdW5jdGlvblNwYWNlOwotICAgIElzb1N1YnNwYWNl
IGdldHRlclNldHRlclNwYWNlOwotICAgIElzb1N1YnNwYWNlIGdsb2JhbExleGljYWxFbnZpcm9u
bWVudFNwYWNlOwotICAgIElzb1N1YnNwYWNlIGludGVybmFsRnVuY3Rpb25TcGFjZTsKLSAgICBJ
c29TdWJzcGFjZSBqc1Byb3h5U3BhY2U7Ci0gICAgSXNvU3Vic3BhY2UgbmF0aXZlRXhlY3V0YWJs
ZVNwYWNlOwotICAgIElzb1N1YnNwYWNlIG51bWJlck9iamVjdFNwYWNlOwotICAgIElzb1N1YnNw
YWNlIHBsYWluT2JqZWN0U3BhY2U7Ci0gICAgSXNvU3Vic3BhY2UgcHJvbWlzZVNwYWNlOwotICAg
IElzb1N1YnNwYWNlIHByb3BlcnR5TmFtZUVudW1lcmF0b3JTcGFjZTsKLSAgICBJc29TdWJzcGFj
ZSBwcm9wZXJ0eVRhYmxlU3BhY2U7Ci0gICAgSXNvU3Vic3BhY2UgcmVnRXhwU3BhY2U7Ci0gICAg
SXNvU3Vic3BhY2UgcmVnRXhwT2JqZWN0U3BhY2U7Ci0gICAgSXNvU3Vic3BhY2Ugcm9wZVN0cmlu
Z1NwYWNlOwotICAgIElzb1N1YnNwYWNlIHNjb3BlZEFyZ3VtZW50c1NwYWNlOwotICAgIElzb1N1
YnNwYWNlIHNwYXJzZUFycmF5VmFsdWVNYXBTcGFjZTsKLSAgICBJc29TdWJzcGFjZSBzdHJpbmdT
cGFjZTsKLSAgICBJc29TdWJzcGFjZSBzdHJpbmdPYmplY3RTcGFjZTsKLSAgICBJc29TdWJzcGFj
ZSBzdHJ1Y3R1cmVDaGFpblNwYWNlOwotICAgIElzb1N1YnNwYWNlIHN0cnVjdHVyZVJhcmVEYXRh
U3BhY2U7Ci0gICAgSXNvU3Vic3BhY2Ugc3RydWN0dXJlU3BhY2U7Ci0gICAgSXNvU3Vic3BhY2Ug
YnJhbmRlZFN0cnVjdHVyZVNwYWNlOwotICAgIElzb1N1YnNwYWNlIHN5bWJvbFRhYmxlU3BhY2U7
CisgICAgQUxXQVlTX0lOTElORSBDb21wbGV0ZVN1YnNwYWNlJiBwcmltaXRpdmVHaWdhY2FnZUF1
eGlsaWFyeVNwYWNlKCkgeyByZXR1cm4gaGVhcC5wcmltaXRpdmVHaWdhY2FnZUF1eGlsaWFyeVNw
YWNlOyB9CisgICAgQUxXQVlTX0lOTElORSBDb21wbGV0ZVN1YnNwYWNlJiBqc1ZhbHVlR2lnYWNh
Z2VBdXhpbGlhcnlTcGFjZSgpIHsgcmV0dXJuIGhlYXAuanNWYWx1ZUdpZ2FjYWdlQXV4aWxpYXJ5
U3BhY2U7IH0KKyAgICBBTFdBWVNfSU5MSU5FIENvbXBsZXRlU3Vic3BhY2UmIGltbXV0YWJsZUJ1
dHRlcmZseUpTVmFsdWVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlKCkgeyByZXR1cm4gaGVhcC5pbW11
dGFibGVCdXR0ZXJmbHlKU1ZhbHVlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZTsgfQorICAgIEFMV0FZ
U19JTkxJTkUgQ29tcGxldGVTdWJzcGFjZSYgZ2lnYWNhZ2VBdXhpbGlhcnlTcGFjZShHaWdhY2Fn
ZTo6S2luZCBraW5kKSB7IHJldHVybiBoZWFwLmdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2Uoa2luZCk7
IH0KKyAgICBBTFdBWVNfSU5MSU5FIENvbXBsZXRlU3Vic3BhY2UmIGNlbGxTcGFjZSgpIHsgcmV0
dXJuIGhlYXAuY2VsbFNwYWNlOyB9CisgICAgQUxXQVlTX0lOTElORSBDb21wbGV0ZVN1YnNwYWNl
JiB2YXJpYWJsZVNpemVkQ2VsbFNwYWNlKCkgeyByZXR1cm4gaGVhcC52YXJpYWJsZVNpemVkQ2Vs
bFNwYWNlOyB9CisgICAgQUxXQVlTX0lOTElORSBDb21wbGV0ZVN1YnNwYWNlJiBkZXN0cnVjdGli
bGVPYmplY3RTcGFjZSgpIHsgcmV0dXJuIGhlYXAuZGVzdHJ1Y3RpYmxlT2JqZWN0U3BhY2U7IH0K
KworICAgIEFMV0FZU19JTkxJTkUgSXNvU3Vic3BhY2UmIGFycmF5U3BhY2UoKSB7IHJldHVybiBo
ZWFwLmFycmF5U3BhY2U7IH0KKyAgICBBTFdBWVNfSU5MSU5FIElzb1N1YnNwYWNlJiBiaWdJbnRT
cGFjZSgpIHsgcmV0dXJuIGhlYXAuYmlnSW50U3BhY2U7IH0KKyAgICBBTFdBWVNfSU5MSU5FIElz
b1N1YnNwYWNlJiBjYWxsZWVTcGFjZSgpIHsgcmV0dXJuIGhlYXAuY2FsbGVlU3BhY2U7IH0KKyAg
ICBBTFdBWVNfSU5MSU5FIElzb1N1YnNwYWNlJiBjbG9uZWRBcmd1bWVudHNTcGFjZSgpIHsgcmV0
dXJuIGhlYXAuY2xvbmVkQXJndW1lbnRzU3BhY2U7IH0KKyAgICBBTFdBWVNfSU5MSU5FIElzb1N1
YnNwYWNlJiBjdXN0b21HZXR0ZXJTZXR0ZXJTcGFjZSgpIHsgcmV0dXJuIGhlYXAuY3VzdG9tR2V0
dGVyU2V0dGVyU3BhY2U7IH0KKyAgICBBTFdBWVNfSU5MSU5FIElzb1N1YnNwYWNlJiBkYXRlSW5z
dGFuY2VTcGFjZSgpIHsgcmV0dXJuIGhlYXAuZGF0ZUluc3RhbmNlU3BhY2U7IH0KKyAgICBBTFdB
WVNfSU5MSU5FIElzb1N1YnNwYWNlJiBkb21BdHRyaWJ1dGVHZXR0ZXJTZXR0ZXJTcGFjZSgpIHsg
cmV0dXJuIGhlYXAuZG9tQXR0cmlidXRlR2V0dGVyU2V0dGVyU3BhY2U7IH0KKyAgICBBTFdBWVNf
SU5MSU5FIElzb1N1YnNwYWNlJiBleGNlcHRpb25TcGFjZSgpIHsgcmV0dXJuIGhlYXAuZXhjZXB0
aW9uU3BhY2U7IH0KKyAgICBBTFdBWVNfSU5MSU5FIElzb1N1YnNwYWNlJiBleGVjdXRhYmxlVG9D
b2RlQmxvY2tFZGdlU3BhY2UoKSB7IHJldHVybiBoZWFwLmV4ZWN1dGFibGVUb0NvZGVCbG9ja0Vk
Z2VTcGFjZTsgfQorICAgIEFMV0FZU19JTkxJTkUgSXNvU3Vic3BhY2UmIGZ1bmN0aW9uU3BhY2Uo
KSB7IHJldHVybiBoZWFwLmZ1bmN0aW9uU3BhY2U7IH0KKyAgICBBTFdBWVNfSU5MSU5FIElzb1N1
YnNwYWNlJiBnZXR0ZXJTZXR0ZXJTcGFjZSgpIHsgcmV0dXJuIGhlYXAuZ2V0dGVyU2V0dGVyU3Bh
Y2U7IH0KKyAgICBBTFdBWVNfSU5MSU5FIElzb1N1YnNwYWNlJiBnbG9iYWxMZXhpY2FsRW52aXJv
bm1lbnRTcGFjZSgpIHsgcmV0dXJuIGhlYXAuZ2xvYmFsTGV4aWNhbEVudmlyb25tZW50U3BhY2U7
IH0KKyAgICBBTFdBWVNfSU5MSU5FIElzb1N1YnNwYWNlJiBpbnRlcm5hbEZ1bmN0aW9uU3BhY2Uo
KSB7IHJldHVybiBoZWFwLmludGVybmFsRnVuY3Rpb25TcGFjZTsgfQorICAgIEFMV0FZU19JTkxJ
TkUgSXNvU3Vic3BhY2UmIGpzUHJveHlTcGFjZSgpIHsgcmV0dXJuIGhlYXAuanNQcm94eVNwYWNl
OyB9CisgICAgQUxXQVlTX0lOTElORSBJc29TdWJzcGFjZSYgbmF0aXZlRXhlY3V0YWJsZVNwYWNl
KCkgeyByZXR1cm4gaGVhcC5uYXRpdmVFeGVjdXRhYmxlU3BhY2U7IH0KKyAgICBBTFdBWVNfSU5M
SU5FIElzb1N1YnNwYWNlJiBudW1iZXJPYmplY3RTcGFjZSgpIHsgcmV0dXJuIGhlYXAubnVtYmVy
T2JqZWN0U3BhY2U7IH0KKyAgICBBTFdBWVNfSU5MSU5FIElzb1N1YnNwYWNlJiBwbGFpbk9iamVj
dFNwYWNlKCkgeyByZXR1cm4gaGVhcC5wbGFpbk9iamVjdFNwYWNlOyB9CisgICAgQUxXQVlTX0lO
TElORSBJc29TdWJzcGFjZSYgcHJvbWlzZVNwYWNlKCkgeyByZXR1cm4gaGVhcC5wcm9taXNlU3Bh
Y2U7IH0KKyAgICBBTFdBWVNfSU5MSU5FIElzb1N1YnNwYWNlJiBwcm9wZXJ0eU5hbWVFbnVtZXJh
dG9yU3BhY2UoKSB7IHJldHVybiBoZWFwLnByb3BlcnR5TmFtZUVudW1lcmF0b3JTcGFjZTsgfQor
ICAgIEFMV0FZU19JTkxJTkUgSXNvU3Vic3BhY2UmIHByb3BlcnR5VGFibGVTcGFjZSgpIHsgcmV0
dXJuIGhlYXAucHJvcGVydHlUYWJsZVNwYWNlOyB9CisgICAgQUxXQVlTX0lOTElORSBJc29TdWJz
cGFjZSYgcmVnRXhwU3BhY2UoKSB7IHJldHVybiBoZWFwLnJlZ0V4cFNwYWNlOyB9CisgICAgQUxX
QVlTX0lOTElORSBJc29TdWJzcGFjZSYgcmVnRXhwT2JqZWN0U3BhY2UoKSB7IHJldHVybiBoZWFw
LnJlZ0V4cE9iamVjdFNwYWNlOyB9CisgICAgQUxXQVlTX0lOTElORSBJc29TdWJzcGFjZSYgcm9w
ZVN0cmluZ1NwYWNlKCkgeyByZXR1cm4gaGVhcC5yb3BlU3RyaW5nU3BhY2U7IH0KKyAgICBBTFdB
WVNfSU5MSU5FIElzb1N1YnNwYWNlJiBzY29wZWRBcmd1bWVudHNTcGFjZSgpIHsgcmV0dXJuIGhl
YXAuc2NvcGVkQXJndW1lbnRzU3BhY2U7IH0KKyAgICBBTFdBWVNfSU5MSU5FIElzb1N1YnNwYWNl
JiBzcGFyc2VBcnJheVZhbHVlTWFwU3BhY2UoKSB7IHJldHVybiBoZWFwLnNwYXJzZUFycmF5VmFs
dWVNYXBTcGFjZTsgfQorICAgIEFMV0FZU19JTkxJTkUgSXNvU3Vic3BhY2UmIHN0cmluZ1NwYWNl
KCkgeyByZXR1cm4gaGVhcC5zdHJpbmdTcGFjZTsgfQorICAgIEFMV0FZU19JTkxJTkUgSXNvU3Vi
c3BhY2UmIHN0cmluZ09iamVjdFNwYWNlKCkgeyByZXR1cm4gaGVhcC5zdHJpbmdPYmplY3RTcGFj
ZTsgfQorICAgIEFMV0FZU19JTkxJTkUgSXNvU3Vic3BhY2UmIHN0cnVjdHVyZUNoYWluU3BhY2Uo
KSB7IHJldHVybiBoZWFwLnN0cnVjdHVyZUNoYWluU3BhY2U7IH0KKyAgICBBTFdBWVNfSU5MSU5F
IElzb1N1YnNwYWNlJiBzdHJ1Y3R1cmVSYXJlRGF0YVNwYWNlKCkgeyByZXR1cm4gaGVhcC5zdHJ1
Y3R1cmVSYXJlRGF0YVNwYWNlOyB9CisgICAgQUxXQVlTX0lOTElORSBJc29TdWJzcGFjZSYgc3Ry
dWN0dXJlU3BhY2UoKSB7IHJldHVybiBoZWFwLnN0cnVjdHVyZVNwYWNlOyB9CisgICAgQUxXQVlT
X0lOTElORSBJc29TdWJzcGFjZSYgYnJhbmRlZFN0cnVjdHVyZVNwYWNlKCkgeyByZXR1cm4gaGVh
cC5icmFuZGVkU3RydWN0dXJlU3BhY2U7IH0KKyAgICBBTFdBWVNfSU5MSU5FIElzb1N1YnNwYWNl
JiBzeW1ib2xUYWJsZVNwYWNlKCkgeyByZXR1cm4gaGVhcC5zeW1ib2xUYWJsZVNwYWNlOyB9CiAK
ICNkZWZpbmUgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihuYW1lKSBcCiAgICAg
dGVtcGxhdGU8U3Vic3BhY2VBY2Nlc3MgbW9kZT4gXAotICAgIElzb1N1YnNwYWNlKiBuYW1lKCkg
XAotICAgIHsgXAotICAgICAgICBpZiAobV8jI25hbWUgfHwgbW9kZSA9PSBTdWJzcGFjZUFjY2Vz
czo6Q29uY3VycmVudGx5KSBcCi0gICAgICAgICAgICByZXR1cm4gbV8jI25hbWUuZ2V0KCk7IFwK
LSAgICAgICAgcmV0dXJuIG5hbWUjI1Nsb3coKTsgXAotICAgIH0gXAotICAgIEpTX0VYUE9SVF9Q
UklWQVRFIElzb1N1YnNwYWNlKiBuYW1lIyNTbG93KCk7IFwKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8
SXNvU3Vic3BhY2U+IG1fIyNuYW1lOwotCisgICAgQUxXQVlTX0lOTElORSBJc29TdWJzcGFjZSog
bmFtZSgpIHsgcmV0dXJuIGhlYXAubmFtZTxtb2RlPigpOyB9CiAKICNpZiBKU0NfT0JKQ19BUElf
RU5BQkxFRAogICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoYXBpV3JhcHBl
ck9iamVjdFNwYWNlKQpAQCAtNjU3LDc0ICs1NjMsMjMgQEAgcHVibGljOgogI2VuZGlmCiAKICN1
bmRlZiBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSCi0gICAgCi0gICAgSXNvQ2Vs
bFNldCBleGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlc1dpdGhDb25zdHJhaW50czsKLSAgICBJc29D
ZWxsU2V0IGV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2VzV2l0aEZpbmFsaXplcnM7CisKKyAgICBB
TFdBWVNfSU5MSU5FIElzb0NlbGxTZXQmIGV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2VzV2l0aENv
bnN0cmFpbnRzKCkgeyByZXR1cm4gaGVhcC5leGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlc1dpdGhD
b25zdHJhaW50czsgfQorICAgIEFMV0FZU19JTkxJTkUgSXNvQ2VsbFNldCYgZXhlY3V0YWJsZVRv
Q29kZUJsb2NrRWRnZXNXaXRoRmluYWxpemVycygpIHsgcmV0dXJuIGhlYXAuZXhlY3V0YWJsZVRv
Q29kZUJsb2NrRWRnZXNXaXRoRmluYWxpemVyczsgfQogCiAjZGVmaW5lIERZTkFNSUNfU1BBQ0Vf
QU5EX1NFVF9ERUZJTkVfTUVNQkVSKG5hbWUpIFwKICAgICB0ZW1wbGF0ZTxTdWJzcGFjZUFjY2Vz
cyBtb2RlPiBcCi0gICAgSXNvU3Vic3BhY2UqIG5hbWUoKSBcCi0gICAgeyBcCi0gICAgICAgIGlm
IChhdXRvKiBzcGFjZUFuZFNldCA9IG1fIyNuYW1lLmdldCgpKSBcCi0gICAgICAgICAgICByZXR1
cm4gJnNwYWNlQW5kU2V0LT5zcGFjZTsgXAotICAgICAgICBpZiAobW9kZSA9PSBTdWJzcGFjZUFj
Y2Vzczo6Q29uY3VycmVudGx5KSBcCi0gICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsgXAotICAg
ICAgICByZXR1cm4gbmFtZSMjU2xvdygpOyBcCi0gICAgfSBcCi0gICAgSXNvU3Vic3BhY2UqIG5h
bWUjI1Nsb3coKTsgXAotICAgIHN0ZDo6dW5pcXVlX3B0cjxTcGFjZUFuZFNldD4gbV8jI25hbWU7
Ci0gICAgCi0gICAgc3RydWN0IFNwYWNlQW5kU2V0IHsKLSAgICAgICAgV1RGX01BS0VfU1RSVUNU
X0ZBU1RfQUxMT0NBVEVEOworICAgIEFMV0FZU19JTkxJTkUgSXNvU3Vic3BhY2UqIG5hbWUoKSB7
IHJldHVybiBoZWFwLm5hbWU8bW9kZT4oKTsgfQogCi0gICAgICAgIElzb1N1YnNwYWNlIHNwYWNl
OwotICAgICAgICBJc29DZWxsU2V0IHNldDsKLSAgICAgICAgCi0gICAgICAgIHRlbXBsYXRlPHR5
cGVuYW1lLi4uIEFyZ3VtZW50cz4KLSAgICAgICAgU3BhY2VBbmRTZXQoQXJndW1lbnRzJiYuLi4g
YXJndW1lbnRzKQotICAgICAgICAgICAgOiBzcGFjZShzdGQ6OmZvcndhcmQ8QXJndW1lbnRzPihh
cmd1bWVudHMpLi4uKQotICAgICAgICAgICAgLCBzZXQoc3BhY2UpCi0gICAgICAgIHsKLSAgICAg
ICAgfQotICAgICAgICAKLSAgICAgICAgc3RhdGljIElzb0NlbGxTZXQmIHNldEZvcihTdWJzcGFj
ZSYgc3BhY2UpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiAqYml0d2lzZV9jYXN0PElz
b0NlbGxTZXQqPigKLSAgICAgICAgICAgICAgICBiaXR3aXNlX2Nhc3Q8Y2hhcio+KCZzcGFjZSkg
LQotICAgICAgICAgICAgICAgIE9CSkVDVF9PRkZTRVRPRihTcGFjZUFuZFNldCwgc3BhY2UpICsK
LSAgICAgICAgICAgICAgICBPQkpFQ1RfT0ZGU0VUT0YoU3BhY2VBbmRTZXQsIHNldCkpOwotICAg
ICAgICB9Ci0gICAgfTsKLSAgICAKLSAgICBTcGFjZUFuZFNldCBjb2RlQmxvY2tTcGFjZTsKLQot
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmM+Ci0gICAgdm9pZCBmb3JFYWNoQ29kZUJsb2NrU3Bh
Y2UoY29uc3QgRnVuYyYgZnVuYykKLSAgICB7Ci0gICAgICAgIC8vIFRoaXMgc2hvdWxkIG5vdCBp
bmNsdWRlIHdlYkFzc2VtYmx5Q29kZUJsb2NrU3BhY2UgYmVjYXVzZSB0aGlzIGlzIGFib3V0IHN1
YnNjbGFzc2VzIG9mCi0gICAgICAgIC8vIEpTQzo6Q29kZUJsb2NrLgotICAgICAgICBmdW5jKGNv
ZGVCbG9ja1NwYWNlKTsKLSAgICB9CisgICAgdXNpbmcgU3BhY2VBbmRTZXQgPSBIZWFwOjpTcGFj
ZUFuZFNldDsKKyAgICBBTFdBWVNfSU5MSU5FIFNwYWNlQW5kU2V0JiBjb2RlQmxvY2tTcGFjZSgp
IHsgcmV0dXJuIGhlYXAuY29kZUJsb2NrU3BhY2U7IH0KIAogICAgIERZTkFNSUNfU1BBQ0VfQU5E
X1NFVF9ERUZJTkVfTUVNQkVSKGV2YWxFeGVjdXRhYmxlU3BhY2UpCiAgICAgRFlOQU1JQ19TUEFD
RV9BTkRfU0VUX0RFRklORV9NRU1CRVIobW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGVTcGFjZSkKLSAg
ICBTcGFjZUFuZFNldCBmdW5jdGlvbkV4ZWN1dGFibGVTcGFjZTsKLSAgICBTcGFjZUFuZFNldCBw
cm9ncmFtRXhlY3V0YWJsZVNwYWNlOwotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuYz4KLSAg
ICB2b2lkIGZvckVhY2hTY3JpcHRFeGVjdXRhYmxlU3BhY2UoY29uc3QgRnVuYyYgZnVuYykKLSAg
ICB7Ci0gICAgICAgIGlmIChtX2V2YWxFeGVjdXRhYmxlU3BhY2UpCi0gICAgICAgICAgICBmdW5j
KCptX2V2YWxFeGVjdXRhYmxlU3BhY2UpOwotICAgICAgICBmdW5jKGZ1bmN0aW9uRXhlY3V0YWJs
ZVNwYWNlKTsKLSAgICAgICAgaWYgKG1fbW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGVTcGFjZSkKLSAg
ICAgICAgICAgIGZ1bmMoKm1fbW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGVTcGFjZSk7Ci0gICAgICAg
IGZ1bmMocHJvZ3JhbUV4ZWN1dGFibGVTcGFjZSk7Ci0gICAgfQotCi0gICAgU3BhY2VBbmRTZXQg
dW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGVTcGFjZTsKIAotI3VuZGVmIERZTkFNSUNfU1BBQ0Vf
QU5EX1NFVF9ERUZJTkVfTUVNQkVSCisgICAgQUxXQVlTX0lOTElORSBTcGFjZUFuZFNldCYgZnVu
Y3Rpb25FeGVjdXRhYmxlU3BhY2UoKSB7IHJldHVybiBoZWFwLmZ1bmN0aW9uRXhlY3V0YWJsZVNw
YWNlOyB9CisgICAgQUxXQVlTX0lOTElORSBTcGFjZUFuZFNldCYgcHJvZ3JhbUV4ZWN1dGFibGVT
cGFjZSgpIHsgcmV0dXJuIGhlYXAucHJvZ3JhbUV4ZWN1dGFibGVTcGFjZTsgfQorICAgIEFMV0FZ
U19JTkxJTkUgU3BhY2VBbmRTZXQmIHVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlU3BhY2UoKSB7
IHJldHVybiBoZWFwLnVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlU3BhY2U7IH0KIAogICAgIFZN
VHlwZSB2bVR5cGU7CiAgICAgQ2xpZW50RGF0YSogY2xpZW50RGF0YTsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1dlYWtNYXBQcm90b3R5cGUuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFrTWFwUHJvdG90eXBlLmgJKHJldmlzaW9u
IDI4NjAxMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dlYWtNYXBQcm90b3R5
cGUuaAkod29ya2luZyBjb3B5KQpAQCAtNDEsNyArNDEsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGlj
IElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNf
QVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShXZWFrTWFwUHJvdG90eXBlLCBCYXNlKTsKLSAg
ICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBs
YWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgV2Vha01hcFByb3RvdHlwZSog
Y3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFrT2JqZWN0
UmVmUHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvV2Vha09iamVjdFJlZlByb3RvdHlwZS5oCShyZXZpc2lvbiAyODYwMTEpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFrT2JqZWN0UmVmUHJvdG90eXBlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTM3LDcgKzM3LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSog
c3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VC
U1BBQ0VfU0hBUkFCTEUoV2Vha09iamVjdFJlZlByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJl
dHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVj
dFNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIFdlYWtPYmplY3RSZWZQcm90b3R5cGUqIGNy
ZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3Ry
dWN0dXJlKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha1NldFByb3Rv
dHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dlYWtT
ZXRQcm90b3R5cGUuaAkocmV2aXNpb24gMjg2MDExKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvV2Vha1NldFByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00MSw3ICs0MSw3
IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkK
ICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKFdlYWtT
ZXRQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7
CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIHN0
YXRpYyBXZWFrU2V0UHJvdG90eXBlKiBjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS90b29scy9KU0RvbGxhclZNLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvdG9vbHMvSlNEb2xsYXJWTS5jcHAJKHJldmlzaW9uIDI4NjAxMSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxhclZNLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTMz
LDcgKzEzMyw3IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vi
c3BhY2VBY2Nlc3M+CiAgICAgc3RhdGljIENvbXBsZXRlU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZN
JiB2bSkKICAgICB7Ci0gICAgICAgIHJldHVybiAmdm0uY2VsbFNwYWNlOworICAgICAgICByZXR1
cm4gJnZtLmNlbGxTcGFjZSgpOwogICAgIH0KIAogICAgIEpTRG9sbGFyVk1DYWxsRnJhbWUoVk0m
IHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKQEAgLTIyMyw3ICsyMjMsNyBAQCBwdWJsaWM6CiAg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNzPgogICAgIHN0YXRp
YyBDb21wbGV0ZVN1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewotICAgICAgICBy
ZXR1cm4gJnZtLmNlbGxTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5jZWxsU3BhY2UoKTsKICAg
ICB9CiAKICAgICBSb290KiByb290KCkgY29uc3QgeyByZXR1cm4gbV9yb290LmdldCgpOyB9CkBA
IC0yODcsNyArMjg3LDcgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBl
LCBTdWJzcGFjZUFjY2Vzcz4KICAgICBzdGF0aWMgQ29tcGxldGVTdWJzcGFjZSogc3Vic3BhY2VG
b3IoVk0mIHZtKQogICAgIHsKLSAgICAgICAgcmV0dXJuICZ2bS5kZXN0cnVjdGlibGVPYmplY3RT
cGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5kZXN0cnVjdGlibGVPYmplY3RTcGFjZSgpOwogICAg
IH0KIAogICAgIFJvb3QoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKQEAgLTM1NCw3ICsz
NTQsNyBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUsIFN1YnNwYWNl
QWNjZXNzPgogICAgIHN0YXRpYyBDb21wbGV0ZVN1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0p
CiAgICAgewotICAgICAgICByZXR1cm4gJnZtLmNlbGxTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2
bS5jZWxsU3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgU2ltcGxlT2JqZWN0KiBjcmVhdGUo
Vk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQpAQCAtNDI2LDcgKzQyNiw3IEBA
IHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vic3BhY2VBY2Nlc3M+
CiAgICAgc3RhdGljIENvbXBsZXRlU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7
Ci0gICAgICAgIHJldHVybiAmdm0uY2VsbFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLmNlbGxT
cGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShW
TSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQpA
QCAtNTA4LDcgKzUwOCw3IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlw
ZSwgU3Vic3BhY2VBY2Nlc3M+CiAgICAgc3RhdGljIENvbXBsZXRlU3Vic3BhY2UqIHN1YnNwYWNl
Rm9yKFZNJiB2bSkKICAgICB7Ci0gICAgICAgIHJldHVybiAmdm0uY2VsbFNwYWNlOworICAgICAg
ICByZXR1cm4gJnZtLmNlbGxTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBTdHJ1Y3R1cmUq
IGNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpT
VmFsdWUgcHJvdG90eXBlKQpAQCAtNTkwLDcgKzU5MCw3IEBAIElHTk9SRV9XQVJOSU5HU19FTkQK
ICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vic3BhY2VBY2Nlc3M+CiAgICAgc3Rh
dGljIENvbXBsZXRlU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7Ci0gICAgICAg
IHJldHVybiAmdm0uY2VsbFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLmNlbGxTcGFjZSgpOwog
ICAgIH0KIAogICAgIHN0YXRpYyBSdW50aW1lQXJyYXkqIGNyZWF0ZShKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKQEAgLTc3Miw3ICs3NzIsNyBAQCBw
dWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNzPgog
ICAgIHN0YXRpYyBDb21wbGV0ZVN1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewot
ICAgICAgICByZXR1cm4gJnZtLmNlbGxTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5jZWxsU3Bh
Y2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0m
IHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKQEAg
LTg3Miw3ICs4NzIsNyBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUs
IFN1YnNwYWNlQWNjZXNzPgogICAgIHN0YXRpYyBDb21wbGV0ZVN1YnNwYWNlKiBzdWJzcGFjZUZv
cihWTSYgdm0pCiAgICAgewotICAgICAgICByZXR1cm4gJnZtLmNlbGxTcGFjZTsKKyAgICAgICAg
cmV0dXJuICZ2bS5jZWxsU3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgU3RydWN0dXJlKiBj
cmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1Zh
bHVlIHByb3RvdHlwZSkKQEAgLTg5Nyw3ICs4OTcsNyBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8
dHlwZW5hbWUgQ2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNzPgogICAgIHN0YXRpYyBDb21wbGV0ZVN1
YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewotICAgICAgICByZXR1cm4gJnZtLmNl
bGxTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5jZWxsU3BhY2UoKTsKICAgICB9CiAKICAgICBP
YmplY3REb2luZ1NpZGVFZmZlY3RQdXRXaXRob3V0Q29ycmVjdFNsb3RTdGF0dXMoVk0mIHZtLCBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSkKQEAgLTk0OCw3ICs5NDgsNyBAQCBwdWJsaWM6CiAgICAgdGVt
cGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNzPgogICAgIHN0YXRpYyBDb21w
bGV0ZVN1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewotICAgICAgICByZXR1cm4g
JnZtLmNlbGxTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5jZWxsU3BhY2UoKTsKICAgICB9CiAK
ICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKQEAgLTE1ODUsNyArMTU4NSw3
IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vic3BhY2VBY2Nl
c3M+CiAgICAgc3RhdGljIENvbXBsZXRlU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAg
ICB7Ci0gICAgICAgIHJldHVybiAmdm0uY2VsbFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLmNl
bGxTcGFjZSgpOwogICAgIH0KIAogICAgIEpTVGVzdEN1c3RvbUdldHRlclNldHRlcihWTSYgdm0s
IFN0cnVjdHVyZSogc3RydWN0dXJlKQpAQCAtMTgzOCw3ICsxODM4LDcgQEAgcHVibGljOgogICAg
IHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlLCBTdWJzcGFjZUFjY2Vzcz4KICAgICBzdGF0aWMg
Q29tcGxldGVTdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKLSAgICAgICAgcmV0
dXJuICZ2bS5kZXN0cnVjdGlibGVPYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5kZXN0
cnVjdGlibGVPYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIGNsYXNzIENsaWVudCBmaW5hbCA6
IHB1YmxpYyBXYXNtOjpTdHJlYW1pbmdQYXJzZXJDbGllbnQgewpAQCAtMTkzMyw3ICsxOTMzLDcg
QEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlLCBTdWJzcGFjZUFjY2Vz
cz4KICAgICBzdGF0aWMgQ29tcGxldGVTdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAg
IHsKLSAgICAgICAgcmV0dXJuICZ2bS5kZXN0cnVjdGlibGVPYmplY3RTcGFjZTsKKyAgICAgICAg
cmV0dXJuICZ2bS5kZXN0cnVjdGlibGVPYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIFdhc21T
dHJlYW1pbmdDb21waWxlcihWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBXYXNtOjpDb21w
aWxlck1vZGUgY29tcGlsZXJNb2RlLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1By
b21pc2UqIHByb21pc2UsIEpTT2JqZWN0KiBpbXBvcnRPYmplY3QpCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvdG9vbHMvSlNEb2xsYXJWTS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS90b29scy9KU0RvbGxhclZNLmgJKHJldmlzaW9uIDI4NjAxMSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxhclZNLmgJKHdvcmtpbmcgY29weSkKQEAgLTQy
LDcgKzQyLDcgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlLCBTdWJz
cGFjZUFjY2Vzcz4KICAgICBzdGF0aWMgQ29tcGxldGVTdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0m
IHZtKQogICAgIHsKLSAgICAgICAgcmV0dXJuICZ2bS5jZWxsU3BhY2U7CisgICAgICAgIHJldHVy
biAmdm0uY2VsbFNwYWNlKCk7CiAgICAgfQogICAgIAogICAgIERFQ0xBUkVfRVhQT1JUX0lORk87
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseS5o
CShyZXZpc2lvbiAyODYwMTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dl
YkFzc2VtYmx5LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDE2LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDE2LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00MSw3ICs0MSw3IEBAIHB1YmxpYzoKICAg
ICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAg
IFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTV2ViQXNzZW1ibHksIEJhc2Up
OwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAm
dm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBKU1dlYkFzc2VtYmx5
KiBjcmVhdGUoVk0mLCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSopOwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlDb21waWxlRXJyb3JQcm90b3R5cGUu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJs
eUNvbXBpbGVFcnJvclByb3RvdHlwZS5oCShyZXZpc2lvbiAyODYwMTEpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUNvbXBpbGVFcnJvclByb3RvdHlwZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNi0y
MDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAx
Ni0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpAQCAtNDEsNyArNDEsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIElzb1N1
YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJU
X0lTT19TVUJTUEFDRV9TSEFSQUJMRShXZWJBc3NlbWJseUNvbXBpbGVFcnJvclByb3RvdHlwZSwg
QmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0
dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIFdlYkFzc2Vt
Ymx5Q29tcGlsZUVycm9yUHJvdG90eXBlKiBjcmVhdGUoVk0mLCBKU0dsb2JhbE9iamVjdCosIFN0
cnVjdHVyZSopOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1i
bHlFeGNlcHRpb25Qcm90b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9qcy9XZWJBc3NlbWJseUV4Y2VwdGlvblByb3RvdHlwZS5oCShyZXZpc2lvbiAyODYw
MTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUV4Y2VwdGlv
blByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00MSw3ICs0MSw3IEBAIHB1YmxpYzoKICAg
ICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAg
IFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKFdlYkFzc2VtYmx5RXhjZXB0aW9u
UHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOwor
ICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0
aWMgV2ViQXNzZW1ibHlFeGNlcHRpb25Qcm90b3R5cGUqIGNyZWF0ZShWTSYsIEpTR2xvYmFsT2Jq
ZWN0KiwgU3RydWN0dXJlKik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9X
ZWJBc3NlbWJseUdsb2JhbFByb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5R2xvYmFsUHJvdG90eXBlLmgJKHJldmlzaW9uIDI4
NjAxMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5R2xvYmFs
UHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAxOS0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDAsNyArNDAsNyBAQCBwdWJsaWM6CiAgICAgc3Rh
dGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFU
SUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShXZWJBc3NlbWJseUdsb2JhbFByb3RvdHlw
ZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAg
cmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIFdlYkFz
c2VtYmx5R2xvYmFsUHJvdG90eXBlKiBjcmVhdGUoVk0mLCBKU0dsb2JhbE9iamVjdCosIFN0cnVj
dHVyZSopOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlJ
bnN0YW5jZVByb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL2pzL1dlYkFzc2VtYmx5SW5zdGFuY2VQcm90b3R5cGUuaAkocmV2aXNpb24gMjg2MDExKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlJbnN0YW5jZVByb3Rv
dHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxNi0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAxNi0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDEsNyArNDEsNyBAQCBwdWJsaWM6CiAgICAgc3Rh
dGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFU
SUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShXZWJBc3NlbWJseUluc3RhbmNlUHJvdG90
eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAg
ICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgV2Vi
QXNzZW1ibHlJbnN0YW5jZVByb3RvdHlwZSogY3JlYXRlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBT
dHJ1Y3R1cmUqKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2Vt
Ymx5TGlua0Vycm9yUHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vanMvV2ViQXNzZW1ibHlMaW5rRXJyb3JQcm90b3R5cGUuaAkocmV2aXNpb24gMjg2
MDExKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlMaW5rRXJy
b3JQcm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTYtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTYtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQxLDcgKzQxLDcgQEAgcHVibGljOgog
ICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAg
ICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoV2ViQXNzZW1ibHlMaW5rRXJy
b3JQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7
CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIHN0
YXRpYyBXZWJBc3NlbWJseUxpbmtFcnJvclByb3RvdHlwZSogY3JlYXRlKFZNJiwgSlNHbG9iYWxP
YmplY3QqLCBTdHJ1Y3R1cmUqKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pz
L1dlYkFzc2VtYmx5TWVtb3J5UHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlNZW1vcnlQcm90b3R5cGUuaAkocmV2aXNpb24g
Mjg2MDExKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlNZW1v
cnlQcm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTYtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTYtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQxLDcgKzQxLDcgQEAgcHVibGljOgog
ICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAg
ICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoV2ViQXNzZW1ibHlNZW1vcnlQ
cm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7Cisg
ICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRp
YyBXZWJBc3NlbWJseU1lbW9yeVByb3RvdHlwZSogY3JlYXRlKFZNJiwgSlNHbG9iYWxPYmplY3Qq
LCBTdHJ1Y3R1cmUqKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFz
c2VtYmx5TW9kdWxlUHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vanMvV2ViQXNzZW1ibHlNb2R1bGVQcm90b3R5cGUuaAkocmV2aXNpb24gMjg2MDEx
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlNb2R1bGVQcm90
b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTYtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMTYtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQxLDcgKzQxLDcgQEAgcHVibGljOgogICAgIHN0
YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAgICAgU1RB
VElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoV2ViQXNzZW1ibHlNb2R1bGVQcm90b3R5
cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAg
IHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBXZWJB
c3NlbWJseU1vZHVsZVByb3RvdHlwZSogY3JlYXRlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1
Y3R1cmUqKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5
UnVudGltZUVycm9yUHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vanMvV2ViQXNzZW1ibHlSdW50aW1lRXJyb3JQcm90b3R5cGUuaAkocmV2aXNpb24g
Mjg2MDExKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlSdW50
aW1lRXJyb3JQcm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQxLDcgKzQxLDcgQEAgcHVi
bGljOgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsK
ICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoV2ViQXNzZW1ibHlS
dW50aW1lRXJyb3JQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2Jq
ZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0K
IAogICAgIHN0YXRpYyBXZWJBc3NlbWJseVJ1bnRpbWVFcnJvclByb3RvdHlwZSogY3JlYXRlKFZN
JiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5VGFibGVQcm90b3R5cGUuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseVRhYmxlUHJvdG90eXBlLmgJ
KHJldmlzaW9uIDI4NjAxMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFz
c2VtYmx5VGFibGVQcm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQxLDcgKzQxLDcgQEAg
cHVibGljOgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAg
IHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoV2ViQXNzZW1i
bHlUYWJsZVByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RT
cGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAg
ICAgc3RhdGljIFdlYkFzc2VtYmx5VGFibGVQcm90b3R5cGUqIGNyZWF0ZShWTSYsIEpTR2xvYmFs
T2JqZWN0KiwgU3RydWN0dXJlKik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9q
cy9XZWJBc3NlbWJseVRhZ1Byb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5VGFnUHJvdG90eXBlLmgJKHJldmlzaW9uIDI4NjAx
MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5VGFnUHJvdG90
eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQwLDcgKzQwLDcgQEAgcHVibGljOgogICAgIHN0YXRp
YyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElD
X0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoV2ViQXNzZW1ibHlUYWdQcm90b3R5cGUsIEJh
c2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVy
biAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBXZWJBc3NlbWJs
eVRhZ1Byb3RvdHlwZSogY3JlYXRlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqKTsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQXN5bmNJdGVyYXRvci5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQXN5bmNJdGVyYXRv
ci5oCShyZXZpc2lvbiAyODYwMTEpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RP
TUFzeW5jSXRlcmF0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtNDgsNyArNDgsNyBAQCBwdWJsaWM6
CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQog
ICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNET01B
c3luY0l0ZXJhdG9yUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9i
amVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9
CiAKICAgICBzdGF0aWMgSlNET01Bc3luY0l0ZXJhdG9yUHJvdG90eXBlKiBjcmVhdGUoSlNDOjpW
TSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NSXRlcmF0
b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUl0ZXJh
dG9yLmgJKHJldmlzaW9uIDI4NjAxMSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RE9NSXRlcmF0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtNTUsNyArNTUsNyBAQCBwdWJsaWM6CiAg
ICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAg
IHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNET01JdGVy
YXRvclByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFj
ZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAg
c3RhdGljIEpTRE9NSXRlcmF0b3JQcm90b3R5cGUqIGNyZWF0ZShKU0M6OlZNJiB2bSwgSlNDOjpK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlKQpJ
bmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNGaWxlU3lzdGVtRGlyZWN0b3J5SGFu
ZGxlSXRlcmF0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTRmlsZVN5c3RlbURpcmVjdG9yeUhhbmRsZUl0ZXJhdG9yLmNwcAkocmV2aXNpb24gMjg2MDEx
KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNGaWxlU3lzdGVtRGlyZWN0b3J5SGFu
ZGxlSXRlcmF0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NSw5ICs1NSw5IEBAIElzb1N1YnNw
YWNlKiBKU0ZpbGVTeXN0ZW1EaXJlY3RvcnlIYW5kbGUKICAgICAgICAgcmV0dXJuIHNwYWNlOwog
ICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9i
amVjdCwgSlNGaWxlU3lzdGVtRGlyZWN0b3J5SGFuZGxlSXRlcmF0b3I+IHx8ICFKU0ZpbGVTeXN0
ZW1EaXJlY3RvcnlIYW5kbGVJdGVyYXRvcjo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgaWYgY29u
c3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU0Zp
bGVTeXN0ZW1EaXJlY3RvcnlIYW5kbGVJdGVyYXRvcj4pCi0gICAgICAgIGNsaWVudERhdGEuc2V0
RmlsZVN5c3RlbURpcmVjdG9yeUhhbmRsZUl0ZXJhdG9yU3BhY2UobWFrZVVuaXF1ZTxJc29TdWJz
cGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVh
cENlbGxUeXBlLmdldCgpLCBKU0ZpbGVTeXN0ZW1EaXJlY3RvcnlIYW5kbGVJdGVyYXRvcikpOwor
ICAgICAgICBjbGllbnREYXRhLnNldEZpbGVTeXN0ZW1EaXJlY3RvcnlIYW5kbGVJdGVyYXRvclNw
YWNlKG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZt
LmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBKU0ZpbGVTeXN0ZW1EaXJlY3RvcnlI
YW5kbGVJdGVyYXRvcikpOwogICAgIGVsc2UKLSAgICAgICAgY2xpZW50RGF0YS5zZXRGaWxlU3lz
dGVtRGlyZWN0b3J5SGFuZGxlSXRlcmF0b3JTcGFjZShtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJ
U09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlLmdldCgpLCBKU0Zp
bGVTeXN0ZW1EaXJlY3RvcnlIYW5kbGVJdGVyYXRvcikpOworICAgICAgICBjbGllbnREYXRhLnNl
dEZpbGVTeXN0ZW1EaXJlY3RvcnlIYW5kbGVJdGVyYXRvclNwYWNlKG1ha2VVbmlxdWU8SXNvU3Vi
c3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwg
SlNGaWxlU3lzdGVtRGlyZWN0b3J5SGFuZGxlSXRlcmF0b3IpKTsKICAgICBhdXRvKiBzcGFjZSA9
IGNsaWVudERhdGEuZmlsZVN5c3RlbURpcmVjdG9yeUhhbmRsZUl0ZXJhdG9yU3BhY2UoKTsKIElH
Tk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1Nf
QkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL1dlYkNvcmVKU0NsaWVudERhdGEuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL1dlYkNvcmVKU0NsaWVudERhdGEuY3BwCShyZXZpc2lvbiAyODYwMTEp
CisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9XZWJDb3JlSlNDbGllbnREYXRhLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTct
MjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTctMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTc3LDE1ICs3NywxNSBAQCBKU1ZNQ2xpZW50RGF0YTo6SlNWTUNs
aWVudERhdGEoVk0mIHZtKQogICAgICwgbV9oZWFwQ2VsbFR5cGVGb3JKU0F1ZGlvV29ya2xldEds
b2JhbFNjb3BlKEpTQzo6SXNvSGVhcENlbGxUeXBlOjpjcmVhdGU8SlNBdWRpb1dvcmtsZXRHbG9i
YWxTY29wZT4oKSkKICNlbmRpZgogICAgICwgbV9oZWFwQ2VsbFR5cGVGb3JKU0lEQlNlcmlhbGl6
YXRpb25HbG9iYWxPYmplY3QoSlNDOjpJc29IZWFwQ2VsbFR5cGU6OmNyZWF0ZTxKU0lEQlNlcmlh
bGl6YXRpb25HbG9iYWxPYmplY3Q+KCkpCi0gICAgLCBtX2RvbUJ1aWx0aW5Db25zdHJ1Y3RvclNw
YWNlIElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCks
IEpTRE9NQnVpbHRpbkNvbnN0cnVjdG9yQmFzZSkKLSAgICAsIG1fZG9tQ29uc3RydWN0b3JTcGFj
ZSBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlLmdldCgpLCBK
U0RPTUNvbnN0cnVjdG9yQmFzZSkKLSAgICAsIG1fZG9tTmFtZXNwYWNlT2JqZWN0U3BhY2UgSVNP
X1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNET01P
YmplY3QpCi0gICAgLCBtX2RvbVdpbmRvd1Byb3BlcnRpZXNTcGFjZSBJU09fU1VCU1BBQ0VfSU5J
VCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlLmdldCgpLCBKU0RPTVdpbmRvd1Byb3BlcnRp
ZXMpCi0gICAgLCBtX3J1bnRpbWVBcnJheVNwYWNlIElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAs
IG1fcnVudGltZUFycmF5SGVhcENlbGxUeXBlLmdldCgpLCBSdW50aW1lQXJyYXkpCi0gICAgLCBt
X3J1bnRpbWVNZXRob2RTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVh
cENlbGxUeXBlLmdldCgpLCBSdW50aW1lTWV0aG9kKSAvLyBIYXNoOjB4ZjcwYzRhODUKLSAgICAs
IG1fcnVudGltZU9iamVjdFNwYWNlIElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIG1fcnVudGlt
ZU9iamVjdEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNDOjpCaW5kaW5nczo6UnVudGltZU9iamVjdCkK
LSAgICAsIG1fd2luZG93UHJveHlTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCBtX3dp
bmRvd1Byb3h5SGVhcENlbGxUeXBlLmdldCgpLCBKU1dpbmRvd1Byb3h5KQotICAgICwgbV9pZGJT
ZXJpYWxpemF0aW9uU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgbV9oZWFwQ2VsbFR5
cGVGb3JKU0lEQlNlcmlhbGl6YXRpb25HbG9iYWxPYmplY3QuZ2V0KCksIEpTSURCU2VyaWFsaXph
dGlvbkdsb2JhbE9iamVjdCkKKyAgICAsIG1fZG9tQnVpbHRpbkNvbnN0cnVjdG9yU3BhY2UgSVNP
X1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU0RPTUJ1aWx0
aW5Db25zdHJ1Y3RvckJhc2UpCisgICAgLCBtX2RvbUNvbnN0cnVjdG9yU3BhY2UgSVNPX1NVQlNQ
QUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU0RPTUNvbnN0cnVjdG9y
QmFzZSkKKyAgICAsIG1fZG9tTmFtZXNwYWNlT2JqZWN0U3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQo
dm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU0RPTU9iamVjdCkKKyAgICAsIG1fZG9t
V2luZG93UHJvcGVydGllc1NwYWNlIElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxI
ZWFwQ2VsbFR5cGUoKSwgSlNET01XaW5kb3dQcm9wZXJ0aWVzKQorICAgICwgbV9ydW50aW1lQXJy
YXlTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqbV9ydW50aW1lQXJyYXlIZWFwQ2Vs
bFR5cGUsIFJ1bnRpbWVBcnJheSkKKyAgICAsIG1fcnVudGltZU1ldGhvZFNwYWNlIElTT19TVUJT
UEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgUnVudGltZU1ldGhvZCkg
Ly8gSGFzaDoweGY3MGM0YTg1CisgICAgLCBtX3J1bnRpbWVPYmplY3RTcGFjZSBJU09fU1VCU1BB
Q0VfSU5JVCh2bS5oZWFwLCAqbV9ydW50aW1lT2JqZWN0SGVhcENlbGxUeXBlLCBKU0M6OkJpbmRp
bmdzOjpSdW50aW1lT2JqZWN0KQorICAgICwgbV93aW5kb3dQcm94eVNwYWNlIElTT19TVUJTUEFD
RV9JTklUKHZtLmhlYXAsICptX3dpbmRvd1Byb3h5SGVhcENlbGxUeXBlLCBKU1dpbmRvd1Byb3h5
KQorICAgICwgbV9pZGJTZXJpYWxpemF0aW9uU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVh
cCwgKm1faGVhcENlbGxUeXBlRm9ySlNJREJTZXJpYWxpemF0aW9uR2xvYmFsT2JqZWN0LCBKU0lE
QlNlcmlhbGl6YXRpb25HbG9iYWxPYmplY3QpCiAgICAgLCBtX3N1YnNwYWNlcyhtYWtlVW5pcXVl
PERPTUlzb1N1YnNwYWNlcz4oKSkKIHsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCShyZXZpc2lvbiAyODYwMTEpCisr
KyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQkod29y
a2luZyBjb3B5KQpAQCAtNDg1MiwxMyArNDg1MiwxMyBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRh
dGlvbgogICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGlmIChhdXRvKiBzcGFjZSA9IHNwYWNl
cy5tX3N1YnNwYWNlRm9yJHtpbnRlcmZhY2VOYW1lfS5nZXQoKSlcbiIpOwogICAgIHB1c2goQGlt
cGxDb250ZW50LCAiICAgICAgICByZXR1cm4gc3BhY2U7XG4iKTsKICAgICBpZiAoSXNET01HbG9i
YWxPYmplY3QoJGludGVyZmFjZSkpIHsKLSAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAg
c3BhY2VzLm1fc3Vic3BhY2VGb3Ike2ludGVyZmFjZU5hbWV9ID0gbWFrZVVuaXF1ZTxJc29TdWJz
cGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgY2xpZW50RGF0YS5tX2hlYXBDZWxsVHlw
ZUZvciR7Y2xhc3NOYW1lfS5nZXQoKSwgJHtjbGFzc05hbWV9KTtcbiIpOworICAgICAgICBwdXNo
KEBpbXBsQ29udGVudCwgIiAgICBzcGFjZXMubV9zdWJzcGFjZUZvciR7aW50ZXJmYWNlTmFtZX0g
PSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqY2xp
ZW50RGF0YS5tX2hlYXBDZWxsVHlwZUZvciR7Y2xhc3NOYW1lfSwgJHtjbGFzc05hbWV9KTtcbiIp
OwogICAgIH0gZWxzZSB7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHN0YXRpY19h
c3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgJHtjbGFz
c05hbWV9PiB8fCAhJHtjbGFzc05hbWV9OjpuZWVkc0Rlc3RydWN0aW9uKTtcbiIpOwogICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92
PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsICR7Y2xhc3NOYW1lfT4pXG4iKTsKLSAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yJHtpbnRlcmZh
Y2VOYW1lfSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhl
YXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5nZXQoKSwgJHtjbGFzc05hbWV9
KTtcbiIpOworICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgc3BhY2VzLm1fc3Vi
c3BhY2VGb3Ike2ludGVyZmFjZU5hbWV9ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NV
QlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCks
ICR7Y2xhc3NOYW1lfSk7XG4iKTsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgZWxz
ZVxuIik7Ci0gICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICBzcGFjZXMubV9zdWJz
cGFjZUZvciR7aW50ZXJmYWNlTmFtZX0gPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VC
U1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlLmdldCgpLCAke2NsYXNzTmFt
ZX0pO1xuIik7CisgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICBzcGFjZXMubV9z
dWJzcGFjZUZvciR7aW50ZXJmYWNlTmFtZX0gPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09f
U1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCksICR7Y2xhc3NOYW1l
fSk7XG4iKTsKICAgICB9CiAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgYXV0byogc3BhY2Ug
PSBzcGFjZXMubV9zdWJzcGFjZUZvciR7aW50ZXJmYWNlTmFtZX0uZ2V0KCk7XG4iKTsKICAgICBw
dXNoKEBpbXBsQ29udGVudCwgIklHTk9SRV9XQVJOSU5HU19CRUdJTihcInVucmVhY2hhYmxlLWNv
ZGVcIilcbiIpOwpAQCAtNjczMSw5ICs2NzMxLDkgQEAgcHVibGljOgogICAgICAgICAgICAgcmV0
dXJuIHNwYWNlOwogICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6
SlNEZXN0cnVjdGlibGVPYmplY3QsICR7aXRlcmF0b3JOYW1lfT4gfHwgISR7aXRlcmF0b3JOYW1l
fTo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNl
X29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgJHtpdGVyYXRvck5hbWV9PikKLSAgICAg
ICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yJHtpdGVyYXRvck5hbWV9ID0gbWFrZVVuaXF1ZTxJ
c29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2Jq
ZWN0SGVhcENlbGxUeXBlLmdldCgpLCAke2l0ZXJhdG9yTmFtZX0pOworICAgICAgICAgICAgc3Bh
Y2VzLm1fc3Vic3BhY2VGb3Ike2l0ZXJhdG9yTmFtZX0gPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNl
PiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2Vs
bFR5cGUoKSwgJHtpdGVyYXRvck5hbWV9KTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgc3Bh
Y2VzLm1fc3Vic3BhY2VGb3Ike2l0ZXJhdG9yTmFtZX0gPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNl
PiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlLmdldCgpLCAk
e2l0ZXJhdG9yTmFtZX0pOworICAgICAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3Ike2l0ZXJh
dG9yTmFtZX0gPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5o
ZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCksICR7aXRlcmF0b3JOYW1lfSk7CiAgICAgICAgIGF1
dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3Ike2l0ZXJhdG9yTmFtZX0uZ2V0KCk7CiBJ
R05PUkVfV0FSTklOR1NfQkVHSU4oXCJ1bnJlYWNoYWJsZS1jb2RlXCIpCiBJR05PUkVfV0FSTklO
R1NfQkVHSU4oXCJ0YXV0b2xvZ2ljYWwtY29tcGFyZVwiKQpAQCAtNzUyOSw3ICs3NTI5LDcgQEAg
c3ViIEdlbmVyYXRlUHJvdG90eXBlRGVjbGFyYXRpb24KICAgICBwdXNoKEAkb3V0cHV0QXJyYXks
ICIgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKVxu
Iik7CiAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIHtcbiIpOwogICAgIHB1c2goQCRvdXRw
dXRBcnJheSwgIiAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoJHtw
cm90b3R5cGVDbGFzc05hbWV9LCBCYXNlKTtcbiIpOwotICAgIHB1c2goQCRvdXRwdXRBcnJheSwg
IiAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlO1xuIik7CisgICAgcHVzaChAJG91
dHB1dEFycmF5LCAiICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTtcbiIpOwog
ICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICB9XG4iKTsKIAogICAgIHB1c2goQCRvdXRwdXRB
cnJheSwgIiAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZN
JiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJv
dG90eXBlKVxuIik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNET01XaW5kb3cuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU0RPTVdpbmRvdy5jcHAJKHJldmlzaW9uIDI4NjAxMSkKKysrIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU0RPTVdpbmRvdy5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTM2OSw3ICszNjksNyBAQCBKU0M6Oklzb1N1YnNwYWNlKiBKU0RPTVdp
bmRvdzo6c3Vic3BhY2VGCiAgICAgYXV0byYgc3BhY2VzID0gY2xpZW50RGF0YS5zdWJzcGFjZXMo
KTsKICAgICBpZiAoYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvckRPTVdpbmRvdy5n
ZXQoKSkKICAgICAgICAgcmV0dXJuIHNwYWNlOwotICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yRE9N
V2luZG93ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVh
cCwgY2xpZW50RGF0YS5tX2hlYXBDZWxsVHlwZUZvckpTRE9NV2luZG93LmdldCgpLCBKU0RPTVdp
bmRvdyk7CisgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JET01XaW5kb3cgPSBtYWtlVW5pcXVlPElz
b1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqY2xpZW50RGF0YS5tX2hlYXBD
ZWxsVHlwZUZvckpTRE9NV2luZG93LCBKU0RPTVdpbmRvdyk7CiAgICAgYXV0byogc3BhY2UgPSBz
cGFjZXMubV9zdWJzcGFjZUZvckRPTVdpbmRvdy5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJ
TigidW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNh
bC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU0RPTVdpbmRvdy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU0RPTVdpbmRvdy5oCShyZXZpc2lvbiAyODYwMTEpCisrKyBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNET01XaW5kb3cuaAkod29ya2luZyBj
b3B5KQpAQCAtODUsNyArODUsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3Bh
Y2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VS
VF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNET01XaW5kb3dQcm90b3R5cGUsIEJhc2UpOwotICAg
ICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxh
aW5PYmplY3RTcGFjZSgpOwogICAgIH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0
ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNE
ZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZS5jcHAJKHJldmlzaW9uIDI4NjAxMSkKKysrIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU0RlZGljYXRlZFdvcmtlckdsb2Jh
bFNjb3BlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTcwLDcgKzE3MCw3IEBAIEpTQzo6SXNvU3Vi
c3BhY2UqIEpTRGVkaWNhdGVkV29ya2VyR2xvYmEKICAgICBhdXRvJiBzcGFjZXMgPSBjbGllbnRE
YXRhLnN1YnNwYWNlcygpOwogICAgIGlmIChhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNl
Rm9yRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUuZ2V0KCkpCiAgICAgICAgIHJldHVybiBzcGFj
ZTsKLSAgICBzcGFjZXMubV9zdWJzcGFjZUZvckRlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlID0g
bWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgY2xpZW50
RGF0YS5tX2hlYXBDZWxsVHlwZUZvckpTRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUuZ2V0KCks
IEpTRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUpOworICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9y
RGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09f
U1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqY2xpZW50RGF0YS5tX2hlYXBDZWxsVHlwZUZvckpTRGVk
aWNhdGVkV29ya2VyR2xvYmFsU2NvcGUsIEpTRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUpOwog
ICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JEZWRpY2F0ZWRXb3JrZXJHbG9i
YWxTY29wZS5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIp
CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU0RlZGljYXRlZFdvcmtlckds
b2JhbFNjb3BlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUuaAkocmV2aXNpb24gMjg2MDEx
KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTRGVkaWNhdGVk
V29ya2VyR2xvYmFsU2NvcGUuaAkod29ya2luZyBjb3B5KQpAQCAtODIsNyArODIsNyBAQCBwdWJs
aWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZt
KQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNE
ZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZVByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVy
biAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNw
YWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJl
KEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNW
YWx1ZSBwcm90b3R5cGUpCiAgICAgewpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTRXhwb3NlZFN0YXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU0V4cG9zZWRTdGFyLmNwcAkocmV2aXNpb24g
Mjg2MDExKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTRXhw
b3NlZFN0YXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03MSw3ICs3MSw3IEBAIHB1YmxpYzoKICAg
ICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAg
ewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU0V4cG9zZWRT
dGFyUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNl
OworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3Rh
dGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7
CkBAIC0yMzYsOSArMjM2LDkgQEAgSlNDOjpJc29TdWJzcGFjZSogSlNFeHBvc2VkU3Rhcjo6c3Vi
c3BhYwogICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jh
c2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU0V4cG9zZWRTdGFyPiB8fCAhSlNF
eHBvc2VkU3Rhcjo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3RleHByIChzdGQ6Omlz
X2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU0V4cG9zZWRTdGFyPikKLSAg
ICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JFeHBvc2VkU3RhciA9IG1ha2VVbmlxdWU8SXNvU3Vi
c3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhl
YXBDZWxsVHlwZS5nZXQoKSwgSlNFeHBvc2VkU3Rhcik7CisgICAgICAgIHNwYWNlcy5tX3N1YnNw
YWNlRm9yRXhwb3NlZFN0YXIgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0Vf
SU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwgSlNFeHBv
c2VkU3Rhcik7CiAgICAgZWxzZQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvckV4cG9zZWRT
dGFyID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwg
dm0uY2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNFeHBvc2VkU3Rhcik7CisgICAgICAgIHNwYWNl
cy5tX3N1YnNwYWNlRm9yRXhwb3NlZFN0YXIgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09f
U1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCksIEpTRXhwb3NlZFN0
YXIpOwogICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JFeHBvc2VkU3Rhci5n
ZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVf
V0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU0V4cG9zZWRUb1dvcmtlckFuZFdpbmRvdy5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTRXhwb3NlZFRvV29ya2VyQW5kV2luZG93LmNwcAkocmV2aXNpb24gMjg2MDExKQorKysgU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTRXhwb3NlZFRvV29ya2VyQW5k
V2luZG93LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTEyLDcgKzExMiw3IEBAIHB1YmxpYzoKICAg
ICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAg
ewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU0V4cG9zZWRU
b1dvcmtlckFuZFdpbmRvd1Byb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxh
aW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAg
ICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0m
IHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90
b3R5cGUpCiAgICAgewpAQCAtMjUyLDkgKzI1Miw5IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTRXhw
b3NlZFRvV29ya2VyQW5kV2kKICAgICAgICAgcmV0dXJuIHNwYWNlOwogICAgIHN0YXRpY19hc3Nl
cnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNFeHBvc2Vk
VG9Xb3JrZXJBbmRXaW5kb3c+IHx8ICFKU0V4cG9zZWRUb1dvcmtlckFuZFdpbmRvdzo6bmVlZHNE
ZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpT
RGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU0V4cG9zZWRUb1dvcmtlckFuZFdpbmRvdz4pCi0gICAgICAg
IHNwYWNlcy5tX3N1YnNwYWNlRm9yRXhwb3NlZFRvV29ya2VyQW5kV2luZG93ID0gbWFrZVVuaXF1
ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxl
T2JqZWN0SGVhcENlbGxUeXBlLmdldCgpLCBKU0V4cG9zZWRUb1dvcmtlckFuZFdpbmRvdyk7Cisg
ICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yRXhwb3NlZFRvV29ya2VyQW5kV2luZG93ID0gbWFr
ZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1
Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCksIEpTRXhwb3NlZFRvV29ya2VyQW5kV2luZG93KTsK
ICAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yRXhwb3NlZFRvV29ya2VyQW5k
V2luZG93ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVh
cCwgdm0uY2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNFeHBvc2VkVG9Xb3JrZXJBbmRXaW5kb3cp
OworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvckV4cG9zZWRUb1dvcmtlckFuZFdpbmRvdyA9
IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNl
bGxIZWFwQ2VsbFR5cGUoKSwgSlNFeHBvc2VkVG9Xb3JrZXJBbmRXaW5kb3cpOwogICAgIGF1dG8q
IHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JFeHBvc2VkVG9Xb3JrZXJBbmRXaW5kb3cuZ2V0
KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dB
Uk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNQYWludFdvcmtsZXRHbG9iYWxTY29wZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
UGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuY3BwCShyZXZpc2lvbiAyODYwMTEpCisrKyBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNQYWludFdvcmtsZXRHbG9iYWxTY29w
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2OSw3ICsxNjksNyBAQCBKU0M6Oklzb1N1YnNwYWNl
KiBKU1BhaW50V29ya2xldEdsb2JhbFNjCiAgICAgYXV0byYgc3BhY2VzID0gY2xpZW50RGF0YS5z
dWJzcGFjZXMoKTsKICAgICBpZiAoYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclBh
aW50V29ya2xldEdsb2JhbFNjb3BlLmdldCgpKQogICAgICAgICByZXR1cm4gc3BhY2U7Ci0gICAg
c3BhY2VzLm1fc3Vic3BhY2VGb3JQYWludFdvcmtsZXRHbG9iYWxTY29wZSA9IG1ha2VVbmlxdWU8
SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIGNsaWVudERhdGEubV9oZWFw
Q2VsbFR5cGVGb3JKU1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmdldCgpLCBKU1BhaW50V29ya2xl
dEdsb2JhbFNjb3BlKTsKKyAgICBzcGFjZXMubV9zdWJzcGFjZUZvclBhaW50V29ya2xldEdsb2Jh
bFNjb3BlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVh
cCwgKmNsaWVudERhdGEubV9oZWFwQ2VsbFR5cGVGb3JKU1BhaW50V29ya2xldEdsb2JhbFNjb3Bl
LCBKU1BhaW50V29ya2xldEdsb2JhbFNjb3BlKTsKICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5t
X3N1YnNwYWNlRm9yUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuZ2V0KCk7CiBJR05PUkVfV0FSTklO
R1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0
b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNQYWludFdvcmtsZXRHbG9iYWxTY29wZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1BhaW50V29ya2xldEdsb2JhbFNj
b3BlLmgJKHJldmlzaW9uIDI4NjAxMSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmgJKHdvcmtpbmcgY29weSkKQEAg
LTgyLDcgKzgyLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJz
cGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NV
QlNQQUNFX1NIQVJBQkxFKEpTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGVQcm90b3R5cGUsIEJhc2Up
OwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAm
dm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUq
IGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTU2VydmljZVdvcmtlckdsb2JhbFNjb3BlLmNwcAkocmV2aXNpb24gMjg2MDExKQorKysgU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTU2VydmljZVdvcmtlckdsb2Jh
bFNjb3BlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTY5LDcgKzE2OSw3IEBAIEpTQzo6SXNvU3Vi
c3BhY2UqIEpTU2VydmljZVdvcmtlckdsb2JhbFMKICAgICBhdXRvJiBzcGFjZXMgPSBjbGllbnRE
YXRhLnN1YnNwYWNlcygpOwogICAgIGlmIChhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNl
Rm9yU2VydmljZVdvcmtlckdsb2JhbFNjb3BlLmdldCgpKQogICAgICAgICByZXR1cm4gc3BhY2U7
Ci0gICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUgPSBtYWtl
VW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCBjbGllbnREYXRh
Lm1faGVhcENlbGxUeXBlRm9ySlNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUuZ2V0KCksIEpTU2Vy
dmljZVdvcmtlckdsb2JhbFNjb3BlKTsKKyAgICBzcGFjZXMubV9zdWJzcGFjZUZvclNlcnZpY2VX
b3JrZXJHbG9iYWxTY29wZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9J
TklUKHZtLmhlYXAsICpjbGllbnREYXRhLm1faGVhcENlbGxUeXBlRm9ySlNTZXJ2aWNlV29ya2Vy
R2xvYmFsU2NvcGUsIEpTU2VydmljZVdvcmtlckdsb2JhbFNjb3BlKTsKICAgICBhdXRvKiBzcGFj
ZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yU2VydmljZVdvcmtlckdsb2JhbFNjb3BlLmdldCgpOwog
SUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKIElHTk9SRV9XQVJOSU5H
U19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTU2VydmljZVdvcmtlckdsb2JhbFNjb3BlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTU2Vydmlj
ZVdvcmtlckdsb2JhbFNjb3BlLmgJKHJldmlzaW9uIDI4NjAxMSkKKysrIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC04Miw3ICs4Miw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJ
c29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFU
SUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1NlcnZpY2VXb3JrZXJHbG9iYWxTY29w
ZVByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsK
KyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRp
YyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpJ
bmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTU2hhcmVkV29y
a2VyR2xvYmFsU2NvcGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1NoYXJlZFdvcmtlckdsb2JhbFNjb3BlLmNwcAkocmV2aXNpb24g
Mjg2MDExKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTU2hh
cmVkV29ya2VyR2xvYmFsU2NvcGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTMsNyArMTUzLDcg
QEAgSlNDOjpJc29TdWJzcGFjZSogSlNTaGFyZWRXb3JrZXJHbG9iYWxTYwogICAgIGF1dG8mIHNw
YWNlcyA9IGNsaWVudERhdGEuc3Vic3BhY2VzKCk7CiAgICAgaWYgKGF1dG8qIHNwYWNlID0gc3Bh
Y2VzLm1fc3Vic3BhY2VGb3JTaGFyZWRXb3JrZXJHbG9iYWxTY29wZS5nZXQoKSkKICAgICAgICAg
cmV0dXJuIHNwYWNlOwotICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yU2hhcmVkV29ya2VyR2xvYmFs
U2NvcGUgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFw
LCBjbGllbnREYXRhLm1faGVhcENlbGxUeXBlRm9ySlNTaGFyZWRXb3JrZXJHbG9iYWxTY29wZS5n
ZXQoKSwgSlNTaGFyZWRXb3JrZXJHbG9iYWxTY29wZSk7CisgICAgc3BhY2VzLm1fc3Vic3BhY2VG
b3JTaGFyZWRXb3JrZXJHbG9iYWxTY29wZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19T
VUJTUEFDRV9JTklUKHZtLmhlYXAsICpjbGllbnREYXRhLm1faGVhcENlbGxUeXBlRm9ySlNTaGFy
ZWRXb3JrZXJHbG9iYWxTY29wZSwgSlNTaGFyZWRXb3JrZXJHbG9iYWxTY29wZSk7CiAgICAgYXV0
byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclNoYXJlZFdvcmtlckdsb2JhbFNjb3BlLmdl
dCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKIElHTk9SRV9X
QVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRleDogU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTU2hhcmVkV29ya2VyR2xvYmFsU2NvcGUuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNT
aGFyZWRXb3JrZXJHbG9iYWxTY29wZS5oCShyZXZpc2lvbiAyODYwMTEpCisrKyBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNTaGFyZWRXb3JrZXJHbG9iYWxTY29wZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC04Miw3ICs4Miw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlND
OjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBT
VEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1NoYXJlZFdvcmtlckdsb2JhbFNj
b3BlUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNl
OworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3Rh
dGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q0VS
ZWFjdGlvbnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RDRVJlYWN0aW9ucy5jcHAJKHJldmlzaW9uIDI4NjAxMSkKKysrIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDRVJlYWN0aW9ucy5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTkxLDcgKzkxLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBK
U0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAg
IFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdENFUmVhY3Rpb25zUHJv
dG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAg
ICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpT
Qzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC00
MzgsOSArNDM4LDkgQEAgSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0Q0VSZWFjdGlvbnM6OnN1Ygog
ICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2Zf
djxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RDRVJlYWN0aW9ucz4gfHwgIUpTVGVz
dENFUmVhY3Rpb25zOjpuZWVkc0Rlc3RydWN0aW9uKTsKICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6
aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdENFUmVhY3Rpb25z
PikKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0Q0VSZWFjdGlvbnMgPSBtYWtlVW5p
cXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGli
bGVPYmplY3RIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVGVzdENFUmVhY3Rpb25zKTsKKyAgICAgICAg
c3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0Q0VSZWFjdGlvbnMgPSBtYWtlVW5pcXVlPElzb1N1YnNw
YWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFw
Q2VsbFR5cGUoKSwgSlNUZXN0Q0VSZWFjdGlvbnMpOwogICAgIGVsc2UKLSAgICAgICAgc3BhY2Vz
Lm1fc3Vic3BhY2VGb3JUZXN0Q0VSZWFjdGlvbnMgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJ
U09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlLmdldCgpLCBKU1Rl
c3RDRVJlYWN0aW9ucyk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdENFUmVhY3Rp
b25zID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwg
dm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RDRVJlYWN0aW9ucyk7CiAgICAgYXV0byogc3Bh
Y2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RDRVJlYWN0aW9ucy5nZXQoKTsKIElHTk9SRV9X
QVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4o
InRhdXRvbG9naWNhbC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q0VSZWFj
dGlvbnNTdHJpbmdpZmllci5jcHAJKHJldmlzaW9uIDI4NjAxMSkKKysrIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNzUsNyArNzUsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpT
Qzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAg
U1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0Q0VSZWFjdGlvbnNTdHJp
bmdpZmllclByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RT
cGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAg
IHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6
OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAg
ICAgewpAQCAtMjY0LDkgKzI2NCw5IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdENFUmVhY3Rp
b25zU3RyaW4KICAgICAgICAgcmV0dXJuIHNwYWNlOwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjpp
c19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0Q0VSZWFjdGlvbnNT
dHJpbmdpZmllcj4gfHwgIUpTVGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXI6Om5lZWRzRGVzdHJ1
Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3Ry
dWN0aWJsZU9iamVjdCwgSlNUZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllcj4pCi0gICAgICAgIHNw
YWNlcy5tX3N1YnNwYWNlRm9yVGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXIgPSBtYWtlVW5pcXVl
PElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVP
YmplY3RIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXIpOwor
ICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyID0g
bWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVz
dHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCksIEpTVGVzdENFUmVhY3Rpb25zU3RyaW5naWZp
ZXIpOwogICAgIGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0Q0VSZWFjdGlv
bnNTdHJpbmdpZmllciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklU
KHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVGVzdENFUmVhY3Rpb25zU3Ry
aW5naWZpZXIpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RDRVJlYWN0aW9uc1N0
cmluZ2lmaWVyID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0u
aGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVy
KTsKICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdENFUmVhY3Rpb25z
U3RyaW5naWZpZXIuZ2V0KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNv
ZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2FsbFRyYWNl
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdENhbGxUcmFjZXIuY3BwCShyZXZpc2lvbiAyODYwMTEpCisrKyBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2FsbFRyYWNlci5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTk3LDcgKzk3LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1
YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19B
U1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdENhbGxUcmFjZXJQcm90b3R5cGUsIEJh
c2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVy
biAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1
cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKQEAgLTUxMyw5ICs1MTMs
OSBAQCBKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3RDYWxsVHJhY2VyOjpzdWJzCiAgICAgICAgIHJl
dHVybiBzcGFjZTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNE
ZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdENhbGxUcmFjZXI+IHx8ICFKU1Rlc3RDYWxsVHJhY2Vy
OjpuZWVkc0Rlc3RydWN0aW9uKTsKICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92
PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdENhbGxUcmFjZXI+KQotICAgICAgICBz
cGFjZXMubV9zdWJzcGFjZUZvclRlc3RDYWxsVHJhY2VyID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFj
ZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENl
bGxUeXBlLmdldCgpLCBKU1Rlc3RDYWxsVHJhY2VyKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3Bh
Y2VGb3JUZXN0Q2FsbFRyYWNlciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFD
RV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBKU1Rl
c3RDYWxsVHJhY2VyKTsKICAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVz
dENhbGxUcmFjZXIgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2
bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlLmdldCgpLCBKU1Rlc3RDYWxsVHJhY2VyKTsKKyAg
ICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0Q2FsbFRyYWNlciA9IG1ha2VVbmlxdWU8SXNv
U3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUo
KSwgSlNUZXN0Q2FsbFRyYWNlcik7CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFj
ZUZvclRlc3RDYWxsVHJhY2VyLmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNo
YWJsZS1jb2RlIikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUi
KQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENs
YXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29u
c3RydWN0b3IuY3BwCShyZXZpc2lvbiAyODYwMTEpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3IuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC02NCw3ICs2NCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlND
OjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBT
VEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3RDbGFzc1dpdGhKU0J1aWx0
aW5Db25zdHJ1Y3RvclByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5P
YmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAg
fQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZt
LCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5
cGUpCiAgICAgewpAQCAtMTc2LDkgKzE3Niw5IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdENs
YXNzV2l0aEpTQnVpbHQKICAgICAgICAgcmV0dXJuIHNwYWNlOwogICAgIHN0YXRpY19hc3NlcnQo
c3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0Q2xhc3NX
aXRoSlNCdWlsdGluQ29uc3RydWN0b3I+IHx8ICFKU1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25z
dHJ1Y3Rvcjo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jh
c2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RDbGFzc1dpdGhKU0J1aWx0
aW5Db25zdHJ1Y3Rvcj4pCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdENsYXNzV2l0
aEpTQnVpbHRpbkNvbnN0cnVjdG9yID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQ
QUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmdldCgp
LCBKU1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3Rvcik7CisgICAgICAgIHNwYWNlcy5t
X3N1YnNwYWNlRm9yVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yID0gbWFrZVVuaXF1
ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxl
T2JqZWN0SGVhcENlbGxUeXBlKCksIEpTVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9y
KTsKICAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdENsYXNzV2l0aEpT
QnVpbHRpbkNvbnN0cnVjdG9yID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNF
X0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNUZXN0Q2xhc3NXaXRo
SlNCdWlsdGluQ29uc3RydWN0b3IpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RD
bGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3RvciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElT
T19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0Q2xh
c3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3IpOwogICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1f
c3Vic3BhY2VGb3JUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3IuZ2V0KCk7CiBJR05P
UkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JF
R0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlcy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENvbmRp
dGlvbmFsSW5jbHVkZXMuY3BwCShyZXZpc2lvbiAyODYwMTEpCisrKyBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlcy5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTEyNyw3ICsxMjcsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6
SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RB
VElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRl
c1Byb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsK
KyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRp
YyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpA
QCAtNzg5LDkgKzc4OSw5IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdENvbmRpdGlvbmFsSW5j
bHUKICAgICAgICAgcmV0dXJuIHNwYWNlOwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNl
X29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRl
cz4gfHwgIUpTVGVzdENvbmRpdGlvbmFsSW5jbHVkZXM6Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAg
IGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVj
dCwgSlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlcz4pCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNl
Rm9yVGVzdENvbmRpdGlvbmFsSW5jbHVkZXMgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09f
U1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUu
Z2V0KCksIEpTVGVzdENvbmRpdGlvbmFsSW5jbHVkZXMpOworICAgICAgICBzcGFjZXMubV9zdWJz
cGFjZUZvclRlc3RDb25kaXRpb25hbEluY2x1ZGVzID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4g
SVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxU
eXBlKCksIEpTVGVzdENvbmRpdGlvbmFsSW5jbHVkZXMpOwogICAgIGVsc2UKLSAgICAgICAgc3Bh
Y2VzLm1fc3Vic3BhY2VGb3JUZXN0Q29uZGl0aW9uYWxJbmNsdWRlcyA9IG1ha2VVbmlxdWU8SXNv
U3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUu
Z2V0KCksIEpTVGVzdENvbmRpdGlvbmFsSW5jbHVkZXMpOworICAgICAgICBzcGFjZXMubV9zdWJz
cGFjZUZvclRlc3RDb25kaXRpb25hbEluY2x1ZGVzID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4g
SVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RD
b25kaXRpb25hbEluY2x1ZGVzKTsKICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNl
Rm9yVGVzdENvbmRpdGlvbmFsSW5jbHVkZXMuZ2V0KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4o
InVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwt
Y29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0Q29uZGl0aW9uYWxseVJlYWRXcml0ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENvbmRpdGlvbmFsbHlSZWFkV3Jp
dGUuY3BwCShyZXZpc2lvbiAyODYwMTEpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0Q29uZGl0aW9uYWxseVJlYWRXcml0ZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTk4LDcgKzk4LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNl
KiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRf
SVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdENvbmRpdGlvbmFsbHlSZWFkV3JpdGVQcm90b3R5
cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAg
IHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KICAgICBzdGF0aWMgSlNDOjpT
dHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKQEAgLTYxMSw5
ICs2MTEsOSBAQCBKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3RDb25kaXRpb25hbGx5UmVhCiAgICAg
ICAgIHJldHVybiBzcGFjZTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpT
Qzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdENvbmRpdGlvbmFsbHlSZWFkV3JpdGU+IHx8
ICFKU1Rlc3RDb25kaXRpb25hbGx5UmVhZFdyaXRlOjpuZWVkc0Rlc3RydWN0aW9uKTsKICAgICBp
ZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3Qs
IEpTVGVzdENvbmRpdGlvbmFsbHlSZWFkV3JpdGU+KQotICAgICAgICBzcGFjZXMubV9zdWJzcGFj
ZUZvclRlc3RDb25kaXRpb25hbGx5UmVhZFdyaXRlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4g
SVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxU
eXBlLmdldCgpLCBKU1Rlc3RDb25kaXRpb25hbGx5UmVhZFdyaXRlKTsKKyAgICAgICAgc3BhY2Vz
Lm1fc3Vic3BhY2VGb3JUZXN0Q29uZGl0aW9uYWxseVJlYWRXcml0ZSA9IG1ha2VVbmlxdWU8SXNv
U3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVj
dEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RDb25kaXRpb25hbGx5UmVhZFdyaXRlKTsKICAgICBlbHNl
Ci0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdENvbmRpdGlvbmFsbHlSZWFkV3JpdGUg
PSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5j
ZWxsSGVhcENlbGxUeXBlLmdldCgpLCBKU1Rlc3RDb25kaXRpb25hbGx5UmVhZFdyaXRlKTsKKyAg
ICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0Q29uZGl0aW9uYWxseVJlYWRXcml0ZSA9IG1h
a2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxI
ZWFwQ2VsbFR5cGUoKSwgSlNUZXN0Q29uZGl0aW9uYWxseVJlYWRXcml0ZSk7CiAgICAgYXV0byog
c3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RDb25kaXRpb25hbGx5UmVhZFdyaXRlLmdl
dCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKIElHTk9SRV9X
QVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRleDogU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERPTUpJVC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERPTUpJVC5j
cHAJKHJldmlzaW9uIDI4NjAxMSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RET01KSVQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00ODEsNyArNDgxLDcg
QEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6
OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJB
QkxFKEpTVGVzdERPTUpJVFByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxh
aW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAg
ICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0m
IHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90
b3R5cGUpCiAgICAgewpAQCAtMTI1Miw5ICsxMjUyLDkgQEAgSlNDOjpJc29TdWJzcGFjZSogSlNU
ZXN0RE9NSklUOjpzdWJzcGFjZQogICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fz
c2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RE
T01KSVQ+IHx8ICFKU1Rlc3RET01KSVQ6Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0
ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0
RE9NSklUPikKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0RE9NSklUID0gbWFrZVVu
aXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3Rp
YmxlT2JqZWN0SGVhcENlbGxUeXBlLmdldCgpLCBKU1Rlc3RET01KSVQpOworICAgICAgICBzcGFj
ZXMubV9zdWJzcGFjZUZvclRlc3RET01KSVQgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09f
U1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUo
KSwgSlNUZXN0RE9NSklUKTsKICAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9y
VGVzdERPTUpJVCA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZt
LmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVGVzdERPTUpJVCk7CisgICAgICAg
IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdERPTUpJVCA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+
IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0
RE9NSklUKTsKICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdERPTUpJ
VC5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJR05P
UkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3REZWZhdWx0VG9KU09OLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0RGVmYXVsdFRvSlNPTi5jcHAJKHJldmlzaW9uIDI4NjAxMSkKKysrIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3REZWZhdWx0VG9KU09OLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTI0LDcgKzEyNCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29T
dWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNf
QVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3REZWZhdWx0VG9KU09OUHJvdG90eXBl
LCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICBy
ZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3Ry
dWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC04MDgsOSAr
ODA4LDkgQEAgSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0RGVmYXVsdFRvSlNPTjo6cwogICAgICAg
ICByZXR1cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6
OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3REZWZhdWx0VG9KU09OPiB8fCAhSlNUZXN0RGVm
YXVsdFRvSlNPTjo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3RleHByIChzdGQ6Omlz
X2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3REZWZhdWx0VG9KU09O
PikKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0RGVmYXVsdFRvSlNPTiA9IG1ha2VV
bmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0
aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNUZXN0RGVmYXVsdFRvSlNPTik7CisgICAg
ICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdERlZmF1bHRUb0pTT04gPSBtYWtlVW5pcXVlPElz
b1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmpl
Y3RIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0RGVmYXVsdFRvSlNPTik7CiAgICAgZWxzZQotICAgICAg
ICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3REZWZhdWx0VG9KU09OID0gbWFrZVVuaXF1ZTxJc29T
dWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZS5n
ZXQoKSwgSlNUZXN0RGVmYXVsdFRvSlNPTik7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9y
VGVzdERlZmF1bHRUb0pTT04gPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0Vf
SU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCksIEpTVGVzdERlZmF1bHRUb0pTT04p
OwogICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0RGVmYXVsdFRvSlNP
Ti5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJR05P
UkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3REZWZhdWx0VG9KU09ORmlsdGVy
ZWRCeUV4cG9zZWQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWQuY3BwCShy
ZXZpc2lvbiAyODYwMTEpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNzUsNyArNzUsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2Uq
IHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9J
U09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2Vk
UHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOwor
ICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGlj
IEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBA
IC0yNzAsOSArMjcwLDkgQEAgSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0RGVmYXVsdFRvSlNPTkZp
bAogICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vf
b2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3REZWZhdWx0VG9KU09ORmlsdGVy
ZWRCeUV4cG9zZWQ+IHx8ICFKU1Rlc3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWQ6Om5l
ZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlND
OjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBv
c2VkPikKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0RGVmYXVsdFRvSlNPTkZpbHRl
cmVkQnlFeHBvc2VkID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQo
dm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmdldCgpLCBKU1Rlc3RE
ZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWQpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFj
ZUZvclRlc3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWQgPSBtYWtlVW5pcXVlPElzb1N1
YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RI
ZWFwQ2VsbFR5cGUoKSwgSlNUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkKTsKICAg
ICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdERlZmF1bHRUb0pTT05GaWx0
ZXJlZEJ5RXhwb3NlZCA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklU
KHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVGVzdERlZmF1bHRUb0pTT05G
aWx0ZXJlZEJ5RXhwb3NlZCk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdERlZmF1
bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZCA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19T
VUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0RGVmYXVs
dFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkKTsKICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1
YnNwYWNlRm9yVGVzdERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZC5nZXQoKTsKIElHTk9S
RV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVH
SU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3REZWZhdWx0VG9KU09OSW5kaXJlY3RJbmhlcml0YW5jZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdERlZmF1bHRUb0pTT05JbmRpcmVjdEluaGVyaXRhbmNlLmNwcAkocmV2aXNpb24gMjg2
MDExKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERl
ZmF1bHRUb0pTT05JbmRpcmVjdEluaGVyaXRhbmNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjIs
NyArNjIsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNl
Rm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BB
Q0VfU0hBUkFCTEUoSlNUZXN0RGVmYXVsdFRvSlNPTkluZGlyZWN0SW5oZXJpdGFuY2VQcm90b3R5
cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAg
IHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KICAgICBzdGF0aWMgSlNDOjpT
dHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKQEAgLTE2Miw5
ICsxNjIsOSBAQCBKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3REZWZhdWx0VG9KU09OSW5kCiAgICAg
ICAgIHJldHVybiBzcGFjZTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpT
Qzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdERlZmF1bHRUb0pTT05JbmRpcmVjdEluaGVy
aXRhbmNlPiB8fCAhSlNUZXN0RGVmYXVsdFRvSlNPTkluZGlyZWN0SW5oZXJpdGFuY2U6Om5lZWRz
RGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpK
U0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0RGVmYXVsdFRvSlNPTkluZGlyZWN0SW5oZXJpdGFu
Y2U+KQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3REZWZhdWx0VG9KU09OSW5kaXJl
Y3RJbmhlcml0YW5jZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklU
KHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNUZXN0
RGVmYXVsdFRvSlNPTkluZGlyZWN0SW5oZXJpdGFuY2UpOworICAgICAgICBzcGFjZXMubV9zdWJz
cGFjZUZvclRlc3REZWZhdWx0VG9KU09OSW5kaXJlY3RJbmhlcml0YW5jZSA9IG1ha2VVbmlxdWU8
SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9i
amVjdEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3REZWZhdWx0VG9KU09OSW5kaXJlY3RJbmhlcml0YW5j
ZSk7CiAgICAgZWxzZQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3REZWZhdWx0VG9K
U09OSW5kaXJlY3RJbmhlcml0YW5jZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJT
UEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVGVzdERlZmF1
bHRUb0pTT05JbmRpcmVjdEluaGVyaXRhbmNlKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VG
b3JUZXN0RGVmYXVsdFRvSlNPTkluZGlyZWN0SW5oZXJpdGFuY2UgPSBtYWtlVW5pcXVlPElzb1N1
YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCks
IEpTVGVzdERlZmF1bHRUb0pTT05JbmRpcmVjdEluaGVyaXRhbmNlKTsKICAgICBhdXRvKiBzcGFj
ZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdERlZmF1bHRUb0pTT05JbmRpcmVjdEluaGVyaXRh
bmNlLmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKIElH
Tk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRleDogU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERlZmF1bHRUb0pTT05Jbmhl
cml0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0RGVmYXVsdFRvSlNPTkluaGVyaXQuY3BwCShyZXZpc2lvbiAyODYwMTEpCisr
KyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RGVmYXVsdFRv
SlNPTkluaGVyaXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04OSw3ICs4OSw3IEBAIHB1YmxpYzoK
ICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAg
ICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3RE
ZWZhdWx0VG9KU09OSW5oZXJpdFByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0u
cGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7
CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6
Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBw
cm90b3R5cGUpCiAgICAgewpAQCAtMjkyLDkgKzI5Miw5IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpT
VGVzdERlZmF1bHRUb0pTT05JbmgKICAgICAgICAgcmV0dXJuIHNwYWNlOwogICAgIHN0YXRpY19h
c3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0
RGVmYXVsdFRvSlNPTkluaGVyaXQ+IHx8ICFKU1Rlc3REZWZhdWx0VG9KU09OSW5oZXJpdDo6bmVl
ZHNEZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6
OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3REZWZhdWx0VG9KU09OSW5oZXJpdD4pCi0gICAg
ICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdERlZmF1bHRUb0pTT05Jbmhlcml0ID0gbWFrZVVu
aXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3Rp
YmxlT2JqZWN0SGVhcENlbGxUeXBlLmdldCgpLCBKU1Rlc3REZWZhdWx0VG9KU09OSW5oZXJpdCk7
CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdERlZmF1bHRUb0pTT05Jbmhlcml0ID0g
bWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVz
dHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCksIEpTVGVzdERlZmF1bHRUb0pTT05Jbmhlcml0
KTsKICAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdERlZmF1bHRUb0pT
T05Jbmhlcml0ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0u
aGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNUZXN0RGVmYXVsdFRvSlNPTkluaGVy
aXQpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3REZWZhdWx0VG9KU09OSW5oZXJp
dCA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZt
LmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0RGVmYXVsdFRvSlNPTkluaGVyaXQpOwogICAgIGF1
dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0RGVmYXVsdFRvSlNPTkluaGVyaXQu
Z2V0KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JF
X1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RGVmYXVsdFRvSlNPTkluaGVyaXRG
aW5hbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdERlZmF1bHRUb0pTT05Jbmhlcml0RmluYWwuY3BwCShyZXZpc2lvbiAyODYw
MTEpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RGVm
YXVsdFRvSlNPTkluaGVyaXRGaW5hbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTkxLDcgKzkxLDcg
QEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6
OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJB
QkxFKEpTVGVzdERlZmF1bHRUb0pTT05Jbmhlcml0RmluYWxQcm90b3R5cGUsIEJhc2UpOwotICAg
ICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxh
aW5PYmplY3RTcGFjZSgpOwogICAgIH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0
ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKQEAgLTMzMiw5ICszMzIsOSBAQCBKU0M6
Oklzb1N1YnNwYWNlKiBKU1Rlc3REZWZhdWx0VG9KU09OSW5oCiAgICAgICAgIHJldHVybiBzcGFj
ZTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGli
bGVPYmplY3QsIEpTVGVzdERlZmF1bHRUb0pTT05Jbmhlcml0RmluYWw+IHx8ICFKU1Rlc3REZWZh
dWx0VG9KU09OSW5oZXJpdEZpbmFsOjpuZWVkc0Rlc3RydWN0aW9uKTsKICAgICBpZiBjb25zdGV4
cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdERl
ZmF1bHRUb0pTT05Jbmhlcml0RmluYWw+KQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRl
c3REZWZhdWx0VG9KU09OSW5oZXJpdEZpbmFsID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNP
X1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBl
LmdldCgpLCBKU1Rlc3REZWZhdWx0VG9KU09OSW5oZXJpdEZpbmFsKTsKKyAgICAgICAgc3BhY2Vz
Lm1fc3Vic3BhY2VGb3JUZXN0RGVmYXVsdFRvSlNPTkluaGVyaXRGaW5hbCA9IG1ha2VVbmlxdWU8
SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9i
amVjdEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3REZWZhdWx0VG9KU09OSW5oZXJpdEZpbmFsKTsKICAg
ICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdERlZmF1bHRUb0pTT05Jbmhl
cml0RmluYWwgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5o
ZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlLmdldCgpLCBKU1Rlc3REZWZhdWx0VG9KU09OSW5oZXJp
dEZpbmFsKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0RGVmYXVsdFRvSlNPTklu
aGVyaXRGaW5hbCA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZt
LmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0RGVmYXVsdFRvSlNPTkluaGVyaXRG
aW5hbCk7CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3REZWZhdWx0
VG9KU09OSW5oZXJpdEZpbmFsLmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNo
YWJsZS1jb2RlIikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUi
KQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERl
bGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGUuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3REZWxlZ2F0ZVRvU2hhcmVk
U3ludGhldGljQXR0cmlidXRlLmNwcAkocmV2aXNpb24gMjg2MDExKQorKysgU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0
aWNBdHRyaWJ1dGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03MCw3ICs3MCw3IEBAIHB1YmxpYzoK
ICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAg
ICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3RE
ZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlUHJvdG90eXBlLCBCYXNlKTsKLSAgICAg
ICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWlu
T2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVT
dHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
SlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC0yNDYsOSArMjQ2LDkgQEAgSlNDOjpJ
c29TdWJzcGFjZSogSlNUZXN0RGVsZWdhdGVUb1NoYXJlZAogICAgICAgICByZXR1cm4gc3BhY2U7
CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxl
T2JqZWN0LCBKU1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlPiB8fCAhSlNU
ZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZTo6bmVlZHNEZXN0cnVjdGlvbik7
CiAgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxl
T2JqZWN0LCBKU1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlPikKLSAgICAg
ICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJp
YnV0ZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAs
IHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNUZXN0RGVsZWdhdGVU
b1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZSk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9y
VGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGUgPSBtYWtlVW5pcXVlPElzb1N1
YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RI
ZWFwQ2VsbFR5cGUoKSwgSlNUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZSk7
CiAgICAgZWxzZQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3REZWxlZ2F0ZVRvU2hh
cmVkU3ludGhldGljQXR0cmlidXRlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQ
QUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNUZXN0RGVsZWdh
dGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZSk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNl
Rm9yVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGUgPSBtYWtlVW5pcXVlPElz
b1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBl
KCksIEpTVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGUpOwogICAgIGF1dG8q
IHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRp
Y0F0dHJpYnV0ZS5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29k
ZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3REb21haW5TZWN1
cml0eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdERvbWFpblNlY3VyaXR5LmNwcAkocmV2aXNpb24gMjg2MDExKQorKysgU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERvbWFpblNlY3VyaXR5
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtODAsNyArODAsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGlj
IEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAg
ICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0RG9tYWluU2VjdXJp
dHlQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7
CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KICAgICBzdGF0
aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsK
QEAgLTMyMCw5ICszMjAsOSBAQCBKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3REb21haW5TZWN1cml0
eTo6CiAgICAgICAgIHJldHVybiBzcGFjZTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFz
ZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdERvbWFpblNlY3VyaXR5PiB8
fCAhSlNUZXN0RG9tYWluU2VjdXJpdHk6Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0
ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0
RG9tYWluU2VjdXJpdHk+KQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3REb21haW5T
ZWN1cml0eSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhl
YXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNUZXN0RG9tYWlu
U2VjdXJpdHkpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3REb21haW5TZWN1cml0
eSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZt
LmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3REb21haW5TZWN1cml0eSk7
CiAgICAgZWxzZQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3REb21haW5TZWN1cml0
eSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZt
LmNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVGVzdERvbWFpblNlY3VyaXR5KTsKKyAgICAgICAg
c3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0RG9tYWluU2VjdXJpdHkgPSBtYWtlVW5pcXVlPElzb1N1
YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCks
IEpTVGVzdERvbWFpblNlY3VyaXR5KTsKICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNw
YWNlRm9yVGVzdERvbWFpblNlY3VyaXR5LmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1
bnJlYWNoYWJsZS1jb2RlIikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNv
bXBhcmUiKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdEVuYWJsZWRCeVNldHRpbmcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFbmFibGVkQnlTZXR0aW5nLmNwcAkocmV2aXNp
b24gMjg2MDExKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdEVuYWJsZWRCeVNldHRpbmcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05Miw3ICs5Miw3IEBA
IHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpW
TSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJM
RShKU1Rlc3RFbmFibGVkQnlTZXR0aW5nUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJu
ICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3Bh
Y2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUo
SlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1Zh
bHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC00NTksOSArNDU5LDkgQEAgSlNDOjpJc29TdWJzcGFj
ZSogSlNUZXN0RW5hYmxlZEJ5U2V0dGluZwogICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAgc3Rh
dGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBK
U1Rlc3RFbmFibGVkQnlTZXR0aW5nPiB8fCAhSlNUZXN0RW5hYmxlZEJ5U2V0dGluZzo6bmVlZHNE
ZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpT
RGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RFbmFibGVkQnlTZXR0aW5nPikKLSAgICAgICAgc3Bh
Y2VzLm1fc3Vic3BhY2VGb3JUZXN0RW5hYmxlZEJ5U2V0dGluZyA9IG1ha2VVbmlxdWU8SXNvU3Vi
c3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhl
YXBDZWxsVHlwZS5nZXQoKSwgSlNUZXN0RW5hYmxlZEJ5U2V0dGluZyk7CisgICAgICAgIHNwYWNl
cy5tX3N1YnNwYWNlRm9yVGVzdEVuYWJsZWRCeVNldHRpbmcgPSBtYWtlVW5pcXVlPElzb1N1YnNw
YWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFw
Q2VsbFR5cGUoKSwgSlNUZXN0RW5hYmxlZEJ5U2V0dGluZyk7CiAgICAgZWxzZQotICAgICAgICBz
cGFjZXMubV9zdWJzcGFjZUZvclRlc3RFbmFibGVkQnlTZXR0aW5nID0gbWFrZVVuaXF1ZTxJc29T
dWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZS5n
ZXQoKSwgSlNUZXN0RW5hYmxlZEJ5U2V0dGluZyk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNl
Rm9yVGVzdEVuYWJsZWRCeVNldHRpbmcgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VC
U1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCksIEpTVGVzdEVuYWJsZWRC
eVNldHRpbmcpOwogICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0RW5h
YmxlZEJ5U2V0dGluZy5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUt
Y29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFbmFibGVk
Rm9yQ29udGV4dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdEVuYWJsZWRGb3JDb250ZXh0LmNwcAkocmV2aXNpb24gMjg2MDEx
KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEVuYWJs
ZWRGb3JDb250ZXh0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjYsNyArNjYsNyBAQCBwdWJsaWM6
CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQog
ICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0
RW5hYmxlZEZvckNvbnRleHRQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBs
YWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwog
ICAgIH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZN
JiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJv
dG90eXBlKQogICAgIHsKQEAgLTE4Niw5ICsxODYsOSBAQCBKU0M6Oklzb1N1YnNwYWNlKiBKU1Rl
c3RFbmFibGVkRm9yQ29udGV4CiAgICAgICAgIHJldHVybiBzcGFjZTsKICAgICBzdGF0aWNfYXNz
ZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdEVu
YWJsZWRGb3JDb250ZXh0PiB8fCAhSlNUZXN0RW5hYmxlZEZvckNvbnRleHQ6Om5lZWRzRGVzdHJ1
Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3Ry
dWN0aWJsZU9iamVjdCwgSlNUZXN0RW5hYmxlZEZvckNvbnRleHQ+KQotICAgICAgICBzcGFjZXMu
bV9zdWJzcGFjZUZvclRlc3RFbmFibGVkRm9yQ29udGV4dCA9IG1ha2VVbmlxdWU8SXNvU3Vic3Bh
Y2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBD
ZWxsVHlwZS5nZXQoKSwgSlNUZXN0RW5hYmxlZEZvckNvbnRleHQpOworICAgICAgICBzcGFjZXMu
bV9zdWJzcGFjZUZvclRlc3RFbmFibGVkRm9yQ29udGV4dCA9IG1ha2VVbmlxdWU8SXNvU3Vic3Bh
Y2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBD
ZWxsVHlwZSgpLCBKU1Rlc3RFbmFibGVkRm9yQ29udGV4dCk7CiAgICAgZWxzZQotICAgICAgICBz
cGFjZXMubV9zdWJzcGFjZUZvclRlc3RFbmFibGVkRm9yQ29udGV4dCA9IG1ha2VVbmlxdWU8SXNv
U3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUu
Z2V0KCksIEpTVGVzdEVuYWJsZWRGb3JDb250ZXh0KTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3Bh
Y2VGb3JUZXN0RW5hYmxlZEZvckNvbnRleHQgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09f
U1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCksIEpTVGVzdEVuYWJs
ZWRGb3JDb250ZXh0KTsKICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVz
dEVuYWJsZWRGb3JDb250ZXh0LmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNo
YWJsZS1jb2RlIikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUi
KQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2
ZW50Q29uc3RydWN0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudENvbnN0cnVjdG9yLmNwcAkocmV2aXNpb24gMjg2
MDExKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2
ZW50Q29uc3RydWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDcsNyArMTQ3LDcgQEAgcHVi
bGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2
bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpT
VGVzdEV2ZW50Q29uc3RydWN0b3JQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZt
LnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgp
OwogICAgIH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6
OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUg
cHJvdG90eXBlKQogICAgIHsKQEAgLTMyMSw5ICszMjEsOSBAQCBKU0M6Oklzb1N1YnNwYWNlKiBK
U1Rlc3RFdmVudENvbnN0cnVjdG9yCiAgICAgICAgIHJldHVybiBzcGFjZTsKICAgICBzdGF0aWNf
YXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVz
dEV2ZW50Q29uc3RydWN0b3I+IHx8ICFKU1Rlc3RFdmVudENvbnN0cnVjdG9yOjpuZWVkc0Rlc3Ry
dWN0aW9uKTsKICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0
cnVjdGlibGVPYmplY3QsIEpTVGVzdEV2ZW50Q29uc3RydWN0b3I+KQotICAgICAgICBzcGFjZXMu
bV9zdWJzcGFjZUZvclRlc3RFdmVudENvbnN0cnVjdG9yID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFj
ZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENl
bGxUeXBlLmdldCgpLCBKU1Rlc3RFdmVudENvbnN0cnVjdG9yKTsKKyAgICAgICAgc3BhY2VzLm1f
c3Vic3BhY2VGb3JUZXN0RXZlbnRDb25zdHJ1Y3RvciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+
IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxs
VHlwZSgpLCBKU1Rlc3RFdmVudENvbnN0cnVjdG9yKTsKICAgICBlbHNlCi0gICAgICAgIHNwYWNl
cy5tX3N1YnNwYWNlRm9yVGVzdEV2ZW50Q29uc3RydWN0b3IgPSBtYWtlVW5pcXVlPElzb1N1YnNw
YWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlLmdldCgp
LCBKU1Rlc3RFdmVudENvbnN0cnVjdG9yKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JU
ZXN0RXZlbnRDb25zdHJ1Y3RvciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFD
RV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0RXZlbnRDb25zdHJ1
Y3Rvcik7CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RFdmVudENv
bnN0cnVjdG9yLmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2Rl
IikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRleDog
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50VGFyZ2V0
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0RXZlbnRUYXJnZXQuY3BwCShyZXZpc2lvbiAyODYwMTEpCisrKyBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRUYXJnZXQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC03Myw3ICs3Myw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29T
dWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNf
QVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3RFdmVudFRhcmdldFByb3RvdHlwZSwg
QmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0
dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVj
dHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAtMjYyLDkgKzI2
Miw5IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdEV2ZW50VGFyZ2V0OjpzdWIKICAgICAgICAg
cmV0dXJuIHNwYWNlOwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpK
U0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0RXZlbnRUYXJnZXQ+IHx8ICFKU1Rlc3RFdmVudFRh
cmdldDo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vf
b2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RFdmVudFRhcmdldD4pCi0gICAg
ICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEV2ZW50VGFyZ2V0ID0gbWFrZVVuaXF1ZTxJc29T
dWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0
SGVhcENlbGxUeXBlLmdldCgpLCBKU1Rlc3RFdmVudFRhcmdldCk7CisgICAgICAgIHNwYWNlcy5t
X3N1YnNwYWNlRm9yVGVzdEV2ZW50VGFyZ2V0ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNP
X1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBl
KCksIEpTVGVzdEV2ZW50VGFyZ2V0KTsKICAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNw
YWNlRm9yVGVzdEV2ZW50VGFyZ2V0ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQ
QUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNUZXN0RXZlbnRU
YXJnZXQpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RFdmVudFRhcmdldCA9IG1h
a2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxI
ZWFwQ2VsbFR5cGUoKSwgSlNUZXN0RXZlbnRUYXJnZXQpOwogICAgIGF1dG8qIHNwYWNlID0gc3Bh
Y2VzLm1fc3Vic3BhY2VGb3JUZXN0RXZlbnRUYXJnZXQuZ2V0KCk7CiBJR05PUkVfV0FSTklOR1Nf
QkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xv
Z2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0RXhjZXB0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXhjZXB0aW9uLmNwcAkocmV2aXNpb24gMjg2
MDExKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV4
Y2VwdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY2LDcgKzY2LDcgQEAgcHVibGljOgogICAg
IHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7
CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdEV4Y2Vw
dGlvblByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFj
ZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0
YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAg
ewpAQCAtMTg3LDkgKzE4Nyw5IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdEV4Y2VwdGlvbjo6
c3Vic3AKICAgICAgICAgcmV0dXJuIHNwYWNlOwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19i
YXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0RXhjZXB0aW9uPiB8fCAh
SlNUZXN0RXhjZXB0aW9uOjpuZWVkc0Rlc3RydWN0aW9uKTsKICAgICBpZiBjb25zdGV4cHIgKHN0
ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdEV4Y2VwdGlv
bj4pCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEV4Y2VwdGlvbiA9IG1ha2VVbmlx
dWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJs
ZU9iamVjdEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNUZXN0RXhjZXB0aW9uKTsKKyAgICAgICAgc3Bh
Y2VzLm1fc3Vic3BhY2VGb3JUZXN0RXhjZXB0aW9uID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4g
SVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxU
eXBlKCksIEpTVGVzdEV4Y2VwdGlvbik7CiAgICAgZWxzZQotICAgICAgICBzcGFjZXMubV9zdWJz
cGFjZUZvclRlc3RFeGNlcHRpb24gPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BB
Q0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlLmdldCgpLCBKU1Rlc3RFeGNlcHRp
b24pOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RFeGNlcHRpb24gPSBtYWtlVW5p
cXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENl
bGxUeXBlKCksIEpTVGVzdEV4Y2VwdGlvbik7CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9z
dWJzcGFjZUZvclRlc3RFeGNlcHRpb24uZ2V0KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVu
cmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29t
cGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0R2VuZXJhdGVBZGRPcGFxdWVSb290LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2VuZXJhdGVBZGRPcGFxdWVSb290LmNw
cAkocmV2aXNpb24gMjg2MDExKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdEdlbmVyYXRlQWRkT3BhcXVlUm9vdC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTY2LDcgKzY2LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJz
cGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NV
QlNQQUNFX1NIQVJBQkxFKEpTVGVzdEdlbmVyYXRlQWRkT3BhcXVlUm9vdFByb3RvdHlwZSwgQmFz
ZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJu
ICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVy
ZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAtMTg3LDkgKzE4Nyw5
IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdEdlbmVyYXRlQWRkT3BhcXUKICAgICAgICAgcmV0
dXJuIHNwYWNlOwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rl
c3RydWN0aWJsZU9iamVjdCwgSlNUZXN0R2VuZXJhdGVBZGRPcGFxdWVSb290PiB8fCAhSlNUZXN0
R2VuZXJhdGVBZGRPcGFxdWVSb290OjpuZWVkc0Rlc3RydWN0aW9uKTsKICAgICBpZiBjb25zdGV4
cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdEdl
bmVyYXRlQWRkT3BhcXVlUm9vdD4pCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEdl
bmVyYXRlQWRkT3BhcXVlUm9vdCA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFD
RV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5nZXQoKSwg
SlNUZXN0R2VuZXJhdGVBZGRPcGFxdWVSb290KTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VG
b3JUZXN0R2VuZXJhdGVBZGRPcGFxdWVSb290ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNP
X1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBl
KCksIEpTVGVzdEdlbmVyYXRlQWRkT3BhcXVlUm9vdCk7CiAgICAgZWxzZQotICAgICAgICBzcGFj
ZXMubV9zdWJzcGFjZUZvclRlc3RHZW5lcmF0ZUFkZE9wYXF1ZVJvb3QgPSBtYWtlVW5pcXVlPElz
b1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBl
LmdldCgpLCBKU1Rlc3RHZW5lcmF0ZUFkZE9wYXF1ZVJvb3QpOworICAgICAgICBzcGFjZXMubV9z
dWJzcGFjZUZvclRlc3RHZW5lcmF0ZUFkZE9wYXF1ZVJvb3QgPSBtYWtlVW5pcXVlPElzb1N1YnNw
YWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCksIEpT
VGVzdEdlbmVyYXRlQWRkT3BhcXVlUm9vdCk7CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9z
dWJzcGFjZUZvclRlc3RHZW5lcmF0ZUFkZE9wYXF1ZVJvb3QuZ2V0KCk7CiBJR05PUkVfV0FSTklO
R1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0
b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEdlbmVyYXRlSXNSZWFj
aGFibGUuY3BwCShyZXZpc2lvbiAyODYwMTEpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTY2LDcgKzY2LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNl
KiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRf
SVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGVQcm90b3R5cGUs
IEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJl
dHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1
Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKQEAgLTE5Nyw5ICsx
OTcsOSBAQCBKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhCiAgICAgICAg
IHJldHVybiBzcGFjZTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6
SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGU+IHx8ICFKU1Rl
c3RHZW5lcmF0ZUlzUmVhY2hhYmxlOjpuZWVkc0Rlc3RydWN0aW9uKTsKICAgICBpZiBjb25zdGV4
cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdEdl
bmVyYXRlSXNSZWFjaGFibGU+KQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RHZW5l
cmF0ZUlzUmVhY2hhYmxlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lO
SVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmdldCgpLCBKU1Rl
c3RHZW5lcmF0ZUlzUmVhY2hhYmxlKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0
R2VuZXJhdGVJc1JlYWNoYWJsZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFD
RV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBKU1Rl
c3RHZW5lcmF0ZUlzUmVhY2hhYmxlKTsKICAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNw
YWNlRm9yVGVzdEdlbmVyYXRlSXNSZWFjaGFibGUgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJ
U09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlLmdldCgpLCBKU1Rl
c3RHZW5lcmF0ZUlzUmVhY2hhYmxlKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0
R2VuZXJhdGVJc1JlYWNoYWJsZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFD
RV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0R2VuZXJhdGVJc1Jl
YWNoYWJsZSk7CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RHZW5l
cmF0ZUlzUmVhY2hhYmxlLmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJs
ZS1jb2RlIikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJ
bmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEdsb2Jh
bE9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdEdsb2JhbE9iamVjdC5jcHAJKHJldmlzaW9uIDI4NjAxMSkKKysrIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RHbG9iYWxPYmplY3Qu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xODE0LDcgKzE4MTQsNyBAQCBKU0M6Oklzb1N1YnNwYWNl
KiBKU1Rlc3RHbG9iYWxPYmplY3Q6OnN1CiAgICAgYXV0byYgc3BhY2VzID0gY2xpZW50RGF0YS5z
dWJzcGFjZXMoKTsKICAgICBpZiAoYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRl
c3RHbG9iYWxPYmplY3QuZ2V0KCkpCiAgICAgICAgIHJldHVybiBzcGFjZTsKLSAgICBzcGFjZXMu
bV9zdWJzcGFjZUZvclRlc3RHbG9iYWxPYmplY3QgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJ
U09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCBjbGllbnREYXRhLm1faGVhcENlbGxUeXBlRm9ySlNU
ZXN0R2xvYmFsT2JqZWN0LmdldCgpLCBKU1Rlc3RHbG9iYWxPYmplY3QpOworICAgIHNwYWNlcy5t
X3N1YnNwYWNlRm9yVGVzdEdsb2JhbE9iamVjdCA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElT
T19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICpjbGllbnREYXRhLm1faGVhcENlbGxUeXBlRm9ySlNU
ZXN0R2xvYmFsT2JqZWN0LCBKU1Rlc3RHbG9iYWxPYmplY3QpOwogICAgIGF1dG8qIHNwYWNlID0g
c3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0R2xvYmFsT2JqZWN0LmdldCgpOwogSUdOT1JFX1dBUk5J
TkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1
dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdEdsb2JhbE9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RHbG9iYWxPYmplY3QuaAkocmV2aXNp
b24gMjg2MDExKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdEdsb2JhbE9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC05OCw3ICs5OCw3IEBAIHB1Ymxp
YzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0p
CiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rl
c3RHbG9iYWxPYmplY3RQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWlu
T2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAg
IH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2
bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90
eXBlKQogICAgIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW5kZXhlZFNldHRlck5v
SWRlbnRpZmllci5jcHAJKHJldmlzaW9uIDI4NjAxMSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNjUsNyArNjUsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6
SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RB
VElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0SW5kZXhlZFNldHRlck5vSWRl
bnRpZmllclByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RT
cGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAg
IHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6
OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAg
ICAgewpAQCAtMjc2LDkgKzI3Niw5IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdEluZGV4ZWRT
ZXR0ZXJOb0kKICAgICAgICAgcmV0dXJuIHNwYWNlOwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjpp
c19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0SW5kZXhlZFNldHRl
ck5vSWRlbnRpZmllcj4gfHwgIUpTVGVzdEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXI6Om5lZWRz
RGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpK
U0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0SW5kZXhlZFNldHRlck5vSWRlbnRpZmllcj4pCi0g
ICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXIg
PSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5k
ZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVGVzdEluZGV4ZWRTZXR0ZXJO
b0lkZW50aWZpZXIpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RJbmRleGVkU2V0
dGVyTm9JZGVudGlmaWVyID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lO
SVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCksIEpTVGVzdElu
ZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXIpOwogICAgIGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vi
c3BhY2VGb3JUZXN0SW5kZXhlZFNldHRlck5vSWRlbnRpZmllciA9IG1ha2VVbmlxdWU8SXNvU3Vi
c3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUuZ2V0
KCksIEpTVGVzdEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXIpOworICAgICAgICBzcGFjZXMubV9z
dWJzcGFjZUZvclRlc3RJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyID0gbWFrZVVuaXF1ZTxJc29T
dWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgp
LCBKU1Rlc3RJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyKTsKICAgICBhdXRvKiBzcGFjZSA9IHNw
YWNlcy5tX3N1YnNwYWNlRm9yVGVzdEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXIuZ2V0KCk7CiBJ
R05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdT
X0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9u
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0SW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uLmNwcAkocmV2aXNpb24gMjg2
MDExKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdElu
ZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY1LDcg
KzY1LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZv
cihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNF
X1NIQVJBQkxFKEpTVGVzdEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvblByb3RvdHlwZSwg
QmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0
dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVj
dHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAtMjc2LDkgKzI3
Niw5IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdEluZGV4ZWRTZXR0ZXJUaHIKICAgICAgICAg
cmV0dXJuIHNwYWNlOwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpK
U0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0SW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9u
PiB8fCAhSlNUZXN0SW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uOjpuZWVkc0Rlc3RydWN0
aW9uKTsKICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVj
dGlibGVPYmplY3QsIEpTVGVzdEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbj4pCi0gICAg
ICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlv
biA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZt
LmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNUZXN0SW5kZXhlZFNldHRl
clRocm93aW5nRXhjZXB0aW9uKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0SW5k
ZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNP
X1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBl
KCksIEpTVGVzdEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbik7CiAgICAgZWxzZQotICAg
ICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRp
b24gPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2
bS5jZWxsSGVhcENlbGxUeXBlLmdldCgpLCBKU1Rlc3RJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNl
cHRpb24pOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RJbmRleGVkU2V0dGVyVGhy
b3dpbmdFeGNlcHRpb24gPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5J
VCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCksIEpTVGVzdEluZGV4ZWRTZXR0ZXJUaHJv
d2luZ0V4Y2VwdGlvbik7CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRl
c3RJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24uZ2V0KCk7CiBJR05PUkVfV0FSTklOR1Nf
QkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xv
Z2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0SW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW5kZXhlZFNl
dHRlcldpdGhJZGVudGlmaWVyLmNwcAkocmV2aXNpb24gMjg2MDExKQorKysgU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRp
Zmllci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTczLDcgKzczLDcgQEAgcHVibGljOgogICAgIHN0
YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAg
ICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdEluZGV4ZWRT
ZXR0ZXJXaXRoSWRlbnRpZmllclByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0u
cGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7
CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6
Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBw
cm90b3R5cGUpCiAgICAgewpAQCAtMzA4LDkgKzMwOCw5IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpT
VGVzdEluZGV4ZWRTZXR0ZXJXaXQKICAgICAgICAgcmV0dXJuIHNwYWNlOwogICAgIHN0YXRpY19h
c3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0
SW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyPiB8fCAhSlNUZXN0SW5kZXhlZFNldHRlcldpdGhJ
ZGVudGlmaWVyOjpuZWVkc0Rlc3RydWN0aW9uKTsKICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNf
YmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdEluZGV4ZWRTZXR0ZXJX
aXRoSWRlbnRpZmllcj4pCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEluZGV4ZWRT
ZXR0ZXJXaXRoSWRlbnRpZmllciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFD
RV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5nZXQoKSwg
SlNUZXN0SW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vi
c3BhY2VGb3JUZXN0SW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyID0gbWFrZVVuaXF1ZTxJc29T
dWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0
SGVhcENlbGxUeXBlKCksIEpTVGVzdEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllcik7CiAgICAg
ZWxzZQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RJbmRleGVkU2V0dGVyV2l0aElk
ZW50aWZpZXIgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5o
ZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlLmdldCgpLCBKU1Rlc3RJbmRleGVkU2V0dGVyV2l0aElk
ZW50aWZpZXIpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RJbmRleGVkU2V0dGVy
V2l0aElkZW50aWZpZXIgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5J
VCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCksIEpTVGVzdEluZGV4ZWRTZXR0ZXJXaXRo
SWRlbnRpZmllcik7CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RJ
bmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXIuZ2V0KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4o
InVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwt
Y29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0SW50ZXJmYWNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlLmNwcAkocmV2aXNpb24gMjg2MDExKQor
KysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFj
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE4MSw3ICsxODEsNyBAQCBwdWJsaWM6CiAgICAgc3Rh
dGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAg
ICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0SW50ZXJmYWNl
UHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOwor
ICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGlj
IEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBA
IC0xMTA0LDkgKzExMDQsOSBAQCBwdWJsaWM6CiAgICAgICAgICAgICByZXR1cm4gc3BhY2U7CiAg
ICAgICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJs
ZU9iamVjdCwgVGVzdEludGVyZmFjZUl0ZXJhdG9yPiB8fCAhVGVzdEludGVyZmFjZUl0ZXJhdG9y
OjpuZWVkc0Rlc3RydWN0aW9uKTsKICAgICAgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vf
b2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBUZXN0SW50ZXJmYWNlSXRlcmF0b3I+KQot
ICAgICAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0SW50ZXJmYWNlSXRlcmF0b3IgPSBt
YWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0
cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuZ2V0KCksIFRlc3RJbnRlcmZhY2VJdGVyYXRvcik7
CisgICAgICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RJbnRlcmZhY2VJdGVyYXRvciA9
IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRl
c3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBUZXN0SW50ZXJmYWNlSXRlcmF0b3IpOwog
ICAgICAgICBlbHNlCi0gICAgICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RJbnRlcmZh
Y2VJdGVyYXRvciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZt
LmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIFRlc3RJbnRlcmZhY2VJdGVyYXRvcik7
CisgICAgICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RJbnRlcmZhY2VJdGVyYXRvciA9
IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNl
bGxIZWFwQ2VsbFR5cGUoKSwgVGVzdEludGVyZmFjZUl0ZXJhdG9yKTsKICAgICAgICAgYXV0byog
c3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RJbnRlcmZhY2VJdGVyYXRvci5nZXQoKTsK
IElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklO
R1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKQEAgLTExOTYsOSArMTE5Niw5IEBAIEpT
Qzo6SXNvU3Vic3BhY2UqIEpTVGVzdEludGVyZmFjZTo6c3Vic3AKICAgICAgICAgcmV0dXJuIHNw
YWNlOwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0
aWJsZU9iamVjdCwgSlNUZXN0SW50ZXJmYWNlPiB8fCAhSlNUZXN0SW50ZXJmYWNlOjpuZWVkc0Rl
c3RydWN0aW9uKTsKICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNE
ZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdEludGVyZmFjZT4pCi0gICAgICAgIHNwYWNlcy5tX3N1
YnNwYWNlRm9yVGVzdEludGVyZmFjZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJT
UEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5nZXQo
KSwgSlNUZXN0SW50ZXJmYWNlKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0SW50
ZXJmYWNlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVh
cCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCksIEpTVGVzdEludGVyZmFjZSk7
CiAgICAgZWxzZQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RJbnRlcmZhY2UgPSBt
YWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxs
SGVhcENlbGxUeXBlLmdldCgpLCBKU1Rlc3RJbnRlcmZhY2UpOworICAgICAgICBzcGFjZXMubV9z
dWJzcGFjZUZvclRlc3RJbnRlcmZhY2UgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VC
U1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCksIEpTVGVzdEludGVyZmFj
ZSk7CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RJbnRlcmZhY2Uu
Z2V0KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JF
X1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlTGVhZGluZ1VuZGVy
c2NvcmUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2VMZWFkaW5nVW5kZXJzY29yZS5jcHAJKHJldmlzaW9uIDI4
NjAxMSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJ
bnRlcmZhY2VMZWFkaW5nVW5kZXJzY29yZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY2LDcgKzY2
LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihK
U0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NI
QVJBQkxFKEpTVGVzdEludGVyZmFjZUxlYWRpbmdVbmRlcnNjb3JlUHJvdG90eXBlLCBCYXNlKTsK
LSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZt
LnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBj
cmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC0xODcsOSArMTg3LDkgQEAg
SlNDOjpJc29TdWJzcGFjZSogSlNUZXN0SW50ZXJmYWNlTGVhZGluZwogICAgICAgICByZXR1cm4g
c3BhY2U7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1
Y3RpYmxlT2JqZWN0LCBKU1Rlc3RJbnRlcmZhY2VMZWFkaW5nVW5kZXJzY29yZT4gfHwgIUpTVGVz
dEludGVyZmFjZUxlYWRpbmdVbmRlcnNjb3JlOjpuZWVkc0Rlc3RydWN0aW9uKTsKICAgICBpZiBj
b25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpT
VGVzdEludGVyZmFjZUxlYWRpbmdVbmRlcnNjb3JlPikKLSAgICAgICAgc3BhY2VzLm1fc3Vic3Bh
Y2VGb3JUZXN0SW50ZXJmYWNlTGVhZGluZ1VuZGVyc2NvcmUgPSBtYWtlVW5pcXVlPElzb1N1YnNw
YWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFw
Q2VsbFR5cGUuZ2V0KCksIEpTVGVzdEludGVyZmFjZUxlYWRpbmdVbmRlcnNjb3JlKTsKKyAgICAg
ICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0SW50ZXJmYWNlTGVhZGluZ1VuZGVyc2NvcmUgPSBt
YWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0
cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0SW50ZXJmYWNlTGVhZGluZ1VuZGVy
c2NvcmUpOwogICAgIGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0SW50ZXJm
YWNlTGVhZGluZ1VuZGVyc2NvcmUgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BB
Q0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlLmdldCgpLCBKU1Rlc3RJbnRlcmZh
Y2VMZWFkaW5nVW5kZXJzY29yZSk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdElu
dGVyZmFjZUxlYWRpbmdVbmRlcnNjb3JlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NV
QlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RJbnRlcmZh
Y2VMZWFkaW5nVW5kZXJzY29yZSk7CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFj
ZUZvclRlc3RJbnRlcmZhY2VMZWFkaW5nVW5kZXJzY29yZS5nZXQoKTsKIElHTk9SRV9XQVJOSU5H
U19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRv
bG9naWNhbC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RJdGVyYWJsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEl0ZXJhYmxlLmNwcAkocmV2aXNpb24gMjg2
MDExKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEl0
ZXJhYmxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzUsNyArNzUsNyBAQCBwdWJsaWM6CiAgICAg
c3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsK
ICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0SXRlcmFi
bGVQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7
CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KICAgICBzdGF0
aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsK
QEAgLTIwMSw5ICsyMDEsOSBAQCBwdWJsaWM6CiAgICAgICAgICAgICByZXR1cm4gc3BhY2U7CiAg
ICAgICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJs
ZU9iamVjdCwgVGVzdEl0ZXJhYmxlSXRlcmF0b3I+IHx8ICFUZXN0SXRlcmFibGVJdGVyYXRvcjo6
bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29m
X3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgVGVzdEl0ZXJhYmxlSXRlcmF0b3I+KQotICAg
ICAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0SXRlcmFibGVJdGVyYXRvciA9IG1ha2VV
bmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0
aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5nZXQoKSwgVGVzdEl0ZXJhYmxlSXRlcmF0b3IpOworICAg
ICAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0SXRlcmFibGVJdGVyYXRvciA9IG1ha2VV
bmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0
aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBUZXN0SXRlcmFibGVJdGVyYXRvcik7CiAgICAgICAg
IGVsc2UKLSAgICAgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEl0ZXJhYmxlSXRlcmF0
b3IgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2
bS5jZWxsSGVhcENlbGxUeXBlLmdldCgpLCBUZXN0SXRlcmFibGVJdGVyYXRvcik7CisgICAgICAg
ICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RJdGVyYWJsZUl0ZXJhdG9yID0gbWFrZVVuaXF1
ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxs
VHlwZSgpLCBUZXN0SXRlcmFibGVJdGVyYXRvcik7CiAgICAgICAgIGF1dG8qIHNwYWNlID0gc3Bh
Y2VzLm1fc3Vic3BhY2VGb3JUZXN0SXRlcmFibGVJdGVyYXRvci5nZXQoKTsKIElHTk9SRV9XQVJO
SU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRh
dXRvbG9naWNhbC1jb21wYXJlIikKQEAgLTI5Myw5ICsyOTMsOSBAQCBKU0M6Oklzb1N1YnNwYWNl
KiBKU1Rlc3RJdGVyYWJsZTo6c3Vic3BhCiAgICAgICAgIHJldHVybiBzcGFjZTsKICAgICBzdGF0
aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpT
VGVzdEl0ZXJhYmxlPiB8fCAhSlNUZXN0SXRlcmFibGU6Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAg
IGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVj
dCwgSlNUZXN0SXRlcmFibGU+KQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RJdGVy
YWJsZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAs
IHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNUZXN0SXRlcmFibGUp
OworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RJdGVyYWJsZSA9IG1ha2VVbmlxdWU8
SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9i
amVjdEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RJdGVyYWJsZSk7CiAgICAgZWxzZQotICAgICAgICBz
cGFjZXMubV9zdWJzcGFjZUZvclRlc3RJdGVyYWJsZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+
IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEpT
VGVzdEl0ZXJhYmxlKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0SXRlcmFibGUg
PSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5j
ZWxsSGVhcENlbGxUeXBlKCksIEpTVGVzdEl0ZXJhYmxlKTsKICAgICBhdXRvKiBzcGFjZSA9IHNw
YWNlcy5tX3N1YnNwYWNlRm9yVGVzdEl0ZXJhYmxlLmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JF
R0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dp
Y2FsLWNvbXBhcmUiKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SlNCdWlsdGluQ29uc3RydWN0
b3IuY3BwCShyZXZpc2lvbiAyODYwMTEpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3IuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC02OSw3ICs2OSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSog
c3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lT
T19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvclByb3RvdHlwZSwg
QmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0
dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVj
dHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAtMjMwLDkgKzIz
MCw5IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdEpTQnVpbHRpbkNvbnN0cnUKICAgICAgICAg
cmV0dXJuIHNwYWNlOwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpK
U0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3I+IHx8ICFKU1Rl
c3RKU0J1aWx0aW5Db25zdHJ1Y3Rvcjo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3Rl
eHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RK
U0J1aWx0aW5Db25zdHJ1Y3Rvcj4pCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEpT
QnVpbHRpbkNvbnN0cnVjdG9yID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNF
X0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmdldCgpLCBK
U1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rvcik7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9y
VGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NV
QlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCks
IEpTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yKTsKICAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5t
X3N1YnNwYWNlRm9yVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yID0gbWFrZVVuaXF1ZTxJc29TdWJz
cGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZS5nZXQo
KSwgSlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3IpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFj
ZUZvclRlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElT
T19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0SlNC
dWlsdGluQ29uc3RydWN0b3IpOwogICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VG
b3JUZXN0SlNCdWlsdGluQ29uc3RydWN0b3IuZ2V0KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4o
InVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwt
Y29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9u
LmNwcAkocmV2aXNpb24gMjg2MDExKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlvbi5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTY3LDcgKzY3LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBz
dWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNP
X1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlvblByb3RvdHlwZSwg
QmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0
dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVj
dHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAtMjMwLDkgKzIz
MCw5IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdExlZ2FjeUZhY3RvcnlGdW4KICAgICAgICAg
cmV0dXJuIHNwYWNlOwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpK
U0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uPiB8fCAhSlNU
ZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uOjpuZWVkc0Rlc3RydWN0aW9uKTsKICAgICBpZiBjb25z
dGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVz
dExlZ2FjeUZhY3RvcnlGdW5jdGlvbj4pCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVz
dExlZ2FjeUZhY3RvcnlGdW5jdGlvbiA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJT
UEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5nZXQo
KSwgSlNUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3Bh
Y2VGb3JUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4g
SVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxU
eXBlKCksIEpTVGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlvbik7CiAgICAgZWxzZQotICAgICAgICBz
cGFjZXMubV9zdWJzcGFjZUZvclRlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb24gPSBtYWtlVW5pcXVl
PElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxU
eXBlLmdldCgpLCBKU1Rlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb24pOworICAgICAgICBzcGFjZXMu
bV9zdWJzcGFjZUZvclRlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb24gPSBtYWtlVW5pcXVlPElzb1N1
YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCks
IEpTVGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlvbik7CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMu
bV9zdWJzcGFjZUZvclRlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb24uZ2V0KCk7CiBJR05PUkVfV0FS
TklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0
YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0TGVnYWN5Tm9JbnRlcmZhY2VPYmplY3QuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RMZWdhY3lO
b0ludGVyZmFjZU9iamVjdC5jcHAJKHJldmlzaW9uIDI4NjAxMSkKKysrIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RMZWdhY3lOb0ludGVyZmFjZU9iamVjdC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTg1LDcgKzg1LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBK
U0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAg
IFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdExlZ2FjeU5vSW50ZXJm
YWNlT2JqZWN0UHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVj
dFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAg
ICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpT
Qzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkK
ICAgICB7CkBAIC0zMzUsOSArMzM1LDkgQEAgSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0TGVnYWN5
Tm9JbnRlcmZhYwogICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6
OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RMZWdhY3lOb0lu
dGVyZmFjZU9iamVjdD4gfHwgIUpTVGVzdExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0OjpuZWVkc0Rl
c3RydWN0aW9uKTsKICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNE
ZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0PikKLSAgICAg
ICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TGVnYWN5Tm9JbnRlcmZhY2VPYmplY3QgPSBtYWtl
VW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVj
dGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVGVzdExlZ2FjeU5vSW50ZXJmYWNlT2Jq
ZWN0KTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TGVnYWN5Tm9JbnRlcmZhY2VP
YmplY3QgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFw
LCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0TGVnYWN5Tm9JbnRl
cmZhY2VPYmplY3QpOwogICAgIGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0
TGVnYWN5Tm9JbnRlcmZhY2VPYmplY3QgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VC
U1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlLmdldCgpLCBKU1Rlc3RMZWdh
Y3lOb0ludGVyZmFjZU9iamVjdCk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdExl
Z2FjeU5vSW50ZXJmYWNlT2JqZWN0ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQ
QUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RMZWdhY3lOb0lu
dGVyZmFjZU9iamVjdCk7CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRl
c3RMZWdhY3lOb0ludGVyZmFjZU9iamVjdC5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigi
dW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1j
b21wYXJlIikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdElu
cy5jcHAJKHJldmlzaW9uIDI4NjAxMSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNzMsNyArNzMsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2Uq
IHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9J
U09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdEluc1Byb3RvdHlw
ZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAg
cmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0
cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAtMjQ5LDkg
KzI0OSw5IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdExlZ2FjeU92ZXJyaWRlQnUKICAgICAg
ICAgcmV0dXJuIHNwYWNlOwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlND
OjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdElucz4gfHwg
IUpTVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM6Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlm
IGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwg
SlNUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdElucz4pCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNl
Rm9yVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJ
U09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5
cGUuZ2V0KCksIEpTVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMpOworICAgICAgICBzcGFjZXMu
bV9zdWJzcGFjZUZvclRlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zID0gbWFrZVVuaXF1ZTxJc29T
dWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0
SGVhcENlbGxUeXBlKCksIEpTVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMpOwogICAgIGVsc2UK
LSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdElucyA9
IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNl
bGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMpOworICAg
ICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zID0gbWFr
ZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhl
YXBDZWxsVHlwZSgpLCBKU1Rlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zKTsKICAgICBhdXRvKiBz
cGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMuZ2V0
KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dB
Uk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TWFwTGlrZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE1hcExpa2Uu
Y3BwCShyZXZpc2lvbiAyODYwMTEpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0TWFwTGlrZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgyLDcgKzgyLDcg
QEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6
OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJB
QkxFKEpTVGVzdE1hcExpa2VQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBs
YWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwog
ICAgIH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZN
JiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJv
dG90eXBlKQogICAgIHsKQEAgLTM2Niw5ICszNjYsOSBAQCBKU0M6Oklzb1N1YnNwYWNlKiBKU1Rl
c3RNYXBMaWtlOjpzdWJzcGFjCiAgICAgICAgIHJldHVybiBzcGFjZTsKICAgICBzdGF0aWNfYXNz
ZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdE1h
cExpa2U+IHx8ICFKU1Rlc3RNYXBMaWtlOjpuZWVkc0Rlc3RydWN0aW9uKTsKICAgICBpZiBjb25z
dGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVz
dE1hcExpa2U+KQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RNYXBMaWtlID0gbWFr
ZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1
Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmdldCgpLCBKU1Rlc3RNYXBMaWtlKTsKKyAgICAgICAg
c3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TWFwTGlrZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+
IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxs
VHlwZSgpLCBKU1Rlc3RNYXBMaWtlKTsKICAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNw
YWNlRm9yVGVzdE1hcExpa2UgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0Vf
SU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlLmdldCgpLCBKU1Rlc3RNYXBMaWtlKTsK
KyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TWFwTGlrZSA9IG1ha2VVbmlxdWU8SXNv
U3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUo
KSwgSlNUZXN0TWFwTGlrZSk7CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZv
clRlc3RNYXBMaWtlLmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1j
b2RlIikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRl
eDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE1hcExpa2VX
aXRoT3ZlcnJpZGRlbk9wZXJhdGlvbnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RNYXBMaWtlV2l0aE92ZXJyaWRkZW5PcGVy
YXRpb25zLmNwcAkocmV2aXNpb24gMjg2MDExKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdE1hcExpa2VXaXRoT3ZlcnJpZGRlbk9wZXJhdGlvbnMuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC04Niw3ICs4Niw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlND
OjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBT
VEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3RNYXBMaWtlV2l0aE92ZXJy
aWRkZW5PcGVyYXRpb25zUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFp
bk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAg
ICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYg
dm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3Rv
dHlwZSkKICAgICB7CkBAIC0zODAsOSArMzgwLDkgQEAgSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0
TWFwTGlrZVdpdGhPdmVycgogICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fzc2Vy
dChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RNYXBM
aWtlV2l0aE92ZXJyaWRkZW5PcGVyYXRpb25zPiB8fCAhSlNUZXN0TWFwTGlrZVdpdGhPdmVycmlk
ZGVuT3BlcmF0aW9uczo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3RleHByIChzdGQ6
OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RNYXBMaWtlV2l0
aE92ZXJyaWRkZW5PcGVyYXRpb25zPikKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0
TWFwTGlrZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9ucyA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+
IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxs
VHlwZS5nZXQoKSwgSlNUZXN0TWFwTGlrZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9ucyk7CisgICAg
ICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE1hcExpa2VXaXRoT3ZlcnJpZGRlbk9wZXJhdGlv
bnMgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2
bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0TWFwTGlrZVdpdGhPdmVy
cmlkZGVuT3BlcmF0aW9ucyk7CiAgICAgZWxzZQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZv
clRlc3RNYXBMaWtlV2l0aE92ZXJyaWRkZW5PcGVyYXRpb25zID0gbWFrZVVuaXF1ZTxJc29TdWJz
cGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZS5nZXQo
KSwgSlNUZXN0TWFwTGlrZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9ucyk7CisgICAgICAgIHNwYWNl
cy5tX3N1YnNwYWNlRm9yVGVzdE1hcExpa2VXaXRoT3ZlcnJpZGRlbk9wZXJhdGlvbnMgPSBtYWtl
VW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVh
cENlbGxUeXBlKCksIEpTVGVzdE1hcExpa2VXaXRoT3ZlcnJpZGRlbk9wZXJhdGlvbnMpOwogICAg
IGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TWFwTGlrZVdpdGhPdmVycmlk
ZGVuT3BlcmF0aW9ucy5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUt
Y29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEFu
ZEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJO
b0lkZW50aWZpZXIuY3BwCShyZXZpc2lvbiAyODYwMTEpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyTm9JZGVudGlm
aWVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjYsNyArNjYsNyBAQCBwdWJsaWM6CiAgICAgc3Rh
dGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAg
ICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0TmFtZWRBbmRJ
bmRleGVkU2V0dGVyTm9JZGVudGlmaWVyUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJu
ICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3Bh
Y2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUo
SlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1Zh
bHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC0zNDQsOSArMzQ0LDkgQEAgSlNDOjpJc29TdWJzcGFj
ZSogSlNUZXN0TmFtZWRBbmRJbmRleGVkUwogICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAgc3Rh
dGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBK
U1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXI+IHx8ICFKU1Rlc3ROYW1lZEFu
ZEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXI6Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNv
bnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNU
ZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyPikKLSAgICAgICAgc3BhY2VzLm1f
c3Vic3BhY2VGb3JUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyID0gbWFrZVVu
aXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3Rp
YmxlT2JqZWN0SGVhcENlbGxUeXBlLmdldCgpLCBKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJO
b0lkZW50aWZpZXIpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZEFuZElu
ZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXIgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VC
U1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwg
SlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyKTsKICAgICBlbHNlCi0gICAg
ICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlck5vSWRlbnRp
ZmllciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAs
IHZtLmNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlck5v
SWRlbnRpZmllcik7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkQW5kSW5k
ZXhlZFNldHRlck5vSWRlbnRpZmllciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJT
UEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0TmFtZWRBbmRJ
bmRleGVkU2V0dGVyTm9JZGVudGlmaWVyKTsKICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1
YnNwYWNlRm9yVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlck5vSWRlbnRpZmllci5nZXQoKTsKIElH
Tk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1Nf
QkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4
Y2VwdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uLmNw
cAkocmV2aXNpb24gMjg2MDExKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNjYsNyArNjYsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6
SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RB
VElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0
dGVyVGhyb3dpbmdFeGNlcHRpb25Qcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZt
LnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgp
OwogICAgIH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6
OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUg
cHJvdG90eXBlKQogICAgIHsKQEAgLTM0NCw5ICszNDQsOSBAQCBKU0M6Oklzb1N1YnNwYWNlKiBK
U1Rlc3ROYW1lZEFuZEluZGV4ZWRTCiAgICAgICAgIHJldHVybiBzcGFjZTsKICAgICBzdGF0aWNf
YXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVz
dE5hbWVkQW5kSW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uPiB8fCAhSlNUZXN0TmFtZWRB
bmRJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb246Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAg
IGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVj
dCwgSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24+KQotICAgICAg
ICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4
Y2VwdGlvbiA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhl
YXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNUZXN0TmFtZWRB
bmRJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24pOworICAgICAgICBzcGFjZXMubV9zdWJz
cGFjZUZvclRlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbiA9IG1ha2VV
bmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0
aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJUaHJv
d2luZ0V4Y2VwdGlvbik7CiAgICAgZWxzZQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRl
c3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbiA9IG1ha2VVbmlxdWU8SXNv
U3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUu
Z2V0KCksIEpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uKTsKKyAg
ICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyVGhyb3dp
bmdFeGNlcHRpb24gPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2
bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCksIEpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRl
clRocm93aW5nRXhjZXB0aW9uKTsKICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNl
Rm9yVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uLmdldCgpOwogSUdO
T1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKIElHTk9SRV9XQVJOSU5HU19C
RUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlcldpdGhJZGVudGlm
aWVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXIuY3BwCShyZXZp
c2lvbiAyODYwMTEpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXIuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC03NSw3ICs3NSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFj
ZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJU
X0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJXaXRoSWRl
bnRpZmllclByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RT
cGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAg
IHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6
OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAg
ICAgewpAQCAtNDAxLDkgKzQwMSw5IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdE5hbWVkQW5k
SW5kZXhlZFMKICAgICAgICAgcmV0dXJuIHNwYWNlOwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjpp
c19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0TmFtZWRBbmRJbmRl
eGVkU2V0dGVyV2l0aElkZW50aWZpZXI+IHx8ICFKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJX
aXRoSWRlbnRpZmllcjo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3RleHByIChzdGQ6
OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3ROYW1lZEFuZElu
ZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllcj4pCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9y
VGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyID0gbWFrZVVuaXF1ZTxJc29T
dWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0
SGVhcENlbGxUeXBlLmdldCgpLCBKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRp
Zmllcik7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkQW5kSW5kZXhlZFNl
dHRlcldpdGhJZGVudGlmaWVyID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNF
X0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCksIEpTVGVz
dE5hbWVkQW5kSW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyKTsKICAgICBlbHNlCi0gICAgICAg
IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlcldpdGhJZGVudGlm
aWVyID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwg
dm0uY2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0
aElkZW50aWZpZXIpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZEFuZElu
ZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19T
VUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0TmFtZWRB
bmRJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXIpOwogICAgIGF1dG8qIHNwYWNlID0gc3BhY2Vz
Lm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXIuZ2V0
KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dB
Uk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyTm9JZGVudGlmaWVy
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0TmFtZWREZWxldGVyTm9JZGVudGlmaWVyLmNwcAkocmV2aXNpb24gMjg2MDExKQor
KysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVs
ZXRlck5vSWRlbnRpZmllci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY1LDcgKzY1LDcgQEAgcHVi
bGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2
bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpT
VGVzdE5hbWVkRGVsZXRlck5vSWRlbnRpZmllclByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJl
dHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVj
dFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0
dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6
SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAtMjQ2LDkgKzI0Niw5IEBAIEpTQzo6SXNvU3Vi
c3BhY2UqIEpTVGVzdE5hbWVkRGVsZXRlck5vSWQKICAgICAgICAgcmV0dXJuIHNwYWNlOwogICAg
IHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVj
dCwgSlNUZXN0TmFtZWREZWxldGVyTm9JZGVudGlmaWVyPiB8fCAhSlNUZXN0TmFtZWREZWxldGVy
Tm9JZGVudGlmaWVyOjpuZWVkc0Rlc3RydWN0aW9uKTsKICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6
aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdE5hbWVkRGVsZXRl
ck5vSWRlbnRpZmllcj4pCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkRGVs
ZXRlck5vSWRlbnRpZmllciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9J
TklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNU
ZXN0TmFtZWREZWxldGVyTm9JZGVudGlmaWVyKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VG
b3JUZXN0TmFtZWREZWxldGVyTm9JZGVudGlmaWVyID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4g
SVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxU
eXBlKCksIEpTVGVzdE5hbWVkRGVsZXRlck5vSWRlbnRpZmllcik7CiAgICAgZWxzZQotICAgICAg
ICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZERlbGV0ZXJOb0lkZW50aWZpZXIgPSBtYWtl
VW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVh
cENlbGxUeXBlLmdldCgpLCBKU1Rlc3ROYW1lZERlbGV0ZXJOb0lkZW50aWZpZXIpOworICAgICAg
ICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZERlbGV0ZXJOb0lkZW50aWZpZXIgPSBtYWtl
VW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVh
cENlbGxUeXBlKCksIEpTVGVzdE5hbWVkRGVsZXRlck5vSWRlbnRpZmllcik7CiAgICAgYXV0byog
c3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZERlbGV0ZXJOb0lkZW50aWZpZXIu
Z2V0KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JF
X1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyVGhyb3dpbmdF
eGNlcHRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5jcHAJKHJldmlz
aW9uIDI4NjAxMSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3ROYW1lZERlbGV0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTY1LDcgKzY1LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJz
cGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NV
QlNQQUNFX1NIQVJBQkxFKEpTVGVzdE5hbWVkRGVsZXRlclRocm93aW5nRXhjZXB0aW9uUHJvdG90
eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAg
ICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6
U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC0yNDYs
OSArMjQ2LDkgQEAgSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0TmFtZWREZWxldGVyVGhybwogICAg
ICAgICByZXR1cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxK
U0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3ROYW1lZERlbGV0ZXJUaHJvd2luZ0V4Y2Vw
dGlvbj4gfHwgIUpTVGVzdE5hbWVkRGVsZXRlclRocm93aW5nRXhjZXB0aW9uOjpuZWVkc0Rlc3Ry
dWN0aW9uKTsKICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0
cnVjdGlibGVPYmplY3QsIEpTVGVzdE5hbWVkRGVsZXRlclRocm93aW5nRXhjZXB0aW9uPikKLSAg
ICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWREZWxldGVyVGhyb3dpbmdFeGNlcHRp
b24gPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2
bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVGVzdE5hbWVkRGVsZXRl
clRocm93aW5nRXhjZXB0aW9uKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFt
ZWREZWxldGVyVGhyb3dpbmdFeGNlcHRpb24gPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09f
U1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUo
KSwgSlNUZXN0TmFtZWREZWxldGVyVGhyb3dpbmdFeGNlcHRpb24pOwogICAgIGVsc2UKLSAgICAg
ICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWREZWxldGVyVGhyb3dpbmdFeGNlcHRpb24g
PSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5j
ZWxsSGVhcENlbGxUeXBlLmdldCgpLCBKU1Rlc3ROYW1lZERlbGV0ZXJUaHJvd2luZ0V4Y2VwdGlv
bik7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkRGVsZXRlclRocm93aW5n
RXhjZXB0aW9uID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0u
aGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3ROYW1lZERlbGV0ZXJUaHJvd2luZ0V4
Y2VwdGlvbik7CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1l
ZERlbGV0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigi
dW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1j
b21wYXJlIikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlcldpdGhJ
ZGVudGlmaWVyLmNwcAkocmV2aXNpb24gMjg2MDExKQorKysgU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlcldpdGhJZGVudGlmaWVyLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNzIsNyArNzIsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6
SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RB
VElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0TmFtZWREZWxldGVyV2l0aElk
ZW50aWZpZXJQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0
U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KICAg
ICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlND
OjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQog
ICAgIHsKQEAgLTI3MCw5ICsyNzAsOSBAQCBKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3ROYW1lZERl
bGV0ZXJXaXRoCiAgICAgICAgIHJldHVybiBzcGFjZTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6
aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdE5hbWVkRGVsZXRl
cldpdGhJZGVudGlmaWVyPiB8fCAhSlNUZXN0TmFtZWREZWxldGVyV2l0aElkZW50aWZpZXI6Om5l
ZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlND
OjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0TmFtZWREZWxldGVyV2l0aElkZW50aWZpZXI+
KQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRp
ZmllciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAs
IHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNUZXN0TmFtZWREZWxl
dGVyV2l0aElkZW50aWZpZXIpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1l
ZERlbGV0ZXJXaXRoSWRlbnRpZmllciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJT
UEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBK
U1Rlc3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllcik7CiAgICAgZWxzZQotICAgICAgICBzcGFj
ZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllciA9IG1ha2VVbmlx
dWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2Vs
bFR5cGUuZ2V0KCksIEpTVGVzdE5hbWVkRGVsZXRlcldpdGhJZGVudGlmaWVyKTsKKyAgICAgICAg
c3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWREZWxldGVyV2l0aElkZW50aWZpZXIgPSBtYWtl
VW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVh
cENlbGxUeXBlKCksIEpTVGVzdE5hbWVkRGVsZXRlcldpdGhJZGVudGlmaWVyKTsKICAgICBhdXRv
KiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkRGVsZXRlcldpdGhJZGVudGlm
aWVyLmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKIElH
Tk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRleDogU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlcldpdGhJ
bmRleGVkR2V0dGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyV2l0aEluZGV4ZWRHZXR0ZXIuY3BwCShy
ZXZpc2lvbiAyODYwMTEpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0TmFtZWREZWxldGVyV2l0aEluZGV4ZWRHZXR0ZXIuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC02Niw3ICs2Niw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSog
c3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lT
T19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSW5kZXhlZEdldHRlclBy
b3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAg
ICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBK
U0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAt
MjYyLDkgKzI2Miw5IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdE5hbWVkRGVsZXRlcldpdGgK
ICAgICAgICAgcmV0dXJuIHNwYWNlOwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29m
X3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0TmFtZWREZWxldGVyV2l0aEluZGV4
ZWRHZXR0ZXI+IHx8ICFKU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSW5kZXhlZEdldHRlcjo6bmVlZHNE
ZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpT
RGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSW5kZXhlZEdldHRlcj4p
Ci0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkRGVsZXRlcldpdGhJbmRleGVk
R2V0dGVyID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVh
cCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmdldCgpLCBKU1Rlc3ROYW1lZERl
bGV0ZXJXaXRoSW5kZXhlZEdldHRlcik7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVz
dE5hbWVkRGVsZXRlcldpdGhJbmRleGVkR2V0dGVyID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4g
SVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxU
eXBlKCksIEpTVGVzdE5hbWVkRGVsZXRlcldpdGhJbmRleGVkR2V0dGVyKTsKICAgICBlbHNlCi0g
ICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkRGVsZXRlcldpdGhJbmRleGVkR2V0
dGVyID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwg
dm0uY2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNUZXN0TmFtZWREZWxldGVyV2l0aEluZGV4ZWRH
ZXR0ZXIpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZERlbGV0ZXJXaXRo
SW5kZXhlZEdldHRlciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklU
KHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0TmFtZWREZWxldGVyV2l0aElu
ZGV4ZWRHZXR0ZXIpOwogICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0
TmFtZWREZWxldGVyV2l0aEluZGV4ZWRHZXR0ZXIuZ2V0KCk7CiBJR05PUkVfV0FSTklOR1NfQkVH
SU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2lj
YWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0TmFtZWRHZXR0ZXJDYWxsV2l0aC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkR2V0dGVyQ2FsbFdpdGgu
Y3BwCShyZXZpc2lvbiAyODYwMTEpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0TmFtZWRHZXR0ZXJDYWxsV2l0aC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTY1LDcgKzY1LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJz
cGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NV
QlNQQUNFX1NIQVJBQkxFKEpTVGVzdE5hbWVkR2V0dGVyQ2FsbFdpdGhQcm90b3R5cGUsIEJhc2Up
OwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAm
dm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUq
IGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKQEAgLTIyMCw5ICsyMjAsOSBA
QCBKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3ROYW1lZEdldHRlckNhbGxXCiAgICAgICAgIHJldHVy
biBzcGFjZTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0
cnVjdGlibGVPYmplY3QsIEpTVGVzdE5hbWVkR2V0dGVyQ2FsbFdpdGg+IHx8ICFKU1Rlc3ROYW1l
ZEdldHRlckNhbGxXaXRoOjpuZWVkc0Rlc3RydWN0aW9uKTsKICAgICBpZiBjb25zdGV4cHIgKHN0
ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdE5hbWVkR2V0
dGVyQ2FsbFdpdGg+KQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZEdldHRl
ckNhbGxXaXRoID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0u
aGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmdldCgpLCBKU1Rlc3ROYW1l
ZEdldHRlckNhbGxXaXRoKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRH
ZXR0ZXJDYWxsV2l0aCA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklU
KHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3ROYW1l
ZEdldHRlckNhbGxXaXRoKTsKICAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9y
VGVzdE5hbWVkR2V0dGVyQ2FsbFdpdGggPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VC
U1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlLmdldCgpLCBKU1Rlc3ROYW1l
ZEdldHRlckNhbGxXaXRoKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRH
ZXR0ZXJDYWxsV2l0aCA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklU
KHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0TmFtZWRHZXR0ZXJDYWxsV2l0
aCk7CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZEdldHRl
ckNhbGxXaXRoLmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2Rl
IikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRleDog
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkR2V0dGVy
Tm9JZGVudGlmaWVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRHZXR0ZXJOb0lkZW50aWZpZXIuY3BwCShyZXZpc2lv
biAyODYwMTEpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0TmFtZWRHZXR0ZXJOb0lkZW50aWZpZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NSw3ICs2
NSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3Io
SlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9T
SEFSQUJMRShKU1Rlc3ROYW1lZEdldHRlck5vSWRlbnRpZmllclByb3RvdHlwZSwgQmFzZSk7Ci0g
ICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5w
bGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3Jl
YXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAtMjIwLDkgKzIyMCw5IEBAIEpT
Qzo6SXNvU3Vic3BhY2UqIEpTVGVzdE5hbWVkR2V0dGVyTm9JZGUKICAgICAgICAgcmV0dXJuIHNw
YWNlOwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0
aWJsZU9iamVjdCwgSlNUZXN0TmFtZWRHZXR0ZXJOb0lkZW50aWZpZXI+IHx8ICFKU1Rlc3ROYW1l
ZEdldHRlck5vSWRlbnRpZmllcjo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3RleHBy
IChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3ROYW1l
ZEdldHRlck5vSWRlbnRpZmllcj4pCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5h
bWVkR2V0dGVyTm9JZGVudGlmaWVyID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQ
QUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmdldCgp
LCBKU1Rlc3ROYW1lZEdldHRlck5vSWRlbnRpZmllcik7CisgICAgICAgIHNwYWNlcy5tX3N1YnNw
YWNlRm9yVGVzdE5hbWVkR2V0dGVyTm9JZGVudGlmaWVyID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFj
ZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENl
bGxUeXBlKCksIEpTVGVzdE5hbWVkR2V0dGVyTm9JZGVudGlmaWVyKTsKICAgICBlbHNlCi0gICAg
ICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkR2V0dGVyTm9JZGVudGlmaWVyID0gbWFr
ZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhl
YXBDZWxsVHlwZS5nZXQoKSwgSlNUZXN0TmFtZWRHZXR0ZXJOb0lkZW50aWZpZXIpOworICAgICAg
ICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZEdldHRlck5vSWRlbnRpZmllciA9IG1ha2VV
bmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFw
Q2VsbFR5cGUoKSwgSlNUZXN0TmFtZWRHZXR0ZXJOb0lkZW50aWZpZXIpOwogICAgIGF1dG8qIHNw
YWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRHZXR0ZXJOb0lkZW50aWZpZXIuZ2V0
KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dB
Uk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRHZXR0ZXJXaXRoSWRlbnRpZmll
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdE5hbWVkR2V0dGVyV2l0aElkZW50aWZpZXIuY3BwCShyZXZpc2lvbiAyODYwMTEp
CisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRH
ZXR0ZXJXaXRoSWRlbnRpZmllci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcwLDcgKzcwLDcgQEAg
cHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZN
JiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxF
KEpTVGVzdE5hbWVkR2V0dGVyV2l0aElkZW50aWZpZXJQcm90b3R5cGUsIEJhc2UpOwotICAgICAg
ICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5P
YmplY3RTcGFjZSgpOwogICAgIH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0
cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBK
U0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKQEAgLTI0Niw5ICsyNDYsOSBAQCBKU0M6Oklz
b1N1YnNwYWNlKiBKU1Rlc3ROYW1lZEdldHRlcldpdGhJCiAgICAgICAgIHJldHVybiBzcGFjZTsK
ICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVP
YmplY3QsIEpTVGVzdE5hbWVkR2V0dGVyV2l0aElkZW50aWZpZXI+IHx8ICFKU1Rlc3ROYW1lZEdl
dHRlcldpdGhJZGVudGlmaWVyOjpuZWVkc0Rlc3RydWN0aW9uKTsKICAgICBpZiBjb25zdGV4cHIg
KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdE5hbWVk
R2V0dGVyV2l0aElkZW50aWZpZXI+KQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RO
YW1lZEdldHRlcldpdGhJZGVudGlmaWVyID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NV
QlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmdl
dCgpLCBKU1Rlc3ROYW1lZEdldHRlcldpdGhJZGVudGlmaWVyKTsKKyAgICAgICAgc3BhY2VzLm1f
c3Vic3BhY2VGb3JUZXN0TmFtZWRHZXR0ZXJXaXRoSWRlbnRpZmllciA9IG1ha2VVbmlxdWU8SXNv
U3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVj
dEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3ROYW1lZEdldHRlcldpdGhJZGVudGlmaWVyKTsKICAgICBl
bHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkR2V0dGVyV2l0aElkZW50
aWZpZXIgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFw
LCB2bS5jZWxsSGVhcENlbGxUeXBlLmdldCgpLCBKU1Rlc3ROYW1lZEdldHRlcldpdGhJZGVudGlm
aWVyKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRHZXR0ZXJXaXRoSWRl
bnRpZmllciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhl
YXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0TmFtZWRHZXR0ZXJXaXRoSWRlbnRpZmll
cik7CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZEdldHRl
cldpdGhJZGVudGlmaWVyLmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJs
ZS1jb2RlIikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJ
bmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVk
U2V0dGVyTm9JZGVudGlmaWVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJOb0lkZW50aWZpZXIuY3BwCShy
ZXZpc2lvbiAyODYwMTEpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0TmFtZWRTZXR0ZXJOb0lkZW50aWZpZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02
NSw3ICs2NSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3Bh
Y2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJT
UEFDRV9TSEFSQUJMRShKU1Rlc3ROYW1lZFNldHRlck5vSWRlbnRpZmllclByb3RvdHlwZSwgQmFz
ZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJu
ICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVy
ZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAtMzAwLDkgKzMwMCw5
IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdE5hbWVkU2V0dGVyTm9JZGUKICAgICAgICAgcmV0
dXJuIHNwYWNlOwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rl
c3RydWN0aWJsZU9iamVjdCwgSlNUZXN0TmFtZWRTZXR0ZXJOb0lkZW50aWZpZXI+IHx8ICFKU1Rl
c3ROYW1lZFNldHRlck5vSWRlbnRpZmllcjo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgaWYgY29u
c3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rl
c3ROYW1lZFNldHRlck5vSWRlbnRpZmllcj4pCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9y
VGVzdE5hbWVkU2V0dGVyTm9JZGVudGlmaWVyID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNP
X1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBl
LmdldCgpLCBKU1Rlc3ROYW1lZFNldHRlck5vSWRlbnRpZmllcik7CisgICAgICAgIHNwYWNlcy5t
X3N1YnNwYWNlRm9yVGVzdE5hbWVkU2V0dGVyTm9JZGVudGlmaWVyID0gbWFrZVVuaXF1ZTxJc29T
dWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0
SGVhcENlbGxUeXBlKCksIEpTVGVzdE5hbWVkU2V0dGVyTm9JZGVudGlmaWVyKTsKICAgICBlbHNl
Ci0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkU2V0dGVyTm9JZGVudGlmaWVy
ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0u
Y2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNUZXN0TmFtZWRTZXR0ZXJOb0lkZW50aWZpZXIpOwor
ICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZFNldHRlck5vSWRlbnRpZmllciA9
IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNl
bGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0TmFtZWRTZXR0ZXJOb0lkZW50aWZpZXIpOwogICAgIGF1
dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRTZXR0ZXJOb0lkZW50aWZp
ZXIuZ2V0KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdO
T1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJUaHJvd2lu
Z0V4Y2VwdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24uY3BwCShyZXZp
c2lvbiAyODYwMTEpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0TmFtZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTY1LDcgKzY1LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJz
cGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NV
QlNQQUNFX1NIQVJBQkxFKEpTVGVzdE5hbWVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb25Qcm90b3R5
cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAg
IHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KICAgICBzdGF0aWMgSlNDOjpT
dHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKQEAgLTMwMCw5
ICszMDAsOSBAQCBKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3ROYW1lZFNldHRlclRocm93CiAgICAg
ICAgIHJldHVybiBzcGFjZTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpT
Qzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdE5hbWVkU2V0dGVyVGhyb3dpbmdFeGNlcHRp
b24+IHx8ICFKU1Rlc3ROYW1lZFNldHRlclRocm93aW5nRXhjZXB0aW9uOjpuZWVkc0Rlc3RydWN0
aW9uKTsKICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVj
dGlibGVPYmplY3QsIEpTVGVzdE5hbWVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24+KQotICAgICAg
ICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZFNldHRlclRocm93aW5nRXhjZXB0aW9uID0g
bWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVz
dHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmdldCgpLCBKU1Rlc3ROYW1lZFNldHRlclRocm93
aW5nRXhjZXB0aW9uKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRTZXR0
ZXJUaHJvd2luZ0V4Y2VwdGlvbiA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFD
RV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBKU1Rl
c3ROYW1lZFNldHRlclRocm93aW5nRXhjZXB0aW9uKTsKICAgICBlbHNlCi0gICAgICAgIHNwYWNl
cy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24gPSBtYWtlVW5p
cXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENl
bGxUeXBlLmdldCgpLCBKU1Rlc3ROYW1lZFNldHRlclRocm93aW5nRXhjZXB0aW9uKTsKKyAgICAg
ICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbiA9
IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNl
bGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0TmFtZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbik7CiAg
ICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZFNldHRlclRocm93
aW5nRXhjZXB0aW9uLmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1j
b2RlIikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRl
eDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0
dGVyV2l0aElkZW50aWZpZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhJZGVudGlmaWVyLmNwcAko
cmV2aXNpb24gMjg2MDExKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aElkZW50aWZpZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC03Miw3ICs3Miw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vi
c3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19T
VUJTUEFDRV9TSEFSQUJMRShKU1Rlc3ROYW1lZFNldHRlcldpdGhJZGVudGlmaWVyUHJvdG90eXBl
LCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICBy
ZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3Ry
dWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC0zMzEsOSAr
MzMxLDkgQEAgSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSQogICAgICAg
ICByZXR1cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6
OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3ROYW1lZFNldHRlcldpdGhJZGVudGlmaWVyPiB8
fCAhSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmllcjo6bmVlZHNEZXN0cnVjdGlvbik7CiAg
ICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2Jq
ZWN0LCBKU1Rlc3ROYW1lZFNldHRlcldpdGhJZGVudGlmaWVyPikKLSAgICAgICAgc3BhY2VzLm1f
c3Vic3BhY2VGb3JUZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmllciA9IG1ha2VVbmlxdWU8SXNv
U3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVj
dEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmllcik7Cisg
ICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkU2V0dGVyV2l0aElkZW50aWZpZXIg
PSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5k
ZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSWRl
bnRpZmllcik7CiAgICAgZWxzZQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1l
ZFNldHRlcldpdGhJZGVudGlmaWVyID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQ
QUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNUZXN0TmFtZWRT
ZXR0ZXJXaXRoSWRlbnRpZmllcik7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5h
bWVkU2V0dGVyV2l0aElkZW50aWZpZXIgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VC
U1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCksIEpTVGVzdE5hbWVkU2V0
dGVyV2l0aElkZW50aWZpZXIpOwogICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VG
b3JUZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmllci5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19C
RUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9n
aWNhbC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0
ZXJXaXRoSW5kZXhlZEdldHRlci5jcHAJKHJldmlzaW9uIDI4NjAxMSkKKysrIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVk
R2V0dGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzUsNyArNzUsNyBAQCBwdWJsaWM6CiAgICAg
c3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsK
ICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0TmFtZWRT
ZXR0ZXJXaXRoSW5kZXhlZEdldHRlclByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAm
dm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNl
KCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpT
Qzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1
ZSBwcm90b3R5cGUpCiAgICAgewpAQCAtMzc4LDkgKzM3OCw5IEBAIEpTQzo6SXNvU3Vic3BhY2Uq
IEpTVGVzdE5hbWVkU2V0dGVyV2l0aEkKICAgICAgICAgcmV0dXJuIHNwYWNlOwogICAgIHN0YXRp
Y19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNU
ZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlcj4gfHwgIUpTVGVzdE5hbWVkU2V0dGVyV2l0
aEluZGV4ZWRHZXR0ZXI6Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhwciAoc3Rk
Ojppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0TmFtZWRTZXR0
ZXJXaXRoSW5kZXhlZEdldHRlcj4pCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5h
bWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXIgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09f
U1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUu
Z2V0KCksIEpTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXIpOworICAgICAgICBzcGFj
ZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyID0gbWFrZVVu
aXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3Rp
YmxlT2JqZWN0SGVhcENlbGxUeXBlKCksIEpTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0
ZXIpOwogICAgIGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRTZXR0
ZXJXaXRoSW5kZXhlZEdldHRlciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFD
RV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVGVzdE5hbWVkU2V0
dGVyV2l0aEluZGV4ZWRHZXR0ZXIpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RO
YW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNP
X1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3ROYW1l
ZFNldHRlcldpdGhJbmRleGVkR2V0dGVyKTsKICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1
YnNwYWNlRm9yVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXIuZ2V0KCk7CiBJR05PUkVf
V0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lO
KCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlckFuZFNldHRl
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0ZXIuY3BwCShyZXZp
c2lvbiAyODYwMTEpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlckFuZFNldHRlci5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTc1LDcgKzc1LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNw
YWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NF
UlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0
ZXJBbmRTZXR0ZXJQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2Jq
ZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0K
ICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwg
SlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBl
KQogICAgIHsKQEAgLTQyOCw5ICs0MjgsOSBAQCBKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3ROYW1l
ZFNldHRlcldpdGhJCiAgICAgICAgIHJldHVybiBzcGFjZTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0
ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdE5hbWVkU2V0
dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0ZXI+IHx8ICFKU1Rlc3ROYW1lZFNldHRlcldpdGhJ
bmRleGVkR2V0dGVyQW5kU2V0dGVyOjpuZWVkc0Rlc3RydWN0aW9uKTsKICAgICBpZiBjb25zdGV4
cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdE5h
bWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0ZXI+KQotICAgICAgICBzcGFjZXMubV9z
dWJzcGFjZUZvclRlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQW5kU2V0dGVyID0gbWFr
ZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1
Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmdldCgpLCBKU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRl
eGVkR2V0dGVyQW5kU2V0dGVyKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFt
ZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlckFuZFNldHRlciA9IG1ha2VVbmlxdWU8SXNvU3Vic3Bh
Y2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBD
ZWxsVHlwZSgpLCBKU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQW5kU2V0dGVyKTsK
ICAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkU2V0dGVyV2l0
aEluZGV4ZWRHZXR0ZXJBbmRTZXR0ZXIgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VC
U1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlLmdldCgpLCBKU1Rlc3ROYW1l
ZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQW5kU2V0dGVyKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vi
c3BhY2VGb3JUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlckFuZFNldHRlciA9IG1ha2VV
bmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFw
Q2VsbFR5cGUoKSwgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlckFuZFNldHRlcik7
CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZFNldHRlcldp
dGhJbmRleGVkR2V0dGVyQW5kU2V0dGVyLmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1
bnJlYWNoYWJsZS1jb2RlIikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNv
bXBhcmUiKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNl
dHRlcldpdGhMZWdhY3lPdmVycmlkZUJ1aWx0SW5zLmNwcAkocmV2aXNpb24gMjg2MDExKQorKysg
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVy
V2l0aExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NSw3ICs2
NSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3Io
SlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9T
SEFSQUJMRShKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lPdmVycmlkZUJ1aWx0SW5zUHJvdG90
eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAg
ICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6
U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC0yNzcs
OSArMjc3LDkgQEAgSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTAogICAg
ICAgICByZXR1cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxK
U0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lPdmVy
cmlkZUJ1aWx0SW5zPiB8fCAhSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5T3ZlcnJpZGVCdWls
dEluczo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vf
b2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdh
Y3lPdmVycmlkZUJ1aWx0SW5zPikKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFt
ZWRTZXR0ZXJXaXRoTGVnYWN5T3ZlcnJpZGVCdWlsdElucyA9IG1ha2VVbmlxdWU8SXNvU3Vic3Bh
Y2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBD
ZWxsVHlwZS5nZXQoKSwgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5T3ZlcnJpZGVCdWlsdElu
cyk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2Fj
eU92ZXJyaWRlQnVpbHRJbnMgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0Vf
SU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0
TmFtZWRTZXR0ZXJXaXRoTGVnYWN5T3ZlcnJpZGVCdWlsdElucyk7CiAgICAgZWxzZQotICAgICAg
ICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lPdmVycmlkZUJ1
aWx0SW5zID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVh
cCwgdm0uY2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5
T3ZlcnJpZGVCdWlsdElucyk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVk
U2V0dGVyV2l0aExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNl
PiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCksIEpTVGVz
dE5hbWVkU2V0dGVyV2l0aExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMpOwogICAgIGF1dG8qIHNwYWNl
ID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5T3ZlcnJpZGVC
dWlsdElucy5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIp
CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldp
dGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdh
Y3lVbmZvcmdlYWJsZVByb3BlcnRpZXMuY3BwCShyZXZpc2lvbiAyODYwMTEpCisrKyBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVn
YWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzQsNyArNzQs
NyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpT
Qzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hB
UkFCTEUoSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzUHJv
dG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAg
ICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpT
Qzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC0z
NjEsOSArMzYxLDkgQEAgSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTAog
ICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2Zf
djxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lV
bmZvcmdlYWJsZVByb3BlcnRpZXM+IHx8ICFKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZv
cmdlYWJsZVByb3BlcnRpZXM6Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhwciAo
c3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0TmFtZWRT
ZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzPikKLSAgICAgICAgc3BhY2VzLm1f
c3Vic3BhY2VGb3JUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVz
ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0u
ZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmdldCgpLCBKU1Rlc3ROYW1lZFNldHRlcldp
dGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXMpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFj
ZUZvclRlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXMgPSBtYWtl
VW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVj
dGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5m
b3JnZWFibGVQcm9wZXJ0aWVzKTsKICAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNl
Rm9yVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllcyA9IG1ha2VV
bmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFw
Q2VsbFR5cGUuZ2V0KCksIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJv
cGVydGllcyk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkU2V0dGVyV2l0
aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllcyA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElT
T19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0TmFt
ZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzKTsKICAgICBhdXRvKiBzcGFj
ZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2Vh
YmxlUHJvcGVydGllcy5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUt
Y29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNl
dHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0
SW5zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5k
TGVnYWN5T3ZlcnJpZGVCdWlsdElucy5jcHAJKHJldmlzaW9uIDI4NjAxMSkKKysrIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdh
Y3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNzQsNyArNzQsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNv
U3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElD
X0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5
VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdEluc1Byb3RvdHlwZSwg
QmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0
dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVj
dHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAtMzM4LDkgKzMz
OCw5IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdE5hbWVkU2V0dGVyV2l0aEwKICAgICAgICAg
cmV0dXJuIHNwYWNlOwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpK
U0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFi
bGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdElucz4gfHwgIUpTVGVzdE5hbWVkU2V0
dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJ
bnM6Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29m
X3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5
VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdElucz4pCi0gICAgICAg
IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxl
UHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMgPSBtYWtlVW5pcXVlPElzb1N1YnNw
YWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFw
Q2VsbFR5cGUuZ2V0KCksIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJv
cGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMpOworICAgICAgICBzcGFjZXMubV9zdWJz
cGFjZUZvclRlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRM
ZWdhY3lPdmVycmlkZUJ1aWx0SW5zID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQ
QUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCksIEpT
VGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92
ZXJyaWRlQnVpbHRJbnMpOwogICAgIGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JU
ZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3Zl
cnJpZGVCdWlsdElucyA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklU
KHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVGVzdE5hbWVkU2V0dGVyV2l0
aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMpOwor
ICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZv
cmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zID0gbWFrZVVuaXF1ZTxJ
c29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlw
ZSgpLCBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRM
ZWdhY3lPdmVycmlkZUJ1aWx0SW5zKTsKICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNw
YWNlRm9yVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExl
Z2FjeU92ZXJyaWRlQnVpbHRJbnMuZ2V0KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVh
Y2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFy
ZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
TmFtZXNwYWNlT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZXNwYWNlT2JqZWN0LmNwcAkocmV2aXNpb24gMjg2
MDExKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5h
bWVzcGFjZU9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4MCw5ICsyODAsOSBAQCBKU0M6
Oklzb1N1YnNwYWNlKiBKU1Rlc3ROYW1lc3BhY2VPYmplY3Q6CiAgICAgICAgIHJldHVybiBzcGFj
ZTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGli
bGVPYmplY3QsIEpTVGVzdE5hbWVzcGFjZU9iamVjdD4gfHwgIUpTVGVzdE5hbWVzcGFjZU9iamVj
dDo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2Zf
djxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3ROYW1lc3BhY2VPYmplY3Q+KQotICAg
ICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lc3BhY2VPYmplY3QgPSBtYWtlVW5pcXVl
PElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVP
YmplY3RIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVGVzdE5hbWVzcGFjZU9iamVjdCk7CisgICAgICAg
IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVzcGFjZU9iamVjdCA9IG1ha2VVbmlxdWU8SXNv
U3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVj
dEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3ROYW1lc3BhY2VPYmplY3QpOwogICAgIGVsc2UKLSAgICAg
ICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZXNwYWNlT2JqZWN0ID0gbWFrZVVuaXF1ZTxJ
c29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlw
ZS5nZXQoKSwgSlNUZXN0TmFtZXNwYWNlT2JqZWN0KTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3Bh
Y2VGb3JUZXN0TmFtZXNwYWNlT2JqZWN0ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NV
QlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3ROYW1lc3Bh
Y2VPYmplY3QpOwogICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFt
ZXNwYWNlT2JqZWN0LmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1j
b2RlIikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRl
eDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5vZGUuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3ROb2RlLmNwcAkocmV2aXNpb24gMjg2MDExKQorKysgU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5vZGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05NSw3
ICs5NSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VG
b3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFD
RV9TSEFSQUJMRShKU1Rlc3ROb2RlUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2
bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2Uo
KTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlND
OjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVl
IHByb3RvdHlwZSkKICAgICB7CkBAIC00MDUsOSArNDA1LDkgQEAgcHVibGljOgogICAgICAgICAg
ICAgcmV0dXJuIHNwYWNlOwogICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92
PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIFRlc3ROb2RlSXRlcmF0b3I+IHx8ICFUZXN0Tm9k
ZUl0ZXJhdG9yOjpuZWVkc0Rlc3RydWN0aW9uKTsKICAgICAgICAgaWYgY29uc3RleHByIChzdGQ6
OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBUZXN0Tm9kZUl0ZXJhdG9y
PikKLSAgICAgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5vZGVJdGVyYXRvciA9IG1h
a2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3Ry
dWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5nZXQoKSwgVGVzdE5vZGVJdGVyYXRvcik7CisgICAg
ICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROb2RlSXRlcmF0b3IgPSBtYWtlVW5pcXVl
PElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVP
YmplY3RIZWFwQ2VsbFR5cGUoKSwgVGVzdE5vZGVJdGVyYXRvcik7CiAgICAgICAgIGVsc2UKLSAg
ICAgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5vZGVJdGVyYXRvciA9IG1ha2VVbmlx
dWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2Vs
bFR5cGUuZ2V0KCksIFRlc3ROb2RlSXRlcmF0b3IpOworICAgICAgICAgICAgc3BhY2VzLm1fc3Vi
c3BhY2VGb3JUZXN0Tm9kZUl0ZXJhdG9yID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NV
QlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBUZXN0Tm9kZUl0ZXJh
dG9yKTsKICAgICAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROb2Rl
SXRlcmF0b3IuZ2V0KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUi
KQogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkBAIC00OTcs
OSArNDk3LDkgQEAgSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0Tm9kZTo6c3Vic3BhY2VGbwogICAg
ICAgICByZXR1cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxK
U0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3ROb2RlPiB8fCAhSlNUZXN0Tm9kZTo6bmVl
ZHNEZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6
OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3ROb2RlPikKLSAgICAgICAgc3BhY2VzLm1fc3Vi
c3BhY2VGb3JUZXN0Tm9kZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9J
TklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNU
ZXN0Tm9kZSk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5vZGUgPSBtYWtlVW5p
cXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGli
bGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0Tm9kZSk7CiAgICAgZWxzZQotICAgICAgICBz
cGFjZXMubV9zdWJzcGFjZUZvclRlc3ROb2RlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNP
X1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNUZXN0
Tm9kZSk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5vZGUgPSBtYWtlVW5pcXVl
PElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxU
eXBlKCksIEpTVGVzdE5vZGUpOwogICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VG
b3JUZXN0Tm9kZS5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29k
ZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RPYmouY3BwCShyZXZpc2lvbiAyODYwMTEpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTg2Niw3ICsx
ODY2LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZv
cihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNF
X1NIQVJBQkxFKEpTVGVzdE9ialByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0u
cGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7
CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6
Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBw
cm90b3R5cGUpCiAgICAgewpAQCAtOTAwNiw5ICs5MDA2LDkgQEAgSlNDOjpJc29TdWJzcGFjZSog
SlNUZXN0T2JqOjpzdWJzcGFjZUZvcgogICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAgc3RhdGlj
X2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rl
c3RPYmo+IHx8ICFKU1Rlc3RPYmo6Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhw
ciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0T2Jq
PikKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0T2JqID0gbWFrZVVuaXF1ZTxJc29T
dWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0
SGVhcENlbGxUeXBlLmdldCgpLCBKU1Rlc3RPYmopOworICAgICAgICBzcGFjZXMubV9zdWJzcGFj
ZUZvclRlc3RPYmogPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2
bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0T2JqKTsK
ICAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE9iaiA9IG1ha2VVbmlx
dWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2Vs
bFR5cGUuZ2V0KCksIEpTVGVzdE9iaik7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVz
dE9iaiA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAs
IHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0T2JqKTsKICAgICBhdXRvKiBzcGFjZSA9IHNw
YWNlcy5tX3N1YnNwYWNlRm9yVGVzdE9iai5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigi
dW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1j
b21wYXJlIikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RPcGVyYXRpb25Db25kaXRpb25hbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9wZXJhdGlvbkNvbmRpdGlvbmFsLmNw
cAkocmV2aXNpb24gMjg2MDExKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdE9wZXJhdGlvbkNvbmRpdGlvbmFsLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
ODEsNyArODEsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNw
YWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VC
U1BBQ0VfU0hBUkFCTEUoSlNUZXN0T3BlcmF0aW9uQ29uZGl0aW9uYWxQcm90b3R5cGUsIEJhc2Up
OwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAm
dm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUq
IGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKQEAgLTIzNCw5ICsyMzQsOSBA
QCBKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3RPcGVyYXRpb25Db25kaXRpCiAgICAgICAgIHJldHVy
biBzcGFjZTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0
cnVjdGlibGVPYmplY3QsIEpTVGVzdE9wZXJhdGlvbkNvbmRpdGlvbmFsPiB8fCAhSlNUZXN0T3Bl
cmF0aW9uQ29uZGl0aW9uYWw6Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhwciAo
c3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0T3BlcmF0
aW9uQ29uZGl0aW9uYWw+KQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RPcGVyYXRp
b25Db25kaXRpb25hbCA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklU
KHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNUZXN0
T3BlcmF0aW9uQ29uZGl0aW9uYWwpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RP
cGVyYXRpb25Db25kaXRpb25hbCA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFD
RV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBKU1Rl
c3RPcGVyYXRpb25Db25kaXRpb25hbCk7CiAgICAgZWxzZQotICAgICAgICBzcGFjZXMubV9zdWJz
cGFjZUZvclRlc3RPcGVyYXRpb25Db25kaXRpb25hbCA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+
IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEpT
VGVzdE9wZXJhdGlvbkNvbmRpdGlvbmFsKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JU
ZXN0T3BlcmF0aW9uQ29uZGl0aW9uYWwgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VC
U1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCksIEpTVGVzdE9wZXJhdGlv
bkNvbmRpdGlvbmFsKTsKICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVz
dE9wZXJhdGlvbkNvbmRpdGlvbmFsLmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJl
YWNoYWJsZS1jb2RlIikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBh
cmUiKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmNw
cAkocmV2aXNpb24gMjg2MDExKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC02OSw3ICs2OSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vi
c3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19T
VUJTUEFDRV9TSEFSQUJMRShKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzUHJvdG90eXBlLCBC
YXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1
cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0
dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC0yOTUsOSArMjk1
LDkgQEAgSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0T3ZlcmxvYWRlZENvbnN0cgogICAgICAgICBy
ZXR1cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpT
RGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzPiB8fCAhSlNU
ZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgaWYgY29u
c3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rl
c3RPdmVybG9hZGVkQ29uc3RydWN0b3JzPikKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JU
ZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19T
VUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5n
ZXQoKSwgSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyk7CisgICAgICAgIHNwYWNlcy5tX3N1
YnNwYWNlRm9yVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMgPSBtYWtlVW5pcXVlPElzb1N1YnNw
YWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFw
Q2VsbFR5cGUoKSwgSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyk7CiAgICAgZWxzZQotICAg
ICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzID0gbWFr
ZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhl
YXBDZWxsVHlwZS5nZXQoKSwgSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyk7CisgICAgICAg
IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMgPSBtYWtlVW5p
cXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENl
bGxUeXBlKCksIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMpOwogICAgIGF1dG8qIHNwYWNl
ID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5nZXQoKTsK
IElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklO
R1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzV2l0aFNl
cXVlbmNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5jZS5jcHAJKHJl
dmlzaW9uIDI4NjAxMSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzV2l0aFNlcXVlbmNlLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNjgsNyArNjgsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3Bh
Y2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VS
VF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dpdGhT
ZXF1ZW5jZVByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RT
cGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAg
IHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6
OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAg
ICAgewpAQCAtMjM4LDkgKzIzOCw5IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdE92ZXJsb2Fk
ZWRDb25zdHIKICAgICAgICAgcmV0dXJuIHNwYWNlOwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjpp
c19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0T3ZlcmxvYWRlZENv
bnN0cnVjdG9yc1dpdGhTZXF1ZW5jZT4gfHwgIUpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNX
aXRoU2VxdWVuY2U6Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjpp
c19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0T3ZlcmxvYWRlZENv
bnN0cnVjdG9yc1dpdGhTZXF1ZW5jZT4pCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVz
dE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2UgPSBtYWtlVW5pcXVlPElzb1N1YnNw
YWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFw
Q2VsbFR5cGUuZ2V0KCksIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2Up
OworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3Jz
V2l0aFNlcXVlbmNlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQo
dm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCksIEpTVGVzdE92ZXJs
b2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2UpOwogICAgIGVsc2UKLSAgICAgICAgc3BhY2Vz
Lm1fc3Vic3BhY2VGb3JUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5jZSA9IG1h
a2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxI
ZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVu
Y2UpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RPdmVybG9hZGVkQ29uc3RydWN0
b3JzV2l0aFNlcXVlbmNlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lO
SVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RPdmVybG9hZGVkQ29uc3Ry
dWN0b3JzV2l0aFNlcXVlbmNlKTsKICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNl
Rm9yVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2UuZ2V0KCk7CiBJR05PUkVf
V0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lO
KCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0UGx1Z2luSW50ZXJmYWNlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0UGx1Z2luSW50ZXJm
YWNlLmNwcAkocmV2aXNpb24gMjg2MDExKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdFBsdWdpbkludGVyZmFjZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTY0LDcgKzY0LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJz
cGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NV
QlNQQUNFX1NIQVJBQkxFKEpTVGVzdFBsdWdpbkludGVyZmFjZVByb3RvdHlwZSwgQmFzZSk7Ci0g
ICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5w
bGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3Jl
YXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAtMjQ0LDkgKzI0NCw5IEBAIEpT
Qzo6SXNvU3Vic3BhY2UqIEpTVGVzdFBsdWdpbkludGVyZmFjZToKICAgICAgICAgcmV0dXJuIHNw
YWNlOwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0
aWJsZU9iamVjdCwgSlNUZXN0UGx1Z2luSW50ZXJmYWNlPiB8fCAhSlNUZXN0UGx1Z2luSW50ZXJm
YWNlOjpuZWVkc0Rlc3RydWN0aW9uKTsKICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9v
Zl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdFBsdWdpbkludGVyZmFjZT4pCi0g
ICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFBsdWdpbkludGVyZmFjZSA9IG1ha2VVbmlx
dWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJs
ZU9iamVjdEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNUZXN0UGx1Z2luSW50ZXJmYWNlKTsKKyAgICAg
ICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0UGx1Z2luSW50ZXJmYWNlID0gbWFrZVVuaXF1ZTxJ
c29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2Jq
ZWN0SGVhcENlbGxUeXBlKCksIEpTVGVzdFBsdWdpbkludGVyZmFjZSk7CiAgICAgZWxzZQotICAg
ICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RQbHVnaW5JbnRlcmZhY2UgPSBtYWtlVW5pcXVl
PElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxU
eXBlLmdldCgpLCBKU1Rlc3RQbHVnaW5JbnRlcmZhY2UpOworICAgICAgICBzcGFjZXMubV9zdWJz
cGFjZUZvclRlc3RQbHVnaW5JbnRlcmZhY2UgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09f
U1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCksIEpTVGVzdFBsdWdp
bkludGVyZmFjZSk7CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RQ
bHVnaW5JbnRlcmZhY2UuZ2V0KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxl
LWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0UHJvbWlz
ZVJlamVjdGlvbkV2ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50LmNwcAkocmV2aXNp
b24gMjg2MDExKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdFByb21pc2VSZWplY3Rpb25FdmVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0OCw3ICsx
NDgsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9y
KEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0Vf
U0hBUkFCTEUoSlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50UHJvdG90eXBlLCBCYXNlKTsKLSAg
ICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBs
YWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVh
dGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC0zMDEsOSArMzAxLDkgQEAgSlND
OjpJc29TdWJzcGFjZSogSlNUZXN0UHJvbWlzZVJlamVjdGlvbgogICAgICAgICByZXR1cm4gc3Bh
Y2U7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3Rp
YmxlT2JqZWN0LCBKU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQ+IHx8ICFKU1Rlc3RQcm9taXNl
UmVqZWN0aW9uRXZlbnQ6Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhwciAoc3Rk
Ojppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0UHJvbWlzZVJl
amVjdGlvbkV2ZW50PikKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0UHJvbWlzZVJl
amVjdGlvbkV2ZW50ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQo
dm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmdldCgpLCBKU1Rlc3RQ
cm9taXNlUmVqZWN0aW9uRXZlbnQpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RQ
cm9taXNlUmVqZWN0aW9uRXZlbnQgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BB
Q0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwgSlNU
ZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50KTsKICAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1
YnNwYWNlRm9yVGVzdFByb21pc2VSZWplY3Rpb25FdmVudCA9IG1ha2VVbmlxdWU8SXNvU3Vic3Bh
Y2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCks
IEpTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudCk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNl
Rm9yVGVzdFByb21pc2VSZWplY3Rpb25FdmVudCA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElT
T19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0UHJv
bWlzZVJlamVjdGlvbkV2ZW50KTsKICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNl
Rm9yVGVzdFByb21pc2VSZWplY3Rpb25FdmVudC5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJ
TigidW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNh
bC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RSZWFkT25seU1hcExpa2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RSZWFkT25seU1hcExpa2UuY3BwCShyZXZp
c2lvbiAyODYwMTEpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0UmVhZE9ubHlNYXBMaWtlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzksNyArNzksNyBA
QCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6
Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFC
TEUoSlNUZXN0UmVhZE9ubHlNYXBMaWtlUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJu
ICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3Bh
Y2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUo
SlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1Zh
bHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC0zMDUsOSArMzA1LDkgQEAgSlNDOjpJc29TdWJzcGFj
ZSogSlNUZXN0UmVhZE9ubHlNYXBMaWtlOgogICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAgc3Rh
dGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBK
U1Rlc3RSZWFkT25seU1hcExpa2U+IHx8ICFKU1Rlc3RSZWFkT25seU1hcExpa2U6Om5lZWRzRGVz
dHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rl
c3RydWN0aWJsZU9iamVjdCwgSlNUZXN0UmVhZE9ubHlNYXBMaWtlPikKLSAgICAgICAgc3BhY2Vz
Lm1fc3Vic3BhY2VGb3JUZXN0UmVhZE9ubHlNYXBMaWtlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFj
ZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENl
bGxUeXBlLmdldCgpLCBKU1Rlc3RSZWFkT25seU1hcExpa2UpOworICAgICAgICBzcGFjZXMubV9z
dWJzcGFjZUZvclRlc3RSZWFkT25seU1hcExpa2UgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJ
U09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5
cGUoKSwgSlNUZXN0UmVhZE9ubHlNYXBMaWtlKTsKICAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5t
X3N1YnNwYWNlRm9yVGVzdFJlYWRPbmx5TWFwTGlrZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+
IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEpT
VGVzdFJlYWRPbmx5TWFwTGlrZSk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFJl
YWRPbmx5TWFwTGlrZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklU
KHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0UmVhZE9ubHlNYXBMaWtlKTsK
ICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFJlYWRPbmx5TWFwTGlr
ZS5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJR05P
UkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RSZWFkT25seVNldExpa2UuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RSZWFkT25seVNldExpa2UuY3BwCShyZXZpc2lvbiAyODYwMTEpCisrKyBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0UmVhZE9ubHlTZXRMaWtlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNzgsNyArNzgsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6
SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RB
VElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0UmVhZE9ubHlTZXRMaWtlUHJv
dG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAg
ICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpT
Qzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC0y
ODQsOSArMjg0LDkgQEAgSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0UmVhZE9ubHlTZXRMaWtlOgog
ICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2Zf
djxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RSZWFkT25seVNldExpa2U+IHx8ICFK
U1Rlc3RSZWFkT25seVNldExpa2U6Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhw
ciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0UmVh
ZE9ubHlTZXRMaWtlPikKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0UmVhZE9ubHlT
ZXRMaWtlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVh
cCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmdldCgpLCBKU1Rlc3RSZWFkT25s
eVNldExpa2UpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RSZWFkT25seVNldExp
a2UgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2
bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0UmVhZE9ubHlTZXRMaWtl
KTsKICAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFJlYWRPbmx5U2V0
TGlrZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAs
IHZtLmNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVGVzdFJlYWRPbmx5U2V0TGlrZSk7CisgICAg
ICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFJlYWRPbmx5U2V0TGlrZSA9IG1ha2VVbmlxdWU8
SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5
cGUoKSwgSlNUZXN0UmVhZE9ubHlTZXRMaWtlKTsKICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5t
X3N1YnNwYWNlRm9yVGVzdFJlYWRPbmx5U2V0TGlrZS5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19C
RUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9n
aWNhbC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RSZXBvcnRFeHRyYU1lbW9yeUNvc3QuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RSZXBvcnRFeHRyYU1lbW9y
eUNvc3QuY3BwCShyZXZpc2lvbiAyODYwMTEpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0UmVwb3J0RXh0cmFNZW1vcnlDb3N0LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNjMsNyArNjMsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3Bh
Y2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VS
VF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0UmVwb3J0RXh0cmFNZW1vcnlDb3N0UHJvdG90
eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAg
ICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6
U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC0xNzEs
OSArMTcxLDkgQEAgSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0UmVwb3J0RXh0cmFNZW1vcgogICAg
ICAgICByZXR1cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxK
U0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RSZXBvcnRFeHRyYU1lbW9yeUNvc3Q+IHx8
ICFKU1Rlc3RSZXBvcnRFeHRyYU1lbW9yeUNvc3Q6Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlm
IGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwg
SlNUZXN0UmVwb3J0RXh0cmFNZW1vcnlDb3N0PikKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VG
b3JUZXN0UmVwb3J0RXh0cmFNZW1vcnlDb3N0ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNP
X1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBl
LmdldCgpLCBKU1Rlc3RSZXBvcnRFeHRyYU1lbW9yeUNvc3QpOworICAgICAgICBzcGFjZXMubV9z
dWJzcGFjZUZvclRlc3RSZXBvcnRFeHRyYU1lbW9yeUNvc3QgPSBtYWtlVW5pcXVlPElzb1N1YnNw
YWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFw
Q2VsbFR5cGUoKSwgSlNUZXN0UmVwb3J0RXh0cmFNZW1vcnlDb3N0KTsKICAgICBlbHNlCi0gICAg
ICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFJlcG9ydEV4dHJhTWVtb3J5Q29zdCA9IG1ha2VV
bmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFw
Q2VsbFR5cGUuZ2V0KCksIEpTVGVzdFJlcG9ydEV4dHJhTWVtb3J5Q29zdCk7CisgICAgICAgIHNw
YWNlcy5tX3N1YnNwYWNlRm9yVGVzdFJlcG9ydEV4dHJhTWVtb3J5Q29zdCA9IG1ha2VVbmlxdWU8
SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5
cGUoKSwgSlNUZXN0UmVwb3J0RXh0cmFNZW1vcnlDb3N0KTsKICAgICBhdXRvKiBzcGFjZSA9IHNw
YWNlcy5tX3N1YnNwYWNlRm9yVGVzdFJlcG9ydEV4dHJhTWVtb3J5Q29zdC5nZXQoKTsKIElHTk9S
RV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVH
SU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuY3BwCShyZXZpc2lvbiAyODYwMTEp
CisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFs
aXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODksNyArODks
NyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpT
Qzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hB
UkFCTEUoSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlUHJvdG90eXBlLCBCYXNl
KTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4g
JnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJl
KiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC0zNDksOSArMzQ5LDkg
QEAgSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0U2VyaWFsaXplZFNjcmlwdAogICAgICAgICByZXR1
cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVz
dHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2U+IHx8
ICFKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2U6Om5lZWRzRGVzdHJ1Y3Rpb24p
OwogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJs
ZU9iamVjdCwgSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlPikKLSAgICAgICAg
c3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlID0g
bWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVz
dHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmdldCgpLCBKU1Rlc3RTZXJpYWxpemVkU2NyaXB0
VmFsdWVJbnRlcmZhY2UpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RTZXJpYWxp
emVkU2NyaXB0VmFsdWVJbnRlcmZhY2UgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VC
U1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwg
SlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlKTsKICAgICBlbHNlCi0gICAgICAg
IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSA9
IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNl
bGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFj
ZSk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZUludGVyZmFjZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZt
LmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVl
SW50ZXJmYWNlKTsKICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJ
TigidW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNh
bC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RTZXRMaWtlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2V0TGlrZS5jcHAJKHJldmlzaW9uIDI4NjAxMSkKKysr
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXRMaWtlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtODEsNyArODEsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpT
Qzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAg
U1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0U2V0TGlrZVByb3RvdHlw
ZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAg
cmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0
cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAtMzQyLDkg
KzM0Miw5IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdFNldExpa2U6OnN1YnNwYWMKICAgICAg
ICAgcmV0dXJuIHNwYWNlOwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlND
OjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0U2V0TGlrZT4gfHwgIUpTVGVzdFNldExpa2U6
Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8
SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0U2V0TGlrZT4pCi0gICAgICAgIHNwYWNl
cy5tX3N1YnNwYWNlRm9yVGVzdFNldExpa2UgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09f
U1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUu
Z2V0KCksIEpTVGVzdFNldExpa2UpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RT
ZXRMaWtlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVh
cCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCksIEpTVGVzdFNldExpa2UpOwog
ICAgIGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0U2V0TGlrZSA9IG1ha2VV
bmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFw
Q2VsbFR5cGUuZ2V0KCksIEpTVGVzdFNldExpa2UpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFj
ZUZvclRlc3RTZXRMaWtlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lO
SVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RTZXRMaWtlKTsKICAgICBh
dXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFNldExpa2UuZ2V0KCk7CiBJR05P
UkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JF
R0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2V0TGlrZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9ucy5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdFNldExpa2VXaXRoT3ZlcnJpZGRlbk9wZXJhdGlvbnMuY3BwCShyZXZpc2lvbiAyODYw
MTEpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2V0
TGlrZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg1LDcg
Kzg1LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZv
cihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNF
X1NIQVJBQkxFKEpTVGVzdFNldExpa2VXaXRoT3ZlcnJpZGRlbk9wZXJhdGlvbnNQcm90b3R5cGUs
IEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJl
dHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1
Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKQEAgLTM1NCw5ICsz
NTQsOSBAQCBKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3RTZXRMaWtlV2l0aE92ZXJyCiAgICAgICAg
IHJldHVybiBzcGFjZTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6
SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdFNldExpa2VXaXRoT3ZlcnJpZGRlbk9wZXJhdGlv
bnM+IHx8ICFKU1Rlc3RTZXRMaWtlV2l0aE92ZXJyaWRkZW5PcGVyYXRpb25zOjpuZWVkc0Rlc3Ry
dWN0aW9uKTsKICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0
cnVjdGlibGVPYmplY3QsIEpTVGVzdFNldExpa2VXaXRoT3ZlcnJpZGRlbk9wZXJhdGlvbnM+KQot
ICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RTZXRMaWtlV2l0aE92ZXJyaWRkZW5PcGVy
YXRpb25zID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVh
cCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmdldCgpLCBKU1Rlc3RTZXRMaWtl
V2l0aE92ZXJyaWRkZW5PcGVyYXRpb25zKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JU
ZXN0U2V0TGlrZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9ucyA9IG1ha2VVbmlxdWU8SXNvU3Vic3Bh
Y2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBD
ZWxsVHlwZSgpLCBKU1Rlc3RTZXRMaWtlV2l0aE92ZXJyaWRkZW5PcGVyYXRpb25zKTsKICAgICBl
bHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFNldExpa2VXaXRoT3ZlcnJpZGRl
bk9wZXJhdGlvbnMgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2
bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlLmdldCgpLCBKU1Rlc3RTZXRMaWtlV2l0aE92ZXJy
aWRkZW5PcGVyYXRpb25zKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0U2V0TGlr
ZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9ucyA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19T
VUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0U2V0TGlr
ZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9ucyk7CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9z
dWJzcGFjZUZvclRlc3RTZXRMaWtlV2l0aE92ZXJyaWRkZW5PcGVyYXRpb25zLmdldCgpOwogSUdO
T1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKIElHTk9SRV9XQVJOSU5HU19C
RUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXIu
Y3BwCShyZXZpc2lvbiAyODYwMTEpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02OSw3ICs2
OSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3Io
SlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9T
SEFSQUJMRShKU1Rlc3RTdHJpbmdpZmllclByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVy
biAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNw
YWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJl
KEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNW
YWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAtMTkyLDkgKzE5Miw5IEBAIEpTQzo6SXNvU3Vic3Bh
Y2UqIEpTVGVzdFN0cmluZ2lmaWVyOjpzdWIKICAgICAgICAgcmV0dXJuIHNwYWNlOwogICAgIHN0
YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwg
SlNUZXN0U3RyaW5naWZpZXI+IHx8ICFKU1Rlc3RTdHJpbmdpZmllcjo6bmVlZHNEZXN0cnVjdGlv
bik7CiAgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3Rp
YmxlT2JqZWN0LCBKU1Rlc3RTdHJpbmdpZmllcj4pCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNl
Rm9yVGVzdFN0cmluZ2lmaWVyID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNF
X0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmdldCgpLCBK
U1Rlc3RTdHJpbmdpZmllcik7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFN0cmlu
Z2lmaWVyID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVh
cCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCksIEpTVGVzdFN0cmluZ2lmaWVy
KTsKICAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFN0cmluZ2lmaWVy
ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0u
Y2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNUZXN0U3RyaW5naWZpZXIpOworICAgICAgICBzcGFj
ZXMubV9zdWJzcGFjZUZvclRlc3RTdHJpbmdpZmllciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+
IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0
U3RyaW5naWZpZXIpOwogICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0
U3RyaW5naWZpZXIuZ2V0KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNv
ZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZp
ZXJBbm9ueW1vdXNPcGVyYXRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllckFub255bW91c09wZXJhdGlv
bi5jcHAJKHJldmlzaW9uIDI4NjAxMSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllckFub255bW91c09wZXJhdGlvbi5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTY5LDcgKzY5LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1
YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19B
U1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdFN0cmluZ2lmaWVyQW5vbnltb3VzT3Bl
cmF0aW9uUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNw
YWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAg
c3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAg
ICB7CkBAIC0xOTIsOSArMTkyLDkgQEAgSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0U3RyaW5naWZp
ZXJBbm9ueQogICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6Omlz
X2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RTdHJpbmdpZmllckFu
b255bW91c09wZXJhdGlvbj4gfHwgIUpTVGVzdFN0cmluZ2lmaWVyQW5vbnltb3VzT3BlcmF0aW9u
OjpuZWVkc0Rlc3RydWN0aW9uKTsKICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92
PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdFN0cmluZ2lmaWVyQW5vbnltb3VzT3Bl
cmF0aW9uPikKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0U3RyaW5naWZpZXJBbm9u
eW1vdXNPcGVyYXRpb24gPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5J
VCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVGVz
dFN0cmluZ2lmaWVyQW5vbnltb3VzT3BlcmF0aW9uKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3Bh
Y2VGb3JUZXN0U3RyaW5naWZpZXJBbm9ueW1vdXNPcGVyYXRpb24gPSBtYWtlVW5pcXVlPElzb1N1
YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RI
ZWFwQ2VsbFR5cGUoKSwgSlNUZXN0U3RyaW5naWZpZXJBbm9ueW1vdXNPcGVyYXRpb24pOwogICAg
IGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0U3RyaW5naWZpZXJBbm9ueW1v
dXNPcGVyYXRpb24gPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2
bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlLmdldCgpLCBKU1Rlc3RTdHJpbmdpZmllckFub255
bW91c09wZXJhdGlvbik7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFN0cmluZ2lm
aWVyQW5vbnltb3VzT3BlcmF0aW9uID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQ
QUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RTdHJpbmdpZmll
ckFub255bW91c09wZXJhdGlvbik7CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFj
ZUZvclRlc3RTdHJpbmdpZmllckFub255bW91c09wZXJhdGlvbi5nZXQoKTsKIElHTk9SRV9XQVJO
SU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRh
dXRvbG9naWNhbC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllck5hbWVkT3BlcmF0aW9uLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5n
aWZpZXJOYW1lZE9wZXJhdGlvbi5jcHAJKHJldmlzaW9uIDI4NjAxMSkKKysrIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllck5hbWVkT3BlcmF0
aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzAsNyArNzAsNyBAQCBwdWJsaWM6CiAgICAgc3Rh
dGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAg
ICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0U3RyaW5naWZp
ZXJOYW1lZE9wZXJhdGlvblByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxh
aW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAg
ICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0m
IHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90
b3R5cGUpCiAgICAgewpAQCAtMjA5LDkgKzIwOSw5IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVz
dFN0cmluZ2lmaWVyTmFtZWQKICAgICAgICAgcmV0dXJuIHNwYWNlOwogICAgIHN0YXRpY19hc3Nl
cnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0U3Ry
aW5naWZpZXJOYW1lZE9wZXJhdGlvbj4gfHwgIUpTVGVzdFN0cmluZ2lmaWVyTmFtZWRPcGVyYXRp
b246Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29m
X3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0U3RyaW5naWZpZXJOYW1lZE9wZXJh
dGlvbj4pCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFN0cmluZ2lmaWVyTmFtZWRP
cGVyYXRpb24gPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5o
ZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVGVzdFN0cmlu
Z2lmaWVyTmFtZWRPcGVyYXRpb24pOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RT
dHJpbmdpZmllck5hbWVkT3BlcmF0aW9uID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NV
QlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCks
IEpTVGVzdFN0cmluZ2lmaWVyTmFtZWRPcGVyYXRpb24pOwogICAgIGVsc2UKLSAgICAgICAgc3Bh
Y2VzLm1fc3Vic3BhY2VGb3JUZXN0U3RyaW5naWZpZXJOYW1lZE9wZXJhdGlvbiA9IG1ha2VVbmlx
dWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2Vs
bFR5cGUuZ2V0KCksIEpTVGVzdFN0cmluZ2lmaWVyTmFtZWRPcGVyYXRpb24pOworICAgICAgICBz
cGFjZXMubV9zdWJzcGFjZUZvclRlc3RTdHJpbmdpZmllck5hbWVkT3BlcmF0aW9uID0gbWFrZVVu
aXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBD
ZWxsVHlwZSgpLCBKU1Rlc3RTdHJpbmdpZmllck5hbWVkT3BlcmF0aW9uKTsKICAgICBhdXRvKiBz
cGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFN0cmluZ2lmaWVyTmFtZWRPcGVyYXRpb24u
Z2V0KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JF
X1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25J
bXBsZW1lbnRlZEFzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25JbXBsZW1lbnRlZEFzLmNw
cAkocmV2aXNpb24gMjg2MDExKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uSW1wbGVtZW50ZWRBcy5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTcwLDcgKzcwLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1
YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19B
U1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uSW1w
bGVtZW50ZWRBc1Byb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmpl
Y3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQog
ICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBK
U0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUp
CiAgICAgewpAQCAtMjA5LDkgKzIwOSw5IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdFN0cmlu
Z2lmaWVyT3BlcmEKICAgICAgICAgcmV0dXJuIHNwYWNlOwogICAgIHN0YXRpY19hc3NlcnQoc3Rk
Ojppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0U3RyaW5naWZp
ZXJPcGVyYXRpb25JbXBsZW1lbnRlZEFzPiB8fCAhSlNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25J
bXBsZW1lbnRlZEFzOjpuZWVkc0Rlc3RydWN0aW9uKTsKICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6
aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdFN0cmluZ2lmaWVy
T3BlcmF0aW9uSW1wbGVtZW50ZWRBcz4pCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVz
dFN0cmluZ2lmaWVyT3BlcmF0aW9uSW1wbGVtZW50ZWRBcyA9IG1ha2VVbmlxdWU8SXNvU3Vic3Bh
Y2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBD
ZWxsVHlwZS5nZXQoKSwgSlNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25JbXBsZW1lbnRlZEFzKTsK
KyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25JbXBs
ZW1lbnRlZEFzID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0u
aGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCksIEpTVGVzdFN0cmluZ2lm
aWVyT3BlcmF0aW9uSW1wbGVtZW50ZWRBcyk7CiAgICAgZWxzZQotICAgICAgICBzcGFjZXMubV9z
dWJzcGFjZUZvclRlc3RTdHJpbmdpZmllck9wZXJhdGlvbkltcGxlbWVudGVkQXMgPSBtYWtlVW5p
cXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENl
bGxUeXBlLmdldCgpLCBKU1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbkltcGxlbWVudGVkQXMpOwor
ICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RTdHJpbmdpZmllck9wZXJhdGlvbkltcGxl
bWVudGVkQXMgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5o
ZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCksIEpTVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uSW1w
bGVtZW50ZWRBcyk7CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RT
dHJpbmdpZmllck9wZXJhdGlvbkltcGxlbWVudGVkQXMuZ2V0KCk7CiBJR05PUkVfV0FSTklOR1Nf
QkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xv
Z2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25OYW1lZFRvU3RyaW5nLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3Ry
aW5naWZpZXJPcGVyYXRpb25OYW1lZFRvU3RyaW5nLmNwcAkocmV2aXNpb24gMjg2MDExKQorKysg
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVy
T3BlcmF0aW9uTmFtZWRUb1N0cmluZy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY5LDcgKzY5LDcg
QEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6
OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJB
QkxFKEpTVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uTmFtZWRUb1N0cmluZ1Byb3RvdHlwZSwgQmFz
ZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJu
ICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVy
ZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAtMTkyLDkgKzE5Miw5
IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdFN0cmluZ2lmaWVyT3BlcmEKICAgICAgICAgcmV0
dXJuIHNwYWNlOwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rl
c3RydWN0aWJsZU9iamVjdCwgSlNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25OYW1lZFRvU3RyaW5n
PiB8fCAhSlNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25OYW1lZFRvU3RyaW5nOjpuZWVkc0Rlc3Ry
dWN0aW9uKTsKICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0
cnVjdGlibGVPYmplY3QsIEpTVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uTmFtZWRUb1N0cmluZz4p
Ci0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uTmFt
ZWRUb1N0cmluZyA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZt
LmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNUZXN0U3Ry
aW5naWZpZXJPcGVyYXRpb25OYW1lZFRvU3RyaW5nKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3Bh
Y2VGb3JUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25OYW1lZFRvU3RyaW5nID0gbWFrZVVuaXF1ZTxJ
c29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2Jq
ZWN0SGVhcENlbGxUeXBlKCksIEpTVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uTmFtZWRUb1N0cmlu
Zyk7CiAgICAgZWxzZQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RTdHJpbmdpZmll
ck9wZXJhdGlvbk5hbWVkVG9TdHJpbmcgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VC
U1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlLmdldCgpLCBKU1Rlc3RTdHJp
bmdpZmllck9wZXJhdGlvbk5hbWVkVG9TdHJpbmcpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFj
ZUZvclRlc3RTdHJpbmdpZmllck9wZXJhdGlvbk5hbWVkVG9TdHJpbmcgPSBtYWtlVW5pcXVlPElz
b1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBl
KCksIEpTVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uTmFtZWRUb1N0cmluZyk7CiAgICAgYXV0byog
c3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RTdHJpbmdpZmllck9wZXJhdGlvbk5hbWVk
VG9TdHJpbmcuZ2V0KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUi
KQogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJS
ZWFkT25seUF0dHJpYnV0ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyUmVhZE9ubHlBdHRyaWJ1dGUuY3Bw
CShyZXZpc2lvbiAyODYwMTEpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0U3RyaW5naWZpZXJSZWFkT25seUF0dHJpYnV0ZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTcxLDcgKzcxLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNl
KiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRf
SVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdFN0cmluZ2lmaWVyUmVhZE9ubHlBdHRyaWJ1dGVQ
cm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7Cisg
ICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KICAgICBzdGF0aWMg
SlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKQEAg
LTIwOCw5ICsyMDgsOSBAQCBKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3RTdHJpbmdpZmllclJlYWRP
CiAgICAgICAgIHJldHVybiBzcGFjZTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9v
Zl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdFN0cmluZ2lmaWVyUmVhZE9ubHlB
dHRyaWJ1dGU+IHx8ICFKU1Rlc3RTdHJpbmdpZmllclJlYWRPbmx5QXR0cmlidXRlOjpuZWVkc0Rl
c3RydWN0aW9uKTsKICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNE
ZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdFN0cmluZ2lmaWVyUmVhZE9ubHlBdHRyaWJ1dGU+KQot
ICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RTdHJpbmdpZmllclJlYWRPbmx5QXR0cmli
dXRlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwg
dm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmdldCgpLCBKU1Rlc3RTdHJpbmdpZmll
clJlYWRPbmx5QXR0cmlidXRlKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0U3Ry
aW5naWZpZXJSZWFkT25seUF0dHJpYnV0ZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19T
VUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgp
LCBKU1Rlc3RTdHJpbmdpZmllclJlYWRPbmx5QXR0cmlidXRlKTsKICAgICBlbHNlCi0gICAgICAg
IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFN0cmluZ2lmaWVyUmVhZE9ubHlBdHRyaWJ1dGUgPSBt
YWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxs
SGVhcENlbGxUeXBlLmdldCgpLCBKU1Rlc3RTdHJpbmdpZmllclJlYWRPbmx5QXR0cmlidXRlKTsK
KyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0U3RyaW5naWZpZXJSZWFkT25seUF0dHJp
YnV0ZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAs
IHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0U3RyaW5naWZpZXJSZWFkT25seUF0dHJpYnV0
ZSk7CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RTdHJpbmdpZmll
clJlYWRPbmx5QXR0cmlidXRlLmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNo
YWJsZS1jb2RlIikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUi
KQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0
cmluZ2lmaWVyUmVhZFdyaXRlQXR0cmlidXRlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJSZWFkV3JpdGVB
dHRyaWJ1dGUuY3BwCShyZXZpc2lvbiAyODYwMTEpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJSZWFkV3JpdGVBdHRyaWJ1dGUuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC03Miw3ICs3Miw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlND
OjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBT
VEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3RTdHJpbmdpZmllclJlYWRX
cml0ZUF0dHJpYnV0ZVByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5P
YmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAg
fQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZt
LCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5
cGUpCiAgICAgewpAQCAtMjI3LDkgKzIyNyw5IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdFN0
cmluZ2lmaWVyUmVhZFcKICAgICAgICAgcmV0dXJuIHNwYWNlOwogICAgIHN0YXRpY19hc3NlcnQo
c3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0U3RyaW5n
aWZpZXJSZWFkV3JpdGVBdHRyaWJ1dGU+IHx8ICFKU1Rlc3RTdHJpbmdpZmllclJlYWRXcml0ZUF0
dHJpYnV0ZTo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jh
c2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RTdHJpbmdpZmllclJlYWRX
cml0ZUF0dHJpYnV0ZT4pCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFN0cmluZ2lm
aWVyUmVhZFdyaXRlQXR0cmlidXRlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQ
QUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmdldCgp
LCBKU1Rlc3RTdHJpbmdpZmllclJlYWRXcml0ZUF0dHJpYnV0ZSk7CisgICAgICAgIHNwYWNlcy5t
X3N1YnNwYWNlRm9yVGVzdFN0cmluZ2lmaWVyUmVhZFdyaXRlQXR0cmlidXRlID0gbWFrZVVuaXF1
ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxl
T2JqZWN0SGVhcENlbGxUeXBlKCksIEpTVGVzdFN0cmluZ2lmaWVyUmVhZFdyaXRlQXR0cmlidXRl
KTsKICAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFN0cmluZ2lmaWVy
UmVhZFdyaXRlQXR0cmlidXRlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNF
X0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNUZXN0U3RyaW5naWZp
ZXJSZWFkV3JpdGVBdHRyaWJ1dGUpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RT
dHJpbmdpZmllclJlYWRXcml0ZUF0dHJpYnV0ZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElT
T19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0U3Ry
aW5naWZpZXJSZWFkV3JpdGVBdHRyaWJ1dGUpOwogICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1f
c3Vic3BhY2VGb3JUZXN0U3RyaW5naWZpZXJSZWFkV3JpdGVBdHRyaWJ1dGUuZ2V0KCk7CiBJR05P
UkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JF
R0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0VHlwZWRlZnMuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RUeXBlZGVmcy5jcHAJKHJl
dmlzaW9uIDI4NjAxMSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RUeXBlZGVmcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExNiw3ICsxMTYsNyBAQCBw
dWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0m
IHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUo
SlNUZXN0VHlwZWRlZnNQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWlu
T2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAg
IH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2
bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90
eXBlKQogICAgIHsKQEAgLTc3OCw5ICs3NzgsOSBAQCBKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3RU
eXBlZGVmczo6c3Vic3BhCiAgICAgICAgIHJldHVybiBzcGFjZTsKICAgICBzdGF0aWNfYXNzZXJ0
KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdFR5cGVk
ZWZzPiB8fCAhSlNUZXN0VHlwZWRlZnM6Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0
ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0
VHlwZWRlZnM+KQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RUeXBlZGVmcyA9IG1h
a2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3Ry
dWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNUZXN0VHlwZWRlZnMpOworICAgICAg
ICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RUeXBlZGVmcyA9IG1ha2VVbmlxdWU8SXNvU3Vic3Bh
Y2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBD
ZWxsVHlwZSgpLCBKU1Rlc3RUeXBlZGVmcyk7CiAgICAgZWxzZQotICAgICAgICBzcGFjZXMubV9z
dWJzcGFjZUZvclRlc3RUeXBlZGVmcyA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJT
UEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVGVzdFR5cGVk
ZWZzKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0VHlwZWRlZnMgPSBtYWtlVW5p
cXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENl
bGxUeXBlKCksIEpTVGVzdFR5cGVkZWZzKTsKICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1
YnNwYWNlRm9yVGVzdFR5cGVkZWZzLmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJl
YWNoYWJsZS1jb2RlIikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBh
cmUiKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTV29y
a2VyR2xvYmFsU2NvcGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1dvcmtlckdsb2JhbFNjb3BlLmNwcAkocmV2aXNpb24gMjg2MDEx
KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTV29ya2VyR2xv
YmFsU2NvcGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNDksNyArMjQ5LDcgQEAgSlNDOjpJc29T
dWJzcGFjZSogSlNXb3JrZXJHbG9iYWxTY29wZTo6cwogICAgIGF1dG8mIHNwYWNlcyA9IGNsaWVu
dERhdGEuc3Vic3BhY2VzKCk7CiAgICAgaWYgKGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3Bh
Y2VGb3JXb3JrZXJHbG9iYWxTY29wZS5nZXQoKSkKICAgICAgICAgcmV0dXJuIHNwYWNlOwotICAg
IHNwYWNlcy5tX3N1YnNwYWNlRm9yV29ya2VyR2xvYmFsU2NvcGUgPSBtYWtlVW5pcXVlPElzb1N1
YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCBjbGllbnREYXRhLm1faGVhcENlbGxU
eXBlRm9ySlNXb3JrZXJHbG9iYWxTY29wZS5nZXQoKSwgSlNXb3JrZXJHbG9iYWxTY29wZSk7Cisg
ICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JXb3JrZXJHbG9iYWxTY29wZSA9IG1ha2VVbmlxdWU8SXNv
U3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICpjbGllbnREYXRhLm1faGVhcENl
bGxUeXBlRm9ySlNXb3JrZXJHbG9iYWxTY29wZSwgSlNXb3JrZXJHbG9iYWxTY29wZSk7CiAgICAg
YXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvcldvcmtlckdsb2JhbFNjb3BlLmdldCgp
OwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKIElHTk9SRV9XQVJO
SU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRleDogU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTV29ya2VyR2xvYmFsU2NvcGUuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNXb3JrZXJHbG9i
YWxTY29wZS5oCShyZXZpc2lvbiAyODYwMTEpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNXb3JrZXJHbG9iYWxTY29wZS5oCSh3b3JraW5nIGNvcHkpCkBAIC04
NSw3ICs4NSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3Bh
Y2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJT
UEFDRV9TSEFSQUJMRShKU1dvcmtlckdsb2JhbFNjb3BlUHJvdG90eXBlLCBCYXNlKTsKLSAgICAg
ICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWlu
T2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVT
dHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
SlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNXb3JrbGV0R2xvYmFsU2NvcGUuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1dvcmtsZXRHbG9i
YWxTY29wZS5jcHAJKHJldmlzaW9uIDI4NjAxMSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1dvcmtsZXRHbG9iYWxTY29wZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTE2Myw3ICsxNjMsNyBAQCBKU0M6Oklzb1N1YnNwYWNlKiBKU1dvcmtsZXRHbG9iYWxTY29w
ZTo6CiAgICAgYXV0byYgc3BhY2VzID0gY2xpZW50RGF0YS5zdWJzcGFjZXMoKTsKICAgICBpZiAo
YXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvcldvcmtsZXRHbG9iYWxTY29wZS5nZXQo
KSkKICAgICAgICAgcmV0dXJuIHNwYWNlOwotICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yV29ya2xl
dEdsb2JhbFNjb3BlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQo
dm0uaGVhcCwgY2xpZW50RGF0YS5tX2hlYXBDZWxsVHlwZUZvckpTV29ya2xldEdsb2JhbFNjb3Bl
LmdldCgpLCBKU1dvcmtsZXRHbG9iYWxTY29wZSk7CisgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JX
b3JrbGV0R2xvYmFsU2NvcGUgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0Vf
SU5JVCh2bS5oZWFwLCAqY2xpZW50RGF0YS5tX2hlYXBDZWxsVHlwZUZvckpTV29ya2xldEdsb2Jh
bFNjb3BlLCBKU1dvcmtsZXRHbG9iYWxTY29wZSk7CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMu
bV9zdWJzcGFjZUZvcldvcmtsZXRHbG9iYWxTY29wZS5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19C
RUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9n
aWNhbC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1dvcmtsZXRHbG9iYWxTY29wZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1dvcmtsZXRHbG9iYWxTY29wZS5oCShyZXZpc2lv
biAyODYwMTEpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNX
b3JrbGV0R2xvYmFsU2NvcGUuaAkod29ya2luZyBjb3B5KQpAQCAtODUsNyArODUsNyBAQCBwdWJs
aWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZt
KQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNX
b3JrbGV0R2xvYmFsU2NvcGVQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBs
YWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwog
ICAgIH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZN
JiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJv
dG90eXBlKQogICAgIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfcnVu
dGltZS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX3J1
bnRpbWUubW0JKHJldmlzaW9uIDI4NjAxMSkKKysrIFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpj
L29iamNfcnVudGltZS5tbQkod29ya2luZyBjb3B5KQpAQCAtMzM0LDcgKzMzNCw5IEBAIGJvb2wg
T2JqY0ZhbGxiYWNrT2JqZWN0SW1wOjp0b0Jvb2xlYW4oSlMKIAogSlNDOjpJc29TdWJzcGFjZSog
T2JqY0ZhbGxiYWNrT2JqZWN0SW1wOjpzdWJzcGFjZUZvckltcGwoSlNDOjpWTSYgdm0pCiB7Ci0g
ICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEpTQzo6SXNvU3Vic3BhY2VQZXJWTT4gcGVyVk0oW10g
KEpTQzo6Vk0mIHZtKSB7IHJldHVybiBJU09fU1VCU1BBQ0VfUEFSQU1FVEVSUyh2bS5kZXN0cnVj
dGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuZ2V0KCksIE9iamNGYWxsYmFja09iamVjdEltcCk7IH0p
OworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxKU0M6Oklzb1N1YnNwYWNlUGVyVk0+IHBlclZN
KFtdIChKU0M6OlZNJiB2bSkgeworICAgICAgICByZXR1cm4gSVNPX1NVQlNQQUNFX1BBUkFNRVRF
UlModm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCksIE9iamNGYWxsYmFja09iamVj
dEltcCk7CisgICAgfSk7CiAgICAgcmV0dXJuICZwZXJWTS5nZXQoKS5mb3JWTSh2bSk7CiB9CiAK
</data>
<flag name="commit-queue"
          id="469819"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>444734</attachid>
            <date>2021-11-18 14:17:27 -0800</date>
            <delta_ts>2021-11-18 14:36:11 -0800</delta_ts>
            <desc>proposed patch.</desc>
            <filename>bug-233240b.patch</filename>
            <type>text/plain</type>
            <size>434762</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDI4NjAyNCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpA
QCAtMTEzOSwxMiArMTEzOSwxMiBAQCBzZXQoSmF2YVNjcmlwdENvcmVfUFJJVkFURV9GUkFNRVdP
UktfSEVBCiAgICAgcnVudGltZS9Qcml2YXRlTmFtZS5oCiAgICAgcnVudGltZS9Qcm9ncmFtRXhl
Y3V0YWJsZS5oCiAgICAgcnVudGltZS9Qcm9wZXJ0eURlc2NyaXB0b3IuaAotICAgIHJ1bnRpbWUv
UHJvcGVydHlNYXBIYXNoVGFibGUuaAogICAgIHJ1bnRpbWUvUHJvcGVydHlOYW1lLmgKICAgICBy
dW50aW1lL1Byb3BlcnR5TmFtZUFycmF5LmgKICAgICBydW50aW1lL1Byb3BlcnR5T2Zmc2V0LmgK
ICAgICBydW50aW1lL1Byb3BlcnR5U2xvdC5oCiAgICAgcnVudGltZS9Qcm9wZXJ0eVN0b3JhZ2Uu
aAorICAgIHJ1bnRpbWUvUHJvcGVydHlUYWJsZS5oCiAgICAgcnVudGltZS9Qcm90ZWN0LmgKICAg
ICBydW50aW1lL1Byb3RvdHlwZUtleS5oCiAgICAgcnVudGltZS9Qcm94eU9iamVjdC5oCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvanNjLmNwcAkocmV2aXNpb24gMjg2MDI0KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2pzYy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0MjksNyArMTQyOSw3IEBAIHB1Ymxp
YzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vic3BhY2VBY2Nlc3M+CiAgICAg
c3RhdGljIENvbXBsZXRlU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7Ci0gICAg
ICAgIHJldHVybiAmdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAm
dm0uZGVzdHJ1Y3RpYmxlT2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBKU0NNZW1vcnlGb290
cHJpbnQoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKQEAgLTE3NjIsNyArMTc2Miw3IEBA
IHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vic3BhY2VBY2Nlc3M+
CiAgICAgc3RhdGljIENvbXBsZXRlU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7
Ci0gICAgICAgIHJldHVybiAmdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0U3BhY2U7CisgICAgICAgIHJl
dHVybiAmdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMg
U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCShyZXZpc2lvbiAyODYwMjQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTc1MCw3
ICsxNzUwLDcgQEAKIAkJQkM3NTZGQzkwRTIwMzFCMjAwREU3RDEyIC8qIEpTR2xvYmFsT2JqZWN0
RnVuY3Rpb25zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBCQzc1NkZDNzBFMjAzMUIyMDBERTdEMTIgLyogSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlCQzg3Q0RC
OTEwNzEyQUQ0MDAwNjE0Q0YgLyogSlNPTk9iamVjdC5sdXQuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDODdDREI4MTA3MTJBQ0EwMDA2MTRDRiAvKiBK
U09OT2JqZWN0Lmx1dC5oICovOyB9OwogCQlCQzkwNDE0ODBFQjkyNTA5MDBGRTI2RkEgLyogU3Ry
dWN0dXJlVHJhbnNpdGlvblRhYmxlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBCQzkwNDE0NzBFQjkyNTA5MDBGRTI2RkEgLyogU3RydWN0dXJlVHJhbnNp
dGlvblRhYmxlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKLQkJQkM5NTQzN0QwRUJBNzBGRDAwNzJCNkQzIC8qIFByb3BlcnR5TWFwSGFzaFRhYmxlLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzk1NDM3QzBF
QkE3MEZEMDA3MkI2RDMgLyogUHJvcGVydHlNYXBIYXNoVGFibGUuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlCQzk1NDM3RDBFQkE3MEZEMDA3MkI2
RDMgLyogUHJvcGVydHlUYWJsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQkM5NTQzN0MwRUJBNzBGRDAwNzJCNkQzIC8qIFByb3BlcnR5VGFibGUuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlCQ0JFMkNB
RTE0RTk4NUFBMDAwNTkzQUQgLyogR0NBc3NlcnRpb25zLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0JFMkNBRDE0RTk4NUFBMDAwNTkzQUQgLyogR0NB
c3NlcnRpb25zLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJQkNDRjBEMDgwRUYwQUFCOTAwNDEzQzhGIC8qIFN0cnVjdHVyZVN0dWJJbmZvLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0NGMEQwNzBFRjBB
QUI5MDA0MTNDOEYgLyogU3RydWN0dXJlU3R1YkluZm8uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlCQ0QyMDJDMjBFMTcwNkE3MDAyQzdFODIgLyog
UmVnRXhwQ29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEJDRDIwMkJFMEUxNzA2QTcwMDJDN0U4MiAvKiBSZWdFeHBDb25zdHJ1Y3Rvci5o
ICovOyB9OwpAQCAtMTk1OSw3ICsxOTU5LDcgQEAKIAkJRTNDNjk0QjMyMzAyNjg3NzAwNkZCRTQy
IC8qIFdhc21PU1JFbnRyeURhdGEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEUzQzY5NEIxMjMwMjY4NzMwMDZGQkU0MiAvKiBXYXNtT1NSRW50cnlEYXRh
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTND
NzNBOTEyNUJGQTczQjAwRUZFMzAzIC8qIFdhc21TdHJlYW1pbmdQbGFuLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFM0M3M0E5MDI1QkZBNzM0MDBFRkUz
MDMgLyogV2FzbVN0cmVhbWluZ1BsYW4uaCAqLzsgfTsKIAkJRTNDNzlDQUIxREI5QTREQzAwRDFF
Q0E0IC8qIERPTUpJVEVmZmVjdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRTNDNzlDQUExREI5QTRENjAwRDFFQ0E0IC8qIERPTUpJVEVmZmVjdC5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCUUzQzhFRDQz
MjNBMURCQ0IwMDEzMTk1OCAvKiBJc29JbmxpbmVkSGVhcENlbGxUeXBlLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFM0M4RUQ0MjIzQTFEQkM1MDAxMzE5
NTggLyogSXNvSW5saW5lZEhlYXBDZWxsVHlwZS5oICovOyB9OworCQlFM0M4RUQ0MzIzQTFEQkNC
MDAxMzE5NTggLyogSXNvSW5saW5lZEhlYXBDZWxsVHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTNDOEVENDIyM0ExREJDNTAwMTMxOTU4IC8qIElz
b0lubGluZWRIZWFwQ2VsbFR5cGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQlFM0NBM0E0RTI1MjdBQjJGMDA0ODAyQkYgLyogSklUT3BlcmF0aW9u
TGlzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTND
QTNBNEMyNTI3QUIyRjAwNDgwMkJGIC8qIEpJVE9wZXJhdGlvbkxpc3QuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFM0QyMzlDOTFCODI5QzFDMDBC
QkVGNjcgLyogSlNNb2R1bGVFbnZpcm9ubWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRTNEMjM5QzcxQjgyOUMxQzAwQkJFRjY3IC8qIEpTTW9kdWxl
RW52aXJvbm1lbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQlFM0QzNTE1RjI0MUI4OUQ3MDA4REMxNkUgLyogTWFya2VkSlNWYWx1ZVJlZkFycmF5
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFM0QzNTE1
RDI0MUI4OUNFMDA4REMxNkUgLyogTWFya2VkSlNWYWx1ZVJlZkFycmF5LmggKi87IH07CkBAIC00
OTkxLDcgKzQ5OTEsNyBAQAogCQlCQzg3Q0RCODEwNzEyQUNBMDAwNjE0Q0YgLyogSlNPTk9iamVj
dC5sdXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNPTk9iamVjdC5sdXQu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkM4RjNDQ0YwREFGMTdCQTAwNTc3QTgw
IC8qIENvbnN0cnVjdERhdGEuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29u
c3RydWN0RGF0YS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzkwNDE0NzBFQjky
NTA5MDBGRTI2RkEgLyogU3RydWN0dXJlVHJhbnNpdGlvblRhYmxlLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFN0cnVjdHVyZVRyYW5zaXRpb25UYWJsZS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwotCQlCQzk1NDM3QzBFQkE3MEZEMDA3MkI2RDMgLyogUHJvcGVydHlN
YXBIYXNoVGFibGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUHJvcGVydHlN
YXBIYXNoVGFibGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkM5NTQzN0MwRUJB
NzBGRDAwNzJCNkQzIC8qIFByb3BlcnR5VGFibGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gUHJvcGVydHlUYWJsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlC
QzlCQjk1QjBFMTk2ODA2MDBERjg4NTUgLyogSW50ZXJuYWxGdW5jdGlvbi5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbnRlcm5hbEZ1bmN0aW9uLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkNBNjJERkUwRTI4MjYyMzAwMDRGMzBEIC8qIENhbGxE
YXRhLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENhbGxEYXRhLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkNBNjJERkYwRTI4MjYzMTAwMDRGMzBE
IC8qIENvbnN0cnVjdERhdGEuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gQ29uc3RydWN0RGF0YS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC03OTU4
LDcgKzc5NTgsNiBAQAogCQkJCTE0NzM0MUQzMURDMDJFNkQwMEFBMjlCQSAvKiBQcm9ncmFtRXhl
Y3V0YWJsZS5oICovLAogCQkJCUE3RkI2MEEzMTAzRjdEQzIwMDE3QTI4NiAvKiBQcm9wZXJ0eURl
c2NyaXB0b3IuY3BwICovLAogCQkJCUE3RkI2MDRCMTAzRjVFQUIwMDE3QTI4NiAvKiBQcm9wZXJ0
eURlc2NyaXB0b3IuaCAqLywKLQkJCQlCQzk1NDM3QzBFQkE3MEZEMDA3MkI2RDMgLyogUHJvcGVy
dHlNYXBIYXNoVGFibGUuaCAqLywKIAkJCQk4NjE1OEFCMjE1NUM4QjNGMDBCNDVDOUMgLyogUHJv
cGVydHlOYW1lLmggKi8sCiAJCQkJNjU0MDBDMTAwQTY5QkFGMjAwNTA5ODg3IC8qIFByb3BlcnR5
TmFtZUFycmF5LmggKi8sCiAJCQkJMEZGNzE2OEExNUEzQjIzMTAwOEY1REFBIC8qIFByb3BlcnR5
T2Zmc2V0LmggKi8sCkBAIC03OTY2LDYgKzc5NjUsNyBAQAogCQkJCTY1NjIxRTZDMDg5RTg1OTcw
MDc2MEYzNSAvKiBQcm9wZXJ0eVNsb3QuaCAqLywKIAkJCQkwRkI3RjM5MDE1RUQ4RTM4MDBGMTY3
QjIgLyogUHJvcGVydHlTdG9yYWdlLmggKi8sCiAJCQkJQUQxQ0YwNjgxNkRDQUIyRDAwQjk3MTIz
IC8qIFByb3BlcnR5VGFibGUuY3BwICovLAorCQkJCUJDOTU0MzdDMEVCQTcwRkQwMDcyQjZEMyAv
KiBQcm9wZXJ0eVRhYmxlLmggKi8sCiAJCQkJNjVDMDJGQkIwNjM3NDYyQTAwM0U3RUU2IC8qIFBy
b3RlY3QuaCAqLywKIAkJCQkwRjc0QjkzQTFGODk2MTQ1MDBCOTM1RDMgLyogUHJvdG90eXBlS2V5
LmggKi8sCiAJCQkJNzlCMDBDQjgxQzZBQjA3RTAwODhDNjVEIC8qIFByb3h5Q29uc3RydWN0b3Iu
Y3BwICovLApAQCAtMTA2NzYsNyArMTA2NzYsNyBAQAogCQkJCTE0NzM0MUQ0MURDMDJFNkQwMEFB
MjlCQSAvKiBQcm9ncmFtRXhlY3V0YWJsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZEM0U0MEUx
QjYxOEI2NjAwQzgwRTFFIC8qIFByb3BlcnR5Q29uZGl0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlBN0ZCNjEwMDEwNDBDMzhCMDAxN0EyODYgLyogUHJvcGVydHlEZXNjcmlwdG9yLmggaW4gSGVh
ZGVycyAqLywKLQkJCQlCQzk1NDM3RDBFQkE3MEZEMDA3MkI2RDMgLyogUHJvcGVydHlNYXBIYXNo
VGFibGUuaCBpbiBIZWFkZXJzICovLAorCQkJCUJDOTU0MzdEMEVCQTcwRkQwMDcyQjZEMyAvKiBQ
cm9wZXJ0eVRhYmxlLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NjE1OEFCMzE1NUM4QjQwMDBCNDVD
OUMgLyogUHJvcGVydHlOYW1lLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzQ1NDBFMTZGNUNE
MDBCMzQ0NjAgLyogUHJvcGVydHlOYW1lQXJyYXkuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRjcx
NjhDMTVBM0IyMzUwMDhGNURBQSAvKiBQcm9wZXJ0eU9mZnNldC5oIGluIEhlYWRlcnMgKi8sCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vzc0Nhc2UuY3BwCShy
ZXZpc2lvbiAyODYwMjQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNz
Q2FzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIyNzcsNyArMjI3Nyw3IEBAIHZvaWQgQWNjZXNz
Q2FzZTo6Z2VuZXJhdGVJbXBsKEFjY2Vzc0dlbmUKICAgICAgICAgICAgIHNpemVfdCBuZXdTaXpl
ID0gbmV3U3RydWN0dXJlKCktPm91dE9mTGluZUNhcGFjaXR5KCkgKiBzaXplb2YoSlNWYWx1ZSk7
CiAKICAgICAgICAgICAgIGlmIChhbGxvY2F0aW5nSW5saW5lKSB7Ci0gICAgICAgICAgICAgICAg
QWxsb2NhdG9yIGFsbG9jYXRvciA9IHZtLmpzVmFsdWVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlLmFs
bG9jYXRvckZvcihuZXdTaXplLCBBbGxvY2F0b3JGb3JNb2RlOjpBbGxvY2F0b3JJZkV4aXN0cyk7
CisgICAgICAgICAgICAgICAgQWxsb2NhdG9yIGFsbG9jYXRvciA9IHZtLmpzVmFsdWVHaWdhY2Fn
ZUF1eGlsaWFyeVNwYWNlKCkuYWxsb2NhdG9yRm9yKG5ld1NpemUsIEFsbG9jYXRvckZvck1vZGU6
OkFsbG9jYXRvcklmRXhpc3RzKTsKIAogICAgICAgICAgICAgICAgIGppdC5lbWl0QWxsb2NhdGUo
c2NyYXRjaEdQUiwgSklUQWxsb2NhdG9yOjpjb25zdGFudChhbGxvY2F0b3IpLCBzY3JhdGNoR1BS
Miwgc2NyYXRjaEdQUjMsIHNsb3dQYXRoKTsKICAgICAgICAgICAgICAgICBqaXQuYWRkUHRyKEND
YWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKG5ld1NpemUgKyBzaXplb2YoSW5kZXhpbmdIZWFkZXIp
KSwgc2NyYXRjaEdQUik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXZh
bENvZGVCbG9jay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9FdmFsQ29kZUJsb2NrLmgJKHJldmlzaW9uIDI4NjAyNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9FdmFsQ29kZUJsb2NrLmgJKHdvcmtpbmcgY29weSkKQEAgLTQxLDcgKzQx
LDcgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lLCBTdWJzcGFjZUFjY2Vzcz4KICAg
ICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7Ci0gICAgICAg
IHJldHVybiAmdm0uY29kZUJsb2NrU3BhY2Uuc3BhY2U7CisgICAgICAgIHJldHVybiAmdm0uY29k
ZUJsb2NrU3BhY2UoKS5zcGFjZTsKICAgICB9CiAKICAgICBzdGF0aWMgRXZhbENvZGVCbG9jayog
Y3JlYXRlKFZNJiB2bSwgQ29weVBhcnNlZEJsb2NrVGFnLCBFdmFsQ29kZUJsb2NrJiBvdGhlcikK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FeGVjdXRhYmxlVG9Db2RlQmxv
Y2tFZGdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
RXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZS5jcHAJKHJldmlzaW9uIDI4NjAyNCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtODEsNyArODEsNyBAQCB2b2lkIEV4ZWN1dGFibGVUb0NvZGVCbG9j
a0VkZ2U6OnZpc2l0Q2hpCiAgICAgICAgIHZpc2l0b3IuYXBwZW5kVW5iYXJyaWVyZWQoY29kZUJs
b2NrKTsKICAgICAKICAgICBpZiAoIXZpc2l0b3IuaXNNYXJrZWQoY29kZUJsb2NrKSkKLSAgICAg
ICAgdm0uZXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZXNXaXRoRmluYWxpemVycy5hZGQoZWRnZSk7
CisgICAgICAgIHZtLmV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2VzV2l0aEZpbmFsaXplcnMoKS5h
ZGQoZWRnZSk7CiAgICAgCiAgICAgaWYgKEpJVENvZGU6OmlzT3B0aW1pemluZ0pJVChjb2RlQmxv
Y2stPmppdFR5cGUoKSkpIHsKICAgICAgICAgLy8gSWYgd2UgamV0dGlzb24gb3Vyc2VsdmVzIHdl
J2xsIGluc3RhbGwgb3VyIGFsdGVybmF0aXZlLCBzbyBtYWtlIHN1cmUgdGhhdCBpdApAQCAtMTE0
LDcgKzExNCw3IEBAIHZvaWQgRXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZTo6dmlzaXRDaGkKICAg
ICAvLyBub3QgeWV0IG1hcmtlZCBiZWNhdXNlIGl0IHdlYWtseSBkZXBlbmRzIG9uIGEgc3RydWN0
dXJlIHRoYXQgd2UgZGlkIG5vdCB5ZXQgbWFyaywgdGhlbiB3ZQogICAgIC8vIHdpbGwga2VlcCBm
aXhwb2ludGluZyB1bnRpbCB0aGUgZW5kLgogICAgIHZpc2l0b3IuYXBwZW5kVW5iYXJyaWVyZWQo
Y29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSk7Ci0gICAgdm0uZXhlY3V0YWJsZVRvQ29kZUJsb2Nr
RWRnZXNXaXRoQ29uc3RyYWludHMuYWRkKGVkZ2UpOworICAgIHZtLmV4ZWN1dGFibGVUb0NvZGVC
bG9ja0VkZ2VzV2l0aENvbnN0cmFpbnRzKCkuYWRkKGVkZ2UpOwogICAgIGVkZ2UtPnJ1bkNvbnN0
cmFpbnQobG9ja2VyLCB2bSwgdmlzaXRvcik7CiB9CiAKQEAgLTE0Myw4ICsxNDMsOCBAQCB2b2lk
IEV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2U6OmZpbmFsaXplCiAgICAgICAgIG1fY29kZUJsb2Nr
LmNsZWFyKCk7CiAgICAgfQogICAgIAotICAgIHZtLmV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2Vz
V2l0aEZpbmFsaXplcnMucmVtb3ZlKHRoaXMpOwotICAgIHZtLmV4ZWN1dGFibGVUb0NvZGVCbG9j
a0VkZ2VzV2l0aENvbnN0cmFpbnRzLnJlbW92ZSh0aGlzKTsKKyAgICB2bS5leGVjdXRhYmxlVG9D
b2RlQmxvY2tFZGdlc1dpdGhGaW5hbGl6ZXJzKCkucmVtb3ZlKHRoaXMpOworICAgIHZtLmV4ZWN1
dGFibGVUb0NvZGVCbG9ja0VkZ2VzV2l0aENvbnN0cmFpbnRzKCkucmVtb3ZlKHRoaXMpOwogfQog
CiBpbmxpbmUgdm9pZCBFeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlOjphY3RpdmF0ZSgpCkBAIC0y
MDEsNyArMjAxLDcgQEAgdm9pZCBFeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlOjpydW5Db25zdAog
ICAgIGNvZGVCbG9jay0+ZGV0ZXJtaW5lTGl2ZW5lc3MobG9ja2VyLCB2aXNpdG9yKTsKIAogICAg
IGlmICh2aXNpdG9yLmlzTWFya2VkKGNvZGVCbG9jaykpCi0gICAgICAgIHZtLmV4ZWN1dGFibGVU
b0NvZGVCbG9ja0VkZ2VzV2l0aENvbnN0cmFpbnRzLnJlbW92ZSh0aGlzKTsKKyAgICAgICAgdm0u
ZXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZXNXaXRoQ29uc3RyYWludHMoKS5yZW1vdmUodGhpcyk7
CiB9CiAKIHRlbXBsYXRlIHZvaWQgRXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZTo6cnVuQ29uc3Ry
YWludChjb25zdCBDb25jdXJyZW50SlNMb2NrZXImLCBWTSYsIEFic3RyYWN0U2xvdFZpc2l0b3Im
KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FeGVjdXRhYmxlVG9Db2Rl
QmxvY2tFZGdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0V4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2UuaAkocmV2aXNpb24gMjg2MDI0KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0V4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2UuaAkod29y
a2luZyBjb3B5KQpAQCAtNDMsNyArNDMsNyBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5h
bWUgQ2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNzPgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vi
c3BhY2VGb3IoVk0mIHZtKQogICAgIHsKLSAgICAgICAgcmV0dXJuICZ2bS5leGVjdXRhYmxlVG9D
b2RlQmxvY2tFZGdlU3BhY2U7CisgICAgICAgIHJldHVybiAmdm0uZXhlY3V0YWJsZVRvQ29kZUJs
b2NrRWRnZVNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3Ry
dWN0dXJlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlIHByb3RvdHlwZSk7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRnVuY3Rpb25Db2RlQmxvY2suaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRnVuY3Rpb25Db2RlQmxvY2su
aAkocmV2aXNpb24gMjg2MDI0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Z1
bmN0aW9uQ29kZUJsb2NrLmgJKHdvcmtpbmcgY29weSkKQEAgLTQyLDcgKzQyLDcgQEAgcHVibGlj
OgogICAgIHRlbXBsYXRlPHR5cGVuYW1lLCBTdWJzcGFjZUFjY2Vzcz4KICAgICBzdGF0aWMgSXNv
U3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7Ci0gICAgICAgIHJldHVybiAmdm0u
Y29kZUJsb2NrU3BhY2Uuc3BhY2U7CisgICAgICAgIHJldHVybiAmdm0uY29kZUJsb2NrU3BhY2Uo
KS5zcGFjZTsKICAgICB9CiAKICAgICBzdGF0aWMgRnVuY3Rpb25Db2RlQmxvY2sqIGNyZWF0ZShW
TSYgdm0sIENvcHlQYXJzZWRCbG9ja1RhZywgRnVuY3Rpb25Db2RlQmxvY2smIG90aGVyKQpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL01vZHVsZVByb2dyYW1Db2RlQmxvY2su
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTW9kdWxlUHJv
Z3JhbUNvZGVCbG9jay5oCShyZXZpc2lvbiAyODYwMjQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvTW9kdWxlUHJvZ3JhbUNvZGVCbG9jay5oCSh3b3JraW5nIGNvcHkpCkBAIC00
Miw3ICs0Miw3IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSwgU3Vic3BhY2VBY2Nl
c3M+CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewot
ICAgICAgICByZXR1cm4gJnZtLmNvZGVCbG9ja1NwYWNlLnNwYWNlOworICAgICAgICByZXR1cm4g
JnZtLmNvZGVCbG9ja1NwYWNlKCkuc3BhY2U7CiAgICAgfQogCiAgICAgc3RhdGljIE1vZHVsZVBy
b2dyYW1Db2RlQmxvY2sqIGNyZWF0ZShWTSYgdm0sIENvcHlQYXJzZWRCbG9ja1RhZywgTW9kdWxl
UHJvZ3JhbUNvZGVCbG9jayYgb3RoZXIpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvUHJvZ3JhbUNvZGVCbG9jay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9Qcm9ncmFtQ29kZUJsb2NrLmgJKHJldmlzaW9uIDI4NjAyNCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qcm9ncmFtQ29kZUJsb2NrLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTQyLDcgKzQyLDcgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lLCBT
dWJzcGFjZUFjY2Vzcz4KICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2
bSkKICAgICB7Ci0gICAgICAgIHJldHVybiAmdm0uY29kZUJsb2NrU3BhY2Uuc3BhY2U7CisgICAg
ICAgIHJldHVybiAmdm0uY29kZUJsb2NrU3BhY2UoKS5zcGFjZTsKICAgICB9CiAKICAgICBzdGF0
aWMgUHJvZ3JhbUNvZGVCbG9jayogY3JlYXRlKFZNJiB2bSwgQ29weVBhcnNlZEJsb2NrVGFnLCBQ
cm9ncmFtQ29kZUJsb2NrJiBvdGhlcikKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmNwcAko
cmV2aXNpb24gMjg2MDI0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlu
a2VkRnVuY3Rpb25FeGVjdXRhYmxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjUxLDcgKzI1MSw3
IEBAIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIFVubGlua2VkRnVuY3QKICAgICAgICAgbV91
bmxpbmtlZENvZGVCbG9ja0ZvckNvbnN0cnVjdC5zZXQodm0sIHRoaXMsIHJlc3VsdCk7CiAgICAg
ICAgIGJyZWFrOwogICAgIH0KLSAgICB2bS51bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZVNwYWNl
LnNldC5hZGQodGhpcyk7CisgICAgdm0udW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGVTcGFjZSgp
LnNldC5hZGQodGhpcyk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApAQCAtMzEwLDcgKzMxMCw3
IEBAIHZvaWQgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OmZpbmFsaXoKICAgICAgICAgY2xl
YXJJZkRlYWQobV91bmxpbmtlZENvZGVCbG9ja0ZvckNhbGwpOwogICAgICAgICBjbGVhcklmRGVh
ZChtX3VubGlua2VkQ29kZUJsb2NrRm9yQ29uc3RydWN0KTsKICAgICAgICAgaWYgKGlzQ2xlYXJl
ZCAmJiAhaXNTdGlsbFZhbGlkKQotICAgICAgICAgICAgdm0udW5saW5rZWRGdW5jdGlvbkV4ZWN1
dGFibGVTcGFjZS5zZXQucmVtb3ZlKHRoaXMpOworICAgICAgICAgICAgdm0udW5saW5rZWRGdW5j
dGlvbkV4ZWN1dGFibGVTcGFjZSgpLnNldC5yZW1vdmUodGhpcyk7CiAgICAgfQogfQogCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFi
bGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5r
ZWRGdW5jdGlvbkV4ZWN1dGFibGUuaAkocmV2aXNpb24gMjg2MDI0KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTY3LDcgKzY3LDcgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENl
bGxUeXBlLCBTdWJzcGFjZUFjY2Vzcz4KICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNl
Rm9yKFZNJiB2bSkKICAgICB7Ci0gICAgICAgIHJldHVybiAmdm0udW5saW5rZWRGdW5jdGlvbkV4
ZWN1dGFibGVTcGFjZS5zcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS51bmxpbmtlZEZ1bmN0aW9u
RXhlY3V0YWJsZVNwYWNlKCkuc3BhY2U7CiAgICAgfQogCiAgICAgc3RhdGljIFVubGlua2VkRnVu
Y3Rpb25FeGVjdXRhYmxlKiBjcmVhdGUoVk0mIHZtLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2Us
IEZ1bmN0aW9uTWV0YWRhdGFOb2RlKiBub2RlLCBVbmxpbmtlZEZ1bmN0aW9uS2luZCB1bmxpbmtl
ZEZ1bmN0aW9uS2luZCwgQ29uc3RydWN0QWJpbGl0eSBjb25zdHJ1Y3RBYmlsaXR5LCBKU1BhcnNl
clNjcmlwdE1vZGUgc2NyaXB0TW9kZSwgUmVmUHRyPFREWkVudmlyb25tZW50TGluaz4gcGFyZW50
U2NvcGVURFpWYXJpYWJsZXMsIHN0ZDo6b3B0aW9uYWw8UHJpdmF0ZU5hbWVFbnZpcm9ubWVudD4g
cGFyZW50UHJpdmF0ZU5hbWVFbnZpcm9ubWVudCwgRGVyaXZlZENvbnRleHRUeXBlIGRlcml2ZWRD
b250ZXh0VHlwZSwgTmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIgbmVlZHNDbGFzc0ZpZWxkSW5p
dGlhbGl6ZXIsIFByaXZhdGVCcmFuZFJlcXVpcmVtZW50IHByaXZhdGVCcmFuZFJlcXVpcmVtZW50
LCBib29sIGlzQnVpbHRpbkRlZmF1bHRDbGFzc0NvbnN0cnVjdG9yID0gZmFsc2UpCkBAIC0xMzEs
NyArMTMxLDcgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgbV91bmxpbmtlZENvZGVCbG9ja0Zv
ckNhbGwuY2xlYXIoKTsKICAgICAgICAgbV91bmxpbmtlZENvZGVCbG9ja0ZvckNvbnN0cnVjdC5j
bGVhcigpOwotICAgICAgICB2bS51bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZVNwYWNlLnNldC5y
ZW1vdmUodGhpcyk7CisgICAgICAgIHZtLnVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlU3BhY2Uo
KS5zZXQucmVtb3ZlKHRoaXMpOwogICAgIH0KIAogICAgIHZvaWQgcmVjb3JkUGFyc2UoQ29kZUZl
YXR1cmVzIGZlYXR1cmVzLCBMZXhpY2FsU2NvcGVGZWF0dXJlcyBsZXhpY2FsU2NvcGVGZWF0dXJl
cywgYm9vbCBoYXNDYXB0dXJlZFZhcmlhYmxlcykKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCShyZXZpc2lvbiAyODYwMjQpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTIwLDcgKzEyMCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRBbGxvY2F0
ZVJhd09iamUKIAogICAgIFZNJiB2bSA9IHRoaXMtPnZtKCk7CiAgICAgaWYgKHNpemUpIHsKLSAg
ICAgICAgaWYgKEFsbG9jYXRvciBhbGxvY2F0b3IgPSB2bS5qc1ZhbHVlR2lnYWNhZ2VBdXhpbGlh
cnlTcGFjZS5hbGxvY2F0b3JGb3JOb25WaXJ0dWFsKHNpemUsIEFsbG9jYXRvckZvck1vZGU6OkFs
bG9jYXRvcklmRXhpc3RzKSkgeworICAgICAgICBpZiAoQWxsb2NhdG9yIGFsbG9jYXRvciA9IHZt
LmpzVmFsdWVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlKCkuYWxsb2NhdG9yRm9yTm9uVmlydHVhbChz
aXplLCBBbGxvY2F0b3JGb3JNb2RlOjpBbGxvY2F0b3JJZkV4aXN0cykpIHsKICAgICAgICAgICAg
IG1faml0LmVtaXRBbGxvY2F0ZShzdG9yYWdlR1BSLCBKSVRBbGxvY2F0b3I6OmNvbnN0YW50KGFs
bG9jYXRvciksIHNjcmF0Y2hHUFIsIHNjcmF0Y2gyR1BSLCBzbG93Q2FzZXMpOwogICAgICAgICAg
ICAgCiAgICAgICAgICAgICBtX2ppdC5hZGRQdHIoCkBAIC0xMDczOCw3ICsxMDczOCw3IEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVBbGxvY2F0ZVByb3AKICAgICAKICAgICBzaXplX3Qg
c2l6ZSA9IGluaXRpYWxPdXRPZkxpbmVDYXBhY2l0eSAqIHNpemVvZihKU1ZhbHVlKTsKIAotICAg
IEFsbG9jYXRvciBhbGxvY2F0b3IgPSB2bSgpLmpzVmFsdWVHaWdhY2FnZUF1eGlsaWFyeVNwYWNl
LmFsbG9jYXRvckZvck5vblZpcnR1YWwoc2l6ZSwgQWxsb2NhdG9yRm9yTW9kZTo6QWxsb2NhdG9y
SWZFeGlzdHMpOworICAgIEFsbG9jYXRvciBhbGxvY2F0b3IgPSB2bSgpLmpzVmFsdWVHaWdhY2Fn
ZUF1eGlsaWFyeVNwYWNlKCkuYWxsb2NhdG9yRm9yTm9uVmlydHVhbChzaXplLCBBbGxvY2F0b3JG
b3JNb2RlOjpBbGxvY2F0b3JJZkV4aXN0cyk7CiAKICAgICBpZiAoIWFsbG9jYXRvciB8fCBub2Rl
LT50cmFuc2l0aW9uKCktPnByZXZpb3VzLT5jb3VsZEhhdmVJbmRleGluZ0hlYWRlcigpKSB7CiAg
ICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGJhc2UodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwpA
QCAtMTA3ODIsNyArMTA3ODIsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlUmVhbGxv
Y2F0ZVByCiAgICAgc2l6ZV90IG5ld1NpemUgPSBvbGRTaXplICogb3V0T2ZMaW5lR3Jvd3RoRmFj
dG9yOwogICAgIEFTU0VSVChuZXdTaXplID09IG5vZGUtPnRyYW5zaXRpb24oKS0+bmV4dC0+b3V0
T2ZMaW5lQ2FwYWNpdHkoKSAqIHNpemVvZihKU1ZhbHVlKSk7CiAgICAgCi0gICAgQWxsb2NhdG9y
IGFsbG9jYXRvciA9IHZtKCkuanNWYWx1ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UuYWxsb2NhdG9y
Rm9yTm9uVmlydHVhbChuZXdTaXplLCBBbGxvY2F0b3JGb3JNb2RlOjpBbGxvY2F0b3JJZkV4aXN0
cyk7CisgICAgQWxsb2NhdG9yIGFsbG9jYXRvciA9IHZtKCkuanNWYWx1ZUdpZ2FjYWdlQXV4aWxp
YXJ5U3BhY2UoKS5hbGxvY2F0b3JGb3JOb25WaXJ0dWFsKG5ld1NpemUsIEFsbG9jYXRvckZvck1v
ZGU6OkFsbG9jYXRvcklmRXhpc3RzKTsKIAogICAgIGlmICghYWxsb2NhdG9yIHx8IG5vZGUtPnRy
YW5zaXRpb24oKS0+cHJldmlvdXMtPmNvdWxkSGF2ZUluZGV4aW5nSGVhZGVyKCkpIHsKICAgICAg
ICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYmFzZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CkBAIC0x
MTQ5OSw3ICsxMTQ5OSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXROZXdUeXBlZEFycmF5
V2kKICAgICAgICAgbV9qaXQuYW5kMzIoVHJ1c3RlZEltbTMyKH43KSwgc2NyYXRjaEdQUik7CiAg
ICAgfQogICAgIG1faml0LmVtaXRBbGxvY2F0ZVZhcmlhYmxlU2l6ZWQoCi0gICAgICAgIHN0b3Jh
Z2VHUFIsIHZtKCkucHJpbWl0aXZlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZSwgc2NyYXRjaEdQUiwg
c2NyYXRjaEdQUiwKKyAgICAgICAgc3RvcmFnZUdQUiwgdm0oKS5wcmltaXRpdmVHaWdhY2FnZUF1
eGlsaWFyeVNwYWNlKCksIHNjcmF0Y2hHUFIsIHNjcmF0Y2hHUFIsCiAgICAgICAgIHNjcmF0Y2hH
UFIyLCBzbG93Q2FzZXMpOwogICAgIAogICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIGRvbmUgPSBt
X2ppdC5icmFuY2hUZXN0MzIoTWFjcm9Bc3NlbWJsZXI6Olplcm8sIHNpemVHUFIpOwpAQCAtMTM3
MDAsNyArMTM3MDAsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0QWxsb2NhdGVCdXR0ZXJm
CiAgICAgZGlkTm90T3ZlcmZsb3cubGluaygmbV9qaXQpOwogI2VuZGlmCiAgICAgbV9qaXQuZW1p
dEFsbG9jYXRlVmFyaWFibGVTaXplZCgKLSAgICAgICAgc3RvcmFnZVJlc3VsdEdQUiwgdm0oKS5q
c1ZhbHVlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZSwgc2NyYXRjaDIsIHNjcmF0Y2gxLCBzY3JhdGNo
Mywgc2xvd0Nhc2VzKTsKKyAgICAgICAgc3RvcmFnZVJlc3VsdEdQUiwgdm0oKS5qc1ZhbHVlR2ln
YWNhZ2VBdXhpbGlhcnlTcGFjZSgpLCBzY3JhdGNoMiwgc2NyYXRjaDEsIHNjcmF0Y2gzLCBzbG93
Q2FzZXMpOwogICAgIG1faml0LmFkZFB0cihUcnVzdGVkSW1tMzIoc2l6ZW9mKEluZGV4aW5nSGVh
ZGVyKSksIHN0b3JhZ2VSZXN1bHRHUFIpOwogCiAgICAgbV9qaXQuc3RvcmUzMihzaXplR1BSLCBN
YWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzdG9yYWdlUmVzdWx0R1BSLCBCdXR0ZXJmbHk6Om9mZnNl
dE9mUHVibGljTGVuZ3RoKCkpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
TG93ZXJERkdUb0IzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRs
L0ZUTExvd2VyREZHVG9CMy5jcHAJKHJldmlzaW9uIDI4NjAyNCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODMwMCw3
ICs4MzAwLDcgQEAgSUdOT1JFX0NMQU5HX1dBUk5JTkdTX0VORAogICAgICAgICAgICAgICAgIG1f
b3V0LmNvbnN0SW50UHRyKH5zdGF0aWNfY2FzdDxpbnRwdHJfdD4oNykpKTsKICAgICAgICAgfQog
Ci0gICAgICAgIExWYWx1ZSBhbGxvY2F0b3IgPSBhbGxvY2F0b3JGb3JTaXplKHZtKCkucHJpbWl0
aXZlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZSwgYnl0ZVNpemUsIHNsb3dDYXNlKTsKKyAgICAgICAg
TFZhbHVlIGFsbG9jYXRvciA9IGFsbG9jYXRvckZvclNpemUodm0oKS5wcmltaXRpdmVHaWdhY2Fn
ZUF1eGlsaWFyeVNwYWNlKCksIGJ5dGVTaXplLCBzbG93Q2FzZSk7CiAgICAgICAgIExWYWx1ZSBz
dG9yYWdlID0gYWxsb2NhdGVIZWFwQ2VsbChhbGxvY2F0b3IsIHNsb3dDYXNlKTsKIAogICAgICAg
ICBzcGxhdFdvcmRzKApAQCAtMTM5MjEsNyArMTM5MjEsNyBAQCBJR05PUkVfQ0xBTkdfV0FSTklO
R1NfRU5ECiAgICAgICAgICAgICAgICAgVmFsdWVGcm9tQmxvY2sgbm9CdXR0ZXJmbHkgPSBtX291
dC5hbmNob3IobV9vdXQuaW50UHRyWmVybyk7CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAg
ICAgICAgTFZhbHVlIHN0YXJ0T2ZTdG9yYWdlID0gYWxsb2NhdGVIZWFwQ2VsbCgKLSAgICAgICAg
ICAgICAgICAgICAgYWxsb2NhdG9yRm9yU2l6ZSh2bSgpLmpzVmFsdWVHaWdhY2FnZUF1eGlsaWFy
eVNwYWNlLCBidXR0ZXJmbHlTaXplLCBzbG93UGF0aCksCisgICAgICAgICAgICAgICAgICAgIGFs
bG9jYXRvckZvclNpemUodm0oKS5qc1ZhbHVlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZSgpLCBidXR0
ZXJmbHlTaXplLCBzbG93UGF0aCksCiAgICAgICAgICAgICAgICAgICAgIHNsb3dQYXRoKTsKIAog
ICAgICAgICAgICAgICAgIExWYWx1ZSBmYXN0QnV0dGVyZmx5VmFsdWUgPSBtX291dC5hZGQoCkBA
IC0xNTAxNiw3ICsxNTAxNiw3IEBAIElHTk9SRV9DTEFOR19XQVJOSU5HU19FTkQKICAgICAgICAg
TEJhc2ljQmxvY2sgbGFzdE5leHQgPSBtX291dC5pbnNlcnROZXdCbG9ja3NCZWZvcmUoc2xvd1Bh
dGgpOwogCiAgICAgICAgIHNpemVfdCBzaXplSW5CeXRlcyA9IHNpemVJblZhbHVlcyAqIHNpemVv
ZihKU1ZhbHVlKTsKLSAgICAgICAgQWxsb2NhdG9yIGFsbG9jYXRvciA9IHZtKCkuanNWYWx1ZUdp
Z2FjYWdlQXV4aWxpYXJ5U3BhY2UuYWxsb2NhdG9yRm9yTm9uVmlydHVhbChzaXplSW5CeXRlcywg
QWxsb2NhdG9yRm9yTW9kZTo6QWxsb2NhdG9ySWZFeGlzdHMpOworICAgICAgICBBbGxvY2F0b3Ig
YWxsb2NhdG9yID0gdm0oKS5qc1ZhbHVlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZSgpLmFsbG9jYXRv
ckZvck5vblZpcnR1YWwoc2l6ZUluQnl0ZXMsIEFsbG9jYXRvckZvck1vZGU6OkFsbG9jYXRvcklm
RXhpc3RzKTsKICAgICAgICAgTFZhbHVlIHN0YXJ0T2ZTdG9yYWdlID0gYWxsb2NhdGVIZWFwQ2Vs
bCgKICAgICAgICAgICAgIG1fb3V0LmNvbnN0SW50UHRyKGFsbG9jYXRvci5sb2NhbEFsbG9jYXRv
cigpKSwgc2xvd1BhdGgpOwogICAgICAgICBWYWx1ZUZyb21CbG9jayBmYXN0QnV0dGVyZmx5ID0g
bV9vdXQuYW5jaG9yKApAQCAtMTcwMzgsNyArMTcwMzgsNyBAQCBJR05PUkVfQ0xBTkdfV0FSTklO
R1NfRU5ECiAgICAgICAgIExWYWx1ZSBidXR0ZXJmbHlTaXplID0gbV9vdXQuYWRkKAogICAgICAg
ICAgICAgcGF5bG9hZFNpemUsIG1fb3V0LmNvbnN0SW50UHRyKHNpemVvZihJbmRleGluZ0hlYWRl
cikpKTsKIAotICAgICAgICBMVmFsdWUgYWxsb2NhdG9yID0gYWxsb2NhdG9yRm9yU2l6ZSh2bSgp
LmpzVmFsdWVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlLCBidXR0ZXJmbHlTaXplLCBmYWlsQ2FzZSk7
CisgICAgICAgIExWYWx1ZSBhbGxvY2F0b3IgPSBhbGxvY2F0b3JGb3JTaXplKHZtKCkuanNWYWx1
ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UoKSwgYnV0dGVyZmx5U2l6ZSwgZmFpbENhc2UpOwogICAg
ICAgICBMVmFsdWUgc3RhcnRPZlN0b3JhZ2UgPSBhbGxvY2F0ZUhlYXBDZWxsKGFsbG9jYXRvciwg
ZmFpbENhc2UpOwogCiAgICAgICAgIExWYWx1ZSBidXR0ZXJmbHkgPSBtX291dC5hZGQoc3RhcnRP
ZlN0b3JhZ2UsIG1fb3V0LmNvbnN0SW50UHRyKHNpemVvZihJbmRleGluZ0hlYWRlcikpKTsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0Jsb2NrRGlyZWN0b3J5LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQmxvY2tEaXJlY3RvcnkuaAkocmV2aXNp
b24gMjg2MDI0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQmxvY2tEaXJlY3Rvcnku
aAkod29ya2luZyBjb3B5KQpAQCAtNzQsNyArNzQsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzaHJp
bmsoKTsKICAgICB2b2lkIGFzc2VydE5vVW5zd2VwdCgpOwogICAgIHNpemVfdCBjZWxsU2l6ZSgp
IGNvbnN0IHsgcmV0dXJuIG1fY2VsbFNpemU7IH0KLSAgICBjb25zdCBDZWxsQXR0cmlidXRlcyYg
YXR0cmlidXRlcygpIGNvbnN0IHsgcmV0dXJuIG1fYXR0cmlidXRlczsgfQorICAgIGNvbnN0IENl
bGxBdHRyaWJ1dGVzIGF0dHJpYnV0ZXMoKSBjb25zdCB7IHJldHVybiBtX2F0dHJpYnV0ZXM7IH0K
ICAgICBib29sIG5lZWRzRGVzdHJ1Y3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2F0dHJpYnV0ZXMu
ZGVzdHJ1Y3Rpb24gPT0gTmVlZHNEZXN0cnVjdGlvbjsgfQogICAgIERlc3RydWN0aW9uTW9kZSBk
ZXN0cnVjdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fYXR0cmlidXRlcy5kZXN0cnVjdGlvbjsgfQog
ICAgIEhlYXBDZWxsOjpLaW5kIGNlbGxLaW5kKCkgY29uc3QgeyByZXR1cm4gbV9hdHRyaWJ1dGVz
LmNlbGxLaW5kOyB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Db2RlQmxvY2tT
ZXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Db2RlQmxvY2tT
ZXQuaAkocmV2aXNpb24gMjg2MDI0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ29k
ZUJsb2NrU2V0LmgJKHdvcmtpbmcgY29weSkKQEAgLTY2LDggKzY2LDYgQEAgcHVibGljOgogICAg
IHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+IHZvaWQgaXRlcmF0ZShjb25zdCBGdW5jdG9yJik7
CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4gdm9pZCBpdGVyYXRlKGNvbnN0IEFic3Ry
YWN0TG9ja2VyJiwgY29uc3QgRnVuY3RvciYpOwogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVu
Y3Rvcj4gdm9pZCBpdGVyYXRlVmlhU3Vic3BhY2VzKFZNJiwgY29uc3QgRnVuY3RvciYpOwotICAg
IAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+IHZvaWQgaXRlcmF0ZUN1cnJlbnRseUV4
ZWN1dGluZyhjb25zdCBGdW5jdG9yJik7CiAgICAgCiAgICAgdm9pZCBkdW1wKFByaW50U3RyZWFt
JikgY29uc3Q7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Db2RlQmxvY2tTZXRJ
bmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ29kZUJs
b2NrU2V0SW5saW5lcy5oCShyZXZpc2lvbiAyODYwMjQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9Db2RlQmxvY2tTZXRJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTYwLDE4ICs2
MCw2IEBAIHZvaWQgQ29kZUJsb2NrU2V0OjppdGVyYXRlKGNvbnN0IEFic3RyYWMKIH0KIAogdGVt
cGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4KLXZvaWQgQ29kZUJsb2NrU2V0OjppdGVyYXRlVmlhU3Vi
c3BhY2VzKFZNJiB2bSwgY29uc3QgRnVuY3RvciYgZnVuY3RvcikKLXsKLSAgICB2bS5mb3JFYWNo
Q29kZUJsb2NrU3BhY2UoCi0gICAgICAgIFsmXSAoYXV0byYgc3BhY2VBbmRTZXQpIHsKLSAgICAg
ICAgICAgIHNwYWNlQW5kU2V0LnNwYWNlLmZvckVhY2hMaXZlQ2VsbCgKLSAgICAgICAgICAgICAg
ICBbJl0gKEhlYXBDZWxsKiBjZWxsLCBIZWFwQ2VsbDo6S2luZCkgewotICAgICAgICAgICAgICAg
ICAgICBmdW5jdG9yKGpzQ2FzdDxDb2RlQmxvY2sqPihzdGF0aWNfY2FzdDxKU0NlbGwqPihjZWxs
KSkpOwotICAgICAgICAgICAgICAgIH0pOwotICAgICAgICB9KTsKLX0KLQotdGVtcGxhdGU8dHlw
ZW5hbWUgRnVuY3Rvcj4KIHZvaWQgQ29kZUJsb2NrU2V0OjppdGVyYXRlQ3VycmVudGx5RXhlY3V0
aW5nKGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3IpCiB7CiAgICAgTG9ja2VyIGxvY2tlciB7IG1fbG9j
ayB9OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ29tcGxldGVTdWJzcGFjZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ29tcGxldGVTdWJz
cGFjZS5jcHAJKHJldmlzaW9uIDI4NjAyNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L0NvbXBsZXRlU3Vic3BhY2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw3ICszNSw3IEBACiAK
IG5hbWVzcGFjZSBKU0MgewogCi1Db21wbGV0ZVN1YnNwYWNlOjpDb21wbGV0ZVN1YnNwYWNlKENT
dHJpbmcgbmFtZSwgSGVhcCYgaGVhcCwgSGVhcENlbGxUeXBlKiBoZWFwQ2VsbFR5cGUsIEFsaWdu
ZWRNZW1vcnlBbGxvY2F0b3IqIGFsaWduZWRNZW1vcnlBbGxvY2F0b3IpCitDb21wbGV0ZVN1YnNw
YWNlOjpDb21wbGV0ZVN1YnNwYWNlKENTdHJpbmcgbmFtZSwgSGVhcCYgaGVhcCwgY29uc3QgSGVh
cENlbGxUeXBlJiBoZWFwQ2VsbFR5cGUsIEFsaWduZWRNZW1vcnlBbGxvY2F0b3IqIGFsaWduZWRN
ZW1vcnlBbGxvY2F0b3IpCiAgICAgOiBTdWJzcGFjZShuYW1lLCBoZWFwKQogewogICAgIGluaXRp
YWxpemUoaGVhcENlbGxUeXBlLCBhbGlnbmVkTWVtb3J5QWxsb2NhdG9yKTsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0NvbXBsZXRlU3Vic3BhY2UuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Db21wbGV0ZVN1YnNwYWNlLmgJKHJldmlzaW9uIDI4
NjAyNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0NvbXBsZXRlU3Vic3BhY2UuaAko
d29ya2luZyBjb3B5KQpAQCAtMzEsNyArMzEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogY2xhc3Mg
Q29tcGxldGVTdWJzcGFjZSBmaW5hbCA6IHB1YmxpYyBTdWJzcGFjZSB7CiBwdWJsaWM6Ci0gICAg
SlNfRVhQT1JUX1BSSVZBVEUgQ29tcGxldGVTdWJzcGFjZShDU3RyaW5nIG5hbWUsIEhlYXAmLCBI
ZWFwQ2VsbFR5cGUqLCBBbGlnbmVkTWVtb3J5QWxsb2NhdG9yKik7CisgICAgSlNfRVhQT1JUX1BS
SVZBVEUgQ29tcGxldGVTdWJzcGFjZShDU3RyaW5nIG5hbWUsIEhlYXAmLCBjb25zdCBIZWFwQ2Vs
bFR5cGUmLCBBbGlnbmVkTWVtb3J5QWxsb2NhdG9yKik7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUg
fkNvbXBsZXRlU3Vic3BhY2UoKSBmaW5hbDsKIAogICAgIC8vIEluIHNvbWUgY29kZSBwYXRocywg
d2UgbmVlZCBpdCB0byBiZSBhIGNvbXBpbGUgZXJyb3IgdG8gY2FsbCB0aGUgdmlydHVhbCB2ZXJz
aW9uIG9mIG9uZSBvZgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAJKHJldmlz
aW9uIDI4NjAyNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yMSwxMyArMjEsMjAgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNs
dWRlICJIZWFwLmgiCiAKKyNpbmNsdWRlICJCaWdJbnRPYmplY3QuaCIKKyNpbmNsdWRlICJCb29s
ZWFuT2JqZWN0LmgiCisjaW5jbHVkZSAiQnJhbmRlZFN0cnVjdHVyZS5oIgogI2luY2x1ZGUgIkJ1
aWx0aW5FeGVjdXRhYmxlcy5oIgorI2luY2x1ZGUgIkNsb25lZEFyZ3VtZW50cy5oIgogI2luY2x1
ZGUgIkNvZGVCbG9jay5oIgogI2luY2x1ZGUgIkNvZGVCbG9ja1NldElubGluZXMuaCIKICNpbmNs
dWRlICJDb2xsZWN0aW5nU2NvcGUuaCIKICNpbmNsdWRlICJDb25zZXJ2YXRpdmVSb290cy5oIgor
I2luY2x1ZGUgIkRhdGVJbnN0YW5jZS5oIgorI2luY2x1ZGUgIkRlYnVnZ2VyU2NvcGUuaCIKICNp
bmNsdWRlICJFZGVuR0NBY3Rpdml0eUNhbGxiYWNrLmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uLmgi
CisjaW5jbHVkZSAiRmFzdE1hbGxvY0FsaWduZWRNZW1vcnlBbGxvY2F0b3IuaCIKICNpbmNsdWRl
ICJGdWxsR0NBY3Rpdml0eUNhbGxiYWNrLmgiCiAjaW5jbHVkZSAiRnVuY3Rpb25FeGVjdXRhYmxl
SW5saW5lcy5oIgogI2luY2x1ZGUgIkdDQWN0aXZpdHlDYWxsYmFjay5oIgpAQCAtMzUsNiArNDIs
NyBAQAogI2luY2x1ZGUgIkdDSW5jb21pbmdSZWZDb3VudGVkU2V0SW5saW5lcy5oIgogI2luY2x1
ZGUgIkdDU2VnbWVudGVkQXJyYXlJbmxpbmVzLmgiCiAjaW5jbHVkZSAiR0NUeXBlTWFwLmgiCisj
aW5jbHVkZSAiR2V0dGVyU2V0dGVyLmgiCiAjaW5jbHVkZSAiSGFzT3duUHJvcGVydHlDYWNoZS5o
IgogI2luY2x1ZGUgIkhlYXBIZWxwZXJQb29sLmgiCiAjaW5jbHVkZSAiSGVhcEl0ZXJhdGlvblNj
b3BlLmgiCkBAIC00MywzNyArNTEsMTE2IEBACiAjaW5jbHVkZSAiSGVhcFZlcmlmaWVyLmgiCiAj
aW5jbHVkZSAiSW5jcmVtZW50YWxTd2VlcGVyLmgiCiAjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIK
KyNpbmNsdWRlICJJbnRsQ29sbGF0b3IuaCIKKyNpbmNsdWRlICJJbnRsRGF0ZVRpbWVGb3JtYXQu
aCIKKyNpbmNsdWRlICJJbnRsRGlzcGxheU5hbWVzLmgiCisjaW5jbHVkZSAiSW50bExpc3RGb3Jt
YXQuaCIKKyNpbmNsdWRlICJJbnRsTG9jYWxlLmgiCisjaW5jbHVkZSAiSW50bE51bWJlckZvcm1h
dC5oIgorI2luY2x1ZGUgIkludGxQbHVyYWxSdWxlcy5oIgorI2luY2x1ZGUgIkludGxSZWxhdGl2
ZVRpbWVGb3JtYXQuaCIKKyNpbmNsdWRlICJJbnRsU2VnbWVudEl0ZXJhdG9yLmgiCisjaW5jbHVk
ZSAiSW50bFNlZ21lbnRlci5oIgorI2luY2x1ZGUgIkludGxTZWdtZW50cy5oIgogI2luY2x1ZGUg
Iklzb0NlbGxTZXRJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSklUU3R1YlJvdXRpbmVTZXQuaCIKICNp
bmNsdWRlICJKSVRXb3JrbGlzdElubGluZXMuaCIKKyNpbmNsdWRlICJKU0FQSUdsb2JhbE9iamVj
dC5oIgorI2luY2x1ZGUgIkpTQVBJVmFsdWVXcmFwcGVyLmgiCisjaW5jbHVkZSAiSlNBUElXcmFw
cGVyT2JqZWN0LmgiCisjaW5jbHVkZSAiSlNBcnJheS5oIgorI2luY2x1ZGUgIkpTQXJyYXlCdWZm
ZXIuaCIKKyNpbmNsdWRlICJKU0FycmF5SXRlcmF0b3IuaCIKKyNpbmNsdWRlICJKU0FzeW5jR2Vu
ZXJhdG9yLmgiCisjaW5jbHVkZSAiSlNCaWdJbnQuaCIKKyNpbmNsdWRlICJKU0JvdW5kRnVuY3Rp
b24uaCIKKyNpbmNsdWRlICJKU0NhbGxiYWNrQ29uc3RydWN0b3IuaCIKKyNpbmNsdWRlICJKU0Nh
bGxiYWNrRnVuY3Rpb24uaCIKKyNpbmNsdWRlICJKU0NhbGxiYWNrT2JqZWN0LmgiCisjaW5jbHVk
ZSAiSlNDYWxsZWUuaCIKKyNpbmNsdWRlICJKU0N1c3RvbUdldHRlckZ1bmN0aW9uLmgiCisjaW5j
bHVkZSAiSlNDdXN0b21TZXR0ZXJGdW5jdGlvbi5oIgorI2luY2x1ZGUgIkpTRGF0YVZpZXcuaCIK
ICNpbmNsdWRlICJKU0ZpbmFsaXphdGlvblJlZ2lzdHJ5LmgiCisjaW5jbHVkZSAiSlNGdW5jdGlv
bi5oIgorI2luY2x1ZGUgIkpTR2xvYmFsTGV4aWNhbEVudmlyb25tZW50LmgiCisjaW5jbHVkZSAi
SlNHbG9iYWxPYmplY3QuaCIKKyNpbmNsdWRlICJKU0luamVjdGVkU2NyaXB0SG9zdC5oIgorI2lu
Y2x1ZGUgIkpTSmF2YVNjcmlwdENhbGxGcmFtZS5oIgorI2luY2x1ZGUgIkpTTWFwLmgiCisjaW5j
bHVkZSAiSlNNYXBJdGVyYXRvci5oIgorI2luY2x1ZGUgIkpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0
LmgiCisjaW5jbHVkZSAiSlNNb2R1bGVSZWNvcmQuaCIKKyNpbmNsdWRlICJKU05hdGl2ZVN0ZEZ1
bmN0aW9uLmgiCisjaW5jbHVkZSAiSlNQcm9taXNlLmgiCisjaW5jbHVkZSAiSlNQcm9wZXJ0eU5h
bWVFbnVtZXJhdG9yLmgiCisjaW5jbHVkZSAiSlNQcm94eS5oIgorI2luY2x1ZGUgIkpTU2NyaXB0
RmV0Y2hQYXJhbWV0ZXJzLmgiCisjaW5jbHVkZSAiSlNTY3JpcHRGZXRjaGVyLmgiCisjaW5jbHVk
ZSAiSlNTZXQuaCIKKyNpbmNsdWRlICJKU1NldEl0ZXJhdG9yLmgiCisjaW5jbHVkZSAiSlNTb3Vy
Y2VDb2RlLmgiCisjaW5jbHVkZSAiSlNTdHJpbmdJdGVyYXRvci5oIgorI2luY2x1ZGUgIkpTVGVt
cGxhdGVPYmplY3REZXNjcmlwdG9yLmgiCisjaW5jbHVkZSAiSlNUb1dhc21JQ0NhbGxlZS5oIgor
I2luY2x1ZGUgIkpTVHlwZWRBcnJheXMuaCIKICNpbmNsdWRlICJKU1ZpcnR1YWxNYWNoaW5lSW50
ZXJuYWwuaCIKICNpbmNsdWRlICJKU1dlYWtNYXAuaCIKICNpbmNsdWRlICJKU1dlYWtPYmplY3RS
ZWYuaCIKICNpbmNsdWRlICJKU1dlYWtTZXQuaCIKICNpbmNsdWRlICJKU1dlYkFzc2VtYmx5Q29k
ZUJsb2NrLmgiCisjaW5jbHVkZSAiSlNXZWJBc3NlbWJseUV4Y2VwdGlvbi5oIgorI2luY2x1ZGUg
IkpTV2ViQXNzZW1ibHlHbG9iYWwuaCIKKyNpbmNsdWRlICJKU1dlYkFzc2VtYmx5SW5zdGFuY2Uu
aCIKKyNpbmNsdWRlICJKU1dlYkFzc2VtYmx5TWVtb3J5LmgiCisjaW5jbHVkZSAiSlNXZWJBc3Nl
bWJseU1vZHVsZS5oIgorI2luY2x1ZGUgIkpTV2ViQXNzZW1ibHlUYWJsZS5oIgorI2luY2x1ZGUg
IkpTV2ViQXNzZW1ibHlUYWcuaCIKKyNpbmNsdWRlICJKU1dpdGhTY29wZS5oIgogI2luY2x1ZGUg
Ik1hY2hpbmVTdGFja01hcmtlci5oIgogI2luY2x1ZGUgIk1hcmtTdGFja01lcmdpbmdDb25zdHJh
aW50LmgiCiAjaW5jbHVkZSAiTWFya2VkSlNWYWx1ZVJlZkFycmF5LmgiCiAjaW5jbHVkZSAiTWFy
a2VkU3BhY2VJbmxpbmVzLmgiCiAjaW5jbHVkZSAiTWFya2luZ0NvbnN0cmFpbnRTZXQuaCIKKyNp
bmNsdWRlICJOYXRpdmVFeGVjdXRhYmxlLmgiCiAjaW5jbHVkZSAiUHJldmVudENvbGxlY3Rpb25T
Y29wZS5oIgorI2luY2x1ZGUgIlByb2dyYW1FeGVjdXRhYmxlLmgiCisjaW5jbHVkZSAiUHJvcGVy
dHlUYWJsZS5oIgorI2luY2x1ZGUgIlByb3h5UmV2b2tlLmgiCisjaW5jbHVkZSAiUmVnRXhwT2Jq
ZWN0LmgiCiAjaW5jbHVkZSAiU2FtcGxpbmdQcm9maWxlci5oIgorI2luY2x1ZGUgIlNjb3BlZEFy
Z3VtZW50cy5oIgogI2luY2x1ZGUgIlNoYWRvd0NoaWNrZW4uaCIKKyNpbmNsdWRlICJTaGFkb3dS
ZWFsbU9iamVjdC5oIgogI2luY2x1ZGUgIlNwYWNlVGltZU11dGF0b3JTY2hlZHVsZXIuaCIKICNp
bmNsdWRlICJTdG9jaGFzdGljU3BhY2VUaW1lTXV0YXRvclNjaGVkdWxlci5oIgogI2luY2x1ZGUg
IlN0b3BJZk5lY2Vzc2FyeVRpbWVyLmgiCisjaW5jbHVkZSAiU3RyaWN0RXZhbEFjdGl2YXRpb24u
aCIKKyNpbmNsdWRlICJTdHJpbmdPYmplY3QuaCIKKyNpbmNsdWRlICJTdHJ1Y3R1cmVDaGFpbi5o
IgogI2luY2x1ZGUgIlN1YnNwYWNlSW5saW5lcy5oIgogI2luY2x1ZGUgIlN1cGVyU2FtcGxlci5o
IgogI2luY2x1ZGUgIlN3ZWVwaW5nU2NvcGUuaCIKKyNpbmNsdWRlICJTeW1ib2xPYmplY3QuaCIK
ICNpbmNsdWRlICJTeW1ib2xUYWJsZUlubGluZXMuaCIKICNpbmNsdWRlICJTeW5jaHJvbm91c1N0
b3BUaGVXb3JsZE11dGF0b3JTY2hlZHVsZXIuaCIKKyNpbmNsdWRlICJUZW1wb3JhbENhbGVuZGFy
LmgiCisjaW5jbHVkZSAiVGVtcG9yYWxEdXJhdGlvbi5oIgorI2luY2x1ZGUgIlRlbXBvcmFsSW5z
dGFudC5oIgorI2luY2x1ZGUgIlRlbXBvcmFsUGxhaW5UaW1lLmgiCisjaW5jbHVkZSAiVGVtcG9y
YWxUaW1lWm9uZS5oIgogI2luY2x1ZGUgIlR5cGVQcm9maWxlci5oIgogI2luY2x1ZGUgIlR5cGVQ
cm9maWxlckxvZy5oIgorI2luY2x1ZGUgIlVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2suaCIKKyNp
bmNsdWRlICJVbmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2suaCIKKyNpbmNsdWRlICJVbmxp
bmtlZFByb2dyYW1Db2RlQmxvY2suaCIKICNpbmNsdWRlICJWTS5oIgogI2luY2x1ZGUgIlZlcmlm
aWVyU2xvdFZpc2l0b3JJbmxpbmVzLmgiCiAjaW5jbHVkZSAiV2Vha01hcEltcGxJbmxpbmVzLmgi
CiAjaW5jbHVkZSAiV2Vha1NldElubGluZXMuaCIKKyNpbmNsdWRlICJXZWJBc3NlbWJseUZ1bmN0
aW9uLmgiCisjaW5jbHVkZSAiV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQuaCIKKyNpbmNsdWRlICJX
ZWJBc3NlbWJseVdyYXBwZXJGdW5jdGlvbi5oIgogI2luY2x1ZGUgPGFsZ29yaXRobT4KICNpbmNs
dWRlIDx3dGYvQ3J5cHRvZ3JhcGhpY2FsbHlSYW5kb21OdW1iZXIuaD4KICNpbmNsdWRlIDx3dGYv
TGlzdER1bXAuaD4KQEAgLTk0LDYgKzE4MSwxMCBAQAogI2luY2x1ZGUgIkpTQ0dMaWJXcmFwcGVy
T2JqZWN0LmgiCiAjZW5kaWYKIAorI2lmIEpTQ19PQkpDX0FQSV9FTkFCTEVECisjaW5jbHVkZSAi
T2JqQ0NhbGxiYWNrRnVuY3Rpb24uaCIKKyNlbmRpZgorCiBuYW1lc3BhY2UgSlNDIHsKIAogbmFt
ZXNwYWNlIHsKQEAgLTI4Niw2ICszNzcsMTE0IEBAIEhlYXA6OkhlYXAoVk0mIHZtLCBIZWFwVHlw
ZSBoZWFwVHlwZSkKICAgICAsIG1faGVscGVyQ2xpZW50KCZoZWFwSGVscGVyUG9vbCgpKQogICAg
ICwgbV90aHJlYWRMb2NrKEJveDxMb2NrPjo6Y3JlYXRlKCkpCiAgICAgLCBtX3RocmVhZENvbmRp
dGlvbihBdXRvbWF0aWNUaHJlYWRDb25kaXRpb246OmNyZWF0ZSgpKQorCisgICAgLy8gbWxhbSBI
ZWFwQ2VsbFR5cGVzCisgICAgLCBhdXhpbGlhcnlIZWFwQ2VsbFR5cGUoQ2VsbEF0dHJpYnV0ZXMo
RG9lc05vdE5lZWREZXN0cnVjdGlvbiwgSGVhcENlbGw6OkF1eGlsaWFyeSkpCisgICAgLCBpbW11
dGFibGVCdXR0ZXJmbHlIZWFwQ2VsbFR5cGUoQ2VsbEF0dHJpYnV0ZXMoRG9lc05vdE5lZWREZXN0
cnVjdGlvbiwgSGVhcENlbGw6OkpTQ2VsbFdpdGhJbmRleGluZ0hlYWRlcikpCisgICAgLCBjZWxs
SGVhcENlbGxUeXBlKENlbGxBdHRyaWJ1dGVzKERvZXNOb3ROZWVkRGVzdHJ1Y3Rpb24sIEhlYXBD
ZWxsOjpKU0NlbGwpKQorICAgICwgZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZShDZWxsQXR0
cmlidXRlcyhOZWVkc0Rlc3RydWN0aW9uLCBIZWFwQ2VsbDo6SlNDZWxsKSkKKyAgICAsIGFwaUds
b2JhbE9iamVjdEhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OkFyZ3M8SlNBUElHbG9iYWxP
YmplY3Q+KCkpCisgICAgLCBjYWxsYmFja0NvbnN0cnVjdG9ySGVhcENlbGxUeXBlKElzb0hlYXBD
ZWxsVHlwZTo6QXJnczxKU0NhbGxiYWNrQ29uc3RydWN0b3I+KCkpCisgICAgLCBjYWxsYmFja0ds
b2JhbE9iamVjdEhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OkFyZ3M8SlNDYWxsYmFja09i
amVjdDxKU0dsb2JhbE9iamVjdD4+KCkpCisgICAgLCBjYWxsYmFja09iamVjdEhlYXBDZWxsVHlw
ZShJc29IZWFwQ2VsbFR5cGU6OkFyZ3M8SlNDYWxsYmFja09iamVjdDxKU05vbkZpbmFsT2JqZWN0
Pj4oKSkKKyAgICAsIGN1c3RvbUdldHRlckZ1bmN0aW9uSGVhcENlbGxUeXBlKElzb0hlYXBDZWxs
VHlwZTo6QXJnczxKU0N1c3RvbUdldHRlckZ1bmN0aW9uPigpKQorICAgICwgY3VzdG9tU2V0dGVy
RnVuY3Rpb25IZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpBcmdzPEpTQ3VzdG9tU2V0dGVy
RnVuY3Rpb24+KCkpCisgICAgLCBkYXRlSW5zdGFuY2VIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxU
eXBlOjpBcmdzPERhdGVJbnN0YW5jZT4oKSkKKyAgICAsIGVycm9ySW5zdGFuY2VIZWFwQ2VsbFR5
cGUoSXNvSGVhcENlbGxUeXBlOjpBcmdzPEVycm9ySW5zdGFuY2U+KCkpCisgICAgLCBmaW5hbGl6
YXRpb25SZWdpc3RyeUNlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6QXJnczxKU0ZpbmFsaXphdGlv
blJlZ2lzdHJ5PigpKQorICAgICwgZ2xvYmFsTGV4aWNhbEVudmlyb25tZW50SGVhcENlbGxUeXBl
KElzb0hlYXBDZWxsVHlwZTo6QXJnczxKU0dsb2JhbExleGljYWxFbnZpcm9ubWVudD4oKSkKKyAg
ICAsIGdsb2JhbE9iamVjdEhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OkFyZ3M8SlNHbG9i
YWxPYmplY3Q+KCkpCisgICAgLCBpbmplY3RlZFNjcmlwdEhvc3RTcGFjZUhlYXBDZWxsVHlwZShJ
c29IZWFwQ2VsbFR5cGU6OkFyZ3M8SW5zcGVjdG9yOjpKU0luamVjdGVkU2NyaXB0SG9zdD4oKSkK
KyAgICAsIGphdmFTY3JpcHRDYWxsRnJhbWVIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpB
cmdzPEluc3BlY3Rvcjo6SlNKYXZhU2NyaXB0Q2FsbEZyYW1lPigpKQorICAgICwganNNb2R1bGVS
ZWNvcmRIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpBcmdzPEpTTW9kdWxlUmVjb3JkPigp
KQorICAgICwgbW9kdWxlTmFtZXNwYWNlT2JqZWN0SGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlw
ZTo6QXJnczxKU01vZHVsZU5hbWVzcGFjZU9iamVjdD4oKSkKKyAgICAsIG5hdGl2ZVN0ZEZ1bmN0
aW9uSGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6QXJnczxKU05hdGl2ZVN0ZEZ1bmN0aW9u
PigpKQorICAgICwgd2Vha01hcEhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OkFyZ3M8SlNX
ZWFrTWFwPigpKQorICAgICwgd2Vha1NldEhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OkFy
Z3M8SlNXZWFrU2V0PigpKQorI2lmIEpTQ19PQkpDX0FQSV9FTkFCTEVECisgICAgLCBhcGlXcmFw
cGVyT2JqZWN0SGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6QXJnczxKU0NhbGxiYWNrT2Jq
ZWN0PEpTQVBJV3JhcHBlck9iamVjdD4+KCkpCisgICAgLCBvYmpDQ2FsbGJhY2tGdW5jdGlvbkhl
YXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OkFyZ3M8T2JqQ0NhbGxiYWNrRnVuY3Rpb24+KCkp
CisjZW5kaWYKKyNpZmRlZiBKU0NfR0xJQl9BUElfRU5BQkxFRAorICAgICwgYXBpV3JhcHBlck9i
amVjdEhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OkFyZ3M8SlNDYWxsYmFja09iamVjdDxK
U0FQSVdyYXBwZXJPYmplY3Q+PigpKQorICAgICwgY2FsbGJhY2tBUElXcmFwcGVyR2xvYmFsT2Jq
ZWN0SGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6QXJnczxKU0NhbGxiYWNrT2JqZWN0PEpT
QVBJV3JhcHBlckdsb2JhbE9iamVjdD4+KCkpCisgICAgLCBqc2NDYWxsYmFja0Z1bmN0aW9uSGVh
cENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6QXJnczxKU0NDYWxsYmFja0Z1bmN0aW9uPigpKQor
I2VuZGlmCisgICAgLCBpbnRsQ29sbGF0b3JIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpB
cmdzPEludGxDb2xsYXRvcj4oKSkKKyAgICAsIGludGxEYXRlVGltZUZvcm1hdEhlYXBDZWxsVHlw
ZShJc29IZWFwQ2VsbFR5cGU6OkFyZ3M8SW50bERhdGVUaW1lRm9ybWF0PigpKQorICAgICwgaW50
bERpc3BsYXlOYW1lc0hlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OkFyZ3M8SW50bERpc3Bs
YXlOYW1lcz4oKSkKKyAgICAsIGludGxMaXN0Rm9ybWF0SGVhcENlbGxUeXBlKElzb0hlYXBDZWxs
VHlwZTo6QXJnczxJbnRsTGlzdEZvcm1hdD4oKSkKKyAgICAsIGludGxMb2NhbGVIZWFwQ2VsbFR5
cGUoSXNvSGVhcENlbGxUeXBlOjpBcmdzPEludGxMb2NhbGU+KCkpCisgICAgLCBpbnRsTnVtYmVy
Rm9ybWF0SGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6QXJnczxJbnRsTnVtYmVyRm9ybWF0
PigpKQorICAgICwgaW50bFBsdXJhbFJ1bGVzSGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6
QXJnczxJbnRsUGx1cmFsUnVsZXM+KCkpCisgICAgLCBpbnRsUmVsYXRpdmVUaW1lRm9ybWF0SGVh
cENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6QXJnczxJbnRsUmVsYXRpdmVUaW1lRm9ybWF0Pigp
KQorICAgICwgaW50bFNlZ21lbnRJdGVyYXRvckhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6
OkFyZ3M8SW50bFNlZ21lbnRJdGVyYXRvcj4oKSkKKyAgICAsIGludGxTZWdtZW50ZXJIZWFwQ2Vs
bFR5cGUoSXNvSGVhcENlbGxUeXBlOjpBcmdzPEludGxTZWdtZW50ZXI+KCkpCisgICAgLCBpbnRs
U2VnbWVudHNIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpBcmdzPEludGxTZWdtZW50cz4o
KSkKKyNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCisgICAgLCB3ZWJBc3NlbWJseUNvZGVCbG9ja0hl
YXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OkFyZ3M8SlNXZWJBc3NlbWJseUNvZGVCbG9jaz4o
KSkKKyAgICAsIHdlYkFzc2VtYmx5RXhjZXB0aW9uSGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlw
ZTo6QXJnczxKU1dlYkFzc2VtYmx5RXhjZXB0aW9uPigpKQorICAgICwgd2ViQXNzZW1ibHlGdW5j
dGlvbkhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OkFyZ3M8V2ViQXNzZW1ibHlGdW5jdGlv
bj4oKSkKKyAgICAsIHdlYkFzc2VtYmx5R2xvYmFsSGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlw
ZTo6QXJnczxKU1dlYkFzc2VtYmx5R2xvYmFsPigpKQorICAgICwgd2ViQXNzZW1ibHlJbnN0YW5j
ZUhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OkFyZ3M8SlNXZWJBc3NlbWJseUluc3RhbmNl
PigpKQorICAgICwgd2ViQXNzZW1ibHlNZW1vcnlIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBl
OjpBcmdzPEpTV2ViQXNzZW1ibHlNZW1vcnk+KCkpCisgICAgLCB3ZWJBc3NlbWJseU1vZHVsZUhl
YXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OkFyZ3M8SlNXZWJBc3NlbWJseU1vZHVsZT4oKSkK
KyAgICAsIHdlYkFzc2VtYmx5TW9kdWxlUmVjb3JkSGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlw
ZTo6QXJnczxXZWJBc3NlbWJseU1vZHVsZVJlY29yZD4oKSkKKyAgICAsIHdlYkFzc2VtYmx5VGFi
bGVIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpBcmdzPEpTV2ViQXNzZW1ibHlUYWJsZT4o
KSkKKyAgICAsIHdlYkFzc2VtYmx5VGFnSGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6QXJn
czxKU1dlYkFzc2VtYmx5VGFnPigpKQorI2VuZGlmCisKKyAgICAvLyBtbGFtIEFsaWduZWRNZW1v
cnlBbGxvY2F0b3JzCisgICAgLCBmYXN0TWFsbG9jQWxsb2NhdG9yKG1ha2VVbmlxdWU8RmFzdE1h
bGxvY0FsaWduZWRNZW1vcnlBbGxvY2F0b3I+KCkpCisgICAgLCBwcmltaXRpdmVHaWdhY2FnZUFs
bG9jYXRvcihtYWtlVW5pcXVlPEdpZ2FjYWdlQWxpZ25lZE1lbW9yeUFsbG9jYXRvcj4oR2lnYWNh
Z2U6OlByaW1pdGl2ZSkpCisgICAgLCBqc1ZhbHVlR2lnYWNhZ2VBbGxvY2F0b3IobWFrZVVuaXF1
ZTxHaWdhY2FnZUFsaWduZWRNZW1vcnlBbGxvY2F0b3I+KEdpZ2FjYWdlOjpKU1ZhbHVlKSkKKwor
ICAgIC8vIG1sYW0gU3Vic3BhY2VzCisgICAgLCBwcmltaXRpdmVHaWdhY2FnZUF1eGlsaWFyeVNw
YWNlKCJQcmltaXRpdmUgR2lnYWNhZ2UgQXV4aWxpYXJ5IiwgKnRoaXMsIGF1eGlsaWFyeUhlYXBD
ZWxsVHlwZSwgcHJpbWl0aXZlR2lnYWNhZ2VBbGxvY2F0b3IuZ2V0KCkpIC8vIEhhc2g6MHgzZTdj
ZDc2MgorICAgICwganNWYWx1ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UoIkpTVmFsdWUgR2lnYWNh
Z2UgQXV4aWxpYXJ5IiwgKnRoaXMsIGF1eGlsaWFyeUhlYXBDZWxsVHlwZSwganNWYWx1ZUdpZ2Fj
YWdlQWxsb2NhdG9yLmdldCgpKSAvLyBIYXNoOjB4MjQxZTk0NgorICAgICwgaW1tdXRhYmxlQnV0
dGVyZmx5SlNWYWx1ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UoIkltbXV0YWJsZUJ1dHRlcmZseSBH
aWdhY2FnZSBKU0NlbGxXaXRoSW5kZXhpbmdIZWFkZXIiLCAqdGhpcywgaW1tdXRhYmxlQnV0dGVy
Zmx5SGVhcENlbGxUeXBlLCBqc1ZhbHVlR2lnYWNhZ2VBbGxvY2F0b3IuZ2V0KCkpIC8vIEhhc2g6
MHg3YTk0NTMwMAorICAgICwgY2VsbFNwYWNlKCJKU0NlbGwiLCAqdGhpcywgY2VsbEhlYXBDZWxs
VHlwZSwgZmFzdE1hbGxvY0FsbG9jYXRvci5nZXQoKSkgLy8gSGFzaDoweGFkZmI1YTc5CisgICAg
LCB2YXJpYWJsZVNpemVkQ2VsbFNwYWNlKCJWYXJpYWJsZSBTaXplZCBKU0NlbGwiLCAqdGhpcywg
Y2VsbEhlYXBDZWxsVHlwZSwgZmFzdE1hbGxvY0FsbG9jYXRvci5nZXQoKSkgLy8gSGFzaDoweGJj
ZDc2OWNjCisgICAgLCBkZXN0cnVjdGlibGVPYmplY3RTcGFjZSgiSlNEZXN0cnVjdGlibGVPYmpl
Y3QiLCAqdGhpcywgZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLCBmYXN0TWFsbG9jQWxs
b2NhdG9yLmdldCgpKSAvLyBIYXNoOjB4NGY1ZWQ3YTkKKyAgICAsIGFycmF5U3BhY2UgSVNPX1NV
QlNQQUNFX0lOSVQoKnRoaXMsIGNlbGxIZWFwQ2VsbFR5cGUsIEpTQXJyYXkpCisgICAgLCBiaWdJ
bnRTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVCgqdGhpcywgY2VsbEhlYXBDZWxsVHlwZSwgSlNCaWdJ
bnQpCisgICAgLCBjYWxsZWVTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVCgqdGhpcywgY2VsbEhlYXBD
ZWxsVHlwZSwgSlNDYWxsZWUpCisgICAgLCBjbG9uZWRBcmd1bWVudHNTcGFjZSBJU09fU1VCU1BB
Q0VfSU5JVCgqdGhpcywgY2VsbEhlYXBDZWxsVHlwZSwgQ2xvbmVkQXJndW1lbnRzKQorICAgICwg
Y3VzdG9tR2V0dGVyU2V0dGVyU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoKnRoaXMsIGNlbGxIZWFw
Q2VsbFR5cGUsIEN1c3RvbUdldHRlclNldHRlcikKKyAgICAsIGRhdGVJbnN0YW5jZVNwYWNlIElT
T19TVUJTUEFDRV9JTklUKCp0aGlzLCBkYXRlSW5zdGFuY2VIZWFwQ2VsbFR5cGUsIERhdGVJbnN0
YW5jZSkKKyAgICAsIGRvbUF0dHJpYnV0ZUdldHRlclNldHRlclNwYWNlIElTT19TVUJTUEFDRV9J
TklUKCp0aGlzLCBjZWxsSGVhcENlbGxUeXBlLCBET01BdHRyaWJ1dGVHZXR0ZXJTZXR0ZXIpCisg
ICAgLCBleGNlcHRpb25TcGFjZSBJU09fU1VCU1BBQ0VfSU5JVCgqdGhpcywgZGVzdHJ1Y3RpYmxl
Q2VsbEhlYXBDZWxsVHlwZSwgRXhjZXB0aW9uKQorICAgICwgZXhlY3V0YWJsZVRvQ29kZUJsb2Nr
RWRnZVNwYWNlIElTT19TVUJTUEFDRV9JTklUKCp0aGlzLCBjZWxsSGVhcENlbGxUeXBlLCBFeGVj
dXRhYmxlVG9Db2RlQmxvY2tFZGdlKSAvLyBIYXNoOjB4N2I3MzBiMjAKKyAgICAsIGZ1bmN0aW9u
U3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoKnRoaXMsIGNlbGxIZWFwQ2VsbFR5cGUsIEpTRnVuY3Rp
b24pIC8vIEhhc2g6MHg4MDBmY2E3MgorICAgICwgZ2V0dGVyU2V0dGVyU3BhY2UgSVNPX1NVQlNQ
QUNFX0lOSVQoKnRoaXMsIGNlbGxIZWFwQ2VsbFR5cGUsIEdldHRlclNldHRlcikKKyAgICAsIGds
b2JhbExleGljYWxFbnZpcm9ubWVudFNwYWNlIElTT19TVUJTUEFDRV9JTklUKCp0aGlzLCBnbG9i
YWxMZXhpY2FsRW52aXJvbm1lbnRIZWFwQ2VsbFR5cGUsIEpTR2xvYmFsTGV4aWNhbEVudmlyb25t
ZW50KQorICAgICwgaW50ZXJuYWxGdW5jdGlvblNwYWNlIElTT19TVUJTUEFDRV9JTklUKCp0aGlz
LCBjZWxsSGVhcENlbGxUeXBlLCBJbnRlcm5hbEZ1bmN0aW9uKSAvLyBIYXNoOjB4Zjg0NWM0NjQK
KyAgICAsIGpzUHJveHlTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVCgqdGhpcywgY2VsbEhlYXBDZWxs
VHlwZSwgSlNQcm94eSkKKyAgICAsIG5hdGl2ZUV4ZWN1dGFibGVTcGFjZSBJU09fU1VCU1BBQ0Vf
SU5JVCgqdGhpcywgZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZSwgTmF0aXZlRXhlY3V0YWJs
ZSkgLy8gSGFzaDoweDY3NTY3Zjk1CisgICAgLCBudW1iZXJPYmplY3RTcGFjZSBJU09fU1VCU1BB
Q0VfSU5JVCgqdGhpcywgY2VsbEhlYXBDZWxsVHlwZSwgTnVtYmVyT2JqZWN0KQorICAgICwgcGxh
aW5PYmplY3RTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVCgqdGhpcywgY2VsbEhlYXBDZWxsVHlwZSwg
SlNOb25GaW5hbE9iamVjdCkgLy8gTWFpbmx5IHVzZWQgZm9yIHByb3RvdHlwZXMuCisgICAgLCBw
cm9taXNlU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoKnRoaXMsIGNlbGxIZWFwQ2VsbFR5cGUsIEpT
UHJvbWlzZSkKKyAgICAsIHByb3BlcnR5TmFtZUVudW1lcmF0b3JTcGFjZSBJU09fU1VCU1BBQ0Vf
SU5JVCgqdGhpcywgY2VsbEhlYXBDZWxsVHlwZSwgSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yKQor
ICAgICwgcHJvcGVydHlUYWJsZVNwYWNlIElTT19TVUJTUEFDRV9JTklUKCp0aGlzLCBkZXN0cnVj
dGlibGVDZWxsSGVhcENlbGxUeXBlLCBQcm9wZXJ0eVRhYmxlKSAvLyBIYXNoOjB4YzZiYzlmMTIK
KyAgICAsIHJlZ0V4cFNwYWNlIElTT19TVUJTUEFDRV9JTklUKCp0aGlzLCBkZXN0cnVjdGlibGVD
ZWxsSGVhcENlbGxUeXBlLCBSZWdFeHApCisgICAgLCByZWdFeHBPYmplY3RTcGFjZSBJU09fU1VC
U1BBQ0VfSU5JVCgqdGhpcywgY2VsbEhlYXBDZWxsVHlwZSwgUmVnRXhwT2JqZWN0KQorICAgICwg
cm9wZVN0cmluZ1NwYWNlIElTT19TVUJTUEFDRV9JTklUKCp0aGlzLCBzdHJpbmdIZWFwQ2VsbFR5
cGUsIEpTUm9wZVN0cmluZykKKyAgICAsIHNjb3BlZEFyZ3VtZW50c1NwYWNlIElTT19TVUJTUEFD
RV9JTklUKCp0aGlzLCBjZWxsSGVhcENlbGxUeXBlLCBTY29wZWRBcmd1bWVudHMpCisgICAgLCBz
cGFyc2VBcnJheVZhbHVlTWFwU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoKnRoaXMsIGRlc3RydWN0
aWJsZUNlbGxIZWFwQ2VsbFR5cGUsIFNwYXJzZUFycmF5VmFsdWVNYXApCisgICAgLCBzdHJpbmdT
cGFjZSBJU09fU1VCU1BBQ0VfSU5JVCgqdGhpcywgc3RyaW5nSGVhcENlbGxUeXBlLCBKU1N0cmlu
ZykgLy8gSGFzaDoweDkwY2Y3NThmCisgICAgLCBzdHJpbmdPYmplY3RTcGFjZSBJU09fU1VCU1BB
Q0VfSU5JVCgqdGhpcywgY2VsbEhlYXBDZWxsVHlwZSwgU3RyaW5nT2JqZWN0KQorICAgICwgc3Ry
dWN0dXJlQ2hhaW5TcGFjZSBJU09fU1VCU1BBQ0VfSU5JVCgqdGhpcywgY2VsbEhlYXBDZWxsVHlw
ZSwgU3RydWN0dXJlQ2hhaW4pCisgICAgLCBzdHJ1Y3R1cmVSYXJlRGF0YVNwYWNlIElTT19TVUJT
UEFDRV9JTklUKCp0aGlzLCBkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlLCBTdHJ1Y3R1cmVS
YXJlRGF0YSkgLy8gSGFzaDoweGFjYTRlNjJkCisgICAgLCBzdHJ1Y3R1cmVTcGFjZSBJU09fU1VC
U1BBQ0VfSU5JVCgqdGhpcywgZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZSwgU3RydWN0dXJl
KSAvLyBIYXNoOjB4MWYxYmNkY2EKKyAgICAsIGJyYW5kZWRTdHJ1Y3R1cmVTcGFjZSBJU09fU1VC
U1BBQ0VfSU5JVCgqdGhpcywgZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZSwgQnJhbmRlZFN0
cnVjdHVyZSkKKyAgICAsIHN5bWJvbFRhYmxlU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoKnRoaXMs
IGRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUsIFN5bWJvbFRhYmxlKSAvLyBIYXNoOjB4YzUy
MTVhZmQKKyAgICAsIGV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2VzV2l0aENvbnN0cmFpbnRzKGV4
ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2VTcGFjZSkKKyAgICAsIGV4ZWN1dGFibGVUb0NvZGVCbG9j
a0VkZ2VzV2l0aEZpbmFsaXplcnMoZXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZVNwYWNlKQorICAg
ICwgY29kZUJsb2NrU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoKnRoaXMsIGRlc3RydWN0aWJsZUNl
bGxIZWFwQ2VsbFR5cGUsIENvZGVCbG9jaykgLy8gSGFzaDoweDc3ZTY2ZWM5CisgICAgLCBmdW5j
dGlvbkV4ZWN1dGFibGVTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVCgqdGhpcywgZGVzdHJ1Y3RpYmxl
Q2VsbEhlYXBDZWxsVHlwZSwgRnVuY3Rpb25FeGVjdXRhYmxlKSAvLyBIYXNoOjB4NWQxNThmMwor
ICAgICwgcHJvZ3JhbUV4ZWN1dGFibGVTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVCgqdGhpcywgZGVz
dHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZSwgUHJvZ3JhbUV4ZWN1dGFibGUpIC8vIEhhc2g6MHg1
MjdjNzdlNworICAgICwgdW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGVTcGFjZSBJU09fU1VCU1BB
Q0VfSU5JVCgqdGhpcywgZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZSwgVW5saW5rZWRGdW5j
dGlvbkV4ZWN1dGFibGUpIC8vIEhhc2g6MHhmNmI4MjhkOQorCiB7CiAgICAgbV93b3JsZFN0YXRl
LnN0b3JlKDApOwogCkBAIC01NzksMzEgKzc3OCwzMSBAQCB2b2lkIEhlYXA6OmZpbmFsaXplVW5j
b25kaXRpb25hbEZpbmFsaXplCiB7CiAgICAgVk0mIHZtID0gdGhpcy0+dm0oKTsKICAgICB2bS5i
dWlsdGluRXhlY3V0YWJsZXMoKS0+ZmluYWxpemVVbmNvbmRpdGlvbmFsbHkoKTsKLSAgICBmaW5h
bGl6ZU1hcmtlZFVuY29uZGl0aW9uYWxGaW5hbGl6ZXJzPEZ1bmN0aW9uRXhlY3V0YWJsZT4odm0u
ZnVuY3Rpb25FeGVjdXRhYmxlU3BhY2Uuc3BhY2UpOwotICAgIGZpbmFsaXplTWFya2VkVW5jb25k
aXRpb25hbEZpbmFsaXplcnM8U3ltYm9sVGFibGU+KHZtLnN5bWJvbFRhYmxlU3BhY2UpOwotICAg
IGZpbmFsaXplTWFya2VkVW5jb25kaXRpb25hbEZpbmFsaXplcnM8RXhlY3V0YWJsZVRvQ29kZUJs
b2NrRWRnZT4odm0uZXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZXNXaXRoRmluYWxpemVycyk7IC8v
IFdlIHJ1biB0aGlzIGJlZm9yZSBDb2RlQmxvY2sncyB1bmNvbmRpdGlvbmFsIGZpbmFsaXplciBz
aW5jZSBDb2RlQmxvY2sgbG9va3MgYXQgdGhlIG93bmVyIGV4ZWN1dGFibGUncyBpbnN0YWxsZWQg
Q29kZUJsb2NrIGluIGl0cyBmaW5hbGl6ZVVuY29uZGl0aW9uYWxseS4KLSAgICB2bS5mb3JFYWNo
Q29kZUJsb2NrU3BhY2UoCisgICAgZmluYWxpemVNYXJrZWRVbmNvbmRpdGlvbmFsRmluYWxpemVy
czxGdW5jdGlvbkV4ZWN1dGFibGU+KGZ1bmN0aW9uRXhlY3V0YWJsZVNwYWNlLnNwYWNlKTsKKyAg
ICBmaW5hbGl6ZU1hcmtlZFVuY29uZGl0aW9uYWxGaW5hbGl6ZXJzPFN5bWJvbFRhYmxlPihzeW1i
b2xUYWJsZVNwYWNlKTsKKyAgICBmaW5hbGl6ZU1hcmtlZFVuY29uZGl0aW9uYWxGaW5hbGl6ZXJz
PEV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2U+KGV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2VzV2l0
aEZpbmFsaXplcnMpOyAvLyBXZSBydW4gdGhpcyBiZWZvcmUgQ29kZUJsb2NrJ3MgdW5jb25kaXRp
b25hbCBmaW5hbGl6ZXIgc2luY2UgQ29kZUJsb2NrIGxvb2tzIGF0IHRoZSBvd25lciBleGVjdXRh
YmxlJ3MgaW5zdGFsbGVkIENvZGVCbG9jayBpbiBpdHMgZmluYWxpemVVbmNvbmRpdGlvbmFsbHku
CisgICAgZm9yRWFjaENvZGVCbG9ja1NwYWNlKAogICAgICAgICBbJl0gKGF1dG8mIHNwYWNlKSB7
CiAgICAgICAgICAgICB0aGlzLT5maW5hbGl6ZU1hcmtlZFVuY29uZGl0aW9uYWxGaW5hbGl6ZXJz
PENvZGVCbG9jaz4oc3BhY2Uuc2V0KTsKICAgICAgICAgfSk7Ci0gICAgZmluYWxpemVNYXJrZWRV
bmNvbmRpdGlvbmFsRmluYWxpemVyczxTdHJ1Y3R1cmVSYXJlRGF0YT4odm0uc3RydWN0dXJlUmFy
ZURhdGFTcGFjZSk7Ci0gICAgZmluYWxpemVNYXJrZWRVbmNvbmRpdGlvbmFsRmluYWxpemVyczxV
bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZT4odm0udW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGVT
cGFjZS5zZXQpOwotICAgIGlmICh2bS5tX3dlYWtTZXRTcGFjZSkKLSAgICAgICAgZmluYWxpemVN
YXJrZWRVbmNvbmRpdGlvbmFsRmluYWxpemVyczxKU1dlYWtTZXQ+KCp2bS5tX3dlYWtTZXRTcGFj
ZSk7Ci0gICAgaWYgKHZtLm1fd2Vha01hcFNwYWNlKQotICAgICAgICBmaW5hbGl6ZU1hcmtlZFVu
Y29uZGl0aW9uYWxGaW5hbGl6ZXJzPEpTV2Vha01hcD4oKnZtLm1fd2Vha01hcFNwYWNlKTsKLSAg
ICBpZiAodm0ubV93ZWFrT2JqZWN0UmVmU3BhY2UpCi0gICAgICAgIGZpbmFsaXplTWFya2VkVW5j
b25kaXRpb25hbEZpbmFsaXplcnM8SlNXZWFrT2JqZWN0UmVmPigqdm0ubV93ZWFrT2JqZWN0UmVm
U3BhY2UpOwotICAgIGlmICh2bS5tX2Vycm9ySW5zdGFuY2VTcGFjZSkKLSAgICAgICAgZmluYWxp
emVNYXJrZWRVbmNvbmRpdGlvbmFsRmluYWxpemVyczxFcnJvckluc3RhbmNlPigqdm0ubV9lcnJv
ckluc3RhbmNlU3BhY2UpOworICAgIGZpbmFsaXplTWFya2VkVW5jb25kaXRpb25hbEZpbmFsaXpl
cnM8U3RydWN0dXJlUmFyZURhdGE+KHN0cnVjdHVyZVJhcmVEYXRhU3BhY2UpOworICAgIGZpbmFs
aXplTWFya2VkVW5jb25kaXRpb25hbEZpbmFsaXplcnM8VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFi
bGU+KHVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlU3BhY2Uuc2V0KTsKKyAgICBpZiAobV93ZWFr
U2V0U3BhY2UpCisgICAgICAgIGZpbmFsaXplTWFya2VkVW5jb25kaXRpb25hbEZpbmFsaXplcnM8
SlNXZWFrU2V0PigqbV93ZWFrU2V0U3BhY2UpOworICAgIGlmIChtX3dlYWtNYXBTcGFjZSkKKyAg
ICAgICAgZmluYWxpemVNYXJrZWRVbmNvbmRpdGlvbmFsRmluYWxpemVyczxKU1dlYWtNYXA+KCpt
X3dlYWtNYXBTcGFjZSk7CisgICAgaWYgKG1fd2Vha09iamVjdFJlZlNwYWNlKQorICAgICAgICBm
aW5hbGl6ZU1hcmtlZFVuY29uZGl0aW9uYWxGaW5hbGl6ZXJzPEpTV2Vha09iamVjdFJlZj4oKm1f
d2Vha09iamVjdFJlZlNwYWNlKTsKKyAgICBpZiAobV9lcnJvckluc3RhbmNlU3BhY2UpCisgICAg
ICAgIGZpbmFsaXplTWFya2VkVW5jb25kaXRpb25hbEZpbmFsaXplcnM8RXJyb3JJbnN0YW5jZT4o
Km1fZXJyb3JJbnN0YW5jZVNwYWNlKTsKIAogICAgIC8vIEZpbmFsaXphdGlvblJlZ2lzdHJpZXMg
Y3VycmVudGx5IHJlbHkgb24gc2VyaWFsIGZpbmFsaXphdGlvbiBiZWNhdXNlIHRoZXkgY2FuIHBv
c3QgdGFza3MgdG8gdGhlIGRlZmVycmVkV29ya1RpbWVyLCB3aGljaCBub3JtYWxseSBleHBlY3Rz
IHRhc2tzIHRvIG9ubHkgYmUgcG9zdGVkIGJ5IHRoZSBBUEkgbG9jayBob2xkZXIuCi0gICAgaWYg
KHZtLm1fZmluYWxpemF0aW9uUmVnaXN0cnlTcGFjZSkKLSAgICAgICAgZmluYWxpemVNYXJrZWRV
bmNvbmRpdGlvbmFsRmluYWxpemVyczxKU0ZpbmFsaXphdGlvblJlZ2lzdHJ5Pigqdm0ubV9maW5h
bGl6YXRpb25SZWdpc3RyeVNwYWNlKTsKKyAgICBpZiAobV9maW5hbGl6YXRpb25SZWdpc3RyeVNw
YWNlKQorICAgICAgICBmaW5hbGl6ZU1hcmtlZFVuY29uZGl0aW9uYWxGaW5hbGl6ZXJzPEpTRmlu
YWxpemF0aW9uUmVnaXN0cnk+KCptX2ZpbmFsaXphdGlvblJlZ2lzdHJ5U3BhY2UpOwogCiAjaWYg
RU5BQkxFKFdFQkFTU0VNQkxZKQotICAgIGlmICh2bS5tX3dlYkFzc2VtYmx5Q29kZUJsb2NrU3Bh
Y2UpCi0gICAgICAgIGZpbmFsaXplTWFya2VkVW5jb25kaXRpb25hbEZpbmFsaXplcnM8SlNXZWJB
c3NlbWJseUNvZGVCbG9jaz4oKnZtLm1fd2ViQXNzZW1ibHlDb2RlQmxvY2tTcGFjZSk7CisgICAg
aWYgKG1fd2ViQXNzZW1ibHlDb2RlQmxvY2tTcGFjZSkKKyAgICAgICAgZmluYWxpemVNYXJrZWRV
bmNvbmRpdGlvbmFsRmluYWxpemVyczxKU1dlYkFzc2VtYmx5Q29kZUJsb2NrPigqbV93ZWJBc3Nl
bWJseUNvZGVCbG9ja1NwYWNlKTsKICNlbmRpZgogfQogCkBAIC05MDUsNyArMTEwNCw3IEBAIHZv
aWQgSGVhcDo6ZGVsZXRlQWxsQ29kZUJsb2NrcyhEZWxldGVBbGwKIAogICAgIGNvbXBsZXRlQWxs
SklUUGxhbnMoKTsKIAotICAgIHZtLmZvckVhY2hTY3JpcHRFeGVjdXRhYmxlU3BhY2UoCisgICAg
Zm9yRWFjaFNjcmlwdEV4ZWN1dGFibGVTcGFjZSgKICAgICAgICAgWyZdIChhdXRvJiBzcGFjZUFu
ZFNldCkgewogICAgICAgICAgICAgSGVhcEl0ZXJhdGlvblNjb3BlIGhlYXBJdGVyYXRpb25TY29w
ZSgqdGhpcyk7CiAgICAgICAgICAgICBhdXRvJiBzZXQgPSBzcGFjZUFuZFNldC5zZXQ7CkBAIC05
MjQsOCArMTEyMyw4IEBAIHZvaWQgSGVhcDo6ZGVsZXRlQWxsQ29kZUJsb2NrcyhEZWxldGVBbGwK
ICAgICAgICAgLy8gcG9pbnRzIGludG8gYSBDb2RlQmxvY2sgdGhhdCBjb3VsZCBiZSBkZWFkLiBU
aGUgSUMgd2lsbCBzdGlsbCBzdWNjZWVkIGJlY2F1c2UKICAgICAgICAgLy8gaXQgdXNlcyBhIGNh
bGxlZSBjaGVjaywgYnV0IHRoZW4gaXQgd2lsbCBjYWxsIGludG8gZGVhZCBjb2RlLgogICAgICAg
ICBIZWFwSXRlcmF0aW9uU2NvcGUgaGVhcEl0ZXJhdGlvblNjb3BlKCp0aGlzKTsKLSAgICAgICAg
aWYgKHZtLm1fd2ViQXNzZW1ibHlDb2RlQmxvY2tTcGFjZSkgewotICAgICAgICAgICAgdm0ubV93
ZWJBc3NlbWJseUNvZGVCbG9ja1NwYWNlLT5mb3JFYWNoTGl2ZUNlbGwoWyZdIChIZWFwQ2VsbCog
Y2VsbCwgSGVhcENlbGw6OktpbmQga2luZCkgeworICAgICAgICBpZiAobV93ZWJBc3NlbWJseUNv
ZGVCbG9ja1NwYWNlKSB7CisgICAgICAgICAgICBtX3dlYkFzc2VtYmx5Q29kZUJsb2NrU3BhY2Ut
PmZvckVhY2hMaXZlQ2VsbChbJl0gKEhlYXBDZWxsKiBjZWxsLCBIZWFwQ2VsbDo6S2luZCBraW5k
KSB7CiAgICAgICAgICAgICAgICAgQVNTRVJUX1VOVVNFRChraW5kLCBraW5kID09IEhlYXBDZWxs
OjpKU0NlbGwpOwogICAgICAgICAgICAgICAgIEpTV2ViQXNzZW1ibHlDb2RlQmxvY2sqIGNvZGVC
bG9jayA9IHN0YXRpY19jYXN0PEpTV2ViQXNzZW1ibHlDb2RlQmxvY2sqPihjZWxsKTsKICAgICAg
ICAgICAgICAgICBjb2RlQmxvY2stPmNsZWFySlNDYWxsSUNzKHZtKTsKQEAgLTk0Niw3ICsxMTQ1
LDcgQEAgdm9pZCBIZWFwOjpkZWxldGVBbGxVbmxpbmtlZENvZGVCbG9ja3MoRAogICAgIFJFTEVB
U0VfQVNTRVJUKCFtX2NvbGxlY3Rpb25TY29wZSk7CiAKICAgICBIZWFwSXRlcmF0aW9uU2NvcGUg
aGVhcEl0ZXJhdGlvblNjb3BlKCp0aGlzKTsKLSAgICB2bS51bmxpbmtlZEZ1bmN0aW9uRXhlY3V0
YWJsZVNwYWNlLnNldC5mb3JFYWNoTGl2ZUNlbGwoCisgICAgdW5saW5rZWRGdW5jdGlvbkV4ZWN1
dGFibGVTcGFjZS5zZXQuZm9yRWFjaExpdmVDZWxsKAogICAgICAgICBbJl0gKEhlYXBDZWxsKiBj
ZWxsLCBIZWFwQ2VsbDo6S2luZCkgewogICAgICAgICAgICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1
dGFibGUqIGV4ZWN1dGFibGUgPSBzdGF0aWNfY2FzdDxVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJs
ZSo+KGNlbGwpOwogICAgICAgICAgICAgZXhlY3V0YWJsZS0+Y2xlYXJDb2RlKHZtKTsKQEAgLTk1
NSwxMCArMTE1NCwxMCBAQCB2b2lkIEhlYXA6OmRlbGV0ZUFsbFVubGlua2VkQ29kZUJsb2NrcyhE
CiAKIHZvaWQgSGVhcDo6ZGVsZXRlVW5tYXJrZWRDb21waWxlZENvZGUoKQogewotICAgIHZtKCku
Zm9yRWFjaFNjcmlwdEV4ZWN1dGFibGVTcGFjZShbXSAoYXV0byYgc3BhY2UpIHsgc3BhY2Uuc3Bh
Y2Uuc3dlZXAoKTsgfSk7CisgICAgZm9yRWFjaFNjcmlwdEV4ZWN1dGFibGVTcGFjZShbXSAoYXV0
byYgc3BhY2UpIHsgc3BhY2Uuc3BhY2Uuc3dlZXAzKCk7IH0pOwogICAgIC8vIFN3ZWVwaW5nIG11
c3Qgb2NjdXIgYmVmb3JlIGRlbGV0aW5nIHN0dWJzLCBvdGhlcndpc2UgdGhlIHN0dWJzIG1pZ2h0
IHN0aWxsIHRoaW5rIHRoZXkncmUgYWxpdmUgYXMgdGhleSBnZXQgZGVsZXRlZC4KICAgICAvLyBB
bmQgQ29kZUJsb2NrIGRlc3RydWN0b3IgaXMgYXNzdW1pbmcgdGhhdCBDb2RlQmxvY2sgZ2V0cyBk
ZXN0cm95ZWQgYmVmb3JlIFVubGlua2VkQ29kZUJsb2NrIGdldHMgZGVzdHJveWVkLgotICAgIHZt
KCkuZm9yRWFjaENvZGVCbG9ja1NwYWNlKFtdIChhdXRvJiBzcGFjZSkgeyBzcGFjZS5zcGFjZS5z
d2VlcCgpOyB9KTsKKyAgICBmb3JFYWNoQ29kZUJsb2NrU3BhY2UoW10gKGF1dG8mIHNwYWNlKSB7
IHNwYWNlLnNwYWNlLnN3ZWVwMygpOyB9KTsKICAgICBtX2ppdFN0dWJSb3V0aW5lcy0+ZGVsZXRl
VW5tYXJrZWRKZXR0aXNvbmVkU3R1YlJvdXRpbmVzKCk7CiB9CiAKQEAgLTIxMDMsOCArMjMwMiw4
IEBAIHZvaWQgSGVhcDo6c3dlZXBJbkZpbmFsaXplKCkKICAgICBtX29iamVjdFNwYWNlLnN3ZWVw
UHJlY2lzZUFsbG9jYXRpb25zKCk7CiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQogICAgIC8vIFdl
IGhvbGQgb250byBhIGxvdCBvZiBtZW1vcnksIHNvIGl0IG1ha2VzIGEgbG90IG9mIHNlbnNlIHRv
IGJlIHN3ZXB0IGVhZ2VybHkuCi0gICAgaWYgKHZtKCkubV93ZWJBc3NlbWJseU1lbW9yeVNwYWNl
KQotICAgICAgICB2bSgpLm1fd2ViQXNzZW1ibHlNZW1vcnlTcGFjZS0+c3dlZXAoKTsKKyAgICBp
ZiAobV93ZWJBc3NlbWJseU1lbW9yeVNwYWNlKQorICAgICAgICBtX3dlYkFzc2VtYmx5TWVtb3J5
U3BhY2UtPnN3ZWVwMygpOwogI2VuZGlmCiB9CiAKQEAgLTI4MDUsNyArMzAwNCw3IEBAIHZvaWQg
SGVhcDo6YWRkQ29yZUNvbnN0cmFpbnRzKCkKICAgICAgICAgIk8iLCAiT3V0cHV0IiwKICAgICAg
ICAgTUFLRV9NQVJLSU5HX0NPTlNUUkFJTlRfRVhFQ1VUT1JfUEFJUigoW10gKGF1dG8mIHZpc2l0
b3IpIHsKICAgICAgICAgICAgIHVzaW5nIFZpc2l0b3IgPSBkZWNsdHlwZSh2aXNpdG9yKTsKLSAg
ICAgICAgICAgIFZNJiB2bSA9IHZpc2l0b3Iudm0oKTsKKyAgICAgICAgICAgIEhlYXAqIGhlYXAg
PSB2aXNpdG9yLmhlYXAoKTsKIAogICAgICAgICAgICAgLy8gVGhlIGB2aXNpdG9yMmAgYXJndW1l
bnQgaXMgc3RyYW5nZWx5IG5hbWVkIGJlY2F1c2UgdGhlIFdpbkNhaXJvIHBvcnQKICAgICAgICAg
ICAgIC8vIGdldHMgY29uZnVzZWQgIGFuZCB0aGlua3Mgd2UncmUgdHJ5aW5nIHRvIGNhcHR1cmUg
dGhlIG91dGVyIHZpc2l0b3IKQEAgLTI4MjQsMTEgKzMwMjMsMTEgQEAgdm9pZCBIZWFwOjphZGRD
b3JlQ29uc3RyYWludHMoKQogCiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgU2V0Um9v
dE1hcmtSZWFzb25TY29wZSByb290U2NvcGUodmlzaXRvciwgUm9vdE1hcmtSZWFzb246OkV4ZWN1
dGFibGVUb0NvZGVCbG9ja0VkZ2VzKTsKLSAgICAgICAgICAgICAgICBhZGQodm0uZXhlY3V0YWJs
ZVRvQ29kZUJsb2NrRWRnZXNXaXRoQ29uc3RyYWludHMpOworICAgICAgICAgICAgICAgIGFkZCho
ZWFwLT5leGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlc1dpdGhDb25zdHJhaW50cyk7CiAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICBpZiAodm0ubV93ZWFrTWFwU3BhY2UpIHsKKyAgICAgICAgICAg
IGlmIChoZWFwLT5tX3dlYWtNYXBTcGFjZSkgewogICAgICAgICAgICAgICAgIFNldFJvb3RNYXJr
UmVhc29uU2NvcGUgcm9vdFNjb3BlKHZpc2l0b3IsIFJvb3RNYXJrUmVhc29uOjpXZWFrTWFwU3Bh
Y2UpOwotICAgICAgICAgICAgICAgIGFkZCgqdm0ubV93ZWFrTWFwU3BhY2UpOworICAgICAgICAg
ICAgICAgIGFkZCgqaGVhcC0+bV93ZWFrTWFwU3BhY2UpOwogICAgICAgICAgICAgfQogICAgICAg
ICB9KSksCiAgICAgICAgIENvbnN0cmFpbnRWb2xhdGlsaXR5OjpHcmV5ZWRCeU1hcmtpbmcsCkBA
IC0zMDYyLDQgKzMyNjEsMTM1IEBAIHZvaWQgSGVhcDo6dmVyaWZ5R0MoKQogICAgIG1fdmVyaWZp
ZXJTbG90VmlzaXRvciA9IG51bGxwdHI7CiB9CiAKKyNkZWZpbmUgRFlOQU1JQ19JU09fU1VCU1BB
Q0VfREVGSU5FX01FTUJFUl9TTE9XKG5hbWUsIGhlYXBDZWxsVHlwZSwgdHlwZSkgXAorICAgIElz
b1N1YnNwYWNlKiBIZWFwOjpuYW1lIyNTbG93KCkgXAorICAgIHsgXAorICAgICAgICBBU1NFUlQo
IW1fIyNuYW1lKTsgXAorICAgICAgICBhdXRvIHNwYWNlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFj
ZT4gSVNPX1NVQlNQQUNFX0lOSVQoKnRoaXMsIGhlYXBDZWxsVHlwZSwgdHlwZSk7IFwKKyAgICAg
ICAgV1RGOjpzdG9yZVN0b3JlRmVuY2UoKTsgXAorICAgICAgICBtXyMjbmFtZSA9IFdURk1vdmUo
c3BhY2UpOyBcCisgICAgICAgIHJldHVybiBtXyMjbmFtZS5nZXQoKTsgXAorICAgIH0KKworCitE
WU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coYXBpR2xvYmFsT2JqZWN0U3Bh
Y2UsIGFwaUdsb2JhbE9iamVjdEhlYXBDZWxsVHlwZSwgSlNBUElHbG9iYWxPYmplY3QpCitEWU5B
TUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coYXBpVmFsdWVXcmFwcGVyU3BhY2Us
IGNlbGxIZWFwQ2VsbFR5cGUsIEpTQVBJVmFsdWVXcmFwcGVyKQorRFlOQU1JQ19JU09fU1VCU1BB
Q0VfREVGSU5FX01FTUJFUl9TTE9XKGFycmF5QnVmZmVyU3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUs
IEpTQXJyYXlCdWZmZXIpCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1co
YXJyYXlJdGVyYXRvclNwYWNlLCBjZWxsSGVhcENlbGxUeXBlLCBKU0FycmF5SXRlcmF0b3IpCitE
WU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coYXN5bmNHZW5lcmF0b3JTcGFj
ZSwgY2VsbEhlYXBDZWxsVHlwZSwgSlNBc3luY0dlbmVyYXRvcikKK0RZTkFNSUNfSVNPX1NVQlNQ
QUNFX0RFRklORV9NRU1CRVJfU0xPVyhiaWdJbnQ2NEFycmF5U3BhY2UsIGNlbGxIZWFwQ2VsbFR5
cGUsIEpTQmlnSW50NjRBcnJheSkKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJf
U0xPVyhiaWdJbnRPYmplY3RTcGFjZSwgY2VsbEhlYXBDZWxsVHlwZSwgQmlnSW50T2JqZWN0KQor
RFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGJpZ1VpbnQ2NEFycmF5U3Bh
Y2UsIGNlbGxIZWFwQ2VsbFR5cGUsIEpTQmlnVWludDY0QXJyYXkpCitEWU5BTUlDX0lTT19TVUJT
UEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coYm9vbGVhbk9iamVjdFNwYWNlLCBjZWxsSGVhcENlbGxU
eXBlLCBCb29sZWFuT2JqZWN0KQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9T
TE9XKGJvdW5kRnVuY3Rpb25TcGFjZSwgY2VsbEhlYXBDZWxsVHlwZSwgSlNCb3VuZEZ1bmN0aW9u
KSAvLyBIYXNoOjB4ZDc5MTZkNDEKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJf
U0xPVyhjYWxsYmFja0NvbnN0cnVjdG9yU3BhY2UsIGNhbGxiYWNrQ29uc3RydWN0b3JIZWFwQ2Vs
bFR5cGUsIEpTQ2FsbGJhY2tDb25zdHJ1Y3RvcikKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklO
RV9NRU1CRVJfU0xPVyhjYWxsYmFja0dsb2JhbE9iamVjdFNwYWNlLCBjYWxsYmFja0dsb2JhbE9i
amVjdEhlYXBDZWxsVHlwZSwgSlNDYWxsYmFja09iamVjdDxKU0dsb2JhbE9iamVjdD4pCitEWU5B
TUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coY2FsbGJhY2tGdW5jdGlvblNwYWNl
LCBjZWxsSGVhcENlbGxUeXBlLCBKU0NhbGxiYWNrRnVuY3Rpb24pIC8vIEhhc2g6MHhlNzY0OGVi
YworRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGNhbGxiYWNrT2JqZWN0
U3BhY2UsIGNhbGxiYWNrT2JqZWN0SGVhcENlbGxUeXBlLCBKU0NhbGxiYWNrT2JqZWN0PEpTTm9u
RmluYWxPYmplY3Q+KQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGN1
c3RvbUdldHRlckZ1bmN0aW9uU3BhY2UsIGN1c3RvbUdldHRlckZ1bmN0aW9uSGVhcENlbGxUeXBl
LCBKU0N1c3RvbUdldHRlckZ1bmN0aW9uKQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01F
TUJFUl9TTE9XKGN1c3RvbVNldHRlckZ1bmN0aW9uU3BhY2UsIGN1c3RvbVNldHRlckZ1bmN0aW9u
SGVhcENlbGxUeXBlLCBKU0N1c3RvbVNldHRlckZ1bmN0aW9uKQorRFlOQU1JQ19JU09fU1VCU1BB
Q0VfREVGSU5FX01FTUJFUl9TTE9XKGRhdGFWaWV3U3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUsIEpT
RGF0YVZpZXcpCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coZGVidWdn
ZXJTY29wZVNwYWNlLCBjZWxsSGVhcENlbGxUeXBlLCBEZWJ1Z2dlclNjb3BlKQorRFlOQU1JQ19J
U09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGVycm9ySW5zdGFuY2VTcGFjZSwgZXJyb3JJ
bnN0YW5jZUhlYXBDZWxsVHlwZSwgRXJyb3JJbnN0YW5jZSkgLy8gSGFzaDoweDNmNDBkNGEKK0RZ
TkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhmbG9hdDMyQXJyYXlTcGFjZSwg
Y2VsbEhlYXBDZWxsVHlwZSwgSlNGbG9hdDMyQXJyYXkpCitEWU5BTUlDX0lTT19TVUJTUEFDRV9E
RUZJTkVfTUVNQkVSX1NMT1coZmxvYXQ2NEFycmF5U3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUsIEpT
RmxvYXQ2NEFycmF5KQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGZ1
bmN0aW9uUmFyZURhdGFTcGFjZSwgZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZSwgRnVuY3Rp
b25SYXJlRGF0YSkKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhnZW5l
cmF0b3JTcGFjZSwgY2VsbEhlYXBDZWxsVHlwZSwgSlNHZW5lcmF0b3IpCitEWU5BTUlDX0lTT19T
VUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coZ2xvYmFsT2JqZWN0U3BhY2UsIGdsb2JhbE9iamVj
dEhlYXBDZWxsVHlwZSwgSlNHbG9iYWxPYmplY3QpCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJ
TkVfTUVNQkVSX1NMT1coaW5qZWN0ZWRTY3JpcHRIb3N0U3BhY2UsIGluamVjdGVkU2NyaXB0SG9z
dFNwYWNlSGVhcENlbGxUeXBlLCBJbnNwZWN0b3I6OkpTSW5qZWN0ZWRTY3JpcHRIb3N0KQorRFlO
QU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGludDhBcnJheVNwYWNlLCBjZWxs
SGVhcENlbGxUeXBlLCBKU0ludDhBcnJheSkKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9N
RU1CRVJfU0xPVyhpbnQxNkFycmF5U3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUsIEpTSW50MTZBcnJh
eSkKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhpbnQzMkFycmF5U3Bh
Y2UsIGNlbGxIZWFwQ2VsbFR5cGUsIEpTSW50MzJBcnJheSkKK0RZTkFNSUNfSVNPX1NVQlNQQUNF
X0RFRklORV9NRU1CRVJfU0xPVyhqYXZhU2NyaXB0Q2FsbEZyYW1lU3BhY2UsIGphdmFTY3JpcHRD
YWxsRnJhbWVIZWFwQ2VsbFR5cGUsIEluc3BlY3Rvcjo6SlNKYXZhU2NyaXB0Q2FsbEZyYW1lKQor
RFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGpzTW9kdWxlUmVjb3JkU3Bh
Y2UsIGpzTW9kdWxlUmVjb3JkSGVhcENlbGxUeXBlLCBKU01vZHVsZVJlY29yZCkKK0RZTkFNSUNf
SVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhtYXBCdWNrZXRTcGFjZSwgY2VsbEhlYXBD
ZWxsVHlwZSwgSlNNYXA6OkJ1Y2tldFR5cGUpCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVf
TUVNQkVSX1NMT1cobWFwSXRlcmF0b3JTcGFjZSwgY2VsbEhlYXBDZWxsVHlwZSwgSlNNYXBJdGVy
YXRvcikKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhtYXBTcGFjZSwg
Y2VsbEhlYXBDZWxsVHlwZSwgSlNNYXApCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVN
QkVSX1NMT1cobW9kdWxlTmFtZXNwYWNlT2JqZWN0U3BhY2UsIG1vZHVsZU5hbWVzcGFjZU9iamVj
dEhlYXBDZWxsVHlwZSwgSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QpCitEWU5BTUlDX0lTT19TVUJT
UEFDRV9ERUZJTkVfTUVNQkVSX1NMT1cobmF0aXZlU3RkRnVuY3Rpb25TcGFjZSwgbmF0aXZlU3Rk
RnVuY3Rpb25IZWFwQ2VsbFR5cGUsIEpTTmF0aXZlU3RkRnVuY3Rpb24pIC8vIEhhc2g6MHg3MGVk
NjFlNAorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHByb3h5T2JqZWN0
U3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUsIFByb3h5T2JqZWN0KQorRFlOQU1JQ19JU09fU1VCU1BB
Q0VfREVGSU5FX01FTUJFUl9TTE9XKHByb3h5UmV2b2tlU3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUs
IFByb3h5UmV2b2tlKSAvLyBIYXNoOjB4YjUwNmE5MzkKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RF
RklORV9NRU1CRVJfU0xPVyhzY29wZWRBcmd1bWVudHNUYWJsZVNwYWNlLCBkZXN0cnVjdGlibGVD
ZWxsSGVhcENlbGxUeXBlLCBTY29wZWRBcmd1bWVudHNUYWJsZSkKK0RZTkFNSUNfSVNPX1NVQlNQ
QUNFX0RFRklORV9NRU1CRVJfU0xPVyhzY3JpcHRGZXRjaFBhcmFtZXRlcnNTcGFjZSwgZGVzdHJ1
Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZSwgSlNTY3JpcHRGZXRjaFBhcmFtZXRlcnMpCitEWU5BTUlD
X0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coc2NyaXB0RmV0Y2hlclNwYWNlLCBkZXN0
cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlLCBKU1NjcmlwdEZldGNoZXIpCitEWU5BTUlDX0lTT19T
VUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coc2V0QnVja2V0U3BhY2UsIGNlbGxIZWFwQ2VsbFR5
cGUsIEpTU2V0OjpCdWNrZXRUeXBlKQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJF
Ul9TTE9XKHNldEl0ZXJhdG9yU3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUsIEpTU2V0SXRlcmF0b3Ip
CitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coc2V0U3BhY2UsIGNlbGxI
ZWFwQ2VsbFR5cGUsIEpTU2V0KQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9T
TE9XKHNoYWRvd1JlYWxtU3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUsIFNoYWRvd1JlYWxtT2JqZWN0
KQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHN0cmljdEV2YWxBY3Rp
dmF0aW9uU3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUsIFN0cmljdEV2YWxBY3RpdmF0aW9uKQorRFlO
QU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHN0cmluZ0l0ZXJhdG9yU3BhY2Us
IGNlbGxIZWFwQ2VsbFR5cGUsIEpTU3RyaW5nSXRlcmF0b3IpCitEWU5BTUlDX0lTT19TVUJTUEFD
RV9ERUZJTkVfTUVNQkVSX1NMT1coc291cmNlQ29kZVNwYWNlLCBkZXN0cnVjdGlibGVDZWxsSGVh
cENlbGxUeXBlLCBKU1NvdXJjZUNvZGUpCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVN
QkVSX1NMT1coc3ltYm9sU3BhY2UsIGRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUsIFN5bWJv
bCkKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhzeW1ib2xPYmplY3RT
cGFjZSwgY2VsbEhlYXBDZWxsVHlwZSwgU3ltYm9sT2JqZWN0KQorRFlOQU1JQ19JU09fU1VCU1BB
Q0VfREVGSU5FX01FTUJFUl9TTE9XKHRlbXBsYXRlT2JqZWN0RGVzY3JpcHRvclNwYWNlLCBkZXN0
cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlLCBKU1RlbXBsYXRlT2JqZWN0RGVzY3JpcHRvcikKK0RZ
TkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh0ZW1wb3JhbENhbGVuZGFyU3Bh
Y2UsIGNlbGxIZWFwQ2VsbFR5cGUsIFRlbXBvcmFsQ2FsZW5kYXIpCitEWU5BTUlDX0lTT19TVUJT
UEFDRV9ERUZJTkVfTUVNQkVSX1NMT1codGVtcG9yYWxEdXJhdGlvblNwYWNlLCBjZWxsSGVhcENl
bGxUeXBlLCBUZW1wb3JhbER1cmF0aW9uKQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01F
TUJFUl9TTE9XKHRlbXBvcmFsSW5zdGFudFNwYWNlLCBjZWxsSGVhcENlbGxUeXBlLCBUZW1wb3Jh
bEluc3RhbnQpCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1codGVtcG9y
YWxQbGFpblRpbWVTcGFjZSwgY2VsbEhlYXBDZWxsVHlwZSwgVGVtcG9yYWxQbGFpblRpbWUpCitE
WU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1codGVtcG9yYWxUaW1lWm9uZVNw
YWNlLCBjZWxsSGVhcENlbGxUeXBlLCBUZW1wb3JhbFRpbWVab25lKQorRFlOQU1JQ19JU09fU1VC
U1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHVpbnQ4QXJyYXlTcGFjZSwgY2VsbEhlYXBDZWxsVHlw
ZSwgSlNVaW50OEFycmF5KQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9X
KHVpbnQ4Q2xhbXBlZEFycmF5U3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUsIEpTVWludDhDbGFtcGVk
QXJyYXkpCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1codWludDE2QXJy
YXlTcGFjZSwgY2VsbEhlYXBDZWxsVHlwZSwgSlNVaW50MTZBcnJheSkKK0RZTkFNSUNfSVNPX1NV
QlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh1aW50MzJBcnJheVNwYWNlLCBjZWxsSGVhcENlbGxU
eXBlLCBKU1VpbnQzMkFycmF5KQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9T
TE9XKHVubGlua2VkRXZhbENvZGVCbG9ja1NwYWNlLCBkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxU
eXBlLCBVbmxpbmtlZEV2YWxDb2RlQmxvY2spCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVf
TUVNQkVSX1NMT1codW5saW5rZWRGdW5jdGlvbkNvZGVCbG9ja1NwYWNlLCBkZXN0cnVjdGlibGVD
ZWxsSGVhcENlbGxUeXBlLCBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKQorRFlOQU1JQ19JU09f
U1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9j
a1NwYWNlLCBkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlLCBVbmxpbmtlZE1vZHVsZVByb2dy
YW1Db2RlQmxvY2spCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1codW5s
aW5rZWRQcm9ncmFtQ29kZUJsb2NrU3BhY2UsIGRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUs
IFVubGlua2VkUHJvZ3JhbUNvZGVCbG9jaykKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9N
RU1CRVJfU0xPVyh3ZWFrTWFwU3BhY2UsIHdlYWtNYXBIZWFwQ2VsbFR5cGUsIEpTV2Vha01hcCkg
Ly8gSGFzaDoweDY2MmIxMmEzCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NM
T1cod2Vha1NldFNwYWNlLCB3ZWFrU2V0SGVhcENlbGxUeXBlLCBKU1dlYWtTZXQpIC8vIEhhc2g6
MHg0Yzc4MWIzMAorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHdlYWtP
YmplY3RSZWZTcGFjZSwgY2VsbEhlYXBDZWxsVHlwZSwgSlNXZWFrT2JqZWN0UmVmKSAvLyBIYXNo
OjB4OGVjNjhmMWYKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh3aXRo
U2NvcGVTcGFjZSwgY2VsbEhlYXBDZWxsVHlwZSwgSlNXaXRoU2NvcGUpCitEWU5BTUlDX0lTT19T
VUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coZmluYWxpemF0aW9uUmVnaXN0cnlTcGFjZSwgZmlu
YWxpemF0aW9uUmVnaXN0cnlDZWxsVHlwZSwgSlNGaW5hbGl6YXRpb25SZWdpc3RyeSkKKyNpZiBK
U0NfT0JKQ19BUElfRU5BQkxFRAorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9T
TE9XKGFwaVdyYXBwZXJPYmplY3RTcGFjZSwgYXBpV3JhcHBlck9iamVjdEhlYXBDZWxsVHlwZSwg
SlNDYWxsYmFja09iamVjdDxKU0FQSVdyYXBwZXJPYmplY3Q+KQorRFlOQU1JQ19JU09fU1VCU1BB
Q0VfREVGSU5FX01FTUJFUl9TTE9XKG9iakNDYWxsYmFja0Z1bmN0aW9uU3BhY2UsIG9iakNDYWxs
YmFja0Z1bmN0aW9uSGVhcENlbGxUeXBlLCBPYmpDQ2FsbGJhY2tGdW5jdGlvbikgLy8gSGFzaDow
eDEwZjYxMGI4CisjZW5kaWYKKyNpZmRlZiBKU0NfR0xJQl9BUElfRU5BQkxFRAorRFlOQU1JQ19J
U09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGFwaVdyYXBwZXJPYmplY3RTcGFjZSwgYXBp
V3JhcHBlck9iamVjdEhlYXBDZWxsVHlwZSwgSlNDYWxsYmFja09iamVjdDxKU0FQSVdyYXBwZXJP
YmplY3Q+KQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGpzY0NhbGxi
YWNrRnVuY3Rpb25TcGFjZSwganNjQ2FsbGJhY2tGdW5jdGlvbkhlYXBDZWxsVHlwZSwgSlNDQ2Fs
bGJhY2tGdW5jdGlvbikKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhj
YWxsYmFja0FQSVdyYXBwZXJHbG9iYWxPYmplY3RTcGFjZSwgY2FsbGJhY2tBUElXcmFwcGVyR2xv
YmFsT2JqZWN0SGVhcENlbGxUeXBlLCBKU0NhbGxiYWNrT2JqZWN0PEpTQVBJV3JhcHBlckdsb2Jh
bE9iamVjdD4pCisjZW5kaWYKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xP
VyhpbnRsQ29sbGF0b3JTcGFjZSwgaW50bENvbGxhdG9ySGVhcENlbGxUeXBlLCBJbnRsQ29sbGF0
b3IpCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coaW50bERhdGVUaW1l
Rm9ybWF0U3BhY2UsIGludGxEYXRlVGltZUZvcm1hdEhlYXBDZWxsVHlwZSwgSW50bERhdGVUaW1l
Rm9ybWF0KQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGludGxEaXNw
bGF5TmFtZXNTcGFjZSwgaW50bERpc3BsYXlOYW1lc0hlYXBDZWxsVHlwZSwgSW50bERpc3BsYXlO
YW1lcykKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhpbnRsTGlzdEZv
cm1hdFNwYWNlLCBpbnRsTGlzdEZvcm1hdEhlYXBDZWxsVHlwZSwgSW50bExpc3RGb3JtYXQpCitE
WU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coaW50bExvY2FsZVNwYWNlLCBp
bnRsTG9jYWxlSGVhcENlbGxUeXBlLCBJbnRsTG9jYWxlKQorRFlOQU1JQ19JU09fU1VCU1BBQ0Vf
REVGSU5FX01FTUJFUl9TTE9XKGludGxOdW1iZXJGb3JtYXRTcGFjZSwgaW50bE51bWJlckZvcm1h
dEhlYXBDZWxsVHlwZSwgSW50bE51bWJlckZvcm1hdCkKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RF
RklORV9NRU1CRVJfU0xPVyhpbnRsUGx1cmFsUnVsZXNTcGFjZSwgaW50bFBsdXJhbFJ1bGVzSGVh
cENlbGxUeXBlLCBJbnRsUGx1cmFsUnVsZXMpCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVf
TUVNQkVSX1NMT1coaW50bFJlbGF0aXZlVGltZUZvcm1hdFNwYWNlLCBpbnRsUmVsYXRpdmVUaW1l
Rm9ybWF0SGVhcENlbGxUeXBlLCBJbnRsUmVsYXRpdmVUaW1lRm9ybWF0KQorRFlOQU1JQ19JU09f
U1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGludGxTZWdtZW50SXRlcmF0b3JTcGFjZSwgaW50
bFNlZ21lbnRJdGVyYXRvckhlYXBDZWxsVHlwZSwgSW50bFNlZ21lbnRJdGVyYXRvcikKK0RZTkFN
SUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhpbnRsU2VnbWVudGVyU3BhY2UsIGlu
dGxTZWdtZW50ZXJIZWFwQ2VsbFR5cGUsIEludGxTZWdtZW50ZXIpCitEWU5BTUlDX0lTT19TVUJT
UEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coaW50bFNlZ21lbnRzU3BhY2UsIGludGxTZWdtZW50c0hl
YXBDZWxsVHlwZSwgSW50bFNlZ21lbnRzKQorI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKK0RZTkFN
SUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhqc1RvV2FzbUlDQ2FsbGVlU3BhY2Us
IGNlbGxIZWFwQ2VsbFR5cGUsIEpTVG9XYXNtSUNDYWxsZWUpCitEWU5BTUlDX0lTT19TVUJTUEFD
RV9ERUZJTkVfTUVNQkVSX1NMT1cod2ViQXNzZW1ibHlDb2RlQmxvY2tTcGFjZSwgd2ViQXNzZW1i
bHlDb2RlQmxvY2tIZWFwQ2VsbFR5cGUsIEpTV2ViQXNzZW1ibHlDb2RlQmxvY2spIC8vIEhhc2g6
MHg5YWQ5OTVjZAorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHdlYkFz
c2VtYmx5RXhjZXB0aW9uU3BhY2UsIHdlYkFzc2VtYmx5RXhjZXB0aW9uSGVhcENlbGxUeXBlLCBK
U1dlYkFzc2VtYmx5RXhjZXB0aW9uKQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJF
Ul9TTE9XKHdlYkFzc2VtYmx5RnVuY3Rpb25TcGFjZSwgd2ViQXNzZW1ibHlGdW5jdGlvbkhlYXBD
ZWxsVHlwZSwgV2ViQXNzZW1ibHlGdW5jdGlvbikgLy8gSGFzaDoweDhiN2MzMmRiCitEWU5BTUlD
X0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1cod2ViQXNzZW1ibHlHbG9iYWxTcGFjZSwg
d2ViQXNzZW1ibHlHbG9iYWxIZWFwQ2VsbFR5cGUsIEpTV2ViQXNzZW1ibHlHbG9iYWwpCitEWU5B
TUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1cod2ViQXNzZW1ibHlJbnN0YW5jZVNw
YWNlLCB3ZWJBc3NlbWJseUluc3RhbmNlSGVhcENlbGxUeXBlLCBKU1dlYkFzc2VtYmx5SW5zdGFu
Y2UpCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1cod2ViQXNzZW1ibHlN
ZW1vcnlTcGFjZSwgd2ViQXNzZW1ibHlNZW1vcnlIZWFwQ2VsbFR5cGUsIEpTV2ViQXNzZW1ibHlN
ZW1vcnkpCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1cod2ViQXNzZW1i
bHlNb2R1bGVTcGFjZSwgd2ViQXNzZW1ibHlNb2R1bGVIZWFwQ2VsbFR5cGUsIEpTV2ViQXNzZW1i
bHlNb2R1bGUpCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1cod2ViQXNz
ZW1ibHlNb2R1bGVSZWNvcmRTcGFjZSwgd2ViQXNzZW1ibHlNb2R1bGVSZWNvcmRIZWFwQ2VsbFR5
cGUsIFdlYkFzc2VtYmx5TW9kdWxlUmVjb3JkKQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5F
X01FTUJFUl9TTE9XKHdlYkFzc2VtYmx5VGFibGVTcGFjZSwgd2ViQXNzZW1ibHlUYWJsZUhlYXBD
ZWxsVHlwZSwgSlNXZWJBc3NlbWJseVRhYmxlKQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5F
X01FTUJFUl9TTE9XKHdlYkFzc2VtYmx5VGFnU3BhY2UsIHdlYkFzc2VtYmx5VGFnSGVhcENlbGxU
eXBlLCBKU1dlYkFzc2VtYmx5VGFnKQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJF
Ul9TTE9XKHdlYkFzc2VtYmx5V3JhcHBlckZ1bmN0aW9uU3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUs
IFdlYkFzc2VtYmx5V3JhcHBlckZ1bmN0aW9uKSAvLyBIYXNoOjB4ZDRhNWZmMDEKKyNlbmRpZgor
CisjdW5kZWYgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XCisKKyNkZWZp
bmUgRFlOQU1JQ19TUEFDRV9BTkRfU0VUX0RFRklORV9NRU1CRVJfU0xPVyhuYW1lLCBoZWFwQ2Vs
bFR5cGUsIHR5cGUpIFwKKyAgICBJc29TdWJzcGFjZSogSGVhcDo6bmFtZSMjU2xvdygpIFwKKyAg
ICB7IFwKKyAgICAgICAgQVNTRVJUKCFtXyMjbmFtZSk7IFwKKyAgICAgICAgYXV0byBzcGFjZSA9
IG1ha2VVbmlxdWU8U3BhY2VBbmRTZXQ+IElTT19TVUJTUEFDRV9JTklUKCp0aGlzLCBoZWFwQ2Vs
bFR5cGUsIHR5cGUpOyBcCisgICAgICAgIFdURjo6c3RvcmVTdG9yZUZlbmNlKCk7IFwKKyAgICAg
ICAgbV8jI25hbWUgPSBXVEZNb3ZlKHNwYWNlKTsgXAorICAgICAgICByZXR1cm4gJm1fIyNuYW1l
LT5zcGFjZTsgXAorICAgIH0KKworRFlOQU1JQ19TUEFDRV9BTkRfU0VUX0RFRklORV9NRU1CRVJf
U0xPVyhldmFsRXhlY3V0YWJsZVNwYWNlLCBkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlLCBF
dmFsRXhlY3V0YWJsZSkgLy8gSGFzaDoweDk1OGUzZTlkCitEWU5BTUlDX1NQQUNFX0FORF9TRVRf
REVGSU5FX01FTUJFUl9TTE9XKG1vZHVsZVByb2dyYW1FeGVjdXRhYmxlU3BhY2UsIGRlc3RydWN0
aWJsZUNlbGxIZWFwQ2VsbFR5cGUsIE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlKSAvLyBIYXNoOjB4
NjUwNmZhM2MKKworI3VuZGVmIERZTkFNSUNfU1BBQ0VfQU5EX1NFVF9ERUZJTkVfTUVNQkVSX1NM
T1cKKwogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVh
cC9IZWFwLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5o
CShyZXZpc2lvbiAyODYwMjQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTI1LDYgKzI1LDcgQEAKICNpbmNsdWRlICJDZWxsU3RhdGUuaCIK
ICNpbmNsdWRlICJDb2xsZWN0aW9uU2NvcGUuaCIKICNpbmNsdWRlICJDb2xsZWN0b3JQaGFzZS5o
IgorI2luY2x1ZGUgIkNvbXBsZXRlU3Vic3BhY2UuaCIKICNpbmNsdWRlICJEZWxldGVBbGxDb2Rl
RWZmb3J0LmgiCiAjaW5jbHVkZSAiR0NDb25kdWN0b3IuaCIKICNpbmNsdWRlICJHQ0luY29taW5n
UmVmQ291bnRlZFNldC5oIgpAQCAtMzMsNiArMzQsMTIgQEAKICNpbmNsdWRlICJIYW5kbGVTZXQu
aCIKICNpbmNsdWRlICJIZWFwRmluYWxpemVyQ2FsbGJhY2suaCIKICNpbmNsdWRlICJIZWFwT2Jz
ZXJ2ZXIuaCIKKyNpbmNsdWRlICJJc29DZWxsU2V0LmgiCisjaW5jbHVkZSAiSXNvSGVhcENlbGxU
eXBlLmgiCisjaW5jbHVkZSAiSXNvSW5saW5lZEhlYXBDZWxsVHlwZS5oIgorI2luY2x1ZGUgIklz
b1N1YnNwYWNlLmgiCisjaW5jbHVkZSAiSlNEZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUu
aCIKKyNpbmNsdWRlICJKU1N0cmluZy5oIgogI2luY2x1ZGUgIk1hcmtlZEJsb2NrLmgiCiAjaW5j
bHVkZSAiTWFya2VkU3BhY2UuaCIKICNpbmNsdWRlICJNdXRhdG9yU3RhdGUuaCIKQEAgLTU4LDkg
KzY1LDExIEBAIGNsYXNzIENvbGxlY3RpbmdTY29wZTsKIGNsYXNzIENvbnNlcnZhdGl2ZVJvb3Rz
OwogY2xhc3MgR0NEZWZlcnJhbENvbnRleHQ7CiBjbGFzcyBFZGVuR0NBY3Rpdml0eUNhbGxiYWNr
OworY2xhc3MgRmFzdE1hbGxvY0FsaWduZWRNZW1vcnlBbGxvY2F0b3I7CiBjbGFzcyBGdWxsR0NB
Y3Rpdml0eUNhbGxiYWNrOwogY2xhc3MgR0NBY3Rpdml0eUNhbGxiYWNrOwogY2xhc3MgR0NBd2Fy
ZUpJVFN0dWJSb3V0aW5lOworY2xhc3MgR2lnYWNhZ2VBbGlnbmVkTWVtb3J5QWxsb2NhdG9yOwog
Y2xhc3MgSGVhcDsKIGNsYXNzIEhlYXBQcm9maWxlcjsKIGNsYXNzIEhlYXBWZXJpZmllcjsKQEAg
LTcyOSw2ICs3MzgsMzE4IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX3BhcmFsbGVsTWFya2Vyc1No
b3VsZEV4aXQgeyBmYWxzZSB9OwogICAgIExvY2sgbV9jb2xsZWN0Q29udGludW91c2x5TG9jazsK
ICAgICBDb25kaXRpb24gbV9jb2xsZWN0Q29udGludW91c2x5Q29uZGl0aW9uOworCitwdWJsaWM6
CisgICAgLy8gSGVhcENlbGxUeXBlcworICAgIEhlYXBDZWxsVHlwZSBhdXhpbGlhcnlIZWFwQ2Vs
bFR5cGU7CisgICAgSGVhcENlbGxUeXBlIGltbXV0YWJsZUJ1dHRlcmZseUhlYXBDZWxsVHlwZTsK
KyAgICBIZWFwQ2VsbFR5cGUgY2VsbEhlYXBDZWxsVHlwZTsKKyAgICBIZWFwQ2VsbFR5cGUgZGVz
dHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZTsKKyAgICBJc29IZWFwQ2VsbFR5cGUgYXBpR2xvYmFs
T2JqZWN0SGVhcENlbGxUeXBlOworICAgIElzb0hlYXBDZWxsVHlwZSBjYWxsYmFja0NvbnN0cnVj
dG9ySGVhcENlbGxUeXBlOworICAgIElzb0hlYXBDZWxsVHlwZSBjYWxsYmFja0dsb2JhbE9iamVj
dEhlYXBDZWxsVHlwZTsKKyAgICBJc29IZWFwQ2VsbFR5cGUgY2FsbGJhY2tPYmplY3RIZWFwQ2Vs
bFR5cGU7CisgICAgSXNvSGVhcENlbGxUeXBlIGN1c3RvbUdldHRlckZ1bmN0aW9uSGVhcENlbGxU
eXBlOworICAgIElzb0hlYXBDZWxsVHlwZSBjdXN0b21TZXR0ZXJGdW5jdGlvbkhlYXBDZWxsVHlw
ZTsKKyAgICBJc29IZWFwQ2VsbFR5cGUgZGF0ZUluc3RhbmNlSGVhcENlbGxUeXBlOworICAgIElz
b0hlYXBDZWxsVHlwZSBlcnJvckluc3RhbmNlSGVhcENlbGxUeXBlOworICAgIElzb0hlYXBDZWxs
VHlwZSBmaW5hbGl6YXRpb25SZWdpc3RyeUNlbGxUeXBlOworICAgIElzb0hlYXBDZWxsVHlwZSBn
bG9iYWxMZXhpY2FsRW52aXJvbm1lbnRIZWFwQ2VsbFR5cGU7CisgICAgSXNvSGVhcENlbGxUeXBl
IGdsb2JhbE9iamVjdEhlYXBDZWxsVHlwZTsKKyAgICBJc29IZWFwQ2VsbFR5cGUgaW5qZWN0ZWRT
Y3JpcHRIb3N0U3BhY2VIZWFwQ2VsbFR5cGU7CisgICAgSXNvSGVhcENlbGxUeXBlIGphdmFTY3Jp
cHRDYWxsRnJhbWVIZWFwQ2VsbFR5cGU7CisgICAgSXNvSGVhcENlbGxUeXBlIGpzTW9kdWxlUmVj
b3JkSGVhcENlbGxUeXBlOworICAgIElzb0hlYXBDZWxsVHlwZSBtb2R1bGVOYW1lc3BhY2VPYmpl
Y3RIZWFwQ2VsbFR5cGU7CisgICAgSXNvSGVhcENlbGxUeXBlIG5hdGl2ZVN0ZEZ1bmN0aW9uSGVh
cENlbGxUeXBlOworICAgIElzb0lubGluZWRIZWFwQ2VsbFR5cGU8SlNTdHJpbmc+IHN0cmluZ0hl
YXBDZWxsVHlwZTsKKyAgICBJc29IZWFwQ2VsbFR5cGUgd2Vha01hcEhlYXBDZWxsVHlwZTsKKyAg
ICBJc29IZWFwQ2VsbFR5cGUgd2Vha1NldEhlYXBDZWxsVHlwZTsKKyAgICBKU0Rlc3RydWN0aWJs
ZU9iamVjdEhlYXBDZWxsVHlwZSBkZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGU7CisjaWYg
SlNDX09CSkNfQVBJX0VOQUJMRUQKKyAgICBJc29IZWFwQ2VsbFR5cGUgYXBpV3JhcHBlck9iamVj
dEhlYXBDZWxsVHlwZTsKKyAgICBJc29IZWFwQ2VsbFR5cGUgb2JqQ0NhbGxiYWNrRnVuY3Rpb25I
ZWFwQ2VsbFR5cGU7CisjZW5kaWYKKyNpZmRlZiBKU0NfR0xJQl9BUElfRU5BQkxFRAorICAgIElz
b0hlYXBDZWxsVHlwZSBhcGlXcmFwcGVyT2JqZWN0SGVhcENlbGxUeXBlOworICAgIElzb0hlYXBD
ZWxsVHlwZSBjYWxsYmFja0FQSVdyYXBwZXJHbG9iYWxPYmplY3RIZWFwQ2VsbFR5cGU7CisgICAg
SXNvSGVhcENlbGxUeXBlIGpzY0NhbGxiYWNrRnVuY3Rpb25IZWFwQ2VsbFR5cGU7CisjZW5kaWYK
KyAgICBJc29IZWFwQ2VsbFR5cGUgaW50bENvbGxhdG9ySGVhcENlbGxUeXBlOworICAgIElzb0hl
YXBDZWxsVHlwZSBpbnRsRGF0ZVRpbWVGb3JtYXRIZWFwQ2VsbFR5cGU7CisgICAgSXNvSGVhcENl
bGxUeXBlIGludGxEaXNwbGF5TmFtZXNIZWFwQ2VsbFR5cGU7CisgICAgSXNvSGVhcENlbGxUeXBl
IGludGxMaXN0Rm9ybWF0SGVhcENlbGxUeXBlOworICAgIElzb0hlYXBDZWxsVHlwZSBpbnRsTG9j
YWxlSGVhcENlbGxUeXBlOworICAgIElzb0hlYXBDZWxsVHlwZSBpbnRsTnVtYmVyRm9ybWF0SGVh
cENlbGxUeXBlOworICAgIElzb0hlYXBDZWxsVHlwZSBpbnRsUGx1cmFsUnVsZXNIZWFwQ2VsbFR5
cGU7CisgICAgSXNvSGVhcENlbGxUeXBlIGludGxSZWxhdGl2ZVRpbWVGb3JtYXRIZWFwQ2VsbFR5
cGU7CisgICAgSXNvSGVhcENlbGxUeXBlIGludGxTZWdtZW50SXRlcmF0b3JIZWFwQ2VsbFR5cGU7
CisgICAgSXNvSGVhcENlbGxUeXBlIGludGxTZWdtZW50ZXJIZWFwQ2VsbFR5cGU7CisgICAgSXNv
SGVhcENlbGxUeXBlIGludGxTZWdtZW50c0hlYXBDZWxsVHlwZTsKKyNpZiBFTkFCTEUoV0VCQVNT
RU1CTFkpCisgICAgSXNvSGVhcENlbGxUeXBlIHdlYkFzc2VtYmx5Q29kZUJsb2NrSGVhcENlbGxU
eXBlOworICAgIElzb0hlYXBDZWxsVHlwZSB3ZWJBc3NlbWJseUV4Y2VwdGlvbkhlYXBDZWxsVHlw
ZTsKKyAgICBJc29IZWFwQ2VsbFR5cGUgd2ViQXNzZW1ibHlGdW5jdGlvbkhlYXBDZWxsVHlwZTsK
KyAgICBJc29IZWFwQ2VsbFR5cGUgd2ViQXNzZW1ibHlHbG9iYWxIZWFwQ2VsbFR5cGU7CisgICAg
SXNvSGVhcENlbGxUeXBlIHdlYkFzc2VtYmx5SW5zdGFuY2VIZWFwQ2VsbFR5cGU7CisgICAgSXNv
SGVhcENlbGxUeXBlIHdlYkFzc2VtYmx5TWVtb3J5SGVhcENlbGxUeXBlOworICAgIElzb0hlYXBD
ZWxsVHlwZSB3ZWJBc3NlbWJseU1vZHVsZUhlYXBDZWxsVHlwZTsKKyAgICBJc29IZWFwQ2VsbFR5
cGUgd2ViQXNzZW1ibHlNb2R1bGVSZWNvcmRIZWFwQ2VsbFR5cGU7CisgICAgSXNvSGVhcENlbGxU
eXBlIHdlYkFzc2VtYmx5VGFibGVIZWFwQ2VsbFR5cGU7CisgICAgSXNvSGVhcENlbGxUeXBlIHdl
YkFzc2VtYmx5VGFnSGVhcENlbGxUeXBlOworI2VuZGlmCisKKyAgICAvLyBBbGlnbmVkTWVtb3J5
QWxsb2NhdG9ycworICAgIHN0ZDo6dW5pcXVlX3B0cjxGYXN0TWFsbG9jQWxpZ25lZE1lbW9yeUFs
bG9jYXRvcj4gZmFzdE1hbGxvY0FsbG9jYXRvcjsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8R2lnYWNh
Z2VBbGlnbmVkTWVtb3J5QWxsb2NhdG9yPiBwcmltaXRpdmVHaWdhY2FnZUFsbG9jYXRvcjsKKyAg
ICBzdGQ6OnVuaXF1ZV9wdHI8R2lnYWNhZ2VBbGlnbmVkTWVtb3J5QWxsb2NhdG9yPiBqc1ZhbHVl
R2lnYWNhZ2VBbGxvY2F0b3I7CisKKyAgICAvLyBTdWJzcGFjZXMKKyAgICBDb21wbGV0ZVN1YnNw
YWNlIHByaW1pdGl2ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2U7IC8vIFR5cGVkIGFycmF5cywgc3Ry
aW5ncywgYml0dmVjdG9ycywgZXRjIGdvIGhlcmUuCisgICAgQ29tcGxldGVTdWJzcGFjZSBqc1Zh
bHVlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZTsgLy8gQnV0dGVyZmxpZXMsIGFycmF5cyBvZiBKU1Zh
bHVlcywgZXRjIGdvIGhlcmUuCisgICAgQ29tcGxldGVTdWJzcGFjZSBpbW11dGFibGVCdXR0ZXJm
bHlKU1ZhbHVlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZTsgLy8gSlNJbW11dGFibGVCdXR0ZXJmbHkg
Z29lcyBoZXJlLgorCisgICAgLy8gV2UgbWFrZSBjcm9zcy1jdXR0aW5nIGFzc3VtcHRpb25zIGFi
b3V0IHR5cGVkIGFycmF5cyBiZWluZyBpbiB0aGUgcHJpbWl0aXZlIEdpZ2FjYWdlIGFuZCBidXR0
ZXJmbGllcworICAgIC8vIGJlaW5nIGluIHRoZSBKU1ZhbHVlIGdpZ2FjYWdlLiBGb3Igc29tZSB0
eXBlcywgaXQncyBzdXBlciBvYnZpb3VzIHdoZXJlIHRoZXkgc2hvdWxkIGdvLCBhbmQgc28gd2UK
KyAgICAvLyBjYW4gaGFyZGNvZGUgdGhhdCBmYWN0LiBCdXQgc29tZXRpbWVzIGl0J3Mgbm90IGNs
ZWFyLCBzbyB3ZSBhYnN0cmFjdCBpdCBieSBoYXZpbmcgYSBHaWdhY2FnZTo6S2luZAorICAgIC8v
IGNvbnN0YW50IHNvbWV3aGVyZS4KKyAgICAvLyBGSVhNRTogTWF5YmUgaXQgd291bGQgYmUgYmV0
dGVyIGlmIGV2ZXJ5b25lIGFic3RyYWN0ZWQgdGhpcz8KKyAgICAvLyBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc1MjQ4CisgICAgQUxXQVlTX0lOTElORSBDb21wbGV0
ZVN1YnNwYWNlJiBnaWdhY2FnZUF1eGlsaWFyeVNwYWNlKEdpZ2FjYWdlOjpLaW5kIGtpbmQpCisg
ICAgeworICAgICAgICBzd2l0Y2ggKGtpbmQpIHsKKyAgICAgICAgY2FzZSBHaWdhY2FnZTo6UHJp
bWl0aXZlOgorICAgICAgICAgICAgcmV0dXJuIHByaW1pdGl2ZUdpZ2FjYWdlQXV4aWxpYXJ5U3Bh
Y2U7CisgICAgICAgIGNhc2UgR2lnYWNhZ2U6OkpTVmFsdWU6CisgICAgICAgICAgICByZXR1cm4g
anNWYWx1ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2U7CisgICAgICAgIGNhc2UgR2lnYWNhZ2U6Ok51
bWJlck9mS2luZHM6CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBSRUxF
QVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gcHJpbWl0aXZlR2lnYWNh
Z2VBdXhpbGlhcnlTcGFjZTsKKyAgICB9CisgICAgCisgICAgLy8gV2hlbmV2ZXIgcG9zc2libGUs
IHVzZSBzdWJzcGFjZUZvcjxDZWxsVHlwZT4odm0pIHRvIGdldCBvbmUgb2YgdGhlc2Ugc3Vic3Bh
Y2VzLgorICAgIENvbXBsZXRlU3Vic3BhY2UgY2VsbFNwYWNlOworICAgIENvbXBsZXRlU3Vic3Bh
Y2UgdmFyaWFibGVTaXplZENlbGxTcGFjZTsgLy8gRklYTUU6IFRoaXMgc3BhY2UgaXMgcHJvYmxl
bWF0aWMgYmVjYXVzZSB3ZSBoYXZlIHRoaW5ncyBpbiBoZXJlIGxpa2UgRGlyZWN0QXJndW1lbnRz
IGFuZCBTY29wZWRBcmd1bWVudHM7IHRob3NlIHNob3VsZCBiZSBzcGxpdCBpbnRvIEpTVmFsdWVP
T0IgY2VsbHMgYW5kIEpTVmFsdWVTdHJpY3QgYXV4aWxpYXJpZXMuIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODI4NTgKKyAgICBDb21wbGV0ZVN1YnNwYWNlIGRlc3Ry
dWN0aWJsZU9iamVjdFNwYWNlOworCisgICAgSXNvU3Vic3BhY2UgYXJyYXlTcGFjZTsKKyAgICBJ
c29TdWJzcGFjZSBiaWdJbnRTcGFjZTsKKyAgICBJc29TdWJzcGFjZSBjYWxsZWVTcGFjZTsKKyAg
ICBJc29TdWJzcGFjZSBjbG9uZWRBcmd1bWVudHNTcGFjZTsKKyAgICBJc29TdWJzcGFjZSBjdXN0
b21HZXR0ZXJTZXR0ZXJTcGFjZTsKKyAgICBJc29TdWJzcGFjZSBkYXRlSW5zdGFuY2VTcGFjZTsK
KyAgICBJc29TdWJzcGFjZSBkb21BdHRyaWJ1dGVHZXR0ZXJTZXR0ZXJTcGFjZTsKKyAgICBJc29T
dWJzcGFjZSBleGNlcHRpb25TcGFjZTsKKyAgICBJc29TdWJzcGFjZSBleGVjdXRhYmxlVG9Db2Rl
QmxvY2tFZGdlU3BhY2U7CisgICAgSXNvU3Vic3BhY2UgZnVuY3Rpb25TcGFjZTsKKyAgICBJc29T
dWJzcGFjZSBnZXR0ZXJTZXR0ZXJTcGFjZTsKKyAgICBJc29TdWJzcGFjZSBnbG9iYWxMZXhpY2Fs
RW52aXJvbm1lbnRTcGFjZTsKKyAgICBJc29TdWJzcGFjZSBpbnRlcm5hbEZ1bmN0aW9uU3BhY2U7
CisgICAgSXNvU3Vic3BhY2UganNQcm94eVNwYWNlOworICAgIElzb1N1YnNwYWNlIG5hdGl2ZUV4
ZWN1dGFibGVTcGFjZTsKKyAgICBJc29TdWJzcGFjZSBudW1iZXJPYmplY3RTcGFjZTsKKyAgICBJ
c29TdWJzcGFjZSBwbGFpbk9iamVjdFNwYWNlOworICAgIElzb1N1YnNwYWNlIHByb21pc2VTcGFj
ZTsKKyAgICBJc29TdWJzcGFjZSBwcm9wZXJ0eU5hbWVFbnVtZXJhdG9yU3BhY2U7CisgICAgSXNv
U3Vic3BhY2UgcHJvcGVydHlUYWJsZVNwYWNlOworICAgIElzb1N1YnNwYWNlIHJlZ0V4cFNwYWNl
OworICAgIElzb1N1YnNwYWNlIHJlZ0V4cE9iamVjdFNwYWNlOworICAgIElzb1N1YnNwYWNlIHJv
cGVTdHJpbmdTcGFjZTsKKyAgICBJc29TdWJzcGFjZSBzY29wZWRBcmd1bWVudHNTcGFjZTsKKyAg
ICBJc29TdWJzcGFjZSBzcGFyc2VBcnJheVZhbHVlTWFwU3BhY2U7CisgICAgSXNvU3Vic3BhY2Ug
c3RyaW5nU3BhY2U7CisgICAgSXNvU3Vic3BhY2Ugc3RyaW5nT2JqZWN0U3BhY2U7CisgICAgSXNv
U3Vic3BhY2Ugc3RydWN0dXJlQ2hhaW5TcGFjZTsKKyAgICBJc29TdWJzcGFjZSBzdHJ1Y3R1cmVS
YXJlRGF0YVNwYWNlOworICAgIElzb1N1YnNwYWNlIHN0cnVjdHVyZVNwYWNlOworICAgIElzb1N1
YnNwYWNlIGJyYW5kZWRTdHJ1Y3R1cmVTcGFjZTsKKyAgICBJc29TdWJzcGFjZSBzeW1ib2xUYWJs
ZVNwYWNlOworCisjZGVmaW5lIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIobmFt
ZSkgXAorICAgIHRlbXBsYXRlPFN1YnNwYWNlQWNjZXNzIG1vZGU+IFwKKyAgICBJc29TdWJzcGFj
ZSogbmFtZSgpIFwKKyAgICB7IFwKKyAgICAgICAgaWYgKG1fIyNuYW1lIHx8IG1vZGUgPT0gU3Vi
c3BhY2VBY2Nlc3M6OkNvbmN1cnJlbnRseSkgXAorICAgICAgICAgICAgcmV0dXJuIG1fIyNuYW1l
LmdldCgpOyBcCisgICAgICAgIHJldHVybiBuYW1lIyNTbG93KCk7IFwKKyAgICB9IFwKKyAgICBK
U19FWFBPUlRfUFJJVkFURSBJc29TdWJzcGFjZSogbmFtZSMjU2xvdygpOyBcCisgICAgc3RkOjp1
bmlxdWVfcHRyPElzb1N1YnNwYWNlPiBtXyMjbmFtZTsKKworCisjaWYgSlNDX09CSkNfQVBJX0VO
QUJMRUQKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKGFwaVdyYXBwZXJP
YmplY3RTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKG9iakND
YWxsYmFja0Z1bmN0aW9uU3BhY2UpCisjZW5kaWYKKyNpZmRlZiBKU0NfR0xJQl9BUElfRU5BQkxF
RAorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoYXBpV3JhcHBlck9iamVj
dFNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoanNjQ2FsbGJh
Y2tGdW5jdGlvblNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIo
Y2FsbGJhY2tBUElXcmFwcGVyR2xvYmFsT2JqZWN0U3BhY2UpCisjZW5kaWYKKyAgICBEWU5BTUlD
X0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKGFwaUdsb2JhbE9iamVjdFNwYWNlKQorICAgIERZ
TkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoYXBpVmFsdWVXcmFwcGVyU3BhY2UpCisg
ICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihhcnJheUJ1ZmZlclNwYWNlKQor
ICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoYXJyYXlJdGVyYXRvclNwYWNl
KQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoYXN5bmNHZW5lcmF0b3JT
cGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKGJpZ0ludDY0QXJy
YXlTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKGJpZ0ludE9i
amVjdFNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoYmlnVWlu
dDY0QXJyYXlTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKGJv
b2xlYW5PYmplY3RTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVS
KGJvdW5kRnVuY3Rpb25TcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVN
QkVSKGNhbGxiYWNrQ29uc3RydWN0b3JTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9E
RUZJTkVfTUVNQkVSKGNhbGxiYWNrR2xvYmFsT2JqZWN0U3BhY2UpCisgICAgRFlOQU1JQ19JU09f
U1VCU1BBQ0VfREVGSU5FX01FTUJFUihjYWxsYmFja0Z1bmN0aW9uU3BhY2UpCisgICAgRFlOQU1J
Q19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihjYWxsYmFja09iamVjdFNwYWNlKQorICAgIERZ
TkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoY3VzdG9tR2V0dGVyRnVuY3Rpb25TcGFj
ZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKGN1c3RvbVNldHRlckZ1
bmN0aW9uU3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihkYXRh
Vmlld1NwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoZGVidWdn
ZXJTY29wZVNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoZXJy
b3JJbnN0YW5jZVNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIo
ZmxvYXQzMkFycmF5U3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJF
UihmbG9hdDY0QXJyYXlTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVN
QkVSKGZ1bmN0aW9uUmFyZURhdGFTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJ
TkVfTUVNQkVSKGdlbmVyYXRvclNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklO
RV9NRU1CRVIoZ2xvYmFsT2JqZWN0U3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVG
SU5FX01FTUJFUihpbmplY3RlZFNjcmlwdEhvc3RTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJT
UEFDRV9ERUZJTkVfTUVNQkVSKGludDhBcnJheVNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQ
QUNFX0RFRklORV9NRU1CRVIoaW50MTZBcnJheVNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQ
QUNFX0RFRklORV9NRU1CRVIoaW50MzJBcnJheVNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQ
QUNFX0RFRklORV9NRU1CRVIoamF2YVNjcmlwdENhbGxGcmFtZVNwYWNlKQorICAgIERZTkFNSUNf
SVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoanNNb2R1bGVSZWNvcmRTcGFjZSkKKyAgICBEWU5B
TUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKG1hcEJ1Y2tldFNwYWNlKQorICAgIERZTkFN
SUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIobWFwSXRlcmF0b3JTcGFjZSkKKyAgICBEWU5B
TUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKG1hcFNwYWNlKQorICAgIERZTkFNSUNfSVNP
X1NVQlNQQUNFX0RFRklORV9NRU1CRVIobW9kdWxlTmFtZXNwYWNlT2JqZWN0U3BhY2UpCisgICAg
RFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihuYXRpdmVTdGRGdW5jdGlvblNwYWNl
KQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIocHJveHlPYmplY3RTcGFj
ZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKHByb3h5UmV2b2tlU3Bh
Y2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihzY29wZWRBcmd1bWVu
dHNUYWJsZVNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoc2Ny
aXB0RmV0Y2hQYXJhbWV0ZXJzU3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5F
X01FTUJFUihzY3JpcHRGZXRjaGVyU3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVG
SU5FX01FTUJFUihzZXRCdWNrZXRTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJ
TkVfTUVNQkVSKHNldEl0ZXJhdG9yU3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVG
SU5FX01FTUJFUihzZXRTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVN
QkVSKHNoYWRvd1JlYWxtU3BhY2UpOworICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9N
RU1CRVIoc3RyaWN0RXZhbEFjdGl2YXRpb25TcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFD
RV9ERUZJTkVfTUVNQkVSKHN0cmluZ0l0ZXJhdG9yU3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VC
U1BBQ0VfREVGSU5FX01FTUJFUihzb3VyY2VDb2RlU3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VC
U1BBQ0VfREVGSU5FX01FTUJFUihzeW1ib2xTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFD
RV9ERUZJTkVfTUVNQkVSKHN5bWJvbE9iamVjdFNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQ
QUNFX0RFRklORV9NRU1CRVIodGVtcGxhdGVPYmplY3REZXNjcmlwdG9yU3BhY2UpCisgICAgRFlO
QU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUih0ZW1wb3JhbENhbGVuZGFyU3BhY2UpCisg
ICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUih0ZW1wb3JhbER1cmF0aW9uU3Bh
Y2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUih0ZW1wb3JhbEluc3Rh
bnRTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKHRlbXBvcmFs
UGxhaW5UaW1lU3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUih0
ZW1wb3JhbFRpbWVab25lU3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01F
TUJFUih1aW50OEFycmF5U3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01F
TUJFUih1aW50OENsYW1wZWRBcnJheVNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RF
RklORV9NRU1CRVIodWludDE2QXJyYXlTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9E
RUZJTkVfTUVNQkVSKHVpbnQzMkFycmF5U3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0Vf
REVGSU5FX01FTUJFUih1bmxpbmtlZEV2YWxDb2RlQmxvY2tTcGFjZSkKKyAgICBEWU5BTUlDX0lT
T19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKHVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2tTcGFjZSkK
KyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKHVubGlua2VkTW9kdWxlUHJv
Z3JhbUNvZGVCbG9ja1NwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1C
RVIodW5saW5rZWRQcm9ncmFtQ29kZUJsb2NrU3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BB
Q0VfREVGSU5FX01FTUJFUihmaW5hbGl6YXRpb25SZWdpc3RyeVNwYWNlKQorICAgIERZTkFNSUNf
SVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIod2Vha09iamVjdFJlZlNwYWNlKQorICAgIERZTkFN
SUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIod2Vha1NldFNwYWNlKQorICAgIERZTkFNSUNf
SVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIod2Vha01hcFNwYWNlKQorICAgIERZTkFNSUNfSVNP
X1NVQlNQQUNFX0RFRklORV9NRU1CRVIod2l0aFNjb3BlU3BhY2UpCisgICAgRFlOQU1JQ19JU09f
U1VCU1BBQ0VfREVGSU5FX01FTUJFUihpbnRsQ29sbGF0b3JTcGFjZSkKKyAgICBEWU5BTUlDX0lT
T19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKGludGxEYXRlVGltZUZvcm1hdFNwYWNlKQorICAgIERZ
TkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoaW50bERpc3BsYXlOYW1lc1NwYWNlKQor
ICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoaW50bExpc3RGb3JtYXRTcGFj
ZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKGludGxMb2NhbGVTcGFj
ZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKGludGxOdW1iZXJGb3Jt
YXRTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKGludGxQbHVy
YWxSdWxlc1NwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoaW50
bFJlbGF0aXZlVGltZUZvcm1hdFNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklO
RV9NRU1CRVIoaW50bFNlZ21lbnRJdGVyYXRvclNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQ
QUNFX0RFRklORV9NRU1CRVIoaW50bFNlZ21lbnRlclNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NV
QlNQQUNFX0RFRklORV9NRU1CRVIoaW50bFNlZ21lbnRzU3BhY2UpCisjaWYgRU5BQkxFKFdFQkFT
U0VNQkxZKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoanNUb1dhc21J
Q0NhbGxlZVNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIod2Vi
QXNzZW1ibHlDb2RlQmxvY2tTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVf
TUVNQkVSKHdlYkFzc2VtYmx5RXhjZXB0aW9uU3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BB
Q0VfREVGSU5FX01FTUJFUih3ZWJBc3NlbWJseUZ1bmN0aW9uU3BhY2UpCisgICAgRFlOQU1JQ19J
U09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUih3ZWJBc3NlbWJseUdsb2JhbFNwYWNlKQorICAgIERZ
TkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIod2ViQXNzZW1ibHlJbnN0YW5jZVNwYWNl
KQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIod2ViQXNzZW1ibHlNZW1v
cnlTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKHdlYkFzc2Vt
Ymx5TW9kdWxlU3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUih3
ZWJBc3NlbWJseU1vZHVsZVJlY29yZFNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RF
RklORV9NRU1CRVIod2ViQXNzZW1ibHlUYWJsZVNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQ
QUNFX0RFRklORV9NRU1CRVIod2ViQXNzZW1ibHlUYWdTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19T
VUJTUEFDRV9ERUZJTkVfTUVNQkVSKHdlYkFzc2VtYmx5V3JhcHBlckZ1bmN0aW9uU3BhY2UpCisj
ZW5kaWYKKworI3VuZGVmIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIKKyAgICAK
KyAgICBJc29DZWxsU2V0IGV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2VzV2l0aENvbnN0cmFpbnRz
OworICAgIElzb0NlbGxTZXQgZXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZXNXaXRoRmluYWxpemVy
czsKKworI2RlZmluZSBEWU5BTUlDX1NQQUNFX0FORF9TRVRfREVGSU5FX01FTUJFUihuYW1lKSBc
CisgICAgdGVtcGxhdGU8U3Vic3BhY2VBY2Nlc3MgbW9kZT4gXAorICAgIElzb1N1YnNwYWNlKiBu
YW1lKCkgXAorICAgIHsgXAorICAgICAgICBpZiAoYXV0byogc3BhY2VBbmRTZXQgPSBtXyMjbmFt
ZS5nZXQoKSkgXAorICAgICAgICAgICAgcmV0dXJuICZzcGFjZUFuZFNldC0+c3BhY2U7IFwKKyAg
ICAgICAgaWYgKG1vZGUgPT0gU3Vic3BhY2VBY2Nlc3M6OkNvbmN1cnJlbnRseSkgXAorICAgICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7IFwKKyAgICAgICAgcmV0dXJuIG5hbWUjI1Nsb3coKTsgXAor
ICAgIH0gXAorICAgIElzb1N1YnNwYWNlKiBuYW1lIyNTbG93KCk7IFwKKyAgICBzdGQ6OnVuaXF1
ZV9wdHI8U3BhY2VBbmRTZXQ+IG1fIyNuYW1lOworICAgIAorICAgIHN0cnVjdCBTcGFjZUFuZFNl
dCB7CisgICAgICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKKworICAgICAgICBJ
c29TdWJzcGFjZSBzcGFjZTsKKyAgICAgICAgSXNvQ2VsbFNldCBzZXQ7CisgICAgICAgIAorICAg
ICAgICB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBBcmd1bWVudHM+CisgICAgICAgIFNwYWNlQW5kU2V0
KEFyZ3VtZW50cyYmLi4uIGFyZ3VtZW50cykKKyAgICAgICAgICAgIDogc3BhY2Uoc3RkOjpmb3J3
YXJkPEFyZ3VtZW50cz4oYXJndW1lbnRzKS4uLikKKyAgICAgICAgICAgICwgc2V0KHNwYWNlKQor
ICAgICAgICB7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHN0YXRpYyBJc29DZWxsU2V0
JiBzZXRGb3IoU3Vic3BhY2UmIHNwYWNlKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4g
KmJpdHdpc2VfY2FzdDxJc29DZWxsU2V0Kj4oCisgICAgICAgICAgICAgICAgYml0d2lzZV9jYXN0
PGNoYXIqPigmc3BhY2UpIC0KKyAgICAgICAgICAgICAgICBPQkpFQ1RfT0ZGU0VUT0YoU3BhY2VB
bmRTZXQsIHNwYWNlKSArCisgICAgICAgICAgICAgICAgT0JKRUNUX09GRlNFVE9GKFNwYWNlQW5k
U2V0LCBzZXQpKTsKKyAgICAgICAgfQorICAgIH07CisgICAgCisgICAgU3BhY2VBbmRTZXQgY29k
ZUJsb2NrU3BhY2U7CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jPgorICAgIHZvaWQgZm9y
RWFjaENvZGVCbG9ja1NwYWNlKGNvbnN0IEZ1bmMmIGZ1bmMpCisgICAgeworICAgICAgICAvLyBU
aGlzIHNob3VsZCBub3QgaW5jbHVkZSB3ZWJBc3NlbWJseUNvZGVCbG9ja1NwYWNlIGJlY2F1c2Ug
dGhpcyBpcyBhYm91dCBzdWJzY2xhc3NlcyBvZgorICAgICAgICAvLyBKU0M6OkNvZGVCbG9jay4K
KyAgICAgICAgZnVuYyhjb2RlQmxvY2tTcGFjZSk7CisgICAgfQorCisgICAgRFlOQU1JQ19TUEFD
RV9BTkRfU0VUX0RFRklORV9NRU1CRVIoZXZhbEV4ZWN1dGFibGVTcGFjZSkKKyAgICBEWU5BTUlD
X1NQQUNFX0FORF9TRVRfREVGSU5FX01FTUJFUihtb2R1bGVQcm9ncmFtRXhlY3V0YWJsZVNwYWNl
KQorICAgIFNwYWNlQW5kU2V0IGZ1bmN0aW9uRXhlY3V0YWJsZVNwYWNlOworICAgIFNwYWNlQW5k
U2V0IHByb2dyYW1FeGVjdXRhYmxlU3BhY2U7CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5j
PgorICAgIHZvaWQgZm9yRWFjaFNjcmlwdEV4ZWN1dGFibGVTcGFjZShjb25zdCBGdW5jJiBmdW5j
KQorICAgIHsKKyAgICAgICAgaWYgKG1fZXZhbEV4ZWN1dGFibGVTcGFjZSkKKyAgICAgICAgICAg
IGZ1bmMoKm1fZXZhbEV4ZWN1dGFibGVTcGFjZSk7CisgICAgICAgIGZ1bmMoZnVuY3Rpb25FeGVj
dXRhYmxlU3BhY2UpOworICAgICAgICBpZiAobV9tb2R1bGVQcm9ncmFtRXhlY3V0YWJsZVNwYWNl
KQorICAgICAgICAgICAgZnVuYygqbV9tb2R1bGVQcm9ncmFtRXhlY3V0YWJsZVNwYWNlKTsKKyAg
ICAgICAgZnVuYyhwcm9ncmFtRXhlY3V0YWJsZVNwYWNlKTsKKyAgICB9CisKKyAgICBTcGFjZUFu
ZFNldCB1bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZVNwYWNlOworCisjdW5kZWYgRFlOQU1JQ19T
UEFDRV9BTkRfU0VUX0RFRklORV9NRU1CRVIKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcENlbGxUeXBlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwQ2VsbFR5cGUuY3BwCShyZXZpc2lv
biAyODYwMjQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwQ2VsbFR5cGUuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
NyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTct
MjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTU2LDEyICs1NiwxMiBAQCBIZWFwQ2VsbFR5cGU6On5IZWFwQ2VsbFR5
cGUoKQogewogfQogCi12b2lkIEhlYXBDZWxsVHlwZTo6ZmluaXNoU3dlZXAoTWFya2VkQmxvY2s6
OkhhbmRsZSYgYmxvY2ssIEZyZWVMaXN0KiBmcmVlTGlzdCkKK3ZvaWQgSGVhcENlbGxUeXBlOjpm
aW5pc2hTd2VlcChNYXJrZWRCbG9jazo6SGFuZGxlJiBibG9jaywgRnJlZUxpc3QqIGZyZWVMaXN0
KSBjb25zdAogewogICAgIGJsb2NrLmZpbmlzaFN3ZWVwS25vd2luZ0hlYXBDZWxsVHlwZShmcmVl
TGlzdCwgRGVmYXVsdERlc3Ryb3lGdW5jKCkpOwogfQogCi12b2lkIEhlYXBDZWxsVHlwZTo6ZGVz
dHJveShWTSYgdm0sIEpTQ2VsbCogY2VsbCkKK3ZvaWQgSGVhcENlbGxUeXBlOjpkZXN0cm95KFZN
JiB2bSwgSlNDZWxsKiBjZWxsKSBjb25zdAogewogICAgIERlZmF1bHREZXN0cm95RnVuYygpKHZt
LCBjZWxsKTsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBDZWxsVHlw
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBDZWxsVHlw
ZS5oCShyZXZpc2lvbiAyODYwMjQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFw
Q2VsbFR5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDE3LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zNiwxNCArMzYsMTQgQEAgcHVibGljOgogICAgIEpT
X0VYUE9SVF9QUklWQVRFIEhlYXBDZWxsVHlwZShDZWxsQXR0cmlidXRlcyk7CiAgICAgSlNfRVhQ
T1JUX1BSSVZBVEUgdmlydHVhbCB+SGVhcENlbGxUeXBlKCk7CiAKLSAgICBjb25zdCBDZWxsQXR0
cmlidXRlcyYgYXR0cmlidXRlcygpIGNvbnN0IHsgcmV0dXJuIG1fYXR0cmlidXRlczsgfQorICAg
IGNvbnN0IENlbGxBdHRyaWJ1dGVzIGF0dHJpYnV0ZXMoKSBjb25zdCB7IHJldHVybiBtX2F0dHJp
YnV0ZXM7IH0KIAogICAgIC8vIFRoZSBwdXJwb3NlIG9mIG92ZXJyaWRpbmcgdGhpcyBpcyB0byBz
cGVjaWFsaXplIHRoZSBzd2VlcCBmb3IgeW91ciBkZXN0cnVjdG9ycy4gVGhpcyB3b24ndAogICAg
IC8vIGJlIGNhbGxlZCBmb3Igbm8tZGVzdHJ1Y3RvciBibG9ja3MuIFRoaXMgbXVzdCBjYWxsIE1h
cmtlZEJsb2NrOjpmaW5pc2hTd2VlcEtub3dpbmdTdWJzcGFjZS4KLSAgICB2aXJ0dWFsIHZvaWQg
ZmluaXNoU3dlZXAoTWFya2VkQmxvY2s6OkhhbmRsZSYsIEZyZWVMaXN0Kik7CisgICAgdmlydHVh
bCB2b2lkIGZpbmlzaFN3ZWVwKE1hcmtlZEJsb2NrOjpIYW5kbGUmLCBGcmVlTGlzdCopIGNvbnN0
OwogCiAgICAgLy8gVGhlc2UgZ2V0IGNhbGxlZCBmb3IgbGFyZ2Ugb2JqZWN0cy4KLSAgICB2aXJ0
dWFsIHZvaWQgZGVzdHJveShWTSYsIEpTQ2VsbCopOworICAgIHZpcnR1YWwgdm9pZCBkZXN0cm95
KFZNJiwgSlNDZWxsKikgY29uc3Q7CiAKIHByaXZhdGU6CiAgICAgQ2VsbEF0dHJpYnV0ZXMgbV9h
dHRyaWJ1dGVzOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSXNvSGVhcENlbGxU
eXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Jc29IZWFw
Q2VsbFR5cGUuY3BwCShyZXZpc2lvbiAyODYwMjQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9Jc29IZWFwQ2VsbFR5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAog
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTktMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM5LDEyICszOSwxMiBAQCBJ
c29IZWFwQ2VsbFR5cGU6Oklzb0hlYXBDZWxsVHlwZShEZXN0cnVjCiAKIElzb0hlYXBDZWxsVHlw
ZTo6fklzb0hlYXBDZWxsVHlwZSgpID0gZGVmYXVsdDsKIAotdm9pZCBJc29IZWFwQ2VsbFR5cGU6
OmZpbmlzaFN3ZWVwKE1hcmtlZEJsb2NrOjpIYW5kbGUmIGhhbmRsZSwgRnJlZUxpc3QqIGZyZWVM
aXN0KQordm9pZCBJc29IZWFwQ2VsbFR5cGU6OmZpbmlzaFN3ZWVwKE1hcmtlZEJsb2NrOjpIYW5k
bGUmIGhhbmRsZSwgRnJlZUxpc3QqIGZyZWVMaXN0KSBjb25zdAogewogICAgIGhhbmRsZS5maW5p
c2hTd2VlcEtub3dpbmdIZWFwQ2VsbFR5cGUoZnJlZUxpc3QsICp0aGlzKTsKIH0KIAotdm9pZCBJ
c29IZWFwQ2VsbFR5cGU6OmRlc3Ryb3koVk0mLCBKU0NlbGwqIGNlbGwpCit2b2lkIElzb0hlYXBD
ZWxsVHlwZTo6ZGVzdHJveShWTSYsIEpTQ2VsbCogY2VsbCkgY29uc3QKIHsKICAgICBtX2Rlc3Ry
b3koY2VsbCk7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Jc29IZWFwQ2Vs
bFR5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Jc29IZWFw
Q2VsbFR5cGUuaAkocmV2aXNpb24gMjg2MDI0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvSXNvSGVhcENlbGxUeXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgot
ICogQ29weXJpZ2h0IChDKSAyMDE5LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDE5LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNiw3ICsyNiw2IEBACiAj
cHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkhlYXBDZWxsVHlwZS5oIgotI2luY2x1ZGUgIk1hcmtl
ZEJsb2NrSW5saW5lcy5oIgogCiBuYW1lc3BhY2UgSlNDIHsKIApAQCAtMzksMTMgKzM4LDI5IEBA
IHB1YmxpYzoKICAgICBKU19FWFBPUlRfUFJJVkFURSBJc29IZWFwQ2VsbFR5cGUoRGVzdHJ1Y3Rp
b25Nb2RlLCBEZXN0cm95RnVuY3Rpb25QdHIpOwogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2Vs
bFR5cGU+CisgICAgc3RydWN0IEFyZ3MgeworICAgICAgICBBcmdzKCkKKyAgICAgICAgICAgIDog
bW9kZShDZWxsVHlwZTo6bmVlZHNEZXN0cnVjdGlvbiA/IE5lZWRzRGVzdHJ1Y3Rpb24gOiBEb2Vz
Tm90TmVlZERlc3RydWN0aW9uKQorICAgICAgICAgICAgLCBmdW5jdGlvblB0cigmQ2VsbFR5cGU6
OmRlc3Ryb3kpCisgICAgICAgIHsgfQorCisgICAgICAgIERlc3RydWN0aW9uTW9kZSBtb2RlOwor
ICAgICAgICBEZXN0cm95RnVuY3Rpb25QdHIgZnVuY3Rpb25QdHI7CisgICAgfTsKKworICAgIHRl
bXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlPgorICAgIElzb0hlYXBDZWxsVHlwZShBcmdzPENlbGxU
eXBlPiYmIGFyZ3MpCisgICAgICAgIDogSXNvSGVhcENlbGxUeXBlKGFyZ3MubW9kZSwgYXJncy5m
dW5jdGlvblB0cikKKyAgICB7IH0KKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlPgog
ICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8SXNvSGVhcENlbGxUeXBlPiBjcmVhdGUoKQogICAg
IHsKICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8SXNvSGVhcENlbGxUeXBlPihDZWxsVHlwZTo6
bmVlZHNEZXN0cnVjdGlvbiA/IE5lZWRzRGVzdHJ1Y3Rpb24gOiBEb2VzTm90TmVlZERlc3RydWN0
aW9uLCAmQ2VsbFR5cGU6OmRlc3Ryb3kpOwogICAgIH0KIAotICAgIEpTX0VYUE9SVF9QUklWQVRF
IHZvaWQgZmluaXNoU3dlZXAoTWFya2VkQmxvY2s6OkhhbmRsZSYsIEZyZWVMaXN0KikgZmluYWw7
Ci0gICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBkZXN0cm95KFZNJiwgSlNDZWxsKikgZmluYWw7
CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBmaW5pc2hTd2VlcChNYXJrZWRCbG9jazo6SGFu
ZGxlJiwgRnJlZUxpc3QqKSBjb25zdCBmaW5hbDsKKyAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lk
IGRlc3Ryb3koVk0mLCBKU0NlbGwqKSBjb25zdCBmaW5hbDsKIAogICAgIEFMV0FZU19JTkxJTkUg
dm9pZCBvcGVyYXRvcigpKFZNJiwgSlNDZWxsKiBjZWxsKSBjb25zdAogICAgIHsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lzb0lubGluZWRIZWFwQ2VsbFR5cGUuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Jc29JbmxpbmVkSGVhcENlbGxUeXBl
LmgJKHJldmlzaW9uIDI4NjAyNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lzb0lu
bGluZWRIZWFwQ2VsbFR5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTktMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTktMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI2LDcgKzI2LDYgQEAKICNw
cmFnbWEgb25jZQogCiAjaW5jbHVkZSAiSGVhcENlbGxUeXBlLmgiCi0jaW5jbHVkZSAiTWFya2Vk
QmxvY2tJbmxpbmVzLmgiCiAKIG5hbWVzcGFjZSBKU0MgewogCkBAIC00NSwxMiArNDQsMTIgQEAg
cHVibGljOgogICAgICAgICB9CiAgICAgfTsKIAotICAgIHZvaWQgZmluaXNoU3dlZXAoTWFya2Vk
QmxvY2s6OkhhbmRsZSYgaGFuZGxlLCBGcmVlTGlzdCogZnJlZUxpc3QpIGZpbmFsCisgICAgdm9p
ZCBmaW5pc2hTd2VlcChNYXJrZWRCbG9jazo6SGFuZGxlJiBoYW5kbGUsIEZyZWVMaXN0KiBmcmVl
TGlzdCkgY29uc3QgZmluYWwKICAgICB7CiAgICAgICAgIGhhbmRsZS5maW5pc2hTd2VlcEtub3dp
bmdIZWFwQ2VsbFR5cGUoZnJlZUxpc3QsIERlc3Ryb3lGdW5jKCkpOwogICAgIH0KIAotICAgIHZv
aWQgZGVzdHJveShWTSYsIEpTQ2VsbCogY2VsbCkgZmluYWwKKyAgICB2b2lkIGRlc3Ryb3koVk0m
LCBKU0NlbGwqIGNlbGwpIGNvbnN0IGZpbmFsCiAgICAgewogICAgICAgICBDZWxsVHlwZTo6ZGVz
dHJveShjZWxsKTsKICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Jc29T
dWJzcGFjZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSXNv
U3Vic3BhY2UuY3BwCShyZXZpc2lvbiAyODYwMjQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9Jc29TdWJzcGFjZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzLDcgKzMzLDcgQEAKIAog
bmFtZXNwYWNlIEpTQyB7CiAKLUlzb1N1YnNwYWNlOjpJc29TdWJzcGFjZShDU3RyaW5nIG5hbWUs
IEhlYXAmIGhlYXAsIEhlYXBDZWxsVHlwZSogaGVhcENlbGxUeXBlLCBzaXplX3Qgc2l6ZSwgdWlu
dDhfdCBudW1iZXJPZkxvd2VyVGllckNlbGxzKQorSXNvU3Vic3BhY2U6Oklzb1N1YnNwYWNlKENT
dHJpbmcgbmFtZSwgSGVhcCYgaGVhcCwgY29uc3QgSGVhcENlbGxUeXBlJiBoZWFwQ2VsbFR5cGUs
IHNpemVfdCBzaXplLCB1aW50OF90IG51bWJlck9mTG93ZXJUaWVyQ2VsbHMpCiAgICAgOiBTdWJz
cGFjZShuYW1lLCBoZWFwKQogICAgICwgbV9kaXJlY3RvcnkoV1RGOjpyb3VuZFVwVG9NdWx0aXBs
ZU9mPE1hcmtlZEJsb2NrOjphdG9tU2l6ZT4oc2l6ZSkpCiAgICAgLCBtX2xvY2FsQWxsb2NhdG9y
KCZtX2RpcmVjdG9yeSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lzb1N1YnNw
YWNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSXNvU3Vic3Bh
Y2UuaAkocmV2aXNpb24gMjg2MDI0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSXNv
U3Vic3BhY2UuaAkod29ya2luZyBjb3B5KQpAQCAtMzcsNyArMzcsNyBAQCBjbGFzcyBJc29DZWxs
U2V0OwogCiBjbGFzcyBJc29TdWJzcGFjZSA6IHB1YmxpYyBTdWJzcGFjZSB7CiBwdWJsaWM6Ci0g
ICAgSlNfRVhQT1JUX1BSSVZBVEUgSXNvU3Vic3BhY2UoQ1N0cmluZyBuYW1lLCBIZWFwJiwgSGVh
cENlbGxUeXBlKiwgc2l6ZV90IHNpemUsIHVpbnQ4X3QgbnVtYmVyT2ZMb3dlclRpZXJDZWxscyk7
CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgSXNvU3Vic3BhY2UoQ1N0cmluZyBuYW1lLCBIZWFwJiwg
Y29uc3QgSGVhcENlbGxUeXBlJiwgc2l6ZV90LCB1aW50OF90IG51bWJlck9mTG93ZXJUaWVyQ2Vs
bHMpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIH5Jc29TdWJzcGFjZSgpIG92ZXJyaWRlOwogCiAg
ICAgc2l6ZV90IGNlbGxTaXplKCkgeyByZXR1cm4gbV9kaXJlY3RvcnkuY2VsbFNpemUoKTsgfQpA
QCAtNTQsNyArNTQsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCogdHJ5QWxsb2NhdGVGcm9tTG93ZXJU
aWVyKCk7CiAgICAgdm9pZCBkZXN0cm95TG93ZXJUaWVyRnJlZUxpc3QoKTsKIAotICAgIHZvaWQg
c3dlZXAoKTsKKyAgICB2b2lkIHN3ZWVwMygpOwogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVu
Yz4gdm9pZCBmb3JFYWNoTG93ZXJUaWVyRnJlZUxpc3RlZFByZWNpc2VBbGxvY2F0aW9uKGNvbnN0
IEZ1bmMmKTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSXNvU3Vic3BhY2VJ
bmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSXNvU3Vi
c3BhY2VJbmxpbmVzLmgJKHJldmlzaW9uIDI4NjAyNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL0lzb1N1YnNwYWNlSW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC00NCw3ICs0NCw3
IEBAIGlubGluZSB2b2lkIElzb1N1YnNwYWNlOjpjbGVhcklzb0NlbGxTZXQKICAgICAgICAgfSk7
CiB9CiAKLWlubGluZSB2b2lkIElzb1N1YnNwYWNlOjpzd2VlcCgpCitpbmxpbmUgdm9pZCBJc29T
dWJzcGFjZTo6c3dlZXAzKCkKIHsKICAgICBTdWJzcGFjZTo6c3dlZXBCbG9ja3MoKTsKICAgICAv
LyBXZSBzd2VlcCBwcmVjaXNlLWFsbG9jYXRpb25zIGVhZ2VybHksIGJ1dCB3ZSBkbyBub3QgZnJl
ZSBpdCBpbW1lZGlhdGVseS4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lzb1N1
YnNwYWNlUGVyVk0uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L0lzb1N1YnNwYWNlUGVyVk0uY3BwCShyZXZpc2lvbiAyODYwMjQpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9Jc29TdWJzcGFjZVBlclZNLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMs
NyArMzMsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogY2xhc3MgSXNvU3Vic3BhY2VQZXJWTTo6QXV0
b3JlbW92aW5nSXNvU3Vic3BhY2UgZmluYWwgOiBwdWJsaWMgSXNvU3Vic3BhY2UgewogcHVibGlj
OgotICAgIEF1dG9yZW1vdmluZ0lzb1N1YnNwYWNlKElzb1N1YnNwYWNlUGVyVk0mIHBlclZNLCBD
U3RyaW5nIG5hbWUsIEhlYXAmIGhlYXAsIEhlYXBDZWxsVHlwZSogaGVhcENlbGxUeXBlLCBzaXpl
X3Qgc2l6ZSkKKyAgICBBdXRvcmVtb3ZpbmdJc29TdWJzcGFjZShJc29TdWJzcGFjZVBlclZNJiBw
ZXJWTSwgQ1N0cmluZyBuYW1lLCBIZWFwJiBoZWFwLCBjb25zdCBIZWFwQ2VsbFR5cGUmIGhlYXBD
ZWxsVHlwZSwgc2l6ZV90IHNpemUpCiAgICAgICAgIDogSXNvU3Vic3BhY2UobmFtZSwgaGVhcCwg
aGVhcENlbGxUeXBlLCBzaXplLCAvKiBudW1iZXJPZkxvd2VyVGllckNlbGxzICovIDApCiAgICAg
ICAgICwgbV9wZXJWTShwZXJWTSkKICAgICB7CkBAIC02NSw3ICs2NSw3IEBAIElzb1N1YnNwYWNl
JiBJc29TdWJzcGFjZVBlclZNOjpmb3JWTShWTSYKICAgICBhdXRvIHJlc3VsdCA9IG1fc3Vic3Bh
Y2VQZXJWTS5hZGQoJnZtLCBudWxscHRyKTsKICAgICBpZiAocmVzdWx0LmlzTmV3RW50cnkpIHsK
ICAgICAgICAgU3Vic3BhY2VQYXJhbWV0ZXJzIHBhcmFtcyA9IG1fc3Vic3BhY2VQYXJhbWV0ZXJz
KHZtKTsKLSAgICAgICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IG5ldyBBdXRvcmVtb3ZpbmdJ
c29TdWJzcGFjZSgqdGhpcywgcGFyYW1zLm5hbWUsIHZtLmhlYXAsIHBhcmFtcy5oZWFwQ2VsbFR5
cGUsIHBhcmFtcy5zaXplKTsKKyAgICAgICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IG5ldyBB
dXRvcmVtb3ZpbmdJc29TdWJzcGFjZSgqdGhpcywgcGFyYW1zLm5hbWUsIHZtLmhlYXAsICpwYXJh
bXMuaGVhcENlbGxUeXBlLCBwYXJhbXMuc2l6ZSk7CiAgICAgfQogICAgIHJldHVybiAqcmVzdWx0
Lml0ZXJhdG9yLT52YWx1ZTsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lz
b1N1YnNwYWNlUGVyVk0uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVh
cC9Jc29TdWJzcGFjZVBlclZNLmgJKHJldmlzaW9uIDI4NjAyNCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL0lzb1N1YnNwYWNlUGVyVk0uaAkod29ya2luZyBjb3B5KQpAQCAtNDEsMTUg
KzQxLDE1IEBAIHB1YmxpYzoKICAgICBzdHJ1Y3QgU3Vic3BhY2VQYXJhbWV0ZXJzIHsKICAgICAg
ICAgU3Vic3BhY2VQYXJhbWV0ZXJzKCkgeyB9CiAgICAgICAgIAotICAgICAgICBTdWJzcGFjZVBh
cmFtZXRlcnMoQ1N0cmluZyBuYW1lLCBIZWFwQ2VsbFR5cGUqIGhlYXBDZWxsVHlwZSwgc2l6ZV90
IHNpemUpCisgICAgICAgIFN1YnNwYWNlUGFyYW1ldGVycyhDU3RyaW5nIG5hbWUsIGNvbnN0IEhl
YXBDZWxsVHlwZSYgaGVhcENlbGxUeXBlLCBzaXplX3Qgc2l6ZSkKICAgICAgICAgICAgIDogbmFt
ZShXVEZNb3ZlKG5hbWUpKQotICAgICAgICAgICAgLCBoZWFwQ2VsbFR5cGUoaGVhcENlbGxUeXBl
KQorICAgICAgICAgICAgLCBoZWFwQ2VsbFR5cGUoJmhlYXBDZWxsVHlwZSkKICAgICAgICAgICAg
ICwgc2l6ZShzaXplKQogICAgICAgICB7CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIENT
dHJpbmcgbmFtZTsKLSAgICAgICAgSGVhcENlbGxUeXBlKiBoZWFwQ2VsbFR5cGUgeyBudWxscHRy
IH07CisgICAgICAgIGNvbnN0IEhlYXBDZWxsVHlwZSogaGVhcENlbGxUeXBlIHsgbnVsbHB0ciB9
OwogICAgICAgICBzaXplX3Qgc2l6ZSB7IDAgfTsKICAgICB9OwogICAgIApJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2suaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9jay5oCShyZXZpc2lvbiAyODYwMjQpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9jay5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xNjEsNyArMTYxLDcgQEAgcHVibGljOgogICAgICAgICBzaXplX3QgY2VsbFNpemUoKTsKICAg
ICAgICAgaW5saW5lIHVuc2lnbmVkIGNlbGxzUGVyQmxvY2soKTsKICAgICAgICAgCi0gICAgICAg
IGNvbnN0IENlbGxBdHRyaWJ1dGVzJiBhdHRyaWJ1dGVzKCkgY29uc3Q7CisgICAgICAgIGNvbnN0
IENlbGxBdHRyaWJ1dGVzIGF0dHJpYnV0ZXMoKSBjb25zdDsKICAgICAgICAgRGVzdHJ1Y3Rpb25N
b2RlIGRlc3RydWN0aW9uKCkgY29uc3Q7CiAgICAgICAgIGJvb2wgbmVlZHNEZXN0cnVjdGlvbigp
IGNvbnN0OwogICAgICAgICBIZWFwQ2VsbDo6S2luZCBjZWxsS2luZCgpIGNvbnN0OwpAQCAtMzQ3
LDcgKzM0Nyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlc2V0QWxsb2NhdGVkKCk7CiAgICAgICAg
IAogICAgIHNpemVfdCBjZWxsU2l6ZSgpOwotICAgIGNvbnN0IENlbGxBdHRyaWJ1dGVzJiBhdHRy
aWJ1dGVzKCkgY29uc3Q7CisgICAgY29uc3QgQ2VsbEF0dHJpYnV0ZXMgYXR0cmlidXRlcygpIGNv
bnN0OwogICAgIAogICAgIGJvb2wgaGFzQW55TWFya2VkKCkgY29uc3Q7CiAgICAgdm9pZCBub3Rl
TWFya2VkKCk7CkBAIC01MTEsMTIgKzUxMSwxMiBAQCBpbmxpbmUgc2l6ZV90IE1hcmtlZEJsb2Nr
OjpjZWxsU2l6ZSgpCiAgICAgcmV0dXJuIGhhbmRsZSgpLmNlbGxTaXplKCk7CiB9CiAKLWlubGlu
ZSBjb25zdCBDZWxsQXR0cmlidXRlcyYgTWFya2VkQmxvY2s6OkhhbmRsZTo6YXR0cmlidXRlcygp
IGNvbnN0CitpbmxpbmUgY29uc3QgQ2VsbEF0dHJpYnV0ZXMgTWFya2VkQmxvY2s6OkhhbmRsZTo6
YXR0cmlidXRlcygpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fYXR0cmlidXRlczsKIH0KIAotaW5s
aW5lIGNvbnN0IENlbGxBdHRyaWJ1dGVzJiBNYXJrZWRCbG9jazo6YXR0cmlidXRlcygpIGNvbnN0
CitpbmxpbmUgY29uc3QgQ2VsbEF0dHJpYnV0ZXMgTWFya2VkQmxvY2s6OmF0dHJpYnV0ZXMoKSBj
b25zdAogewogICAgIHJldHVybiBoYW5kbGUoKS5hdHRyaWJ1dGVzKCk7CiB9CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9ja0lubGluZXMuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9ja0lubGluZXMuaAkocmV2aXNp
b24gMjg2MDI0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2tJbmxp
bmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChD
KSAyMDE2LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDE2LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yMTMsNyArMjEzLDcgQEAgaW5saW5lIGJvb2wgTWFy
a2VkQmxvY2s6OkhhbmRsZTo6YXJlTWFyawogLy8gc3dlZXBNb2RlID09IFN3ZWVwVG9GcmVlTGlz
dAogLy8gc2NyaWJibGVNb2RlID09IERvbnRTY3JpYmJsZQogLy8gbmV3bHlBbGxvY2F0ZWRNb2Rl
ID09IERvZXNOb3RIYXZlTmV3bHlBbGxvY2F0ZWQKLS8vIGRlc3RydWN0aW9uTW9kZSAhPSBCbG9j
a0hhc0Rlc3RyaWN0b3JzQW5kQ29sbGVjdG9ySXNSdW5uaW5nCisvLyBkZXN0cnVjdGlvbk1vZGUg
IT0gQmxvY2tIYXNEZXN0cnVjdG9yc0FuZENvbGxlY3RvcklzUnVubmluZwogLy8KIC8vIGVtcHR5
TW9kZSA9IElzRW1wdHkKIC8vICAgICBkZXN0cnVjdGlvbk1vZGUgPSBEb2VzTm90TmVlZERlc3Ry
dWN0aW9uCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9QcmVjaXNlQWxsb2NhdGlv
bi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1ByZWNpc2VBbGxv
Y2F0aW9uLmgJKHJldmlzaW9uIDI4NjAyNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L1ByZWNpc2VBbGxvY2F0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTEyMSw3ICsxMjEsNyBAQCBw
dWJsaWM6CiAgICAgICAgIHJldHVybiBhYm92ZUxvd2VyQm91bmQocmF3UHRyKSAmJiBiZWxvd1Vw
cGVyQm91bmQocmF3UHRyKTsKICAgICB9CiAgICAgCi0gICAgY29uc3QgQ2VsbEF0dHJpYnV0ZXMm
IGF0dHJpYnV0ZXMoKSBjb25zdCB7IHJldHVybiBtX2F0dHJpYnV0ZXM7IH0KKyAgICBjb25zdCBD
ZWxsQXR0cmlidXRlcyBhdHRyaWJ1dGVzKCkgY29uc3QgeyByZXR1cm4gbV9hdHRyaWJ1dGVzOyB9
CiAgICAgCiAgICAgRGVwZW5kZW5jeSBhYm91dFRvTWFyayhIZWFwVmVyc2lvbikgeyByZXR1cm4g
RGVwZW5kZW5jeSgpOyB9CiAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9T
dWJzcGFjZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvU3Vi
c3BhY2UuY3BwCShyZXZpc2lvbiAyODYwMjQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVh
cC9TdWJzcGFjZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQwLDkgKzQwLDkgQEAgU3Vic3BhY2U6
OlN1YnNwYWNlKENTdHJpbmcgbmFtZSwgSGVhcCYgaAogewogfQogCi12b2lkIFN1YnNwYWNlOjpp
bml0aWFsaXplKEhlYXBDZWxsVHlwZSogaGVhcENlbGxUeXBlLCBBbGlnbmVkTWVtb3J5QWxsb2Nh
dG9yKiBhbGlnbmVkTWVtb3J5QWxsb2NhdG9yKQordm9pZCBTdWJzcGFjZTo6aW5pdGlhbGl6ZShj
b25zdCBIZWFwQ2VsbFR5cGUmIGhlYXBDZWxsVHlwZSwgQWxpZ25lZE1lbW9yeUFsbG9jYXRvciog
YWxpZ25lZE1lbW9yeUFsbG9jYXRvcikKIHsKLSAgICBtX2hlYXBDZWxsVHlwZSA9IGhlYXBDZWxs
VHlwZTsKKyAgICBtX2hlYXBDZWxsVHlwZSA9ICZoZWFwQ2VsbFR5cGU7CiAgICAgbV9hbGlnbmVk
TWVtb3J5QWxsb2NhdG9yID0gYWxpZ25lZE1lbW9yeUFsbG9jYXRvcjsKICAgICBtX2RpcmVjdG9y
eUZvckVtcHR5QWxsb2NhdGlvbiA9IG1fYWxpZ25lZE1lbW9yeUFsbG9jYXRvci0+Zmlyc3REaXJl
Y3RvcnkoKTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvU3Vic3BhY2UuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9TdWJzcGFjZS5oCShyZXZp
c2lvbiAyODYwMjQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9TdWJzcGFjZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC0zOSwxOSArMzksMTggQEAgY2xhc3MgSGVhcENlbGxUeXBlOwogCiAv
LyBUaGUgaWRlYSBvZiBzdWJzcGFjZXMgaXMgdGhhdCB5b3UgY2FuIHByb3ZpZGUgc29tZSBjdXN0
b20gYmVoYXZpb3IgZm9yIHlvdXIgb2JqZWN0cyBpZiB5b3UKIC8vIGFsbG9jYXRlIHRoZW0gZnJv
bSBhIGN1c3RvbSBTdWJzcGFjZSBpbiB3aGljaCB5b3Ugb3ZlcnJpZGUgc29tZSBvZiB0aGUgdmly
dHVhbCBtZXRob2RzLiBUaGlzCi0vLyBjbGFzcyBpcyB0aGUgYmFzZWNsYXNzIG9mIFN1YnNwYWNl
cy4gVXN1YWxseSB5b3Ugd2lsbCB1c2UgZWl0aGVyIFN1YnNwYWNlIG9yIEZpeGVkU2l6ZVN1YnNw
YWNlLgorLy8gY2xhc3MgaXMgdGhlIGJhc2VjbGFzcyBvZiBhbGwgc3Vic3BhY2VzIGUuZy4gQ29t
cGxldGVTdWJzcGFjZSwgSXNvU3Vic3BhY2UuCiBjbGFzcyBTdWJzcGFjZSB7CiAgICAgV1RGX01B
S0VfTk9OQ09QWUFCTEUoU3Vic3BhY2UpOwogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwog
cHVibGljOgotICAgIEpTX0VYUE9SVF9QUklWQVRFIFN1YnNwYWNlKENTdHJpbmcgbmFtZSwgSGVh
cCYpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHZpcnR1YWwgflN1YnNwYWNlKCk7CiAKICAgICBj
b25zdCBjaGFyKiBuYW1lKCkgY29uc3QgeyByZXR1cm4gbV9uYW1lLmRhdGEoKTsgfQogICAgIE1h
cmtlZFNwYWNlJiBzcGFjZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3BhY2U7IH0KICAgICAKLSAgICBj
b25zdCBDZWxsQXR0cmlidXRlcyYgYXR0cmlidXRlcygpIGNvbnN0OwotICAgIEhlYXBDZWxsVHlw
ZSogaGVhcENlbGxUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9oZWFwQ2VsbFR5cGU7IH0KKyAgICBj
b25zdCBDZWxsQXR0cmlidXRlcyBhdHRyaWJ1dGVzKCkgY29uc3Q7CisgICAgY29uc3QgSGVhcENl
bGxUeXBlKiBoZWFwQ2VsbFR5cGUoKSBjb25zdCB7IHJldHVybiBtX2hlYXBDZWxsVHlwZTsgfQog
ICAgIEFsaWduZWRNZW1vcnlBbGxvY2F0b3IqIGFsaWduZWRNZW1vcnlBbGxvY2F0b3IoKSBjb25z
dCB7IHJldHVybiBtX2FsaWduZWRNZW1vcnlBbGxvY2F0b3I7IH0KICAgICAKICAgICB2b2lkIGZp
bmlzaFN3ZWVwKE1hcmtlZEJsb2NrOjpIYW5kbGUmLCBGcmVlTGlzdCopOwpAQCAtMTA0LDExICsx
MDMsMTMgQEAgcHVibGljOgogICAgIGJvb2wgaXNJc29TdWJzcGFjZSgpIGNvbnN0IHsgcmV0dXJu
IG1faXNJc29TdWJzcGFjZTsgfQogCiBwcm90ZWN0ZWQ6Ci0gICAgdm9pZCBpbml0aWFsaXplKEhl
YXBDZWxsVHlwZSosIEFsaWduZWRNZW1vcnlBbGxvY2F0b3IqKTsKKyAgICBTdWJzcGFjZShDU3Ry
aW5nIG5hbWUsIEhlYXAmKTsKKworICAgIHZvaWQgaW5pdGlhbGl6ZShjb25zdCBIZWFwQ2VsbFR5
cGUmLCBBbGlnbmVkTWVtb3J5QWxsb2NhdG9yKik7CiAgICAgCiAgICAgTWFya2VkU3BhY2UmIG1f
c3BhY2U7CiAgICAgCi0gICAgSGVhcENlbGxUeXBlKiBtX2hlYXBDZWxsVHlwZSB7IG51bGxwdHIg
fTsKKyAgICBjb25zdCBIZWFwQ2VsbFR5cGUqIG1faGVhcENlbGxUeXBlIHsgbnVsbHB0ciB9Owog
ICAgIEFsaWduZWRNZW1vcnlBbGxvY2F0b3IqIG1fYWxpZ25lZE1lbW9yeUFsbG9jYXRvciB7IG51
bGxwdHIgfTsKICAgICAKICAgICBCbG9ja0RpcmVjdG9yeSogbV9maXJzdERpcmVjdG9yeSB7IG51
bGxwdHIgfTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1N1YnNwYWNlSW5saW5l
cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1N1YnNwYWNlSW5s
aW5lcy5oCShyZXZpc2lvbiAyODYwMjQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9T
dWJzcGFjZUlubGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMTUyLDcgKzE1Miw3IEBAIHZvaWQg
U3Vic3BhY2U6OmZvckVhY2hMaXZlQ2VsbChjb25zdCBGdW4KICAgICAgICAgfSk7CiB9CiAKLWlu
bGluZSBjb25zdCBDZWxsQXR0cmlidXRlcyYgU3Vic3BhY2U6OmF0dHJpYnV0ZXMoKSBjb25zdAor
aW5saW5lIGNvbnN0IENlbGxBdHRyaWJ1dGVzIFN1YnNwYWNlOjphdHRyaWJ1dGVzKCkgY29uc3QK
IHsKICAgICByZXR1cm4gbV9oZWFwQ2VsbFR5cGUtPmF0dHJpYnV0ZXMoKTsKIH0KSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNJbmplY3RlZFNjcmlwdEhvc3RQcm90b3R5
cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTSW5q
ZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBlLmgJKHJldmlzaW9uIDI4NjAyNCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNJbmplY3RlZFNjcmlwdEhvc3RQcm90b3R5cGUuaAko
d29ya2luZyBjb3B5KQpAQCAtNDAsNyArNDAsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6
SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RB
VElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNJbmplY3RlZFNjcmlwdEhvc3RQcm90
b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAg
ICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIERFQ0xBUkVf
SU5GTzsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNKYXZhU2NyaXB0
Q2FsbEZyYW1lUHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9KU0phdmFTY3JpcHRDYWxsRnJhbWVQcm90b3R5cGUuaAkocmV2aXNpb24gMjg2
MDI0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0phdmFTY3JpcHRDYWxs
RnJhbWVQcm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtNDAsNyArNDAsNyBAQCBwdWJsaWM6
CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQog
ICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNKYXZh
U2NyaXB0Q2FsbEZyYW1lUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFp
bk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAg
ICB9CiAKICAgICBERUNMQVJFX0lORk87CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9BZ2dyZWdhdGVFcnJvclByb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0FnZ3JlZ2F0ZUVycm9yUHJvdG90eXBlLmgJKHJldmlzaW9uIDI4
NjAyNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FnZ3JlZ2F0ZUVycm9yUHJv
dG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDcgKzQ0LDcgQEAgcHVibGljOgogICAgIHN0
YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAgICAgU1RB
VElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoQWdncmVnYXRlRXJyb3JQcm90b3R5cGUs
IEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJl
dHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBTdHJ1Y3R1
cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IEpTVmFsdWUgcHJvdG90eXBlKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
QXJyYXlJdGVyYXRvclByb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0FycmF5SXRlcmF0b3JQcm90b3R5cGUuaAkocmV2aXNpb24gMjg2MDI0KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlJdGVyYXRvclByb3RvdHlwZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC0zOCw3ICszOCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNv
U3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NF
UlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEFycmF5SXRlcmF0b3JQcm90b3R5cGUsIEJhc2UpOwot
ICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0u
cGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBBcnJheUl0ZXJhdG9yUHJv
dG90eXBlKiBjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Fz
eW5jRnJvbVN5bmNJdGVyYXRvclByb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0FzeW5jRnJvbVN5bmNJdGVyYXRvclByb3RvdHlwZS5oCShyZXZp
c2lvbiAyODYwMjQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bc3luY0Zyb21T
eW5jSXRlcmF0b3JQcm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDYgQEAKIC8q
CiAgKiBDb3B5cmlnaHQgKEMpIDIwMTctMjAxOSBPbGVrc2FuZHIgU2thY2hrb3YgPGdza2FjaGtv
dkBnbWFpbC5jb20+LgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlLCBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM3LDcgKzM4
LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZt
KQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoQXN5
bmNGcm9tU3luY0l0ZXJhdG9yUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5w
bGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsK
ICAgICB9CiAKICAgICBERUNMQVJFX0lORk87CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Bc3luY0Z1bmN0aW9uUHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQXN5bmNGdW5jdGlvblByb3RvdHlwZS5oCShyZXZpc2lvbiAy
ODYwMjQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bc3luY0Z1bmN0aW9uUHJv
dG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM4LDcgKzM4LDcgQEAgcHVibGljOgogICAgIHN0
YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAgICAgU1RB
VElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoQXN5bmNGdW5jdGlvblByb3RvdHlwZSwg
QmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0
dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAgREVDTEFSRV9JTkZPOwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXN5bmNHZW5lcmF0b3JGdW5jdGlv
blByb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0FzeW5jR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuaAkocmV2aXNpb24gMjg2MDI0KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXN5bmNHZW5lcmF0b3JGdW5jdGlvblByb3Rv
dHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw3ICszOCw3IEBAIHB1YmxpYzoKICAgICBzdGF0
aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJ
Q19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEFzeW5jR2VuZXJhdG9yRnVuY3Rpb25Qcm90
b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAg
ICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIERFQ0xBUkVf
SU5GTzsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FzeW5jR2VuZXJhdG9y
UHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
QXN5bmNHZW5lcmF0b3JQcm90b3R5cGUuaAkocmV2aXNpb24gMjg2MDI0KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQXN5bmNHZW5lcmF0b3JQcm90b3R5cGUuaAkod29ya2luZyBj
b3B5KQpAQCAtNDEsNyArNDEsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBz
dWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJT
UEFDRV9TSEFSQUJMRShBc3luY0dlbmVyYXRvclByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJl
dHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVj
dFNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIEFzeW5jR2VuZXJhdG9yUHJvdG90eXBlKiBj
cmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSogc3RydWN0dXJlKQpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXN5bmNJdGVyYXRvclByb3RvdHlwZS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FzeW5jSXRlcmF0
b3JQcm90b3R5cGUuaAkocmV2aXNpb24gMjg2MDI0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQXN5bmNJdGVyYXRvclByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw3
ICszOSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZN
JiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxF
KEFzeW5jSXRlcmF0b3JQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWlu
T2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAg
IH0KIAogICAgIHN0YXRpYyBBc3luY0l0ZXJhdG9yUHJvdG90eXBlKiBjcmVhdGUoVk0mIHZtLCBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0F0b21pY3NPYmplY3QuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BdG9taWNzT2JqZWN0LmgJKHJldmlz
aW9uIDI4NjAyNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0F0b21pY3NPYmpl
Y3QuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTYtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTYtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM3LDcgKzM3LDcgQEAgcHVibGljOgogICAgIHN0YXRp
YyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElD
X0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoQXRvbWljc09iamVjdCwgQmFzZSk7Ci0gICAg
ICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFp
bk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIAogICAgIHN0YXRpYyBBdG9taWNzT2JqZWN0KiBj
cmVhdGUoVk0mLCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSopOwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQmlnSW50UHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQmlnSW50UHJvdG90eXBlLmgJKHJldmlzaW9uIDI4
NjAyNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0JpZ0ludFByb3RvdHlwZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC0zOSw3ICszOSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNv
U3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NF
UlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEJpZ0ludFByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAg
IHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9i
amVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIEJpZ0ludFByb3RvdHlwZSogY3JlYXRl
KFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9CcmFuZGVkU3RydWN0dXJl
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQnJhbmRlZFN0
cnVjdHVyZS5oCShyZXZpc2lvbiAyODYwMjQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9CcmFuZGVkU3RydWN0dXJlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ3LDcgKzQ3LDcgQEAg
cHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlLCBTdWJzcGFjZUFjY2Vzcz4K
ICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7Ci0gICAg
ICAgIHJldHVybiAmdm0uYnJhbmRlZFN0cnVjdHVyZVNwYWNlOworICAgICAgICByZXR1cm4gJnZt
LmJyYW5kZWRTdHJ1Y3R1cmVTcGFjZSgpOwogICAgIH0KIAogICAgIEFMV0FZU19JTkxJTkUgYm9v
bCBjaGVja0JyYW5kKFN5bWJvbCogYnJhbmQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9CdXR0ZXJmbHlJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQnV0dGVyZmx5SW5saW5lcy5oCShyZXZpc2lvbiAyODYwMjQpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9CdXR0ZXJmbHlJbmxpbmVzLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTc3LDcgKzc3LDcgQEAgQUxXQVlTX0lOTElORSB1bnNpZ25lZCBCdXR0ZXJmbHk6
Om9wdGltYQogaW5saW5lIEJ1dHRlcmZseSogQnV0dGVyZmx5Ojp0cnlDcmVhdGVVbmluaXRpYWxp
emVkKFZNJiB2bSwgSlNPYmplY3QqLCBzaXplX3QgcHJlQ2FwYWNpdHksIHNpemVfdCBwcm9wZXJ0
eUNhcGFjaXR5LCBib29sIGhhc0luZGV4aW5nSGVhZGVyLCBzaXplX3QgaW5kZXhpbmdQYXlsb2Fk
U2l6ZUluQnl0ZXMsIEdDRGVmZXJyYWxDb250ZXh0KiBkZWZlcnJhbENvbnRleHQpCiB7CiAgICAg
c2l6ZV90IHNpemUgPSB0b3RhbFNpemUocHJlQ2FwYWNpdHksIHByb3BlcnR5Q2FwYWNpdHksIGhh
c0luZGV4aW5nSGVhZGVyLCBpbmRleGluZ1BheWxvYWRTaXplSW5CeXRlcyk7Ci0gICAgdm9pZCog
YmFzZSA9IHZtLmpzVmFsdWVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlLmFsbG9jYXRlTm9uVmlydHVh
bCh2bSwgc2l6ZSwgZGVmZXJyYWxDb250ZXh0LCBBbGxvY2F0aW9uRmFpbHVyZU1vZGU6OlJldHVy
bk51bGwpOworICAgIHZvaWQqIGJhc2UgPSB2bS5qc1ZhbHVlR2lnYWNhZ2VBdXhpbGlhcnlTcGFj
ZSgpLmFsbG9jYXRlTm9uVmlydHVhbCh2bSwgc2l6ZSwgZGVmZXJyYWxDb250ZXh0LCBBbGxvY2F0
aW9uRmFpbHVyZU1vZGU6OlJldHVybk51bGwpOwogICAgIGlmIChVTkxJS0VMWSghYmFzZSkpCiAg
ICAgICAgIHJldHVybiBudWxscHRyOwogCkBAIC04OSw3ICs4OSw3IEBAIGlubGluZSBCdXR0ZXJm
bHkqIEJ1dHRlcmZseTo6dHJ5Q3JlYXRlVW4KIGlubGluZSBCdXR0ZXJmbHkqIEJ1dHRlcmZseTo6
Y3JlYXRlVW5pbml0aWFsaXplZChWTSYgdm0sIEpTT2JqZWN0Kiwgc2l6ZV90IHByZUNhcGFjaXR5
LCBzaXplX3QgcHJvcGVydHlDYXBhY2l0eSwgYm9vbCBoYXNJbmRleGluZ0hlYWRlciwgc2l6ZV90
IGluZGV4aW5nUGF5bG9hZFNpemVJbkJ5dGVzKQogewogICAgIHNpemVfdCBzaXplID0gdG90YWxT
aXplKHByZUNhcGFjaXR5LCBwcm9wZXJ0eUNhcGFjaXR5LCBoYXNJbmRleGluZ0hlYWRlciwgaW5k
ZXhpbmdQYXlsb2FkU2l6ZUluQnl0ZXMpOwotICAgIHZvaWQqIGJhc2UgPSB2bS5qc1ZhbHVlR2ln
YWNhZ2VBdXhpbGlhcnlTcGFjZS5hbGxvY2F0ZU5vblZpcnR1YWwodm0sIHNpemUsIG51bGxwdHIs
IEFsbG9jYXRpb25GYWlsdXJlTW9kZTo6QXNzZXJ0KTsKKyAgICB2b2lkKiBiYXNlID0gdm0uanNW
YWx1ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UoKS5hbGxvY2F0ZU5vblZpcnR1YWwodm0sIHNpemUs
IG51bGxwdHIsIEFsbG9jYXRpb25GYWlsdXJlTW9kZTo6QXNzZXJ0KTsKICAgICBCdXR0ZXJmbHkq
IHJlc3VsdCA9IGZyb21CYXNlKGJhc2UsIHByZUNhcGFjaXR5LCBwcm9wZXJ0eUNhcGFjaXR5KTsK
IAogICAgIHJldHVybiByZXN1bHQ7CkBAIC05OCw3ICs5OCw3IEBAIGlubGluZSBCdXR0ZXJmbHkq
IEJ1dHRlcmZseTo6Y3JlYXRlVW5pbmkKIGlubGluZSBCdXR0ZXJmbHkqIEJ1dHRlcmZseTo6dHJ5
Q3JlYXRlKFZNJiB2bSwgSlNPYmplY3QqLCBzaXplX3QgcHJlQ2FwYWNpdHksIHNpemVfdCBwcm9w
ZXJ0eUNhcGFjaXR5LCBib29sIGhhc0luZGV4aW5nSGVhZGVyLCBjb25zdCBJbmRleGluZ0hlYWRl
ciYgaW5kZXhpbmdIZWFkZXIsIHNpemVfdCBpbmRleGluZ1BheWxvYWRTaXplSW5CeXRlcykKIHsK
ICAgICBzaXplX3Qgc2l6ZSA9IHRvdGFsU2l6ZShwcmVDYXBhY2l0eSwgcHJvcGVydHlDYXBhY2l0
eSwgaGFzSW5kZXhpbmdIZWFkZXIsIGluZGV4aW5nUGF5bG9hZFNpemVJbkJ5dGVzKTsKLSAgICB2
b2lkKiBiYXNlID0gdm0uanNWYWx1ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UuYWxsb2NhdGVOb25W
aXJ0dWFsKHZtLCBzaXplLCBudWxscHRyLCBBbGxvY2F0aW9uRmFpbHVyZU1vZGU6OlJldHVybk51
bGwpOworICAgIHZvaWQqIGJhc2UgPSB2bS5qc1ZhbHVlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZSgp
LmFsbG9jYXRlTm9uVmlydHVhbCh2bSwgc2l6ZSwgbnVsbHB0ciwgQWxsb2NhdGlvbkZhaWx1cmVN
b2RlOjpSZXR1cm5OdWxsKTsKICAgICBpZiAoIWJhc2UpCiAgICAgICAgIHJldHVybiBudWxscHRy
OwogICAgIEJ1dHRlcmZseSogcmVzdWx0ID0gZnJvbUJhc2UoYmFzZSwgcHJlQ2FwYWNpdHksIHBy
b3BlcnR5Q2FwYWNpdHkpOwpAQCAtMTc0LDcgKzE3NCw3IEBAIGlubGluZSBCdXR0ZXJmbHkqIEJ1
dHRlcmZseTo6Z3Jvd0FycmF5UmkKICAgICB2b2lkKiB0aGVCYXNlID0gYmFzZSgwLCBwcm9wZXJ0
eUNhcGFjaXR5KTsKICAgICBzaXplX3Qgb2xkU2l6ZSA9IHRvdGFsU2l6ZSgwLCBwcm9wZXJ0eUNh
cGFjaXR5LCBoYWRJbmRleGluZ0hlYWRlciwgb2xkSW5kZXhpbmdQYXlsb2FkU2l6ZUluQnl0ZXMp
OwogICAgIHNpemVfdCBuZXdTaXplID0gdG90YWxTaXplKDAsIHByb3BlcnR5Q2FwYWNpdHksIHRy
dWUsIG5ld0luZGV4aW5nUGF5bG9hZFNpemVJbkJ5dGVzKTsKLSAgICB2b2lkKiBuZXdCYXNlID0g
dm0uanNWYWx1ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UuYWxsb2NhdGVOb25WaXJ0dWFsKHZtLCBu
ZXdTaXplLCBudWxscHRyLCBBbGxvY2F0aW9uRmFpbHVyZU1vZGU6OlJldHVybk51bGwpOworICAg
IHZvaWQqIG5ld0Jhc2UgPSB2bS5qc1ZhbHVlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZSgpLmFsbG9j
YXRlTm9uVmlydHVhbCh2bSwgbmV3U2l6ZSwgbnVsbHB0ciwgQWxsb2NhdGlvbkZhaWx1cmVNb2Rl
OjpSZXR1cm5OdWxsKTsKICAgICBpZiAoIW5ld0Jhc2UpCiAgICAgICAgIHJldHVybiBudWxscHRy
OwogICAgIC8vIEZJWE1FOiBUaGlzIHByb2JhYmx5IHNob3VsZG4ndCBiZSBhIG1lbWNweS4KQEAg
LTIxMSwxMyArMjExLDEzIEBAIGlubGluZSBCdXR0ZXJmbHkqIEJ1dHRlcmZseTo6cmVhbGxvY0Fy
cmEKICAgICAvLyBPYmplY3RzIHdpdGggbm8gcHJvcGVydGllcyBhcmUgY29tbW9uIGluIGFycmF5
cywgYW5kIHdlIGFyZSBmb2N1c2luZyBvbiB2ZXJ5IGxhcmdlIGFycmF5IGNyYWZ0ZWQgYnkgcmVw
ZWF0aW5nIEFycmF5I3B1c2gsIHNvLi4uIHRoYXQncyBmaW5lIQogICAgIGJvb2wgY2FuUmVhbGxv
YyA9ICFwcm9wZXJ0eUNhcGFjaXR5ICYmICF2bS5oZWFwLm11dGF0b3JTaG91bGRCZUZlbmNlZCgp
ICYmIGJpdHdpc2VfY2FzdDxIZWFwQ2VsbCo+KHRoZUJhc2UpLT5pc1ByZWNpc2VBbGxvY2F0aW9u
KCk7CiAgICAgaWYgKGNhblJlYWxsb2MpIHsKLSAgICAgICAgdm9pZCogbmV3QmFzZSA9IHZtLmpz
VmFsdWVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlLnJlYWxsb2NhdGVQcmVjaXNlQWxsb2NhdGlvbk5v
blZpcnR1YWwodm0sIGJpdHdpc2VfY2FzdDxIZWFwQ2VsbCo+KHRoZUJhc2UpLCBuZXdTaXplLCAm
ZGVmZXJyYWxDb250ZXh0LCBBbGxvY2F0aW9uRmFpbHVyZU1vZGU6OlJldHVybk51bGwpOworICAg
ICAgICB2b2lkKiBuZXdCYXNlID0gdm0uanNWYWx1ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UoKS5y
ZWFsbG9jYXRlUHJlY2lzZUFsbG9jYXRpb25Ob25WaXJ0dWFsKHZtLCBiaXR3aXNlX2Nhc3Q8SGVh
cENlbGwqPih0aGVCYXNlKSwgbmV3U2l6ZSwgJmRlZmVycmFsQ29udGV4dCwgQWxsb2NhdGlvbkZh
aWx1cmVNb2RlOjpSZXR1cm5OdWxsKTsKICAgICAgICAgaWYgKCFuZXdCYXNlKQogICAgICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIHJldHVybiBmcm9tQmFzZShuZXdCYXNlLCAwLCBw
cm9wZXJ0eUNhcGFjaXR5KTsKICAgICB9CiAKLSAgICB2b2lkKiBuZXdCYXNlID0gdm0uanNWYWx1
ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UuYWxsb2NhdGVOb25WaXJ0dWFsKHZtLCBuZXdTaXplLCAm
ZGVmZXJyYWxDb250ZXh0LCBBbGxvY2F0aW9uRmFpbHVyZU1vZGU6OlJldHVybk51bGwpOworICAg
IHZvaWQqIG5ld0Jhc2UgPSB2bS5qc1ZhbHVlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZSgpLmFsbG9j
YXRlTm9uVmlydHVhbCh2bSwgbmV3U2l6ZSwgJmRlZmVycmFsQ29udGV4dCwgQWxsb2NhdGlvbkZh
aWx1cmVNb2RlOjpSZXR1cm5OdWxsKTsKICAgICBpZiAoIW5ld0Jhc2UpCiAgICAgICAgIHJldHVy
biBudWxscHRyOwogICAgIGdjU2FmZU1lbWNweShzdGF0aWNfY2FzdDxKU1ZhbHVlKj4obmV3QmFz
ZSksIHN0YXRpY19jYXN0PEpTVmFsdWUqPih0aGVCYXNlKSwgb2xkU2l6ZSk7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DbG9uZWRBcmd1bWVudHMuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DbG9uZWRBcmd1bWVudHMuaAkocmV2aXNp
b24gMjg2MDI0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2xvbmVkQXJndW1l
bnRzLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDcgKzQ2LDcgQEAgcHVibGljOgogICAgIHN0YXRp
YyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAgICAgc3RhdGlj
X2Fzc2VydCghQ2VsbFR5cGU6Om5lZWRzRGVzdHJ1Y3Rpb24sICIiKTsKLSAgICAgICAgcmV0dXJu
ICZ2bS5jbG9uZWRBcmd1bWVudHNTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5jbG9uZWRBcmd1
bWVudHNTcGFjZSgpOwogICAgIH0KICAgICAKIHByaXZhdGU6CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Db25zb2xlT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29uc29sZU9iamVjdC5oCShyZXZpc2lvbiAyODYwMjQpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db25zb2xlT2JqZWN0LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTM3LDcgKzM3LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSog
c3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VC
U1BBQ0VfU0hBUkFCTEUoQ29uc29sZU9iamVjdCwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0u
cGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7
CiAgICAgfQogCiAgICAgc3RhdGljIENvbnNvbGVPYmplY3QqIGNyZWF0ZShWTSYgdm0sIEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlKQpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ3VzdG9tR2V0dGVyU2V0dGVyLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ3VzdG9tR2V0dGVyU2V0dGVyLmgJ
KHJldmlzaW9uIDI4NjAyNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0N1c3Rv
bUdldHRlclNldHRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC00Myw3ICs0Myw3IEBAIHB1YmxpYzoK
ICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vic3BhY2VBY2Nlc3M+CiAgICAgc3Rh
dGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewotICAgICAgICByZXR1
cm4gJnZtLmN1c3RvbUdldHRlclNldHRlclNwYWNlOworICAgICAgICByZXR1cm4gJnZtLmN1c3Rv
bUdldHRlclNldHRlclNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIEN1c3RvbUdldHRlclNl
dHRlciogY3JlYXRlKFZNJiB2bSwgQ3VzdG9tR2V0dGVyIGN1c3RvbUdldHRlciwgQ3VzdG9tU2V0
dGVyIGN1c3RvbVNldHRlcikKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RP
TUF0dHJpYnV0ZUdldHRlclNldHRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0RPTUF0dHJpYnV0ZUdldHRlclNldHRlci5oCShyZXZpc2lvbiAyODYwMjQp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9ET01BdHRyaWJ1dGVHZXR0ZXJTZXR0
ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNDMsNyArNDMsNyBAQCBwdWJsaWM6CiAgICAgdGVtcGxh
dGU8dHlwZW5hbWUgQ2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNzPgogICAgIHN0YXRpYyBJc29TdWJz
cGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKLSAgICAgICAgcmV0dXJuICZ2bS5kb21B
dHRyaWJ1dGVHZXR0ZXJTZXR0ZXJTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5kb21BdHRyaWJ1
dGVHZXR0ZXJTZXR0ZXJTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBET01BdHRyaWJ1dGVH
ZXR0ZXJTZXR0ZXIqIGNyZWF0ZShWTSYgdm0sIEN1c3RvbUdldHRlciBjdXN0b21HZXR0ZXIsIEN1
c3RvbVNldHRlciBjdXN0b21TZXR0ZXIsIERPTUF0dHJpYnV0ZUFubm90YXRpb24gZG9tQXR0cmli
dXRlKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUluc3RhbmNlLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUluc3RhbmNl
LmgJKHJldmlzaW9uIDI4NjAyNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Rh
dGVJbnN0YW5jZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw3ICszNyw3IEBAIHB1YmxpYzoKICAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vic3BhY2VBY2Nlc3MgbW9kZT4KICAgICBz
dGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7Ci0gICAgICAgIHJl
dHVybiAmdm0uZGF0ZUluc3RhbmNlU3BhY2U7CisgICAgICAgIHJldHVybiAmdm0uZGF0ZUluc3Rh
bmNlU3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgRGF0ZUluc3RhbmNlKiBjcmVhdGUoVk0m
IHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgZG91YmxlIGRhdGUpCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9EYXRlUHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZVByb3RvdHlwZS5oCShyZXZpc2lvbiAyODYwMjQp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlUHJvdG90eXBlLmgJKHdvcmtp
bmcgY29weSkKQEAgLTM1LDcgKzM1LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJc29TdWJzcGFj
ZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09f
U1VCU1BBQ0VfU0hBUkFCTEUoRGF0ZVByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAm
dm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNl
KCk7CiAgICAgfQogCiAgICAgc3RhdGljIERhdGVQcm90b3R5cGUqIGNyZWF0ZShWTSYgdm0sIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlKQpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGlyZWN0QXJndW1lbnRzLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGlyZWN0QXJndW1lbnRzLmgJKHJl
dmlzaW9uIDI4NjAyNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RpcmVjdEFy
Z3VtZW50cy5oCSh3b3JraW5nIGNvcHkpCkBAIC01MCw3ICs1MCw3IEBAIHB1YmxpYzoKICAgICBz
dGF0aWMgQ29tcGxldGVTdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAg
ICAgc3RhdGljX2Fzc2VydCghQ2VsbFR5cGU6Om5lZWRzRGVzdHJ1Y3Rpb24sICIiKTsKLSAgICAg
ICAgcmV0dXJuICZ2bS52YXJpYWJsZVNpemVkQ2VsbFNwYWNlOworICAgICAgICByZXR1cm4gJnZt
LnZhcmlhYmxlU2l6ZWRDZWxsU3BhY2UoKTsKICAgICB9CiAKICAgICAvLyBDcmVhdGVzIGFuIGFy
Z3VtZW50cyBvYmplY3QgYnV0IGxlYXZlcyBpdCB1bmluaXRpYWxpemVkLiBUaGlzIGlzIGRhbmdl
cm91cyBpZiB3ZSBHQyByaWdodApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
RXJyb3JQcm90b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9FcnJvclByb3RvdHlwZS5oCShyZXZpc2lvbiAyODYwMjQpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9FcnJvclByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00NSw3
ICs0NSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZN
JiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxF
KEVycm9yUHJvdG90eXBlQmFzZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmpl
Y3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQog
CiAgICAgREVDTEFSRV9JTkZPOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
RXhjZXB0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
RXhjZXB0aW9uLmgJKHJldmlzaW9uIDI4NjAyNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0V4Y2VwdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC00MCw3ICs0MCw3IEBAIHB1Ymxp
YzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vic3BhY2VBY2Nlc3MgbW9kZT4K
ICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7Ci0gICAg
ICAgIHJldHVybiAmdm0uZXhjZXB0aW9uU3BhY2U7CisgICAgICAgIHJldHVybiAmdm0uZXhjZXB0
aW9uU3BhY2UoKTsKICAgICB9CiAKICAgICBlbnVtIFN0YWNrQ2FwdHVyZUFjdGlvbiB7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GaW5hbGl6YXRpb25SZWdpc3RyeVByb3Rv
dHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ZpbmFs
aXphdGlvblJlZ2lzdHJ5UHJvdG90eXBlLmgJKHJldmlzaW9uIDI4NjAyNCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0ZpbmFsaXphdGlvblJlZ2lzdHJ5UHJvdG90eXBlLmgJKHdv
cmtpbmcgY29weSkKQEAgLTM3LDcgKzM3LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJc29TdWJz
cGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9J
U09fU1VCU1BBQ0VfU0hBUkFCTEUoRmluYWxpemF0aW9uUmVnaXN0cnlQcm90b3R5cGUsIEJhc2Up
OwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAm
dm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBGaW5hbGl6YXRpb25S
ZWdpc3RyeVByb3RvdHlwZSogY3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9GdW5jdGlvbkV4ZWN1dGFibGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkV4ZWN1dGFibGUuaAkocmV2aXNpb24gMjg2MDI0KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25FeGVjdXRhYmxlLmgJKHdv
cmtpbmcgY29weSkKQEAgLTQ2LDcgKzQ2LDcgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVu
YW1lIENlbGxUeXBlLCBTdWJzcGFjZUFjY2Vzcz4KICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1
YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7Ci0gICAgICAgIHJldHVybiAmdm0uZnVuY3Rpb25FeGVj
dXRhYmxlU3BhY2Uuc3BhY2U7CisgICAgICAgIHJldHVybiAmdm0uZnVuY3Rpb25FeGVjdXRhYmxl
U3BhY2UoKS5zcGFjZTsKICAgICB9CiAKICAgICBzdGF0aWMgRnVuY3Rpb25FeGVjdXRhYmxlKiBj
cmVhdGUoVk0mIHZtLCBTY3JpcHRFeGVjdXRhYmxlKiB0b3BMZXZlbEV4ZWN1dGFibGUsIGNvbnN0
IFNvdXJjZUNvZGUmIHNvdXJjZSwgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIHVubGlua2Vk
RXhlY3V0YWJsZSwgSW50cmluc2ljIGludHJpbnNpYywgYm9vbCBpc0luc2lkZU9yZGluYXJ5RnVu
Y3Rpb24pCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JGdW5j
dGlvblByb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0dlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmgJKHJldmlzaW9uIDI4NjAyNCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTQwLDcgKzQwLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJc29T
dWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VS
VF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUsIEJhc2Up
OwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAm
dm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBHZW5lcmF0b3JGdW5j
dGlvblByb3RvdHlwZSogY3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JQcm90b3R5cGUuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JQcm90b3R5
cGUuaAkocmV2aXNpb24gMjg2MDI0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
R2VuZXJhdG9yUHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQxLDcgKzQxLDcgQEAgcHVi
bGljOgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsK
ICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoR2VuZXJhdG9yUHJv
dG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAg
ICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMg
R2VuZXJhdG9yUHJvdG90eXBlKiBjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCosIFN0cnVj
dHVyZSogc3RydWN0dXJlKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2V0
dGVyU2V0dGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
R2V0dGVyU2V0dGVyLmgJKHJldmlzaW9uIDI4NjAyNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0dldHRlclNldHRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC01OSw3ICs1OSw3IEBA
IHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vic3BhY2VBY2Nlc3M+
CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewotICAg
ICAgICByZXR1cm4gJnZtLmdldHRlclNldHRlclNwYWNlOworICAgICAgICByZXR1cm4gJnZtLmdl
dHRlclNldHRlclNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIEdldHRlclNldHRlciogY3Jl
YXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNPYmplY3QqIGdldHRl
ciwgSlNPYmplY3QqIHNldHRlcikKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0hhc2hNYXBJbXBsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSGFzaE1hcEltcGwuaAkocmV2aXNpb24gMjg2MDI0KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSGFzaE1hcEltcGwuaAkod29ya2luZyBjb3B5KQpAQCAtMjEzLDcgKzIxMyw3
IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKICAgICAgICAgc2l6ZV90IGFsbG9jYXRpb25TaXplID0gSGFzaE1hcEJ1ZmZlcjo6
YWxsb2NhdGlvblNpemUoY2FwYWNpdHkpOwotICAgICAgICB2b2lkKiBkYXRhID0gdm0uanNWYWx1
ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UuYWxsb2NhdGVOb25WaXJ0dWFsKHZtLCBhbGxvY2F0aW9u
U2l6ZSwgbnVsbHB0ciwgQWxsb2NhdGlvbkZhaWx1cmVNb2RlOjpSZXR1cm5OdWxsKTsKKyAgICAg
ICAgdm9pZCogZGF0YSA9IHZtLmpzVmFsdWVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlKCkuYWxsb2Nh
dGVOb25WaXJ0dWFsKHZtLCBhbGxvY2F0aW9uU2l6ZSwgbnVsbHB0ciwgQWxsb2NhdGlvbkZhaWx1
cmVNb2RlOjpSZXR1cm5OdWxsKTsKICAgICAgICAgaWYgKCFkYXRhKSB7CiAgICAgICAgICAgICB0
aHJvd091dE9mTWVtb3J5RXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSk7CiAgICAgICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGVy
bmFsRnVuY3Rpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9JbnRlcm5hbEZ1bmN0aW9uLmgJKHJldmlzaW9uIDI4NjAyNCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0ludGVybmFsRnVuY3Rpb24uaAkod29ya2luZyBjb3B5KQpAQCAtNDEs
NyArNDEsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihW
TSYgdm0pCiAgICAgewogICAgICAgICBzdGF0aWNfYXNzZXJ0KHNpemVvZihDZWxsVHlwZSkgPT0g
c2l6ZW9mKEludGVybmFsRnVuY3Rpb24pLCAiSW50ZXJuYWxGdW5jdGlvbiBzdWJjbGFzc2VzIHRo
YXQgYWRkIGZpZWxkcyBuZWVkIHRvIG92ZXJyaWRlIHN1YnNwYWNlRm9yPD4oKSIpOwotICAgICAg
ICByZXR1cm4gJnZtLmludGVybmFsRnVuY3Rpb25TcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5p
bnRlcm5hbEZ1bmN0aW9uU3BhY2UoKTsKICAgICB9CiAKICAgICBERUNMQVJFX0VYUE9SVF9JTkZP
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bENvbGxhdG9yUHJvdG90
eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bENv
bGxhdG9yUHJvdG90eXBlLmgJKHJldmlzaW9uIDI4NjAyNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0ludGxDb2xsYXRvclByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDYgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxNSBBbmR5IFZhbldhZ29uZXIgKGFu
ZHlAdmFud2Fnb25lci5mYW1pbHkpCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE5LTIwMjEgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC0zOSw3ICszOSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNl
Rm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NI
QVJBQkxFKEludGxDb2xsYXRvclByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0u
cGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7
CiAgICAgfQogCiAgICAgc3RhdGljIEludGxDb2xsYXRvclByb3RvdHlwZSogY3JlYXRlKFZNJiwg
SlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZS5o
CShyZXZpc2lvbiAyODYwMjQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRs
RGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMSw2ICsxLDYgQEAK
IC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQW5keSBWYW5XYWdvbmVyIChhbmR5QHZhbndhZ29u
ZXIuZmFtaWx5KQotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxOS0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzksNyArMzks
NyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0p
CiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShJbnRs
RGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWlu
T2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAg
IH0KIAogICAgIHN0YXRpYyBJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUqIGNyZWF0ZShWTSYs
IEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9JbnRsRGlzcGxheU5hbWVzUHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERpc3BsYXlOYW1lc1Byb3RvdHlwZS5oCShy
ZXZpc2lvbiAyODYwMjQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGlz
cGxheU5hbWVzUHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgot
ICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAyMC0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzgsNyArMzgsNyBAQCBwdWJsaWM6
CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewogICAg
ICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShJbnRsRGlzcGxheU5hbWVz
UHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOwor
ICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0
aWMgSW50bERpc3BsYXlOYW1lc1Byb3RvdHlwZSogY3JlYXRlKFZNJiwgU3RydWN0dXJlKik7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTGlzdEZvcm1hdFByb3RvdHlw
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxMaXN0
Rm9ybWF0UHJvdG90eXBlLmgJKHJldmlzaW9uIDI4NjAyNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0ludGxMaXN0Rm9ybWF0UHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAg
LTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAyMC0yMDIxIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzgs
NyArMzgsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihW
TSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJM
RShJbnRsTGlzdEZvcm1hdFByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxh
aW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAg
ICAgfQogCiAgICAgc3RhdGljIEludGxMaXN0Rm9ybWF0UHJvdG90eXBlKiBjcmVhdGUoVk0mLCBT
dHJ1Y3R1cmUqKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxMb2Nh
bGVQcm90b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9JbnRsTG9jYWxlUHJvdG90eXBlLmgJKHJldmlzaW9uIDI4NjAyNCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0ludGxMb2NhbGVQcm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpA
QCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMjAgU29ueSBJbnRlcmFjdGl2
ZSBFbnRlcnRhaW5tZW50IEluYy4KKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM4
LDcgKzM5LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3Io
Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFC
TEUoSW50bExvY2FsZVByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5P
YmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAg
fQogCiAgICAgc3RhdGljIEludGxMb2NhbGVQcm90b3R5cGUqIGNyZWF0ZShWTSYsIFN0cnVjdHVy
ZSopOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1h
dFByb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0ludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUuaAkocmV2aXNpb24gMjg2MDI0KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdFByb3RvdHlwZS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDYgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxNSBBbmR5
IFZhbldhZ29uZXIgKGFuZHlAdmFud2Fnb25lci5mYW1pbHkpCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE5
LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCkBAIC0zOSw3ICszOSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vi
c3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRf
SVNPX1NVQlNQQUNFX1NIQVJBQkxFKEludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUsIEJhc2UpOwot
ICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0u
cGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBJbnRsTnVtYmVyRm9ybWF0
UHJvdG90eXBlKiBjcmVhdGUoVk0mLCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSopOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE9iamVjdC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxPYmplY3QuaAkocmV2aXNpb24g
Mjg2MDI0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE9iamVjdC5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxNSBB
bmR5IFZhbldhZ29uZXIgKGFuZHlAdmFud2Fnb25lci5mYW1pbHkpCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTktMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTktMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmln
aHQgKEMpIDIwMjAgU29ueSBJbnRlcmFjdGl2ZSBFbnRlcnRhaW5tZW50IEluYy4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKQEAgLTc2LDcgKzc2LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJc29TdWJzcGFj
ZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09f
U1VCU1BBQ0VfU0hBUkFCTEUoSW50bE9iamVjdCwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0u
cGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7
CiAgICAgfQogCiAgICAgc3RhdGljIEludGxPYmplY3QqIGNyZWF0ZShWTSYsIEpTR2xvYmFsT2Jq
ZWN0KiwgU3RydWN0dXJlKik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9J
bnRsUGx1cmFsUnVsZXNQcm90b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9JbnRsUGx1cmFsUnVsZXNQcm90b3R5cGUuaAkocmV2aXNpb24gMjg2MDI0
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFBsdXJhbFJ1bGVzUHJvdG90
eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChD
KSAyMDE4IEFuZHkgVmFuV2Fnb25lciAoYW5keUB2YW53YWdvbmVyLmZhbWlseSkKLSAqIENvcHly
aWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMTktMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM5LDcgKzM5LDcgQEAgcHVibGljOgogICAgIHN0
YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAgICAgU1RB
VElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSW50bFBsdXJhbFJ1bGVzUHJvdG90eXBl
LCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICBy
ZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgSW50bFBs
dXJhbFJ1bGVzUHJvdG90eXBlKiBjcmVhdGUoVk0mLCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVy
ZSopOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFJlbGF0aXZlVGlt
ZUZvcm1hdFByb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0ludGxSZWxhdGl2ZVRpbWVGb3JtYXRQcm90b3R5cGUuaAkocmV2aXNpb24gMjg2MDI0
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFJlbGF0aXZlVGltZUZvcm1h
dFByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHly
aWdodCAoQykgMjAyMCBTb255IEludGVyYWN0aXZlIEVudGVydGFpbm1lbnQgSW5jLgorICogQ29w
eXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzgsNyArMzksNyBAQCBwdWJsaWM6CiAgICAgc3Rh
dGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFU
SUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShJbnRsUmVsYXRpdmVUaW1lRm9ybWF0UHJv
dG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAg
ICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMg
SW50bFJlbGF0aXZlVGltZUZvcm1hdFByb3RvdHlwZSogY3JlYXRlKFZNJiwgU3RydWN0dXJlKik7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsU2VnbWVudEl0ZXJhdG9y
UHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SW50bFNlZ21lbnRJdGVyYXRvclByb3RvdHlwZS5oCShyZXZpc2lvbiAyODYwMjQpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsU2VnbWVudEl0ZXJhdG9yUHJvdG90eXBlLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDIw
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAyMC0y
MDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwpAQCAtMzgsNyArMzgsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIElzb1N1YnNw
YWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lT
T19TVUJTUEFDRV9TSEFSQUJMRShJbnRsU2VnbWVudEl0ZXJhdG9yUHJvdG90eXBlLCBCYXNlKTsK
LSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZt
LnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgSW50bFNlZ21lbnRJdGVy
YXRvclByb3RvdHlwZSogY3JlYXRlKFZNJiwgU3RydWN0dXJlKik7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9JbnRsU2VnbWVudGVyUHJvdG90eXBlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFNlZ21lbnRlclByb3RvdHlwZS5o
CShyZXZpc2lvbiAyODYwMjQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRs
U2VnbWVudGVyUHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgot
ICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAyMC0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzgsNyArMzgsNyBAQCBwdWJsaWM6
CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewogICAg
ICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShJbnRsU2VnbWVudGVyUHJv
dG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAg
ICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMg
SW50bFNlZ21lbnRlclByb3RvdHlwZSogY3JlYXRlKFZNJiwgU3RydWN0dXJlKik7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsU2VnbWVudHNQcm90b3R5cGUuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsU2VnbWVudHNQcm90
b3R5cGUuaAkocmV2aXNpb24gMjg2MDI0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSW50bFNlZ21lbnRzUHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBA
CiAvKgotICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAyMC0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzgsNyArMzgsNyBAQCBw
dWJsaWM6CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAg
ewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShJbnRsU2VnbWVu
dHNQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7
CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIHN0
YXRpYyBJbnRsU2VnbWVudHNQcm90b3R5cGUqIGNyZWF0ZShWTSYsIEpTR2xvYmFsT2JqZWN0Kiwg
U3RydWN0dXJlKik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JdGVyYXRv
clByb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0l0ZXJhdG9yUHJvdG90eXBlLmgJKHJldmlzaW9uIDI4NjAyNCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0l0ZXJhdG9yUHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM5
LDcgKzM5LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3Io
Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFC
TEUoSXRlcmF0b3JQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2Jq
ZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0K
IAogICAgIHN0YXRpYyBJdGVyYXRvclByb3RvdHlwZSogY3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmNwcAkocmV2aXNpb24gMjg2MDI0KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTU2LDcgKzU2LDcgQEAgSlNBcnJheSogSlNBcnJheTo6dHJ5Q3JlYXRlVW5pbml0aWFsaXpl
ZAogICAgICAgICAgICAgfHwgaGFzQ29udGlndW91cyhpbmRleGluZ1R5cGUpKTsKIAogICAgICAg
ICB1bnNpZ25lZCB2ZWN0b3JMZW5ndGggPSBCdXR0ZXJmbHk6Om9wdGltYWxDb250aWd1b3VzVmVj
dG9yTGVuZ3RoKHN0cnVjdHVyZSwgaW5pdGlhbExlbmd0aCk7Ci0gICAgICAgIHZvaWQqIHRlbXAg
PSB2bS5qc1ZhbHVlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZS5hbGxvY2F0ZU5vblZpcnR1YWwoCisg
ICAgICAgIHZvaWQqIHRlbXAgPSB2bS5qc1ZhbHVlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZSgpLmFs
bG9jYXRlTm9uVmlydHVhbCgKICAgICAgICAgICAgIHZtLAogICAgICAgICAgICAgQnV0dGVyZmx5
Ojp0b3RhbFNpemUoMCwgb3V0T2ZMaW5lU3RvcmFnZSwgdHJ1ZSwgdmVjdG9yTGVuZ3RoICogc2l6
ZW9mKEVuY29kZWRKU1ZhbHVlKSksCiAgICAgICAgICAgICBkZWZlcnJhbENvbnRleHQsIEFsbG9j
YXRpb25GYWlsdXJlTW9kZTo6UmV0dXJuTnVsbCk7CkBAIC03OCw3ICs3OCw3IEBAIEpTQXJyYXkq
IEpTQXJyYXk6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQKICAgICAgICAgICAgIHx8IGluZGV4aW5n
VHlwZSA9PSBBcnJheVdpdGhBcnJheVN0b3JhZ2UpOwogICAgICAgICBzdGF0aWMgY29uc3RleHBy
IHVuc2lnbmVkIGluZGV4QmlhcyA9IDA7CiAgICAgICAgIHVuc2lnbmVkIHZlY3Rvckxlbmd0aCA9
IEFycmF5U3RvcmFnZTo6b3B0aW1hbFZlY3Rvckxlbmd0aChpbmRleEJpYXMsIHN0cnVjdHVyZSwg
aW5pdGlhbExlbmd0aCk7Ci0gICAgICAgIHZvaWQqIHRlbXAgPSB2bS5qc1ZhbHVlR2lnYWNhZ2VB
dXhpbGlhcnlTcGFjZS5hbGxvY2F0ZU5vblZpcnR1YWwoCisgICAgICAgIHZvaWQqIHRlbXAgPSB2
bS5qc1ZhbHVlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZSgpLmFsbG9jYXRlTm9uVmlydHVhbCgKICAg
ICAgICAgICAgIHZtLAogICAgICAgICAgICAgQnV0dGVyZmx5Ojp0b3RhbFNpemUoaW5kZXhCaWFz
LCBvdXRPZkxpbmVTdG9yYWdlLCB0cnVlLCBBcnJheVN0b3JhZ2U6OnNpemVGb3IodmVjdG9yTGVu
Z3RoKSksCiAgICAgICAgICAgICBkZWZlcnJhbENvbnRleHQsIEFsbG9jYXRpb25GYWlsdXJlTW9k
ZTo6UmV0dXJuTnVsbCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Fy
cmF5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJh
eS5oCShyZXZpc2lvbiAyODYwMjQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0FycmF5LmgJKHdvcmtpbmcgY29weSkKQEAgLTUxLDcgKzUxLDcgQEAgcHVibGljOgogICAgIHRl
bXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlLCBTdWJzcGFjZUFjY2Vzcz4KICAgICBzdGF0aWMgSXNv
U3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7Ci0gICAgICAgIHJldHVybiAmdm0u
YXJyYXlTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5hcnJheVNwYWNlKCk7CiAgICAgfQogICAg
ICAgICAKIHByb3RlY3RlZDoKQEAgLTI0NCw3ICsyNDQsNyBAQCBpbmxpbmUgSlNBcnJheSogSlNB
cnJheTo6dHJ5Q3JlYXRlKFZNJiB2CiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAg
ICAgICB1bnNpZ25lZCB2ZWN0b3JMZW5ndGggPSBCdXR0ZXJmbHk6Om9wdGltYWxDb250aWd1b3Vz
VmVjdG9yTGVuZ3RoKHN0cnVjdHVyZSwgdmVjdG9yTGVuZ3RoSGludCk7Ci0gICAgICAgIHZvaWQq
IHRlbXAgPSB2bS5qc1ZhbHVlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZS5hbGxvY2F0ZU5vblZpcnR1
YWwoCisgICAgICAgIHZvaWQqIHRlbXAgPSB2bS5qc1ZhbHVlR2lnYWNhZ2VBdXhpbGlhcnlTcGFj
ZSgpLmFsbG9jYXRlTm9uVmlydHVhbCgKICAgICAgICAgICAgIHZtLAogICAgICAgICAgICAgQnV0
dGVyZmx5Ojp0b3RhbFNpemUoMCwgb3V0T2ZMaW5lU3RvcmFnZSwgdHJ1ZSwgdmVjdG9yTGVuZ3Ro
ICogc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKSksCiAgICAgICAgICAgICBudWxscHRyLCBBbGxvY2F0
aW9uRmFpbHVyZU1vZGU6OlJldHVybk51bGwpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNBcnJheUJ1ZmZlclByb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJQcm90b3R5cGUuaAkocmV2aXNpb24g
Mjg2MDI0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlclBy
b3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxMywgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTMtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM3LDcgKzM3LDcgQEAgcHVibGljOgogICAg
IHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAgICAg
U1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNBcnJheUJ1ZmZlclByb3RvdHlw
ZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAg
cmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIEpTQXJy
YXlCdWZmZXJQcm90b3R5cGUqIGNyZWF0ZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJl
KiwgQXJyYXlCdWZmZXJTaGFyaW5nTW9kZSA9IEFycmF5QnVmZmVyU2hhcmluZ01vZGU6OkRlZmF1
bHQpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlclZp
ZXcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJy
YXlCdWZmZXJWaWV3LmNwcAkocmV2aXNpb24gMjg2MDI0KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlclZpZXcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NCw3
ICs2NCw3IEBAIEpTQXJyYXlCdWZmZXJWaWV3OjpDb25zdHJ1Y3Rpb25Db250ZXh0OjoKICAgICAg
ICAgLy8gQXR0ZW1wdCBHQyBhbGxvY2F0aW9uLgogICAgICAgICB2b2lkKiB0ZW1wOwogICAgICAg
ICBzaXplX3Qgc2l6ZSA9IHNpemVPZihsZW5ndGgsIGVsZW1lbnRTaXplKTsKLSAgICAgICAgdGVt
cCA9IHZtLnByaW1pdGl2ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UuYWxsb2NhdGVOb25WaXJ0dWFs
KHZtLCBzaXplLCBudWxscHRyLCBBbGxvY2F0aW9uRmFpbHVyZU1vZGU6OlJldHVybk51bGwpOwor
ICAgICAgICB0ZW1wID0gdm0ucHJpbWl0aXZlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZSgpLmFsbG9j
YXRlTm9uVmlydHVhbCh2bSwgc2l6ZSwgbnVsbHB0ciwgQWxsb2NhdGlvbkZhaWx1cmVNb2RlOjpS
ZXR1cm5OdWxsKTsKICAgICAgICAgaWYgKCF0ZW1wKQogICAgICAgICAgICAgcmV0dXJuOwogCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JpZ0ludC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCaWdJbnQuY3BwCShyZXZpc2lv
biAyODYwMjQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JpZ0ludC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTExNyw3ICsxMTcsNyBAQCBpbmxpbmUgSlNCaWdJbnQqIEpTQmln
SW50OjpjcmVhdGVXaXRoTGVuCiAgICAgfQogCiAgICAgQVNTRVJUKGxlbmd0aCA8PSBtYXhMZW5n
dGgpOwotICAgIHZvaWQqIGRhdGEgPSB2bS5wcmltaXRpdmVHaWdhY2FnZUF1eGlsaWFyeVNwYWNl
LmFsbG9jYXRlTm9uVmlydHVhbCh2bSwgbGVuZ3RoICogc2l6ZW9mKERpZ2l0KSwgbnVsbHB0ciwg
QWxsb2NhdGlvbkZhaWx1cmVNb2RlOjpSZXR1cm5OdWxsKTsKKyAgICB2b2lkKiBkYXRhID0gdm0u
cHJpbWl0aXZlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZSgpLmFsbG9jYXRlTm9uVmlydHVhbCh2bSwg
bGVuZ3RoICogc2l6ZW9mKERpZ2l0KSwgbnVsbHB0ciwgQWxsb2NhdGlvbkZhaWx1cmVNb2RlOjpS
ZXR1cm5OdWxsKTsKICAgICBpZiAoVU5MSUtFTFkoIWRhdGEpKSB7CiAgICAgICAgIGlmIChudWxs
T3JHbG9iYWxPYmplY3RGb3JPT00pIHsKICAgICAgICAgICAgIGF1dG8gc2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
QmlnSW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNC
aWdJbnQuaAkocmV2aXNpb24gMjg2MDI0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNCaWdJbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNTYsNyArNTYsNyBAQCBwdWJsaWM6CiAg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNzPgogICAgIHN0YXRp
YyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKLSAgICAgICAgcmV0dXJu
ICZ2bS5iaWdJbnRTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5iaWdJbnRTcGFjZSgpOwogICAg
IH0KIAogICAgIGVudW0gY2xhc3MgSW5pdGlhbGl6YXRpb25UeXBlIHsgTm9uZSwgV2l0aFplcm8g
fTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2FsbGVlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDYWxsZWUuaAkocmV2aXNp
b24gMjg2MDI0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDYWxsZWUuaAko
d29ya2luZyBjb3B5KQpAQCAtNTAsNyArNTAsNyBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgQ2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNzPgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSog
c3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKLSAgICAgICAgcmV0dXJuICZ2bS5jYWxsZWVTcGFj
ZTsKKyAgICAgICAgcmV0dXJuICZ2bS5jYWxsZWVTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRp
YyBKU0NhbGxlZSogY3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
SlNTY29wZSogc2NvcGUpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Rh
dGFWaWV3UHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNEYXRhVmlld1Byb3RvdHlwZS5oCShyZXZpc2lvbiAyODYwMjQpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGFWaWV3UHJvdG90eXBlLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMTkgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMjEgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCkBAIC0zOCw3ICszOCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1
YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQ
QUNFX1NIQVJBQkxFKEpTRGF0YVZpZXdQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4g
JnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFj
ZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBKU0RhdGFWaWV3UHJvdG90eXBlKiBjcmVhdGUoVk0m
LCBTdHJ1Y3R1cmUqKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGVz
dHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0Rlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5jcHAJ
KHJldmlzaW9uIDI4NjAyNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGVz
dHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsx
LDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTctMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTctMjAyMSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQ4LDEy
ICs0OCwxMiBAQCBKU0Rlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZTo6fkpTRGVzCiB7CiB9
CiAKLXZvaWQgSlNEZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGU6OmZpbmlzaFN3ZWVwKE1h
cmtlZEJsb2NrOjpIYW5kbGUmIGhhbmRsZSwgRnJlZUxpc3QqIGZyZWVMaXN0KQordm9pZCBKU0Rl
c3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZTo6ZmluaXNoU3dlZXAoTWFya2VkQmxvY2s6Okhh
bmRsZSYgaGFuZGxlLCBGcmVlTGlzdCogZnJlZUxpc3QpIGNvbnN0CiB7CiAgICAgaGFuZGxlLmZp
bmlzaFN3ZWVwS25vd2luZ0hlYXBDZWxsVHlwZShmcmVlTGlzdCwgSlNEZXN0cnVjdGlibGVPYmpl
Y3REZXN0cm95RnVuYygpKTsKIH0KIAotdm9pZCBKU0Rlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxs
VHlwZTo6ZGVzdHJveShWTSYgdm0sIEpTQ2VsbCogY2VsbCkKK3ZvaWQgSlNEZXN0cnVjdGlibGVP
YmplY3RIZWFwQ2VsbFR5cGU6OmRlc3Ryb3koVk0mIHZtLCBKU0NlbGwqIGNlbGwpIGNvbnN0CiB7
CiAgICAgSlNEZXN0cnVjdGlibGVPYmplY3REZXN0cm95RnVuYygpKHZtLCBjZWxsKTsKIH0KSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGVzdHJ1Y3RpYmxlT2JqZWN0SGVh
cENlbGxUeXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNEZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuaAkocmV2aXNpb24gMjg2MDI0KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEZXN0cnVjdGlibGVPYmplY3RIZWFwQ2Vs
bFR5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDE3LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCkBAIC0zNCw4ICszNCw4IEBAIHB1YmxpYzoKICAgICBKU19FWFBP
UlRfUFJJVkFURSBKU0Rlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpOwogICAgIEpTX0VY
UE9SVF9QUklWQVRFIH5KU0Rlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpIGZpbmFsOwog
ICAgIAotICAgIHZvaWQgZmluaXNoU3dlZXAoTWFya2VkQmxvY2s6OkhhbmRsZSYsIEZyZWVMaXN0
KikgZmluYWw7Ci0gICAgdm9pZCBkZXN0cm95KFZNJiwgSlNDZWxsKikgZmluYWw7CisgICAgdm9p
ZCBmaW5pc2hTd2VlcChNYXJrZWRCbG9jazo6SGFuZGxlJiwgRnJlZUxpc3QqKSBjb25zdCBmaW5h
bDsKKyAgICB2b2lkIGRlc3Ryb3koVk0mLCBKU0NlbGwqKSBjb25zdCBmaW5hbDsKIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNG
dW5jdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
RnVuY3Rpb24uaAkocmV2aXNpb24gMjg2MDI0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNGdW5jdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC02Niw3ICs2Niw3IEBAIHB1Ymxp
YzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vic3BhY2VBY2Nlc3M+CiAgICAg
c3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewotICAgICAgICBy
ZXR1cm4gJnZtLmZ1bmN0aW9uU3BhY2U7CisgICAgICAgIHJldHVybiAmdm0uZnVuY3Rpb25TcGFj
ZSgpOwogICAgIH0KICAgICAKICAgICB0eXBlZGVmIEpTQ2FsbGVlIEJhc2U7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvdHlw
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJp
Y1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlLmgJKHJldmlzaW9uIDI4NjAyNCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEz
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMy0y
MDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwpAQCAtMzgsNyArMzgsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIElzb1N1YnNw
YWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lT
T19TVUJTUEFDRV9TSEFSQUJMRShKU0dlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZSwgQmFz
ZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJu
ICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIEpTR2VuZXJpY1R5
cGVkQXJyYXlWaWV3UHJvdG90eXBlKiBjcmVhdGUoCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0dsb2JhbExleGljYWxFbnZpcm9ubWVudC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsTGV4aWNhbEVudmlyb25tZW50LmgJ
KHJldmlzaW9uIDI4NjAyNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xv
YmFsTGV4aWNhbEVudmlyb25tZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTM4LDcgKzM4LDcgQEAg
cHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlLCBTdWJzcGFjZUFjY2VzcyBt
b2RlPgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsK
LSAgICAgICAgcmV0dXJuICZ2bS5nbG9iYWxMZXhpY2FsRW52aXJvbm1lbnRTcGFjZTsKKyAgICAg
ICAgcmV0dXJuICZ2bS5nbG9iYWxMZXhpY2FsRW52aXJvbm1lbnRTcGFjZSgpOwogICAgIH0KIAog
ICAgIHN0YXRpYyBKU0dsb2JhbExleGljYWxFbnZpcm9ubWVudCogY3JlYXRlKFZNJiB2bSwgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUsIEpTU2NvcGUqIHBhcmVudFNjb3BlKQpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNJbW11dGFibGVCdXR0ZXJmbHkuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ltbXV0YWJsZUJ1dHRlcmZseS5oCShy
ZXZpc2lvbiAyODYwMjQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ltbXV0
YWJsZUJ1dHRlcmZseS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNTMsNyArMTUzLDcgQEAgcHVibGlj
OgogICAgIHN0YXRpYyBDb21wbGV0ZVN1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAg
ewogICAgICAgICAvLyBXZSBhbGxvY2F0ZSBvdXQgb2YgdGhlIEpTVmFsdWUgZ2lnYWNhZ2UgYXMg
b3RoZXIgY29kZSBleHBlY3RzIGFsbCBidXR0ZXJmbGllcyB0byBsaXZlIHRoZXJlLgotICAgICAg
ICByZXR1cm4gJnZtLmltbXV0YWJsZUJ1dHRlcmZseUpTVmFsdWVHaWdhY2FnZUF1eGlsaWFyeVNw
YWNlOworICAgICAgICByZXR1cm4gJnZtLmltbXV0YWJsZUJ1dHRlcmZseUpTVmFsdWVHaWdhY2Fn
ZUF1eGlsaWFyeVNwYWNlKCk7CiAgICAgfQogCiAgICAgLy8gT25seSBjYWxsIHRoaXMgaWYgeW91
IGp1c3QgYWxsb2NhdGVkIHRoaXMgYnV0dGVyZmx5LgpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNMZXhpY2FsRW52aXJvbm1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xleGljYWxFbnZpcm9ubWVudC5oCShyZXZpc2lvbiAy
ODYwMjQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xleGljYWxFbnZpcm9u
bWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC00NCw3ICs0NCw3IEBAIHB1YmxpYzoKICAgICBzdGF0
aWMgQ29tcGxldGVTdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAgICAg
c3RhdGljX2Fzc2VydCghQ2VsbFR5cGU6Om5lZWRzRGVzdHJ1Y3Rpb24sICIiKTsKLSAgICAgICAg
cmV0dXJuICZ2bS52YXJpYWJsZVNpemVkQ2VsbFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnZh
cmlhYmxlU2l6ZWRDZWxsU3BhY2UoKTsKICAgICB9CiAKICAgICB1c2luZyBCYXNlID0gSlNTeW1i
b2xUYWJsZU9iamVjdDsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9k
dWxlTG9hZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNNb2R1bGVMb2FkZXIuaAkocmV2aXNpb24gMjg2MDI0KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNNb2R1bGVMb2FkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNDQsNyArNDQs
NyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0p
CiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU01v
ZHVsZUxvYWRlciwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsK
KyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAgZW51
bSBTdGF0dXMgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPTk9iamVj
dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT05PYmpl
Y3QuaAkocmV2aXNpb24gMjg2MDI0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNPTk9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw3ICszOCw3IEBAIHB1YmxpYzoKICAg
ICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAg
IFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTT05PYmplY3QsIEJhc2UpOwot
ICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0u
cGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBKU09OT2JqZWN0KiBjcmVh
dGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTT2JqZWN0SW5saW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0SW5saW5lcy5oCShyZXZpc2lvbiAyODYwMjQpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdElubGluZXMuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNDEsNyArNDEsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vi
c3BhY2VBY2NlCiBDb21wbGV0ZVN1YnNwYWNlKiBKU0ZpbmFsT2JqZWN0OjpzdWJzcGFjZUZvcihW
TSYgdm0pCiB7CiAgICAgc3RhdGljX2Fzc2VydCghQ2VsbFR5cGU6Om5lZWRzRGVzdHJ1Y3Rpb24p
OwotICAgIHJldHVybiAmdm0uY2VsbFNwYWNlOworICAgIHJldHVybiAmdm0uY2VsbFNwYWNlKCk7
CiB9CiAKIC8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtY3JlYXRlbGlzdGZyb21hcnJh
eWxpa2UKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZS5oCShy
ZXZpc2lvbiAyODYwMjQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21p
c2UuaAkod29ya2luZyBjb3B5KQpAQCAtMzcsNyArMzcsNyBAQCBwdWJsaWM6CiAgICAgdGVtcGxh
dGU8dHlwZW5hbWUgQ2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNzIG1vZGU+CiAgICAgc3RhdGljIElz
b1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewotICAgICAgICByZXR1cm4gJnZt
LnByb21pc2VTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wcm9taXNlU3BhY2UoKTsKICAgICB9
CiAKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgSlNQcm9taXNlKiBjcmVhdGUoVk0mLCBT
dHJ1Y3R1cmUqKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvbWlz
ZVByb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTUHJvbWlzZVByb3RvdHlwZS5oCShyZXZpc2lvbiAyODYwMjQpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU1Byb21pc2VQcm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAt
MSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxOSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAyMSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAg
LTM4LDcgKzM4LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VG
b3IoVk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hB
UkFCTEUoSlNQcm9taXNlUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFp
bk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAg
ICB9CiAKICAgICBzdGF0aWMgSlNQcm9taXNlUHJvdG90eXBlKiBjcmVhdGUoVk0mLCBKU0dsb2Jh
bE9iamVjdCosIFN0cnVjdHVyZSopOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUVudW1lcmF0b3IuY3BwCShyZXZpc2lv
biAyODYwMjQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFt
ZUVudW1lcmF0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw3ICszOCw3IEBAIEpTUHJvcGVy
dHlOYW1lRW51bWVyYXRvciogSlNQcm9wZXJ0eU5hbWUKICAgICB1bnNpZ25lZCBwcm9wZXJ0eU5h
bWVzQnVmZmVyU2l6ZUluQnl0ZXMgPSBDaGVja2VkPHVuc2lnbmVkPihwcm9wZXJ0eU5hbWVzU2l6
ZSkgKiBzaXplb2YoV3JpdGVCYXJyaWVyPEpTU3RyaW5nPik7CiAgICAgV3JpdGVCYXJyaWVyPEpT
U3RyaW5nPiogcHJvcGVydHlOYW1lc0J1ZmZlciA9IG51bGxwdHI7CiAgICAgaWYgKHByb3BlcnR5
TmFtZXNCdWZmZXJTaXplSW5CeXRlcykgewotICAgICAgICBwcm9wZXJ0eU5hbWVzQnVmZmVyID0g
c3RhdGljX2Nhc3Q8V3JpdGVCYXJyaWVyPEpTU3RyaW5nPio+KHZtLmpzVmFsdWVHaWdhY2FnZUF1
eGlsaWFyeVNwYWNlLmFsbG9jYXRlTm9uVmlydHVhbCh2bSwgcHJvcGVydHlOYW1lc0J1ZmZlclNp
emVJbkJ5dGVzLCBudWxscHRyLCBBbGxvY2F0aW9uRmFpbHVyZU1vZGU6OkFzc2VydCkpOworICAg
ICAgICBwcm9wZXJ0eU5hbWVzQnVmZmVyID0gc3RhdGljX2Nhc3Q8V3JpdGVCYXJyaWVyPEpTU3Ry
aW5nPio+KHZtLmpzVmFsdWVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlKCkuYWxsb2NhdGVOb25WaXJ0
dWFsKHZtLCBwcm9wZXJ0eU5hbWVzQnVmZmVyU2l6ZUluQnl0ZXMsIG51bGxwdHIsIEFsbG9jYXRp
b25GYWlsdXJlTW9kZTo6QXNzZXJ0KSk7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCBwcm9wZXJ0eU5hbWVzU2l6ZTsgKytpKQogICAgICAgICAgICAgcHJvcGVydHlOYW1lc0J1ZmZl
cltpXS5jbGVhcigpOwogICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTUHJvcGVydHlOYW1lRW51bWVyYXRvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lRW51bWVyYXRvci5oCShyZXZpc2lvbiAyODYw
MjQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUVudW1l
cmF0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtNTEsNyArNTEsNyBAQCBwdWJsaWM6CiAgICAgdGVt
cGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNzIG1vZGU+CiAgICAgc3RhdGlj
IElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewotICAgICAgICByZXR1cm4g
JnZtLnByb3BlcnR5TmFtZUVudW1lcmF0b3JTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wcm9w
ZXJ0eU5hbWVFbnVtZXJhdG9yU3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgSlNQcm9wZXJ0
eU5hbWVFbnVtZXJhdG9yKiBjcmVhdGUoVk0mLCBTdHJ1Y3R1cmUqLCB1aW50MzJfdCwgdWludDMy
X3QsIFByb3BlcnR5TmFtZUFycmF5JiYpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNQcm94eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTUHJveHkuaAkocmV2aXNpb24gMjg2MDI0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw3ICszOCw3IEBAIHB1Ymxp
YzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAg
ICAgICAgIHN0YXRpY19hc3NlcnQoc2l6ZW9mKENlbGxUeXBlKSA9PSBzaXplb2YoSlNQcm94eSkp
OwotICAgICAgICByZXR1cm4gJnZtLmpzUHJveHlTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5q
c1Byb3h5U3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgSlNQcm94eSogY3JlYXRlKFZNJiB2
bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTT2JqZWN0KiB0YXJnZXQpCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmgJKHJldmlzaW9uIDI4NjAyNCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmgJKHdvcmtpbmcgY29weSkKQEAg
LTExMSw3ICsxMTEsNyBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUsIFN1YnNwYWNl
QWNjZXNzPgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAg
IHsKLSAgICAgICAgcmV0dXJuICZ2bS5zdHJpbmdTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5z
dHJpbmdTcGFjZSgpOwogICAgIH0KICAgICAKICAgICAvLyBXZSBlbXBsb3kgb3ZlcmZsb3cgY2hl
Y2tzIGluIG1hbnkgcGxhY2VzIHdpdGggdGhlIGFzc3VtcHRpb24gdGhhdCBNYXhMZW5ndGgKQEAg
LTI3MCw3ICsyNzAsNyBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUsIFN1YnNwYWNl
QWNjZXNzPgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAg
IHsKLSAgICAgICAgcmV0dXJuICZ2bS5yb3BlU3RyaW5nU3BhY2U7CisgICAgICAgIHJldHVybiAm
dm0ucm9wZVN0cmluZ1NwYWNlKCk7CiAgICAgfQogCiAgICAgLy8gV2UgdXNlIGxvd2VyIDNiaXRz
IG9mIGZpYmVyMCBmb3IgZmxhZ3MuIFRoZXNlIGJpdHMgYXJlIHVzYWJsZSBkdWUgdG8gYWxpZ25t
ZW50LCBhbmQgaXQgaXMgT0sgZXZlbiBpbiAzMmJpdCBhcmNoaXRlY3R1cmUuCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlZEFycmF5Vmll
d1Byb3RvdHlwZS5oCShyZXZpc2lvbiAyODYwMjQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEs
NSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNS0yMDIxIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzcsNyAr
MzcsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYg
dm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShK
U1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFp
bk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAg
ICB9CiAKICAgICBzdGF0aWMgSlNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZSogY3JlYXRlKFZNJiwg
SlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL01hcEl0ZXJhdG9yUHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFwSXRlcmF0b3JQcm90b3R5cGUuaAkocmV2aXNpb24gMjg2
MDI0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFwSXRlcmF0b3JQcm90b3R5
cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzcsNyArMzcsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGlj
IElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNf
QVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShNYXBJdGVyYXRvclByb3RvdHlwZSwgQmFzZSk7
Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2
bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIE1hcEl0ZXJhdG9yUHJv
dG90eXBlKiBjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01h
cFByb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L01hcFByb3RvdHlwZS5oCShyZXZpc2lvbiAyODYwMjQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9NYXBQcm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzcsNyArMzcsNyBA
QCBwdWJsaWM6CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAg
ICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShNYXBQcm90
b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAg
ICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBj
b25zdGV4cHIgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8
IEhhc1N0YXRpY1Byb3BlcnR5VGFibGU7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9NYXRoT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvTWF0aE9iamVjdC5oCShyZXZpc2lvbiAyODYwMjQpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9NYXRoT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTMyLDcgKzMyLDcg
QEAgcHVibGljOgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQog
ICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoTWF0aE9i
amVjdCwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAg
ICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIE1h
dGhPYmplY3QqIGNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0
cnVjdHVyZSogc3RydWN0dXJlKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
TmF0aXZlRXJyb3JQcm90b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9OYXRpdmVFcnJvclByb3RvdHlwZS5oCShyZXZpc2lvbiAyODYwMjQpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OYXRpdmVFcnJvclByb3RvdHlwZS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zNCw3ICszNCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vic3Bh
Y2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNP
X1NVQlNQQUNFX1NIQVJBQkxFKE5hdGl2ZUVycm9yUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAg
cmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2Jq
ZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1
cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlw
ZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUV4ZWN1dGFibGUu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OYXRpdmVFeGVj
dXRhYmxlLmgJKHJldmlzaW9uIDI4NjAyNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL05hdGl2ZUV4ZWN1dGFibGUuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMDktMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDktMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQzLDcgKzQzLDcgQEAg
cHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlLCBTdWJzcGFjZUFjY2Vzcz4K
ICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7Ci0gICAg
ICAgIHJldHVybiAmdm0ubmF0aXZlRXhlY3V0YWJsZVNwYWNlOworICAgICAgICByZXR1cm4gJnZt
Lm5hdGl2ZUV4ZWN1dGFibGVTcGFjZSgpOwogICAgIH0KIAogICAgIENvZGVCbG9ja0hhc2ggaGFz
aEZvcihDb2RlU3BlY2lhbGl6YXRpb25LaW5kKSBjb25zdDsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL051bWJlck9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL051bWJlck9iamVjdC5oCShyZXZpc2lvbiAyODYwMjQpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdW1iZXJPYmplY3QuaAkod29ya2luZyBjb3B5
KQpAQCAtMzUsNyArMzUsNyBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUsIFN1YnNw
YWNlQWNjZXNzIG1vZGU+CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYg
dm0pCiAgICAgewotICAgICAgICByZXR1cm4gJnZtLm51bWJlck9iamVjdFNwYWNlOworICAgICAg
ICByZXR1cm4gJnZtLm51bWJlck9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIE51
bWJlck9iamVjdCogY3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RQcm90b3R5cGUuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RQcm90b3R5cGUuaAkocmV2
aXNpb24gMjg2MDI0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0UHJv
dG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw2IEBACiAvKgogICogIENvcHlyaWdo
dCAoQykgMTk5OS0yMDAwIEhhcnJpIFBvcnRlbiAocG9ydGVuQGtkZS5vcmcpCi0gKiAgQ29weXJp
Z2h0IChDKSAyMDA4LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogIENv
cHlyaWdodCAoQykgMjAwOC0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
CiAgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl
IGl0IGFuZC9vcgogICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNz
ZXIgR2VuZXJhbCBQdWJsaWMKQEAgLTMzLDcgKzMzLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJ
c29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FT
U0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoT2JqZWN0UHJvdG90eXBlLCBCYXNlKTsKLSAgICAg
ICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWlu
T2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgT2JqZWN0UHJvdG90eXBlKiBjcmVh
dGUoVk0mLCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSopOwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvUHJvZ3JhbUV4ZWN1dGFibGUuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9ncmFtRXhlY3V0YWJsZS5oCShyZXZpc2lvbiAy
ODYwMjQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9ncmFtRXhlY3V0YWJs
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw3ICszOSw3IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vic3BhY2VBY2Nlc3M+CiAgICAgc3RhdGljIElzb1N1YnNw
YWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewotICAgICAgICByZXR1cm4gJnZtLnByb2dy
YW1FeGVjdXRhYmxlU3BhY2Uuc3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucHJvZ3JhbUV4ZWN1
dGFibGVTcGFjZSgpLnNwYWNlOwogICAgIH0KIAogICAgIHN0YXRpYyBQcm9ncmFtRXhlY3V0YWJs
ZSogY3JlYXRlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IFNvdXJjZUNvZGUm
IHNvdXJjZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5TWFw
SGFzaFRhYmxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
UHJvcGVydHlNYXBIYXNoVGFibGUuaAkocmV2aXNpb24gMjg2MDI0KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlNYXBIYXNoVGFibGUuaAkobm9uZXhpc3RlbnQpCkBA
IC0xLDU4NyArMCwwIEBACi0vKgotICogIENvcHlyaWdodCAoQykgMjAwNC0yMDIxIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29m
dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogIG1vZGlmeSBpdCB1bmRl
ciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gKiAgTGljZW5z
ZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0g
KiAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRl
ciB2ZXJzaW9uLgotICoKLSAqICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhv
cGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7
IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogIE1FUkNIQU5UQUJJTElU
WSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiAg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgotICog
IFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljIExpY2Vuc2UKLSAqICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBm
aWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICogIHRoZSBGcmVlIFNvZnR3YXJl
IEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0gKiAg
Qm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0gKgotICovCi0KLSNwcmFnbWEgb25jZQotCi0j
aW5jbHVkZSAiSlNFeHBvcnRNYWNyb3MuaCIKLSNpbmNsdWRlICJQcm9wZXJ0eU9mZnNldC5oIgot
I2luY2x1ZGUgIlN0cnVjdHVyZS5oIgotI2luY2x1ZGUgIldyaXRlQmFycmllci5oIgotI2luY2x1
ZGUgPHd0Zi9IYXNoVGFibGUuaD4KLSNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgotI2luY2x1
ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KLSNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+Ci0jaW5jbHVk
ZSA8d3RmL3RleHQvQXRvbVN0cmluZ0ltcGwuaD4KLQotCi0jZGVmaW5lIERVTVBfUFJPUEVSVFlN
QVBfU1RBVFMgMAotI2RlZmluZSBEVU1QX1BST1BFUlRZTUFQX0NPTExJU0lPTlMgMAotCi0jZGVm
aW5lIFBST1BFUlRZX01BUF9ERUxFVEVEX0VOVFJZX0tFWSAoKFVuaXF1ZWRTdHJpbmdJbXBsKikx
KQotCi1uYW1lc3BhY2UgSlNDIHsKLQotREVDTEFSRV9BTExPQ0FUT1JfV0lUSF9IRUFQX0lERU5U
SUZJRVIoUHJvcGVydHlUYWJsZSk7Ci0KLSNpZiBEVU1QX1BST1BFUlRZTUFQX1NUQVRTCi0KLXN0
cnVjdCBQcm9wZXJ0eU1hcEhhc2hUYWJsZVN0YXRzIHsKLSAgICBzdGQ6OmF0b21pYzx1bnNpZ25l
ZD4gbnVtRmluZHM7Ci0gICAgc3RkOjphdG9taWM8dW5zaWduZWQ+IG51bUNvbGxpc2lvbnM7Ci0g
ICAgc3RkOjphdG9taWM8dW5zaWduZWQ+IG51bUxvb2t1cHM7Ci0gICAgc3RkOjphdG9taWM8dW5z
aWduZWQ+IG51bUxvb2t1cFByb2Jpbmc7Ci0gICAgc3RkOjphdG9taWM8dW5zaWduZWQ+IG51bUFk
ZHM7Ci0gICAgc3RkOjphdG9taWM8dW5zaWduZWQ+IG51bVJlbW92ZXM7Ci0gICAgc3RkOjphdG9t
aWM8dW5zaWduZWQ+IG51bVJlaGFzaGVzOwotICAgIHN0ZDo6YXRvbWljPHVuc2lnbmVkPiBudW1S
ZWluc2VydHM7Ci19OwotCi1KU19FWFBPUlRfUFJJVkFURSBleHRlcm4gUHJvcGVydHlNYXBIYXNo
VGFibGVTdGF0cyogcHJvcGVydHlNYXBIYXNoVGFibGVTdGF0czsKLQotI2VuZGlmCi0KLWlubGlu
ZSBib29sIGlzUG93ZXJPZjIodW5zaWduZWQgdikKLXsKLSAgICByZXR1cm4gaGFzT25lQml0U2V0
KHYpOwotfQotCi1pbmxpbmUgdW5zaWduZWQgbmV4dFBvd2VyT2YyKHVuc2lnbmVkIHYpCi17Ci0g
ICAgLy8gVGFrZW4gZnJvbSBodHRwOi8vd3d3LmNzLnV0ay5lZHUvfnZvc2UvYy1zdHVmZi9iaXRo
YWNrcy5odG1sCi0gICAgLy8gRGV2aXNlZCBieSBTZWFuIEFuZGVyc29uLCBTZXBlbWJlciAxNCwg
MjAwMQotCi0gICAgdi0tOwotICAgIHYgfD0gdiA+PiAxOwotICAgIHYgfD0gdiA+PiAyOwotICAg
IHYgfD0gdiA+PiA0OwotICAgIHYgfD0gdiA+PiA4OwotICAgIHYgfD0gdiA+PiAxNjsKLSAgICB2
Kys7Ci0KLSAgICByZXR1cm4gdjsKLX0KLQotY2xhc3MgUHJvcGVydHlUYWJsZSBmaW5hbCA6IHB1
YmxpYyBKU0NlbGwgewotCi0gICAgLy8gVGhpcyBpcyB0aGUgaW1wbGVtZW50YXRpb24gZm9yICdp
dGVyYXRvcicgYW5kICdjb25zdF9pdGVyYXRvcicsCi0gICAgLy8gdXNlZCBmb3IgaXRlcmF0aW5n
IG92ZXIgdGhlIHRhYmxlIGluIGluc2VydGlvbiBvcmRlci4KLSAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBUPgotICAgIGNsYXNzIG9yZGVyZWRfaXRlcmF0b3IgewotICAgIHB1YmxpYzoKLSAgICAgICAg
b3JkZXJlZF9pdGVyYXRvcjxUPiYgb3BlcmF0b3IrKygpCi0gICAgICAgIHsKLSAgICAgICAgICAg
IG1fdmFsdWVQdHIgPSBza2lwRGVsZXRlZEVudHJpZXMobV92YWx1ZVB0ciArIDEsIG1fZW5kVmFs
dWVQdHIpOwotICAgICAgICAgICAgcmV0dXJuICp0aGlzOwotICAgICAgICB9Ci0KLSAgICAgICAg
Ym9vbCBvcGVyYXRvcj09KGNvbnN0IG9yZGVyZWRfaXRlcmF0b3I8VD4mIG90aGVyKQotICAgICAg
ICB7Ci0gICAgICAgICAgICByZXR1cm4gbV92YWx1ZVB0ciA9PSBvdGhlci5tX3ZhbHVlUHRyOwot
ICAgICAgICB9Ci0KLSAgICAgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IG9yZGVyZWRfaXRlcmF0
b3I8VD4mIG90aGVyKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gbV92YWx1ZVB0ciAh
PSBvdGhlci5tX3ZhbHVlUHRyOwotICAgICAgICB9Ci0KLSAgICAgICAgVCYgb3BlcmF0b3IqKCkK
LSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuICptX3ZhbHVlUHRyOwotICAgICAgICB9Ci0K
LSAgICAgICAgVCogb3BlcmF0b3ItPigpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBt
X3ZhbHVlUHRyOwotICAgICAgICB9Ci0KLSAgICAgICAgb3JkZXJlZF9pdGVyYXRvcihUKiB2YWx1
ZVB0ciwgVCogZW5kVmFsdWVQdHIpCi0gICAgICAgICAgICA6IG1fdmFsdWVQdHIodmFsdWVQdHIp
Ci0gICAgICAgICAgICAsIG1fZW5kVmFsdWVQdHIoZW5kVmFsdWVQdHIpCi0gICAgICAgIHsKLSAg
ICAgICAgfQotCi0gICAgcHJpdmF0ZToKLSAgICAgICAgVCogbV92YWx1ZVB0cjsKLSAgICAgICAg
VCogbV9lbmRWYWx1ZVB0cjsKLSAgICB9OwotCi1wdWJsaWM6Ci0gICAgdHlwZWRlZiBKU0NlbGwg
QmFzZTsKLSAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFz
ZTo6U3RydWN0dXJlRmxhZ3MgfCBTdHJ1Y3R1cmVJc0ltbW9ydGFsOwotCi0gICAgdGVtcGxhdGU8
dHlwZW5hbWUgQ2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNzPgotICAgIHN0YXRpYyBJc29TdWJzcGFj
ZSogc3Vic3BhY2VGb3IoVk0mIHZtKQotICAgIHsKLSAgICAgICAgcmV0dXJuICZ2bS5wcm9wZXJ0
eVRhYmxlU3BhY2U7Ci0gICAgfQotCi0gICAgc3RhdGljIGNvbnN0ZXhwciBib29sIG5lZWRzRGVz
dHJ1Y3Rpb24gPSB0cnVlOwotICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDZWxsKik7Ci0gICAg
REVDTEFSRV9WSVNJVF9DSElMRFJFTjsKLQotICAgIERFQ0xBUkVfRVhQT1JUX0lORk87Ci0KLSAg
ICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKLSAgICB7Ci0gICAgICAgIHJldHVy
biBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZv
KENlbGxUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7Ci0gICAgfQotCi0gICAgdHlwZWRl
ZiBVbmlxdWVkU3RyaW5nSW1wbCogS2V5VHlwZTsKLSAgICB0eXBlZGVmIFByb3BlcnR5TWFwRW50
cnkgVmFsdWVUeXBlOwotCi0gICAgLy8gVGhlIGluIG9yZGVyIGl0ZXJhdG9yIHByb3ZpZGVzIG92
ZXJsb2FkZWQgKiBhbmQgLT4gdG8gYWNjZXNzIHRoZSBWYWx1ZSBhdCB0aGUgY3VycmVudCBwb3Np
dGlvbi4KLSAgICB0eXBlZGVmIG9yZGVyZWRfaXRlcmF0b3I8VmFsdWVUeXBlPiBpdGVyYXRvcjsK
LSAgICB0eXBlZGVmIG9yZGVyZWRfaXRlcmF0b3I8Y29uc3QgVmFsdWVUeXBlPiBjb25zdF9pdGVy
YXRvcjsKLQotICAgIC8vIFRoZSBmaW5kX2l0ZXJhdG9yIGlzIGEgcGFpciBvZiBhIHBvaW50ZXIg
dG8gYSBWYWx1ZSogYW4gdGhlIGVudHJ5IGluIHRoZSBpbmRleC4KLSAgICAvLyBJZiAnZmluZCcg
ZG9lcyBub3QgZmluZCBhbiBlbnRyeSB0aGVuIGl0ZXIuZmlyc3Qgd2lsbCBiZSAwLCBhbmQgaXRl
ci5zZWNvbmQgd2lsbAotICAgIC8vIGdpdmUgdGhlIHBvaW50IGluIG1faW5kZXggd2hlcmUgYW4g
ZW50cnkgc2hvdWxkIGJlIGluc2VydGVkLgotICAgIHR5cGVkZWYgc3RkOjpwYWlyPFZhbHVlVHlw
ZSosIHVuc2lnbmVkPiBmaW5kX2l0ZXJhdG9yOwotCi0gICAgLy8gQ29uc3RydWN0b3IgaXMgcGFz
c2VkIGFuIGluaXRpYWwgY2FwYWNpdHksIGEgUHJvcGVydHlUYWJsZSB0byBjb3B5LCBvciBib3Ro
LgotICAgIHN0YXRpYyBQcm9wZXJ0eVRhYmxlKiBjcmVhdGUoVk0mLCB1bnNpZ25lZCBpbml0aWFs
Q2FwYWNpdHkpOwotICAgIHN0YXRpYyBQcm9wZXJ0eVRhYmxlKiBjbG9uZShWTSYsIGNvbnN0IFBy
b3BlcnR5VGFibGUmKTsKLSAgICBzdGF0aWMgUHJvcGVydHlUYWJsZSogY2xvbmUoVk0mLCB1bnNp
Z25lZCBpbml0aWFsQ2FwYWNpdHksIGNvbnN0IFByb3BlcnR5VGFibGUmKTsKLSAgICB+UHJvcGVy
dHlUYWJsZSgpOwotCi0gICAgLy8gT3JkZXJlZCBpdGVyYXRpb24gbWV0aG9kcy4KLSAgICBpdGVy
YXRvciBiZWdpbigpOwotICAgIGl0ZXJhdG9yIGVuZCgpOwotICAgIGNvbnN0X2l0ZXJhdG9yIGJl
Z2luKCkgY29uc3Q7Ci0gICAgY29uc3RfaXRlcmF0b3IgZW5kKCkgY29uc3Q7Ci0KLSAgICAvLyBG
aW5kIGEgdmFsdWUgaW4gdGhlIHRhYmxlLgotICAgIGZpbmRfaXRlcmF0b3IgZmluZChjb25zdCBL
ZXlUeXBlJik7Ci0gICAgVmFsdWVUeXBlKiBnZXQoY29uc3QgS2V5VHlwZSYpOwotICAgIC8vIEFk
ZCBhIHZhbHVlIHRvIHRoZSB0YWJsZQotICAgIHN0ZDo6cGFpcjxmaW5kX2l0ZXJhdG9yLCBib29s
PiBXQVJOX1VOVVNFRF9SRVRVUk4gYWRkKFZNJiwgY29uc3QgVmFsdWVUeXBlJiBlbnRyeSk7Ci0g
ICAgLy8gUmVtb3ZlIGEgdmFsdWUgZnJvbSB0aGUgdGFibGUuCi0gICAgdm9pZCByZW1vdmUoVk0m
LCBjb25zdCBmaW5kX2l0ZXJhdG9yJiBpdGVyKTsKLSAgICB2b2lkIHJlbW92ZShWTSYsIGNvbnN0
IEtleVR5cGUmIGtleSk7Ci0KLSAgICAvLyBSZXR1cm5zIHRoZSBudW1iZXIgb2YgdmFsdWVzIGlu
IHRoZSBoYXNodGFibGUuCi0gICAgdW5zaWduZWQgc2l6ZSgpIGNvbnN0OwotCi0gICAgLy8gQ2hl
Y2tzIGlmIHRoZXJlIGFyZSBhbnkgdmFsdWVzIGluIHRoZSBoYXNodGFibGUuCi0gICAgYm9vbCBp
c0VtcHR5KCkgY29uc3Q7Ci0KLSAgICAvLyBOdW1iZXIgb2Ygc2xvdHMgaW4gdGhlIHByb3BlcnR5
IHN0b3JhZ2UgYXJyYXkgaW4gdXNlLCBpbmNsdWRlZCBkZWxldGVkT2Zmc2V0cy4KLSAgICB1bnNp
Z25lZCBwcm9wZXJ0eVN0b3JhZ2VTaXplKCkgY29uc3Q7Ci0KLSAgICAvLyBVc2VkIHRvIG1haW50
YWluIGEgbGlzdCBvZiB1bnVzZWQgZW50cmllcyBpbiB0aGUgcHJvcGVydHkgc3RvcmFnZS4KLSAg
ICB2b2lkIGNsZWFyRGVsZXRlZE9mZnNldHMoKTsKLSAgICBib29sIGhhc0RlbGV0ZWRPZmZzZXQo
KTsKLSAgICBQcm9wZXJ0eU9mZnNldCBnZXREZWxldGVkT2Zmc2V0KCk7Ci0gICAgdm9pZCBhZGRE
ZWxldGVkT2Zmc2V0KFByb3BlcnR5T2Zmc2V0KTsKLSAgICAKLSAgICBQcm9wZXJ0eU9mZnNldCBu
ZXh0T2Zmc2V0KFByb3BlcnR5T2Zmc2V0IGlubGluZUNhcGFjaXR5KTsKLQotICAgIC8vIENvcHkg
dGhpcyBQcm9wZXJ0eVRhYmxlLCBlbnN1cmluZyB0aGUgY29weSBoYXMgYXQgbGVhc3QgdGhlIGNh
cGFjaXR5IHByb3ZpZGVkLgotICAgIFByb3BlcnR5VGFibGUqIGNvcHkoVk0mLCB1bnNpZ25lZCBu
ZXdDYXBhY2l0eSk7Ci0KLSNpZm5kZWYgTkRFQlVHCi0gICAgc2l6ZV90IHNpemVJbk1lbW9yeSgp
OwotICAgIHZvaWQgY2hlY2tDb25zaXN0ZW5jeSgpOwotI2VuZGlmCi0gICAgCi0gICAgc3RhdGlj
IHB0cmRpZmZfdCBvZmZzZXRPZkluZGV4U2l6ZSgpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihQ
cm9wZXJ0eVRhYmxlLCBtX2luZGV4U2l6ZSk7IH0KLSAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNl
dE9mSW5kZXhNYXNrKCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKFByb3BlcnR5VGFibGUsIG1f
aW5kZXhNYXNrKTsgfQotICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZJbmRleCgpIHsgcmV0
dXJuIE9CSkVDVF9PRkZTRVRPRihQcm9wZXJ0eVRhYmxlLCBtX2luZGV4KTsgfQotCi0gICAgc3Rh
dGljIGNvbnN0ZXhwciB1bnNpZ25lZCBFbXB0eUVudHJ5SW5kZXggPSAwOwotCi1wcml2YXRlOgot
ICAgIFByb3BlcnR5VGFibGUoVk0mLCB1bnNpZ25lZCBpbml0aWFsQ2FwYWNpdHkpOwotICAgIFBy
b3BlcnR5VGFibGUoVk0mLCBjb25zdCBQcm9wZXJ0eVRhYmxlJik7Ci0gICAgUHJvcGVydHlUYWJs
ZShWTSYsIHVuc2lnbmVkIGluaXRpYWxDYXBhY2l0eSwgY29uc3QgUHJvcGVydHlUYWJsZSYpOwot
Ci0gICAgUHJvcGVydHlUYWJsZShjb25zdCBQcm9wZXJ0eVRhYmxlJik7Ci0KLSAgICB2b2lkIGZp
bmlzaENyZWF0aW9uKFZNJik7Ci0KLSAgICAvLyBVc2VkIHRvIGluc2VydCBhIHZhbHVlIGtub3du
IG5vdCB0byBiZSBpbiB0aGUgdGFibGUsIGFuZCB3aGVyZSB3ZSBrbm93IGNhcGFjaXR5IHRvIGJl
IGF2YWlsYWJsZS4KLSAgICB2b2lkIHJlaW5zZXJ0KGNvbnN0IFZhbHVlVHlwZSYgZW50cnkpOwot
Ci0gICAgLy8gUmVoYXNoIHRoZSB0YWJsZS4gIFVzZWQgdG8gZ3Jvdywgb3IgdG8gcmVjb3ZlciBk
ZWxldGVkIHNsb3RzLgotICAgIHZvaWQgcmVoYXNoKFZNJiwgdW5zaWduZWQgbmV3Q2FwYWNpdHkp
OwotCi0gICAgLy8gVGhlIGNhcGFjaXR5IG9mIHRoZSB0YWJsZSBvZiB2YWx1ZXMgaXMgaGFsZiBv
ZiB0aGUgc2l6ZSBvZiB0aGUgaW5kZXguCi0gICAgdW5zaWduZWQgdGFibGVDYXBhY2l0eSgpIGNv
bnN0OwotCi0gICAgLy8gV2Uga2VlcCBhbiBleHRyYSBkZWxldGVkIHNsb3QgYWZ0ZXIgdGhlIGFy
cmF5IHRvIG1ha2UgaXRlcmF0aW9uIHdvcmssCi0gICAgLy8gYW5kIHRvIHVzZSBmb3IgZGVsZXRl
ZCB2YWx1ZXMuIEluZGV4IHZhbHVlcyBpbnRvIHRoZSBhcnJheSBhcmUgMS1iYXNlZCwKLSAgICAv
LyBzbyB0aGlzIGlzIHRhYmxlQ2FwYWNpdHkoKSArIDEuCi0gICAgLy8gRm9yIGV4YW1wbGUsIGlm
IG1fdGFibGVTaXplIGlzIDE2LCB0aGVuIHRhYmxlQ2FwYWNpdHkoKSBpcyA4IC0gYnV0IHRoZQot
ICAgIC8vIHZhbHVlcyBhcnJheSBpcyBhY3R1YWxseSA5IGxvbmcgKHRoZSA5dGggdXNlZCBmb3Ig
dGhlIGRlbGV0ZWQgdmFsdWUvCi0gICAgLy8gaXRlcmF0aW9uIGd1YXJkKS4gIFRoZSA4IHZhbGlk
IGVudHJpZXMgYXJlIG51bWJlcmVkIDEuLjgsIHNvIHRoZQotICAgIC8vIGRlbGV0ZWQgaW5kZXgg
aXMgOSAoMCBiZWluZyByZXNlcnZlZCBmb3IgZW1wdHkpLgotICAgIHVuc2lnbmVkIGRlbGV0ZWRF
bnRyeUluZGV4KCkgY29uc3Q7Ci0KLSAgICAvLyBVc2VkIGluIGl0ZXJhdG9yIGNyZWF0aW9uL3By
b2dyZXNzaW9uLgotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgc3RhdGljIFQqIHNraXBE
ZWxldGVkRW50cmllcyhUKiB2YWx1ZVB0ciwgVCogZW5kVmFsdWVQdHIpOwotCi0gICAgLy8gVGhl
IHRhYmxlIG9mIHZhbHVlcyBsaWVzIGFmdGVyIHRoZSBoYXNoIGluZGV4LgotICAgIFZhbHVlVHlw
ZSogdGFibGUoKTsKLSAgICBjb25zdCBWYWx1ZVR5cGUqIHRhYmxlKCkgY29uc3Q7Ci0KLSAgICBW
YWx1ZVR5cGUqIHRhYmxlRW5kKCkgeyByZXR1cm4gdGFibGUoKSArIHVzZWRDb3VudCgpOyB9Ci0g
ICAgY29uc3QgVmFsdWVUeXBlKiB0YWJsZUVuZCgpIGNvbnN0IHsgcmV0dXJuIHRhYmxlKCkgKyB1
c2VkQ291bnQoKTsgfQotCi0gICAgLy8gdG90YWwgbnVtYmVyIG9mICB1c2VkIGVudHJpZXMgaW4g
dGhlIHZhbHVlcyBhcnJheSAtIGJ5IGVpdGhlciB2YWxpZCBlbnRyaWVzLCBvciBkZWxldGVkIG9u
ZXMuCi0gICAgdW5zaWduZWQgdXNlZENvdW50KCkgY29uc3Q7Ci0KLSAgICAvLyBUaGUgc2l6ZSBp
biBieXRlcyBvZiBkYXRhIG5lZWRlZCBmb3IgYnkgdGhlIHRhYmxlLgotICAgIHNpemVfdCBkYXRh
U2l6ZSgpOwotCi0gICAgLy8gQ2FsY3VsYXRlcyB0aGUgYXBwcm9wcmlhdGUgdGFibGUgc2l6ZSAo
cm91bmRzIHVwIHRvIGEgcG93ZXIgb2YgdHdvKS4KLSAgICBzdGF0aWMgdW5zaWduZWQgc2l6ZUZv
ckNhcGFjaXR5KHVuc2lnbmVkIGNhcGFjaXR5KTsKLQotICAgIC8vIENoZWNrIGlmIGNhcGFjaXR5
IGlzIGF2YWlsYWJsZS4KLSAgICBib29sIGNhbkluc2VydCgpOwotCi0gICAgdW5zaWduZWQgbV9p
bmRleFNpemU7Ci0gICAgdW5zaWduZWQgbV9pbmRleE1hc2s7Ci0gICAgdW5zaWduZWQqIG1faW5k
ZXg7Ci0gICAgdW5zaWduZWQgbV9rZXlDb3VudDsKLSAgICB1bnNpZ25lZCBtX2RlbGV0ZWRDb3Vu
dDsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8VmVjdG9yPFByb3BlcnR5T2Zmc2V0Pj4gbV9kZWxldGVk
T2Zmc2V0czsKLQotICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgTWluaW11bVRhYmxlU2l6
ZSA9IDE2OwotfTsKLQotaW5saW5lIFByb3BlcnR5VGFibGU6Oml0ZXJhdG9yIFByb3BlcnR5VGFi
bGU6OmJlZ2luKCkKLXsKLSAgICBhdXRvKiB0YWJsZUVuZCA9IHRoaXMtPnRhYmxlRW5kKCk7Ci0g
ICAgcmV0dXJuIGl0ZXJhdG9yKHNraXBEZWxldGVkRW50cmllcyh0YWJsZSgpLCB0YWJsZUVuZCks
IHRhYmxlRW5kKTsKLX0KLQotaW5saW5lIFByb3BlcnR5VGFibGU6Oml0ZXJhdG9yIFByb3BlcnR5
VGFibGU6OmVuZCgpCi17Ci0gICAgYXV0byogdGFibGVFbmQgPSB0aGlzLT50YWJsZUVuZCgpOwot
ICAgIHJldHVybiBpdGVyYXRvcih0YWJsZUVuZCwgdGFibGVFbmQpOwotfQotCi1pbmxpbmUgUHJv
cGVydHlUYWJsZTo6Y29uc3RfaXRlcmF0b3IgUHJvcGVydHlUYWJsZTo6YmVnaW4oKSBjb25zdAot
ewotICAgIGF1dG8qIHRhYmxlRW5kID0gdGhpcy0+dGFibGVFbmQoKTsKLSAgICByZXR1cm4gY29u
c3RfaXRlcmF0b3Ioc2tpcERlbGV0ZWRFbnRyaWVzKHRhYmxlKCksIHRhYmxlRW5kKSwgdGFibGVF
bmQpOwotfQotCi1pbmxpbmUgUHJvcGVydHlUYWJsZTo6Y29uc3RfaXRlcmF0b3IgUHJvcGVydHlU
YWJsZTo6ZW5kKCkgY29uc3QKLXsKLSAgICBhdXRvKiB0YWJsZUVuZCA9IHRoaXMtPnRhYmxlRW5k
KCk7Ci0gICAgcmV0dXJuIGNvbnN0X2l0ZXJhdG9yKHRhYmxlRW5kLCB0YWJsZUVuZCk7Ci19Ci0K
LWlubGluZSBQcm9wZXJ0eVRhYmxlOjpmaW5kX2l0ZXJhdG9yIFByb3BlcnR5VGFibGU6OmZpbmQo
Y29uc3QgS2V5VHlwZSYga2V5KQotewotICAgIEFTU0VSVChrZXkpOwotICAgIEFTU0VSVChrZXkt
PmlzQXRvbSgpIHx8IGtleS0+aXNTeW1ib2woKSk7Ci0gICAgdW5zaWduZWQgaGFzaCA9IElkZW50
aWZpZXJSZXBIYXNoOjpoYXNoKGtleSk7Ci0KLSNpZiBEVU1QX1BST1BFUlRZTUFQX1NUQVRTCi0g
ICAgKytwcm9wZXJ0eU1hcEhhc2hUYWJsZVN0YXRzLT5udW1GaW5kczsKLSNlbmRpZgotCi0gICAg
d2hpbGUgKHRydWUpIHsKLSAgICAgICAgdW5zaWduZWQgZW50cnlJbmRleCA9IG1faW5kZXhbaGFz
aCAmIG1faW5kZXhNYXNrXTsKLSAgICAgICAgaWYgKGVudHJ5SW5kZXggPT0gRW1wdHlFbnRyeUlu
ZGV4KQotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV9wYWlyKChWYWx1ZVR5cGUqKW51bGxw
dHIsIGhhc2ggJiBtX2luZGV4TWFzayk7Ci0gICAgICAgIGlmIChrZXkgPT0gdGFibGUoKVtlbnRy
eUluZGV4IC0gMV0ua2V5KQotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV9wYWlyKCZ0YWJs
ZSgpW2VudHJ5SW5kZXggLSAxXSwgaGFzaCAmIG1faW5kZXhNYXNrKTsKLQotI2lmIERVTVBfUFJP
UEVSVFlNQVBfU1RBVFMKLSAgICAgICAgKytwcm9wZXJ0eU1hcEhhc2hUYWJsZVN0YXRzLT5udW1D
b2xsaXNpb25zOwotI2VuZGlmCi0KLSNpZiBEVU1QX1BST1BFUlRZTUFQX0NPTExJU0lPTlMKLSAg
ICAgICAgZGF0YUxvZygiUHJvcGVydHlUYWJsZSBjb2xsaXNpb24gZm9yICIsIGtleSwgIiAoIiwg
aGFzaCwgIilcbiIpOwotICAgICAgICBkYXRhTG9nKCJDb2xsaWRlZCB3aXRoICIsIHRhYmxlKClb
ZW50cnlJbmRleCAtIDFdLmtleSwgIigiLCBJZGVudGlmaWVyUmVwSGFzaDo6aGFzaCh0YWJsZSgp
W2VudHJ5SW5kZXggLSAxXS5rZXkpLCAiKVxuIik7Ci0jZW5kaWYKLQotICAgICAgICBoYXNoKys7
Ci0gICAgfQotfQotCi1pbmxpbmUgUHJvcGVydHlUYWJsZTo6VmFsdWVUeXBlKiBQcm9wZXJ0eVRh
YmxlOjpnZXQoY29uc3QgS2V5VHlwZSYga2V5KQotewotICAgIEFTU0VSVChrZXkpOwotICAgIEFT
U0VSVChrZXktPmlzQXRvbSgpIHx8IGtleS0+aXNTeW1ib2woKSk7Ci0gICAgQVNTRVJUKGtleSAh
PSBQUk9QRVJUWV9NQVBfREVMRVRFRF9FTlRSWV9LRVkpOwotCi0gICAgaWYgKCFtX2tleUNvdW50
KQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIHVuc2lnbmVkIGhhc2ggPSBJZGVudGlm
aWVyUmVwSGFzaDo6aGFzaChrZXkpOwotCi0jaWYgRFVNUF9QUk9QRVJUWU1BUF9TVEFUUwotICAg
ICsrcHJvcGVydHlNYXBIYXNoVGFibGVTdGF0cy0+bnVtTG9va3VwczsKLSNlbmRpZgotCi0gICAg
d2hpbGUgKHRydWUpIHsKLSAgICAgICAgdW5zaWduZWQgZW50cnlJbmRleCA9IG1faW5kZXhbaGFz
aCAmIG1faW5kZXhNYXNrXTsKLSAgICAgICAgaWYgKGVudHJ5SW5kZXggPT0gRW1wdHlFbnRyeUlu
ZGV4KQotICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAgIGlmIChrZXkgPT0gdGFi
bGUoKVtlbnRyeUluZGV4IC0gMV0ua2V5KSB7Ci0gICAgICAgICAgICBBU1NFUlQoIW1fZGVsZXRl
ZE9mZnNldHMgfHwgIW1fZGVsZXRlZE9mZnNldHMtPmNvbnRhaW5zKHRhYmxlKClbZW50cnlJbmRl
eCAtIDFdLm9mZnNldCkpOwotICAgICAgICAgICAgcmV0dXJuICZ0YWJsZSgpW2VudHJ5SW5kZXgg
LSAxXTsKLSAgICAgICAgfQotCi0jaWYgRFVNUF9QUk9QRVJUWU1BUF9TVEFUUwotICAgICAgICAr
K3Byb3BlcnR5TWFwSGFzaFRhYmxlU3RhdHMtPm51bUxvb2t1cFByb2Jpbmc7Ci0jZW5kaWYKLQot
ICAgICAgICBoYXNoKys7Ci0gICAgfQotfQotCi1pbmxpbmUgc3RkOjpwYWlyPFByb3BlcnR5VGFi
bGU6OmZpbmRfaXRlcmF0b3IsIGJvb2w+IFdBUk5fVU5VU0VEX1JFVFVSTiBQcm9wZXJ0eVRhYmxl
OjphZGQoVk0mIHZtLCBjb25zdCBWYWx1ZVR5cGUmIGVudHJ5KQotewotICAgIEFTU0VSVCghbV9k
ZWxldGVkT2Zmc2V0cyB8fCAhbV9kZWxldGVkT2Zmc2V0cy0+Y29udGFpbnMoZW50cnkub2Zmc2V0
KSk7Ci0KLSAgICAvLyBMb29rIGZvciBhIHZhbHVlIHdpdGggYSBtYXRjaGluZyBrZXkgYWxyZWFk
eSBpbiB0aGUgYXJyYXkuCi0gICAgZmluZF9pdGVyYXRvciBpdGVyID0gZmluZChlbnRyeS5rZXkp
OwotICAgIGlmIChpdGVyLmZpcnN0KQotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3BhaXIoaXRl
ciwgZmFsc2UpOwotCi0jaWYgRFVNUF9QUk9QRVJUWU1BUF9TVEFUUwotICAgICsrcHJvcGVydHlN
YXBIYXNoVGFibGVTdGF0cy0+bnVtQWRkczsKLSNlbmRpZgotCi0gICAgLy8gUmVmIHRoZSBrZXkK
LSAgICBlbnRyeS5rZXktPnJlZigpOwotCi0gICAgLy8gZW5zdXJlIGNhcGFjaXR5IGlzIGF2YWls
YWJsZS4KLSAgICBpZiAoIWNhbkluc2VydCgpKSB7Ci0gICAgICAgIHJlaGFzaCh2bSwgbV9rZXlD
b3VudCArIDEpOwotICAgICAgICBpdGVyID0gZmluZChlbnRyeS5rZXkpOwotICAgICAgICBBU1NF
UlQoIWl0ZXIuZmlyc3QpOwotICAgIH0KLQotICAgIC8vIEFsbG9jYXRlIGEgc2xvdCBpbiB0aGUg
aGFzaHRhYmxlLCBhbmQgc2V0IHRoZSBpbmRleCB0byByZWZlcmVuY2UgdGhpcy4KLSAgICB1bnNp
Z25lZCBlbnRyeUluZGV4ID0gdXNlZENvdW50KCkgKyAxOwotICAgIG1faW5kZXhbaXRlci5zZWNv
bmRdID0gZW50cnlJbmRleDsKLSAgICBpdGVyLmZpcnN0ID0gJnRhYmxlKClbZW50cnlJbmRleCAt
IDFdOwotICAgICppdGVyLmZpcnN0ID0gZW50cnk7Ci0KLSAgICArK21fa2V5Q291bnQ7Ci0gICAg
Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV9wYWlyKGl0ZXIsIHRydWUpOwotfQotCi1pbmxpbmUgdm9p
ZCBQcm9wZXJ0eVRhYmxlOjpyZW1vdmUoVk0mIHZtLCBjb25zdCBmaW5kX2l0ZXJhdG9yJiBpdGVy
KQotewotICAgIC8vIFJlbW92aW5nIGEga2V5IHRoYXQgZG9lc24ndCBleGlzdCBkb2VzIG5vdGhp
bmchCi0gICAgaWYgKCFpdGVyLmZpcnN0KQotICAgICAgICByZXR1cm47Ci0KLSNpZiBEVU1QX1BS
T1BFUlRZTUFQX1NUQVRTCi0gICAgKytwcm9wZXJ0eU1hcEhhc2hUYWJsZVN0YXRzLT5udW1SZW1v
dmVzOwotI2VuZGlmCi0KLSAgICAvLyBSZXBsYWNlIHRoaXMgb25lIGVsZW1lbnQgd2l0aCB0aGUg
ZGVsZXRlZCBzZW50aW5lbC4gQWxzbyBjbGVhciBvdXQKLSAgICAvLyB0aGUgZW50cnkgc28gd2Ug
Y2FuIGl0ZXJhdGUgYWxsIHRoZSBlbnRyaWVzIGFzIG5lZWRlZC4KLSAgICBtX2luZGV4W2l0ZXIu
c2Vjb25kXSA9IGRlbGV0ZWRFbnRyeUluZGV4KCk7Ci0gICAgaXRlci5maXJzdC0+a2V5LT5kZXJl
ZigpOwotICAgIGl0ZXIuZmlyc3QtPmtleSA9IFBST1BFUlRZX01BUF9ERUxFVEVEX0VOVFJZX0tF
WTsKLQotICAgIEFTU0VSVChtX2tleUNvdW50ID49IDEpOwotICAgIC0tbV9rZXlDb3VudDsKLSAg
ICArK21fZGVsZXRlZENvdW50OwotCi0gICAgaWYgKG1fZGVsZXRlZENvdW50ICogNCA+PSBtX2lu
ZGV4U2l6ZSkKLSAgICAgICAgcmVoYXNoKHZtLCBtX2tleUNvdW50KTsKLX0KLQotaW5saW5lIHZv
aWQgUHJvcGVydHlUYWJsZTo6cmVtb3ZlKFZNJiB2bSwgY29uc3QgS2V5VHlwZSYga2V5KQotewot
ICAgIHJlbW92ZSh2bSwgZmluZChrZXkpKTsKLX0KLQotLy8gcmV0dXJucyB0aGUgbnVtYmVyIG9m
IHZhbHVlcyBpbiB0aGUgaGFzaHRhYmxlLgotaW5saW5lIHVuc2lnbmVkIFByb3BlcnR5VGFibGU6
OnNpemUoKSBjb25zdAotewotICAgIHJldHVybiBtX2tleUNvdW50OwotfQotCi1pbmxpbmUgYm9v
bCBQcm9wZXJ0eVRhYmxlOjppc0VtcHR5KCkgY29uc3QKLXsKLSAgICByZXR1cm4gIW1fa2V5Q291
bnQ7Ci19Ci0KLWlubGluZSB1bnNpZ25lZCBQcm9wZXJ0eVRhYmxlOjpwcm9wZXJ0eVN0b3JhZ2VT
aXplKCkgY29uc3QKLXsKLSAgICByZXR1cm4gc2l6ZSgpICsgKG1fZGVsZXRlZE9mZnNldHMgPyBt
X2RlbGV0ZWRPZmZzZXRzLT5zaXplKCkgOiAwKTsKLX0KLQotaW5saW5lIHZvaWQgUHJvcGVydHlU
YWJsZTo6Y2xlYXJEZWxldGVkT2Zmc2V0cygpCi17Ci0gICAgbV9kZWxldGVkT2Zmc2V0cyA9IG51
bGxwdHI7Ci19Ci0KLWlubGluZSBib29sIFByb3BlcnR5VGFibGU6Omhhc0RlbGV0ZWRPZmZzZXQo
KQotewotICAgIHJldHVybiBtX2RlbGV0ZWRPZmZzZXRzICYmICFtX2RlbGV0ZWRPZmZzZXRzLT5p
c0VtcHR5KCk7Ci19Ci0KLWlubGluZSBQcm9wZXJ0eU9mZnNldCBQcm9wZXJ0eVRhYmxlOjpnZXRE
ZWxldGVkT2Zmc2V0KCkKLXsKLSAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQgPSBtX2RlbGV0ZWRP
ZmZzZXRzLT5sYXN0KCk7Ci0gICAgbV9kZWxldGVkT2Zmc2V0cy0+cmVtb3ZlTGFzdCgpOwotICAg
IHJldHVybiBvZmZzZXQ7Ci19Ci0KLWlubGluZSB2b2lkIFByb3BlcnR5VGFibGU6OmFkZERlbGV0
ZWRPZmZzZXQoUHJvcGVydHlPZmZzZXQgb2Zmc2V0KQotewotICAgIGlmICghbV9kZWxldGVkT2Zm
c2V0cykKLSAgICAgICAgbV9kZWxldGVkT2Zmc2V0cyA9IG1ha2VVbmlxdWU8VmVjdG9yPFByb3Bl
cnR5T2Zmc2V0Pj4oKTsKLSAgICBBU1NFUlQoIW1fZGVsZXRlZE9mZnNldHMtPmNvbnRhaW5zKG9m
ZnNldCkpOwotICAgIG1fZGVsZXRlZE9mZnNldHMtPmFwcGVuZChvZmZzZXQpOwotfQotCi1pbmxp
bmUgUHJvcGVydHlPZmZzZXQgUHJvcGVydHlUYWJsZTo6bmV4dE9mZnNldChQcm9wZXJ0eU9mZnNl
dCBpbmxpbmVDYXBhY2l0eSkKLXsKLSAgICBpZiAoaGFzRGVsZXRlZE9mZnNldCgpKQotICAgICAg
ICByZXR1cm4gZ2V0RGVsZXRlZE9mZnNldCgpOwotCi0gICAgcmV0dXJuIG9mZnNldEZvclByb3Bl
cnR5TnVtYmVyKHNpemUoKSwgaW5saW5lQ2FwYWNpdHkpOwotfQotCi1pbmxpbmUgUHJvcGVydHlU
YWJsZSogUHJvcGVydHlUYWJsZTo6Y29weShWTSYgdm0sIHVuc2lnbmVkIG5ld0NhcGFjaXR5KQot
ewotICAgIEFTU0VSVChuZXdDYXBhY2l0eSA+PSBtX2tleUNvdW50KTsKLQotICAgIC8vIEZhc3Qg
Y2FzZTsgaWYgdGhlIG5ldyB0YWJsZSB3aWxsIGJlIHRoZSBzYW1lIG1faW5kZXhTaXplIGFzIHRo
aXMgb25lLCB3ZSBjYW4gbWVtY3B5IGl0LAotICAgIC8vIHNhdmUgcmVoYXNoaW5nIGFsbCBrZXlz
LgotICAgIGlmIChzaXplRm9yQ2FwYWNpdHkobmV3Q2FwYWNpdHkpID09IG1faW5kZXhTaXplKQot
ICAgICAgICByZXR1cm4gUHJvcGVydHlUYWJsZTo6Y2xvbmUodm0sICp0aGlzKTsKLSAgICByZXR1
cm4gUHJvcGVydHlUYWJsZTo6Y2xvbmUodm0sIG5ld0NhcGFjaXR5LCAqdGhpcyk7Ci19Ci0KLSNp
Zm5kZWYgTkRFQlVHCi1pbmxpbmUgc2l6ZV90IFByb3BlcnR5VGFibGU6OnNpemVJbk1lbW9yeSgp
Ci17Ci0gICAgc2l6ZV90IHJlc3VsdCA9IHNpemVvZihQcm9wZXJ0eVRhYmxlKSArIGRhdGFTaXpl
KCk7Ci0gICAgaWYgKG1fZGVsZXRlZE9mZnNldHMpCi0gICAgICAgIHJlc3VsdCArPSAobV9kZWxl
dGVkT2Zmc2V0cy0+Y2FwYWNpdHkoKSAqIHNpemVvZihQcm9wZXJ0eU9mZnNldCkpOwotICAgIHJl
dHVybiByZXN1bHQ7Ci19Ci0jZW5kaWYKLQotaW5saW5lIHZvaWQgUHJvcGVydHlUYWJsZTo6cmVp
bnNlcnQoY29uc3QgVmFsdWVUeXBlJiBlbnRyeSkKLXsKLSNpZiBEVU1QX1BST1BFUlRZTUFQX1NU
QVRTCi0gICAgKytwcm9wZXJ0eU1hcEhhc2hUYWJsZVN0YXRzLT5udW1SZWluc2VydHM7Ci0jZW5k
aWYKLQotICAgIC8vIFVzZWQgdG8gaW5zZXJ0IGEgdmFsdWUga25vd24gbm90IHRvIGJlIGluIHRo
ZSB0YWJsZSwgYW5kIHdoZXJlCi0gICAgLy8gd2Uga25vdyBjYXBhY2l0eSB0byBiZSBhdmFpbGFi
bGUuCi0gICAgQVNTRVJUKGNhbkluc2VydCgpKTsKLSAgICBmaW5kX2l0ZXJhdG9yIGl0ZXIgPSBm
aW5kKGVudHJ5LmtleSk7Ci0gICAgQVNTRVJUKCFpdGVyLmZpcnN0KTsKLQotICAgIHVuc2lnbmVk
IGVudHJ5SW5kZXggPSB1c2VkQ291bnQoKSArIDE7Ci0gICAgbV9pbmRleFtpdGVyLnNlY29uZF0g
PSBlbnRyeUluZGV4OwotICAgIHRhYmxlKClbZW50cnlJbmRleCAtIDFdID0gZW50cnk7Ci0KLSAg
ICArK21fa2V5Q291bnQ7Ci19Ci0KLWlubGluZSB2b2lkIFByb3BlcnR5VGFibGU6OnJlaGFzaChW
TSYgdm0sIHVuc2lnbmVkIG5ld0NhcGFjaXR5KQotewotI2lmIERVTVBfUFJPUEVSVFlNQVBfU1RB
VFMKLSAgICArK3Byb3BlcnR5TWFwSGFzaFRhYmxlU3RhdHMtPm51bVJlaGFzaGVzOwotI2VuZGlm
Ci0KLSAgICBzaXplX3Qgb2xkRGF0YVNpemUgPSBkYXRhU2l6ZSgpOwotICAgIHVuc2lnbmVkKiBv
bGRFbnRyeUluZGljZXMgPSBtX2luZGV4OwotICAgIGl0ZXJhdG9yIGl0ZXIgPSB0aGlzLT5iZWdp
bigpOwotICAgIGl0ZXJhdG9yIGVuZCA9IHRoaXMtPmVuZCgpOwotCi0gICAgbV9pbmRleFNpemUg
PSBzaXplRm9yQ2FwYWNpdHkobmV3Q2FwYWNpdHkpOwotICAgIG1faW5kZXhNYXNrID0gbV9pbmRl
eFNpemUgLSAxOwotICAgIG1fa2V5Q291bnQgPSAwOwotICAgIG1fZGVsZXRlZENvdW50ID0gMDsK
LQotICAgIG1faW5kZXggPSBzdGF0aWNfY2FzdDx1bnNpZ25lZCo+KFByb3BlcnR5VGFibGVNYWxs
b2M6Onplcm9lZE1hbGxvYyhkYXRhU2l6ZSgpKSk7Ci0KLSAgICBmb3IgKDsgaXRlciAhPSBlbmQ7
ICsraXRlcikgewotICAgICAgICBBU1NFUlQoY2FuSW5zZXJ0KCkpOwotICAgICAgICByZWluc2Vy
dCgqaXRlcik7Ci0gICAgfQotCi0gICAgUHJvcGVydHlUYWJsZU1hbGxvYzo6ZnJlZShvbGRFbnRy
eUluZGljZXMpOwotCi0gICAgaWYgKG9sZERhdGFTaXplIDwgZGF0YVNpemUoKSkKLSAgICAgICAg
dm0uaGVhcC5yZXBvcnRFeHRyYU1lbW9yeUFsbG9jYXRlZChkYXRhU2l6ZSgpIC0gb2xkRGF0YVNp
emUpOwotfQotCi1pbmxpbmUgdW5zaWduZWQgUHJvcGVydHlUYWJsZTo6dGFibGVDYXBhY2l0eSgp
IGNvbnN0IHsgcmV0dXJuIG1faW5kZXhTaXplID4+IDE7IH0KLQotaW5saW5lIHVuc2lnbmVkIFBy
b3BlcnR5VGFibGU6OmRlbGV0ZWRFbnRyeUluZGV4KCkgY29uc3QgeyByZXR1cm4gdGFibGVDYXBh
Y2l0eSgpICsgMTsgfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotaW5saW5lIFQqIFByb3BlcnR5
VGFibGU6OnNraXBEZWxldGVkRW50cmllcyhUKiB2YWx1ZVB0ciwgVCogZW5kVmFsdWVQdHIpCi17
Ci0gICAgd2hpbGUgKHZhbHVlUHRyIDwgZW5kVmFsdWVQdHIgJiYgdmFsdWVQdHItPmtleSA9PSBQ
Uk9QRVJUWV9NQVBfREVMRVRFRF9FTlRSWV9LRVkpCi0gICAgICAgICsrdmFsdWVQdHI7Ci0gICAg
cmV0dXJuIHZhbHVlUHRyOwotfQotCi1pbmxpbmUgUHJvcGVydHlUYWJsZTo6VmFsdWVUeXBlKiBQ
cm9wZXJ0eVRhYmxlOjp0YWJsZSgpCi17Ci0gICAgLy8gVGhlIHRhYmxlIG9mIHZhbHVlcyBsaWVz
IGFmdGVyIHRoZSBoYXNoIGluZGV4LgotICAgIHJldHVybiByZWludGVycHJldF9jYXN0X3B0cjxW
YWx1ZVR5cGUqPihtX2luZGV4ICsgbV9pbmRleFNpemUpOwotfQotCi1pbmxpbmUgY29uc3QgUHJv
cGVydHlUYWJsZTo6VmFsdWVUeXBlKiBQcm9wZXJ0eVRhYmxlOjp0YWJsZSgpIGNvbnN0Ci17Ci0g
ICAgLy8gVGhlIHRhYmxlIG9mIHZhbHVlcyBsaWVzIGFmdGVyIHRoZSBoYXNoIGluZGV4LgotICAg
IHJldHVybiByZWludGVycHJldF9jYXN0X3B0cjxjb25zdCBWYWx1ZVR5cGUqPihtX2luZGV4ICsg
bV9pbmRleFNpemUpOwotfQotCi1pbmxpbmUgdW5zaWduZWQgUHJvcGVydHlUYWJsZTo6dXNlZENv
dW50KCkgY29uc3QKLXsKLSAgICAvLyBUb3RhbCBudW1iZXIgb2YgIHVzZWQgZW50cmllcyBpbiB0
aGUgdmFsdWVzIGFycmF5IC0gYnkgZWl0aGVyIHZhbGlkIGVudHJpZXMsIG9yIGRlbGV0ZWQgb25l
cy4KLSAgICByZXR1cm4gbV9rZXlDb3VudCArIG1fZGVsZXRlZENvdW50OwotfQotCi1pbmxpbmUg
c2l6ZV90IFByb3BlcnR5VGFibGU6OmRhdGFTaXplKCkKLXsKLSAgICAvLyBUaGUgc2l6ZSBpbiBi
eXRlcyBvZiBkYXRhIG5lZWRlZCBmb3IgYnkgdGhlIHRhYmxlLgotICAgIC8vIEVuc3VyZSB0aGF0
IHRoaXMgZnVuY3Rpb24gY2FuIGJlIGNhbGxlZCBjb25jdXJyZW50bHkuCi0gICAgdW5zaWduZWQg
aW5kZXhTaXplID0gbV9pbmRleFNpemU7Ci0gICAgcmV0dXJuIGluZGV4U2l6ZSAqIHNpemVvZih1
bnNpZ25lZCkgKyAoKGluZGV4U2l6ZSA+PiAxKSArIDEpICogc2l6ZW9mKFZhbHVlVHlwZSk7Ci19
Ci0KLWlubGluZSB1bnNpZ25lZCBQcm9wZXJ0eVRhYmxlOjpzaXplRm9yQ2FwYWNpdHkodW5zaWdu
ZWQgY2FwYWNpdHkpCi17Ci0gICAgaWYgKGNhcGFjaXR5IDwgTWluaW11bVRhYmxlU2l6ZSAvIDIp
Ci0gICAgICAgIHJldHVybiBNaW5pbXVtVGFibGVTaXplOwotICAgIHJldHVybiBuZXh0UG93ZXJP
ZjIoY2FwYWNpdHkgKyAxKSAqIDI7Ci19Ci0KLWlubGluZSBib29sIFByb3BlcnR5VGFibGU6OmNh
bkluc2VydCgpCi17Ci0gICAgcmV0dXJuIHVzZWRDb3VudCgpIDwgdGFibGVDYXBhY2l0eSgpOwot
fQotCi19IC8vIG5hbWVzcGFjZSBKU0MKClByb3BlcnR5IGNoYW5nZXMgb246IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5TWFwSGFzaFRhYmxlLmgKX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpEZWxl
dGVkOiBzdm46ZW9sLXN0eWxlCiMjIC0xICswLDAgIyMKLW5hdGl2ZQpcIE5vIG5ld2xpbmUgYXQg
ZW5kIG9mIHByb3BlcnR5CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9w
ZXJ0eVRhYmxlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Qcm9wZXJ0eVRhYmxlLmNwcAkocmV2aXNpb24gMjg2MDI0KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvUHJvcGVydHlUYWJsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0LDcg
KzI0LDcgQEAKICAqLwogCiAjaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiUHJvcGVydHlN
YXBIYXNoVGFibGUuaCIKKyNpbmNsdWRlICJQcm9wZXJ0eVRhYmxlLmgiCiAKICNpbmNsdWRlICJK
U0NKU1ZhbHVlSW5saW5lcy5oIgogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Qcm9wZXJ0eVRhYmxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvUHJvcGVydHlUYWJsZS5oCShyZXZpc2lvbiAyODYwMjQpCShmcm9tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5TWFwSGFzaFRhYmxlLmg6Mjg2MDI0KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlUYWJsZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC0wLDAgKzEsNTg3IEBACisvKgorICogIENvcHlyaWdodCAoQykgMjAwNC0yMDIxIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUg
c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogIG1vZGlmeSBpdCB1
bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiAgTGlj
ZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVy
CisgKiAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBs
YXRlciB2ZXJzaW9uLgorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhl
IGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqICBidXQgV0lUSE9VVCBBTlkgV0FSUkFO
VFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogIE1FUkNIQU5UQUJJ
TElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisg
KiAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgor
ICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljIExpY2Vuc2UKKyAqICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRo
ZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogIHRoZSBGcmVlIFNvZnR3
YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisg
KiAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKgorICovCisKKyNwcmFnbWEgb25jZQor
CisjaW5jbHVkZSAiSlNFeHBvcnRNYWNyb3MuaCIKKyNpbmNsdWRlICJQcm9wZXJ0eU9mZnNldC5o
IgorI2luY2x1ZGUgIlN0cnVjdHVyZS5oIgorI2luY2x1ZGUgIldyaXRlQmFycmllci5oIgorI2lu
Y2x1ZGUgPHd0Zi9IYXNoVGFibGUuaD4KKyNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgorI2lu
Y2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisjaW5j
bHVkZSA8d3RmL3RleHQvQXRvbVN0cmluZ0ltcGwuaD4KKworCisjZGVmaW5lIERVTVBfUFJPUEVS
VFlNQVBfU1RBVFMgMAorI2RlZmluZSBEVU1QX1BST1BFUlRZTUFQX0NPTExJU0lPTlMgMAorCisj
ZGVmaW5lIFBST1BFUlRZX01BUF9ERUxFVEVEX0VOVFJZX0tFWSAoKFVuaXF1ZWRTdHJpbmdJbXBs
KikxKQorCituYW1lc3BhY2UgSlNDIHsKKworREVDTEFSRV9BTExPQ0FUT1JfV0lUSF9IRUFQX0lE
RU5USUZJRVIoUHJvcGVydHlUYWJsZSk7CisKKyNpZiBEVU1QX1BST1BFUlRZTUFQX1NUQVRTCisK
K3N0cnVjdCBQcm9wZXJ0eU1hcEhhc2hUYWJsZVN0YXRzIHsKKyAgICBzdGQ6OmF0b21pYzx1bnNp
Z25lZD4gbnVtRmluZHM7CisgICAgc3RkOjphdG9taWM8dW5zaWduZWQ+IG51bUNvbGxpc2lvbnM7
CisgICAgc3RkOjphdG9taWM8dW5zaWduZWQ+IG51bUxvb2t1cHM7CisgICAgc3RkOjphdG9taWM8
dW5zaWduZWQ+IG51bUxvb2t1cFByb2Jpbmc7CisgICAgc3RkOjphdG9taWM8dW5zaWduZWQ+IG51
bUFkZHM7CisgICAgc3RkOjphdG9taWM8dW5zaWduZWQ+IG51bVJlbW92ZXM7CisgICAgc3RkOjph
dG9taWM8dW5zaWduZWQ+IG51bVJlaGFzaGVzOworICAgIHN0ZDo6YXRvbWljPHVuc2lnbmVkPiBu
dW1SZWluc2VydHM7Cit9OworCitKU19FWFBPUlRfUFJJVkFURSBleHRlcm4gUHJvcGVydHlNYXBI
YXNoVGFibGVTdGF0cyogcHJvcGVydHlNYXBIYXNoVGFibGVTdGF0czsKKworI2VuZGlmCisKK2lu
bGluZSBib29sIGlzUG93ZXJPZjIodW5zaWduZWQgdikKK3sKKyAgICByZXR1cm4gaGFzT25lQml0
U2V0KHYpOworfQorCitpbmxpbmUgdW5zaWduZWQgbmV4dFBvd2VyT2YyKHVuc2lnbmVkIHYpCit7
CisgICAgLy8gVGFrZW4gZnJvbSBodHRwOi8vd3d3LmNzLnV0ay5lZHUvfnZvc2UvYy1zdHVmZi9i
aXRoYWNrcy5odG1sCisgICAgLy8gRGV2aXNlZCBieSBTZWFuIEFuZGVyc29uLCBTZXBlbWJlciAx
NCwgMjAwMQorCisgICAgdi0tOworICAgIHYgfD0gdiA+PiAxOworICAgIHYgfD0gdiA+PiAyOwor
ICAgIHYgfD0gdiA+PiA0OworICAgIHYgfD0gdiA+PiA4OworICAgIHYgfD0gdiA+PiAxNjsKKyAg
ICB2Kys7CisKKyAgICByZXR1cm4gdjsKK30KKworY2xhc3MgUHJvcGVydHlUYWJsZSBmaW5hbCA6
IHB1YmxpYyBKU0NlbGwgeworCisgICAgLy8gVGhpcyBpcyB0aGUgaW1wbGVtZW50YXRpb24gZm9y
ICdpdGVyYXRvcicgYW5kICdjb25zdF9pdGVyYXRvcicsCisgICAgLy8gdXNlZCBmb3IgaXRlcmF0
aW5nIG92ZXIgdGhlIHRhYmxlIGluIGluc2VydGlvbiBvcmRlci4KKyAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBUPgorICAgIGNsYXNzIG9yZGVyZWRfaXRlcmF0b3IgeworICAgIHB1YmxpYzoKKyAgICAg
ICAgb3JkZXJlZF9pdGVyYXRvcjxUPiYgb3BlcmF0b3IrKygpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIG1fdmFsdWVQdHIgPSBza2lwRGVsZXRlZEVudHJpZXMobV92YWx1ZVB0ciArIDEsIG1fZW5k
VmFsdWVQdHIpOworICAgICAgICAgICAgcmV0dXJuICp0aGlzOworICAgICAgICB9CisKKyAgICAg
ICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IG9yZGVyZWRfaXRlcmF0b3I8VD4mIG90aGVyKQorICAg
ICAgICB7CisgICAgICAgICAgICByZXR1cm4gbV92YWx1ZVB0ciA9PSBvdGhlci5tX3ZhbHVlUHRy
OworICAgICAgICB9CisKKyAgICAgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IG9yZGVyZWRfaXRl
cmF0b3I8VD4mIG90aGVyKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gbV92YWx1ZVB0
ciAhPSBvdGhlci5tX3ZhbHVlUHRyOworICAgICAgICB9CisKKyAgICAgICAgVCYgb3BlcmF0b3Iq
KCkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuICptX3ZhbHVlUHRyOworICAgICAgICB9
CisKKyAgICAgICAgVCogb3BlcmF0b3ItPigpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVy
biBtX3ZhbHVlUHRyOworICAgICAgICB9CisKKyAgICAgICAgb3JkZXJlZF9pdGVyYXRvcihUKiB2
YWx1ZVB0ciwgVCogZW5kVmFsdWVQdHIpCisgICAgICAgICAgICA6IG1fdmFsdWVQdHIodmFsdWVQ
dHIpCisgICAgICAgICAgICAsIG1fZW5kVmFsdWVQdHIoZW5kVmFsdWVQdHIpCisgICAgICAgIHsK
KyAgICAgICAgfQorCisgICAgcHJpdmF0ZToKKyAgICAgICAgVCogbV92YWx1ZVB0cjsKKyAgICAg
ICAgVCogbV9lbmRWYWx1ZVB0cjsKKyAgICB9OworCitwdWJsaWM6CisgICAgdHlwZWRlZiBKU0Nl
bGwgQmFzZTsKKyAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0g
QmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBTdHJ1Y3R1cmVJc0ltbW9ydGFsOworCisgICAgdGVtcGxh
dGU8dHlwZW5hbWUgQ2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNzPgorICAgIHN0YXRpYyBJc29TdWJz
cGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQorICAgIHsKKyAgICAgICAgcmV0dXJuICZ2bS5wcm9w
ZXJ0eVRhYmxlU3BhY2U7CisgICAgfQorCisgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIG5lZWRz
RGVzdHJ1Y3Rpb24gPSB0cnVlOworICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDZWxsKik7Cisg
ICAgREVDTEFSRV9WSVNJVF9DSElMRFJFTjsKKworICAgIERFQ0xBUkVfRVhQT1JUX0lORk87CisK
KyAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKKyAgICB7CisgICAgICAgIHJl
dHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJ
bmZvKENlbGxUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CisgICAgfQorCisgICAgdHlw
ZWRlZiBVbmlxdWVkU3RyaW5nSW1wbCogS2V5VHlwZTsKKyAgICB0eXBlZGVmIFByb3BlcnR5TWFw
RW50cnkgVmFsdWVUeXBlOworCisgICAgLy8gVGhlIGluIG9yZGVyIGl0ZXJhdG9yIHByb3ZpZGVz
IG92ZXJsb2FkZWQgKiBhbmQgLT4gdG8gYWNjZXNzIHRoZSBWYWx1ZSBhdCB0aGUgY3VycmVudCBw
b3NpdGlvbi4KKyAgICB0eXBlZGVmIG9yZGVyZWRfaXRlcmF0b3I8VmFsdWVUeXBlPiBpdGVyYXRv
cjsKKyAgICB0eXBlZGVmIG9yZGVyZWRfaXRlcmF0b3I8Y29uc3QgVmFsdWVUeXBlPiBjb25zdF9p
dGVyYXRvcjsKKworICAgIC8vIFRoZSBmaW5kX2l0ZXJhdG9yIGlzIGEgcGFpciBvZiBhIHBvaW50
ZXIgdG8gYSBWYWx1ZSogYW4gdGhlIGVudHJ5IGluIHRoZSBpbmRleC4KKyAgICAvLyBJZiAnZmlu
ZCcgZG9lcyBub3QgZmluZCBhbiBlbnRyeSB0aGVuIGl0ZXIuZmlyc3Qgd2lsbCBiZSAwLCBhbmQg
aXRlci5zZWNvbmQgd2lsbAorICAgIC8vIGdpdmUgdGhlIHBvaW50IGluIG1faW5kZXggd2hlcmUg
YW4gZW50cnkgc2hvdWxkIGJlIGluc2VydGVkLgorICAgIHR5cGVkZWYgc3RkOjpwYWlyPFZhbHVl
VHlwZSosIHVuc2lnbmVkPiBmaW5kX2l0ZXJhdG9yOworCisgICAgLy8gQ29uc3RydWN0b3IgaXMg
cGFzc2VkIGFuIGluaXRpYWwgY2FwYWNpdHksIGEgUHJvcGVydHlUYWJsZSB0byBjb3B5LCBvciBi
b3RoLgorICAgIHN0YXRpYyBQcm9wZXJ0eVRhYmxlKiBjcmVhdGUoVk0mLCB1bnNpZ25lZCBpbml0
aWFsQ2FwYWNpdHkpOworICAgIHN0YXRpYyBQcm9wZXJ0eVRhYmxlKiBjbG9uZShWTSYsIGNvbnN0
IFByb3BlcnR5VGFibGUmKTsKKyAgICBzdGF0aWMgUHJvcGVydHlUYWJsZSogY2xvbmUoVk0mLCB1
bnNpZ25lZCBpbml0aWFsQ2FwYWNpdHksIGNvbnN0IFByb3BlcnR5VGFibGUmKTsKKyAgICB+UHJv
cGVydHlUYWJsZSgpOworCisgICAgLy8gT3JkZXJlZCBpdGVyYXRpb24gbWV0aG9kcy4KKyAgICBp
dGVyYXRvciBiZWdpbigpOworICAgIGl0ZXJhdG9yIGVuZCgpOworICAgIGNvbnN0X2l0ZXJhdG9y
IGJlZ2luKCkgY29uc3Q7CisgICAgY29uc3RfaXRlcmF0b3IgZW5kKCkgY29uc3Q7CisKKyAgICAv
LyBGaW5kIGEgdmFsdWUgaW4gdGhlIHRhYmxlLgorICAgIGZpbmRfaXRlcmF0b3IgZmluZChjb25z
dCBLZXlUeXBlJik7CisgICAgVmFsdWVUeXBlKiBnZXQoY29uc3QgS2V5VHlwZSYpOworICAgIC8v
IEFkZCBhIHZhbHVlIHRvIHRoZSB0YWJsZQorICAgIHN0ZDo6cGFpcjxmaW5kX2l0ZXJhdG9yLCBi
b29sPiBXQVJOX1VOVVNFRF9SRVRVUk4gYWRkKFZNJiwgY29uc3QgVmFsdWVUeXBlJiBlbnRyeSk7
CisgICAgLy8gUmVtb3ZlIGEgdmFsdWUgZnJvbSB0aGUgdGFibGUuCisgICAgdm9pZCByZW1vdmUo
Vk0mLCBjb25zdCBmaW5kX2l0ZXJhdG9yJiBpdGVyKTsKKyAgICB2b2lkIHJlbW92ZShWTSYsIGNv
bnN0IEtleVR5cGUmIGtleSk7CisKKyAgICAvLyBSZXR1cm5zIHRoZSBudW1iZXIgb2YgdmFsdWVz
IGluIHRoZSBoYXNodGFibGUuCisgICAgdW5zaWduZWQgc2l6ZSgpIGNvbnN0OworCisgICAgLy8g
Q2hlY2tzIGlmIHRoZXJlIGFyZSBhbnkgdmFsdWVzIGluIHRoZSBoYXNodGFibGUuCisgICAgYm9v
bCBpc0VtcHR5KCkgY29uc3Q7CisKKyAgICAvLyBOdW1iZXIgb2Ygc2xvdHMgaW4gdGhlIHByb3Bl
cnR5IHN0b3JhZ2UgYXJyYXkgaW4gdXNlLCBpbmNsdWRlZCBkZWxldGVkT2Zmc2V0cy4KKyAgICB1
bnNpZ25lZCBwcm9wZXJ0eVN0b3JhZ2VTaXplKCkgY29uc3Q7CisKKyAgICAvLyBVc2VkIHRvIG1h
aW50YWluIGEgbGlzdCBvZiB1bnVzZWQgZW50cmllcyBpbiB0aGUgcHJvcGVydHkgc3RvcmFnZS4K
KyAgICB2b2lkIGNsZWFyRGVsZXRlZE9mZnNldHMoKTsKKyAgICBib29sIGhhc0RlbGV0ZWRPZmZz
ZXQoKTsKKyAgICBQcm9wZXJ0eU9mZnNldCBnZXREZWxldGVkT2Zmc2V0KCk7CisgICAgdm9pZCBh
ZGREZWxldGVkT2Zmc2V0KFByb3BlcnR5T2Zmc2V0KTsKKyAgICAKKyAgICBQcm9wZXJ0eU9mZnNl
dCBuZXh0T2Zmc2V0KFByb3BlcnR5T2Zmc2V0IGlubGluZUNhcGFjaXR5KTsKKworICAgIC8vIENv
cHkgdGhpcyBQcm9wZXJ0eVRhYmxlLCBlbnN1cmluZyB0aGUgY29weSBoYXMgYXQgbGVhc3QgdGhl
IGNhcGFjaXR5IHByb3ZpZGVkLgorICAgIFByb3BlcnR5VGFibGUqIGNvcHkoVk0mLCB1bnNpZ25l
ZCBuZXdDYXBhY2l0eSk7CisKKyNpZm5kZWYgTkRFQlVHCisgICAgc2l6ZV90IHNpemVJbk1lbW9y
eSgpOworICAgIHZvaWQgY2hlY2tDb25zaXN0ZW5jeSgpOworI2VuZGlmCisgICAgCisgICAgc3Rh
dGljIHB0cmRpZmZfdCBvZmZzZXRPZkluZGV4U2l6ZSgpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRP
RihQcm9wZXJ0eVRhYmxlLCBtX2luZGV4U2l6ZSk7IH0KKyAgICBzdGF0aWMgcHRyZGlmZl90IG9m
ZnNldE9mSW5kZXhNYXNrKCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKFByb3BlcnR5VGFibGUs
IG1faW5kZXhNYXNrKTsgfQorICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZJbmRleCgpIHsg
cmV0dXJuIE9CSkVDVF9PRkZTRVRPRihQcm9wZXJ0eVRhYmxlLCBtX2luZGV4KTsgfQorCisgICAg
c3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBFbXB0eUVudHJ5SW5kZXggPSAwOworCitwcml2YXRl
OgorICAgIFByb3BlcnR5VGFibGUoVk0mLCB1bnNpZ25lZCBpbml0aWFsQ2FwYWNpdHkpOworICAg
IFByb3BlcnR5VGFibGUoVk0mLCBjb25zdCBQcm9wZXJ0eVRhYmxlJik7CisgICAgUHJvcGVydHlU
YWJsZShWTSYsIHVuc2lnbmVkIGluaXRpYWxDYXBhY2l0eSwgY29uc3QgUHJvcGVydHlUYWJsZSYp
OworCisgICAgUHJvcGVydHlUYWJsZShjb25zdCBQcm9wZXJ0eVRhYmxlJik7CisKKyAgICB2b2lk
IGZpbmlzaENyZWF0aW9uKFZNJik7CisKKyAgICAvLyBVc2VkIHRvIGluc2VydCBhIHZhbHVlIGtu
b3duIG5vdCB0byBiZSBpbiB0aGUgdGFibGUsIGFuZCB3aGVyZSB3ZSBrbm93IGNhcGFjaXR5IHRv
IGJlIGF2YWlsYWJsZS4KKyAgICB2b2lkIHJlaW5zZXJ0KGNvbnN0IFZhbHVlVHlwZSYgZW50cnkp
OworCisgICAgLy8gUmVoYXNoIHRoZSB0YWJsZS4gIFVzZWQgdG8gZ3Jvdywgb3IgdG8gcmVjb3Zl
ciBkZWxldGVkIHNsb3RzLgorICAgIHZvaWQgcmVoYXNoKFZNJiwgdW5zaWduZWQgbmV3Q2FwYWNp
dHkpOworCisgICAgLy8gVGhlIGNhcGFjaXR5IG9mIHRoZSB0YWJsZSBvZiB2YWx1ZXMgaXMgaGFs
ZiBvZiB0aGUgc2l6ZSBvZiB0aGUgaW5kZXguCisgICAgdW5zaWduZWQgdGFibGVDYXBhY2l0eSgp
IGNvbnN0OworCisgICAgLy8gV2Uga2VlcCBhbiBleHRyYSBkZWxldGVkIHNsb3QgYWZ0ZXIgdGhl
IGFycmF5IHRvIG1ha2UgaXRlcmF0aW9uIHdvcmssCisgICAgLy8gYW5kIHRvIHVzZSBmb3IgZGVs
ZXRlZCB2YWx1ZXMuIEluZGV4IHZhbHVlcyBpbnRvIHRoZSBhcnJheSBhcmUgMS1iYXNlZCwKKyAg
ICAvLyBzbyB0aGlzIGlzIHRhYmxlQ2FwYWNpdHkoKSArIDEuCisgICAgLy8gRm9yIGV4YW1wbGUs
IGlmIG1fdGFibGVTaXplIGlzIDE2LCB0aGVuIHRhYmxlQ2FwYWNpdHkoKSBpcyA4IC0gYnV0IHRo
ZQorICAgIC8vIHZhbHVlcyBhcnJheSBpcyBhY3R1YWxseSA5IGxvbmcgKHRoZSA5dGggdXNlZCBm
b3IgdGhlIGRlbGV0ZWQgdmFsdWUvCisgICAgLy8gaXRlcmF0aW9uIGd1YXJkKS4gIFRoZSA4IHZh
bGlkIGVudHJpZXMgYXJlIG51bWJlcmVkIDEuLjgsIHNvIHRoZQorICAgIC8vIGRlbGV0ZWQgaW5k
ZXggaXMgOSAoMCBiZWluZyByZXNlcnZlZCBmb3IgZW1wdHkpLgorICAgIHVuc2lnbmVkIGRlbGV0
ZWRFbnRyeUluZGV4KCkgY29uc3Q7CisKKyAgICAvLyBVc2VkIGluIGl0ZXJhdG9yIGNyZWF0aW9u
L3Byb2dyZXNzaW9uLgorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CisgICAgc3RhdGljIFQqIHNr
aXBEZWxldGVkRW50cmllcyhUKiB2YWx1ZVB0ciwgVCogZW5kVmFsdWVQdHIpOworCisgICAgLy8g
VGhlIHRhYmxlIG9mIHZhbHVlcyBsaWVzIGFmdGVyIHRoZSBoYXNoIGluZGV4LgorICAgIFZhbHVl
VHlwZSogdGFibGUoKTsKKyAgICBjb25zdCBWYWx1ZVR5cGUqIHRhYmxlKCkgY29uc3Q7CisKKyAg
ICBWYWx1ZVR5cGUqIHRhYmxlRW5kKCkgeyByZXR1cm4gdGFibGUoKSArIHVzZWRDb3VudCgpOyB9
CisgICAgY29uc3QgVmFsdWVUeXBlKiB0YWJsZUVuZCgpIGNvbnN0IHsgcmV0dXJuIHRhYmxlKCkg
KyB1c2VkQ291bnQoKTsgfQorCisgICAgLy8gdG90YWwgbnVtYmVyIG9mICB1c2VkIGVudHJpZXMg
aW4gdGhlIHZhbHVlcyBhcnJheSAtIGJ5IGVpdGhlciB2YWxpZCBlbnRyaWVzLCBvciBkZWxldGVk
IG9uZXMuCisgICAgdW5zaWduZWQgdXNlZENvdW50KCkgY29uc3Q7CisKKyAgICAvLyBUaGUgc2l6
ZSBpbiBieXRlcyBvZiBkYXRhIG5lZWRlZCBmb3IgYnkgdGhlIHRhYmxlLgorICAgIHNpemVfdCBk
YXRhU2l6ZSgpOworCisgICAgLy8gQ2FsY3VsYXRlcyB0aGUgYXBwcm9wcmlhdGUgdGFibGUgc2l6
ZSAocm91bmRzIHVwIHRvIGEgcG93ZXIgb2YgdHdvKS4KKyAgICBzdGF0aWMgdW5zaWduZWQgc2l6
ZUZvckNhcGFjaXR5KHVuc2lnbmVkIGNhcGFjaXR5KTsKKworICAgIC8vIENoZWNrIGlmIGNhcGFj
aXR5IGlzIGF2YWlsYWJsZS4KKyAgICBib29sIGNhbkluc2VydCgpOworCisgICAgdW5zaWduZWQg
bV9pbmRleFNpemU7CisgICAgdW5zaWduZWQgbV9pbmRleE1hc2s7CisgICAgdW5zaWduZWQqIG1f
aW5kZXg7CisgICAgdW5zaWduZWQgbV9rZXlDb3VudDsKKyAgICB1bnNpZ25lZCBtX2RlbGV0ZWRD
b3VudDsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8VmVjdG9yPFByb3BlcnR5T2Zmc2V0Pj4gbV9kZWxl
dGVkT2Zmc2V0czsKKworICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgTWluaW11bVRhYmxl
U2l6ZSA9IDE2OworfTsKKworaW5saW5lIFByb3BlcnR5VGFibGU6Oml0ZXJhdG9yIFByb3BlcnR5
VGFibGU6OmJlZ2luKCkKK3sKKyAgICBhdXRvKiB0YWJsZUVuZCA9IHRoaXMtPnRhYmxlRW5kKCk7
CisgICAgcmV0dXJuIGl0ZXJhdG9yKHNraXBEZWxldGVkRW50cmllcyh0YWJsZSgpLCB0YWJsZUVu
ZCksIHRhYmxlRW5kKTsKK30KKworaW5saW5lIFByb3BlcnR5VGFibGU6Oml0ZXJhdG9yIFByb3Bl
cnR5VGFibGU6OmVuZCgpCit7CisgICAgYXV0byogdGFibGVFbmQgPSB0aGlzLT50YWJsZUVuZCgp
OworICAgIHJldHVybiBpdGVyYXRvcih0YWJsZUVuZCwgdGFibGVFbmQpOworfQorCitpbmxpbmUg
UHJvcGVydHlUYWJsZTo6Y29uc3RfaXRlcmF0b3IgUHJvcGVydHlUYWJsZTo6YmVnaW4oKSBjb25z
dAoreworICAgIGF1dG8qIHRhYmxlRW5kID0gdGhpcy0+dGFibGVFbmQoKTsKKyAgICByZXR1cm4g
Y29uc3RfaXRlcmF0b3Ioc2tpcERlbGV0ZWRFbnRyaWVzKHRhYmxlKCksIHRhYmxlRW5kKSwgdGFi
bGVFbmQpOworfQorCitpbmxpbmUgUHJvcGVydHlUYWJsZTo6Y29uc3RfaXRlcmF0b3IgUHJvcGVy
dHlUYWJsZTo6ZW5kKCkgY29uc3QKK3sKKyAgICBhdXRvKiB0YWJsZUVuZCA9IHRoaXMtPnRhYmxl
RW5kKCk7CisgICAgcmV0dXJuIGNvbnN0X2l0ZXJhdG9yKHRhYmxlRW5kLCB0YWJsZUVuZCk7Cit9
CisKK2lubGluZSBQcm9wZXJ0eVRhYmxlOjpmaW5kX2l0ZXJhdG9yIFByb3BlcnR5VGFibGU6OmZp
bmQoY29uc3QgS2V5VHlwZSYga2V5KQoreworICAgIEFTU0VSVChrZXkpOworICAgIEFTU0VSVChr
ZXktPmlzQXRvbSgpIHx8IGtleS0+aXNTeW1ib2woKSk7CisgICAgdW5zaWduZWQgaGFzaCA9IElk
ZW50aWZpZXJSZXBIYXNoOjpoYXNoKGtleSk7CisKKyNpZiBEVU1QX1BST1BFUlRZTUFQX1NUQVRT
CisgICAgKytwcm9wZXJ0eU1hcEhhc2hUYWJsZVN0YXRzLT5udW1GaW5kczsKKyNlbmRpZgorCisg
ICAgd2hpbGUgKHRydWUpIHsKKyAgICAgICAgdW5zaWduZWQgZW50cnlJbmRleCA9IG1faW5kZXhb
aGFzaCAmIG1faW5kZXhNYXNrXTsKKyAgICAgICAgaWYgKGVudHJ5SW5kZXggPT0gRW1wdHlFbnRy
eUluZGV4KQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV9wYWlyKChWYWx1ZVR5cGUqKW51
bGxwdHIsIGhhc2ggJiBtX2luZGV4TWFzayk7CisgICAgICAgIGlmIChrZXkgPT0gdGFibGUoKVtl
bnRyeUluZGV4IC0gMV0ua2V5KQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV9wYWlyKCZ0
YWJsZSgpW2VudHJ5SW5kZXggLSAxXSwgaGFzaCAmIG1faW5kZXhNYXNrKTsKKworI2lmIERVTVBf
UFJPUEVSVFlNQVBfU1RBVFMKKyAgICAgICAgKytwcm9wZXJ0eU1hcEhhc2hUYWJsZVN0YXRzLT5u
dW1Db2xsaXNpb25zOworI2VuZGlmCisKKyNpZiBEVU1QX1BST1BFUlRZTUFQX0NPTExJU0lPTlMK
KyAgICAgICAgZGF0YUxvZygiUHJvcGVydHlUYWJsZSBjb2xsaXNpb24gZm9yICIsIGtleSwgIiAo
IiwgaGFzaCwgIilcbiIpOworICAgICAgICBkYXRhTG9nKCJDb2xsaWRlZCB3aXRoICIsIHRhYmxl
KClbZW50cnlJbmRleCAtIDFdLmtleSwgIigiLCBJZGVudGlmaWVyUmVwSGFzaDo6aGFzaCh0YWJs
ZSgpW2VudHJ5SW5kZXggLSAxXS5rZXkpLCAiKVxuIik7CisjZW5kaWYKKworICAgICAgICBoYXNo
Kys7CisgICAgfQorfQorCitpbmxpbmUgUHJvcGVydHlUYWJsZTo6VmFsdWVUeXBlKiBQcm9wZXJ0
eVRhYmxlOjpnZXQoY29uc3QgS2V5VHlwZSYga2V5KQoreworICAgIEFTU0VSVChrZXkpOworICAg
IEFTU0VSVChrZXktPmlzQXRvbSgpIHx8IGtleS0+aXNTeW1ib2woKSk7CisgICAgQVNTRVJUKGtl
eSAhPSBQUk9QRVJUWV9NQVBfREVMRVRFRF9FTlRSWV9LRVkpOworCisgICAgaWYgKCFtX2tleUNv
dW50KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIHVuc2lnbmVkIGhhc2ggPSBJZGVu
dGlmaWVyUmVwSGFzaDo6aGFzaChrZXkpOworCisjaWYgRFVNUF9QUk9QRVJUWU1BUF9TVEFUUwor
ICAgICsrcHJvcGVydHlNYXBIYXNoVGFibGVTdGF0cy0+bnVtTG9va3VwczsKKyNlbmRpZgorCisg
ICAgd2hpbGUgKHRydWUpIHsKKyAgICAgICAgdW5zaWduZWQgZW50cnlJbmRleCA9IG1faW5kZXhb
aGFzaCAmIG1faW5kZXhNYXNrXTsKKyAgICAgICAgaWYgKGVudHJ5SW5kZXggPT0gRW1wdHlFbnRy
eUluZGV4KQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIGlmIChrZXkgPT0g
dGFibGUoKVtlbnRyeUluZGV4IC0gMV0ua2V5KSB7CisgICAgICAgICAgICBBU1NFUlQoIW1fZGVs
ZXRlZE9mZnNldHMgfHwgIW1fZGVsZXRlZE9mZnNldHMtPmNvbnRhaW5zKHRhYmxlKClbZW50cnlJ
bmRleCAtIDFdLm9mZnNldCkpOworICAgICAgICAgICAgcmV0dXJuICZ0YWJsZSgpW2VudHJ5SW5k
ZXggLSAxXTsKKyAgICAgICAgfQorCisjaWYgRFVNUF9QUk9QRVJUWU1BUF9TVEFUUworICAgICAg
ICArK3Byb3BlcnR5TWFwSGFzaFRhYmxlU3RhdHMtPm51bUxvb2t1cFByb2Jpbmc7CisjZW5kaWYK
KworICAgICAgICBoYXNoKys7CisgICAgfQorfQorCitpbmxpbmUgc3RkOjpwYWlyPFByb3BlcnR5
VGFibGU6OmZpbmRfaXRlcmF0b3IsIGJvb2w+IFdBUk5fVU5VU0VEX1JFVFVSTiBQcm9wZXJ0eVRh
YmxlOjphZGQoVk0mIHZtLCBjb25zdCBWYWx1ZVR5cGUmIGVudHJ5KQoreworICAgIEFTU0VSVCgh
bV9kZWxldGVkT2Zmc2V0cyB8fCAhbV9kZWxldGVkT2Zmc2V0cy0+Y29udGFpbnMoZW50cnkub2Zm
c2V0KSk7CisKKyAgICAvLyBMb29rIGZvciBhIHZhbHVlIHdpdGggYSBtYXRjaGluZyBrZXkgYWxy
ZWFkeSBpbiB0aGUgYXJyYXkuCisgICAgZmluZF9pdGVyYXRvciBpdGVyID0gZmluZChlbnRyeS5r
ZXkpOworICAgIGlmIChpdGVyLmZpcnN0KQorICAgICAgICByZXR1cm4gc3RkOjptYWtlX3BhaXIo
aXRlciwgZmFsc2UpOworCisjaWYgRFVNUF9QUk9QRVJUWU1BUF9TVEFUUworICAgICsrcHJvcGVy
dHlNYXBIYXNoVGFibGVTdGF0cy0+bnVtQWRkczsKKyNlbmRpZgorCisgICAgLy8gUmVmIHRoZSBr
ZXkKKyAgICBlbnRyeS5rZXktPnJlZigpOworCisgICAgLy8gZW5zdXJlIGNhcGFjaXR5IGlzIGF2
YWlsYWJsZS4KKyAgICBpZiAoIWNhbkluc2VydCgpKSB7CisgICAgICAgIHJlaGFzaCh2bSwgbV9r
ZXlDb3VudCArIDEpOworICAgICAgICBpdGVyID0gZmluZChlbnRyeS5rZXkpOworICAgICAgICBB
U1NFUlQoIWl0ZXIuZmlyc3QpOworICAgIH0KKworICAgIC8vIEFsbG9jYXRlIGEgc2xvdCBpbiB0
aGUgaGFzaHRhYmxlLCBhbmQgc2V0IHRoZSBpbmRleCB0byByZWZlcmVuY2UgdGhpcy4KKyAgICB1
bnNpZ25lZCBlbnRyeUluZGV4ID0gdXNlZENvdW50KCkgKyAxOworICAgIG1faW5kZXhbaXRlci5z
ZWNvbmRdID0gZW50cnlJbmRleDsKKyAgICBpdGVyLmZpcnN0ID0gJnRhYmxlKClbZW50cnlJbmRl
eCAtIDFdOworICAgICppdGVyLmZpcnN0ID0gZW50cnk7CisKKyAgICArK21fa2V5Q291bnQ7Cisg
ICAgCisgICAgcmV0dXJuIHN0ZDo6bWFrZV9wYWlyKGl0ZXIsIHRydWUpOworfQorCitpbmxpbmUg
dm9pZCBQcm9wZXJ0eVRhYmxlOjpyZW1vdmUoVk0mIHZtLCBjb25zdCBmaW5kX2l0ZXJhdG9yJiBp
dGVyKQoreworICAgIC8vIFJlbW92aW5nIGEga2V5IHRoYXQgZG9lc24ndCBleGlzdCBkb2VzIG5v
dGhpbmchCisgICAgaWYgKCFpdGVyLmZpcnN0KQorICAgICAgICByZXR1cm47CisKKyNpZiBEVU1Q
X1BST1BFUlRZTUFQX1NUQVRTCisgICAgKytwcm9wZXJ0eU1hcEhhc2hUYWJsZVN0YXRzLT5udW1S
ZW1vdmVzOworI2VuZGlmCisKKyAgICAvLyBSZXBsYWNlIHRoaXMgb25lIGVsZW1lbnQgd2l0aCB0
aGUgZGVsZXRlZCBzZW50aW5lbC4gQWxzbyBjbGVhciBvdXQKKyAgICAvLyB0aGUgZW50cnkgc28g
d2UgY2FuIGl0ZXJhdGUgYWxsIHRoZSBlbnRyaWVzIGFzIG5lZWRlZC4KKyAgICBtX2luZGV4W2l0
ZXIuc2Vjb25kXSA9IGRlbGV0ZWRFbnRyeUluZGV4KCk7CisgICAgaXRlci5maXJzdC0+a2V5LT5k
ZXJlZigpOworICAgIGl0ZXIuZmlyc3QtPmtleSA9IFBST1BFUlRZX01BUF9ERUxFVEVEX0VOVFJZ
X0tFWTsKKworICAgIEFTU0VSVChtX2tleUNvdW50ID49IDEpOworICAgIC0tbV9rZXlDb3VudDsK
KyAgICArK21fZGVsZXRlZENvdW50OworCisgICAgaWYgKG1fZGVsZXRlZENvdW50ICogNCA+PSBt
X2luZGV4U2l6ZSkKKyAgICAgICAgcmVoYXNoKHZtLCBtX2tleUNvdW50KTsKK30KKworaW5saW5l
IHZvaWQgUHJvcGVydHlUYWJsZTo6cmVtb3ZlKFZNJiB2bSwgY29uc3QgS2V5VHlwZSYga2V5KQor
eworICAgIHJlbW92ZSh2bSwgZmluZChrZXkpKTsKK30KKworLy8gcmV0dXJucyB0aGUgbnVtYmVy
IG9mIHZhbHVlcyBpbiB0aGUgaGFzaHRhYmxlLgoraW5saW5lIHVuc2lnbmVkIFByb3BlcnR5VGFi
bGU6OnNpemUoKSBjb25zdAoreworICAgIHJldHVybiBtX2tleUNvdW50OworfQorCitpbmxpbmUg
Ym9vbCBQcm9wZXJ0eVRhYmxlOjppc0VtcHR5KCkgY29uc3QKK3sKKyAgICByZXR1cm4gIW1fa2V5
Q291bnQ7Cit9CisKK2lubGluZSB1bnNpZ25lZCBQcm9wZXJ0eVRhYmxlOjpwcm9wZXJ0eVN0b3Jh
Z2VTaXplKCkgY29uc3QKK3sKKyAgICByZXR1cm4gc2l6ZSgpICsgKG1fZGVsZXRlZE9mZnNldHMg
PyBtX2RlbGV0ZWRPZmZzZXRzLT5zaXplKCkgOiAwKTsKK30KKworaW5saW5lIHZvaWQgUHJvcGVy
dHlUYWJsZTo6Y2xlYXJEZWxldGVkT2Zmc2V0cygpCit7CisgICAgbV9kZWxldGVkT2Zmc2V0cyA9
IG51bGxwdHI7Cit9CisKK2lubGluZSBib29sIFByb3BlcnR5VGFibGU6Omhhc0RlbGV0ZWRPZmZz
ZXQoKQoreworICAgIHJldHVybiBtX2RlbGV0ZWRPZmZzZXRzICYmICFtX2RlbGV0ZWRPZmZzZXRz
LT5pc0VtcHR5KCk7Cit9CisKK2lubGluZSBQcm9wZXJ0eU9mZnNldCBQcm9wZXJ0eVRhYmxlOjpn
ZXREZWxldGVkT2Zmc2V0KCkKK3sKKyAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQgPSBtX2RlbGV0
ZWRPZmZzZXRzLT5sYXN0KCk7CisgICAgbV9kZWxldGVkT2Zmc2V0cy0+cmVtb3ZlTGFzdCgpOwor
ICAgIHJldHVybiBvZmZzZXQ7Cit9CisKK2lubGluZSB2b2lkIFByb3BlcnR5VGFibGU6OmFkZERl
bGV0ZWRPZmZzZXQoUHJvcGVydHlPZmZzZXQgb2Zmc2V0KQoreworICAgIGlmICghbV9kZWxldGVk
T2Zmc2V0cykKKyAgICAgICAgbV9kZWxldGVkT2Zmc2V0cyA9IG1ha2VVbmlxdWU8VmVjdG9yPFBy
b3BlcnR5T2Zmc2V0Pj4oKTsKKyAgICBBU1NFUlQoIW1fZGVsZXRlZE9mZnNldHMtPmNvbnRhaW5z
KG9mZnNldCkpOworICAgIG1fZGVsZXRlZE9mZnNldHMtPmFwcGVuZChvZmZzZXQpOworfQorCitp
bmxpbmUgUHJvcGVydHlPZmZzZXQgUHJvcGVydHlUYWJsZTo6bmV4dE9mZnNldChQcm9wZXJ0eU9m
ZnNldCBpbmxpbmVDYXBhY2l0eSkKK3sKKyAgICBpZiAoaGFzRGVsZXRlZE9mZnNldCgpKQorICAg
ICAgICByZXR1cm4gZ2V0RGVsZXRlZE9mZnNldCgpOworCisgICAgcmV0dXJuIG9mZnNldEZvclBy
b3BlcnR5TnVtYmVyKHNpemUoKSwgaW5saW5lQ2FwYWNpdHkpOworfQorCitpbmxpbmUgUHJvcGVy
dHlUYWJsZSogUHJvcGVydHlUYWJsZTo6Y29weShWTSYgdm0sIHVuc2lnbmVkIG5ld0NhcGFjaXR5
KQoreworICAgIEFTU0VSVChuZXdDYXBhY2l0eSA+PSBtX2tleUNvdW50KTsKKworICAgIC8vIEZh
c3QgY2FzZTsgaWYgdGhlIG5ldyB0YWJsZSB3aWxsIGJlIHRoZSBzYW1lIG1faW5kZXhTaXplIGFz
IHRoaXMgb25lLCB3ZSBjYW4gbWVtY3B5IGl0LAorICAgIC8vIHNhdmUgcmVoYXNoaW5nIGFsbCBr
ZXlzLgorICAgIGlmIChzaXplRm9yQ2FwYWNpdHkobmV3Q2FwYWNpdHkpID09IG1faW5kZXhTaXpl
KQorICAgICAgICByZXR1cm4gUHJvcGVydHlUYWJsZTo6Y2xvbmUodm0sICp0aGlzKTsKKyAgICBy
ZXR1cm4gUHJvcGVydHlUYWJsZTo6Y2xvbmUodm0sIG5ld0NhcGFjaXR5LCAqdGhpcyk7Cit9CisK
KyNpZm5kZWYgTkRFQlVHCitpbmxpbmUgc2l6ZV90IFByb3BlcnR5VGFibGU6OnNpemVJbk1lbW9y
eSgpCit7CisgICAgc2l6ZV90IHJlc3VsdCA9IHNpemVvZihQcm9wZXJ0eVRhYmxlKSArIGRhdGFT
aXplKCk7CisgICAgaWYgKG1fZGVsZXRlZE9mZnNldHMpCisgICAgICAgIHJlc3VsdCArPSAobV9k
ZWxldGVkT2Zmc2V0cy0+Y2FwYWNpdHkoKSAqIHNpemVvZihQcm9wZXJ0eU9mZnNldCkpOworICAg
IHJldHVybiByZXN1bHQ7Cit9CisjZW5kaWYKKworaW5saW5lIHZvaWQgUHJvcGVydHlUYWJsZTo6
cmVpbnNlcnQoY29uc3QgVmFsdWVUeXBlJiBlbnRyeSkKK3sKKyNpZiBEVU1QX1BST1BFUlRZTUFQ
X1NUQVRTCisgICAgKytwcm9wZXJ0eU1hcEhhc2hUYWJsZVN0YXRzLT5udW1SZWluc2VydHM7Cisj
ZW5kaWYKKworICAgIC8vIFVzZWQgdG8gaW5zZXJ0IGEgdmFsdWUga25vd24gbm90IHRvIGJlIGlu
IHRoZSB0YWJsZSwgYW5kIHdoZXJlCisgICAgLy8gd2Uga25vdyBjYXBhY2l0eSB0byBiZSBhdmFp
bGFibGUuCisgICAgQVNTRVJUKGNhbkluc2VydCgpKTsKKyAgICBmaW5kX2l0ZXJhdG9yIGl0ZXIg
PSBmaW5kKGVudHJ5LmtleSk7CisgICAgQVNTRVJUKCFpdGVyLmZpcnN0KTsKKworICAgIHVuc2ln
bmVkIGVudHJ5SW5kZXggPSB1c2VkQ291bnQoKSArIDE7CisgICAgbV9pbmRleFtpdGVyLnNlY29u
ZF0gPSBlbnRyeUluZGV4OworICAgIHRhYmxlKClbZW50cnlJbmRleCAtIDFdID0gZW50cnk7CisK
KyAgICArK21fa2V5Q291bnQ7Cit9CisKK2lubGluZSB2b2lkIFByb3BlcnR5VGFibGU6OnJlaGFz
aChWTSYgdm0sIHVuc2lnbmVkIG5ld0NhcGFjaXR5KQoreworI2lmIERVTVBfUFJPUEVSVFlNQVBf
U1RBVFMKKyAgICArK3Byb3BlcnR5TWFwSGFzaFRhYmxlU3RhdHMtPm51bVJlaGFzaGVzOworI2Vu
ZGlmCisKKyAgICBzaXplX3Qgb2xkRGF0YVNpemUgPSBkYXRhU2l6ZSgpOworICAgIHVuc2lnbmVk
KiBvbGRFbnRyeUluZGljZXMgPSBtX2luZGV4OworICAgIGl0ZXJhdG9yIGl0ZXIgPSB0aGlzLT5i
ZWdpbigpOworICAgIGl0ZXJhdG9yIGVuZCA9IHRoaXMtPmVuZCgpOworCisgICAgbV9pbmRleFNp
emUgPSBzaXplRm9yQ2FwYWNpdHkobmV3Q2FwYWNpdHkpOworICAgIG1faW5kZXhNYXNrID0gbV9p
bmRleFNpemUgLSAxOworICAgIG1fa2V5Q291bnQgPSAwOworICAgIG1fZGVsZXRlZENvdW50ID0g
MDsKKworICAgIG1faW5kZXggPSBzdGF0aWNfY2FzdDx1bnNpZ25lZCo+KFByb3BlcnR5VGFibGVN
YWxsb2M6Onplcm9lZE1hbGxvYyhkYXRhU2l6ZSgpKSk7CisKKyAgICBmb3IgKDsgaXRlciAhPSBl
bmQ7ICsraXRlcikgeworICAgICAgICBBU1NFUlQoY2FuSW5zZXJ0KCkpOworICAgICAgICByZWlu
c2VydCgqaXRlcik7CisgICAgfQorCisgICAgUHJvcGVydHlUYWJsZU1hbGxvYzo6ZnJlZShvbGRF
bnRyeUluZGljZXMpOworCisgICAgaWYgKG9sZERhdGFTaXplIDwgZGF0YVNpemUoKSkKKyAgICAg
ICAgdm0uaGVhcC5yZXBvcnRFeHRyYU1lbW9yeUFsbG9jYXRlZChkYXRhU2l6ZSgpIC0gb2xkRGF0
YVNpemUpOworfQorCitpbmxpbmUgdW5zaWduZWQgUHJvcGVydHlUYWJsZTo6dGFibGVDYXBhY2l0
eSgpIGNvbnN0IHsgcmV0dXJuIG1faW5kZXhTaXplID4+IDE7IH0KKworaW5saW5lIHVuc2lnbmVk
IFByb3BlcnR5VGFibGU6OmRlbGV0ZWRFbnRyeUluZGV4KCkgY29uc3QgeyByZXR1cm4gdGFibGVD
YXBhY2l0eSgpICsgMTsgfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPgoraW5saW5lIFQqIFByb3Bl
cnR5VGFibGU6OnNraXBEZWxldGVkRW50cmllcyhUKiB2YWx1ZVB0ciwgVCogZW5kVmFsdWVQdHIp
Cit7CisgICAgd2hpbGUgKHZhbHVlUHRyIDwgZW5kVmFsdWVQdHIgJiYgdmFsdWVQdHItPmtleSA9
PSBQUk9QRVJUWV9NQVBfREVMRVRFRF9FTlRSWV9LRVkpCisgICAgICAgICsrdmFsdWVQdHI7Cisg
ICAgcmV0dXJuIHZhbHVlUHRyOworfQorCitpbmxpbmUgUHJvcGVydHlUYWJsZTo6VmFsdWVUeXBl
KiBQcm9wZXJ0eVRhYmxlOjp0YWJsZSgpCit7CisgICAgLy8gVGhlIHRhYmxlIG9mIHZhbHVlcyBs
aWVzIGFmdGVyIHRoZSBoYXNoIGluZGV4LgorICAgIHJldHVybiByZWludGVycHJldF9jYXN0X3B0
cjxWYWx1ZVR5cGUqPihtX2luZGV4ICsgbV9pbmRleFNpemUpOworfQorCitpbmxpbmUgY29uc3Qg
UHJvcGVydHlUYWJsZTo6VmFsdWVUeXBlKiBQcm9wZXJ0eVRhYmxlOjp0YWJsZSgpIGNvbnN0Cit7
CisgICAgLy8gVGhlIHRhYmxlIG9mIHZhbHVlcyBsaWVzIGFmdGVyIHRoZSBoYXNoIGluZGV4Lgor
ICAgIHJldHVybiByZWludGVycHJldF9jYXN0X3B0cjxjb25zdCBWYWx1ZVR5cGUqPihtX2luZGV4
ICsgbV9pbmRleFNpemUpOworfQorCitpbmxpbmUgdW5zaWduZWQgUHJvcGVydHlUYWJsZTo6dXNl
ZENvdW50KCkgY29uc3QKK3sKKyAgICAvLyBUb3RhbCBudW1iZXIgb2YgIHVzZWQgZW50cmllcyBp
biB0aGUgdmFsdWVzIGFycmF5IC0gYnkgZWl0aGVyIHZhbGlkIGVudHJpZXMsIG9yIGRlbGV0ZWQg
b25lcy4KKyAgICByZXR1cm4gbV9rZXlDb3VudCArIG1fZGVsZXRlZENvdW50OworfQorCitpbmxp
bmUgc2l6ZV90IFByb3BlcnR5VGFibGU6OmRhdGFTaXplKCkKK3sKKyAgICAvLyBUaGUgc2l6ZSBp
biBieXRlcyBvZiBkYXRhIG5lZWRlZCBmb3IgYnkgdGhlIHRhYmxlLgorICAgIC8vIEVuc3VyZSB0
aGF0IHRoaXMgZnVuY3Rpb24gY2FuIGJlIGNhbGxlZCBjb25jdXJyZW50bHkuCisgICAgdW5zaWdu
ZWQgaW5kZXhTaXplID0gbV9pbmRleFNpemU7CisgICAgcmV0dXJuIGluZGV4U2l6ZSAqIHNpemVv
Zih1bnNpZ25lZCkgKyAoKGluZGV4U2l6ZSA+PiAxKSArIDEpICogc2l6ZW9mKFZhbHVlVHlwZSk7
Cit9CisKK2lubGluZSB1bnNpZ25lZCBQcm9wZXJ0eVRhYmxlOjpzaXplRm9yQ2FwYWNpdHkodW5z
aWduZWQgY2FwYWNpdHkpCit7CisgICAgaWYgKGNhcGFjaXR5IDwgTWluaW11bVRhYmxlU2l6ZSAv
IDIpCisgICAgICAgIHJldHVybiBNaW5pbXVtVGFibGVTaXplOworICAgIHJldHVybiBuZXh0UG93
ZXJPZjIoY2FwYWNpdHkgKyAxKSAqIDI7Cit9CisKK2lubGluZSBib29sIFByb3BlcnR5VGFibGU6
OmNhbkluc2VydCgpCit7CisgICAgcmV0dXJuIHVzZWRDb3VudCgpIDwgdGFibGVDYXBhY2l0eSgp
OworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKClByb3BlcnR5IGNoYW5nZXMgb246IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5VGFibGUuaApfX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkFkZGVkOiBz
dm46ZW9sLXN0eWxlCiMjIC0wLDAgKzEgIyMKK25hdGl2ZQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9m
IHByb3BlcnR5CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eVRh
YmxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVy
dHlUYWJsZS5oCShyZXZpc2lvbiAyODYwMjQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Qcm9wZXJ0eVRhYmxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEyOSw3ICsxMjksNyBAQCBw
dWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNzPgog
ICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKLSAgICAg
ICAgcmV0dXJuICZ2bS5wcm9wZXJ0eVRhYmxlU3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucHJv
cGVydHlUYWJsZVNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIG5l
ZWRzRGVzdHJ1Y3Rpb24gPSB0cnVlOwpAQCAtMTczLDggKzE3Myw4IEBAIHB1YmxpYzoKICAgICAv
LyBBZGQgYSB2YWx1ZSB0byB0aGUgdGFibGUKICAgICBzdGQ6OnBhaXI8ZmluZF9pdGVyYXRvciwg
Ym9vbD4gV0FSTl9VTlVTRURfUkVUVVJOIGFkZChWTSYsIGNvbnN0IFZhbHVlVHlwZSYgZW50cnkp
OwogICAgIC8vIFJlbW92ZSBhIHZhbHVlIGZyb20gdGhlIHRhYmxlLgotICAgIHZvaWQgcmVtb3Zl
KFZNJiwgY29uc3QgZmluZF9pdGVyYXRvciYgaXRlcik7Ci0gICAgdm9pZCByZW1vdmUoVk0mLCBj
b25zdCBLZXlUeXBlJiBrZXkpOworICAgIHZvaWQgcmVtb3ZlKFZNJiwgY29uc3QgZmluZF9pdGVy
YXRvciYpOworICAgIHZvaWQgcmVtb3ZlKFZNJiwgY29uc3QgS2V5VHlwZSYpOwogCiAgICAgLy8g
UmV0dXJucyB0aGUgbnVtYmVyIG9mIHZhbHVlcyBpbiB0aGUgaGFzaHRhYmxlLgogICAgIHVuc2ln
bmVkIHNpemUoKSBjb25zdDsKQEAgLTIxOSw3ICsyMTksNyBAQCBwcml2YXRlOgogICAgIC8vIFVz
ZWQgdG8gaW5zZXJ0IGEgdmFsdWUga25vd24gbm90IHRvIGJlIGluIHRoZSB0YWJsZSwgYW5kIHdo
ZXJlIHdlIGtub3cgY2FwYWNpdHkgdG8gYmUgYXZhaWxhYmxlLgogICAgIHZvaWQgcmVpbnNlcnQo
Y29uc3QgVmFsdWVUeXBlJiBlbnRyeSk7CiAKLSAgICAvLyBSZWhhc2ggdGhlIHRhYmxlLiAgVXNl
ZCB0byBncm93LCBvciB0byByZWNvdmVyIGRlbGV0ZWQgc2xvdHMuCisgICAgLy8gUmVoYXNoIHRo
ZSB0YWJsZS4gVXNlZCB0byBncm93LCBvciB0byByZWNvdmVyIGRlbGV0ZWQgc2xvdHMuCiAgICAg
dm9pZCByZWhhc2goVk0mLCB1bnNpZ25lZCBuZXdDYXBhY2l0eSk7CiAKICAgICAvLyBUaGUgY2Fw
YWNpdHkgb2YgdGhlIHRhYmxlIG9mIHZhbHVlcyBpcyBoYWxmIG9mIHRoZSBzaXplIG9mIHRoZSBp
bmRleC4KQEAgLTIzMCw3ICsyMzAsNyBAQCBwcml2YXRlOgogICAgIC8vIHNvIHRoaXMgaXMgdGFi
bGVDYXBhY2l0eSgpICsgMS4KICAgICAvLyBGb3IgZXhhbXBsZSwgaWYgbV90YWJsZVNpemUgaXMg
MTYsIHRoZW4gdGFibGVDYXBhY2l0eSgpIGlzIDggLSBidXQgdGhlCiAgICAgLy8gdmFsdWVzIGFy
cmF5IGlzIGFjdHVhbGx5IDkgbG9uZyAodGhlIDl0aCB1c2VkIGZvciB0aGUgZGVsZXRlZCB2YWx1
ZS8KLSAgICAvLyBpdGVyYXRpb24gZ3VhcmQpLiAgVGhlIDggdmFsaWQgZW50cmllcyBhcmUgbnVt
YmVyZWQgMS4uOCwgc28gdGhlCisgICAgLy8gaXRlcmF0aW9uIGd1YXJkKS4gVGhlIDggdmFsaWQg
ZW50cmllcyBhcmUgbnVtYmVyZWQgMS4uOCwgc28gdGhlCiAgICAgLy8gZGVsZXRlZCBpbmRleCBp
cyA5ICgwIGJlaW5nIHJlc2VydmVkIGZvciBlbXB0eSkuCiAgICAgdW5zaWduZWQgZGVsZXRlZEVu
dHJ5SW5kZXgoKSBjb25zdDsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
UmVmbGVjdE9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1JlZmxlY3RPYmplY3QuaAkocmV2aXNpb24gMjg2MDI0KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvUmVmbGVjdE9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw3ICsz
OCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2
bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKFJl
ZmxlY3RPYmplY3QsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7
CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIHN0
YXRpYyBSZWZsZWN0T2JqZWN0KiBjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1JlZ0V4cC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1JlZ0V4cC5oCShyZXZpc2lvbiAyODYwMjQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9SZWdFeHAuaAkod29ya2luZyBjb3B5KQpAQCAtNDksNyArNDksNyBAQCBwdWJs
aWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNzIG1vZGU+
CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewotICAg
ICAgICByZXR1cm4gJnZtLnJlZ0V4cFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnJlZ0V4cFNw
YWNlKCk7CiAgICAgfQogCiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFJlZ0V4cCogY3Jl
YXRlKFZNJiwgY29uc3QgU3RyaW5nJiBwYXR0ZXJuLCBPcHRpb25TZXQ8WWFycjo6RmxhZ3M+KTsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE9iamVjdC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE9iamVjdC5oCShy
ZXZpc2lvbiAyODYwMjQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBP
YmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtMzYsNyArMzYsNyBAQCBwdWJsaWM6CiAgICAgc3Rh
dGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewogICAgICAgICBzdGF0
aWNfYXNzZXJ0KCFDZWxsVHlwZTo6bmVlZHNEZXN0cnVjdGlvbiwgIiIpOwotICAgICAgICByZXR1
cm4gJnZtLnJlZ0V4cE9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnJlZ0V4cE9iamVj
dFNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIGNvbnN0ZXhwciB1aW50cHRyX3QgbGFzdElu
ZGV4SXNOb3RXcml0YWJsZUZsYWcgPSAwYjAxOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvUmVnRXhwUHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvUmVnRXhwUHJvdG90eXBlLmgJKHJldmlzaW9uIDI4NjAyNCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cFByb3RvdHlwZS5oCSh3b3JraW5nIGNv
cHkpCkBAIC0zNCw3ICszNCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1
YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQ
QUNFX1NIQVJBQkxFKFJlZ0V4cFByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0u
cGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7
CiAgICAgfQogCiAgICAgc3RhdGljIFJlZ0V4cFByb3RvdHlwZSogY3JlYXRlKFZNJiB2bSwgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBTdHJpbmdJdGVyYXRvclByb3RvdHlw
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cFN0
cmluZ0l0ZXJhdG9yUHJvdG90eXBlLmgJKHJldmlzaW9uIDI4NjAyNCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cFN0cmluZ0l0ZXJhdG9yUHJvdG90eXBlLmgJKHdvcmtp
bmcgY29weSkKQEAgLTM5LDcgKzM5LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJc29TdWJzcGFj
ZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09f
U1VCU1BBQ0VfU0hBUkFCTEUoUmVnRXhwU3RyaW5nSXRlcmF0b3JQcm90b3R5cGUsIEJhc2UpOwot
ICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0u
cGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBSZWdFeHBTdHJpbmdJdGVy
YXRvclByb3RvdHlwZSogY3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9TY29wZWRBcmd1bWVudHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1Njb3BlZEFyZ3VtZW50cy5jcHAJKHJldmlzaW9uIDI4NjAyNCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Njb3BlZEFyZ3VtZW50cy5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTU1LDcgKzU1LDcgQEAgU2NvcGVkQXJndW1lbnRzKiBTY29wZWRBcmd1bWVudHM6
OmNyZWF0ZQogICAgIFdyaXRlQmFycmllcjxVbmtub3duPiogc3RvcmFnZSA9IG51bGxwdHI7CiAg
ICAgaWYgKHRvdGFsTGVuZ3RoID4gdGFibGUtPmxlbmd0aCgpKSB7CiAgICAgICAgIENoZWNrZWQ8
dW5zaWduZWQ+IG92ZXJmbG93TGVuZ3RoID0gdG90YWxMZW5ndGggLSB0YWJsZS0+bGVuZ3RoKCk7
Ci0gICAgICAgIHN0b3JhZ2UgPSBzdGF0aWNfY2FzdDxXcml0ZUJhcnJpZXI8VW5rbm93bj4qPih2
bS5qc1ZhbHVlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZS5hbGxvY2F0ZU5vblZpcnR1YWwodm0sIG92
ZXJmbG93TGVuZ3RoICogc2l6ZW9mKFdyaXRlQmFycmllcjxVbmtub3duPiksIG51bGxwdHIsIEFs
bG9jYXRpb25GYWlsdXJlTW9kZTo6QXNzZXJ0KSk7CisgICAgICAgIHN0b3JhZ2UgPSBzdGF0aWNf
Y2FzdDxXcml0ZUJhcnJpZXI8VW5rbm93bj4qPih2bS5qc1ZhbHVlR2lnYWNhZ2VBdXhpbGlhcnlT
cGFjZSgpLmFsbG9jYXRlTm9uVmlydHVhbCh2bSwgb3ZlcmZsb3dMZW5ndGggKiBzaXplb2YoV3Jp
dGVCYXJyaWVyPFVua25vd24+KSwgbnVsbHB0ciwgQWxsb2NhdGlvbkZhaWx1cmVNb2RlOjpBc3Nl
cnQpKTsKICAgICB9CiAKICAgICBTY29wZWRBcmd1bWVudHMqIHJlc3VsdCA9IG5ldyAoCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TY29wZWRBcmd1bWVudHMuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TY29wZWRBcmd1bWVudHMuaAko
cmV2aXNpb24gMjg2MDI0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2NvcGVk
QXJndW1lbnRzLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ3LDcgKzQ3LDcgQEAgcHVibGljOgogICAg
IHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAgICAg
c3RhdGljX2Fzc2VydCghQ2VsbFR5cGU6Om5lZWRzRGVzdHJ1Y3Rpb24sICIiKTsKLSAgICAgICAg
cmV0dXJuICZ2bS5zY29wZWRBcmd1bWVudHNTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5zY29w
ZWRBcmd1bWVudHNTcGFjZSgpOwogICAgIH0KIAogICAgIC8vIENyZWF0ZXMgYW4gYXJndW1lbnRz
IG9iamVjdCBidXQgbGVhdmVzIGl0IHVuaW5pdGlhbGl6ZWQuIFRoaXMgaXMgZGFuZ2Vyb3VzIGlm
IHdlIEdDIHJpZ2h0CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TZXRJdGVy
YXRvclByb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1NldEl0ZXJhdG9yUHJvdG90eXBlLmgJKHJldmlzaW9uIDI4NjAyNCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1NldEl0ZXJhdG9yUHJvdG90eXBlLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTM3LDcgKzM3LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vi
c3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BB
Q0VfU0hBUkFCTEUoU2V0SXRlcmF0b3JQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4g
JnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFj
ZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBTZXRJdGVyYXRvclByb3RvdHlwZSogY3JlYXRlKFZN
JiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUp
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TZXRQcm90b3R5cGUuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TZXRQcm90b3R5cGUuaAko
cmV2aXNpb24gMjg2MDI0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2V0UHJv
dG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM3LDcgKzM3LDcgQEAgcHVibGljOgogICAgIHN0
YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAgICAgU1RB
VElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoU2V0UHJvdG90eXBlLCBCYXNlKTsKLSAg
ICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBs
YWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVk
IFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBIYXNTdGF0aWNQcm9wZXJ0
eVRhYmxlOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2hhZG93UmVhbG1Q
cm90b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
aGFkb3dSZWFsbVByb3RvdHlwZS5oCShyZXZpc2lvbiAyODYwMjQpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9TaGFkb3dSZWFsbVByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBA
IC0zOSw3ICszOSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNl
Rm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NI
QVJBQkxFKFNoYWRvd1JlYWxtUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5w
bGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsK
ICAgICB9CiAKICAgICBzdGF0aWMgU2hhZG93UmVhbG1Qcm90b3R5cGUqIGNyZWF0ZShWTSYgdm0s
IFN0cnVjdHVyZSogc3RydWN0dXJlKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU3BhcnNlQXJyYXlWYWx1ZU1hcC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1NwYXJzZUFycmF5VmFsdWVNYXAuaAkocmV2aXNpb24gMjg2MDI0KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3BhcnNlQXJyYXlWYWx1ZU1hcC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMTAsNyArMTEwLDcgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVu
YW1lIENlbGxUeXBlLCBTdWJzcGFjZUFjY2Vzcz4KICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1
YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7Ci0gICAgICAgIHJldHVybiAmdm0uc3BhcnNlQXJyYXlW
YWx1ZU1hcFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnNwYXJzZUFycmF5VmFsdWVNYXBTcGFj
ZSgpOwogICAgIH0KICAgICAKICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUo
Vk0mLCBKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUgcHJvdG90eXBlKTsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ0l0ZXJhdG9yUHJvdG90eXBlLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nSXRlcmF0b3JQcm90b3R5
cGUuaAkocmV2aXNpb24gMjg2MDI0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
U3RyaW5nSXRlcmF0b3JQcm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzksNyArMzksNyBA
QCBwdWJsaWM6CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAg
ICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShTdHJpbmdJ
dGVyYXRvclByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RT
cGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAg
ICAgc3RhdGljIFN0cmluZ0l0ZXJhdG9yUHJvdG90eXBlKiBjcmVhdGUoVk0mIHZtLCBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ09iamVjdC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ09iamVjdC5oCShyZXZpc2lvbiAyODYw
MjQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdPYmplY3QuaAkod29y
a2luZyBjb3B5KQpAQCAtMzMsNyArMzMsNyBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5h
bWUsIFN1YnNwYWNlQWNjZXNzIG1vZGU+CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFj
ZUZvcihWTSYgdm0pCiAgICAgewotICAgICAgICByZXR1cm4gJnZtLnN0cmluZ09iamVjdFNwYWNl
OworICAgICAgICByZXR1cm4gJnZtLnN0cmluZ09iamVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAg
c3RhdGljIFN0cmluZ09iamVjdCogY3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUp
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAJKHJl
dmlzaW9uIDI4NjAyNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVy
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxLDggKzMxLDggQEAKICNpbmNsdWRlICJCdWlsdGlu
TmFtZXMuaCIKICNpbmNsdWRlICJEdW1wQ29udGV4dC5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMu
aCIKLSNpbmNsdWRlICJQcm9wZXJ0eU1hcEhhc2hUYWJsZS5oIgogI2luY2x1ZGUgIlByb3BlcnR5
TmFtZUFycmF5LmgiCisjaW5jbHVkZSAiUHJvcGVydHlUYWJsZS5oIgogI2luY2x1ZGUgPHd0Zi9D
b21tYVByaW50ZXIuaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNpbmNsdWRl
IDx3dGYvUmVmUHRyLmg+CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1
Y3R1cmUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1
Y3R1cmUuaAkocmV2aXNpb24gMjg2MDI0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU3RydWN0dXJlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEyOCw3ICsxMjgsNyBAQCBwdWJsaWM6
CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNzPgogICAgIHN0
YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKLSAgICAgICAgcmV0
dXJuICZ2bS5zdHJ1Y3R1cmVTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5zdHJ1Y3R1cmVTcGFj
ZSgpOwogICAgIH0KIAogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIGlzVmFsaWRQ
cm90b3R5cGUoSlNWYWx1ZSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
dHJ1Y3R1cmVDaGFpbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvU3RydWN0dXJlQ2hhaW4uY3BwCShyZXZpc2lvbiAyODYwMjQpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVDaGFpbi5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTQ4LDcgKzQ4LDcgQEAgU3RydWN0dXJlQ2hhaW4qIFN0cnVjdHVyZUNoYWluOjpjcmVhdGUoVgog
ICAgICAgICArK3NpemU7CiAgICAgKytzaXplOyAvLyBTZW50aW5lbCBudWxscHRyLgogICAgIHNp
emVfdCBieXRlcyA9IENoZWNrZWQ8c2l6ZV90PihzaXplKSAqIHNpemVvZihTdHJ1Y3R1cmVJRCk7
Ci0gICAgU3RydWN0dXJlSUQqIHZlY3RvciA9IHN0YXRpY19jYXN0PFN0cnVjdHVyZUlEKj4odm0u
anNWYWx1ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UuYWxsb2NhdGVOb25WaXJ0dWFsKHZtLCBieXRl
cywgbnVsbHB0ciwgQWxsb2NhdGlvbkZhaWx1cmVNb2RlOjpBc3NlcnQpKTsKKyAgICBTdHJ1Y3R1
cmVJRCogdmVjdG9yID0gc3RhdGljX2Nhc3Q8U3RydWN0dXJlSUQqPih2bS5qc1ZhbHVlR2lnYWNh
Z2VBdXhpbGlhcnlTcGFjZSgpLmFsbG9jYXRlTm9uVmlydHVhbCh2bSwgYnl0ZXMsIG51bGxwdHIs
IEFsbG9jYXRpb25GYWlsdXJlTW9kZTo6QXNzZXJ0KSk7CiAgICAgbWVtc2V0KHZlY3RvciwgMCwg
Ynl0ZXMpOwogICAgIFN0cnVjdHVyZUNoYWluKiBjaGFpbiA9IG5ldyAoTm90TnVsbCwgYWxsb2Nh
dGVDZWxsPFN0cnVjdHVyZUNoYWluPih2bSkpIFN0cnVjdHVyZUNoYWluKHZtLCB2bS5zdHJ1Y3R1
cmVDaGFpblN0cnVjdHVyZS5nZXQoKSwgdmVjdG9yKTsKICAgICBjaGFpbi0+ZmluaXNoQ3JlYXRp
b24odm0sIGhlYWQpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0
dXJlQ2hhaW4uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
dHJ1Y3R1cmVDaGFpbi5oCShyZXZpc2lvbiAyODYwMjQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9TdHJ1Y3R1cmVDaGFpbi5oCSh3b3JraW5nIGNvcHkpCkBAIC00Niw3ICs0Niw3
IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vic3BhY2VBY2Nl
c3M+CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewot
ICAgICAgICByZXR1cm4gJnZtLnN0cnVjdHVyZUNoYWluU3BhY2U7CisgICAgICAgIHJldHVybiAm
dm0uc3RydWN0dXJlQ2hhaW5TcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBTdHJ1Y3R1cmVD
aGFpbiogY3JlYXRlKFZNJiwgSlNPYmplY3QqKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1N0cnVjdHVyZUlubGluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVJbmxpbmVzLmgJKHJldmlzaW9uIDI4NjAyNCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUlubGluZXMuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMjksNyArMjksNyBAQAogI2luY2x1ZGUgIkpTQXJyYXlCdWZmZXJWaWV3Lmgi
CiAjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKICNpbmNsdWRlICJKU0dsb2JhbE9iamVj
dC5oIgotI2luY2x1ZGUgIlByb3BlcnR5TWFwSGFzaFRhYmxlLmgiCisjaW5jbHVkZSAiUHJvcGVy
dHlUYWJsZS5oIgogI2luY2x1ZGUgIlN0cnVjdHVyZS5oIgogI2luY2x1ZGUgIlN0cnVjdHVyZUNo
YWluLmgiCiAjaW5jbHVkZSAiU3RydWN0dXJlUmFyZURhdGFJbmxpbmVzLmgiCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVSYXJlRGF0YS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZVJhcmVEYXRhLmgJKHJl
dmlzaW9uIDI4NjAyNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVy
ZVJhcmVEYXRhLmgJKHdvcmtpbmcgY29weSkKQEAgLTY2LDcgKzY2LDcgQEAgcHVibGljOgogICAg
IHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlLCBTdWJzcGFjZUFjY2Vzcz4KICAgICBzdGF0aWMg
SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7Ci0gICAgICAgIHJldHVybiAm
dm0uc3RydWN0dXJlUmFyZURhdGFTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5zdHJ1Y3R1cmVS
YXJlRGF0YVNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIFN0cnVjdHVyZVJhcmVEYXRhKiBj
cmVhdGUoVk0mLCBTdHJ1Y3R1cmUqKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1N5bWJvbFByb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1N5bWJvbFByb3RvdHlwZS5oCShyZXZpc2lvbiAyODYwMjQpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xQcm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpA
QCAtNDEsNyArNDEsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFj
ZUZvcihWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9T
SEFSQUJMRShTeW1ib2xQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWlu
T2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAg
IH0KIAogICAgIHN0YXRpYyBTeW1ib2xQcm90b3R5cGUqIGNyZWF0ZShWTSYgdm0sIEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlKQpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sVGFibGUuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xUYWJsZS5oCShyZXZpc2lvbiAyODYwMjQp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xUYWJsZS5oCSh3b3JraW5n
IGNvcHkpCkBAIC00NTYsNyArNDU2LDcgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1l
IENlbGxUeXBlLCBTdWJzcGFjZUFjY2Vzcz4KICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNw
YWNlRm9yKFZNJiB2bSkKICAgICB7Ci0gICAgICAgIHJldHVybiAmdm0uc3ltYm9sVGFibGVTcGFj
ZTsKKyAgICAgICAgcmV0dXJuICZ2bS5zeW1ib2xUYWJsZVNwYWNlKCk7CiAgICAgfQogCiAgICAg
c3RhdGljIFN5bWJvbFRhYmxlKiBjcmVhdGUoVk0mIHZtKQpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxDYWxlbmRhclByb3RvdHlwZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsQ2FsZW5kYXJQcm90b3R5cGUu
aAkocmV2aXNpb24gMjg2MDI0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVt
cG9yYWxDYWxlbmRhclByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw3ICszOCw3IEBA
IHB1YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAg
ICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKFRlbXBvcmFs
Q2FsZW5kYXJQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0
U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAog
ICAgIHN0YXRpYyBUZW1wb3JhbENhbGVuZGFyUHJvdG90eXBlKiBjcmVhdGUoVk0mLCBKU0dsb2Jh
bE9iamVjdCosIFN0cnVjdHVyZSopOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvVGVtcG9yYWxEdXJhdGlvblByb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsRHVyYXRpb25Qcm90b3R5cGUuaAkocmV2aXNpb24g
Mjg2MDI0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxEdXJhdGlv
blByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHly
aWdodCAoQykgMjAyMSBTb255IEludGVyYWN0aXZlIEVudGVydGFpbm1lbnQgSW5jLgorICogQ29w
eXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzgsNyArMzksNyBAQCBwdWJsaWM6CiAgICAgc3Rh
dGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFU
SUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShUZW1wb3JhbER1cmF0aW9uUHJvdG90eXBl
LCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICBy
ZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgVGVtcG9y
YWxEdXJhdGlvblByb3RvdHlwZSogY3JlYXRlKFZNJiwgU3RydWN0dXJlKik7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbEluc3RhbnRQcm90b3R5cGUuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbEluc3RhbnRQ
cm90b3R5cGUuaAkocmV2aXNpb24gMjg2MDI0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvVGVtcG9yYWxJbnN0YW50UHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSAr
MSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDIxIElnYWxpYSBTLkwuCisgKiBDb3B5cmln
aHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCkBAIC0zOCw3ICszOSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMg
SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19B
U1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKFRlbXBvcmFsSW5zdGFudFByb3RvdHlwZSwgQmFz
ZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJu
ICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIFRlbXBvcmFsSW5z
dGFudFByb3RvdHlwZSogY3JlYXRlKFZNJiwgU3RydWN0dXJlKik7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbE5vdy5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsTm93LmgJKHJldmlzaW9uIDI4NjAyNCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsTm93LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTEsNSArMSw2IEBACiAvKgogICogIENvcHlyaWdodCAoQykgMjAyMSBJZ2FsaWEsIFMu
TC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqICBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0
d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiAgbW9kaWZ5IGl0IHVuZGVy
IHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwpAQCAtMzIsNyArMzMs
NyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0p
CiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShUZW1w
b3JhbE5vdywgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAg
ICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGlj
IFRlbXBvcmFsTm93KiBjcmVhdGUoVk0mLCBTdHJ1Y3R1cmUqKTsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxPYmplY3QuaAkocmV2aXNpb24gMjg2MDI0
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxPYmplY3QuaAkod29y
a2luZyBjb3B5KQpAQCAtMSw2ICsxLDcgQEAKIC8qCiAgKiAgQ29weXJpZ2h0IChDKSAyMDIxIEln
YWxpYSwgUy5MLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogIENvcHlyaWdodCAoQykgMjAyMSBT
b255IEludGVyYWN0aXZlIEVudGVydGFpbm1lbnQgSW5jLgorICogIENvcHlyaWdodCAoQykgMjAy
MSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogIFRoaXMgbGlicmFyeSBp
cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqICBtb2Rp
ZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCkBA
IC02NCw3ICs2NSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNl
Rm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NI
QVJBQkxFKFRlbXBvcmFsT2JqZWN0LCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9i
amVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9
CiAKICAgICBzdGF0aWMgVGVtcG9yYWxPYmplY3QqIGNyZWF0ZShWTSYsIFN0cnVjdHVyZSopOwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxQbGFpblRpbWVQcm90
b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1w
b3JhbFBsYWluVGltZVByb3RvdHlwZS5oCShyZXZpc2lvbiAyODYwMjQpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbFBsYWluVGltZVByb3RvdHlwZS5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJ
bmMuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zOCw3ICszOCw3IEBAIHB1Ymxp
YzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAg
ICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKFRlbXBvcmFsUGxhaW5U
aW1lUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNl
OworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBz
dGF0aWMgVGVtcG9yYWxQbGFpblRpbWVQcm90b3R5cGUqIGNyZWF0ZShWTSYsIEpTR2xvYmFsT2Jq
ZWN0KiwgU3RydWN0dXJlKik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9U
ZW1wb3JhbFRpbWVab25lUHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxUaW1lWm9uZVByb3RvdHlwZS5oCShyZXZpc2lvbiAyODYw
MjQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbFRpbWVab25lUHJv
dG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM4LDcgKzM4LDcgQEAgcHVibGljOgogICAgIHN0
YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAgICAgU1RB
VElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoVGVtcG9yYWxUaW1lWm9uZVByb3RvdHlw
ZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAg
cmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIFRlbXBv
cmFsVGltZVpvbmVQcm90b3R5cGUqIGNyZWF0ZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0
dXJlKik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCShyZXZpc2lvbiAy
ODYwMjQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTMyLDIxICszMiwxNSBAQAogI2luY2x1ZGUgIkFjY2Vzc0Nhc2UuaCIKICNpbmNs
dWRlICJBZ2dyZWdhdGVFcnJvci5oIgogI2luY2x1ZGUgIkFyZ0xpc3QuaCIKLSNpbmNsdWRlICJC
aWdJbnRPYmplY3QuaCIKLSNpbmNsdWRlICJCb29sZWFuT2JqZWN0LmgiCi0jaW5jbHVkZSAiQnJh
bmRlZFN0cnVjdHVyZS5oIgogI2luY2x1ZGUgIkJ1aWx0aW5FeGVjdXRhYmxlcy5oIgogI2luY2x1
ZGUgIkJ5dGVjb2RlSW50cmluc2ljUmVnaXN0cnkuaCIKICNpbmNsdWRlICJDaGVja3BvaW50T1NS
RXhpdFNpZGVTdGF0ZS5oIgotI2luY2x1ZGUgIkNsb25lZEFyZ3VtZW50cy5oIgogI2luY2x1ZGUg
IkNvZGVCbG9jay5oIgogI2luY2x1ZGUgIkNvZGVDYWNoZS5oIgogI2luY2x1ZGUgIkNvbW1vbklk
ZW50aWZpZXJzLmgiCiAjaW5jbHVkZSAiQ29udHJvbEZsb3dQcm9maWxlci5oIgogI2luY2x1ZGUg
IkN1c3RvbUdldHRlclNldHRlci5oIgogI2luY2x1ZGUgIkRPTUF0dHJpYnV0ZUdldHRlclNldHRl
ci5oIgotI2luY2x1ZGUgIkRhdGVJbnN0YW5jZS5oIgotI2luY2x1ZGUgIkRlYnVnZ2VyU2NvcGUu
aCIKICNpbmNsdWRlICJEZWZlcnJlZFdvcmtUaW1lci5oIgogI2luY2x1ZGUgIkRpc2Fzc2VtYmxl
ci5oIgogI2luY2x1ZGUgIkRvdWJsZVByZWRpY3Rpb25GdXp6ZXJBZ2VudC5oIgpAQCAtNTUsNyAr
NDksNiBAQAogI2luY2x1ZGUgIkV4Y2VwdGlvbi5oIgogI2luY2x1ZGUgIkV4ZWN1dGFibGVUb0Nv
ZGVCbG9ja0VkZ2UuaCIKICNpbmNsdWRlICJGVExUaHVua3MuaCIKLSNpbmNsdWRlICJGYXN0TWFs
bG9jQWxpZ25lZE1lbW9yeUFsbG9jYXRvci5oIgogI2luY2x1ZGUgIkZpbGVCYXNlZEZ1enplckFn
ZW50LmgiCiAjaW5jbHVkZSAiRnVuY3Rpb25Db2RlQmxvY2suaCIKICNpbmNsdWRlICJGdW5jdGlv
bkV4ZWN1dGFibGUuaCIKQEAgLTY2LDc3ICs1OSwyNSBAQAogI2luY2x1ZGUgIkhlYXBQcm9maWxl
ci5oIgogI2luY2x1ZGUgIkludGVycHJldGVyLmgiCiAjaW5jbHVkZSAiSW50bENhY2hlLmgiCi0j
aW5jbHVkZSAiSW50bENvbGxhdG9yLmgiCi0jaW5jbHVkZSAiSW50bERhdGVUaW1lRm9ybWF0Lmgi
Ci0jaW5jbHVkZSAiSW50bERpc3BsYXlOYW1lcy5oIgotI2luY2x1ZGUgIkludGxMaXN0Rm9ybWF0
LmgiCi0jaW5jbHVkZSAiSW50bExvY2FsZS5oIgotI2luY2x1ZGUgIkludGxOdW1iZXJGb3JtYXQu
aCIKLSNpbmNsdWRlICJJbnRsUGx1cmFsUnVsZXMuaCIKLSNpbmNsdWRlICJJbnRsUmVsYXRpdmVU
aW1lRm9ybWF0LmgiCi0jaW5jbHVkZSAiSW50bFNlZ21lbnRJdGVyYXRvci5oIgotI2luY2x1ZGUg
IkludGxTZWdtZW50ZXIuaCIKLSNpbmNsdWRlICJJbnRsU2VnbWVudHMuaCIKLSNpbmNsdWRlICJJ
c29IZWFwQ2VsbFR5cGUuaCIKLSNpbmNsdWRlICJJc29JbmxpbmVkSGVhcENlbGxUeXBlLmgiCiAj
aW5jbHVkZSAiSklUQ29kZS5oIgogI2luY2x1ZGUgIkpJVE9wZXJhdGlvbkxpc3QuaCIKICNpbmNs
dWRlICJKSVRTaXplU3RhdGlzdGljcy5oIgogI2luY2x1ZGUgIkpJVFRodW5rcy5oIgogI2luY2x1
ZGUgIkpJVFdvcmtsaXN0LmgiCi0jaW5jbHVkZSAiSlNBUElHbG9iYWxPYmplY3QuaCIKICNpbmNs
dWRlICJKU0FQSVZhbHVlV3JhcHBlci5oIgotI2luY2x1ZGUgIkpTQVBJV3JhcHBlck9iamVjdC5o
IgotI2luY2x1ZGUgIkpTQXJyYXkuaCIKLSNpbmNsdWRlICJKU0FycmF5QnVmZmVyLmgiCi0jaW5j
bHVkZSAiSlNBcnJheUl0ZXJhdG9yLmgiCi0jaW5jbHVkZSAiSlNBc3luY0dlbmVyYXRvci5oIgog
I2luY2x1ZGUgIkpTQmlnSW50LmgiCi0jaW5jbHVkZSAiSlNCb3VuZEZ1bmN0aW9uLmgiCi0jaW5j
bHVkZSAiSlNDYWxsYmFja0NvbnN0cnVjdG9yLmgiCi0jaW5jbHVkZSAiSlNDYWxsYmFja0Z1bmN0
aW9uLmgiCi0jaW5jbHVkZSAiSlNDYWxsYmFja09iamVjdC5oIgotI2luY2x1ZGUgIkpTQ2FsbGVl
LmgiCi0jaW5jbHVkZSAiSlNDdXN0b21HZXR0ZXJGdW5jdGlvbi5oIgotI2luY2x1ZGUgIkpTQ3Vz
dG9tU2V0dGVyRnVuY3Rpb24uaCIKLSNpbmNsdWRlICJKU0Rlc3RydWN0aWJsZU9iamVjdEhlYXBD
ZWxsVHlwZS5oIgotI2luY2x1ZGUgIkpTRmluYWxpemF0aW9uUmVnaXN0cnkuaCIKLSNpbmNsdWRl
ICJKU0Z1bmN0aW9uLmgiCi0jaW5jbHVkZSAiSlNHbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQuaCIK
ICNpbmNsdWRlICJKU0dsb2JhbE9iamVjdC5oIgogI2luY2x1ZGUgIkpTSW1tdXRhYmxlQnV0dGVy
Zmx5LmgiCi0jaW5jbHVkZSAiSlNJbmplY3RlZFNjcmlwdEhvc3QuaCIKLSNpbmNsdWRlICJKU0ph
dmFTY3JpcHRDYWxsRnJhbWUuaCIKICNpbmNsdWRlICJKU0xvY2suaCIKICNpbmNsdWRlICJKU01h
cC5oIgotI2luY2x1ZGUgIkpTTWFwSXRlcmF0b3IuaCIKLSNpbmNsdWRlICJKU01vZHVsZU5hbWVz
cGFjZU9iamVjdC5oIgotI2luY2x1ZGUgIkpTTW9kdWxlUmVjb3JkLmgiCi0jaW5jbHVkZSAiSlNO
YXRpdmVTdGRGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTUHJvbWlzZS5oIgogI2luY2x1ZGUgIkpT
UHJvcGVydHlOYW1lRW51bWVyYXRvci5oIgotI2luY2x1ZGUgIkpTUHJveHkuaCIKICNpbmNsdWRl
ICJKU1NjcmlwdEZldGNoUGFyYW1ldGVycy5oIgogI2luY2x1ZGUgIkpTU2NyaXB0RmV0Y2hlci5o
IgogI2luY2x1ZGUgIkpTU2V0LmgiCi0jaW5jbHVkZSAiSlNTZXRJdGVyYXRvci5oIgogI2luY2x1
ZGUgIkpTU291cmNlQ29kZS5oIgotI2luY2x1ZGUgIkpTU3RyaW5nSXRlcmF0b3IuaCIKICNpbmNs
dWRlICJKU1RlbXBsYXRlT2JqZWN0RGVzY3JpcHRvci5oIgotI2luY2x1ZGUgIkpTVG9XYXNtSUND
YWxsZWUuaCIKLSNpbmNsdWRlICJKU1R5cGVkQXJyYXlzLmgiCi0jaW5jbHVkZSAiSlNXZWFrTWFw
LmgiCi0jaW5jbHVkZSAiSlNXZWFrT2JqZWN0UmVmLmgiCi0jaW5jbHVkZSAiSlNXZWFrU2V0Lmgi
CiAjaW5jbHVkZSAiSlNXZWJBc3NlbWJseUNvZGVCbG9jay5oIgotI2luY2x1ZGUgIkpTV2ViQXNz
ZW1ibHlFeGNlcHRpb24uaCIKLSNpbmNsdWRlICJKU1dlYkFzc2VtYmx5R2xvYmFsLmgiCi0jaW5j
bHVkZSAiSlNXZWJBc3NlbWJseUluc3RhbmNlLmgiCi0jaW5jbHVkZSAiSlNXZWJBc3NlbWJseU1l
bW9yeS5oIgotI2luY2x1ZGUgIkpTV2ViQXNzZW1ibHlNb2R1bGUuaCIKLSNpbmNsdWRlICJKU1dl
YkFzc2VtYmx5VGFibGUuaCIKLSNpbmNsdWRlICJKU1dlYkFzc2VtYmx5VGFnLmgiCi0jaW5jbHVk
ZSAiSlNXaXRoU2NvcGUuaCIKICNpbmNsdWRlICJMTEludERhdGEuaCIKICNpbmNsdWRlICJMTElu
dEV4Y2VwdGlvbnMuaCIKICNpbmNsdWRlICJNaW5pbXVtUmVzZXJ2ZWRab25lU2l6ZS5oIgpAQCAt
MTQ5LDI4ICs5MCwxNyBAQAogI2luY2x1ZGUgIlByb2ZpbGVyRGF0YWJhc2UuaCIKICNpbmNsdWRl
ICJQcm9ncmFtQ29kZUJsb2NrLmgiCiAjaW5jbHVkZSAiUHJvZ3JhbUV4ZWN1dGFibGUuaCIKLSNp
bmNsdWRlICJQcm9wZXJ0eU1hcEhhc2hUYWJsZS5oIgotI2luY2x1ZGUgIlByb3h5UmV2b2tlLmgi
CisjaW5jbHVkZSAiUHJvcGVydHlUYWJsZS5oIgogI2luY2x1ZGUgIlJhbmRvbWl6aW5nRnV6emVy
QWdlbnQuaCIKICNpbmNsdWRlICJSZWdFeHBDYWNoZS5oIgotI2luY2x1ZGUgIlJlZ0V4cE9iamVj
dC5oIgogI2luY2x1ZGUgIlNhbXBsaW5nUHJvZmlsZXIuaCIKICNpbmNsdWRlICJTY29wZWRBcmd1
bWVudHMuaCIKICNpbmNsdWRlICJTaGFkb3dDaGlja2VuLmgiCi0jaW5jbHVkZSAiU2hhZG93UmVh
bG1PYmplY3QuaCIKICNpbmNsdWRlICJTaW1wbGVUeXBlZEFycmF5Q29udHJvbGxlci5oIgogI2lu
Y2x1ZGUgIlNvdXJjZVByb3ZpZGVyQ2FjaGUuaCIKLSNpbmNsdWRlICJTdHJpY3RFdmFsQWN0aXZh
dGlvbi5oIgotI2luY2x1ZGUgIlN0cmluZ09iamVjdC5oIgogI2luY2x1ZGUgIlN0cm9uZ0lubGlu
ZXMuaCIKICNpbmNsdWRlICJTdHJ1Y3R1cmVDaGFpbi5oIgogI2luY2x1ZGUgIlN0cnVjdHVyZUlu
bGluZXMuaCIKLSNpbmNsdWRlICJTeW1ib2xPYmplY3QuaCIKLSNpbmNsdWRlICJUZW1wb3JhbENh
bGVuZGFyLmgiCi0jaW5jbHVkZSAiVGVtcG9yYWxEdXJhdGlvbi5oIgotI2luY2x1ZGUgIlRlbXBv
cmFsSW5zdGFudC5oIgotI2luY2x1ZGUgIlRlbXBvcmFsUGxhaW5UaW1lLmgiCi0jaW5jbHVkZSAi
VGVtcG9yYWxUaW1lWm9uZS5oIgogI2luY2x1ZGUgIlRlc3RSdW5uZXJVdGlscy5oIgogI2luY2x1
ZGUgIlRodW5rR2VuZXJhdG9ycy5oIgogI2luY2x1ZGUgIlR5cGVQcm9maWxlci5oIgpAQCAtMTgy
LDkgKzExMiw2IEBACiAjaW5jbHVkZSAiV2FzbVdvcmtsaXN0LmgiCiAjaW5jbHVkZSAiV2F0Y2hk
b2cuaCIKICNpbmNsdWRlICJXZWFrR0NNYXBJbmxpbmVzLmgiCi0jaW5jbHVkZSAiV2ViQXNzZW1i
bHlGdW5jdGlvbi5oIgotI2luY2x1ZGUgIldlYkFzc2VtYmx5TW9kdWxlUmVjb3JkLmgiCi0jaW5j
bHVkZSAiV2ViQXNzZW1ibHlXcmFwcGVyRnVuY3Rpb24uaCIKICNpbmNsdWRlICJXaWRlbmluZ051
bWJlclByZWRpY3Rpb25GdXp6ZXJBZ2VudC5oIgogI2luY2x1ZGUgPHd0Zi9Qcm9jZXNzSUQuaD4K
ICNpbmNsdWRlIDx3dGYvUmVhZFdyaXRlTG9jay5oPgpAQCAtMjA2LDEwICsxMzMsNiBAQAogI2lu
Y2x1ZGUgIlJlZ0V4cC5oIgogI2VuZGlmCiAKLSNpZiBKU0NfT0JKQ19BUElfRU5BQkxFRAotI2lu
Y2x1ZGUgIk9iakNDYWxsYmFja0Z1bmN0aW9uLmgiCi0jZW5kaWYKLQogI2lmZGVmIEpTQ19HTElC
X0FQSV9FTkFCTEVECiAjaW5jbHVkZSAiSlNBUElXcmFwcGVyR2xvYmFsT2JqZWN0LmgiCiAjaW5j
bHVkZSAiSlNDQ2FsbGJhY2tGdW5jdGlvbi5oIgpAQCAtMjkwLDEwOSArMjEzLDYgQEAgVk06OlZN
KFZNVHlwZSB2bVR5cGUsIEhlYXBUeXBlIGhlYXBUeXBlLAogICAgICwgbV9yYW5kb20oT3B0aW9u
czo6c2VlZE9mVk1SYW5kb21Gb3JGdXp6ZXIoKSA/IE9wdGlvbnM6OnNlZWRPZlZNUmFuZG9tRm9y
RnV6emVyKCkgOiBjcnlwdG9ncmFwaGljYWxseVJhbmRvbU51bWJlcigpKQogICAgICwgbV9pbnRl
Z3JpdHlSYW5kb20oKnRoaXMpCiAgICAgLCBoZWFwKCp0aGlzLCBoZWFwVHlwZSkKLSAgICAsIGZh
c3RNYWxsb2NBbGxvY2F0b3IobWFrZVVuaXF1ZTxGYXN0TWFsbG9jQWxpZ25lZE1lbW9yeUFsbG9j
YXRvcj4oKSkKLSAgICAsIHByaW1pdGl2ZUdpZ2FjYWdlQWxsb2NhdG9yKG1ha2VVbmlxdWU8R2ln
YWNhZ2VBbGlnbmVkTWVtb3J5QWxsb2NhdG9yPihHaWdhY2FnZTo6UHJpbWl0aXZlKSkKLSAgICAs
IGpzVmFsdWVHaWdhY2FnZUFsbG9jYXRvcihtYWtlVW5pcXVlPEdpZ2FjYWdlQWxpZ25lZE1lbW9y
eUFsbG9jYXRvcj4oR2lnYWNhZ2U6OkpTVmFsdWUpKQotICAgICwgYXV4aWxpYXJ5SGVhcENlbGxU
eXBlKG1ha2VVbmlxdWU8SGVhcENlbGxUeXBlPihDZWxsQXR0cmlidXRlcyhEb2VzTm90TmVlZERl
c3RydWN0aW9uLCBIZWFwQ2VsbDo6QXV4aWxpYXJ5KSkpCi0gICAgLCBpbW11dGFibGVCdXR0ZXJm
bHlIZWFwQ2VsbFR5cGUobWFrZVVuaXF1ZTxIZWFwQ2VsbFR5cGU+KENlbGxBdHRyaWJ1dGVzKERv
ZXNOb3ROZWVkRGVzdHJ1Y3Rpb24sIEhlYXBDZWxsOjpKU0NlbGxXaXRoSW5kZXhpbmdIZWFkZXIp
KSkKLSAgICAsIGNlbGxIZWFwQ2VsbFR5cGUobWFrZVVuaXF1ZTxIZWFwQ2VsbFR5cGU+KENlbGxB
dHRyaWJ1dGVzKERvZXNOb3ROZWVkRGVzdHJ1Y3Rpb24sIEhlYXBDZWxsOjpKU0NlbGwpKSkKLSAg
ICAsIGRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUobWFrZVVuaXF1ZTxIZWFwQ2VsbFR5cGU+
KENlbGxBdHRyaWJ1dGVzKE5lZWRzRGVzdHJ1Y3Rpb24sIEhlYXBDZWxsOjpKU0NlbGwpKSkKLSAg
ICAsIGFwaUdsb2JhbE9iamVjdEhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OmNyZWF0ZTxK
U0FQSUdsb2JhbE9iamVjdD4oKSkKLSAgICAsIGNhbGxiYWNrQ29uc3RydWN0b3JIZWFwQ2VsbFR5
cGUoSXNvSGVhcENlbGxUeXBlOjpjcmVhdGU8SlNDYWxsYmFja0NvbnN0cnVjdG9yPigpKQotICAg
ICwgY2FsbGJhY2tHbG9iYWxPYmplY3RIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpjcmVh
dGU8SlNDYWxsYmFja09iamVjdDxKU0dsb2JhbE9iamVjdD4+KCkpCi0gICAgLCBjYWxsYmFja09i
amVjdEhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OmNyZWF0ZTxKU0NhbGxiYWNrT2JqZWN0
PEpTTm9uRmluYWxPYmplY3Q+PigpKQotICAgICwgY3VzdG9tR2V0dGVyRnVuY3Rpb25IZWFwQ2Vs
bFR5cGUoSXNvSGVhcENlbGxUeXBlOjpjcmVhdGU8SlNDdXN0b21HZXR0ZXJGdW5jdGlvbj4oKSkK
LSAgICAsIGN1c3RvbVNldHRlckZ1bmN0aW9uSGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6
Y3JlYXRlPEpTQ3VzdG9tU2V0dGVyRnVuY3Rpb24+KCkpCi0gICAgLCBkYXRlSW5zdGFuY2VIZWFw
Q2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpjcmVhdGU8RGF0ZUluc3RhbmNlPigpKQotICAgICwg
ZXJyb3JJbnN0YW5jZUhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OmNyZWF0ZTxFcnJvcklu
c3RhbmNlPigpKQotICAgICwgZmluYWxpemF0aW9uUmVnaXN0cnlDZWxsVHlwZShJc29IZWFwQ2Vs
bFR5cGU6OmNyZWF0ZTxKU0ZpbmFsaXphdGlvblJlZ2lzdHJ5PigpKQotICAgICwgZ2xvYmFsTGV4
aWNhbEVudmlyb25tZW50SGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6Y3JlYXRlPEpTR2xv
YmFsTGV4aWNhbEVudmlyb25tZW50PigpKQotICAgICwgZ2xvYmFsT2JqZWN0SGVhcENlbGxUeXBl
KElzb0hlYXBDZWxsVHlwZTo6Y3JlYXRlPEpTR2xvYmFsT2JqZWN0PigpKQotICAgICwgaW5qZWN0
ZWRTY3JpcHRIb3N0U3BhY2VIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpjcmVhdGU8SW5z
cGVjdG9yOjpKU0luamVjdGVkU2NyaXB0SG9zdD4oKSkKLSAgICAsIGphdmFTY3JpcHRDYWxsRnJh
bWVIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpjcmVhdGU8SW5zcGVjdG9yOjpKU0phdmFT
Y3JpcHRDYWxsRnJhbWU+KCkpCi0gICAgLCBqc01vZHVsZVJlY29yZEhlYXBDZWxsVHlwZShJc29I
ZWFwQ2VsbFR5cGU6OmNyZWF0ZTxKU01vZHVsZVJlY29yZD4oKSkKLSAgICAsIG1vZHVsZU5hbWVz
cGFjZU9iamVjdEhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OmNyZWF0ZTxKU01vZHVsZU5h
bWVzcGFjZU9iamVjdD4oKSkKLSAgICAsIG5hdGl2ZVN0ZEZ1bmN0aW9uSGVhcENlbGxUeXBlKElz
b0hlYXBDZWxsVHlwZTo6Y3JlYXRlPEpTTmF0aXZlU3RkRnVuY3Rpb24+KCkpCi0gICAgLCBzdHJp
bmdIZWFwQ2VsbFR5cGUobWFrZVVuaXF1ZTxJc29JbmxpbmVkSGVhcENlbGxUeXBlPEpTU3RyaW5n
Pj4oKSkKLSAgICAsIHdlYWtNYXBIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpjcmVhdGU8
SlNXZWFrTWFwPigpKQotICAgICwgd2Vha1NldEhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6
OmNyZWF0ZTxKU1dlYWtTZXQ+KCkpCi0gICAgLCBkZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5
cGUobWFrZVVuaXF1ZTxKU0Rlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZT4oKSkKLSNpZiBK
U0NfT0JKQ19BUElfRU5BQkxFRAotICAgICwgYXBpV3JhcHBlck9iamVjdEhlYXBDZWxsVHlwZShJ
c29IZWFwQ2VsbFR5cGU6OmNyZWF0ZTxKU0NhbGxiYWNrT2JqZWN0PEpTQVBJV3JhcHBlck9iamVj
dD4+KCkpCi0gICAgLCBvYmpDQ2FsbGJhY2tGdW5jdGlvbkhlYXBDZWxsVHlwZShJc29IZWFwQ2Vs
bFR5cGU6OmNyZWF0ZTxPYmpDQ2FsbGJhY2tGdW5jdGlvbj4oKSkKLSNlbmRpZgotI2lmZGVmIEpT
Q19HTElCX0FQSV9FTkFCTEVECi0gICAgLCBhcGlXcmFwcGVyT2JqZWN0SGVhcENlbGxUeXBlKElz
b0hlYXBDZWxsVHlwZTo6Y3JlYXRlPEpTQ2FsbGJhY2tPYmplY3Q8SlNBUElXcmFwcGVyT2JqZWN0
Pj4oKSkKLSAgICAsIGNhbGxiYWNrQVBJV3JhcHBlckdsb2JhbE9iamVjdEhlYXBDZWxsVHlwZShJ
c29IZWFwQ2VsbFR5cGU6OmNyZWF0ZTxKU0NhbGxiYWNrT2JqZWN0PEpTQVBJV3JhcHBlckdsb2Jh
bE9iamVjdD4+KCkpCi0gICAgLCBqc2NDYWxsYmFja0Z1bmN0aW9uSGVhcENlbGxUeXBlKElzb0hl
YXBDZWxsVHlwZTo6Y3JlYXRlPEpTQ0NhbGxiYWNrRnVuY3Rpb24+KCkpCi0jZW5kaWYKLSAgICAs
IGludGxDb2xsYXRvckhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OmNyZWF0ZTxJbnRsQ29s
bGF0b3I+KCkpCi0gICAgLCBpbnRsRGF0ZVRpbWVGb3JtYXRIZWFwQ2VsbFR5cGUoSXNvSGVhcENl
bGxUeXBlOjpjcmVhdGU8SW50bERhdGVUaW1lRm9ybWF0PigpKQotICAgICwgaW50bERpc3BsYXlO
YW1lc0hlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OmNyZWF0ZTxJbnRsRGlzcGxheU5hbWVz
PigpKQotICAgICwgaW50bExpc3RGb3JtYXRIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpj
cmVhdGU8SW50bExpc3RGb3JtYXQ+KCkpCi0gICAgLCBpbnRsTG9jYWxlSGVhcENlbGxUeXBlKElz
b0hlYXBDZWxsVHlwZTo6Y3JlYXRlPEludGxMb2NhbGU+KCkpCi0gICAgLCBpbnRsTnVtYmVyRm9y
bWF0SGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6Y3JlYXRlPEludGxOdW1iZXJGb3JtYXQ+
KCkpCi0gICAgLCBpbnRsUGx1cmFsUnVsZXNIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpj
cmVhdGU8SW50bFBsdXJhbFJ1bGVzPigpKQotICAgICwgaW50bFJlbGF0aXZlVGltZUZvcm1hdEhl
YXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OmNyZWF0ZTxJbnRsUmVsYXRpdmVUaW1lRm9ybWF0
PigpKQotICAgICwgaW50bFNlZ21lbnRJdGVyYXRvckhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5
cGU6OmNyZWF0ZTxJbnRsU2VnbWVudEl0ZXJhdG9yPigpKQotICAgICwgaW50bFNlZ21lbnRlckhl
YXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OmNyZWF0ZTxJbnRsU2VnbWVudGVyPigpKQotICAg
ICwgaW50bFNlZ21lbnRzSGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6Y3JlYXRlPEludGxT
ZWdtZW50cz4oKSkKLSNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCi0gICAgLCB3ZWJBc3NlbWJseUNv
ZGVCbG9ja0hlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OmNyZWF0ZTxKU1dlYkFzc2VtYmx5
Q29kZUJsb2NrPigpKQotICAgICwgd2ViQXNzZW1ibHlFeGNlcHRpb25IZWFwQ2VsbFR5cGUoSXNv
SGVhcENlbGxUeXBlOjpjcmVhdGU8SlNXZWJBc3NlbWJseUV4Y2VwdGlvbj4oKSkKLSAgICAsIHdl
YkFzc2VtYmx5RnVuY3Rpb25IZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpjcmVhdGU8V2Vi
QXNzZW1ibHlGdW5jdGlvbj4oKSkKLSAgICAsIHdlYkFzc2VtYmx5R2xvYmFsSGVhcENlbGxUeXBl
KElzb0hlYXBDZWxsVHlwZTo6Y3JlYXRlPEpTV2ViQXNzZW1ibHlHbG9iYWw+KCkpCi0gICAgLCB3
ZWJBc3NlbWJseUluc3RhbmNlSGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6Y3JlYXRlPEpT
V2ViQXNzZW1ibHlJbnN0YW5jZT4oKSkKLSAgICAsIHdlYkFzc2VtYmx5TWVtb3J5SGVhcENlbGxU
eXBlKElzb0hlYXBDZWxsVHlwZTo6Y3JlYXRlPEpTV2ViQXNzZW1ibHlNZW1vcnk+KCkpCi0gICAg
LCB3ZWJBc3NlbWJseU1vZHVsZUhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OmNyZWF0ZTxK
U1dlYkFzc2VtYmx5TW9kdWxlPigpKQotICAgICwgd2ViQXNzZW1ibHlNb2R1bGVSZWNvcmRIZWFw
Q2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpjcmVhdGU8V2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQ+
KCkpCi0gICAgLCB3ZWJBc3NlbWJseVRhYmxlSGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6
Y3JlYXRlPEpTV2ViQXNzZW1ibHlUYWJsZT4oKSkKLSAgICAsIHdlYkFzc2VtYmx5VGFnSGVhcENl
bGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6Y3JlYXRlPEpTV2ViQXNzZW1ibHlUYWc+KCkpCi0jZW5k
aWYKLSAgICAsIHByaW1pdGl2ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UoIlByaW1pdGl2ZSBHaWdh
Y2FnZSBBdXhpbGlhcnkiLCBoZWFwLCBhdXhpbGlhcnlIZWFwQ2VsbFR5cGUuZ2V0KCksIHByaW1p
dGl2ZUdpZ2FjYWdlQWxsb2NhdG9yLmdldCgpKSAvLyBIYXNoOjB4M2U3Y2Q3NjIKLSAgICAsIGpz
VmFsdWVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlKCJKU1ZhbHVlIEdpZ2FjYWdlIEF1eGlsaWFyeSIs
IGhlYXAsIGF1eGlsaWFyeUhlYXBDZWxsVHlwZS5nZXQoKSwganNWYWx1ZUdpZ2FjYWdlQWxsb2Nh
dG9yLmdldCgpKSAvLyBIYXNoOjB4MjQxZTk0NgotICAgICwgaW1tdXRhYmxlQnV0dGVyZmx5SlNW
YWx1ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UoIkltbXV0YWJsZUJ1dHRlcmZseSBHaWdhY2FnZSBK
U0NlbGxXaXRoSW5kZXhpbmdIZWFkZXIiLCBoZWFwLCBpbW11dGFibGVCdXR0ZXJmbHlIZWFwQ2Vs
bFR5cGUuZ2V0KCksIGpzVmFsdWVHaWdhY2FnZUFsbG9jYXRvci5nZXQoKSkgLy8gSGFzaDoweDdh
OTQ1MzAwCi0gICAgLCBjZWxsU3BhY2UoIkpTQ2VsbCIsIGhlYXAsIGNlbGxIZWFwQ2VsbFR5cGUu
Z2V0KCksIGZhc3RNYWxsb2NBbGxvY2F0b3IuZ2V0KCkpIC8vIEhhc2g6MHhhZGZiNWE3OQotICAg
ICwgdmFyaWFibGVTaXplZENlbGxTcGFjZSgiVmFyaWFibGUgU2l6ZWQgSlNDZWxsIiwgaGVhcCwg
Y2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgZmFzdE1hbGxvY0FsbG9jYXRvci5nZXQoKSkgLy8gSGFz
aDoweGJjZDc2OWNjCi0gICAgLCBkZXN0cnVjdGlibGVPYmplY3RTcGFjZSgiSlNEZXN0cnVjdGli
bGVPYmplY3QiLCBoZWFwLCBkZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuZ2V0KCksIGZh
c3RNYWxsb2NBbGxvY2F0b3IuZ2V0KCkpIC8vIEhhc2g6MHg0ZjVlZDdhOQotICAgICwgYXJyYXlT
cGFjZSBJU09fU1VCU1BBQ0VfSU5JVChoZWFwLCBjZWxsSGVhcENlbGxUeXBlLmdldCgpLCBKU0Fy
cmF5KQotICAgICwgYmlnSW50U3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoaGVhcCwgY2VsbEhlYXBD
ZWxsVHlwZS5nZXQoKSwgSlNCaWdJbnQpCi0gICAgLCBjYWxsZWVTcGFjZSBJU09fU1VCU1BBQ0Vf
SU5JVChoZWFwLCBjZWxsSGVhcENlbGxUeXBlLmdldCgpLCBKU0NhbGxlZSkKLSAgICAsIGNsb25l
ZEFyZ3VtZW50c1NwYWNlIElTT19TVUJTUEFDRV9JTklUKGhlYXAsIGNlbGxIZWFwQ2VsbFR5cGUu
Z2V0KCksIENsb25lZEFyZ3VtZW50cykKLSAgICAsIGN1c3RvbUdldHRlclNldHRlclNwYWNlIElT
T19TVUJTUEFDRV9JTklUKGhlYXAsIGNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEN1c3RvbUdldHRl
clNldHRlcikKLSAgICAsIGRhdGVJbnN0YW5jZVNwYWNlIElTT19TVUJTUEFDRV9JTklUKGhlYXAs
IGRhdGVJbnN0YW5jZUhlYXBDZWxsVHlwZS5nZXQoKSwgRGF0ZUluc3RhbmNlKQotICAgICwgZG9t
QXR0cmlidXRlR2V0dGVyU2V0dGVyU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoaGVhcCwgY2VsbEhl
YXBDZWxsVHlwZS5nZXQoKSwgRE9NQXR0cmlidXRlR2V0dGVyU2V0dGVyKQotICAgICwgZXhjZXB0
aW9uU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoaGVhcCwgZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxs
VHlwZS5nZXQoKSwgRXhjZXB0aW9uKQotICAgICwgZXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZVNw
YWNlIElTT19TVUJTUEFDRV9JTklUKGhlYXAsIGNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEV4ZWN1
dGFibGVUb0NvZGVCbG9ja0VkZ2UpIC8vIEhhc2g6MHg3YjczMGIyMAotICAgICwgZnVuY3Rpb25T
cGFjZSBJU09fU1VCU1BBQ0VfSU5JVChoZWFwLCBjZWxsSGVhcENlbGxUeXBlLmdldCgpLCBKU0Z1
bmN0aW9uKSAvLyBIYXNoOjB4ODAwZmNhNzIKLSAgICAsIGdldHRlclNldHRlclNwYWNlIElTT19T
VUJTUEFDRV9JTklUKGhlYXAsIGNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEdldHRlclNldHRlcikK
LSAgICAsIGdsb2JhbExleGljYWxFbnZpcm9ubWVudFNwYWNlIElTT19TVUJTUEFDRV9JTklUKGhl
YXAsIGdsb2JhbExleGljYWxFbnZpcm9ubWVudEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNHbG9iYWxM
ZXhpY2FsRW52aXJvbm1lbnQpCi0gICAgLCBpbnRlcm5hbEZ1bmN0aW9uU3BhY2UgSVNPX1NVQlNQ
QUNFX0lOSVQoaGVhcCwgY2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgSW50ZXJuYWxGdW5jdGlvbikg
Ly8gSGFzaDoweGY4NDVjNDY0Ci0gICAgLCBqc1Byb3h5U3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQo
aGVhcCwgY2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNQcm94eSkKLSAgICAsIG5hdGl2ZUV4ZWN1
dGFibGVTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVChoZWFwLCBkZXN0cnVjdGlibGVDZWxsSGVhcENl
bGxUeXBlLmdldCgpLCBOYXRpdmVFeGVjdXRhYmxlKSAvLyBIYXNoOjB4Njc1NjdmOTUKLSAgICAs
IG51bWJlck9iamVjdFNwYWNlIElTT19TVUJTUEFDRV9JTklUKGhlYXAsIGNlbGxIZWFwQ2VsbFR5
cGUuZ2V0KCksIE51bWJlck9iamVjdCkKLSAgICAsIHBsYWluT2JqZWN0U3BhY2UgSVNPX1NVQlNQ
QUNFX0lOSVQoaGVhcCwgY2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNOb25GaW5hbE9iamVjdCkg
Ly8gTWFpbmx5IHVzZWQgZm9yIHByb3RvdHlwZXMuCi0gICAgLCBwcm9taXNlU3BhY2UgSVNPX1NV
QlNQQUNFX0lOSVQoaGVhcCwgY2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNQcm9taXNlKQotICAg
ICwgcHJvcGVydHlOYW1lRW51bWVyYXRvclNwYWNlIElTT19TVUJTUEFDRV9JTklUKGhlYXAsIGNl
bGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTUHJvcGVydHlOYW1lRW51bWVyYXRvcikKLSAgICAsIHBy
b3BlcnR5VGFibGVTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVChoZWFwLCBkZXN0cnVjdGlibGVDZWxs
SGVhcENlbGxUeXBlLmdldCgpLCBQcm9wZXJ0eVRhYmxlKSAvLyBIYXNoOjB4YzZiYzlmMTIKLSAg
ICAsIHJlZ0V4cFNwYWNlIElTT19TVUJTUEFDRV9JTklUKGhlYXAsIGRlc3RydWN0aWJsZUNlbGxI
ZWFwQ2VsbFR5cGUuZ2V0KCksIFJlZ0V4cCkKLSAgICAsIHJlZ0V4cE9iamVjdFNwYWNlIElTT19T
VUJTUEFDRV9JTklUKGhlYXAsIGNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIFJlZ0V4cE9iamVjdCkK
LSAgICAsIHJvcGVTdHJpbmdTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVChoZWFwLCBzdHJpbmdIZWFw
Q2VsbFR5cGUuZ2V0KCksIEpTUm9wZVN0cmluZykKLSAgICAsIHNjb3BlZEFyZ3VtZW50c1NwYWNl
IElTT19TVUJTUEFDRV9JTklUKGhlYXAsIGNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIFNjb3BlZEFy
Z3VtZW50cykKLSAgICAsIHNwYXJzZUFycmF5VmFsdWVNYXBTcGFjZSBJU09fU1VCU1BBQ0VfSU5J
VChoZWFwLCBkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlLmdldCgpLCBTcGFyc2VBcnJheVZh
bHVlTWFwKQotICAgICwgc3RyaW5nU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoaGVhcCwgc3RyaW5n
SGVhcENlbGxUeXBlLmdldCgpLCBKU1N0cmluZykgLy8gSGFzaDoweDkwY2Y3NThmCi0gICAgLCBz
dHJpbmdPYmplY3RTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVChoZWFwLCBjZWxsSGVhcENlbGxUeXBl
LmdldCgpLCBTdHJpbmdPYmplY3QpCi0gICAgLCBzdHJ1Y3R1cmVDaGFpblNwYWNlIElTT19TVUJT
UEFDRV9JTklUKGhlYXAsIGNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIFN0cnVjdHVyZUNoYWluKQot
ICAgICwgc3RydWN0dXJlUmFyZURhdGFTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVChoZWFwLCBkZXN0
cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlLmdldCgpLCBTdHJ1Y3R1cmVSYXJlRGF0YSkgLy8gSGFz
aDoweGFjYTRlNjJkCi0gICAgLCBzdHJ1Y3R1cmVTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVChoZWFw
LCBkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlLmdldCgpLCBTdHJ1Y3R1cmUpIC8vIEhhc2g6
MHgxZjFiY2RjYQotICAgICwgYnJhbmRlZFN0cnVjdHVyZVNwYWNlIElTT19TVUJTUEFDRV9JTklU
KGhlYXAsIGRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEJyYW5kZWRTdHJ1Y3R1
cmUpCi0gICAgLCBzeW1ib2xUYWJsZVNwYWNlIElTT19TVUJTUEFDRV9JTklUKGhlYXAsIGRlc3Ry
dWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIFN5bWJvbFRhYmxlKSAvLyBIYXNoOjB4YzUy
MTVhZmQKLSAgICAsIGV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2VzV2l0aENvbnN0cmFpbnRzKGV4
ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2VTcGFjZSkKLSAgICAsIGV4ZWN1dGFibGVUb0NvZGVCbG9j
a0VkZ2VzV2l0aEZpbmFsaXplcnMoZXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZVNwYWNlKQotICAg
ICwgY29kZUJsb2NrU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoaGVhcCwgZGVzdHJ1Y3RpYmxlQ2Vs
bEhlYXBDZWxsVHlwZS5nZXQoKSwgQ29kZUJsb2NrKSAvLyBIYXNoOjB4NzdlNjZlYzkKLSAgICAs
IGZ1bmN0aW9uRXhlY3V0YWJsZVNwYWNlIElTT19TVUJTUEFDRV9JTklUKGhlYXAsIGRlc3RydWN0
aWJsZUNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEZ1bmN0aW9uRXhlY3V0YWJsZSkgLy8gSGFzaDow
eDVkMTU4ZjMKLSAgICAsIHByb2dyYW1FeGVjdXRhYmxlU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQo
aGVhcCwgZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgUHJvZ3JhbUV4ZWN1dGFi
bGUpIC8vIEhhc2g6MHg1MjdjNzdlNwotICAgICwgdW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGVT
cGFjZSBJU09fU1VCU1BBQ0VfSU5JVChoZWFwLCBkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBl
LmdldCgpLCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSkgLy8gSGFzaDoweGY2YjgyOGQ5CiAg
ICAgLCB2bVR5cGUodm1UeXBlKQogICAgICwgY2xpZW50RGF0YShudWxscHRyKQogICAgICwgdG9w
RW50cnlGcmFtZShudWxscHRyKQpAQCAtMTU3MSwxMzcgKzEzOTEsNiBAQCB2b2lkIFZNOjplbnN1
cmVTaGFkb3dDaGlja2VuKCkKICAgICBtX3NoYWRvd0NoaWNrZW4gPSBtYWtlVW5pcXVlPFNoYWRv
d0NoaWNrZW4+KCk7CiB9CiAKLSNkZWZpbmUgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01F
TUJFUl9TTE9XKG5hbWUsIGhlYXBDZWxsVHlwZSwgdHlwZSkgXAotICAgIElzb1N1YnNwYWNlKiBW
TTo6bmFtZSMjU2xvdygpIFwKLSAgICB7IFwKLSAgICAgICAgQVNTRVJUKCFtXyMjbmFtZSk7IFwK
LSAgICAgICAgYXV0byBzcGFjZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFD
RV9JTklUKGhlYXAsIGhlYXBDZWxsVHlwZSwgdHlwZSk7IFwKLSAgICAgICAgV1RGOjpzdG9yZVN0
b3JlRmVuY2UoKTsgXAotICAgICAgICBtXyMjbmFtZSA9IFdURk1vdmUoc3BhY2UpOyBcCi0gICAg
ICAgIHJldHVybiBtXyMjbmFtZS5nZXQoKTsgXAotICAgIH0KLQotCi1EWU5BTUlDX0lTT19TVUJT
UEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coYXBpR2xvYmFsT2JqZWN0U3BhY2UsIGFwaUdsb2JhbE9i
amVjdEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNBUElHbG9iYWxPYmplY3QpCi1EWU5BTUlDX0lTT19T
VUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coYXBpVmFsdWVXcmFwcGVyU3BhY2UsIGNlbGxIZWFw
Q2VsbFR5cGUuZ2V0KCksIEpTQVBJVmFsdWVXcmFwcGVyKQotRFlOQU1JQ19JU09fU1VCU1BBQ0Vf
REVGSU5FX01FTUJFUl9TTE9XKGFycmF5QnVmZmVyU3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUuZ2V0
KCksIEpTQXJyYXlCdWZmZXIpCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NM
T1coYXJyYXlJdGVyYXRvclNwYWNlLCBjZWxsSGVhcENlbGxUeXBlLmdldCgpLCBKU0FycmF5SXRl
cmF0b3IpCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coYXN5bmNHZW5l
cmF0b3JTcGFjZSwgY2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNBc3luY0dlbmVyYXRvcikKLURZ
TkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhiaWdJbnQ2NEFycmF5U3BhY2Us
IGNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTQmlnSW50NjRBcnJheSkKLURZTkFNSUNfSVNPX1NV
QlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhiaWdJbnRPYmplY3RTcGFjZSwgY2VsbEhlYXBDZWxs
VHlwZS5nZXQoKSwgQmlnSW50T2JqZWN0KQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01F
TUJFUl9TTE9XKGJpZ1VpbnQ2NEFycmF5U3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEpT
QmlnVWludDY0QXJyYXkpCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1co
Ym9vbGVhbk9iamVjdFNwYWNlLCBjZWxsSGVhcENlbGxUeXBlLmdldCgpLCBCb29sZWFuT2JqZWN0
KQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGJvdW5kRnVuY3Rpb25T
cGFjZSwgY2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNCb3VuZEZ1bmN0aW9uKSAvLyBIYXNoOjB4
ZDc5MTZkNDEKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhjYWxsYmFj
a0NvbnN0cnVjdG9yU3BhY2UsIGNhbGxiYWNrQ29uc3RydWN0b3JIZWFwQ2VsbFR5cGUuZ2V0KCks
IEpTQ2FsbGJhY2tDb25zdHJ1Y3RvcikKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1C
RVJfU0xPVyhjYWxsYmFja0dsb2JhbE9iamVjdFNwYWNlLCBjYWxsYmFja0dsb2JhbE9iamVjdEhl
YXBDZWxsVHlwZS5nZXQoKSwgSlNDYWxsYmFja09iamVjdDxKU0dsb2JhbE9iamVjdD4pCi1EWU5B
TUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coY2FsbGJhY2tGdW5jdGlvblNwYWNl
LCBjZWxsSGVhcENlbGxUeXBlLmdldCgpLCBKU0NhbGxiYWNrRnVuY3Rpb24pIC8vIEhhc2g6MHhl
NzY0OGViYwotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGNhbGxiYWNr
T2JqZWN0U3BhY2UsIGNhbGxiYWNrT2JqZWN0SGVhcENlbGxUeXBlLmdldCgpLCBKU0NhbGxiYWNr
T2JqZWN0PEpTTm9uRmluYWxPYmplY3Q+KQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01F
TUJFUl9TTE9XKGN1c3RvbUdldHRlckZ1bmN0aW9uU3BhY2UsIGN1c3RvbUdldHRlckZ1bmN0aW9u
SGVhcENlbGxUeXBlLmdldCgpLCBKU0N1c3RvbUdldHRlckZ1bmN0aW9uKQotRFlOQU1JQ19JU09f
U1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGN1c3RvbVNldHRlckZ1bmN0aW9uU3BhY2UsIGN1
c3RvbVNldHRlckZ1bmN0aW9uSGVhcENlbGxUeXBlLmdldCgpLCBKU0N1c3RvbVNldHRlckZ1bmN0
aW9uKQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGRhdGFWaWV3U3Bh
Y2UsIGNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTRGF0YVZpZXcpCi1EWU5BTUlDX0lTT19TVUJT
UEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coZGVidWdnZXJTY29wZVNwYWNlLCBjZWxsSGVhcENlbGxU
eXBlLmdldCgpLCBEZWJ1Z2dlclNjb3BlKQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01F
TUJFUl9TTE9XKGVycm9ySW5zdGFuY2VTcGFjZSwgZXJyb3JJbnN0YW5jZUhlYXBDZWxsVHlwZS5n
ZXQoKSwgRXJyb3JJbnN0YW5jZSkgLy8gSGFzaDoweDNmNDBkNGEKLURZTkFNSUNfSVNPX1NVQlNQ
QUNFX0RFRklORV9NRU1CRVJfU0xPVyhmbG9hdDMyQXJyYXlTcGFjZSwgY2VsbEhlYXBDZWxsVHlw
ZS5nZXQoKSwgSlNGbG9hdDMyQXJyYXkpCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVN
QkVSX1NMT1coZmxvYXQ2NEFycmF5U3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTRmxv
YXQ2NEFycmF5KQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGZ1bmN0
aW9uUmFyZURhdGFTcGFjZSwgZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgRnVu
Y3Rpb25SYXJlRGF0YSkKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhn
ZW5lcmF0b3JTcGFjZSwgY2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNHZW5lcmF0b3IpCi1EWU5B
TUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coZ2xvYmFsT2JqZWN0U3BhY2UsIGds
b2JhbE9iamVjdEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNHbG9iYWxPYmplY3QpCi1EWU5BTUlDX0lT
T19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coaW5qZWN0ZWRTY3JpcHRIb3N0U3BhY2UsIGlu
amVjdGVkU2NyaXB0SG9zdFNwYWNlSGVhcENlbGxUeXBlLmdldCgpLCBJbnNwZWN0b3I6OkpTSW5q
ZWN0ZWRTY3JpcHRIb3N0KQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9X
KGludDhBcnJheVNwYWNlLCBjZWxsSGVhcENlbGxUeXBlLmdldCgpLCBKU0ludDhBcnJheSkKLURZ
TkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhpbnQxNkFycmF5U3BhY2UsIGNl
bGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTSW50MTZBcnJheSkKLURZTkFNSUNfSVNPX1NVQlNQQUNF
X0RFRklORV9NRU1CRVJfU0xPVyhpbnQzMkFycmF5U3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUuZ2V0
KCksIEpTSW50MzJBcnJheSkKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xP
VyhqYXZhU2NyaXB0Q2FsbEZyYW1lU3BhY2UsIGphdmFTY3JpcHRDYWxsRnJhbWVIZWFwQ2VsbFR5
cGUuZ2V0KCksIEluc3BlY3Rvcjo6SlNKYXZhU2NyaXB0Q2FsbEZyYW1lKQotRFlOQU1JQ19JU09f
U1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGpzTW9kdWxlUmVjb3JkU3BhY2UsIGpzTW9kdWxl
UmVjb3JkSGVhcENlbGxUeXBlLmdldCgpLCBKU01vZHVsZVJlY29yZCkKLURZTkFNSUNfSVNPX1NV
QlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhtYXBCdWNrZXRTcGFjZSwgY2VsbEhlYXBDZWxsVHlw
ZS5nZXQoKSwgSlNNYXA6OkJ1Y2tldFR5cGUpCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVf
TUVNQkVSX1NMT1cobWFwSXRlcmF0b3JTcGFjZSwgY2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNN
YXBJdGVyYXRvcikKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhtYXBT
cGFjZSwgY2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNNYXApCi1EWU5BTUlDX0lTT19TVUJTUEFD
RV9ERUZJTkVfTUVNQkVSX1NMT1cobW9kdWxlTmFtZXNwYWNlT2JqZWN0U3BhY2UsIG1vZHVsZU5h
bWVzcGFjZU9iamVjdEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNNb2R1bGVOYW1lc3BhY2VPYmplY3Qp
Ci1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1cobmF0aXZlU3RkRnVuY3Rp
b25TcGFjZSwgbmF0aXZlU3RkRnVuY3Rpb25IZWFwQ2VsbFR5cGUuZ2V0KCksIEpTTmF0aXZlU3Rk
RnVuY3Rpb24pIC8vIEhhc2g6MHg3MGVkNjFlNAotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5F
X01FTUJFUl9TTE9XKHByb3h5T2JqZWN0U3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIFBy
b3h5T2JqZWN0KQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHByb3h5
UmV2b2tlU3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIFByb3h5UmV2b2tlKSAvLyBIYXNo
OjB4YjUwNmE5MzkKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhzY29w
ZWRBcmd1bWVudHNUYWJsZVNwYWNlLCBkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlLmdldCgp
LCBTY29wZWRBcmd1bWVudHNUYWJsZSkKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1C
RVJfU0xPVyhzY3JpcHRGZXRjaFBhcmFtZXRlcnNTcGFjZSwgZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBD
ZWxsVHlwZS5nZXQoKSwgSlNTY3JpcHRGZXRjaFBhcmFtZXRlcnMpCi1EWU5BTUlDX0lTT19TVUJT
UEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coc2NyaXB0RmV0Y2hlclNwYWNlLCBkZXN0cnVjdGlibGVD
ZWxsSGVhcENlbGxUeXBlLmdldCgpLCBKU1NjcmlwdEZldGNoZXIpCi1EWU5BTUlDX0lTT19TVUJT
UEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coc2V0QnVja2V0U3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUu
Z2V0KCksIEpTU2V0OjpCdWNrZXRUeXBlKQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01F
TUJFUl9TTE9XKHNldEl0ZXJhdG9yU3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTU2V0
SXRlcmF0b3IpCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coc2V0U3Bh
Y2UsIGNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTU2V0KQotRFlOQU1JQ19JU09fU1VCU1BBQ0Vf
REVGSU5FX01FTUJFUl9TTE9XKHNoYWRvd1JlYWxtU3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUuZ2V0
KCksIFNoYWRvd1JlYWxtT2JqZWN0KQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJF
Ul9TTE9XKHN0cmljdEV2YWxBY3RpdmF0aW9uU3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCks
IFN0cmljdEV2YWxBY3RpdmF0aW9uKQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJF
Ul9TTE9XKHN0cmluZ0l0ZXJhdG9yU3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTU3Ry
aW5nSXRlcmF0b3IpCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coc291
cmNlQ29kZVNwYWNlLCBkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlLmdldCgpLCBKU1NvdXJj
ZUNvZGUpCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coc3ltYm9sU3Bh
Y2UsIGRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIFN5bWJvbCkKLURZTkFNSUNf
SVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhzeW1ib2xPYmplY3RTcGFjZSwgY2VsbEhl
YXBDZWxsVHlwZS5nZXQoKSwgU3ltYm9sT2JqZWN0KQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVG
SU5FX01FTUJFUl9TTE9XKHRlbXBsYXRlT2JqZWN0RGVzY3JpcHRvclNwYWNlLCBkZXN0cnVjdGli
bGVDZWxsSGVhcENlbGxUeXBlLmdldCgpLCBKU1RlbXBsYXRlT2JqZWN0RGVzY3JpcHRvcikKLURZ
TkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh0ZW1wb3JhbENhbGVuZGFyU3Bh
Y2UsIGNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIFRlbXBvcmFsQ2FsZW5kYXIpCi1EWU5BTUlDX0lT
T19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1codGVtcG9yYWxEdXJhdGlvblNwYWNlLCBjZWxs
SGVhcENlbGxUeXBlLmdldCgpLCBUZW1wb3JhbER1cmF0aW9uKQotRFlOQU1JQ19JU09fU1VCU1BB
Q0VfREVGSU5FX01FTUJFUl9TTE9XKHRlbXBvcmFsSW5zdGFudFNwYWNlLCBjZWxsSGVhcENlbGxU
eXBlLmdldCgpLCBUZW1wb3JhbEluc3RhbnQpCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVf
TUVNQkVSX1NMT1codGVtcG9yYWxQbGFpblRpbWVTcGFjZSwgY2VsbEhlYXBDZWxsVHlwZS5nZXQo
KSwgVGVtcG9yYWxQbGFpblRpbWUpCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVS
X1NMT1codGVtcG9yYWxUaW1lWm9uZVNwYWNlLCBjZWxsSGVhcENlbGxUeXBlLmdldCgpLCBUZW1w
b3JhbFRpbWVab25lKQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHVp
bnQ4QXJyYXlTcGFjZSwgY2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNVaW50OEFycmF5KQotRFlO
QU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHVpbnQ4Q2xhbXBlZEFycmF5U3Bh
Y2UsIGNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVWludDhDbGFtcGVkQXJyYXkpCi1EWU5BTUlD
X0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1codWludDE2QXJyYXlTcGFjZSwgY2VsbEhl
YXBDZWxsVHlwZS5nZXQoKSwgSlNVaW50MTZBcnJheSkKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RF
RklORV9NRU1CRVJfU0xPVyh1aW50MzJBcnJheVNwYWNlLCBjZWxsSGVhcENlbGxUeXBlLmdldCgp
LCBKU1VpbnQzMkFycmF5KQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9X
KHVubGlua2VkRXZhbENvZGVCbG9ja1NwYWNlLCBkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBl
LmdldCgpLCBVbmxpbmtlZEV2YWxDb2RlQmxvY2spCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJ
TkVfTUVNQkVSX1NMT1codW5saW5rZWRGdW5jdGlvbkNvZGVCbG9ja1NwYWNlLCBkZXN0cnVjdGli
bGVDZWxsSGVhcENlbGxUeXBlLmdldCgpLCBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKQotRFlO
QU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHVubGlua2VkTW9kdWxlUHJvZ3Jh
bUNvZGVCbG9ja1NwYWNlLCBkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlLmdldCgpLCBVbmxp
bmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2spCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVf
TUVNQkVSX1NMT1codW5saW5rZWRQcm9ncmFtQ29kZUJsb2NrU3BhY2UsIGRlc3RydWN0aWJsZUNl
bGxIZWFwQ2VsbFR5cGUuZ2V0KCksIFVubGlua2VkUHJvZ3JhbUNvZGVCbG9jaykKLURZTkFNSUNf
SVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh3ZWFrTWFwU3BhY2UsIHdlYWtNYXBIZWFw
Q2VsbFR5cGUuZ2V0KCksIEpTV2Vha01hcCkgLy8gSGFzaDoweDY2MmIxMmEzCi1EWU5BTUlDX0lT
T19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1cod2Vha1NldFNwYWNlLCB3ZWFrU2V0SGVhcENl
bGxUeXBlLmdldCgpLCBKU1dlYWtTZXQpIC8vIEhhc2g6MHg0Yzc4MWIzMAotRFlOQU1JQ19JU09f
U1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHdlYWtPYmplY3RSZWZTcGFjZSwgY2VsbEhlYXBD
ZWxsVHlwZS5nZXQoKSwgSlNXZWFrT2JqZWN0UmVmKSAvLyBIYXNoOjB4OGVjNjhmMWYKLURZTkFN
SUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh3aXRoU2NvcGVTcGFjZSwgY2VsbEhl
YXBDZWxsVHlwZS5nZXQoKSwgSlNXaXRoU2NvcGUpCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJ
TkVfTUVNQkVSX1NMT1coZmluYWxpemF0aW9uUmVnaXN0cnlTcGFjZSwgZmluYWxpemF0aW9uUmVn
aXN0cnlDZWxsVHlwZS5nZXQoKSwgSlNGaW5hbGl6YXRpb25SZWdpc3RyeSkKLSNpZiBKU0NfT0JK
Q19BUElfRU5BQkxFRAotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGFw
aVdyYXBwZXJPYmplY3RTcGFjZSwgYXBpV3JhcHBlck9iamVjdEhlYXBDZWxsVHlwZS5nZXQoKSwg
SlNDYWxsYmFja09iamVjdDxKU0FQSVdyYXBwZXJPYmplY3Q+KQotRFlOQU1JQ19JU09fU1VCU1BB
Q0VfREVGSU5FX01FTUJFUl9TTE9XKG9iakNDYWxsYmFja0Z1bmN0aW9uU3BhY2UsIG9iakNDYWxs
YmFja0Z1bmN0aW9uSGVhcENlbGxUeXBlLmdldCgpLCBPYmpDQ2FsbGJhY2tGdW5jdGlvbikgLy8g
SGFzaDoweDEwZjYxMGI4Ci0jZW5kaWYKLSNpZmRlZiBKU0NfR0xJQl9BUElfRU5BQkxFRAotRFlO
QU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGFwaVdyYXBwZXJPYmplY3RTcGFj
ZSwgYXBpV3JhcHBlck9iamVjdEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNDYWxsYmFja09iamVjdDxK
U0FQSVdyYXBwZXJPYmplY3Q+KQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9T
TE9XKGpzY0NhbGxiYWNrRnVuY3Rpb25TcGFjZSwganNjQ2FsbGJhY2tGdW5jdGlvbkhlYXBDZWxs
VHlwZS5nZXQoKSwgSlNDQ2FsbGJhY2tGdW5jdGlvbikKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RF
RklORV9NRU1CRVJfU0xPVyhjYWxsYmFja0FQSVdyYXBwZXJHbG9iYWxPYmplY3RTcGFjZSwgY2Fs
bGJhY2tBUElXcmFwcGVyR2xvYmFsT2JqZWN0SGVhcENlbGxUeXBlLmdldCgpLCBKU0NhbGxiYWNr
T2JqZWN0PEpTQVBJV3JhcHBlckdsb2JhbE9iamVjdD4pCi0jZW5kaWYKLURZTkFNSUNfSVNPX1NV
QlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhpbnRsQ29sbGF0b3JTcGFjZSwgaW50bENvbGxhdG9y
SGVhcENlbGxUeXBlLmdldCgpLCBJbnRsQ29sbGF0b3IpCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9E
RUZJTkVfTUVNQkVSX1NMT1coaW50bERhdGVUaW1lRm9ybWF0U3BhY2UsIGludGxEYXRlVGltZUZv
cm1hdEhlYXBDZWxsVHlwZS5nZXQoKSwgSW50bERhdGVUaW1lRm9ybWF0KQotRFlOQU1JQ19JU09f
U1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGludGxEaXNwbGF5TmFtZXNTcGFjZSwgaW50bERp
c3BsYXlOYW1lc0hlYXBDZWxsVHlwZS5nZXQoKSwgSW50bERpc3BsYXlOYW1lcykKLURZTkFNSUNf
SVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhpbnRsTGlzdEZvcm1hdFNwYWNlLCBpbnRs
TGlzdEZvcm1hdEhlYXBDZWxsVHlwZS5nZXQoKSwgSW50bExpc3RGb3JtYXQpCi1EWU5BTUlDX0lT
T19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coaW50bExvY2FsZVNwYWNlLCBpbnRsTG9jYWxl
SGVhcENlbGxUeXBlLmdldCgpLCBJbnRsTG9jYWxlKQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVG
SU5FX01FTUJFUl9TTE9XKGludGxOdW1iZXJGb3JtYXRTcGFjZSwgaW50bE51bWJlckZvcm1hdEhl
YXBDZWxsVHlwZS5nZXQoKSwgSW50bE51bWJlckZvcm1hdCkKLURZTkFNSUNfSVNPX1NVQlNQQUNF
X0RFRklORV9NRU1CRVJfU0xPVyhpbnRsUGx1cmFsUnVsZXNTcGFjZSwgaW50bFBsdXJhbFJ1bGVz
SGVhcENlbGxUeXBlLmdldCgpLCBJbnRsUGx1cmFsUnVsZXMpCi1EWU5BTUlDX0lTT19TVUJTUEFD
RV9ERUZJTkVfTUVNQkVSX1NMT1coaW50bFJlbGF0aXZlVGltZUZvcm1hdFNwYWNlLCBpbnRsUmVs
YXRpdmVUaW1lRm9ybWF0SGVhcENlbGxUeXBlLmdldCgpLCBJbnRsUmVsYXRpdmVUaW1lRm9ybWF0
KQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGludGxTZWdtZW50SXRl
cmF0b3JTcGFjZSwgaW50bFNlZ21lbnRJdGVyYXRvckhlYXBDZWxsVHlwZS5nZXQoKSwgSW50bFNl
Z21lbnRJdGVyYXRvcikKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhp
bnRsU2VnbWVudGVyU3BhY2UsIGludGxTZWdtZW50ZXJIZWFwQ2VsbFR5cGUuZ2V0KCksIEludGxT
ZWdtZW50ZXIpCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coaW50bFNl
Z21lbnRzU3BhY2UsIGludGxTZWdtZW50c0hlYXBDZWxsVHlwZS5nZXQoKSwgSW50bFNlZ21lbnRz
KQotI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9N
RU1CRVJfU0xPVyhqc1RvV2FzbUlDQ2FsbGVlU3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCks
IEpTVG9XYXNtSUNDYWxsZWUpCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NM
T1cod2ViQXNzZW1ibHlDb2RlQmxvY2tTcGFjZSwgd2ViQXNzZW1ibHlDb2RlQmxvY2tIZWFwQ2Vs
bFR5cGUuZ2V0KCksIEpTV2ViQXNzZW1ibHlDb2RlQmxvY2spIC8vIEhhc2g6MHg5YWQ5OTVjZAot
RFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHdlYkFzc2VtYmx5RXhjZXB0
aW9uU3BhY2UsIHdlYkFzc2VtYmx5RXhjZXB0aW9uSGVhcENlbGxUeXBlLmdldCgpLCBKU1dlYkFz
c2VtYmx5RXhjZXB0aW9uKQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9X
KHdlYkFzc2VtYmx5RnVuY3Rpb25TcGFjZSwgd2ViQXNzZW1ibHlGdW5jdGlvbkhlYXBDZWxsVHlw
ZS5nZXQoKSwgV2ViQXNzZW1ibHlGdW5jdGlvbikgLy8gSGFzaDoweDhiN2MzMmRiCi1EWU5BTUlD
X0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1cod2ViQXNzZW1ibHlHbG9iYWxTcGFjZSwg
d2ViQXNzZW1ibHlHbG9iYWxIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTV2ViQXNzZW1ibHlHbG9iYWwp
Ci1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1cod2ViQXNzZW1ibHlJbnN0
YW5jZVNwYWNlLCB3ZWJBc3NlbWJseUluc3RhbmNlSGVhcENlbGxUeXBlLmdldCgpLCBKU1dlYkFz
c2VtYmx5SW5zdGFuY2UpCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1co
d2ViQXNzZW1ibHlNZW1vcnlTcGFjZSwgd2ViQXNzZW1ibHlNZW1vcnlIZWFwQ2VsbFR5cGUuZ2V0
KCksIEpTV2ViQXNzZW1ibHlNZW1vcnkpCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVN
QkVSX1NMT1cod2ViQXNzZW1ibHlNb2R1bGVTcGFjZSwgd2ViQXNzZW1ibHlNb2R1bGVIZWFwQ2Vs
bFR5cGUuZ2V0KCksIEpTV2ViQXNzZW1ibHlNb2R1bGUpCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9E
RUZJTkVfTUVNQkVSX1NMT1cod2ViQXNzZW1ibHlNb2R1bGVSZWNvcmRTcGFjZSwgd2ViQXNzZW1i
bHlNb2R1bGVSZWNvcmRIZWFwQ2VsbFR5cGUuZ2V0KCksIFdlYkFzc2VtYmx5TW9kdWxlUmVjb3Jk
KQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHdlYkFzc2VtYmx5VGFi
bGVTcGFjZSwgd2ViQXNzZW1ibHlUYWJsZUhlYXBDZWxsVHlwZS5nZXQoKSwgSlNXZWJBc3NlbWJs
eVRhYmxlKQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHdlYkFzc2Vt
Ymx5VGFnU3BhY2UsIHdlYkFzc2VtYmx5VGFnSGVhcENlbGxUeXBlLmdldCgpLCBKU1dlYkFzc2Vt
Ymx5VGFnKQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHdlYkFzc2Vt
Ymx5V3JhcHBlckZ1bmN0aW9uU3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIFdlYkFzc2Vt
Ymx5V3JhcHBlckZ1bmN0aW9uKSAvLyBIYXNoOjB4ZDRhNWZmMDEKLSNlbmRpZgotCi0jdW5kZWYg
RFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XCi0KLSNkZWZpbmUgRFlOQU1J
Q19TUEFDRV9BTkRfU0VUX0RFRklORV9NRU1CRVJfU0xPVyhuYW1lLCBoZWFwQ2VsbFR5cGUsIHR5
cGUpIFwKLSAgICBJc29TdWJzcGFjZSogVk06Om5hbWUjI1Nsb3coKSBcCi0gICAgeyBcCi0gICAg
ICAgIEFTU0VSVCghbV8jI25hbWUpOyBcCi0gICAgICAgIGF1dG8gc3BhY2UgPSBtYWtlVW5pcXVl
PFNwYWNlQW5kU2V0PiBJU09fU1VCU1BBQ0VfSU5JVChoZWFwLCBoZWFwQ2VsbFR5cGUsIHR5cGUp
OyBcCi0gICAgICAgIFdURjo6c3RvcmVTdG9yZUZlbmNlKCk7IFwKLSAgICAgICAgbV8jI25hbWUg
PSBXVEZNb3ZlKHNwYWNlKTsgXAotICAgICAgICByZXR1cm4gJm1fIyNuYW1lLT5zcGFjZTsgXAot
ICAgIH0KLQotRFlOQU1JQ19TUEFDRV9BTkRfU0VUX0RFRklORV9NRU1CRVJfU0xPVyhldmFsRXhl
Y3V0YWJsZVNwYWNlLCBkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlLmdldCgpLCBFdmFsRXhl
Y3V0YWJsZSkgLy8gSGFzaDoweDk1OGUzZTlkCi1EWU5BTUlDX1NQQUNFX0FORF9TRVRfREVGSU5F
X01FTUJFUl9TTE9XKG1vZHVsZVByb2dyYW1FeGVjdXRhYmxlU3BhY2UsIGRlc3RydWN0aWJsZUNl
bGxIZWFwQ2VsbFR5cGUuZ2V0KCksIE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlKSAvLyBIYXNoOjB4
NjUwNmZhM2MKLQotI3VuZGVmIERZTkFNSUNfU1BBQ0VfQU5EX1NFVF9ERUZJTkVfTUVNQkVSX1NM
T1cKLQogSlNDZWxsKiBWTTo6c2VudGluZWxTZXRCdWNrZXRTbG93KCkKIHsKICAgICBBU1NFUlQo
IW1fc2VudGluZWxTZXRCdWNrZXQpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvVk0uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5o
CShyZXZpc2lvbiAyODYwMjQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5o
CSh3b3JraW5nIGNvcHkpCkBAIC0zMSw3ICszMSw2IEBACiAjaW5jbHVkZSAiQ2FsbERhdGEuaCIK
ICNpbmNsdWRlICJDYWxsZWVCaXRzLmgiCiAjaW5jbHVkZSAiQ29kZVNwZWNpYWxpemF0aW9uS2lu
ZC5oIgotI2luY2x1ZGUgIkNvbXBsZXRlU3Vic3BhY2UuaCIKICNpbmNsdWRlICJDb25jdXJyZW50
SlNMb2NrLmgiCiAjaW5jbHVkZSAiREZHRG9lc0dDQ2hlY2suaCIKICNpbmNsdWRlICJEZWxldGVB
bGxDb2RlRWZmb3J0LmgiCkBAIC00Miw4ICs0MSw2IEBACiAjaW5jbHVkZSAiSGVhcC5oIgogI2lu
Y2x1ZGUgIkludGVncml0eS5oIgogI2luY2x1ZGUgIkludHJpbnNpYy5oIgotI2luY2x1ZGUgIklz
b0NlbGxTZXQuaCIKLSNpbmNsdWRlICJJc29TdWJzcGFjZS5oIgogI2luY2x1ZGUgIkpTQ0pTVmFs
dWUuaCIKICNpbmNsdWRlICJKU0RhdGVNYXRoLmgiCiAjaW5jbHVkZSAiSlNMb2NrLmgiCkBAIC0x
MjIsOCArMTE5LDYgQEAgY2xhc3MgRGF0ZUluc3RhbmNlOwogY2xhc3MgRXJyb3JJbnN0YW5jZTsK
IGNsYXNzIEV4Y2VwdGlvbjsKIGNsYXNzIEV4Y2VwdGlvblNjb3BlOwotY2xhc3MgRmFzdE1hbGxv
Y0FsaWduZWRNZW1vcnlBbGxvY2F0b3I7Ci1jbGFzcyBHaWdhY2FnZUFsaWduZWRNZW1vcnlBbGxv
Y2F0b3I7CiBjbGFzcyBIYW5kbGVTdGFjazsKIGNsYXNzIEhhc093blByb3BlcnR5Q2FjaGU7CiBj
bGFzcyBIZWFwQW5hbHl6ZXI7CkBAIC0yMjAsOCArMjE1LDYgQEAgY2xhc3MgV2ViQXNzZW1ibHlN
b2R1bGVSZWNvcmQ7CiAKIGNvbnN0ZXhwciBib29sIHZhbGlkYXRlREZHRG9lc0dDID0gRU5BQkxF
X0RGR19ET0VTX0dDX1ZBTElEQVRJT047CiAKLWNsYXNzIElzb0hlYXBDZWxsVHlwZTsKLXRlbXBs
YXRlPHR5cGVuYW1lIENlbGxUeXBlPiBjbGFzcyBJc29JbmxpbmVkSGVhcENlbGxUeXBlOwogdGVt
cGxhdGU8dHlwZW5hbWUgUGFyZW50PiBjbGFzcyBKU0NhbGxiYWNrT2JqZWN0OwogCiAjaWYgRU5B
QkxFKEZUTF9KSVQpCkBAIC00MTMsMTQ1ICs0MDYsNTggQEAgcHJpdmF0ZToKIAogcHVibGljOgog
ICAgIEhlYXAgaGVhcDsKLSAgICAKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8RmFzdE1hbGxvY0FsaWdu
ZWRNZW1vcnlBbGxvY2F0b3I+IGZhc3RNYWxsb2NBbGxvY2F0b3I7Ci0gICAgc3RkOjp1bmlxdWVf
cHRyPEdpZ2FjYWdlQWxpZ25lZE1lbW9yeUFsbG9jYXRvcj4gcHJpbWl0aXZlR2lnYWNhZ2VBbGxv
Y2F0b3I7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPEdpZ2FjYWdlQWxpZ25lZE1lbW9yeUFsbG9jYXRv
cj4ganNWYWx1ZUdpZ2FjYWdlQWxsb2NhdG9yOwotCi0gICAgc3RkOjp1bmlxdWVfcHRyPEhlYXBD
ZWxsVHlwZT4gYXV4aWxpYXJ5SGVhcENlbGxUeXBlOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxIZWFw
Q2VsbFR5cGU+IGltbXV0YWJsZUJ1dHRlcmZseUhlYXBDZWxsVHlwZTsKLSAgICBzdGQ6OnVuaXF1
ZV9wdHI8SGVhcENlbGxUeXBlPiBjZWxsSGVhcENlbGxUeXBlOwotICAgIHN0ZDo6dW5pcXVlX3B0
cjxIZWFwQ2VsbFR5cGU+IGRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGU7Ci0gICAgc3RkOjp1
bmlxdWVfcHRyPElzb0hlYXBDZWxsVHlwZT4gYXBpR2xvYmFsT2JqZWN0SGVhcENlbGxUeXBlOwot
ICAgIHN0ZDo6dW5pcXVlX3B0cjxJc29IZWFwQ2VsbFR5cGU+IGNhbGxiYWNrQ29uc3RydWN0b3JI
ZWFwQ2VsbFR5cGU7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPElzb0hlYXBDZWxsVHlwZT4gY2FsbGJh
Y2tHbG9iYWxPYmplY3RIZWFwQ2VsbFR5cGU7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPElzb0hlYXBD
ZWxsVHlwZT4gY2FsbGJhY2tPYmplY3RIZWFwQ2VsbFR5cGU7Ci0gICAgc3RkOjp1bmlxdWVfcHRy
PElzb0hlYXBDZWxsVHlwZT4gY3VzdG9tR2V0dGVyRnVuY3Rpb25IZWFwQ2VsbFR5cGU7Ci0gICAg
c3RkOjp1bmlxdWVfcHRyPElzb0hlYXBDZWxsVHlwZT4gY3VzdG9tU2V0dGVyRnVuY3Rpb25IZWFw
Q2VsbFR5cGU7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPElzb0hlYXBDZWxsVHlwZT4gZGF0ZUluc3Rh
bmNlSGVhcENlbGxUeXBlOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxJc29IZWFwQ2VsbFR5cGU+IGVy
cm9ySW5zdGFuY2VIZWFwQ2VsbFR5cGU7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPElzb0hlYXBDZWxs
VHlwZT4gZmluYWxpemF0aW9uUmVnaXN0cnlDZWxsVHlwZTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8
SXNvSGVhcENlbGxUeXBlPiBnbG9iYWxMZXhpY2FsRW52aXJvbm1lbnRIZWFwQ2VsbFR5cGU7Ci0g
ICAgc3RkOjp1bmlxdWVfcHRyPElzb0hlYXBDZWxsVHlwZT4gZ2xvYmFsT2JqZWN0SGVhcENlbGxU
eXBlOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxJc29IZWFwQ2VsbFR5cGU+IGluamVjdGVkU2NyaXB0
SG9zdFNwYWNlSGVhcENlbGxUeXBlOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxJc29IZWFwQ2VsbFR5
cGU+IGphdmFTY3JpcHRDYWxsRnJhbWVIZWFwQ2VsbFR5cGU7Ci0gICAgc3RkOjp1bmlxdWVfcHRy
PElzb0hlYXBDZWxsVHlwZT4ganNNb2R1bGVSZWNvcmRIZWFwQ2VsbFR5cGU7Ci0gICAgc3RkOjp1
bmlxdWVfcHRyPElzb0hlYXBDZWxsVHlwZT4gbW9kdWxlTmFtZXNwYWNlT2JqZWN0SGVhcENlbGxU
eXBlOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxJc29IZWFwQ2VsbFR5cGU+IG5hdGl2ZVN0ZEZ1bmN0
aW9uSGVhcENlbGxUeXBlOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxJc29JbmxpbmVkSGVhcENlbGxU
eXBlPEpTU3RyaW5nPj4gc3RyaW5nSGVhcENlbGxUeXBlOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxJ
c29IZWFwQ2VsbFR5cGU+IHdlYWtNYXBIZWFwQ2VsbFR5cGU7Ci0gICAgc3RkOjp1bmlxdWVfcHRy
PElzb0hlYXBDZWxsVHlwZT4gd2Vha1NldEhlYXBDZWxsVHlwZTsKLSAgICBzdGQ6OnVuaXF1ZV9w
dHI8SlNEZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGU+IGRlc3RydWN0aWJsZU9iamVjdEhl
YXBDZWxsVHlwZTsKLSNpZiBKU0NfT0JKQ19BUElfRU5BQkxFRAotICAgIHN0ZDo6dW5pcXVlX3B0
cjxJc29IZWFwQ2VsbFR5cGU+IGFwaVdyYXBwZXJPYmplY3RIZWFwQ2VsbFR5cGU7Ci0gICAgc3Rk
Ojp1bmlxdWVfcHRyPElzb0hlYXBDZWxsVHlwZT4gb2JqQ0NhbGxiYWNrRnVuY3Rpb25IZWFwQ2Vs
bFR5cGU7Ci0jZW5kaWYKLSNpZmRlZiBKU0NfR0xJQl9BUElfRU5BQkxFRAotICAgIHN0ZDo6dW5p
cXVlX3B0cjxJc29IZWFwQ2VsbFR5cGU+IGFwaVdyYXBwZXJPYmplY3RIZWFwQ2VsbFR5cGU7Ci0g
ICAgc3RkOjp1bmlxdWVfcHRyPElzb0hlYXBDZWxsVHlwZT4gY2FsbGJhY2tBUElXcmFwcGVyR2xv
YmFsT2JqZWN0SGVhcENlbGxUeXBlOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxJc29IZWFwQ2VsbFR5
cGU+IGpzY0NhbGxiYWNrRnVuY3Rpb25IZWFwQ2VsbFR5cGU7Ci0jZW5kaWYKLSAgICBzdGQ6OnVu
aXF1ZV9wdHI8SXNvSGVhcENlbGxUeXBlPiBpbnRsQ29sbGF0b3JIZWFwQ2VsbFR5cGU7Ci0gICAg
c3RkOjp1bmlxdWVfcHRyPElzb0hlYXBDZWxsVHlwZT4gaW50bERhdGVUaW1lRm9ybWF0SGVhcENl
bGxUeXBlOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxJc29IZWFwQ2VsbFR5cGU+IGludGxEaXNwbGF5
TmFtZXNIZWFwQ2VsbFR5cGU7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPElzb0hlYXBDZWxsVHlwZT4g
aW50bExpc3RGb3JtYXRIZWFwQ2VsbFR5cGU7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPElzb0hlYXBD
ZWxsVHlwZT4gaW50bExvY2FsZUhlYXBDZWxsVHlwZTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SXNv
SGVhcENlbGxUeXBlPiBpbnRsTnVtYmVyRm9ybWF0SGVhcENlbGxUeXBlOwotICAgIHN0ZDo6dW5p
cXVlX3B0cjxJc29IZWFwQ2VsbFR5cGU+IGludGxQbHVyYWxSdWxlc0hlYXBDZWxsVHlwZTsKLSAg
ICBzdGQ6OnVuaXF1ZV9wdHI8SXNvSGVhcENlbGxUeXBlPiBpbnRsUmVsYXRpdmVUaW1lRm9ybWF0
SGVhcENlbGxUeXBlOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxJc29IZWFwQ2VsbFR5cGU+IGludGxT
ZWdtZW50SXRlcmF0b3JIZWFwQ2VsbFR5cGU7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPElzb0hlYXBD
ZWxsVHlwZT4gaW50bFNlZ21lbnRlckhlYXBDZWxsVHlwZTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8
SXNvSGVhcENlbGxUeXBlPiBpbnRsU2VnbWVudHNIZWFwQ2VsbFR5cGU7Ci0jaWYgRU5BQkxFKFdF
QkFTU0VNQkxZKQotICAgIHN0ZDo6dW5pcXVlX3B0cjxJc29IZWFwQ2VsbFR5cGU+IHdlYkFzc2Vt
Ymx5Q29kZUJsb2NrSGVhcENlbGxUeXBlOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxJc29IZWFwQ2Vs
bFR5cGU+IHdlYkFzc2VtYmx5RXhjZXB0aW9uSGVhcENlbGxUeXBlOwotICAgIHN0ZDo6dW5pcXVl
X3B0cjxJc29IZWFwQ2VsbFR5cGU+IHdlYkFzc2VtYmx5RnVuY3Rpb25IZWFwQ2VsbFR5cGU7Ci0g
ICAgc3RkOjp1bmlxdWVfcHRyPElzb0hlYXBDZWxsVHlwZT4gd2ViQXNzZW1ibHlHbG9iYWxIZWFw
Q2VsbFR5cGU7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPElzb0hlYXBDZWxsVHlwZT4gd2ViQXNzZW1i
bHlJbnN0YW5jZUhlYXBDZWxsVHlwZTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SXNvSGVhcENlbGxU
eXBlPiB3ZWJBc3NlbWJseU1lbW9yeUhlYXBDZWxsVHlwZTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8
SXNvSGVhcENlbGxUeXBlPiB3ZWJBc3NlbWJseU1vZHVsZUhlYXBDZWxsVHlwZTsKLSAgICBzdGQ6
OnVuaXF1ZV9wdHI8SXNvSGVhcENlbGxUeXBlPiB3ZWJBc3NlbWJseU1vZHVsZVJlY29yZEhlYXBD
ZWxsVHlwZTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SXNvSGVhcENlbGxUeXBlPiB3ZWJBc3NlbWJs
eVRhYmxlSGVhcENlbGxUeXBlOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxJc29IZWFwQ2VsbFR5cGU+
IHdlYkFzc2VtYmx5VGFnSGVhcENlbGxUeXBlOwotI2VuZGlmCisKKyAgICBjb25zdCBIZWFwQ2Vs
bFR5cGUmIGNlbGxIZWFwQ2VsbFR5cGUoKSB7IHJldHVybiBoZWFwLmNlbGxIZWFwQ2VsbFR5cGU7
IH0KKyAgICBjb25zdCBKU0Rlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSYgZGVzdHJ1Y3Rp
YmxlT2JqZWN0SGVhcENlbGxUeXBlKCkgeyByZXR1cm4gaGVhcC5kZXN0cnVjdGlibGVPYmplY3RI
ZWFwQ2VsbFR5cGU7IH07CiAKICNpZiBFTkFCTEUoSklUKQogICAgIHN0ZDo6dW5pcXVlX3B0cjxK
SVRTaXplU3RhdGlzdGljcz4gaml0U2l6ZVN0YXRpc3RpY3M7CiAjZW5kaWYKICAgICAKLSAgICBD
b21wbGV0ZVN1YnNwYWNlIHByaW1pdGl2ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2U7IC8vIFR5cGVk
IGFycmF5cywgc3RyaW5ncywgYml0dmVjdG9ycywgZXRjIGdvIGhlcmUuCi0gICAgQ29tcGxldGVT
dWJzcGFjZSBqc1ZhbHVlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZTsgLy8gQnV0dGVyZmxpZXMsIGFy
cmF5cyBvZiBKU1ZhbHVlcywgZXRjIGdvIGhlcmUuCi0gICAgQ29tcGxldGVTdWJzcGFjZSBpbW11
dGFibGVCdXR0ZXJmbHlKU1ZhbHVlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZTsgLy8gSlNJbW11dGFi
bGVCdXR0ZXJmbHkgZ29lcyBoZXJlLgotCi0gICAgLy8gV2UgbWFrZSBjcm9zcy1jdXR0aW5nIGFz
c3VtcHRpb25zIGFib3V0IHR5cGVkIGFycmF5cyBiZWluZyBpbiB0aGUgcHJpbWl0aXZlIEdpZ2Fj
YWdlIGFuZCBidXR0ZXJmbGllcwotICAgIC8vIGJlaW5nIGluIHRoZSBKU1ZhbHVlIGdpZ2FjYWdl
LiBGb3Igc29tZSB0eXBlcywgaXQncyBzdXBlciBvYnZpb3VzIHdoZXJlIHRoZXkgc2hvdWxkIGdv
LCBhbmQgc28gd2UKLSAgICAvLyBjYW4gaGFyZGNvZGUgdGhhdCBmYWN0LiBCdXQgc29tZXRpbWVz
IGl0J3Mgbm90IGNsZWFyLCBzbyB3ZSBhYnN0cmFjdCBpdCBieSBoYXZpbmcgYSBHaWdhY2FnZTo6
S2luZAotICAgIC8vIGNvbnN0YW50IHNvbWV3aGVyZS4KLSAgICAvLyBGSVhNRTogTWF5YmUgaXQg
d291bGQgYmUgYmV0dGVyIGlmIGV2ZXJ5b25lIGFic3RyYWN0ZWQgdGhpcz8KLSAgICAvLyBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc1MjQ4Ci0gICAgQUxXQVlTX0lO
TElORSBDb21wbGV0ZVN1YnNwYWNlJiBnaWdhY2FnZUF1eGlsaWFyeVNwYWNlKEdpZ2FjYWdlOjpL
aW5kIGtpbmQpCi0gICAgewotICAgICAgICBzd2l0Y2ggKGtpbmQpIHsKLSAgICAgICAgY2FzZSBH
aWdhY2FnZTo6UHJpbWl0aXZlOgotICAgICAgICAgICAgcmV0dXJuIHByaW1pdGl2ZUdpZ2FjYWdl
QXV4aWxpYXJ5U3BhY2U7Ci0gICAgICAgIGNhc2UgR2lnYWNhZ2U6OkpTVmFsdWU6Ci0gICAgICAg
ICAgICByZXR1cm4ganNWYWx1ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2U7Ci0gICAgICAgIGNhc2Ug
R2lnYWNhZ2U6Ok51bWJlck9mS2luZHM6Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQot
ICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm4gcHJp
bWl0aXZlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZTsKLSAgICB9Ci0gICAgCi0gICAgLy8gV2hlbmV2
ZXIgcG9zc2libGUsIHVzZSBzdWJzcGFjZUZvcjxDZWxsVHlwZT4odm0pIHRvIGdldCBvbmUgb2Yg
dGhlc2Ugc3Vic3BhY2VzLgotICAgIENvbXBsZXRlU3Vic3BhY2UgY2VsbFNwYWNlOwotICAgIENv
bXBsZXRlU3Vic3BhY2UgdmFyaWFibGVTaXplZENlbGxTcGFjZTsgLy8gRklYTUU6IFRoaXMgc3Bh
Y2UgaXMgcHJvYmxlbWF0aWMgYmVjYXVzZSB3ZSBoYXZlIHRoaW5ncyBpbiBoZXJlIGxpa2UgRGly
ZWN0QXJndW1lbnRzIGFuZCBTY29wZWRBcmd1bWVudHM7IHRob3NlIHNob3VsZCBiZSBzcGxpdCBp
bnRvIEpTVmFsdWVPT0IgY2VsbHMgYW5kIEpTVmFsdWVTdHJpY3QgYXV4aWxpYXJpZXMuIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODI4NTgKLSAgICBDb21wbGV0ZVN1
YnNwYWNlIGRlc3RydWN0aWJsZU9iamVjdFNwYWNlOwotICAgIAotICAgIElzb1N1YnNwYWNlIGFy
cmF5U3BhY2U7Ci0gICAgSXNvU3Vic3BhY2UgYmlnSW50U3BhY2U7Ci0gICAgSXNvU3Vic3BhY2Ug
Y2FsbGVlU3BhY2U7Ci0gICAgSXNvU3Vic3BhY2UgY2xvbmVkQXJndW1lbnRzU3BhY2U7Ci0gICAg
SXNvU3Vic3BhY2UgY3VzdG9tR2V0dGVyU2V0dGVyU3BhY2U7Ci0gICAgSXNvU3Vic3BhY2UgZGF0
ZUluc3RhbmNlU3BhY2U7Ci0gICAgSXNvU3Vic3BhY2UgZG9tQXR0cmlidXRlR2V0dGVyU2V0dGVy
U3BhY2U7Ci0gICAgSXNvU3Vic3BhY2UgZXhjZXB0aW9uU3BhY2U7Ci0gICAgSXNvU3Vic3BhY2Ug
ZXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZVNwYWNlOwotICAgIElzb1N1YnNwYWNlIGZ1bmN0aW9u
U3BhY2U7Ci0gICAgSXNvU3Vic3BhY2UgZ2V0dGVyU2V0dGVyU3BhY2U7Ci0gICAgSXNvU3Vic3Bh
Y2UgZ2xvYmFsTGV4aWNhbEVudmlyb25tZW50U3BhY2U7Ci0gICAgSXNvU3Vic3BhY2UgaW50ZXJu
YWxGdW5jdGlvblNwYWNlOwotICAgIElzb1N1YnNwYWNlIGpzUHJveHlTcGFjZTsKLSAgICBJc29T
dWJzcGFjZSBuYXRpdmVFeGVjdXRhYmxlU3BhY2U7Ci0gICAgSXNvU3Vic3BhY2UgbnVtYmVyT2Jq
ZWN0U3BhY2U7Ci0gICAgSXNvU3Vic3BhY2UgcGxhaW5PYmplY3RTcGFjZTsKLSAgICBJc29TdWJz
cGFjZSBwcm9taXNlU3BhY2U7Ci0gICAgSXNvU3Vic3BhY2UgcHJvcGVydHlOYW1lRW51bWVyYXRv
clNwYWNlOwotICAgIElzb1N1YnNwYWNlIHByb3BlcnR5VGFibGVTcGFjZTsKLSAgICBJc29TdWJz
cGFjZSByZWdFeHBTcGFjZTsKLSAgICBJc29TdWJzcGFjZSByZWdFeHBPYmplY3RTcGFjZTsKLSAg
ICBJc29TdWJzcGFjZSByb3BlU3RyaW5nU3BhY2U7Ci0gICAgSXNvU3Vic3BhY2Ugc2NvcGVkQXJn
dW1lbnRzU3BhY2U7Ci0gICAgSXNvU3Vic3BhY2Ugc3BhcnNlQXJyYXlWYWx1ZU1hcFNwYWNlOwot
ICAgIElzb1N1YnNwYWNlIHN0cmluZ1NwYWNlOwotICAgIElzb1N1YnNwYWNlIHN0cmluZ09iamVj
dFNwYWNlOwotICAgIElzb1N1YnNwYWNlIHN0cnVjdHVyZUNoYWluU3BhY2U7Ci0gICAgSXNvU3Vi
c3BhY2Ugc3RydWN0dXJlUmFyZURhdGFTcGFjZTsKLSAgICBJc29TdWJzcGFjZSBzdHJ1Y3R1cmVT
cGFjZTsKLSAgICBJc29TdWJzcGFjZSBicmFuZGVkU3RydWN0dXJlU3BhY2U7Ci0gICAgSXNvU3Vi
c3BhY2Ugc3ltYm9sVGFibGVTcGFjZTsKKyAgICBBTFdBWVNfSU5MSU5FIENvbXBsZXRlU3Vic3Bh
Y2UmIHByaW1pdGl2ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UoKSB7IHJldHVybiBoZWFwLnByaW1p
dGl2ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2U7IH0KKyAgICBBTFdBWVNfSU5MSU5FIENvbXBsZXRl
U3Vic3BhY2UmIGpzVmFsdWVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlKCkgeyByZXR1cm4gaGVhcC5q
c1ZhbHVlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZTsgfQorICAgIEFMV0FZU19JTkxJTkUgQ29tcGxl
dGVTdWJzcGFjZSYgaW1tdXRhYmxlQnV0dGVyZmx5SlNWYWx1ZUdpZ2FjYWdlQXV4aWxpYXJ5U3Bh
Y2UoKSB7IHJldHVybiBoZWFwLmltbXV0YWJsZUJ1dHRlcmZseUpTVmFsdWVHaWdhY2FnZUF1eGls
aWFyeVNwYWNlOyB9CisgICAgQUxXQVlTX0lOTElORSBDb21wbGV0ZVN1YnNwYWNlJiBnaWdhY2Fn
ZUF1eGlsaWFyeVNwYWNlKEdpZ2FjYWdlOjpLaW5kIGtpbmQpIHsgcmV0dXJuIGhlYXAuZ2lnYWNh
Z2VBdXhpbGlhcnlTcGFjZShraW5kKTsgfQorICAgIEFMV0FZU19JTkxJTkUgQ29tcGxldGVTdWJz
cGFjZSYgY2VsbFNwYWNlKCkgeyByZXR1cm4gaGVhcC5jZWxsU3BhY2U7IH0KKyAgICBBTFdBWVNf
SU5MSU5FIENvbXBsZXRlU3Vic3BhY2UmIHZhcmlhYmxlU2l6ZWRDZWxsU3BhY2UoKSB7IHJldHVy
biBoZWFwLnZhcmlhYmxlU2l6ZWRDZWxsU3BhY2U7IH0KKyAgICBBTFdBWVNfSU5MSU5FIENvbXBs
ZXRlU3Vic3BhY2UmIGRlc3RydWN0aWJsZU9iamVjdFNwYWNlKCkgeyByZXR1cm4gaGVhcC5kZXN0
cnVjdGlibGVPYmplY3RTcGFjZTsgfQorCisgICAgQUxXQVlTX0lOTElORSBJc29TdWJzcGFjZSYg
YXJyYXlTcGFjZSgpIHsgcmV0dXJuIGhlYXAuYXJyYXlTcGFjZTsgfQorICAgIEFMV0FZU19JTkxJ
TkUgSXNvU3Vic3BhY2UmIGJpZ0ludFNwYWNlKCkgeyByZXR1cm4gaGVhcC5iaWdJbnRTcGFjZTsg
fQorICAgIEFMV0FZU19JTkxJTkUgSXNvU3Vic3BhY2UmIGNhbGxlZVNwYWNlKCkgeyByZXR1cm4g
aGVhcC5jYWxsZWVTcGFjZTsgfQorICAgIEFMV0FZU19JTkxJTkUgSXNvU3Vic3BhY2UmIGNsb25l
ZEFyZ3VtZW50c1NwYWNlKCkgeyByZXR1cm4gaGVhcC5jbG9uZWRBcmd1bWVudHNTcGFjZTsgfQor
ICAgIEFMV0FZU19JTkxJTkUgSXNvU3Vic3BhY2UmIGN1c3RvbUdldHRlclNldHRlclNwYWNlKCkg
eyByZXR1cm4gaGVhcC5jdXN0b21HZXR0ZXJTZXR0ZXJTcGFjZTsgfQorICAgIEFMV0FZU19JTkxJ
TkUgSXNvU3Vic3BhY2UmIGRhdGVJbnN0YW5jZVNwYWNlKCkgeyByZXR1cm4gaGVhcC5kYXRlSW5z
dGFuY2VTcGFjZTsgfQorICAgIEFMV0FZU19JTkxJTkUgSXNvU3Vic3BhY2UmIGRvbUF0dHJpYnV0
ZUdldHRlclNldHRlclNwYWNlKCkgeyByZXR1cm4gaGVhcC5kb21BdHRyaWJ1dGVHZXR0ZXJTZXR0
ZXJTcGFjZTsgfQorICAgIEFMV0FZU19JTkxJTkUgSXNvU3Vic3BhY2UmIGV4Y2VwdGlvblNwYWNl
KCkgeyByZXR1cm4gaGVhcC5leGNlcHRpb25TcGFjZTsgfQorICAgIEFMV0FZU19JTkxJTkUgSXNv
U3Vic3BhY2UmIGV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2VTcGFjZSgpIHsgcmV0dXJuIGhlYXAu
ZXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZVNwYWNlOyB9CisgICAgQUxXQVlTX0lOTElORSBJc29T
dWJzcGFjZSYgZnVuY3Rpb25TcGFjZSgpIHsgcmV0dXJuIGhlYXAuZnVuY3Rpb25TcGFjZTsgfQor
ICAgIEFMV0FZU19JTkxJTkUgSXNvU3Vic3BhY2UmIGdldHRlclNldHRlclNwYWNlKCkgeyByZXR1
cm4gaGVhcC5nZXR0ZXJTZXR0ZXJTcGFjZTsgfQorICAgIEFMV0FZU19JTkxJTkUgSXNvU3Vic3Bh
Y2UmIGdsb2JhbExleGljYWxFbnZpcm9ubWVudFNwYWNlKCkgeyByZXR1cm4gaGVhcC5nbG9iYWxM
ZXhpY2FsRW52aXJvbm1lbnRTcGFjZTsgfQorICAgIEFMV0FZU19JTkxJTkUgSXNvU3Vic3BhY2Um
IGludGVybmFsRnVuY3Rpb25TcGFjZSgpIHsgcmV0dXJuIGhlYXAuaW50ZXJuYWxGdW5jdGlvblNw
YWNlOyB9CisgICAgQUxXQVlTX0lOTElORSBJc29TdWJzcGFjZSYganNQcm94eVNwYWNlKCkgeyBy
ZXR1cm4gaGVhcC5qc1Byb3h5U3BhY2U7IH0KKyAgICBBTFdBWVNfSU5MSU5FIElzb1N1YnNwYWNl
JiBuYXRpdmVFeGVjdXRhYmxlU3BhY2UoKSB7IHJldHVybiBoZWFwLm5hdGl2ZUV4ZWN1dGFibGVT
cGFjZTsgfQorICAgIEFMV0FZU19JTkxJTkUgSXNvU3Vic3BhY2UmIG51bWJlck9iamVjdFNwYWNl
KCkgeyByZXR1cm4gaGVhcC5udW1iZXJPYmplY3RTcGFjZTsgfQorICAgIEFMV0FZU19JTkxJTkUg
SXNvU3Vic3BhY2UmIHBsYWluT2JqZWN0U3BhY2UoKSB7IHJldHVybiBoZWFwLnBsYWluT2JqZWN0
U3BhY2U7IH0KKyAgICBBTFdBWVNfSU5MSU5FIElzb1N1YnNwYWNlJiBwcm9taXNlU3BhY2UoKSB7
IHJldHVybiBoZWFwLnByb21pc2VTcGFjZTsgfQorICAgIEFMV0FZU19JTkxJTkUgSXNvU3Vic3Bh
Y2UmIHByb3BlcnR5TmFtZUVudW1lcmF0b3JTcGFjZSgpIHsgcmV0dXJuIGhlYXAucHJvcGVydHlO
YW1lRW51bWVyYXRvclNwYWNlOyB9CisgICAgQUxXQVlTX0lOTElORSBJc29TdWJzcGFjZSYgcHJv
cGVydHlUYWJsZVNwYWNlKCkgeyByZXR1cm4gaGVhcC5wcm9wZXJ0eVRhYmxlU3BhY2U7IH0KKyAg
ICBBTFdBWVNfSU5MSU5FIElzb1N1YnNwYWNlJiByZWdFeHBTcGFjZSgpIHsgcmV0dXJuIGhlYXAu
cmVnRXhwU3BhY2U7IH0KKyAgICBBTFdBWVNfSU5MSU5FIElzb1N1YnNwYWNlJiByZWdFeHBPYmpl
Y3RTcGFjZSgpIHsgcmV0dXJuIGhlYXAucmVnRXhwT2JqZWN0U3BhY2U7IH0KKyAgICBBTFdBWVNf
SU5MSU5FIElzb1N1YnNwYWNlJiByb3BlU3RyaW5nU3BhY2UoKSB7IHJldHVybiBoZWFwLnJvcGVT
dHJpbmdTcGFjZTsgfQorICAgIEFMV0FZU19JTkxJTkUgSXNvU3Vic3BhY2UmIHNjb3BlZEFyZ3Vt
ZW50c1NwYWNlKCkgeyByZXR1cm4gaGVhcC5zY29wZWRBcmd1bWVudHNTcGFjZTsgfQorICAgIEFM
V0FZU19JTkxJTkUgSXNvU3Vic3BhY2UmIHNwYXJzZUFycmF5VmFsdWVNYXBTcGFjZSgpIHsgcmV0
dXJuIGhlYXAuc3BhcnNlQXJyYXlWYWx1ZU1hcFNwYWNlOyB9CisgICAgQUxXQVlTX0lOTElORSBJ
c29TdWJzcGFjZSYgc3RyaW5nU3BhY2UoKSB7IHJldHVybiBoZWFwLnN0cmluZ1NwYWNlOyB9Cisg
ICAgQUxXQVlTX0lOTElORSBJc29TdWJzcGFjZSYgc3RyaW5nT2JqZWN0U3BhY2UoKSB7IHJldHVy
biBoZWFwLnN0cmluZ09iamVjdFNwYWNlOyB9CisgICAgQUxXQVlTX0lOTElORSBJc29TdWJzcGFj
ZSYgc3RydWN0dXJlQ2hhaW5TcGFjZSgpIHsgcmV0dXJuIGhlYXAuc3RydWN0dXJlQ2hhaW5TcGFj
ZTsgfQorICAgIEFMV0FZU19JTkxJTkUgSXNvU3Vic3BhY2UmIHN0cnVjdHVyZVJhcmVEYXRhU3Bh
Y2UoKSB7IHJldHVybiBoZWFwLnN0cnVjdHVyZVJhcmVEYXRhU3BhY2U7IH0KKyAgICBBTFdBWVNf
SU5MSU5FIElzb1N1YnNwYWNlJiBzdHJ1Y3R1cmVTcGFjZSgpIHsgcmV0dXJuIGhlYXAuc3RydWN0
dXJlU3BhY2U7IH0KKyAgICBBTFdBWVNfSU5MSU5FIElzb1N1YnNwYWNlJiBicmFuZGVkU3RydWN0
dXJlU3BhY2UoKSB7IHJldHVybiBoZWFwLmJyYW5kZWRTdHJ1Y3R1cmVTcGFjZTsgfQorICAgIEFM
V0FZU19JTkxJTkUgSXNvU3Vic3BhY2UmIHN5bWJvbFRhYmxlU3BhY2UoKSB7IHJldHVybiBoZWFw
LnN5bWJvbFRhYmxlU3BhY2U7IH0KIAogI2RlZmluZSBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJ
TkVfTUVNQkVSKG5hbWUpIFwKICAgICB0ZW1wbGF0ZTxTdWJzcGFjZUFjY2VzcyBtb2RlPiBcCi0g
ICAgSXNvU3Vic3BhY2UqIG5hbWUoKSBcCi0gICAgeyBcCi0gICAgICAgIGlmIChtXyMjbmFtZSB8
fCBtb2RlID09IFN1YnNwYWNlQWNjZXNzOjpDb25jdXJyZW50bHkpIFwKLSAgICAgICAgICAgIHJl
dHVybiBtXyMjbmFtZS5nZXQoKTsgXAotICAgICAgICByZXR1cm4gbmFtZSMjU2xvdygpOyBcCi0g
ICAgfSBcCi0gICAgSlNfRVhQT1JUX1BSSVZBVEUgSXNvU3Vic3BhY2UqIG5hbWUjI1Nsb3coKTsg
XAotICAgIHN0ZDo6dW5pcXVlX3B0cjxJc29TdWJzcGFjZT4gbV8jI25hbWU7Ci0KKyAgICBBTFdB
WVNfSU5MSU5FIElzb1N1YnNwYWNlKiBuYW1lKCkgeyByZXR1cm4gaGVhcC5uYW1lPG1vZGU+KCk7
IH0KIAogI2lmIEpTQ19PQkpDX0FQSV9FTkFCTEVECiAgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0Vf
REVGSU5FX01FTUJFUihhcGlXcmFwcGVyT2JqZWN0U3BhY2UpCkBAIC02NTcsNzQgKzU2MywyMyBA
QCBwdWJsaWM6CiAjZW5kaWYKIAogI3VuZGVmIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9N
RU1CRVIKLSAgICAKLSAgICBJc29DZWxsU2V0IGV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2VzV2l0
aENvbnN0cmFpbnRzOwotICAgIElzb0NlbGxTZXQgZXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZXNX
aXRoRmluYWxpemVyczsKKworICAgIEFMV0FZU19JTkxJTkUgSXNvQ2VsbFNldCYgZXhlY3V0YWJs
ZVRvQ29kZUJsb2NrRWRnZXNXaXRoQ29uc3RyYWludHMoKSB7IHJldHVybiBoZWFwLmV4ZWN1dGFi
bGVUb0NvZGVCbG9ja0VkZ2VzV2l0aENvbnN0cmFpbnRzOyB9CisgICAgQUxXQVlTX0lOTElORSBJ
c29DZWxsU2V0JiBleGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlc1dpdGhGaW5hbGl6ZXJzKCkgeyBy
ZXR1cm4gaGVhcC5leGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlc1dpdGhGaW5hbGl6ZXJzOyB9CiAK
ICNkZWZpbmUgRFlOQU1JQ19TUEFDRV9BTkRfU0VUX0RFRklORV9NRU1CRVIobmFtZSkgXAogICAg
IHRlbXBsYXRlPFN1YnNwYWNlQWNjZXNzIG1vZGU+IFwKLSAgICBJc29TdWJzcGFjZSogbmFtZSgp
IFwKLSAgICB7IFwKLSAgICAgICAgaWYgKGF1dG8qIHNwYWNlQW5kU2V0ID0gbV8jI25hbWUuZ2V0
KCkpIFwKLSAgICAgICAgICAgIHJldHVybiAmc3BhY2VBbmRTZXQtPnNwYWNlOyBcCi0gICAgICAg
IGlmIChtb2RlID09IFN1YnNwYWNlQWNjZXNzOjpDb25jdXJyZW50bHkpIFwKLSAgICAgICAgICAg
IHJldHVybiBudWxscHRyOyBcCi0gICAgICAgIHJldHVybiBuYW1lIyNTbG93KCk7IFwKLSAgICB9
IFwKLSAgICBJc29TdWJzcGFjZSogbmFtZSMjU2xvdygpOyBcCi0gICAgc3RkOjp1bmlxdWVfcHRy
PFNwYWNlQW5kU2V0PiBtXyMjbmFtZTsKLSAgICAKLSAgICBzdHJ1Y3QgU3BhY2VBbmRTZXQgewot
ICAgICAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7CisgICAgQUxXQVlTX0lOTElO
RSBJc29TdWJzcGFjZSogbmFtZSgpIHsgcmV0dXJuIGhlYXAubmFtZTxtb2RlPigpOyB9CiAKLSAg
ICAgICAgSXNvU3Vic3BhY2Ugc3BhY2U7Ci0gICAgICAgIElzb0NlbGxTZXQgc2V0OwotICAgICAg
ICAKLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gQXJndW1lbnRzPgotICAgICAgICBTcGFj
ZUFuZFNldChBcmd1bWVudHMmJi4uLiBhcmd1bWVudHMpCi0gICAgICAgICAgICA6IHNwYWNlKHN0
ZDo6Zm9yd2FyZDxBcmd1bWVudHM+KGFyZ3VtZW50cykuLi4pCi0gICAgICAgICAgICAsIHNldChz
cGFjZSkKLSAgICAgICAgewotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBzdGF0aWMgSXNv
Q2VsbFNldCYgc2V0Rm9yKFN1YnNwYWNlJiBzcGFjZSkKLSAgICAgICAgewotICAgICAgICAgICAg
cmV0dXJuICpiaXR3aXNlX2Nhc3Q8SXNvQ2VsbFNldCo+KAotICAgICAgICAgICAgICAgIGJpdHdp
c2VfY2FzdDxjaGFyKj4oJnNwYWNlKSAtCi0gICAgICAgICAgICAgICAgT0JKRUNUX09GRlNFVE9G
KFNwYWNlQW5kU2V0LCBzcGFjZSkgKwotICAgICAgICAgICAgICAgIE9CSkVDVF9PRkZTRVRPRihT
cGFjZUFuZFNldCwgc2V0KSk7Ci0gICAgICAgIH0KLSAgICB9OwotICAgIAotICAgIFNwYWNlQW5k
U2V0IGNvZGVCbG9ja1NwYWNlOwotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuYz4KLSAgICB2
b2lkIGZvckVhY2hDb2RlQmxvY2tTcGFjZShjb25zdCBGdW5jJiBmdW5jKQotICAgIHsKLSAgICAg
ICAgLy8gVGhpcyBzaG91bGQgbm90IGluY2x1ZGUgd2ViQXNzZW1ibHlDb2RlQmxvY2tTcGFjZSBi
ZWNhdXNlIHRoaXMgaXMgYWJvdXQgc3Vic2NsYXNzZXMgb2YKLSAgICAgICAgLy8gSlNDOjpDb2Rl
QmxvY2suCi0gICAgICAgIGZ1bmMoY29kZUJsb2NrU3BhY2UpOwotICAgIH0KKyAgICB1c2luZyBT
cGFjZUFuZFNldCA9IEhlYXA6OlNwYWNlQW5kU2V0OworICAgIEFMV0FZU19JTkxJTkUgU3BhY2VB
bmRTZXQmIGNvZGVCbG9ja1NwYWNlKCkgeyByZXR1cm4gaGVhcC5jb2RlQmxvY2tTcGFjZTsgfQog
CiAgICAgRFlOQU1JQ19TUEFDRV9BTkRfU0VUX0RFRklORV9NRU1CRVIoZXZhbEV4ZWN1dGFibGVT
cGFjZSkKICAgICBEWU5BTUlDX1NQQUNFX0FORF9TRVRfREVGSU5FX01FTUJFUihtb2R1bGVQcm9n
cmFtRXhlY3V0YWJsZVNwYWNlKQotICAgIFNwYWNlQW5kU2V0IGZ1bmN0aW9uRXhlY3V0YWJsZVNw
YWNlOwotICAgIFNwYWNlQW5kU2V0IHByb2dyYW1FeGVjdXRhYmxlU3BhY2U7Ci0KLSAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBGdW5jPgotICAgIHZvaWQgZm9yRWFjaFNjcmlwdEV4ZWN1dGFibGVTcGFj
ZShjb25zdCBGdW5jJiBmdW5jKQotICAgIHsKLSAgICAgICAgaWYgKG1fZXZhbEV4ZWN1dGFibGVT
cGFjZSkKLSAgICAgICAgICAgIGZ1bmMoKm1fZXZhbEV4ZWN1dGFibGVTcGFjZSk7Ci0gICAgICAg
IGZ1bmMoZnVuY3Rpb25FeGVjdXRhYmxlU3BhY2UpOwotICAgICAgICBpZiAobV9tb2R1bGVQcm9n
cmFtRXhlY3V0YWJsZVNwYWNlKQotICAgICAgICAgICAgZnVuYygqbV9tb2R1bGVQcm9ncmFtRXhl
Y3V0YWJsZVNwYWNlKTsKLSAgICAgICAgZnVuYyhwcm9ncmFtRXhlY3V0YWJsZVNwYWNlKTsKLSAg
ICB9Ci0KLSAgICBTcGFjZUFuZFNldCB1bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZVNwYWNlOwog
Ci0jdW5kZWYgRFlOQU1JQ19TUEFDRV9BTkRfU0VUX0RFRklORV9NRU1CRVIKKyAgICBBTFdBWVNf
SU5MSU5FIFNwYWNlQW5kU2V0JiBmdW5jdGlvbkV4ZWN1dGFibGVTcGFjZSgpIHsgcmV0dXJuIGhl
YXAuZnVuY3Rpb25FeGVjdXRhYmxlU3BhY2U7IH0KKyAgICBBTFdBWVNfSU5MSU5FIFNwYWNlQW5k
U2V0JiBwcm9ncmFtRXhlY3V0YWJsZVNwYWNlKCkgeyByZXR1cm4gaGVhcC5wcm9ncmFtRXhlY3V0
YWJsZVNwYWNlOyB9CisgICAgQUxXQVlTX0lOTElORSBTcGFjZUFuZFNldCYgdW5saW5rZWRGdW5j
dGlvbkV4ZWN1dGFibGVTcGFjZSgpIHsgcmV0dXJuIGhlYXAudW5saW5rZWRGdW5jdGlvbkV4ZWN1
dGFibGVTcGFjZTsgfQogCiAgICAgVk1UeXBlIHZtVHlwZTsKICAgICBDbGllbnREYXRhKiBjbGll
bnREYXRhOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha01hcFByb3Rv
dHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dlYWtN
YXBQcm90b3R5cGUuaAkocmV2aXNpb24gMjg2MDI0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvV2Vha01hcFByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00MSw3ICs0MSw3
IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkK
ICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKFdlYWtN
YXBQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7
CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIHN0
YXRpYyBXZWFrTWFwUHJvdG90eXBlKiBjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1dlYWtPYmplY3RSZWZQcm90b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFrT2JqZWN0UmVmUHJvdG90eXBlLmgJKHJldmlz
aW9uIDI4NjAyNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dlYWtPYmplY3RS
ZWZQcm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzcsNyArMzcsNyBAQCBwdWJsaWM6CiAg
ICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewogICAgICAg
ICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShXZWFrT2JqZWN0UmVmUHJvdG90
eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAg
ICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgV2Vh
a09iamVjdFJlZlByb3RvdHlwZSogY3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9XZWFrU2V0UHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvV2Vha1NldFByb3RvdHlwZS5oCShyZXZpc2lvbiAyODYwMjQpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFrU2V0UHJvdG90eXBlLmgJKHdvcmtp
bmcgY29weSkKQEAgLTQxLDcgKzQxLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJc29TdWJzcGFj
ZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09f
U1VCU1BBQ0VfU0hBUkFCTEUoV2Vha1NldFByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVy
biAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNw
YWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIFdlYWtTZXRQcm90b3R5cGUqIGNyZWF0ZShWTSYg
dm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlKQpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0pTRG9sbGFyVk0uY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxhclZNLmNwcAkocmV2aXNp
b24gMjg2MDI0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0pTRG9sbGFyVk0uY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xMzMsNyArMTMzLDcgQEAgcHVibGljOgogICAgIHRlbXBsYXRl
PHR5cGVuYW1lIENlbGxUeXBlLCBTdWJzcGFjZUFjY2Vzcz4KICAgICBzdGF0aWMgQ29tcGxldGVT
dWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKLSAgICAgICAgcmV0dXJuICZ2bS5j
ZWxsU3BhY2U7CisgICAgICAgIHJldHVybiAmdm0uY2VsbFNwYWNlKCk7CiAgICAgfQogCiAgICAg
SlNEb2xsYXJWTUNhbGxGcmFtZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQpAQCAtMjIz
LDcgKzIyMyw3IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vi
c3BhY2VBY2Nlc3M+CiAgICAgc3RhdGljIENvbXBsZXRlU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZN
JiB2bSkKICAgICB7Ci0gICAgICAgIHJldHVybiAmdm0uY2VsbFNwYWNlOworICAgICAgICByZXR1
cm4gJnZtLmNlbGxTcGFjZSgpOwogICAgIH0KIAogICAgIFJvb3QqIHJvb3QoKSBjb25zdCB7IHJl
dHVybiBtX3Jvb3QuZ2V0KCk7IH0KQEAgLTI4Nyw3ICsyODcsNyBAQCBwdWJsaWM6CiAgICAgdGVt
cGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNzPgogICAgIHN0YXRpYyBDb21w
bGV0ZVN1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewotICAgICAgICByZXR1cm4g
JnZtLmRlc3RydWN0aWJsZU9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLmRlc3RydWN0
aWJsZU9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAgUm9vdChWTSYgdm0sIFN0cnVjdHVyZSog
c3RydWN0dXJlKQpAQCAtMzU0LDcgKzM1NCw3IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBDZWxsVHlwZSwgU3Vic3BhY2VBY2Nlc3M+CiAgICAgc3RhdGljIENvbXBsZXRlU3Vic3Bh
Y2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7Ci0gICAgICAgIHJldHVybiAmdm0uY2VsbFNw
YWNlOworICAgICAgICByZXR1cm4gJnZtLmNlbGxTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRp
YyBTaW1wbGVPYmplY3QqIGNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QpCkBAIC00MjYsNyArNDI2LDcgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENl
bGxUeXBlLCBTdWJzcGFjZUFjY2Vzcz4KICAgICBzdGF0aWMgQ29tcGxldGVTdWJzcGFjZSogc3Vi
c3BhY2VGb3IoVk0mIHZtKQogICAgIHsKLSAgICAgICAgcmV0dXJuICZ2bS5jZWxsU3BhY2U7Cisg
ICAgICAgIHJldHVybiAmdm0uY2VsbFNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIFN0cnVj
dHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgSlNWYWx1ZSBwcm90b3R5cGUpCkBAIC01MDgsNyArNTA4LDcgQEAgcHVibGljOgogICAgIHRl
bXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlLCBTdWJzcGFjZUFjY2Vzcz4KICAgICBzdGF0aWMgQ29t
cGxldGVTdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKLSAgICAgICAgcmV0dXJu
ICZ2bS5jZWxsU3BhY2U7CisgICAgICAgIHJldHVybiAmdm0uY2VsbFNwYWNlKCk7CiAgICAgfQog
CiAgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCkBAIC01OTAsNyArNTkwLDcg
QEAgSUdOT1JFX1dBUk5JTkdTX0VORAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlLCBT
dWJzcGFjZUFjY2Vzcz4KICAgICBzdGF0aWMgQ29tcGxldGVTdWJzcGFjZSogc3Vic3BhY2VGb3Io
Vk0mIHZtKQogICAgIHsKLSAgICAgICAgcmV0dXJuICZ2bS5jZWxsU3BhY2U7CisgICAgICAgIHJl
dHVybiAmdm0uY2VsbFNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIFJ1bnRpbWVBcnJheSog
Y3JlYXRlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1l
KQpAQCAtNzcyLDcgKzc3Miw3IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxs
VHlwZSwgU3Vic3BhY2VBY2Nlc3M+CiAgICAgc3RhdGljIENvbXBsZXRlU3Vic3BhY2UqIHN1YnNw
YWNlRm9yKFZNJiB2bSkKICAgICB7Ci0gICAgICAgIHJldHVybiAmdm0uY2VsbFNwYWNlOworICAg
ICAgICByZXR1cm4gJnZtLmNlbGxTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBTdHJ1Y3R1
cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IEpTVmFsdWUgcHJvdG90eXBlKQpAQCAtODcyLDcgKzg3Miw3IEBAIHB1YmxpYzoKICAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vic3BhY2VBY2Nlc3M+CiAgICAgc3RhdGljIENvbXBs
ZXRlU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7Ci0gICAgICAgIHJldHVybiAm
dm0uY2VsbFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLmNlbGxTcGFjZSgpOwogICAgIH0KIAog
ICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQpAQCAtODk3LDcgKzg5Nyw3IEBA
IHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vic3BhY2VBY2Nlc3M+
CiAgICAgc3RhdGljIENvbXBsZXRlU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7
Ci0gICAgICAgIHJldHVybiAmdm0uY2VsbFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLmNlbGxT
cGFjZSgpOwogICAgIH0KIAogICAgIE9iamVjdERvaW5nU2lkZUVmZmVjdFB1dFdpdGhvdXRDb3Jy
ZWN0U2xvdFN0YXR1cyhWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQpAQCAtOTQ4LDcgKzk0
OCw3IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vic3BhY2VB
Y2Nlc3M+CiAgICAgc3RhdGljIENvbXBsZXRlU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkK
ICAgICB7Ci0gICAgICAgIHJldHVybiAmdm0uY2VsbFNwYWNlOworICAgICAgICByZXR1cm4gJnZt
LmNlbGxTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVj
dHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90
eXBlKQpAQCAtMTU4NSw3ICsxNTg1LDcgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1l
IENlbGxUeXBlLCBTdWJzcGFjZUFjY2Vzcz4KICAgICBzdGF0aWMgQ29tcGxldGVTdWJzcGFjZSog
c3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKLSAgICAgICAgcmV0dXJuICZ2bS5jZWxsU3BhY2U7
CisgICAgICAgIHJldHVybiAmdm0uY2VsbFNwYWNlKCk7CiAgICAgfQogCiAgICAgSlNUZXN0Q3Vz
dG9tR2V0dGVyU2V0dGVyKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCkBAIC0xODM4LDcg
KzE4MzgsNyBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUsIFN1YnNw
YWNlQWNjZXNzPgogICAgIHN0YXRpYyBDb21wbGV0ZVN1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYg
dm0pCiAgICAgewotICAgICAgICByZXR1cm4gJnZtLmRlc3RydWN0aWJsZU9iamVjdFNwYWNlOwor
ICAgICAgICByZXR1cm4gJnZtLmRlc3RydWN0aWJsZU9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAg
ICAgY2xhc3MgQ2xpZW50IGZpbmFsIDogcHVibGljIFdhc206OlN0cmVhbWluZ1BhcnNlckNsaWVu
dCB7CkBAIC0xOTMzLDcgKzE5MzMsNyBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUg
Q2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNzPgogICAgIHN0YXRpYyBDb21wbGV0ZVN1YnNwYWNlKiBz
dWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewotICAgICAgICByZXR1cm4gJnZtLmRlc3RydWN0aWJs
ZU9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLmRlc3RydWN0aWJsZU9iamVjdFNwYWNl
KCk7CiAgICAgfQogCiAgICAgV2FzbVN0cmVhbWluZ0NvbXBpbGVyKFZNJiB2bSwgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUsIFdhc206OkNvbXBpbGVyTW9kZSBjb21waWxlck1vZGUsIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIEpTUHJvbWlzZSogcHJvbWlzZSwgSlNPYmplY3QqIGltcG9ydE9i
amVjdCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxhclZNLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0pTRG9sbGFyVk0uaAkocmV2
aXNpb24gMjg2MDI0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0pTRG9sbGFyVk0u
aAkod29ya2luZyBjb3B5KQpAQCAtNDIsNyArNDIsNyBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8
dHlwZW5hbWUgQ2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNzPgogICAgIHN0YXRpYyBDb21wbGV0ZVN1
YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewotICAgICAgICByZXR1cm4gJnZtLmNl
bGxTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5jZWxsU3BhY2UoKTsKICAgICB9CiAgICAgCiAg
ICAgREVDTEFSRV9FWFBPUlRfSU5GTzsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L2pzL0pTV2ViQXNzZW1ibHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9qcy9KU1dlYkFzc2VtYmx5LmgJKHJldmlzaW9uIDI4NjAyNCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHkuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAxOSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAyMSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQx
LDcgKzQxLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3Io
Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFC
TEUoSlNXZWJBc3NlbWJseSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RT
cGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAg
ICAgc3RhdGljIEpTV2ViQXNzZW1ibHkqIGNyZWF0ZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgU3Ry
dWN0dXJlKik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJs
eUNvbXBpbGVFcnJvclByb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5Q29tcGlsZUVycm9yUHJvdG90eXBlLmgJKHJldmlzaW9u
IDI4NjAyNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5Q29t
cGlsZUVycm9yUHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgot
ICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00MSw3ICs0MSw3IEBAIHB1
YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7
CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKFdlYkFzc2VtYmx5
Q29tcGlsZUVycm9yUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9i
amVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9
CiAKICAgICBzdGF0aWMgV2ViQXNzZW1ibHlDb21waWxlRXJyb3JQcm90b3R5cGUqIGNyZWF0ZShW
TSYsIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUV4Y2VwdGlvblByb3RvdHlwZS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5RXhjZXB0aW9uUHJv
dG90eXBlLmgJKHJldmlzaW9uIDI4NjAyNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L2pzL1dlYkFzc2VtYmx5RXhjZXB0aW9uUHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQx
LDcgKzQxLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3Io
Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFC
TEUoV2ViQXNzZW1ibHlFeGNlcHRpb25Qcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4g
JnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFj
ZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBXZWJBc3NlbWJseUV4Y2VwdGlvblByb3RvdHlwZSog
Y3JlYXRlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqKTsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5R2xvYmFsUHJvdG90eXBlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlHbG9iYWxQ
cm90b3R5cGUuaAkocmV2aXNpb24gMjg2MDI0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vanMvV2ViQXNzZW1ibHlHbG9iYWxQcm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE5LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00MCw3ICs0
MCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2
bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKFdl
YkFzc2VtYmx5R2xvYmFsUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFp
bk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAg
ICB9CiAKICAgICBzdGF0aWMgV2ViQXNzZW1ibHlHbG9iYWxQcm90b3R5cGUqIGNyZWF0ZShWTSYs
IEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9qcy9XZWJBc3NlbWJseUluc3RhbmNlUHJvdG90eXBlLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlJbnN0YW5jZVByb3RvdHlw
ZS5oCShyZXZpc2lvbiAyODYwMjQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9X
ZWJBc3NlbWJseUluc3RhbmNlUHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1
IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00MSw3ICs0
MSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2
bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKFdl
YkFzc2VtYmx5SW5zdGFuY2VQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBs
YWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwog
ICAgIH0KIAogICAgIHN0YXRpYyBXZWJBc3NlbWJseUluc3RhbmNlUHJvdG90eXBlKiBjcmVhdGUo
Vk0mLCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSopOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlMaW5rRXJyb3JQcm90b3R5cGUuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUxpbmtFcnJvclBy
b3RvdHlwZS5oCShyZXZpc2lvbiAyODYwMjQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9qcy9XZWJBc3NlbWJseUxpbmtFcnJvclByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNi0yMDE5IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNi0yMDIxIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAt
NDEsNyArNDEsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZv
cihWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFS
QUJMRShXZWJBc3NlbWJseUxpbmtFcnJvclByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVy
biAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNw
YWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIFdlYkFzc2VtYmx5TGlua0Vycm9yUHJvdG90eXBl
KiBjcmVhdGUoVk0mLCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSopOwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlNZW1vcnlQcm90b3R5cGUuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseU1lbW9y
eVByb3RvdHlwZS5oCShyZXZpc2lvbiAyODYwMjQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9qcy9XZWJBc3NlbWJseU1lbW9yeVByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNi0yMDE5IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNi0yMDIxIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAt
NDEsNyArNDEsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZv
cihWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFS
QUJMRShXZWJBc3NlbWJseU1lbW9yeVByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAm
dm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNl
KCk7CiAgICAgfQogCiAgICAgc3RhdGljIFdlYkFzc2VtYmx5TWVtb3J5UHJvdG90eXBlKiBjcmVh
dGUoVk0mLCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSopOwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlNb2R1bGVQcm90b3R5cGUuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseU1vZHVsZVByb3Rv
dHlwZS5oCShyZXZpc2lvbiAyODYwMjQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9q
cy9XZWJBc3NlbWJseU1vZHVsZVByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEs
NSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNi0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNi0yMDIxIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDEsNyAr
NDEsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYg
dm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShX
ZWJBc3NlbWJseU1vZHVsZVByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxh
aW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAg
ICAgfQogCiAgICAgc3RhdGljIFdlYkFzc2VtYmx5TW9kdWxlUHJvdG90eXBlKiBjcmVhdGUoVk0m
LCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSopOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vanMvV2ViQXNzZW1ibHlSdW50aW1lRXJyb3JQcm90b3R5cGUuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseVJ1bnRpbWVFcnJv
clByb3RvdHlwZS5oCShyZXZpc2lvbiAyODYwMjQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9qcy9XZWJBc3NlbWJseVJ1bnRpbWVFcnJvclByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNi0yMDE5IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNi0yMDIxIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwpAQCAtNDEsNyArNDEsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJz
cGFjZUZvcihWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFD
RV9TSEFSQUJMRShXZWJBc3NlbWJseVJ1bnRpbWVFcnJvclByb3RvdHlwZSwgQmFzZSk7Ci0gICAg
ICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFp
bk9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIFdlYkFzc2VtYmx5UnVudGltZUVy
cm9yUHJvdG90eXBlKiBjcmVhdGUoVk0mLCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSopOwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlUYWJsZVByb3Rv
dHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFz
c2VtYmx5VGFibGVQcm90b3R5cGUuaAkocmV2aXNpb24gMjg2MDI0KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlUYWJsZVByb3RvdHlwZS5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNi0yMDE5IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNi0yMDIxIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwpAQCAtNDEsNyArNDEsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBz
dWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJT
UEFDRV9TSEFSQUJMRShXZWJBc3NlbWJseVRhYmxlUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAg
cmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2Jq
ZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgV2ViQXNzZW1ibHlUYWJsZVByb3RvdHlw
ZSogY3JlYXRlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqKTsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5VGFnUHJvdG90eXBlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlUYWdQcm90
b3R5cGUuaAkocmV2aXNpb24gMjg2MDI0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
anMvV2ViQXNzZW1ibHlUYWdQcm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtNDAsNyArNDAs
NyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0p
CiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShXZWJB
c3NlbWJseVRhZ1Byb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmpl
Y3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQog
CiAgICAgc3RhdGljIFdlYkFzc2VtYmx5VGFnUHJvdG90eXBlKiBjcmVhdGUoVk0mLCBKU0dsb2Jh
bE9iamVjdCosIFN0cnVjdHVyZSopOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNET01Bc3luY0l0ZXJhdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNET01Bc3luY0l0ZXJhdG9yLmgJKHJldmlzaW9uIDI4NjAyNCkKKysrIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQXN5bmNJdGVyYXRvci5oCSh3b3JraW5nIGNvcHkpCkBA
IC00OCw3ICs0OCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vi
c3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19T
VUJTUEFDRV9TSEFSQUJMRShKU0RPTUFzeW5jSXRlcmF0b3JQcm90b3R5cGUsIEJhc2UpOwotICAg
ICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxh
aW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBKU0RPTUFzeW5jSXRlcmF0b3JQ
cm90b3R5cGUqIGNyZWF0ZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlKQpJbmRleDogU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNET01JdGVyYXRvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRE9NSXRlcmF0b3IuaAkocmV2aXNpb24gMjg2MDI0KQorKysgU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01JdGVyYXRvci5oCSh3b3JraW5nIGNvcHkpCkBAIC01
NSw3ICs1NSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3Bh
Y2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJT
UEFDRV9TSEFSQUJMRShKU0RPTUl0ZXJhdG9yUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0
dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0
U3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgSlNET01JdGVyYXRvclByb3RvdHlwZSogY3Jl
YXRlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6
U3RydWN0dXJlKiBzdHJ1Y3R1cmUpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0ZpbGVTeXN0ZW1EaXJlY3RvcnlIYW5kbGVJdGVyYXRvci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNGaWxlU3lzdGVtRGlyZWN0b3J5SGFuZGxlSXRlcmF0
b3IuY3BwCShyZXZpc2lvbiAyODYwMjQpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0ZpbGVTeXN0ZW1EaXJlY3RvcnlIYW5kbGVJdGVyYXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTU1LDkgKzU1LDkgQEAgSXNvU3Vic3BhY2UqIEpTRmlsZVN5c3RlbURpcmVjdG9yeUhhbmRsZQog
ICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2Zf
djxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU0ZpbGVTeXN0ZW1EaXJlY3RvcnlIYW5kbGVJ
dGVyYXRvcj4gfHwgIUpTRmlsZVN5c3RlbURpcmVjdG9yeUhhbmRsZUl0ZXJhdG9yOjpuZWVkc0Rl
c3RydWN0aW9uKTsKICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNE
ZXN0cnVjdGlibGVPYmplY3QsIEpTRmlsZVN5c3RlbURpcmVjdG9yeUhhbmRsZUl0ZXJhdG9yPikK
LSAgICAgICAgY2xpZW50RGF0YS5zZXRGaWxlU3lzdGVtRGlyZWN0b3J5SGFuZGxlSXRlcmF0b3JT
cGFjZShtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2
bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTRmlsZVN5c3RlbURpcmVj
dG9yeUhhbmRsZUl0ZXJhdG9yKSk7CisgICAgICAgIGNsaWVudERhdGEuc2V0RmlsZVN5c3RlbURp
cmVjdG9yeUhhbmRsZUl0ZXJhdG9yU3BhY2UobWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NV
QlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCks
IEpTRmlsZVN5c3RlbURpcmVjdG9yeUhhbmRsZUl0ZXJhdG9yKSk7CiAgICAgZWxzZQotICAgICAg
ICBjbGllbnREYXRhLnNldEZpbGVTeXN0ZW1EaXJlY3RvcnlIYW5kbGVJdGVyYXRvclNwYWNlKG1h
a2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxI
ZWFwQ2VsbFR5cGUuZ2V0KCksIEpTRmlsZVN5c3RlbURpcmVjdG9yeUhhbmRsZUl0ZXJhdG9yKSk7
CisgICAgICAgIGNsaWVudERhdGEuc2V0RmlsZVN5c3RlbURpcmVjdG9yeUhhbmRsZUl0ZXJhdG9y
U3BhY2UobWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwg
dm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU0ZpbGVTeXN0ZW1EaXJlY3RvcnlIYW5kbGVJdGVyYXRv
cikpOwogICAgIGF1dG8qIHNwYWNlID0gY2xpZW50RGF0YS5maWxlU3lzdGVtRGlyZWN0b3J5SGFu
ZGxlSXRlcmF0b3JTcGFjZSgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1j
b2RlIikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRl
eDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV2ViQ29yZUpTQ2xpZW50RGF0YS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV2ViQ29yZUpTQ2xpZW50RGF0
YS5jcHAJKHJldmlzaW9uIDI4NjAyNCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dl
YkNvcmVKU0NsaWVudERhdGEuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxNy0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNy0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNzcsMTUgKzc3LDE1IEBA
IEpTVk1DbGllbnREYXRhOjpKU1ZNQ2xpZW50RGF0YShWTSYgdm0pCiAgICAgLCBtX2hlYXBDZWxs
VHlwZUZvckpTQXVkaW9Xb3JrbGV0R2xvYmFsU2NvcGUoSlNDOjpJc29IZWFwQ2VsbFR5cGU6OmNy
ZWF0ZTxKU0F1ZGlvV29ya2xldEdsb2JhbFNjb3BlPigpKQogI2VuZGlmCiAgICAgLCBtX2hlYXBD
ZWxsVHlwZUZvckpTSURCU2VyaWFsaXphdGlvbkdsb2JhbE9iamVjdChKU0M6Oklzb0hlYXBDZWxs
VHlwZTo6Y3JlYXRlPEpTSURCU2VyaWFsaXphdGlvbkdsb2JhbE9iamVjdD4oKSkKLSAgICAsIG1f
ZG9tQnVpbHRpbkNvbnN0cnVjdG9yU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0u
Y2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNET01CdWlsdGluQ29uc3RydWN0b3JCYXNlKQotICAg
ICwgbV9kb21Db25zdHJ1Y3RvclNwYWNlIElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNl
bGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTRE9NQ29uc3RydWN0b3JCYXNlKQotICAgICwgbV9kb21O
YW1lc3BhY2VPYmplY3RTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVh
cENlbGxUeXBlLmdldCgpLCBKU0RPTU9iamVjdCkKLSAgICAsIG1fZG9tV2luZG93UHJvcGVydGll
c1NwYWNlIElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUuZ2V0
KCksIEpTRE9NV2luZG93UHJvcGVydGllcykKLSAgICAsIG1fcnVudGltZUFycmF5U3BhY2UgSVNP
X1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgbV9ydW50aW1lQXJyYXlIZWFwQ2VsbFR5cGUuZ2V0KCks
IFJ1bnRpbWVBcnJheSkKLSAgICAsIG1fcnVudGltZU1ldGhvZFNwYWNlIElTT19TVUJTUEFDRV9J
TklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIFJ1bnRpbWVNZXRob2QpIC8v
IEhhc2g6MHhmNzBjNGE4NQotICAgICwgbV9ydW50aW1lT2JqZWN0U3BhY2UgSVNPX1NVQlNQQUNF
X0lOSVQodm0uaGVhcCwgbV9ydW50aW1lT2JqZWN0SGVhcENlbGxUeXBlLmdldCgpLCBKU0M6OkJp
bmRpbmdzOjpSdW50aW1lT2JqZWN0KQotICAgICwgbV93aW5kb3dQcm94eVNwYWNlIElTT19TVUJT
UEFDRV9JTklUKHZtLmhlYXAsIG1fd2luZG93UHJveHlIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTV2lu
ZG93UHJveHkpCi0gICAgLCBtX2lkYlNlcmlhbGl6YXRpb25TcGFjZSBJU09fU1VCU1BBQ0VfSU5J
VCh2bS5oZWFwLCBtX2hlYXBDZWxsVHlwZUZvckpTSURCU2VyaWFsaXphdGlvbkdsb2JhbE9iamVj
dC5nZXQoKSwgSlNJREJTZXJpYWxpemF0aW9uR2xvYmFsT2JqZWN0KQorICAgICwgbV9kb21CdWls
dGluQ29uc3RydWN0b3JTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVh
cENlbGxUeXBlKCksIEpTRE9NQnVpbHRpbkNvbnN0cnVjdG9yQmFzZSkKKyAgICAsIG1fZG9tQ29u
c3RydWN0b3JTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxU
eXBlKCksIEpTRE9NQ29uc3RydWN0b3JCYXNlKQorICAgICwgbV9kb21OYW1lc3BhY2VPYmplY3RT
cGFjZSBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCksIEpT
RE9NT2JqZWN0KQorICAgICwgbV9kb21XaW5kb3dQcm9wZXJ0aWVzU3BhY2UgSVNPX1NVQlNQQUNF
X0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU0RPTVdpbmRvd1Byb3BlcnRp
ZXMpCisgICAgLCBtX3J1bnRpbWVBcnJheVNwYWNlIElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAs
ICptX3J1bnRpbWVBcnJheUhlYXBDZWxsVHlwZSwgUnVudGltZUFycmF5KQorICAgICwgbV9ydW50
aW1lTWV0aG9kU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxs
VHlwZSgpLCBSdW50aW1lTWV0aG9kKSAvLyBIYXNoOjB4ZjcwYzRhODUKKyAgICAsIG1fcnVudGlt
ZU9iamVjdFNwYWNlIElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICptX3J1bnRpbWVPYmplY3RI
ZWFwQ2VsbFR5cGUsIEpTQzo6QmluZGluZ3M6OlJ1bnRpbWVPYmplY3QpCisgICAgLCBtX3dpbmRv
d1Byb3h5U3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKm1fd2luZG93UHJveHlIZWFw
Q2VsbFR5cGUsIEpTV2luZG93UHJveHkpCisgICAgLCBtX2lkYlNlcmlhbGl6YXRpb25TcGFjZSBJ
U09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqbV9oZWFwQ2VsbFR5cGVGb3JKU0lEQlNlcmlhbGl6
YXRpb25HbG9iYWxPYmplY3QsIEpTSURCU2VyaWFsaXphdGlvbkdsb2JhbE9iamVjdCkKICAgICAs
IG1fc3Vic3BhY2VzKG1ha2VVbmlxdWU8RE9NSXNvU3Vic3BhY2VzPigpKQogewogfQpJbmRleDog
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMu
cG0JKHJldmlzaW9uIDI4NjAyNCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
Q29kZUdlbmVyYXRvckpTLnBtCSh3b3JraW5nIGNvcHkpCkBAIC00ODUyLDEzICs0ODUyLDEzIEBA
IHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAg
aWYgKGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3Ike2ludGVyZmFjZU5hbWV9Lmdl
dCgpKVxuIik7CiAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIHJldHVybiBzcGFjZTtc
biIpOwogICAgIGlmIChJc0RPTUdsb2JhbE9iamVjdCgkaW50ZXJmYWNlKSkgewotICAgICAgICBw
dXNoKEBpbXBsQ29udGVudCwgIiAgICBzcGFjZXMubV9zdWJzcGFjZUZvciR7aW50ZXJmYWNlTmFt
ZX0gPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCBj
bGllbnREYXRhLm1faGVhcENlbGxUeXBlRm9yJHtjbGFzc05hbWV9LmdldCgpLCAke2NsYXNzTmFt
ZX0pO1xuIik7CisgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHNwYWNlcy5tX3N1YnNw
YWNlRm9yJHtpbnRlcmZhY2VOYW1lfSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJT
UEFDRV9JTklUKHZtLmhlYXAsICpjbGllbnREYXRhLm1faGVhcENlbGxUeXBlRm9yJHtjbGFzc05h
bWV9LCAke2NsYXNzTmFtZX0pO1xuIik7CiAgICAgfSBlbHNlIHsKICAgICAgICAgcHVzaChAaW1w
bENvbnRlbnQsICIgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVz
dHJ1Y3RpYmxlT2JqZWN0LCAke2NsYXNzTmFtZX0+IHx8ICEke2NsYXNzTmFtZX06Om5lZWRzRGVz
dHJ1Y3Rpb24pO1xuIik7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGlmIGNvbnN0
ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgJHtjbGFz
c05hbWV9PilcbiIpOwotICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgc3BhY2Vz
Lm1fc3Vic3BhY2VGb3Ike2ludGVyZmFjZU5hbWV9ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4g
SVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxU
eXBlLmdldCgpLCAke2NsYXNzTmFtZX0pO1xuIik7CisgICAgICAgIHB1c2goQGltcGxDb250ZW50
LCAiICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvciR7aW50ZXJmYWNlTmFtZX0gPSBtYWtlVW5p
cXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGli
bGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwgJHtjbGFzc05hbWV9KTtcbiIpOwogICAgICAgICBwdXNo
KEBpbXBsQ29udGVudCwgIiAgICBlbHNlXG4iKTsKLSAgICAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICIgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yJHtpbnRlcmZhY2VOYW1lfSA9IG1ha2VVbmlx
dWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2Vs
bFR5cGUuZ2V0KCksICR7Y2xhc3NOYW1lfSk7XG4iKTsKKyAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICIgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yJHtpbnRlcmZhY2VOYW1lfSA9IG1ha2VV
bmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFw
Q2VsbFR5cGUoKSwgJHtjbGFzc05hbWV9KTtcbiIpOwogICAgIH0KICAgICBwdXNoKEBpbXBsQ29u
dGVudCwgIiAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yJHtpbnRlcmZhY2VO
YW1lfS5nZXQoKTtcbiIpOwogICAgIHB1c2goQGltcGxDb250ZW50LCAiSUdOT1JFX1dBUk5JTkdT
X0JFR0lOKFwidW5yZWFjaGFibGUtY29kZVwiKVxuIik7CkBAIC02NzMxLDkgKzY3MzEsOSBAQCBw
dWJsaWM6CiAgICAgICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAgICAgIHN0YXRpY19hc3NlcnQo
c3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgJHtpdGVyYXRvck5h
bWV9PiB8fCAhJHtpdGVyYXRvck5hbWV9OjpuZWVkc0Rlc3RydWN0aW9uKTsKICAgICAgICAgaWYg
Y29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCAk
e2l0ZXJhdG9yTmFtZX0+KQotICAgICAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3Ike2l0ZXJh
dG9yTmFtZX0gPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5o
ZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuZ2V0KCksICR7aXRlcmF0b3JO
YW1lfSk7CisgICAgICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvciR7aXRlcmF0b3JOYW1lfSA9
IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRl
c3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpLCAke2l0ZXJhdG9yTmFtZX0pOwogICAgICAg
ICBlbHNlCi0gICAgICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvciR7aXRlcmF0b3JOYW1lfSA9
IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNl
bGxIZWFwQ2VsbFR5cGUuZ2V0KCksICR7aXRlcmF0b3JOYW1lfSk7CisgICAgICAgICAgICBzcGFj
ZXMubV9zdWJzcGFjZUZvciR7aXRlcmF0b3JOYW1lfSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+
IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgJHtpdGVy
YXRvck5hbWV9KTsKICAgICAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvciR7
aXRlcmF0b3JOYW1lfS5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTihcInVucmVhY2hhYmxl
LWNvZGVcIikKIElHTk9SRV9XQVJOSU5HU19CRUdJTihcInRhdXRvbG9naWNhbC1jb21wYXJlXCIp
CkBAIC03NTI5LDcgKzc1MjksNyBAQCBzdWIgR2VuZXJhdGVQcm90b3R5cGVEZWNsYXJhdGlvbgog
ICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vi
c3BhY2VGb3IoSlNDOjpWTSYgdm0pXG4iKTsKICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAg
e1xuIik7CiAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgICAgICBTVEFUSUNfQVNTRVJUX0lT
T19TVUJTUEFDRV9TSEFSQUJMRSgke3Byb3RvdHlwZUNsYXNzTmFtZX0sIEJhc2UpO1xuIik7Ci0g
ICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3Bh
Y2U7XG4iKTsKKyAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgICAgIHJldHVybiAmdm0ucGxh
aW5PYmplY3RTcGFjZSgpO1xuIik7CiAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIH1cbiIp
OwogCiAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSog
Y3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpXG4iKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU0RPTVdpbmRvdy5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTRE9NV2luZG93LmNwcAko
cmV2aXNpb24gMjg2MDI0KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTRE9NV2luZG93LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzY5LDcgKzM2OSw3IEBAIEpT
Qzo6SXNvU3Vic3BhY2UqIEpTRE9NV2luZG93OjpzdWJzcGFjZUYKICAgICBhdXRvJiBzcGFjZXMg
PSBjbGllbnREYXRhLnN1YnNwYWNlcygpOwogICAgIGlmIChhdXRvKiBzcGFjZSA9IHNwYWNlcy5t
X3N1YnNwYWNlRm9yRE9NV2luZG93LmdldCgpKQogICAgICAgICByZXR1cm4gc3BhY2U7Ci0gICAg
c3BhY2VzLm1fc3Vic3BhY2VGb3JET01XaW5kb3cgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJ
U09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCBjbGllbnREYXRhLm1faGVhcENlbGxUeXBlRm9ySlNE
T01XaW5kb3cuZ2V0KCksIEpTRE9NV2luZG93KTsKKyAgICBzcGFjZXMubV9zdWJzcGFjZUZvckRP
TVdpbmRvdyA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhl
YXAsICpjbGllbnREYXRhLm1faGVhcENlbGxUeXBlRm9ySlNET01XaW5kb3csIEpTRE9NV2luZG93
KTsKICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yRE9NV2luZG93LmdldCgp
OwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKIElHTk9SRV9XQVJO
SU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRleDogU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTRE9NV2luZG93LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTRE9NV2luZG93LmgJKHJldmlz
aW9uIDI4NjAyNCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U0RPTVdpbmRvdy5oCSh3b3JraW5nIGNvcHkpCkBAIC04NSw3ICs4NSw3IEBAIHB1YmxpYzoKICAg
ICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAg
ewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU0RPTVdpbmRv
d1Byb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsK
KyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRp
YyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpJ
bmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTRGVkaWNhdGVk
V29ya2VyR2xvYmFsU2NvcGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlLmNwcAkocmV2
aXNpb24gMjg2MDI0KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNzAs
NyArMTcwLDcgQEAgSlNDOjpJc29TdWJzcGFjZSogSlNEZWRpY2F0ZWRXb3JrZXJHbG9iYQogICAg
IGF1dG8mIHNwYWNlcyA9IGNsaWVudERhdGEuc3Vic3BhY2VzKCk7CiAgICAgaWYgKGF1dG8qIHNw
YWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZS5nZXQo
KSkKICAgICAgICAgcmV0dXJuIHNwYWNlOwotICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yRGVkaWNh
dGVkV29ya2VyR2xvYmFsU2NvcGUgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BB
Q0VfSU5JVCh2bS5oZWFwLCBjbGllbnREYXRhLm1faGVhcENlbGxUeXBlRm9ySlNEZWRpY2F0ZWRX
b3JrZXJHbG9iYWxTY29wZS5nZXQoKSwgSlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZSk7Cisg
ICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZSA9IG1ha2VV
bmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICpjbGllbnREYXRh
Lm1faGVhcENlbGxUeXBlRm9ySlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZSwgSlNEZWRpY2F0
ZWRXb3JrZXJHbG9iYWxTY29wZSk7CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFj
ZUZvckRlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlLmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JF
R0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dp
Y2FsLWNvbXBhcmUiKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxT
Y29wZS5oCShyZXZpc2lvbiAyODYwMjQpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC04Miw3ICs4Miw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSog
c3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lT
T19TVUJTUEFDRV9TSEFSQUJMRShKU0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlUHJvdG90eXBl
LCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICBy
ZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3Ry
dWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNFeHBvc2VkU3Rhci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTRXhw
b3NlZFN0YXIuY3BwCShyZXZpc2lvbiAyODYwMjQpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNFeHBvc2VkU3Rhci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcx
LDcgKzcxLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFj
ZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQ
QUNFX1NIQVJBQkxFKEpTRXhwb3NlZFN0YXJQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1
cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RT
cGFjZSgpOwogICAgIH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVy
ZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpT
VmFsdWUgcHJvdG90eXBlKQogICAgIHsKQEAgLTIzNiw5ICsyMzYsOSBAQCBKU0M6Oklzb1N1YnNw
YWNlKiBKU0V4cG9zZWRTdGFyOjpzdWJzcGFjCiAgICAgICAgIHJldHVybiBzcGFjZTsKICAgICBz
dGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3Qs
IEpTRXhwb3NlZFN0YXI+IHx8ICFKU0V4cG9zZWRTdGFyOjpuZWVkc0Rlc3RydWN0aW9uKTsKICAg
ICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmpl
Y3QsIEpTRXhwb3NlZFN0YXI+KQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvckV4cG9zZWRT
dGFyID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwg
dm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmdldCgpLCBKU0V4cG9zZWRTdGFyKTsK
KyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JFeHBvc2VkU3RhciA9IG1ha2VVbmlxdWU8SXNv
U3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVj
dEhlYXBDZWxsVHlwZSgpLCBKU0V4cG9zZWRTdGFyKTsKICAgICBlbHNlCi0gICAgICAgIHNwYWNl
cy5tX3N1YnNwYWNlRm9yRXhwb3NlZFN0YXIgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09f
U1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlLmdldCgpLCBKU0V4cG9z
ZWRTdGFyKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JFeHBvc2VkU3RhciA9IG1ha2VV
bmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFw
Q2VsbFR5cGUoKSwgSlNFeHBvc2VkU3Rhcik7CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9z
dWJzcGFjZUZvckV4cG9zZWRTdGFyLmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJl
YWNoYWJsZS1jb2RlIikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBh
cmUiKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTRXhw
b3NlZFRvV29ya2VyQW5kV2luZG93LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNFeHBvc2VkVG9Xb3JrZXJBbmRXaW5kb3cuY3BwCShy
ZXZpc2lvbiAyODYwMjQpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNFeHBvc2VkVG9Xb3JrZXJBbmRXaW5kb3cuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTIs
NyArMTEyLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFj
ZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQ
QUNFX1NIQVJBQkxFKEpTRXhwb3NlZFRvV29ya2VyQW5kV2luZG93UHJvdG90eXBlLCBCYXNlKTsK
LSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZt
LnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBj
cmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC0yNTIsOSArMjUyLDkgQEAg
SlNDOjpJc29TdWJzcGFjZSogSlNFeHBvc2VkVG9Xb3JrZXJBbmRXaQogICAgICAgICByZXR1cm4g
c3BhY2U7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1
Y3RpYmxlT2JqZWN0LCBKU0V4cG9zZWRUb1dvcmtlckFuZFdpbmRvdz4gfHwgIUpTRXhwb3NlZFRv
V29ya2VyQW5kV2luZG93OjpuZWVkc0Rlc3RydWN0aW9uKTsKICAgICBpZiBjb25zdGV4cHIgKHN0
ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTRXhwb3NlZFRvV29y
a2VyQW5kV2luZG93PikKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JFeHBvc2VkVG9Xb3Jr
ZXJBbmRXaW5kb3cgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2
bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTRXhwb3Nl
ZFRvV29ya2VyQW5kV2luZG93KTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JFeHBvc2Vk
VG9Xb3JrZXJBbmRXaW5kb3cgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0Vf
SU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwgSlNFeHBv
c2VkVG9Xb3JrZXJBbmRXaW5kb3cpOwogICAgIGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vic3Bh
Y2VGb3JFeHBvc2VkVG9Xb3JrZXJBbmRXaW5kb3cgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJ
U09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlLmdldCgpLCBKU0V4
cG9zZWRUb1dvcmtlckFuZFdpbmRvdyk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yRXhw
b3NlZFRvV29ya2VyQW5kV2luZG93ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQ
QUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU0V4cG9zZWRUb1dvcmtl
ckFuZFdpbmRvdyk7CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvckV4cG9z
ZWRUb1dvcmtlckFuZFdpbmRvdy5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFj
aGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJl
IikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1BhaW50
V29ya2xldEdsb2JhbFNjb3BlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNQYWludFdvcmtsZXRHbG9iYWxTY29wZS5jcHAJKHJldmlz
aW9uIDI4NjAyNCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTY5LDcgKzE2
OSw3IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTUGFpbnRXb3JrbGV0R2xvYmFsU2MKICAgICBhdXRv
JiBzcGFjZXMgPSBjbGllbnREYXRhLnN1YnNwYWNlcygpOwogICAgIGlmIChhdXRvKiBzcGFjZSA9
IHNwYWNlcy5tX3N1YnNwYWNlRm9yUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuZ2V0KCkpCiAgICAg
ICAgIHJldHVybiBzcGFjZTsKLSAgICBzcGFjZXMubV9zdWJzcGFjZUZvclBhaW50V29ya2xldEds
b2JhbFNjb3BlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0u
aGVhcCwgY2xpZW50RGF0YS5tX2hlYXBDZWxsVHlwZUZvckpTUGFpbnRXb3JrbGV0R2xvYmFsU2Nv
cGUuZ2V0KCksIEpTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUpOworICAgIHNwYWNlcy5tX3N1YnNw
YWNlRm9yUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJ
U09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqY2xpZW50RGF0YS5tX2hlYXBDZWxsVHlwZUZvckpT
UGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUsIEpTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUpOwogICAg
IGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JQYWludFdvcmtsZXRHbG9iYWxTY29w
ZS5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJR05P
UkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1BhaW50V29ya2xldEdsb2JhbFNjb3Bl
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuaAkocmV2aXNpb24gMjg2MDI0KQorKysgU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTUGFpbnRXb3JrbGV0R2xvYmFsU2Nv
cGUuaAkod29ya2luZyBjb3B5KQpAQCAtODIsNyArODIsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGlj
IEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAg
ICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNQYWludFdvcmtsZXRHbG9i
YWxTY29wZVByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RT
cGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAg
IHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6
OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAg
ICAgewpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTU2Vy
dmljZVdvcmtlckdsb2JhbFNjb3BlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUuY3BwCShy
ZXZpc2lvbiAyODYwMjQpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjks
NyArMTY5LDcgQEAgSlNDOjpJc29TdWJzcGFjZSogSlNTZXJ2aWNlV29ya2VyR2xvYmFsUwogICAg
IGF1dG8mIHNwYWNlcyA9IGNsaWVudERhdGEuc3Vic3BhY2VzKCk7CiAgICAgaWYgKGF1dG8qIHNw
YWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUuZ2V0KCkp
CiAgICAgICAgIHJldHVybiBzcGFjZTsKLSAgICBzcGFjZXMubV9zdWJzcGFjZUZvclNlcnZpY2VX
b3JrZXJHbG9iYWxTY29wZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9J
TklUKHZtLmhlYXAsIGNsaWVudERhdGEubV9oZWFwQ2VsbFR5cGVGb3JKU1NlcnZpY2VXb3JrZXJH
bG9iYWxTY29wZS5nZXQoKSwgSlNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUpOworICAgIHNwYWNl
cy5tX3N1YnNwYWNlRm9yU2VydmljZVdvcmtlckdsb2JhbFNjb3BlID0gbWFrZVVuaXF1ZTxJc29T
dWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKmNsaWVudERhdGEubV9oZWFwQ2Vs
bFR5cGVGb3JKU1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSwgSlNTZXJ2aWNlV29ya2VyR2xvYmFs
U2NvcGUpOwogICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JTZXJ2aWNlV29y
a2VyR2xvYmFsU2NvcGUuZ2V0KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxl
LWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNTZXJ2aWNlV29y
a2VyR2xvYmFsU2NvcGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUuaAkocmV2aXNpb24gMjg2
MDI0KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTU2Vydmlj
ZVdvcmtlckdsb2JhbFNjb3BlLmgJKHdvcmtpbmcgY29weSkKQEAgLTgyLDcgKzgyLDcgQEAgcHVi
bGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2
bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpT
U2VydmljZVdvcmtlckdsb2JhbFNjb3BlUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJu
ICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3Bh
Y2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUo
SlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1Zh
bHVlIHByb3RvdHlwZSkKICAgICB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNTaGFyZWRXb3JrZXJHbG9iYWxTY29wZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTU2hhcmVkV29ya2VyR2xv
YmFsU2NvcGUuY3BwCShyZXZpc2lvbiAyODYwMjQpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNTaGFyZWRXb3JrZXJHbG9iYWxTY29wZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTE1Myw3ICsxNTMsNyBAQCBKU0M6Oklzb1N1YnNwYWNlKiBKU1NoYXJlZFdvcmtl
ckdsb2JhbFNjCiAgICAgYXV0byYgc3BhY2VzID0gY2xpZW50RGF0YS5zdWJzcGFjZXMoKTsKICAg
ICBpZiAoYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclNoYXJlZFdvcmtlckdsb2Jh
bFNjb3BlLmdldCgpKQogICAgICAgICByZXR1cm4gc3BhY2U7Ci0gICAgc3BhY2VzLm1fc3Vic3Bh
Y2VGb3JTaGFyZWRXb3JrZXJHbG9iYWxTY29wZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElT
T19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIGNsaWVudERhdGEubV9oZWFwQ2VsbFR5cGVGb3JKU1No
YXJlZFdvcmtlckdsb2JhbFNjb3BlLmdldCgpLCBKU1NoYXJlZFdvcmtlckdsb2JhbFNjb3BlKTsK
KyAgICBzcGFjZXMubV9zdWJzcGFjZUZvclNoYXJlZFdvcmtlckdsb2JhbFNjb3BlID0gbWFrZVVu
aXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKmNsaWVudERhdGEu
bV9oZWFwQ2VsbFR5cGVGb3JKU1NoYXJlZFdvcmtlckdsb2JhbFNjb3BlLCBKU1NoYXJlZFdvcmtl
ckdsb2JhbFNjb3BlKTsKICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yU2hh
cmVkV29ya2VyR2xvYmFsU2NvcGUuZ2V0KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVh
Y2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFy
ZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNTaGFy
ZWRXb3JrZXJHbG9iYWxTY29wZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1NoYXJlZFdvcmtlckdsb2JhbFNjb3BlLmgJKHJldmlzaW9u
IDI4NjAyNCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1No
YXJlZFdvcmtlckdsb2JhbFNjb3BlLmgJKHdvcmtpbmcgY29weSkKQEAgLTgyLDcgKzgyLDcgQEAg
cHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZN
JiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxF
KEpTU2hhcmVkV29ya2VyR2xvYmFsU2NvcGVQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1
cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RT
cGFjZSgpOwogICAgIH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVy
ZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpT
VmFsdWUgcHJvdG90eXBlKQogICAgIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RDRVJlYWN0aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENFUmVhY3Rpb25zLmNwcAko
cmV2aXNpb24gMjg2MDI0KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdENFUmVhY3Rpb25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTEsNyArOTEsNyBA
QCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6
Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFC
TEUoSlNUZXN0Q0VSZWFjdGlvbnNQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZt
LnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgp
OwogICAgIH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6
OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUg
cHJvdG90eXBlKQogICAgIHsKQEAgLTQzOCw5ICs0MzgsOSBAQCBKU0M6Oklzb1N1YnNwYWNlKiBK
U1Rlc3RDRVJlYWN0aW9uczo6c3ViCiAgICAgICAgIHJldHVybiBzcGFjZTsKICAgICBzdGF0aWNf
YXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVz
dENFUmVhY3Rpb25zPiB8fCAhSlNUZXN0Q0VSZWFjdGlvbnM6Om5lZWRzRGVzdHJ1Y3Rpb24pOwog
ICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9i
amVjdCwgSlNUZXN0Q0VSZWFjdGlvbnM+KQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRl
c3RDRVJlYWN0aW9ucyA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklU
KHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNUZXN0
Q0VSZWFjdGlvbnMpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RDRVJlYWN0aW9u
cyA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZt
LmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RDRVJlYWN0aW9ucyk7CiAg
ICAgZWxzZQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RDRVJlYWN0aW9ucyA9IG1h
a2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxI
ZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVGVzdENFUmVhY3Rpb25zKTsKKyAgICAgICAgc3BhY2VzLm1f
c3Vic3BhY2VGb3JUZXN0Q0VSZWFjdGlvbnMgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09f
U1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCksIEpTVGVzdENFUmVh
Y3Rpb25zKTsKICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdENFUmVh
Y3Rpb25zLmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikK
IElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRleDogU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENFUmVhY3Rpb25zU3Ry
aW5naWZpZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyLmNwcAkocmV2aXNpb24gMjg2
MDI0KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENF
UmVhY3Rpb25zU3RyaW5naWZpZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NSw3ICs3NSw3IEBA
IHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpW
TSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJM
RShKU1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAg
cmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2Jq
ZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1
Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlND
OjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC0yNjQsOSArMjY0LDkgQEAgSlNDOjpJc29T
dWJzcGFjZSogSlNUZXN0Q0VSZWFjdGlvbnNTdHJpbgogICAgICAgICByZXR1cm4gc3BhY2U7CiAg
ICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2Jq
ZWN0LCBKU1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyPiB8fCAhSlNUZXN0Q0VSZWFjdGlvbnNT
dHJpbmdpZmllcjo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3RleHByIChzdGQ6Omlz
X2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RDRVJlYWN0aW9uc1N0
cmluZ2lmaWVyPikKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0Q0VSZWFjdGlvbnNT
dHJpbmdpZmllciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZt
LmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNUZXN0Q0VS
ZWFjdGlvbnNTdHJpbmdpZmllcik7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdENF
UmVhY3Rpb25zU3RyaW5naWZpZXIgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BB
Q0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwgSlNU
ZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllcik7CiAgICAgZWxzZQotICAgICAgICBzcGFjZXMubV9z
dWJzcGFjZUZvclRlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyID0gbWFrZVVuaXF1ZTxJc29TdWJz
cGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZS5nZXQo
KSwgSlNUZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllcik7CisgICAgICAgIHNwYWNlcy5tX3N1YnNw
YWNlRm9yVGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXIgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNl
PiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCksIEpTVGVz
dENFUmVhY3Rpb25zU3RyaW5naWZpZXIpOwogICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vi
c3BhY2VGb3JUZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllci5nZXQoKTsKIElHTk9SRV9XQVJOSU5H
U19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRv
bG9naWNhbC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RDYWxsVHJhY2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2FsbFRyYWNlci5jcHAJKHJldmlzaW9u
IDI4NjAyNCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RDYWxsVHJhY2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTcsNyArOTcsNyBAQCBwdWJsaWM6
CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQog
ICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0
Q2FsbFRyYWNlclByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmpl
Y3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQog
ICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBK
U0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUp
CiAgICAgewpAQCAtNTEzLDkgKzUxMyw5IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdENhbGxU
cmFjZXI6OnN1YnMKICAgICAgICAgcmV0dXJuIHNwYWNlOwogICAgIHN0YXRpY19hc3NlcnQoc3Rk
Ojppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0Q2FsbFRyYWNl
cj4gfHwgIUpTVGVzdENhbGxUcmFjZXI6Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0
ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0
Q2FsbFRyYWNlcj4pCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdENhbGxUcmFjZXIg
PSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5k
ZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVGVzdENhbGxUcmFjZXIpOwor
ICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RDYWxsVHJhY2VyID0gbWFrZVVuaXF1ZTxJ
c29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2Jq
ZWN0SGVhcENlbGxUeXBlKCksIEpTVGVzdENhbGxUcmFjZXIpOwogICAgIGVsc2UKLSAgICAgICAg
c3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0Q2FsbFRyYWNlciA9IG1ha2VVbmlxdWU8SXNvU3Vic3Bh
Y2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCks
IEpTVGVzdENhbGxUcmFjZXIpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RDYWxs
VHJhY2VyID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVh
cCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RDYWxsVHJhY2VyKTsKICAgICBhdXRvKiBz
cGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdENhbGxUcmFjZXIuZ2V0KCk7CiBJR05PUkVf
V0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lO
KCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3IuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3Rvci5jcHAJKHJldmlzaW9uIDI4NjAyNCkKKysr
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDbGFzc1dpdGhK
U0J1aWx0aW5Db25zdHJ1Y3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY0LDcgKzY0LDcgQEAg
cHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZN
JiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxF
KEpTVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yUHJvdG90eXBlLCBCYXNlKTsKLSAg
ICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBs
YWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVh
dGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC0xNzYsOSArMTc2LDkgQEAgSlND
OjpJc29TdWJzcGFjZSogSlNUZXN0Q2xhc3NXaXRoSlNCdWlsdAogICAgICAgICByZXR1cm4gc3Bh
Y2U7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3Rp
YmxlT2JqZWN0LCBKU1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3Rvcj4gfHwgIUpTVGVz
dENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yOjpuZWVkc0Rlc3RydWN0aW9uKTsKICAgICBp
ZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3Qs
IEpTVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yPikKLSAgICAgICAgc3BhY2VzLm1f
c3Vic3BhY2VGb3JUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3IgPSBtYWtlVW5pcXVl
PElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVP
YmplY3RIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVj
dG9yKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0Q2xhc3NXaXRoSlNCdWlsdGlu
Q29uc3RydWN0b3IgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2
bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0Q2xhc3NX
aXRoSlNCdWlsdGluQ29uc3RydWN0b3IpOwogICAgIGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vi
c3BhY2VGb3JUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3IgPSBtYWtlVW5pcXVlPElz
b1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBl
LmdldCgpLCBKU1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3Rvcik7CisgICAgICAgIHNw
YWNlcy5tX3N1YnNwYWNlRm9yVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yID0gbWFr
ZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhl
YXBDZWxsVHlwZSgpLCBKU1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3Rvcik7CiAgICAg
YXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RDbGFzc1dpdGhKU0J1aWx0aW5D
b25zdHJ1Y3Rvci5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29k
ZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDb25kaXRpb25h
bEluY2x1ZGVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlcy5jcHAJKHJldmlzaW9uIDI4NjAy
NCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDb25k
aXRpb25hbEluY2x1ZGVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTI3LDcgKzEyNyw3IEBAIHB1
YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYg
dm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShK
U1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJu
ICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3Bh
Y2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUo
SlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1Zh
bHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC03ODksOSArNzg5LDkgQEAgSlNDOjpJc29TdWJzcGFj
ZSogSlNUZXN0Q29uZGl0aW9uYWxJbmNsdQogICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAgc3Rh
dGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBK
U1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzPiB8fCAhSlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlczo6
bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxK
U0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzPikKLSAg
ICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0Q29uZGl0aW9uYWxJbmNsdWRlcyA9IG1ha2VV
bmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0
aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlcyk7
CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdENvbmRpdGlvbmFsSW5jbHVkZXMgPSBt
YWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0
cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlcyk7
CiAgICAgZWxzZQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RDb25kaXRpb25hbElu
Y2x1ZGVzID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVh
cCwgdm0uY2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlcyk7
CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdENvbmRpdGlvbmFsSW5jbHVkZXMgPSBt
YWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxs
SGVhcENlbGxUeXBlKCksIEpTVGVzdENvbmRpdGlvbmFsSW5jbHVkZXMpOwogICAgIGF1dG8qIHNw
YWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0Q29uZGl0aW9uYWxJbmNsdWRlcy5nZXQoKTsK
IElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklO
R1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDb25kaXRpb25hbGx5UmVhZFdyaXRlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0Q29uZGl0aW9uYWxseVJlYWRXcml0ZS5jcHAJKHJldmlzaW9uIDI4NjAyNCkKKysrIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDb25kaXRpb25hbGx5UmVh
ZFdyaXRlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTgsNyArOTgsNyBAQCBwdWJsaWM6CiAgICAg
c3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsK
ICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0Q29uZGl0
aW9uYWxseVJlYWRXcml0ZVByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxh
aW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAg
ICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0m
IHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90
b3R5cGUpCiAgICAgewpAQCAtNjExLDkgKzYxMSw5IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVz
dENvbmRpdGlvbmFsbHlSZWEKICAgICAgICAgcmV0dXJuIHNwYWNlOwogICAgIHN0YXRpY19hc3Nl
cnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0Q29u
ZGl0aW9uYWxseVJlYWRXcml0ZT4gfHwgIUpTVGVzdENvbmRpdGlvbmFsbHlSZWFkV3JpdGU6Om5l
ZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlND
OjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0Q29uZGl0aW9uYWxseVJlYWRXcml0ZT4pCi0g
ICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdENvbmRpdGlvbmFsbHlSZWFkV3JpdGUgPSBt
YWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0
cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVGVzdENvbmRpdGlvbmFsbHlSZWFk
V3JpdGUpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RDb25kaXRpb25hbGx5UmVh
ZFdyaXRlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVh
cCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCksIEpTVGVzdENvbmRpdGlvbmFs
bHlSZWFkV3JpdGUpOwogICAgIGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0
Q29uZGl0aW9uYWxseVJlYWRXcml0ZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJT
UEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVGVzdENvbmRp
dGlvbmFsbHlSZWFkV3JpdGUpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RDb25k
aXRpb25hbGx5UmVhZFdyaXRlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNF
X0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RDb25kaXRpb25hbGx5
UmVhZFdyaXRlKTsKICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdENv
bmRpdGlvbmFsbHlSZWFkV3JpdGUuZ2V0KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVh
Y2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFy
ZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
RE9NSklULmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0RE9NSklULmNwcAkocmV2aXNpb24gMjg2MDI0KQorKysgU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERPTUpJVC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTQ4MSw3ICs0ODEsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vi
c3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FT
U0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0RE9NSklUUHJvdG90eXBlLCBCYXNlKTsK
LSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZt
LnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBj
cmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC0xMjUyLDkgKzEyNTIsOSBA
QCBKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3RET01KSVQ6OnN1YnNwYWNlCiAgICAgICAgIHJldHVy
biBzcGFjZTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0
cnVjdGlibGVPYmplY3QsIEpTVGVzdERPTUpJVD4gfHwgIUpTVGVzdERPTUpJVDo6bmVlZHNEZXN0
cnVjdGlvbik7CiAgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVz
dHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RET01KSVQ+KQotICAgICAgICBzcGFjZXMubV9zdWJzcGFj
ZUZvclRlc3RET01KSVQgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5J
VCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVGVz
dERPTUpJVCk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdERPTUpJVCA9IG1ha2VV
bmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0
aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RET01KSVQpOwogICAgIGVsc2UKLSAgICAg
ICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0RE9NSklUID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFj
ZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwg
SlNUZXN0RE9NSklUKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0RE9NSklUID0g
bWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2Vs
bEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RET01KSVQpOwogICAgIGF1dG8qIHNwYWNlID0gc3BhY2Vz
Lm1fc3Vic3BhY2VGb3JUZXN0RE9NSklULmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1
bnJlYWNoYWJsZS1jb2RlIikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNv
bXBhcmUiKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdERlZmF1bHRUb0pTT04uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3REZWZhdWx0VG9KU09OLmNwcAkocmV2aXNpb24gMjg2
MDI0KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERl
ZmF1bHRUb0pTT04uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjQsNyArMTI0LDcgQEAgcHVibGlj
OgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkK
ICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVz
dERlZmF1bHRUb0pTT05Qcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWlu
T2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAg
IH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2
bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90
eXBlKQogICAgIHsKQEAgLTgwOCw5ICs4MDgsOSBAQCBKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3RE
ZWZhdWx0VG9KU09OOjpzCiAgICAgICAgIHJldHVybiBzcGFjZTsKICAgICBzdGF0aWNfYXNzZXJ0
KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdERlZmF1
bHRUb0pTT04+IHx8ICFKU1Rlc3REZWZhdWx0VG9KU09OOjpuZWVkc0Rlc3RydWN0aW9uKTsKICAg
ICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmpl
Y3QsIEpTVGVzdERlZmF1bHRUb0pTT04+KQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRl
c3REZWZhdWx0VG9KU09OID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lO
SVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmdldCgpLCBKU1Rl
c3REZWZhdWx0VG9KU09OKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0RGVmYXVs
dFRvSlNPTiA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhl
YXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3REZWZhdWx0VG9K
U09OKTsKICAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdERlZmF1bHRU
b0pTT04gPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFw
LCB2bS5jZWxsSGVhcENlbGxUeXBlLmdldCgpLCBKU1Rlc3REZWZhdWx0VG9KU09OKTsKKyAgICAg
ICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0RGVmYXVsdFRvSlNPTiA9IG1ha2VVbmlxdWU8SXNv
U3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUo
KSwgSlNUZXN0RGVmYXVsdFRvSlNPTik7CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJz
cGFjZUZvclRlc3REZWZhdWx0VG9KU09OLmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1
bnJlYWNoYWJsZS1jb2RlIikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNv
bXBhcmUiKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERlZmF1bHRUb0pTT05G
aWx0ZXJlZEJ5RXhwb3NlZC5jcHAJKHJldmlzaW9uIDI4NjAyNCkKKysrIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4
cG9zZWQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NSw3ICs3NSw3IEBAIHB1YmxpYzoKICAgICBz
dGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewog
ICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3REZWZhdWx0
VG9KU09ORmlsdGVyZWRCeUV4cG9zZWRQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4g
JnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFj
ZSgpOwogICAgIH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShK
U0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFs
dWUgcHJvdG90eXBlKQogICAgIHsKQEAgLTI3MCw5ICsyNzAsOSBAQCBKU0M6Oklzb1N1YnNwYWNl
KiBKU1Rlc3REZWZhdWx0VG9KU09ORmlsCiAgICAgICAgIHJldHVybiBzcGFjZTsKICAgICBzdGF0
aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpT
VGVzdERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZD4gfHwgIUpTVGVzdERlZmF1bHRUb0pT
T05GaWx0ZXJlZEJ5RXhwb3NlZDo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3RleHBy
IChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3REZWZh
dWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWQ+KQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZv
clRlc3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWQgPSBtYWtlVW5pcXVlPElzb1N1YnNw
YWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFw
Q2VsbFR5cGUuZ2V0KCksIEpTVGVzdERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZCk7Cisg
ICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhw
b3NlZCA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAs
IHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3REZWZhdWx0VG9KU09O
RmlsdGVyZWRCeUV4cG9zZWQpOwogICAgIGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VG
b3JUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkID0gbWFrZVVuaXF1ZTxJc29TdWJz
cGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZS5nZXQo
KSwgSlNUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkKTsKKyAgICAgICAgc3BhY2Vz
Lm1fc3Vic3BhY2VGb3JUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkID0gbWFrZVVu
aXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBD
ZWxsVHlwZSgpLCBKU1Rlc3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWQpOwogICAgIGF1
dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVk
QnlFeHBvc2VkLmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2Rl
IikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRleDog
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERlZmF1bHRUb0pT
T05JbmRpcmVjdEluaGVyaXRhbmNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RGVmYXVsdFRvSlNPTkluZGlyZWN0SW5oZXJp
dGFuY2UuY3BwCShyZXZpc2lvbiAyODYwMjQpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0RGVmYXVsdFRvSlNPTkluZGlyZWN0SW5oZXJpdGFuY2UuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC02Miw3ICs2Miw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlND
OjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBT
VEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3REZWZhdWx0VG9KU09OSW5k
aXJlY3RJbmhlcml0YW5jZVByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxh
aW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAg
ICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0m
IHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90
b3R5cGUpCiAgICAgewpAQCAtMTYyLDkgKzE2Miw5IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVz
dERlZmF1bHRUb0pTT05JbmQKICAgICAgICAgcmV0dXJuIHNwYWNlOwogICAgIHN0YXRpY19hc3Nl
cnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0RGVm
YXVsdFRvSlNPTkluZGlyZWN0SW5oZXJpdGFuY2U+IHx8ICFKU1Rlc3REZWZhdWx0VG9KU09OSW5k
aXJlY3RJbmhlcml0YW5jZTo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3RleHByIChz
dGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3REZWZhdWx0
VG9KU09OSW5kaXJlY3RJbmhlcml0YW5jZT4pCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9y
VGVzdERlZmF1bHRUb0pTT05JbmRpcmVjdEluaGVyaXRhbmNlID0gbWFrZVVuaXF1ZTxJc29TdWJz
cGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVh
cENlbGxUeXBlLmdldCgpLCBKU1Rlc3REZWZhdWx0VG9KU09OSW5kaXJlY3RJbmhlcml0YW5jZSk7
CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdERlZmF1bHRUb0pTT05JbmRpcmVjdElu
aGVyaXRhbmNlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0u
aGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCksIEpTVGVzdERlZmF1bHRU
b0pTT05JbmRpcmVjdEluaGVyaXRhbmNlKTsKICAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1
YnNwYWNlRm9yVGVzdERlZmF1bHRUb0pTT05JbmRpcmVjdEluaGVyaXRhbmNlID0gbWFrZVVuaXF1
ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxs
VHlwZS5nZXQoKSwgSlNUZXN0RGVmYXVsdFRvSlNPTkluZGlyZWN0SW5oZXJpdGFuY2UpOworICAg
ICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3REZWZhdWx0VG9KU09OSW5kaXJlY3RJbmhlcml0
YW5jZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAs
IHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0RGVmYXVsdFRvSlNPTkluZGlyZWN0SW5oZXJp
dGFuY2UpOwogICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0RGVmYXVs
dFRvSlNPTkluZGlyZWN0SW5oZXJpdGFuY2UuZ2V0KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4o
InVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwt
Y29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0RGVmYXVsdFRvSlNPTkluaGVyaXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3REZWZhdWx0VG9KU09OSW5oZXJpdC5j
cHAJKHJldmlzaW9uIDI4NjAyNCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3REZWZhdWx0VG9KU09OSW5oZXJpdC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTg5LDcgKzg5LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJz
cGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NV
QlNQQUNFX1NIQVJBQkxFKEpTVGVzdERlZmF1bHRUb0pTT05Jbmhlcml0UHJvdG90eXBlLCBCYXNl
KTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4g
JnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJl
KiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC0yOTIsOSArMjkyLDkg
QEAgSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0RGVmYXVsdFRvSlNPTkluaAogICAgICAgICByZXR1
cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVz
dHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3REZWZhdWx0VG9KU09OSW5oZXJpdD4gfHwgIUpTVGVzdERl
ZmF1bHRUb0pTT05Jbmhlcml0OjpuZWVkc0Rlc3RydWN0aW9uKTsKICAgICBpZiBjb25zdGV4cHIg
KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdERlZmF1
bHRUb0pTT05Jbmhlcml0PikKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0RGVmYXVs
dFRvSlNPTkluaGVyaXQgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5J
VCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVGVz
dERlZmF1bHRUb0pTT05Jbmhlcml0KTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0
RGVmYXVsdFRvSlNPTkluaGVyaXQgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BB
Q0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwgSlNU
ZXN0RGVmYXVsdFRvSlNPTkluaGVyaXQpOwogICAgIGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vi
c3BhY2VGb3JUZXN0RGVmYXVsdFRvSlNPTkluaGVyaXQgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNl
PiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlLmdldCgpLCBK
U1Rlc3REZWZhdWx0VG9KU09OSW5oZXJpdCk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9y
VGVzdERlZmF1bHRUb0pTT05Jbmhlcml0ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NV
QlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3REZWZhdWx0
VG9KU09OSW5oZXJpdCk7CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRl
c3REZWZhdWx0VG9KU09OSW5oZXJpdC5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5y
ZWFjaGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21w
YXJlIikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3REZWZhdWx0VG9KU09OSW5oZXJpdEZpbmFsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RGVmYXVsdFRvSlNPTkluaGVyaXRG
aW5hbC5jcHAJKHJldmlzaW9uIDI4NjAyNCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3REZWZhdWx0VG9KU09OSW5oZXJpdEZpbmFsLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtOTEsNyArOTEsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vi
c3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FT
U0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0RGVmYXVsdFRvSlNPTkluaGVyaXRGaW5h
bFByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsK
KyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRp
YyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpA
QCAtMzMyLDkgKzMzMiw5IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdERlZmF1bHRUb0pTT05J
bmgKICAgICAgICAgcmV0dXJuIHNwYWNlOwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNl
X29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0RGVmYXVsdFRvSlNPTkluaGVy
aXRGaW5hbD4gfHwgIUpTVGVzdERlZmF1bHRUb0pTT05Jbmhlcml0RmluYWw6Om5lZWRzRGVzdHJ1
Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3Ry
dWN0aWJsZU9iamVjdCwgSlNUZXN0RGVmYXVsdFRvSlNPTkluaGVyaXRGaW5hbD4pCi0gICAgICAg
IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdERlZmF1bHRUb0pTT05Jbmhlcml0RmluYWwgPSBtYWtl
VW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVj
dGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVGVzdERlZmF1bHRUb0pTT05Jbmhlcml0
RmluYWwpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3REZWZhdWx0VG9KU09OSW5o
ZXJpdEZpbmFsID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0u
aGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCksIEpTVGVzdERlZmF1bHRU
b0pTT05Jbmhlcml0RmluYWwpOwogICAgIGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VG
b3JUZXN0RGVmYXVsdFRvSlNPTkluaGVyaXRGaW5hbCA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+
IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEpT
VGVzdERlZmF1bHRUb0pTT05Jbmhlcml0RmluYWwpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFj
ZUZvclRlc3REZWZhdWx0VG9KU09OSW5oZXJpdEZpbmFsID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFj
ZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU1Rl
c3REZWZhdWx0VG9KU09OSW5oZXJpdEZpbmFsKTsKICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5t
X3N1YnNwYWNlRm9yVGVzdERlZmF1bHRUb0pTT05Jbmhlcml0RmluYWwuZ2V0KCk7CiBJR05PUkVf
V0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lO
KCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGUuY3BwCShyZXZpc2lvbiAy
ODYwMjQpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTcwLDcgKzcwLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJz
cGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NV
QlNQQUNFX1NIQVJBQkxFKEpTVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGVQ
cm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7Cisg
ICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KICAgICBzdGF0aWMg
SlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKQEAg
LTI0Niw5ICsyNDYsOSBAQCBKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3REZWxlZ2F0ZVRvU2hhcmVk
CiAgICAgICAgIHJldHVybiBzcGFjZTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9v
Zl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50
aGV0aWNBdHRyaWJ1dGU+IHx8ICFKU1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmli
dXRlOjpuZWVkc0Rlc3RydWN0aW9uKTsKICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9v
Zl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50
aGV0aWNBdHRyaWJ1dGU+KQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3REZWxlZ2F0
ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNP
X1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBl
LmdldCgpLCBKU1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlKTsKKyAgICAg
ICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJp
YnV0ZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAs
IHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3REZWxlZ2F0ZVRvU2hh
cmVkU3ludGhldGljQXR0cmlidXRlKTsKICAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNw
YWNlRm9yVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGUgPSBtYWtlVW5pcXVl
PElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxU
eXBlLmdldCgpLCBKU1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlKTsKKyAg
ICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0
dHJpYnV0ZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhl
YXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRp
Y0F0dHJpYnV0ZSk7CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RE
ZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlLmdldCgpOwogSUdOT1JFX1dBUk5JTkdT
X0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9s
b2dpY2FsLWNvbXBhcmUiKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdERvbWFpblNlY3VyaXR5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RG9tYWluU2VjdXJpdHkuY3BwCShy
ZXZpc2lvbiAyODYwMjQpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0RG9tYWluU2VjdXJpdHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04MCw3ICs4MCw3
IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlND
OjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFS
QUJMRShKU1Rlc3REb21haW5TZWN1cml0eVByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVy
biAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNw
YWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJl
KEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNW
YWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAtMzIwLDkgKzMyMCw5IEBAIEpTQzo6SXNvU3Vic3Bh
Y2UqIEpTVGVzdERvbWFpblNlY3VyaXR5OjoKICAgICAgICAgcmV0dXJuIHNwYWNlOwogICAgIHN0
YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwg
SlNUZXN0RG9tYWluU2VjdXJpdHk+IHx8ICFKU1Rlc3REb21haW5TZWN1cml0eTo6bmVlZHNEZXN0
cnVjdGlvbik7CiAgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVz
dHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3REb21haW5TZWN1cml0eT4pCi0gICAgICAgIHNwYWNlcy5t
X3N1YnNwYWNlRm9yVGVzdERvbWFpblNlY3VyaXR5ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4g
SVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxU
eXBlLmdldCgpLCBKU1Rlc3REb21haW5TZWN1cml0eSk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNw
YWNlRm9yVGVzdERvbWFpblNlY3VyaXR5ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NV
QlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCks
IEpTVGVzdERvbWFpblNlY3VyaXR5KTsKICAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNw
YWNlRm9yVGVzdERvbWFpblNlY3VyaXR5ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NV
QlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNUZXN0RG9t
YWluU2VjdXJpdHkpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3REb21haW5TZWN1
cml0eSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAs
IHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0RG9tYWluU2VjdXJpdHkpOwogICAgIGF1dG8q
IHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0RG9tYWluU2VjdXJpdHkuZ2V0KCk7CiBJ
R05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdT
X0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RW5hYmxlZEJ5U2V0dGluZy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEVuYWJs
ZWRCeVNldHRpbmcuY3BwCShyZXZpc2lvbiAyODYwMjQpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RW5hYmxlZEJ5U2V0dGluZy5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTkyLDcgKzkyLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNw
YWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NF
UlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdEVuYWJsZWRCeVNldHRpbmdQcm90b3R5cGUs
IEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJl
dHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1
Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKQEAgLTQ1OSw5ICs0
NTksOSBAQCBKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3RFbmFibGVkQnlTZXR0aW5nCiAgICAgICAg
IHJldHVybiBzcGFjZTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6
SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdEVuYWJsZWRCeVNldHRpbmc+IHx8ICFKU1Rlc3RF
bmFibGVkQnlTZXR0aW5nOjpuZWVkc0Rlc3RydWN0aW9uKTsKICAgICBpZiBjb25zdGV4cHIgKHN0
ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdEVuYWJsZWRC
eVNldHRpbmc+KQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RFbmFibGVkQnlTZXR0
aW5nID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwg
dm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmdldCgpLCBKU1Rlc3RFbmFibGVkQnlT
ZXR0aW5nKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0RW5hYmxlZEJ5U2V0dGlu
ZyA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZt
LmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RFbmFibGVkQnlTZXR0aW5n
KTsKICAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEVuYWJsZWRCeVNl
dHRpbmcgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFw
LCB2bS5jZWxsSGVhcENlbGxUeXBlLmdldCgpLCBKU1Rlc3RFbmFibGVkQnlTZXR0aW5nKTsKKyAg
ICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0RW5hYmxlZEJ5U2V0dGluZyA9IG1ha2VVbmlx
dWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2Vs
bFR5cGUoKSwgSlNUZXN0RW5hYmxlZEJ5U2V0dGluZyk7CiAgICAgYXV0byogc3BhY2UgPSBzcGFj
ZXMubV9zdWJzcGFjZUZvclRlc3RFbmFibGVkQnlTZXR0aW5nLmdldCgpOwogSUdOT1JFX1dBUk5J
TkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1
dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdEVuYWJsZWRGb3JDb250ZXh0LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RW5hYmxlZEZvckNvbnRl
eHQuY3BwCShyZXZpc2lvbiAyODYwMjQpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0RW5hYmxlZEZvckNvbnRleHQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC02Niw3ICs2Niw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vi
c3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19T
VUJTUEFDRV9TSEFSQUJMRShKU1Rlc3RFbmFibGVkRm9yQ29udGV4dFByb3RvdHlwZSwgQmFzZSk7
Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2
bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSog
Y3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAtMTg2LDkgKzE4Niw5IEBA
IEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdEVuYWJsZWRGb3JDb250ZXgKICAgICAgICAgcmV0dXJu
IHNwYWNlOwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3Ry
dWN0aWJsZU9iamVjdCwgSlNUZXN0RW5hYmxlZEZvckNvbnRleHQ+IHx8ICFKU1Rlc3RFbmFibGVk
Rm9yQ29udGV4dDo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3RleHByIChzdGQ6Omlz
X2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RFbmFibGVkRm9yQ29u
dGV4dD4pCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEVuYWJsZWRGb3JDb250ZXh0
ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0u
ZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmdldCgpLCBKU1Rlc3RFbmFibGVkRm9yQ29u
dGV4dCk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEVuYWJsZWRGb3JDb250ZXh0
ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0u
ZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCksIEpTVGVzdEVuYWJsZWRGb3JDb250ZXh0
KTsKICAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEVuYWJsZWRGb3JD
b250ZXh0ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVh
cCwgdm0uY2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNUZXN0RW5hYmxlZEZvckNvbnRleHQpOwor
ICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RFbmFibGVkRm9yQ29udGV4dCA9IG1ha2VV
bmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFw
Q2VsbFR5cGUoKSwgSlNUZXN0RW5hYmxlZEZvckNvbnRleHQpOwogICAgIGF1dG8qIHNwYWNlID0g
c3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0RW5hYmxlZEZvckNvbnRleHQuZ2V0KCk7CiBJR05PUkVf
V0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lO
KCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRDb25zdHJ1Y3Rvci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50Q29uc3Ry
dWN0b3IuY3BwCShyZXZpc2lvbiAyODYwMjQpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRDb25zdHJ1Y3Rvci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTE0Nyw3ICsxNDcsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2Uq
IHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9J
U09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0RXZlbnRDb25zdHJ1Y3RvclByb3RvdHlwZSwgQmFz
ZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJu
ICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVy
ZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAtMzIxLDkgKzMyMSw5
IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdEV2ZW50Q29uc3RydWN0b3IKICAgICAgICAgcmV0
dXJuIHNwYWNlOwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rl
c3RydWN0aWJsZU9iamVjdCwgSlNUZXN0RXZlbnRDb25zdHJ1Y3Rvcj4gfHwgIUpTVGVzdEV2ZW50
Q29uc3RydWN0b3I6Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjpp
c19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0RXZlbnRDb25zdHJ1
Y3Rvcj4pCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEV2ZW50Q29uc3RydWN0b3Ig
PSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5k
ZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVGVzdEV2ZW50Q29uc3RydWN0
b3IpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RFdmVudENvbnN0cnVjdG9yID0g
bWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVz
dHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCksIEpTVGVzdEV2ZW50Q29uc3RydWN0b3IpOwog
ICAgIGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0RXZlbnRDb25zdHJ1Y3Rv
ciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZt
LmNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVGVzdEV2ZW50Q29uc3RydWN0b3IpOworICAgICAg
ICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RFdmVudENvbnN0cnVjdG9yID0gbWFrZVVuaXF1ZTxJ
c29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlw
ZSgpLCBKU1Rlc3RFdmVudENvbnN0cnVjdG9yKTsKICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5t
X3N1YnNwYWNlRm9yVGVzdEV2ZW50Q29uc3RydWN0b3IuZ2V0KCk7CiBJR05PUkVfV0FSTklOR1Nf
QkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xv
Z2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0RXZlbnRUYXJnZXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudFRhcmdldC5jcHAJKHJldmlzaW9u
IDI4NjAyNCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RFdmVudFRhcmdldC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTczLDcgKzczLDcgQEAgcHVibGlj
OgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkK
ICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVz
dEV2ZW50VGFyZ2V0UHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9i
amVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9
CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0s
IEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlw
ZSkKICAgICB7CkBAIC0yNjIsOSArMjYyLDkgQEAgSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0RXZl
bnRUYXJnZXQ6OnN1YgogICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fzc2VydChz
dGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RFdmVudFRh
cmdldD4gfHwgIUpTVGVzdEV2ZW50VGFyZ2V0OjpuZWVkc0Rlc3RydWN0aW9uKTsKICAgICBpZiBj
b25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpT
VGVzdEV2ZW50VGFyZ2V0PikKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0RXZlbnRU
YXJnZXQgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFw
LCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVGVzdEV2ZW50VGFy
Z2V0KTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0RXZlbnRUYXJnZXQgPSBtYWtl
VW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVj
dGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0RXZlbnRUYXJnZXQpOwogICAgIGVsc2UK
LSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0RXZlbnRUYXJnZXQgPSBtYWtlVW5pcXVl
PElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxU
eXBlLmdldCgpLCBKU1Rlc3RFdmVudFRhcmdldCk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNl
Rm9yVGVzdEV2ZW50VGFyZ2V0ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNF
X0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RFdmVudFRhcmdldCk7
CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RFdmVudFRhcmdldC5n
ZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVf
V0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFeGNlcHRpb24uY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFeGNl
cHRpb24uY3BwCShyZXZpc2lvbiAyODYwMjQpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXhjZXB0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjYs
NyArNjYsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNl
Rm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BB
Q0VfU0hBUkFCTEUoSlNUZXN0RXhjZXB0aW9uUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0
dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0
U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1
cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpK
U1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC0xODcsOSArMTg3LDkgQEAgSlNDOjpJc29TdWJz
cGFjZSogSlNUZXN0RXhjZXB0aW9uOjpzdWJzcAogICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAg
c3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0
LCBKU1Rlc3RFeGNlcHRpb24+IHx8ICFKU1Rlc3RFeGNlcHRpb246Om5lZWRzRGVzdHJ1Y3Rpb24p
OwogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJs
ZU9iamVjdCwgSlNUZXN0RXhjZXB0aW9uPikKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JU
ZXN0RXhjZXB0aW9uID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQo
dm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmdldCgpLCBKU1Rlc3RF
eGNlcHRpb24pOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RFeGNlcHRpb24gPSBt
YWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0
cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0RXhjZXB0aW9uKTsKICAgICBlbHNl
Ci0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEV4Y2VwdGlvbiA9IG1ha2VVbmlxdWU8
SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5
cGUuZ2V0KCksIEpTVGVzdEV4Y2VwdGlvbik7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9y
VGVzdEV4Y2VwdGlvbiA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklU
KHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0RXhjZXB0aW9uKTsKICAgICBh
dXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEV4Y2VwdGlvbi5nZXQoKTsKIElH
Tk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1Nf
QkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RHZW5lcmF0ZUFkZE9wYXF1ZVJvb3QuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RH
ZW5lcmF0ZUFkZE9wYXF1ZVJvb3QuY3BwCShyZXZpc2lvbiAyODYwMjQpCisrKyBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2VuZXJhdGVBZGRPcGFxdWVSb290
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjYsNyArNjYsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGlj
IEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAg
ICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0R2VuZXJhdGVBZGRP
cGFxdWVSb290UHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVj
dFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAg
ICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpT
Qzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkK
ICAgICB7CkBAIC0xODcsOSArMTg3LDkgQEAgSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0R2VuZXJh
dGVBZGRPcGFxdQogICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6
OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RHZW5lcmF0ZUFk
ZE9wYXF1ZVJvb3Q+IHx8ICFKU1Rlc3RHZW5lcmF0ZUFkZE9wYXF1ZVJvb3Q6Om5lZWRzRGVzdHJ1
Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3Ry
dWN0aWJsZU9iamVjdCwgSlNUZXN0R2VuZXJhdGVBZGRPcGFxdWVSb290PikKLSAgICAgICAgc3Bh
Y2VzLm1fc3Vic3BhY2VGb3JUZXN0R2VuZXJhdGVBZGRPcGFxdWVSb290ID0gbWFrZVVuaXF1ZTxJ
c29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2Jq
ZWN0SGVhcENlbGxUeXBlLmdldCgpLCBKU1Rlc3RHZW5lcmF0ZUFkZE9wYXF1ZVJvb3QpOworICAg
ICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RHZW5lcmF0ZUFkZE9wYXF1ZVJvb3QgPSBtYWtl
VW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVj
dGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0R2VuZXJhdGVBZGRPcGFxdWVSb290KTsK
ICAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEdlbmVyYXRlQWRkT3Bh
cXVlUm9vdCA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhl
YXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVGVzdEdlbmVyYXRlQWRkT3BhcXVlUm9v
dCk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEdlbmVyYXRlQWRkT3BhcXVlUm9v
dCA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZt
LmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0R2VuZXJhdGVBZGRPcGFxdWVSb290KTsKICAgICBh
dXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEdlbmVyYXRlQWRkT3BhcXVlUm9v
dC5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJR05P
UkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZS5jcHAJKHJldmlzaW9uIDI4NjAyNCkKKysrIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RHZW5lcmF0ZUlzUmVh
Y2hhYmxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjYsNyArNjYsNyBAQCBwdWJsaWM6CiAgICAg
c3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsK
ICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0R2VuZXJh
dGVJc1JlYWNoYWJsZVByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5P
YmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAg
fQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZt
LCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5
cGUpCiAgICAgewpAQCAtMTk3LDkgKzE5Nyw5IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdEdl
bmVyYXRlSXNSZWFjaGEKICAgICAgICAgcmV0dXJuIHNwYWNlOwogICAgIHN0YXRpY19hc3NlcnQo
c3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0R2VuZXJh
dGVJc1JlYWNoYWJsZT4gfHwgIUpTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGU6Om5lZWRzRGVzdHJ1
Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3Ry
dWN0aWJsZU9iamVjdCwgSlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZT4pCi0gICAgICAgIHNwYWNl
cy5tX3N1YnNwYWNlRm9yVGVzdEdlbmVyYXRlSXNSZWFjaGFibGUgPSBtYWtlVW5pcXVlPElzb1N1
YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RI
ZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGUpOworICAgICAgICBz
cGFjZXMubV9zdWJzcGFjZUZvclRlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlID0gbWFrZVVuaXF1ZTxJ
c29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2Jq
ZWN0SGVhcENlbGxUeXBlKCksIEpTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGUpOwogICAgIGVsc2UK
LSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZSA9IG1h
a2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxI
ZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGUpOworICAgICAgICBz
cGFjZXMubV9zdWJzcGFjZUZvclRlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlID0gbWFrZVVuaXF1ZTxJ
c29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlw
ZSgpLCBKU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlKTsKICAgICBhdXRvKiBzcGFjZSA9IHNwYWNl
cy5tX3N1YnNwYWNlRm9yVGVzdEdlbmVyYXRlSXNSZWFjaGFibGUuZ2V0KCk7CiBJR05PUkVfV0FS
TklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0
YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0R2xvYmFsT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2xvYmFsT2JqZWN0LmNwcAko
cmV2aXNpb24gMjg2MDI0KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdEdsb2JhbE9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE4MTQsNyArMTgx
NCw3IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdEdsb2JhbE9iamVjdDo6c3UKICAgICBhdXRv
JiBzcGFjZXMgPSBjbGllbnREYXRhLnN1YnNwYWNlcygpOwogICAgIGlmIChhdXRvKiBzcGFjZSA9
IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEdsb2JhbE9iamVjdC5nZXQoKSkKICAgICAgICAgcmV0
dXJuIHNwYWNlOwotICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEdsb2JhbE9iamVjdCA9IG1h
a2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIGNsaWVudERh
dGEubV9oZWFwQ2VsbFR5cGVGb3JKU1Rlc3RHbG9iYWxPYmplY3QuZ2V0KCksIEpTVGVzdEdsb2Jh
bE9iamVjdCk7CisgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0R2xvYmFsT2JqZWN0ID0gbWFr
ZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKmNsaWVudERh
dGEubV9oZWFwQ2VsbFR5cGVGb3JKU1Rlc3RHbG9iYWxPYmplY3QsIEpTVGVzdEdsb2JhbE9iamVj
dCk7CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RHbG9iYWxPYmpl
Y3QuZ2V0KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdO
T1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2xvYmFsT2JqZWN0LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dEdsb2JhbE9iamVjdC5oCShyZXZpc2lvbiAyODYwMjQpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2xvYmFsT2JqZWN0LmgJKHdvcmtpbmcgY29weSkK
QEAgLTk4LDcgKzk4LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBz
dWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNP
X1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdEdsb2JhbE9iamVjdFByb3RvdHlwZSwgQmFzZSk7Ci0g
ICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5w
bGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3Jl
YXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpJbmRleDogU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXIu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyLmNwcAkocmV2aXNpb24gMjg2MDI0KQor
KysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEluZGV4ZWRT
ZXR0ZXJOb0lkZW50aWZpZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NSw3ICs2NSw3IEBAIHB1
YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYg
dm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShK
U1Rlc3RJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAg
cmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2Jq
ZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1
Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlND
OjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC0yNzYsOSArMjc2LDkgQEAgSlNDOjpJc29T
dWJzcGFjZSogSlNUZXN0SW5kZXhlZFNldHRlck5vSQogICAgICAgICByZXR1cm4gc3BhY2U7CiAg
ICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2Jq
ZWN0LCBKU1Rlc3RJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyPiB8fCAhSlNUZXN0SW5kZXhlZFNl
dHRlck5vSWRlbnRpZmllcjo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3RleHByIChz
dGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RJbmRleGVk
U2V0dGVyTm9JZGVudGlmaWVyPikKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0SW5k
ZXhlZFNldHRlck5vSWRlbnRpZmllciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJT
UEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5nZXQo
KSwgSlNUZXN0SW5kZXhlZFNldHRlck5vSWRlbnRpZmllcik7CisgICAgICAgIHNwYWNlcy5tX3N1
YnNwYWNlRm9yVGVzdEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXIgPSBtYWtlVW5pcXVlPElzb1N1
YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RI
ZWFwQ2VsbFR5cGUoKSwgSlNUZXN0SW5kZXhlZFNldHRlck5vSWRlbnRpZmllcik7CiAgICAgZWxz
ZQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RJbmRleGVkU2V0dGVyTm9JZGVudGlm
aWVyID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwg
dm0uY2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNUZXN0SW5kZXhlZFNldHRlck5vSWRlbnRpZmll
cik7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEluZGV4ZWRTZXR0ZXJOb0lkZW50
aWZpZXIgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFw
LCB2bS5jZWxsSGVhcENlbGxUeXBlKCksIEpTVGVzdEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXIp
OwogICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0SW5kZXhlZFNldHRl
ck5vSWRlbnRpZmllci5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUt
Y29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbmRleGVk
U2V0dGVyVGhyb3dpbmdFeGNlcHRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNl
cHRpb24uY3BwCShyZXZpc2lvbiAyODYwMjQpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNjUsNyArNjUsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6
SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RB
VElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0SW5kZXhlZFNldHRlclRocm93
aW5nRXhjZXB0aW9uUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9i
amVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9
CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0s
IEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlw
ZSkKICAgICB7CkBAIC0yNzYsOSArMjc2LDkgQEAgSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0SW5k
ZXhlZFNldHRlclRocgogICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fzc2VydChz
dGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RJbmRleGVk
U2V0dGVyVGhyb3dpbmdFeGNlcHRpb24+IHx8ICFKU1Rlc3RJbmRleGVkU2V0dGVyVGhyb3dpbmdF
eGNlcHRpb246Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19i
YXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0SW5kZXhlZFNldHRlclRo
cm93aW5nRXhjZXB0aW9uPikKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0SW5kZXhl
ZFNldHRlclRocm93aW5nRXhjZXB0aW9uID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NV
QlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmdl
dCgpLCBKU1Rlc3RJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24pOworICAgICAgICBzcGFj
ZXMubV9zdWJzcGFjZUZvclRlc3RJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24gPSBtYWtl
VW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVj
dGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0SW5kZXhlZFNldHRlclRocm93aW5nRXhj
ZXB0aW9uKTsKICAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEluZGV4
ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbiA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19T
VUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVGVzdElu
ZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbik7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNl
Rm9yVGVzdEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbiA9IG1ha2VVbmlxdWU8SXNvU3Vi
c3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwg
SlNUZXN0SW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uKTsKICAgICBhdXRvKiBzcGFjZSA9
IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5n
ZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVf
V0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbmRleGVkU2V0dGVyV2l0aElkZW50
aWZpZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXIuY3BwCShyZXZpc2lvbiAy
ODYwMjQpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
SW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzMsNyAr
NzMsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9y
KEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0Vf
U0hBUkFCTEUoSlNUZXN0SW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyUHJvdG90eXBlLCBCYXNl
KTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4g
JnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJl
KiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC0zMDgsOSArMzA4LDkg
QEAgSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0SW5kZXhlZFNldHRlcldpdAogICAgICAgICByZXR1
cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVz
dHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXI+IHx8ICFK
U1Rlc3RJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXI6Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAg
IGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVj
dCwgSlNUZXN0SW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyPikKLSAgICAgICAgc3BhY2VzLm1f
c3Vic3BhY2VGb3JUZXN0SW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyID0gbWFrZVVuaXF1ZTxJ
c29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2Jq
ZWN0SGVhcENlbGxUeXBlLmdldCgpLCBKU1Rlc3RJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXIp
OworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RJbmRleGVkU2V0dGVyV2l0aElkZW50
aWZpZXIgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFw
LCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0SW5kZXhlZFNldHRl
cldpdGhJZGVudGlmaWVyKTsKICAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9y
VGVzdEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+
IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEpT
VGVzdEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllcik7CisgICAgICAgIHNwYWNlcy5tX3N1YnNw
YWNlRm9yVGVzdEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllciA9IG1ha2VVbmlxdWU8SXNvU3Vi
c3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwg
SlNUZXN0SW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyKTsKICAgICBhdXRvKiBzcGFjZSA9IHNw
YWNlcy5tX3N1YnNwYWNlRm9yVGVzdEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllci5nZXQoKTsK
IElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklO
R1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2UuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2Uu
Y3BwCShyZXZpc2lvbiAyODYwMjQpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTgxLDcgKzE4
MSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3Io
SlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9T
SEFSQUJMRShKU1Rlc3RJbnRlcmZhY2VQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4g
JnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFj
ZSgpOwogICAgIH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShK
U0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFs
dWUgcHJvdG90eXBlKQogICAgIHsKQEAgLTExMDQsOSArMTEwNCw5IEBAIHB1YmxpYzoKICAgICAg
ICAgICAgIHJldHVybiBzcGFjZTsKICAgICAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vf
b2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBUZXN0SW50ZXJmYWNlSXRlcmF0b3I+IHx8
ICFUZXN0SW50ZXJmYWNlSXRlcmF0b3I6Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAgICAgICBpZiBj
b25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIFRl
c3RJbnRlcmZhY2VJdGVyYXRvcj4pCi0gICAgICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRl
c3RJbnRlcmZhY2VJdGVyYXRvciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFD
RV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5nZXQoKSwg
VGVzdEludGVyZmFjZUl0ZXJhdG9yKTsKKyAgICAgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9y
VGVzdEludGVyZmFjZUl0ZXJhdG9yID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQ
QUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCksIFRl
c3RJbnRlcmZhY2VJdGVyYXRvcik7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHNwYWNlcy5t
X3N1YnNwYWNlRm9yVGVzdEludGVyZmFjZUl0ZXJhdG9yID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFj
ZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwg
VGVzdEludGVyZmFjZUl0ZXJhdG9yKTsKKyAgICAgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9y
VGVzdEludGVyZmFjZUl0ZXJhdG9yID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQ
QUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBUZXN0SW50ZXJmYWNlSXRl
cmF0b3IpOwogICAgICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdElu
dGVyZmFjZUl0ZXJhdG9yLmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJs
ZS1jb2RlIikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpA
QCAtMTE5Niw5ICsxMTk2LDkgQEAgSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0SW50ZXJmYWNlOjpz
dWJzcAogICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jh
c2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RJbnRlcmZhY2U+IHx8ICFK
U1Rlc3RJbnRlcmZhY2U6Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhwciAoc3Rk
Ojppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0SW50ZXJmYWNl
PikKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0SW50ZXJmYWNlID0gbWFrZVVuaXF1
ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxl
T2JqZWN0SGVhcENlbGxUeXBlLmdldCgpLCBKU1Rlc3RJbnRlcmZhY2UpOworICAgICAgICBzcGFj
ZXMubV9zdWJzcGFjZUZvclRlc3RJbnRlcmZhY2UgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJ
U09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5
cGUoKSwgSlNUZXN0SW50ZXJmYWNlKTsKICAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNw
YWNlRm9yVGVzdEludGVyZmFjZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFD
RV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVGVzdEludGVyZmFj
ZSk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEludGVyZmFjZSA9IG1ha2VVbmlx
dWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2Vs
bFR5cGUoKSwgSlNUZXN0SW50ZXJmYWNlKTsKICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1
YnNwYWNlRm9yVGVzdEludGVyZmFjZS5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5y
ZWFjaGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21w
YXJlIikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RJbnRlcmZhY2VMZWFkaW5nVW5kZXJzY29yZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZUxlYWRpbmdVbmRl
cnNjb3JlLmNwcAkocmV2aXNpb24gMjg2MDI0KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZUxlYWRpbmdVbmRlcnNjb3JlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNjYsNyArNjYsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNv
U3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElD
X0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0SW50ZXJmYWNlTGVhZGluZ1VuZGVy
c2NvcmVQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3Bh
Y2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KICAgICBz
dGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAg
IHsKQEAgLTE4Nyw5ICsxODcsOSBAQCBKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3RJbnRlcmZhY2VM
ZWFkaW5nCiAgICAgICAgIHJldHVybiBzcGFjZTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNf
YmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdEludGVyZmFjZUxlYWRp
bmdVbmRlcnNjb3JlPiB8fCAhSlNUZXN0SW50ZXJmYWNlTGVhZGluZ1VuZGVyc2NvcmU6Om5lZWRz
RGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpK
U0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0SW50ZXJmYWNlTGVhZGluZ1VuZGVyc2NvcmU+KQot
ICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RJbnRlcmZhY2VMZWFkaW5nVW5kZXJzY29y
ZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZt
LmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNUZXN0SW50ZXJmYWNlTGVh
ZGluZ1VuZGVyc2NvcmUpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RJbnRlcmZh
Y2VMZWFkaW5nVW5kZXJzY29yZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFD
RV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBKU1Rl
c3RJbnRlcmZhY2VMZWFkaW5nVW5kZXJzY29yZSk7CiAgICAgZWxzZQotICAgICAgICBzcGFjZXMu
bV9zdWJzcGFjZUZvclRlc3RJbnRlcmZhY2VMZWFkaW5nVW5kZXJzY29yZSA9IG1ha2VVbmlxdWU8
SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5
cGUuZ2V0KCksIEpTVGVzdEludGVyZmFjZUxlYWRpbmdVbmRlcnNjb3JlKTsKKyAgICAgICAgc3Bh
Y2VzLm1fc3Vic3BhY2VGb3JUZXN0SW50ZXJmYWNlTGVhZGluZ1VuZGVyc2NvcmUgPSBtYWtlVW5p
cXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENl
bGxUeXBlKCksIEpTVGVzdEludGVyZmFjZUxlYWRpbmdVbmRlcnNjb3JlKTsKICAgICBhdXRvKiBz
cGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEludGVyZmFjZUxlYWRpbmdVbmRlcnNjb3Jl
LmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKIElHTk9S
RV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRleDogU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEl0ZXJhYmxlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SXRl
cmFibGUuY3BwCShyZXZpc2lvbiAyODYwMjQpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0SXRlcmFibGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NSw3
ICs3NSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VG
b3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFD
RV9TSEFSQUJMRShKU1Rlc3RJdGVyYWJsZVByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVy
biAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNw
YWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJl
KEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNW
YWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAtMjAxLDkgKzIwMSw5IEBAIHB1YmxpYzoKICAgICAg
ICAgICAgIHJldHVybiBzcGFjZTsKICAgICAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vf
b2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBUZXN0SXRlcmFibGVJdGVyYXRvcj4gfHwg
IVRlc3RJdGVyYWJsZUl0ZXJhdG9yOjpuZWVkc0Rlc3RydWN0aW9uKTsKICAgICAgICAgaWYgY29u
c3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBUZXN0
SXRlcmFibGVJdGVyYXRvcj4pCi0gICAgICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RJ
dGVyYWJsZUl0ZXJhdG9yID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lO
SVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmdldCgpLCBUZXN0
SXRlcmFibGVJdGVyYXRvcik7CisgICAgICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RJ
dGVyYWJsZUl0ZXJhdG9yID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lO
SVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCksIFRlc3RJdGVy
YWJsZUl0ZXJhdG9yKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgc3BhY2VzLm1fc3Vic3Bh
Y2VGb3JUZXN0SXRlcmFibGVJdGVyYXRvciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19T
VUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIFRlc3RJdGVy
YWJsZUl0ZXJhdG9yKTsKKyAgICAgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEl0ZXJh
YmxlSXRlcmF0b3IgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2
bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCksIFRlc3RJdGVyYWJsZUl0ZXJhdG9yKTsKICAg
ICAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RJdGVyYWJsZUl0ZXJh
dG9yLmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKIElH
Tk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpAQCAtMjkzLDkgKzI5
Myw5IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdEl0ZXJhYmxlOjpzdWJzcGEKICAgICAgICAg
cmV0dXJuIHNwYWNlOwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpK
U0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0SXRlcmFibGU+IHx8ICFKU1Rlc3RJdGVyYWJsZTo6
bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxK
U0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RJdGVyYWJsZT4pCi0gICAgICAgIHNwYWNl
cy5tX3N1YnNwYWNlRm9yVGVzdEl0ZXJhYmxlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNP
X1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBl
LmdldCgpLCBKU1Rlc3RJdGVyYWJsZSk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVz
dEl0ZXJhYmxlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0u
aGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCksIEpTVGVzdEl0ZXJhYmxl
KTsKICAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEl0ZXJhYmxlID0g
bWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2Vs
bEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNUZXN0SXRlcmFibGUpOworICAgICAgICBzcGFjZXMubV9z
dWJzcGFjZUZvclRlc3RJdGVyYWJsZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJT
UEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0SXRlcmFibGUp
OwogICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0SXRlcmFibGUuZ2V0
KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dB
Uk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3IuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rvci5jcHAJKHJldmlzaW9uIDI4NjAyNCkKKysrIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RKU0J1aWx0aW5Db25zdHJ1
Y3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY5LDcgKzY5LDcgQEAgcHVibGljOgogICAgIHN0
YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAg
ICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdEpTQnVpbHRp
bkNvbnN0cnVjdG9yUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9i
amVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9
CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0s
IEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlw
ZSkKICAgICB7CkBAIC0yMzAsOSArMjMwLDkgQEAgSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0SlNC
dWlsdGluQ29uc3RydQogICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fzc2VydChz
dGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RKU0J1aWx0
aW5Db25zdHJ1Y3Rvcj4gfHwgIUpTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yOjpuZWVkc0Rlc3Ry
dWN0aW9uKTsKICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0
cnVjdGlibGVPYmplY3QsIEpTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yPikKLSAgICAgICAgc3Bh
Y2VzLm1fc3Vic3BhY2VGb3JUZXN0SlNCdWlsdGluQ29uc3RydWN0b3IgPSBtYWtlVW5pcXVlPElz
b1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmpl
Y3RIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yKTsKKyAgICAg
ICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0SlNCdWlsdGluQ29uc3RydWN0b3IgPSBtYWtlVW5p
cXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGli
bGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3IpOwogICAg
IGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0SlNCdWlsdGluQ29uc3RydWN0
b3IgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2
bS5jZWxsSGVhcENlbGxUeXBlLmdldCgpLCBKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rvcik7Cisg
ICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yID0gbWFr
ZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhl
YXBDZWxsVHlwZSgpLCBKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rvcik7CiAgICAgYXV0byogc3Bh
Y2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rvci5nZXQoKTsK
IElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklO
R1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb24uY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RMZWdhY3lGYWN0b3J5RnVuY3Rpb24uY3BwCShyZXZpc2lvbiAyODYwMjQpCisrKyBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0
aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjcsNyArNjcsNyBAQCBwdWJsaWM6CiAgICAgc3Rh
dGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAg
ICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0TGVnYWN5RmFj
dG9yeUZ1bmN0aW9uUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9i
amVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9
CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0s
IEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlw
ZSkKICAgICB7CkBAIC0yMzAsOSArMjMwLDkgQEAgSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0TGVn
YWN5RmFjdG9yeUZ1bgogICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fzc2VydChz
dGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RMZWdhY3lG
YWN0b3J5RnVuY3Rpb24+IHx8ICFKU1Rlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb246Om5lZWRzRGVz
dHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rl
c3RydWN0aWJsZU9iamVjdCwgSlNUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uPikKLSAgICAgICAg
c3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uID0gbWFrZVVuaXF1
ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxl
T2JqZWN0SGVhcENlbGxUeXBlLmdldCgpLCBKU1Rlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb24pOwor
ICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb24gPSBt
YWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0
cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9u
KTsKICAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdExlZ2FjeUZhY3Rv
cnlGdW5jdGlvbiA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZt
LmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVGVzdExlZ2FjeUZhY3RvcnlGdW5j
dGlvbik7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdExlZ2FjeUZhY3RvcnlGdW5j
dGlvbiA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAs
IHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uKTsKICAg
ICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdExlZ2FjeUZhY3RvcnlGdW5j
dGlvbi5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJ
R05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RMZWdhY3lOb0ludGVyZmFj
ZU9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0LmNwcAkocmV2aXNpb24gMjg2
MDI0KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdExl
Z2FjeU5vSW50ZXJmYWNlT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtODUsNyArODUsNyBA
QCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6
Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFC
TEUoSlNUZXN0TGVnYWN5Tm9JbnRlcmZhY2VPYmplY3RQcm90b3R5cGUsIEJhc2UpOwotICAgICAg
ICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5P
YmplY3RTcGFjZSgpOwogICAgIH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0
cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBK
U0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKQEAgLTMzNSw5ICszMzUsOSBAQCBKU0M6Oklz
b1N1YnNwYWNlKiBKU1Rlc3RMZWdhY3lOb0ludGVyZmFjCiAgICAgICAgIHJldHVybiBzcGFjZTsK
ICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVP
YmplY3QsIEpTVGVzdExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0PiB8fCAhSlNUZXN0TGVnYWN5Tm9J
bnRlcmZhY2VPYmplY3Q6Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhwciAoc3Rk
Ojppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0TGVnYWN5Tm9J
bnRlcmZhY2VPYmplY3Q+KQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RMZWdhY3lO
b0ludGVyZmFjZU9iamVjdCA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9J
TklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNU
ZXN0TGVnYWN5Tm9JbnRlcmZhY2VPYmplY3QpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZv
clRlc3RMZWdhY3lOb0ludGVyZmFjZU9iamVjdCA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElT
T19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlw
ZSgpLCBKU1Rlc3RMZWdhY3lOb0ludGVyZmFjZU9iamVjdCk7CiAgICAgZWxzZQotICAgICAgICBz
cGFjZXMubV9zdWJzcGFjZUZvclRlc3RMZWdhY3lOb0ludGVyZmFjZU9iamVjdCA9IG1ha2VVbmlx
dWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2Vs
bFR5cGUuZ2V0KCksIEpTVGVzdExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0KTsKKyAgICAgICAgc3Bh
Y2VzLm1fc3Vic3BhY2VGb3JUZXN0TGVnYWN5Tm9JbnRlcmZhY2VPYmplY3QgPSBtYWtlVW5pcXVl
PElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxU
eXBlKCksIEpTVGVzdExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0KTsKICAgICBhdXRvKiBzcGFjZSA9
IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0LmdldCgpOwog
SUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKIElHTk9SRV9XQVJOSU5H
U19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zLmNwcAkocmV2aXNpb24gMjg2MDI0KQorKysgU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdExlZ2FjeU92ZXJyaWRlQnVp
bHRJbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03Myw3ICs3Myw3IEBAIHB1YmxpYzoKICAgICBz
dGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewog
ICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3RMZWdhY3lP
dmVycmlkZUJ1aWx0SW5zUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFp
bk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAg
ICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYg
dm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3Rv
dHlwZSkKICAgICB7CkBAIC0yNDksOSArMjQ5LDkgQEAgSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0
TGVnYWN5T3ZlcnJpZGVCdQogICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fzc2Vy
dChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RMZWdh
Y3lPdmVycmlkZUJ1aWx0SW5zPiB8fCAhSlNUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdEluczo6bmVl
ZHNEZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6
OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zPikKLSAg
ICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdElucyA9IG1h
a2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3Ry
dWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNUZXN0TGVnYWN5T3ZlcnJpZGVCdWls
dElucyk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdExlZ2FjeU92ZXJyaWRlQnVp
bHRJbnMgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFw
LCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0TGVnYWN5T3ZlcnJp
ZGVCdWlsdElucyk7CiAgICAgZWxzZQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RM
ZWdhY3lPdmVycmlkZUJ1aWx0SW5zID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQ
QUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNUZXN0TGVnYWN5
T3ZlcnJpZGVCdWlsdElucyk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdExlZ2Fj
eU92ZXJyaWRlQnVpbHRJbnMgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0Vf
SU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCksIEpTVGVzdExlZ2FjeU92ZXJyaWRl
QnVpbHRJbnMpOwogICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TGVn
YWN5T3ZlcnJpZGVCdWlsdElucy5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFj
aGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJl
IikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RN
YXBMaWtlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0TWFwTGlrZS5jcHAJKHJldmlzaW9uIDI4NjAyNCkKKysrIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RNYXBMaWtlLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtODIsNyArODIsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vi
c3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FT
U0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0TWFwTGlrZVByb3RvdHlwZSwgQmFzZSk7
Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2
bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSog
Y3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAtMzY2LDkgKzM2Niw5IEBA
IEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdE1hcExpa2U6OnN1YnNwYWMKICAgICAgICAgcmV0dXJu
IHNwYWNlOwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3Ry
dWN0aWJsZU9iamVjdCwgSlNUZXN0TWFwTGlrZT4gfHwgIUpTVGVzdE1hcExpa2U6Om5lZWRzRGVz
dHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rl
c3RydWN0aWJsZU9iamVjdCwgSlNUZXN0TWFwTGlrZT4pCi0gICAgICAgIHNwYWNlcy5tX3N1YnNw
YWNlRm9yVGVzdE1hcExpa2UgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0Vf
SU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuZ2V0KCksIEpT
VGVzdE1hcExpa2UpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RNYXBMaWtlID0g
bWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVz
dHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCksIEpTVGVzdE1hcExpa2UpOwogICAgIGVsc2UK
LSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TWFwTGlrZSA9IG1ha2VVbmlxdWU8SXNv
U3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUu
Z2V0KCksIEpTVGVzdE1hcExpa2UpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RN
YXBMaWtlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVh
cCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RNYXBMaWtlKTsKICAgICBhdXRvKiBzcGFj
ZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE1hcExpa2UuZ2V0KCk7CiBJR05PUkVfV0FSTklO
R1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0
b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0TWFwTGlrZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9ucy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE1h
cExpa2VXaXRoT3ZlcnJpZGRlbk9wZXJhdGlvbnMuY3BwCShyZXZpc2lvbiAyODYwMjQpCisrKyBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TWFwTGlrZVdpdGhP
dmVycmlkZGVuT3BlcmF0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg2LDcgKzg2LDcgQEAg
cHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZN
JiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxF
KEpTVGVzdE1hcExpa2VXaXRoT3ZlcnJpZGRlbk9wZXJhdGlvbnNQcm90b3R5cGUsIEJhc2UpOwot
ICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0u
cGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNy
ZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKQEAgLTM4MCw5ICszODAsOSBAQCBK
U0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3RNYXBMaWtlV2l0aE92ZXJyCiAgICAgICAgIHJldHVybiBz
cGFjZTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVj
dGlibGVPYmplY3QsIEpTVGVzdE1hcExpa2VXaXRoT3ZlcnJpZGRlbk9wZXJhdGlvbnM+IHx8ICFK
U1Rlc3RNYXBMaWtlV2l0aE92ZXJyaWRkZW5PcGVyYXRpb25zOjpuZWVkc0Rlc3RydWN0aW9uKTsK
ICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVP
YmplY3QsIEpTVGVzdE1hcExpa2VXaXRoT3ZlcnJpZGRlbk9wZXJhdGlvbnM+KQotICAgICAgICBz
cGFjZXMubV9zdWJzcGFjZUZvclRlc3RNYXBMaWtlV2l0aE92ZXJyaWRkZW5PcGVyYXRpb25zID0g
bWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVz
dHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmdldCgpLCBKU1Rlc3RNYXBMaWtlV2l0aE92ZXJy
aWRkZW5PcGVyYXRpb25zKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TWFwTGlr
ZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9ucyA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19T
VUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgp
LCBKU1Rlc3RNYXBMaWtlV2l0aE92ZXJyaWRkZW5PcGVyYXRpb25zKTsKICAgICBlbHNlCi0gICAg
ICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE1hcExpa2VXaXRoT3ZlcnJpZGRlbk9wZXJhdGlv
bnMgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2
bS5jZWxsSGVhcENlbGxUeXBlLmdldCgpLCBKU1Rlc3RNYXBMaWtlV2l0aE92ZXJyaWRkZW5PcGVy
YXRpb25zKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TWFwTGlrZVdpdGhPdmVy
cmlkZGVuT3BlcmF0aW9ucyA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9J
TklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0TWFwTGlrZVdpdGhPdmVy
cmlkZGVuT3BlcmF0aW9ucyk7CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZv
clRlc3RNYXBMaWtlV2l0aE92ZXJyaWRkZW5PcGVyYXRpb25zLmdldCgpOwogSUdOT1JFX1dBUk5J
TkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1
dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlck5vSWRlbnRpZmllci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dE5hbWVkQW5kSW5kZXhlZFNldHRlck5vSWRlbnRpZmllci5jcHAJKHJldmlzaW9uIDI4NjAyNCkK
KysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEFu
ZEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02Niw3ICs2
Niw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3Io
SlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9T
SEFSQUJMRShKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXJQcm90b3R5cGUs
IEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJl
dHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1
Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKQEAgLTM0NCw5ICsz
NDQsOSBAQCBKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTCiAgICAgICAg
IHJldHVybiBzcGFjZTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6
SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlck5vSWRlbnRp
Zmllcj4gfHwgIUpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlck5vSWRlbnRpZmllcjo6bmVlZHNE
ZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpT
RGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZp
ZXI+KQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZEFuZEluZGV4ZWRTZXR0
ZXJOb0lkZW50aWZpZXIgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5J
VCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVGVz
dE5hbWVkQW5kSW5kZXhlZFNldHRlck5vSWRlbnRpZmllcik7CisgICAgICAgIHNwYWNlcy5tX3N1
YnNwYWNlRm9yVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlck5vSWRlbnRpZmllciA9IG1ha2VVbmlx
dWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJs
ZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJOb0lkZW50
aWZpZXIpOwogICAgIGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRB
bmRJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNP
X1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNUZXN0
TmFtZWRBbmRJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vi
c3BhY2VGb3JUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyID0gbWFrZVVuaXF1
ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxs
VHlwZSgpLCBKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXIpOwogICAgIGF1
dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVy
Tm9JZGVudGlmaWVyLmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1j
b2RlIikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRl
eDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQW5k
SW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0
dGVyVGhyb3dpbmdFeGNlcHRpb24uY3BwCShyZXZpc2lvbiAyODYwMjQpCisrKyBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVy
VGhyb3dpbmdFeGNlcHRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02Niw3ICs2Niw3IEBAIHB1
YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYg
dm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShK
U1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvblByb3RvdHlwZSwgQmFz
ZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJu
ICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVy
ZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAtMzQ0LDkgKzM0NCw5
IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdE5hbWVkQW5kSW5kZXhlZFMKICAgICAgICAgcmV0
dXJuIHNwYWNlOwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rl
c3RydWN0aWJsZU9iamVjdCwgSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNl
cHRpb24+IHx8ICFKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbjo6
bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxK
U0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJUaHJv
d2luZ0V4Y2VwdGlvbj4pCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkQW5k
SW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4g
SVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxU
eXBlLmdldCgpLCBKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbik7
CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlclRo
cm93aW5nRXhjZXB0aW9uID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lO
SVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCksIEpTVGVzdE5h
bWVkQW5kSW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uKTsKICAgICBlbHNlCi0gICAgICAg
IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlclRocm93aW5nRXhj
ZXB0aW9uID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVh
cCwgdm0uY2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVy
VGhyb3dpbmdFeGNlcHRpb24pOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1l
ZEFuZEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbiA9IG1ha2VVbmlxdWU8SXNvU3Vic3Bh
Y2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNU
ZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24pOwogICAgIGF1dG8qIHNw
YWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyVGhyb3dp
bmdFeGNlcHRpb24uZ2V0KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNv
ZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRBbmRJ
bmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJX
aXRoSWRlbnRpZmllci5jcHAJKHJldmlzaW9uIDI4NjAyNCkKKysrIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJXaXRoSWRl
bnRpZmllci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc1LDcgKzc1LDcgQEAgcHVibGljOgogICAg
IHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7
CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdE5hbWVk
QW5kSW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAg
cmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2Jq
ZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1
Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlND
OjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC00MDEsOSArNDAxLDkgQEAgSlNDOjpJc29T
dWJzcGFjZSogSlNUZXN0TmFtZWRBbmRJbmRleGVkUwogICAgICAgICByZXR1cm4gc3BhY2U7CiAg
ICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2Jq
ZWN0LCBKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllcj4gfHwgIUpTVGVz
dE5hbWVkQW5kSW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyOjpuZWVkc0Rlc3RydWN0aW9uKTsK
ICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVP
YmplY3QsIEpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyPikKLSAgICAg
ICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0aElkZW50
aWZpZXIgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFw
LCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVGVzdE5hbWVkQW5k
SW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VG
b3JUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXIgPSBtYWtlVW5pcXVlPElz
b1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmpl
Y3RIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0aElkZW50aWZp
ZXIpOwogICAgIGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRBbmRJ
bmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXIgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09f
U1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlLmdldCgpLCBKU1Rlc3RO
YW1lZEFuZEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllcik7CisgICAgICAgIHNwYWNlcy5tX3N1
YnNwYWNlRm9yVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyID0gbWFrZVVu
aXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBD
ZWxsVHlwZSgpLCBKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllcik7CiAg
ICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZEFuZEluZGV4ZWRT
ZXR0ZXJXaXRoSWRlbnRpZmllci5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFj
aGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJl
IikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RO
YW1lZERlbGV0ZXJOb0lkZW50aWZpZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJOb0lkZW50aWZpZXIu
Y3BwCShyZXZpc2lvbiAyODYwMjQpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyTm9JZGVudGlmaWVyLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNjUsNyArNjUsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2Uq
IHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9J
U09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0TmFtZWREZWxldGVyTm9JZGVudGlmaWVyUHJvdG90
eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAg
ICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6
U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC0yNDYs
OSArMjQ2LDkgQEAgSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0TmFtZWREZWxldGVyTm9JZAogICAg
ICAgICByZXR1cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxK
U0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3ROYW1lZERlbGV0ZXJOb0lkZW50aWZpZXI+
IHx8ICFKU1Rlc3ROYW1lZERlbGV0ZXJOb0lkZW50aWZpZXI6Om5lZWRzRGVzdHJ1Y3Rpb24pOwog
ICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9i
amVjdCwgSlNUZXN0TmFtZWREZWxldGVyTm9JZGVudGlmaWVyPikKLSAgICAgICAgc3BhY2VzLm1f
c3Vic3BhY2VGb3JUZXN0TmFtZWREZWxldGVyTm9JZGVudGlmaWVyID0gbWFrZVVuaXF1ZTxJc29T
dWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0
SGVhcENlbGxUeXBlLmdldCgpLCBKU1Rlc3ROYW1lZERlbGV0ZXJOb0lkZW50aWZpZXIpOworICAg
ICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZERlbGV0ZXJOb0lkZW50aWZpZXIgPSBt
YWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0
cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0TmFtZWREZWxldGVyTm9JZGVudGlm
aWVyKTsKICAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkRGVs
ZXRlck5vSWRlbnRpZmllciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9J
TklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVGVzdE5hbWVkRGVsZXRl
ck5vSWRlbnRpZmllcik7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkRGVs
ZXRlck5vSWRlbnRpZmllciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9J
TklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0TmFtZWREZWxldGVyTm9J
ZGVudGlmaWVyKTsKICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5h
bWVkRGVsZXRlck5vSWRlbnRpZmllci5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5y
ZWFjaGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21w
YXJlIikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3ROYW1lZERlbGV0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlclRocm93
aW5nRXhjZXB0aW9uLmNwcAkocmV2aXNpb24gMjg2MDI0KQorKysgU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlclRocm93aW5nRXhjZXB0aW9u
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjUsNyArNjUsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGlj
IEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAg
ICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0TmFtZWREZWxldGVy
VGhyb3dpbmdFeGNlcHRpb25Qcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBs
YWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwog
ICAgIH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZN
JiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJv
dG90eXBlKQogICAgIHsKQEAgLTI0Niw5ICsyNDYsOSBAQCBKU0M6Oklzb1N1YnNwYWNlKiBKU1Rl
c3ROYW1lZERlbGV0ZXJUaHJvCiAgICAgICAgIHJldHVybiBzcGFjZTsKICAgICBzdGF0aWNfYXNz
ZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdE5h
bWVkRGVsZXRlclRocm93aW5nRXhjZXB0aW9uPiB8fCAhSlNUZXN0TmFtZWREZWxldGVyVGhyb3dp
bmdFeGNlcHRpb246Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjpp
c19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0TmFtZWREZWxldGVy
VGhyb3dpbmdFeGNlcHRpb24+KQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1l
ZERlbGV0ZXJUaHJvd2luZ0V4Y2VwdGlvbiA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19T
VUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5n
ZXQoKSwgSlNUZXN0TmFtZWREZWxldGVyVGhyb3dpbmdFeGNlcHRpb24pOworICAgICAgICBzcGFj
ZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZERlbGV0ZXJUaHJvd2luZ0V4Y2VwdGlvbiA9IG1ha2VV
bmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0
aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3ROYW1lZERlbGV0ZXJUaHJvd2luZ0V4Y2Vw
dGlvbik7CiAgICAgZWxzZQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZERl
bGV0ZXJUaHJvd2luZ0V4Y2VwdGlvbiA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJT
UEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVGVzdE5hbWVk
RGVsZXRlclRocm93aW5nRXhjZXB0aW9uKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JU
ZXN0TmFtZWREZWxldGVyVGhyb3dpbmdFeGNlcHRpb24gPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNl
PiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCksIEpTVGVz
dE5hbWVkRGVsZXRlclRocm93aW5nRXhjZXB0aW9uKTsKICAgICBhdXRvKiBzcGFjZSA9IHNwYWNl
cy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkRGVsZXRlclRocm93aW5nRXhjZXB0aW9uLmdldCgpOwog
SUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKIElHTk9SRV9XQVJOSU5H
U19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlcldpdGhJZGVudGlmaWVyLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0TmFtZWREZWxldGVyV2l0aElkZW50aWZpZXIuY3BwCShyZXZpc2lvbiAyODYwMjQpCisr
KyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxl
dGVyV2l0aElkZW50aWZpZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03Miw3ICs3Miw3IEBAIHB1
YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYg
dm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShK
U1Rlc3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllclByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAg
IHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9i
amVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3Ry
dWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpT
Qzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAtMjcwLDkgKzI3MCw5IEBAIEpTQzo6SXNv
U3Vic3BhY2UqIEpTVGVzdE5hbWVkRGVsZXRlcldpdGgKICAgICAgICAgcmV0dXJuIHNwYWNlOwog
ICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9i
amVjdCwgSlNUZXN0TmFtZWREZWxldGVyV2l0aElkZW50aWZpZXI+IHx8ICFKU1Rlc3ROYW1lZERl
bGV0ZXJXaXRoSWRlbnRpZmllcjo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3RleHBy
IChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3ROYW1l
ZERlbGV0ZXJXaXRoSWRlbnRpZmllcj4pCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVz
dE5hbWVkRGVsZXRlcldpdGhJZGVudGlmaWVyID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNP
X1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBl
LmdldCgpLCBKU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllcik7CisgICAgICAgIHNwYWNl
cy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkRGVsZXRlcldpdGhJZGVudGlmaWVyID0gbWFrZVVuaXF1
ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxl
T2JqZWN0SGVhcENlbGxUeXBlKCksIEpTVGVzdE5hbWVkRGVsZXRlcldpdGhJZGVudGlmaWVyKTsK
ICAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkRGVsZXRlcldp
dGhJZGVudGlmaWVyID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQo
dm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNUZXN0TmFtZWREZWxldGVyV2l0
aElkZW50aWZpZXIpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZERlbGV0
ZXJXaXRoSWRlbnRpZmllciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9J
TklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0TmFtZWREZWxldGVyV2l0
aElkZW50aWZpZXIpOwogICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0
TmFtZWREZWxldGVyV2l0aElkZW50aWZpZXIuZ2V0KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4o
InVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwt
Y29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0TmFtZWREZWxldGVyV2l0aEluZGV4ZWRHZXR0ZXIuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJX
aXRoSW5kZXhlZEdldHRlci5jcHAJKHJldmlzaW9uIDI4NjAyNCkKKysrIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSW5kZXhlZEdl
dHRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY2LDcgKzY2LDcgQEAgcHVibGljOgogICAgIHN0
YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAg
ICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdE5hbWVkRGVs
ZXRlcldpdGhJbmRleGVkR2V0dGVyUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2
bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2Uo
KTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlND
OjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVl
IHByb3RvdHlwZSkKICAgICB7CkBAIC0yNjIsOSArMjYyLDkgQEAgSlNDOjpJc29TdWJzcGFjZSog
SlNUZXN0TmFtZWREZWxldGVyV2l0aAogICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAgc3RhdGlj
X2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rl
c3ROYW1lZERlbGV0ZXJXaXRoSW5kZXhlZEdldHRlcj4gfHwgIUpTVGVzdE5hbWVkRGVsZXRlcldp
dGhJbmRleGVkR2V0dGVyOjpuZWVkc0Rlc3RydWN0aW9uKTsKICAgICBpZiBjb25zdGV4cHIgKHN0
ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdE5hbWVkRGVs
ZXRlcldpdGhJbmRleGVkR2V0dGVyPikKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0
TmFtZWREZWxldGVyV2l0aEluZGV4ZWRHZXR0ZXIgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJ
U09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5
cGUuZ2V0KCksIEpTVGVzdE5hbWVkRGVsZXRlcldpdGhJbmRleGVkR2V0dGVyKTsKKyAgICAgICAg
c3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWREZWxldGVyV2l0aEluZGV4ZWRHZXR0ZXIgPSBt
YWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0
cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0TmFtZWREZWxldGVyV2l0aEluZGV4
ZWRHZXR0ZXIpOwogICAgIGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFt
ZWREZWxldGVyV2l0aEluZGV4ZWRHZXR0ZXIgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09f
U1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlLmdldCgpLCBKU1Rlc3RO
YW1lZERlbGV0ZXJXaXRoSW5kZXhlZEdldHRlcik7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNl
Rm9yVGVzdE5hbWVkRGVsZXRlcldpdGhJbmRleGVkR2V0dGVyID0gbWFrZVVuaXF1ZTxJc29TdWJz
cGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBK
U1Rlc3ROYW1lZERlbGV0ZXJXaXRoSW5kZXhlZEdldHRlcik7CiAgICAgYXV0byogc3BhY2UgPSBz
cGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZERlbGV0ZXJXaXRoSW5kZXhlZEdldHRlci5nZXQo
KTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVfV0FS
TklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEdldHRlckNhbGxXaXRoLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0TmFtZWRHZXR0ZXJDYWxsV2l0aC5jcHAJKHJldmlzaW9uIDI4NjAyNCkKKysrIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEdldHRlckNhbGxXaXRo
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjUsNyArNjUsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGlj
IEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAg
ICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0TmFtZWRHZXR0ZXJD
YWxsV2l0aFByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RT
cGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAg
IHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6
OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAg
ICAgewpAQCAtMjIwLDkgKzIyMCw5IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdE5hbWVkR2V0
dGVyQ2FsbFcKICAgICAgICAgcmV0dXJuIHNwYWNlOwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjpp
c19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0TmFtZWRHZXR0ZXJD
YWxsV2l0aD4gfHwgIUpTVGVzdE5hbWVkR2V0dGVyQ2FsbFdpdGg6Om5lZWRzRGVzdHJ1Y3Rpb24p
OwogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJs
ZU9iamVjdCwgSlNUZXN0TmFtZWRHZXR0ZXJDYWxsV2l0aD4pCi0gICAgICAgIHNwYWNlcy5tX3N1
YnNwYWNlRm9yVGVzdE5hbWVkR2V0dGVyQ2FsbFdpdGggPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNl
PiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2Vs
bFR5cGUuZ2V0KCksIEpTVGVzdE5hbWVkR2V0dGVyQ2FsbFdpdGgpOworICAgICAgICBzcGFjZXMu
bV9zdWJzcGFjZUZvclRlc3ROYW1lZEdldHRlckNhbGxXaXRoID0gbWFrZVVuaXF1ZTxJc29TdWJz
cGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVh
cENlbGxUeXBlKCksIEpTVGVzdE5hbWVkR2V0dGVyQ2FsbFdpdGgpOwogICAgIGVsc2UKLSAgICAg
ICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRHZXR0ZXJDYWxsV2l0aCA9IG1ha2VVbmlx
dWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2Vs
bFR5cGUuZ2V0KCksIEpTVGVzdE5hbWVkR2V0dGVyQ2FsbFdpdGgpOworICAgICAgICBzcGFjZXMu
bV9zdWJzcGFjZUZvclRlc3ROYW1lZEdldHRlckNhbGxXaXRoID0gbWFrZVVuaXF1ZTxJc29TdWJz
cGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBK
U1Rlc3ROYW1lZEdldHRlckNhbGxXaXRoKTsKICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1
YnNwYWNlRm9yVGVzdE5hbWVkR2V0dGVyQ2FsbFdpdGguZ2V0KCk7CiBJR05PUkVfV0FSTklOR1Nf
QkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xv
Z2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0TmFtZWRHZXR0ZXJOb0lkZW50aWZpZXIuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEdldHRlck5v
SWRlbnRpZmllci5jcHAJKHJldmlzaW9uIDI4NjAyNCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEdldHRlck5vSWRlbnRpZmllci5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTY1LDcgKzY1LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklz
b1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJ
Q19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdE5hbWVkR2V0dGVyTm9JZGVudGlm
aWVyUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNl
OworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3Rh
dGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7
CkBAIC0yMjAsOSArMjIwLDkgQEAgSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0TmFtZWRHZXR0ZXJO
b0lkZQogICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jh
c2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3ROYW1lZEdldHRlck5vSWRl
bnRpZmllcj4gfHwgIUpTVGVzdE5hbWVkR2V0dGVyTm9JZGVudGlmaWVyOjpuZWVkc0Rlc3RydWN0
aW9uKTsKICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVj
dGlibGVPYmplY3QsIEpTVGVzdE5hbWVkR2V0dGVyTm9JZGVudGlmaWVyPikKLSAgICAgICAgc3Bh
Y2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRHZXR0ZXJOb0lkZW50aWZpZXIgPSBtYWtlVW5pcXVl
PElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVP
YmplY3RIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVGVzdE5hbWVkR2V0dGVyTm9JZGVudGlmaWVyKTsK
KyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRHZXR0ZXJOb0lkZW50aWZpZXIg
PSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5k
ZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0TmFtZWRHZXR0ZXJOb0lkZW50
aWZpZXIpOwogICAgIGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRH
ZXR0ZXJOb0lkZW50aWZpZXIgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0Vf
SU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlLmdldCgpLCBKU1Rlc3ROYW1lZEdldHRl
ck5vSWRlbnRpZmllcik7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkR2V0
dGVyTm9JZGVudGlmaWVyID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lO
SVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3ROYW1lZEdldHRlck5vSWRl
bnRpZmllcik7CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1l
ZEdldHRlck5vSWRlbnRpZmllci5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFj
aGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJl
IikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RO
YW1lZEdldHRlcldpdGhJZGVudGlmaWVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRHZXR0ZXJXaXRoSWRlbnRpZmll
ci5jcHAJKHJldmlzaW9uIDI4NjAyNCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEdldHRlcldpdGhJZGVudGlmaWVyLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNzAsNyArNzAsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3Bh
Y2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VS
VF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0TmFtZWRHZXR0ZXJXaXRoSWRlbnRpZmllclBy
b3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAg
ICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBK
U0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAt
MjQ2LDkgKzI0Niw5IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdE5hbWVkR2V0dGVyV2l0aEkK
ICAgICAgICAgcmV0dXJuIHNwYWNlOwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29m
X3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0TmFtZWRHZXR0ZXJXaXRoSWRlbnRp
Zmllcj4gfHwgIUpTVGVzdE5hbWVkR2V0dGVyV2l0aElkZW50aWZpZXI6Om5lZWRzRGVzdHJ1Y3Rp
b24pOwogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0
aWJsZU9iamVjdCwgSlNUZXN0TmFtZWRHZXR0ZXJXaXRoSWRlbnRpZmllcj4pCi0gICAgICAgIHNw
YWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkR2V0dGVyV2l0aElkZW50aWZpZXIgPSBtYWtlVW5p
cXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGli
bGVPYmplY3RIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVGVzdE5hbWVkR2V0dGVyV2l0aElkZW50aWZp
ZXIpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZEdldHRlcldpdGhJZGVu
dGlmaWVyID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVh
cCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCksIEpTVGVzdE5hbWVkR2V0dGVy
V2l0aElkZW50aWZpZXIpOwogICAgIGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JU
ZXN0TmFtZWRHZXR0ZXJXaXRoSWRlbnRpZmllciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElT
T19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVGVz
dE5hbWVkR2V0dGVyV2l0aElkZW50aWZpZXIpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZv
clRlc3ROYW1lZEdldHRlcldpdGhJZGVudGlmaWVyID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4g
SVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RO
YW1lZEdldHRlcldpdGhJZGVudGlmaWVyKTsKICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1
YnNwYWNlRm9yVGVzdE5hbWVkR2V0dGVyV2l0aElkZW50aWZpZXIuZ2V0KCk7CiBJR05PUkVfV0FS
TklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0
YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJOb0lkZW50aWZpZXIuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNl
dHRlck5vSWRlbnRpZmllci5jcHAJKHJldmlzaW9uIDI4NjAyNCkKKysrIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlck5vSWRlbnRpZmllci5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTY1LDcgKzY1LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBK
U0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAg
IFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdE5hbWVkU2V0dGVyTm9J
ZGVudGlmaWVyUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVj
dFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAg
ICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpT
Qzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkK
ICAgICB7CkBAIC0zMDAsOSArMzAwLDkgQEAgSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0TmFtZWRT
ZXR0ZXJOb0lkZQogICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6
OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3ROYW1lZFNldHRl
ck5vSWRlbnRpZmllcj4gfHwgIUpTVGVzdE5hbWVkU2V0dGVyTm9JZGVudGlmaWVyOjpuZWVkc0Rl
c3RydWN0aW9uKTsKICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNE
ZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdE5hbWVkU2V0dGVyTm9JZGVudGlmaWVyPikKLSAgICAg
ICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRTZXR0ZXJOb0lkZW50aWZpZXIgPSBtYWtl
VW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVj
dGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVGVzdE5hbWVkU2V0dGVyTm9JZGVudGlm
aWVyKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRTZXR0ZXJOb0lkZW50
aWZpZXIgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFw
LCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0TmFtZWRTZXR0ZXJO
b0lkZW50aWZpZXIpOwogICAgIGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0
TmFtZWRTZXR0ZXJOb0lkZW50aWZpZXIgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VC
U1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlLmdldCgpLCBKU1Rlc3ROYW1l
ZFNldHRlck5vSWRlbnRpZmllcik7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5h
bWVkU2V0dGVyTm9JZGVudGlmaWVyID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQ
QUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3ROYW1lZFNldHRl
ck5vSWRlbnRpZmllcik7CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRl
c3ROYW1lZFNldHRlck5vSWRlbnRpZmllci5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigi
dW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1j
b21wYXJlIikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3ROYW1lZFNldHRlclRocm93aW5nRXhjZXB0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJUaHJv
d2luZ0V4Y2VwdGlvbi5jcHAJKHJldmlzaW9uIDI4NjAyNCkKKysrIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlclRocm93aW5nRXhjZXB0aW9u
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjUsNyArNjUsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGlj
IEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAg
ICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0TmFtZWRTZXR0ZXJU
aHJvd2luZ0V4Y2VwdGlvblByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxh
aW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAg
ICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0m
IHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90
b3R5cGUpCiAgICAgewpAQCAtMzAwLDkgKzMwMCw5IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVz
dE5hbWVkU2V0dGVyVGhyb3cKICAgICAgICAgcmV0dXJuIHNwYWNlOwogICAgIHN0YXRpY19hc3Nl
cnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0TmFt
ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbj4gfHwgIUpTVGVzdE5hbWVkU2V0dGVyVGhyb3dpbmdF
eGNlcHRpb246Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19i
YXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0TmFtZWRTZXR0ZXJUaHJv
d2luZ0V4Y2VwdGlvbj4pCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkU2V0
dGVyVGhyb3dpbmdFeGNlcHRpb24gPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BB
Q0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuZ2V0KCks
IEpTVGVzdE5hbWVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24pOworICAgICAgICBzcGFjZXMubV9z
dWJzcGFjZUZvclRlc3ROYW1lZFNldHRlclRocm93aW5nRXhjZXB0aW9uID0gbWFrZVVuaXF1ZTxJ
c29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2Jq
ZWN0SGVhcENlbGxUeXBlKCksIEpTVGVzdE5hbWVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24pOwog
ICAgIGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRTZXR0ZXJUaHJv
d2luZ0V4Y2VwdGlvbiA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklU
KHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVGVzdE5hbWVkU2V0dGVyVGhy
b3dpbmdFeGNlcHRpb24pOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZFNl
dHRlclRocm93aW5nRXhjZXB0aW9uID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQ
QUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3ROYW1lZFNldHRl
clRocm93aW5nRXhjZXB0aW9uKTsKICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNl
Rm9yVGVzdE5hbWVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24uZ2V0KCk7CiBJR05PUkVfV0FSTklO
R1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0
b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmllci5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0
dGVyV2l0aElkZW50aWZpZXIuY3BwCShyZXZpc2lvbiAyODYwMjQpCisrKyBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmll
ci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcyLDcgKzcyLDcgQEAgcHVibGljOgogICAgIHN0YXRp
YyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAg
ICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdE5hbWVkU2V0dGVy
V2l0aElkZW50aWZpZXJQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWlu
T2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAg
IH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2
bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90
eXBlKQogICAgIHsKQEAgLTMzMSw5ICszMzEsOSBAQCBKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3RO
YW1lZFNldHRlcldpdGhJCiAgICAgICAgIHJldHVybiBzcGFjZTsKICAgICBzdGF0aWNfYXNzZXJ0
KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdE5hbWVk
U2V0dGVyV2l0aElkZW50aWZpZXI+IHx8ICFKU1Rlc3ROYW1lZFNldHRlcldpdGhJZGVudGlmaWVy
OjpuZWVkc0Rlc3RydWN0aW9uKTsKICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92
PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdE5hbWVkU2V0dGVyV2l0aElkZW50aWZp
ZXI+KQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZFNldHRlcldpdGhJZGVu
dGlmaWVyID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVh
cCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmdldCgpLCBKU1Rlc3ROYW1lZFNl
dHRlcldpdGhJZGVudGlmaWVyKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFt
ZWRTZXR0ZXJXaXRoSWRlbnRpZmllciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJT
UEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBK
U1Rlc3ROYW1lZFNldHRlcldpdGhJZGVudGlmaWVyKTsKICAgICBlbHNlCi0gICAgICAgIHNwYWNl
cy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkU2V0dGVyV2l0aElkZW50aWZpZXIgPSBtYWtlVW5pcXVl
PElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxU
eXBlLmdldCgpLCBKU1Rlc3ROYW1lZFNldHRlcldpdGhJZGVudGlmaWVyKTsKKyAgICAgICAgc3Bh
Y2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmllciA9IG1ha2VVbmlx
dWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2Vs
bFR5cGUoKSwgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmllcik7CiAgICAgYXV0byogc3Bh
Y2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZFNldHRlcldpdGhJZGVudGlmaWVyLmdl
dCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKIElHTk9SRV9X
QVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRleDogU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRH
ZXR0ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyLmNwcAkocmV2aXNpb24g
Mjg2MDI0KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NSw3
ICs3NSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VG
b3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFD
RV9TSEFSQUJMRShKU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyUHJvdG90eXBlLCBC
YXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1
cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0
dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC0zNzgsOSArMzc4
LDkgQEAgSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSQogICAgICAgICBy
ZXR1cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpT
RGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyPiB8
fCAhSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlcjo6bmVlZHNEZXN0cnVjdGlvbik7
CiAgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxl
T2JqZWN0LCBKU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyPikKLSAgICAgICAgc3Bh
Y2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlciA9IG1ha2VV
bmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0
aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhl
ZEdldHRlcik7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkU2V0dGVyV2l0
aEluZGV4ZWRHZXR0ZXIgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5J
VCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0TmFt
ZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlcik7CiAgICAgZWxzZQotICAgICAgICBzcGFjZXMubV9z
dWJzcGFjZUZvclRlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyID0gbWFrZVVuaXF1ZTxJ
c29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlw
ZS5nZXQoKSwgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlcik7CisgICAgICAgIHNw
YWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXIgPSBtYWtl
VW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVh
cENlbGxUeXBlKCksIEpTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXIpOwogICAgIGF1
dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhl
ZEdldHRlci5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIp
CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldp
dGhJbmRleGVkR2V0dGVyQW5kU2V0dGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdl
dHRlckFuZFNldHRlci5jcHAJKHJldmlzaW9uIDI4NjAyNCkKKysrIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVy
QW5kU2V0dGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzUsNyArNzUsNyBAQCBwdWJsaWM6CiAg
ICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAg
IHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0TmFt
ZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlckFuZFNldHRlclByb3RvdHlwZSwgQmFzZSk7Ci0gICAg
ICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFp
bk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRl
U3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAtNDI4LDkgKzQyOCw5IEBAIEpTQzo6
SXNvU3Vic3BhY2UqIEpTVGVzdE5hbWVkU2V0dGVyV2l0aEkKICAgICAgICAgcmV0dXJuIHNwYWNl
OwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJs
ZU9iamVjdCwgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlckFuZFNldHRlcj4gfHwg
IUpTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0ZXI6Om5lZWRzRGVzdHJ1
Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3Ry
dWN0aWJsZU9iamVjdCwgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlckFuZFNldHRl
cj4pCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4
ZWRHZXR0ZXJBbmRTZXR0ZXIgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0Vf
SU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuZ2V0KCksIEpT
VGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0ZXIpOworICAgICAgICBzcGFj
ZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQW5kU2V0dGVy
ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0u
ZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCksIEpTVGVzdE5hbWVkU2V0dGVyV2l0aElu
ZGV4ZWRHZXR0ZXJBbmRTZXR0ZXIpOwogICAgIGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vic3Bh
Y2VGb3JUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlckFuZFNldHRlciA9IG1ha2VVbmlx
dWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2Vs
bFR5cGUuZ2V0KCksIEpTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0ZXIp
OworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZFNldHRlcldpdGhJbmRleGVk
R2V0dGVyQW5kU2V0dGVyID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lO
SVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3ROYW1lZFNldHRlcldpdGhJ
bmRleGVkR2V0dGVyQW5kU2V0dGVyKTsKICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNw
YWNlRm9yVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0ZXIuZ2V0KCk7CiBJ
R05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdT
X0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5T3ZlcnJpZGVC
dWlsdElucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMuY3Bw
CShyZXZpc2lvbiAyODYwMjQpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5T3ZlcnJpZGVCdWlsdElucy5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTY1LDcgKzY1LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklz
b1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJ
Q19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2Fj
eU92ZXJyaWRlQnVpbHRJbnNQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBs
YWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwog
ICAgIH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZN
JiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJv
dG90eXBlKQogICAgIHsKQEAgLTI3Nyw5ICsyNzcsOSBAQCBKU0M6Oklzb1N1YnNwYWNlKiBKU1Rl
c3ROYW1lZFNldHRlcldpdGhMCiAgICAgICAgIHJldHVybiBzcGFjZTsKICAgICBzdGF0aWNfYXNz
ZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdE5h
bWVkU2V0dGVyV2l0aExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM+IHx8ICFKU1Rlc3ROYW1lZFNldHRl
cldpdGhMZWdhY3lPdmVycmlkZUJ1aWx0SW5zOjpuZWVkc0Rlc3RydWN0aW9uKTsKICAgICBpZiBj
b25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpT
VGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM+KQotICAgICAgICBzcGFj
ZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lPdmVycmlkZUJ1aWx0SW5z
ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0u
ZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmdldCgpLCBKU1Rlc3ROYW1lZFNldHRlcldp
dGhMZWdhY3lPdmVycmlkZUJ1aWx0SW5zKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JU
ZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5T3ZlcnJpZGVCdWlsdElucyA9IG1ha2VVbmlxdWU8SXNv
U3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVj
dEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lPdmVycmlkZUJ1aWx0
SW5zKTsKICAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkU2V0
dGVyV2l0aExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJ
U09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlLmdldCgpLCBKU1Rl
c3ROYW1lZFNldHRlcldpdGhMZWdhY3lPdmVycmlkZUJ1aWx0SW5zKTsKKyAgICAgICAgc3BhY2Vz
Lm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5T3ZlcnJpZGVCdWlsdElucyA9
IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNl
bGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5T3ZlcnJpZGVCdWls
dElucyk7CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZFNl
dHRlcldpdGhMZWdhY3lPdmVycmlkZUJ1aWx0SW5zLmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JF
R0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dp
Y2FsLWNvbXBhcmUiKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllcy5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllcy5jcHAJKHJldmlz
aW9uIDI4NjAyNCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXMuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC03NCw3ICs3NCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29T
dWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNf
QVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lV
bmZvcmdlYWJsZVByb3BlcnRpZXNQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZt
LnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgp
OwogICAgIH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6
OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUg
cHJvdG90eXBlKQogICAgIHsKQEAgLTM2MSw5ICszNjEsOSBAQCBKU0M6Oklzb1N1YnNwYWNlKiBK
U1Rlc3ROYW1lZFNldHRlcldpdGhMCiAgICAgICAgIHJldHVybiBzcGFjZTsKICAgICBzdGF0aWNf
YXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVz
dE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllcz4gfHwgIUpTVGVzdE5h
bWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllczo6bmVlZHNEZXN0cnVjdGlv
bik7CiAgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3Rp
YmxlT2JqZWN0LCBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRp
ZXM+KQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZFNldHRlcldpdGhMZWdh
Y3lVbmZvcmdlYWJsZVByb3BlcnRpZXMgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VC
U1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuZ2V0
KCksIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllcyk7Cisg
ICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9y
Z2VhYmxlUHJvcGVydGllcyA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9J
TklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RO
YW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXMpOwogICAgIGVsc2UKLSAg
ICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3Jn
ZWFibGVQcm9wZXJ0aWVzID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lO
SVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNUZXN0TmFtZWRTZXR0ZXJX
aXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3Bh
Y2VGb3JUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzID0gbWFr
ZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhl
YXBDZWxsVHlwZSgpLCBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3Bl
cnRpZXMpOwogICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRT
ZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzLmdldCgpOwogSUdOT1JFX1dBUk5J
TkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1
dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGll
c0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lV
bmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zLmNwcAkocmV2aXNp
b24gMjg2MDI0KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92
ZXJyaWRlQnVpbHRJbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NCw3ICs3NCw3IEBAIHB1Ymxp
YzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0p
CiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rl
c3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVy
cmlkZUJ1aWx0SW5zUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9i
amVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9
CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0s
IEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlw
ZSkKICAgICB7CkBAIC0zMzgsOSArMzM4LDkgQEAgSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0TmFt
ZWRTZXR0ZXJXaXRoTAogICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fzc2VydChz
dGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3ROYW1lZFNl
dHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0
SW5zPiB8fCAhSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVz
QW5kTGVnYWN5T3ZlcnJpZGVCdWlsdEluczo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgaWYgY29u
c3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rl
c3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVy
cmlkZUJ1aWx0SW5zPikKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRTZXR0
ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdElu
cyA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZt
LmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNUZXN0TmFtZWRTZXR0ZXJX
aXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdElucyk7
CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVu
Zm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMgPSBtYWtlVW5pcXVl
PElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVP
YmplY3RIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFi
bGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdElucyk7CiAgICAgZWxzZQotICAgICAg
ICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJs
ZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zID0gbWFrZVVuaXF1ZTxJc29TdWJz
cGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZS5nZXQo
KSwgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVn
YWN5T3ZlcnJpZGVCdWlsdElucyk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5h
bWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRl
QnVpbHRJbnMgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5o
ZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCksIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVu
Zm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMpOwogICAgIGF1dG8q
IHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5m
b3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdElucy5nZXQoKTsKIElHTk9S
RV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVH
SU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lc3BhY2VPYmplY3QuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lc3BhY2VP
YmplY3QuY3BwCShyZXZpc2lvbiAyODYwMjQpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZXNwYWNlT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjgwLDkgKzI4MCw5IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdE5hbWVzcGFjZU9iamVj
dDoKICAgICAgICAgcmV0dXJuIHNwYWNlOwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNl
X29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0TmFtZXNwYWNlT2JqZWN0PiB8
fCAhSlNUZXN0TmFtZXNwYWNlT2JqZWN0OjpuZWVkc0Rlc3RydWN0aW9uKTsKICAgICBpZiBjb25z
dGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVz
dE5hbWVzcGFjZU9iamVjdD4pCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVz
cGFjZU9iamVjdCA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZt
LmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNUZXN0TmFt
ZXNwYWNlT2JqZWN0KTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZXNwYWNl
T2JqZWN0ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVh
cCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCksIEpTVGVzdE5hbWVzcGFjZU9i
amVjdCk7CiAgICAgZWxzZQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lc3Bh
Y2VPYmplY3QgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5o
ZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlLmdldCgpLCBKU1Rlc3ROYW1lc3BhY2VPYmplY3QpOwor
ICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lc3BhY2VPYmplY3QgPSBtYWtlVW5p
cXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENl
bGxUeXBlKCksIEpTVGVzdE5hbWVzcGFjZU9iamVjdCk7CiAgICAgYXV0byogc3BhY2UgPSBzcGFj
ZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lc3BhY2VPYmplY3QuZ2V0KCk7CiBJR05PUkVfV0FSTklO
R1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0
b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0Tm9kZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5vZGUuY3BwCShyZXZpc2lvbiAyODYwMjQpCisr
KyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Tm9kZS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTk1LDcgKzk1LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6
Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNU
QVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdE5vZGVQcm90b3R5cGUsIEJh
c2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVy
biAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1
cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKQEAgLTQwNSw5ICs0MDUs
OSBAQCBwdWJsaWM6CiAgICAgICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAgICAgIHN0YXRpY19h
c3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgVGVzdE5v
ZGVJdGVyYXRvcj4gfHwgIVRlc3ROb2RlSXRlcmF0b3I6Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAg
ICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVP
YmplY3QsIFRlc3ROb2RlSXRlcmF0b3I+KQotICAgICAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VG
b3JUZXN0Tm9kZUl0ZXJhdG9yID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNF
X0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmdldCgpLCBU
ZXN0Tm9kZUl0ZXJhdG9yKTsKKyAgICAgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5v
ZGVJdGVyYXRvciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZt
LmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBUZXN0Tm9kZUl0ZXJh
dG9yKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0
Tm9kZUl0ZXJhdG9yID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQo
dm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgVGVzdE5vZGVJdGVyYXRvcik7Cisg
ICAgICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROb2RlSXRlcmF0b3IgPSBtYWtlVW5p
cXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENl
bGxUeXBlKCksIFRlc3ROb2RlSXRlcmF0b3IpOwogICAgICAgICBhdXRvKiBzcGFjZSA9IHNwYWNl
cy5tX3N1YnNwYWNlRm9yVGVzdE5vZGVJdGVyYXRvci5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19C
RUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9n
aWNhbC1jb21wYXJlIikKQEAgLTQ5Nyw5ICs0OTcsOSBAQCBKU0M6Oklzb1N1YnNwYWNlKiBKU1Rl
c3ROb2RlOjpzdWJzcGFjZUZvCiAgICAgICAgIHJldHVybiBzcGFjZTsKICAgICBzdGF0aWNfYXNz
ZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdE5v
ZGU+IHx8ICFKU1Rlc3ROb2RlOjpuZWVkc0Rlc3RydWN0aW9uKTsKICAgICBpZiBjb25zdGV4cHIg
KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdE5vZGU+
KQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROb2RlID0gbWFrZVVuaXF1ZTxJc29T
dWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0
SGVhcENlbGxUeXBlLmdldCgpLCBKU1Rlc3ROb2RlKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3Bh
Y2VGb3JUZXN0Tm9kZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklU
KHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3ROb2Rl
KTsKICAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5vZGUgPSBtYWtl
VW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVh
cENlbGxUeXBlLmdldCgpLCBKU1Rlc3ROb2RlKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VG
b3JUZXN0Tm9kZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZt
LmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0Tm9kZSk7CiAgICAgYXV0byogc3Bh
Y2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROb2RlLmdldCgpOwogSUdOT1JFX1dBUk5JTkdT
X0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9s
b2dpY2FsLWNvbXBhcmUiKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdE9iai5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAJKHJldmlzaW9uIDI4NjAyNCkKKysrIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xODY2LDcgKzE4NjYsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6
SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RB
VElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0T2JqUHJvdG90eXBlLCBCYXNl
KTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4g
JnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJl
KiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC05MDA2LDkgKzkwMDYs
OSBAQCBKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3RPYmo6OnN1YnNwYWNlRm9yCiAgICAgICAgIHJl
dHVybiBzcGFjZTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNE
ZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdE9iaj4gfHwgIUpTVGVzdE9iajo6bmVlZHNEZXN0cnVj
dGlvbik7CiAgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1
Y3RpYmxlT2JqZWN0LCBKU1Rlc3RPYmo+KQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRl
c3RPYmogPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFw
LCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVGVzdE9iaik7Cisg
ICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE9iaiA9IG1ha2VVbmlxdWU8SXNvU3Vic3Bh
Y2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBD
ZWxsVHlwZSgpLCBKU1Rlc3RPYmopOwogICAgIGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vic3Bh
Y2VGb3JUZXN0T2JqID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQo
dm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNUZXN0T2JqKTsKKyAgICAgICAg
c3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0T2JqID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNP
X1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RPYmop
OwogICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0T2JqLmdldCgpOwog
SUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKIElHTk9SRV9XQVJOSU5H
U19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9wZXJhdGlvbkNvbmRpdGlvbmFsLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
T3BlcmF0aW9uQ29uZGl0aW9uYWwuY3BwCShyZXZpc2lvbiAyODYwMjQpCisrKyBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3BlcmF0aW9uQ29uZGl0aW9uYWwu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC04MSw3ICs4MSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMg
SlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAgICAg
ICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3RPcGVyYXRpb25Db25k
aXRpb25hbFByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RT
cGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAg
IHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6
OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAg
ICAgewpAQCAtMjM0LDkgKzIzNCw5IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdE9wZXJhdGlv
bkNvbmRpdGkKICAgICAgICAgcmV0dXJuIHNwYWNlOwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjpp
c19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0T3BlcmF0aW9uQ29u
ZGl0aW9uYWw+IHx8ICFKU1Rlc3RPcGVyYXRpb25Db25kaXRpb25hbDo6bmVlZHNEZXN0cnVjdGlv
bik7CiAgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3Rp
YmxlT2JqZWN0LCBKU1Rlc3RPcGVyYXRpb25Db25kaXRpb25hbD4pCi0gICAgICAgIHNwYWNlcy5t
X3N1YnNwYWNlRm9yVGVzdE9wZXJhdGlvbkNvbmRpdGlvbmFsID0gbWFrZVVuaXF1ZTxJc29TdWJz
cGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVh
cENlbGxUeXBlLmdldCgpLCBKU1Rlc3RPcGVyYXRpb25Db25kaXRpb25hbCk7CisgICAgICAgIHNw
YWNlcy5tX3N1YnNwYWNlRm9yVGVzdE9wZXJhdGlvbkNvbmRpdGlvbmFsID0gbWFrZVVuaXF1ZTxJ
c29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2Jq
ZWN0SGVhcENlbGxUeXBlKCksIEpTVGVzdE9wZXJhdGlvbkNvbmRpdGlvbmFsKTsKICAgICBlbHNl
Ci0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE9wZXJhdGlvbkNvbmRpdGlvbmFsID0g
bWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2Vs
bEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNUZXN0T3BlcmF0aW9uQ29uZGl0aW9uYWwpOworICAgICAg
ICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RPcGVyYXRpb25Db25kaXRpb25hbCA9IG1ha2VVbmlx
dWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2Vs
bFR5cGUoKSwgSlNUZXN0T3BlcmF0aW9uQ29uZGl0aW9uYWwpOwogICAgIGF1dG8qIHNwYWNlID0g
c3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0T3BlcmF0aW9uQ29uZGl0aW9uYWwuZ2V0KCk7CiBJR05P
UkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JF
R0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92
ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuY3BwCShyZXZpc2lvbiAyODYwMjQpCisrKyBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9y
cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY5LDcgKzY5LDcgQEAgcHVibGljOgogICAgIHN0YXRp
YyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAg
ICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdE92ZXJsb2FkZWRD
b25zdHJ1Y3RvcnNQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2Jq
ZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0K
ICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwg
SlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBl
KQogICAgIHsKQEAgLTI5NSw5ICsyOTUsOSBAQCBKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3RPdmVy
bG9hZGVkQ29uc3RyCiAgICAgICAgIHJldHVybiBzcGFjZTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0
ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdE92ZXJsb2Fk
ZWRDb25zdHJ1Y3RvcnM+IHx8ICFKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzOjpuZWVkc0Rl
c3RydWN0aW9uKTsKICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNE
ZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM+KQotICAgICAg
ICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzID0gbWFrZVVu
aXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3Rp
YmxlT2JqZWN0SGVhcENlbGxUeXBlLmdldCgpLCBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3Jz
KTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9y
cyA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZt
LmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RPdmVybG9hZGVkQ29uc3Ry
dWN0b3JzKTsKICAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE92ZXJs
b2FkZWRDb25zdHJ1Y3RvcnMgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0Vf
SU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlLmdldCgpLCBKU1Rlc3RPdmVybG9hZGVk
Q29uc3RydWN0b3JzKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0T3ZlcmxvYWRl
ZENvbnN0cnVjdG9ycyA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklU
KHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVj
dG9ycyk7CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RPdmVybG9h
ZGVkQ29uc3RydWN0b3JzLmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJs
ZS1jb2RlIikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJ
bmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJs
b2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0
b3JzV2l0aFNlcXVlbmNlLmNwcAkocmV2aXNpb24gMjg2MDI0KQorKysgU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRo
U2VxdWVuY2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02OCw3ICs2OCw3IEBAIHB1YmxpYzoKICAg
ICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAg
ewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3RPdmVy
bG9hZGVkQ29uc3RydWN0b3JzV2l0aFNlcXVlbmNlUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAg
cmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2Jq
ZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1
Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlND
OjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC0yMzgsOSArMjM4LDkgQEAgSlNDOjpJc29T
dWJzcGFjZSogSlNUZXN0T3ZlcmxvYWRlZENvbnN0cgogICAgICAgICByZXR1cm4gc3BhY2U7CiAg
ICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2Jq
ZWN0LCBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzV2l0aFNlcXVlbmNlPiB8fCAhSlNUZXN0
T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5jZTo6bmVlZHNEZXN0cnVjdGlvbik7CiAg
ICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2Jq
ZWN0LCBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzV2l0aFNlcXVlbmNlPikKLSAgICAgICAg
c3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5j
ZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZt
LmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNUZXN0T3ZlcmxvYWRlZENv
bnN0cnVjdG9yc1dpdGhTZXF1ZW5jZSk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVz
dE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2UgPSBtYWtlVW5pcXVlPElzb1N1YnNw
YWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFw
Q2VsbFR5cGUoKSwgSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5jZSk7CiAg
ICAgZWxzZQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RPdmVybG9hZGVkQ29uc3Ry
dWN0b3JzV2l0aFNlcXVlbmNlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNF
X0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNUZXN0T3ZlcmxvYWRl
ZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5jZSk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9y
VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2UgPSBtYWtlVW5pcXVlPElzb1N1
YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCks
IEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2UpOwogICAgIGF1dG8qIHNw
YWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dpdGhT
ZXF1ZW5jZS5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIp
CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RQbHVnaW5JbnRlcmZh
Y2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RQbHVnaW5JbnRlcmZhY2UuY3BwCShyZXZpc2lvbiAyODYwMjQpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0UGx1Z2luSW50ZXJmYWNl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjQsNyArNjQsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGlj
IEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAg
ICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0UGx1Z2luSW50ZXJm
YWNlUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNl
OworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3Rh
dGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7
CkBAIC0yNDQsOSArMjQ0LDkgQEAgSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0UGx1Z2luSW50ZXJm
YWNlOgogICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jh
c2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RQbHVnaW5JbnRlcmZhY2U+
IHx8ICFKU1Rlc3RQbHVnaW5JbnRlcmZhY2U6Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNv
bnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNU
ZXN0UGx1Z2luSW50ZXJmYWNlPikKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0UGx1
Z2luSW50ZXJmYWNlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQo
dm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmdldCgpLCBKU1Rlc3RQ
bHVnaW5JbnRlcmZhY2UpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RQbHVnaW5J
bnRlcmZhY2UgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5o
ZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0UGx1Z2luSW50
ZXJmYWNlKTsKICAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFBsdWdp
bkludGVyZmFjZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZt
LmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVGVzdFBsdWdpbkludGVyZmFjZSk7
CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFBsdWdpbkludGVyZmFjZSA9IG1ha2VV
bmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFw
Q2VsbFR5cGUoKSwgSlNUZXN0UGx1Z2luSW50ZXJmYWNlKTsKICAgICBhdXRvKiBzcGFjZSA9IHNw
YWNlcy5tX3N1YnNwYWNlRm9yVGVzdFBsdWdpbkludGVyZmFjZS5nZXQoKTsKIElHTk9SRV9XQVJO
SU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRh
dXRvbG9naWNhbC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RQcm9taXNlUmVq
ZWN0aW9uRXZlbnQuY3BwCShyZXZpc2lvbiAyODYwMjQpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTQ4LDcgKzE0OCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJ
c29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFU
SUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZl
bnRQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7
CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KICAgICBzdGF0
aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsK
QEAgLTMwMSw5ICszMDEsOSBAQCBKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3RQcm9taXNlUmVqZWN0
aW9uCiAgICAgICAgIHJldHVybiBzcGFjZTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFz
ZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdFByb21pc2VSZWplY3Rpb25F
dmVudD4gfHwgIUpTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudDo6bmVlZHNEZXN0cnVjdGlvbik7
CiAgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxl
T2JqZWN0LCBKU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQ+KQotICAgICAgICBzcGFjZXMubV9z
dWJzcGFjZUZvclRlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQgPSBtYWtlVW5pcXVlPElzb1N1YnNw
YWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFw
Q2VsbFR5cGUuZ2V0KCksIEpTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudCk7CisgICAgICAgIHNw
YWNlcy5tX3N1YnNwYWNlRm9yVGVzdFByb21pc2VSZWplY3Rpb25FdmVudCA9IG1ha2VVbmlxdWU8
SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9i
amVjdEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQpOwogICAgIGVs
c2UKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50
ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0u
Y2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50KTsKKyAg
ICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50ID0gbWFr
ZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhl
YXBDZWxsVHlwZSgpLCBKU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQpOwogICAgIGF1dG8qIHNw
YWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50LmdldCgp
OwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKIElHTk9SRV9XQVJO
SU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRleDogU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFJlYWRPbmx5TWFwTGlrZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFJl
YWRPbmx5TWFwTGlrZS5jcHAJKHJldmlzaW9uIDI4NjAyNCkKKysrIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RSZWFkT25seU1hcExpa2UuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC03OSw3ICs3OSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJz
cGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNT
RVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3RSZWFkT25seU1hcExpa2VQcm90b3R5cGUs
IEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJl
dHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1
Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKQEAgLTMwNSw5ICsz
MDUsOSBAQCBKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3RSZWFkT25seU1hcExpa2U6CiAgICAgICAg
IHJldHVybiBzcGFjZTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6
SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdFJlYWRPbmx5TWFwTGlrZT4gfHwgIUpTVGVzdFJl
YWRPbmx5TWFwTGlrZTo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3RleHByIChzdGQ6
OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RSZWFkT25seU1h
cExpa2U+KQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RSZWFkT25seU1hcExpa2Ug
PSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5k
ZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVGVzdFJlYWRPbmx5TWFwTGlr
ZSk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFJlYWRPbmx5TWFwTGlrZSA9IG1h
a2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3Ry
dWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RSZWFkT25seU1hcExpa2UpOwogICAg
IGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0UmVhZE9ubHlNYXBMaWtlID0g
bWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2Vs
bEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNUZXN0UmVhZE9ubHlNYXBMaWtlKTsKKyAgICAgICAgc3Bh
Y2VzLm1fc3Vic3BhY2VGb3JUZXN0UmVhZE9ubHlNYXBMaWtlID0gbWFrZVVuaXF1ZTxJc29TdWJz
cGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBK
U1Rlc3RSZWFkT25seU1hcExpa2UpOwogICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3Bh
Y2VGb3JUZXN0UmVhZE9ubHlNYXBMaWtlLmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1
bnJlYWNoYWJsZS1jb2RlIikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNv
bXBhcmUiKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdFJlYWRPbmx5U2V0TGlrZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFJlYWRPbmx5U2V0TGlrZS5jcHAJKHJldmlzaW9u
IDI4NjAyNCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RSZWFkT25seVNldExpa2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03OCw3ICs3OCw3IEBAIHB1
YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYg
dm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShK
U1Rlc3RSZWFkT25seVNldExpa2VQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZt
LnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgp
OwogICAgIH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6
OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUg
cHJvdG90eXBlKQogICAgIHsKQEAgLTI4NCw5ICsyODQsOSBAQCBKU0M6Oklzb1N1YnNwYWNlKiBK
U1Rlc3RSZWFkT25seVNldExpa2U6CiAgICAgICAgIHJldHVybiBzcGFjZTsKICAgICBzdGF0aWNf
YXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVz
dFJlYWRPbmx5U2V0TGlrZT4gfHwgIUpTVGVzdFJlYWRPbmx5U2V0TGlrZTo6bmVlZHNEZXN0cnVj
dGlvbik7CiAgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1
Y3RpYmxlT2JqZWN0LCBKU1Rlc3RSZWFkT25seVNldExpa2U+KQotICAgICAgICBzcGFjZXMubV9z
dWJzcGFjZUZvclRlc3RSZWFkT25seVNldExpa2UgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJ
U09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5
cGUuZ2V0KCksIEpTVGVzdFJlYWRPbmx5U2V0TGlrZSk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNw
YWNlRm9yVGVzdFJlYWRPbmx5U2V0TGlrZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19T
VUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgp
LCBKU1Rlc3RSZWFkT25seVNldExpa2UpOwogICAgIGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vi
c3BhY2VGb3JUZXN0UmVhZE9ubHlTZXRMaWtlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNP
X1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNUZXN0
UmVhZE9ubHlTZXRMaWtlKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0UmVhZE9u
bHlTZXRMaWtlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0u
aGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RSZWFkT25seVNldExpa2UpOwogICAg
IGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0UmVhZE9ubHlTZXRMaWtlLmdl
dCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKIElHTk9SRV9X
QVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRleDogU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFJlcG9ydEV4dHJhTWVtb3J5Q29zdC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdFJlcG9ydEV4dHJhTWVtb3J5Q29zdC5jcHAJKHJldmlzaW9uIDI4NjAyNCkKKysrIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RSZXBvcnRFeHRyYU1l
bW9yeUNvc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02Myw3ICs2Myw3IEBAIHB1YmxpYzoKICAg
ICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAg
ewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3RSZXBv
cnRFeHRyYU1lbW9yeUNvc3RQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBs
YWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwog
ICAgIH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZN
JiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJv
dG90eXBlKQogICAgIHsKQEAgLTE3MSw5ICsxNzEsOSBAQCBKU0M6Oklzb1N1YnNwYWNlKiBKU1Rl
c3RSZXBvcnRFeHRyYU1lbW9yCiAgICAgICAgIHJldHVybiBzcGFjZTsKICAgICBzdGF0aWNfYXNz
ZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdFJl
cG9ydEV4dHJhTWVtb3J5Q29zdD4gfHwgIUpTVGVzdFJlcG9ydEV4dHJhTWVtb3J5Q29zdDo6bmVl
ZHNEZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6
OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RSZXBvcnRFeHRyYU1lbW9yeUNvc3Q+KQotICAg
ICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RSZXBvcnRFeHRyYU1lbW9yeUNvc3QgPSBtYWtl
VW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVj
dGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVGVzdFJlcG9ydEV4dHJhTWVtb3J5Q29z
dCk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFJlcG9ydEV4dHJhTWVtb3J5Q29z
dCA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZt
LmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RSZXBvcnRFeHRyYU1lbW9y
eUNvc3QpOwogICAgIGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0UmVwb3J0
RXh0cmFNZW1vcnlDb3N0ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lO
SVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNUZXN0UmVwb3J0RXh0cmFN
ZW1vcnlDb3N0KTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0UmVwb3J0RXh0cmFN
ZW1vcnlDb3N0ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0u
aGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RSZXBvcnRFeHRyYU1lbW9yeUNvc3Qp
OwogICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0UmVwb3J0RXh0cmFN
ZW1vcnlDb3N0LmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2Rl
IikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRleDog
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZUludGVyZmFjZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFj
ZS5jcHAJKHJldmlzaW9uIDI4NjAyNCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC04OSw3ICs4OSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29T
dWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNf
QVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJ
bnRlcmZhY2VQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0
U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KICAg
ICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlND
OjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQog
ICAgIHsKQEAgLTM0OSw5ICszNDksOSBAQCBKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3RTZXJpYWxp
emVkU2NyaXB0CiAgICAgICAgIHJldHVybiBzcGFjZTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6
aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZUludGVyZmFjZT4gfHwgIUpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVy
ZmFjZTo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vf
b2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFs
dWVJbnRlcmZhY2U+KQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RTZXJpYWxpemVk
U2NyaXB0VmFsdWVJbnRlcmZhY2UgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BB
Q0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuZ2V0KCks
IEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSk7CisgICAgICAgIHNwYWNlcy5t
X3N1YnNwYWNlRm9yVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSA9IG1ha2VVbmlx
dWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJs
ZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZh
Y2UpOwogICAgIGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0U2VyaWFsaXpl
ZFNjcmlwdFZhbHVlSW50ZXJmYWNlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQ
QUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNUZXN0U2VyaWFs
aXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JU
ZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFj
ZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU1Rl
c3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UpOwogICAgIGF1dG8qIHNwYWNlID0gc3Bh
Y2VzLm1fc3Vic3BhY2VGb3JUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmdldCgp
OwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKIElHTk9SRV9XQVJO
SU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRleDogU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNldExpa2UuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXRMaWtlLmNw
cAkocmV2aXNpb24gMjg2MDI0KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdFNldExpa2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04MSw3ICs4MSw3IEBA
IHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpW
TSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJM
RShKU1Rlc3RTZXRMaWtlUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFp
bk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAg
ICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYg
dm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3Rv
dHlwZSkKICAgICB7CkBAIC0zNDIsOSArMzQyLDkgQEAgSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0
U2V0TGlrZTo6c3Vic3BhYwogICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fzc2Vy
dChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RTZXRM
aWtlPiB8fCAhSlNUZXN0U2V0TGlrZTo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3Rl
eHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RT
ZXRMaWtlPikKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0U2V0TGlrZSA9IG1ha2VV
bmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0
aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNUZXN0U2V0TGlrZSk7CisgICAgICAgIHNw
YWNlcy5tX3N1YnNwYWNlRm9yVGVzdFNldExpa2UgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJ
U09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5
cGUoKSwgSlNUZXN0U2V0TGlrZSk7CiAgICAgZWxzZQotICAgICAgICBzcGFjZXMubV9zdWJzcGFj
ZUZvclRlc3RTZXRMaWtlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lO
SVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNUZXN0U2V0TGlrZSk7Cisg
ICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFNldExpa2UgPSBtYWtlVW5pcXVlPElzb1N1
YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCks
IEpTVGVzdFNldExpa2UpOwogICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JU
ZXN0U2V0TGlrZS5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29k
ZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXRMaWtlV2l0
aE92ZXJyaWRkZW5PcGVyYXRpb25zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2V0TGlrZVdpdGhPdmVycmlkZGVuT3BlcmF0
aW9ucy5jcHAJKHJldmlzaW9uIDI4NjAyNCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXRMaWtlV2l0aE92ZXJyaWRkZW5PcGVyYXRpb25zLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtODUsNyArODUsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6
SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RB
VElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0U2V0TGlrZVdpdGhPdmVycmlk
ZGVuT3BlcmF0aW9uc1Byb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5P
YmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAg
fQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZt
LCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5
cGUpCiAgICAgewpAQCAtMzU0LDkgKzM1NCw5IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdFNl
dExpa2VXaXRoT3ZlcnIKICAgICAgICAgcmV0dXJuIHNwYWNlOwogICAgIHN0YXRpY19hc3NlcnQo
c3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0U2V0TGlr
ZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9ucz4gfHwgIUpTVGVzdFNldExpa2VXaXRoT3ZlcnJpZGRl
bk9wZXJhdGlvbnM6Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjpp
c19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0U2V0TGlrZVdpdGhP
dmVycmlkZGVuT3BlcmF0aW9ucz4pCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFNl
dExpa2VXaXRoT3ZlcnJpZGRlbk9wZXJhdGlvbnMgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJ
U09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5
cGUuZ2V0KCksIEpTVGVzdFNldExpa2VXaXRoT3ZlcnJpZGRlbk9wZXJhdGlvbnMpOworICAgICAg
ICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RTZXRMaWtlV2l0aE92ZXJyaWRkZW5PcGVyYXRpb25z
ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0u
ZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCksIEpTVGVzdFNldExpa2VXaXRoT3ZlcnJp
ZGRlbk9wZXJhdGlvbnMpOwogICAgIGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JU
ZXN0U2V0TGlrZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9ucyA9IG1ha2VVbmlxdWU8SXNvU3Vic3Bh
Y2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCks
IEpTVGVzdFNldExpa2VXaXRoT3ZlcnJpZGRlbk9wZXJhdGlvbnMpOworICAgICAgICBzcGFjZXMu
bV9zdWJzcGFjZUZvclRlc3RTZXRMaWtlV2l0aE92ZXJyaWRkZW5PcGVyYXRpb25zID0gbWFrZVVu
aXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBD
ZWxsVHlwZSgpLCBKU1Rlc3RTZXRMaWtlV2l0aE92ZXJyaWRkZW5PcGVyYXRpb25zKTsKICAgICBh
dXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFNldExpa2VXaXRoT3ZlcnJpZGRl
bk9wZXJhdGlvbnMuZ2V0KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNv
ZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZp
ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RTdHJpbmdpZmllci5jcHAJKHJldmlzaW9uIDI4NjAyNCkKKysrIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllci5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTY5LDcgKzY5LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklz
b1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJ
Q19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdFN0cmluZ2lmaWVyUHJvdG90eXBl
LCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICBy
ZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3Ry
dWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC0xOTIsOSAr
MTkyLDkgQEAgSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0U3RyaW5naWZpZXI6OnN1YgogICAgICAg
ICByZXR1cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6
OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RTdHJpbmdpZmllcj4gfHwgIUpTVGVzdFN0cmlu
Z2lmaWVyOjpuZWVkc0Rlc3RydWN0aW9uKTsKICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFz
ZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdFN0cmluZ2lmaWVyPikKLSAg
ICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0U3RyaW5naWZpZXIgPSBtYWtlVW5pcXVlPElz
b1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmpl
Y3RIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVGVzdFN0cmluZ2lmaWVyKTsKKyAgICAgICAgc3BhY2Vz
Lm1fc3Vic3BhY2VGb3JUZXN0U3RyaW5naWZpZXIgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJ
U09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5
cGUoKSwgSlNUZXN0U3RyaW5naWZpZXIpOwogICAgIGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vi
c3BhY2VGb3JUZXN0U3RyaW5naWZpZXIgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VC
U1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlLmdldCgpLCBKU1Rlc3RTdHJp
bmdpZmllcik7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFN0cmluZ2lmaWVyID0g
bWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2Vs
bEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RTdHJpbmdpZmllcik7CiAgICAgYXV0byogc3BhY2UgPSBz
cGFjZXMubV9zdWJzcGFjZUZvclRlc3RTdHJpbmdpZmllci5nZXQoKTsKIElHTk9SRV9XQVJOSU5H
U19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRv
bG9naWNhbC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllckFub255bW91c09wZXJhdGlvbi5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmlu
Z2lmaWVyQW5vbnltb3VzT3BlcmF0aW9uLmNwcAkocmV2aXNpb24gMjg2MDI0KQorKysgU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyQW5vbnlt
b3VzT3BlcmF0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjksNyArNjksNyBAQCBwdWJsaWM6
CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQog
ICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0
U3RyaW5naWZpZXJBbm9ueW1vdXNPcGVyYXRpb25Qcm90b3R5cGUsIEJhc2UpOwotICAgICAgICBy
ZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmpl
Y3RTcGFjZSgpOwogICAgIH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVj
dHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6
OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKQEAgLTE5Miw5ICsxOTIsOSBAQCBKU0M6Oklzb1N1
YnNwYWNlKiBKU1Rlc3RTdHJpbmdpZmllckFub255CiAgICAgICAgIHJldHVybiBzcGFjZTsKICAg
ICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmpl
Y3QsIEpTVGVzdFN0cmluZ2lmaWVyQW5vbnltb3VzT3BlcmF0aW9uPiB8fCAhSlNUZXN0U3RyaW5n
aWZpZXJBbm9ueW1vdXNPcGVyYXRpb246Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0
ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0
U3RyaW5naWZpZXJBbm9ueW1vdXNPcGVyYXRpb24+KQotICAgICAgICBzcGFjZXMubV9zdWJzcGFj
ZUZvclRlc3RTdHJpbmdpZmllckFub255bW91c09wZXJhdGlvbiA9IG1ha2VVbmlxdWU8SXNvU3Vi
c3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhl
YXBDZWxsVHlwZS5nZXQoKSwgSlNUZXN0U3RyaW5naWZpZXJBbm9ueW1vdXNPcGVyYXRpb24pOwor
ICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RTdHJpbmdpZmllckFub255bW91c09wZXJh
dGlvbiA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAs
IHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RTdHJpbmdpZmllckFu
b255bW91c09wZXJhdGlvbik7CiAgICAgZWxzZQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZv
clRlc3RTdHJpbmdpZmllckFub255bW91c09wZXJhdGlvbiA9IG1ha2VVbmlxdWU8SXNvU3Vic3Bh
Y2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCks
IEpTVGVzdFN0cmluZ2lmaWVyQW5vbnltb3VzT3BlcmF0aW9uKTsKKyAgICAgICAgc3BhY2VzLm1f
c3Vic3BhY2VGb3JUZXN0U3RyaW5naWZpZXJBbm9ueW1vdXNPcGVyYXRpb24gPSBtYWtlVW5pcXVl
PElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxU
eXBlKCksIEpTVGVzdFN0cmluZ2lmaWVyQW5vbnltb3VzT3BlcmF0aW9uKTsKICAgICBhdXRvKiBz
cGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFN0cmluZ2lmaWVyQW5vbnltb3VzT3BlcmF0
aW9uLmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKIElH
Tk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRleDogU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyTmFtZWRP
cGVyYXRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllck5hbWVkT3BlcmF0aW9uLmNwcAkocmV2aXNpb24g
Mjg2MDI0KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dFN0cmluZ2lmaWVyTmFtZWRPcGVyYXRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03MCw3ICs3
MCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3Io
SlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9T
SEFSQUJMRShKU1Rlc3RTdHJpbmdpZmllck5hbWVkT3BlcmF0aW9uUHJvdG90eXBlLCBCYXNlKTsK
LSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZt
LnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBj
cmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC0yMDksOSArMjA5LDkgQEAg
SlNDOjpJc29TdWJzcGFjZSogSlNUZXN0U3RyaW5naWZpZXJOYW1lZAogICAgICAgICByZXR1cm4g
c3BhY2U7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1
Y3RpYmxlT2JqZWN0LCBKU1Rlc3RTdHJpbmdpZmllck5hbWVkT3BlcmF0aW9uPiB8fCAhSlNUZXN0
U3RyaW5naWZpZXJOYW1lZE9wZXJhdGlvbjo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgaWYgY29u
c3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rl
c3RTdHJpbmdpZmllck5hbWVkT3BlcmF0aW9uPikKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VG
b3JUZXN0U3RyaW5naWZpZXJOYW1lZE9wZXJhdGlvbiA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+
IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxs
VHlwZS5nZXQoKSwgSlNUZXN0U3RyaW5naWZpZXJOYW1lZE9wZXJhdGlvbik7CisgICAgICAgIHNw
YWNlcy5tX3N1YnNwYWNlRm9yVGVzdFN0cmluZ2lmaWVyTmFtZWRPcGVyYXRpb24gPSBtYWtlVW5p
cXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGli
bGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0U3RyaW5naWZpZXJOYW1lZE9wZXJhdGlvbik7
CiAgICAgZWxzZQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RTdHJpbmdpZmllck5h
bWVkT3BlcmF0aW9uID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQo
dm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNUZXN0U3RyaW5naWZpZXJOYW1l
ZE9wZXJhdGlvbik7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFN0cmluZ2lmaWVy
TmFtZWRPcGVyYXRpb24gPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5J
VCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCksIEpTVGVzdFN0cmluZ2lmaWVyTmFtZWRP
cGVyYXRpb24pOwogICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0U3Ry
aW5naWZpZXJOYW1lZE9wZXJhdGlvbi5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5y
ZWFjaGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21w
YXJlIikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RTdHJpbmdpZmllck9wZXJhdGlvbkltcGxlbWVudGVkQXMuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllck9w
ZXJhdGlvbkltcGxlbWVudGVkQXMuY3BwCShyZXZpc2lvbiAyODYwMjQpCisrKyBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25J
bXBsZW1lbnRlZEFzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzAsNyArNzAsNyBAQCBwdWJsaWM6
CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQog
ICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0
U3RyaW5naWZpZXJPcGVyYXRpb25JbXBsZW1lbnRlZEFzUHJvdG90eXBlLCBCYXNlKTsKLSAgICAg
ICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWlu
T2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVT
dHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
SlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC0yMDksOSArMjA5LDkgQEAgSlNDOjpJ
c29TdWJzcGFjZSogSlNUZXN0U3RyaW5naWZpZXJPcGVyYQogICAgICAgICByZXR1cm4gc3BhY2U7
CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxl
T2JqZWN0LCBKU1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbkltcGxlbWVudGVkQXM+IHx8ICFKU1Rl
c3RTdHJpbmdpZmllck9wZXJhdGlvbkltcGxlbWVudGVkQXM6Om5lZWRzRGVzdHJ1Y3Rpb24pOwog
ICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9i
amVjdCwgSlNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25JbXBsZW1lbnRlZEFzPikKLSAgICAgICAg
c3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25JbXBsZW1lbnRlZEFz
ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0u
ZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmdldCgpLCBKU1Rlc3RTdHJpbmdpZmllck9w
ZXJhdGlvbkltcGxlbWVudGVkQXMpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RT
dHJpbmdpZmllck9wZXJhdGlvbkltcGxlbWVudGVkQXMgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNl
PiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2Vs
bFR5cGUoKSwgSlNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25JbXBsZW1lbnRlZEFzKTsKICAgICBl
bHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9u
SW1wbGVtZW50ZWRBcyA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklU
KHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVGVzdFN0cmluZ2lmaWVyT3Bl
cmF0aW9uSW1wbGVtZW50ZWRBcyk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFN0
cmluZ2lmaWVyT3BlcmF0aW9uSW1wbGVtZW50ZWRBcyA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+
IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0
U3RyaW5naWZpZXJPcGVyYXRpb25JbXBsZW1lbnRlZEFzKTsKICAgICBhdXRvKiBzcGFjZSA9IHNw
YWNlcy5tX3N1YnNwYWNlRm9yVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uSW1wbGVtZW50ZWRBcy5n
ZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVf
V0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbk5h
bWVkVG9TdHJpbmcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbk5hbWVkVG9TdHJpbmcuY3Bw
CShyZXZpc2lvbiAyODYwMjQpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25OYW1lZFRvU3RyaW5nLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNjksNyArNjksNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vi
c3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FT
U0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25OYW1l
ZFRvU3RyaW5nUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVj
dFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAg
ICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpT
Qzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkK
ICAgICB7CkBAIC0xOTIsOSArMTkyLDkgQEAgSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0U3RyaW5n
aWZpZXJPcGVyYQogICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6
OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RTdHJpbmdpZmll
ck9wZXJhdGlvbk5hbWVkVG9TdHJpbmc+IHx8ICFKU1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbk5h
bWVkVG9TdHJpbmc6Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjpp
c19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0U3RyaW5naWZpZXJP
cGVyYXRpb25OYW1lZFRvU3RyaW5nPikKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0
U3RyaW5naWZpZXJPcGVyYXRpb25OYW1lZFRvU3RyaW5nID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFj
ZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENl
bGxUeXBlLmdldCgpLCBKU1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbk5hbWVkVG9TdHJpbmcpOwor
ICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RTdHJpbmdpZmllck9wZXJhdGlvbk5hbWVk
VG9TdHJpbmcgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5o
ZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0U3RyaW5naWZp
ZXJPcGVyYXRpb25OYW1lZFRvU3RyaW5nKTsKICAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1
YnNwYWNlRm9yVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uTmFtZWRUb1N0cmluZyA9IG1ha2VVbmlx
dWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2Vs
bFR5cGUuZ2V0KCksIEpTVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uTmFtZWRUb1N0cmluZyk7Cisg
ICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uTmFtZWRU
b1N0cmluZyA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhl
YXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25OYW1l
ZFRvU3RyaW5nKTsKICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFN0
cmluZ2lmaWVyT3BlcmF0aW9uTmFtZWRUb1N0cmluZy5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19C
RUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9n
aWNhbC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RTdHJpbmdpZmllclJlYWRPbmx5QXR0cmlidXRlLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZp
ZXJSZWFkT25seUF0dHJpYnV0ZS5jcHAJKHJldmlzaW9uIDI4NjAyNCkKKysrIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllclJlYWRPbmx5QXR0
cmlidXRlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzEsNyArNzEsNyBAQCBwdWJsaWM6CiAgICAg
c3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsK
ICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0U3RyaW5n
aWZpZXJSZWFkT25seUF0dHJpYnV0ZVByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAm
dm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNl
KCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpT
Qzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1
ZSBwcm90b3R5cGUpCiAgICAgewpAQCAtMjA4LDkgKzIwOCw5IEBAIEpTQzo6SXNvU3Vic3BhY2Uq
IEpTVGVzdFN0cmluZ2lmaWVyUmVhZE8KICAgICAgICAgcmV0dXJuIHNwYWNlOwogICAgIHN0YXRp
Y19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNU
ZXN0U3RyaW5naWZpZXJSZWFkT25seUF0dHJpYnV0ZT4gfHwgIUpTVGVzdFN0cmluZ2lmaWVyUmVh
ZE9ubHlBdHRyaWJ1dGU6Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhwciAoc3Rk
Ojppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0U3RyaW5naWZp
ZXJSZWFkT25seUF0dHJpYnV0ZT4pCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFN0
cmluZ2lmaWVyUmVhZE9ubHlBdHRyaWJ1dGUgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09f
U1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUu
Z2V0KCksIEpTVGVzdFN0cmluZ2lmaWVyUmVhZE9ubHlBdHRyaWJ1dGUpOworICAgICAgICBzcGFj
ZXMubV9zdWJzcGFjZUZvclRlc3RTdHJpbmdpZmllclJlYWRPbmx5QXR0cmlidXRlID0gbWFrZVVu
aXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3Rp
YmxlT2JqZWN0SGVhcENlbGxUeXBlKCksIEpTVGVzdFN0cmluZ2lmaWVyUmVhZE9ubHlBdHRyaWJ1
dGUpOwogICAgIGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0U3RyaW5naWZp
ZXJSZWFkT25seUF0dHJpYnV0ZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFD
RV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVGVzdFN0cmluZ2lm
aWVyUmVhZE9ubHlBdHRyaWJ1dGUpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RT
dHJpbmdpZmllclJlYWRPbmx5QXR0cmlidXRlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNP
X1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RTdHJp
bmdpZmllclJlYWRPbmx5QXR0cmlidXRlKTsKICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1
YnNwYWNlRm9yVGVzdFN0cmluZ2lmaWVyUmVhZE9ubHlBdHRyaWJ1dGUuZ2V0KCk7CiBJR05PUkVf
V0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lO
KCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJSZWFkV3JpdGVBdHRyaWJ1dGUuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RTdHJpbmdpZmllclJlYWRXcml0ZUF0dHJpYnV0ZS5jcHAJKHJldmlzaW9uIDI4NjAyNCkKKysr
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmll
clJlYWRXcml0ZUF0dHJpYnV0ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcyLDcgKzcyLDcgQEAg
cHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZN
JiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxF
KEpTVGVzdFN0cmluZ2lmaWVyUmVhZFdyaXRlQXR0cmlidXRlUHJvdG90eXBlLCBCYXNlKTsKLSAg
ICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBs
YWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVh
dGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC0yMjcsOSArMjI3LDkgQEAgSlND
OjpJc29TdWJzcGFjZSogSlNUZXN0U3RyaW5naWZpZXJSZWFkVwogICAgICAgICByZXR1cm4gc3Bh
Y2U7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3Rp
YmxlT2JqZWN0LCBKU1Rlc3RTdHJpbmdpZmllclJlYWRXcml0ZUF0dHJpYnV0ZT4gfHwgIUpTVGVz
dFN0cmluZ2lmaWVyUmVhZFdyaXRlQXR0cmlidXRlOjpuZWVkc0Rlc3RydWN0aW9uKTsKICAgICBp
ZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3Qs
IEpTVGVzdFN0cmluZ2lmaWVyUmVhZFdyaXRlQXR0cmlidXRlPikKLSAgICAgICAgc3BhY2VzLm1f
c3Vic3BhY2VGb3JUZXN0U3RyaW5naWZpZXJSZWFkV3JpdGVBdHRyaWJ1dGUgPSBtYWtlVW5pcXVl
PElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVP
YmplY3RIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVGVzdFN0cmluZ2lmaWVyUmVhZFdyaXRlQXR0cmli
dXRlKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0U3RyaW5naWZpZXJSZWFkV3Jp
dGVBdHRyaWJ1dGUgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2
bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0U3RyaW5n
aWZpZXJSZWFkV3JpdGVBdHRyaWJ1dGUpOwogICAgIGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vi
c3BhY2VGb3JUZXN0U3RyaW5naWZpZXJSZWFkV3JpdGVBdHRyaWJ1dGUgPSBtYWtlVW5pcXVlPElz
b1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBl
LmdldCgpLCBKU1Rlc3RTdHJpbmdpZmllclJlYWRXcml0ZUF0dHJpYnV0ZSk7CisgICAgICAgIHNw
YWNlcy5tX3N1YnNwYWNlRm9yVGVzdFN0cmluZ2lmaWVyUmVhZFdyaXRlQXR0cmlidXRlID0gbWFr
ZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhl
YXBDZWxsVHlwZSgpLCBKU1Rlc3RTdHJpbmdpZmllclJlYWRXcml0ZUF0dHJpYnV0ZSk7CiAgICAg
YXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RTdHJpbmdpZmllclJlYWRXcml0
ZUF0dHJpYnV0ZS5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29k
ZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RUeXBlZGVmcy5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdFR5cGVkZWZzLmNwcAkocmV2aXNpb24gMjg2MDI0KQorKysgU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFR5cGVkZWZzLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTE2LDcgKzExNiw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFj
ZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJU
X0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3RUeXBlZGVmc1Byb3RvdHlwZSwgQmFzZSk7Ci0g
ICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5w
bGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3Jl
YXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAtNzc4LDkgKzc3OCw5IEBAIEpT
Qzo6SXNvU3Vic3BhY2UqIEpTVGVzdFR5cGVkZWZzOjpzdWJzcGEKICAgICAgICAgcmV0dXJuIHNw
YWNlOwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0
aWJsZU9iamVjdCwgSlNUZXN0VHlwZWRlZnM+IHx8ICFKU1Rlc3RUeXBlZGVmczo6bmVlZHNEZXN0
cnVjdGlvbik7CiAgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVz
dHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RUeXBlZGVmcz4pCi0gICAgICAgIHNwYWNlcy5tX3N1YnNw
YWNlRm9yVGVzdFR5cGVkZWZzID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNF
X0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmdldCgpLCBK
U1Rlc3RUeXBlZGVmcyk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFR5cGVkZWZz
ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0u
ZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCksIEpTVGVzdFR5cGVkZWZzKTsKICAgICBl
bHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFR5cGVkZWZzID0gbWFrZVVuaXF1
ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxs
VHlwZS5nZXQoKSwgSlNUZXN0VHlwZWRlZnMpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZv
clRlc3RUeXBlZGVmcyA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklU
KHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0VHlwZWRlZnMpOwogICAgIGF1
dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0VHlwZWRlZnMuZ2V0KCk7CiBJR05P
UkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JF
R0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNXb3JrZXJHbG9iYWxTY29wZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTV29ya2VyR2xvYmFsU2Nv
cGUuY3BwCShyZXZpc2lvbiAyODYwMjQpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNXb3JrZXJHbG9iYWxTY29wZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0
OSw3ICsyNDksNyBAQCBKU0M6Oklzb1N1YnNwYWNlKiBKU1dvcmtlckdsb2JhbFNjb3BlOjpzCiAg
ICAgYXV0byYgc3BhY2VzID0gY2xpZW50RGF0YS5zdWJzcGFjZXMoKTsKICAgICBpZiAoYXV0byog
c3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvcldvcmtlckdsb2JhbFNjb3BlLmdldCgpKQogICAg
ICAgICByZXR1cm4gc3BhY2U7Ci0gICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JXb3JrZXJHbG9iYWxT
Y29wZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAs
IGNsaWVudERhdGEubV9oZWFwQ2VsbFR5cGVGb3JKU1dvcmtlckdsb2JhbFNjb3BlLmdldCgpLCBK
U1dvcmtlckdsb2JhbFNjb3BlKTsKKyAgICBzcGFjZXMubV9zdWJzcGFjZUZvcldvcmtlckdsb2Jh
bFNjb3BlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVh
cCwgKmNsaWVudERhdGEubV9oZWFwQ2VsbFR5cGVGb3JKU1dvcmtlckdsb2JhbFNjb3BlLCBKU1dv
cmtlckdsb2JhbFNjb3BlKTsKICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9y
V29ya2VyR2xvYmFsU2NvcGUuZ2V0KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hh
YmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIp
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNXb3JrZXJH
bG9iYWxTY29wZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1dvcmtlckdsb2JhbFNjb3BlLmgJKHJldmlzaW9uIDI4NjAyNCkKKysrIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1dvcmtlckdsb2JhbFNjb3Bl
LmgJKHdvcmtpbmcgY29weSkKQEAgLTg1LDcgKzg1LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBK
U0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAg
IFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTV29ya2VyR2xvYmFsU2NvcGVQ
cm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7Cisg
ICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KICAgICBzdGF0aWMg
SlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1dvcmtsZXRHbG9i
YWxTY29wZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTV29ya2xldEdsb2JhbFNjb3BlLmNwcAkocmV2aXNpb24gMjg2MDI0KQorKysg
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTV29ya2xldEdsb2JhbFNj
b3BlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTYzLDcgKzE2Myw3IEBAIEpTQzo6SXNvU3Vic3Bh
Y2UqIEpTV29ya2xldEdsb2JhbFNjb3BlOjoKICAgICBhdXRvJiBzcGFjZXMgPSBjbGllbnREYXRh
LnN1YnNwYWNlcygpOwogICAgIGlmIChhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9y
V29ya2xldEdsb2JhbFNjb3BlLmdldCgpKQogICAgICAgICByZXR1cm4gc3BhY2U7Ci0gICAgc3Bh
Y2VzLm1fc3Vic3BhY2VGb3JXb3JrbGV0R2xvYmFsU2NvcGUgPSBtYWtlVW5pcXVlPElzb1N1YnNw
YWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCBjbGllbnREYXRhLm1faGVhcENlbGxUeXBl
Rm9ySlNXb3JrbGV0R2xvYmFsU2NvcGUuZ2V0KCksIEpTV29ya2xldEdsb2JhbFNjb3BlKTsKKyAg
ICBzcGFjZXMubV9zdWJzcGFjZUZvcldvcmtsZXRHbG9iYWxTY29wZSA9IG1ha2VVbmlxdWU8SXNv
U3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICpjbGllbnREYXRhLm1faGVhcENl
bGxUeXBlRm9ySlNXb3JrbGV0R2xvYmFsU2NvcGUsIEpTV29ya2xldEdsb2JhbFNjb3BlKTsKICAg
ICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yV29ya2xldEdsb2JhbFNjb3BlLmdl
dCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKIElHTk9SRV9X
QVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRleDogU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTV29ya2xldEdsb2JhbFNjb3BlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTV29ya2xl
dEdsb2JhbFNjb3BlLmgJKHJldmlzaW9uIDI4NjAyNCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1dvcmtsZXRHbG9iYWxTY29wZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC04NSw3ICs4NSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSog
c3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lT
T19TVUJTUEFDRV9TSEFSQUJMRShKU1dvcmtsZXRHbG9iYWxTY29wZVByb3RvdHlwZSwgQmFzZSk7
Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2
bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSog
Y3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpJbmRleDogU291cmNlL1dlYkNv
cmUvYnJpZGdlL29iamMvb2JqY19ydW50aW1lLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2JyaWRnZS9vYmpjL29iamNfcnVudGltZS5tbQkocmV2aXNpb24gMjg2MDI0KQorKysgU291
cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19ydW50aW1lLm1tCSh3b3JraW5nIGNvcHkpCkBA
IC0zMzQsNyArMzM0LDkgQEAgYm9vbCBPYmpjRmFsbGJhY2tPYmplY3RJbXA6OnRvQm9vbGVhbihK
UwogCiBKU0M6Oklzb1N1YnNwYWNlKiBPYmpjRmFsbGJhY2tPYmplY3RJbXA6OnN1YnNwYWNlRm9y
SW1wbChKU0M6OlZNJiB2bSkKIHsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SlNDOjpJc29T
dWJzcGFjZVBlclZNPiBwZXJWTShbXSAoSlNDOjpWTSYgdm0pIHsgcmV0dXJuIElTT19TVUJTUEFD
RV9QQVJBTUVURVJTKHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5nZXQoKSwgT2Jq
Y0ZhbGxiYWNrT2JqZWN0SW1wKTsgfSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEpTQzo6
SXNvU3Vic3BhY2VQZXJWTT4gcGVyVk0oW10gKEpTQzo6Vk0mIHZtKSB7CisgICAgICAgIHJldHVy
biBJU09fU1VCU1BBQ0VfUEFSQU1FVEVSUyh2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5
cGUoKSwgT2JqY0ZhbGxiYWNrT2JqZWN0SW1wKTsKKyAgICB9KTsKICAgICByZXR1cm4gJnBlclZN
LmdldCgpLmZvclZNKHZtKTsKIH0KIAo=
</data>
<flag name="commit-queue"
          id="469823"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>444742</attachid>
            <date>2021-11-18 14:44:29 -0800</date>
            <delta_ts>2021-11-19 13:12:12 -0800</delta_ts>
            <desc>proposed patch.</desc>
            <filename>bug-233240b.patch</filename>
            <type>text/plain</type>
            <size>435221</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDI4NjAyNCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpA
QCAtMTEzOSwxMiArMTEzOSwxMiBAQCBzZXQoSmF2YVNjcmlwdENvcmVfUFJJVkFURV9GUkFNRVdP
UktfSEVBCiAgICAgcnVudGltZS9Qcml2YXRlTmFtZS5oCiAgICAgcnVudGltZS9Qcm9ncmFtRXhl
Y3V0YWJsZS5oCiAgICAgcnVudGltZS9Qcm9wZXJ0eURlc2NyaXB0b3IuaAotICAgIHJ1bnRpbWUv
UHJvcGVydHlNYXBIYXNoVGFibGUuaAogICAgIHJ1bnRpbWUvUHJvcGVydHlOYW1lLmgKICAgICBy
dW50aW1lL1Byb3BlcnR5TmFtZUFycmF5LmgKICAgICBydW50aW1lL1Byb3BlcnR5T2Zmc2V0LmgK
ICAgICBydW50aW1lL1Byb3BlcnR5U2xvdC5oCiAgICAgcnVudGltZS9Qcm9wZXJ0eVN0b3JhZ2Uu
aAorICAgIHJ1bnRpbWUvUHJvcGVydHlUYWJsZS5oCiAgICAgcnVudGltZS9Qcm90ZWN0LmgKICAg
ICBydW50aW1lL1Byb3RvdHlwZUtleS5oCiAgICAgcnVudGltZS9Qcm94eU9iamVjdC5oCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvanNjLmNwcAkocmV2aXNpb24gMjg2MDI0KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2pzYy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0MjksNyArMTQyOSw3IEBAIHB1Ymxp
YzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vic3BhY2VBY2Nlc3M+CiAgICAg
c3RhdGljIENvbXBsZXRlU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7Ci0gICAg
ICAgIHJldHVybiAmdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAm
dm0uZGVzdHJ1Y3RpYmxlT2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBKU0NNZW1vcnlGb290
cHJpbnQoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKQEAgLTE3NjIsNyArMTc2Miw3IEBA
IHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vic3BhY2VBY2Nlc3M+
CiAgICAgc3RhdGljIENvbXBsZXRlU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7
Ci0gICAgICAgIHJldHVybiAmdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0U3BhY2U7CisgICAgICAgIHJl
dHVybiAmdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMg
U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCShyZXZpc2lvbiAyODYwMjQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTc1MCw3
ICsxNzUwLDcgQEAKIAkJQkM3NTZGQzkwRTIwMzFCMjAwREU3RDEyIC8qIEpTR2xvYmFsT2JqZWN0
RnVuY3Rpb25zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBCQzc1NkZDNzBFMjAzMUIyMDBERTdEMTIgLyogSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlCQzg3Q0RC
OTEwNzEyQUQ0MDAwNjE0Q0YgLyogSlNPTk9iamVjdC5sdXQuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDODdDREI4MTA3MTJBQ0EwMDA2MTRDRiAvKiBK
U09OT2JqZWN0Lmx1dC5oICovOyB9OwogCQlCQzkwNDE0ODBFQjkyNTA5MDBGRTI2RkEgLyogU3Ry
dWN0dXJlVHJhbnNpdGlvblRhYmxlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBCQzkwNDE0NzBFQjkyNTA5MDBGRTI2RkEgLyogU3RydWN0dXJlVHJhbnNp
dGlvblRhYmxlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKLQkJQkM5NTQzN0QwRUJBNzBGRDAwNzJCNkQzIC8qIFByb3BlcnR5TWFwSGFzaFRhYmxlLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzk1NDM3QzBF
QkE3MEZEMDA3MkI2RDMgLyogUHJvcGVydHlNYXBIYXNoVGFibGUuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlCQzk1NDM3RDBFQkE3MEZEMDA3MkI2
RDMgLyogUHJvcGVydHlUYWJsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQkM5NTQzN0MwRUJBNzBGRDAwNzJCNkQzIC8qIFByb3BlcnR5VGFibGUuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlCQ0JFMkNB
RTE0RTk4NUFBMDAwNTkzQUQgLyogR0NBc3NlcnRpb25zLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0JFMkNBRDE0RTk4NUFBMDAwNTkzQUQgLyogR0NB
c3NlcnRpb25zLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJQkNDRjBEMDgwRUYwQUFCOTAwNDEzQzhGIC8qIFN0cnVjdHVyZVN0dWJJbmZvLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0NGMEQwNzBFRjBB
QUI5MDA0MTNDOEYgLyogU3RydWN0dXJlU3R1YkluZm8uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlCQ0QyMDJDMjBFMTcwNkE3MDAyQzdFODIgLyog
UmVnRXhwQ29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEJDRDIwMkJFMEUxNzA2QTcwMDJDN0U4MiAvKiBSZWdFeHBDb25zdHJ1Y3Rvci5o
ICovOyB9OwpAQCAtMTk1OSw3ICsxOTU5LDcgQEAKIAkJRTNDNjk0QjMyMzAyNjg3NzAwNkZCRTQy
IC8qIFdhc21PU1JFbnRyeURhdGEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEUzQzY5NEIxMjMwMjY4NzMwMDZGQkU0MiAvKiBXYXNtT1NSRW50cnlEYXRh
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTND
NzNBOTEyNUJGQTczQjAwRUZFMzAzIC8qIFdhc21TdHJlYW1pbmdQbGFuLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFM0M3M0E5MDI1QkZBNzM0MDBFRkUz
MDMgLyogV2FzbVN0cmVhbWluZ1BsYW4uaCAqLzsgfTsKIAkJRTNDNzlDQUIxREI5QTREQzAwRDFF
Q0E0IC8qIERPTUpJVEVmZmVjdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRTNDNzlDQUExREI5QTRENjAwRDFFQ0E0IC8qIERPTUpJVEVmZmVjdC5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCUUzQzhFRDQz
MjNBMURCQ0IwMDEzMTk1OCAvKiBJc29JbmxpbmVkSGVhcENlbGxUeXBlLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFM0M4RUQ0MjIzQTFEQkM1MDAxMzE5
NTggLyogSXNvSW5saW5lZEhlYXBDZWxsVHlwZS5oICovOyB9OworCQlFM0M4RUQ0MzIzQTFEQkNC
MDAxMzE5NTggLyogSXNvSW5saW5lZEhlYXBDZWxsVHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTNDOEVENDIyM0ExREJDNTAwMTMxOTU4IC8qIElz
b0lubGluZWRIZWFwQ2VsbFR5cGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQlFM0NBM0E0RTI1MjdBQjJGMDA0ODAyQkYgLyogSklUT3BlcmF0aW9u
TGlzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTND
QTNBNEMyNTI3QUIyRjAwNDgwMkJGIC8qIEpJVE9wZXJhdGlvbkxpc3QuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFM0QyMzlDOTFCODI5QzFDMDBC
QkVGNjcgLyogSlNNb2R1bGVFbnZpcm9ubWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRTNEMjM5QzcxQjgyOUMxQzAwQkJFRjY3IC8qIEpTTW9kdWxl
RW52aXJvbm1lbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQlFM0QzNTE1RjI0MUI4OUQ3MDA4REMxNkUgLyogTWFya2VkSlNWYWx1ZVJlZkFycmF5
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFM0QzNTE1
RDI0MUI4OUNFMDA4REMxNkUgLyogTWFya2VkSlNWYWx1ZVJlZkFycmF5LmggKi87IH07CkBAIC00
OTkxLDcgKzQ5OTEsNyBAQAogCQlCQzg3Q0RCODEwNzEyQUNBMDAwNjE0Q0YgLyogSlNPTk9iamVj
dC5sdXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNPTk9iamVjdC5sdXQu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkM4RjNDQ0YwREFGMTdCQTAwNTc3QTgw
IC8qIENvbnN0cnVjdERhdGEuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29u
c3RydWN0RGF0YS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzkwNDE0NzBFQjky
NTA5MDBGRTI2RkEgLyogU3RydWN0dXJlVHJhbnNpdGlvblRhYmxlLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFN0cnVjdHVyZVRyYW5zaXRpb25UYWJsZS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwotCQlCQzk1NDM3QzBFQkE3MEZEMDA3MkI2RDMgLyogUHJvcGVydHlN
YXBIYXNoVGFibGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUHJvcGVydHlN
YXBIYXNoVGFibGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkM5NTQzN0MwRUJB
NzBGRDAwNzJCNkQzIC8qIFByb3BlcnR5VGFibGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gUHJvcGVydHlUYWJsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlC
QzlCQjk1QjBFMTk2ODA2MDBERjg4NTUgLyogSW50ZXJuYWxGdW5jdGlvbi5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbnRlcm5hbEZ1bmN0aW9uLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkNBNjJERkUwRTI4MjYyMzAwMDRGMzBEIC8qIENhbGxE
YXRhLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENhbGxEYXRhLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkNBNjJERkYwRTI4MjYzMTAwMDRGMzBE
IC8qIENvbnN0cnVjdERhdGEuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gQ29uc3RydWN0RGF0YS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC03OTU4
LDcgKzc5NTgsNiBAQAogCQkJCTE0NzM0MUQzMURDMDJFNkQwMEFBMjlCQSAvKiBQcm9ncmFtRXhl
Y3V0YWJsZS5oICovLAogCQkJCUE3RkI2MEEzMTAzRjdEQzIwMDE3QTI4NiAvKiBQcm9wZXJ0eURl
c2NyaXB0b3IuY3BwICovLAogCQkJCUE3RkI2MDRCMTAzRjVFQUIwMDE3QTI4NiAvKiBQcm9wZXJ0
eURlc2NyaXB0b3IuaCAqLywKLQkJCQlCQzk1NDM3QzBFQkE3MEZEMDA3MkI2RDMgLyogUHJvcGVy
dHlNYXBIYXNoVGFibGUuaCAqLywKIAkJCQk4NjE1OEFCMjE1NUM4QjNGMDBCNDVDOUMgLyogUHJv
cGVydHlOYW1lLmggKi8sCiAJCQkJNjU0MDBDMTAwQTY5QkFGMjAwNTA5ODg3IC8qIFByb3BlcnR5
TmFtZUFycmF5LmggKi8sCiAJCQkJMEZGNzE2OEExNUEzQjIzMTAwOEY1REFBIC8qIFByb3BlcnR5
T2Zmc2V0LmggKi8sCkBAIC03OTY2LDYgKzc5NjUsNyBAQAogCQkJCTY1NjIxRTZDMDg5RTg1OTcw
MDc2MEYzNSAvKiBQcm9wZXJ0eVNsb3QuaCAqLywKIAkJCQkwRkI3RjM5MDE1RUQ4RTM4MDBGMTY3
QjIgLyogUHJvcGVydHlTdG9yYWdlLmggKi8sCiAJCQkJQUQxQ0YwNjgxNkRDQUIyRDAwQjk3MTIz
IC8qIFByb3BlcnR5VGFibGUuY3BwICovLAorCQkJCUJDOTU0MzdDMEVCQTcwRkQwMDcyQjZEMyAv
KiBQcm9wZXJ0eVRhYmxlLmggKi8sCiAJCQkJNjVDMDJGQkIwNjM3NDYyQTAwM0U3RUU2IC8qIFBy
b3RlY3QuaCAqLywKIAkJCQkwRjc0QjkzQTFGODk2MTQ1MDBCOTM1RDMgLyogUHJvdG90eXBlS2V5
LmggKi8sCiAJCQkJNzlCMDBDQjgxQzZBQjA3RTAwODhDNjVEIC8qIFByb3h5Q29uc3RydWN0b3Iu
Y3BwICovLApAQCAtMTA2NzYsNyArMTA2NzYsNyBAQAogCQkJCTE0NzM0MUQ0MURDMDJFNkQwMEFB
MjlCQSAvKiBQcm9ncmFtRXhlY3V0YWJsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZEM0U0MEUx
QjYxOEI2NjAwQzgwRTFFIC8qIFByb3BlcnR5Q29uZGl0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlBN0ZCNjEwMDEwNDBDMzhCMDAxN0EyODYgLyogUHJvcGVydHlEZXNjcmlwdG9yLmggaW4gSGVh
ZGVycyAqLywKLQkJCQlCQzk1NDM3RDBFQkE3MEZEMDA3MkI2RDMgLyogUHJvcGVydHlNYXBIYXNo
VGFibGUuaCBpbiBIZWFkZXJzICovLAorCQkJCUJDOTU0MzdEMEVCQTcwRkQwMDcyQjZEMyAvKiBQ
cm9wZXJ0eVRhYmxlLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NjE1OEFCMzE1NUM4QjQwMDBCNDVD
OUMgLyogUHJvcGVydHlOYW1lLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzQ1NDBFMTZGNUNE
MDBCMzQ0NjAgLyogUHJvcGVydHlOYW1lQXJyYXkuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRjcx
NjhDMTVBM0IyMzUwMDhGNURBQSAvKiBQcm9wZXJ0eU9mZnNldC5oIGluIEhlYWRlcnMgKi8sCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vzc0Nhc2UuY3BwCShy
ZXZpc2lvbiAyODYwMjQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNz
Q2FzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIyNzcsNyArMjI3Nyw3IEBAIHZvaWQgQWNjZXNz
Q2FzZTo6Z2VuZXJhdGVJbXBsKEFjY2Vzc0dlbmUKICAgICAgICAgICAgIHNpemVfdCBuZXdTaXpl
ID0gbmV3U3RydWN0dXJlKCktPm91dE9mTGluZUNhcGFjaXR5KCkgKiBzaXplb2YoSlNWYWx1ZSk7
CiAKICAgICAgICAgICAgIGlmIChhbGxvY2F0aW5nSW5saW5lKSB7Ci0gICAgICAgICAgICAgICAg
QWxsb2NhdG9yIGFsbG9jYXRvciA9IHZtLmpzVmFsdWVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlLmFs
bG9jYXRvckZvcihuZXdTaXplLCBBbGxvY2F0b3JGb3JNb2RlOjpBbGxvY2F0b3JJZkV4aXN0cyk7
CisgICAgICAgICAgICAgICAgQWxsb2NhdG9yIGFsbG9jYXRvciA9IHZtLmpzVmFsdWVHaWdhY2Fn
ZUF1eGlsaWFyeVNwYWNlKCkuYWxsb2NhdG9yRm9yKG5ld1NpemUsIEFsbG9jYXRvckZvck1vZGU6
OkFsbG9jYXRvcklmRXhpc3RzKTsKIAogICAgICAgICAgICAgICAgIGppdC5lbWl0QWxsb2NhdGUo
c2NyYXRjaEdQUiwgSklUQWxsb2NhdG9yOjpjb25zdGFudChhbGxvY2F0b3IpLCBzY3JhdGNoR1BS
Miwgc2NyYXRjaEdQUjMsIHNsb3dQYXRoKTsKICAgICAgICAgICAgICAgICBqaXQuYWRkUHRyKEND
YWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKG5ld1NpemUgKyBzaXplb2YoSW5kZXhpbmdIZWFkZXIp
KSwgc2NyYXRjaEdQUik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXZh
bENvZGVCbG9jay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9FdmFsQ29kZUJsb2NrLmgJKHJldmlzaW9uIDI4NjAyNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9FdmFsQ29kZUJsb2NrLmgJKHdvcmtpbmcgY29weSkKQEAgLTQxLDcgKzQx
LDcgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lLCBTdWJzcGFjZUFjY2Vzcz4KICAg
ICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7Ci0gICAgICAg
IHJldHVybiAmdm0uY29kZUJsb2NrU3BhY2Uuc3BhY2U7CisgICAgICAgIHJldHVybiAmdm0uY29k
ZUJsb2NrU3BhY2UoKS5zcGFjZTsKICAgICB9CiAKICAgICBzdGF0aWMgRXZhbENvZGVCbG9jayog
Y3JlYXRlKFZNJiB2bSwgQ29weVBhcnNlZEJsb2NrVGFnLCBFdmFsQ29kZUJsb2NrJiBvdGhlcikK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FeGVjdXRhYmxlVG9Db2RlQmxv
Y2tFZGdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
RXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZS5jcHAJKHJldmlzaW9uIDI4NjAyNCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtODEsNyArODEsNyBAQCB2b2lkIEV4ZWN1dGFibGVUb0NvZGVCbG9j
a0VkZ2U6OnZpc2l0Q2hpCiAgICAgICAgIHZpc2l0b3IuYXBwZW5kVW5iYXJyaWVyZWQoY29kZUJs
b2NrKTsKICAgICAKICAgICBpZiAoIXZpc2l0b3IuaXNNYXJrZWQoY29kZUJsb2NrKSkKLSAgICAg
ICAgdm0uZXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZXNXaXRoRmluYWxpemVycy5hZGQoZWRnZSk7
CisgICAgICAgIHZtLmV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2VzV2l0aEZpbmFsaXplcnMoKS5h
ZGQoZWRnZSk7CiAgICAgCiAgICAgaWYgKEpJVENvZGU6OmlzT3B0aW1pemluZ0pJVChjb2RlQmxv
Y2stPmppdFR5cGUoKSkpIHsKICAgICAgICAgLy8gSWYgd2UgamV0dGlzb24gb3Vyc2VsdmVzIHdl
J2xsIGluc3RhbGwgb3VyIGFsdGVybmF0aXZlLCBzbyBtYWtlIHN1cmUgdGhhdCBpdApAQCAtMTE0
LDcgKzExNCw3IEBAIHZvaWQgRXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZTo6dmlzaXRDaGkKICAg
ICAvLyBub3QgeWV0IG1hcmtlZCBiZWNhdXNlIGl0IHdlYWtseSBkZXBlbmRzIG9uIGEgc3RydWN0
dXJlIHRoYXQgd2UgZGlkIG5vdCB5ZXQgbWFyaywgdGhlbiB3ZQogICAgIC8vIHdpbGwga2VlcCBm
aXhwb2ludGluZyB1bnRpbCB0aGUgZW5kLgogICAgIHZpc2l0b3IuYXBwZW5kVW5iYXJyaWVyZWQo
Y29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSk7Ci0gICAgdm0uZXhlY3V0YWJsZVRvQ29kZUJsb2Nr
RWRnZXNXaXRoQ29uc3RyYWludHMuYWRkKGVkZ2UpOworICAgIHZtLmV4ZWN1dGFibGVUb0NvZGVC
bG9ja0VkZ2VzV2l0aENvbnN0cmFpbnRzKCkuYWRkKGVkZ2UpOwogICAgIGVkZ2UtPnJ1bkNvbnN0
cmFpbnQobG9ja2VyLCB2bSwgdmlzaXRvcik7CiB9CiAKQEAgLTE0Myw4ICsxNDMsOCBAQCB2b2lk
IEV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2U6OmZpbmFsaXplCiAgICAgICAgIG1fY29kZUJsb2Nr
LmNsZWFyKCk7CiAgICAgfQogICAgIAotICAgIHZtLmV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2Vz
V2l0aEZpbmFsaXplcnMucmVtb3ZlKHRoaXMpOwotICAgIHZtLmV4ZWN1dGFibGVUb0NvZGVCbG9j
a0VkZ2VzV2l0aENvbnN0cmFpbnRzLnJlbW92ZSh0aGlzKTsKKyAgICB2bS5leGVjdXRhYmxlVG9D
b2RlQmxvY2tFZGdlc1dpdGhGaW5hbGl6ZXJzKCkucmVtb3ZlKHRoaXMpOworICAgIHZtLmV4ZWN1
dGFibGVUb0NvZGVCbG9ja0VkZ2VzV2l0aENvbnN0cmFpbnRzKCkucmVtb3ZlKHRoaXMpOwogfQog
CiBpbmxpbmUgdm9pZCBFeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlOjphY3RpdmF0ZSgpCkBAIC0y
MDEsNyArMjAxLDcgQEAgdm9pZCBFeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlOjpydW5Db25zdAog
ICAgIGNvZGVCbG9jay0+ZGV0ZXJtaW5lTGl2ZW5lc3MobG9ja2VyLCB2aXNpdG9yKTsKIAogICAg
IGlmICh2aXNpdG9yLmlzTWFya2VkKGNvZGVCbG9jaykpCi0gICAgICAgIHZtLmV4ZWN1dGFibGVU
b0NvZGVCbG9ja0VkZ2VzV2l0aENvbnN0cmFpbnRzLnJlbW92ZSh0aGlzKTsKKyAgICAgICAgdm0u
ZXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZXNXaXRoQ29uc3RyYWludHMoKS5yZW1vdmUodGhpcyk7
CiB9CiAKIHRlbXBsYXRlIHZvaWQgRXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZTo6cnVuQ29uc3Ry
YWludChjb25zdCBDb25jdXJyZW50SlNMb2NrZXImLCBWTSYsIEFic3RyYWN0U2xvdFZpc2l0b3Im
KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FeGVjdXRhYmxlVG9Db2Rl
QmxvY2tFZGdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0V4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2UuaAkocmV2aXNpb24gMjg2MDI0KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0V4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2UuaAkod29y
a2luZyBjb3B5KQpAQCAtNDMsNyArNDMsNyBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5h
bWUgQ2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNzPgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vi
c3BhY2VGb3IoVk0mIHZtKQogICAgIHsKLSAgICAgICAgcmV0dXJuICZ2bS5leGVjdXRhYmxlVG9D
b2RlQmxvY2tFZGdlU3BhY2U7CisgICAgICAgIHJldHVybiAmdm0uZXhlY3V0YWJsZVRvQ29kZUJs
b2NrRWRnZVNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3Ry
dWN0dXJlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlIHByb3RvdHlwZSk7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRnVuY3Rpb25Db2RlQmxvY2suaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRnVuY3Rpb25Db2RlQmxvY2su
aAkocmV2aXNpb24gMjg2MDI0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Z1
bmN0aW9uQ29kZUJsb2NrLmgJKHdvcmtpbmcgY29weSkKQEAgLTQyLDcgKzQyLDcgQEAgcHVibGlj
OgogICAgIHRlbXBsYXRlPHR5cGVuYW1lLCBTdWJzcGFjZUFjY2Vzcz4KICAgICBzdGF0aWMgSXNv
U3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7Ci0gICAgICAgIHJldHVybiAmdm0u
Y29kZUJsb2NrU3BhY2Uuc3BhY2U7CisgICAgICAgIHJldHVybiAmdm0uY29kZUJsb2NrU3BhY2Uo
KS5zcGFjZTsKICAgICB9CiAKICAgICBzdGF0aWMgRnVuY3Rpb25Db2RlQmxvY2sqIGNyZWF0ZShW
TSYgdm0sIENvcHlQYXJzZWRCbG9ja1RhZywgRnVuY3Rpb25Db2RlQmxvY2smIG90aGVyKQpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL01vZHVsZVByb2dyYW1Db2RlQmxvY2su
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTW9kdWxlUHJv
Z3JhbUNvZGVCbG9jay5oCShyZXZpc2lvbiAyODYwMjQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvTW9kdWxlUHJvZ3JhbUNvZGVCbG9jay5oCSh3b3JraW5nIGNvcHkpCkBAIC00
Miw3ICs0Miw3IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSwgU3Vic3BhY2VBY2Nl
c3M+CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewot
ICAgICAgICByZXR1cm4gJnZtLmNvZGVCbG9ja1NwYWNlLnNwYWNlOworICAgICAgICByZXR1cm4g
JnZtLmNvZGVCbG9ja1NwYWNlKCkuc3BhY2U7CiAgICAgfQogCiAgICAgc3RhdGljIE1vZHVsZVBy
b2dyYW1Db2RlQmxvY2sqIGNyZWF0ZShWTSYgdm0sIENvcHlQYXJzZWRCbG9ja1RhZywgTW9kdWxl
UHJvZ3JhbUNvZGVCbG9jayYgb3RoZXIpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvUHJvZ3JhbUNvZGVCbG9jay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9Qcm9ncmFtQ29kZUJsb2NrLmgJKHJldmlzaW9uIDI4NjAyNCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qcm9ncmFtQ29kZUJsb2NrLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTQyLDcgKzQyLDcgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lLCBT
dWJzcGFjZUFjY2Vzcz4KICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2
bSkKICAgICB7Ci0gICAgICAgIHJldHVybiAmdm0uY29kZUJsb2NrU3BhY2Uuc3BhY2U7CisgICAg
ICAgIHJldHVybiAmdm0uY29kZUJsb2NrU3BhY2UoKS5zcGFjZTsKICAgICB9CiAKICAgICBzdGF0
aWMgUHJvZ3JhbUNvZGVCbG9jayogY3JlYXRlKFZNJiB2bSwgQ29weVBhcnNlZEJsb2NrVGFnLCBQ
cm9ncmFtQ29kZUJsb2NrJiBvdGhlcikKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmNwcAko
cmV2aXNpb24gMjg2MDI0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlu
a2VkRnVuY3Rpb25FeGVjdXRhYmxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjUxLDcgKzI1MSw3
IEBAIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIFVubGlua2VkRnVuY3QKICAgICAgICAgbV91
bmxpbmtlZENvZGVCbG9ja0ZvckNvbnN0cnVjdC5zZXQodm0sIHRoaXMsIHJlc3VsdCk7CiAgICAg
ICAgIGJyZWFrOwogICAgIH0KLSAgICB2bS51bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZVNwYWNl
LnNldC5hZGQodGhpcyk7CisgICAgdm0udW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGVTcGFjZSgp
LnNldC5hZGQodGhpcyk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApAQCAtMzEwLDcgKzMxMCw3
IEBAIHZvaWQgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OmZpbmFsaXoKICAgICAgICAgY2xl
YXJJZkRlYWQobV91bmxpbmtlZENvZGVCbG9ja0ZvckNhbGwpOwogICAgICAgICBjbGVhcklmRGVh
ZChtX3VubGlua2VkQ29kZUJsb2NrRm9yQ29uc3RydWN0KTsKICAgICAgICAgaWYgKGlzQ2xlYXJl
ZCAmJiAhaXNTdGlsbFZhbGlkKQotICAgICAgICAgICAgdm0udW5saW5rZWRGdW5jdGlvbkV4ZWN1
dGFibGVTcGFjZS5zZXQucmVtb3ZlKHRoaXMpOworICAgICAgICAgICAgdm0udW5saW5rZWRGdW5j
dGlvbkV4ZWN1dGFibGVTcGFjZSgpLnNldC5yZW1vdmUodGhpcyk7CiAgICAgfQogfQogCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFi
bGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5r
ZWRGdW5jdGlvbkV4ZWN1dGFibGUuaAkocmV2aXNpb24gMjg2MDI0KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTY3LDcgKzY3LDcgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENl
bGxUeXBlLCBTdWJzcGFjZUFjY2Vzcz4KICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNl
Rm9yKFZNJiB2bSkKICAgICB7Ci0gICAgICAgIHJldHVybiAmdm0udW5saW5rZWRGdW5jdGlvbkV4
ZWN1dGFibGVTcGFjZS5zcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS51bmxpbmtlZEZ1bmN0aW9u
RXhlY3V0YWJsZVNwYWNlKCkuc3BhY2U7CiAgICAgfQogCiAgICAgc3RhdGljIFVubGlua2VkRnVu
Y3Rpb25FeGVjdXRhYmxlKiBjcmVhdGUoVk0mIHZtLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2Us
IEZ1bmN0aW9uTWV0YWRhdGFOb2RlKiBub2RlLCBVbmxpbmtlZEZ1bmN0aW9uS2luZCB1bmxpbmtl
ZEZ1bmN0aW9uS2luZCwgQ29uc3RydWN0QWJpbGl0eSBjb25zdHJ1Y3RBYmlsaXR5LCBKU1BhcnNl
clNjcmlwdE1vZGUgc2NyaXB0TW9kZSwgUmVmUHRyPFREWkVudmlyb25tZW50TGluaz4gcGFyZW50
U2NvcGVURFpWYXJpYWJsZXMsIHN0ZDo6b3B0aW9uYWw8UHJpdmF0ZU5hbWVFbnZpcm9ubWVudD4g
cGFyZW50UHJpdmF0ZU5hbWVFbnZpcm9ubWVudCwgRGVyaXZlZENvbnRleHRUeXBlIGRlcml2ZWRD
b250ZXh0VHlwZSwgTmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIgbmVlZHNDbGFzc0ZpZWxkSW5p
dGlhbGl6ZXIsIFByaXZhdGVCcmFuZFJlcXVpcmVtZW50IHByaXZhdGVCcmFuZFJlcXVpcmVtZW50
LCBib29sIGlzQnVpbHRpbkRlZmF1bHRDbGFzc0NvbnN0cnVjdG9yID0gZmFsc2UpCkBAIC0xMzEs
NyArMTMxLDcgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgbV91bmxpbmtlZENvZGVCbG9ja0Zv
ckNhbGwuY2xlYXIoKTsKICAgICAgICAgbV91bmxpbmtlZENvZGVCbG9ja0ZvckNvbnN0cnVjdC5j
bGVhcigpOwotICAgICAgICB2bS51bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZVNwYWNlLnNldC5y
ZW1vdmUodGhpcyk7CisgICAgICAgIHZtLnVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlU3BhY2Uo
KS5zZXQucmVtb3ZlKHRoaXMpOwogICAgIH0KIAogICAgIHZvaWQgcmVjb3JkUGFyc2UoQ29kZUZl
YXR1cmVzIGZlYXR1cmVzLCBMZXhpY2FsU2NvcGVGZWF0dXJlcyBsZXhpY2FsU2NvcGVGZWF0dXJl
cywgYm9vbCBoYXNDYXB0dXJlZFZhcmlhYmxlcykKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCShyZXZpc2lvbiAyODYwMjQpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTIwLDcgKzEyMCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRBbGxvY2F0
ZVJhd09iamUKIAogICAgIFZNJiB2bSA9IHRoaXMtPnZtKCk7CiAgICAgaWYgKHNpemUpIHsKLSAg
ICAgICAgaWYgKEFsbG9jYXRvciBhbGxvY2F0b3IgPSB2bS5qc1ZhbHVlR2lnYWNhZ2VBdXhpbGlh
cnlTcGFjZS5hbGxvY2F0b3JGb3JOb25WaXJ0dWFsKHNpemUsIEFsbG9jYXRvckZvck1vZGU6OkFs
bG9jYXRvcklmRXhpc3RzKSkgeworICAgICAgICBpZiAoQWxsb2NhdG9yIGFsbG9jYXRvciA9IHZt
LmpzVmFsdWVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlKCkuYWxsb2NhdG9yRm9yTm9uVmlydHVhbChz
aXplLCBBbGxvY2F0b3JGb3JNb2RlOjpBbGxvY2F0b3JJZkV4aXN0cykpIHsKICAgICAgICAgICAg
IG1faml0LmVtaXRBbGxvY2F0ZShzdG9yYWdlR1BSLCBKSVRBbGxvY2F0b3I6OmNvbnN0YW50KGFs
bG9jYXRvciksIHNjcmF0Y2hHUFIsIHNjcmF0Y2gyR1BSLCBzbG93Q2FzZXMpOwogICAgICAgICAg
ICAgCiAgICAgICAgICAgICBtX2ppdC5hZGRQdHIoCkBAIC0xMDczOCw3ICsxMDczOCw3IEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVBbGxvY2F0ZVByb3AKICAgICAKICAgICBzaXplX3Qg
c2l6ZSA9IGluaXRpYWxPdXRPZkxpbmVDYXBhY2l0eSAqIHNpemVvZihKU1ZhbHVlKTsKIAotICAg
IEFsbG9jYXRvciBhbGxvY2F0b3IgPSB2bSgpLmpzVmFsdWVHaWdhY2FnZUF1eGlsaWFyeVNwYWNl
LmFsbG9jYXRvckZvck5vblZpcnR1YWwoc2l6ZSwgQWxsb2NhdG9yRm9yTW9kZTo6QWxsb2NhdG9y
SWZFeGlzdHMpOworICAgIEFsbG9jYXRvciBhbGxvY2F0b3IgPSB2bSgpLmpzVmFsdWVHaWdhY2Fn
ZUF1eGlsaWFyeVNwYWNlKCkuYWxsb2NhdG9yRm9yTm9uVmlydHVhbChzaXplLCBBbGxvY2F0b3JG
b3JNb2RlOjpBbGxvY2F0b3JJZkV4aXN0cyk7CiAKICAgICBpZiAoIWFsbG9jYXRvciB8fCBub2Rl
LT50cmFuc2l0aW9uKCktPnByZXZpb3VzLT5jb3VsZEhhdmVJbmRleGluZ0hlYWRlcigpKSB7CiAg
ICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGJhc2UodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwpA
QCAtMTA3ODIsNyArMTA3ODIsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlUmVhbGxv
Y2F0ZVByCiAgICAgc2l6ZV90IG5ld1NpemUgPSBvbGRTaXplICogb3V0T2ZMaW5lR3Jvd3RoRmFj
dG9yOwogICAgIEFTU0VSVChuZXdTaXplID09IG5vZGUtPnRyYW5zaXRpb24oKS0+bmV4dC0+b3V0
T2ZMaW5lQ2FwYWNpdHkoKSAqIHNpemVvZihKU1ZhbHVlKSk7CiAgICAgCi0gICAgQWxsb2NhdG9y
IGFsbG9jYXRvciA9IHZtKCkuanNWYWx1ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UuYWxsb2NhdG9y
Rm9yTm9uVmlydHVhbChuZXdTaXplLCBBbGxvY2F0b3JGb3JNb2RlOjpBbGxvY2F0b3JJZkV4aXN0
cyk7CisgICAgQWxsb2NhdG9yIGFsbG9jYXRvciA9IHZtKCkuanNWYWx1ZUdpZ2FjYWdlQXV4aWxp
YXJ5U3BhY2UoKS5hbGxvY2F0b3JGb3JOb25WaXJ0dWFsKG5ld1NpemUsIEFsbG9jYXRvckZvck1v
ZGU6OkFsbG9jYXRvcklmRXhpc3RzKTsKIAogICAgIGlmICghYWxsb2NhdG9yIHx8IG5vZGUtPnRy
YW5zaXRpb24oKS0+cHJldmlvdXMtPmNvdWxkSGF2ZUluZGV4aW5nSGVhZGVyKCkpIHsKICAgICAg
ICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYmFzZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CkBAIC0x
MTQ5OSw3ICsxMTQ5OSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXROZXdUeXBlZEFycmF5
V2kKICAgICAgICAgbV9qaXQuYW5kMzIoVHJ1c3RlZEltbTMyKH43KSwgc2NyYXRjaEdQUik7CiAg
ICAgfQogICAgIG1faml0LmVtaXRBbGxvY2F0ZVZhcmlhYmxlU2l6ZWQoCi0gICAgICAgIHN0b3Jh
Z2VHUFIsIHZtKCkucHJpbWl0aXZlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZSwgc2NyYXRjaEdQUiwg
c2NyYXRjaEdQUiwKKyAgICAgICAgc3RvcmFnZUdQUiwgdm0oKS5wcmltaXRpdmVHaWdhY2FnZUF1
eGlsaWFyeVNwYWNlKCksIHNjcmF0Y2hHUFIsIHNjcmF0Y2hHUFIsCiAgICAgICAgIHNjcmF0Y2hH
UFIyLCBzbG93Q2FzZXMpOwogICAgIAogICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIGRvbmUgPSBt
X2ppdC5icmFuY2hUZXN0MzIoTWFjcm9Bc3NlbWJsZXI6Olplcm8sIHNpemVHUFIpOwpAQCAtMTM3
MDAsNyArMTM3MDAsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0QWxsb2NhdGVCdXR0ZXJm
CiAgICAgZGlkTm90T3ZlcmZsb3cubGluaygmbV9qaXQpOwogI2VuZGlmCiAgICAgbV9qaXQuZW1p
dEFsbG9jYXRlVmFyaWFibGVTaXplZCgKLSAgICAgICAgc3RvcmFnZVJlc3VsdEdQUiwgdm0oKS5q
c1ZhbHVlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZSwgc2NyYXRjaDIsIHNjcmF0Y2gxLCBzY3JhdGNo
Mywgc2xvd0Nhc2VzKTsKKyAgICAgICAgc3RvcmFnZVJlc3VsdEdQUiwgdm0oKS5qc1ZhbHVlR2ln
YWNhZ2VBdXhpbGlhcnlTcGFjZSgpLCBzY3JhdGNoMiwgc2NyYXRjaDEsIHNjcmF0Y2gzLCBzbG93
Q2FzZXMpOwogICAgIG1faml0LmFkZFB0cihUcnVzdGVkSW1tMzIoc2l6ZW9mKEluZGV4aW5nSGVh
ZGVyKSksIHN0b3JhZ2VSZXN1bHRHUFIpOwogCiAgICAgbV9qaXQuc3RvcmUzMihzaXplR1BSLCBN
YWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzdG9yYWdlUmVzdWx0R1BSLCBCdXR0ZXJmbHk6Om9mZnNl
dE9mUHVibGljTGVuZ3RoKCkpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
TG93ZXJERkdUb0IzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRs
L0ZUTExvd2VyREZHVG9CMy5jcHAJKHJldmlzaW9uIDI4NjAyNCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODMwMCw3
ICs4MzAwLDcgQEAgSUdOT1JFX0NMQU5HX1dBUk5JTkdTX0VORAogICAgICAgICAgICAgICAgIG1f
b3V0LmNvbnN0SW50UHRyKH5zdGF0aWNfY2FzdDxpbnRwdHJfdD4oNykpKTsKICAgICAgICAgfQog
Ci0gICAgICAgIExWYWx1ZSBhbGxvY2F0b3IgPSBhbGxvY2F0b3JGb3JTaXplKHZtKCkucHJpbWl0
aXZlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZSwgYnl0ZVNpemUsIHNsb3dDYXNlKTsKKyAgICAgICAg
TFZhbHVlIGFsbG9jYXRvciA9IGFsbG9jYXRvckZvclNpemUodm0oKS5wcmltaXRpdmVHaWdhY2Fn
ZUF1eGlsaWFyeVNwYWNlKCksIGJ5dGVTaXplLCBzbG93Q2FzZSk7CiAgICAgICAgIExWYWx1ZSBz
dG9yYWdlID0gYWxsb2NhdGVIZWFwQ2VsbChhbGxvY2F0b3IsIHNsb3dDYXNlKTsKIAogICAgICAg
ICBzcGxhdFdvcmRzKApAQCAtMTM5MjEsNyArMTM5MjEsNyBAQCBJR05PUkVfQ0xBTkdfV0FSTklO
R1NfRU5ECiAgICAgICAgICAgICAgICAgVmFsdWVGcm9tQmxvY2sgbm9CdXR0ZXJmbHkgPSBtX291
dC5hbmNob3IobV9vdXQuaW50UHRyWmVybyk7CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAg
ICAgICAgTFZhbHVlIHN0YXJ0T2ZTdG9yYWdlID0gYWxsb2NhdGVIZWFwQ2VsbCgKLSAgICAgICAg
ICAgICAgICAgICAgYWxsb2NhdG9yRm9yU2l6ZSh2bSgpLmpzVmFsdWVHaWdhY2FnZUF1eGlsaWFy
eVNwYWNlLCBidXR0ZXJmbHlTaXplLCBzbG93UGF0aCksCisgICAgICAgICAgICAgICAgICAgIGFs
bG9jYXRvckZvclNpemUodm0oKS5qc1ZhbHVlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZSgpLCBidXR0
ZXJmbHlTaXplLCBzbG93UGF0aCksCiAgICAgICAgICAgICAgICAgICAgIHNsb3dQYXRoKTsKIAog
ICAgICAgICAgICAgICAgIExWYWx1ZSBmYXN0QnV0dGVyZmx5VmFsdWUgPSBtX291dC5hZGQoCkBA
IC0xNTAxNiw3ICsxNTAxNiw3IEBAIElHTk9SRV9DTEFOR19XQVJOSU5HU19FTkQKICAgICAgICAg
TEJhc2ljQmxvY2sgbGFzdE5leHQgPSBtX291dC5pbnNlcnROZXdCbG9ja3NCZWZvcmUoc2xvd1Bh
dGgpOwogCiAgICAgICAgIHNpemVfdCBzaXplSW5CeXRlcyA9IHNpemVJblZhbHVlcyAqIHNpemVv
ZihKU1ZhbHVlKTsKLSAgICAgICAgQWxsb2NhdG9yIGFsbG9jYXRvciA9IHZtKCkuanNWYWx1ZUdp
Z2FjYWdlQXV4aWxpYXJ5U3BhY2UuYWxsb2NhdG9yRm9yTm9uVmlydHVhbChzaXplSW5CeXRlcywg
QWxsb2NhdG9yRm9yTW9kZTo6QWxsb2NhdG9ySWZFeGlzdHMpOworICAgICAgICBBbGxvY2F0b3Ig
YWxsb2NhdG9yID0gdm0oKS5qc1ZhbHVlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZSgpLmFsbG9jYXRv
ckZvck5vblZpcnR1YWwoc2l6ZUluQnl0ZXMsIEFsbG9jYXRvckZvck1vZGU6OkFsbG9jYXRvcklm
RXhpc3RzKTsKICAgICAgICAgTFZhbHVlIHN0YXJ0T2ZTdG9yYWdlID0gYWxsb2NhdGVIZWFwQ2Vs
bCgKICAgICAgICAgICAgIG1fb3V0LmNvbnN0SW50UHRyKGFsbG9jYXRvci5sb2NhbEFsbG9jYXRv
cigpKSwgc2xvd1BhdGgpOwogICAgICAgICBWYWx1ZUZyb21CbG9jayBmYXN0QnV0dGVyZmx5ID0g
bV9vdXQuYW5jaG9yKApAQCAtMTcwMzgsNyArMTcwMzgsNyBAQCBJR05PUkVfQ0xBTkdfV0FSTklO
R1NfRU5ECiAgICAgICAgIExWYWx1ZSBidXR0ZXJmbHlTaXplID0gbV9vdXQuYWRkKAogICAgICAg
ICAgICAgcGF5bG9hZFNpemUsIG1fb3V0LmNvbnN0SW50UHRyKHNpemVvZihJbmRleGluZ0hlYWRl
cikpKTsKIAotICAgICAgICBMVmFsdWUgYWxsb2NhdG9yID0gYWxsb2NhdG9yRm9yU2l6ZSh2bSgp
LmpzVmFsdWVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlLCBidXR0ZXJmbHlTaXplLCBmYWlsQ2FzZSk7
CisgICAgICAgIExWYWx1ZSBhbGxvY2F0b3IgPSBhbGxvY2F0b3JGb3JTaXplKHZtKCkuanNWYWx1
ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UoKSwgYnV0dGVyZmx5U2l6ZSwgZmFpbENhc2UpOwogICAg
ICAgICBMVmFsdWUgc3RhcnRPZlN0b3JhZ2UgPSBhbGxvY2F0ZUhlYXBDZWxsKGFsbG9jYXRvciwg
ZmFpbENhc2UpOwogCiAgICAgICAgIExWYWx1ZSBidXR0ZXJmbHkgPSBtX291dC5hZGQoc3RhcnRP
ZlN0b3JhZ2UsIG1fb3V0LmNvbnN0SW50UHRyKHNpemVvZihJbmRleGluZ0hlYWRlcikpKTsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0Jsb2NrRGlyZWN0b3J5LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQmxvY2tEaXJlY3RvcnkuaAkocmV2aXNp
b24gMjg2MDI0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQmxvY2tEaXJlY3Rvcnku
aAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTItMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTItMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKQEAgLTc0LDcgKzc0LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2hy
aW5rKCk7CiAgICAgdm9pZCBhc3NlcnROb1Vuc3dlcHQoKTsKICAgICBzaXplX3QgY2VsbFNpemUo
KSBjb25zdCB7IHJldHVybiBtX2NlbGxTaXplOyB9Ci0gICAgY29uc3QgQ2VsbEF0dHJpYnV0ZXMm
IGF0dHJpYnV0ZXMoKSBjb25zdCB7IHJldHVybiBtX2F0dHJpYnV0ZXM7IH0KKyAgICBjb25zdCBD
ZWxsQXR0cmlidXRlcyBhdHRyaWJ1dGVzKCkgY29uc3QgeyByZXR1cm4gbV9hdHRyaWJ1dGVzOyB9
CiAgICAgYm9vbCBuZWVkc0Rlc3RydWN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9hdHRyaWJ1dGVz
LmRlc3RydWN0aW9uID09IE5lZWRzRGVzdHJ1Y3Rpb247IH0KICAgICBEZXN0cnVjdGlvbk1vZGUg
ZGVzdHJ1Y3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2F0dHJpYnV0ZXMuZGVzdHJ1Y3Rpb247IH0K
ICAgICBIZWFwQ2VsbDo6S2luZCBjZWxsS2luZCgpIGNvbnN0IHsgcmV0dXJuIG1fYXR0cmlidXRl
cy5jZWxsS2luZDsgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ29kZUJsb2Nr
U2V0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ29kZUJsb2Nr
U2V0LmgJKHJldmlzaW9uIDI4NjAyNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0Nv
ZGVCbG9ja1NldC5oCSh3b3JraW5nIGNvcHkpCkBAIC02Niw4ICs2Niw2IEBAIHB1YmxpYzoKICAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPiB2b2lkIGl0ZXJhdGUoY29uc3QgRnVuY3RvciYp
OwogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+IHZvaWQgaXRlcmF0ZShjb25zdCBBYnN0
cmFjdExvY2tlciYsIGNvbnN0IEZ1bmN0b3ImKTsKIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1
bmN0b3I+IHZvaWQgaXRlcmF0ZVZpYVN1YnNwYWNlcyhWTSYsIGNvbnN0IEZ1bmN0b3ImKTsKLSAg
ICAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPiB2b2lkIGl0ZXJhdGVDdXJyZW50bHlF
eGVjdXRpbmcoY29uc3QgRnVuY3RvciYpOwogICAgIAogICAgIHZvaWQgZHVtcChQcmludFN0cmVh
bSYpIGNvbnN0OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ29kZUJsb2NrU2V0
SW5saW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0NvZGVC
bG9ja1NldElubGluZXMuaAkocmV2aXNpb24gMjg2MDI0KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvQ29kZUJsb2NrU2V0SW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC02MCwxOCAr
NjAsNiBAQCB2b2lkIENvZGVCbG9ja1NldDo6aXRlcmF0ZShjb25zdCBBYnN0cmFjCiB9CiAKIHRl
bXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+Ci12b2lkIENvZGVCbG9ja1NldDo6aXRlcmF0ZVZpYVN1
YnNwYWNlcyhWTSYgdm0sIGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3IpCi17Ci0gICAgdm0uZm9yRWFj
aENvZGVCbG9ja1NwYWNlKAotICAgICAgICBbJl0gKGF1dG8mIHNwYWNlQW5kU2V0KSB7Ci0gICAg
ICAgICAgICBzcGFjZUFuZFNldC5zcGFjZS5mb3JFYWNoTGl2ZUNlbGwoCi0gICAgICAgICAgICAg
ICAgWyZdIChIZWFwQ2VsbCogY2VsbCwgSGVhcENlbGw6OktpbmQpIHsKLSAgICAgICAgICAgICAg
ICAgICAgZnVuY3Rvcihqc0Nhc3Q8Q29kZUJsb2NrKj4oc3RhdGljX2Nhc3Q8SlNDZWxsKj4oY2Vs
bCkpKTsKLSAgICAgICAgICAgICAgICB9KTsKLSAgICAgICAgfSk7Ci19Ci0KLXRlbXBsYXRlPHR5
cGVuYW1lIEZ1bmN0b3I+CiB2b2lkIENvZGVCbG9ja1NldDo6aXRlcmF0ZUN1cnJlbnRseUV4ZWN1
dGluZyhjb25zdCBGdW5jdG9yJiBmdW5jdG9yKQogewogICAgIExvY2tlciBsb2NrZXIgeyBtX2xv
Y2sgfTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0NvbXBsZXRlU3Vic3BhY2Uu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0NvbXBsZXRlU3Vi
c3BhY2UuY3BwCShyZXZpc2lvbiAyODYwMjQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVh
cC9Db21wbGV0ZVN1YnNwYWNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzUsNyArMzUsNyBAQAog
CiBuYW1lc3BhY2UgSlNDIHsKIAotQ29tcGxldGVTdWJzcGFjZTo6Q29tcGxldGVTdWJzcGFjZShD
U3RyaW5nIG5hbWUsIEhlYXAmIGhlYXAsIEhlYXBDZWxsVHlwZSogaGVhcENlbGxUeXBlLCBBbGln
bmVkTWVtb3J5QWxsb2NhdG9yKiBhbGlnbmVkTWVtb3J5QWxsb2NhdG9yKQorQ29tcGxldGVTdWJz
cGFjZTo6Q29tcGxldGVTdWJzcGFjZShDU3RyaW5nIG5hbWUsIEhlYXAmIGhlYXAsIGNvbnN0IEhl
YXBDZWxsVHlwZSYgaGVhcENlbGxUeXBlLCBBbGlnbmVkTWVtb3J5QWxsb2NhdG9yKiBhbGlnbmVk
TWVtb3J5QWxsb2NhdG9yKQogICAgIDogU3Vic3BhY2UobmFtZSwgaGVhcCkKIHsKICAgICBpbml0
aWFsaXplKGhlYXBDZWxsVHlwZSwgYWxpZ25lZE1lbW9yeUFsbG9jYXRvcik7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Db21wbGV0ZVN1YnNwYWNlLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ29tcGxldGVTdWJzcGFjZS5oCShyZXZpc2lvbiAy
ODYwMjQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Db21wbGV0ZVN1YnNwYWNlLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTMxLDcgKzMxLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKIGNsYXNz
IENvbXBsZXRlU3Vic3BhY2UgZmluYWwgOiBwdWJsaWMgU3Vic3BhY2UgewogcHVibGljOgotICAg
IEpTX0VYUE9SVF9QUklWQVRFIENvbXBsZXRlU3Vic3BhY2UoQ1N0cmluZyBuYW1lLCBIZWFwJiwg
SGVhcENlbGxUeXBlKiwgQWxpZ25lZE1lbW9yeUFsbG9jYXRvciopOworICAgIEpTX0VYUE9SVF9Q
UklWQVRFIENvbXBsZXRlU3Vic3BhY2UoQ1N0cmluZyBuYW1lLCBIZWFwJiwgY29uc3QgSGVhcENl
bGxUeXBlJiwgQWxpZ25lZE1lbW9yeUFsbG9jYXRvciopOwogICAgIEpTX0VYUE9SVF9QUklWQVRF
IH5Db21wbGV0ZVN1YnNwYWNlKCkgZmluYWw7CiAKICAgICAvLyBJbiBzb21lIGNvZGUgcGF0aHMs
IHdlIG5lZWQgaXQgdG8gYmUgYSBjb21waWxlIGVycm9yIHRvIGNhbGwgdGhlIHZpcnR1YWwgdmVy
c2lvbiBvZiBvbmUgb2YKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCShyZXZp
c2lvbiAyODYwMjQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMjEsMTMgKzIxLDIwIEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5j
bHVkZSAiSGVhcC5oIgogCisjaW5jbHVkZSAiQmlnSW50T2JqZWN0LmgiCisjaW5jbHVkZSAiQm9v
bGVhbk9iamVjdC5oIgorI2luY2x1ZGUgIkJyYW5kZWRTdHJ1Y3R1cmUuaCIKICNpbmNsdWRlICJC
dWlsdGluRXhlY3V0YWJsZXMuaCIKKyNpbmNsdWRlICJDbG9uZWRBcmd1bWVudHMuaCIKICNpbmNs
dWRlICJDb2RlQmxvY2suaCIKICNpbmNsdWRlICJDb2RlQmxvY2tTZXRJbmxpbmVzLmgiCiAjaW5j
bHVkZSAiQ29sbGVjdGluZ1Njb3BlLmgiCiAjaW5jbHVkZSAiQ29uc2VydmF0aXZlUm9vdHMuaCIK
KyNpbmNsdWRlICJEYXRlSW5zdGFuY2UuaCIKKyNpbmNsdWRlICJEZWJ1Z2dlclNjb3BlLmgiCiAj
aW5jbHVkZSAiRWRlbkdDQWN0aXZpdHlDYWxsYmFjay5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbi5o
IgorI2luY2x1ZGUgIkZhc3RNYWxsb2NBbGlnbmVkTWVtb3J5QWxsb2NhdG9yLmgiCiAjaW5jbHVk
ZSAiRnVsbEdDQWN0aXZpdHlDYWxsYmFjay5oIgogI2luY2x1ZGUgIkZ1bmN0aW9uRXhlY3V0YWJs
ZUlubGluZXMuaCIKICNpbmNsdWRlICJHQ0FjdGl2aXR5Q2FsbGJhY2suaCIKQEAgLTM1LDYgKzQy
LDcgQEAKICNpbmNsdWRlICJHQ0luY29taW5nUmVmQ291bnRlZFNldElubGluZXMuaCIKICNpbmNs
dWRlICJHQ1NlZ21lbnRlZEFycmF5SW5saW5lcy5oIgogI2luY2x1ZGUgIkdDVHlwZU1hcC5oIgor
I2luY2x1ZGUgIkdldHRlclNldHRlci5oIgogI2luY2x1ZGUgIkhhc093blByb3BlcnR5Q2FjaGUu
aCIKICNpbmNsdWRlICJIZWFwSGVscGVyUG9vbC5oIgogI2luY2x1ZGUgIkhlYXBJdGVyYXRpb25T
Y29wZS5oIgpAQCAtNDMsMzcgKzUxLDExNiBAQAogI2luY2x1ZGUgIkhlYXBWZXJpZmllci5oIgog
I2luY2x1ZGUgIkluY3JlbWVudGFsU3dlZXBlci5oIgogI2luY2x1ZGUgIkludGVycHJldGVyLmgi
CisjaW5jbHVkZSAiSW50bENvbGxhdG9yLmgiCisjaW5jbHVkZSAiSW50bERhdGVUaW1lRm9ybWF0
LmgiCisjaW5jbHVkZSAiSW50bERpc3BsYXlOYW1lcy5oIgorI2luY2x1ZGUgIkludGxMaXN0Rm9y
bWF0LmgiCisjaW5jbHVkZSAiSW50bExvY2FsZS5oIgorI2luY2x1ZGUgIkludGxOdW1iZXJGb3Jt
YXQuaCIKKyNpbmNsdWRlICJJbnRsUGx1cmFsUnVsZXMuaCIKKyNpbmNsdWRlICJJbnRsUmVsYXRp
dmVUaW1lRm9ybWF0LmgiCisjaW5jbHVkZSAiSW50bFNlZ21lbnRJdGVyYXRvci5oIgorI2luY2x1
ZGUgIkludGxTZWdtZW50ZXIuaCIKKyNpbmNsdWRlICJJbnRsU2VnbWVudHMuaCIKICNpbmNsdWRl
ICJJc29DZWxsU2V0SW5saW5lcy5oIgogI2luY2x1ZGUgIkpJVFN0dWJSb3V0aW5lU2V0LmgiCiAj
aW5jbHVkZSAiSklUV29ya2xpc3RJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNBUElHbG9iYWxPYmpl
Y3QuaCIKKyNpbmNsdWRlICJKU0FQSVZhbHVlV3JhcHBlci5oIgorI2luY2x1ZGUgIkpTQVBJV3Jh
cHBlck9iamVjdC5oIgorI2luY2x1ZGUgIkpTQXJyYXkuaCIKKyNpbmNsdWRlICJKU0FycmF5QnVm
ZmVyLmgiCisjaW5jbHVkZSAiSlNBcnJheUl0ZXJhdG9yLmgiCisjaW5jbHVkZSAiSlNBc3luY0dl
bmVyYXRvci5oIgorI2luY2x1ZGUgIkpTQmlnSW50LmgiCisjaW5jbHVkZSAiSlNCb3VuZEZ1bmN0
aW9uLmgiCisjaW5jbHVkZSAiSlNDYWxsYmFja0NvbnN0cnVjdG9yLmgiCisjaW5jbHVkZSAiSlND
YWxsYmFja0Z1bmN0aW9uLmgiCisjaW5jbHVkZSAiSlNDYWxsYmFja09iamVjdC5oIgorI2luY2x1
ZGUgIkpTQ2FsbGVlLmgiCisjaW5jbHVkZSAiSlNDdXN0b21HZXR0ZXJGdW5jdGlvbi5oIgorI2lu
Y2x1ZGUgIkpTQ3VzdG9tU2V0dGVyRnVuY3Rpb24uaCIKKyNpbmNsdWRlICJKU0RhdGFWaWV3Lmgi
CiAjaW5jbHVkZSAiSlNGaW5hbGl6YXRpb25SZWdpc3RyeS5oIgorI2luY2x1ZGUgIkpTRnVuY3Rp
b24uaCIKKyNpbmNsdWRlICJKU0dsb2JhbExleGljYWxFbnZpcm9ubWVudC5oIgorI2luY2x1ZGUg
IkpTR2xvYmFsT2JqZWN0LmgiCisjaW5jbHVkZSAiSlNJbmplY3RlZFNjcmlwdEhvc3QuaCIKKyNp
bmNsdWRlICJKU0phdmFTY3JpcHRDYWxsRnJhbWUuaCIKKyNpbmNsdWRlICJKU01hcC5oIgorI2lu
Y2x1ZGUgIkpTTWFwSXRlcmF0b3IuaCIKKyNpbmNsdWRlICJKU01vZHVsZU5hbWVzcGFjZU9iamVj
dC5oIgorI2luY2x1ZGUgIkpTTW9kdWxlUmVjb3JkLmgiCisjaW5jbHVkZSAiSlNOYXRpdmVTdGRG
dW5jdGlvbi5oIgorI2luY2x1ZGUgIkpTUHJvbWlzZS5oIgorI2luY2x1ZGUgIkpTUHJvcGVydHlO
YW1lRW51bWVyYXRvci5oIgorI2luY2x1ZGUgIkpTUHJveHkuaCIKKyNpbmNsdWRlICJKU1Njcmlw
dEZldGNoUGFyYW1ldGVycy5oIgorI2luY2x1ZGUgIkpTU2NyaXB0RmV0Y2hlci5oIgorI2luY2x1
ZGUgIkpTU2V0LmgiCisjaW5jbHVkZSAiSlNTZXRJdGVyYXRvci5oIgorI2luY2x1ZGUgIkpTU291
cmNlQ29kZS5oIgorI2luY2x1ZGUgIkpTU3RyaW5nSXRlcmF0b3IuaCIKKyNpbmNsdWRlICJKU1Rl
bXBsYXRlT2JqZWN0RGVzY3JpcHRvci5oIgorI2luY2x1ZGUgIkpTVG9XYXNtSUNDYWxsZWUuaCIK
KyNpbmNsdWRlICJKU1R5cGVkQXJyYXlzLmgiCiAjaW5jbHVkZSAiSlNWaXJ0dWFsTWFjaGluZUlu
dGVybmFsLmgiCiAjaW5jbHVkZSAiSlNXZWFrTWFwLmgiCiAjaW5jbHVkZSAiSlNXZWFrT2JqZWN0
UmVmLmgiCiAjaW5jbHVkZSAiSlNXZWFrU2V0LmgiCiAjaW5jbHVkZSAiSlNXZWJBc3NlbWJseUNv
ZGVCbG9jay5oIgorI2luY2x1ZGUgIkpTV2ViQXNzZW1ibHlFeGNlcHRpb24uaCIKKyNpbmNsdWRl
ICJKU1dlYkFzc2VtYmx5R2xvYmFsLmgiCisjaW5jbHVkZSAiSlNXZWJBc3NlbWJseUluc3RhbmNl
LmgiCisjaW5jbHVkZSAiSlNXZWJBc3NlbWJseU1lbW9yeS5oIgorI2luY2x1ZGUgIkpTV2ViQXNz
ZW1ibHlNb2R1bGUuaCIKKyNpbmNsdWRlICJKU1dlYkFzc2VtYmx5VGFibGUuaCIKKyNpbmNsdWRl
ICJKU1dlYkFzc2VtYmx5VGFnLmgiCisjaW5jbHVkZSAiSlNXaXRoU2NvcGUuaCIKICNpbmNsdWRl
ICJNYWNoaW5lU3RhY2tNYXJrZXIuaCIKICNpbmNsdWRlICJNYXJrU3RhY2tNZXJnaW5nQ29uc3Ry
YWludC5oIgogI2luY2x1ZGUgIk1hcmtlZEpTVmFsdWVSZWZBcnJheS5oIgogI2luY2x1ZGUgIk1h
cmtlZFNwYWNlSW5saW5lcy5oIgogI2luY2x1ZGUgIk1hcmtpbmdDb25zdHJhaW50U2V0LmgiCisj
aW5jbHVkZSAiTmF0aXZlRXhlY3V0YWJsZS5oIgogI2luY2x1ZGUgIlByZXZlbnRDb2xsZWN0aW9u
U2NvcGUuaCIKKyNpbmNsdWRlICJQcm9ncmFtRXhlY3V0YWJsZS5oIgorI2luY2x1ZGUgIlByb3Bl
cnR5VGFibGUuaCIKKyNpbmNsdWRlICJQcm94eVJldm9rZS5oIgorI2luY2x1ZGUgIlJlZ0V4cE9i
amVjdC5oIgogI2luY2x1ZGUgIlNhbXBsaW5nUHJvZmlsZXIuaCIKKyNpbmNsdWRlICJTY29wZWRB
cmd1bWVudHMuaCIKICNpbmNsdWRlICJTaGFkb3dDaGlja2VuLmgiCisjaW5jbHVkZSAiU2hhZG93
UmVhbG1PYmplY3QuaCIKICNpbmNsdWRlICJTcGFjZVRpbWVNdXRhdG9yU2NoZWR1bGVyLmgiCiAj
aW5jbHVkZSAiU3RvY2hhc3RpY1NwYWNlVGltZU11dGF0b3JTY2hlZHVsZXIuaCIKICNpbmNsdWRl
ICJTdG9wSWZOZWNlc3NhcnlUaW1lci5oIgorI2luY2x1ZGUgIlN0cmljdEV2YWxBY3RpdmF0aW9u
LmgiCisjaW5jbHVkZSAiU3RyaW5nT2JqZWN0LmgiCisjaW5jbHVkZSAiU3RydWN0dXJlQ2hhaW4u
aCIKICNpbmNsdWRlICJTdWJzcGFjZUlubGluZXMuaCIKICNpbmNsdWRlICJTdXBlclNhbXBsZXIu
aCIKICNpbmNsdWRlICJTd2VlcGluZ1Njb3BlLmgiCisjaW5jbHVkZSAiU3ltYm9sT2JqZWN0Lmgi
CiAjaW5jbHVkZSAiU3ltYm9sVGFibGVJbmxpbmVzLmgiCiAjaW5jbHVkZSAiU3luY2hyb25vdXNT
dG9wVGhlV29ybGRNdXRhdG9yU2NoZWR1bGVyLmgiCisjaW5jbHVkZSAiVGVtcG9yYWxDYWxlbmRh
ci5oIgorI2luY2x1ZGUgIlRlbXBvcmFsRHVyYXRpb24uaCIKKyNpbmNsdWRlICJUZW1wb3JhbElu
c3RhbnQuaCIKKyNpbmNsdWRlICJUZW1wb3JhbFBsYWluVGltZS5oIgorI2luY2x1ZGUgIlRlbXBv
cmFsVGltZVpvbmUuaCIKICNpbmNsdWRlICJUeXBlUHJvZmlsZXIuaCIKICNpbmNsdWRlICJUeXBl
UHJvZmlsZXJMb2cuaCIKKyNpbmNsdWRlICJVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrLmgiCisj
aW5jbHVkZSAiVW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrLmgiCisjaW5jbHVkZSAiVW5s
aW5rZWRQcm9ncmFtQ29kZUJsb2NrLmgiCiAjaW5jbHVkZSAiVk0uaCIKICNpbmNsdWRlICJWZXJp
ZmllclNsb3RWaXNpdG9ySW5saW5lcy5oIgogI2luY2x1ZGUgIldlYWtNYXBJbXBsSW5saW5lcy5o
IgogI2luY2x1ZGUgIldlYWtTZXRJbmxpbmVzLmgiCisjaW5jbHVkZSAiV2ViQXNzZW1ibHlGdW5j
dGlvbi5oIgorI2luY2x1ZGUgIldlYkFzc2VtYmx5TW9kdWxlUmVjb3JkLmgiCisjaW5jbHVkZSAi
V2ViQXNzZW1ibHlXcmFwcGVyRnVuY3Rpb24uaCIKICNpbmNsdWRlIDxhbGdvcml0aG0+CiAjaW5j
bHVkZSA8d3RmL0NyeXB0b2dyYXBoaWNhbGx5UmFuZG9tTnVtYmVyLmg+CiAjaW5jbHVkZSA8d3Rm
L0xpc3REdW1wLmg+CkBAIC05NCw2ICsxODEsMTAgQEAKICNpbmNsdWRlICJKU0NHTGliV3JhcHBl
ck9iamVjdC5oIgogI2VuZGlmCiAKKyNpZiBKU0NfT0JKQ19BUElfRU5BQkxFRAorI2luY2x1ZGUg
Ik9iakNDYWxsYmFja0Z1bmN0aW9uLmgiCisjZW5kaWYKKwogbmFtZXNwYWNlIEpTQyB7CiAKIG5h
bWVzcGFjZSB7CkBAIC0yODYsNiArMzc3LDExNCBAQCBIZWFwOjpIZWFwKFZNJiB2bSwgSGVhcFR5
cGUgaGVhcFR5cGUpCiAgICAgLCBtX2hlbHBlckNsaWVudCgmaGVhcEhlbHBlclBvb2woKSkKICAg
ICAsIG1fdGhyZWFkTG9jayhCb3g8TG9jaz46OmNyZWF0ZSgpKQogICAgICwgbV90aHJlYWRDb25k
aXRpb24oQXV0b21hdGljVGhyZWFkQ29uZGl0aW9uOjpjcmVhdGUoKSkKKworICAgIC8vIG1sYW0g
SGVhcENlbGxUeXBlcworICAgICwgYXV4aWxpYXJ5SGVhcENlbGxUeXBlKENlbGxBdHRyaWJ1dGVz
KERvZXNOb3ROZWVkRGVzdHJ1Y3Rpb24sIEhlYXBDZWxsOjpBdXhpbGlhcnkpKQorICAgICwgaW1t
dXRhYmxlQnV0dGVyZmx5SGVhcENlbGxUeXBlKENlbGxBdHRyaWJ1dGVzKERvZXNOb3ROZWVkRGVz
dHJ1Y3Rpb24sIEhlYXBDZWxsOjpKU0NlbGxXaXRoSW5kZXhpbmdIZWFkZXIpKQorICAgICwgY2Vs
bEhlYXBDZWxsVHlwZShDZWxsQXR0cmlidXRlcyhEb2VzTm90TmVlZERlc3RydWN0aW9uLCBIZWFw
Q2VsbDo6SlNDZWxsKSkKKyAgICAsIGRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUoQ2VsbEF0
dHJpYnV0ZXMoTmVlZHNEZXN0cnVjdGlvbiwgSGVhcENlbGw6OkpTQ2VsbCkpCisgICAgLCBhcGlH
bG9iYWxPYmplY3RIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpBcmdzPEpTQVBJR2xvYmFs
T2JqZWN0PigpKQorICAgICwgY2FsbGJhY2tDb25zdHJ1Y3RvckhlYXBDZWxsVHlwZShJc29IZWFw
Q2VsbFR5cGU6OkFyZ3M8SlNDYWxsYmFja0NvbnN0cnVjdG9yPigpKQorICAgICwgY2FsbGJhY2tH
bG9iYWxPYmplY3RIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpBcmdzPEpTQ2FsbGJhY2tP
YmplY3Q8SlNHbG9iYWxPYmplY3Q+PigpKQorICAgICwgY2FsbGJhY2tPYmplY3RIZWFwQ2VsbFR5
cGUoSXNvSGVhcENlbGxUeXBlOjpBcmdzPEpTQ2FsbGJhY2tPYmplY3Q8SlNOb25GaW5hbE9iamVj
dD4+KCkpCisgICAgLCBjdXN0b21HZXR0ZXJGdW5jdGlvbkhlYXBDZWxsVHlwZShJc29IZWFwQ2Vs
bFR5cGU6OkFyZ3M8SlNDdXN0b21HZXR0ZXJGdW5jdGlvbj4oKSkKKyAgICAsIGN1c3RvbVNldHRl
ckZ1bmN0aW9uSGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6QXJnczxKU0N1c3RvbVNldHRl
ckZ1bmN0aW9uPigpKQorICAgICwgZGF0ZUluc3RhbmNlSGVhcENlbGxUeXBlKElzb0hlYXBDZWxs
VHlwZTo6QXJnczxEYXRlSW5zdGFuY2U+KCkpCisgICAgLCBlcnJvckluc3RhbmNlSGVhcENlbGxU
eXBlKElzb0hlYXBDZWxsVHlwZTo6QXJnczxFcnJvckluc3RhbmNlPigpKQorICAgICwgZmluYWxp
emF0aW9uUmVnaXN0cnlDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OkFyZ3M8SlNGaW5hbGl6YXRp
b25SZWdpc3RyeT4oKSkKKyAgICAsIGdsb2JhbExleGljYWxFbnZpcm9ubWVudEhlYXBDZWxsVHlw
ZShJc29IZWFwQ2VsbFR5cGU6OkFyZ3M8SlNHbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQ+KCkpCisg
ICAgLCBnbG9iYWxPYmplY3RIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpBcmdzPEpTR2xv
YmFsT2JqZWN0PigpKQorICAgICwgaW5qZWN0ZWRTY3JpcHRIb3N0U3BhY2VIZWFwQ2VsbFR5cGUo
SXNvSGVhcENlbGxUeXBlOjpBcmdzPEluc3BlY3Rvcjo6SlNJbmplY3RlZFNjcmlwdEhvc3Q+KCkp
CisgICAgLCBqYXZhU2NyaXB0Q2FsbEZyYW1lSGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6
QXJnczxJbnNwZWN0b3I6OkpTSmF2YVNjcmlwdENhbGxGcmFtZT4oKSkKKyAgICAsIGpzTW9kdWxl
UmVjb3JkSGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6QXJnczxKU01vZHVsZVJlY29yZD4o
KSkKKyAgICAsIG1vZHVsZU5hbWVzcGFjZU9iamVjdEhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5
cGU6OkFyZ3M8SlNNb2R1bGVOYW1lc3BhY2VPYmplY3Q+KCkpCisgICAgLCBuYXRpdmVTdGRGdW5j
dGlvbkhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OkFyZ3M8SlNOYXRpdmVTdGRGdW5jdGlv
bj4oKSkKKyAgICAsIHdlYWtNYXBIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpBcmdzPEpT
V2Vha01hcD4oKSkKKyAgICAsIHdlYWtTZXRIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpB
cmdzPEpTV2Vha1NldD4oKSkKKyNpZiBKU0NfT0JKQ19BUElfRU5BQkxFRAorICAgICwgYXBpV3Jh
cHBlck9iamVjdEhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OkFyZ3M8SlNDYWxsYmFja09i
amVjdDxKU0FQSVdyYXBwZXJPYmplY3Q+PigpKQorICAgICwgb2JqQ0NhbGxiYWNrRnVuY3Rpb25I
ZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpBcmdzPE9iakNDYWxsYmFja0Z1bmN0aW9uPigp
KQorI2VuZGlmCisjaWZkZWYgSlNDX0dMSUJfQVBJX0VOQUJMRUQKKyAgICAsIGFwaVdyYXBwZXJP
YmplY3RIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpBcmdzPEpTQ2FsbGJhY2tPYmplY3Q8
SlNBUElXcmFwcGVyT2JqZWN0Pj4oKSkKKyAgICAsIGNhbGxiYWNrQVBJV3JhcHBlckdsb2JhbE9i
amVjdEhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OkFyZ3M8SlNDYWxsYmFja09iamVjdDxK
U0FQSVdyYXBwZXJHbG9iYWxPYmplY3Q+PigpKQorICAgICwganNjQ2FsbGJhY2tGdW5jdGlvbkhl
YXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OkFyZ3M8SlNDQ2FsbGJhY2tGdW5jdGlvbj4oKSkK
KyNlbmRpZgorICAgICwgaW50bENvbGxhdG9ySGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6
QXJnczxJbnRsQ29sbGF0b3I+KCkpCisgICAgLCBpbnRsRGF0ZVRpbWVGb3JtYXRIZWFwQ2VsbFR5
cGUoSXNvSGVhcENlbGxUeXBlOjpBcmdzPEludGxEYXRlVGltZUZvcm1hdD4oKSkKKyAgICAsIGlu
dGxEaXNwbGF5TmFtZXNIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpBcmdzPEludGxEaXNw
bGF5TmFtZXM+KCkpCisgICAgLCBpbnRsTGlzdEZvcm1hdEhlYXBDZWxsVHlwZShJc29IZWFwQ2Vs
bFR5cGU6OkFyZ3M8SW50bExpc3RGb3JtYXQ+KCkpCisgICAgLCBpbnRsTG9jYWxlSGVhcENlbGxU
eXBlKElzb0hlYXBDZWxsVHlwZTo6QXJnczxJbnRsTG9jYWxlPigpKQorICAgICwgaW50bE51bWJl
ckZvcm1hdEhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OkFyZ3M8SW50bE51bWJlckZvcm1h
dD4oKSkKKyAgICAsIGludGxQbHVyYWxSdWxlc0hlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6
OkFyZ3M8SW50bFBsdXJhbFJ1bGVzPigpKQorICAgICwgaW50bFJlbGF0aXZlVGltZUZvcm1hdEhl
YXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OkFyZ3M8SW50bFJlbGF0aXZlVGltZUZvcm1hdD4o
KSkKKyAgICAsIGludGxTZWdtZW50SXRlcmF0b3JIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBl
OjpBcmdzPEludGxTZWdtZW50SXRlcmF0b3I+KCkpCisgICAgLCBpbnRsU2VnbWVudGVySGVhcENl
bGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6QXJnczxJbnRsU2VnbWVudGVyPigpKQorICAgICwgaW50
bFNlZ21lbnRzSGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6QXJnczxJbnRsU2VnbWVudHM+
KCkpCisjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQorICAgICwgd2ViQXNzZW1ibHlDb2RlQmxvY2tI
ZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpBcmdzPEpTV2ViQXNzZW1ibHlDb2RlQmxvY2s+
KCkpCisgICAgLCB3ZWJBc3NlbWJseUV4Y2VwdGlvbkhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5
cGU6OkFyZ3M8SlNXZWJBc3NlbWJseUV4Y2VwdGlvbj4oKSkKKyAgICAsIHdlYkFzc2VtYmx5RnVu
Y3Rpb25IZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpBcmdzPFdlYkFzc2VtYmx5RnVuY3Rp
b24+KCkpCisgICAgLCB3ZWJBc3NlbWJseUdsb2JhbEhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5
cGU6OkFyZ3M8SlNXZWJBc3NlbWJseUdsb2JhbD4oKSkKKyAgICAsIHdlYkFzc2VtYmx5SW5zdGFu
Y2VIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpBcmdzPEpTV2ViQXNzZW1ibHlJbnN0YW5j
ZT4oKSkKKyAgICAsIHdlYkFzc2VtYmx5TWVtb3J5SGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlw
ZTo6QXJnczxKU1dlYkFzc2VtYmx5TWVtb3J5PigpKQorICAgICwgd2ViQXNzZW1ibHlNb2R1bGVI
ZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpBcmdzPEpTV2ViQXNzZW1ibHlNb2R1bGU+KCkp
CisgICAgLCB3ZWJBc3NlbWJseU1vZHVsZVJlY29yZEhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5
cGU6OkFyZ3M8V2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQ+KCkpCisgICAgLCB3ZWJBc3NlbWJseVRh
YmxlSGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6QXJnczxKU1dlYkFzc2VtYmx5VGFibGU+
KCkpCisgICAgLCB3ZWJBc3NlbWJseVRhZ0hlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OkFy
Z3M8SlNXZWJBc3NlbWJseVRhZz4oKSkKKyNlbmRpZgorCisgICAgLy8gbWxhbSBBbGlnbmVkTWVt
b3J5QWxsb2NhdG9ycworICAgICwgZmFzdE1hbGxvY0FsbG9jYXRvcihtYWtlVW5pcXVlPEZhc3RN
YWxsb2NBbGlnbmVkTWVtb3J5QWxsb2NhdG9yPigpKQorICAgICwgcHJpbWl0aXZlR2lnYWNhZ2VB
bGxvY2F0b3IobWFrZVVuaXF1ZTxHaWdhY2FnZUFsaWduZWRNZW1vcnlBbGxvY2F0b3I+KEdpZ2Fj
YWdlOjpQcmltaXRpdmUpKQorICAgICwganNWYWx1ZUdpZ2FjYWdlQWxsb2NhdG9yKG1ha2VVbmlx
dWU8R2lnYWNhZ2VBbGlnbmVkTWVtb3J5QWxsb2NhdG9yPihHaWdhY2FnZTo6SlNWYWx1ZSkpCisK
KyAgICAvLyBtbGFtIFN1YnNwYWNlcworICAgICwgcHJpbWl0aXZlR2lnYWNhZ2VBdXhpbGlhcnlT
cGFjZSgiUHJpbWl0aXZlIEdpZ2FjYWdlIEF1eGlsaWFyeSIsICp0aGlzLCBhdXhpbGlhcnlIZWFw
Q2VsbFR5cGUsIHByaW1pdGl2ZUdpZ2FjYWdlQWxsb2NhdG9yLmdldCgpKSAvLyBIYXNoOjB4M2U3
Y2Q3NjIKKyAgICAsIGpzVmFsdWVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlKCJKU1ZhbHVlIEdpZ2Fj
YWdlIEF1eGlsaWFyeSIsICp0aGlzLCBhdXhpbGlhcnlIZWFwQ2VsbFR5cGUsIGpzVmFsdWVHaWdh
Y2FnZUFsbG9jYXRvci5nZXQoKSkgLy8gSGFzaDoweDI0MWU5NDYKKyAgICAsIGltbXV0YWJsZUJ1
dHRlcmZseUpTVmFsdWVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlKCJJbW11dGFibGVCdXR0ZXJmbHkg
R2lnYWNhZ2UgSlNDZWxsV2l0aEluZGV4aW5nSGVhZGVyIiwgKnRoaXMsIGltbXV0YWJsZUJ1dHRl
cmZseUhlYXBDZWxsVHlwZSwganNWYWx1ZUdpZ2FjYWdlQWxsb2NhdG9yLmdldCgpKSAvLyBIYXNo
OjB4N2E5NDUzMDAKKyAgICAsIGNlbGxTcGFjZSgiSlNDZWxsIiwgKnRoaXMsIGNlbGxIZWFwQ2Vs
bFR5cGUsIGZhc3RNYWxsb2NBbGxvY2F0b3IuZ2V0KCkpIC8vIEhhc2g6MHhhZGZiNWE3OQorICAg
ICwgdmFyaWFibGVTaXplZENlbGxTcGFjZSgiVmFyaWFibGUgU2l6ZWQgSlNDZWxsIiwgKnRoaXMs
IGNlbGxIZWFwQ2VsbFR5cGUsIGZhc3RNYWxsb2NBbGxvY2F0b3IuZ2V0KCkpIC8vIEhhc2g6MHhi
Y2Q3NjljYworICAgICwgZGVzdHJ1Y3RpYmxlT2JqZWN0U3BhY2UoIkpTRGVzdHJ1Y3RpYmxlT2Jq
ZWN0IiwgKnRoaXMsIGRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSwgZmFzdE1hbGxvY0Fs
bG9jYXRvci5nZXQoKSkgLy8gSGFzaDoweDRmNWVkN2E5CisgICAgLCBhcnJheVNwYWNlIElTT19T
VUJTUEFDRV9JTklUKCp0aGlzLCBjZWxsSGVhcENlbGxUeXBlLCBKU0FycmF5KQorICAgICwgYmln
SW50U3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoKnRoaXMsIGNlbGxIZWFwQ2VsbFR5cGUsIEpTQmln
SW50KQorICAgICwgY2FsbGVlU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoKnRoaXMsIGNlbGxIZWFw
Q2VsbFR5cGUsIEpTQ2FsbGVlKQorICAgICwgY2xvbmVkQXJndW1lbnRzU3BhY2UgSVNPX1NVQlNQ
QUNFX0lOSVQoKnRoaXMsIGNlbGxIZWFwQ2VsbFR5cGUsIENsb25lZEFyZ3VtZW50cykKKyAgICAs
IGN1c3RvbUdldHRlclNldHRlclNwYWNlIElTT19TVUJTUEFDRV9JTklUKCp0aGlzLCBjZWxsSGVh
cENlbGxUeXBlLCBDdXN0b21HZXR0ZXJTZXR0ZXIpCisgICAgLCBkYXRlSW5zdGFuY2VTcGFjZSBJ
U09fU1VCU1BBQ0VfSU5JVCgqdGhpcywgZGF0ZUluc3RhbmNlSGVhcENlbGxUeXBlLCBEYXRlSW5z
dGFuY2UpCisgICAgLCBkb21BdHRyaWJ1dGVHZXR0ZXJTZXR0ZXJTcGFjZSBJU09fU1VCU1BBQ0Vf
SU5JVCgqdGhpcywgY2VsbEhlYXBDZWxsVHlwZSwgRE9NQXR0cmlidXRlR2V0dGVyU2V0dGVyKQor
ICAgICwgZXhjZXB0aW9uU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoKnRoaXMsIGRlc3RydWN0aWJs
ZUNlbGxIZWFwQ2VsbFR5cGUsIEV4Y2VwdGlvbikKKyAgICAsIGV4ZWN1dGFibGVUb0NvZGVCbG9j
a0VkZ2VTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVCgqdGhpcywgY2VsbEhlYXBDZWxsVHlwZSwgRXhl
Y3V0YWJsZVRvQ29kZUJsb2NrRWRnZSkgLy8gSGFzaDoweDdiNzMwYjIwCisgICAgLCBmdW5jdGlv
blNwYWNlIElTT19TVUJTUEFDRV9JTklUKCp0aGlzLCBjZWxsSGVhcENlbGxUeXBlLCBKU0Z1bmN0
aW9uKSAvLyBIYXNoOjB4ODAwZmNhNzIKKyAgICAsIGdldHRlclNldHRlclNwYWNlIElTT19TVUJT
UEFDRV9JTklUKCp0aGlzLCBjZWxsSGVhcENlbGxUeXBlLCBHZXR0ZXJTZXR0ZXIpCisgICAgLCBn
bG9iYWxMZXhpY2FsRW52aXJvbm1lbnRTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVCgqdGhpcywgZ2xv
YmFsTGV4aWNhbEVudmlyb25tZW50SGVhcENlbGxUeXBlLCBKU0dsb2JhbExleGljYWxFbnZpcm9u
bWVudCkKKyAgICAsIGludGVybmFsRnVuY3Rpb25TcGFjZSBJU09fU1VCU1BBQ0VfSU5JVCgqdGhp
cywgY2VsbEhlYXBDZWxsVHlwZSwgSW50ZXJuYWxGdW5jdGlvbikgLy8gSGFzaDoweGY4NDVjNDY0
CisgICAgLCBqc1Byb3h5U3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoKnRoaXMsIGNlbGxIZWFwQ2Vs
bFR5cGUsIEpTUHJveHkpCisgICAgLCBuYXRpdmVFeGVjdXRhYmxlU3BhY2UgSVNPX1NVQlNQQUNF
X0lOSVQoKnRoaXMsIGRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUsIE5hdGl2ZUV4ZWN1dGFi
bGUpIC8vIEhhc2g6MHg2NzU2N2Y5NQorICAgICwgbnVtYmVyT2JqZWN0U3BhY2UgSVNPX1NVQlNQ
QUNFX0lOSVQoKnRoaXMsIGNlbGxIZWFwQ2VsbFR5cGUsIE51bWJlck9iamVjdCkKKyAgICAsIHBs
YWluT2JqZWN0U3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoKnRoaXMsIGNlbGxIZWFwQ2VsbFR5cGUs
IEpTTm9uRmluYWxPYmplY3QpIC8vIE1haW5seSB1c2VkIGZvciBwcm90b3R5cGVzLgorICAgICwg
cHJvbWlzZVNwYWNlIElTT19TVUJTUEFDRV9JTklUKCp0aGlzLCBjZWxsSGVhcENlbGxUeXBlLCBK
U1Byb21pc2UpCisgICAgLCBwcm9wZXJ0eU5hbWVFbnVtZXJhdG9yU3BhY2UgSVNPX1NVQlNQQUNF
X0lOSVQoKnRoaXMsIGNlbGxIZWFwQ2VsbFR5cGUsIEpTUHJvcGVydHlOYW1lRW51bWVyYXRvcikK
KyAgICAsIHByb3BlcnR5VGFibGVTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVCgqdGhpcywgZGVzdHJ1
Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZSwgUHJvcGVydHlUYWJsZSkgLy8gSGFzaDoweGM2YmM5ZjEy
CisgICAgLCByZWdFeHBTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVCgqdGhpcywgZGVzdHJ1Y3RpYmxl
Q2VsbEhlYXBDZWxsVHlwZSwgUmVnRXhwKQorICAgICwgcmVnRXhwT2JqZWN0U3BhY2UgSVNPX1NV
QlNQQUNFX0lOSVQoKnRoaXMsIGNlbGxIZWFwQ2VsbFR5cGUsIFJlZ0V4cE9iamVjdCkKKyAgICAs
IHJvcGVTdHJpbmdTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVCgqdGhpcywgc3RyaW5nSGVhcENlbGxU
eXBlLCBKU1JvcGVTdHJpbmcpCisgICAgLCBzY29wZWRBcmd1bWVudHNTcGFjZSBJU09fU1VCU1BB
Q0VfSU5JVCgqdGhpcywgY2VsbEhlYXBDZWxsVHlwZSwgU2NvcGVkQXJndW1lbnRzKQorICAgICwg
c3BhcnNlQXJyYXlWYWx1ZU1hcFNwYWNlIElTT19TVUJTUEFDRV9JTklUKCp0aGlzLCBkZXN0cnVj
dGlibGVDZWxsSGVhcENlbGxUeXBlLCBTcGFyc2VBcnJheVZhbHVlTWFwKQorICAgICwgc3RyaW5n
U3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoKnRoaXMsIHN0cmluZ0hlYXBDZWxsVHlwZSwgSlNTdHJp
bmcpIC8vIEhhc2g6MHg5MGNmNzU4ZgorICAgICwgc3RyaW5nT2JqZWN0U3BhY2UgSVNPX1NVQlNQ
QUNFX0lOSVQoKnRoaXMsIGNlbGxIZWFwQ2VsbFR5cGUsIFN0cmluZ09iamVjdCkKKyAgICAsIHN0
cnVjdHVyZUNoYWluU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoKnRoaXMsIGNlbGxIZWFwQ2VsbFR5
cGUsIFN0cnVjdHVyZUNoYWluKQorICAgICwgc3RydWN0dXJlUmFyZURhdGFTcGFjZSBJU09fU1VC
U1BBQ0VfSU5JVCgqdGhpcywgZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZSwgU3RydWN0dXJl
UmFyZURhdGEpIC8vIEhhc2g6MHhhY2E0ZTYyZAorICAgICwgc3RydWN0dXJlU3BhY2UgSVNPX1NV
QlNQQUNFX0lOSVQoKnRoaXMsIGRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUsIFN0cnVjdHVy
ZSkgLy8gSGFzaDoweDFmMWJjZGNhCisgICAgLCBicmFuZGVkU3RydWN0dXJlU3BhY2UgSVNPX1NV
QlNQQUNFX0lOSVQoKnRoaXMsIGRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUsIEJyYW5kZWRT
dHJ1Y3R1cmUpCisgICAgLCBzeW1ib2xUYWJsZVNwYWNlIElTT19TVUJTUEFDRV9JTklUKCp0aGlz
LCBkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlLCBTeW1ib2xUYWJsZSkgLy8gSGFzaDoweGM1
MjE1YWZkCisgICAgLCBleGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlc1dpdGhDb25zdHJhaW50cyhl
eGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlU3BhY2UpCisgICAgLCBleGVjdXRhYmxlVG9Db2RlQmxv
Y2tFZGdlc1dpdGhGaW5hbGl6ZXJzKGV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2VTcGFjZSkKKyAg
ICAsIGNvZGVCbG9ja1NwYWNlIElTT19TVUJTUEFDRV9JTklUKCp0aGlzLCBkZXN0cnVjdGlibGVD
ZWxsSGVhcENlbGxUeXBlLCBDb2RlQmxvY2spIC8vIEhhc2g6MHg3N2U2NmVjOQorICAgICwgZnVu
Y3Rpb25FeGVjdXRhYmxlU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoKnRoaXMsIGRlc3RydWN0aWJs
ZUNlbGxIZWFwQ2VsbFR5cGUsIEZ1bmN0aW9uRXhlY3V0YWJsZSkgLy8gSGFzaDoweDVkMTU4ZjMK
KyAgICAsIHByb2dyYW1FeGVjdXRhYmxlU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoKnRoaXMsIGRl
c3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUsIFByb2dyYW1FeGVjdXRhYmxlKSAvLyBIYXNoOjB4
NTI3Yzc3ZTcKKyAgICAsIHVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlU3BhY2UgSVNPX1NVQlNQ
QUNFX0lOSVQoKnRoaXMsIGRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUsIFVubGlua2VkRnVu
Y3Rpb25FeGVjdXRhYmxlKSAvLyBIYXNoOjB4ZjZiODI4ZDkKKwogewogICAgIG1fd29ybGRTdGF0
ZS5zdG9yZSgwKTsKIApAQCAtNTc5LDMxICs3NzgsMzEgQEAgdm9pZCBIZWFwOjpmaW5hbGl6ZVVu
Y29uZGl0aW9uYWxGaW5hbGl6ZQogewogICAgIFZNJiB2bSA9IHRoaXMtPnZtKCk7CiAgICAgdm0u
YnVpbHRpbkV4ZWN1dGFibGVzKCktPmZpbmFsaXplVW5jb25kaXRpb25hbGx5KCk7Ci0gICAgZmlu
YWxpemVNYXJrZWRVbmNvbmRpdGlvbmFsRmluYWxpemVyczxGdW5jdGlvbkV4ZWN1dGFibGU+KHZt
LmZ1bmN0aW9uRXhlY3V0YWJsZVNwYWNlLnNwYWNlKTsKLSAgICBmaW5hbGl6ZU1hcmtlZFVuY29u
ZGl0aW9uYWxGaW5hbGl6ZXJzPFN5bWJvbFRhYmxlPih2bS5zeW1ib2xUYWJsZVNwYWNlKTsKLSAg
ICBmaW5hbGl6ZU1hcmtlZFVuY29uZGl0aW9uYWxGaW5hbGl6ZXJzPEV4ZWN1dGFibGVUb0NvZGVC
bG9ja0VkZ2U+KHZtLmV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2VzV2l0aEZpbmFsaXplcnMpOyAv
LyBXZSBydW4gdGhpcyBiZWZvcmUgQ29kZUJsb2NrJ3MgdW5jb25kaXRpb25hbCBmaW5hbGl6ZXIg
c2luY2UgQ29kZUJsb2NrIGxvb2tzIGF0IHRoZSBvd25lciBleGVjdXRhYmxlJ3MgaW5zdGFsbGVk
IENvZGVCbG9jayBpbiBpdHMgZmluYWxpemVVbmNvbmRpdGlvbmFsbHkuCi0gICAgdm0uZm9yRWFj
aENvZGVCbG9ja1NwYWNlKAorICAgIGZpbmFsaXplTWFya2VkVW5jb25kaXRpb25hbEZpbmFsaXpl
cnM8RnVuY3Rpb25FeGVjdXRhYmxlPihmdW5jdGlvbkV4ZWN1dGFibGVTcGFjZS5zcGFjZSk7Cisg
ICAgZmluYWxpemVNYXJrZWRVbmNvbmRpdGlvbmFsRmluYWxpemVyczxTeW1ib2xUYWJsZT4oc3lt
Ym9sVGFibGVTcGFjZSk7CisgICAgZmluYWxpemVNYXJrZWRVbmNvbmRpdGlvbmFsRmluYWxpemVy
czxFeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlPihleGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlc1dp
dGhGaW5hbGl6ZXJzKTsgLy8gV2UgcnVuIHRoaXMgYmVmb3JlIENvZGVCbG9jaydzIHVuY29uZGl0
aW9uYWwgZmluYWxpemVyIHNpbmNlIENvZGVCbG9jayBsb29rcyBhdCB0aGUgb3duZXIgZXhlY3V0
YWJsZSdzIGluc3RhbGxlZCBDb2RlQmxvY2sgaW4gaXRzIGZpbmFsaXplVW5jb25kaXRpb25hbGx5
LgorICAgIGZvckVhY2hDb2RlQmxvY2tTcGFjZSgKICAgICAgICAgWyZdIChhdXRvJiBzcGFjZSkg
ewogICAgICAgICAgICAgdGhpcy0+ZmluYWxpemVNYXJrZWRVbmNvbmRpdGlvbmFsRmluYWxpemVy
czxDb2RlQmxvY2s+KHNwYWNlLnNldCk7CiAgICAgICAgIH0pOwotICAgIGZpbmFsaXplTWFya2Vk
VW5jb25kaXRpb25hbEZpbmFsaXplcnM8U3RydWN0dXJlUmFyZURhdGE+KHZtLnN0cnVjdHVyZVJh
cmVEYXRhU3BhY2UpOwotICAgIGZpbmFsaXplTWFya2VkVW5jb25kaXRpb25hbEZpbmFsaXplcnM8
VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU+KHZtLnVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxl
U3BhY2Uuc2V0KTsKLSAgICBpZiAodm0ubV93ZWFrU2V0U3BhY2UpCi0gICAgICAgIGZpbmFsaXpl
TWFya2VkVW5jb25kaXRpb25hbEZpbmFsaXplcnM8SlNXZWFrU2V0Pigqdm0ubV93ZWFrU2V0U3Bh
Y2UpOwotICAgIGlmICh2bS5tX3dlYWtNYXBTcGFjZSkKLSAgICAgICAgZmluYWxpemVNYXJrZWRV
bmNvbmRpdGlvbmFsRmluYWxpemVyczxKU1dlYWtNYXA+KCp2bS5tX3dlYWtNYXBTcGFjZSk7Ci0g
ICAgaWYgKHZtLm1fd2Vha09iamVjdFJlZlNwYWNlKQotICAgICAgICBmaW5hbGl6ZU1hcmtlZFVu
Y29uZGl0aW9uYWxGaW5hbGl6ZXJzPEpTV2Vha09iamVjdFJlZj4oKnZtLm1fd2Vha09iamVjdFJl
ZlNwYWNlKTsKLSAgICBpZiAodm0ubV9lcnJvckluc3RhbmNlU3BhY2UpCi0gICAgICAgIGZpbmFs
aXplTWFya2VkVW5jb25kaXRpb25hbEZpbmFsaXplcnM8RXJyb3JJbnN0YW5jZT4oKnZtLm1fZXJy
b3JJbnN0YW5jZVNwYWNlKTsKKyAgICBmaW5hbGl6ZU1hcmtlZFVuY29uZGl0aW9uYWxGaW5hbGl6
ZXJzPFN0cnVjdHVyZVJhcmVEYXRhPihzdHJ1Y3R1cmVSYXJlRGF0YVNwYWNlKTsKKyAgICBmaW5h
bGl6ZU1hcmtlZFVuY29uZGl0aW9uYWxGaW5hbGl6ZXJzPFVubGlua2VkRnVuY3Rpb25FeGVjdXRh
YmxlPih1bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZVNwYWNlLnNldCk7CisgICAgaWYgKG1fd2Vh
a1NldFNwYWNlKQorICAgICAgICBmaW5hbGl6ZU1hcmtlZFVuY29uZGl0aW9uYWxGaW5hbGl6ZXJz
PEpTV2Vha1NldD4oKm1fd2Vha1NldFNwYWNlKTsKKyAgICBpZiAobV93ZWFrTWFwU3BhY2UpCisg
ICAgICAgIGZpbmFsaXplTWFya2VkVW5jb25kaXRpb25hbEZpbmFsaXplcnM8SlNXZWFrTWFwPigq
bV93ZWFrTWFwU3BhY2UpOworICAgIGlmIChtX3dlYWtPYmplY3RSZWZTcGFjZSkKKyAgICAgICAg
ZmluYWxpemVNYXJrZWRVbmNvbmRpdGlvbmFsRmluYWxpemVyczxKU1dlYWtPYmplY3RSZWY+KCpt
X3dlYWtPYmplY3RSZWZTcGFjZSk7CisgICAgaWYgKG1fZXJyb3JJbnN0YW5jZVNwYWNlKQorICAg
ICAgICBmaW5hbGl6ZU1hcmtlZFVuY29uZGl0aW9uYWxGaW5hbGl6ZXJzPEVycm9ySW5zdGFuY2U+
KCptX2Vycm9ySW5zdGFuY2VTcGFjZSk7CiAKICAgICAvLyBGaW5hbGl6YXRpb25SZWdpc3RyaWVz
IGN1cnJlbnRseSByZWx5IG9uIHNlcmlhbCBmaW5hbGl6YXRpb24gYmVjYXVzZSB0aGV5IGNhbiBw
b3N0IHRhc2tzIHRvIHRoZSBkZWZlcnJlZFdvcmtUaW1lciwgd2hpY2ggbm9ybWFsbHkgZXhwZWN0
cyB0YXNrcyB0byBvbmx5IGJlIHBvc3RlZCBieSB0aGUgQVBJIGxvY2sgaG9sZGVyLgotICAgIGlm
ICh2bS5tX2ZpbmFsaXphdGlvblJlZ2lzdHJ5U3BhY2UpCi0gICAgICAgIGZpbmFsaXplTWFya2Vk
VW5jb25kaXRpb25hbEZpbmFsaXplcnM8SlNGaW5hbGl6YXRpb25SZWdpc3RyeT4oKnZtLm1fZmlu
YWxpemF0aW9uUmVnaXN0cnlTcGFjZSk7CisgICAgaWYgKG1fZmluYWxpemF0aW9uUmVnaXN0cnlT
cGFjZSkKKyAgICAgICAgZmluYWxpemVNYXJrZWRVbmNvbmRpdGlvbmFsRmluYWxpemVyczxKU0Zp
bmFsaXphdGlvblJlZ2lzdHJ5PigqbV9maW5hbGl6YXRpb25SZWdpc3RyeVNwYWNlKTsKIAogI2lm
IEVOQUJMRShXRUJBU1NFTUJMWSkKLSAgICBpZiAodm0ubV93ZWJBc3NlbWJseUNvZGVCbG9ja1Nw
YWNlKQotICAgICAgICBmaW5hbGl6ZU1hcmtlZFVuY29uZGl0aW9uYWxGaW5hbGl6ZXJzPEpTV2Vi
QXNzZW1ibHlDb2RlQmxvY2s+KCp2bS5tX3dlYkFzc2VtYmx5Q29kZUJsb2NrU3BhY2UpOworICAg
IGlmIChtX3dlYkFzc2VtYmx5Q29kZUJsb2NrU3BhY2UpCisgICAgICAgIGZpbmFsaXplTWFya2Vk
VW5jb25kaXRpb25hbEZpbmFsaXplcnM8SlNXZWJBc3NlbWJseUNvZGVCbG9jaz4oKm1fd2ViQXNz
ZW1ibHlDb2RlQmxvY2tTcGFjZSk7CiAjZW5kaWYKIH0KIApAQCAtOTA1LDcgKzExMDQsNyBAQCB2
b2lkIEhlYXA6OmRlbGV0ZUFsbENvZGVCbG9ja3MoRGVsZXRlQWxsCiAKICAgICBjb21wbGV0ZUFs
bEpJVFBsYW5zKCk7CiAKLSAgICB2bS5mb3JFYWNoU2NyaXB0RXhlY3V0YWJsZVNwYWNlKAorICAg
IGZvckVhY2hTY3JpcHRFeGVjdXRhYmxlU3BhY2UoCiAgICAgICAgIFsmXSAoYXV0byYgc3BhY2VB
bmRTZXQpIHsKICAgICAgICAgICAgIEhlYXBJdGVyYXRpb25TY29wZSBoZWFwSXRlcmF0aW9uU2Nv
cGUoKnRoaXMpOwogICAgICAgICAgICAgYXV0byYgc2V0ID0gc3BhY2VBbmRTZXQuc2V0OwpAQCAt
OTI0LDggKzExMjMsOCBAQCB2b2lkIEhlYXA6OmRlbGV0ZUFsbENvZGVCbG9ja3MoRGVsZXRlQWxs
CiAgICAgICAgIC8vIHBvaW50cyBpbnRvIGEgQ29kZUJsb2NrIHRoYXQgY291bGQgYmUgZGVhZC4g
VGhlIElDIHdpbGwgc3RpbGwgc3VjY2VlZCBiZWNhdXNlCiAgICAgICAgIC8vIGl0IHVzZXMgYSBj
YWxsZWUgY2hlY2ssIGJ1dCB0aGVuIGl0IHdpbGwgY2FsbCBpbnRvIGRlYWQgY29kZS4KICAgICAg
ICAgSGVhcEl0ZXJhdGlvblNjb3BlIGhlYXBJdGVyYXRpb25TY29wZSgqdGhpcyk7Ci0gICAgICAg
IGlmICh2bS5tX3dlYkFzc2VtYmx5Q29kZUJsb2NrU3BhY2UpIHsKLSAgICAgICAgICAgIHZtLm1f
d2ViQXNzZW1ibHlDb2RlQmxvY2tTcGFjZS0+Zm9yRWFjaExpdmVDZWxsKFsmXSAoSGVhcENlbGwq
IGNlbGwsIEhlYXBDZWxsOjpLaW5kIGtpbmQpIHsKKyAgICAgICAgaWYgKG1fd2ViQXNzZW1ibHlD
b2RlQmxvY2tTcGFjZSkgeworICAgICAgICAgICAgbV93ZWJBc3NlbWJseUNvZGVCbG9ja1NwYWNl
LT5mb3JFYWNoTGl2ZUNlbGwoWyZdIChIZWFwQ2VsbCogY2VsbCwgSGVhcENlbGw6OktpbmQga2lu
ZCkgewogICAgICAgICAgICAgICAgIEFTU0VSVF9VTlVTRUQoa2luZCwga2luZCA9PSBIZWFwQ2Vs
bDo6SlNDZWxsKTsKICAgICAgICAgICAgICAgICBKU1dlYkFzc2VtYmx5Q29kZUJsb2NrKiBjb2Rl
QmxvY2sgPSBzdGF0aWNfY2FzdDxKU1dlYkFzc2VtYmx5Q29kZUJsb2NrKj4oY2VsbCk7CiAgICAg
ICAgICAgICAgICAgY29kZUJsb2NrLT5jbGVhckpTQ2FsbElDcyh2bSk7CkBAIC05NDYsNyArMTE0
NSw3IEBAIHZvaWQgSGVhcDo6ZGVsZXRlQWxsVW5saW5rZWRDb2RlQmxvY2tzKEQKICAgICBSRUxF
QVNFX0FTU0VSVCghbV9jb2xsZWN0aW9uU2NvcGUpOwogCiAgICAgSGVhcEl0ZXJhdGlvblNjb3Bl
IGhlYXBJdGVyYXRpb25TY29wZSgqdGhpcyk7Ci0gICAgdm0udW5saW5rZWRGdW5jdGlvbkV4ZWN1
dGFibGVTcGFjZS5zZXQuZm9yRWFjaExpdmVDZWxsKAorICAgIHVubGlua2VkRnVuY3Rpb25FeGVj
dXRhYmxlU3BhY2Uuc2V0LmZvckVhY2hMaXZlQ2VsbCgKICAgICAgICAgWyZdIChIZWFwQ2VsbCog
Y2VsbCwgSGVhcENlbGw6OktpbmQpIHsKICAgICAgICAgICAgIFVubGlua2VkRnVuY3Rpb25FeGVj
dXRhYmxlKiBleGVjdXRhYmxlID0gc3RhdGljX2Nhc3Q8VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFi
bGUqPihjZWxsKTsKICAgICAgICAgICAgIGV4ZWN1dGFibGUtPmNsZWFyQ29kZSh2bSk7CkBAIC05
NTUsMTAgKzExNTQsMTAgQEAgdm9pZCBIZWFwOjpkZWxldGVBbGxVbmxpbmtlZENvZGVCbG9ja3Mo
RAogCiB2b2lkIEhlYXA6OmRlbGV0ZVVubWFya2VkQ29tcGlsZWRDb2RlKCkKIHsKLSAgICB2bSgp
LmZvckVhY2hTY3JpcHRFeGVjdXRhYmxlU3BhY2UoW10gKGF1dG8mIHNwYWNlKSB7IHNwYWNlLnNw
YWNlLnN3ZWVwKCk7IH0pOworICAgIGZvckVhY2hTY3JpcHRFeGVjdXRhYmxlU3BhY2UoW10gKGF1
dG8mIHNwYWNlKSB7IHNwYWNlLnNwYWNlLnN3ZWVwMygpOyB9KTsKICAgICAvLyBTd2VlcGluZyBt
dXN0IG9jY3VyIGJlZm9yZSBkZWxldGluZyBzdHVicywgb3RoZXJ3aXNlIHRoZSBzdHVicyBtaWdo
dCBzdGlsbCB0aGluayB0aGV5J3JlIGFsaXZlIGFzIHRoZXkgZ2V0IGRlbGV0ZWQuCiAgICAgLy8g
QW5kIENvZGVCbG9jayBkZXN0cnVjdG9yIGlzIGFzc3VtaW5nIHRoYXQgQ29kZUJsb2NrIGdldHMg
ZGVzdHJveWVkIGJlZm9yZSBVbmxpbmtlZENvZGVCbG9jayBnZXRzIGRlc3Ryb3llZC4KLSAgICB2
bSgpLmZvckVhY2hDb2RlQmxvY2tTcGFjZShbXSAoYXV0byYgc3BhY2UpIHsgc3BhY2Uuc3BhY2Uu
c3dlZXAoKTsgfSk7CisgICAgZm9yRWFjaENvZGVCbG9ja1NwYWNlKFtdIChhdXRvJiBzcGFjZSkg
eyBzcGFjZS5zcGFjZS5zd2VlcDMoKTsgfSk7CiAgICAgbV9qaXRTdHViUm91dGluZXMtPmRlbGV0
ZVVubWFya2VkSmV0dGlzb25lZFN0dWJSb3V0aW5lcygpOwogfQogCkBAIC0yMTAzLDggKzIzMDIs
OCBAQCB2b2lkIEhlYXA6OnN3ZWVwSW5GaW5hbGl6ZSgpCiAgICAgbV9vYmplY3RTcGFjZS5zd2Vl
cFByZWNpc2VBbGxvY2F0aW9ucygpOwogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKICAgICAvLyBX
ZSBob2xkIG9udG8gYSBsb3Qgb2YgbWVtb3J5LCBzbyBpdCBtYWtlcyBhIGxvdCBvZiBzZW5zZSB0
byBiZSBzd2VwdCBlYWdlcmx5LgotICAgIGlmICh2bSgpLm1fd2ViQXNzZW1ibHlNZW1vcnlTcGFj
ZSkKLSAgICAgICAgdm0oKS5tX3dlYkFzc2VtYmx5TWVtb3J5U3BhY2UtPnN3ZWVwKCk7CisgICAg
aWYgKG1fd2ViQXNzZW1ibHlNZW1vcnlTcGFjZSkKKyAgICAgICAgbV93ZWJBc3NlbWJseU1lbW9y
eVNwYWNlLT5zd2VlcDMoKTsKICNlbmRpZgogfQogCkBAIC0yODA1LDcgKzMwMDQsNyBAQCB2b2lk
IEhlYXA6OmFkZENvcmVDb25zdHJhaW50cygpCiAgICAgICAgICJPIiwgIk91dHB1dCIsCiAgICAg
ICAgIE1BS0VfTUFSS0lOR19DT05TVFJBSU5UX0VYRUNVVE9SX1BBSVIoKFtdIChhdXRvJiB2aXNp
dG9yKSB7CiAgICAgICAgICAgICB1c2luZyBWaXNpdG9yID0gZGVjbHR5cGUodmlzaXRvcik7Ci0g
ICAgICAgICAgICBWTSYgdm0gPSB2aXNpdG9yLnZtKCk7CisgICAgICAgICAgICBIZWFwKiBoZWFw
ID0gdmlzaXRvci5oZWFwKCk7CiAKICAgICAgICAgICAgIC8vIFRoZSBgdmlzaXRvcjJgIGFyZ3Vt
ZW50IGlzIHN0cmFuZ2VseSBuYW1lZCBiZWNhdXNlIHRoZSBXaW5DYWlybyBwb3J0CiAgICAgICAg
ICAgICAvLyBnZXRzIGNvbmZ1c2VkICBhbmQgdGhpbmtzIHdlJ3JlIHRyeWluZyB0byBjYXB0dXJl
IHRoZSBvdXRlciB2aXNpdG9yCkBAIC0yODI0LDExICszMDIzLDExIEBAIHZvaWQgSGVhcDo6YWRk
Q29yZUNvbnN0cmFpbnRzKCkKIAogICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIFNldFJv
b3RNYXJrUmVhc29uU2NvcGUgcm9vdFNjb3BlKHZpc2l0b3IsIFJvb3RNYXJrUmVhc29uOjpFeGVj
dXRhYmxlVG9Db2RlQmxvY2tFZGdlcyk7Ci0gICAgICAgICAgICAgICAgYWRkKHZtLmV4ZWN1dGFi
bGVUb0NvZGVCbG9ja0VkZ2VzV2l0aENvbnN0cmFpbnRzKTsKKyAgICAgICAgICAgICAgICBhZGQo
aGVhcC0+ZXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZXNXaXRoQ29uc3RyYWludHMpOwogICAgICAg
ICAgICAgfQotICAgICAgICAgICAgaWYgKHZtLm1fd2Vha01hcFNwYWNlKSB7CisgICAgICAgICAg
ICBpZiAoaGVhcC0+bV93ZWFrTWFwU3BhY2UpIHsKICAgICAgICAgICAgICAgICBTZXRSb290TWFy
a1JlYXNvblNjb3BlIHJvb3RTY29wZSh2aXNpdG9yLCBSb290TWFya1JlYXNvbjo6V2Vha01hcFNw
YWNlKTsKLSAgICAgICAgICAgICAgICBhZGQoKnZtLm1fd2Vha01hcFNwYWNlKTsKKyAgICAgICAg
ICAgICAgICBhZGQoKmhlYXAtPm1fd2Vha01hcFNwYWNlKTsKICAgICAgICAgICAgIH0KICAgICAg
ICAgfSkpLAogICAgICAgICBDb25zdHJhaW50Vm9sYXRpbGl0eTo6R3JleWVkQnlNYXJraW5nLApA
QCAtMzA2Miw0ICszMjYxLDEzNSBAQCB2b2lkIEhlYXA6OnZlcmlmeUdDKCkKICAgICBtX3Zlcmlm
aWVyU2xvdFZpc2l0b3IgPSBudWxscHRyOwogfQogCisjZGVmaW5lIERZTkFNSUNfSVNPX1NVQlNQ
QUNFX0RFRklORV9NRU1CRVJfU0xPVyhuYW1lLCBoZWFwQ2VsbFR5cGUsIHR5cGUpIFwKKyAgICBJ
c29TdWJzcGFjZSogSGVhcDo6bmFtZSMjU2xvdygpIFwKKyAgICB7IFwKKyAgICAgICAgQVNTRVJU
KCFtXyMjbmFtZSk7IFwKKyAgICAgICAgYXV0byBzcGFjZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3Bh
Y2U+IElTT19TVUJTUEFDRV9JTklUKCp0aGlzLCBoZWFwQ2VsbFR5cGUsIHR5cGUpOyBcCisgICAg
ICAgIFdURjo6c3RvcmVTdG9yZUZlbmNlKCk7IFwKKyAgICAgICAgbV8jI25hbWUgPSBXVEZNb3Zl
KHNwYWNlKTsgXAorICAgICAgICByZXR1cm4gbV8jI25hbWUuZ2V0KCk7IFwKKyAgICB9CisKKwor
RFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGFwaUdsb2JhbE9iamVjdFNw
YWNlLCBhcGlHbG9iYWxPYmplY3RIZWFwQ2VsbFR5cGUsIEpTQVBJR2xvYmFsT2JqZWN0KQorRFlO
QU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGFwaVZhbHVlV3JhcHBlclNwYWNl
LCBjZWxsSGVhcENlbGxUeXBlLCBKU0FQSVZhbHVlV3JhcHBlcikKK0RZTkFNSUNfSVNPX1NVQlNQ
QUNFX0RFRklORV9NRU1CRVJfU0xPVyhhcnJheUJ1ZmZlclNwYWNlLCBjZWxsSGVhcENlbGxUeXBl
LCBKU0FycmF5QnVmZmVyKQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9X
KGFycmF5SXRlcmF0b3JTcGFjZSwgY2VsbEhlYXBDZWxsVHlwZSwgSlNBcnJheUl0ZXJhdG9yKQor
RFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGFzeW5jR2VuZXJhdG9yU3Bh
Y2UsIGNlbGxIZWFwQ2VsbFR5cGUsIEpTQXN5bmNHZW5lcmF0b3IpCitEWU5BTUlDX0lTT19TVUJT
UEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coYmlnSW50NjRBcnJheVNwYWNlLCBjZWxsSGVhcENlbGxU
eXBlLCBKU0JpZ0ludDY0QXJyYXkpCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVS
X1NMT1coYmlnSW50T2JqZWN0U3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUsIEJpZ0ludE9iamVjdCkK
K0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhiaWdVaW50NjRBcnJheVNw
YWNlLCBjZWxsSGVhcENlbGxUeXBlLCBKU0JpZ1VpbnQ2NEFycmF5KQorRFlOQU1JQ19JU09fU1VC
U1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGJvb2xlYW5PYmplY3RTcGFjZSwgY2VsbEhlYXBDZWxs
VHlwZSwgQm9vbGVhbk9iamVjdCkKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJf
U0xPVyhib3VuZEZ1bmN0aW9uU3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUsIEpTQm91bmRGdW5jdGlv
bikgLy8gSGFzaDoweGQ3OTE2ZDQxCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVS
X1NMT1coY2FsbGJhY2tDb25zdHJ1Y3RvclNwYWNlLCBjYWxsYmFja0NvbnN0cnVjdG9ySGVhcENl
bGxUeXBlLCBKU0NhbGxiYWNrQ29uc3RydWN0b3IpCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJ
TkVfTUVNQkVSX1NMT1coY2FsbGJhY2tHbG9iYWxPYmplY3RTcGFjZSwgY2FsbGJhY2tHbG9iYWxP
YmplY3RIZWFwQ2VsbFR5cGUsIEpTQ2FsbGJhY2tPYmplY3Q8SlNHbG9iYWxPYmplY3Q+KQorRFlO
QU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGNhbGxiYWNrRnVuY3Rpb25TcGFj
ZSwgY2VsbEhlYXBDZWxsVHlwZSwgSlNDYWxsYmFja0Z1bmN0aW9uKSAvLyBIYXNoOjB4ZTc2NDhl
YmMKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhjYWxsYmFja09iamVj
dFNwYWNlLCBjYWxsYmFja09iamVjdEhlYXBDZWxsVHlwZSwgSlNDYWxsYmFja09iamVjdDxKU05v
bkZpbmFsT2JqZWN0PikKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhj
dXN0b21HZXR0ZXJGdW5jdGlvblNwYWNlLCBjdXN0b21HZXR0ZXJGdW5jdGlvbkhlYXBDZWxsVHlw
ZSwgSlNDdXN0b21HZXR0ZXJGdW5jdGlvbikKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9N
RU1CRVJfU0xPVyhjdXN0b21TZXR0ZXJGdW5jdGlvblNwYWNlLCBjdXN0b21TZXR0ZXJGdW5jdGlv
bkhlYXBDZWxsVHlwZSwgSlNDdXN0b21TZXR0ZXJGdW5jdGlvbikKK0RZTkFNSUNfSVNPX1NVQlNQ
QUNFX0RFRklORV9NRU1CRVJfU0xPVyhkYXRhVmlld1NwYWNlLCBjZWxsSGVhcENlbGxUeXBlLCBK
U0RhdGFWaWV3KQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGRlYnVn
Z2VyU2NvcGVTcGFjZSwgY2VsbEhlYXBDZWxsVHlwZSwgRGVidWdnZXJTY29wZSkKK0RZTkFNSUNf
SVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhlcnJvckluc3RhbmNlU3BhY2UsIGVycm9y
SW5zdGFuY2VIZWFwQ2VsbFR5cGUsIEVycm9ySW5zdGFuY2UpIC8vIEhhc2g6MHgzZjQwZDRhCitE
WU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coZmxvYXQzMkFycmF5U3BhY2Us
IGNlbGxIZWFwQ2VsbFR5cGUsIEpTRmxvYXQzMkFycmF5KQorRFlOQU1JQ19JU09fU1VCU1BBQ0Vf
REVGSU5FX01FTUJFUl9TTE9XKGZsb2F0NjRBcnJheVNwYWNlLCBjZWxsSGVhcENlbGxUeXBlLCBK
U0Zsb2F0NjRBcnJheSkKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhm
dW5jdGlvblJhcmVEYXRhU3BhY2UsIGRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUsIEZ1bmN0
aW9uUmFyZURhdGEpCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coZ2Vu
ZXJhdG9yU3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUsIEpTR2VuZXJhdG9yKQorRFlOQU1JQ19JU09f
U1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGdsb2JhbE9iamVjdFNwYWNlLCBnbG9iYWxPYmpl
Y3RIZWFwQ2VsbFR5cGUsIEpTR2xvYmFsT2JqZWN0KQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVG
SU5FX01FTUJFUl9TTE9XKGluamVjdGVkU2NyaXB0SG9zdFNwYWNlLCBpbmplY3RlZFNjcmlwdEhv
c3RTcGFjZUhlYXBDZWxsVHlwZSwgSW5zcGVjdG9yOjpKU0luamVjdGVkU2NyaXB0SG9zdCkKK0RZ
TkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhpbnQ4QXJyYXlTcGFjZSwgY2Vs
bEhlYXBDZWxsVHlwZSwgSlNJbnQ4QXJyYXkpCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVf
TUVNQkVSX1NMT1coaW50MTZBcnJheVNwYWNlLCBjZWxsSGVhcENlbGxUeXBlLCBKU0ludDE2QXJy
YXkpCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coaW50MzJBcnJheVNw
YWNlLCBjZWxsSGVhcENlbGxUeXBlLCBKU0ludDMyQXJyYXkpCitEWU5BTUlDX0lTT19TVUJTUEFD
RV9ERUZJTkVfTUVNQkVSX1NMT1coamF2YVNjcmlwdENhbGxGcmFtZVNwYWNlLCBqYXZhU2NyaXB0
Q2FsbEZyYW1lSGVhcENlbGxUeXBlLCBJbnNwZWN0b3I6OkpTSmF2YVNjcmlwdENhbGxGcmFtZSkK
K0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhqc01vZHVsZVJlY29yZFNw
YWNlLCBqc01vZHVsZVJlY29yZEhlYXBDZWxsVHlwZSwgSlNNb2R1bGVSZWNvcmQpCitEWU5BTUlD
X0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1cobWFwQnVja2V0U3BhY2UsIGNlbGxIZWFw
Q2VsbFR5cGUsIEpTTWFwOjpCdWNrZXRUeXBlKQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5F
X01FTUJFUl9TTE9XKG1hcEl0ZXJhdG9yU3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUsIEpTTWFwSXRl
cmF0b3IpCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1cobWFwU3BhY2Us
IGNlbGxIZWFwQ2VsbFR5cGUsIEpTTWFwKQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01F
TUJFUl9TTE9XKG1vZHVsZU5hbWVzcGFjZU9iamVjdFNwYWNlLCBtb2R1bGVOYW1lc3BhY2VPYmpl
Y3RIZWFwQ2VsbFR5cGUsIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0KQorRFlOQU1JQ19JU09fU1VC
U1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKG5hdGl2ZVN0ZEZ1bmN0aW9uU3BhY2UsIG5hdGl2ZVN0
ZEZ1bmN0aW9uSGVhcENlbGxUeXBlLCBKU05hdGl2ZVN0ZEZ1bmN0aW9uKSAvLyBIYXNoOjB4NzBl
ZDYxZTQKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhwcm94eU9iamVj
dFNwYWNlLCBjZWxsSGVhcENlbGxUeXBlLCBQcm94eU9iamVjdCkKK0RZTkFNSUNfSVNPX1NVQlNQ
QUNFX0RFRklORV9NRU1CRVJfU0xPVyhwcm94eVJldm9rZVNwYWNlLCBjZWxsSGVhcENlbGxUeXBl
LCBQcm94eVJldm9rZSkgLy8gSGFzaDoweGI1MDZhOTM5CitEWU5BTUlDX0lTT19TVUJTUEFDRV9E
RUZJTkVfTUVNQkVSX1NMT1coc2NvcGVkQXJndW1lbnRzVGFibGVTcGFjZSwgZGVzdHJ1Y3RpYmxl
Q2VsbEhlYXBDZWxsVHlwZSwgU2NvcGVkQXJndW1lbnRzVGFibGUpCitEWU5BTUlDX0lTT19TVUJT
UEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coc2NyaXB0RmV0Y2hQYXJhbWV0ZXJzU3BhY2UsIGRlc3Ry
dWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUsIEpTU2NyaXB0RmV0Y2hQYXJhbWV0ZXJzKQorRFlOQU1J
Q19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHNjcmlwdEZldGNoZXJTcGFjZSwgZGVz
dHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZSwgSlNTY3JpcHRGZXRjaGVyKQorRFlOQU1JQ19JU09f
U1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHNldEJ1Y2tldFNwYWNlLCBjZWxsSGVhcENlbGxU
eXBlLCBKU1NldDo6QnVja2V0VHlwZSkKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1C
RVJfU0xPVyhzZXRJdGVyYXRvclNwYWNlLCBjZWxsSGVhcENlbGxUeXBlLCBKU1NldEl0ZXJhdG9y
KQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHNldFNwYWNlLCBjZWxs
SGVhcENlbGxUeXBlLCBKU1NldCkKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJf
U0xPVyhzaGFkb3dSZWFsbVNwYWNlLCBjZWxsSGVhcENlbGxUeXBlLCBTaGFkb3dSZWFsbU9iamVj
dCkKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhzdHJpY3RFdmFsQWN0
aXZhdGlvblNwYWNlLCBjZWxsSGVhcENlbGxUeXBlLCBTdHJpY3RFdmFsQWN0aXZhdGlvbikKK0RZ
TkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhzdHJpbmdJdGVyYXRvclNwYWNl
LCBjZWxsSGVhcENlbGxUeXBlLCBKU1N0cmluZ0l0ZXJhdG9yKQorRFlOQU1JQ19JU09fU1VCU1BB
Q0VfREVGSU5FX01FTUJFUl9TTE9XKHNvdXJjZUNvZGVTcGFjZSwgZGVzdHJ1Y3RpYmxlQ2VsbEhl
YXBDZWxsVHlwZSwgSlNTb3VyY2VDb2RlKQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01F
TUJFUl9TTE9XKHN5bWJvbFNwYWNlLCBkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlLCBTeW1i
b2wpCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coc3ltYm9sT2JqZWN0
U3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUsIFN5bWJvbE9iamVjdCkKK0RZTkFNSUNfSVNPX1NVQlNQ
QUNFX0RFRklORV9NRU1CRVJfU0xPVyh0ZW1wbGF0ZU9iamVjdERlc2NyaXB0b3JTcGFjZSwgZGVz
dHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZSwgSlNUZW1wbGF0ZU9iamVjdERlc2NyaXB0b3IpCitE
WU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1codGVtcG9yYWxDYWxlbmRhclNw
YWNlLCBjZWxsSGVhcENlbGxUeXBlLCBUZW1wb3JhbENhbGVuZGFyKQorRFlOQU1JQ19JU09fU1VC
U1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHRlbXBvcmFsRHVyYXRpb25TcGFjZSwgY2VsbEhlYXBD
ZWxsVHlwZSwgVGVtcG9yYWxEdXJhdGlvbikKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9N
RU1CRVJfU0xPVyh0ZW1wb3JhbEluc3RhbnRTcGFjZSwgY2VsbEhlYXBDZWxsVHlwZSwgVGVtcG9y
YWxJbnN0YW50KQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHRlbXBv
cmFsUGxhaW5UaW1lU3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUsIFRlbXBvcmFsUGxhaW5UaW1lKQor
RFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHRlbXBvcmFsVGltZVpvbmVT
cGFjZSwgY2VsbEhlYXBDZWxsVHlwZSwgVGVtcG9yYWxUaW1lWm9uZSkKK0RZTkFNSUNfSVNPX1NV
QlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh1aW50OEFycmF5U3BhY2UsIGNlbGxIZWFwQ2VsbFR5
cGUsIEpTVWludDhBcnJheSkKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xP
Vyh1aW50OENsYW1wZWRBcnJheVNwYWNlLCBjZWxsSGVhcENlbGxUeXBlLCBKU1VpbnQ4Q2xhbXBl
ZEFycmF5KQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHVpbnQxNkFy
cmF5U3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUsIEpTVWludDE2QXJyYXkpCitEWU5BTUlDX0lTT19T
VUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1codWludDMyQXJyYXlTcGFjZSwgY2VsbEhlYXBDZWxs
VHlwZSwgSlNVaW50MzJBcnJheSkKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJf
U0xPVyh1bmxpbmtlZEV2YWxDb2RlQmxvY2tTcGFjZSwgZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxs
VHlwZSwgVW5saW5rZWRFdmFsQ29kZUJsb2NrKQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5F
X01FTUJFUl9TTE9XKHVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2tTcGFjZSwgZGVzdHJ1Y3RpYmxl
Q2VsbEhlYXBDZWxsVHlwZSwgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jaykKK0RZTkFNSUNfSVNP
X1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh1bmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxv
Y2tTcGFjZSwgZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZSwgVW5saW5rZWRNb2R1bGVQcm9n
cmFtQ29kZUJsb2NrKQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHVu
bGlua2VkUHJvZ3JhbUNvZGVCbG9ja1NwYWNlLCBkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBl
LCBVbmxpbmtlZFByb2dyYW1Db2RlQmxvY2spCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVf
TUVNQkVSX1NMT1cod2Vha01hcFNwYWNlLCB3ZWFrTWFwSGVhcENlbGxUeXBlLCBKU1dlYWtNYXAp
IC8vIEhhc2g6MHg2NjJiMTJhMworRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9T
TE9XKHdlYWtTZXRTcGFjZSwgd2Vha1NldEhlYXBDZWxsVHlwZSwgSlNXZWFrU2V0KSAvLyBIYXNo
OjB4NGM3ODFiMzAKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh3ZWFr
T2JqZWN0UmVmU3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUsIEpTV2Vha09iamVjdFJlZikgLy8gSGFz
aDoweDhlYzY4ZjFmCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1cod2l0
aFNjb3BlU3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUsIEpTV2l0aFNjb3BlKQorRFlOQU1JQ19JU09f
U1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGZpbmFsaXphdGlvblJlZ2lzdHJ5U3BhY2UsIGZp
bmFsaXphdGlvblJlZ2lzdHJ5Q2VsbFR5cGUsIEpTRmluYWxpemF0aW9uUmVnaXN0cnkpCisjaWYg
SlNDX09CSkNfQVBJX0VOQUJMRUQKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJf
U0xPVyhhcGlXcmFwcGVyT2JqZWN0U3BhY2UsIGFwaVdyYXBwZXJPYmplY3RIZWFwQ2VsbFR5cGUs
IEpTQ2FsbGJhY2tPYmplY3Q8SlNBUElXcmFwcGVyT2JqZWN0PikKK0RZTkFNSUNfSVNPX1NVQlNQ
QUNFX0RFRklORV9NRU1CRVJfU0xPVyhvYmpDQ2FsbGJhY2tGdW5jdGlvblNwYWNlLCBvYmpDQ2Fs
bGJhY2tGdW5jdGlvbkhlYXBDZWxsVHlwZSwgT2JqQ0NhbGxiYWNrRnVuY3Rpb24pIC8vIEhhc2g6
MHgxMGY2MTBiOAorI2VuZGlmCisjaWZkZWYgSlNDX0dMSUJfQVBJX0VOQUJMRUQKK0RZTkFNSUNf
SVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhhcGlXcmFwcGVyT2JqZWN0U3BhY2UsIGFw
aVdyYXBwZXJPYmplY3RIZWFwQ2VsbFR5cGUsIEpTQ2FsbGJhY2tPYmplY3Q8SlNBUElXcmFwcGVy
T2JqZWN0PikKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhqc2NDYWxs
YmFja0Z1bmN0aW9uU3BhY2UsIGpzY0NhbGxiYWNrRnVuY3Rpb25IZWFwQ2VsbFR5cGUsIEpTQ0Nh
bGxiYWNrRnVuY3Rpb24pCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1co
Y2FsbGJhY2tBUElXcmFwcGVyR2xvYmFsT2JqZWN0U3BhY2UsIGNhbGxiYWNrQVBJV3JhcHBlckds
b2JhbE9iamVjdEhlYXBDZWxsVHlwZSwgSlNDYWxsYmFja09iamVjdDxKU0FQSVdyYXBwZXJHbG9i
YWxPYmplY3Q+KQorI2VuZGlmCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NM
T1coaW50bENvbGxhdG9yU3BhY2UsIGludGxDb2xsYXRvckhlYXBDZWxsVHlwZSwgSW50bENvbGxh
dG9yKQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGludGxEYXRlVGlt
ZUZvcm1hdFNwYWNlLCBpbnRsRGF0ZVRpbWVGb3JtYXRIZWFwQ2VsbFR5cGUsIEludGxEYXRlVGlt
ZUZvcm1hdCkKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhpbnRsRGlz
cGxheU5hbWVzU3BhY2UsIGludGxEaXNwbGF5TmFtZXNIZWFwQ2VsbFR5cGUsIEludGxEaXNwbGF5
TmFtZXMpCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coaW50bExpc3RG
b3JtYXRTcGFjZSwgaW50bExpc3RGb3JtYXRIZWFwQ2VsbFR5cGUsIEludGxMaXN0Rm9ybWF0KQor
RFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGludGxMb2NhbGVTcGFjZSwg
aW50bExvY2FsZUhlYXBDZWxsVHlwZSwgSW50bExvY2FsZSkKK0RZTkFNSUNfSVNPX1NVQlNQQUNF
X0RFRklORV9NRU1CRVJfU0xPVyhpbnRsTnVtYmVyRm9ybWF0U3BhY2UsIGludGxOdW1iZXJGb3Jt
YXRIZWFwQ2VsbFR5cGUsIEludGxOdW1iZXJGb3JtYXQpCitEWU5BTUlDX0lTT19TVUJTUEFDRV9E
RUZJTkVfTUVNQkVSX1NMT1coaW50bFBsdXJhbFJ1bGVzU3BhY2UsIGludGxQbHVyYWxSdWxlc0hl
YXBDZWxsVHlwZSwgSW50bFBsdXJhbFJ1bGVzKQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5F
X01FTUJFUl9TTE9XKGludGxSZWxhdGl2ZVRpbWVGb3JtYXRTcGFjZSwgaW50bFJlbGF0aXZlVGlt
ZUZvcm1hdEhlYXBDZWxsVHlwZSwgSW50bFJlbGF0aXZlVGltZUZvcm1hdCkKK0RZTkFNSUNfSVNP
X1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhpbnRsU2VnbWVudEl0ZXJhdG9yU3BhY2UsIGlu
dGxTZWdtZW50SXRlcmF0b3JIZWFwQ2VsbFR5cGUsIEludGxTZWdtZW50SXRlcmF0b3IpCitEWU5B
TUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coaW50bFNlZ21lbnRlclNwYWNlLCBp
bnRsU2VnbWVudGVySGVhcENlbGxUeXBlLCBJbnRsU2VnbWVudGVyKQorRFlOQU1JQ19JU09fU1VC
U1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGludGxTZWdtZW50c1NwYWNlLCBpbnRsU2VnbWVudHNI
ZWFwQ2VsbFR5cGUsIEludGxTZWdtZW50cykKKyNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCitEWU5B
TUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coanNUb1dhc21JQ0NhbGxlZVNwYWNl
LCBjZWxsSGVhcENlbGxUeXBlLCBKU1RvV2FzbUlDQ2FsbGVlKQorRFlOQU1JQ19JU09fU1VCU1BB
Q0VfREVGSU5FX01FTUJFUl9TTE9XKHdlYkFzc2VtYmx5Q29kZUJsb2NrU3BhY2UsIHdlYkFzc2Vt
Ymx5Q29kZUJsb2NrSGVhcENlbGxUeXBlLCBKU1dlYkFzc2VtYmx5Q29kZUJsb2NrKSAvLyBIYXNo
OjB4OWFkOTk1Y2QKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh3ZWJB
c3NlbWJseUV4Y2VwdGlvblNwYWNlLCB3ZWJBc3NlbWJseUV4Y2VwdGlvbkhlYXBDZWxsVHlwZSwg
SlNXZWJBc3NlbWJseUV4Y2VwdGlvbikKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1C
RVJfU0xPVyh3ZWJBc3NlbWJseUZ1bmN0aW9uU3BhY2UsIHdlYkFzc2VtYmx5RnVuY3Rpb25IZWFw
Q2VsbFR5cGUsIFdlYkFzc2VtYmx5RnVuY3Rpb24pIC8vIEhhc2g6MHg4YjdjMzJkYgorRFlOQU1J
Q19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHdlYkFzc2VtYmx5R2xvYmFsU3BhY2Us
IHdlYkFzc2VtYmx5R2xvYmFsSGVhcENlbGxUeXBlLCBKU1dlYkFzc2VtYmx5R2xvYmFsKQorRFlO
QU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHdlYkFzc2VtYmx5SW5zdGFuY2VT
cGFjZSwgd2ViQXNzZW1ibHlJbnN0YW5jZUhlYXBDZWxsVHlwZSwgSlNXZWJBc3NlbWJseUluc3Rh
bmNlKQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHdlYkFzc2VtYmx5
TWVtb3J5U3BhY2UsIHdlYkFzc2VtYmx5TWVtb3J5SGVhcENlbGxUeXBlLCBKU1dlYkFzc2VtYmx5
TWVtb3J5KQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHdlYkFzc2Vt
Ymx5TW9kdWxlU3BhY2UsIHdlYkFzc2VtYmx5TW9kdWxlSGVhcENlbGxUeXBlLCBKU1dlYkFzc2Vt
Ymx5TW9kdWxlKQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHdlYkFz
c2VtYmx5TW9kdWxlUmVjb3JkU3BhY2UsIHdlYkFzc2VtYmx5TW9kdWxlUmVjb3JkSGVhcENlbGxU
eXBlLCBXZWJBc3NlbWJseU1vZHVsZVJlY29yZCkKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklO
RV9NRU1CRVJfU0xPVyh3ZWJBc3NlbWJseVRhYmxlU3BhY2UsIHdlYkFzc2VtYmx5VGFibGVIZWFw
Q2VsbFR5cGUsIEpTV2ViQXNzZW1ibHlUYWJsZSkKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklO
RV9NRU1CRVJfU0xPVyh3ZWJBc3NlbWJseVRhZ1NwYWNlLCB3ZWJBc3NlbWJseVRhZ0hlYXBDZWxs
VHlwZSwgSlNXZWJBc3NlbWJseVRhZykKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1C
RVJfU0xPVyh3ZWJBc3NlbWJseVdyYXBwZXJGdW5jdGlvblNwYWNlLCBjZWxsSGVhcENlbGxUeXBl
LCBXZWJBc3NlbWJseVdyYXBwZXJGdW5jdGlvbikgLy8gSGFzaDoweGQ0YTVmZjAxCisjZW5kaWYK
KworI3VuZGVmIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVworCisjZGVm
aW5lIERZTkFNSUNfU1BBQ0VfQU5EX1NFVF9ERUZJTkVfTUVNQkVSX1NMT1cobmFtZSwgaGVhcENl
bGxUeXBlLCB0eXBlKSBcCisgICAgSXNvU3Vic3BhY2UqIEhlYXA6Om5hbWUjI1Nsb3coKSBcCisg
ICAgeyBcCisgICAgICAgIEFTU0VSVCghbV8jI25hbWUpOyBcCisgICAgICAgIGF1dG8gc3BhY2Ug
PSBtYWtlVW5pcXVlPFNwYWNlQW5kU2V0PiBJU09fU1VCU1BBQ0VfSU5JVCgqdGhpcywgaGVhcENl
bGxUeXBlLCB0eXBlKTsgXAorICAgICAgICBXVEY6OnN0b3JlU3RvcmVGZW5jZSgpOyBcCisgICAg
ICAgIG1fIyNuYW1lID0gV1RGTW92ZShzcGFjZSk7IFwKKyAgICAgICAgcmV0dXJuICZtXyMjbmFt
ZS0+c3BhY2U7IFwKKyAgICB9CisKK0RZTkFNSUNfU1BBQ0VfQU5EX1NFVF9ERUZJTkVfTUVNQkVS
X1NMT1coZXZhbEV4ZWN1dGFibGVTcGFjZSwgZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZSwg
RXZhbEV4ZWN1dGFibGUpIC8vIEhhc2g6MHg5NThlM2U5ZAorRFlOQU1JQ19TUEFDRV9BTkRfU0VU
X0RFRklORV9NRU1CRVJfU0xPVyhtb2R1bGVQcm9ncmFtRXhlY3V0YWJsZVNwYWNlLCBkZXN0cnVj
dGlibGVDZWxsSGVhcENlbGxUeXBlLCBNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZSkgLy8gSGFzaDow
eDY1MDZmYTNjCisKKyN1bmRlZiBEWU5BTUlDX1NQQUNFX0FORF9TRVRfREVGSU5FX01FTUJFUl9T
TE9XCisKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvSGVhcC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAu
aAkocmV2aXNpb24gMjg2MDI0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5o
CSh3b3JraW5nIGNvcHkpCkBAIC0yNSw2ICsyNSw3IEBACiAjaW5jbHVkZSAiQ2VsbFN0YXRlLmgi
CiAjaW5jbHVkZSAiQ29sbGVjdGlvblNjb3BlLmgiCiAjaW5jbHVkZSAiQ29sbGVjdG9yUGhhc2Uu
aCIKKyNpbmNsdWRlICJDb21wbGV0ZVN1YnNwYWNlLmgiCiAjaW5jbHVkZSAiRGVsZXRlQWxsQ29k
ZUVmZm9ydC5oIgogI2luY2x1ZGUgIkdDQ29uZHVjdG9yLmgiCiAjaW5jbHVkZSAiR0NJbmNvbWlu
Z1JlZkNvdW50ZWRTZXQuaCIKQEAgLTMzLDYgKzM0LDExIEBACiAjaW5jbHVkZSAiSGFuZGxlU2V0
LmgiCiAjaW5jbHVkZSAiSGVhcEZpbmFsaXplckNhbGxiYWNrLmgiCiAjaW5jbHVkZSAiSGVhcE9i
c2VydmVyLmgiCisjaW5jbHVkZSAiSXNvQ2VsbFNldC5oIgorI2luY2x1ZGUgIklzb0hlYXBDZWxs
VHlwZS5oIgorI2luY2x1ZGUgIklzb0lubGluZWRIZWFwQ2VsbFR5cGUuaCIKKyNpbmNsdWRlICJJ
c29TdWJzcGFjZS5oIgorI2luY2x1ZGUgIkpTRGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBl
LmgiCiAjaW5jbHVkZSAiTWFya2VkQmxvY2suaCIKICNpbmNsdWRlICJNYXJrZWRTcGFjZS5oIgog
I2luY2x1ZGUgIk11dGF0b3JTdGF0ZS5oIgpAQCAtNTgsOSArNjQsMTEgQEAgY2xhc3MgQ29sbGVj
dGluZ1Njb3BlOwogY2xhc3MgQ29uc2VydmF0aXZlUm9vdHM7CiBjbGFzcyBHQ0RlZmVycmFsQ29u
dGV4dDsKIGNsYXNzIEVkZW5HQ0FjdGl2aXR5Q2FsbGJhY2s7CitjbGFzcyBGYXN0TWFsbG9jQWxp
Z25lZE1lbW9yeUFsbG9jYXRvcjsKIGNsYXNzIEZ1bGxHQ0FjdGl2aXR5Q2FsbGJhY2s7CiBjbGFz
cyBHQ0FjdGl2aXR5Q2FsbGJhY2s7CiBjbGFzcyBHQ0F3YXJlSklUU3R1YlJvdXRpbmU7CitjbGFz
cyBHaWdhY2FnZUFsaWduZWRNZW1vcnlBbGxvY2F0b3I7CiBjbGFzcyBIZWFwOwogY2xhc3MgSGVh
cFByb2ZpbGVyOwogY2xhc3MgSGVhcFZlcmlmaWVyOwpAQCAtNjksNiArNzcsNyBAQCBjbGFzcyBK
SVRTdHViUm91dGluZTsKIGNsYXNzIEpJVFN0dWJSb3V0aW5lU2V0OwogY2xhc3MgSlNDZWxsOwog
Y2xhc3MgSlNJbW11dGFibGVCdXR0ZXJmbHk7CitjbGFzcyBKU1N0cmluZzsKIGNsYXNzIEpTVmFs
dWU7CiBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiBjbGFzcyBNYWNoaW5lVGhyZWFkczsK
QEAgLTcyOSw2ICs3MzgsMzE4IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX3BhcmFsbGVsTWFya2Vy
c1Nob3VsZEV4aXQgeyBmYWxzZSB9OwogICAgIExvY2sgbV9jb2xsZWN0Q29udGludW91c2x5TG9j
azsKICAgICBDb25kaXRpb24gbV9jb2xsZWN0Q29udGludW91c2x5Q29uZGl0aW9uOworCitwdWJs
aWM6CisgICAgLy8gSGVhcENlbGxUeXBlcworICAgIEhlYXBDZWxsVHlwZSBhdXhpbGlhcnlIZWFw
Q2VsbFR5cGU7CisgICAgSGVhcENlbGxUeXBlIGltbXV0YWJsZUJ1dHRlcmZseUhlYXBDZWxsVHlw
ZTsKKyAgICBIZWFwQ2VsbFR5cGUgY2VsbEhlYXBDZWxsVHlwZTsKKyAgICBIZWFwQ2VsbFR5cGUg
ZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZTsKKyAgICBJc29IZWFwQ2VsbFR5cGUgYXBpR2xv
YmFsT2JqZWN0SGVhcENlbGxUeXBlOworICAgIElzb0hlYXBDZWxsVHlwZSBjYWxsYmFja0NvbnN0
cnVjdG9ySGVhcENlbGxUeXBlOworICAgIElzb0hlYXBDZWxsVHlwZSBjYWxsYmFja0dsb2JhbE9i
amVjdEhlYXBDZWxsVHlwZTsKKyAgICBJc29IZWFwQ2VsbFR5cGUgY2FsbGJhY2tPYmplY3RIZWFw
Q2VsbFR5cGU7CisgICAgSXNvSGVhcENlbGxUeXBlIGN1c3RvbUdldHRlckZ1bmN0aW9uSGVhcENl
bGxUeXBlOworICAgIElzb0hlYXBDZWxsVHlwZSBjdXN0b21TZXR0ZXJGdW5jdGlvbkhlYXBDZWxs
VHlwZTsKKyAgICBJc29IZWFwQ2VsbFR5cGUgZGF0ZUluc3RhbmNlSGVhcENlbGxUeXBlOworICAg
IElzb0hlYXBDZWxsVHlwZSBlcnJvckluc3RhbmNlSGVhcENlbGxUeXBlOworICAgIElzb0hlYXBD
ZWxsVHlwZSBmaW5hbGl6YXRpb25SZWdpc3RyeUNlbGxUeXBlOworICAgIElzb0hlYXBDZWxsVHlw
ZSBnbG9iYWxMZXhpY2FsRW52aXJvbm1lbnRIZWFwQ2VsbFR5cGU7CisgICAgSXNvSGVhcENlbGxU
eXBlIGdsb2JhbE9iamVjdEhlYXBDZWxsVHlwZTsKKyAgICBJc29IZWFwQ2VsbFR5cGUgaW5qZWN0
ZWRTY3JpcHRIb3N0U3BhY2VIZWFwQ2VsbFR5cGU7CisgICAgSXNvSGVhcENlbGxUeXBlIGphdmFT
Y3JpcHRDYWxsRnJhbWVIZWFwQ2VsbFR5cGU7CisgICAgSXNvSGVhcENlbGxUeXBlIGpzTW9kdWxl
UmVjb3JkSGVhcENlbGxUeXBlOworICAgIElzb0hlYXBDZWxsVHlwZSBtb2R1bGVOYW1lc3BhY2VP
YmplY3RIZWFwQ2VsbFR5cGU7CisgICAgSXNvSGVhcENlbGxUeXBlIG5hdGl2ZVN0ZEZ1bmN0aW9u
SGVhcENlbGxUeXBlOworICAgIElzb0lubGluZWRIZWFwQ2VsbFR5cGU8SlNTdHJpbmc+IHN0cmlu
Z0hlYXBDZWxsVHlwZTsKKyAgICBJc29IZWFwQ2VsbFR5cGUgd2Vha01hcEhlYXBDZWxsVHlwZTsK
KyAgICBJc29IZWFwQ2VsbFR5cGUgd2Vha1NldEhlYXBDZWxsVHlwZTsKKyAgICBKU0Rlc3RydWN0
aWJsZU9iamVjdEhlYXBDZWxsVHlwZSBkZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGU7Cisj
aWYgSlNDX09CSkNfQVBJX0VOQUJMRUQKKyAgICBJc29IZWFwQ2VsbFR5cGUgYXBpV3JhcHBlck9i
amVjdEhlYXBDZWxsVHlwZTsKKyAgICBJc29IZWFwQ2VsbFR5cGUgb2JqQ0NhbGxiYWNrRnVuY3Rp
b25IZWFwQ2VsbFR5cGU7CisjZW5kaWYKKyNpZmRlZiBKU0NfR0xJQl9BUElfRU5BQkxFRAorICAg
IElzb0hlYXBDZWxsVHlwZSBhcGlXcmFwcGVyT2JqZWN0SGVhcENlbGxUeXBlOworICAgIElzb0hl
YXBDZWxsVHlwZSBjYWxsYmFja0FQSVdyYXBwZXJHbG9iYWxPYmplY3RIZWFwQ2VsbFR5cGU7Cisg
ICAgSXNvSGVhcENlbGxUeXBlIGpzY0NhbGxiYWNrRnVuY3Rpb25IZWFwQ2VsbFR5cGU7CisjZW5k
aWYKKyAgICBJc29IZWFwQ2VsbFR5cGUgaW50bENvbGxhdG9ySGVhcENlbGxUeXBlOworICAgIElz
b0hlYXBDZWxsVHlwZSBpbnRsRGF0ZVRpbWVGb3JtYXRIZWFwQ2VsbFR5cGU7CisgICAgSXNvSGVh
cENlbGxUeXBlIGludGxEaXNwbGF5TmFtZXNIZWFwQ2VsbFR5cGU7CisgICAgSXNvSGVhcENlbGxU
eXBlIGludGxMaXN0Rm9ybWF0SGVhcENlbGxUeXBlOworICAgIElzb0hlYXBDZWxsVHlwZSBpbnRs
TG9jYWxlSGVhcENlbGxUeXBlOworICAgIElzb0hlYXBDZWxsVHlwZSBpbnRsTnVtYmVyRm9ybWF0
SGVhcENlbGxUeXBlOworICAgIElzb0hlYXBDZWxsVHlwZSBpbnRsUGx1cmFsUnVsZXNIZWFwQ2Vs
bFR5cGU7CisgICAgSXNvSGVhcENlbGxUeXBlIGludGxSZWxhdGl2ZVRpbWVGb3JtYXRIZWFwQ2Vs
bFR5cGU7CisgICAgSXNvSGVhcENlbGxUeXBlIGludGxTZWdtZW50SXRlcmF0b3JIZWFwQ2VsbFR5
cGU7CisgICAgSXNvSGVhcENlbGxUeXBlIGludGxTZWdtZW50ZXJIZWFwQ2VsbFR5cGU7CisgICAg
SXNvSGVhcENlbGxUeXBlIGludGxTZWdtZW50c0hlYXBDZWxsVHlwZTsKKyNpZiBFTkFCTEUoV0VC
QVNTRU1CTFkpCisgICAgSXNvSGVhcENlbGxUeXBlIHdlYkFzc2VtYmx5Q29kZUJsb2NrSGVhcENl
bGxUeXBlOworICAgIElzb0hlYXBDZWxsVHlwZSB3ZWJBc3NlbWJseUV4Y2VwdGlvbkhlYXBDZWxs
VHlwZTsKKyAgICBJc29IZWFwQ2VsbFR5cGUgd2ViQXNzZW1ibHlGdW5jdGlvbkhlYXBDZWxsVHlw
ZTsKKyAgICBJc29IZWFwQ2VsbFR5cGUgd2ViQXNzZW1ibHlHbG9iYWxIZWFwQ2VsbFR5cGU7Cisg
ICAgSXNvSGVhcENlbGxUeXBlIHdlYkFzc2VtYmx5SW5zdGFuY2VIZWFwQ2VsbFR5cGU7CisgICAg
SXNvSGVhcENlbGxUeXBlIHdlYkFzc2VtYmx5TWVtb3J5SGVhcENlbGxUeXBlOworICAgIElzb0hl
YXBDZWxsVHlwZSB3ZWJBc3NlbWJseU1vZHVsZUhlYXBDZWxsVHlwZTsKKyAgICBJc29IZWFwQ2Vs
bFR5cGUgd2ViQXNzZW1ibHlNb2R1bGVSZWNvcmRIZWFwQ2VsbFR5cGU7CisgICAgSXNvSGVhcENl
bGxUeXBlIHdlYkFzc2VtYmx5VGFibGVIZWFwQ2VsbFR5cGU7CisgICAgSXNvSGVhcENlbGxUeXBl
IHdlYkFzc2VtYmx5VGFnSGVhcENlbGxUeXBlOworI2VuZGlmCisKKyAgICAvLyBBbGlnbmVkTWVt
b3J5QWxsb2NhdG9ycworICAgIHN0ZDo6dW5pcXVlX3B0cjxGYXN0TWFsbG9jQWxpZ25lZE1lbW9y
eUFsbG9jYXRvcj4gZmFzdE1hbGxvY0FsbG9jYXRvcjsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8R2ln
YWNhZ2VBbGlnbmVkTWVtb3J5QWxsb2NhdG9yPiBwcmltaXRpdmVHaWdhY2FnZUFsbG9jYXRvcjsK
KyAgICBzdGQ6OnVuaXF1ZV9wdHI8R2lnYWNhZ2VBbGlnbmVkTWVtb3J5QWxsb2NhdG9yPiBqc1Zh
bHVlR2lnYWNhZ2VBbGxvY2F0b3I7CisKKyAgICAvLyBTdWJzcGFjZXMKKyAgICBDb21wbGV0ZVN1
YnNwYWNlIHByaW1pdGl2ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2U7IC8vIFR5cGVkIGFycmF5cywg
c3RyaW5ncywgYml0dmVjdG9ycywgZXRjIGdvIGhlcmUuCisgICAgQ29tcGxldGVTdWJzcGFjZSBq
c1ZhbHVlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZTsgLy8gQnV0dGVyZmxpZXMsIGFycmF5cyBvZiBK
U1ZhbHVlcywgZXRjIGdvIGhlcmUuCisgICAgQ29tcGxldGVTdWJzcGFjZSBpbW11dGFibGVCdXR0
ZXJmbHlKU1ZhbHVlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZTsgLy8gSlNJbW11dGFibGVCdXR0ZXJm
bHkgZ29lcyBoZXJlLgorCisgICAgLy8gV2UgbWFrZSBjcm9zcy1jdXR0aW5nIGFzc3VtcHRpb25z
IGFib3V0IHR5cGVkIGFycmF5cyBiZWluZyBpbiB0aGUgcHJpbWl0aXZlIEdpZ2FjYWdlIGFuZCBi
dXR0ZXJmbGllcworICAgIC8vIGJlaW5nIGluIHRoZSBKU1ZhbHVlIGdpZ2FjYWdlLiBGb3Igc29t
ZSB0eXBlcywgaXQncyBzdXBlciBvYnZpb3VzIHdoZXJlIHRoZXkgc2hvdWxkIGdvLCBhbmQgc28g
d2UKKyAgICAvLyBjYW4gaGFyZGNvZGUgdGhhdCBmYWN0LiBCdXQgc29tZXRpbWVzIGl0J3Mgbm90
IGNsZWFyLCBzbyB3ZSBhYnN0cmFjdCBpdCBieSBoYXZpbmcgYSBHaWdhY2FnZTo6S2luZAorICAg
IC8vIGNvbnN0YW50IHNvbWV3aGVyZS4KKyAgICAvLyBGSVhNRTogTWF5YmUgaXQgd291bGQgYmUg
YmV0dGVyIGlmIGV2ZXJ5b25lIGFic3RyYWN0ZWQgdGhpcz8KKyAgICAvLyBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc1MjQ4CisgICAgQUxXQVlTX0lOTElORSBDb21w
bGV0ZVN1YnNwYWNlJiBnaWdhY2FnZUF1eGlsaWFyeVNwYWNlKEdpZ2FjYWdlOjpLaW5kIGtpbmQp
CisgICAgeworICAgICAgICBzd2l0Y2ggKGtpbmQpIHsKKyAgICAgICAgY2FzZSBHaWdhY2FnZTo6
UHJpbWl0aXZlOgorICAgICAgICAgICAgcmV0dXJuIHByaW1pdGl2ZUdpZ2FjYWdlQXV4aWxpYXJ5
U3BhY2U7CisgICAgICAgIGNhc2UgR2lnYWNhZ2U6OkpTVmFsdWU6CisgICAgICAgICAgICByZXR1
cm4ganNWYWx1ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2U7CisgICAgICAgIGNhc2UgR2lnYWNhZ2U6
Ok51bWJlck9mS2luZHM6CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBS
RUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gcHJpbWl0aXZlR2ln
YWNhZ2VBdXhpbGlhcnlTcGFjZTsKKyAgICB9CisgICAgCisgICAgLy8gV2hlbmV2ZXIgcG9zc2li
bGUsIHVzZSBzdWJzcGFjZUZvcjxDZWxsVHlwZT4odm0pIHRvIGdldCBvbmUgb2YgdGhlc2Ugc3Vi
c3BhY2VzLgorICAgIENvbXBsZXRlU3Vic3BhY2UgY2VsbFNwYWNlOworICAgIENvbXBsZXRlU3Vi
c3BhY2UgdmFyaWFibGVTaXplZENlbGxTcGFjZTsgLy8gRklYTUU6IFRoaXMgc3BhY2UgaXMgcHJv
YmxlbWF0aWMgYmVjYXVzZSB3ZSBoYXZlIHRoaW5ncyBpbiBoZXJlIGxpa2UgRGlyZWN0QXJndW1l
bnRzIGFuZCBTY29wZWRBcmd1bWVudHM7IHRob3NlIHNob3VsZCBiZSBzcGxpdCBpbnRvIEpTVmFs
dWVPT0IgY2VsbHMgYW5kIEpTVmFsdWVTdHJpY3QgYXV4aWxpYXJpZXMuIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODI4NTgKKyAgICBDb21wbGV0ZVN1YnNwYWNlIGRl
c3RydWN0aWJsZU9iamVjdFNwYWNlOworCisgICAgSXNvU3Vic3BhY2UgYXJyYXlTcGFjZTsKKyAg
ICBJc29TdWJzcGFjZSBiaWdJbnRTcGFjZTsKKyAgICBJc29TdWJzcGFjZSBjYWxsZWVTcGFjZTsK
KyAgICBJc29TdWJzcGFjZSBjbG9uZWRBcmd1bWVudHNTcGFjZTsKKyAgICBJc29TdWJzcGFjZSBj
dXN0b21HZXR0ZXJTZXR0ZXJTcGFjZTsKKyAgICBJc29TdWJzcGFjZSBkYXRlSW5zdGFuY2VTcGFj
ZTsKKyAgICBJc29TdWJzcGFjZSBkb21BdHRyaWJ1dGVHZXR0ZXJTZXR0ZXJTcGFjZTsKKyAgICBJ
c29TdWJzcGFjZSBleGNlcHRpb25TcGFjZTsKKyAgICBJc29TdWJzcGFjZSBleGVjdXRhYmxlVG9D
b2RlQmxvY2tFZGdlU3BhY2U7CisgICAgSXNvU3Vic3BhY2UgZnVuY3Rpb25TcGFjZTsKKyAgICBJ
c29TdWJzcGFjZSBnZXR0ZXJTZXR0ZXJTcGFjZTsKKyAgICBJc29TdWJzcGFjZSBnbG9iYWxMZXhp
Y2FsRW52aXJvbm1lbnRTcGFjZTsKKyAgICBJc29TdWJzcGFjZSBpbnRlcm5hbEZ1bmN0aW9uU3Bh
Y2U7CisgICAgSXNvU3Vic3BhY2UganNQcm94eVNwYWNlOworICAgIElzb1N1YnNwYWNlIG5hdGl2
ZUV4ZWN1dGFibGVTcGFjZTsKKyAgICBJc29TdWJzcGFjZSBudW1iZXJPYmplY3RTcGFjZTsKKyAg
ICBJc29TdWJzcGFjZSBwbGFpbk9iamVjdFNwYWNlOworICAgIElzb1N1YnNwYWNlIHByb21pc2VT
cGFjZTsKKyAgICBJc29TdWJzcGFjZSBwcm9wZXJ0eU5hbWVFbnVtZXJhdG9yU3BhY2U7CisgICAg
SXNvU3Vic3BhY2UgcHJvcGVydHlUYWJsZVNwYWNlOworICAgIElzb1N1YnNwYWNlIHJlZ0V4cFNw
YWNlOworICAgIElzb1N1YnNwYWNlIHJlZ0V4cE9iamVjdFNwYWNlOworICAgIElzb1N1YnNwYWNl
IHJvcGVTdHJpbmdTcGFjZTsKKyAgICBJc29TdWJzcGFjZSBzY29wZWRBcmd1bWVudHNTcGFjZTsK
KyAgICBJc29TdWJzcGFjZSBzcGFyc2VBcnJheVZhbHVlTWFwU3BhY2U7CisgICAgSXNvU3Vic3Bh
Y2Ugc3RyaW5nU3BhY2U7CisgICAgSXNvU3Vic3BhY2Ugc3RyaW5nT2JqZWN0U3BhY2U7CisgICAg
SXNvU3Vic3BhY2Ugc3RydWN0dXJlQ2hhaW5TcGFjZTsKKyAgICBJc29TdWJzcGFjZSBzdHJ1Y3R1
cmVSYXJlRGF0YVNwYWNlOworICAgIElzb1N1YnNwYWNlIHN0cnVjdHVyZVNwYWNlOworICAgIElz
b1N1YnNwYWNlIGJyYW5kZWRTdHJ1Y3R1cmVTcGFjZTsKKyAgICBJc29TdWJzcGFjZSBzeW1ib2xU
YWJsZVNwYWNlOworCisjZGVmaW5lIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIo
bmFtZSkgXAorICAgIHRlbXBsYXRlPFN1YnNwYWNlQWNjZXNzIG1vZGU+IFwKKyAgICBJc29TdWJz
cGFjZSogbmFtZSgpIFwKKyAgICB7IFwKKyAgICAgICAgaWYgKG1fIyNuYW1lIHx8IG1vZGUgPT0g
U3Vic3BhY2VBY2Nlc3M6OkNvbmN1cnJlbnRseSkgXAorICAgICAgICAgICAgcmV0dXJuIG1fIyNu
YW1lLmdldCgpOyBcCisgICAgICAgIHJldHVybiBuYW1lIyNTbG93KCk7IFwKKyAgICB9IFwKKyAg
ICBKU19FWFBPUlRfUFJJVkFURSBJc29TdWJzcGFjZSogbmFtZSMjU2xvdygpOyBcCisgICAgc3Rk
Ojp1bmlxdWVfcHRyPElzb1N1YnNwYWNlPiBtXyMjbmFtZTsKKworCisjaWYgSlNDX09CSkNfQVBJ
X0VOQUJMRUQKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKGFwaVdyYXBw
ZXJPYmplY3RTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKG9i
akNDYWxsYmFja0Z1bmN0aW9uU3BhY2UpCisjZW5kaWYKKyNpZmRlZiBKU0NfR0xJQl9BUElfRU5B
QkxFRAorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoYXBpV3JhcHBlck9i
amVjdFNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoanNjQ2Fs
bGJhY2tGdW5jdGlvblNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1C
RVIoY2FsbGJhY2tBUElXcmFwcGVyR2xvYmFsT2JqZWN0U3BhY2UpCisjZW5kaWYKKyAgICBEWU5B
TUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKGFwaUdsb2JhbE9iamVjdFNwYWNlKQorICAg
IERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoYXBpVmFsdWVXcmFwcGVyU3BhY2Up
CisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihhcnJheUJ1ZmZlclNwYWNl
KQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoYXJyYXlJdGVyYXRvclNw
YWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoYXN5bmNHZW5lcmF0
b3JTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKGJpZ0ludDY0
QXJyYXlTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKGJpZ0lu
dE9iamVjdFNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoYmln
VWludDY0QXJyYXlTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVS
KGJvb2xlYW5PYmplY3RTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVN
QkVSKGJvdW5kRnVuY3Rpb25TcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVf
TUVNQkVSKGNhbGxiYWNrQ29uc3RydWN0b3JTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFD
RV9ERUZJTkVfTUVNQkVSKGNhbGxiYWNrR2xvYmFsT2JqZWN0U3BhY2UpCisgICAgRFlOQU1JQ19J
U09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihjYWxsYmFja0Z1bmN0aW9uU3BhY2UpCisgICAgRFlO
QU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihjYWxsYmFja09iamVjdFNwYWNlKQorICAg
IERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoY3VzdG9tR2V0dGVyRnVuY3Rpb25T
cGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKGN1c3RvbVNldHRl
ckZ1bmN0aW9uU3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihk
YXRhVmlld1NwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoZGVi
dWdnZXJTY29wZVNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIo
ZXJyb3JJbnN0YW5jZVNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1C
RVIoZmxvYXQzMkFycmF5U3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01F
TUJFUihmbG9hdDY0QXJyYXlTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVf
TUVNQkVSKGZ1bmN0aW9uUmFyZURhdGFTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9E
RUZJTkVfTUVNQkVSKGdlbmVyYXRvclNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RF
RklORV9NRU1CRVIoZ2xvYmFsT2JqZWN0U3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0Vf
REVGSU5FX01FTUJFUihpbmplY3RlZFNjcmlwdEhvc3RTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19T
VUJTUEFDRV9ERUZJTkVfTUVNQkVSKGludDhBcnJheVNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NV
QlNQQUNFX0RFRklORV9NRU1CRVIoaW50MTZBcnJheVNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NV
QlNQQUNFX0RFRklORV9NRU1CRVIoaW50MzJBcnJheVNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NV
QlNQQUNFX0RFRklORV9NRU1CRVIoamF2YVNjcmlwdENhbGxGcmFtZVNwYWNlKQorICAgIERZTkFN
SUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoanNNb2R1bGVSZWNvcmRTcGFjZSkKKyAgICBE
WU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKG1hcEJ1Y2tldFNwYWNlKQorICAgIERZ
TkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIobWFwSXRlcmF0b3JTcGFjZSkKKyAgICBE
WU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKG1hcFNwYWNlKQorICAgIERZTkFNSUNf
SVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIobW9kdWxlTmFtZXNwYWNlT2JqZWN0U3BhY2UpCisg
ICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihuYXRpdmVTdGRGdW5jdGlvblNw
YWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIocHJveHlPYmplY3RT
cGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKHByb3h5UmV2b2tl
U3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihzY29wZWRBcmd1
bWVudHNUYWJsZVNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIo
c2NyaXB0RmV0Y2hQYXJhbWV0ZXJzU3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVG
SU5FX01FTUJFUihzY3JpcHRGZXRjaGVyU3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0Vf
REVGSU5FX01FTUJFUihzZXRCdWNrZXRTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9E
RUZJTkVfTUVNQkVSKHNldEl0ZXJhdG9yU3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0Vf
REVGSU5FX01FTUJFUihzZXRTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVf
TUVNQkVSKHNoYWRvd1JlYWxtU3BhY2UpOworICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklO
RV9NRU1CRVIoc3RyaWN0RXZhbEFjdGl2YXRpb25TcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJT
UEFDRV9ERUZJTkVfTUVNQkVSKHN0cmluZ0l0ZXJhdG9yU3BhY2UpCisgICAgRFlOQU1JQ19JU09f
U1VCU1BBQ0VfREVGSU5FX01FTUJFUihzb3VyY2VDb2RlU3BhY2UpCisgICAgRFlOQU1JQ19JU09f
U1VCU1BBQ0VfREVGSU5FX01FTUJFUihzeW1ib2xTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJT
UEFDRV9ERUZJTkVfTUVNQkVSKHN5bWJvbE9iamVjdFNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NV
QlNQQUNFX0RFRklORV9NRU1CRVIodGVtcGxhdGVPYmplY3REZXNjcmlwdG9yU3BhY2UpCisgICAg
RFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUih0ZW1wb3JhbENhbGVuZGFyU3BhY2Up
CisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUih0ZW1wb3JhbER1cmF0aW9u
U3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUih0ZW1wb3JhbElu
c3RhbnRTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKHRlbXBv
cmFsUGxhaW5UaW1lU3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJF
Uih0ZW1wb3JhbFRpbWVab25lU3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5F
X01FTUJFUih1aW50OEFycmF5U3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5F
X01FTUJFUih1aW50OENsYW1wZWRBcnJheVNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNF
X0RFRklORV9NRU1CRVIodWludDE2QXJyYXlTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFD
RV9ERUZJTkVfTUVNQkVSKHVpbnQzMkFycmF5U3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BB
Q0VfREVGSU5FX01FTUJFUih1bmxpbmtlZEV2YWxDb2RlQmxvY2tTcGFjZSkKKyAgICBEWU5BTUlD
X0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKHVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2tTcGFj
ZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKHVubGlua2VkTW9kdWxl
UHJvZ3JhbUNvZGVCbG9ja1NwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9N
RU1CRVIodW5saW5rZWRQcm9ncmFtQ29kZUJsb2NrU3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VC
U1BBQ0VfREVGSU5FX01FTUJFUihmaW5hbGl6YXRpb25SZWdpc3RyeVNwYWNlKQorICAgIERZTkFN
SUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIod2Vha09iamVjdFJlZlNwYWNlKQorICAgIERZ
TkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIod2Vha1NldFNwYWNlKQorICAgIERZTkFN
SUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIod2Vha01hcFNwYWNlKQorICAgIERZTkFNSUNf
SVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIod2l0aFNjb3BlU3BhY2UpCisgICAgRFlOQU1JQ19J
U09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihpbnRsQ29sbGF0b3JTcGFjZSkKKyAgICBEWU5BTUlD
X0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKGludGxEYXRlVGltZUZvcm1hdFNwYWNlKQorICAg
IERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoaW50bERpc3BsYXlOYW1lc1NwYWNl
KQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoaW50bExpc3RGb3JtYXRT
cGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKGludGxMb2NhbGVT
cGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKGludGxOdW1iZXJG
b3JtYXRTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKGludGxQ
bHVyYWxSdWxlc1NwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIo
aW50bFJlbGF0aXZlVGltZUZvcm1hdFNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RF
RklORV9NRU1CRVIoaW50bFNlZ21lbnRJdGVyYXRvclNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NV
QlNQQUNFX0RFRklORV9NRU1CRVIoaW50bFNlZ21lbnRlclNwYWNlKQorICAgIERZTkFNSUNfSVNP
X1NVQlNQQUNFX0RFRklORV9NRU1CRVIoaW50bFNlZ21lbnRzU3BhY2UpCisjaWYgRU5BQkxFKFdF
QkFTU0VNQkxZKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoanNUb1dh
c21JQ0NhbGxlZVNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIo
d2ViQXNzZW1ibHlDb2RlQmxvY2tTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJ
TkVfTUVNQkVSKHdlYkFzc2VtYmx5RXhjZXB0aW9uU3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VC
U1BBQ0VfREVGSU5FX01FTUJFUih3ZWJBc3NlbWJseUZ1bmN0aW9uU3BhY2UpCisgICAgRFlOQU1J
Q19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUih3ZWJBc3NlbWJseUdsb2JhbFNwYWNlKQorICAg
IERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIod2ViQXNzZW1ibHlJbnN0YW5jZVNw
YWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIod2ViQXNzZW1ibHlN
ZW1vcnlTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKHdlYkFz
c2VtYmx5TW9kdWxlU3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJF
Uih3ZWJBc3NlbWJseU1vZHVsZVJlY29yZFNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNF
X0RFRklORV9NRU1CRVIod2ViQXNzZW1ibHlUYWJsZVNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NV
QlNQQUNFX0RFRklORV9NRU1CRVIod2ViQXNzZW1ibHlUYWdTcGFjZSkKKyAgICBEWU5BTUlDX0lT
T19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKHdlYkFzc2VtYmx5V3JhcHBlckZ1bmN0aW9uU3BhY2Up
CisjZW5kaWYKKworI3VuZGVmIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIKKyAg
ICAKKyAgICBJc29DZWxsU2V0IGV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2VzV2l0aENvbnN0cmFp
bnRzOworICAgIElzb0NlbGxTZXQgZXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZXNXaXRoRmluYWxp
emVyczsKKworI2RlZmluZSBEWU5BTUlDX1NQQUNFX0FORF9TRVRfREVGSU5FX01FTUJFUihuYW1l
KSBcCisgICAgdGVtcGxhdGU8U3Vic3BhY2VBY2Nlc3MgbW9kZT4gXAorICAgIElzb1N1YnNwYWNl
KiBuYW1lKCkgXAorICAgIHsgXAorICAgICAgICBpZiAoYXV0byogc3BhY2VBbmRTZXQgPSBtXyMj
bmFtZS5nZXQoKSkgXAorICAgICAgICAgICAgcmV0dXJuICZzcGFjZUFuZFNldC0+c3BhY2U7IFwK
KyAgICAgICAgaWYgKG1vZGUgPT0gU3Vic3BhY2VBY2Nlc3M6OkNvbmN1cnJlbnRseSkgXAorICAg
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7IFwKKyAgICAgICAgcmV0dXJuIG5hbWUjI1Nsb3coKTsg
XAorICAgIH0gXAorICAgIElzb1N1YnNwYWNlKiBuYW1lIyNTbG93KCk7IFwKKyAgICBzdGQ6OnVu
aXF1ZV9wdHI8U3BhY2VBbmRTZXQ+IG1fIyNuYW1lOworICAgIAorICAgIHN0cnVjdCBTcGFjZUFu
ZFNldCB7CisgICAgICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKKworICAgICAg
ICBJc29TdWJzcGFjZSBzcGFjZTsKKyAgICAgICAgSXNvQ2VsbFNldCBzZXQ7CisgICAgICAgIAor
ICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBBcmd1bWVudHM+CisgICAgICAgIFNwYWNlQW5k
U2V0KEFyZ3VtZW50cyYmLi4uIGFyZ3VtZW50cykKKyAgICAgICAgICAgIDogc3BhY2Uoc3RkOjpm
b3J3YXJkPEFyZ3VtZW50cz4oYXJndW1lbnRzKS4uLikKKyAgICAgICAgICAgICwgc2V0KHNwYWNl
KQorICAgICAgICB7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHN0YXRpYyBJc29DZWxs
U2V0JiBzZXRGb3IoU3Vic3BhY2UmIHNwYWNlKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1
cm4gKmJpdHdpc2VfY2FzdDxJc29DZWxsU2V0Kj4oCisgICAgICAgICAgICAgICAgYml0d2lzZV9j
YXN0PGNoYXIqPigmc3BhY2UpIC0KKyAgICAgICAgICAgICAgICBPQkpFQ1RfT0ZGU0VUT0YoU3Bh
Y2VBbmRTZXQsIHNwYWNlKSArCisgICAgICAgICAgICAgICAgT0JKRUNUX09GRlNFVE9GKFNwYWNl
QW5kU2V0LCBzZXQpKTsKKyAgICAgICAgfQorICAgIH07CisgICAgCisgICAgU3BhY2VBbmRTZXQg
Y29kZUJsb2NrU3BhY2U7CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jPgorICAgIHZvaWQg
Zm9yRWFjaENvZGVCbG9ja1NwYWNlKGNvbnN0IEZ1bmMmIGZ1bmMpCisgICAgeworICAgICAgICAv
LyBUaGlzIHNob3VsZCBub3QgaW5jbHVkZSB3ZWJBc3NlbWJseUNvZGVCbG9ja1NwYWNlIGJlY2F1
c2UgdGhpcyBpcyBhYm91dCBzdWJzY2xhc3NlcyBvZgorICAgICAgICAvLyBKU0M6OkNvZGVCbG9j
ay4KKyAgICAgICAgZnVuYyhjb2RlQmxvY2tTcGFjZSk7CisgICAgfQorCisgICAgRFlOQU1JQ19T
UEFDRV9BTkRfU0VUX0RFRklORV9NRU1CRVIoZXZhbEV4ZWN1dGFibGVTcGFjZSkKKyAgICBEWU5B
TUlDX1NQQUNFX0FORF9TRVRfREVGSU5FX01FTUJFUihtb2R1bGVQcm9ncmFtRXhlY3V0YWJsZVNw
YWNlKQorICAgIFNwYWNlQW5kU2V0IGZ1bmN0aW9uRXhlY3V0YWJsZVNwYWNlOworICAgIFNwYWNl
QW5kU2V0IHByb2dyYW1FeGVjdXRhYmxlU3BhY2U7CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBG
dW5jPgorICAgIHZvaWQgZm9yRWFjaFNjcmlwdEV4ZWN1dGFibGVTcGFjZShjb25zdCBGdW5jJiBm
dW5jKQorICAgIHsKKyAgICAgICAgaWYgKG1fZXZhbEV4ZWN1dGFibGVTcGFjZSkKKyAgICAgICAg
ICAgIGZ1bmMoKm1fZXZhbEV4ZWN1dGFibGVTcGFjZSk7CisgICAgICAgIGZ1bmMoZnVuY3Rpb25F
eGVjdXRhYmxlU3BhY2UpOworICAgICAgICBpZiAobV9tb2R1bGVQcm9ncmFtRXhlY3V0YWJsZVNw
YWNlKQorICAgICAgICAgICAgZnVuYygqbV9tb2R1bGVQcm9ncmFtRXhlY3V0YWJsZVNwYWNlKTsK
KyAgICAgICAgZnVuYyhwcm9ncmFtRXhlY3V0YWJsZVNwYWNlKTsKKyAgICB9CisKKyAgICBTcGFj
ZUFuZFNldCB1bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZVNwYWNlOworCisjdW5kZWYgRFlOQU1J
Q19TUEFDRV9BTkRfU0VUX0RFRklORV9NRU1CRVIKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcENlbGxUeXBlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwQ2VsbFR5cGUuY3BwCShyZXZp
c2lvbiAyODYwMjQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwQ2VsbFR5cGUu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTctMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTU2LDEyICs1NiwxMiBAQCBIZWFwQ2VsbFR5cGU6On5IZWFwQ2Vs
bFR5cGUoKQogewogfQogCi12b2lkIEhlYXBDZWxsVHlwZTo6ZmluaXNoU3dlZXAoTWFya2VkQmxv
Y2s6OkhhbmRsZSYgYmxvY2ssIEZyZWVMaXN0KiBmcmVlTGlzdCkKK3ZvaWQgSGVhcENlbGxUeXBl
OjpmaW5pc2hTd2VlcChNYXJrZWRCbG9jazo6SGFuZGxlJiBibG9jaywgRnJlZUxpc3QqIGZyZWVM
aXN0KSBjb25zdAogewogICAgIGJsb2NrLmZpbmlzaFN3ZWVwS25vd2luZ0hlYXBDZWxsVHlwZShm
cmVlTGlzdCwgRGVmYXVsdERlc3Ryb3lGdW5jKCkpOwogfQogCi12b2lkIEhlYXBDZWxsVHlwZTo6
ZGVzdHJveShWTSYgdm0sIEpTQ2VsbCogY2VsbCkKK3ZvaWQgSGVhcENlbGxUeXBlOjpkZXN0cm95
KFZNJiB2bSwgSlNDZWxsKiBjZWxsKSBjb25zdAogewogICAgIERlZmF1bHREZXN0cm95RnVuYygp
KHZtLCBjZWxsKTsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBDZWxs
VHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBDZWxs
VHlwZS5oCShyZXZpc2lvbiAyODYwMjQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9I
ZWFwQ2VsbFR5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDE3LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zNiwxNCArMzYsMTQgQEAgcHVibGljOgogICAg
IEpTX0VYUE9SVF9QUklWQVRFIEhlYXBDZWxsVHlwZShDZWxsQXR0cmlidXRlcyk7CiAgICAgSlNf
RVhQT1JUX1BSSVZBVEUgdmlydHVhbCB+SGVhcENlbGxUeXBlKCk7CiAKLSAgICBjb25zdCBDZWxs
QXR0cmlidXRlcyYgYXR0cmlidXRlcygpIGNvbnN0IHsgcmV0dXJuIG1fYXR0cmlidXRlczsgfQor
ICAgIGNvbnN0IENlbGxBdHRyaWJ1dGVzIGF0dHJpYnV0ZXMoKSBjb25zdCB7IHJldHVybiBtX2F0
dHJpYnV0ZXM7IH0KIAogICAgIC8vIFRoZSBwdXJwb3NlIG9mIG92ZXJyaWRpbmcgdGhpcyBpcyB0
byBzcGVjaWFsaXplIHRoZSBzd2VlcCBmb3IgeW91ciBkZXN0cnVjdG9ycy4gVGhpcyB3b24ndAog
ICAgIC8vIGJlIGNhbGxlZCBmb3Igbm8tZGVzdHJ1Y3RvciBibG9ja3MuIFRoaXMgbXVzdCBjYWxs
IE1hcmtlZEJsb2NrOjpmaW5pc2hTd2VlcEtub3dpbmdTdWJzcGFjZS4KLSAgICB2aXJ0dWFsIHZv
aWQgZmluaXNoU3dlZXAoTWFya2VkQmxvY2s6OkhhbmRsZSYsIEZyZWVMaXN0Kik7CisgICAgdmly
dHVhbCB2b2lkIGZpbmlzaFN3ZWVwKE1hcmtlZEJsb2NrOjpIYW5kbGUmLCBGcmVlTGlzdCopIGNv
bnN0OwogCiAgICAgLy8gVGhlc2UgZ2V0IGNhbGxlZCBmb3IgbGFyZ2Ugb2JqZWN0cy4KLSAgICB2
aXJ0dWFsIHZvaWQgZGVzdHJveShWTSYsIEpTQ2VsbCopOworICAgIHZpcnR1YWwgdm9pZCBkZXN0
cm95KFZNJiwgSlNDZWxsKikgY29uc3Q7CiAKIHByaXZhdGU6CiAgICAgQ2VsbEF0dHJpYnV0ZXMg
bV9hdHRyaWJ1dGVzOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSXNvSGVhcENl
bGxUeXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Jc29I
ZWFwQ2VsbFR5cGUuY3BwCShyZXZpc2lvbiAyODYwMjQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9Jc29IZWFwQ2VsbFR5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBA
QAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTktMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM5LDEyICszOSwxMiBA
QCBJc29IZWFwQ2VsbFR5cGU6Oklzb0hlYXBDZWxsVHlwZShEZXN0cnVjCiAKIElzb0hlYXBDZWxs
VHlwZTo6fklzb0hlYXBDZWxsVHlwZSgpID0gZGVmYXVsdDsKIAotdm9pZCBJc29IZWFwQ2VsbFR5
cGU6OmZpbmlzaFN3ZWVwKE1hcmtlZEJsb2NrOjpIYW5kbGUmIGhhbmRsZSwgRnJlZUxpc3QqIGZy
ZWVMaXN0KQordm9pZCBJc29IZWFwQ2VsbFR5cGU6OmZpbmlzaFN3ZWVwKE1hcmtlZEJsb2NrOjpI
YW5kbGUmIGhhbmRsZSwgRnJlZUxpc3QqIGZyZWVMaXN0KSBjb25zdAogewogICAgIGhhbmRsZS5m
aW5pc2hTd2VlcEtub3dpbmdIZWFwQ2VsbFR5cGUoZnJlZUxpc3QsICp0aGlzKTsKIH0KIAotdm9p
ZCBJc29IZWFwQ2VsbFR5cGU6OmRlc3Ryb3koVk0mLCBKU0NlbGwqIGNlbGwpCit2b2lkIElzb0hl
YXBDZWxsVHlwZTo6ZGVzdHJveShWTSYsIEpTQ2VsbCogY2VsbCkgY29uc3QKIHsKICAgICBtX2Rl
c3Ryb3koY2VsbCk7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Jc29IZWFw
Q2VsbFR5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Jc29I
ZWFwQ2VsbFR5cGUuaAkocmV2aXNpb24gMjg2MDI0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvSXNvSGVhcENlbGxUeXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAv
KgotICogQ29weXJpZ2h0IChDKSAyMDE5LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE5LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNiw3ICsyNiw2IEBA
CiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkhlYXBDZWxsVHlwZS5oIgotI2luY2x1ZGUgIk1h
cmtlZEJsb2NrSW5saW5lcy5oIgogCiBuYW1lc3BhY2UgSlNDIHsKIApAQCAtMzksMTMgKzM4LDI5
IEBAIHB1YmxpYzoKICAgICBKU19FWFBPUlRfUFJJVkFURSBJc29IZWFwQ2VsbFR5cGUoRGVzdHJ1
Y3Rpb25Nb2RlLCBEZXN0cm95RnVuY3Rpb25QdHIpOwogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUg
Q2VsbFR5cGU+CisgICAgc3RydWN0IEFyZ3MgeworICAgICAgICBBcmdzKCkKKyAgICAgICAgICAg
IDogbW9kZShDZWxsVHlwZTo6bmVlZHNEZXN0cnVjdGlvbiA/IE5lZWRzRGVzdHJ1Y3Rpb24gOiBE
b2VzTm90TmVlZERlc3RydWN0aW9uKQorICAgICAgICAgICAgLCBmdW5jdGlvblB0cigmQ2VsbFR5
cGU6OmRlc3Ryb3kpCisgICAgICAgIHsgfQorCisgICAgICAgIERlc3RydWN0aW9uTW9kZSBtb2Rl
OworICAgICAgICBEZXN0cm95RnVuY3Rpb25QdHIgZnVuY3Rpb25QdHI7CisgICAgfTsKKworICAg
IHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlPgorICAgIElzb0hlYXBDZWxsVHlwZShBcmdzPENl
bGxUeXBlPiYmIGFyZ3MpCisgICAgICAgIDogSXNvSGVhcENlbGxUeXBlKGFyZ3MubW9kZSwgYXJn
cy5mdW5jdGlvblB0cikKKyAgICB7IH0KKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBl
PgogICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8SXNvSGVhcENlbGxUeXBlPiBjcmVhdGUoKQog
ICAgIHsKICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8SXNvSGVhcENlbGxUeXBlPihDZWxsVHlw
ZTo6bmVlZHNEZXN0cnVjdGlvbiA/IE5lZWRzRGVzdHJ1Y3Rpb24gOiBEb2VzTm90TmVlZERlc3Ry
dWN0aW9uLCAmQ2VsbFR5cGU6OmRlc3Ryb3kpOwogICAgIH0KIAotICAgIEpTX0VYUE9SVF9QUklW
QVRFIHZvaWQgZmluaXNoU3dlZXAoTWFya2VkQmxvY2s6OkhhbmRsZSYsIEZyZWVMaXN0KikgZmlu
YWw7Ci0gICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBkZXN0cm95KFZNJiwgSlNDZWxsKikgZmlu
YWw7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBmaW5pc2hTd2VlcChNYXJrZWRCbG9jazo6
SGFuZGxlJiwgRnJlZUxpc3QqKSBjb25zdCBmaW5hbDsKKyAgICBKU19FWFBPUlRfUFJJVkFURSB2
b2lkIGRlc3Ryb3koVk0mLCBKU0NlbGwqKSBjb25zdCBmaW5hbDsKIAogICAgIEFMV0FZU19JTkxJ
TkUgdm9pZCBvcGVyYXRvcigpKFZNJiwgSlNDZWxsKiBjZWxsKSBjb25zdAogICAgIHsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lzb0lubGluZWRIZWFwQ2VsbFR5cGUuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Jc29JbmxpbmVkSGVhcENlbGxU
eXBlLmgJKHJldmlzaW9uIDI4NjAyNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lz
b0lubGluZWRIZWFwQ2VsbFR5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTktMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTktMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI2LDcgKzI2LDYgQEAK
ICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiSGVhcENlbGxUeXBlLmgiCi0jaW5jbHVkZSAiTWFy
a2VkQmxvY2tJbmxpbmVzLmgiCiAKIG5hbWVzcGFjZSBKU0MgewogCkBAIC00NSwxMiArNDQsMTIg
QEAgcHVibGljOgogICAgICAgICB9CiAgICAgfTsKIAotICAgIHZvaWQgZmluaXNoU3dlZXAoTWFy
a2VkQmxvY2s6OkhhbmRsZSYgaGFuZGxlLCBGcmVlTGlzdCogZnJlZUxpc3QpIGZpbmFsCisgICAg
dm9pZCBmaW5pc2hTd2VlcChNYXJrZWRCbG9jazo6SGFuZGxlJiBoYW5kbGUsIEZyZWVMaXN0KiBm
cmVlTGlzdCkgY29uc3QgZmluYWwKICAgICB7CiAgICAgICAgIGhhbmRsZS5maW5pc2hTd2VlcEtu
b3dpbmdIZWFwQ2VsbFR5cGUoZnJlZUxpc3QsIERlc3Ryb3lGdW5jKCkpOwogICAgIH0KIAotICAg
IHZvaWQgZGVzdHJveShWTSYsIEpTQ2VsbCogY2VsbCkgZmluYWwKKyAgICB2b2lkIGRlc3Ryb3ko
Vk0mLCBKU0NlbGwqIGNlbGwpIGNvbnN0IGZpbmFsCiAgICAgewogICAgICAgICBDZWxsVHlwZTo6
ZGVzdHJveShjZWxsKTsKICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9J
c29TdWJzcGFjZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
SXNvU3Vic3BhY2UuY3BwCShyZXZpc2lvbiAyODYwMjQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9Jc29TdWJzcGFjZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzLDcgKzMzLDcgQEAK
IAogbmFtZXNwYWNlIEpTQyB7CiAKLUlzb1N1YnNwYWNlOjpJc29TdWJzcGFjZShDU3RyaW5nIG5h
bWUsIEhlYXAmIGhlYXAsIEhlYXBDZWxsVHlwZSogaGVhcENlbGxUeXBlLCBzaXplX3Qgc2l6ZSwg
dWludDhfdCBudW1iZXJPZkxvd2VyVGllckNlbGxzKQorSXNvU3Vic3BhY2U6Oklzb1N1YnNwYWNl
KENTdHJpbmcgbmFtZSwgSGVhcCYgaGVhcCwgY29uc3QgSGVhcENlbGxUeXBlJiBoZWFwQ2VsbFR5
cGUsIHNpemVfdCBzaXplLCB1aW50OF90IG51bWJlck9mTG93ZXJUaWVyQ2VsbHMpCiAgICAgOiBT
dWJzcGFjZShuYW1lLCBoZWFwKQogICAgICwgbV9kaXJlY3RvcnkoV1RGOjpyb3VuZFVwVG9NdWx0
aXBsZU9mPE1hcmtlZEJsb2NrOjphdG9tU2l6ZT4oc2l6ZSkpCiAgICAgLCBtX2xvY2FsQWxsb2Nh
dG9yKCZtX2RpcmVjdG9yeSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lzb1N1
YnNwYWNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSXNvU3Vi
c3BhY2UuaAkocmV2aXNpb24gMjg2MDI0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
SXNvU3Vic3BhY2UuaAkod29ya2luZyBjb3B5KQpAQCAtMzcsNyArMzcsNyBAQCBjbGFzcyBJc29D
ZWxsU2V0OwogCiBjbGFzcyBJc29TdWJzcGFjZSA6IHB1YmxpYyBTdWJzcGFjZSB7CiBwdWJsaWM6
Ci0gICAgSlNfRVhQT1JUX1BSSVZBVEUgSXNvU3Vic3BhY2UoQ1N0cmluZyBuYW1lLCBIZWFwJiwg
SGVhcENlbGxUeXBlKiwgc2l6ZV90IHNpemUsIHVpbnQ4X3QgbnVtYmVyT2ZMb3dlclRpZXJDZWxs
cyk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgSXNvU3Vic3BhY2UoQ1N0cmluZyBuYW1lLCBIZWFw
JiwgY29uc3QgSGVhcENlbGxUeXBlJiwgc2l6ZV90LCB1aW50OF90IG51bWJlck9mTG93ZXJUaWVy
Q2VsbHMpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIH5Jc29TdWJzcGFjZSgpIG92ZXJyaWRlOwog
CiAgICAgc2l6ZV90IGNlbGxTaXplKCkgeyByZXR1cm4gbV9kaXJlY3RvcnkuY2VsbFNpemUoKTsg
fQpAQCAtNTQsNyArNTQsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCogdHJ5QWxsb2NhdGVGcm9tTG93
ZXJUaWVyKCk7CiAgICAgdm9pZCBkZXN0cm95TG93ZXJUaWVyRnJlZUxpc3QoKTsKIAotICAgIHZv
aWQgc3dlZXAoKTsKKyAgICB2b2lkIHN3ZWVwMygpOwogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUg
RnVuYz4gdm9pZCBmb3JFYWNoTG93ZXJUaWVyRnJlZUxpc3RlZFByZWNpc2VBbGxvY2F0aW9uKGNv
bnN0IEZ1bmMmKTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSXNvU3Vic3Bh
Y2VJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSXNv
U3Vic3BhY2VJbmxpbmVzLmgJKHJldmlzaW9uIDI4NjAyNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL0lzb1N1YnNwYWNlSW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC00NCw3ICs0
NCw3IEBAIGlubGluZSB2b2lkIElzb1N1YnNwYWNlOjpjbGVhcklzb0NlbGxTZXQKICAgICAgICAg
fSk7CiB9CiAKLWlubGluZSB2b2lkIElzb1N1YnNwYWNlOjpzd2VlcCgpCitpbmxpbmUgdm9pZCBJ
c29TdWJzcGFjZTo6c3dlZXAzKCkKIHsKICAgICBTdWJzcGFjZTo6c3dlZXBCbG9ja3MoKTsKICAg
ICAvLyBXZSBzd2VlcCBwcmVjaXNlLWFsbG9jYXRpb25zIGVhZ2VybHksIGJ1dCB3ZSBkbyBub3Qg
ZnJlZSBpdCBpbW1lZGlhdGVseS4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lz
b1N1YnNwYWNlUGVyVk0uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL0lzb1N1YnNwYWNlUGVyVk0uY3BwCShyZXZpc2lvbiAyODYwMjQpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9Jc29TdWJzcGFjZVBlclZNLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzMsNyArMzMsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogY2xhc3MgSXNvU3Vic3BhY2VQZXJWTTo6
QXV0b3JlbW92aW5nSXNvU3Vic3BhY2UgZmluYWwgOiBwdWJsaWMgSXNvU3Vic3BhY2UgewogcHVi
bGljOgotICAgIEF1dG9yZW1vdmluZ0lzb1N1YnNwYWNlKElzb1N1YnNwYWNlUGVyVk0mIHBlclZN
LCBDU3RyaW5nIG5hbWUsIEhlYXAmIGhlYXAsIEhlYXBDZWxsVHlwZSogaGVhcENlbGxUeXBlLCBz
aXplX3Qgc2l6ZSkKKyAgICBBdXRvcmVtb3ZpbmdJc29TdWJzcGFjZShJc29TdWJzcGFjZVBlclZN
JiBwZXJWTSwgQ1N0cmluZyBuYW1lLCBIZWFwJiBoZWFwLCBjb25zdCBIZWFwQ2VsbFR5cGUmIGhl
YXBDZWxsVHlwZSwgc2l6ZV90IHNpemUpCiAgICAgICAgIDogSXNvU3Vic3BhY2UobmFtZSwgaGVh
cCwgaGVhcENlbGxUeXBlLCBzaXplLCAvKiBudW1iZXJPZkxvd2VyVGllckNlbGxzICovIDApCiAg
ICAgICAgICwgbV9wZXJWTShwZXJWTSkKICAgICB7CkBAIC02NSw3ICs2NSw3IEBAIElzb1N1YnNw
YWNlJiBJc29TdWJzcGFjZVBlclZNOjpmb3JWTShWTSYKICAgICBhdXRvIHJlc3VsdCA9IG1fc3Vi
c3BhY2VQZXJWTS5hZGQoJnZtLCBudWxscHRyKTsKICAgICBpZiAocmVzdWx0LmlzTmV3RW50cnkp
IHsKICAgICAgICAgU3Vic3BhY2VQYXJhbWV0ZXJzIHBhcmFtcyA9IG1fc3Vic3BhY2VQYXJhbWV0
ZXJzKHZtKTsKLSAgICAgICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IG5ldyBBdXRvcmVtb3Zp
bmdJc29TdWJzcGFjZSgqdGhpcywgcGFyYW1zLm5hbWUsIHZtLmhlYXAsIHBhcmFtcy5oZWFwQ2Vs
bFR5cGUsIHBhcmFtcy5zaXplKTsKKyAgICAgICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IG5l
dyBBdXRvcmVtb3ZpbmdJc29TdWJzcGFjZSgqdGhpcywgcGFyYW1zLm5hbWUsIHZtLmhlYXAsICpw
YXJhbXMuaGVhcENlbGxUeXBlLCBwYXJhbXMuc2l6ZSk7CiAgICAgfQogICAgIHJldHVybiAqcmVz
dWx0Lml0ZXJhdG9yLT52YWx1ZTsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L0lzb1N1YnNwYWNlUGVyVk0uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9Jc29TdWJzcGFjZVBlclZNLmgJKHJldmlzaW9uIDI4NjAyNCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL0lzb1N1YnNwYWNlUGVyVk0uaAkod29ya2luZyBjb3B5KQpAQCAtNDEs
MTUgKzQxLDE1IEBAIHB1YmxpYzoKICAgICBzdHJ1Y3QgU3Vic3BhY2VQYXJhbWV0ZXJzIHsKICAg
ICAgICAgU3Vic3BhY2VQYXJhbWV0ZXJzKCkgeyB9CiAgICAgICAgIAotICAgICAgICBTdWJzcGFj
ZVBhcmFtZXRlcnMoQ1N0cmluZyBuYW1lLCBIZWFwQ2VsbFR5cGUqIGhlYXBDZWxsVHlwZSwgc2l6
ZV90IHNpemUpCisgICAgICAgIFN1YnNwYWNlUGFyYW1ldGVycyhDU3RyaW5nIG5hbWUsIGNvbnN0
IEhlYXBDZWxsVHlwZSYgaGVhcENlbGxUeXBlLCBzaXplX3Qgc2l6ZSkKICAgICAgICAgICAgIDog
bmFtZShXVEZNb3ZlKG5hbWUpKQotICAgICAgICAgICAgLCBoZWFwQ2VsbFR5cGUoaGVhcENlbGxU
eXBlKQorICAgICAgICAgICAgLCBoZWFwQ2VsbFR5cGUoJmhlYXBDZWxsVHlwZSkKICAgICAgICAg
ICAgICwgc2l6ZShzaXplKQogICAgICAgICB7CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAg
IENTdHJpbmcgbmFtZTsKLSAgICAgICAgSGVhcENlbGxUeXBlKiBoZWFwQ2VsbFR5cGUgeyBudWxs
cHRyIH07CisgICAgICAgIGNvbnN0IEhlYXBDZWxsVHlwZSogaGVhcENlbGxUeXBlIHsgbnVsbHB0
ciB9OwogICAgICAgICBzaXplX3Qgc2l6ZSB7IDAgfTsKICAgICB9OwogICAgIApJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2suaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9jay5oCShyZXZpc2lvbiAyODYwMjQpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9jay5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xNjEsNyArMTYxLDcgQEAgcHVibGljOgogICAgICAgICBzaXplX3QgY2VsbFNpemUoKTsK
ICAgICAgICAgaW5saW5lIHVuc2lnbmVkIGNlbGxzUGVyQmxvY2soKTsKICAgICAgICAgCi0gICAg
ICAgIGNvbnN0IENlbGxBdHRyaWJ1dGVzJiBhdHRyaWJ1dGVzKCkgY29uc3Q7CisgICAgICAgIGNv
bnN0IENlbGxBdHRyaWJ1dGVzIGF0dHJpYnV0ZXMoKSBjb25zdDsKICAgICAgICAgRGVzdHJ1Y3Rp
b25Nb2RlIGRlc3RydWN0aW9uKCkgY29uc3Q7CiAgICAgICAgIGJvb2wgbmVlZHNEZXN0cnVjdGlv
bigpIGNvbnN0OwogICAgICAgICBIZWFwQ2VsbDo6S2luZCBjZWxsS2luZCgpIGNvbnN0OwpAQCAt
MzQ3LDcgKzM0Nyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlc2V0QWxsb2NhdGVkKCk7CiAgICAg
ICAgIAogICAgIHNpemVfdCBjZWxsU2l6ZSgpOwotICAgIGNvbnN0IENlbGxBdHRyaWJ1dGVzJiBh
dHRyaWJ1dGVzKCkgY29uc3Q7CisgICAgY29uc3QgQ2VsbEF0dHJpYnV0ZXMgYXR0cmlidXRlcygp
IGNvbnN0OwogICAgIAogICAgIGJvb2wgaGFzQW55TWFya2VkKCkgY29uc3Q7CiAgICAgdm9pZCBu
b3RlTWFya2VkKCk7CkBAIC01MTEsMTIgKzUxMSwxMiBAQCBpbmxpbmUgc2l6ZV90IE1hcmtlZEJs
b2NrOjpjZWxsU2l6ZSgpCiAgICAgcmV0dXJuIGhhbmRsZSgpLmNlbGxTaXplKCk7CiB9CiAKLWlu
bGluZSBjb25zdCBDZWxsQXR0cmlidXRlcyYgTWFya2VkQmxvY2s6OkhhbmRsZTo6YXR0cmlidXRl
cygpIGNvbnN0CitpbmxpbmUgY29uc3QgQ2VsbEF0dHJpYnV0ZXMgTWFya2VkQmxvY2s6OkhhbmRs
ZTo6YXR0cmlidXRlcygpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fYXR0cmlidXRlczsKIH0KIAot
aW5saW5lIGNvbnN0IENlbGxBdHRyaWJ1dGVzJiBNYXJrZWRCbG9jazo6YXR0cmlidXRlcygpIGNv
bnN0CitpbmxpbmUgY29uc3QgQ2VsbEF0dHJpYnV0ZXMgTWFya2VkQmxvY2s6OmF0dHJpYnV0ZXMo
KSBjb25zdAogewogICAgIHJldHVybiBoYW5kbGUoKS5hdHRyaWJ1dGVzKCk7CiB9CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9ja0lubGluZXMuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9ja0lubGluZXMuaAkocmV2
aXNpb24gMjg2MDI0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2tJ
bmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDE2LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDE2LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yMTMsNyArMjEzLDcgQEAgaW5saW5lIGJvb2wg
TWFya2VkQmxvY2s6OkhhbmRsZTo6YXJlTWFyawogLy8gc3dlZXBNb2RlID09IFN3ZWVwVG9GcmVl
TGlzdAogLy8gc2NyaWJibGVNb2RlID09IERvbnRTY3JpYmJsZQogLy8gbmV3bHlBbGxvY2F0ZWRN
b2RlID09IERvZXNOb3RIYXZlTmV3bHlBbGxvY2F0ZWQKLS8vIGRlc3RydWN0aW9uTW9kZSAhPSBC
bG9ja0hhc0Rlc3RyaWN0b3JzQW5kQ29sbGVjdG9ySXNSdW5uaW5nCisvLyBkZXN0cnVjdGlvbk1v
ZGUgIT0gQmxvY2tIYXNEZXN0cnVjdG9yc0FuZENvbGxlY3RvcklzUnVubmluZwogLy8KIC8vIGVt
cHR5TW9kZSA9IElzRW1wdHkKIC8vICAgICBkZXN0cnVjdGlvbk1vZGUgPSBEb2VzTm90TmVlZERl
c3RydWN0aW9uCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9QcmVjaXNlQWxsb2Nh
dGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1ByZWNpc2VB
bGxvY2F0aW9uLmgJKHJldmlzaW9uIDI4NjAyNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL1ByZWNpc2VBbGxvY2F0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTEyMSw3ICsxMjEsNyBA
QCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBhYm92ZUxvd2VyQm91bmQocmF3UHRyKSAmJiBiZWxv
d1VwcGVyQm91bmQocmF3UHRyKTsKICAgICB9CiAgICAgCi0gICAgY29uc3QgQ2VsbEF0dHJpYnV0
ZXMmIGF0dHJpYnV0ZXMoKSBjb25zdCB7IHJldHVybiBtX2F0dHJpYnV0ZXM7IH0KKyAgICBjb25z
dCBDZWxsQXR0cmlidXRlcyBhdHRyaWJ1dGVzKCkgY29uc3QgeyByZXR1cm4gbV9hdHRyaWJ1dGVz
OyB9CiAgICAgCiAgICAgRGVwZW5kZW5jeSBhYm91dFRvTWFyayhIZWFwVmVyc2lvbikgeyByZXR1
cm4gRGVwZW5kZW5jeSgpOyB9CiAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVh
cC9TdWJzcGFjZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
U3Vic3BhY2UuY3BwCShyZXZpc2lvbiAyODYwMjQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9TdWJzcGFjZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQwLDkgKzQwLDkgQEAgU3Vic3Bh
Y2U6OlN1YnNwYWNlKENTdHJpbmcgbmFtZSwgSGVhcCYgaAogewogfQogCi12b2lkIFN1YnNwYWNl
Ojppbml0aWFsaXplKEhlYXBDZWxsVHlwZSogaGVhcENlbGxUeXBlLCBBbGlnbmVkTWVtb3J5QWxs
b2NhdG9yKiBhbGlnbmVkTWVtb3J5QWxsb2NhdG9yKQordm9pZCBTdWJzcGFjZTo6aW5pdGlhbGl6
ZShjb25zdCBIZWFwQ2VsbFR5cGUmIGhlYXBDZWxsVHlwZSwgQWxpZ25lZE1lbW9yeUFsbG9jYXRv
ciogYWxpZ25lZE1lbW9yeUFsbG9jYXRvcikKIHsKLSAgICBtX2hlYXBDZWxsVHlwZSA9IGhlYXBD
ZWxsVHlwZTsKKyAgICBtX2hlYXBDZWxsVHlwZSA9ICZoZWFwQ2VsbFR5cGU7CiAgICAgbV9hbGln
bmVkTWVtb3J5QWxsb2NhdG9yID0gYWxpZ25lZE1lbW9yeUFsbG9jYXRvcjsKICAgICBtX2RpcmVj
dG9yeUZvckVtcHR5QWxsb2NhdGlvbiA9IG1fYWxpZ25lZE1lbW9yeUFsbG9jYXRvci0+Zmlyc3RE
aXJlY3RvcnkoKTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvU3Vic3BhY2Uu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9TdWJzcGFjZS5oCShy
ZXZpc2lvbiAyODYwMjQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9TdWJzcGFjZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC0zOSwxOSArMzksMTggQEAgY2xhc3MgSGVhcENlbGxUeXBlOwog
CiAvLyBUaGUgaWRlYSBvZiBzdWJzcGFjZXMgaXMgdGhhdCB5b3UgY2FuIHByb3ZpZGUgc29tZSBj
dXN0b20gYmVoYXZpb3IgZm9yIHlvdXIgb2JqZWN0cyBpZiB5b3UKIC8vIGFsbG9jYXRlIHRoZW0g
ZnJvbSBhIGN1c3RvbSBTdWJzcGFjZSBpbiB3aGljaCB5b3Ugb3ZlcnJpZGUgc29tZSBvZiB0aGUg
dmlydHVhbCBtZXRob2RzLiBUaGlzCi0vLyBjbGFzcyBpcyB0aGUgYmFzZWNsYXNzIG9mIFN1YnNw
YWNlcy4gVXN1YWxseSB5b3Ugd2lsbCB1c2UgZWl0aGVyIFN1YnNwYWNlIG9yIEZpeGVkU2l6ZVN1
YnNwYWNlLgorLy8gY2xhc3MgaXMgdGhlIGJhc2VjbGFzcyBvZiBhbGwgc3Vic3BhY2VzIGUuZy4g
Q29tcGxldGVTdWJzcGFjZSwgSXNvU3Vic3BhY2UuCiBjbGFzcyBTdWJzcGFjZSB7CiAgICAgV1RG
X01BS0VfTk9OQ09QWUFCTEUoU3Vic3BhY2UpOwogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OwogcHVibGljOgotICAgIEpTX0VYUE9SVF9QUklWQVRFIFN1YnNwYWNlKENTdHJpbmcgbmFtZSwg
SGVhcCYpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHZpcnR1YWwgflN1YnNwYWNlKCk7CiAKICAg
ICBjb25zdCBjaGFyKiBuYW1lKCkgY29uc3QgeyByZXR1cm4gbV9uYW1lLmRhdGEoKTsgfQogICAg
IE1hcmtlZFNwYWNlJiBzcGFjZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3BhY2U7IH0KICAgICAKLSAg
ICBjb25zdCBDZWxsQXR0cmlidXRlcyYgYXR0cmlidXRlcygpIGNvbnN0OwotICAgIEhlYXBDZWxs
VHlwZSogaGVhcENlbGxUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9oZWFwQ2VsbFR5cGU7IH0KKyAg
ICBjb25zdCBDZWxsQXR0cmlidXRlcyBhdHRyaWJ1dGVzKCkgY29uc3Q7CisgICAgY29uc3QgSGVh
cENlbGxUeXBlKiBoZWFwQ2VsbFR5cGUoKSBjb25zdCB7IHJldHVybiBtX2hlYXBDZWxsVHlwZTsg
fQogICAgIEFsaWduZWRNZW1vcnlBbGxvY2F0b3IqIGFsaWduZWRNZW1vcnlBbGxvY2F0b3IoKSBj
b25zdCB7IHJldHVybiBtX2FsaWduZWRNZW1vcnlBbGxvY2F0b3I7IH0KICAgICAKICAgICB2b2lk
IGZpbmlzaFN3ZWVwKE1hcmtlZEJsb2NrOjpIYW5kbGUmLCBGcmVlTGlzdCopOwpAQCAtMTA0LDEx
ICsxMDMsMTMgQEAgcHVibGljOgogICAgIGJvb2wgaXNJc29TdWJzcGFjZSgpIGNvbnN0IHsgcmV0
dXJuIG1faXNJc29TdWJzcGFjZTsgfQogCiBwcm90ZWN0ZWQ6Ci0gICAgdm9pZCBpbml0aWFsaXpl
KEhlYXBDZWxsVHlwZSosIEFsaWduZWRNZW1vcnlBbGxvY2F0b3IqKTsKKyAgICBTdWJzcGFjZShD
U3RyaW5nIG5hbWUsIEhlYXAmKTsKKworICAgIHZvaWQgaW5pdGlhbGl6ZShjb25zdCBIZWFwQ2Vs
bFR5cGUmLCBBbGlnbmVkTWVtb3J5QWxsb2NhdG9yKik7CiAgICAgCiAgICAgTWFya2VkU3BhY2Um
IG1fc3BhY2U7CiAgICAgCi0gICAgSGVhcENlbGxUeXBlKiBtX2hlYXBDZWxsVHlwZSB7IG51bGxw
dHIgfTsKKyAgICBjb25zdCBIZWFwQ2VsbFR5cGUqIG1faGVhcENlbGxUeXBlIHsgbnVsbHB0ciB9
OwogICAgIEFsaWduZWRNZW1vcnlBbGxvY2F0b3IqIG1fYWxpZ25lZE1lbW9yeUFsbG9jYXRvciB7
IG51bGxwdHIgfTsKICAgICAKICAgICBCbG9ja0RpcmVjdG9yeSogbV9maXJzdERpcmVjdG9yeSB7
IG51bGxwdHIgfTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1N1YnNwYWNlSW5s
aW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1N1YnNwYWNl
SW5saW5lcy5oCShyZXZpc2lvbiAyODYwMjQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVh
cC9TdWJzcGFjZUlubGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMTUyLDcgKzE1Miw3IEBAIHZv
aWQgU3Vic3BhY2U6OmZvckVhY2hMaXZlQ2VsbChjb25zdCBGdW4KICAgICAgICAgfSk7CiB9CiAK
LWlubGluZSBjb25zdCBDZWxsQXR0cmlidXRlcyYgU3Vic3BhY2U6OmF0dHJpYnV0ZXMoKSBjb25z
dAoraW5saW5lIGNvbnN0IENlbGxBdHRyaWJ1dGVzIFN1YnNwYWNlOjphdHRyaWJ1dGVzKCkgY29u
c3QKIHsKICAgICByZXR1cm4gbV9oZWFwQ2VsbFR5cGUtPmF0dHJpYnV0ZXMoKTsKIH0KSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNJbmplY3RlZFNjcmlwdEhvc3RQcm90
b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pT
SW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBlLmgJKHJldmlzaW9uIDI4NjAyNCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNJbmplY3RlZFNjcmlwdEhvc3RQcm90b3R5cGUu
aAkod29ya2luZyBjb3B5KQpAQCAtNDAsNyArNDAsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpT
Qzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAg
U1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNJbmplY3RlZFNjcmlwdEhvc3RQ
cm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7Cisg
ICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIERFQ0xB
UkVfSU5GTzsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNKYXZhU2Ny
aXB0Q2FsbEZyYW1lUHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9KU0phdmFTY3JpcHRDYWxsRnJhbWVQcm90b3R5cGUuaAkocmV2aXNpb24g
Mjg2MDI0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0phdmFTY3JpcHRD
YWxsRnJhbWVQcm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtNDAsNyArNDAsNyBAQCBwdWJs
aWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZt
KQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNK
YXZhU2NyaXB0Q2FsbEZyYW1lUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5w
bGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsK
ICAgICB9CiAKICAgICBERUNMQVJFX0lORk87CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9BZ2dyZWdhdGVFcnJvclByb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0FnZ3JlZ2F0ZUVycm9yUHJvdG90eXBlLmgJKHJldmlzaW9u
IDI4NjAyNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FnZ3JlZ2F0ZUVycm9y
UHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDcgKzQ0LDcgQEAgcHVibGljOgogICAg
IHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAgICAg
U1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoQWdncmVnYXRlRXJyb3JQcm90b3R5
cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAg
IHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBTdHJ1
Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEpTVmFsdWUgcHJvdG90eXBlKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQXJyYXlJdGVyYXRvclByb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0FycmF5SXRlcmF0b3JQcm90b3R5cGUuaAkocmV2aXNpb24gMjg2MDI0
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlJdGVyYXRvclByb3RvdHlw
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw3ICszOCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMg
SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19B
U1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEFycmF5SXRlcmF0b3JQcm90b3R5cGUsIEJhc2Up
OwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAm
dm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBBcnJheUl0ZXJhdG9y
UHJvdG90eXBlKiBjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0FzeW5jRnJvbVN5bmNJdGVyYXRvclByb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0FzeW5jRnJvbVN5bmNJdGVyYXRvclByb3RvdHlwZS5oCShy
ZXZpc2lvbiAyODYwMjQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bc3luY0Zy
b21TeW5jSXRlcmF0b3JQcm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDYgQEAK
IC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTctMjAxOSBPbGVrc2FuZHIgU2thY2hrb3YgPGdza2Fj
aGtvdkBnbWFpbC5jb20+LgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlLCBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM3LDcg
KzM4LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0m
IHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUo
QXN5bmNGcm9tU3luY0l0ZXJhdG9yUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2
bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2Uo
KTsKICAgICB9CiAKICAgICBERUNMQVJFX0lORk87CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Bc3luY0Z1bmN0aW9uUHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXN5bmNGdW5jdGlvblByb3RvdHlwZS5oCShyZXZpc2lv
biAyODYwMjQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bc3luY0Z1bmN0aW9u
UHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM4LDcgKzM4LDcgQEAgcHVibGljOgogICAg
IHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAgICAg
U1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoQXN5bmNGdW5jdGlvblByb3RvdHlw
ZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAg
cmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAgREVDTEFSRV9JTkZP
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXN5bmNHZW5lcmF0b3JGdW5j
dGlvblByb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0FzeW5jR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuaAkocmV2aXNpb24gMjg2MDI0KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXN5bmNHZW5lcmF0b3JGdW5jdGlvblBy
b3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw3ICszOCw3IEBAIHB1YmxpYzoKICAgICBz
dGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAgIFNU
QVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEFzeW5jR2VuZXJhdG9yRnVuY3Rpb25Q
cm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7Cisg
ICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIERFQ0xB
UkVfSU5GTzsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FzeW5jR2VuZXJh
dG9yUHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQXN5bmNHZW5lcmF0b3JQcm90b3R5cGUuaAkocmV2aXNpb24gMjg2MDI0KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXN5bmNHZW5lcmF0b3JQcm90b3R5cGUuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNDEsNyArNDEsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIElzb1N1YnNwYWNl
KiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19T
VUJTUEFDRV9TSEFSQUJMRShBc3luY0dlbmVyYXRvclByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAg
IHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9i
amVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIEFzeW5jR2VuZXJhdG9yUHJvdG90eXBl
KiBjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSogc3RydWN0dXJlKQpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXN5bmNJdGVyYXRvclByb3RvdHlw
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FzeW5jSXRl
cmF0b3JQcm90b3R5cGUuaAkocmV2aXNpb24gMjg2MDI0KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQXN5bmNJdGVyYXRvclByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0z
OSw3ICszOSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9y
KFZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJB
QkxFKEFzeW5jSXRlcmF0b3JQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBs
YWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwog
ICAgIH0KIAogICAgIHN0YXRpYyBBc3luY0l0ZXJhdG9yUHJvdG90eXBlKiBjcmVhdGUoVk0mIHZt
LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0F0b21pY3NPYmplY3QuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BdG9taWNzT2JqZWN0LmgJKHJl
dmlzaW9uIDI4NjAyNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0F0b21pY3NP
YmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTYtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMTYtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM3LDcgKzM3LDcgQEAgcHVibGljOgogICAgIHN0
YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAgICAgU1RB
VElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoQXRvbWljc09iamVjdCwgQmFzZSk7Ci0g
ICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5w
bGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIAogICAgIHN0YXRpYyBBdG9taWNzT2JqZWN0
KiBjcmVhdGUoVk0mLCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSopOwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQmlnSW50UHJvdG90eXBlLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQmlnSW50UHJvdG90eXBlLmgJKHJldmlzaW9u
IDI4NjAyNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0JpZ0ludFByb3RvdHlw
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw3ICszOSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMg
SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19B
U1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEJpZ0ludFByb3RvdHlwZSwgQmFzZSk7Ci0gICAg
ICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFp
bk9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIEJpZ0ludFByb3RvdHlwZSogY3Jl
YXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9CcmFuZGVkU3RydWN0
dXJlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQnJhbmRl
ZFN0cnVjdHVyZS5oCShyZXZpc2lvbiAyODYwMjQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9CcmFuZGVkU3RydWN0dXJlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ3LDcgKzQ3LDcg
QEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlLCBTdWJzcGFjZUFjY2Vz
cz4KICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7Ci0g
ICAgICAgIHJldHVybiAmdm0uYnJhbmRlZFN0cnVjdHVyZVNwYWNlOworICAgICAgICByZXR1cm4g
JnZtLmJyYW5kZWRTdHJ1Y3R1cmVTcGFjZSgpOwogICAgIH0KIAogICAgIEFMV0FZU19JTkxJTkUg
Ym9vbCBjaGVja0JyYW5kKFN5bWJvbCogYnJhbmQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9CdXR0ZXJmbHlJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQnV0dGVyZmx5SW5saW5lcy5oCShyZXZpc2lvbiAyODYwMjQpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9CdXR0ZXJmbHlJbmxpbmVzLmgJKHdvcmtp
bmcgY29weSkKQEAgLTc3LDcgKzc3LDcgQEAgQUxXQVlTX0lOTElORSB1bnNpZ25lZCBCdXR0ZXJm
bHk6Om9wdGltYQogaW5saW5lIEJ1dHRlcmZseSogQnV0dGVyZmx5Ojp0cnlDcmVhdGVVbmluaXRp
YWxpemVkKFZNJiB2bSwgSlNPYmplY3QqLCBzaXplX3QgcHJlQ2FwYWNpdHksIHNpemVfdCBwcm9w
ZXJ0eUNhcGFjaXR5LCBib29sIGhhc0luZGV4aW5nSGVhZGVyLCBzaXplX3QgaW5kZXhpbmdQYXls
b2FkU2l6ZUluQnl0ZXMsIEdDRGVmZXJyYWxDb250ZXh0KiBkZWZlcnJhbENvbnRleHQpCiB7CiAg
ICAgc2l6ZV90IHNpemUgPSB0b3RhbFNpemUocHJlQ2FwYWNpdHksIHByb3BlcnR5Q2FwYWNpdHks
IGhhc0luZGV4aW5nSGVhZGVyLCBpbmRleGluZ1BheWxvYWRTaXplSW5CeXRlcyk7Ci0gICAgdm9p
ZCogYmFzZSA9IHZtLmpzVmFsdWVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlLmFsbG9jYXRlTm9uVmly
dHVhbCh2bSwgc2l6ZSwgZGVmZXJyYWxDb250ZXh0LCBBbGxvY2F0aW9uRmFpbHVyZU1vZGU6OlJl
dHVybk51bGwpOworICAgIHZvaWQqIGJhc2UgPSB2bS5qc1ZhbHVlR2lnYWNhZ2VBdXhpbGlhcnlT
cGFjZSgpLmFsbG9jYXRlTm9uVmlydHVhbCh2bSwgc2l6ZSwgZGVmZXJyYWxDb250ZXh0LCBBbGxv
Y2F0aW9uRmFpbHVyZU1vZGU6OlJldHVybk51bGwpOwogICAgIGlmIChVTkxJS0VMWSghYmFzZSkp
CiAgICAgICAgIHJldHVybiBudWxscHRyOwogCkBAIC04OSw3ICs4OSw3IEBAIGlubGluZSBCdXR0
ZXJmbHkqIEJ1dHRlcmZseTo6dHJ5Q3JlYXRlVW4KIGlubGluZSBCdXR0ZXJmbHkqIEJ1dHRlcmZs
eTo6Y3JlYXRlVW5pbml0aWFsaXplZChWTSYgdm0sIEpTT2JqZWN0Kiwgc2l6ZV90IHByZUNhcGFj
aXR5LCBzaXplX3QgcHJvcGVydHlDYXBhY2l0eSwgYm9vbCBoYXNJbmRleGluZ0hlYWRlciwgc2l6
ZV90IGluZGV4aW5nUGF5bG9hZFNpemVJbkJ5dGVzKQogewogICAgIHNpemVfdCBzaXplID0gdG90
YWxTaXplKHByZUNhcGFjaXR5LCBwcm9wZXJ0eUNhcGFjaXR5LCBoYXNJbmRleGluZ0hlYWRlciwg
aW5kZXhpbmdQYXlsb2FkU2l6ZUluQnl0ZXMpOwotICAgIHZvaWQqIGJhc2UgPSB2bS5qc1ZhbHVl
R2lnYWNhZ2VBdXhpbGlhcnlTcGFjZS5hbGxvY2F0ZU5vblZpcnR1YWwodm0sIHNpemUsIG51bGxw
dHIsIEFsbG9jYXRpb25GYWlsdXJlTW9kZTo6QXNzZXJ0KTsKKyAgICB2b2lkKiBiYXNlID0gdm0u
anNWYWx1ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UoKS5hbGxvY2F0ZU5vblZpcnR1YWwodm0sIHNp
emUsIG51bGxwdHIsIEFsbG9jYXRpb25GYWlsdXJlTW9kZTo6QXNzZXJ0KTsKICAgICBCdXR0ZXJm
bHkqIHJlc3VsdCA9IGZyb21CYXNlKGJhc2UsIHByZUNhcGFjaXR5LCBwcm9wZXJ0eUNhcGFjaXR5
KTsKIAogICAgIHJldHVybiByZXN1bHQ7CkBAIC05OCw3ICs5OCw3IEBAIGlubGluZSBCdXR0ZXJm
bHkqIEJ1dHRlcmZseTo6Y3JlYXRlVW5pbmkKIGlubGluZSBCdXR0ZXJmbHkqIEJ1dHRlcmZseTo6
dHJ5Q3JlYXRlKFZNJiB2bSwgSlNPYmplY3QqLCBzaXplX3QgcHJlQ2FwYWNpdHksIHNpemVfdCBw
cm9wZXJ0eUNhcGFjaXR5LCBib29sIGhhc0luZGV4aW5nSGVhZGVyLCBjb25zdCBJbmRleGluZ0hl
YWRlciYgaW5kZXhpbmdIZWFkZXIsIHNpemVfdCBpbmRleGluZ1BheWxvYWRTaXplSW5CeXRlcykK
IHsKICAgICBzaXplX3Qgc2l6ZSA9IHRvdGFsU2l6ZShwcmVDYXBhY2l0eSwgcHJvcGVydHlDYXBh
Y2l0eSwgaGFzSW5kZXhpbmdIZWFkZXIsIGluZGV4aW5nUGF5bG9hZFNpemVJbkJ5dGVzKTsKLSAg
ICB2b2lkKiBiYXNlID0gdm0uanNWYWx1ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UuYWxsb2NhdGVO
b25WaXJ0dWFsKHZtLCBzaXplLCBudWxscHRyLCBBbGxvY2F0aW9uRmFpbHVyZU1vZGU6OlJldHVy
bk51bGwpOworICAgIHZvaWQqIGJhc2UgPSB2bS5qc1ZhbHVlR2lnYWNhZ2VBdXhpbGlhcnlTcGFj
ZSgpLmFsbG9jYXRlTm9uVmlydHVhbCh2bSwgc2l6ZSwgbnVsbHB0ciwgQWxsb2NhdGlvbkZhaWx1
cmVNb2RlOjpSZXR1cm5OdWxsKTsKICAgICBpZiAoIWJhc2UpCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwogICAgIEJ1dHRlcmZseSogcmVzdWx0ID0gZnJvbUJhc2UoYmFzZSwgcHJlQ2FwYWNpdHks
IHByb3BlcnR5Q2FwYWNpdHkpOwpAQCAtMTc0LDcgKzE3NCw3IEBAIGlubGluZSBCdXR0ZXJmbHkq
IEJ1dHRlcmZseTo6Z3Jvd0FycmF5UmkKICAgICB2b2lkKiB0aGVCYXNlID0gYmFzZSgwLCBwcm9w
ZXJ0eUNhcGFjaXR5KTsKICAgICBzaXplX3Qgb2xkU2l6ZSA9IHRvdGFsU2l6ZSgwLCBwcm9wZXJ0
eUNhcGFjaXR5LCBoYWRJbmRleGluZ0hlYWRlciwgb2xkSW5kZXhpbmdQYXlsb2FkU2l6ZUluQnl0
ZXMpOwogICAgIHNpemVfdCBuZXdTaXplID0gdG90YWxTaXplKDAsIHByb3BlcnR5Q2FwYWNpdHks
IHRydWUsIG5ld0luZGV4aW5nUGF5bG9hZFNpemVJbkJ5dGVzKTsKLSAgICB2b2lkKiBuZXdCYXNl
ID0gdm0uanNWYWx1ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UuYWxsb2NhdGVOb25WaXJ0dWFsKHZt
LCBuZXdTaXplLCBudWxscHRyLCBBbGxvY2F0aW9uRmFpbHVyZU1vZGU6OlJldHVybk51bGwpOwor
ICAgIHZvaWQqIG5ld0Jhc2UgPSB2bS5qc1ZhbHVlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZSgpLmFs
bG9jYXRlTm9uVmlydHVhbCh2bSwgbmV3U2l6ZSwgbnVsbHB0ciwgQWxsb2NhdGlvbkZhaWx1cmVN
b2RlOjpSZXR1cm5OdWxsKTsKICAgICBpZiAoIW5ld0Jhc2UpCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwogICAgIC8vIEZJWE1FOiBUaGlzIHByb2JhYmx5IHNob3VsZG4ndCBiZSBhIG1lbWNweS4K
QEAgLTIxMSwxMyArMjExLDEzIEBAIGlubGluZSBCdXR0ZXJmbHkqIEJ1dHRlcmZseTo6cmVhbGxv
Y0FycmEKICAgICAvLyBPYmplY3RzIHdpdGggbm8gcHJvcGVydGllcyBhcmUgY29tbW9uIGluIGFy
cmF5cywgYW5kIHdlIGFyZSBmb2N1c2luZyBvbiB2ZXJ5IGxhcmdlIGFycmF5IGNyYWZ0ZWQgYnkg
cmVwZWF0aW5nIEFycmF5I3B1c2gsIHNvLi4uIHRoYXQncyBmaW5lIQogICAgIGJvb2wgY2FuUmVh
bGxvYyA9ICFwcm9wZXJ0eUNhcGFjaXR5ICYmICF2bS5oZWFwLm11dGF0b3JTaG91bGRCZUZlbmNl
ZCgpICYmIGJpdHdpc2VfY2FzdDxIZWFwQ2VsbCo+KHRoZUJhc2UpLT5pc1ByZWNpc2VBbGxvY2F0
aW9uKCk7CiAgICAgaWYgKGNhblJlYWxsb2MpIHsKLSAgICAgICAgdm9pZCogbmV3QmFzZSA9IHZt
LmpzVmFsdWVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlLnJlYWxsb2NhdGVQcmVjaXNlQWxsb2NhdGlv
bk5vblZpcnR1YWwodm0sIGJpdHdpc2VfY2FzdDxIZWFwQ2VsbCo+KHRoZUJhc2UpLCBuZXdTaXpl
LCAmZGVmZXJyYWxDb250ZXh0LCBBbGxvY2F0aW9uRmFpbHVyZU1vZGU6OlJldHVybk51bGwpOwor
ICAgICAgICB2b2lkKiBuZXdCYXNlID0gdm0uanNWYWx1ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2Uo
KS5yZWFsbG9jYXRlUHJlY2lzZUFsbG9jYXRpb25Ob25WaXJ0dWFsKHZtLCBiaXR3aXNlX2Nhc3Q8
SGVhcENlbGwqPih0aGVCYXNlKSwgbmV3U2l6ZSwgJmRlZmVycmFsQ29udGV4dCwgQWxsb2NhdGlv
bkZhaWx1cmVNb2RlOjpSZXR1cm5OdWxsKTsKICAgICAgICAgaWYgKCFuZXdCYXNlKQogICAgICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIHJldHVybiBmcm9tQmFzZShuZXdCYXNlLCAw
LCBwcm9wZXJ0eUNhcGFjaXR5KTsKICAgICB9CiAKLSAgICB2b2lkKiBuZXdCYXNlID0gdm0uanNW
YWx1ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UuYWxsb2NhdGVOb25WaXJ0dWFsKHZtLCBuZXdTaXpl
LCAmZGVmZXJyYWxDb250ZXh0LCBBbGxvY2F0aW9uRmFpbHVyZU1vZGU6OlJldHVybk51bGwpOwor
ICAgIHZvaWQqIG5ld0Jhc2UgPSB2bS5qc1ZhbHVlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZSgpLmFs
bG9jYXRlTm9uVmlydHVhbCh2bSwgbmV3U2l6ZSwgJmRlZmVycmFsQ29udGV4dCwgQWxsb2NhdGlv
bkZhaWx1cmVNb2RlOjpSZXR1cm5OdWxsKTsKICAgICBpZiAoIW5ld0Jhc2UpCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwogICAgIGdjU2FmZU1lbWNweShzdGF0aWNfY2FzdDxKU1ZhbHVlKj4obmV3
QmFzZSksIHN0YXRpY19jYXN0PEpTVmFsdWUqPih0aGVCYXNlKSwgb2xkU2l6ZSk7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DbG9uZWRBcmd1bWVudHMuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DbG9uZWRBcmd1bWVudHMuaAkocmV2
aXNpb24gMjg2MDI0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2xvbmVkQXJn
dW1lbnRzLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDcgKzQ2LDcgQEAgcHVibGljOgogICAgIHN0
YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAgICAgc3Rh
dGljX2Fzc2VydCghQ2VsbFR5cGU6Om5lZWRzRGVzdHJ1Y3Rpb24sICIiKTsKLSAgICAgICAgcmV0
dXJuICZ2bS5jbG9uZWRBcmd1bWVudHNTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5jbG9uZWRB
cmd1bWVudHNTcGFjZSgpOwogICAgIH0KICAgICAKIHByaXZhdGU6CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Db25zb2xlT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29uc29sZU9iamVjdC5oCShyZXZpc2lvbiAyODYwMjQp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db25zb2xlT2JqZWN0LmgJKHdvcmtp
bmcgY29weSkKQEAgLTM3LDcgKzM3LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJc29TdWJzcGFj
ZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09f
U1VCU1BBQ0VfU0hBUkFCTEUoQ29uc29sZU9iamVjdCwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAm
dm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNl
KCk7CiAgICAgfQogCiAgICAgc3RhdGljIENvbnNvbGVPYmplY3QqIGNyZWF0ZShWTSYgdm0sIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlKQpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ3VzdG9tR2V0dGVyU2V0dGVyLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ3VzdG9tR2V0dGVyU2V0dGVy
LmgJKHJldmlzaW9uIDI4NjAyNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0N1
c3RvbUdldHRlclNldHRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC00Myw3ICs0Myw3IEBAIHB1Ymxp
YzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vic3BhY2VBY2Nlc3M+CiAgICAg
c3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewotICAgICAgICBy
ZXR1cm4gJnZtLmN1c3RvbUdldHRlclNldHRlclNwYWNlOworICAgICAgICByZXR1cm4gJnZtLmN1
c3RvbUdldHRlclNldHRlclNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIEN1c3RvbUdldHRl
clNldHRlciogY3JlYXRlKFZNJiB2bSwgQ3VzdG9tR2V0dGVyIGN1c3RvbUdldHRlciwgQ3VzdG9t
U2V0dGVyIGN1c3RvbVNldHRlcikKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0RPTUF0dHJpYnV0ZUdldHRlclNldHRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0RPTUF0dHJpYnV0ZUdldHRlclNldHRlci5oCShyZXZpc2lvbiAyODYw
MjQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9ET01BdHRyaWJ1dGVHZXR0ZXJT
ZXR0ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNDMsNyArNDMsNyBAQCBwdWJsaWM6CiAgICAgdGVt
cGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNzPgogICAgIHN0YXRpYyBJc29T
dWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKLSAgICAgICAgcmV0dXJuICZ2bS5k
b21BdHRyaWJ1dGVHZXR0ZXJTZXR0ZXJTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5kb21BdHRy
aWJ1dGVHZXR0ZXJTZXR0ZXJTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBET01BdHRyaWJ1
dGVHZXR0ZXJTZXR0ZXIqIGNyZWF0ZShWTSYgdm0sIEN1c3RvbUdldHRlciBjdXN0b21HZXR0ZXIs
IEN1c3RvbVNldHRlciBjdXN0b21TZXR0ZXIsIERPTUF0dHJpYnV0ZUFubm90YXRpb24gZG9tQXR0
cmlidXRlKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUluc3RhbmNl
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUluc3Rh
bmNlLmgJKHJldmlzaW9uIDI4NjAyNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0RhdGVJbnN0YW5jZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw3ICszNyw3IEBAIHB1YmxpYzoK
ICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vic3BhY2VBY2Nlc3MgbW9kZT4KICAg
ICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7Ci0gICAgICAg
IHJldHVybiAmdm0uZGF0ZUluc3RhbmNlU3BhY2U7CisgICAgICAgIHJldHVybiAmdm0uZGF0ZUlu
c3RhbmNlU3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgRGF0ZUluc3RhbmNlKiBjcmVhdGUo
Vk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgZG91YmxlIGRhdGUpCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlUHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZVByb3RvdHlwZS5oCShyZXZpc2lvbiAyODYw
MjQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlUHJvdG90eXBlLmgJKHdv
cmtpbmcgY29weSkKQEAgLTM1LDcgKzM1LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJc29TdWJz
cGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9J
U09fU1VCU1BBQ0VfU0hBUkFCTEUoRGF0ZVByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVy
biAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNw
YWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIERhdGVQcm90b3R5cGUqIGNyZWF0ZShWTSYgdm0s
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlKQpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGlyZWN0QXJndW1lbnRzLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGlyZWN0QXJndW1lbnRzLmgJ
KHJldmlzaW9uIDI4NjAyNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RpcmVj
dEFyZ3VtZW50cy5oCSh3b3JraW5nIGNvcHkpCkBAIC01MCw3ICs1MCw3IEBAIHB1YmxpYzoKICAg
ICBzdGF0aWMgQ29tcGxldGVTdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAg
ICAgICAgc3RhdGljX2Fzc2VydCghQ2VsbFR5cGU6Om5lZWRzRGVzdHJ1Y3Rpb24sICIiKTsKLSAg
ICAgICAgcmV0dXJuICZ2bS52YXJpYWJsZVNpemVkQ2VsbFNwYWNlOworICAgICAgICByZXR1cm4g
JnZtLnZhcmlhYmxlU2l6ZWRDZWxsU3BhY2UoKTsKICAgICB9CiAKICAgICAvLyBDcmVhdGVzIGFu
IGFyZ3VtZW50cyBvYmplY3QgYnV0IGxlYXZlcyBpdCB1bmluaXRpYWxpemVkLiBUaGlzIGlzIGRh
bmdlcm91cyBpZiB3ZSBHQyByaWdodApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvRXJyb3JQcm90b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9FcnJvclByb3RvdHlwZS5oCShyZXZpc2lvbiAyODYwMjQpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9FcnJvclByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00
NSw3ICs0NSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9y
KFZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJB
QkxFKEVycm9yUHJvdG90eXBlQmFzZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5P
YmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAg
fQogCiAgICAgREVDTEFSRV9JTkZPOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvRXhjZXB0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvRXhjZXB0aW9uLmgJKHJldmlzaW9uIDI4NjAyNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0V4Y2VwdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC00MCw3ICs0MCw3IEBAIHB1
YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vic3BhY2VBY2Nlc3MgbW9k
ZT4KICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7Ci0g
ICAgICAgIHJldHVybiAmdm0uZXhjZXB0aW9uU3BhY2U7CisgICAgICAgIHJldHVybiAmdm0uZXhj
ZXB0aW9uU3BhY2UoKTsKICAgICB9CiAKICAgICBlbnVtIFN0YWNrQ2FwdHVyZUFjdGlvbiB7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GaW5hbGl6YXRpb25SZWdpc3RyeVBy
b3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Zp
bmFsaXphdGlvblJlZ2lzdHJ5UHJvdG90eXBlLmgJKHJldmlzaW9uIDI4NjAyNCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ZpbmFsaXphdGlvblJlZ2lzdHJ5UHJvdG90eXBlLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTM3LDcgKzM3LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJc29T
dWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VS
VF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoRmluYWxpemF0aW9uUmVnaXN0cnlQcm90b3R5cGUsIEJh
c2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVy
biAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBGaW5hbGl6YXRp
b25SZWdpc3RyeVByb3RvdHlwZSogY3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9GdW5jdGlvbkV4ZWN1dGFibGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkV4ZWN1dGFibGUuaAkocmV2aXNpb24gMjg2MDI0
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25FeGVjdXRhYmxlLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTQ2LDcgKzQ2LDcgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5
cGVuYW1lIENlbGxUeXBlLCBTdWJzcGFjZUFjY2Vzcz4KICAgICBzdGF0aWMgSXNvU3Vic3BhY2Uq
IHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7Ci0gICAgICAgIHJldHVybiAmdm0uZnVuY3Rpb25F
eGVjdXRhYmxlU3BhY2Uuc3BhY2U7CisgICAgICAgIHJldHVybiAmdm0uZnVuY3Rpb25FeGVjdXRh
YmxlU3BhY2UoKS5zcGFjZTsKICAgICB9CiAKICAgICBzdGF0aWMgRnVuY3Rpb25FeGVjdXRhYmxl
KiBjcmVhdGUoVk0mIHZtLCBTY3JpcHRFeGVjdXRhYmxlKiB0b3BMZXZlbEV4ZWN1dGFibGUsIGNv
bnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIHVubGlu
a2VkRXhlY3V0YWJsZSwgSW50cmluc2ljIGludHJpbnNpYywgYm9vbCBpc0luc2lkZU9yZGluYXJ5
RnVuY3Rpb24pCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JG
dW5jdGlvblByb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0dlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmgJKHJldmlzaW9uIDI4NjAyNCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBl
LmgJKHdvcmtpbmcgY29weSkKQEAgLTQwLDcgKzQwLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJ
c29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FT
U0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUsIEJh
c2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVy
biAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBHZW5lcmF0b3JG
dW5jdGlvblByb3RvdHlwZSogY3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JQcm90b3R5cGUuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JQcm90
b3R5cGUuaAkocmV2aXNpb24gMjg2MDI0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvR2VuZXJhdG9yUHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQxLDcgKzQxLDcgQEAg
cHVibGljOgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAg
IHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoR2VuZXJhdG9y
UHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOwor
ICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0
aWMgR2VuZXJhdG9yUHJvdG90eXBlKiBjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCosIFN0
cnVjdHVyZSogc3RydWN0dXJlKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
R2V0dGVyU2V0dGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvR2V0dGVyU2V0dGVyLmgJKHJldmlzaW9uIDI4NjAyNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0dldHRlclNldHRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC01OSw3ICs1OSw3
IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vic3BhY2VBY2Nl
c3M+CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewot
ICAgICAgICByZXR1cm4gJnZtLmdldHRlclNldHRlclNwYWNlOworICAgICAgICByZXR1cm4gJnZt
LmdldHRlclNldHRlclNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIEdldHRlclNldHRlciog
Y3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNPYmplY3QqIGdl
dHRlciwgSlNPYmplY3QqIHNldHRlcikKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0hhc2hNYXBJbXBsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSGFzaE1hcEltcGwuaAkocmV2aXNpb24gMjg2MDI0KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSGFzaE1hcEltcGwuaAkod29ya2luZyBjb3B5KQpAQCAtMjEzLDcgKzIx
Myw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKICAgICAgICAgc2l6ZV90IGFsbG9jYXRpb25TaXplID0gSGFzaE1hcEJ1ZmZl
cjo6YWxsb2NhdGlvblNpemUoY2FwYWNpdHkpOwotICAgICAgICB2b2lkKiBkYXRhID0gdm0uanNW
YWx1ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UuYWxsb2NhdGVOb25WaXJ0dWFsKHZtLCBhbGxvY2F0
aW9uU2l6ZSwgbnVsbHB0ciwgQWxsb2NhdGlvbkZhaWx1cmVNb2RlOjpSZXR1cm5OdWxsKTsKKyAg
ICAgICAgdm9pZCogZGF0YSA9IHZtLmpzVmFsdWVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlKCkuYWxs
b2NhdGVOb25WaXJ0dWFsKHZtLCBhbGxvY2F0aW9uU2l6ZSwgbnVsbHB0ciwgQWxsb2NhdGlvbkZh
aWx1cmVNb2RlOjpSZXR1cm5OdWxsKTsKICAgICAgICAgaWYgKCFkYXRhKSB7CiAgICAgICAgICAg
ICB0aHJvd091dE9mTWVtb3J5RXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSk7CiAgICAgICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lu
dGVybmFsRnVuY3Rpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9JbnRlcm5hbEZ1bmN0aW9uLmgJKHJldmlzaW9uIDI4NjAyNCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0ludGVybmFsRnVuY3Rpb24uaAkod29ya2luZyBjb3B5KQpAQCAt
NDEsNyArNDEsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZv
cihWTSYgdm0pCiAgICAgewogICAgICAgICBzdGF0aWNfYXNzZXJ0KHNpemVvZihDZWxsVHlwZSkg
PT0gc2l6ZW9mKEludGVybmFsRnVuY3Rpb24pLCAiSW50ZXJuYWxGdW5jdGlvbiBzdWJjbGFzc2Vz
IHRoYXQgYWRkIGZpZWxkcyBuZWVkIHRvIG92ZXJyaWRlIHN1YnNwYWNlRm9yPD4oKSIpOwotICAg
ICAgICByZXR1cm4gJnZtLmludGVybmFsRnVuY3Rpb25TcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2
bS5pbnRlcm5hbEZ1bmN0aW9uU3BhY2UoKTsKICAgICB9CiAKICAgICBERUNMQVJFX0VYUE9SVF9J
TkZPOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bENvbGxhdG9yUHJv
dG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50
bENvbGxhdG9yUHJvdG90eXBlLmgJKHJldmlzaW9uIDI4NjAyNCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0ludGxDb2xsYXRvclByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDYgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxNSBBbmR5IFZhbldhZ29uZXIg
KGFuZHlAdmFud2Fnb25lci5mYW1pbHkpCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE5LTIwMjEgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CkBAIC0zOSw3ICszOSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNw
YWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNF
X1NIQVJBQkxFKEludGxDb2xsYXRvclByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAm
dm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNl
KCk7CiAgICAgfQogCiAgICAgc3RhdGljIEludGxDb2xsYXRvclByb3RvdHlwZSogY3JlYXRlKFZN
JiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdFByb3RvdHlw
ZS5oCShyZXZpc2lvbiAyODYwMjQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9J
bnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMSw2ICsxLDYg
QEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQW5keSBWYW5XYWdvbmVyIChhbmR5QHZhbndh
Z29uZXIuZmFtaWx5KQotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxOS0yMDIxIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzksNyAr
MzksNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYg
dm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShJ
bnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBs
YWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwog
ICAgIH0KIAogICAgIHN0YXRpYyBJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUqIGNyZWF0ZShW
TSYsIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9JbnRsRGlzcGxheU5hbWVzUHJvdG90eXBlLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERpc3BsYXlOYW1lc1Byb3RvdHlwZS5o
CShyZXZpc2lvbiAyODYwMjQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRs
RGlzcGxheU5hbWVzUHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAv
KgotICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAyMC0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzgsNyArMzgsNyBAQCBwdWJs
aWM6CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewog
ICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShJbnRsRGlzcGxheU5h
bWVzUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNl
OworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBz
dGF0aWMgSW50bERpc3BsYXlOYW1lc1Byb3RvdHlwZSogY3JlYXRlKFZNJiwgU3RydWN0dXJlKik7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTGlzdEZvcm1hdFByb3Rv
dHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxM
aXN0Rm9ybWF0UHJvdG90eXBlLmgJKHJldmlzaW9uIDI4NjAyNCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0ludGxMaXN0Rm9ybWF0UHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkK
QEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAyMC0yMDIxIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAt
MzgsNyArMzgsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZv
cihWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFS
QUJMRShJbnRsTGlzdEZvcm1hdFByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0u
cGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7
CiAgICAgfQogCiAgICAgc3RhdGljIEludGxMaXN0Rm9ybWF0UHJvdG90eXBlKiBjcmVhdGUoVk0m
LCBTdHJ1Y3R1cmUqKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxM
b2NhbGVQcm90b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9JbnRsTG9jYWxlUHJvdG90eXBlLmgJKHJldmlzaW9uIDI4NjAyNCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxMb2NhbGVQcm90b3R5cGUuaAkod29ya2luZyBjb3B5
KQpAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMjAgU29ueSBJbnRlcmFj
dGl2ZSBFbnRlcnRhaW5tZW50IEluYy4KKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAg
LTM4LDcgKzM5LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VG
b3IoVk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hB
UkFCTEUoSW50bExvY2FsZVByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxh
aW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAg
ICAgfQogCiAgICAgc3RhdGljIEludGxMb2NhbGVQcm90b3R5cGUqIGNyZWF0ZShWTSYsIFN0cnVj
dHVyZSopOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZv
cm1hdFByb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0ludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUuaAkocmV2aXNpb24gMjg2MDI0KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdFByb3RvdHlwZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxNSBB
bmR5IFZhbldhZ29uZXIgKGFuZHlAdmFud2Fnb25lci5mYW1pbHkpCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDE5LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCkBAIC0zOSw3ICszOSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNv
U3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NF
UlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUsIEJhc2Up
OwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAm
dm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBJbnRsTnVtYmVyRm9y
bWF0UHJvdG90eXBlKiBjcmVhdGUoVk0mLCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSopOwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE9iamVjdC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxPYmplY3QuaAkocmV2aXNp
b24gMjg2MDI0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE9iamVjdC5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAx
NSBBbmR5IFZhbldhZ29uZXIgKGFuZHlAdmFud2Fnb25lci5mYW1pbHkpCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTktMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMTktMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5
cmlnaHQgKEMpIDIwMjAgU29ueSBJbnRlcmFjdGl2ZSBFbnRlcnRhaW5tZW50IEluYy4KICAqCiAg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKQEAgLTc2LDcgKzc2LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJc29TdWJz
cGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9J
U09fU1VCU1BBQ0VfU0hBUkFCTEUoSW50bE9iamVjdCwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAm
dm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNl
KCk7CiAgICAgfQogCiAgICAgc3RhdGljIEludGxPYmplY3QqIGNyZWF0ZShWTSYsIEpTR2xvYmFs
T2JqZWN0KiwgU3RydWN0dXJlKik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9JbnRsUGx1cmFsUnVsZXNQcm90b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9JbnRsUGx1cmFsUnVsZXNQcm90b3R5cGUuaAkocmV2aXNpb24gMjg2
MDI0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFBsdXJhbFJ1bGVzUHJv
dG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw2IEBACiAvKgogICogQ29weXJpZ2h0
IChDKSAyMDE4IEFuZHkgVmFuV2Fnb25lciAoYW5keUB2YW53YWdvbmVyLmZhbWlseSkKLSAqIENv
cHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTktMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM5LDcgKzM5LDcgQEAgcHVibGljOgogICAg
IHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAgICAg
U1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSW50bFBsdXJhbFJ1bGVzUHJvdG90
eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAg
ICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgSW50
bFBsdXJhbFJ1bGVzUHJvdG90eXBlKiBjcmVhdGUoVk0mLCBKU0dsb2JhbE9iamVjdCosIFN0cnVj
dHVyZSopOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFJlbGF0aXZl
VGltZUZvcm1hdFByb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0ludGxSZWxhdGl2ZVRpbWVGb3JtYXRQcm90b3R5cGUuaAkocmV2aXNpb24gMjg2
MDI0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFJlbGF0aXZlVGltZUZv
cm1hdFByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENv
cHlyaWdodCAoQykgMjAyMCBTb255IEludGVyYWN0aXZlIEVudGVydGFpbm1lbnQgSW5jLgorICog
Q29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzgsNyArMzksNyBAQCBwdWJsaWM6CiAgICAg
c3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewogICAgICAgICBT
VEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShJbnRsUmVsYXRpdmVUaW1lRm9ybWF0
UHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOwor
ICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0
aWMgSW50bFJlbGF0aXZlVGltZUZvcm1hdFByb3RvdHlwZSogY3JlYXRlKFZNJiwgU3RydWN0dXJl
Kik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsU2VnbWVudEl0ZXJh
dG9yUHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSW50bFNlZ21lbnRJdGVyYXRvclByb3RvdHlwZS5oCShyZXZpc2lvbiAyODYwMjQpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsU2VnbWVudEl0ZXJhdG9yUHJvdG90eXBl
LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAy
MDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAy
MC0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpAQCAtMzgsNyArMzgsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIElzb1N1
YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJU
X0lTT19TVUJTUEFDRV9TSEFSQUJMRShJbnRsU2VnbWVudEl0ZXJhdG9yUHJvdG90eXBlLCBCYXNl
KTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4g
JnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgSW50bFNlZ21lbnRJ
dGVyYXRvclByb3RvdHlwZSogY3JlYXRlKFZNJiwgU3RydWN0dXJlKik7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsU2VnbWVudGVyUHJvdG90eXBlLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFNlZ21lbnRlclByb3RvdHlw
ZS5oCShyZXZpc2lvbiAyODYwMjQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9J
bnRsU2VnbWVudGVyUHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAv
KgotICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAyMC0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzgsNyArMzgsNyBAQCBwdWJs
aWM6CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewog
ICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShJbnRsU2VnbWVudGVy
UHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOwor
ICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0
aWMgSW50bFNlZ21lbnRlclByb3RvdHlwZSogY3JlYXRlKFZNJiwgU3RydWN0dXJlKik7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsU2VnbWVudHNQcm90b3R5cGUuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsU2VnbWVudHNQ
cm90b3R5cGUuaAkocmV2aXNpb24gMjg2MDI0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSW50bFNlZ21lbnRzUHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1
IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAyMC0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzgsNyArMzgsNyBA
QCBwdWJsaWM6CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAg
ICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShJbnRsU2Vn
bWVudHNQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3Bh
Y2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAg
IHN0YXRpYyBJbnRsU2VnbWVudHNQcm90b3R5cGUqIGNyZWF0ZShWTSYsIEpTR2xvYmFsT2JqZWN0
KiwgU3RydWN0dXJlKik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JdGVy
YXRvclByb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0l0ZXJhdG9yUHJvdG90eXBlLmgJKHJldmlzaW9uIDI4NjAyNCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0l0ZXJhdG9yUHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAg
LTM5LDcgKzM5LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VG
b3IoVk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hB
UkFCTEUoSXRlcmF0b3JQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWlu
T2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAg
IH0KIAogICAgIHN0YXRpYyBJdGVyYXRvclByb3RvdHlwZSogY3JlYXRlKFZNJiB2bSwgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmNwcAkocmV2aXNpb24gMjg2MDI0KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTU2LDcgKzU2LDcgQEAgSlNBcnJheSogSlNBcnJheTo6dHJ5Q3JlYXRlVW5pbml0aWFs
aXplZAogICAgICAgICAgICAgfHwgaGFzQ29udGlndW91cyhpbmRleGluZ1R5cGUpKTsKIAogICAg
ICAgICB1bnNpZ25lZCB2ZWN0b3JMZW5ndGggPSBCdXR0ZXJmbHk6Om9wdGltYWxDb250aWd1b3Vz
VmVjdG9yTGVuZ3RoKHN0cnVjdHVyZSwgaW5pdGlhbExlbmd0aCk7Ci0gICAgICAgIHZvaWQqIHRl
bXAgPSB2bS5qc1ZhbHVlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZS5hbGxvY2F0ZU5vblZpcnR1YWwo
CisgICAgICAgIHZvaWQqIHRlbXAgPSB2bS5qc1ZhbHVlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZSgp
LmFsbG9jYXRlTm9uVmlydHVhbCgKICAgICAgICAgICAgIHZtLAogICAgICAgICAgICAgQnV0dGVy
Zmx5Ojp0b3RhbFNpemUoMCwgb3V0T2ZMaW5lU3RvcmFnZSwgdHJ1ZSwgdmVjdG9yTGVuZ3RoICog
c2l6ZW9mKEVuY29kZWRKU1ZhbHVlKSksCiAgICAgICAgICAgICBkZWZlcnJhbENvbnRleHQsIEFs
bG9jYXRpb25GYWlsdXJlTW9kZTo6UmV0dXJuTnVsbCk7CkBAIC03OCw3ICs3OCw3IEBAIEpTQXJy
YXkqIEpTQXJyYXk6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQKICAgICAgICAgICAgIHx8IGluZGV4
aW5nVHlwZSA9PSBBcnJheVdpdGhBcnJheVN0b3JhZ2UpOwogICAgICAgICBzdGF0aWMgY29uc3Rl
eHByIHVuc2lnbmVkIGluZGV4QmlhcyA9IDA7CiAgICAgICAgIHVuc2lnbmVkIHZlY3Rvckxlbmd0
aCA9IEFycmF5U3RvcmFnZTo6b3B0aW1hbFZlY3Rvckxlbmd0aChpbmRleEJpYXMsIHN0cnVjdHVy
ZSwgaW5pdGlhbExlbmd0aCk7Ci0gICAgICAgIHZvaWQqIHRlbXAgPSB2bS5qc1ZhbHVlR2lnYWNh
Z2VBdXhpbGlhcnlTcGFjZS5hbGxvY2F0ZU5vblZpcnR1YWwoCisgICAgICAgIHZvaWQqIHRlbXAg
PSB2bS5qc1ZhbHVlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZSgpLmFsbG9jYXRlTm9uVmlydHVhbCgK
ICAgICAgICAgICAgIHZtLAogICAgICAgICAgICAgQnV0dGVyZmx5Ojp0b3RhbFNpemUoaW5kZXhC
aWFzLCBvdXRPZkxpbmVTdG9yYWdlLCB0cnVlLCBBcnJheVN0b3JhZ2U6OnNpemVGb3IodmVjdG9y
TGVuZ3RoKSksCiAgICAgICAgICAgICBkZWZlcnJhbENvbnRleHQsIEFsbG9jYXRpb25GYWlsdXJl
TW9kZTo6UmV0dXJuTnVsbCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0FycmF5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNB
cnJheS5oCShyZXZpc2lvbiAyODYwMjQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0FycmF5LmgJKHdvcmtpbmcgY29weSkKQEAgLTUxLDcgKzUxLDcgQEAgcHVibGljOgogICAg
IHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlLCBTdWJzcGFjZUFjY2Vzcz4KICAgICBzdGF0aWMg
SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7Ci0gICAgICAgIHJldHVybiAm
dm0uYXJyYXlTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5hcnJheVNwYWNlKCk7CiAgICAgfQog
ICAgICAgICAKIHByb3RlY3RlZDoKQEAgLTI0NCw3ICsyNDQsNyBAQCBpbmxpbmUgSlNBcnJheSog
SlNBcnJheTo6dHJ5Q3JlYXRlKFZNJiB2CiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAog
ICAgICAgICB1bnNpZ25lZCB2ZWN0b3JMZW5ndGggPSBCdXR0ZXJmbHk6Om9wdGltYWxDb250aWd1
b3VzVmVjdG9yTGVuZ3RoKHN0cnVjdHVyZSwgdmVjdG9yTGVuZ3RoSGludCk7Ci0gICAgICAgIHZv
aWQqIHRlbXAgPSB2bS5qc1ZhbHVlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZS5hbGxvY2F0ZU5vblZp
cnR1YWwoCisgICAgICAgIHZvaWQqIHRlbXAgPSB2bS5qc1ZhbHVlR2lnYWNhZ2VBdXhpbGlhcnlT
cGFjZSgpLmFsbG9jYXRlTm9uVmlydHVhbCgKICAgICAgICAgICAgIHZtLAogICAgICAgICAgICAg
QnV0dGVyZmx5Ojp0b3RhbFNpemUoMCwgb3V0T2ZMaW5lU3RvcmFnZSwgdHJ1ZSwgdmVjdG9yTGVu
Z3RoICogc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKSksCiAgICAgICAgICAgICBudWxscHRyLCBBbGxv
Y2F0aW9uRmFpbHVyZU1vZGU6OlJldHVybk51bGwpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlclByb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJQcm90b3R5cGUuaAkocmV2aXNp
b24gMjg2MDI0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZl
clByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHly
aWdodCAoQykgMjAxMywgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTMtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM3LDcgKzM3LDcgQEAgcHVibGljOgog
ICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAg
ICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNBcnJheUJ1ZmZlclByb3Rv
dHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAg
ICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIEpT
QXJyYXlCdWZmZXJQcm90b3R5cGUqIGNyZWF0ZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0
dXJlKiwgQXJyYXlCdWZmZXJTaGFyaW5nTW9kZSA9IEFycmF5QnVmZmVyU2hhcmluZ01vZGU6OkRl
ZmF1bHQpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZl
clZpZXcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
QXJyYXlCdWZmZXJWaWV3LmNwcAkocmV2aXNpb24gMjg2MDI0KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlclZpZXcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02
NCw3ICs2NCw3IEBAIEpTQXJyYXlCdWZmZXJWaWV3OjpDb25zdHJ1Y3Rpb25Db250ZXh0OjoKICAg
ICAgICAgLy8gQXR0ZW1wdCBHQyBhbGxvY2F0aW9uLgogICAgICAgICB2b2lkKiB0ZW1wOwogICAg
ICAgICBzaXplX3Qgc2l6ZSA9IHNpemVPZihsZW5ndGgsIGVsZW1lbnRTaXplKTsKLSAgICAgICAg
dGVtcCA9IHZtLnByaW1pdGl2ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UuYWxsb2NhdGVOb25WaXJ0
dWFsKHZtLCBzaXplLCBudWxscHRyLCBBbGxvY2F0aW9uRmFpbHVyZU1vZGU6OlJldHVybk51bGwp
OworICAgICAgICB0ZW1wID0gdm0ucHJpbWl0aXZlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZSgpLmFs
bG9jYXRlTm9uVmlydHVhbCh2bSwgc2l6ZSwgbnVsbHB0ciwgQWxsb2NhdGlvbkZhaWx1cmVNb2Rl
OjpSZXR1cm5OdWxsKTsKICAgICAgICAgaWYgKCF0ZW1wKQogICAgICAgICAgICAgcmV0dXJuOwog
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JpZ0ludC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCaWdJbnQuY3BwCShyZXZp
c2lvbiAyODYwMjQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JpZ0ludC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTExNyw3ICsxMTcsNyBAQCBpbmxpbmUgSlNCaWdJbnQqIEpT
QmlnSW50OjpjcmVhdGVXaXRoTGVuCiAgICAgfQogCiAgICAgQVNTRVJUKGxlbmd0aCA8PSBtYXhM
ZW5ndGgpOwotICAgIHZvaWQqIGRhdGEgPSB2bS5wcmltaXRpdmVHaWdhY2FnZUF1eGlsaWFyeVNw
YWNlLmFsbG9jYXRlTm9uVmlydHVhbCh2bSwgbGVuZ3RoICogc2l6ZW9mKERpZ2l0KSwgbnVsbHB0
ciwgQWxsb2NhdGlvbkZhaWx1cmVNb2RlOjpSZXR1cm5OdWxsKTsKKyAgICB2b2lkKiBkYXRhID0g
dm0ucHJpbWl0aXZlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZSgpLmFsbG9jYXRlTm9uVmlydHVhbCh2
bSwgbGVuZ3RoICogc2l6ZW9mKERpZ2l0KSwgbnVsbHB0ciwgQWxsb2NhdGlvbkZhaWx1cmVNb2Rl
OjpSZXR1cm5OdWxsKTsKICAgICBpZiAoVU5MSUtFTFkoIWRhdGEpKSB7CiAgICAgICAgIGlmIChu
dWxsT3JHbG9iYWxPYmplY3RGb3JPT00pIHsKICAgICAgICAgICAgIGF1dG8gc2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTQmlnSW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNCaWdJbnQuaAkocmV2aXNpb24gMjg2MDI0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNCaWdJbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNTYsNyArNTYsNyBAQCBwdWJsaWM6
CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNzPgogICAgIHN0
YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKLSAgICAgICAgcmV0
dXJuICZ2bS5iaWdJbnRTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5iaWdJbnRTcGFjZSgpOwog
ICAgIH0KIAogICAgIGVudW0gY2xhc3MgSW5pdGlhbGl6YXRpb25UeXBlIHsgTm9uZSwgV2l0aFpl
cm8gfTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2FsbGVlLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDYWxsZWUuaAkocmV2
aXNpb24gMjg2MDI0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDYWxsZWUu
aAkod29ya2luZyBjb3B5KQpAQCAtNTAsNyArNTAsNyBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8
dHlwZW5hbWUgQ2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNzPgogICAgIHN0YXRpYyBJc29TdWJzcGFj
ZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKLSAgICAgICAgcmV0dXJuICZ2bS5jYWxsZWVT
cGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5jYWxsZWVTcGFjZSgpOwogICAgIH0KIAogICAgIHN0
YXRpYyBKU0NhbGxlZSogY3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgSlNTY29wZSogc2NvcGUpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0RhdGFWaWV3UHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNEYXRhVmlld1Byb3RvdHlwZS5oCShyZXZpc2lvbiAyODYwMjQpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGFWaWV3UHJvdG90eXBlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMTkgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMjEg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCkBAIC0zOCw3ICszOCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2Uq
IHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NV
QlNQQUNFX1NIQVJBQkxFKEpTRGF0YVZpZXdQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1
cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RT
cGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBKU0RhdGFWaWV3UHJvdG90eXBlKiBjcmVhdGUo
Vk0mLCBTdHJ1Y3R1cmUqKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
RGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Rlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5j
cHAJKHJldmlzaW9uIDI4NjAyNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
RGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTctMjAxOCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTctMjAyMSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQ4
LDEyICs0OCwxMiBAQCBKU0Rlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZTo6fkpTRGVzCiB7
CiB9CiAKLXZvaWQgSlNEZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGU6OmZpbmlzaFN3ZWVw
KE1hcmtlZEJsb2NrOjpIYW5kbGUmIGhhbmRsZSwgRnJlZUxpc3QqIGZyZWVMaXN0KQordm9pZCBK
U0Rlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZTo6ZmluaXNoU3dlZXAoTWFya2VkQmxvY2s6
OkhhbmRsZSYgaGFuZGxlLCBGcmVlTGlzdCogZnJlZUxpc3QpIGNvbnN0CiB7CiAgICAgaGFuZGxl
LmZpbmlzaFN3ZWVwS25vd2luZ0hlYXBDZWxsVHlwZShmcmVlTGlzdCwgSlNEZXN0cnVjdGlibGVP
YmplY3REZXN0cm95RnVuYygpKTsKIH0KIAotdm9pZCBKU0Rlc3RydWN0aWJsZU9iamVjdEhlYXBD
ZWxsVHlwZTo6ZGVzdHJveShWTSYgdm0sIEpTQ2VsbCogY2VsbCkKK3ZvaWQgSlNEZXN0cnVjdGli
bGVPYmplY3RIZWFwQ2VsbFR5cGU6OmRlc3Ryb3koVk0mIHZtLCBKU0NlbGwqIGNlbGwpIGNvbnN0
CiB7CiAgICAgSlNEZXN0cnVjdGlibGVPYmplY3REZXN0cm95RnVuYygpKHZtLCBjZWxsKTsKIH0K
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGVzdHJ1Y3RpYmxlT2JqZWN0
SGVhcENlbGxUeXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNEZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuaAkocmV2aXNpb24gMjg2MDI0KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEZXN0cnVjdGlibGVPYmplY3RIZWFw
Q2VsbFR5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDE3LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zNCw4ICszNCw4IEBAIHB1YmxpYzoKICAgICBKU19F
WFBPUlRfUFJJVkFURSBKU0Rlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpOwogICAgIEpT
X0VYUE9SVF9QUklWQVRFIH5KU0Rlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpIGZpbmFs
OwogICAgIAotICAgIHZvaWQgZmluaXNoU3dlZXAoTWFya2VkQmxvY2s6OkhhbmRsZSYsIEZyZWVM
aXN0KikgZmluYWw7Ci0gICAgdm9pZCBkZXN0cm95KFZNJiwgSlNDZWxsKikgZmluYWw7CisgICAg
dm9pZCBmaW5pc2hTd2VlcChNYXJrZWRCbG9jazo6SGFuZGxlJiwgRnJlZUxpc3QqKSBjb25zdCBm
aW5hbDsKKyAgICB2b2lkIGRlc3Ryb3koVk0mLCBKU0NlbGwqKSBjb25zdCBmaW5hbDsKIH07CiAK
IH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNGdW5jdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTRnVuY3Rpb24uaAkocmV2aXNpb24gMjg2MDI0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNGdW5jdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC02Niw3ICs2Niw3IEBAIHB1
YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vic3BhY2VBY2Nlc3M+CiAg
ICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewotICAgICAg
ICByZXR1cm4gJnZtLmZ1bmN0aW9uU3BhY2U7CisgICAgICAgIHJldHVybiAmdm0uZnVuY3Rpb25T
cGFjZSgpOwogICAgIH0KICAgICAKICAgICB0eXBlZGVmIEpTQ2FsbGVlIEJhc2U7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3Rv
dHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2Vu
ZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlLmgJKHJldmlzaW9uIDI4NjAyNCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG90eXBl
LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAy
MDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAx
My0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpAQCAtMzgsNyArMzgsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIElzb1N1
YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJU
X0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU0dlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZSwg
QmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0
dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIEpTR2VuZXJp
Y1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlKiBjcmVhdGUoCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0dsb2JhbExleGljYWxFbnZpcm9ubWVudC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsTGV4aWNhbEVudmlyb25tZW50
LmgJKHJldmlzaW9uIDI4NjAyNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
R2xvYmFsTGV4aWNhbEVudmlyb25tZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTM4LDcgKzM4LDcg
QEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlLCBTdWJzcGFjZUFjY2Vz
cyBtb2RlPgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAg
IHsKLSAgICAgICAgcmV0dXJuICZ2bS5nbG9iYWxMZXhpY2FsRW52aXJvbm1lbnRTcGFjZTsKKyAg
ICAgICAgcmV0dXJuICZ2bS5nbG9iYWxMZXhpY2FsRW52aXJvbm1lbnRTcGFjZSgpOwogICAgIH0K
IAogICAgIHN0YXRpYyBKU0dsb2JhbExleGljYWxFbnZpcm9ubWVudCogY3JlYXRlKFZNJiB2bSwg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTU2NvcGUqIHBhcmVudFNjb3BlKQpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNJbW11dGFibGVCdXR0ZXJmbHkuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ltbXV0YWJsZUJ1dHRlcmZseS5o
CShyZXZpc2lvbiAyODYwMjQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0lt
bXV0YWJsZUJ1dHRlcmZseS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNTMsNyArMTUzLDcgQEAgcHVi
bGljOgogICAgIHN0YXRpYyBDb21wbGV0ZVN1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAg
ICAgewogICAgICAgICAvLyBXZSBhbGxvY2F0ZSBvdXQgb2YgdGhlIEpTVmFsdWUgZ2lnYWNhZ2Ug
YXMgb3RoZXIgY29kZSBleHBlY3RzIGFsbCBidXR0ZXJmbGllcyB0byBsaXZlIHRoZXJlLgotICAg
ICAgICByZXR1cm4gJnZtLmltbXV0YWJsZUJ1dHRlcmZseUpTVmFsdWVHaWdhY2FnZUF1eGlsaWFy
eVNwYWNlOworICAgICAgICByZXR1cm4gJnZtLmltbXV0YWJsZUJ1dHRlcmZseUpTVmFsdWVHaWdh
Y2FnZUF1eGlsaWFyeVNwYWNlKCk7CiAgICAgfQogCiAgICAgLy8gT25seSBjYWxsIHRoaXMgaWYg
eW91IGp1c3QgYWxsb2NhdGVkIHRoaXMgYnV0dGVyZmx5LgpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNMZXhpY2FsRW52aXJvbm1lbnQuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xleGljYWxFbnZpcm9ubWVudC5oCShyZXZpc2lv
biAyODYwMjQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xleGljYWxFbnZp
cm9ubWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC00NCw3ICs0NCw3IEBAIHB1YmxpYzoKICAgICBz
dGF0aWMgQ29tcGxldGVTdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAg
ICAgc3RhdGljX2Fzc2VydCghQ2VsbFR5cGU6Om5lZWRzRGVzdHJ1Y3Rpb24sICIiKTsKLSAgICAg
ICAgcmV0dXJuICZ2bS52YXJpYWJsZVNpemVkQ2VsbFNwYWNlOworICAgICAgICByZXR1cm4gJnZt
LnZhcmlhYmxlU2l6ZWRDZWxsU3BhY2UoKTsKICAgICB9CiAKICAgICB1c2luZyBCYXNlID0gSlNT
eW1ib2xUYWJsZU9iamVjdDsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
TW9kdWxlTG9hZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNNb2R1bGVMb2FkZXIuaAkocmV2aXNpb24gMjg2MDI0KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVMb2FkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNDQsNyAr
NDQsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYg
dm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShK
U01vZHVsZUxvYWRlciwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFj
ZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAg
ZW51bSBTdGF0dXMgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPTk9i
amVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT05P
YmplY3QuaAkocmV2aXNpb24gMjg2MDI0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNPTk9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw3ICszOCw3IEBAIHB1YmxpYzoK
ICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAg
ICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTT05PYmplY3QsIEJhc2Up
OwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAm
dm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBKU09OT2JqZWN0KiBj
cmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0SW5saW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0SW5saW5lcy5oCShyZXZpc2lvbiAyODYwMjQp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdElubGluZXMuaAkod29y
a2luZyBjb3B5KQpAQCAtNDEsNyArNDEsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwg
U3Vic3BhY2VBY2NlCiBDb21wbGV0ZVN1YnNwYWNlKiBKU0ZpbmFsT2JqZWN0OjpzdWJzcGFjZUZv
cihWTSYgdm0pCiB7CiAgICAgc3RhdGljX2Fzc2VydCghQ2VsbFR5cGU6Om5lZWRzRGVzdHJ1Y3Rp
b24pOwotICAgIHJldHVybiAmdm0uY2VsbFNwYWNlOworICAgIHJldHVybiAmdm0uY2VsbFNwYWNl
KCk7CiB9CiAKIC8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtY3JlYXRlbGlzdGZyb21h
cnJheWxpa2UKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZS5o
CShyZXZpc2lvbiAyODYwMjQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1By
b21pc2UuaAkod29ya2luZyBjb3B5KQpAQCAtMzcsNyArMzcsNyBAQCBwdWJsaWM6CiAgICAgdGVt
cGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNzIG1vZGU+CiAgICAgc3RhdGlj
IElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewotICAgICAgICByZXR1cm4g
JnZtLnByb21pc2VTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wcm9taXNlU3BhY2UoKTsKICAg
ICB9CiAKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgSlNQcm9taXNlKiBjcmVhdGUoVk0m
LCBTdHJ1Y3R1cmUqKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJv
bWlzZVByb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTUHJvbWlzZVByb3RvdHlwZS5oCShyZXZpc2lvbiAyODYwMjQpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2VQcm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpA
QCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxOSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAyMSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
QEAgLTM4LDcgKzM4LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3Bh
Y2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0Vf
U0hBUkFCTEUoSlNQcm9taXNlUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5w
bGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsK
ICAgICB9CiAKICAgICBzdGF0aWMgSlNQcm9taXNlUHJvdG90eXBlKiBjcmVhdGUoVk0mLCBKU0ds
b2JhbE9iamVjdCosIFN0cnVjdHVyZSopOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUVudW1lcmF0b3IuY3BwCShyZXZp
c2lvbiAyODYwMjQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5
TmFtZUVudW1lcmF0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw3ICszOCw3IEBAIEpTUHJv
cGVydHlOYW1lRW51bWVyYXRvciogSlNQcm9wZXJ0eU5hbWUKICAgICB1bnNpZ25lZCBwcm9wZXJ0
eU5hbWVzQnVmZmVyU2l6ZUluQnl0ZXMgPSBDaGVja2VkPHVuc2lnbmVkPihwcm9wZXJ0eU5hbWVz
U2l6ZSkgKiBzaXplb2YoV3JpdGVCYXJyaWVyPEpTU3RyaW5nPik7CiAgICAgV3JpdGVCYXJyaWVy
PEpTU3RyaW5nPiogcHJvcGVydHlOYW1lc0J1ZmZlciA9IG51bGxwdHI7CiAgICAgaWYgKHByb3Bl
cnR5TmFtZXNCdWZmZXJTaXplSW5CeXRlcykgewotICAgICAgICBwcm9wZXJ0eU5hbWVzQnVmZmVy
ID0gc3RhdGljX2Nhc3Q8V3JpdGVCYXJyaWVyPEpTU3RyaW5nPio+KHZtLmpzVmFsdWVHaWdhY2Fn
ZUF1eGlsaWFyeVNwYWNlLmFsbG9jYXRlTm9uVmlydHVhbCh2bSwgcHJvcGVydHlOYW1lc0J1ZmZl
clNpemVJbkJ5dGVzLCBudWxscHRyLCBBbGxvY2F0aW9uRmFpbHVyZU1vZGU6OkFzc2VydCkpOwor
ICAgICAgICBwcm9wZXJ0eU5hbWVzQnVmZmVyID0gc3RhdGljX2Nhc3Q8V3JpdGVCYXJyaWVyPEpT
U3RyaW5nPio+KHZtLmpzVmFsdWVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlKCkuYWxsb2NhdGVOb25W
aXJ0dWFsKHZtLCBwcm9wZXJ0eU5hbWVzQnVmZmVyU2l6ZUluQnl0ZXMsIG51bGxwdHIsIEFsbG9j
YXRpb25GYWlsdXJlTW9kZTo6QXNzZXJ0KSk7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBwcm9wZXJ0eU5hbWVzU2l6ZTsgKytpKQogICAgICAgICAgICAgcHJvcGVydHlOYW1lc0J1
ZmZlcltpXS5jbGVhcigpOwogICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTUHJvcGVydHlOYW1lRW51bWVyYXRvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lRW51bWVyYXRvci5oCShyZXZpc2lvbiAy
ODYwMjQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUVu
dW1lcmF0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtNTEsNyArNTEsNyBAQCBwdWJsaWM6CiAgICAg
dGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNzIG1vZGU+CiAgICAgc3Rh
dGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewotICAgICAgICByZXR1
cm4gJnZtLnByb3BlcnR5TmFtZUVudW1lcmF0b3JTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5w
cm9wZXJ0eU5hbWVFbnVtZXJhdG9yU3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgSlNQcm9w
ZXJ0eU5hbWVFbnVtZXJhdG9yKiBjcmVhdGUoVk0mLCBTdHJ1Y3R1cmUqLCB1aW50MzJfdCwgdWlu
dDMyX3QsIFByb3BlcnR5TmFtZUFycmF5JiYpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNQcm94eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTUHJveHkuaAkocmV2aXNpb24gMjg2MDI0KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw3ICszOCw3IEBAIHB1
YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7
CiAgICAgICAgIHN0YXRpY19hc3NlcnQoc2l6ZW9mKENlbGxUeXBlKSA9PSBzaXplb2YoSlNQcm94
eSkpOwotICAgICAgICByZXR1cm4gJnZtLmpzUHJveHlTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2
bS5qc1Byb3h5U3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgSlNQcm94eSogY3JlYXRlKFZN
JiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTT2JqZWN0KiB0YXJnZXQpCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmgJKHJldmlzaW9uIDI4NjAyNCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmgJKHdvcmtpbmcgY29weSkK
QEAgLTExMSw3ICsxMTEsNyBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUsIFN1YnNw
YWNlQWNjZXNzPgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQog
ICAgIHsKLSAgICAgICAgcmV0dXJuICZ2bS5zdHJpbmdTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2
bS5zdHJpbmdTcGFjZSgpOwogICAgIH0KICAgICAKICAgICAvLyBXZSBlbXBsb3kgb3ZlcmZsb3cg
Y2hlY2tzIGluIG1hbnkgcGxhY2VzIHdpdGggdGhlIGFzc3VtcHRpb24gdGhhdCBNYXhMZW5ndGgK
QEAgLTI3MCw3ICsyNzAsNyBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUsIFN1YnNw
YWNlQWNjZXNzPgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQog
ICAgIHsKLSAgICAgICAgcmV0dXJuICZ2bS5yb3BlU3RyaW5nU3BhY2U7CisgICAgICAgIHJldHVy
biAmdm0ucm9wZVN0cmluZ1NwYWNlKCk7CiAgICAgfQogCiAgICAgLy8gV2UgdXNlIGxvd2VyIDNi
aXRzIG9mIGZpYmVyMCBmb3IgZmxhZ3MuIFRoZXNlIGJpdHMgYXJlIHVzYWJsZSBkdWUgdG8gYWxp
Z25tZW50LCBhbmQgaXQgaXMgT0sgZXZlbiBpbiAzMmJpdCBhcmNoaXRlY3R1cmUuCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlZEFycmF5
Vmlld1Byb3RvdHlwZS5oCShyZXZpc2lvbiAyODYwMjQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAg
LTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNS0yMDIxIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzcs
NyArMzcsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihW
TSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJM
RShKU1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5w
bGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsK
ICAgICB9CiAKICAgICBzdGF0aWMgSlNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZSogY3JlYXRlKFZN
JiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL01hcEl0ZXJhdG9yUHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFwSXRlcmF0b3JQcm90b3R5cGUuaAkocmV2aXNpb24g
Mjg2MDI0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFwSXRlcmF0b3JQcm90
b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzcsNyArMzcsNyBAQCBwdWJsaWM6CiAgICAgc3Rh
dGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFU
SUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShNYXBJdGVyYXRvclByb3RvdHlwZSwgQmFz
ZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJu
ICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIE1hcEl0ZXJhdG9y
UHJvdG90eXBlKiBjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L01hcFByb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL01hcFByb3RvdHlwZS5oCShyZXZpc2lvbiAyODYwMjQpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9NYXBQcm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzcsNyArMzcs
NyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0p
CiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShNYXBQ
cm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7Cisg
ICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRp
YyBjb25zdGV4cHIgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFn
cyB8IEhhc1N0YXRpY1Byb3BlcnR5VGFibGU7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9NYXRoT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvTWF0aE9iamVjdC5oCShyZXZpc2lvbiAyODYwMjQpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9NYXRoT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTMyLDcgKzMy
LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZt
KQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoTWF0
aE9iamVjdCwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAg
ICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGlj
IE1hdGhPYmplY3QqIGNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IFN0cnVjdHVyZSogc3RydWN0dXJlKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvTmF0aXZlRXJyb3JQcm90b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9OYXRpdmVFcnJvclByb3RvdHlwZS5oCShyZXZpc2lvbiAyODYwMjQpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OYXRpdmVFcnJvclByb3RvdHlwZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC0zNCw3ICszNCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vi
c3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRf
SVNPX1NVQlNQQUNFX1NIQVJBQkxFKE5hdGl2ZUVycm9yUHJvdG90eXBlLCBCYXNlKTsKLSAgICAg
ICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWlu
T2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1
Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3Rv
dHlwZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUV4ZWN1dGFi
bGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OYXRpdmVF
eGVjdXRhYmxlLmgJKHJldmlzaW9uIDI4NjAyNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL05hdGl2ZUV4ZWN1dGFibGUuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAK
IC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDktMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDktMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQzLDcgKzQzLDcg
QEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlLCBTdWJzcGFjZUFjY2Vz
cz4KICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7Ci0g
ICAgICAgIHJldHVybiAmdm0ubmF0aXZlRXhlY3V0YWJsZVNwYWNlOworICAgICAgICByZXR1cm4g
JnZtLm5hdGl2ZUV4ZWN1dGFibGVTcGFjZSgpOwogICAgIH0KIAogICAgIENvZGVCbG9ja0hhc2gg
aGFzaEZvcihDb2RlU3BlY2lhbGl6YXRpb25LaW5kKSBjb25zdDsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL051bWJlck9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWJlck9iamVjdC5oCShyZXZpc2lvbiAyODYwMjQpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdW1iZXJPYmplY3QuaAkod29ya2luZyBj
b3B5KQpAQCAtMzUsNyArMzUsNyBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUsIFN1
YnNwYWNlQWNjZXNzIG1vZGU+CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihW
TSYgdm0pCiAgICAgewotICAgICAgICByZXR1cm4gJnZtLm51bWJlck9iamVjdFNwYWNlOworICAg
ICAgICByZXR1cm4gJnZtLm51bWJlck9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGlj
IE51bWJlck9iamVjdCogY3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RQcm90b3R5cGUuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RQcm90b3R5cGUuaAko
cmV2aXNpb24gMjg2MDI0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0
UHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw2IEBACiAvKgogICogIENvcHly
aWdodCAoQykgMTk5OS0yMDAwIEhhcnJpIFBvcnRlbiAocG9ydGVuQGtkZS5vcmcpCi0gKiAgQ29w
eXJpZ2h0IChDKSAyMDA4LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
IENvcHlyaWdodCAoQykgMjAwOC0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmli
dXRlIGl0IGFuZC9vcgogICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBM
ZXNzZXIgR2VuZXJhbCBQdWJsaWMKQEAgLTMzLDcgKzMzLDcgQEAgcHVibGljOgogICAgIHN0YXRp
YyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElD
X0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoT2JqZWN0UHJvdG90eXBlLCBCYXNlKTsKLSAg
ICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBs
YWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgT2JqZWN0UHJvdG90eXBlKiBj
cmVhdGUoVk0mLCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSopOwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvZ3JhbUV4ZWN1dGFibGUuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9ncmFtRXhlY3V0YWJsZS5oCShyZXZpc2lv
biAyODYwMjQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9ncmFtRXhlY3V0
YWJsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw3ICszOSw3IEBAIHB1YmxpYzoKICAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vic3BhY2VBY2Nlc3M+CiAgICAgc3RhdGljIElzb1N1
YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewotICAgICAgICByZXR1cm4gJnZtLnBy
b2dyYW1FeGVjdXRhYmxlU3BhY2Uuc3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucHJvZ3JhbUV4
ZWN1dGFibGVTcGFjZSgpLnNwYWNlOwogICAgIH0KIAogICAgIHN0YXRpYyBQcm9ncmFtRXhlY3V0
YWJsZSogY3JlYXRlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IFNvdXJjZUNv
ZGUmIHNvdXJjZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5
TWFwSGFzaFRhYmxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvUHJvcGVydHlNYXBIYXNoVGFibGUuaAkocmV2aXNpb24gMjg2MDI0KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlNYXBIYXNoVGFibGUuaAkobm9uZXhpc3RlbnQp
CkBAIC0xLDU4NyArMCwwIEBACi0vKgotICogIENvcHlyaWdodCAoQykgMjAwNC0yMDIxIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUg
c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogIG1vZGlmeSBpdCB1
bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gKiAgTGlj
ZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVy
Ci0gKiAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBs
YXRlciB2ZXJzaW9uLgotICoKLSAqICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhl
IGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqICBidXQgV0lUSE9VVCBBTlkgV0FSUkFO
VFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogIE1FUkNIQU5UQUJJ
TElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0g
KiAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgot
ICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljIExpY2Vuc2UKLSAqICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRo
ZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICogIHRoZSBGcmVlIFNvZnR3
YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0g
KiAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0gKgotICovCi0KLSNwcmFnbWEgb25jZQot
Ci0jaW5jbHVkZSAiSlNFeHBvcnRNYWNyb3MuaCIKLSNpbmNsdWRlICJQcm9wZXJ0eU9mZnNldC5o
IgotI2luY2x1ZGUgIlN0cnVjdHVyZS5oIgotI2luY2x1ZGUgIldyaXRlQmFycmllci5oIgotI2lu
Y2x1ZGUgPHd0Zi9IYXNoVGFibGUuaD4KLSNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgotI2lu
Y2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KLSNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+Ci0jaW5j
bHVkZSA8d3RmL3RleHQvQXRvbVN0cmluZ0ltcGwuaD4KLQotCi0jZGVmaW5lIERVTVBfUFJPUEVS
VFlNQVBfU1RBVFMgMAotI2RlZmluZSBEVU1QX1BST1BFUlRZTUFQX0NPTExJU0lPTlMgMAotCi0j
ZGVmaW5lIFBST1BFUlRZX01BUF9ERUxFVEVEX0VOVFJZX0tFWSAoKFVuaXF1ZWRTdHJpbmdJbXBs
KikxKQotCi1uYW1lc3BhY2UgSlNDIHsKLQotREVDTEFSRV9BTExPQ0FUT1JfV0lUSF9IRUFQX0lE
RU5USUZJRVIoUHJvcGVydHlUYWJsZSk7Ci0KLSNpZiBEVU1QX1BST1BFUlRZTUFQX1NUQVRTCi0K
LXN0cnVjdCBQcm9wZXJ0eU1hcEhhc2hUYWJsZVN0YXRzIHsKLSAgICBzdGQ6OmF0b21pYzx1bnNp
Z25lZD4gbnVtRmluZHM7Ci0gICAgc3RkOjphdG9taWM8dW5zaWduZWQ+IG51bUNvbGxpc2lvbnM7
Ci0gICAgc3RkOjphdG9taWM8dW5zaWduZWQ+IG51bUxvb2t1cHM7Ci0gICAgc3RkOjphdG9taWM8
dW5zaWduZWQ+IG51bUxvb2t1cFByb2Jpbmc7Ci0gICAgc3RkOjphdG9taWM8dW5zaWduZWQ+IG51
bUFkZHM7Ci0gICAgc3RkOjphdG9taWM8dW5zaWduZWQ+IG51bVJlbW92ZXM7Ci0gICAgc3RkOjph
dG9taWM8dW5zaWduZWQ+IG51bVJlaGFzaGVzOwotICAgIHN0ZDo6YXRvbWljPHVuc2lnbmVkPiBu
dW1SZWluc2VydHM7Ci19OwotCi1KU19FWFBPUlRfUFJJVkFURSBleHRlcm4gUHJvcGVydHlNYXBI
YXNoVGFibGVTdGF0cyogcHJvcGVydHlNYXBIYXNoVGFibGVTdGF0czsKLQotI2VuZGlmCi0KLWlu
bGluZSBib29sIGlzUG93ZXJPZjIodW5zaWduZWQgdikKLXsKLSAgICByZXR1cm4gaGFzT25lQml0
U2V0KHYpOwotfQotCi1pbmxpbmUgdW5zaWduZWQgbmV4dFBvd2VyT2YyKHVuc2lnbmVkIHYpCi17
Ci0gICAgLy8gVGFrZW4gZnJvbSBodHRwOi8vd3d3LmNzLnV0ay5lZHUvfnZvc2UvYy1zdHVmZi9i
aXRoYWNrcy5odG1sCi0gICAgLy8gRGV2aXNlZCBieSBTZWFuIEFuZGVyc29uLCBTZXBlbWJlciAx
NCwgMjAwMQotCi0gICAgdi0tOwotICAgIHYgfD0gdiA+PiAxOwotICAgIHYgfD0gdiA+PiAyOwot
ICAgIHYgfD0gdiA+PiA0OwotICAgIHYgfD0gdiA+PiA4OwotICAgIHYgfD0gdiA+PiAxNjsKLSAg
ICB2Kys7Ci0KLSAgICByZXR1cm4gdjsKLX0KLQotY2xhc3MgUHJvcGVydHlUYWJsZSBmaW5hbCA6
IHB1YmxpYyBKU0NlbGwgewotCi0gICAgLy8gVGhpcyBpcyB0aGUgaW1wbGVtZW50YXRpb24gZm9y
ICdpdGVyYXRvcicgYW5kICdjb25zdF9pdGVyYXRvcicsCi0gICAgLy8gdXNlZCBmb3IgaXRlcmF0
aW5nIG92ZXIgdGhlIHRhYmxlIGluIGluc2VydGlvbiBvcmRlci4KLSAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBUPgotICAgIGNsYXNzIG9yZGVyZWRfaXRlcmF0b3IgewotICAgIHB1YmxpYzoKLSAgICAg
ICAgb3JkZXJlZF9pdGVyYXRvcjxUPiYgb3BlcmF0b3IrKygpCi0gICAgICAgIHsKLSAgICAgICAg
ICAgIG1fdmFsdWVQdHIgPSBza2lwRGVsZXRlZEVudHJpZXMobV92YWx1ZVB0ciArIDEsIG1fZW5k
VmFsdWVQdHIpOwotICAgICAgICAgICAgcmV0dXJuICp0aGlzOwotICAgICAgICB9Ci0KLSAgICAg
ICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IG9yZGVyZWRfaXRlcmF0b3I8VD4mIG90aGVyKQotICAg
ICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gbV92YWx1ZVB0ciA9PSBvdGhlci5tX3ZhbHVlUHRy
OwotICAgICAgICB9Ci0KLSAgICAgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IG9yZGVyZWRfaXRl
cmF0b3I8VD4mIG90aGVyKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gbV92YWx1ZVB0
ciAhPSBvdGhlci5tX3ZhbHVlUHRyOwotICAgICAgICB9Ci0KLSAgICAgICAgVCYgb3BlcmF0b3Iq
KCkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuICptX3ZhbHVlUHRyOwotICAgICAgICB9
Ci0KLSAgICAgICAgVCogb3BlcmF0b3ItPigpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVy
biBtX3ZhbHVlUHRyOwotICAgICAgICB9Ci0KLSAgICAgICAgb3JkZXJlZF9pdGVyYXRvcihUKiB2
YWx1ZVB0ciwgVCogZW5kVmFsdWVQdHIpCi0gICAgICAgICAgICA6IG1fdmFsdWVQdHIodmFsdWVQ
dHIpCi0gICAgICAgICAgICAsIG1fZW5kVmFsdWVQdHIoZW5kVmFsdWVQdHIpCi0gICAgICAgIHsK
LSAgICAgICAgfQotCi0gICAgcHJpdmF0ZToKLSAgICAgICAgVCogbV92YWx1ZVB0cjsKLSAgICAg
ICAgVCogbV9lbmRWYWx1ZVB0cjsKLSAgICB9OwotCi1wdWJsaWM6Ci0gICAgdHlwZWRlZiBKU0Nl
bGwgQmFzZTsKLSAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0g
QmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBTdHJ1Y3R1cmVJc0ltbW9ydGFsOwotCi0gICAgdGVtcGxh
dGU8dHlwZW5hbWUgQ2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNzPgotICAgIHN0YXRpYyBJc29TdWJz
cGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQotICAgIHsKLSAgICAgICAgcmV0dXJuICZ2bS5wcm9w
ZXJ0eVRhYmxlU3BhY2U7Ci0gICAgfQotCi0gICAgc3RhdGljIGNvbnN0ZXhwciBib29sIG5lZWRz
RGVzdHJ1Y3Rpb24gPSB0cnVlOwotICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDZWxsKik7Ci0g
ICAgREVDTEFSRV9WSVNJVF9DSElMRFJFTjsKLQotICAgIERFQ0xBUkVfRVhQT1JUX0lORk87Ci0K
LSAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKLSAgICB7Ci0gICAgICAgIHJl
dHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJ
bmZvKENlbGxUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7Ci0gICAgfQotCi0gICAgdHlw
ZWRlZiBVbmlxdWVkU3RyaW5nSW1wbCogS2V5VHlwZTsKLSAgICB0eXBlZGVmIFByb3BlcnR5TWFw
RW50cnkgVmFsdWVUeXBlOwotCi0gICAgLy8gVGhlIGluIG9yZGVyIGl0ZXJhdG9yIHByb3ZpZGVz
IG92ZXJsb2FkZWQgKiBhbmQgLT4gdG8gYWNjZXNzIHRoZSBWYWx1ZSBhdCB0aGUgY3VycmVudCBw
b3NpdGlvbi4KLSAgICB0eXBlZGVmIG9yZGVyZWRfaXRlcmF0b3I8VmFsdWVUeXBlPiBpdGVyYXRv
cjsKLSAgICB0eXBlZGVmIG9yZGVyZWRfaXRlcmF0b3I8Y29uc3QgVmFsdWVUeXBlPiBjb25zdF9p
dGVyYXRvcjsKLQotICAgIC8vIFRoZSBmaW5kX2l0ZXJhdG9yIGlzIGEgcGFpciBvZiBhIHBvaW50
ZXIgdG8gYSBWYWx1ZSogYW4gdGhlIGVudHJ5IGluIHRoZSBpbmRleC4KLSAgICAvLyBJZiAnZmlu
ZCcgZG9lcyBub3QgZmluZCBhbiBlbnRyeSB0aGVuIGl0ZXIuZmlyc3Qgd2lsbCBiZSAwLCBhbmQg
aXRlci5zZWNvbmQgd2lsbAotICAgIC8vIGdpdmUgdGhlIHBvaW50IGluIG1faW5kZXggd2hlcmUg
YW4gZW50cnkgc2hvdWxkIGJlIGluc2VydGVkLgotICAgIHR5cGVkZWYgc3RkOjpwYWlyPFZhbHVl
VHlwZSosIHVuc2lnbmVkPiBmaW5kX2l0ZXJhdG9yOwotCi0gICAgLy8gQ29uc3RydWN0b3IgaXMg
cGFzc2VkIGFuIGluaXRpYWwgY2FwYWNpdHksIGEgUHJvcGVydHlUYWJsZSB0byBjb3B5LCBvciBi
b3RoLgotICAgIHN0YXRpYyBQcm9wZXJ0eVRhYmxlKiBjcmVhdGUoVk0mLCB1bnNpZ25lZCBpbml0
aWFsQ2FwYWNpdHkpOwotICAgIHN0YXRpYyBQcm9wZXJ0eVRhYmxlKiBjbG9uZShWTSYsIGNvbnN0
IFByb3BlcnR5VGFibGUmKTsKLSAgICBzdGF0aWMgUHJvcGVydHlUYWJsZSogY2xvbmUoVk0mLCB1
bnNpZ25lZCBpbml0aWFsQ2FwYWNpdHksIGNvbnN0IFByb3BlcnR5VGFibGUmKTsKLSAgICB+UHJv
cGVydHlUYWJsZSgpOwotCi0gICAgLy8gT3JkZXJlZCBpdGVyYXRpb24gbWV0aG9kcy4KLSAgICBp
dGVyYXRvciBiZWdpbigpOwotICAgIGl0ZXJhdG9yIGVuZCgpOwotICAgIGNvbnN0X2l0ZXJhdG9y
IGJlZ2luKCkgY29uc3Q7Ci0gICAgY29uc3RfaXRlcmF0b3IgZW5kKCkgY29uc3Q7Ci0KLSAgICAv
LyBGaW5kIGEgdmFsdWUgaW4gdGhlIHRhYmxlLgotICAgIGZpbmRfaXRlcmF0b3IgZmluZChjb25z
dCBLZXlUeXBlJik7Ci0gICAgVmFsdWVUeXBlKiBnZXQoY29uc3QgS2V5VHlwZSYpOwotICAgIC8v
IEFkZCBhIHZhbHVlIHRvIHRoZSB0YWJsZQotICAgIHN0ZDo6cGFpcjxmaW5kX2l0ZXJhdG9yLCBi
b29sPiBXQVJOX1VOVVNFRF9SRVRVUk4gYWRkKFZNJiwgY29uc3QgVmFsdWVUeXBlJiBlbnRyeSk7
Ci0gICAgLy8gUmVtb3ZlIGEgdmFsdWUgZnJvbSB0aGUgdGFibGUuCi0gICAgdm9pZCByZW1vdmUo
Vk0mLCBjb25zdCBmaW5kX2l0ZXJhdG9yJiBpdGVyKTsKLSAgICB2b2lkIHJlbW92ZShWTSYsIGNv
bnN0IEtleVR5cGUmIGtleSk7Ci0KLSAgICAvLyBSZXR1cm5zIHRoZSBudW1iZXIgb2YgdmFsdWVz
IGluIHRoZSBoYXNodGFibGUuCi0gICAgdW5zaWduZWQgc2l6ZSgpIGNvbnN0OwotCi0gICAgLy8g
Q2hlY2tzIGlmIHRoZXJlIGFyZSBhbnkgdmFsdWVzIGluIHRoZSBoYXNodGFibGUuCi0gICAgYm9v
bCBpc0VtcHR5KCkgY29uc3Q7Ci0KLSAgICAvLyBOdW1iZXIgb2Ygc2xvdHMgaW4gdGhlIHByb3Bl
cnR5IHN0b3JhZ2UgYXJyYXkgaW4gdXNlLCBpbmNsdWRlZCBkZWxldGVkT2Zmc2V0cy4KLSAgICB1
bnNpZ25lZCBwcm9wZXJ0eVN0b3JhZ2VTaXplKCkgY29uc3Q7Ci0KLSAgICAvLyBVc2VkIHRvIG1h
aW50YWluIGEgbGlzdCBvZiB1bnVzZWQgZW50cmllcyBpbiB0aGUgcHJvcGVydHkgc3RvcmFnZS4K
LSAgICB2b2lkIGNsZWFyRGVsZXRlZE9mZnNldHMoKTsKLSAgICBib29sIGhhc0RlbGV0ZWRPZmZz
ZXQoKTsKLSAgICBQcm9wZXJ0eU9mZnNldCBnZXREZWxldGVkT2Zmc2V0KCk7Ci0gICAgdm9pZCBh
ZGREZWxldGVkT2Zmc2V0KFByb3BlcnR5T2Zmc2V0KTsKLSAgICAKLSAgICBQcm9wZXJ0eU9mZnNl
dCBuZXh0T2Zmc2V0KFByb3BlcnR5T2Zmc2V0IGlubGluZUNhcGFjaXR5KTsKLQotICAgIC8vIENv
cHkgdGhpcyBQcm9wZXJ0eVRhYmxlLCBlbnN1cmluZyB0aGUgY29weSBoYXMgYXQgbGVhc3QgdGhl
IGNhcGFjaXR5IHByb3ZpZGVkLgotICAgIFByb3BlcnR5VGFibGUqIGNvcHkoVk0mLCB1bnNpZ25l
ZCBuZXdDYXBhY2l0eSk7Ci0KLSNpZm5kZWYgTkRFQlVHCi0gICAgc2l6ZV90IHNpemVJbk1lbW9y
eSgpOwotICAgIHZvaWQgY2hlY2tDb25zaXN0ZW5jeSgpOwotI2VuZGlmCi0gICAgCi0gICAgc3Rh
dGljIHB0cmRpZmZfdCBvZmZzZXRPZkluZGV4U2l6ZSgpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRP
RihQcm9wZXJ0eVRhYmxlLCBtX2luZGV4U2l6ZSk7IH0KLSAgICBzdGF0aWMgcHRyZGlmZl90IG9m
ZnNldE9mSW5kZXhNYXNrKCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKFByb3BlcnR5VGFibGUs
IG1faW5kZXhNYXNrKTsgfQotICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZJbmRleCgpIHsg
cmV0dXJuIE9CSkVDVF9PRkZTRVRPRihQcm9wZXJ0eVRhYmxlLCBtX2luZGV4KTsgfQotCi0gICAg
c3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBFbXB0eUVudHJ5SW5kZXggPSAwOwotCi1wcml2YXRl
OgotICAgIFByb3BlcnR5VGFibGUoVk0mLCB1bnNpZ25lZCBpbml0aWFsQ2FwYWNpdHkpOwotICAg
IFByb3BlcnR5VGFibGUoVk0mLCBjb25zdCBQcm9wZXJ0eVRhYmxlJik7Ci0gICAgUHJvcGVydHlU
YWJsZShWTSYsIHVuc2lnbmVkIGluaXRpYWxDYXBhY2l0eSwgY29uc3QgUHJvcGVydHlUYWJsZSYp
OwotCi0gICAgUHJvcGVydHlUYWJsZShjb25zdCBQcm9wZXJ0eVRhYmxlJik7Ci0KLSAgICB2b2lk
IGZpbmlzaENyZWF0aW9uKFZNJik7Ci0KLSAgICAvLyBVc2VkIHRvIGluc2VydCBhIHZhbHVlIGtu
b3duIG5vdCB0byBiZSBpbiB0aGUgdGFibGUsIGFuZCB3aGVyZSB3ZSBrbm93IGNhcGFjaXR5IHRv
IGJlIGF2YWlsYWJsZS4KLSAgICB2b2lkIHJlaW5zZXJ0KGNvbnN0IFZhbHVlVHlwZSYgZW50cnkp
OwotCi0gICAgLy8gUmVoYXNoIHRoZSB0YWJsZS4gIFVzZWQgdG8gZ3Jvdywgb3IgdG8gcmVjb3Zl
ciBkZWxldGVkIHNsb3RzLgotICAgIHZvaWQgcmVoYXNoKFZNJiwgdW5zaWduZWQgbmV3Q2FwYWNp
dHkpOwotCi0gICAgLy8gVGhlIGNhcGFjaXR5IG9mIHRoZSB0YWJsZSBvZiB2YWx1ZXMgaXMgaGFs
ZiBvZiB0aGUgc2l6ZSBvZiB0aGUgaW5kZXguCi0gICAgdW5zaWduZWQgdGFibGVDYXBhY2l0eSgp
IGNvbnN0OwotCi0gICAgLy8gV2Uga2VlcCBhbiBleHRyYSBkZWxldGVkIHNsb3QgYWZ0ZXIgdGhl
IGFycmF5IHRvIG1ha2UgaXRlcmF0aW9uIHdvcmssCi0gICAgLy8gYW5kIHRvIHVzZSBmb3IgZGVs
ZXRlZCB2YWx1ZXMuIEluZGV4IHZhbHVlcyBpbnRvIHRoZSBhcnJheSBhcmUgMS1iYXNlZCwKLSAg
ICAvLyBzbyB0aGlzIGlzIHRhYmxlQ2FwYWNpdHkoKSArIDEuCi0gICAgLy8gRm9yIGV4YW1wbGUs
IGlmIG1fdGFibGVTaXplIGlzIDE2LCB0aGVuIHRhYmxlQ2FwYWNpdHkoKSBpcyA4IC0gYnV0IHRo
ZQotICAgIC8vIHZhbHVlcyBhcnJheSBpcyBhY3R1YWxseSA5IGxvbmcgKHRoZSA5dGggdXNlZCBm
b3IgdGhlIGRlbGV0ZWQgdmFsdWUvCi0gICAgLy8gaXRlcmF0aW9uIGd1YXJkKS4gIFRoZSA4IHZh
bGlkIGVudHJpZXMgYXJlIG51bWJlcmVkIDEuLjgsIHNvIHRoZQotICAgIC8vIGRlbGV0ZWQgaW5k
ZXggaXMgOSAoMCBiZWluZyByZXNlcnZlZCBmb3IgZW1wdHkpLgotICAgIHVuc2lnbmVkIGRlbGV0
ZWRFbnRyeUluZGV4KCkgY29uc3Q7Ci0KLSAgICAvLyBVc2VkIGluIGl0ZXJhdG9yIGNyZWF0aW9u
L3Byb2dyZXNzaW9uLgotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgc3RhdGljIFQqIHNr
aXBEZWxldGVkRW50cmllcyhUKiB2YWx1ZVB0ciwgVCogZW5kVmFsdWVQdHIpOwotCi0gICAgLy8g
VGhlIHRhYmxlIG9mIHZhbHVlcyBsaWVzIGFmdGVyIHRoZSBoYXNoIGluZGV4LgotICAgIFZhbHVl
VHlwZSogdGFibGUoKTsKLSAgICBjb25zdCBWYWx1ZVR5cGUqIHRhYmxlKCkgY29uc3Q7Ci0KLSAg
ICBWYWx1ZVR5cGUqIHRhYmxlRW5kKCkgeyByZXR1cm4gdGFibGUoKSArIHVzZWRDb3VudCgpOyB9
Ci0gICAgY29uc3QgVmFsdWVUeXBlKiB0YWJsZUVuZCgpIGNvbnN0IHsgcmV0dXJuIHRhYmxlKCkg
KyB1c2VkQ291bnQoKTsgfQotCi0gICAgLy8gdG90YWwgbnVtYmVyIG9mICB1c2VkIGVudHJpZXMg
aW4gdGhlIHZhbHVlcyBhcnJheSAtIGJ5IGVpdGhlciB2YWxpZCBlbnRyaWVzLCBvciBkZWxldGVk
IG9uZXMuCi0gICAgdW5zaWduZWQgdXNlZENvdW50KCkgY29uc3Q7Ci0KLSAgICAvLyBUaGUgc2l6
ZSBpbiBieXRlcyBvZiBkYXRhIG5lZWRlZCBmb3IgYnkgdGhlIHRhYmxlLgotICAgIHNpemVfdCBk
YXRhU2l6ZSgpOwotCi0gICAgLy8gQ2FsY3VsYXRlcyB0aGUgYXBwcm9wcmlhdGUgdGFibGUgc2l6
ZSAocm91bmRzIHVwIHRvIGEgcG93ZXIgb2YgdHdvKS4KLSAgICBzdGF0aWMgdW5zaWduZWQgc2l6
ZUZvckNhcGFjaXR5KHVuc2lnbmVkIGNhcGFjaXR5KTsKLQotICAgIC8vIENoZWNrIGlmIGNhcGFj
aXR5IGlzIGF2YWlsYWJsZS4KLSAgICBib29sIGNhbkluc2VydCgpOwotCi0gICAgdW5zaWduZWQg
bV9pbmRleFNpemU7Ci0gICAgdW5zaWduZWQgbV9pbmRleE1hc2s7Ci0gICAgdW5zaWduZWQqIG1f
aW5kZXg7Ci0gICAgdW5zaWduZWQgbV9rZXlDb3VudDsKLSAgICB1bnNpZ25lZCBtX2RlbGV0ZWRD
b3VudDsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8VmVjdG9yPFByb3BlcnR5T2Zmc2V0Pj4gbV9kZWxl
dGVkT2Zmc2V0czsKLQotICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgTWluaW11bVRhYmxl
U2l6ZSA9IDE2OwotfTsKLQotaW5saW5lIFByb3BlcnR5VGFibGU6Oml0ZXJhdG9yIFByb3BlcnR5
VGFibGU6OmJlZ2luKCkKLXsKLSAgICBhdXRvKiB0YWJsZUVuZCA9IHRoaXMtPnRhYmxlRW5kKCk7
Ci0gICAgcmV0dXJuIGl0ZXJhdG9yKHNraXBEZWxldGVkRW50cmllcyh0YWJsZSgpLCB0YWJsZUVu
ZCksIHRhYmxlRW5kKTsKLX0KLQotaW5saW5lIFByb3BlcnR5VGFibGU6Oml0ZXJhdG9yIFByb3Bl
cnR5VGFibGU6OmVuZCgpCi17Ci0gICAgYXV0byogdGFibGVFbmQgPSB0aGlzLT50YWJsZUVuZCgp
OwotICAgIHJldHVybiBpdGVyYXRvcih0YWJsZUVuZCwgdGFibGVFbmQpOwotfQotCi1pbmxpbmUg
UHJvcGVydHlUYWJsZTo6Y29uc3RfaXRlcmF0b3IgUHJvcGVydHlUYWJsZTo6YmVnaW4oKSBjb25z
dAotewotICAgIGF1dG8qIHRhYmxlRW5kID0gdGhpcy0+dGFibGVFbmQoKTsKLSAgICByZXR1cm4g
Y29uc3RfaXRlcmF0b3Ioc2tpcERlbGV0ZWRFbnRyaWVzKHRhYmxlKCksIHRhYmxlRW5kKSwgdGFi
bGVFbmQpOwotfQotCi1pbmxpbmUgUHJvcGVydHlUYWJsZTo6Y29uc3RfaXRlcmF0b3IgUHJvcGVy
dHlUYWJsZTo6ZW5kKCkgY29uc3QKLXsKLSAgICBhdXRvKiB0YWJsZUVuZCA9IHRoaXMtPnRhYmxl
RW5kKCk7Ci0gICAgcmV0dXJuIGNvbnN0X2l0ZXJhdG9yKHRhYmxlRW5kLCB0YWJsZUVuZCk7Ci19
Ci0KLWlubGluZSBQcm9wZXJ0eVRhYmxlOjpmaW5kX2l0ZXJhdG9yIFByb3BlcnR5VGFibGU6OmZp
bmQoY29uc3QgS2V5VHlwZSYga2V5KQotewotICAgIEFTU0VSVChrZXkpOwotICAgIEFTU0VSVChr
ZXktPmlzQXRvbSgpIHx8IGtleS0+aXNTeW1ib2woKSk7Ci0gICAgdW5zaWduZWQgaGFzaCA9IElk
ZW50aWZpZXJSZXBIYXNoOjpoYXNoKGtleSk7Ci0KLSNpZiBEVU1QX1BST1BFUlRZTUFQX1NUQVRT
Ci0gICAgKytwcm9wZXJ0eU1hcEhhc2hUYWJsZVN0YXRzLT5udW1GaW5kczsKLSNlbmRpZgotCi0g
ICAgd2hpbGUgKHRydWUpIHsKLSAgICAgICAgdW5zaWduZWQgZW50cnlJbmRleCA9IG1faW5kZXhb
aGFzaCAmIG1faW5kZXhNYXNrXTsKLSAgICAgICAgaWYgKGVudHJ5SW5kZXggPT0gRW1wdHlFbnRy
eUluZGV4KQotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV9wYWlyKChWYWx1ZVR5cGUqKW51
bGxwdHIsIGhhc2ggJiBtX2luZGV4TWFzayk7Ci0gICAgICAgIGlmIChrZXkgPT0gdGFibGUoKVtl
bnRyeUluZGV4IC0gMV0ua2V5KQotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV9wYWlyKCZ0
YWJsZSgpW2VudHJ5SW5kZXggLSAxXSwgaGFzaCAmIG1faW5kZXhNYXNrKTsKLQotI2lmIERVTVBf
UFJPUEVSVFlNQVBfU1RBVFMKLSAgICAgICAgKytwcm9wZXJ0eU1hcEhhc2hUYWJsZVN0YXRzLT5u
dW1Db2xsaXNpb25zOwotI2VuZGlmCi0KLSNpZiBEVU1QX1BST1BFUlRZTUFQX0NPTExJU0lPTlMK
LSAgICAgICAgZGF0YUxvZygiUHJvcGVydHlUYWJsZSBjb2xsaXNpb24gZm9yICIsIGtleSwgIiAo
IiwgaGFzaCwgIilcbiIpOwotICAgICAgICBkYXRhTG9nKCJDb2xsaWRlZCB3aXRoICIsIHRhYmxl
KClbZW50cnlJbmRleCAtIDFdLmtleSwgIigiLCBJZGVudGlmaWVyUmVwSGFzaDo6aGFzaCh0YWJs
ZSgpW2VudHJ5SW5kZXggLSAxXS5rZXkpLCAiKVxuIik7Ci0jZW5kaWYKLQotICAgICAgICBoYXNo
Kys7Ci0gICAgfQotfQotCi1pbmxpbmUgUHJvcGVydHlUYWJsZTo6VmFsdWVUeXBlKiBQcm9wZXJ0
eVRhYmxlOjpnZXQoY29uc3QgS2V5VHlwZSYga2V5KQotewotICAgIEFTU0VSVChrZXkpOwotICAg
IEFTU0VSVChrZXktPmlzQXRvbSgpIHx8IGtleS0+aXNTeW1ib2woKSk7Ci0gICAgQVNTRVJUKGtl
eSAhPSBQUk9QRVJUWV9NQVBfREVMRVRFRF9FTlRSWV9LRVkpOwotCi0gICAgaWYgKCFtX2tleUNv
dW50KQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIHVuc2lnbmVkIGhhc2ggPSBJZGVu
dGlmaWVyUmVwSGFzaDo6aGFzaChrZXkpOwotCi0jaWYgRFVNUF9QUk9QRVJUWU1BUF9TVEFUUwot
ICAgICsrcHJvcGVydHlNYXBIYXNoVGFibGVTdGF0cy0+bnVtTG9va3VwczsKLSNlbmRpZgotCi0g
ICAgd2hpbGUgKHRydWUpIHsKLSAgICAgICAgdW5zaWduZWQgZW50cnlJbmRleCA9IG1faW5kZXhb
aGFzaCAmIG1faW5kZXhNYXNrXTsKLSAgICAgICAgaWYgKGVudHJ5SW5kZXggPT0gRW1wdHlFbnRy
eUluZGV4KQotICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAgIGlmIChrZXkgPT0g
dGFibGUoKVtlbnRyeUluZGV4IC0gMV0ua2V5KSB7Ci0gICAgICAgICAgICBBU1NFUlQoIW1fZGVs
ZXRlZE9mZnNldHMgfHwgIW1fZGVsZXRlZE9mZnNldHMtPmNvbnRhaW5zKHRhYmxlKClbZW50cnlJ
bmRleCAtIDFdLm9mZnNldCkpOwotICAgICAgICAgICAgcmV0dXJuICZ0YWJsZSgpW2VudHJ5SW5k
ZXggLSAxXTsKLSAgICAgICAgfQotCi0jaWYgRFVNUF9QUk9QRVJUWU1BUF9TVEFUUwotICAgICAg
ICArK3Byb3BlcnR5TWFwSGFzaFRhYmxlU3RhdHMtPm51bUxvb2t1cFByb2Jpbmc7Ci0jZW5kaWYK
LQotICAgICAgICBoYXNoKys7Ci0gICAgfQotfQotCi1pbmxpbmUgc3RkOjpwYWlyPFByb3BlcnR5
VGFibGU6OmZpbmRfaXRlcmF0b3IsIGJvb2w+IFdBUk5fVU5VU0VEX1JFVFVSTiBQcm9wZXJ0eVRh
YmxlOjphZGQoVk0mIHZtLCBjb25zdCBWYWx1ZVR5cGUmIGVudHJ5KQotewotICAgIEFTU0VSVCgh
bV9kZWxldGVkT2Zmc2V0cyB8fCAhbV9kZWxldGVkT2Zmc2V0cy0+Y29udGFpbnMoZW50cnkub2Zm
c2V0KSk7Ci0KLSAgICAvLyBMb29rIGZvciBhIHZhbHVlIHdpdGggYSBtYXRjaGluZyBrZXkgYWxy
ZWFkeSBpbiB0aGUgYXJyYXkuCi0gICAgZmluZF9pdGVyYXRvciBpdGVyID0gZmluZChlbnRyeS5r
ZXkpOwotICAgIGlmIChpdGVyLmZpcnN0KQotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3BhaXIo
aXRlciwgZmFsc2UpOwotCi0jaWYgRFVNUF9QUk9QRVJUWU1BUF9TVEFUUwotICAgICsrcHJvcGVy
dHlNYXBIYXNoVGFibGVTdGF0cy0+bnVtQWRkczsKLSNlbmRpZgotCi0gICAgLy8gUmVmIHRoZSBr
ZXkKLSAgICBlbnRyeS5rZXktPnJlZigpOwotCi0gICAgLy8gZW5zdXJlIGNhcGFjaXR5IGlzIGF2
YWlsYWJsZS4KLSAgICBpZiAoIWNhbkluc2VydCgpKSB7Ci0gICAgICAgIHJlaGFzaCh2bSwgbV9r
ZXlDb3VudCArIDEpOwotICAgICAgICBpdGVyID0gZmluZChlbnRyeS5rZXkpOwotICAgICAgICBB
U1NFUlQoIWl0ZXIuZmlyc3QpOwotICAgIH0KLQotICAgIC8vIEFsbG9jYXRlIGEgc2xvdCBpbiB0
aGUgaGFzaHRhYmxlLCBhbmQgc2V0IHRoZSBpbmRleCB0byByZWZlcmVuY2UgdGhpcy4KLSAgICB1
bnNpZ25lZCBlbnRyeUluZGV4ID0gdXNlZENvdW50KCkgKyAxOwotICAgIG1faW5kZXhbaXRlci5z
ZWNvbmRdID0gZW50cnlJbmRleDsKLSAgICBpdGVyLmZpcnN0ID0gJnRhYmxlKClbZW50cnlJbmRl
eCAtIDFdOwotICAgICppdGVyLmZpcnN0ID0gZW50cnk7Ci0KLSAgICArK21fa2V5Q291bnQ7Ci0g
ICAgCi0gICAgcmV0dXJuIHN0ZDo6bWFrZV9wYWlyKGl0ZXIsIHRydWUpOwotfQotCi1pbmxpbmUg
dm9pZCBQcm9wZXJ0eVRhYmxlOjpyZW1vdmUoVk0mIHZtLCBjb25zdCBmaW5kX2l0ZXJhdG9yJiBp
dGVyKQotewotICAgIC8vIFJlbW92aW5nIGEga2V5IHRoYXQgZG9lc24ndCBleGlzdCBkb2VzIG5v
dGhpbmchCi0gICAgaWYgKCFpdGVyLmZpcnN0KQotICAgICAgICByZXR1cm47Ci0KLSNpZiBEVU1Q
X1BST1BFUlRZTUFQX1NUQVRTCi0gICAgKytwcm9wZXJ0eU1hcEhhc2hUYWJsZVN0YXRzLT5udW1S
ZW1vdmVzOwotI2VuZGlmCi0KLSAgICAvLyBSZXBsYWNlIHRoaXMgb25lIGVsZW1lbnQgd2l0aCB0
aGUgZGVsZXRlZCBzZW50aW5lbC4gQWxzbyBjbGVhciBvdXQKLSAgICAvLyB0aGUgZW50cnkgc28g
d2UgY2FuIGl0ZXJhdGUgYWxsIHRoZSBlbnRyaWVzIGFzIG5lZWRlZC4KLSAgICBtX2luZGV4W2l0
ZXIuc2Vjb25kXSA9IGRlbGV0ZWRFbnRyeUluZGV4KCk7Ci0gICAgaXRlci5maXJzdC0+a2V5LT5k
ZXJlZigpOwotICAgIGl0ZXIuZmlyc3QtPmtleSA9IFBST1BFUlRZX01BUF9ERUxFVEVEX0VOVFJZ
X0tFWTsKLQotICAgIEFTU0VSVChtX2tleUNvdW50ID49IDEpOwotICAgIC0tbV9rZXlDb3VudDsK
LSAgICArK21fZGVsZXRlZENvdW50OwotCi0gICAgaWYgKG1fZGVsZXRlZENvdW50ICogNCA+PSBt
X2luZGV4U2l6ZSkKLSAgICAgICAgcmVoYXNoKHZtLCBtX2tleUNvdW50KTsKLX0KLQotaW5saW5l
IHZvaWQgUHJvcGVydHlUYWJsZTo6cmVtb3ZlKFZNJiB2bSwgY29uc3QgS2V5VHlwZSYga2V5KQot
ewotICAgIHJlbW92ZSh2bSwgZmluZChrZXkpKTsKLX0KLQotLy8gcmV0dXJucyB0aGUgbnVtYmVy
IG9mIHZhbHVlcyBpbiB0aGUgaGFzaHRhYmxlLgotaW5saW5lIHVuc2lnbmVkIFByb3BlcnR5VGFi
bGU6OnNpemUoKSBjb25zdAotewotICAgIHJldHVybiBtX2tleUNvdW50OwotfQotCi1pbmxpbmUg
Ym9vbCBQcm9wZXJ0eVRhYmxlOjppc0VtcHR5KCkgY29uc3QKLXsKLSAgICByZXR1cm4gIW1fa2V5
Q291bnQ7Ci19Ci0KLWlubGluZSB1bnNpZ25lZCBQcm9wZXJ0eVRhYmxlOjpwcm9wZXJ0eVN0b3Jh
Z2VTaXplKCkgY29uc3QKLXsKLSAgICByZXR1cm4gc2l6ZSgpICsgKG1fZGVsZXRlZE9mZnNldHMg
PyBtX2RlbGV0ZWRPZmZzZXRzLT5zaXplKCkgOiAwKTsKLX0KLQotaW5saW5lIHZvaWQgUHJvcGVy
dHlUYWJsZTo6Y2xlYXJEZWxldGVkT2Zmc2V0cygpCi17Ci0gICAgbV9kZWxldGVkT2Zmc2V0cyA9
IG51bGxwdHI7Ci19Ci0KLWlubGluZSBib29sIFByb3BlcnR5VGFibGU6Omhhc0RlbGV0ZWRPZmZz
ZXQoKQotewotICAgIHJldHVybiBtX2RlbGV0ZWRPZmZzZXRzICYmICFtX2RlbGV0ZWRPZmZzZXRz
LT5pc0VtcHR5KCk7Ci19Ci0KLWlubGluZSBQcm9wZXJ0eU9mZnNldCBQcm9wZXJ0eVRhYmxlOjpn
ZXREZWxldGVkT2Zmc2V0KCkKLXsKLSAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQgPSBtX2RlbGV0
ZWRPZmZzZXRzLT5sYXN0KCk7Ci0gICAgbV9kZWxldGVkT2Zmc2V0cy0+cmVtb3ZlTGFzdCgpOwot
ICAgIHJldHVybiBvZmZzZXQ7Ci19Ci0KLWlubGluZSB2b2lkIFByb3BlcnR5VGFibGU6OmFkZERl
bGV0ZWRPZmZzZXQoUHJvcGVydHlPZmZzZXQgb2Zmc2V0KQotewotICAgIGlmICghbV9kZWxldGVk
T2Zmc2V0cykKLSAgICAgICAgbV9kZWxldGVkT2Zmc2V0cyA9IG1ha2VVbmlxdWU8VmVjdG9yPFBy
b3BlcnR5T2Zmc2V0Pj4oKTsKLSAgICBBU1NFUlQoIW1fZGVsZXRlZE9mZnNldHMtPmNvbnRhaW5z
KG9mZnNldCkpOwotICAgIG1fZGVsZXRlZE9mZnNldHMtPmFwcGVuZChvZmZzZXQpOwotfQotCi1p
bmxpbmUgUHJvcGVydHlPZmZzZXQgUHJvcGVydHlUYWJsZTo6bmV4dE9mZnNldChQcm9wZXJ0eU9m
ZnNldCBpbmxpbmVDYXBhY2l0eSkKLXsKLSAgICBpZiAoaGFzRGVsZXRlZE9mZnNldCgpKQotICAg
ICAgICByZXR1cm4gZ2V0RGVsZXRlZE9mZnNldCgpOwotCi0gICAgcmV0dXJuIG9mZnNldEZvclBy
b3BlcnR5TnVtYmVyKHNpemUoKSwgaW5saW5lQ2FwYWNpdHkpOwotfQotCi1pbmxpbmUgUHJvcGVy
dHlUYWJsZSogUHJvcGVydHlUYWJsZTo6Y29weShWTSYgdm0sIHVuc2lnbmVkIG5ld0NhcGFjaXR5
KQotewotICAgIEFTU0VSVChuZXdDYXBhY2l0eSA+PSBtX2tleUNvdW50KTsKLQotICAgIC8vIEZh
c3QgY2FzZTsgaWYgdGhlIG5ldyB0YWJsZSB3aWxsIGJlIHRoZSBzYW1lIG1faW5kZXhTaXplIGFz
IHRoaXMgb25lLCB3ZSBjYW4gbWVtY3B5IGl0LAotICAgIC8vIHNhdmUgcmVoYXNoaW5nIGFsbCBr
ZXlzLgotICAgIGlmIChzaXplRm9yQ2FwYWNpdHkobmV3Q2FwYWNpdHkpID09IG1faW5kZXhTaXpl
KQotICAgICAgICByZXR1cm4gUHJvcGVydHlUYWJsZTo6Y2xvbmUodm0sICp0aGlzKTsKLSAgICBy
ZXR1cm4gUHJvcGVydHlUYWJsZTo6Y2xvbmUodm0sIG5ld0NhcGFjaXR5LCAqdGhpcyk7Ci19Ci0K
LSNpZm5kZWYgTkRFQlVHCi1pbmxpbmUgc2l6ZV90IFByb3BlcnR5VGFibGU6OnNpemVJbk1lbW9y
eSgpCi17Ci0gICAgc2l6ZV90IHJlc3VsdCA9IHNpemVvZihQcm9wZXJ0eVRhYmxlKSArIGRhdGFT
aXplKCk7Ci0gICAgaWYgKG1fZGVsZXRlZE9mZnNldHMpCi0gICAgICAgIHJlc3VsdCArPSAobV9k
ZWxldGVkT2Zmc2V0cy0+Y2FwYWNpdHkoKSAqIHNpemVvZihQcm9wZXJ0eU9mZnNldCkpOwotICAg
IHJldHVybiByZXN1bHQ7Ci19Ci0jZW5kaWYKLQotaW5saW5lIHZvaWQgUHJvcGVydHlUYWJsZTo6
cmVpbnNlcnQoY29uc3QgVmFsdWVUeXBlJiBlbnRyeSkKLXsKLSNpZiBEVU1QX1BST1BFUlRZTUFQ
X1NUQVRTCi0gICAgKytwcm9wZXJ0eU1hcEhhc2hUYWJsZVN0YXRzLT5udW1SZWluc2VydHM7Ci0j
ZW5kaWYKLQotICAgIC8vIFVzZWQgdG8gaW5zZXJ0IGEgdmFsdWUga25vd24gbm90IHRvIGJlIGlu
IHRoZSB0YWJsZSwgYW5kIHdoZXJlCi0gICAgLy8gd2Uga25vdyBjYXBhY2l0eSB0byBiZSBhdmFp
bGFibGUuCi0gICAgQVNTRVJUKGNhbkluc2VydCgpKTsKLSAgICBmaW5kX2l0ZXJhdG9yIGl0ZXIg
PSBmaW5kKGVudHJ5LmtleSk7Ci0gICAgQVNTRVJUKCFpdGVyLmZpcnN0KTsKLQotICAgIHVuc2ln
bmVkIGVudHJ5SW5kZXggPSB1c2VkQ291bnQoKSArIDE7Ci0gICAgbV9pbmRleFtpdGVyLnNlY29u
ZF0gPSBlbnRyeUluZGV4OwotICAgIHRhYmxlKClbZW50cnlJbmRleCAtIDFdID0gZW50cnk7Ci0K
LSAgICArK21fa2V5Q291bnQ7Ci19Ci0KLWlubGluZSB2b2lkIFByb3BlcnR5VGFibGU6OnJlaGFz
aChWTSYgdm0sIHVuc2lnbmVkIG5ld0NhcGFjaXR5KQotewotI2lmIERVTVBfUFJPUEVSVFlNQVBf
U1RBVFMKLSAgICArK3Byb3BlcnR5TWFwSGFzaFRhYmxlU3RhdHMtPm51bVJlaGFzaGVzOwotI2Vu
ZGlmCi0KLSAgICBzaXplX3Qgb2xkRGF0YVNpemUgPSBkYXRhU2l6ZSgpOwotICAgIHVuc2lnbmVk
KiBvbGRFbnRyeUluZGljZXMgPSBtX2luZGV4OwotICAgIGl0ZXJhdG9yIGl0ZXIgPSB0aGlzLT5i
ZWdpbigpOwotICAgIGl0ZXJhdG9yIGVuZCA9IHRoaXMtPmVuZCgpOwotCi0gICAgbV9pbmRleFNp
emUgPSBzaXplRm9yQ2FwYWNpdHkobmV3Q2FwYWNpdHkpOwotICAgIG1faW5kZXhNYXNrID0gbV9p
bmRleFNpemUgLSAxOwotICAgIG1fa2V5Q291bnQgPSAwOwotICAgIG1fZGVsZXRlZENvdW50ID0g
MDsKLQotICAgIG1faW5kZXggPSBzdGF0aWNfY2FzdDx1bnNpZ25lZCo+KFByb3BlcnR5VGFibGVN
YWxsb2M6Onplcm9lZE1hbGxvYyhkYXRhU2l6ZSgpKSk7Ci0KLSAgICBmb3IgKDsgaXRlciAhPSBl
bmQ7ICsraXRlcikgewotICAgICAgICBBU1NFUlQoY2FuSW5zZXJ0KCkpOwotICAgICAgICByZWlu
c2VydCgqaXRlcik7Ci0gICAgfQotCi0gICAgUHJvcGVydHlUYWJsZU1hbGxvYzo6ZnJlZShvbGRF
bnRyeUluZGljZXMpOwotCi0gICAgaWYgKG9sZERhdGFTaXplIDwgZGF0YVNpemUoKSkKLSAgICAg
ICAgdm0uaGVhcC5yZXBvcnRFeHRyYU1lbW9yeUFsbG9jYXRlZChkYXRhU2l6ZSgpIC0gb2xkRGF0
YVNpemUpOwotfQotCi1pbmxpbmUgdW5zaWduZWQgUHJvcGVydHlUYWJsZTo6dGFibGVDYXBhY2l0
eSgpIGNvbnN0IHsgcmV0dXJuIG1faW5kZXhTaXplID4+IDE7IH0KLQotaW5saW5lIHVuc2lnbmVk
IFByb3BlcnR5VGFibGU6OmRlbGV0ZWRFbnRyeUluZGV4KCkgY29uc3QgeyByZXR1cm4gdGFibGVD
YXBhY2l0eSgpICsgMTsgfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotaW5saW5lIFQqIFByb3Bl
cnR5VGFibGU6OnNraXBEZWxldGVkRW50cmllcyhUKiB2YWx1ZVB0ciwgVCogZW5kVmFsdWVQdHIp
Ci17Ci0gICAgd2hpbGUgKHZhbHVlUHRyIDwgZW5kVmFsdWVQdHIgJiYgdmFsdWVQdHItPmtleSA9
PSBQUk9QRVJUWV9NQVBfREVMRVRFRF9FTlRSWV9LRVkpCi0gICAgICAgICsrdmFsdWVQdHI7Ci0g
ICAgcmV0dXJuIHZhbHVlUHRyOwotfQotCi1pbmxpbmUgUHJvcGVydHlUYWJsZTo6VmFsdWVUeXBl
KiBQcm9wZXJ0eVRhYmxlOjp0YWJsZSgpCi17Ci0gICAgLy8gVGhlIHRhYmxlIG9mIHZhbHVlcyBs
aWVzIGFmdGVyIHRoZSBoYXNoIGluZGV4LgotICAgIHJldHVybiByZWludGVycHJldF9jYXN0X3B0
cjxWYWx1ZVR5cGUqPihtX2luZGV4ICsgbV9pbmRleFNpemUpOwotfQotCi1pbmxpbmUgY29uc3Qg
UHJvcGVydHlUYWJsZTo6VmFsdWVUeXBlKiBQcm9wZXJ0eVRhYmxlOjp0YWJsZSgpIGNvbnN0Ci17
Ci0gICAgLy8gVGhlIHRhYmxlIG9mIHZhbHVlcyBsaWVzIGFmdGVyIHRoZSBoYXNoIGluZGV4Lgot
ICAgIHJldHVybiByZWludGVycHJldF9jYXN0X3B0cjxjb25zdCBWYWx1ZVR5cGUqPihtX2luZGV4
ICsgbV9pbmRleFNpemUpOwotfQotCi1pbmxpbmUgdW5zaWduZWQgUHJvcGVydHlUYWJsZTo6dXNl
ZENvdW50KCkgY29uc3QKLXsKLSAgICAvLyBUb3RhbCBudW1iZXIgb2YgIHVzZWQgZW50cmllcyBp
biB0aGUgdmFsdWVzIGFycmF5IC0gYnkgZWl0aGVyIHZhbGlkIGVudHJpZXMsIG9yIGRlbGV0ZWQg
b25lcy4KLSAgICByZXR1cm4gbV9rZXlDb3VudCArIG1fZGVsZXRlZENvdW50OwotfQotCi1pbmxp
bmUgc2l6ZV90IFByb3BlcnR5VGFibGU6OmRhdGFTaXplKCkKLXsKLSAgICAvLyBUaGUgc2l6ZSBp
biBieXRlcyBvZiBkYXRhIG5lZWRlZCBmb3IgYnkgdGhlIHRhYmxlLgotICAgIC8vIEVuc3VyZSB0
aGF0IHRoaXMgZnVuY3Rpb24gY2FuIGJlIGNhbGxlZCBjb25jdXJyZW50bHkuCi0gICAgdW5zaWdu
ZWQgaW5kZXhTaXplID0gbV9pbmRleFNpemU7Ci0gICAgcmV0dXJuIGluZGV4U2l6ZSAqIHNpemVv
Zih1bnNpZ25lZCkgKyAoKGluZGV4U2l6ZSA+PiAxKSArIDEpICogc2l6ZW9mKFZhbHVlVHlwZSk7
Ci19Ci0KLWlubGluZSB1bnNpZ25lZCBQcm9wZXJ0eVRhYmxlOjpzaXplRm9yQ2FwYWNpdHkodW5z
aWduZWQgY2FwYWNpdHkpCi17Ci0gICAgaWYgKGNhcGFjaXR5IDwgTWluaW11bVRhYmxlU2l6ZSAv
IDIpCi0gICAgICAgIHJldHVybiBNaW5pbXVtVGFibGVTaXplOwotICAgIHJldHVybiBuZXh0UG93
ZXJPZjIoY2FwYWNpdHkgKyAxKSAqIDI7Ci19Ci0KLWlubGluZSBib29sIFByb3BlcnR5VGFibGU6
OmNhbkluc2VydCgpCi17Ci0gICAgcmV0dXJuIHVzZWRDb3VudCgpIDwgdGFibGVDYXBhY2l0eSgp
OwotfQotCi19IC8vIG5hbWVzcGFjZSBKU0MKClByb3BlcnR5IGNoYW5nZXMgb246IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5TWFwSGFzaFRhYmxlLmgKX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpE
ZWxldGVkOiBzdm46ZW9sLXN0eWxlCiMjIC0xICswLDAgIyMKLW5hdGl2ZQpcIE5vIG5ld2xpbmUg
YXQgZW5kIG9mIHByb3BlcnR5CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Q
cm9wZXJ0eVRhYmxlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Qcm9wZXJ0eVRhYmxlLmNwcAkocmV2aXNpb24gMjg2MDI0KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlUYWJsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0
LDcgKzI0LDcgQEAKICAqLwogCiAjaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiUHJvcGVy
dHlNYXBIYXNoVGFibGUuaCIKKyNpbmNsdWRlICJQcm9wZXJ0eVRhYmxlLmgiCiAKICNpbmNsdWRl
ICJKU0NKU1ZhbHVlSW5saW5lcy5oIgogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Qcm9wZXJ0eVRhYmxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvUHJvcGVydHlUYWJsZS5oCShyZXZpc2lvbiAyODYwMjQpCShmcm9tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5TWFwSGFzaFRhYmxlLmg6Mjg2MDI0KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlUYWJsZS5oCSh3b3JraW5nIGNv
cHkpCkBAIC0wLDAgKzEsNTg3IEBACisvKgorICogIENvcHlyaWdodCAoQykgMjAwNC0yMDIxIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGZy
ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogIG1vZGlmeSBp
dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiAg
TGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0
aGVyCisgKiAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFu
eSBsYXRlciB2ZXJzaW9uLgorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4g
dGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqICBidXQgV0lUSE9VVCBBTlkgV0FS
UkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogIE1FUkNIQU5U
QUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05V
CisgKiAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisg
KgorICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2Vl
IHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogIHRoZSBGcmVlIFNv
ZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3Is
CisgKiAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKgorICovCisKKyNwcmFnbWEgb25j
ZQorCisjaW5jbHVkZSAiSlNFeHBvcnRNYWNyb3MuaCIKKyNpbmNsdWRlICJQcm9wZXJ0eU9mZnNl
dC5oIgorI2luY2x1ZGUgIlN0cnVjdHVyZS5oIgorI2luY2x1ZGUgIldyaXRlQmFycmllci5oIgor
I2luY2x1ZGUgPHd0Zi9IYXNoVGFibGUuaD4KKyNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgor
I2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+Cisj
aW5jbHVkZSA8d3RmL3RleHQvQXRvbVN0cmluZ0ltcGwuaD4KKworCisjZGVmaW5lIERVTVBfUFJP
UEVSVFlNQVBfU1RBVFMgMAorI2RlZmluZSBEVU1QX1BST1BFUlRZTUFQX0NPTExJU0lPTlMgMAor
CisjZGVmaW5lIFBST1BFUlRZX01BUF9ERUxFVEVEX0VOVFJZX0tFWSAoKFVuaXF1ZWRTdHJpbmdJ
bXBsKikxKQorCituYW1lc3BhY2UgSlNDIHsKKworREVDTEFSRV9BTExPQ0FUT1JfV0lUSF9IRUFQ
X0lERU5USUZJRVIoUHJvcGVydHlUYWJsZSk7CisKKyNpZiBEVU1QX1BST1BFUlRZTUFQX1NUQVRT
CisKK3N0cnVjdCBQcm9wZXJ0eU1hcEhhc2hUYWJsZVN0YXRzIHsKKyAgICBzdGQ6OmF0b21pYzx1
bnNpZ25lZD4gbnVtRmluZHM7CisgICAgc3RkOjphdG9taWM8dW5zaWduZWQ+IG51bUNvbGxpc2lv
bnM7CisgICAgc3RkOjphdG9taWM8dW5zaWduZWQ+IG51bUxvb2t1cHM7CisgICAgc3RkOjphdG9t
aWM8dW5zaWduZWQ+IG51bUxvb2t1cFByb2Jpbmc7CisgICAgc3RkOjphdG9taWM8dW5zaWduZWQ+
IG51bUFkZHM7CisgICAgc3RkOjphdG9taWM8dW5zaWduZWQ+IG51bVJlbW92ZXM7CisgICAgc3Rk
OjphdG9taWM8dW5zaWduZWQ+IG51bVJlaGFzaGVzOworICAgIHN0ZDo6YXRvbWljPHVuc2lnbmVk
PiBudW1SZWluc2VydHM7Cit9OworCitKU19FWFBPUlRfUFJJVkFURSBleHRlcm4gUHJvcGVydHlN
YXBIYXNoVGFibGVTdGF0cyogcHJvcGVydHlNYXBIYXNoVGFibGVTdGF0czsKKworI2VuZGlmCisK
K2lubGluZSBib29sIGlzUG93ZXJPZjIodW5zaWduZWQgdikKK3sKKyAgICByZXR1cm4gaGFzT25l
Qml0U2V0KHYpOworfQorCitpbmxpbmUgdW5zaWduZWQgbmV4dFBvd2VyT2YyKHVuc2lnbmVkIHYp
Cit7CisgICAgLy8gVGFrZW4gZnJvbSBodHRwOi8vd3d3LmNzLnV0ay5lZHUvfnZvc2UvYy1zdHVm
Zi9iaXRoYWNrcy5odG1sCisgICAgLy8gRGV2aXNlZCBieSBTZWFuIEFuZGVyc29uLCBTZXBlbWJl
ciAxNCwgMjAwMQorCisgICAgdi0tOworICAgIHYgfD0gdiA+PiAxOworICAgIHYgfD0gdiA+PiAy
OworICAgIHYgfD0gdiA+PiA0OworICAgIHYgfD0gdiA+PiA4OworICAgIHYgfD0gdiA+PiAxNjsK
KyAgICB2Kys7CisKKyAgICByZXR1cm4gdjsKK30KKworY2xhc3MgUHJvcGVydHlUYWJsZSBmaW5h
bCA6IHB1YmxpYyBKU0NlbGwgeworCisgICAgLy8gVGhpcyBpcyB0aGUgaW1wbGVtZW50YXRpb24g
Zm9yICdpdGVyYXRvcicgYW5kICdjb25zdF9pdGVyYXRvcicsCisgICAgLy8gdXNlZCBmb3IgaXRl
cmF0aW5nIG92ZXIgdGhlIHRhYmxlIGluIGluc2VydGlvbiBvcmRlci4KKyAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBUPgorICAgIGNsYXNzIG9yZGVyZWRfaXRlcmF0b3IgeworICAgIHB1YmxpYzoKKyAg
ICAgICAgb3JkZXJlZF9pdGVyYXRvcjxUPiYgb3BlcmF0b3IrKygpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIG1fdmFsdWVQdHIgPSBza2lwRGVsZXRlZEVudHJpZXMobV92YWx1ZVB0ciArIDEsIG1f
ZW5kVmFsdWVQdHIpOworICAgICAgICAgICAgcmV0dXJuICp0aGlzOworICAgICAgICB9CisKKyAg
ICAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IG9yZGVyZWRfaXRlcmF0b3I8VD4mIG90aGVyKQor
ICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gbV92YWx1ZVB0ciA9PSBvdGhlci5tX3ZhbHVl
UHRyOworICAgICAgICB9CisKKyAgICAgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IG9yZGVyZWRf
aXRlcmF0b3I8VD4mIG90aGVyKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gbV92YWx1
ZVB0ciAhPSBvdGhlci5tX3ZhbHVlUHRyOworICAgICAgICB9CisKKyAgICAgICAgVCYgb3BlcmF0
b3IqKCkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuICptX3ZhbHVlUHRyOworICAgICAg
ICB9CisKKyAgICAgICAgVCogb3BlcmF0b3ItPigpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJl
dHVybiBtX3ZhbHVlUHRyOworICAgICAgICB9CisKKyAgICAgICAgb3JkZXJlZF9pdGVyYXRvcihU
KiB2YWx1ZVB0ciwgVCogZW5kVmFsdWVQdHIpCisgICAgICAgICAgICA6IG1fdmFsdWVQdHIodmFs
dWVQdHIpCisgICAgICAgICAgICAsIG1fZW5kVmFsdWVQdHIoZW5kVmFsdWVQdHIpCisgICAgICAg
IHsKKyAgICAgICAgfQorCisgICAgcHJpdmF0ZToKKyAgICAgICAgVCogbV92YWx1ZVB0cjsKKyAg
ICAgICAgVCogbV9lbmRWYWx1ZVB0cjsKKyAgICB9OworCitwdWJsaWM6CisgICAgdHlwZWRlZiBK
U0NlbGwgQmFzZTsKKyAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdz
ID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBTdHJ1Y3R1cmVJc0ltbW9ydGFsOworCisgICAgdGVt
cGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNzPgorICAgIHN0YXRpYyBJc29T
dWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQorICAgIHsKKyAgICAgICAgcmV0dXJuICZ2bS5w
cm9wZXJ0eVRhYmxlU3BhY2U7CisgICAgfQorCisgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIG5l
ZWRzRGVzdHJ1Y3Rpb24gPSB0cnVlOworICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDZWxsKik7
CisgICAgREVDTEFSRV9WSVNJVF9DSElMRFJFTjsKKworICAgIERFQ0xBUkVfRVhQT1JUX0lORk87
CisKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKKyAgICB7CisgICAgICAg
IHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5
cGVJbmZvKENlbGxUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CisgICAgfQorCisgICAg
dHlwZWRlZiBVbmlxdWVkU3RyaW5nSW1wbCogS2V5VHlwZTsKKyAgICB0eXBlZGVmIFByb3BlcnR5
TWFwRW50cnkgVmFsdWVUeXBlOworCisgICAgLy8gVGhlIGluIG9yZGVyIGl0ZXJhdG9yIHByb3Zp
ZGVzIG92ZXJsb2FkZWQgKiBhbmQgLT4gdG8gYWNjZXNzIHRoZSBWYWx1ZSBhdCB0aGUgY3VycmVu
dCBwb3NpdGlvbi4KKyAgICB0eXBlZGVmIG9yZGVyZWRfaXRlcmF0b3I8VmFsdWVUeXBlPiBpdGVy
YXRvcjsKKyAgICB0eXBlZGVmIG9yZGVyZWRfaXRlcmF0b3I8Y29uc3QgVmFsdWVUeXBlPiBjb25z
dF9pdGVyYXRvcjsKKworICAgIC8vIFRoZSBmaW5kX2l0ZXJhdG9yIGlzIGEgcGFpciBvZiBhIHBv
aW50ZXIgdG8gYSBWYWx1ZSogYW4gdGhlIGVudHJ5IGluIHRoZSBpbmRleC4KKyAgICAvLyBJZiAn
ZmluZCcgZG9lcyBub3QgZmluZCBhbiBlbnRyeSB0aGVuIGl0ZXIuZmlyc3Qgd2lsbCBiZSAwLCBh
bmQgaXRlci5zZWNvbmQgd2lsbAorICAgIC8vIGdpdmUgdGhlIHBvaW50IGluIG1faW5kZXggd2hl
cmUgYW4gZW50cnkgc2hvdWxkIGJlIGluc2VydGVkLgorICAgIHR5cGVkZWYgc3RkOjpwYWlyPFZh
bHVlVHlwZSosIHVuc2lnbmVkPiBmaW5kX2l0ZXJhdG9yOworCisgICAgLy8gQ29uc3RydWN0b3Ig
aXMgcGFzc2VkIGFuIGluaXRpYWwgY2FwYWNpdHksIGEgUHJvcGVydHlUYWJsZSB0byBjb3B5LCBv
ciBib3RoLgorICAgIHN0YXRpYyBQcm9wZXJ0eVRhYmxlKiBjcmVhdGUoVk0mLCB1bnNpZ25lZCBp
bml0aWFsQ2FwYWNpdHkpOworICAgIHN0YXRpYyBQcm9wZXJ0eVRhYmxlKiBjbG9uZShWTSYsIGNv
bnN0IFByb3BlcnR5VGFibGUmKTsKKyAgICBzdGF0aWMgUHJvcGVydHlUYWJsZSogY2xvbmUoVk0m
LCB1bnNpZ25lZCBpbml0aWFsQ2FwYWNpdHksIGNvbnN0IFByb3BlcnR5VGFibGUmKTsKKyAgICB+
UHJvcGVydHlUYWJsZSgpOworCisgICAgLy8gT3JkZXJlZCBpdGVyYXRpb24gbWV0aG9kcy4KKyAg
ICBpdGVyYXRvciBiZWdpbigpOworICAgIGl0ZXJhdG9yIGVuZCgpOworICAgIGNvbnN0X2l0ZXJh
dG9yIGJlZ2luKCkgY29uc3Q7CisgICAgY29uc3RfaXRlcmF0b3IgZW5kKCkgY29uc3Q7CisKKyAg
ICAvLyBGaW5kIGEgdmFsdWUgaW4gdGhlIHRhYmxlLgorICAgIGZpbmRfaXRlcmF0b3IgZmluZChj
b25zdCBLZXlUeXBlJik7CisgICAgVmFsdWVUeXBlKiBnZXQoY29uc3QgS2V5VHlwZSYpOworICAg
IC8vIEFkZCBhIHZhbHVlIHRvIHRoZSB0YWJsZQorICAgIHN0ZDo6cGFpcjxmaW5kX2l0ZXJhdG9y
LCBib29sPiBXQVJOX1VOVVNFRF9SRVRVUk4gYWRkKFZNJiwgY29uc3QgVmFsdWVUeXBlJiBlbnRy
eSk7CisgICAgLy8gUmVtb3ZlIGEgdmFsdWUgZnJvbSB0aGUgdGFibGUuCisgICAgdm9pZCByZW1v
dmUoVk0mLCBjb25zdCBmaW5kX2l0ZXJhdG9yJiBpdGVyKTsKKyAgICB2b2lkIHJlbW92ZShWTSYs
IGNvbnN0IEtleVR5cGUmIGtleSk7CisKKyAgICAvLyBSZXR1cm5zIHRoZSBudW1iZXIgb2YgdmFs
dWVzIGluIHRoZSBoYXNodGFibGUuCisgICAgdW5zaWduZWQgc2l6ZSgpIGNvbnN0OworCisgICAg
Ly8gQ2hlY2tzIGlmIHRoZXJlIGFyZSBhbnkgdmFsdWVzIGluIHRoZSBoYXNodGFibGUuCisgICAg
Ym9vbCBpc0VtcHR5KCkgY29uc3Q7CisKKyAgICAvLyBOdW1iZXIgb2Ygc2xvdHMgaW4gdGhlIHBy
b3BlcnR5IHN0b3JhZ2UgYXJyYXkgaW4gdXNlLCBpbmNsdWRlZCBkZWxldGVkT2Zmc2V0cy4KKyAg
ICB1bnNpZ25lZCBwcm9wZXJ0eVN0b3JhZ2VTaXplKCkgY29uc3Q7CisKKyAgICAvLyBVc2VkIHRv
IG1haW50YWluIGEgbGlzdCBvZiB1bnVzZWQgZW50cmllcyBpbiB0aGUgcHJvcGVydHkgc3RvcmFn
ZS4KKyAgICB2b2lkIGNsZWFyRGVsZXRlZE9mZnNldHMoKTsKKyAgICBib29sIGhhc0RlbGV0ZWRP
ZmZzZXQoKTsKKyAgICBQcm9wZXJ0eU9mZnNldCBnZXREZWxldGVkT2Zmc2V0KCk7CisgICAgdm9p
ZCBhZGREZWxldGVkT2Zmc2V0KFByb3BlcnR5T2Zmc2V0KTsKKyAgICAKKyAgICBQcm9wZXJ0eU9m
ZnNldCBuZXh0T2Zmc2V0KFByb3BlcnR5T2Zmc2V0IGlubGluZUNhcGFjaXR5KTsKKworICAgIC8v
IENvcHkgdGhpcyBQcm9wZXJ0eVRhYmxlLCBlbnN1cmluZyB0aGUgY29weSBoYXMgYXQgbGVhc3Qg
dGhlIGNhcGFjaXR5IHByb3ZpZGVkLgorICAgIFByb3BlcnR5VGFibGUqIGNvcHkoVk0mLCB1bnNp
Z25lZCBuZXdDYXBhY2l0eSk7CisKKyNpZm5kZWYgTkRFQlVHCisgICAgc2l6ZV90IHNpemVJbk1l
bW9yeSgpOworICAgIHZvaWQgY2hlY2tDb25zaXN0ZW5jeSgpOworI2VuZGlmCisgICAgCisgICAg
c3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZkluZGV4U2l6ZSgpIHsgcmV0dXJuIE9CSkVDVF9PRkZT
RVRPRihQcm9wZXJ0eVRhYmxlLCBtX2luZGV4U2l6ZSk7IH0KKyAgICBzdGF0aWMgcHRyZGlmZl90
IG9mZnNldE9mSW5kZXhNYXNrKCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKFByb3BlcnR5VGFi
bGUsIG1faW5kZXhNYXNrKTsgfQorICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZJbmRleCgp
IHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihQcm9wZXJ0eVRhYmxlLCBtX2luZGV4KTsgfQorCisg
ICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBFbXB0eUVudHJ5SW5kZXggPSAwOworCitwcml2
YXRlOgorICAgIFByb3BlcnR5VGFibGUoVk0mLCB1bnNpZ25lZCBpbml0aWFsQ2FwYWNpdHkpOwor
ICAgIFByb3BlcnR5VGFibGUoVk0mLCBjb25zdCBQcm9wZXJ0eVRhYmxlJik7CisgICAgUHJvcGVy
dHlUYWJsZShWTSYsIHVuc2lnbmVkIGluaXRpYWxDYXBhY2l0eSwgY29uc3QgUHJvcGVydHlUYWJs
ZSYpOworCisgICAgUHJvcGVydHlUYWJsZShjb25zdCBQcm9wZXJ0eVRhYmxlJik7CisKKyAgICB2
b2lkIGZpbmlzaENyZWF0aW9uKFZNJik7CisKKyAgICAvLyBVc2VkIHRvIGluc2VydCBhIHZhbHVl
IGtub3duIG5vdCB0byBiZSBpbiB0aGUgdGFibGUsIGFuZCB3aGVyZSB3ZSBrbm93IGNhcGFjaXR5
IHRvIGJlIGF2YWlsYWJsZS4KKyAgICB2b2lkIHJlaW5zZXJ0KGNvbnN0IFZhbHVlVHlwZSYgZW50
cnkpOworCisgICAgLy8gUmVoYXNoIHRoZSB0YWJsZS4gIFVzZWQgdG8gZ3Jvdywgb3IgdG8gcmVj
b3ZlciBkZWxldGVkIHNsb3RzLgorICAgIHZvaWQgcmVoYXNoKFZNJiwgdW5zaWduZWQgbmV3Q2Fw
YWNpdHkpOworCisgICAgLy8gVGhlIGNhcGFjaXR5IG9mIHRoZSB0YWJsZSBvZiB2YWx1ZXMgaXMg
aGFsZiBvZiB0aGUgc2l6ZSBvZiB0aGUgaW5kZXguCisgICAgdW5zaWduZWQgdGFibGVDYXBhY2l0
eSgpIGNvbnN0OworCisgICAgLy8gV2Uga2VlcCBhbiBleHRyYSBkZWxldGVkIHNsb3QgYWZ0ZXIg
dGhlIGFycmF5IHRvIG1ha2UgaXRlcmF0aW9uIHdvcmssCisgICAgLy8gYW5kIHRvIHVzZSBmb3Ig
ZGVsZXRlZCB2YWx1ZXMuIEluZGV4IHZhbHVlcyBpbnRvIHRoZSBhcnJheSBhcmUgMS1iYXNlZCwK
KyAgICAvLyBzbyB0aGlzIGlzIHRhYmxlQ2FwYWNpdHkoKSArIDEuCisgICAgLy8gRm9yIGV4YW1w
bGUsIGlmIG1fdGFibGVTaXplIGlzIDE2LCB0aGVuIHRhYmxlQ2FwYWNpdHkoKSBpcyA4IC0gYnV0
IHRoZQorICAgIC8vIHZhbHVlcyBhcnJheSBpcyBhY3R1YWxseSA5IGxvbmcgKHRoZSA5dGggdXNl
ZCBmb3IgdGhlIGRlbGV0ZWQgdmFsdWUvCisgICAgLy8gaXRlcmF0aW9uIGd1YXJkKS4gIFRoZSA4
IHZhbGlkIGVudHJpZXMgYXJlIG51bWJlcmVkIDEuLjgsIHNvIHRoZQorICAgIC8vIGRlbGV0ZWQg
aW5kZXggaXMgOSAoMCBiZWluZyByZXNlcnZlZCBmb3IgZW1wdHkpLgorICAgIHVuc2lnbmVkIGRl
bGV0ZWRFbnRyeUluZGV4KCkgY29uc3Q7CisKKyAgICAvLyBVc2VkIGluIGl0ZXJhdG9yIGNyZWF0
aW9uL3Byb2dyZXNzaW9uLgorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CisgICAgc3RhdGljIFQq
IHNraXBEZWxldGVkRW50cmllcyhUKiB2YWx1ZVB0ciwgVCogZW5kVmFsdWVQdHIpOworCisgICAg
Ly8gVGhlIHRhYmxlIG9mIHZhbHVlcyBsaWVzIGFmdGVyIHRoZSBoYXNoIGluZGV4LgorICAgIFZh
bHVlVHlwZSogdGFibGUoKTsKKyAgICBjb25zdCBWYWx1ZVR5cGUqIHRhYmxlKCkgY29uc3Q7CisK
KyAgICBWYWx1ZVR5cGUqIHRhYmxlRW5kKCkgeyByZXR1cm4gdGFibGUoKSArIHVzZWRDb3VudCgp
OyB9CisgICAgY29uc3QgVmFsdWVUeXBlKiB0YWJsZUVuZCgpIGNvbnN0IHsgcmV0dXJuIHRhYmxl
KCkgKyB1c2VkQ291bnQoKTsgfQorCisgICAgLy8gdG90YWwgbnVtYmVyIG9mICB1c2VkIGVudHJp
ZXMgaW4gdGhlIHZhbHVlcyBhcnJheSAtIGJ5IGVpdGhlciB2YWxpZCBlbnRyaWVzLCBvciBkZWxl
dGVkIG9uZXMuCisgICAgdW5zaWduZWQgdXNlZENvdW50KCkgY29uc3Q7CisKKyAgICAvLyBUaGUg
c2l6ZSBpbiBieXRlcyBvZiBkYXRhIG5lZWRlZCBmb3IgYnkgdGhlIHRhYmxlLgorICAgIHNpemVf
dCBkYXRhU2l6ZSgpOworCisgICAgLy8gQ2FsY3VsYXRlcyB0aGUgYXBwcm9wcmlhdGUgdGFibGUg
c2l6ZSAocm91bmRzIHVwIHRvIGEgcG93ZXIgb2YgdHdvKS4KKyAgICBzdGF0aWMgdW5zaWduZWQg
c2l6ZUZvckNhcGFjaXR5KHVuc2lnbmVkIGNhcGFjaXR5KTsKKworICAgIC8vIENoZWNrIGlmIGNh
cGFjaXR5IGlzIGF2YWlsYWJsZS4KKyAgICBib29sIGNhbkluc2VydCgpOworCisgICAgdW5zaWdu
ZWQgbV9pbmRleFNpemU7CisgICAgdW5zaWduZWQgbV9pbmRleE1hc2s7CisgICAgdW5zaWduZWQq
IG1faW5kZXg7CisgICAgdW5zaWduZWQgbV9rZXlDb3VudDsKKyAgICB1bnNpZ25lZCBtX2RlbGV0
ZWRDb3VudDsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8VmVjdG9yPFByb3BlcnR5T2Zmc2V0Pj4gbV9k
ZWxldGVkT2Zmc2V0czsKKworICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgTWluaW11bVRh
YmxlU2l6ZSA9IDE2OworfTsKKworaW5saW5lIFByb3BlcnR5VGFibGU6Oml0ZXJhdG9yIFByb3Bl
cnR5VGFibGU6OmJlZ2luKCkKK3sKKyAgICBhdXRvKiB0YWJsZUVuZCA9IHRoaXMtPnRhYmxlRW5k
KCk7CisgICAgcmV0dXJuIGl0ZXJhdG9yKHNraXBEZWxldGVkRW50cmllcyh0YWJsZSgpLCB0YWJs
ZUVuZCksIHRhYmxlRW5kKTsKK30KKworaW5saW5lIFByb3BlcnR5VGFibGU6Oml0ZXJhdG9yIFBy
b3BlcnR5VGFibGU6OmVuZCgpCit7CisgICAgYXV0byogdGFibGVFbmQgPSB0aGlzLT50YWJsZUVu
ZCgpOworICAgIHJldHVybiBpdGVyYXRvcih0YWJsZUVuZCwgdGFibGVFbmQpOworfQorCitpbmxp
bmUgUHJvcGVydHlUYWJsZTo6Y29uc3RfaXRlcmF0b3IgUHJvcGVydHlUYWJsZTo6YmVnaW4oKSBj
b25zdAoreworICAgIGF1dG8qIHRhYmxlRW5kID0gdGhpcy0+dGFibGVFbmQoKTsKKyAgICByZXR1
cm4gY29uc3RfaXRlcmF0b3Ioc2tpcERlbGV0ZWRFbnRyaWVzKHRhYmxlKCksIHRhYmxlRW5kKSwg
dGFibGVFbmQpOworfQorCitpbmxpbmUgUHJvcGVydHlUYWJsZTo6Y29uc3RfaXRlcmF0b3IgUHJv
cGVydHlUYWJsZTo6ZW5kKCkgY29uc3QKK3sKKyAgICBhdXRvKiB0YWJsZUVuZCA9IHRoaXMtPnRh
YmxlRW5kKCk7CisgICAgcmV0dXJuIGNvbnN0X2l0ZXJhdG9yKHRhYmxlRW5kLCB0YWJsZUVuZCk7
Cit9CisKK2lubGluZSBQcm9wZXJ0eVRhYmxlOjpmaW5kX2l0ZXJhdG9yIFByb3BlcnR5VGFibGU6
OmZpbmQoY29uc3QgS2V5VHlwZSYga2V5KQoreworICAgIEFTU0VSVChrZXkpOworICAgIEFTU0VS
VChrZXktPmlzQXRvbSgpIHx8IGtleS0+aXNTeW1ib2woKSk7CisgICAgdW5zaWduZWQgaGFzaCA9
IElkZW50aWZpZXJSZXBIYXNoOjpoYXNoKGtleSk7CisKKyNpZiBEVU1QX1BST1BFUlRZTUFQX1NU
QVRTCisgICAgKytwcm9wZXJ0eU1hcEhhc2hUYWJsZVN0YXRzLT5udW1GaW5kczsKKyNlbmRpZgor
CisgICAgd2hpbGUgKHRydWUpIHsKKyAgICAgICAgdW5zaWduZWQgZW50cnlJbmRleCA9IG1faW5k
ZXhbaGFzaCAmIG1faW5kZXhNYXNrXTsKKyAgICAgICAgaWYgKGVudHJ5SW5kZXggPT0gRW1wdHlF
bnRyeUluZGV4KQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV9wYWlyKChWYWx1ZVR5cGUq
KW51bGxwdHIsIGhhc2ggJiBtX2luZGV4TWFzayk7CisgICAgICAgIGlmIChrZXkgPT0gdGFibGUo
KVtlbnRyeUluZGV4IC0gMV0ua2V5KQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV9wYWly
KCZ0YWJsZSgpW2VudHJ5SW5kZXggLSAxXSwgaGFzaCAmIG1faW5kZXhNYXNrKTsKKworI2lmIERV
TVBfUFJPUEVSVFlNQVBfU1RBVFMKKyAgICAgICAgKytwcm9wZXJ0eU1hcEhhc2hUYWJsZVN0YXRz
LT5udW1Db2xsaXNpb25zOworI2VuZGlmCisKKyNpZiBEVU1QX1BST1BFUlRZTUFQX0NPTExJU0lP
TlMKKyAgICAgICAgZGF0YUxvZygiUHJvcGVydHlUYWJsZSBjb2xsaXNpb24gZm9yICIsIGtleSwg
IiAoIiwgaGFzaCwgIilcbiIpOworICAgICAgICBkYXRhTG9nKCJDb2xsaWRlZCB3aXRoICIsIHRh
YmxlKClbZW50cnlJbmRleCAtIDFdLmtleSwgIigiLCBJZGVudGlmaWVyUmVwSGFzaDo6aGFzaCh0
YWJsZSgpW2VudHJ5SW5kZXggLSAxXS5rZXkpLCAiKVxuIik7CisjZW5kaWYKKworICAgICAgICBo
YXNoKys7CisgICAgfQorfQorCitpbmxpbmUgUHJvcGVydHlUYWJsZTo6VmFsdWVUeXBlKiBQcm9w
ZXJ0eVRhYmxlOjpnZXQoY29uc3QgS2V5VHlwZSYga2V5KQoreworICAgIEFTU0VSVChrZXkpOwor
ICAgIEFTU0VSVChrZXktPmlzQXRvbSgpIHx8IGtleS0+aXNTeW1ib2woKSk7CisgICAgQVNTRVJU
KGtleSAhPSBQUk9QRVJUWV9NQVBfREVMRVRFRF9FTlRSWV9LRVkpOworCisgICAgaWYgKCFtX2tl
eUNvdW50KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIHVuc2lnbmVkIGhhc2ggPSBJ
ZGVudGlmaWVyUmVwSGFzaDo6aGFzaChrZXkpOworCisjaWYgRFVNUF9QUk9QRVJUWU1BUF9TVEFU
UworICAgICsrcHJvcGVydHlNYXBIYXNoVGFibGVTdGF0cy0+bnVtTG9va3VwczsKKyNlbmRpZgor
CisgICAgd2hpbGUgKHRydWUpIHsKKyAgICAgICAgdW5zaWduZWQgZW50cnlJbmRleCA9IG1faW5k
ZXhbaGFzaCAmIG1faW5kZXhNYXNrXTsKKyAgICAgICAgaWYgKGVudHJ5SW5kZXggPT0gRW1wdHlF
bnRyeUluZGV4KQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIGlmIChrZXkg
PT0gdGFibGUoKVtlbnRyeUluZGV4IC0gMV0ua2V5KSB7CisgICAgICAgICAgICBBU1NFUlQoIW1f
ZGVsZXRlZE9mZnNldHMgfHwgIW1fZGVsZXRlZE9mZnNldHMtPmNvbnRhaW5zKHRhYmxlKClbZW50
cnlJbmRleCAtIDFdLm9mZnNldCkpOworICAgICAgICAgICAgcmV0dXJuICZ0YWJsZSgpW2VudHJ5
SW5kZXggLSAxXTsKKyAgICAgICAgfQorCisjaWYgRFVNUF9QUk9QRVJUWU1BUF9TVEFUUworICAg
ICAgICArK3Byb3BlcnR5TWFwSGFzaFRhYmxlU3RhdHMtPm51bUxvb2t1cFByb2Jpbmc7CisjZW5k
aWYKKworICAgICAgICBoYXNoKys7CisgICAgfQorfQorCitpbmxpbmUgc3RkOjpwYWlyPFByb3Bl
cnR5VGFibGU6OmZpbmRfaXRlcmF0b3IsIGJvb2w+IFdBUk5fVU5VU0VEX1JFVFVSTiBQcm9wZXJ0
eVRhYmxlOjphZGQoVk0mIHZtLCBjb25zdCBWYWx1ZVR5cGUmIGVudHJ5KQoreworICAgIEFTU0VS
VCghbV9kZWxldGVkT2Zmc2V0cyB8fCAhbV9kZWxldGVkT2Zmc2V0cy0+Y29udGFpbnMoZW50cnku
b2Zmc2V0KSk7CisKKyAgICAvLyBMb29rIGZvciBhIHZhbHVlIHdpdGggYSBtYXRjaGluZyBrZXkg
YWxyZWFkeSBpbiB0aGUgYXJyYXkuCisgICAgZmluZF9pdGVyYXRvciBpdGVyID0gZmluZChlbnRy
eS5rZXkpOworICAgIGlmIChpdGVyLmZpcnN0KQorICAgICAgICByZXR1cm4gc3RkOjptYWtlX3Bh
aXIoaXRlciwgZmFsc2UpOworCisjaWYgRFVNUF9QUk9QRVJUWU1BUF9TVEFUUworICAgICsrcHJv
cGVydHlNYXBIYXNoVGFibGVTdGF0cy0+bnVtQWRkczsKKyNlbmRpZgorCisgICAgLy8gUmVmIHRo
ZSBrZXkKKyAgICBlbnRyeS5rZXktPnJlZigpOworCisgICAgLy8gZW5zdXJlIGNhcGFjaXR5IGlz
IGF2YWlsYWJsZS4KKyAgICBpZiAoIWNhbkluc2VydCgpKSB7CisgICAgICAgIHJlaGFzaCh2bSwg
bV9rZXlDb3VudCArIDEpOworICAgICAgICBpdGVyID0gZmluZChlbnRyeS5rZXkpOworICAgICAg
ICBBU1NFUlQoIWl0ZXIuZmlyc3QpOworICAgIH0KKworICAgIC8vIEFsbG9jYXRlIGEgc2xvdCBp
biB0aGUgaGFzaHRhYmxlLCBhbmQgc2V0IHRoZSBpbmRleCB0byByZWZlcmVuY2UgdGhpcy4KKyAg
ICB1bnNpZ25lZCBlbnRyeUluZGV4ID0gdXNlZENvdW50KCkgKyAxOworICAgIG1faW5kZXhbaXRl
ci5zZWNvbmRdID0gZW50cnlJbmRleDsKKyAgICBpdGVyLmZpcnN0ID0gJnRhYmxlKClbZW50cnlJ
bmRleCAtIDFdOworICAgICppdGVyLmZpcnN0ID0gZW50cnk7CisKKyAgICArK21fa2V5Q291bnQ7
CisgICAgCisgICAgcmV0dXJuIHN0ZDo6bWFrZV9wYWlyKGl0ZXIsIHRydWUpOworfQorCitpbmxp
bmUgdm9pZCBQcm9wZXJ0eVRhYmxlOjpyZW1vdmUoVk0mIHZtLCBjb25zdCBmaW5kX2l0ZXJhdG9y
JiBpdGVyKQoreworICAgIC8vIFJlbW92aW5nIGEga2V5IHRoYXQgZG9lc24ndCBleGlzdCBkb2Vz
IG5vdGhpbmchCisgICAgaWYgKCFpdGVyLmZpcnN0KQorICAgICAgICByZXR1cm47CisKKyNpZiBE
VU1QX1BST1BFUlRZTUFQX1NUQVRTCisgICAgKytwcm9wZXJ0eU1hcEhhc2hUYWJsZVN0YXRzLT5u
dW1SZW1vdmVzOworI2VuZGlmCisKKyAgICAvLyBSZXBsYWNlIHRoaXMgb25lIGVsZW1lbnQgd2l0
aCB0aGUgZGVsZXRlZCBzZW50aW5lbC4gQWxzbyBjbGVhciBvdXQKKyAgICAvLyB0aGUgZW50cnkg
c28gd2UgY2FuIGl0ZXJhdGUgYWxsIHRoZSBlbnRyaWVzIGFzIG5lZWRlZC4KKyAgICBtX2luZGV4
W2l0ZXIuc2Vjb25kXSA9IGRlbGV0ZWRFbnRyeUluZGV4KCk7CisgICAgaXRlci5maXJzdC0+a2V5
LT5kZXJlZigpOworICAgIGl0ZXIuZmlyc3QtPmtleSA9IFBST1BFUlRZX01BUF9ERUxFVEVEX0VO
VFJZX0tFWTsKKworICAgIEFTU0VSVChtX2tleUNvdW50ID49IDEpOworICAgIC0tbV9rZXlDb3Vu
dDsKKyAgICArK21fZGVsZXRlZENvdW50OworCisgICAgaWYgKG1fZGVsZXRlZENvdW50ICogNCA+
PSBtX2luZGV4U2l6ZSkKKyAgICAgICAgcmVoYXNoKHZtLCBtX2tleUNvdW50KTsKK30KKworaW5s
aW5lIHZvaWQgUHJvcGVydHlUYWJsZTo6cmVtb3ZlKFZNJiB2bSwgY29uc3QgS2V5VHlwZSYga2V5
KQoreworICAgIHJlbW92ZSh2bSwgZmluZChrZXkpKTsKK30KKworLy8gcmV0dXJucyB0aGUgbnVt
YmVyIG9mIHZhbHVlcyBpbiB0aGUgaGFzaHRhYmxlLgoraW5saW5lIHVuc2lnbmVkIFByb3BlcnR5
VGFibGU6OnNpemUoKSBjb25zdAoreworICAgIHJldHVybiBtX2tleUNvdW50OworfQorCitpbmxp
bmUgYm9vbCBQcm9wZXJ0eVRhYmxlOjppc0VtcHR5KCkgY29uc3QKK3sKKyAgICByZXR1cm4gIW1f
a2V5Q291bnQ7Cit9CisKK2lubGluZSB1bnNpZ25lZCBQcm9wZXJ0eVRhYmxlOjpwcm9wZXJ0eVN0
b3JhZ2VTaXplKCkgY29uc3QKK3sKKyAgICByZXR1cm4gc2l6ZSgpICsgKG1fZGVsZXRlZE9mZnNl
dHMgPyBtX2RlbGV0ZWRPZmZzZXRzLT5zaXplKCkgOiAwKTsKK30KKworaW5saW5lIHZvaWQgUHJv
cGVydHlUYWJsZTo6Y2xlYXJEZWxldGVkT2Zmc2V0cygpCit7CisgICAgbV9kZWxldGVkT2Zmc2V0
cyA9IG51bGxwdHI7Cit9CisKK2lubGluZSBib29sIFByb3BlcnR5VGFibGU6Omhhc0RlbGV0ZWRP
ZmZzZXQoKQoreworICAgIHJldHVybiBtX2RlbGV0ZWRPZmZzZXRzICYmICFtX2RlbGV0ZWRPZmZz
ZXRzLT5pc0VtcHR5KCk7Cit9CisKK2lubGluZSBQcm9wZXJ0eU9mZnNldCBQcm9wZXJ0eVRhYmxl
OjpnZXREZWxldGVkT2Zmc2V0KCkKK3sKKyAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQgPSBtX2Rl
bGV0ZWRPZmZzZXRzLT5sYXN0KCk7CisgICAgbV9kZWxldGVkT2Zmc2V0cy0+cmVtb3ZlTGFzdCgp
OworICAgIHJldHVybiBvZmZzZXQ7Cit9CisKK2lubGluZSB2b2lkIFByb3BlcnR5VGFibGU6OmFk
ZERlbGV0ZWRPZmZzZXQoUHJvcGVydHlPZmZzZXQgb2Zmc2V0KQoreworICAgIGlmICghbV9kZWxl
dGVkT2Zmc2V0cykKKyAgICAgICAgbV9kZWxldGVkT2Zmc2V0cyA9IG1ha2VVbmlxdWU8VmVjdG9y
PFByb3BlcnR5T2Zmc2V0Pj4oKTsKKyAgICBBU1NFUlQoIW1fZGVsZXRlZE9mZnNldHMtPmNvbnRh
aW5zKG9mZnNldCkpOworICAgIG1fZGVsZXRlZE9mZnNldHMtPmFwcGVuZChvZmZzZXQpOworfQor
CitpbmxpbmUgUHJvcGVydHlPZmZzZXQgUHJvcGVydHlUYWJsZTo6bmV4dE9mZnNldChQcm9wZXJ0
eU9mZnNldCBpbmxpbmVDYXBhY2l0eSkKK3sKKyAgICBpZiAoaGFzRGVsZXRlZE9mZnNldCgpKQor
ICAgICAgICByZXR1cm4gZ2V0RGVsZXRlZE9mZnNldCgpOworCisgICAgcmV0dXJuIG9mZnNldEZv
clByb3BlcnR5TnVtYmVyKHNpemUoKSwgaW5saW5lQ2FwYWNpdHkpOworfQorCitpbmxpbmUgUHJv
cGVydHlUYWJsZSogUHJvcGVydHlUYWJsZTo6Y29weShWTSYgdm0sIHVuc2lnbmVkIG5ld0NhcGFj
aXR5KQoreworICAgIEFTU0VSVChuZXdDYXBhY2l0eSA+PSBtX2tleUNvdW50KTsKKworICAgIC8v
IEZhc3QgY2FzZTsgaWYgdGhlIG5ldyB0YWJsZSB3aWxsIGJlIHRoZSBzYW1lIG1faW5kZXhTaXpl
IGFzIHRoaXMgb25lLCB3ZSBjYW4gbWVtY3B5IGl0LAorICAgIC8vIHNhdmUgcmVoYXNoaW5nIGFs
bCBrZXlzLgorICAgIGlmIChzaXplRm9yQ2FwYWNpdHkobmV3Q2FwYWNpdHkpID09IG1faW5kZXhT
aXplKQorICAgICAgICByZXR1cm4gUHJvcGVydHlUYWJsZTo6Y2xvbmUodm0sICp0aGlzKTsKKyAg
ICByZXR1cm4gUHJvcGVydHlUYWJsZTo6Y2xvbmUodm0sIG5ld0NhcGFjaXR5LCAqdGhpcyk7Cit9
CisKKyNpZm5kZWYgTkRFQlVHCitpbmxpbmUgc2l6ZV90IFByb3BlcnR5VGFibGU6OnNpemVJbk1l
bW9yeSgpCit7CisgICAgc2l6ZV90IHJlc3VsdCA9IHNpemVvZihQcm9wZXJ0eVRhYmxlKSArIGRh
dGFTaXplKCk7CisgICAgaWYgKG1fZGVsZXRlZE9mZnNldHMpCisgICAgICAgIHJlc3VsdCArPSAo
bV9kZWxldGVkT2Zmc2V0cy0+Y2FwYWNpdHkoKSAqIHNpemVvZihQcm9wZXJ0eU9mZnNldCkpOwor
ICAgIHJldHVybiByZXN1bHQ7Cit9CisjZW5kaWYKKworaW5saW5lIHZvaWQgUHJvcGVydHlUYWJs
ZTo6cmVpbnNlcnQoY29uc3QgVmFsdWVUeXBlJiBlbnRyeSkKK3sKKyNpZiBEVU1QX1BST1BFUlRZ
TUFQX1NUQVRTCisgICAgKytwcm9wZXJ0eU1hcEhhc2hUYWJsZVN0YXRzLT5udW1SZWluc2VydHM7
CisjZW5kaWYKKworICAgIC8vIFVzZWQgdG8gaW5zZXJ0IGEgdmFsdWUga25vd24gbm90IHRvIGJl
IGluIHRoZSB0YWJsZSwgYW5kIHdoZXJlCisgICAgLy8gd2Uga25vdyBjYXBhY2l0eSB0byBiZSBh
dmFpbGFibGUuCisgICAgQVNTRVJUKGNhbkluc2VydCgpKTsKKyAgICBmaW5kX2l0ZXJhdG9yIGl0
ZXIgPSBmaW5kKGVudHJ5LmtleSk7CisgICAgQVNTRVJUKCFpdGVyLmZpcnN0KTsKKworICAgIHVu
c2lnbmVkIGVudHJ5SW5kZXggPSB1c2VkQ291bnQoKSArIDE7CisgICAgbV9pbmRleFtpdGVyLnNl
Y29uZF0gPSBlbnRyeUluZGV4OworICAgIHRhYmxlKClbZW50cnlJbmRleCAtIDFdID0gZW50cnk7
CisKKyAgICArK21fa2V5Q291bnQ7Cit9CisKK2lubGluZSB2b2lkIFByb3BlcnR5VGFibGU6OnJl
aGFzaChWTSYgdm0sIHVuc2lnbmVkIG5ld0NhcGFjaXR5KQoreworI2lmIERVTVBfUFJPUEVSVFlN
QVBfU1RBVFMKKyAgICArK3Byb3BlcnR5TWFwSGFzaFRhYmxlU3RhdHMtPm51bVJlaGFzaGVzOwor
I2VuZGlmCisKKyAgICBzaXplX3Qgb2xkRGF0YVNpemUgPSBkYXRhU2l6ZSgpOworICAgIHVuc2ln
bmVkKiBvbGRFbnRyeUluZGljZXMgPSBtX2luZGV4OworICAgIGl0ZXJhdG9yIGl0ZXIgPSB0aGlz
LT5iZWdpbigpOworICAgIGl0ZXJhdG9yIGVuZCA9IHRoaXMtPmVuZCgpOworCisgICAgbV9pbmRl
eFNpemUgPSBzaXplRm9yQ2FwYWNpdHkobmV3Q2FwYWNpdHkpOworICAgIG1faW5kZXhNYXNrID0g
bV9pbmRleFNpemUgLSAxOworICAgIG1fa2V5Q291bnQgPSAwOworICAgIG1fZGVsZXRlZENvdW50
ID0gMDsKKworICAgIG1faW5kZXggPSBzdGF0aWNfY2FzdDx1bnNpZ25lZCo+KFByb3BlcnR5VGFi
bGVNYWxsb2M6Onplcm9lZE1hbGxvYyhkYXRhU2l6ZSgpKSk7CisKKyAgICBmb3IgKDsgaXRlciAh
PSBlbmQ7ICsraXRlcikgeworICAgICAgICBBU1NFUlQoY2FuSW5zZXJ0KCkpOworICAgICAgICBy
ZWluc2VydCgqaXRlcik7CisgICAgfQorCisgICAgUHJvcGVydHlUYWJsZU1hbGxvYzo6ZnJlZShv
bGRFbnRyeUluZGljZXMpOworCisgICAgaWYgKG9sZERhdGFTaXplIDwgZGF0YVNpemUoKSkKKyAg
ICAgICAgdm0uaGVhcC5yZXBvcnRFeHRyYU1lbW9yeUFsbG9jYXRlZChkYXRhU2l6ZSgpIC0gb2xk
RGF0YVNpemUpOworfQorCitpbmxpbmUgdW5zaWduZWQgUHJvcGVydHlUYWJsZTo6dGFibGVDYXBh
Y2l0eSgpIGNvbnN0IHsgcmV0dXJuIG1faW5kZXhTaXplID4+IDE7IH0KKworaW5saW5lIHVuc2ln
bmVkIFByb3BlcnR5VGFibGU6OmRlbGV0ZWRFbnRyeUluZGV4KCkgY29uc3QgeyByZXR1cm4gdGFi
bGVDYXBhY2l0eSgpICsgMTsgfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPgoraW5saW5lIFQqIFBy
b3BlcnR5VGFibGU6OnNraXBEZWxldGVkRW50cmllcyhUKiB2YWx1ZVB0ciwgVCogZW5kVmFsdWVQ
dHIpCit7CisgICAgd2hpbGUgKHZhbHVlUHRyIDwgZW5kVmFsdWVQdHIgJiYgdmFsdWVQdHItPmtl
eSA9PSBQUk9QRVJUWV9NQVBfREVMRVRFRF9FTlRSWV9LRVkpCisgICAgICAgICsrdmFsdWVQdHI7
CisgICAgcmV0dXJuIHZhbHVlUHRyOworfQorCitpbmxpbmUgUHJvcGVydHlUYWJsZTo6VmFsdWVU
eXBlKiBQcm9wZXJ0eVRhYmxlOjp0YWJsZSgpCit7CisgICAgLy8gVGhlIHRhYmxlIG9mIHZhbHVl
cyBsaWVzIGFmdGVyIHRoZSBoYXNoIGluZGV4LgorICAgIHJldHVybiByZWludGVycHJldF9jYXN0
X3B0cjxWYWx1ZVR5cGUqPihtX2luZGV4ICsgbV9pbmRleFNpemUpOworfQorCitpbmxpbmUgY29u
c3QgUHJvcGVydHlUYWJsZTo6VmFsdWVUeXBlKiBQcm9wZXJ0eVRhYmxlOjp0YWJsZSgpIGNvbnN0
Cit7CisgICAgLy8gVGhlIHRhYmxlIG9mIHZhbHVlcyBsaWVzIGFmdGVyIHRoZSBoYXNoIGluZGV4
LgorICAgIHJldHVybiByZWludGVycHJldF9jYXN0X3B0cjxjb25zdCBWYWx1ZVR5cGUqPihtX2lu
ZGV4ICsgbV9pbmRleFNpemUpOworfQorCitpbmxpbmUgdW5zaWduZWQgUHJvcGVydHlUYWJsZTo6
dXNlZENvdW50KCkgY29uc3QKK3sKKyAgICAvLyBUb3RhbCBudW1iZXIgb2YgIHVzZWQgZW50cmll
cyBpbiB0aGUgdmFsdWVzIGFycmF5IC0gYnkgZWl0aGVyIHZhbGlkIGVudHJpZXMsIG9yIGRlbGV0
ZWQgb25lcy4KKyAgICByZXR1cm4gbV9rZXlDb3VudCArIG1fZGVsZXRlZENvdW50OworfQorCitp
bmxpbmUgc2l6ZV90IFByb3BlcnR5VGFibGU6OmRhdGFTaXplKCkKK3sKKyAgICAvLyBUaGUgc2l6
ZSBpbiBieXRlcyBvZiBkYXRhIG5lZWRlZCBmb3IgYnkgdGhlIHRhYmxlLgorICAgIC8vIEVuc3Vy
ZSB0aGF0IHRoaXMgZnVuY3Rpb24gY2FuIGJlIGNhbGxlZCBjb25jdXJyZW50bHkuCisgICAgdW5z
aWduZWQgaW5kZXhTaXplID0gbV9pbmRleFNpemU7CisgICAgcmV0dXJuIGluZGV4U2l6ZSAqIHNp
emVvZih1bnNpZ25lZCkgKyAoKGluZGV4U2l6ZSA+PiAxKSArIDEpICogc2l6ZW9mKFZhbHVlVHlw
ZSk7Cit9CisKK2lubGluZSB1bnNpZ25lZCBQcm9wZXJ0eVRhYmxlOjpzaXplRm9yQ2FwYWNpdHko
dW5zaWduZWQgY2FwYWNpdHkpCit7CisgICAgaWYgKGNhcGFjaXR5IDwgTWluaW11bVRhYmxlU2l6
ZSAvIDIpCisgICAgICAgIHJldHVybiBNaW5pbXVtVGFibGVTaXplOworICAgIHJldHVybiBuZXh0
UG93ZXJPZjIoY2FwYWNpdHkgKyAxKSAqIDI7Cit9CisKK2lubGluZSBib29sIFByb3BlcnR5VGFi
bGU6OmNhbkluc2VydCgpCit7CisgICAgcmV0dXJuIHVzZWRDb3VudCgpIDwgdGFibGVDYXBhY2l0
eSgpOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKClByb3BlcnR5IGNoYW5nZXMgb246IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5VGFibGUuaApfX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkFkZGVk
OiBzdm46ZW9sLXN0eWxlCiMjIC0wLDAgKzEgIyMKK25hdGl2ZQpcIE5vIG5ld2xpbmUgYXQgZW5k
IG9mIHByb3BlcnR5CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0
eVRhYmxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJv
cGVydHlUYWJsZS5oCShyZXZpc2lvbiAyODYwMjQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Qcm9wZXJ0eVRhYmxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEyOSw3ICsxMjksNyBA
QCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNz
PgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKLSAg
ICAgICAgcmV0dXJuICZ2bS5wcm9wZXJ0eVRhYmxlU3BhY2U7CisgICAgICAgIHJldHVybiAmdm0u
cHJvcGVydHlUYWJsZVNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIGNvbnN0ZXhwciBib29s
IG5lZWRzRGVzdHJ1Y3Rpb24gPSB0cnVlOwpAQCAtMTczLDggKzE3Myw4IEBAIHB1YmxpYzoKICAg
ICAvLyBBZGQgYSB2YWx1ZSB0byB0aGUgdGFibGUKICAgICBzdGQ6OnBhaXI8ZmluZF9pdGVyYXRv
ciwgYm9vbD4gV0FSTl9VTlVTRURfUkVUVVJOIGFkZChWTSYsIGNvbnN0IFZhbHVlVHlwZSYgZW50
cnkpOwogICAgIC8vIFJlbW92ZSBhIHZhbHVlIGZyb20gdGhlIHRhYmxlLgotICAgIHZvaWQgcmVt
b3ZlKFZNJiwgY29uc3QgZmluZF9pdGVyYXRvciYgaXRlcik7Ci0gICAgdm9pZCByZW1vdmUoVk0m
LCBjb25zdCBLZXlUeXBlJiBrZXkpOworICAgIHZvaWQgcmVtb3ZlKFZNJiwgY29uc3QgZmluZF9p
dGVyYXRvciYpOworICAgIHZvaWQgcmVtb3ZlKFZNJiwgY29uc3QgS2V5VHlwZSYpOwogCiAgICAg
Ly8gUmV0dXJucyB0aGUgbnVtYmVyIG9mIHZhbHVlcyBpbiB0aGUgaGFzaHRhYmxlLgogICAgIHVu
c2lnbmVkIHNpemUoKSBjb25zdDsKQEAgLTIxOSw3ICsyMTksNyBAQCBwcml2YXRlOgogICAgIC8v
IFVzZWQgdG8gaW5zZXJ0IGEgdmFsdWUga25vd24gbm90IHRvIGJlIGluIHRoZSB0YWJsZSwgYW5k
IHdoZXJlIHdlIGtub3cgY2FwYWNpdHkgdG8gYmUgYXZhaWxhYmxlLgogICAgIHZvaWQgcmVpbnNl
cnQoY29uc3QgVmFsdWVUeXBlJiBlbnRyeSk7CiAKLSAgICAvLyBSZWhhc2ggdGhlIHRhYmxlLiAg
VXNlZCB0byBncm93LCBvciB0byByZWNvdmVyIGRlbGV0ZWQgc2xvdHMuCisgICAgLy8gUmVoYXNo
IHRoZSB0YWJsZS4gVXNlZCB0byBncm93LCBvciB0byByZWNvdmVyIGRlbGV0ZWQgc2xvdHMuCiAg
ICAgdm9pZCByZWhhc2goVk0mLCB1bnNpZ25lZCBuZXdDYXBhY2l0eSk7CiAKICAgICAvLyBUaGUg
Y2FwYWNpdHkgb2YgdGhlIHRhYmxlIG9mIHZhbHVlcyBpcyBoYWxmIG9mIHRoZSBzaXplIG9mIHRo
ZSBpbmRleC4KQEAgLTIzMCw3ICsyMzAsNyBAQCBwcml2YXRlOgogICAgIC8vIHNvIHRoaXMgaXMg
dGFibGVDYXBhY2l0eSgpICsgMS4KICAgICAvLyBGb3IgZXhhbXBsZSwgaWYgbV90YWJsZVNpemUg
aXMgMTYsIHRoZW4gdGFibGVDYXBhY2l0eSgpIGlzIDggLSBidXQgdGhlCiAgICAgLy8gdmFsdWVz
IGFycmF5IGlzIGFjdHVhbGx5IDkgbG9uZyAodGhlIDl0aCB1c2VkIGZvciB0aGUgZGVsZXRlZCB2
YWx1ZS8KLSAgICAvLyBpdGVyYXRpb24gZ3VhcmQpLiAgVGhlIDggdmFsaWQgZW50cmllcyBhcmUg
bnVtYmVyZWQgMS4uOCwgc28gdGhlCisgICAgLy8gaXRlcmF0aW9uIGd1YXJkKS4gVGhlIDggdmFs
aWQgZW50cmllcyBhcmUgbnVtYmVyZWQgMS4uOCwgc28gdGhlCiAgICAgLy8gZGVsZXRlZCBpbmRl
eCBpcyA5ICgwIGJlaW5nIHJlc2VydmVkIGZvciBlbXB0eSkuCiAgICAgdW5zaWduZWQgZGVsZXRl
ZEVudHJ5SW5kZXgoKSBjb25zdDsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvUmVmbGVjdE9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1JlZmxlY3RPYmplY3QuaAkocmV2aXNpb24gMjg2MDI0KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvUmVmbGVjdE9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw3
ICszOCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZN
JiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxF
KFJlZmxlY3RPYmplY3QsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3Bh
Y2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAg
IHN0YXRpYyBSZWZsZWN0T2JqZWN0KiBjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1JlZ0V4cC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1JlZ0V4cC5oCShyZXZpc2lvbiAyODYwMjQpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9SZWdFeHAuaAkod29ya2luZyBjb3B5KQpAQCAtNDksNyArNDksNyBAQCBw
dWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNzIG1v
ZGU+CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewot
ICAgICAgICByZXR1cm4gJnZtLnJlZ0V4cFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnJlZ0V4
cFNwYWNlKCk7CiAgICAgfQogCiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFJlZ0V4cCog
Y3JlYXRlKFZNJiwgY29uc3QgU3RyaW5nJiBwYXR0ZXJuLCBPcHRpb25TZXQ8WWFycjo6RmxhZ3M+
KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE9iamVjdC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE9iamVjdC5o
CShyZXZpc2lvbiAyODYwMjQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdF
eHBPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtMzYsNyArMzYsNyBAQCBwdWJsaWM6CiAgICAg
c3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewogICAgICAgICBz
dGF0aWNfYXNzZXJ0KCFDZWxsVHlwZTo6bmVlZHNEZXN0cnVjdGlvbiwgIiIpOwotICAgICAgICBy
ZXR1cm4gJnZtLnJlZ0V4cE9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnJlZ0V4cE9i
amVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIGNvbnN0ZXhwciB1aW50cHRyX3QgbGFz
dEluZGV4SXNOb3RXcml0YWJsZUZsYWcgPSAwYjAxOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvUmVnRXhwUHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwUHJvdG90eXBlLmgJKHJldmlzaW9uIDI4NjAyNCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cFByb3RvdHlwZS5oCSh3b3JraW5n
IGNvcHkpCkBAIC0zNCw3ICszNCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2Uq
IHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NV
QlNQQUNFX1NIQVJBQkxFKFJlZ0V4cFByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAm
dm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNl
KCk7CiAgICAgfQogCiAgICAgc3RhdGljIFJlZ0V4cFByb3RvdHlwZSogY3JlYXRlKFZNJiB2bSwg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBTdHJpbmdJdGVyYXRvclByb3Rv
dHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4
cFN0cmluZ0l0ZXJhdG9yUHJvdG90eXBlLmgJKHJldmlzaW9uIDI4NjAyNCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cFN0cmluZ0l0ZXJhdG9yUHJvdG90eXBlLmgJKHdv
cmtpbmcgY29weSkKQEAgLTM5LDcgKzM5LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJc29TdWJz
cGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9J
U09fU1VCU1BBQ0VfU0hBUkFCTEUoUmVnRXhwU3RyaW5nSXRlcmF0b3JQcm90b3R5cGUsIEJhc2Up
OwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAm
dm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBSZWdFeHBTdHJpbmdJ
dGVyYXRvclByb3RvdHlwZSogY3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9TY29wZWRBcmd1bWVudHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1Njb3BlZEFyZ3VtZW50cy5jcHAJKHJldmlzaW9uIDI4NjAyNCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Njb3BlZEFyZ3VtZW50cy5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTU1LDcgKzU1LDcgQEAgU2NvcGVkQXJndW1lbnRzKiBTY29wZWRBcmd1bWVu
dHM6OmNyZWF0ZQogICAgIFdyaXRlQmFycmllcjxVbmtub3duPiogc3RvcmFnZSA9IG51bGxwdHI7
CiAgICAgaWYgKHRvdGFsTGVuZ3RoID4gdGFibGUtPmxlbmd0aCgpKSB7CiAgICAgICAgIENoZWNr
ZWQ8dW5zaWduZWQ+IG92ZXJmbG93TGVuZ3RoID0gdG90YWxMZW5ndGggLSB0YWJsZS0+bGVuZ3Ro
KCk7Ci0gICAgICAgIHN0b3JhZ2UgPSBzdGF0aWNfY2FzdDxXcml0ZUJhcnJpZXI8VW5rbm93bj4q
Pih2bS5qc1ZhbHVlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZS5hbGxvY2F0ZU5vblZpcnR1YWwodm0s
IG92ZXJmbG93TGVuZ3RoICogc2l6ZW9mKFdyaXRlQmFycmllcjxVbmtub3duPiksIG51bGxwdHIs
IEFsbG9jYXRpb25GYWlsdXJlTW9kZTo6QXNzZXJ0KSk7CisgICAgICAgIHN0b3JhZ2UgPSBzdGF0
aWNfY2FzdDxXcml0ZUJhcnJpZXI8VW5rbm93bj4qPih2bS5qc1ZhbHVlR2lnYWNhZ2VBdXhpbGlh
cnlTcGFjZSgpLmFsbG9jYXRlTm9uVmlydHVhbCh2bSwgb3ZlcmZsb3dMZW5ndGggKiBzaXplb2Yo
V3JpdGVCYXJyaWVyPFVua25vd24+KSwgbnVsbHB0ciwgQWxsb2NhdGlvbkZhaWx1cmVNb2RlOjpB
c3NlcnQpKTsKICAgICB9CiAKICAgICBTY29wZWRBcmd1bWVudHMqIHJlc3VsdCA9IG5ldyAoCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TY29wZWRBcmd1bWVudHMuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TY29wZWRBcmd1bWVudHMu
aAkocmV2aXNpb24gMjg2MDI0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2Nv
cGVkQXJndW1lbnRzLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ3LDcgKzQ3LDcgQEAgcHVibGljOgog
ICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAg
ICAgc3RhdGljX2Fzc2VydCghQ2VsbFR5cGU6Om5lZWRzRGVzdHJ1Y3Rpb24sICIiKTsKLSAgICAg
ICAgcmV0dXJuICZ2bS5zY29wZWRBcmd1bWVudHNTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5z
Y29wZWRBcmd1bWVudHNTcGFjZSgpOwogICAgIH0KIAogICAgIC8vIENyZWF0ZXMgYW4gYXJndW1l
bnRzIG9iamVjdCBidXQgbGVhdmVzIGl0IHVuaW5pdGlhbGl6ZWQuIFRoaXMgaXMgZGFuZ2Vyb3Vz
IGlmIHdlIEdDIHJpZ2h0CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TZXRJ
dGVyYXRvclByb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1NldEl0ZXJhdG9yUHJvdG90eXBlLmgJKHJldmlzaW9uIDI4NjAyNCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NldEl0ZXJhdG9yUHJvdG90eXBlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTM3LDcgKzM3LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSog
c3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VC
U1BBQ0VfU0hBUkFCTEUoU2V0SXRlcmF0b3JQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1
cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RT
cGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBTZXRJdGVyYXRvclByb3RvdHlwZSogY3JlYXRl
KFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TZXRQcm90b3R5cGUuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TZXRQcm90b3R5cGUu
aAkocmV2aXNpb24gMjg2MDI0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2V0
UHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM3LDcgKzM3LDcgQEAgcHVibGljOgogICAg
IHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAgICAg
U1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoU2V0UHJvdG90eXBlLCBCYXNlKTsK
LSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZt
LnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgY29uc3RleHByIHVuc2ln
bmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBIYXNTdGF0aWNQcm9w
ZXJ0eVRhYmxlOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2hhZG93UmVh
bG1Qcm90b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9TaGFkb3dSZWFsbVByb3RvdHlwZS5oCShyZXZpc2lvbiAyODYwMjQpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TaGFkb3dSZWFsbVByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC0zOSw3ICszOSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNw
YWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNF
X1NIQVJBQkxFKFNoYWRvd1JlYWxtUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2
bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2Uo
KTsKICAgICB9CiAKICAgICBzdGF0aWMgU2hhZG93UmVhbG1Qcm90b3R5cGUqIGNyZWF0ZShWTSYg
dm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvU3BhcnNlQXJyYXlWYWx1ZU1hcC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1NwYXJzZUFycmF5VmFsdWVNYXAuaAkocmV2aXNpb24gMjg2MDI0KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3BhcnNlQXJyYXlWYWx1ZU1hcC5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xMTAsNyArMTEwLDcgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5
cGVuYW1lIENlbGxUeXBlLCBTdWJzcGFjZUFjY2Vzcz4KICAgICBzdGF0aWMgSXNvU3Vic3BhY2Uq
IHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7Ci0gICAgICAgIHJldHVybiAmdm0uc3BhcnNlQXJy
YXlWYWx1ZU1hcFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnNwYXJzZUFycmF5VmFsdWVNYXBT
cGFjZSgpOwogICAgIH0KICAgICAKICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1
cmUoVk0mLCBKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUgcHJvdG90eXBlKTsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ0l0ZXJhdG9yUHJvdG90eXBlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nSXRlcmF0b3JQcm90
b3R5cGUuaAkocmV2aXNpb24gMjg2MDI0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU3RyaW5nSXRlcmF0b3JQcm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzksNyArMzks
NyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0p
CiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShTdHJp
bmdJdGVyYXRvclByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmpl
Y3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQog
CiAgICAgc3RhdGljIFN0cmluZ0l0ZXJhdG9yUHJvdG90eXBlKiBjcmVhdGUoVk0mIHZtLCBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ09iamVjdC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ09iamVjdC5oCShyZXZpc2lvbiAy
ODYwMjQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdPYmplY3QuaAko
d29ya2luZyBjb3B5KQpAQCAtMzMsNyArMzMsNyBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlw
ZW5hbWUsIFN1YnNwYWNlQWNjZXNzIG1vZGU+CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJz
cGFjZUZvcihWTSYgdm0pCiAgICAgewotICAgICAgICByZXR1cm4gJnZtLnN0cmluZ09iamVjdFNw
YWNlOworICAgICAgICByZXR1cm4gJnZtLnN0cmluZ09iamVjdFNwYWNlKCk7CiAgICAgfQogCiAg
ICAgc3RhdGljIFN0cmluZ09iamVjdCogY3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAJ
KHJldmlzaW9uIDI4NjAyNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVj
dHVyZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxLDggKzMxLDggQEAKICNpbmNsdWRlICJCdWls
dGluTmFtZXMuaCIKICNpbmNsdWRlICJEdW1wQ29udGV4dC5oIgogI2luY2x1ZGUgIkpTQ0lubGlu
ZXMuaCIKLSNpbmNsdWRlICJQcm9wZXJ0eU1hcEhhc2hUYWJsZS5oIgogI2luY2x1ZGUgIlByb3Bl
cnR5TmFtZUFycmF5LmgiCisjaW5jbHVkZSAiUHJvcGVydHlUYWJsZS5oIgogI2luY2x1ZGUgPHd0
Zi9Db21tYVByaW50ZXIuaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNpbmNs
dWRlIDx3dGYvUmVmUHRyLmg+CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
dHJ1Y3R1cmUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
dHJ1Y3R1cmUuaAkocmV2aXNpb24gMjg2MDI0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvU3RydWN0dXJlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEyOCw3ICsxMjgsNyBAQCBwdWJs
aWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNzPgogICAg
IHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKLSAgICAgICAg
cmV0dXJuICZ2bS5zdHJ1Y3R1cmVTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5zdHJ1Y3R1cmVT
cGFjZSgpOwogICAgIH0KIAogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIGlzVmFs
aWRQcm90b3R5cGUoSlNWYWx1ZSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9TdHJ1Y3R1cmVDaGFpbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvU3RydWN0dXJlQ2hhaW4uY3BwCShyZXZpc2lvbiAyODYwMjQpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVDaGFpbi5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTQ4LDcgKzQ4LDcgQEAgU3RydWN0dXJlQ2hhaW4qIFN0cnVjdHVyZUNoYWluOjpjcmVhdGUo
VgogICAgICAgICArK3NpemU7CiAgICAgKytzaXplOyAvLyBTZW50aW5lbCBudWxscHRyLgogICAg
IHNpemVfdCBieXRlcyA9IENoZWNrZWQ8c2l6ZV90PihzaXplKSAqIHNpemVvZihTdHJ1Y3R1cmVJ
RCk7Ci0gICAgU3RydWN0dXJlSUQqIHZlY3RvciA9IHN0YXRpY19jYXN0PFN0cnVjdHVyZUlEKj4o
dm0uanNWYWx1ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UuYWxsb2NhdGVOb25WaXJ0dWFsKHZtLCBi
eXRlcywgbnVsbHB0ciwgQWxsb2NhdGlvbkZhaWx1cmVNb2RlOjpBc3NlcnQpKTsKKyAgICBTdHJ1
Y3R1cmVJRCogdmVjdG9yID0gc3RhdGljX2Nhc3Q8U3RydWN0dXJlSUQqPih2bS5qc1ZhbHVlR2ln
YWNhZ2VBdXhpbGlhcnlTcGFjZSgpLmFsbG9jYXRlTm9uVmlydHVhbCh2bSwgYnl0ZXMsIG51bGxw
dHIsIEFsbG9jYXRpb25GYWlsdXJlTW9kZTo6QXNzZXJ0KSk7CiAgICAgbWVtc2V0KHZlY3Rvciwg
MCwgYnl0ZXMpOwogICAgIFN0cnVjdHVyZUNoYWluKiBjaGFpbiA9IG5ldyAoTm90TnVsbCwgYWxs
b2NhdGVDZWxsPFN0cnVjdHVyZUNoYWluPih2bSkpIFN0cnVjdHVyZUNoYWluKHZtLCB2bS5zdHJ1
Y3R1cmVDaGFpblN0cnVjdHVyZS5nZXQoKSwgdmVjdG9yKTsKICAgICBjaGFpbi0+ZmluaXNoQ3Jl
YXRpb24odm0sIGhlYWQpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3Ry
dWN0dXJlQ2hhaW4uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9TdHJ1Y3R1cmVDaGFpbi5oCShyZXZpc2lvbiAyODYwMjQpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TdHJ1Y3R1cmVDaGFpbi5oCSh3b3JraW5nIGNvcHkpCkBAIC00Niw3ICs0
Niw3IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vic3BhY2VB
Y2Nlc3M+CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAg
ewotICAgICAgICByZXR1cm4gJnZtLnN0cnVjdHVyZUNoYWluU3BhY2U7CisgICAgICAgIHJldHVy
biAmdm0uc3RydWN0dXJlQ2hhaW5TcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBTdHJ1Y3R1
cmVDaGFpbiogY3JlYXRlKFZNJiwgSlNPYmplY3QqKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1N0cnVjdHVyZUlubGluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVJbmxpbmVzLmgJKHJldmlzaW9uIDI4NjAyNCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUlubGluZXMuaAkod29y
a2luZyBjb3B5KQpAQCAtMjksNyArMjksNyBAQAogI2luY2x1ZGUgIkpTQXJyYXlCdWZmZXJWaWV3
LmgiCiAjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKICNpbmNsdWRlICJKU0dsb2JhbE9i
amVjdC5oIgotI2luY2x1ZGUgIlByb3BlcnR5TWFwSGFzaFRhYmxlLmgiCisjaW5jbHVkZSAiUHJv
cGVydHlUYWJsZS5oIgogI2luY2x1ZGUgIlN0cnVjdHVyZS5oIgogI2luY2x1ZGUgIlN0cnVjdHVy
ZUNoYWluLmgiCiAjaW5jbHVkZSAiU3RydWN0dXJlUmFyZURhdGFJbmxpbmVzLmgiCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVSYXJlRGF0YS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZVJhcmVEYXRhLmgJ
KHJldmlzaW9uIDI4NjAyNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVj
dHVyZVJhcmVEYXRhLmgJKHdvcmtpbmcgY29weSkKQEAgLTY2LDcgKzY2LDcgQEAgcHVibGljOgog
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlLCBTdWJzcGFjZUFjY2Vzcz4KICAgICBzdGF0
aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7Ci0gICAgICAgIHJldHVy
biAmdm0uc3RydWN0dXJlUmFyZURhdGFTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5zdHJ1Y3R1
cmVSYXJlRGF0YVNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIFN0cnVjdHVyZVJhcmVEYXRh
KiBjcmVhdGUoVk0mLCBTdHJ1Y3R1cmUqKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1N5bWJvbFByb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1N5bWJvbFByb3RvdHlwZS5oCShyZXZpc2lvbiAyODYwMjQpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xQcm90b3R5cGUuaAkod29ya2luZyBjb3B5
KQpAQCAtNDEsNyArNDEsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJz
cGFjZUZvcihWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFD
RV9TSEFSQUJMRShTeW1ib2xQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBs
YWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwog
ICAgIH0KIAogICAgIHN0YXRpYyBTeW1ib2xQcm90b3R5cGUqIGNyZWF0ZShWTSYgdm0sIEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlKQpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sVGFibGUuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xUYWJsZS5oCShyZXZpc2lvbiAyODYw
MjQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xUYWJsZS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC00NTYsNyArNDU2LDcgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVu
YW1lIENlbGxUeXBlLCBTdWJzcGFjZUFjY2Vzcz4KICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1
YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7Ci0gICAgICAgIHJldHVybiAmdm0uc3ltYm9sVGFibGVT
cGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5zeW1ib2xUYWJsZVNwYWNlKCk7CiAgICAgfQogCiAg
ICAgc3RhdGljIFN5bWJvbFRhYmxlKiBjcmVhdGUoVk0mIHZtKQpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxDYWxlbmRhclByb3RvdHlwZS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsQ2FsZW5kYXJQcm90b3R5
cGUuaAkocmV2aXNpb24gMjg2MDI0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
VGVtcG9yYWxDYWxlbmRhclByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw3ICszOCw3
IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkK
ICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKFRlbXBv
cmFsQ2FsZW5kYXJQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2Jq
ZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0K
IAogICAgIHN0YXRpYyBUZW1wb3JhbENhbGVuZGFyUHJvdG90eXBlKiBjcmVhdGUoVk0mLCBKU0ds
b2JhbE9iamVjdCosIFN0cnVjdHVyZSopOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvVGVtcG9yYWxEdXJhdGlvblByb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsRHVyYXRpb25Qcm90b3R5cGUuaAkocmV2aXNp
b24gMjg2MDI0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxEdXJh
dGlvblByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENv
cHlyaWdodCAoQykgMjAyMSBTb255IEludGVyYWN0aXZlIEVudGVydGFpbm1lbnQgSW5jLgorICog
Q29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzgsNyArMzksNyBAQCBwdWJsaWM6CiAgICAg
c3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewogICAgICAgICBT
VEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShUZW1wb3JhbER1cmF0aW9uUHJvdG90
eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAg
ICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgVGVt
cG9yYWxEdXJhdGlvblByb3RvdHlwZSogY3JlYXRlKFZNJiwgU3RydWN0dXJlKik7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbEluc3RhbnRQcm90b3R5cGUuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbEluc3Rh
bnRQcm90b3R5cGUuaAkocmV2aXNpb24gMjg2MDI0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvVGVtcG9yYWxJbnN0YW50UHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEs
NSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDIxIElnYWxpYSBTLkwuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zOCw3ICszOSw3IEBAIHB1YmxpYzoKICAgICBzdGF0
aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJ
Q19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKFRlbXBvcmFsSW5zdGFudFByb3RvdHlwZSwg
QmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0
dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIFRlbXBvcmFs
SW5zdGFudFByb3RvdHlwZSogY3JlYXRlKFZNJiwgU3RydWN0dXJlKik7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbE5vdy5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsTm93LmgJKHJldmlzaW9uIDI4NjAyNCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsTm93LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTEsNSArMSw2IEBACiAvKgogICogIENvcHlyaWdodCAoQykgMjAyMSBJZ2FsaWEs
IFMuTC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqICBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBz
b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiAgbW9kaWZ5IGl0IHVu
ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwpAQCAtMzIsNyAr
MzMsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYg
dm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShU
ZW1wb3JhbE5vdywgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsK
KyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAgc3Rh
dGljIFRlbXBvcmFsTm93KiBjcmVhdGUoVk0mLCBTdHJ1Y3R1cmUqKTsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxPYmplY3QuaAkocmV2aXNpb24gMjg2
MDI0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxPYmplY3QuaAko
d29ya2luZyBjb3B5KQpAQCAtMSw2ICsxLDcgQEAKIC8qCiAgKiAgQ29weXJpZ2h0IChDKSAyMDIx
IElnYWxpYSwgUy5MLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogIENvcHlyaWdodCAoQykgMjAy
MSBTb255IEludGVyYWN0aXZlIEVudGVydGFpbm1lbnQgSW5jLgorICogIENvcHlyaWdodCAoQykg
MjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogIFRoaXMgbGlicmFy
eSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqICBt
b2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGlj
CkBAIC02NCw3ICs2NSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNw
YWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNF
X1NIQVJBQkxFKFRlbXBvcmFsT2JqZWN0LCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFp
bk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAg
ICB9CiAKICAgICBzdGF0aWMgVGVtcG9yYWxPYmplY3QqIGNyZWF0ZShWTSYsIFN0cnVjdHVyZSop
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxQbGFpblRpbWVQ
cm90b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9U
ZW1wb3JhbFBsYWluVGltZVByb3RvdHlwZS5oCShyZXZpc2lvbiAyODYwMjQpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbFBsYWluVGltZVByb3RvdHlwZS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBs
ZSBJbmMuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zOCw3ICszOCw3IEBAIHB1
YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7
CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKFRlbXBvcmFsUGxh
aW5UaW1lUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNw
YWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAg
ICBzdGF0aWMgVGVtcG9yYWxQbGFpblRpbWVQcm90b3R5cGUqIGNyZWF0ZShWTSYsIEpTR2xvYmFs
T2JqZWN0KiwgU3RydWN0dXJlKik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9UZW1wb3JhbFRpbWVab25lUHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxUaW1lWm9uZVByb3RvdHlwZS5oCShyZXZpc2lvbiAy
ODYwMjQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbFRpbWVab25l
UHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM4LDcgKzM4LDcgQEAgcHVibGljOgogICAg
IHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAgICAg
U1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoVGVtcG9yYWxUaW1lWm9uZVByb3Rv
dHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAg
ICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIFRl
bXBvcmFsVGltZVpvbmVQcm90b3R5cGUqIGNyZWF0ZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgU3Ry
dWN0dXJlKik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCShyZXZpc2lv
biAyODYwMjQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTMyLDIxICszMiwxNSBAQAogI2luY2x1ZGUgIkFjY2Vzc0Nhc2UuaCIKICNp
bmNsdWRlICJBZ2dyZWdhdGVFcnJvci5oIgogI2luY2x1ZGUgIkFyZ0xpc3QuaCIKLSNpbmNsdWRl
ICJCaWdJbnRPYmplY3QuaCIKLSNpbmNsdWRlICJCb29sZWFuT2JqZWN0LmgiCi0jaW5jbHVkZSAi
QnJhbmRlZFN0cnVjdHVyZS5oIgogI2luY2x1ZGUgIkJ1aWx0aW5FeGVjdXRhYmxlcy5oIgogI2lu
Y2x1ZGUgIkJ5dGVjb2RlSW50cmluc2ljUmVnaXN0cnkuaCIKICNpbmNsdWRlICJDaGVja3BvaW50
T1NSRXhpdFNpZGVTdGF0ZS5oIgotI2luY2x1ZGUgIkNsb25lZEFyZ3VtZW50cy5oIgogI2luY2x1
ZGUgIkNvZGVCbG9jay5oIgogI2luY2x1ZGUgIkNvZGVDYWNoZS5oIgogI2luY2x1ZGUgIkNvbW1v
bklkZW50aWZpZXJzLmgiCiAjaW5jbHVkZSAiQ29udHJvbEZsb3dQcm9maWxlci5oIgogI2luY2x1
ZGUgIkN1c3RvbUdldHRlclNldHRlci5oIgogI2luY2x1ZGUgIkRPTUF0dHJpYnV0ZUdldHRlclNl
dHRlci5oIgotI2luY2x1ZGUgIkRhdGVJbnN0YW5jZS5oIgotI2luY2x1ZGUgIkRlYnVnZ2VyU2Nv
cGUuaCIKICNpbmNsdWRlICJEZWZlcnJlZFdvcmtUaW1lci5oIgogI2luY2x1ZGUgIkRpc2Fzc2Vt
Ymxlci5oIgogI2luY2x1ZGUgIkRvdWJsZVByZWRpY3Rpb25GdXp6ZXJBZ2VudC5oIgpAQCAtNTUs
NyArNDksNiBAQAogI2luY2x1ZGUgIkV4Y2VwdGlvbi5oIgogI2luY2x1ZGUgIkV4ZWN1dGFibGVU
b0NvZGVCbG9ja0VkZ2UuaCIKICNpbmNsdWRlICJGVExUaHVua3MuaCIKLSNpbmNsdWRlICJGYXN0
TWFsbG9jQWxpZ25lZE1lbW9yeUFsbG9jYXRvci5oIgogI2luY2x1ZGUgIkZpbGVCYXNlZEZ1enpl
ckFnZW50LmgiCiAjaW5jbHVkZSAiRnVuY3Rpb25Db2RlQmxvY2suaCIKICNpbmNsdWRlICJGdW5j
dGlvbkV4ZWN1dGFibGUuaCIKQEAgLTY2LDc3ICs1OSwyNSBAQAogI2luY2x1ZGUgIkhlYXBQcm9m
aWxlci5oIgogI2luY2x1ZGUgIkludGVycHJldGVyLmgiCiAjaW5jbHVkZSAiSW50bENhY2hlLmgi
Ci0jaW5jbHVkZSAiSW50bENvbGxhdG9yLmgiCi0jaW5jbHVkZSAiSW50bERhdGVUaW1lRm9ybWF0
LmgiCi0jaW5jbHVkZSAiSW50bERpc3BsYXlOYW1lcy5oIgotI2luY2x1ZGUgIkludGxMaXN0Rm9y
bWF0LmgiCi0jaW5jbHVkZSAiSW50bExvY2FsZS5oIgotI2luY2x1ZGUgIkludGxOdW1iZXJGb3Jt
YXQuaCIKLSNpbmNsdWRlICJJbnRsUGx1cmFsUnVsZXMuaCIKLSNpbmNsdWRlICJJbnRsUmVsYXRp
dmVUaW1lRm9ybWF0LmgiCi0jaW5jbHVkZSAiSW50bFNlZ21lbnRJdGVyYXRvci5oIgotI2luY2x1
ZGUgIkludGxTZWdtZW50ZXIuaCIKLSNpbmNsdWRlICJJbnRsU2VnbWVudHMuaCIKLSNpbmNsdWRl
ICJJc29IZWFwQ2VsbFR5cGUuaCIKLSNpbmNsdWRlICJJc29JbmxpbmVkSGVhcENlbGxUeXBlLmgi
CiAjaW5jbHVkZSAiSklUQ29kZS5oIgogI2luY2x1ZGUgIkpJVE9wZXJhdGlvbkxpc3QuaCIKICNp
bmNsdWRlICJKSVRTaXplU3RhdGlzdGljcy5oIgogI2luY2x1ZGUgIkpJVFRodW5rcy5oIgogI2lu
Y2x1ZGUgIkpJVFdvcmtsaXN0LmgiCi0jaW5jbHVkZSAiSlNBUElHbG9iYWxPYmplY3QuaCIKICNp
bmNsdWRlICJKU0FQSVZhbHVlV3JhcHBlci5oIgotI2luY2x1ZGUgIkpTQVBJV3JhcHBlck9iamVj
dC5oIgotI2luY2x1ZGUgIkpTQXJyYXkuaCIKLSNpbmNsdWRlICJKU0FycmF5QnVmZmVyLmgiCi0j
aW5jbHVkZSAiSlNBcnJheUl0ZXJhdG9yLmgiCi0jaW5jbHVkZSAiSlNBc3luY0dlbmVyYXRvci5o
IgogI2luY2x1ZGUgIkpTQmlnSW50LmgiCi0jaW5jbHVkZSAiSlNCb3VuZEZ1bmN0aW9uLmgiCi0j
aW5jbHVkZSAiSlNDYWxsYmFja0NvbnN0cnVjdG9yLmgiCi0jaW5jbHVkZSAiSlNDYWxsYmFja0Z1
bmN0aW9uLmgiCi0jaW5jbHVkZSAiSlNDYWxsYmFja09iamVjdC5oIgotI2luY2x1ZGUgIkpTQ2Fs
bGVlLmgiCi0jaW5jbHVkZSAiSlNDdXN0b21HZXR0ZXJGdW5jdGlvbi5oIgotI2luY2x1ZGUgIkpT
Q3VzdG9tU2V0dGVyRnVuY3Rpb24uaCIKLSNpbmNsdWRlICJKU0Rlc3RydWN0aWJsZU9iamVjdEhl
YXBDZWxsVHlwZS5oIgotI2luY2x1ZGUgIkpTRmluYWxpemF0aW9uUmVnaXN0cnkuaCIKLSNpbmNs
dWRlICJKU0Z1bmN0aW9uLmgiCi0jaW5jbHVkZSAiSlNHbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQu
aCIKICNpbmNsdWRlICJKU0dsb2JhbE9iamVjdC5oIgogI2luY2x1ZGUgIkpTSW1tdXRhYmxlQnV0
dGVyZmx5LmgiCi0jaW5jbHVkZSAiSlNJbmplY3RlZFNjcmlwdEhvc3QuaCIKLSNpbmNsdWRlICJK
U0phdmFTY3JpcHRDYWxsRnJhbWUuaCIKICNpbmNsdWRlICJKU0xvY2suaCIKICNpbmNsdWRlICJK
U01hcC5oIgotI2luY2x1ZGUgIkpTTWFwSXRlcmF0b3IuaCIKLSNpbmNsdWRlICJKU01vZHVsZU5h
bWVzcGFjZU9iamVjdC5oIgotI2luY2x1ZGUgIkpTTW9kdWxlUmVjb3JkLmgiCi0jaW5jbHVkZSAi
SlNOYXRpdmVTdGRGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTUHJvbWlzZS5oIgogI2luY2x1ZGUg
IkpTUHJvcGVydHlOYW1lRW51bWVyYXRvci5oIgotI2luY2x1ZGUgIkpTUHJveHkuaCIKICNpbmNs
dWRlICJKU1NjcmlwdEZldGNoUGFyYW1ldGVycy5oIgogI2luY2x1ZGUgIkpTU2NyaXB0RmV0Y2hl
ci5oIgogI2luY2x1ZGUgIkpTU2V0LmgiCi0jaW5jbHVkZSAiSlNTZXRJdGVyYXRvci5oIgogI2lu
Y2x1ZGUgIkpTU291cmNlQ29kZS5oIgotI2luY2x1ZGUgIkpTU3RyaW5nSXRlcmF0b3IuaCIKICNp
bmNsdWRlICJKU1RlbXBsYXRlT2JqZWN0RGVzY3JpcHRvci5oIgotI2luY2x1ZGUgIkpTVG9XYXNt
SUNDYWxsZWUuaCIKLSNpbmNsdWRlICJKU1R5cGVkQXJyYXlzLmgiCi0jaW5jbHVkZSAiSlNXZWFr
TWFwLmgiCi0jaW5jbHVkZSAiSlNXZWFrT2JqZWN0UmVmLmgiCi0jaW5jbHVkZSAiSlNXZWFrU2V0
LmgiCiAjaW5jbHVkZSAiSlNXZWJBc3NlbWJseUNvZGVCbG9jay5oIgotI2luY2x1ZGUgIkpTV2Vi
QXNzZW1ibHlFeGNlcHRpb24uaCIKLSNpbmNsdWRlICJKU1dlYkFzc2VtYmx5R2xvYmFsLmgiCi0j
aW5jbHVkZSAiSlNXZWJBc3NlbWJseUluc3RhbmNlLmgiCi0jaW5jbHVkZSAiSlNXZWJBc3NlbWJs
eU1lbW9yeS5oIgotI2luY2x1ZGUgIkpTV2ViQXNzZW1ibHlNb2R1bGUuaCIKLSNpbmNsdWRlICJK
U1dlYkFzc2VtYmx5VGFibGUuaCIKLSNpbmNsdWRlICJKU1dlYkFzc2VtYmx5VGFnLmgiCi0jaW5j
bHVkZSAiSlNXaXRoU2NvcGUuaCIKICNpbmNsdWRlICJMTEludERhdGEuaCIKICNpbmNsdWRlICJM
TEludEV4Y2VwdGlvbnMuaCIKICNpbmNsdWRlICJNaW5pbXVtUmVzZXJ2ZWRab25lU2l6ZS5oIgpA
QCAtMTQ5LDI4ICs5MCwxNyBAQAogI2luY2x1ZGUgIlByb2ZpbGVyRGF0YWJhc2UuaCIKICNpbmNs
dWRlICJQcm9ncmFtQ29kZUJsb2NrLmgiCiAjaW5jbHVkZSAiUHJvZ3JhbUV4ZWN1dGFibGUuaCIK
LSNpbmNsdWRlICJQcm9wZXJ0eU1hcEhhc2hUYWJsZS5oIgotI2luY2x1ZGUgIlByb3h5UmV2b2tl
LmgiCisjaW5jbHVkZSAiUHJvcGVydHlUYWJsZS5oIgogI2luY2x1ZGUgIlJhbmRvbWl6aW5nRnV6
emVyQWdlbnQuaCIKICNpbmNsdWRlICJSZWdFeHBDYWNoZS5oIgotI2luY2x1ZGUgIlJlZ0V4cE9i
amVjdC5oIgogI2luY2x1ZGUgIlNhbXBsaW5nUHJvZmlsZXIuaCIKICNpbmNsdWRlICJTY29wZWRB
cmd1bWVudHMuaCIKICNpbmNsdWRlICJTaGFkb3dDaGlja2VuLmgiCi0jaW5jbHVkZSAiU2hhZG93
UmVhbG1PYmplY3QuaCIKICNpbmNsdWRlICJTaW1wbGVUeXBlZEFycmF5Q29udHJvbGxlci5oIgog
I2luY2x1ZGUgIlNvdXJjZVByb3ZpZGVyQ2FjaGUuaCIKLSNpbmNsdWRlICJTdHJpY3RFdmFsQWN0
aXZhdGlvbi5oIgotI2luY2x1ZGUgIlN0cmluZ09iamVjdC5oIgogI2luY2x1ZGUgIlN0cm9uZ0lu
bGluZXMuaCIKICNpbmNsdWRlICJTdHJ1Y3R1cmVDaGFpbi5oIgogI2luY2x1ZGUgIlN0cnVjdHVy
ZUlubGluZXMuaCIKLSNpbmNsdWRlICJTeW1ib2xPYmplY3QuaCIKLSNpbmNsdWRlICJUZW1wb3Jh
bENhbGVuZGFyLmgiCi0jaW5jbHVkZSAiVGVtcG9yYWxEdXJhdGlvbi5oIgotI2luY2x1ZGUgIlRl
bXBvcmFsSW5zdGFudC5oIgotI2luY2x1ZGUgIlRlbXBvcmFsUGxhaW5UaW1lLmgiCi0jaW5jbHVk
ZSAiVGVtcG9yYWxUaW1lWm9uZS5oIgogI2luY2x1ZGUgIlRlc3RSdW5uZXJVdGlscy5oIgogI2lu
Y2x1ZGUgIlRodW5rR2VuZXJhdG9ycy5oIgogI2luY2x1ZGUgIlR5cGVQcm9maWxlci5oIgpAQCAt
MTgyLDkgKzExMiw2IEBACiAjaW5jbHVkZSAiV2FzbVdvcmtsaXN0LmgiCiAjaW5jbHVkZSAiV2F0
Y2hkb2cuaCIKICNpbmNsdWRlICJXZWFrR0NNYXBJbmxpbmVzLmgiCi0jaW5jbHVkZSAiV2ViQXNz
ZW1ibHlGdW5jdGlvbi5oIgotI2luY2x1ZGUgIldlYkFzc2VtYmx5TW9kdWxlUmVjb3JkLmgiCi0j
aW5jbHVkZSAiV2ViQXNzZW1ibHlXcmFwcGVyRnVuY3Rpb24uaCIKICNpbmNsdWRlICJXaWRlbmlu
Z051bWJlclByZWRpY3Rpb25GdXp6ZXJBZ2VudC5oIgogI2luY2x1ZGUgPHd0Zi9Qcm9jZXNzSUQu
aD4KICNpbmNsdWRlIDx3dGYvUmVhZFdyaXRlTG9jay5oPgpAQCAtMjA2LDEwICsxMzMsNiBAQAog
I2luY2x1ZGUgIlJlZ0V4cC5oIgogI2VuZGlmCiAKLSNpZiBKU0NfT0JKQ19BUElfRU5BQkxFRAot
I2luY2x1ZGUgIk9iakNDYWxsYmFja0Z1bmN0aW9uLmgiCi0jZW5kaWYKLQogI2lmZGVmIEpTQ19H
TElCX0FQSV9FTkFCTEVECiAjaW5jbHVkZSAiSlNBUElXcmFwcGVyR2xvYmFsT2JqZWN0LmgiCiAj
aW5jbHVkZSAiSlNDQ2FsbGJhY2tGdW5jdGlvbi5oIgpAQCAtMjkwLDEwOSArMjEzLDYgQEAgVk06
OlZNKFZNVHlwZSB2bVR5cGUsIEhlYXBUeXBlIGhlYXBUeXBlLAogICAgICwgbV9yYW5kb20oT3B0
aW9uczo6c2VlZE9mVk1SYW5kb21Gb3JGdXp6ZXIoKSA/IE9wdGlvbnM6OnNlZWRPZlZNUmFuZG9t
Rm9yRnV6emVyKCkgOiBjcnlwdG9ncmFwaGljYWxseVJhbmRvbU51bWJlcigpKQogICAgICwgbV9p
bnRlZ3JpdHlSYW5kb20oKnRoaXMpCiAgICAgLCBoZWFwKCp0aGlzLCBoZWFwVHlwZSkKLSAgICAs
IGZhc3RNYWxsb2NBbGxvY2F0b3IobWFrZVVuaXF1ZTxGYXN0TWFsbG9jQWxpZ25lZE1lbW9yeUFs
bG9jYXRvcj4oKSkKLSAgICAsIHByaW1pdGl2ZUdpZ2FjYWdlQWxsb2NhdG9yKG1ha2VVbmlxdWU8
R2lnYWNhZ2VBbGlnbmVkTWVtb3J5QWxsb2NhdG9yPihHaWdhY2FnZTo6UHJpbWl0aXZlKSkKLSAg
ICAsIGpzVmFsdWVHaWdhY2FnZUFsbG9jYXRvcihtYWtlVW5pcXVlPEdpZ2FjYWdlQWxpZ25lZE1l
bW9yeUFsbG9jYXRvcj4oR2lnYWNhZ2U6OkpTVmFsdWUpKQotICAgICwgYXV4aWxpYXJ5SGVhcENl
bGxUeXBlKG1ha2VVbmlxdWU8SGVhcENlbGxUeXBlPihDZWxsQXR0cmlidXRlcyhEb2VzTm90TmVl
ZERlc3RydWN0aW9uLCBIZWFwQ2VsbDo6QXV4aWxpYXJ5KSkpCi0gICAgLCBpbW11dGFibGVCdXR0
ZXJmbHlIZWFwQ2VsbFR5cGUobWFrZVVuaXF1ZTxIZWFwQ2VsbFR5cGU+KENlbGxBdHRyaWJ1dGVz
KERvZXNOb3ROZWVkRGVzdHJ1Y3Rpb24sIEhlYXBDZWxsOjpKU0NlbGxXaXRoSW5kZXhpbmdIZWFk
ZXIpKSkKLSAgICAsIGNlbGxIZWFwQ2VsbFR5cGUobWFrZVVuaXF1ZTxIZWFwQ2VsbFR5cGU+KENl
bGxBdHRyaWJ1dGVzKERvZXNOb3ROZWVkRGVzdHJ1Y3Rpb24sIEhlYXBDZWxsOjpKU0NlbGwpKSkK
LSAgICAsIGRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUobWFrZVVuaXF1ZTxIZWFwQ2VsbFR5
cGU+KENlbGxBdHRyaWJ1dGVzKE5lZWRzRGVzdHJ1Y3Rpb24sIEhlYXBDZWxsOjpKU0NlbGwpKSkK
LSAgICAsIGFwaUdsb2JhbE9iamVjdEhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OmNyZWF0
ZTxKU0FQSUdsb2JhbE9iamVjdD4oKSkKLSAgICAsIGNhbGxiYWNrQ29uc3RydWN0b3JIZWFwQ2Vs
bFR5cGUoSXNvSGVhcENlbGxUeXBlOjpjcmVhdGU8SlNDYWxsYmFja0NvbnN0cnVjdG9yPigpKQot
ICAgICwgY2FsbGJhY2tHbG9iYWxPYmplY3RIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpj
cmVhdGU8SlNDYWxsYmFja09iamVjdDxKU0dsb2JhbE9iamVjdD4+KCkpCi0gICAgLCBjYWxsYmFj
a09iamVjdEhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OmNyZWF0ZTxKU0NhbGxiYWNrT2Jq
ZWN0PEpTTm9uRmluYWxPYmplY3Q+PigpKQotICAgICwgY3VzdG9tR2V0dGVyRnVuY3Rpb25IZWFw
Q2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpjcmVhdGU8SlNDdXN0b21HZXR0ZXJGdW5jdGlvbj4o
KSkKLSAgICAsIGN1c3RvbVNldHRlckZ1bmN0aW9uSGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlw
ZTo6Y3JlYXRlPEpTQ3VzdG9tU2V0dGVyRnVuY3Rpb24+KCkpCi0gICAgLCBkYXRlSW5zdGFuY2VI
ZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpjcmVhdGU8RGF0ZUluc3RhbmNlPigpKQotICAg
ICwgZXJyb3JJbnN0YW5jZUhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OmNyZWF0ZTxFcnJv
ckluc3RhbmNlPigpKQotICAgICwgZmluYWxpemF0aW9uUmVnaXN0cnlDZWxsVHlwZShJc29IZWFw
Q2VsbFR5cGU6OmNyZWF0ZTxKU0ZpbmFsaXphdGlvblJlZ2lzdHJ5PigpKQotICAgICwgZ2xvYmFs
TGV4aWNhbEVudmlyb25tZW50SGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6Y3JlYXRlPEpT
R2xvYmFsTGV4aWNhbEVudmlyb25tZW50PigpKQotICAgICwgZ2xvYmFsT2JqZWN0SGVhcENlbGxU
eXBlKElzb0hlYXBDZWxsVHlwZTo6Y3JlYXRlPEpTR2xvYmFsT2JqZWN0PigpKQotICAgICwgaW5q
ZWN0ZWRTY3JpcHRIb3N0U3BhY2VIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpjcmVhdGU8
SW5zcGVjdG9yOjpKU0luamVjdGVkU2NyaXB0SG9zdD4oKSkKLSAgICAsIGphdmFTY3JpcHRDYWxs
RnJhbWVIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpjcmVhdGU8SW5zcGVjdG9yOjpKU0ph
dmFTY3JpcHRDYWxsRnJhbWU+KCkpCi0gICAgLCBqc01vZHVsZVJlY29yZEhlYXBDZWxsVHlwZShJ
c29IZWFwQ2VsbFR5cGU6OmNyZWF0ZTxKU01vZHVsZVJlY29yZD4oKSkKLSAgICAsIG1vZHVsZU5h
bWVzcGFjZU9iamVjdEhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OmNyZWF0ZTxKU01vZHVs
ZU5hbWVzcGFjZU9iamVjdD4oKSkKLSAgICAsIG5hdGl2ZVN0ZEZ1bmN0aW9uSGVhcENlbGxUeXBl
KElzb0hlYXBDZWxsVHlwZTo6Y3JlYXRlPEpTTmF0aXZlU3RkRnVuY3Rpb24+KCkpCi0gICAgLCBz
dHJpbmdIZWFwQ2VsbFR5cGUobWFrZVVuaXF1ZTxJc29JbmxpbmVkSGVhcENlbGxUeXBlPEpTU3Ry
aW5nPj4oKSkKLSAgICAsIHdlYWtNYXBIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpjcmVh
dGU8SlNXZWFrTWFwPigpKQotICAgICwgd2Vha1NldEhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5
cGU6OmNyZWF0ZTxKU1dlYWtTZXQ+KCkpCi0gICAgLCBkZXN0cnVjdGlibGVPYmplY3RIZWFwQ2Vs
bFR5cGUobWFrZVVuaXF1ZTxKU0Rlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZT4oKSkKLSNp
ZiBKU0NfT0JKQ19BUElfRU5BQkxFRAotICAgICwgYXBpV3JhcHBlck9iamVjdEhlYXBDZWxsVHlw
ZShJc29IZWFwQ2VsbFR5cGU6OmNyZWF0ZTxKU0NhbGxiYWNrT2JqZWN0PEpTQVBJV3JhcHBlck9i
amVjdD4+KCkpCi0gICAgLCBvYmpDQ2FsbGJhY2tGdW5jdGlvbkhlYXBDZWxsVHlwZShJc29IZWFw
Q2VsbFR5cGU6OmNyZWF0ZTxPYmpDQ2FsbGJhY2tGdW5jdGlvbj4oKSkKLSNlbmRpZgotI2lmZGVm
IEpTQ19HTElCX0FQSV9FTkFCTEVECi0gICAgLCBhcGlXcmFwcGVyT2JqZWN0SGVhcENlbGxUeXBl
KElzb0hlYXBDZWxsVHlwZTo6Y3JlYXRlPEpTQ2FsbGJhY2tPYmplY3Q8SlNBUElXcmFwcGVyT2Jq
ZWN0Pj4oKSkKLSAgICAsIGNhbGxiYWNrQVBJV3JhcHBlckdsb2JhbE9iamVjdEhlYXBDZWxsVHlw
ZShJc29IZWFwQ2VsbFR5cGU6OmNyZWF0ZTxKU0NhbGxiYWNrT2JqZWN0PEpTQVBJV3JhcHBlckds
b2JhbE9iamVjdD4+KCkpCi0gICAgLCBqc2NDYWxsYmFja0Z1bmN0aW9uSGVhcENlbGxUeXBlKElz
b0hlYXBDZWxsVHlwZTo6Y3JlYXRlPEpTQ0NhbGxiYWNrRnVuY3Rpb24+KCkpCi0jZW5kaWYKLSAg
ICAsIGludGxDb2xsYXRvckhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OmNyZWF0ZTxJbnRs
Q29sbGF0b3I+KCkpCi0gICAgLCBpbnRsRGF0ZVRpbWVGb3JtYXRIZWFwQ2VsbFR5cGUoSXNvSGVh
cENlbGxUeXBlOjpjcmVhdGU8SW50bERhdGVUaW1lRm9ybWF0PigpKQotICAgICwgaW50bERpc3Bs
YXlOYW1lc0hlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OmNyZWF0ZTxJbnRsRGlzcGxheU5h
bWVzPigpKQotICAgICwgaW50bExpc3RGb3JtYXRIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBl
OjpjcmVhdGU8SW50bExpc3RGb3JtYXQ+KCkpCi0gICAgLCBpbnRsTG9jYWxlSGVhcENlbGxUeXBl
KElzb0hlYXBDZWxsVHlwZTo6Y3JlYXRlPEludGxMb2NhbGU+KCkpCi0gICAgLCBpbnRsTnVtYmVy
Rm9ybWF0SGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6Y3JlYXRlPEludGxOdW1iZXJGb3Jt
YXQ+KCkpCi0gICAgLCBpbnRsUGx1cmFsUnVsZXNIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBl
OjpjcmVhdGU8SW50bFBsdXJhbFJ1bGVzPigpKQotICAgICwgaW50bFJlbGF0aXZlVGltZUZvcm1h
dEhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OmNyZWF0ZTxJbnRsUmVsYXRpdmVUaW1lRm9y
bWF0PigpKQotICAgICwgaW50bFNlZ21lbnRJdGVyYXRvckhlYXBDZWxsVHlwZShJc29IZWFwQ2Vs
bFR5cGU6OmNyZWF0ZTxJbnRsU2VnbWVudEl0ZXJhdG9yPigpKQotICAgICwgaW50bFNlZ21lbnRl
ckhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OmNyZWF0ZTxJbnRsU2VnbWVudGVyPigpKQot
ICAgICwgaW50bFNlZ21lbnRzSGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6Y3JlYXRlPElu
dGxTZWdtZW50cz4oKSkKLSNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCi0gICAgLCB3ZWJBc3NlbWJs
eUNvZGVCbG9ja0hlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OmNyZWF0ZTxKU1dlYkFzc2Vt
Ymx5Q29kZUJsb2NrPigpKQotICAgICwgd2ViQXNzZW1ibHlFeGNlcHRpb25IZWFwQ2VsbFR5cGUo
SXNvSGVhcENlbGxUeXBlOjpjcmVhdGU8SlNXZWJBc3NlbWJseUV4Y2VwdGlvbj4oKSkKLSAgICAs
IHdlYkFzc2VtYmx5RnVuY3Rpb25IZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpjcmVhdGU8
V2ViQXNzZW1ibHlGdW5jdGlvbj4oKSkKLSAgICAsIHdlYkFzc2VtYmx5R2xvYmFsSGVhcENlbGxU
eXBlKElzb0hlYXBDZWxsVHlwZTo6Y3JlYXRlPEpTV2ViQXNzZW1ibHlHbG9iYWw+KCkpCi0gICAg
LCB3ZWJBc3NlbWJseUluc3RhbmNlSGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6Y3JlYXRl
PEpTV2ViQXNzZW1ibHlJbnN0YW5jZT4oKSkKLSAgICAsIHdlYkFzc2VtYmx5TWVtb3J5SGVhcENl
bGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6Y3JlYXRlPEpTV2ViQXNzZW1ibHlNZW1vcnk+KCkpCi0g
ICAgLCB3ZWJBc3NlbWJseU1vZHVsZUhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OmNyZWF0
ZTxKU1dlYkFzc2VtYmx5TW9kdWxlPigpKQotICAgICwgd2ViQXNzZW1ibHlNb2R1bGVSZWNvcmRI
ZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpjcmVhdGU8V2ViQXNzZW1ibHlNb2R1bGVSZWNv
cmQ+KCkpCi0gICAgLCB3ZWJBc3NlbWJseVRhYmxlSGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlw
ZTo6Y3JlYXRlPEpTV2ViQXNzZW1ibHlUYWJsZT4oKSkKLSAgICAsIHdlYkFzc2VtYmx5VGFnSGVh
cENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6Y3JlYXRlPEpTV2ViQXNzZW1ibHlUYWc+KCkpCi0j
ZW5kaWYKLSAgICAsIHByaW1pdGl2ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UoIlByaW1pdGl2ZSBH
aWdhY2FnZSBBdXhpbGlhcnkiLCBoZWFwLCBhdXhpbGlhcnlIZWFwQ2VsbFR5cGUuZ2V0KCksIHBy
aW1pdGl2ZUdpZ2FjYWdlQWxsb2NhdG9yLmdldCgpKSAvLyBIYXNoOjB4M2U3Y2Q3NjIKLSAgICAs
IGpzVmFsdWVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlKCJKU1ZhbHVlIEdpZ2FjYWdlIEF1eGlsaWFy
eSIsIGhlYXAsIGF1eGlsaWFyeUhlYXBDZWxsVHlwZS5nZXQoKSwganNWYWx1ZUdpZ2FjYWdlQWxs
b2NhdG9yLmdldCgpKSAvLyBIYXNoOjB4MjQxZTk0NgotICAgICwgaW1tdXRhYmxlQnV0dGVyZmx5
SlNWYWx1ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UoIkltbXV0YWJsZUJ1dHRlcmZseSBHaWdhY2Fn
ZSBKU0NlbGxXaXRoSW5kZXhpbmdIZWFkZXIiLCBoZWFwLCBpbW11dGFibGVCdXR0ZXJmbHlIZWFw
Q2VsbFR5cGUuZ2V0KCksIGpzVmFsdWVHaWdhY2FnZUFsbG9jYXRvci5nZXQoKSkgLy8gSGFzaDow
eDdhOTQ1MzAwCi0gICAgLCBjZWxsU3BhY2UoIkpTQ2VsbCIsIGhlYXAsIGNlbGxIZWFwQ2VsbFR5
cGUuZ2V0KCksIGZhc3RNYWxsb2NBbGxvY2F0b3IuZ2V0KCkpIC8vIEhhc2g6MHhhZGZiNWE3OQot
ICAgICwgdmFyaWFibGVTaXplZENlbGxTcGFjZSgiVmFyaWFibGUgU2l6ZWQgSlNDZWxsIiwgaGVh
cCwgY2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgZmFzdE1hbGxvY0FsbG9jYXRvci5nZXQoKSkgLy8g
SGFzaDoweGJjZDc2OWNjCi0gICAgLCBkZXN0cnVjdGlibGVPYmplY3RTcGFjZSgiSlNEZXN0cnVj
dGlibGVPYmplY3QiLCBoZWFwLCBkZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuZ2V0KCks
IGZhc3RNYWxsb2NBbGxvY2F0b3IuZ2V0KCkpIC8vIEhhc2g6MHg0ZjVlZDdhOQotICAgICwgYXJy
YXlTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVChoZWFwLCBjZWxsSGVhcENlbGxUeXBlLmdldCgpLCBK
U0FycmF5KQotICAgICwgYmlnSW50U3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoaGVhcCwgY2VsbEhl
YXBDZWxsVHlwZS5nZXQoKSwgSlNCaWdJbnQpCi0gICAgLCBjYWxsZWVTcGFjZSBJU09fU1VCU1BB
Q0VfSU5JVChoZWFwLCBjZWxsSGVhcENlbGxUeXBlLmdldCgpLCBKU0NhbGxlZSkKLSAgICAsIGNs
b25lZEFyZ3VtZW50c1NwYWNlIElTT19TVUJTUEFDRV9JTklUKGhlYXAsIGNlbGxIZWFwQ2VsbFR5
cGUuZ2V0KCksIENsb25lZEFyZ3VtZW50cykKLSAgICAsIGN1c3RvbUdldHRlclNldHRlclNwYWNl
IElTT19TVUJTUEFDRV9JTklUKGhlYXAsIGNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEN1c3RvbUdl
dHRlclNldHRlcikKLSAgICAsIGRhdGVJbnN0YW5jZVNwYWNlIElTT19TVUJTUEFDRV9JTklUKGhl
YXAsIGRhdGVJbnN0YW5jZUhlYXBDZWxsVHlwZS5nZXQoKSwgRGF0ZUluc3RhbmNlKQotICAgICwg
ZG9tQXR0cmlidXRlR2V0dGVyU2V0dGVyU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoaGVhcCwgY2Vs
bEhlYXBDZWxsVHlwZS5nZXQoKSwgRE9NQXR0cmlidXRlR2V0dGVyU2V0dGVyKQotICAgICwgZXhj
ZXB0aW9uU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoaGVhcCwgZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBD
ZWxsVHlwZS5nZXQoKSwgRXhjZXB0aW9uKQotICAgICwgZXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRn
ZVNwYWNlIElTT19TVUJTUEFDRV9JTklUKGhlYXAsIGNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEV4
ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2UpIC8vIEhhc2g6MHg3YjczMGIyMAotICAgICwgZnVuY3Rp
b25TcGFjZSBJU09fU1VCU1BBQ0VfSU5JVChoZWFwLCBjZWxsSGVhcENlbGxUeXBlLmdldCgpLCBK
U0Z1bmN0aW9uKSAvLyBIYXNoOjB4ODAwZmNhNzIKLSAgICAsIGdldHRlclNldHRlclNwYWNlIElT
T19TVUJTUEFDRV9JTklUKGhlYXAsIGNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEdldHRlclNldHRl
cikKLSAgICAsIGdsb2JhbExleGljYWxFbnZpcm9ubWVudFNwYWNlIElTT19TVUJTUEFDRV9JTklU
KGhlYXAsIGdsb2JhbExleGljYWxFbnZpcm9ubWVudEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNHbG9i
YWxMZXhpY2FsRW52aXJvbm1lbnQpCi0gICAgLCBpbnRlcm5hbEZ1bmN0aW9uU3BhY2UgSVNPX1NV
QlNQQUNFX0lOSVQoaGVhcCwgY2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgSW50ZXJuYWxGdW5jdGlv
bikgLy8gSGFzaDoweGY4NDVjNDY0Ci0gICAgLCBqc1Byb3h5U3BhY2UgSVNPX1NVQlNQQUNFX0lO
SVQoaGVhcCwgY2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNQcm94eSkKLSAgICAsIG5hdGl2ZUV4
ZWN1dGFibGVTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVChoZWFwLCBkZXN0cnVjdGlibGVDZWxsSGVh
cENlbGxUeXBlLmdldCgpLCBOYXRpdmVFeGVjdXRhYmxlKSAvLyBIYXNoOjB4Njc1NjdmOTUKLSAg
ICAsIG51bWJlck9iamVjdFNwYWNlIElTT19TVUJTUEFDRV9JTklUKGhlYXAsIGNlbGxIZWFwQ2Vs
bFR5cGUuZ2V0KCksIE51bWJlck9iamVjdCkKLSAgICAsIHBsYWluT2JqZWN0U3BhY2UgSVNPX1NV
QlNQQUNFX0lOSVQoaGVhcCwgY2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNOb25GaW5hbE9iamVj
dCkgLy8gTWFpbmx5IHVzZWQgZm9yIHByb3RvdHlwZXMuCi0gICAgLCBwcm9taXNlU3BhY2UgSVNP
X1NVQlNQQUNFX0lOSVQoaGVhcCwgY2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNQcm9taXNlKQot
ICAgICwgcHJvcGVydHlOYW1lRW51bWVyYXRvclNwYWNlIElTT19TVUJTUEFDRV9JTklUKGhlYXAs
IGNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTUHJvcGVydHlOYW1lRW51bWVyYXRvcikKLSAgICAs
IHByb3BlcnR5VGFibGVTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVChoZWFwLCBkZXN0cnVjdGlibGVD
ZWxsSGVhcENlbGxUeXBlLmdldCgpLCBQcm9wZXJ0eVRhYmxlKSAvLyBIYXNoOjB4YzZiYzlmMTIK
LSAgICAsIHJlZ0V4cFNwYWNlIElTT19TVUJTUEFDRV9JTklUKGhlYXAsIGRlc3RydWN0aWJsZUNl
bGxIZWFwQ2VsbFR5cGUuZ2V0KCksIFJlZ0V4cCkKLSAgICAsIHJlZ0V4cE9iamVjdFNwYWNlIElT
T19TVUJTUEFDRV9JTklUKGhlYXAsIGNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIFJlZ0V4cE9iamVj
dCkKLSAgICAsIHJvcGVTdHJpbmdTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVChoZWFwLCBzdHJpbmdI
ZWFwQ2VsbFR5cGUuZ2V0KCksIEpTUm9wZVN0cmluZykKLSAgICAsIHNjb3BlZEFyZ3VtZW50c1Nw
YWNlIElTT19TVUJTUEFDRV9JTklUKGhlYXAsIGNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIFNjb3Bl
ZEFyZ3VtZW50cykKLSAgICAsIHNwYXJzZUFycmF5VmFsdWVNYXBTcGFjZSBJU09fU1VCU1BBQ0Vf
SU5JVChoZWFwLCBkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlLmdldCgpLCBTcGFyc2VBcnJh
eVZhbHVlTWFwKQotICAgICwgc3RyaW5nU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoaGVhcCwgc3Ry
aW5nSGVhcENlbGxUeXBlLmdldCgpLCBKU1N0cmluZykgLy8gSGFzaDoweDkwY2Y3NThmCi0gICAg
LCBzdHJpbmdPYmplY3RTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVChoZWFwLCBjZWxsSGVhcENlbGxU
eXBlLmdldCgpLCBTdHJpbmdPYmplY3QpCi0gICAgLCBzdHJ1Y3R1cmVDaGFpblNwYWNlIElTT19T
VUJTUEFDRV9JTklUKGhlYXAsIGNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIFN0cnVjdHVyZUNoYWlu
KQotICAgICwgc3RydWN0dXJlUmFyZURhdGFTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVChoZWFwLCBk
ZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlLmdldCgpLCBTdHJ1Y3R1cmVSYXJlRGF0YSkgLy8g
SGFzaDoweGFjYTRlNjJkCi0gICAgLCBzdHJ1Y3R1cmVTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVCho
ZWFwLCBkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlLmdldCgpLCBTdHJ1Y3R1cmUpIC8vIEhh
c2g6MHgxZjFiY2RjYQotICAgICwgYnJhbmRlZFN0cnVjdHVyZVNwYWNlIElTT19TVUJTUEFDRV9J
TklUKGhlYXAsIGRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEJyYW5kZWRTdHJ1
Y3R1cmUpCi0gICAgLCBzeW1ib2xUYWJsZVNwYWNlIElTT19TVUJTUEFDRV9JTklUKGhlYXAsIGRl
c3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIFN5bWJvbFRhYmxlKSAvLyBIYXNoOjB4
YzUyMTVhZmQKLSAgICAsIGV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2VzV2l0aENvbnN0cmFpbnRz
KGV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2VTcGFjZSkKLSAgICAsIGV4ZWN1dGFibGVUb0NvZGVC
bG9ja0VkZ2VzV2l0aEZpbmFsaXplcnMoZXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZVNwYWNlKQot
ICAgICwgY29kZUJsb2NrU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoaGVhcCwgZGVzdHJ1Y3RpYmxl
Q2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgQ29kZUJsb2NrKSAvLyBIYXNoOjB4NzdlNjZlYzkKLSAg
ICAsIGZ1bmN0aW9uRXhlY3V0YWJsZVNwYWNlIElTT19TVUJTUEFDRV9JTklUKGhlYXAsIGRlc3Ry
dWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEZ1bmN0aW9uRXhlY3V0YWJsZSkgLy8gSGFz
aDoweDVkMTU4ZjMKLSAgICAsIHByb2dyYW1FeGVjdXRhYmxlU3BhY2UgSVNPX1NVQlNQQUNFX0lO
SVQoaGVhcCwgZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgUHJvZ3JhbUV4ZWN1
dGFibGUpIC8vIEhhc2g6MHg1MjdjNzdlNwotICAgICwgdW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFi
bGVTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVChoZWFwLCBkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxU
eXBlLmdldCgpLCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSkgLy8gSGFzaDoweGY2YjgyOGQ5
CiAgICAgLCB2bVR5cGUodm1UeXBlKQogICAgICwgY2xpZW50RGF0YShudWxscHRyKQogICAgICwg
dG9wRW50cnlGcmFtZShudWxscHRyKQpAQCAtMTU3MSwxMzcgKzEzOTEsNiBAQCB2b2lkIFZNOjpl
bnN1cmVTaGFkb3dDaGlja2VuKCkKICAgICBtX3NoYWRvd0NoaWNrZW4gPSBtYWtlVW5pcXVlPFNo
YWRvd0NoaWNrZW4+KCk7CiB9CiAKLSNkZWZpbmUgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5F
X01FTUJFUl9TTE9XKG5hbWUsIGhlYXBDZWxsVHlwZSwgdHlwZSkgXAotICAgIElzb1N1YnNwYWNl
KiBWTTo6bmFtZSMjU2xvdygpIFwKLSAgICB7IFwKLSAgICAgICAgQVNTRVJUKCFtXyMjbmFtZSk7
IFwKLSAgICAgICAgYXV0byBzcGFjZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJT
UEFDRV9JTklUKGhlYXAsIGhlYXBDZWxsVHlwZSwgdHlwZSk7IFwKLSAgICAgICAgV1RGOjpzdG9y
ZVN0b3JlRmVuY2UoKTsgXAotICAgICAgICBtXyMjbmFtZSA9IFdURk1vdmUoc3BhY2UpOyBcCi0g
ICAgICAgIHJldHVybiBtXyMjbmFtZS5nZXQoKTsgXAotICAgIH0KLQotCi1EWU5BTUlDX0lTT19T
VUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coYXBpR2xvYmFsT2JqZWN0U3BhY2UsIGFwaUdsb2Jh
bE9iamVjdEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNBUElHbG9iYWxPYmplY3QpCi1EWU5BTUlDX0lT
T19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coYXBpVmFsdWVXcmFwcGVyU3BhY2UsIGNlbGxI
ZWFwQ2VsbFR5cGUuZ2V0KCksIEpTQVBJVmFsdWVXcmFwcGVyKQotRFlOQU1JQ19JU09fU1VCU1BB
Q0VfREVGSU5FX01FTUJFUl9TTE9XKGFycmF5QnVmZmVyU3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUu
Z2V0KCksIEpTQXJyYXlCdWZmZXIpCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVS
X1NMT1coYXJyYXlJdGVyYXRvclNwYWNlLCBjZWxsSGVhcENlbGxUeXBlLmdldCgpLCBKU0FycmF5
SXRlcmF0b3IpCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coYXN5bmNH
ZW5lcmF0b3JTcGFjZSwgY2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNBc3luY0dlbmVyYXRvcikK
LURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhiaWdJbnQ2NEFycmF5U3Bh
Y2UsIGNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTQmlnSW50NjRBcnJheSkKLURZTkFNSUNfSVNP
X1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhiaWdJbnRPYmplY3RTcGFjZSwgY2VsbEhlYXBD
ZWxsVHlwZS5nZXQoKSwgQmlnSW50T2JqZWN0KQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5F
X01FTUJFUl9TTE9XKGJpZ1VpbnQ2NEFycmF5U3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCks
IEpTQmlnVWludDY0QXJyYXkpCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NM
T1coYm9vbGVhbk9iamVjdFNwYWNlLCBjZWxsSGVhcENlbGxUeXBlLmdldCgpLCBCb29sZWFuT2Jq
ZWN0KQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGJvdW5kRnVuY3Rp
b25TcGFjZSwgY2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNCb3VuZEZ1bmN0aW9uKSAvLyBIYXNo
OjB4ZDc5MTZkNDEKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhjYWxs
YmFja0NvbnN0cnVjdG9yU3BhY2UsIGNhbGxiYWNrQ29uc3RydWN0b3JIZWFwQ2VsbFR5cGUuZ2V0
KCksIEpTQ2FsbGJhY2tDb25zdHJ1Y3RvcikKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9N
RU1CRVJfU0xPVyhjYWxsYmFja0dsb2JhbE9iamVjdFNwYWNlLCBjYWxsYmFja0dsb2JhbE9iamVj
dEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNDYWxsYmFja09iamVjdDxKU0dsb2JhbE9iamVjdD4pCi1E
WU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coY2FsbGJhY2tGdW5jdGlvblNw
YWNlLCBjZWxsSGVhcENlbGxUeXBlLmdldCgpLCBKU0NhbGxiYWNrRnVuY3Rpb24pIC8vIEhhc2g6
MHhlNzY0OGViYwotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGNhbGxi
YWNrT2JqZWN0U3BhY2UsIGNhbGxiYWNrT2JqZWN0SGVhcENlbGxUeXBlLmdldCgpLCBKU0NhbGxi
YWNrT2JqZWN0PEpTTm9uRmluYWxPYmplY3Q+KQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5F
X01FTUJFUl9TTE9XKGN1c3RvbUdldHRlckZ1bmN0aW9uU3BhY2UsIGN1c3RvbUdldHRlckZ1bmN0
aW9uSGVhcENlbGxUeXBlLmdldCgpLCBKU0N1c3RvbUdldHRlckZ1bmN0aW9uKQotRFlOQU1JQ19J
U09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGN1c3RvbVNldHRlckZ1bmN0aW9uU3BhY2Us
IGN1c3RvbVNldHRlckZ1bmN0aW9uSGVhcENlbGxUeXBlLmdldCgpLCBKU0N1c3RvbVNldHRlckZ1
bmN0aW9uKQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGRhdGFWaWV3
U3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTRGF0YVZpZXcpCi1EWU5BTUlDX0lTT19T
VUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coZGVidWdnZXJTY29wZVNwYWNlLCBjZWxsSGVhcENl
bGxUeXBlLmdldCgpLCBEZWJ1Z2dlclNjb3BlKQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5F
X01FTUJFUl9TTE9XKGVycm9ySW5zdGFuY2VTcGFjZSwgZXJyb3JJbnN0YW5jZUhlYXBDZWxsVHlw
ZS5nZXQoKSwgRXJyb3JJbnN0YW5jZSkgLy8gSGFzaDoweDNmNDBkNGEKLURZTkFNSUNfSVNPX1NV
QlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhmbG9hdDMyQXJyYXlTcGFjZSwgY2VsbEhlYXBDZWxs
VHlwZS5nZXQoKSwgSlNGbG9hdDMyQXJyYXkpCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVf
TUVNQkVSX1NMT1coZmxvYXQ2NEFycmF5U3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEpT
RmxvYXQ2NEFycmF5KQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGZ1
bmN0aW9uUmFyZURhdGFTcGFjZSwgZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwg
RnVuY3Rpb25SYXJlRGF0YSkKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xP
VyhnZW5lcmF0b3JTcGFjZSwgY2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNHZW5lcmF0b3IpCi1E
WU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coZ2xvYmFsT2JqZWN0U3BhY2Us
IGdsb2JhbE9iamVjdEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNHbG9iYWxPYmplY3QpCi1EWU5BTUlD
X0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coaW5qZWN0ZWRTY3JpcHRIb3N0U3BhY2Us
IGluamVjdGVkU2NyaXB0SG9zdFNwYWNlSGVhcENlbGxUeXBlLmdldCgpLCBJbnNwZWN0b3I6OkpT
SW5qZWN0ZWRTY3JpcHRIb3N0KQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9T
TE9XKGludDhBcnJheVNwYWNlLCBjZWxsSGVhcENlbGxUeXBlLmdldCgpLCBKU0ludDhBcnJheSkK
LURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhpbnQxNkFycmF5U3BhY2Us
IGNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTSW50MTZBcnJheSkKLURZTkFNSUNfSVNPX1NVQlNQ
QUNFX0RFRklORV9NRU1CRVJfU0xPVyhpbnQzMkFycmF5U3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUu
Z2V0KCksIEpTSW50MzJBcnJheSkKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJf
U0xPVyhqYXZhU2NyaXB0Q2FsbEZyYW1lU3BhY2UsIGphdmFTY3JpcHRDYWxsRnJhbWVIZWFwQ2Vs
bFR5cGUuZ2V0KCksIEluc3BlY3Rvcjo6SlNKYXZhU2NyaXB0Q2FsbEZyYW1lKQotRFlOQU1JQ19J
U09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGpzTW9kdWxlUmVjb3JkU3BhY2UsIGpzTW9k
dWxlUmVjb3JkSGVhcENlbGxUeXBlLmdldCgpLCBKU01vZHVsZVJlY29yZCkKLURZTkFNSUNfSVNP
X1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhtYXBCdWNrZXRTcGFjZSwgY2VsbEhlYXBDZWxs
VHlwZS5nZXQoKSwgSlNNYXA6OkJ1Y2tldFR5cGUpCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJ
TkVfTUVNQkVSX1NMT1cobWFwSXRlcmF0b3JTcGFjZSwgY2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwg
SlNNYXBJdGVyYXRvcikKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyht
YXBTcGFjZSwgY2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNNYXApCi1EWU5BTUlDX0lTT19TVUJT
UEFDRV9ERUZJTkVfTUVNQkVSX1NMT1cobW9kdWxlTmFtZXNwYWNlT2JqZWN0U3BhY2UsIG1vZHVs
ZU5hbWVzcGFjZU9iamVjdEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNNb2R1bGVOYW1lc3BhY2VPYmpl
Y3QpCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1cobmF0aXZlU3RkRnVu
Y3Rpb25TcGFjZSwgbmF0aXZlU3RkRnVuY3Rpb25IZWFwQ2VsbFR5cGUuZ2V0KCksIEpTTmF0aXZl
U3RkRnVuY3Rpb24pIC8vIEhhc2g6MHg3MGVkNjFlNAotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVG
SU5FX01FTUJFUl9TTE9XKHByb3h5T2JqZWN0U3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCks
IFByb3h5T2JqZWN0KQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHBy
b3h5UmV2b2tlU3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIFByb3h5UmV2b2tlKSAvLyBI
YXNoOjB4YjUwNmE5MzkKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhz
Y29wZWRBcmd1bWVudHNUYWJsZVNwYWNlLCBkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlLmdl
dCgpLCBTY29wZWRBcmd1bWVudHNUYWJsZSkKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9N
RU1CRVJfU0xPVyhzY3JpcHRGZXRjaFBhcmFtZXRlcnNTcGFjZSwgZGVzdHJ1Y3RpYmxlQ2VsbEhl
YXBDZWxsVHlwZS5nZXQoKSwgSlNTY3JpcHRGZXRjaFBhcmFtZXRlcnMpCi1EWU5BTUlDX0lTT19T
VUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coc2NyaXB0RmV0Y2hlclNwYWNlLCBkZXN0cnVjdGli
bGVDZWxsSGVhcENlbGxUeXBlLmdldCgpLCBKU1NjcmlwdEZldGNoZXIpCi1EWU5BTUlDX0lTT19T
VUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coc2V0QnVja2V0U3BhY2UsIGNlbGxIZWFwQ2VsbFR5
cGUuZ2V0KCksIEpTU2V0OjpCdWNrZXRUeXBlKQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5F
X01FTUJFUl9TTE9XKHNldEl0ZXJhdG9yU3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEpT
U2V0SXRlcmF0b3IpCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coc2V0
U3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTU2V0KQotRFlOQU1JQ19JU09fU1VCU1BB
Q0VfREVGSU5FX01FTUJFUl9TTE9XKHNoYWRvd1JlYWxtU3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUu
Z2V0KCksIFNoYWRvd1JlYWxtT2JqZWN0KQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01F
TUJFUl9TTE9XKHN0cmljdEV2YWxBY3RpdmF0aW9uU3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUuZ2V0
KCksIFN0cmljdEV2YWxBY3RpdmF0aW9uKQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01F
TUJFUl9TTE9XKHN0cmluZ0l0ZXJhdG9yU3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEpT
U3RyaW5nSXRlcmF0b3IpCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1co
c291cmNlQ29kZVNwYWNlLCBkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlLmdldCgpLCBKU1Nv
dXJjZUNvZGUpCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coc3ltYm9s
U3BhY2UsIGRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIFN5bWJvbCkKLURZTkFN
SUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhzeW1ib2xPYmplY3RTcGFjZSwgY2Vs
bEhlYXBDZWxsVHlwZS5nZXQoKSwgU3ltYm9sT2JqZWN0KQotRFlOQU1JQ19JU09fU1VCU1BBQ0Vf
REVGSU5FX01FTUJFUl9TTE9XKHRlbXBsYXRlT2JqZWN0RGVzY3JpcHRvclNwYWNlLCBkZXN0cnVj
dGlibGVDZWxsSGVhcENlbGxUeXBlLmdldCgpLCBKU1RlbXBsYXRlT2JqZWN0RGVzY3JpcHRvcikK
LURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh0ZW1wb3JhbENhbGVuZGFy
U3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIFRlbXBvcmFsQ2FsZW5kYXIpCi1EWU5BTUlD
X0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1codGVtcG9yYWxEdXJhdGlvblNwYWNlLCBj
ZWxsSGVhcENlbGxUeXBlLmdldCgpLCBUZW1wb3JhbER1cmF0aW9uKQotRFlOQU1JQ19JU09fU1VC
U1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHRlbXBvcmFsSW5zdGFudFNwYWNlLCBjZWxsSGVhcENl
bGxUeXBlLmdldCgpLCBUZW1wb3JhbEluc3RhbnQpCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJ
TkVfTUVNQkVSX1NMT1codGVtcG9yYWxQbGFpblRpbWVTcGFjZSwgY2VsbEhlYXBDZWxsVHlwZS5n
ZXQoKSwgVGVtcG9yYWxQbGFpblRpbWUpCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVN
QkVSX1NMT1codGVtcG9yYWxUaW1lWm9uZVNwYWNlLCBjZWxsSGVhcENlbGxUeXBlLmdldCgpLCBU
ZW1wb3JhbFRpbWVab25lKQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9X
KHVpbnQ4QXJyYXlTcGFjZSwgY2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNVaW50OEFycmF5KQot
RFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHVpbnQ4Q2xhbXBlZEFycmF5
U3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVWludDhDbGFtcGVkQXJyYXkpCi1EWU5B
TUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1codWludDE2QXJyYXlTcGFjZSwgY2Vs
bEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNVaW50MTZBcnJheSkKLURZTkFNSUNfSVNPX1NVQlNQQUNF
X0RFRklORV9NRU1CRVJfU0xPVyh1aW50MzJBcnJheVNwYWNlLCBjZWxsSGVhcENlbGxUeXBlLmdl
dCgpLCBKU1VpbnQzMkFycmF5KQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9T
TE9XKHVubGlua2VkRXZhbENvZGVCbG9ja1NwYWNlLCBkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxU
eXBlLmdldCgpLCBVbmxpbmtlZEV2YWxDb2RlQmxvY2spCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9E
RUZJTkVfTUVNQkVSX1NMT1codW5saW5rZWRGdW5jdGlvbkNvZGVCbG9ja1NwYWNlLCBkZXN0cnVj
dGlibGVDZWxsSGVhcENlbGxUeXBlLmdldCgpLCBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKQot
RFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHVubGlua2VkTW9kdWxlUHJv
Z3JhbUNvZGVCbG9ja1NwYWNlLCBkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlLmdldCgpLCBV
bmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2spCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJ
TkVfTUVNQkVSX1NMT1codW5saW5rZWRQcm9ncmFtQ29kZUJsb2NrU3BhY2UsIGRlc3RydWN0aWJs
ZUNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIFVubGlua2VkUHJvZ3JhbUNvZGVCbG9jaykKLURZTkFN
SUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh3ZWFrTWFwU3BhY2UsIHdlYWtNYXBI
ZWFwQ2VsbFR5cGUuZ2V0KCksIEpTV2Vha01hcCkgLy8gSGFzaDoweDY2MmIxMmEzCi1EWU5BTUlD
X0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1cod2Vha1NldFNwYWNlLCB3ZWFrU2V0SGVh
cENlbGxUeXBlLmdldCgpLCBKU1dlYWtTZXQpIC8vIEhhc2g6MHg0Yzc4MWIzMAotRFlOQU1JQ19J
U09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHdlYWtPYmplY3RSZWZTcGFjZSwgY2VsbEhl
YXBDZWxsVHlwZS5nZXQoKSwgSlNXZWFrT2JqZWN0UmVmKSAvLyBIYXNoOjB4OGVjNjhmMWYKLURZ
TkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh3aXRoU2NvcGVTcGFjZSwgY2Vs
bEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNXaXRoU2NvcGUpCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9E
RUZJTkVfTUVNQkVSX1NMT1coZmluYWxpemF0aW9uUmVnaXN0cnlTcGFjZSwgZmluYWxpemF0aW9u
UmVnaXN0cnlDZWxsVHlwZS5nZXQoKSwgSlNGaW5hbGl6YXRpb25SZWdpc3RyeSkKLSNpZiBKU0Nf
T0JKQ19BUElfRU5BQkxFRAotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9X
KGFwaVdyYXBwZXJPYmplY3RTcGFjZSwgYXBpV3JhcHBlck9iamVjdEhlYXBDZWxsVHlwZS5nZXQo
KSwgSlNDYWxsYmFja09iamVjdDxKU0FQSVdyYXBwZXJPYmplY3Q+KQotRFlOQU1JQ19JU09fU1VC
U1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKG9iakNDYWxsYmFja0Z1bmN0aW9uU3BhY2UsIG9iakND
YWxsYmFja0Z1bmN0aW9uSGVhcENlbGxUeXBlLmdldCgpLCBPYmpDQ2FsbGJhY2tGdW5jdGlvbikg
Ly8gSGFzaDoweDEwZjYxMGI4Ci0jZW5kaWYKLSNpZmRlZiBKU0NfR0xJQl9BUElfRU5BQkxFRAot
RFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGFwaVdyYXBwZXJPYmplY3RT
cGFjZSwgYXBpV3JhcHBlck9iamVjdEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNDYWxsYmFja09iamVj
dDxKU0FQSVdyYXBwZXJPYmplY3Q+KQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJF
Ul9TTE9XKGpzY0NhbGxiYWNrRnVuY3Rpb25TcGFjZSwganNjQ2FsbGJhY2tGdW5jdGlvbkhlYXBD
ZWxsVHlwZS5nZXQoKSwgSlNDQ2FsbGJhY2tGdW5jdGlvbikKLURZTkFNSUNfSVNPX1NVQlNQQUNF
X0RFRklORV9NRU1CRVJfU0xPVyhjYWxsYmFja0FQSVdyYXBwZXJHbG9iYWxPYmplY3RTcGFjZSwg
Y2FsbGJhY2tBUElXcmFwcGVyR2xvYmFsT2JqZWN0SGVhcENlbGxUeXBlLmdldCgpLCBKU0NhbGxi
YWNrT2JqZWN0PEpTQVBJV3JhcHBlckdsb2JhbE9iamVjdD4pCi0jZW5kaWYKLURZTkFNSUNfSVNP
X1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhpbnRsQ29sbGF0b3JTcGFjZSwgaW50bENvbGxh
dG9ySGVhcENlbGxUeXBlLmdldCgpLCBJbnRsQ29sbGF0b3IpCi1EWU5BTUlDX0lTT19TVUJTUEFD
RV9ERUZJTkVfTUVNQkVSX1NMT1coaW50bERhdGVUaW1lRm9ybWF0U3BhY2UsIGludGxEYXRlVGlt
ZUZvcm1hdEhlYXBDZWxsVHlwZS5nZXQoKSwgSW50bERhdGVUaW1lRm9ybWF0KQotRFlOQU1JQ19J
U09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGludGxEaXNwbGF5TmFtZXNTcGFjZSwgaW50
bERpc3BsYXlOYW1lc0hlYXBDZWxsVHlwZS5nZXQoKSwgSW50bERpc3BsYXlOYW1lcykKLURZTkFN
SUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhpbnRsTGlzdEZvcm1hdFNwYWNlLCBp
bnRsTGlzdEZvcm1hdEhlYXBDZWxsVHlwZS5nZXQoKSwgSW50bExpc3RGb3JtYXQpCi1EWU5BTUlD
X0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coaW50bExvY2FsZVNwYWNlLCBpbnRsTG9j
YWxlSGVhcENlbGxUeXBlLmdldCgpLCBJbnRsTG9jYWxlKQotRFlOQU1JQ19JU09fU1VCU1BBQ0Vf
REVGSU5FX01FTUJFUl9TTE9XKGludGxOdW1iZXJGb3JtYXRTcGFjZSwgaW50bE51bWJlckZvcm1h
dEhlYXBDZWxsVHlwZS5nZXQoKSwgSW50bE51bWJlckZvcm1hdCkKLURZTkFNSUNfSVNPX1NVQlNQ
QUNFX0RFRklORV9NRU1CRVJfU0xPVyhpbnRsUGx1cmFsUnVsZXNTcGFjZSwgaW50bFBsdXJhbFJ1
bGVzSGVhcENlbGxUeXBlLmdldCgpLCBJbnRsUGx1cmFsUnVsZXMpCi1EWU5BTUlDX0lTT19TVUJT
UEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coaW50bFJlbGF0aXZlVGltZUZvcm1hdFNwYWNlLCBpbnRs
UmVsYXRpdmVUaW1lRm9ybWF0SGVhcENlbGxUeXBlLmdldCgpLCBJbnRsUmVsYXRpdmVUaW1lRm9y
bWF0KQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGludGxTZWdtZW50
SXRlcmF0b3JTcGFjZSwgaW50bFNlZ21lbnRJdGVyYXRvckhlYXBDZWxsVHlwZS5nZXQoKSwgSW50
bFNlZ21lbnRJdGVyYXRvcikKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xP
VyhpbnRsU2VnbWVudGVyU3BhY2UsIGludGxTZWdtZW50ZXJIZWFwQ2VsbFR5cGUuZ2V0KCksIElu
dGxTZWdtZW50ZXIpCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coaW50
bFNlZ21lbnRzU3BhY2UsIGludGxTZWdtZW50c0hlYXBDZWxsVHlwZS5nZXQoKSwgSW50bFNlZ21l
bnRzKQotI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklO
RV9NRU1CRVJfU0xPVyhqc1RvV2FzbUlDQ2FsbGVlU3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUuZ2V0
KCksIEpTVG9XYXNtSUNDYWxsZWUpCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVS
X1NMT1cod2ViQXNzZW1ibHlDb2RlQmxvY2tTcGFjZSwgd2ViQXNzZW1ibHlDb2RlQmxvY2tIZWFw
Q2VsbFR5cGUuZ2V0KCksIEpTV2ViQXNzZW1ibHlDb2RlQmxvY2spIC8vIEhhc2g6MHg5YWQ5OTVj
ZAotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHdlYkFzc2VtYmx5RXhj
ZXB0aW9uU3BhY2UsIHdlYkFzc2VtYmx5RXhjZXB0aW9uSGVhcENlbGxUeXBlLmdldCgpLCBKU1dl
YkFzc2VtYmx5RXhjZXB0aW9uKQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9T
TE9XKHdlYkFzc2VtYmx5RnVuY3Rpb25TcGFjZSwgd2ViQXNzZW1ibHlGdW5jdGlvbkhlYXBDZWxs
VHlwZS5nZXQoKSwgV2ViQXNzZW1ibHlGdW5jdGlvbikgLy8gSGFzaDoweDhiN2MzMmRiCi1EWU5B
TUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1cod2ViQXNzZW1ibHlHbG9iYWxTcGFj
ZSwgd2ViQXNzZW1ibHlHbG9iYWxIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTV2ViQXNzZW1ibHlHbG9i
YWwpCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1cod2ViQXNzZW1ibHlJ
bnN0YW5jZVNwYWNlLCB3ZWJBc3NlbWJseUluc3RhbmNlSGVhcENlbGxUeXBlLmdldCgpLCBKU1dl
YkFzc2VtYmx5SW5zdGFuY2UpCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NM
T1cod2ViQXNzZW1ibHlNZW1vcnlTcGFjZSwgd2ViQXNzZW1ibHlNZW1vcnlIZWFwQ2VsbFR5cGUu
Z2V0KCksIEpTV2ViQXNzZW1ibHlNZW1vcnkpCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVf
TUVNQkVSX1NMT1cod2ViQXNzZW1ibHlNb2R1bGVTcGFjZSwgd2ViQXNzZW1ibHlNb2R1bGVIZWFw
Q2VsbFR5cGUuZ2V0KCksIEpTV2ViQXNzZW1ibHlNb2R1bGUpCi1EWU5BTUlDX0lTT19TVUJTUEFD
RV9ERUZJTkVfTUVNQkVSX1NMT1cod2ViQXNzZW1ibHlNb2R1bGVSZWNvcmRTcGFjZSwgd2ViQXNz
ZW1ibHlNb2R1bGVSZWNvcmRIZWFwQ2VsbFR5cGUuZ2V0KCksIFdlYkFzc2VtYmx5TW9kdWxlUmVj
b3JkKQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHdlYkFzc2VtYmx5
VGFibGVTcGFjZSwgd2ViQXNzZW1ibHlUYWJsZUhlYXBDZWxsVHlwZS5nZXQoKSwgSlNXZWJBc3Nl
bWJseVRhYmxlKQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHdlYkFz
c2VtYmx5VGFnU3BhY2UsIHdlYkFzc2VtYmx5VGFnSGVhcENlbGxUeXBlLmdldCgpLCBKU1dlYkFz
c2VtYmx5VGFnKQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHdlYkFz
c2VtYmx5V3JhcHBlckZ1bmN0aW9uU3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIFdlYkFz
c2VtYmx5V3JhcHBlckZ1bmN0aW9uKSAvLyBIYXNoOjB4ZDRhNWZmMDEKLSNlbmRpZgotCi0jdW5k
ZWYgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XCi0KLSNkZWZpbmUgRFlO
QU1JQ19TUEFDRV9BTkRfU0VUX0RFRklORV9NRU1CRVJfU0xPVyhuYW1lLCBoZWFwQ2VsbFR5cGUs
IHR5cGUpIFwKLSAgICBJc29TdWJzcGFjZSogVk06Om5hbWUjI1Nsb3coKSBcCi0gICAgeyBcCi0g
ICAgICAgIEFTU0VSVCghbV8jI25hbWUpOyBcCi0gICAgICAgIGF1dG8gc3BhY2UgPSBtYWtlVW5p
cXVlPFNwYWNlQW5kU2V0PiBJU09fU1VCU1BBQ0VfSU5JVChoZWFwLCBoZWFwQ2VsbFR5cGUsIHR5
cGUpOyBcCi0gICAgICAgIFdURjo6c3RvcmVTdG9yZUZlbmNlKCk7IFwKLSAgICAgICAgbV8jI25h
bWUgPSBXVEZNb3ZlKHNwYWNlKTsgXAotICAgICAgICByZXR1cm4gJm1fIyNuYW1lLT5zcGFjZTsg
XAotICAgIH0KLQotRFlOQU1JQ19TUEFDRV9BTkRfU0VUX0RFRklORV9NRU1CRVJfU0xPVyhldmFs
RXhlY3V0YWJsZVNwYWNlLCBkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlLmdldCgpLCBFdmFs
RXhlY3V0YWJsZSkgLy8gSGFzaDoweDk1OGUzZTlkCi1EWU5BTUlDX1NQQUNFX0FORF9TRVRfREVG
SU5FX01FTUJFUl9TTE9XKG1vZHVsZVByb2dyYW1FeGVjdXRhYmxlU3BhY2UsIGRlc3RydWN0aWJs
ZUNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlKSAvLyBIYXNo
OjB4NjUwNmZhM2MKLQotI3VuZGVmIERZTkFNSUNfU1BBQ0VfQU5EX1NFVF9ERUZJTkVfTUVNQkVS
X1NMT1cKLQogSlNDZWxsKiBWTTo6c2VudGluZWxTZXRCdWNrZXRTbG93KCkKIHsKICAgICBBU1NF
UlQoIW1fc2VudGluZWxTZXRCdWNrZXQpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvVk0uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9W
TS5oCShyZXZpc2lvbiAyODYwMjQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9W
TS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw3ICszMSw2IEBACiAjaW5jbHVkZSAiQ2FsbERhdGEu
aCIKICNpbmNsdWRlICJDYWxsZWVCaXRzLmgiCiAjaW5jbHVkZSAiQ29kZVNwZWNpYWxpemF0aW9u
S2luZC5oIgotI2luY2x1ZGUgIkNvbXBsZXRlU3Vic3BhY2UuaCIKICNpbmNsdWRlICJDb25jdXJy
ZW50SlNMb2NrLmgiCiAjaW5jbHVkZSAiREZHRG9lc0dDQ2hlY2suaCIKICNpbmNsdWRlICJEZWxl
dGVBbGxDb2RlRWZmb3J0LmgiCkBAIC00Miw4ICs0MSw2IEBACiAjaW5jbHVkZSAiSGVhcC5oIgog
I2luY2x1ZGUgIkludGVncml0eS5oIgogI2luY2x1ZGUgIkludHJpbnNpYy5oIgotI2luY2x1ZGUg
Iklzb0NlbGxTZXQuaCIKLSNpbmNsdWRlICJJc29TdWJzcGFjZS5oIgogI2luY2x1ZGUgIkpTQ0pT
VmFsdWUuaCIKICNpbmNsdWRlICJKU0RhdGVNYXRoLmgiCiAjaW5jbHVkZSAiSlNMb2NrLmgiCkBA
IC0xMjIsOCArMTE5LDYgQEAgY2xhc3MgRGF0ZUluc3RhbmNlOwogY2xhc3MgRXJyb3JJbnN0YW5j
ZTsKIGNsYXNzIEV4Y2VwdGlvbjsKIGNsYXNzIEV4Y2VwdGlvblNjb3BlOwotY2xhc3MgRmFzdE1h
bGxvY0FsaWduZWRNZW1vcnlBbGxvY2F0b3I7Ci1jbGFzcyBHaWdhY2FnZUFsaWduZWRNZW1vcnlB
bGxvY2F0b3I7CiBjbGFzcyBIYW5kbGVTdGFjazsKIGNsYXNzIEhhc093blByb3BlcnR5Q2FjaGU7
CiBjbGFzcyBIZWFwQW5hbHl6ZXI7CkBAIC0yMjAsOCArMjE1LDYgQEAgY2xhc3MgV2ViQXNzZW1i
bHlNb2R1bGVSZWNvcmQ7CiAKIGNvbnN0ZXhwciBib29sIHZhbGlkYXRlREZHRG9lc0dDID0gRU5B
QkxFX0RGR19ET0VTX0dDX1ZBTElEQVRJT047CiAKLWNsYXNzIElzb0hlYXBDZWxsVHlwZTsKLXRl
bXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlPiBjbGFzcyBJc29JbmxpbmVkSGVhcENlbGxUeXBlOwog
dGVtcGxhdGU8dHlwZW5hbWUgUGFyZW50PiBjbGFzcyBKU0NhbGxiYWNrT2JqZWN0OwogCiAjaWYg
RU5BQkxFKEZUTF9KSVQpCkBAIC00MTMsMTQ1ICs0MDYsNTggQEAgcHJpdmF0ZToKIAogcHVibGlj
OgogICAgIEhlYXAgaGVhcDsKLSAgICAKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8RmFzdE1hbGxvY0Fs
aWduZWRNZW1vcnlBbGxvY2F0b3I+IGZhc3RNYWxsb2NBbGxvY2F0b3I7Ci0gICAgc3RkOjp1bmlx
dWVfcHRyPEdpZ2FjYWdlQWxpZ25lZE1lbW9yeUFsbG9jYXRvcj4gcHJpbWl0aXZlR2lnYWNhZ2VB
bGxvY2F0b3I7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPEdpZ2FjYWdlQWxpZ25lZE1lbW9yeUFsbG9j
YXRvcj4ganNWYWx1ZUdpZ2FjYWdlQWxsb2NhdG9yOwotCi0gICAgc3RkOjp1bmlxdWVfcHRyPEhl
YXBDZWxsVHlwZT4gYXV4aWxpYXJ5SGVhcENlbGxUeXBlOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxI
ZWFwQ2VsbFR5cGU+IGltbXV0YWJsZUJ1dHRlcmZseUhlYXBDZWxsVHlwZTsKLSAgICBzdGQ6OnVu
aXF1ZV9wdHI8SGVhcENlbGxUeXBlPiBjZWxsSGVhcENlbGxUeXBlOwotICAgIHN0ZDo6dW5pcXVl
X3B0cjxIZWFwQ2VsbFR5cGU+IGRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGU7Ci0gICAgc3Rk
Ojp1bmlxdWVfcHRyPElzb0hlYXBDZWxsVHlwZT4gYXBpR2xvYmFsT2JqZWN0SGVhcENlbGxUeXBl
OwotICAgIHN0ZDo6dW5pcXVlX3B0cjxJc29IZWFwQ2VsbFR5cGU+IGNhbGxiYWNrQ29uc3RydWN0
b3JIZWFwQ2VsbFR5cGU7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPElzb0hlYXBDZWxsVHlwZT4gY2Fs
bGJhY2tHbG9iYWxPYmplY3RIZWFwQ2VsbFR5cGU7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPElzb0hl
YXBDZWxsVHlwZT4gY2FsbGJhY2tPYmplY3RIZWFwQ2VsbFR5cGU7Ci0gICAgc3RkOjp1bmlxdWVf
cHRyPElzb0hlYXBDZWxsVHlwZT4gY3VzdG9tR2V0dGVyRnVuY3Rpb25IZWFwQ2VsbFR5cGU7Ci0g
ICAgc3RkOjp1bmlxdWVfcHRyPElzb0hlYXBDZWxsVHlwZT4gY3VzdG9tU2V0dGVyRnVuY3Rpb25I
ZWFwQ2VsbFR5cGU7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPElzb0hlYXBDZWxsVHlwZT4gZGF0ZUlu
c3RhbmNlSGVhcENlbGxUeXBlOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxJc29IZWFwQ2VsbFR5cGU+
IGVycm9ySW5zdGFuY2VIZWFwQ2VsbFR5cGU7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPElzb0hlYXBD
ZWxsVHlwZT4gZmluYWxpemF0aW9uUmVnaXN0cnlDZWxsVHlwZTsKLSAgICBzdGQ6OnVuaXF1ZV9w
dHI8SXNvSGVhcENlbGxUeXBlPiBnbG9iYWxMZXhpY2FsRW52aXJvbm1lbnRIZWFwQ2VsbFR5cGU7
Ci0gICAgc3RkOjp1bmlxdWVfcHRyPElzb0hlYXBDZWxsVHlwZT4gZ2xvYmFsT2JqZWN0SGVhcENl
bGxUeXBlOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxJc29IZWFwQ2VsbFR5cGU+IGluamVjdGVkU2Ny
aXB0SG9zdFNwYWNlSGVhcENlbGxUeXBlOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxJc29IZWFwQ2Vs
bFR5cGU+IGphdmFTY3JpcHRDYWxsRnJhbWVIZWFwQ2VsbFR5cGU7Ci0gICAgc3RkOjp1bmlxdWVf
cHRyPElzb0hlYXBDZWxsVHlwZT4ganNNb2R1bGVSZWNvcmRIZWFwQ2VsbFR5cGU7Ci0gICAgc3Rk
Ojp1bmlxdWVfcHRyPElzb0hlYXBDZWxsVHlwZT4gbW9kdWxlTmFtZXNwYWNlT2JqZWN0SGVhcENl
bGxUeXBlOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxJc29IZWFwQ2VsbFR5cGU+IG5hdGl2ZVN0ZEZ1
bmN0aW9uSGVhcENlbGxUeXBlOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxJc29JbmxpbmVkSGVhcENl
bGxUeXBlPEpTU3RyaW5nPj4gc3RyaW5nSGVhcENlbGxUeXBlOwotICAgIHN0ZDo6dW5pcXVlX3B0
cjxJc29IZWFwQ2VsbFR5cGU+IHdlYWtNYXBIZWFwQ2VsbFR5cGU7Ci0gICAgc3RkOjp1bmlxdWVf
cHRyPElzb0hlYXBDZWxsVHlwZT4gd2Vha1NldEhlYXBDZWxsVHlwZTsKLSAgICBzdGQ6OnVuaXF1
ZV9wdHI8SlNEZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGU+IGRlc3RydWN0aWJsZU9iamVj
dEhlYXBDZWxsVHlwZTsKLSNpZiBKU0NfT0JKQ19BUElfRU5BQkxFRAotICAgIHN0ZDo6dW5pcXVl
X3B0cjxJc29IZWFwQ2VsbFR5cGU+IGFwaVdyYXBwZXJPYmplY3RIZWFwQ2VsbFR5cGU7Ci0gICAg
c3RkOjp1bmlxdWVfcHRyPElzb0hlYXBDZWxsVHlwZT4gb2JqQ0NhbGxiYWNrRnVuY3Rpb25IZWFw
Q2VsbFR5cGU7Ci0jZW5kaWYKLSNpZmRlZiBKU0NfR0xJQl9BUElfRU5BQkxFRAotICAgIHN0ZDo6
dW5pcXVlX3B0cjxJc29IZWFwQ2VsbFR5cGU+IGFwaVdyYXBwZXJPYmplY3RIZWFwQ2VsbFR5cGU7
Ci0gICAgc3RkOjp1bmlxdWVfcHRyPElzb0hlYXBDZWxsVHlwZT4gY2FsbGJhY2tBUElXcmFwcGVy
R2xvYmFsT2JqZWN0SGVhcENlbGxUeXBlOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxJc29IZWFwQ2Vs
bFR5cGU+IGpzY0NhbGxiYWNrRnVuY3Rpb25IZWFwQ2VsbFR5cGU7Ci0jZW5kaWYKLSAgICBzdGQ6
OnVuaXF1ZV9wdHI8SXNvSGVhcENlbGxUeXBlPiBpbnRsQ29sbGF0b3JIZWFwQ2VsbFR5cGU7Ci0g
ICAgc3RkOjp1bmlxdWVfcHRyPElzb0hlYXBDZWxsVHlwZT4gaW50bERhdGVUaW1lRm9ybWF0SGVh
cENlbGxUeXBlOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxJc29IZWFwQ2VsbFR5cGU+IGludGxEaXNw
bGF5TmFtZXNIZWFwQ2VsbFR5cGU7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPElzb0hlYXBDZWxsVHlw
ZT4gaW50bExpc3RGb3JtYXRIZWFwQ2VsbFR5cGU7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPElzb0hl
YXBDZWxsVHlwZT4gaW50bExvY2FsZUhlYXBDZWxsVHlwZTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8
SXNvSGVhcENlbGxUeXBlPiBpbnRsTnVtYmVyRm9ybWF0SGVhcENlbGxUeXBlOwotICAgIHN0ZDo6
dW5pcXVlX3B0cjxJc29IZWFwQ2VsbFR5cGU+IGludGxQbHVyYWxSdWxlc0hlYXBDZWxsVHlwZTsK
LSAgICBzdGQ6OnVuaXF1ZV9wdHI8SXNvSGVhcENlbGxUeXBlPiBpbnRsUmVsYXRpdmVUaW1lRm9y
bWF0SGVhcENlbGxUeXBlOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxJc29IZWFwQ2VsbFR5cGU+IGlu
dGxTZWdtZW50SXRlcmF0b3JIZWFwQ2VsbFR5cGU7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPElzb0hl
YXBDZWxsVHlwZT4gaW50bFNlZ21lbnRlckhlYXBDZWxsVHlwZTsKLSAgICBzdGQ6OnVuaXF1ZV9w
dHI8SXNvSGVhcENlbGxUeXBlPiBpbnRsU2VnbWVudHNIZWFwQ2VsbFR5cGU7Ci0jaWYgRU5BQkxF
KFdFQkFTU0VNQkxZKQotICAgIHN0ZDo6dW5pcXVlX3B0cjxJc29IZWFwQ2VsbFR5cGU+IHdlYkFz
c2VtYmx5Q29kZUJsb2NrSGVhcENlbGxUeXBlOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxJc29IZWFw
Q2VsbFR5cGU+IHdlYkFzc2VtYmx5RXhjZXB0aW9uSGVhcENlbGxUeXBlOwotICAgIHN0ZDo6dW5p
cXVlX3B0cjxJc29IZWFwQ2VsbFR5cGU+IHdlYkFzc2VtYmx5RnVuY3Rpb25IZWFwQ2VsbFR5cGU7
Ci0gICAgc3RkOjp1bmlxdWVfcHRyPElzb0hlYXBDZWxsVHlwZT4gd2ViQXNzZW1ibHlHbG9iYWxI
ZWFwQ2VsbFR5cGU7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPElzb0hlYXBDZWxsVHlwZT4gd2ViQXNz
ZW1ibHlJbnN0YW5jZUhlYXBDZWxsVHlwZTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SXNvSGVhcENl
bGxUeXBlPiB3ZWJBc3NlbWJseU1lbW9yeUhlYXBDZWxsVHlwZTsKLSAgICBzdGQ6OnVuaXF1ZV9w
dHI8SXNvSGVhcENlbGxUeXBlPiB3ZWJBc3NlbWJseU1vZHVsZUhlYXBDZWxsVHlwZTsKLSAgICBz
dGQ6OnVuaXF1ZV9wdHI8SXNvSGVhcENlbGxUeXBlPiB3ZWJBc3NlbWJseU1vZHVsZVJlY29yZEhl
YXBDZWxsVHlwZTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SXNvSGVhcENlbGxUeXBlPiB3ZWJBc3Nl
bWJseVRhYmxlSGVhcENlbGxUeXBlOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxJc29IZWFwQ2VsbFR5
cGU+IHdlYkFzc2VtYmx5VGFnSGVhcENlbGxUeXBlOwotI2VuZGlmCisKKyAgICBjb25zdCBIZWFw
Q2VsbFR5cGUmIGNlbGxIZWFwQ2VsbFR5cGUoKSB7IHJldHVybiBoZWFwLmNlbGxIZWFwQ2VsbFR5
cGU7IH0KKyAgICBjb25zdCBKU0Rlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSYgZGVzdHJ1
Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCkgeyByZXR1cm4gaGVhcC5kZXN0cnVjdGlibGVPYmpl
Y3RIZWFwQ2VsbFR5cGU7IH07CiAKICNpZiBFTkFCTEUoSklUKQogICAgIHN0ZDo6dW5pcXVlX3B0
cjxKSVRTaXplU3RhdGlzdGljcz4gaml0U2l6ZVN0YXRpc3RpY3M7CiAjZW5kaWYKICAgICAKLSAg
ICBDb21wbGV0ZVN1YnNwYWNlIHByaW1pdGl2ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2U7IC8vIFR5
cGVkIGFycmF5cywgc3RyaW5ncywgYml0dmVjdG9ycywgZXRjIGdvIGhlcmUuCi0gICAgQ29tcGxl
dGVTdWJzcGFjZSBqc1ZhbHVlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZTsgLy8gQnV0dGVyZmxpZXMs
IGFycmF5cyBvZiBKU1ZhbHVlcywgZXRjIGdvIGhlcmUuCi0gICAgQ29tcGxldGVTdWJzcGFjZSBp
bW11dGFibGVCdXR0ZXJmbHlKU1ZhbHVlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZTsgLy8gSlNJbW11
dGFibGVCdXR0ZXJmbHkgZ29lcyBoZXJlLgotCi0gICAgLy8gV2UgbWFrZSBjcm9zcy1jdXR0aW5n
IGFzc3VtcHRpb25zIGFib3V0IHR5cGVkIGFycmF5cyBiZWluZyBpbiB0aGUgcHJpbWl0aXZlIEdp
Z2FjYWdlIGFuZCBidXR0ZXJmbGllcwotICAgIC8vIGJlaW5nIGluIHRoZSBKU1ZhbHVlIGdpZ2Fj
YWdlLiBGb3Igc29tZSB0eXBlcywgaXQncyBzdXBlciBvYnZpb3VzIHdoZXJlIHRoZXkgc2hvdWxk
IGdvLCBhbmQgc28gd2UKLSAgICAvLyBjYW4gaGFyZGNvZGUgdGhhdCBmYWN0LiBCdXQgc29tZXRp
bWVzIGl0J3Mgbm90IGNsZWFyLCBzbyB3ZSBhYnN0cmFjdCBpdCBieSBoYXZpbmcgYSBHaWdhY2Fn
ZTo6S2luZAotICAgIC8vIGNvbnN0YW50IHNvbWV3aGVyZS4KLSAgICAvLyBGSVhNRTogTWF5YmUg
aXQgd291bGQgYmUgYmV0dGVyIGlmIGV2ZXJ5b25lIGFic3RyYWN0ZWQgdGhpcz8KLSAgICAvLyBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc1MjQ4Ci0gICAgQUxXQVlT
X0lOTElORSBDb21wbGV0ZVN1YnNwYWNlJiBnaWdhY2FnZUF1eGlsaWFyeVNwYWNlKEdpZ2FjYWdl
OjpLaW5kIGtpbmQpCi0gICAgewotICAgICAgICBzd2l0Y2ggKGtpbmQpIHsKLSAgICAgICAgY2Fz
ZSBHaWdhY2FnZTo6UHJpbWl0aXZlOgotICAgICAgICAgICAgcmV0dXJuIHByaW1pdGl2ZUdpZ2Fj
YWdlQXV4aWxpYXJ5U3BhY2U7Ci0gICAgICAgIGNhc2UgR2lnYWNhZ2U6OkpTVmFsdWU6Ci0gICAg
ICAgICAgICByZXR1cm4ganNWYWx1ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2U7Ci0gICAgICAgIGNh
c2UgR2lnYWNhZ2U6Ok51bWJlck9mS2luZHM6Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAg
fQotICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm4g
cHJpbWl0aXZlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZTsKLSAgICB9Ci0gICAgCi0gICAgLy8gV2hl
bmV2ZXIgcG9zc2libGUsIHVzZSBzdWJzcGFjZUZvcjxDZWxsVHlwZT4odm0pIHRvIGdldCBvbmUg
b2YgdGhlc2Ugc3Vic3BhY2VzLgotICAgIENvbXBsZXRlU3Vic3BhY2UgY2VsbFNwYWNlOwotICAg
IENvbXBsZXRlU3Vic3BhY2UgdmFyaWFibGVTaXplZENlbGxTcGFjZTsgLy8gRklYTUU6IFRoaXMg
c3BhY2UgaXMgcHJvYmxlbWF0aWMgYmVjYXVzZSB3ZSBoYXZlIHRoaW5ncyBpbiBoZXJlIGxpa2Ug
RGlyZWN0QXJndW1lbnRzIGFuZCBTY29wZWRBcmd1bWVudHM7IHRob3NlIHNob3VsZCBiZSBzcGxp
dCBpbnRvIEpTVmFsdWVPT0IgY2VsbHMgYW5kIEpTVmFsdWVTdHJpY3QgYXV4aWxpYXJpZXMuIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODI4NTgKLSAgICBDb21wbGV0
ZVN1YnNwYWNlIGRlc3RydWN0aWJsZU9iamVjdFNwYWNlOwotICAgIAotICAgIElzb1N1YnNwYWNl
IGFycmF5U3BhY2U7Ci0gICAgSXNvU3Vic3BhY2UgYmlnSW50U3BhY2U7Ci0gICAgSXNvU3Vic3Bh
Y2UgY2FsbGVlU3BhY2U7Ci0gICAgSXNvU3Vic3BhY2UgY2xvbmVkQXJndW1lbnRzU3BhY2U7Ci0g
ICAgSXNvU3Vic3BhY2UgY3VzdG9tR2V0dGVyU2V0dGVyU3BhY2U7Ci0gICAgSXNvU3Vic3BhY2Ug
ZGF0ZUluc3RhbmNlU3BhY2U7Ci0gICAgSXNvU3Vic3BhY2UgZG9tQXR0cmlidXRlR2V0dGVyU2V0
dGVyU3BhY2U7Ci0gICAgSXNvU3Vic3BhY2UgZXhjZXB0aW9uU3BhY2U7Ci0gICAgSXNvU3Vic3Bh
Y2UgZXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZVNwYWNlOwotICAgIElzb1N1YnNwYWNlIGZ1bmN0
aW9uU3BhY2U7Ci0gICAgSXNvU3Vic3BhY2UgZ2V0dGVyU2V0dGVyU3BhY2U7Ci0gICAgSXNvU3Vi
c3BhY2UgZ2xvYmFsTGV4aWNhbEVudmlyb25tZW50U3BhY2U7Ci0gICAgSXNvU3Vic3BhY2UgaW50
ZXJuYWxGdW5jdGlvblNwYWNlOwotICAgIElzb1N1YnNwYWNlIGpzUHJveHlTcGFjZTsKLSAgICBJ
c29TdWJzcGFjZSBuYXRpdmVFeGVjdXRhYmxlU3BhY2U7Ci0gICAgSXNvU3Vic3BhY2UgbnVtYmVy
T2JqZWN0U3BhY2U7Ci0gICAgSXNvU3Vic3BhY2UgcGxhaW5PYmplY3RTcGFjZTsKLSAgICBJc29T
dWJzcGFjZSBwcm9taXNlU3BhY2U7Ci0gICAgSXNvU3Vic3BhY2UgcHJvcGVydHlOYW1lRW51bWVy
YXRvclNwYWNlOwotICAgIElzb1N1YnNwYWNlIHByb3BlcnR5VGFibGVTcGFjZTsKLSAgICBJc29T
dWJzcGFjZSByZWdFeHBTcGFjZTsKLSAgICBJc29TdWJzcGFjZSByZWdFeHBPYmplY3RTcGFjZTsK
LSAgICBJc29TdWJzcGFjZSByb3BlU3RyaW5nU3BhY2U7Ci0gICAgSXNvU3Vic3BhY2Ugc2NvcGVk
QXJndW1lbnRzU3BhY2U7Ci0gICAgSXNvU3Vic3BhY2Ugc3BhcnNlQXJyYXlWYWx1ZU1hcFNwYWNl
OwotICAgIElzb1N1YnNwYWNlIHN0cmluZ1NwYWNlOwotICAgIElzb1N1YnNwYWNlIHN0cmluZ09i
amVjdFNwYWNlOwotICAgIElzb1N1YnNwYWNlIHN0cnVjdHVyZUNoYWluU3BhY2U7Ci0gICAgSXNv
U3Vic3BhY2Ugc3RydWN0dXJlUmFyZURhdGFTcGFjZTsKLSAgICBJc29TdWJzcGFjZSBzdHJ1Y3R1
cmVTcGFjZTsKLSAgICBJc29TdWJzcGFjZSBicmFuZGVkU3RydWN0dXJlU3BhY2U7Ci0gICAgSXNv
U3Vic3BhY2Ugc3ltYm9sVGFibGVTcGFjZTsKKyAgICBBTFdBWVNfSU5MSU5FIENvbXBsZXRlU3Vi
c3BhY2UmIHByaW1pdGl2ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UoKSB7IHJldHVybiBoZWFwLnBy
aW1pdGl2ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2U7IH0KKyAgICBBTFdBWVNfSU5MSU5FIENvbXBs
ZXRlU3Vic3BhY2UmIGpzVmFsdWVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlKCkgeyByZXR1cm4gaGVh
cC5qc1ZhbHVlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZTsgfQorICAgIEFMV0FZU19JTkxJTkUgQ29t
cGxldGVTdWJzcGFjZSYgaW1tdXRhYmxlQnV0dGVyZmx5SlNWYWx1ZUdpZ2FjYWdlQXV4aWxpYXJ5
U3BhY2UoKSB7IHJldHVybiBoZWFwLmltbXV0YWJsZUJ1dHRlcmZseUpTVmFsdWVHaWdhY2FnZUF1
eGlsaWFyeVNwYWNlOyB9CisgICAgQUxXQVlTX0lOTElORSBDb21wbGV0ZVN1YnNwYWNlJiBnaWdh
Y2FnZUF1eGlsaWFyeVNwYWNlKEdpZ2FjYWdlOjpLaW5kIGtpbmQpIHsgcmV0dXJuIGhlYXAuZ2ln
YWNhZ2VBdXhpbGlhcnlTcGFjZShraW5kKTsgfQorICAgIEFMV0FZU19JTkxJTkUgQ29tcGxldGVT
dWJzcGFjZSYgY2VsbFNwYWNlKCkgeyByZXR1cm4gaGVhcC5jZWxsU3BhY2U7IH0KKyAgICBBTFdB
WVNfSU5MSU5FIENvbXBsZXRlU3Vic3BhY2UmIHZhcmlhYmxlU2l6ZWRDZWxsU3BhY2UoKSB7IHJl
dHVybiBoZWFwLnZhcmlhYmxlU2l6ZWRDZWxsU3BhY2U7IH0KKyAgICBBTFdBWVNfSU5MSU5FIENv
bXBsZXRlU3Vic3BhY2UmIGRlc3RydWN0aWJsZU9iamVjdFNwYWNlKCkgeyByZXR1cm4gaGVhcC5k
ZXN0cnVjdGlibGVPYmplY3RTcGFjZTsgfQorCisgICAgQUxXQVlTX0lOTElORSBJc29TdWJzcGFj
ZSYgYXJyYXlTcGFjZSgpIHsgcmV0dXJuIGhlYXAuYXJyYXlTcGFjZTsgfQorICAgIEFMV0FZU19J
TkxJTkUgSXNvU3Vic3BhY2UmIGJpZ0ludFNwYWNlKCkgeyByZXR1cm4gaGVhcC5iaWdJbnRTcGFj
ZTsgfQorICAgIEFMV0FZU19JTkxJTkUgSXNvU3Vic3BhY2UmIGNhbGxlZVNwYWNlKCkgeyByZXR1
cm4gaGVhcC5jYWxsZWVTcGFjZTsgfQorICAgIEFMV0FZU19JTkxJTkUgSXNvU3Vic3BhY2UmIGNs
b25lZEFyZ3VtZW50c1NwYWNlKCkgeyByZXR1cm4gaGVhcC5jbG9uZWRBcmd1bWVudHNTcGFjZTsg
fQorICAgIEFMV0FZU19JTkxJTkUgSXNvU3Vic3BhY2UmIGN1c3RvbUdldHRlclNldHRlclNwYWNl
KCkgeyByZXR1cm4gaGVhcC5jdXN0b21HZXR0ZXJTZXR0ZXJTcGFjZTsgfQorICAgIEFMV0FZU19J
TkxJTkUgSXNvU3Vic3BhY2UmIGRhdGVJbnN0YW5jZVNwYWNlKCkgeyByZXR1cm4gaGVhcC5kYXRl
SW5zdGFuY2VTcGFjZTsgfQorICAgIEFMV0FZU19JTkxJTkUgSXNvU3Vic3BhY2UmIGRvbUF0dHJp
YnV0ZUdldHRlclNldHRlclNwYWNlKCkgeyByZXR1cm4gaGVhcC5kb21BdHRyaWJ1dGVHZXR0ZXJT
ZXR0ZXJTcGFjZTsgfQorICAgIEFMV0FZU19JTkxJTkUgSXNvU3Vic3BhY2UmIGV4Y2VwdGlvblNw
YWNlKCkgeyByZXR1cm4gaGVhcC5leGNlcHRpb25TcGFjZTsgfQorICAgIEFMV0FZU19JTkxJTkUg
SXNvU3Vic3BhY2UmIGV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2VTcGFjZSgpIHsgcmV0dXJuIGhl
YXAuZXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZVNwYWNlOyB9CisgICAgQUxXQVlTX0lOTElORSBJ
c29TdWJzcGFjZSYgZnVuY3Rpb25TcGFjZSgpIHsgcmV0dXJuIGhlYXAuZnVuY3Rpb25TcGFjZTsg
fQorICAgIEFMV0FZU19JTkxJTkUgSXNvU3Vic3BhY2UmIGdldHRlclNldHRlclNwYWNlKCkgeyBy
ZXR1cm4gaGVhcC5nZXR0ZXJTZXR0ZXJTcGFjZTsgfQorICAgIEFMV0FZU19JTkxJTkUgSXNvU3Vi
c3BhY2UmIGdsb2JhbExleGljYWxFbnZpcm9ubWVudFNwYWNlKCkgeyByZXR1cm4gaGVhcC5nbG9i
YWxMZXhpY2FsRW52aXJvbm1lbnRTcGFjZTsgfQorICAgIEFMV0FZU19JTkxJTkUgSXNvU3Vic3Bh
Y2UmIGludGVybmFsRnVuY3Rpb25TcGFjZSgpIHsgcmV0dXJuIGhlYXAuaW50ZXJuYWxGdW5jdGlv
blNwYWNlOyB9CisgICAgQUxXQVlTX0lOTElORSBJc29TdWJzcGFjZSYganNQcm94eVNwYWNlKCkg
eyByZXR1cm4gaGVhcC5qc1Byb3h5U3BhY2U7IH0KKyAgICBBTFdBWVNfSU5MSU5FIElzb1N1YnNw
YWNlJiBuYXRpdmVFeGVjdXRhYmxlU3BhY2UoKSB7IHJldHVybiBoZWFwLm5hdGl2ZUV4ZWN1dGFi
bGVTcGFjZTsgfQorICAgIEFMV0FZU19JTkxJTkUgSXNvU3Vic3BhY2UmIG51bWJlck9iamVjdFNw
YWNlKCkgeyByZXR1cm4gaGVhcC5udW1iZXJPYmplY3RTcGFjZTsgfQorICAgIEFMV0FZU19JTkxJ
TkUgSXNvU3Vic3BhY2UmIHBsYWluT2JqZWN0U3BhY2UoKSB7IHJldHVybiBoZWFwLnBsYWluT2Jq
ZWN0U3BhY2U7IH0KKyAgICBBTFdBWVNfSU5MSU5FIElzb1N1YnNwYWNlJiBwcm9taXNlU3BhY2Uo
KSB7IHJldHVybiBoZWFwLnByb21pc2VTcGFjZTsgfQorICAgIEFMV0FZU19JTkxJTkUgSXNvU3Vi
c3BhY2UmIHByb3BlcnR5TmFtZUVudW1lcmF0b3JTcGFjZSgpIHsgcmV0dXJuIGhlYXAucHJvcGVy
dHlOYW1lRW51bWVyYXRvclNwYWNlOyB9CisgICAgQUxXQVlTX0lOTElORSBJc29TdWJzcGFjZSYg
cHJvcGVydHlUYWJsZVNwYWNlKCkgeyByZXR1cm4gaGVhcC5wcm9wZXJ0eVRhYmxlU3BhY2U7IH0K
KyAgICBBTFdBWVNfSU5MSU5FIElzb1N1YnNwYWNlJiByZWdFeHBTcGFjZSgpIHsgcmV0dXJuIGhl
YXAucmVnRXhwU3BhY2U7IH0KKyAgICBBTFdBWVNfSU5MSU5FIElzb1N1YnNwYWNlJiByZWdFeHBP
YmplY3RTcGFjZSgpIHsgcmV0dXJuIGhlYXAucmVnRXhwT2JqZWN0U3BhY2U7IH0KKyAgICBBTFdB
WVNfSU5MSU5FIElzb1N1YnNwYWNlJiByb3BlU3RyaW5nU3BhY2UoKSB7IHJldHVybiBoZWFwLnJv
cGVTdHJpbmdTcGFjZTsgfQorICAgIEFMV0FZU19JTkxJTkUgSXNvU3Vic3BhY2UmIHNjb3BlZEFy
Z3VtZW50c1NwYWNlKCkgeyByZXR1cm4gaGVhcC5zY29wZWRBcmd1bWVudHNTcGFjZTsgfQorICAg
IEFMV0FZU19JTkxJTkUgSXNvU3Vic3BhY2UmIHNwYXJzZUFycmF5VmFsdWVNYXBTcGFjZSgpIHsg
cmV0dXJuIGhlYXAuc3BhcnNlQXJyYXlWYWx1ZU1hcFNwYWNlOyB9CisgICAgQUxXQVlTX0lOTElO
RSBJc29TdWJzcGFjZSYgc3RyaW5nU3BhY2UoKSB7IHJldHVybiBoZWFwLnN0cmluZ1NwYWNlOyB9
CisgICAgQUxXQVlTX0lOTElORSBJc29TdWJzcGFjZSYgc3RyaW5nT2JqZWN0U3BhY2UoKSB7IHJl
dHVybiBoZWFwLnN0cmluZ09iamVjdFNwYWNlOyB9CisgICAgQUxXQVlTX0lOTElORSBJc29TdWJz
cGFjZSYgc3RydWN0dXJlQ2hhaW5TcGFjZSgpIHsgcmV0dXJuIGhlYXAuc3RydWN0dXJlQ2hhaW5T
cGFjZTsgfQorICAgIEFMV0FZU19JTkxJTkUgSXNvU3Vic3BhY2UmIHN0cnVjdHVyZVJhcmVEYXRh
U3BhY2UoKSB7IHJldHVybiBoZWFwLnN0cnVjdHVyZVJhcmVEYXRhU3BhY2U7IH0KKyAgICBBTFdB
WVNfSU5MSU5FIElzb1N1YnNwYWNlJiBzdHJ1Y3R1cmVTcGFjZSgpIHsgcmV0dXJuIGhlYXAuc3Ry
dWN0dXJlU3BhY2U7IH0KKyAgICBBTFdBWVNfSU5MSU5FIElzb1N1YnNwYWNlJiBicmFuZGVkU3Ry
dWN0dXJlU3BhY2UoKSB7IHJldHVybiBoZWFwLmJyYW5kZWRTdHJ1Y3R1cmVTcGFjZTsgfQorICAg
IEFMV0FZU19JTkxJTkUgSXNvU3Vic3BhY2UmIHN5bWJvbFRhYmxlU3BhY2UoKSB7IHJldHVybiBo
ZWFwLnN5bWJvbFRhYmxlU3BhY2U7IH0KIAogI2RlZmluZSBEWU5BTUlDX0lTT19TVUJTUEFDRV9E
RUZJTkVfTUVNQkVSKG5hbWUpIFwKICAgICB0ZW1wbGF0ZTxTdWJzcGFjZUFjY2VzcyBtb2RlPiBc
Ci0gICAgSXNvU3Vic3BhY2UqIG5hbWUoKSBcCi0gICAgeyBcCi0gICAgICAgIGlmIChtXyMjbmFt
ZSB8fCBtb2RlID09IFN1YnNwYWNlQWNjZXNzOjpDb25jdXJyZW50bHkpIFwKLSAgICAgICAgICAg
IHJldHVybiBtXyMjbmFtZS5nZXQoKTsgXAotICAgICAgICByZXR1cm4gbmFtZSMjU2xvdygpOyBc
Ci0gICAgfSBcCi0gICAgSlNfRVhQT1JUX1BSSVZBVEUgSXNvU3Vic3BhY2UqIG5hbWUjI1Nsb3co
KTsgXAotICAgIHN0ZDo6dW5pcXVlX3B0cjxJc29TdWJzcGFjZT4gbV8jI25hbWU7Ci0KKyAgICBB
TFdBWVNfSU5MSU5FIElzb1N1YnNwYWNlKiBuYW1lKCkgeyByZXR1cm4gaGVhcC5uYW1lPG1vZGU+
KCk7IH0KIAogI2lmIEpTQ19PQkpDX0FQSV9FTkFCTEVECiAgICAgRFlOQU1JQ19JU09fU1VCU1BB
Q0VfREVGSU5FX01FTUJFUihhcGlXcmFwcGVyT2JqZWN0U3BhY2UpCkBAIC02NTcsNzQgKzU2Mywy
MyBAQCBwdWJsaWM6CiAjZW5kaWYKIAogI3VuZGVmIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklO
RV9NRU1CRVIKLSAgICAKLSAgICBJc29DZWxsU2V0IGV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2Vz
V2l0aENvbnN0cmFpbnRzOwotICAgIElzb0NlbGxTZXQgZXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRn
ZXNXaXRoRmluYWxpemVyczsKKworICAgIEFMV0FZU19JTkxJTkUgSXNvQ2VsbFNldCYgZXhlY3V0
YWJsZVRvQ29kZUJsb2NrRWRnZXNXaXRoQ29uc3RyYWludHMoKSB7IHJldHVybiBoZWFwLmV4ZWN1
dGFibGVUb0NvZGVCbG9ja0VkZ2VzV2l0aENvbnN0cmFpbnRzOyB9CisgICAgQUxXQVlTX0lOTElO
RSBJc29DZWxsU2V0JiBleGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlc1dpdGhGaW5hbGl6ZXJzKCkg
eyByZXR1cm4gaGVhcC5leGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlc1dpdGhGaW5hbGl6ZXJzOyB9
CiAKICNkZWZpbmUgRFlOQU1JQ19TUEFDRV9BTkRfU0VUX0RFRklORV9NRU1CRVIobmFtZSkgXAog
ICAgIHRlbXBsYXRlPFN1YnNwYWNlQWNjZXNzIG1vZGU+IFwKLSAgICBJc29TdWJzcGFjZSogbmFt
ZSgpIFwKLSAgICB7IFwKLSAgICAgICAgaWYgKGF1dG8qIHNwYWNlQW5kU2V0ID0gbV8jI25hbWUu
Z2V0KCkpIFwKLSAgICAgICAgICAgIHJldHVybiAmc3BhY2VBbmRTZXQtPnNwYWNlOyBcCi0gICAg
ICAgIGlmIChtb2RlID09IFN1YnNwYWNlQWNjZXNzOjpDb25jdXJyZW50bHkpIFwKLSAgICAgICAg
ICAgIHJldHVybiBudWxscHRyOyBcCi0gICAgICAgIHJldHVybiBuYW1lIyNTbG93KCk7IFwKLSAg
ICB9IFwKLSAgICBJc29TdWJzcGFjZSogbmFtZSMjU2xvdygpOyBcCi0gICAgc3RkOjp1bmlxdWVf
cHRyPFNwYWNlQW5kU2V0PiBtXyMjbmFtZTsKLSAgICAKLSAgICBzdHJ1Y3QgU3BhY2VBbmRTZXQg
ewotICAgICAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7CisgICAgQUxXQVlTX0lO
TElORSBJc29TdWJzcGFjZSogbmFtZSgpIHsgcmV0dXJuIGhlYXAubmFtZTxtb2RlPigpOyB9CiAK
LSAgICAgICAgSXNvU3Vic3BhY2Ugc3BhY2U7Ci0gICAgICAgIElzb0NlbGxTZXQgc2V0OwotICAg
ICAgICAKLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gQXJndW1lbnRzPgotICAgICAgICBT
cGFjZUFuZFNldChBcmd1bWVudHMmJi4uLiBhcmd1bWVudHMpCi0gICAgICAgICAgICA6IHNwYWNl
KHN0ZDo6Zm9yd2FyZDxBcmd1bWVudHM+KGFyZ3VtZW50cykuLi4pCi0gICAgICAgICAgICAsIHNl
dChzcGFjZSkKLSAgICAgICAgewotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBzdGF0aWMg
SXNvQ2VsbFNldCYgc2V0Rm9yKFN1YnNwYWNlJiBzcGFjZSkKLSAgICAgICAgewotICAgICAgICAg
ICAgcmV0dXJuICpiaXR3aXNlX2Nhc3Q8SXNvQ2VsbFNldCo+KAotICAgICAgICAgICAgICAgIGJp
dHdpc2VfY2FzdDxjaGFyKj4oJnNwYWNlKSAtCi0gICAgICAgICAgICAgICAgT0JKRUNUX09GRlNF
VE9GKFNwYWNlQW5kU2V0LCBzcGFjZSkgKwotICAgICAgICAgICAgICAgIE9CSkVDVF9PRkZTRVRP
RihTcGFjZUFuZFNldCwgc2V0KSk7Ci0gICAgICAgIH0KLSAgICB9OwotICAgIAotICAgIFNwYWNl
QW5kU2V0IGNvZGVCbG9ja1NwYWNlOwotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuYz4KLSAg
ICB2b2lkIGZvckVhY2hDb2RlQmxvY2tTcGFjZShjb25zdCBGdW5jJiBmdW5jKQotICAgIHsKLSAg
ICAgICAgLy8gVGhpcyBzaG91bGQgbm90IGluY2x1ZGUgd2ViQXNzZW1ibHlDb2RlQmxvY2tTcGFj
ZSBiZWNhdXNlIHRoaXMgaXMgYWJvdXQgc3Vic2NsYXNzZXMgb2YKLSAgICAgICAgLy8gSlNDOjpD
b2RlQmxvY2suCi0gICAgICAgIGZ1bmMoY29kZUJsb2NrU3BhY2UpOwotICAgIH0KKyAgICB1c2lu
ZyBTcGFjZUFuZFNldCA9IEhlYXA6OlNwYWNlQW5kU2V0OworICAgIEFMV0FZU19JTkxJTkUgU3Bh
Y2VBbmRTZXQmIGNvZGVCbG9ja1NwYWNlKCkgeyByZXR1cm4gaGVhcC5jb2RlQmxvY2tTcGFjZTsg
fQogCiAgICAgRFlOQU1JQ19TUEFDRV9BTkRfU0VUX0RFRklORV9NRU1CRVIoZXZhbEV4ZWN1dGFi
bGVTcGFjZSkKICAgICBEWU5BTUlDX1NQQUNFX0FORF9TRVRfREVGSU5FX01FTUJFUihtb2R1bGVQ
cm9ncmFtRXhlY3V0YWJsZVNwYWNlKQotICAgIFNwYWNlQW5kU2V0IGZ1bmN0aW9uRXhlY3V0YWJs
ZVNwYWNlOwotICAgIFNwYWNlQW5kU2V0IHByb2dyYW1FeGVjdXRhYmxlU3BhY2U7Ci0KLSAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jPgotICAgIHZvaWQgZm9yRWFjaFNjcmlwdEV4ZWN1dGFibGVT
cGFjZShjb25zdCBGdW5jJiBmdW5jKQotICAgIHsKLSAgICAgICAgaWYgKG1fZXZhbEV4ZWN1dGFi
bGVTcGFjZSkKLSAgICAgICAgICAgIGZ1bmMoKm1fZXZhbEV4ZWN1dGFibGVTcGFjZSk7Ci0gICAg
ICAgIGZ1bmMoZnVuY3Rpb25FeGVjdXRhYmxlU3BhY2UpOwotICAgICAgICBpZiAobV9tb2R1bGVQ
cm9ncmFtRXhlY3V0YWJsZVNwYWNlKQotICAgICAgICAgICAgZnVuYygqbV9tb2R1bGVQcm9ncmFt
RXhlY3V0YWJsZVNwYWNlKTsKLSAgICAgICAgZnVuYyhwcm9ncmFtRXhlY3V0YWJsZVNwYWNlKTsK
LSAgICB9Ci0KLSAgICBTcGFjZUFuZFNldCB1bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZVNwYWNl
OwogCi0jdW5kZWYgRFlOQU1JQ19TUEFDRV9BTkRfU0VUX0RFRklORV9NRU1CRVIKKyAgICBBTFdB
WVNfSU5MSU5FIFNwYWNlQW5kU2V0JiBmdW5jdGlvbkV4ZWN1dGFibGVTcGFjZSgpIHsgcmV0dXJu
IGhlYXAuZnVuY3Rpb25FeGVjdXRhYmxlU3BhY2U7IH0KKyAgICBBTFdBWVNfSU5MSU5FIFNwYWNl
QW5kU2V0JiBwcm9ncmFtRXhlY3V0YWJsZVNwYWNlKCkgeyByZXR1cm4gaGVhcC5wcm9ncmFtRXhl
Y3V0YWJsZVNwYWNlOyB9CisgICAgQUxXQVlTX0lOTElORSBTcGFjZUFuZFNldCYgdW5saW5rZWRG
dW5jdGlvbkV4ZWN1dGFibGVTcGFjZSgpIHsgcmV0dXJuIGhlYXAudW5saW5rZWRGdW5jdGlvbkV4
ZWN1dGFibGVTcGFjZTsgfQogCiAgICAgVk1UeXBlIHZtVHlwZTsKICAgICBDbGllbnREYXRhKiBj
bGllbnREYXRhOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha01hcFBy
b3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dl
YWtNYXBQcm90b3R5cGUuaAkocmV2aXNpb24gMjg2MDI0KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvV2Vha01hcFByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00MSw3ICs0
MSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2
bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKFdl
YWtNYXBQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3Bh
Y2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAg
IHN0YXRpYyBXZWFrTWFwUHJvdG90eXBlKiBjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1dlYWtPYmplY3RSZWZQcm90b3R5cGUuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFrT2JqZWN0UmVmUHJvdG90eXBlLmgJKHJl
dmlzaW9uIDI4NjAyNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dlYWtPYmpl
Y3RSZWZQcm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzcsNyArMzcsNyBAQCBwdWJsaWM6
CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewogICAg
ICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShXZWFrT2JqZWN0UmVmUHJv
dG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAg
ICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMg
V2Vha09iamVjdFJlZlByb3RvdHlwZSogY3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9XZWFrU2V0UHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha1NldFByb3RvdHlwZS5oCShyZXZpc2lvbiAyODYwMjQp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFrU2V0UHJvdG90eXBlLmgJKHdv
cmtpbmcgY29weSkKQEAgLTQxLDcgKzQxLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJc29TdWJz
cGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9J
U09fU1VCU1BBQ0VfU0hBUkFCTEUoV2Vha1NldFByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJl
dHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVj
dFNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIFdlYWtTZXRQcm90b3R5cGUqIGNyZWF0ZShW
TSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJl
KQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0pTRG9sbGFyVk0uY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxhclZNLmNwcAkocmV2
aXNpb24gMjg2MDI0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0pTRG9sbGFyVk0u
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzMsNyArMTMzLDcgQEAgcHVibGljOgogICAgIHRlbXBs
YXRlPHR5cGVuYW1lIENlbGxUeXBlLCBTdWJzcGFjZUFjY2Vzcz4KICAgICBzdGF0aWMgQ29tcGxl
dGVTdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKLSAgICAgICAgcmV0dXJuICZ2
bS5jZWxsU3BhY2U7CisgICAgICAgIHJldHVybiAmdm0uY2VsbFNwYWNlKCk7CiAgICAgfQogCiAg
ICAgSlNEb2xsYXJWTUNhbGxGcmFtZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQpAQCAt
MjIzLDcgKzIyMyw3IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwg
U3Vic3BhY2VBY2Nlc3M+CiAgICAgc3RhdGljIENvbXBsZXRlU3Vic3BhY2UqIHN1YnNwYWNlRm9y
KFZNJiB2bSkKICAgICB7Ci0gICAgICAgIHJldHVybiAmdm0uY2VsbFNwYWNlOworICAgICAgICBy
ZXR1cm4gJnZtLmNlbGxTcGFjZSgpOwogICAgIH0KIAogICAgIFJvb3QqIHJvb3QoKSBjb25zdCB7
IHJldHVybiBtX3Jvb3QuZ2V0KCk7IH0KQEAgLTI4Nyw3ICsyODcsNyBAQCBwdWJsaWM6CiAgICAg
dGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNzPgogICAgIHN0YXRpYyBD
b21wbGV0ZVN1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewotICAgICAgICByZXR1
cm4gJnZtLmRlc3RydWN0aWJsZU9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLmRlc3Ry
dWN0aWJsZU9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAgUm9vdChWTSYgdm0sIFN0cnVjdHVy
ZSogc3RydWN0dXJlKQpAQCAtMzU0LDcgKzM1NCw3IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBDZWxsVHlwZSwgU3Vic3BhY2VBY2Nlc3M+CiAgICAgc3RhdGljIENvbXBsZXRlU3Vi
c3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7Ci0gICAgICAgIHJldHVybiAmdm0uY2Vs
bFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLmNlbGxTcGFjZSgpOwogICAgIH0KIAogICAgIHN0
YXRpYyBTaW1wbGVPYmplY3QqIGNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QpCkBAIC00MjYsNyArNDI2LDcgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1l
IENlbGxUeXBlLCBTdWJzcGFjZUFjY2Vzcz4KICAgICBzdGF0aWMgQ29tcGxldGVTdWJzcGFjZSog
c3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKLSAgICAgICAgcmV0dXJuICZ2bS5jZWxsU3BhY2U7
CisgICAgICAgIHJldHVybiAmdm0uY2VsbFNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIFN0
cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCkBAIC01MDgsNyArNTA4LDcgQEAgcHVibGljOgogICAg
IHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlLCBTdWJzcGFjZUFjY2Vzcz4KICAgICBzdGF0aWMg
Q29tcGxldGVTdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKLSAgICAgICAgcmV0
dXJuICZ2bS5jZWxsU3BhY2U7CisgICAgICAgIHJldHVybiAmdm0uY2VsbFNwYWNlKCk7CiAgICAg
fQogCiAgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCkBAIC01OTAsNyArNTkw
LDcgQEAgSUdOT1JFX1dBUk5JTkdTX0VORAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBl
LCBTdWJzcGFjZUFjY2Vzcz4KICAgICBzdGF0aWMgQ29tcGxldGVTdWJzcGFjZSogc3Vic3BhY2VG
b3IoVk0mIHZtKQogICAgIHsKLSAgICAgICAgcmV0dXJuICZ2bS5jZWxsU3BhY2U7CisgICAgICAg
IHJldHVybiAmdm0uY2VsbFNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIFJ1bnRpbWVBcnJh
eSogY3JlYXRlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZy
YW1lKQpAQCAtNzcyLDcgKzc3Miw3IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBD
ZWxsVHlwZSwgU3Vic3BhY2VBY2Nlc3M+CiAgICAgc3RhdGljIENvbXBsZXRlU3Vic3BhY2UqIHN1
YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7Ci0gICAgICAgIHJldHVybiAmdm0uY2VsbFNwYWNlOwor
ICAgICAgICByZXR1cm4gJnZtLmNlbGxTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBTdHJ1
Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEpTVmFsdWUgcHJvdG90eXBlKQpAQCAtODcyLDcgKzg3Miw3IEBAIHB1YmxpYzoKICAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vic3BhY2VBY2Nlc3M+CiAgICAgc3RhdGljIENv
bXBsZXRlU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7Ci0gICAgICAgIHJldHVy
biAmdm0uY2VsbFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLmNlbGxTcGFjZSgpOwogICAgIH0K
IAogICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQpAQCAtODk3LDcgKzg5Nyw3
IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vic3BhY2VBY2Nl
c3M+CiAgICAgc3RhdGljIENvbXBsZXRlU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAg
ICB7Ci0gICAgICAgIHJldHVybiAmdm0uY2VsbFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLmNl
bGxTcGFjZSgpOwogICAgIH0KIAogICAgIE9iamVjdERvaW5nU2lkZUVmZmVjdFB1dFdpdGhvdXRD
b3JyZWN0U2xvdFN0YXR1cyhWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQpAQCAtOTQ4LDcg
Kzk0OCw3IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vic3Bh
Y2VBY2Nlc3M+CiAgICAgc3RhdGljIENvbXBsZXRlU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2
bSkKICAgICB7Ci0gICAgICAgIHJldHVybiAmdm0uY2VsbFNwYWNlOworICAgICAgICByZXR1cm4g
JnZtLmNlbGxTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0
cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJv
dG90eXBlKQpAQCAtMTU4NSw3ICsxNTg1LDcgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVu
YW1lIENlbGxUeXBlLCBTdWJzcGFjZUFjY2Vzcz4KICAgICBzdGF0aWMgQ29tcGxldGVTdWJzcGFj
ZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKLSAgICAgICAgcmV0dXJuICZ2bS5jZWxsU3Bh
Y2U7CisgICAgICAgIHJldHVybiAmdm0uY2VsbFNwYWNlKCk7CiAgICAgfQogCiAgICAgSlNUZXN0
Q3VzdG9tR2V0dGVyU2V0dGVyKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCkBAIC0xODM4
LDcgKzE4MzgsNyBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUsIFN1
YnNwYWNlQWNjZXNzPgogICAgIHN0YXRpYyBDb21wbGV0ZVN1YnNwYWNlKiBzdWJzcGFjZUZvcihW
TSYgdm0pCiAgICAgewotICAgICAgICByZXR1cm4gJnZtLmRlc3RydWN0aWJsZU9iamVjdFNwYWNl
OworICAgICAgICByZXR1cm4gJnZtLmRlc3RydWN0aWJsZU9iamVjdFNwYWNlKCk7CiAgICAgfQog
CiAgICAgY2xhc3MgQ2xpZW50IGZpbmFsIDogcHVibGljIFdhc206OlN0cmVhbWluZ1BhcnNlckNs
aWVudCB7CkBAIC0xOTMzLDcgKzE5MzMsNyBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5h
bWUgQ2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNzPgogICAgIHN0YXRpYyBDb21wbGV0ZVN1YnNwYWNl
KiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewotICAgICAgICByZXR1cm4gJnZtLmRlc3RydWN0
aWJsZU9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLmRlc3RydWN0aWJsZU9iamVjdFNw
YWNlKCk7CiAgICAgfQogCiAgICAgV2FzbVN0cmVhbWluZ0NvbXBpbGVyKFZNJiB2bSwgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUsIFdhc206OkNvbXBpbGVyTW9kZSBjb21waWxlck1vZGUsIEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTUHJvbWlzZSogcHJvbWlzZSwgSlNPYmplY3QqIGltcG9y
dE9iamVjdCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxhclZNLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0pTRG9sbGFyVk0uaAko
cmV2aXNpb24gMjg2MDI0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0pTRG9sbGFy
Vk0uaAkod29ya2luZyBjb3B5KQpAQCAtNDIsNyArNDIsNyBAQCBwdWJsaWM6CiAgICAgdGVtcGxh
dGU8dHlwZW5hbWUgQ2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNzPgogICAgIHN0YXRpYyBDb21wbGV0
ZVN1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewotICAgICAgICByZXR1cm4gJnZt
LmNlbGxTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5jZWxsU3BhY2UoKTsKICAgICB9CiAgICAg
CiAgICAgREVDTEFSRV9FWFBPUlRfSU5GTzsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL2pzL0pTV2ViQXNzZW1ibHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5LmgJKHJldmlzaW9uIDI4NjAyNCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHkuaAkod29ya2luZyBjb3B5KQpAQCAt
MSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAxOSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAyMSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAg
LTQxLDcgKzQxLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VG
b3IoVk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hB
UkFCTEUoSlNXZWJBc3NlbWJseSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmpl
Y3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQog
CiAgICAgc3RhdGljIEpTV2ViQXNzZW1ibHkqIGNyZWF0ZShWTSYsIEpTR2xvYmFsT2JqZWN0Kiwg
U3RydWN0dXJlKik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3Nl
bWJseUNvbXBpbGVFcnJvclByb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5Q29tcGlsZUVycm9yUHJvdG90eXBlLmgJKHJldmlz
aW9uIDI4NjAyNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5
Q29tcGlsZUVycm9yUHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAv
KgotICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00MSw3ICs0MSw3IEBA
IHB1YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAg
ICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKFdlYkFzc2Vt
Ymx5Q29tcGlsZUVycm9yUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFp
bk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAg
ICB9CiAKICAgICBzdGF0aWMgV2ViQXNzZW1ibHlDb21waWxlRXJyb3JQcm90b3R5cGUqIGNyZWF0
ZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKik7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUV4Y2VwdGlvblByb3RvdHlwZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5RXhjZXB0aW9u
UHJvdG90eXBlLmgJKHJldmlzaW9uIDI4NjAyNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL2pzL1dlYkFzc2VtYmx5RXhjZXB0aW9uUHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAg
LTQxLDcgKzQxLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VG
b3IoVk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hB
UkFCTEUoV2ViQXNzZW1ibHlFeGNlcHRpb25Qcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1
cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RT
cGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBXZWJBc3NlbWJseUV4Y2VwdGlvblByb3RvdHlw
ZSogY3JlYXRlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqKTsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5R2xvYmFsUHJvdG90eXBlLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlHbG9i
YWxQcm90b3R5cGUuaAkocmV2aXNpb24gMjg2MDI0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vanMvV2ViQXNzZW1ibHlHbG9iYWxQcm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAt
MSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE5LTIwMjEgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00MCw3
ICs0MCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZN
JiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxF
KFdlYkFzc2VtYmx5R2xvYmFsUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5w
bGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsK
ICAgICB9CiAKICAgICBzdGF0aWMgV2ViQXNzZW1ibHlHbG9iYWxQcm90b3R5cGUqIGNyZWF0ZShW
TSYsIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUluc3RhbmNlUHJvdG90eXBlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlJbnN0YW5jZVByb3Rv
dHlwZS5oCShyZXZpc2lvbiAyODYwMjQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9q
cy9XZWJBc3NlbWJseUluc3RhbmNlUHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSAr
MSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMjEgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00MSw3
ICs0MSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZN
JiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxF
KFdlYkFzc2VtYmx5SW5zdGFuY2VQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZt
LnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgp
OwogICAgIH0KIAogICAgIHN0YXRpYyBXZWJBc3NlbWJseUluc3RhbmNlUHJvdG90eXBlKiBjcmVh
dGUoVk0mLCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSopOwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlMaW5rRXJyb3JQcm90b3R5cGUuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUxpbmtFcnJv
clByb3RvdHlwZS5oCShyZXZpc2lvbiAyODYwMjQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9qcy9XZWJBc3NlbWJseUxpbmtFcnJvclByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNi0yMDE5IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNi0yMDIxIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpA
QCAtNDEsNyArNDEsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFj
ZUZvcihWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9T
SEFSQUJMRShXZWJBc3NlbWJseUxpbmtFcnJvclByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJl
dHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVj
dFNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIFdlYkFzc2VtYmx5TGlua0Vycm9yUHJvdG90
eXBlKiBjcmVhdGUoVk0mLCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSopOwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlNZW1vcnlQcm90b3R5cGUuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseU1l
bW9yeVByb3RvdHlwZS5oCShyZXZpc2lvbiAyODYwMjQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9qcy9XZWJBc3NlbWJseU1lbW9yeVByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNi0yMDE5IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNi0yMDIxIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpA
QCAtNDEsNyArNDEsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFj
ZUZvcihWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9T
SEFSQUJMRShXZWJBc3NlbWJseU1lbW9yeVByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVy
biAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNw
YWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIFdlYkFzc2VtYmx5TWVtb3J5UHJvdG90eXBlKiBj
cmVhdGUoVk0mLCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSopOwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlNb2R1bGVQcm90b3R5cGUuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseU1vZHVsZVBy
b3RvdHlwZS5oCShyZXZpc2lvbiAyODYwMjQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9qcy9XZWJBc3NlbWJseU1vZHVsZVByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNi0yMDE5IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNi0yMDIxIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDEs
NyArNDEsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihW
TSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJM
RShXZWJBc3NlbWJseU1vZHVsZVByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0u
cGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7
CiAgICAgfQogCiAgICAgc3RhdGljIFdlYkFzc2VtYmx5TW9kdWxlUHJvdG90eXBlKiBjcmVhdGUo
Vk0mLCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSopOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlSdW50aW1lRXJyb3JQcm90b3R5cGUuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseVJ1bnRpbWVF
cnJvclByb3RvdHlwZS5oCShyZXZpc2lvbiAyODYwMjQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9qcy9XZWJBc3NlbWJseVJ1bnRpbWVFcnJvclByb3RvdHlwZS5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNi0yMDE5IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNi0yMDIxIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwpAQCAtNDEsNyArNDEsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBz
dWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJT
UEFDRV9TSEFSQUJMRShXZWJBc3NlbWJseVJ1bnRpbWVFcnJvclByb3RvdHlwZSwgQmFzZSk7Ci0g
ICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5w
bGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIFdlYkFzc2VtYmx5UnVudGlt
ZUVycm9yUHJvdG90eXBlKiBjcmVhdGUoVk0mLCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSop
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlUYWJsZVBy
b3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dl
YkFzc2VtYmx5VGFibGVQcm90b3R5cGUuaAkocmV2aXNpb24gMjg2MDI0KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlUYWJsZVByb3RvdHlwZS5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNi0yMDE5IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNi0yMDIx
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtNDEsNyArNDEsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIElzb1N1YnNwYWNl
KiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19T
VUJTUEFDRV9TSEFSQUJMRShXZWJBc3NlbWJseVRhYmxlUHJvdG90eXBlLCBCYXNlKTsKLSAgICAg
ICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWlu
T2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgV2ViQXNzZW1ibHlUYWJsZVByb3Rv
dHlwZSogY3JlYXRlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqKTsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5VGFnUHJvdG90eXBlLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlUYWdQ
cm90b3R5cGUuaAkocmV2aXNpb24gMjg2MDI0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vanMvV2ViQXNzZW1ibHlUYWdQcm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtNDAsNyAr
NDAsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYg
dm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShX
ZWJBc3NlbWJseVRhZ1Byb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5P
YmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAg
fQogCiAgICAgc3RhdGljIFdlYkFzc2VtYmx5VGFnUHJvdG90eXBlKiBjcmVhdGUoVk0mLCBKU0ds
b2JhbE9iamVjdCosIFN0cnVjdHVyZSopOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNET01Bc3luY0l0ZXJhdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNET01Bc3luY0l0ZXJhdG9yLmgJKHJldmlzaW9uIDI4NjAyNCkKKysrIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQXN5bmNJdGVyYXRvci5oCSh3b3JraW5nIGNvcHkp
CkBAIC00OCw3ICs0OCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSog
c3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lT
T19TVUJTUEFDRV9TSEFSQUJMRShKU0RPTUFzeW5jSXRlcmF0b3JQcm90b3R5cGUsIEJhc2UpOwot
ICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0u
cGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBKU0RPTUFzeW5jSXRlcmF0
b3JQcm90b3R5cGUqIGNyZWF0ZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlKQpJbmRleDogU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNET01JdGVyYXRvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTRE9NSXRlcmF0b3IuaAkocmV2aXNpb24gMjg2MDI0KQorKysgU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01JdGVyYXRvci5oCSh3b3JraW5nIGNvcHkpCkBA
IC01NSw3ICs1NSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vi
c3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19T
VUJTUEFDRV9TSEFSQUJMRShKU0RPTUl0ZXJhdG9yUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAg
cmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2Jq
ZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgSlNET01JdGVyYXRvclByb3RvdHlwZSog
Y3JlYXRlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpT
Qzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0ZpbGVTeXN0ZW1EaXJlY3RvcnlIYW5kbGVJdGVyYXRvci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNGaWxlU3lzdGVtRGlyZWN0b3J5SGFuZGxlSXRl
cmF0b3IuY3BwCShyZXZpc2lvbiAyODYwMjQpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0ZpbGVTeXN0ZW1EaXJlY3RvcnlIYW5kbGVJdGVyYXRvci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTU1LDkgKzU1LDkgQEAgSXNvU3Vic3BhY2UqIEpTRmlsZVN5c3RlbURpcmVjdG9yeUhhbmRs
ZQogICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vf
b2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU0ZpbGVTeXN0ZW1EaXJlY3RvcnlIYW5k
bGVJdGVyYXRvcj4gfHwgIUpTRmlsZVN5c3RlbURpcmVjdG9yeUhhbmRsZUl0ZXJhdG9yOjpuZWVk
c0Rlc3RydWN0aW9uKTsKICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6
SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTRmlsZVN5c3RlbURpcmVjdG9yeUhhbmRsZUl0ZXJhdG9y
PikKLSAgICAgICAgY2xpZW50RGF0YS5zZXRGaWxlU3lzdGVtRGlyZWN0b3J5SGFuZGxlSXRlcmF0
b3JTcGFjZShtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFw
LCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTRmlsZVN5c3RlbURp
cmVjdG9yeUhhbmRsZUl0ZXJhdG9yKSk7CisgICAgICAgIGNsaWVudERhdGEuc2V0RmlsZVN5c3Rl
bURpcmVjdG9yeUhhbmRsZUl0ZXJhdG9yU3BhY2UobWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNP
X1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBl
KCksIEpTRmlsZVN5c3RlbURpcmVjdG9yeUhhbmRsZUl0ZXJhdG9yKSk7CiAgICAgZWxzZQotICAg
ICAgICBjbGllbnREYXRhLnNldEZpbGVTeXN0ZW1EaXJlY3RvcnlIYW5kbGVJdGVyYXRvclNwYWNl
KG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNl
bGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTRmlsZVN5c3RlbURpcmVjdG9yeUhhbmRsZUl0ZXJhdG9y
KSk7CisgICAgICAgIGNsaWVudERhdGEuc2V0RmlsZVN5c3RlbURpcmVjdG9yeUhhbmRsZUl0ZXJh
dG9yU3BhY2UobWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVh
cCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU0ZpbGVTeXN0ZW1EaXJlY3RvcnlIYW5kbGVJdGVy
YXRvcikpOwogICAgIGF1dG8qIHNwYWNlID0gY2xpZW50RGF0YS5maWxlU3lzdGVtRGlyZWN0b3J5
SGFuZGxlSXRlcmF0b3JTcGFjZSgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJs
ZS1jb2RlIikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJ
bmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV2ViQ29yZUpTQ2xpZW50RGF0YS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV2ViQ29yZUpTQ2xpZW50
RGF0YS5jcHAJKHJldmlzaW9uIDI4NjAyNCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L1dlYkNvcmVKU0NsaWVudERhdGEuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAog
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxNy0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNy0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNzcsMTUgKzc3LDE1
IEBAIEpTVk1DbGllbnREYXRhOjpKU1ZNQ2xpZW50RGF0YShWTSYgdm0pCiAgICAgLCBtX2hlYXBD
ZWxsVHlwZUZvckpTQXVkaW9Xb3JrbGV0R2xvYmFsU2NvcGUoSlNDOjpJc29IZWFwQ2VsbFR5cGU6
OmNyZWF0ZTxKU0F1ZGlvV29ya2xldEdsb2JhbFNjb3BlPigpKQogI2VuZGlmCiAgICAgLCBtX2hl
YXBDZWxsVHlwZUZvckpTSURCU2VyaWFsaXphdGlvbkdsb2JhbE9iamVjdChKU0M6Oklzb0hlYXBD
ZWxsVHlwZTo6Y3JlYXRlPEpTSURCU2VyaWFsaXphdGlvbkdsb2JhbE9iamVjdD4oKSkKLSAgICAs
IG1fZG9tQnVpbHRpbkNvbnN0cnVjdG9yU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwg
dm0uY2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNET01CdWlsdGluQ29uc3RydWN0b3JCYXNlKQot
ICAgICwgbV9kb21Db25zdHJ1Y3RvclNwYWNlIElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZt
LmNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTRE9NQ29uc3RydWN0b3JCYXNlKQotICAgICwgbV9k
b21OYW1lc3BhY2VPYmplY3RTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxs
SGVhcENlbGxUeXBlLmdldCgpLCBKU0RPTU9iamVjdCkKLSAgICAsIG1fZG9tV2luZG93UHJvcGVy
dGllc1NwYWNlIElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUu
Z2V0KCksIEpTRE9NV2luZG93UHJvcGVydGllcykKLSAgICAsIG1fcnVudGltZUFycmF5U3BhY2Ug
SVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgbV9ydW50aW1lQXJyYXlIZWFwQ2VsbFR5cGUuZ2V0
KCksIFJ1bnRpbWVBcnJheSkKLSAgICAsIG1fcnVudGltZU1ldGhvZFNwYWNlIElTT19TVUJTUEFD
RV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIFJ1bnRpbWVNZXRob2Qp
IC8vIEhhc2g6MHhmNzBjNGE4NQotICAgICwgbV9ydW50aW1lT2JqZWN0U3BhY2UgSVNPX1NVQlNQ
QUNFX0lOSVQodm0uaGVhcCwgbV9ydW50aW1lT2JqZWN0SGVhcENlbGxUeXBlLmdldCgpLCBKU0M6
OkJpbmRpbmdzOjpSdW50aW1lT2JqZWN0KQotICAgICwgbV93aW5kb3dQcm94eVNwYWNlIElTT19T
VUJTUEFDRV9JTklUKHZtLmhlYXAsIG1fd2luZG93UHJveHlIZWFwQ2VsbFR5cGUuZ2V0KCksIEpT
V2luZG93UHJveHkpCi0gICAgLCBtX2lkYlNlcmlhbGl6YXRpb25TcGFjZSBJU09fU1VCU1BBQ0Vf
SU5JVCh2bS5oZWFwLCBtX2hlYXBDZWxsVHlwZUZvckpTSURCU2VyaWFsaXphdGlvbkdsb2JhbE9i
amVjdC5nZXQoKSwgSlNJREJTZXJpYWxpemF0aW9uR2xvYmFsT2JqZWN0KQorICAgICwgbV9kb21C
dWlsdGluQ29uc3RydWN0b3JTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxs
SGVhcENlbGxUeXBlKCksIEpTRE9NQnVpbHRpbkNvbnN0cnVjdG9yQmFzZSkKKyAgICAsIG1fZG9t
Q29uc3RydWN0b3JTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENl
bGxUeXBlKCksIEpTRE9NQ29uc3RydWN0b3JCYXNlKQorICAgICwgbV9kb21OYW1lc3BhY2VPYmpl
Y3RTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCks
IEpTRE9NT2JqZWN0KQorICAgICwgbV9kb21XaW5kb3dQcm9wZXJ0aWVzU3BhY2UgSVNPX1NVQlNQ
QUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU0RPTVdpbmRvd1Byb3Bl
cnRpZXMpCisgICAgLCBtX3J1bnRpbWVBcnJheVNwYWNlIElTT19TVUJTUEFDRV9JTklUKHZtLmhl
YXAsICptX3J1bnRpbWVBcnJheUhlYXBDZWxsVHlwZSwgUnVudGltZUFycmF5KQorICAgICwgbV9y
dW50aW1lTWV0aG9kU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBD
ZWxsVHlwZSgpLCBSdW50aW1lTWV0aG9kKSAvLyBIYXNoOjB4ZjcwYzRhODUKKyAgICAsIG1fcnVu
dGltZU9iamVjdFNwYWNlIElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICptX3J1bnRpbWVPYmpl
Y3RIZWFwQ2VsbFR5cGUsIEpTQzo6QmluZGluZ3M6OlJ1bnRpbWVPYmplY3QpCisgICAgLCBtX3dp
bmRvd1Byb3h5U3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKm1fd2luZG93UHJveHlI
ZWFwQ2VsbFR5cGUsIEpTV2luZG93UHJveHkpCisgICAgLCBtX2lkYlNlcmlhbGl6YXRpb25TcGFj
ZSBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqbV9oZWFwQ2VsbFR5cGVGb3JKU0lEQlNlcmlh
bGl6YXRpb25HbG9iYWxPYmplY3QsIEpTSURCU2VyaWFsaXphdGlvbkdsb2JhbE9iamVjdCkKICAg
ICAsIG1fc3Vic3BhY2VzKG1ha2VVbmlxdWU8RE9NSXNvU3Vic3BhY2VzPigpKQogewogfQpJbmRl
eDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9y
SlMucG0JKHJldmlzaW9uIDI4NjAyNCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvQ29kZUdlbmVyYXRvckpTLnBtCSh3b3JraW5nIGNvcHkpCkBAIC00ODUyLDEzICs0ODUyLDEz
IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgcHVzaChAaW1wbENvbnRlbnQsICIg
ICAgaWYgKGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3Ike2ludGVyZmFjZU5hbWV9
LmdldCgpKVxuIik7CiAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIHJldHVybiBzcGFj
ZTtcbiIpOwogICAgIGlmIChJc0RPTUdsb2JhbE9iamVjdCgkaW50ZXJmYWNlKSkgewotICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBzcGFjZXMubV9zdWJzcGFjZUZvciR7aW50ZXJmYWNl
TmFtZX0gPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFw
LCBjbGllbnREYXRhLm1faGVhcENlbGxUeXBlRm9yJHtjbGFzc05hbWV9LmdldCgpLCAke2NsYXNz
TmFtZX0pO1xuIik7CisgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHNwYWNlcy5tX3N1
YnNwYWNlRm9yJHtpbnRlcmZhY2VOYW1lfSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19T
VUJTUEFDRV9JTklUKHZtLmhlYXAsICpjbGllbnREYXRhLm1faGVhcENlbGxUeXBlRm9yJHtjbGFz
c05hbWV9LCAke2NsYXNzTmFtZX0pO1xuIik7CiAgICAgfSBlbHNlIHsKICAgICAgICAgcHVzaChA
aW1wbENvbnRlbnQsICIgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpT
RGVzdHJ1Y3RpYmxlT2JqZWN0LCAke2NsYXNzTmFtZX0+IHx8ICEke2NsYXNzTmFtZX06Om5lZWRz
RGVzdHJ1Y3Rpb24pO1xuIik7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGlmIGNv
bnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgJHtj
bGFzc05hbWV9PilcbiIpOwotICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgc3Bh
Y2VzLm1fc3Vic3BhY2VGb3Ike2ludGVyZmFjZU5hbWV9ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFj
ZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENl
bGxUeXBlLmdldCgpLCAke2NsYXNzTmFtZX0pO1xuIik7CisgICAgICAgIHB1c2goQGltcGxDb250
ZW50LCAiICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvciR7aW50ZXJmYWNlTmFtZX0gPSBtYWtl
VW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVj
dGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwgJHtjbGFzc05hbWV9KTtcbiIpOwogICAgICAgICBw
dXNoKEBpbXBsQ29udGVudCwgIiAgICBlbHNlXG4iKTsKLSAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICIgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yJHtpbnRlcmZhY2VOYW1lfSA9IG1ha2VV
bmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFw
Q2VsbFR5cGUuZ2V0KCksICR7Y2xhc3NOYW1lfSk7XG4iKTsKKyAgICAgICAgcHVzaChAaW1wbENv
bnRlbnQsICIgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yJHtpbnRlcmZhY2VOYW1lfSA9IG1h
a2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxI
ZWFwQ2VsbFR5cGUoKSwgJHtjbGFzc05hbWV9KTtcbiIpOwogICAgIH0KICAgICBwdXNoKEBpbXBs
Q29udGVudCwgIiAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yJHtpbnRlcmZh
Y2VOYW1lfS5nZXQoKTtcbiIpOwogICAgIHB1c2goQGltcGxDb250ZW50LCAiSUdOT1JFX1dBUk5J
TkdTX0JFR0lOKFwidW5yZWFjaGFibGUtY29kZVwiKVxuIik7CkBAIC02NzMxLDkgKzY3MzEsOSBA
QCBwdWJsaWM6CiAgICAgICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAgICAgIHN0YXRpY19hc3Nl
cnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgJHtpdGVyYXRv
ck5hbWV9PiB8fCAhJHtpdGVyYXRvck5hbWV9OjpuZWVkc0Rlc3RydWN0aW9uKTsKICAgICAgICAg
aWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0
LCAke2l0ZXJhdG9yTmFtZX0+KQotICAgICAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3Ike2l0
ZXJhdG9yTmFtZX0gPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2
bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuZ2V0KCksICR7aXRlcmF0
b3JOYW1lfSk7CisgICAgICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvciR7aXRlcmF0b3JOYW1l
fSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZt
LmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpLCAke2l0ZXJhdG9yTmFtZX0pOwogICAg
ICAgICBlbHNlCi0gICAgICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvciR7aXRlcmF0b3JOYW1l
fSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZt
LmNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksICR7aXRlcmF0b3JOYW1lfSk7CisgICAgICAgICAgICBz
cGFjZXMubV9zdWJzcGFjZUZvciR7aXRlcmF0b3JOYW1lfSA9IG1ha2VVbmlxdWU8SXNvU3Vic3Bh
Y2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgJHtp
dGVyYXRvck5hbWV9KTsKICAgICAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZv
ciR7aXRlcmF0b3JOYW1lfS5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTihcInVucmVhY2hh
YmxlLWNvZGVcIikKIElHTk9SRV9XQVJOSU5HU19CRUdJTihcInRhdXRvbG9naWNhbC1jb21wYXJl
XCIpCkBAIC03NTI5LDcgKzc1MjksNyBAQCBzdWIgR2VuZXJhdGVQcm90b3R5cGVEZWNsYXJhdGlv
bgogICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSog
c3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pXG4iKTsKICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIg
ICAge1xuIik7CiAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgICAgICBTVEFUSUNfQVNTRVJU
X0lTT19TVUJTUEFDRV9TSEFSQUJMRSgke3Byb3RvdHlwZUNsYXNzTmFtZX0sIEJhc2UpO1xuIik7
Ci0gICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0
U3BhY2U7XG4iKTsKKyAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgICAgIHJldHVybiAmdm0u
cGxhaW5PYmplY3RTcGFjZSgpO1xuIik7CiAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIH1c
biIpOwogCiAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVy
ZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpXG4iKTsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU0RPTVdpbmRvdy5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTRE9NV2luZG93LmNw
cAkocmV2aXNpb24gMjg2MDI0KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTRE9NV2luZG93LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzY5LDcgKzM2OSw3IEBA
IEpTQzo6SXNvU3Vic3BhY2UqIEpTRE9NV2luZG93OjpzdWJzcGFjZUYKICAgICBhdXRvJiBzcGFj
ZXMgPSBjbGllbnREYXRhLnN1YnNwYWNlcygpOwogICAgIGlmIChhdXRvKiBzcGFjZSA9IHNwYWNl
cy5tX3N1YnNwYWNlRm9yRE9NV2luZG93LmdldCgpKQogICAgICAgICByZXR1cm4gc3BhY2U7Ci0g
ICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JET01XaW5kb3cgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNl
PiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCBjbGllbnREYXRhLm1faGVhcENlbGxUeXBlRm9y
SlNET01XaW5kb3cuZ2V0KCksIEpTRE9NV2luZG93KTsKKyAgICBzcGFjZXMubV9zdWJzcGFjZUZv
ckRPTVdpbmRvdyA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZt
LmhlYXAsICpjbGllbnREYXRhLm1faGVhcENlbGxUeXBlRm9ySlNET01XaW5kb3csIEpTRE9NV2lu
ZG93KTsKICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yRE9NV2luZG93Lmdl
dCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKIElHTk9SRV9X
QVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRleDogU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTRE9NV2luZG93LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTRE9NV2luZG93LmgJKHJl
dmlzaW9uIDI4NjAyNCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU0RPTVdpbmRvdy5oCSh3b3JraW5nIGNvcHkpCkBAIC04NSw3ICs4NSw3IEBAIHB1YmxpYzoK
ICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAg
ICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU0RPTVdp
bmRvd1Byb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFj
ZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0
YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAg
ewpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTRGVkaWNh
dGVkV29ya2VyR2xvYmFsU2NvcGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlLmNwcAko
cmV2aXNpb24gMjg2MDI0KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
NzAsNyArMTcwLDcgQEAgSlNDOjpJc29TdWJzcGFjZSogSlNEZWRpY2F0ZWRXb3JrZXJHbG9iYQog
ICAgIGF1dG8mIHNwYWNlcyA9IGNsaWVudERhdGEuc3Vic3BhY2VzKCk7CiAgICAgaWYgKGF1dG8q
IHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZS5n
ZXQoKSkKICAgICAgICAgcmV0dXJuIHNwYWNlOwotICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yRGVk
aWNhdGVkV29ya2VyR2xvYmFsU2NvcGUgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VC
U1BBQ0VfSU5JVCh2bS5oZWFwLCBjbGllbnREYXRhLm1faGVhcENlbGxUeXBlRm9ySlNEZWRpY2F0
ZWRXb3JrZXJHbG9iYWxTY29wZS5nZXQoKSwgSlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZSk7
CisgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZSA9IG1h
a2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICpjbGllbnRE
YXRhLm1faGVhcENlbGxUeXBlRm9ySlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZSwgSlNEZWRp
Y2F0ZWRXb3JrZXJHbG9iYWxTY29wZSk7CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJz
cGFjZUZvckRlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlLmdldCgpOwogSUdOT1JFX1dBUk5JTkdT
X0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9s
b2dpY2FsLWNvbXBhcmUiKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNEZWRpY2F0ZWRXb3JrZXJHbG9i
YWxTY29wZS5oCShyZXZpc2lvbiAyODYwMjQpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZS5oCSh3b3JraW5nIGNv
cHkpCkBAIC04Miw3ICs4Miw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFj
ZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJU
X0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlUHJvdG90
eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAg
ICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6
U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNFeHBvc2VkU3Rhci5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
RXhwb3NlZFN0YXIuY3BwCShyZXZpc2lvbiAyODYwMjQpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNFeHBvc2VkU3Rhci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTcxLDcgKzcxLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJz
cGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NV
QlNQQUNFX1NIQVJBQkxFKEpTRXhwb3NlZFN0YXJQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICBy
ZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmpl
Y3RTcGFjZSgpOwogICAgIH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVj
dHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6
OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKQEAgLTIzNiw5ICsyMzYsOSBAQCBKU0M6Oklzb1N1
YnNwYWNlKiBKU0V4cG9zZWRTdGFyOjpzdWJzcGFjCiAgICAgICAgIHJldHVybiBzcGFjZTsKICAg
ICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmpl
Y3QsIEpTRXhwb3NlZFN0YXI+IHx8ICFKU0V4cG9zZWRTdGFyOjpuZWVkc0Rlc3RydWN0aW9uKTsK
ICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVP
YmplY3QsIEpTRXhwb3NlZFN0YXI+KQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvckV4cG9z
ZWRTdGFyID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVh
cCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmdldCgpLCBKU0V4cG9zZWRTdGFy
KTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JFeHBvc2VkU3RhciA9IG1ha2VVbmlxdWU8
SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9i
amVjdEhlYXBDZWxsVHlwZSgpLCBKU0V4cG9zZWRTdGFyKTsKICAgICBlbHNlCi0gICAgICAgIHNw
YWNlcy5tX3N1YnNwYWNlRm9yRXhwb3NlZFN0YXIgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJ
U09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlLmdldCgpLCBKU0V4
cG9zZWRTdGFyKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JFeHBvc2VkU3RhciA9IG1h
a2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxI
ZWFwQ2VsbFR5cGUoKSwgSlNFeHBvc2VkU3Rhcik7CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMu
bV9zdWJzcGFjZUZvckV4cG9zZWRTdGFyLmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1
bnJlYWNoYWJsZS1jb2RlIikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNv
bXBhcmUiKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
RXhwb3NlZFRvV29ya2VyQW5kV2luZG93LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNFeHBvc2VkVG9Xb3JrZXJBbmRXaW5kb3cuY3Bw
CShyZXZpc2lvbiAyODYwMjQpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNFeHBvc2VkVG9Xb3JrZXJBbmRXaW5kb3cuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
MTIsNyArMTEyLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJz
cGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NV
QlNQQUNFX1NIQVJBQkxFKEpTRXhwb3NlZFRvV29ya2VyQW5kV2luZG93UHJvdG90eXBlLCBCYXNl
KTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4g
JnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJl
KiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC0yNTIsOSArMjUyLDkg
QEAgSlNDOjpJc29TdWJzcGFjZSogSlNFeHBvc2VkVG9Xb3JrZXJBbmRXaQogICAgICAgICByZXR1
cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVz
dHJ1Y3RpYmxlT2JqZWN0LCBKU0V4cG9zZWRUb1dvcmtlckFuZFdpbmRvdz4gfHwgIUpTRXhwb3Nl
ZFRvV29ya2VyQW5kV2luZG93OjpuZWVkc0Rlc3RydWN0aW9uKTsKICAgICBpZiBjb25zdGV4cHIg
KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTRXhwb3NlZFRv
V29ya2VyQW5kV2luZG93PikKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JFeHBvc2VkVG9X
b3JrZXJBbmRXaW5kb3cgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5J
VCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTRXhw
b3NlZFRvV29ya2VyQW5kV2luZG93KTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JFeHBv
c2VkVG9Xb3JrZXJBbmRXaW5kb3cgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BB
Q0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwgSlNF
eHBvc2VkVG9Xb3JrZXJBbmRXaW5kb3cpOwogICAgIGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vi
c3BhY2VGb3JFeHBvc2VkVG9Xb3JrZXJBbmRXaW5kb3cgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNl
PiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlLmdldCgpLCBK
U0V4cG9zZWRUb1dvcmtlckFuZFdpbmRvdyk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9y
RXhwb3NlZFRvV29ya2VyQW5kV2luZG93ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NV
QlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU0V4cG9zZWRUb1dv
cmtlckFuZFdpbmRvdyk7CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvckV4
cG9zZWRUb1dvcmtlckFuZFdpbmRvdy5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5y
ZWFjaGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21w
YXJlIikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Bh
aW50V29ya2xldEdsb2JhbFNjb3BlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNQYWludFdvcmtsZXRHbG9iYWxTY29wZS5jcHAJKHJl
dmlzaW9uIDI4NjAyNCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTY5LDcg
KzE2OSw3IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTUGFpbnRXb3JrbGV0R2xvYmFsU2MKICAgICBh
dXRvJiBzcGFjZXMgPSBjbGllbnREYXRhLnN1YnNwYWNlcygpOwogICAgIGlmIChhdXRvKiBzcGFj
ZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuZ2V0KCkpCiAg
ICAgICAgIHJldHVybiBzcGFjZTsKLSAgICBzcGFjZXMubV9zdWJzcGFjZUZvclBhaW50V29ya2xl
dEdsb2JhbFNjb3BlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQo
dm0uaGVhcCwgY2xpZW50RGF0YS5tX2hlYXBDZWxsVHlwZUZvckpTUGFpbnRXb3JrbGV0R2xvYmFs
U2NvcGUuZ2V0KCksIEpTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUpOworICAgIHNwYWNlcy5tX3N1
YnNwYWNlRm9yUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNl
PiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqY2xpZW50RGF0YS5tX2hlYXBDZWxsVHlwZUZv
ckpTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUsIEpTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUpOwog
ICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JQYWludFdvcmtsZXRHbG9iYWxT
Y29wZS5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJ
R05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1BhaW50V29ya2xldEdsb2JhbFNj
b3BlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuaAkocmV2aXNpb24gMjg2MDI0KQorKysgU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTUGFpbnRXb3JrbGV0R2xvYmFs
U2NvcGUuaAkod29ya2luZyBjb3B5KQpAQCAtODIsNyArODIsNyBAQCBwdWJsaWM6CiAgICAgc3Rh
dGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAg
ICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNQYWludFdvcmtsZXRH
bG9iYWxTY29wZVByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmpl
Y3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQog
ICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBK
U0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUp
CiAgICAgewpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
U2VydmljZVdvcmtlckdsb2JhbFNjb3BlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUuY3Bw
CShyZXZpc2lvbiAyODYwMjQpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
NjksNyArMTY5LDcgQEAgSlNDOjpJc29TdWJzcGFjZSogSlNTZXJ2aWNlV29ya2VyR2xvYmFsUwog
ICAgIGF1dG8mIHNwYWNlcyA9IGNsaWVudERhdGEuc3Vic3BhY2VzKCk7CiAgICAgaWYgKGF1dG8q
IHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUuZ2V0
KCkpCiAgICAgICAgIHJldHVybiBzcGFjZTsKLSAgICBzcGFjZXMubV9zdWJzcGFjZUZvclNlcnZp
Y2VXb3JrZXJHbG9iYWxTY29wZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFD
RV9JTklUKHZtLmhlYXAsIGNsaWVudERhdGEubV9oZWFwQ2VsbFR5cGVGb3JKU1NlcnZpY2VXb3Jr
ZXJHbG9iYWxTY29wZS5nZXQoKSwgSlNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUpOworICAgIHNw
YWNlcy5tX3N1YnNwYWNlRm9yU2VydmljZVdvcmtlckdsb2JhbFNjb3BlID0gbWFrZVVuaXF1ZTxJ
c29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKmNsaWVudERhdGEubV9oZWFw
Q2VsbFR5cGVGb3JKU1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSwgSlNTZXJ2aWNlV29ya2VyR2xv
YmFsU2NvcGUpOwogICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JTZXJ2aWNl
V29ya2VyR2xvYmFsU2NvcGUuZ2V0KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hh
YmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIp
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNTZXJ2aWNl
V29ya2VyR2xvYmFsU2NvcGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUuaAkocmV2aXNpb24g
Mjg2MDI0KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTU2Vy
dmljZVdvcmtlckdsb2JhbFNjb3BlLmgJKHdvcmtpbmcgY29weSkKQEAgLTgyLDcgKzgyLDcgQEAg
cHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZN
JiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxF
KEpTU2VydmljZVdvcmtlckdsb2JhbFNjb3BlUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0
dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0
U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1
cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpK
U1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNTaGFyZWRXb3JrZXJHbG9iYWxTY29wZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTU2hhcmVkV29ya2Vy
R2xvYmFsU2NvcGUuY3BwCShyZXZpc2lvbiAyODYwMjQpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNTaGFyZWRXb3JrZXJHbG9iYWxTY29wZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTE1Myw3ICsxNTMsNyBAQCBKU0M6Oklzb1N1YnNwYWNlKiBKU1NoYXJlZFdv
cmtlckdsb2JhbFNjCiAgICAgYXV0byYgc3BhY2VzID0gY2xpZW50RGF0YS5zdWJzcGFjZXMoKTsK
ICAgICBpZiAoYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclNoYXJlZFdvcmtlckds
b2JhbFNjb3BlLmdldCgpKQogICAgICAgICByZXR1cm4gc3BhY2U7Ci0gICAgc3BhY2VzLm1fc3Vi
c3BhY2VGb3JTaGFyZWRXb3JrZXJHbG9iYWxTY29wZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+
IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIGNsaWVudERhdGEubV9oZWFwQ2VsbFR5cGVGb3JK
U1NoYXJlZFdvcmtlckdsb2JhbFNjb3BlLmdldCgpLCBKU1NoYXJlZFdvcmtlckdsb2JhbFNjb3Bl
KTsKKyAgICBzcGFjZXMubV9zdWJzcGFjZUZvclNoYXJlZFdvcmtlckdsb2JhbFNjb3BlID0gbWFr
ZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKmNsaWVudERh
dGEubV9oZWFwQ2VsbFR5cGVGb3JKU1NoYXJlZFdvcmtlckdsb2JhbFNjb3BlLCBKU1NoYXJlZFdv
cmtlckdsb2JhbFNjb3BlKTsKICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9y
U2hhcmVkV29ya2VyR2xvYmFsU2NvcGUuZ2V0KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVu
cmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29t
cGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNT
aGFyZWRXb3JrZXJHbG9iYWxTY29wZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1NoYXJlZFdvcmtlckdsb2JhbFNjb3BlLmgJKHJldmlz
aW9uIDI4NjAyNCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1NoYXJlZFdvcmtlckdsb2JhbFNjb3BlLmgJKHdvcmtpbmcgY29weSkKQEAgLTgyLDcgKzgyLDcg
QEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6
OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJB
QkxFKEpTU2hhcmVkV29ya2VyR2xvYmFsU2NvcGVQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICBy
ZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmpl
Y3RTcGFjZSgpOwogICAgIH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVj
dHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6
OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDRVJlYWN0aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENFUmVhY3Rpb25zLmNw
cAkocmV2aXNpb24gMjg2MDI0KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdENFUmVhY3Rpb25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTEsNyArOTEs
NyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpT
Qzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hB
UkFCTEUoSlNUZXN0Q0VSZWFjdGlvbnNQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4g
JnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFj
ZSgpOwogICAgIH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShK
U0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFs
dWUgcHJvdG90eXBlKQogICAgIHsKQEAgLTQzOCw5ICs0MzgsOSBAQCBKU0M6Oklzb1N1YnNwYWNl
KiBKU1Rlc3RDRVJlYWN0aW9uczo6c3ViCiAgICAgICAgIHJldHVybiBzcGFjZTsKICAgICBzdGF0
aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpT
VGVzdENFUmVhY3Rpb25zPiB8fCAhSlNUZXN0Q0VSZWFjdGlvbnM6Om5lZWRzRGVzdHJ1Y3Rpb24p
OwogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJs
ZU9iamVjdCwgSlNUZXN0Q0VSZWFjdGlvbnM+KQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZv
clRlc3RDRVJlYWN0aW9ucyA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9J
TklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNU
ZXN0Q0VSZWFjdGlvbnMpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RDRVJlYWN0
aW9ucyA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAs
IHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RDRVJlYWN0aW9ucyk7
CiAgICAgZWxzZQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RDRVJlYWN0aW9ucyA9
IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNl
bGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVGVzdENFUmVhY3Rpb25zKTsKKyAgICAgICAgc3BhY2Vz
Lm1fc3Vic3BhY2VGb3JUZXN0Q0VSZWFjdGlvbnMgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJ
U09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCksIEpTVGVzdENF
UmVhY3Rpb25zKTsKICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdENF
UmVhY3Rpb25zLmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2Rl
IikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRleDog
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENFUmVhY3Rpb25z
U3RyaW5naWZpZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyLmNwcAkocmV2aXNpb24g
Mjg2MDI0KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dENFUmVhY3Rpb25zU3RyaW5naWZpZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NSw3ICs3NSw3
IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlND
OjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFS
QUJMRShKU1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyUHJvdG90eXBlLCBCYXNlKTsKLSAgICAg
ICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWlu
T2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVT
dHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
SlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC0yNjQsOSArMjY0LDkgQEAgSlNDOjpJ
c29TdWJzcGFjZSogSlNUZXN0Q0VSZWFjdGlvbnNTdHJpbgogICAgICAgICByZXR1cm4gc3BhY2U7
CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxl
T2JqZWN0LCBKU1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyPiB8fCAhSlNUZXN0Q0VSZWFjdGlv
bnNTdHJpbmdpZmllcjo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3RleHByIChzdGQ6
OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RDRVJlYWN0aW9u
c1N0cmluZ2lmaWVyPikKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0Q0VSZWFjdGlv
bnNTdHJpbmdpZmllciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklU
KHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNUZXN0
Q0VSZWFjdGlvbnNTdHJpbmdpZmllcik7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVz
dENFUmVhY3Rpb25zU3RyaW5naWZpZXIgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VC
U1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwg
SlNUZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllcik7CiAgICAgZWxzZQotICAgICAgICBzcGFjZXMu
bV9zdWJzcGFjZUZvclRlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyID0gbWFrZVVuaXF1ZTxJc29T
dWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZS5n
ZXQoKSwgSlNUZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllcik7CisgICAgICAgIHNwYWNlcy5tX3N1
YnNwYWNlRm9yVGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXIgPSBtYWtlVW5pcXVlPElzb1N1YnNw
YWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCksIEpT
VGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXIpOwogICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1f
c3Vic3BhY2VGb3JUZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllci5nZXQoKTsKIElHTk9SRV9XQVJO
SU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRh
dXRvbG9naWNhbC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RDYWxsVHJhY2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2FsbFRyYWNlci5jcHAJKHJldmlz
aW9uIDI4NjAyNCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RDYWxsVHJhY2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTcsNyArOTcsNyBAQCBwdWJs
aWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZt
KQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNU
ZXN0Q2FsbFRyYWNlclByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5P
YmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAg
fQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZt
LCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5
cGUpCiAgICAgewpAQCAtNTEzLDkgKzUxMyw5IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdENh
bGxUcmFjZXI6OnN1YnMKICAgICAgICAgcmV0dXJuIHNwYWNlOwogICAgIHN0YXRpY19hc3NlcnQo
c3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0Q2FsbFRy
YWNlcj4gfHwgIUpTVGVzdENhbGxUcmFjZXI6Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNv
bnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNU
ZXN0Q2FsbFRyYWNlcj4pCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdENhbGxUcmFj
ZXIgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2
bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVGVzdENhbGxUcmFjZXIp
OworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RDYWxsVHJhY2VyID0gbWFrZVVuaXF1
ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxl
T2JqZWN0SGVhcENlbGxUeXBlKCksIEpTVGVzdENhbGxUcmFjZXIpOwogICAgIGVsc2UKLSAgICAg
ICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0Q2FsbFRyYWNlciA9IG1ha2VVbmlxdWU8SXNvU3Vi
c3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUuZ2V0
KCksIEpTVGVzdENhbGxUcmFjZXIpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RD
YWxsVHJhY2VyID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0u
aGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RDYWxsVHJhY2VyKTsKICAgICBhdXRv
KiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdENhbGxUcmFjZXIuZ2V0KCk7CiBJR05P
UkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JF
R0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3IuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3Rvci5jcHAJKHJldmlzaW9uIDI4NjAyNCkK
KysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDbGFzc1dp
dGhKU0J1aWx0aW5Db25zdHJ1Y3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY0LDcgKzY0LDcg
QEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6
OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJB
QkxFKEpTVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yUHJvdG90eXBlLCBCYXNlKTsK
LSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZt
LnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBj
cmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC0xNzYsOSArMTc2LDkgQEAg
SlNDOjpJc29TdWJzcGFjZSogSlNUZXN0Q2xhc3NXaXRoSlNCdWlsdAogICAgICAgICByZXR1cm4g
c3BhY2U7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1
Y3RpYmxlT2JqZWN0LCBKU1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3Rvcj4gfHwgIUpT
VGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yOjpuZWVkc0Rlc3RydWN0aW9uKTsKICAg
ICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmpl
Y3QsIEpTVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yPikKLSAgICAgICAgc3BhY2Vz
Lm1fc3Vic3BhY2VGb3JUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3IgPSBtYWtlVW5p
cXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGli
bGVPYmplY3RIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0
cnVjdG9yKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0Q2xhc3NXaXRoSlNCdWls
dGluQ29uc3RydWN0b3IgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5J
VCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0Q2xh
c3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3IpOwogICAgIGVsc2UKLSAgICAgICAgc3BhY2VzLm1f
c3Vic3BhY2VGb3JUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3IgPSBtYWtlVW5pcXVl
PElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxU
eXBlLmdldCgpLCBKU1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3Rvcik7CisgICAgICAg
IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yID0g
bWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2Vs
bEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3Rvcik7CiAg
ICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RDbGFzc1dpdGhKU0J1aWx0
aW5Db25zdHJ1Y3Rvci5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUt
Y29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDb25kaXRp
b25hbEluY2x1ZGVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlcy5jcHAJKHJldmlzaW9uIDI4
NjAyNCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RD
b25kaXRpb25hbEluY2x1ZGVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTI3LDcgKzEyNyw3IEBA
IHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpW
TSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJM
RShKU1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0
dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0
U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1
cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpK
U1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC03ODksOSArNzg5LDkgQEAgSlNDOjpJc29TdWJz
cGFjZSogSlNUZXN0Q29uZGl0aW9uYWxJbmNsdQogICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAg
c3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0
LCBKU1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzPiB8fCAhSlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRl
czo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2Zf
djxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzPikK
LSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0Q29uZGl0aW9uYWxJbmNsdWRlcyA9IG1h
a2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3Ry
dWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRl
cyk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdENvbmRpdGlvbmFsSW5jbHVkZXMg
PSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5k
ZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRl
cyk7CiAgICAgZWxzZQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RDb25kaXRpb25h
bEluY2x1ZGVzID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0u
aGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRl
cyk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdENvbmRpdGlvbmFsSW5jbHVkZXMg
PSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5j
ZWxsSGVhcENlbGxUeXBlKCksIEpTVGVzdENvbmRpdGlvbmFsSW5jbHVkZXMpOwogICAgIGF1dG8q
IHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0Q29uZGl0aW9uYWxJbmNsdWRlcy5nZXQo
KTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVfV0FS
TklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDb25kaXRpb25hbGx5UmVhZFdyaXRlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0Q29uZGl0aW9uYWxseVJlYWRXcml0ZS5jcHAJKHJldmlzaW9uIDI4NjAyNCkKKysrIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDb25kaXRpb25hbGx5
UmVhZFdyaXRlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTgsNyArOTgsNyBAQCBwdWJsaWM6CiAg
ICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAg
IHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0Q29u
ZGl0aW9uYWxseVJlYWRXcml0ZVByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0u
cGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7
CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6
Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBw
cm90b3R5cGUpCiAgICAgewpAQCAtNjExLDkgKzYxMSw5IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpT
VGVzdENvbmRpdGlvbmFsbHlSZWEKICAgICAgICAgcmV0dXJuIHNwYWNlOwogICAgIHN0YXRpY19h
c3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0
Q29uZGl0aW9uYWxseVJlYWRXcml0ZT4gfHwgIUpTVGVzdENvbmRpdGlvbmFsbHlSZWFkV3JpdGU6
Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8
SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0Q29uZGl0aW9uYWxseVJlYWRXcml0ZT4p
Ci0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdENvbmRpdGlvbmFsbHlSZWFkV3JpdGUg
PSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5k
ZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVGVzdENvbmRpdGlvbmFsbHlS
ZWFkV3JpdGUpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RDb25kaXRpb25hbGx5
UmVhZFdyaXRlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0u
aGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCksIEpTVGVzdENvbmRpdGlv
bmFsbHlSZWFkV3JpdGUpOwogICAgIGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JU
ZXN0Q29uZGl0aW9uYWxseVJlYWRXcml0ZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19T
VUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVGVzdENv
bmRpdGlvbmFsbHlSZWFkV3JpdGUpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RD
b25kaXRpb25hbGx5UmVhZFdyaXRlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQ
QUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RDb25kaXRpb25h
bGx5UmVhZFdyaXRlKTsKICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVz
dENvbmRpdGlvbmFsbHlSZWFkV3JpdGUuZ2V0KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVu
cmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29t
cGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0RE9NSklULmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0RE9NSklULmNwcAkocmV2aXNpb24gMjg2MDI0KQorKysgU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERPTUpJVC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTQ4MSw3ICs0ODEsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNv
U3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElD
X0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0RE9NSklUUHJvdG90eXBlLCBCYXNl
KTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4g
JnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJl
KiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC0xMjUyLDkgKzEyNTIs
OSBAQCBKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3RET01KSVQ6OnN1YnNwYWNlCiAgICAgICAgIHJl
dHVybiBzcGFjZTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNE
ZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdERPTUpJVD4gfHwgIUpTVGVzdERPTUpJVDo6bmVlZHNE
ZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpT
RGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RET01KSVQ+KQotICAgICAgICBzcGFjZXMubV9zdWJz
cGFjZUZvclRlc3RET01KSVQgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0Vf
SU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuZ2V0KCksIEpT
VGVzdERPTUpJVCk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdERPTUpJVCA9IG1h
a2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3Ry
dWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RET01KSVQpOwogICAgIGVsc2UKLSAg
ICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0RE9NSklUID0gbWFrZVVuaXF1ZTxJc29TdWJz
cGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZS5nZXQo
KSwgSlNUZXN0RE9NSklUKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0RE9NSklU
ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0u
Y2VsbEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RET01KSVQpOwogICAgIGF1dG8qIHNwYWNlID0gc3Bh
Y2VzLm1fc3Vic3BhY2VGb3JUZXN0RE9NSklULmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lO
KCJ1bnJlYWNoYWJsZS1jb2RlIikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2Fs
LWNvbXBhcmUiKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdERlZmF1bHRUb0pTT04uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3REZWZhdWx0VG9KU09OLmNwcAkocmV2aXNpb24g
Mjg2MDI0KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dERlZmF1bHRUb0pTT04uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjQsNyArMTI0LDcgQEAgcHVi
bGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2
bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpT
VGVzdERlZmF1bHRUb0pTT05Qcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBs
YWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwog
ICAgIH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZN
JiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJv
dG90eXBlKQogICAgIHsKQEAgLTgwOCw5ICs4MDgsOSBAQCBKU0M6Oklzb1N1YnNwYWNlKiBKU1Rl
c3REZWZhdWx0VG9KU09OOjpzCiAgICAgICAgIHJldHVybiBzcGFjZTsKICAgICBzdGF0aWNfYXNz
ZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdERl
ZmF1bHRUb0pTT04+IHx8ICFKU1Rlc3REZWZhdWx0VG9KU09OOjpuZWVkc0Rlc3RydWN0aW9uKTsK
ICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVP
YmplY3QsIEpTVGVzdERlZmF1bHRUb0pTT04+KQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZv
clRlc3REZWZhdWx0VG9KU09OID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNF
X0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmdldCgpLCBK
U1Rlc3REZWZhdWx0VG9KU09OKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0RGVm
YXVsdFRvSlNPTiA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZt
LmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3REZWZhdWx0
VG9KU09OKTsKICAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdERlZmF1
bHRUb0pTT04gPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5o
ZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlLmdldCgpLCBKU1Rlc3REZWZhdWx0VG9KU09OKTsKKyAg
ICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0RGVmYXVsdFRvSlNPTiA9IG1ha2VVbmlxdWU8
SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5
cGUoKSwgSlNUZXN0RGVmYXVsdFRvSlNPTik7CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9z
dWJzcGFjZUZvclRlc3REZWZhdWx0VG9KU09OLmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lO
KCJ1bnJlYWNoYWJsZS1jb2RlIikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2Fs
LWNvbXBhcmUiKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERlZmF1bHRUb0pT
T05GaWx0ZXJlZEJ5RXhwb3NlZC5jcHAJKHJldmlzaW9uIDI4NjAyNCkKKysrIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3REZWZhdWx0VG9KU09ORmlsdGVyZWRC
eUV4cG9zZWQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NSw3ICs3NSw3IEBAIHB1YmxpYzoKICAg
ICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAg
ewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3REZWZh
dWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWRQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1
cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RT
cGFjZSgpOwogICAgIH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVy
ZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpT
VmFsdWUgcHJvdG90eXBlKQogICAgIHsKQEAgLTI3MCw5ICsyNzAsOSBAQCBKU0M6Oklzb1N1YnNw
YWNlKiBKU1Rlc3REZWZhdWx0VG9KU09ORmlsCiAgICAgICAgIHJldHVybiBzcGFjZTsKICAgICBz
dGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3Qs
IEpTVGVzdERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZD4gfHwgIUpTVGVzdERlZmF1bHRU
b0pTT05GaWx0ZXJlZEJ5RXhwb3NlZDo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3Rl
eHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RE
ZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWQ+KQotICAgICAgICBzcGFjZXMubV9zdWJzcGFj
ZUZvclRlc3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWQgPSBtYWtlVW5pcXVlPElzb1N1
YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RI
ZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVGVzdERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZCk7
CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5
RXhwb3NlZCA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhl
YXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3REZWZhdWx0VG9K
U09ORmlsdGVyZWRCeUV4cG9zZWQpOwogICAgIGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vic3Bh
Y2VGb3JUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkID0gbWFrZVVuaXF1ZTxJc29T
dWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZS5n
ZXQoKSwgSlNUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkKTsKKyAgICAgICAgc3Bh
Y2VzLm1fc3Vic3BhY2VGb3JUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkID0gbWFr
ZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhl
YXBDZWxsVHlwZSgpLCBKU1Rlc3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWQpOwogICAg
IGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0RGVmYXVsdFRvSlNPTkZpbHRl
cmVkQnlFeHBvc2VkLmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1j
b2RlIikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRl
eDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERlZmF1bHRU
b0pTT05JbmRpcmVjdEluaGVyaXRhbmNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RGVmYXVsdFRvSlNPTkluZGlyZWN0SW5o
ZXJpdGFuY2UuY3BwCShyZXZpc2lvbiAyODYwMjQpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RGVmYXVsdFRvSlNPTkluZGlyZWN0SW5oZXJpdGFuY2Uu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC02Miw3ICs2Miw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMg
SlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAgICAg
ICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3REZWZhdWx0VG9KU09O
SW5kaXJlY3RJbmhlcml0YW5jZVByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0u
cGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7
CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6
Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBw
cm90b3R5cGUpCiAgICAgewpAQCAtMTYyLDkgKzE2Miw5IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpT
VGVzdERlZmF1bHRUb0pTT05JbmQKICAgICAgICAgcmV0dXJuIHNwYWNlOwogICAgIHN0YXRpY19h
c3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0
RGVmYXVsdFRvSlNPTkluZGlyZWN0SW5oZXJpdGFuY2U+IHx8ICFKU1Rlc3REZWZhdWx0VG9KU09O
SW5kaXJlY3RJbmhlcml0YW5jZTo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3RleHBy
IChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3REZWZh
dWx0VG9KU09OSW5kaXJlY3RJbmhlcml0YW5jZT4pCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNl
Rm9yVGVzdERlZmF1bHRUb0pTT05JbmRpcmVjdEluaGVyaXRhbmNlID0gbWFrZVVuaXF1ZTxJc29T
dWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0
SGVhcENlbGxUeXBlLmdldCgpLCBKU1Rlc3REZWZhdWx0VG9KU09OSW5kaXJlY3RJbmhlcml0YW5j
ZSk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdERlZmF1bHRUb0pTT05JbmRpcmVj
dEluaGVyaXRhbmNlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQo
dm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCksIEpTVGVzdERlZmF1
bHRUb0pTT05JbmRpcmVjdEluaGVyaXRhbmNlKTsKICAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5t
X3N1YnNwYWNlRm9yVGVzdERlZmF1bHRUb0pTT05JbmRpcmVjdEluaGVyaXRhbmNlID0gbWFrZVVu
aXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBD
ZWxsVHlwZS5nZXQoKSwgSlNUZXN0RGVmYXVsdFRvSlNPTkluZGlyZWN0SW5oZXJpdGFuY2UpOwor
ICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3REZWZhdWx0VG9KU09OSW5kaXJlY3RJbmhl
cml0YW5jZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhl
YXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0RGVmYXVsdFRvSlNPTkluZGlyZWN0SW5o
ZXJpdGFuY2UpOwogICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0RGVm
YXVsdFRvSlNPTkluZGlyZWN0SW5oZXJpdGFuY2UuZ2V0KCk7CiBJR05PUkVfV0FSTklOR1NfQkVH
SU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2lj
YWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0RGVmYXVsdFRvSlNPTkluaGVyaXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3REZWZhdWx0VG9KU09OSW5oZXJp
dC5jcHAJKHJldmlzaW9uIDI4NjAyNCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3REZWZhdWx0VG9KU09OSW5oZXJpdC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTg5LDcgKzg5LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBz
dWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNP
X1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdERlZmF1bHRUb0pTT05Jbmhlcml0UHJvdG90eXBlLCBC
YXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1
cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0
dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC0yOTIsOSArMjky
LDkgQEAgSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0RGVmYXVsdFRvSlNPTkluaAogICAgICAgICBy
ZXR1cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpT
RGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3REZWZhdWx0VG9KU09OSW5oZXJpdD4gfHwgIUpTVGVz
dERlZmF1bHRUb0pTT05Jbmhlcml0OjpuZWVkc0Rlc3RydWN0aW9uKTsKICAgICBpZiBjb25zdGV4
cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdERl
ZmF1bHRUb0pTT05Jbmhlcml0PikKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0RGVm
YXVsdFRvSlNPTkluaGVyaXQgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0Vf
SU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuZ2V0KCksIEpT
VGVzdERlZmF1bHRUb0pTT05Jbmhlcml0KTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JU
ZXN0RGVmYXVsdFRvSlNPTkluaGVyaXQgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VC
U1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwg
SlNUZXN0RGVmYXVsdFRvSlNPTkluaGVyaXQpOwogICAgIGVsc2UKLSAgICAgICAgc3BhY2VzLm1f
c3Vic3BhY2VGb3JUZXN0RGVmYXVsdFRvSlNPTkluaGVyaXQgPSBtYWtlVW5pcXVlPElzb1N1YnNw
YWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlLmdldCgp
LCBKU1Rlc3REZWZhdWx0VG9KU09OSW5oZXJpdCk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNl
Rm9yVGVzdERlZmF1bHRUb0pTT05Jbmhlcml0ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNP
X1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3REZWZh
dWx0VG9KU09OSW5oZXJpdCk7CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZv
clRlc3REZWZhdWx0VG9KU09OSW5oZXJpdC5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigi
dW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1j
b21wYXJlIikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3REZWZhdWx0VG9KU09OSW5oZXJpdEZpbmFsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RGVmYXVsdFRvSlNPTkluaGVy
aXRGaW5hbC5jcHAJKHJldmlzaW9uIDI4NjAyNCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3REZWZhdWx0VG9KU09OSW5oZXJpdEZpbmFsLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtOTEsNyArOTEsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNv
U3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElD
X0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0RGVmYXVsdFRvSlNPTkluaGVyaXRG
aW5hbFByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFj
ZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0
YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAg
ewpAQCAtMzMyLDkgKzMzMiw5IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdERlZmF1bHRUb0pT
T05JbmgKICAgICAgICAgcmV0dXJuIHNwYWNlOwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19i
YXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0RGVmYXVsdFRvSlNPTklu
aGVyaXRGaW5hbD4gfHwgIUpTVGVzdERlZmF1bHRUb0pTT05Jbmhlcml0RmluYWw6Om5lZWRzRGVz
dHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rl
c3RydWN0aWJsZU9iamVjdCwgSlNUZXN0RGVmYXVsdFRvSlNPTkluaGVyaXRGaW5hbD4pCi0gICAg
ICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdERlZmF1bHRUb0pTT05Jbmhlcml0RmluYWwgPSBt
YWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0
cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVGVzdERlZmF1bHRUb0pTT05Jbmhl
cml0RmluYWwpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3REZWZhdWx0VG9KU09O
SW5oZXJpdEZpbmFsID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQo
dm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCksIEpTVGVzdERlZmF1
bHRUb0pTT05Jbmhlcml0RmluYWwpOwogICAgIGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vic3Bh
Y2VGb3JUZXN0RGVmYXVsdFRvSlNPTkluaGVyaXRGaW5hbCA9IG1ha2VVbmlxdWU8SXNvU3Vic3Bh
Y2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCks
IEpTVGVzdERlZmF1bHRUb0pTT05Jbmhlcml0RmluYWwpOworICAgICAgICBzcGFjZXMubV9zdWJz
cGFjZUZvclRlc3REZWZhdWx0VG9KU09OSW5oZXJpdEZpbmFsID0gbWFrZVVuaXF1ZTxJc29TdWJz
cGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBK
U1Rlc3REZWZhdWx0VG9KU09OSW5oZXJpdEZpbmFsKTsKICAgICBhdXRvKiBzcGFjZSA9IHNwYWNl
cy5tX3N1YnNwYWNlRm9yVGVzdERlZmF1bHRUb0pTT05Jbmhlcml0RmluYWwuZ2V0KCk7CiBJR05P
UkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JF
R0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0
ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGUuY3BwCShyZXZpc2lv
biAyODYwMjQpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTcwLDcgKzcwLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBz
dWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNP
X1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1
dGVQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7
CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KICAgICBzdGF0
aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsK
QEAgLTI0Niw5ICsyNDYsOSBAQCBKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3REZWxlZ2F0ZVRvU2hh
cmVkCiAgICAgICAgIHJldHVybiBzcGFjZTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFz
ZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdERlbGVnYXRlVG9TaGFyZWRT
eW50aGV0aWNBdHRyaWJ1dGU+IHx8ICFKU1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0
cmlidXRlOjpuZWVkc0Rlc3RydWN0aW9uKTsKICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFz
ZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdERlbGVnYXRlVG9TaGFyZWRT
eW50aGV0aWNBdHRyaWJ1dGU+KQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3REZWxl
Z2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4g
SVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxU
eXBlLmdldCgpLCBKU1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlKTsKKyAg
ICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0
dHJpYnV0ZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhl
YXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3REZWxlZ2F0ZVRv
U2hhcmVkU3ludGhldGljQXR0cmlidXRlKTsKICAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1
YnNwYWNlRm9yVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGUgPSBtYWtlVW5p
cXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENl
bGxUeXBlLmdldCgpLCBKU1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlKTsK
KyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRp
Y0F0dHJpYnV0ZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZt
LmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRo
ZXRpY0F0dHJpYnV0ZSk7CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRl
c3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlLmdldCgpOwogSUdOT1JFX1dBUk5J
TkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1
dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdERvbWFpblNlY3VyaXR5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RG9tYWluU2VjdXJpdHkuY3Bw
CShyZXZpc2lvbiAyODYwMjQpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0RG9tYWluU2VjdXJpdHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04MCw3ICs4
MCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3Io
SlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9T
SEFSQUJMRShKU1Rlc3REb21haW5TZWN1cml0eVByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJl
dHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVj
dFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0
dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6
SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAtMzIwLDkgKzMyMCw5IEBAIEpTQzo6SXNvU3Vi
c3BhY2UqIEpTVGVzdERvbWFpblNlY3VyaXR5OjoKICAgICAgICAgcmV0dXJuIHNwYWNlOwogICAg
IHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVj
dCwgSlNUZXN0RG9tYWluU2VjdXJpdHk+IHx8ICFKU1Rlc3REb21haW5TZWN1cml0eTo6bmVlZHNE
ZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpT
RGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3REb21haW5TZWN1cml0eT4pCi0gICAgICAgIHNwYWNl
cy5tX3N1YnNwYWNlRm9yVGVzdERvbWFpblNlY3VyaXR5ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFj
ZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENl
bGxUeXBlLmdldCgpLCBKU1Rlc3REb21haW5TZWN1cml0eSk7CisgICAgICAgIHNwYWNlcy5tX3N1
YnNwYWNlRm9yVGVzdERvbWFpblNlY3VyaXR5ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNP
X1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBl
KCksIEpTVGVzdERvbWFpblNlY3VyaXR5KTsKICAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1
YnNwYWNlRm9yVGVzdERvbWFpblNlY3VyaXR5ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNP
X1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNUZXN0
RG9tYWluU2VjdXJpdHkpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3REb21haW5T
ZWN1cml0eSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhl
YXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0RG9tYWluU2VjdXJpdHkpOwogICAgIGF1
dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0RG9tYWluU2VjdXJpdHkuZ2V0KCk7
CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5J
TkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RW5hYmxlZEJ5U2V0dGluZy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEVu
YWJsZWRCeVNldHRpbmcuY3BwCShyZXZpc2lvbiAyODYwMjQpCisrKyBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RW5hYmxlZEJ5U2V0dGluZy5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTkyLDcgKzkyLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1
YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19B
U1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdEVuYWJsZWRCeVNldHRpbmdQcm90b3R5
cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAg
IHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KICAgICBzdGF0aWMgSlNDOjpT
dHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKQEAgLTQ1OSw5
ICs0NTksOSBAQCBKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3RFbmFibGVkQnlTZXR0aW5nCiAgICAg
ICAgIHJldHVybiBzcGFjZTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpT
Qzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdEVuYWJsZWRCeVNldHRpbmc+IHx8ICFKU1Rl
c3RFbmFibGVkQnlTZXR0aW5nOjpuZWVkc0Rlc3RydWN0aW9uKTsKICAgICBpZiBjb25zdGV4cHIg
KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdEVuYWJs
ZWRCeVNldHRpbmc+KQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RFbmFibGVkQnlT
ZXR0aW5nID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVh
cCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmdldCgpLCBKU1Rlc3RFbmFibGVk
QnlTZXR0aW5nKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0RW5hYmxlZEJ5U2V0
dGluZyA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAs
IHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RFbmFibGVkQnlTZXR0
aW5nKTsKICAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEVuYWJsZWRC
eVNldHRpbmcgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5o
ZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlLmdldCgpLCBKU1Rlc3RFbmFibGVkQnlTZXR0aW5nKTsK
KyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0RW5hYmxlZEJ5U2V0dGluZyA9IG1ha2VV
bmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFw
Q2VsbFR5cGUoKSwgSlNUZXN0RW5hYmxlZEJ5U2V0dGluZyk7CiAgICAgYXV0byogc3BhY2UgPSBz
cGFjZXMubV9zdWJzcGFjZUZvclRlc3RFbmFibGVkQnlTZXR0aW5nLmdldCgpOwogSUdOT1JFX1dB
Uk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigi
dGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdEVuYWJsZWRGb3JDb250ZXh0LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RW5hYmxlZEZvckNv
bnRleHQuY3BwCShyZXZpc2lvbiAyODYwMjQpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0RW5hYmxlZEZvckNvbnRleHQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC02Niw3ICs2Niw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSog
c3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lT
T19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3RFbmFibGVkRm9yQ29udGV4dFByb3RvdHlwZSwgQmFz
ZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJu
ICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVy
ZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAtMTg2LDkgKzE4Niw5
IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdEVuYWJsZWRGb3JDb250ZXgKICAgICAgICAgcmV0
dXJuIHNwYWNlOwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rl
c3RydWN0aWJsZU9iamVjdCwgSlNUZXN0RW5hYmxlZEZvckNvbnRleHQ+IHx8ICFKU1Rlc3RFbmFi
bGVkRm9yQ29udGV4dDo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3RleHByIChzdGQ6
OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RFbmFibGVkRm9y
Q29udGV4dD4pCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEVuYWJsZWRGb3JDb250
ZXh0ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwg
dm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmdldCgpLCBKU1Rlc3RFbmFibGVkRm9y
Q29udGV4dCk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEVuYWJsZWRGb3JDb250
ZXh0ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwg
dm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCksIEpTVGVzdEVuYWJsZWRGb3JDb250
ZXh0KTsKICAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEVuYWJsZWRG
b3JDb250ZXh0ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0u
aGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNUZXN0RW5hYmxlZEZvckNvbnRleHQp
OworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RFbmFibGVkRm9yQ29udGV4dCA9IG1h
a2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxI
ZWFwQ2VsbFR5cGUoKSwgSlNUZXN0RW5hYmxlZEZvckNvbnRleHQpOwogICAgIGF1dG8qIHNwYWNl
ID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0RW5hYmxlZEZvckNvbnRleHQuZ2V0KCk7CiBJR05P
UkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JF
R0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRDb25zdHJ1Y3Rvci5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50Q29u
c3RydWN0b3IuY3BwCShyZXZpc2lvbiAyODYwMjQpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRDb25zdHJ1Y3Rvci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTE0Nyw3ICsxNDcsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3Bh
Y2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VS
VF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0RXZlbnRDb25zdHJ1Y3RvclByb3RvdHlwZSwg
QmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0
dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVj
dHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAtMzIxLDkgKzMy
MSw5IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdEV2ZW50Q29uc3RydWN0b3IKICAgICAgICAg
cmV0dXJuIHNwYWNlOwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpK
U0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0RXZlbnRDb25zdHJ1Y3Rvcj4gfHwgIUpTVGVzdEV2
ZW50Q29uc3RydWN0b3I6Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhwciAoc3Rk
Ojppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0RXZlbnRDb25z
dHJ1Y3Rvcj4pCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEV2ZW50Q29uc3RydWN0
b3IgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2
bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVGVzdEV2ZW50Q29uc3Ry
dWN0b3IpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RFdmVudENvbnN0cnVjdG9y
ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0u
ZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCksIEpTVGVzdEV2ZW50Q29uc3RydWN0b3Ip
OwogICAgIGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0RXZlbnRDb25zdHJ1
Y3RvciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAs
IHZtLmNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVGVzdEV2ZW50Q29uc3RydWN0b3IpOworICAg
ICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RFdmVudENvbnN0cnVjdG9yID0gbWFrZVVuaXF1
ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxs
VHlwZSgpLCBKU1Rlc3RFdmVudENvbnN0cnVjdG9yKTsKICAgICBhdXRvKiBzcGFjZSA9IHNwYWNl
cy5tX3N1YnNwYWNlRm9yVGVzdEV2ZW50Q29uc3RydWN0b3IuZ2V0KCk7CiBJR05PUkVfV0FSTklO
R1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0
b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0RXZlbnRUYXJnZXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudFRhcmdldC5jcHAJKHJldmlz
aW9uIDI4NjAyNCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RFdmVudFRhcmdldC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTczLDcgKzczLDcgQEAgcHVi
bGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2
bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpT
VGVzdEV2ZW50VGFyZ2V0UHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFp
bk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAg
ICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYg
dm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3Rv
dHlwZSkKICAgICB7CkBAIC0yNjIsOSArMjYyLDkgQEAgSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0
RXZlbnRUYXJnZXQ6OnN1YgogICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fzc2Vy
dChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RFdmVu
dFRhcmdldD4gfHwgIUpTVGVzdEV2ZW50VGFyZ2V0OjpuZWVkc0Rlc3RydWN0aW9uKTsKICAgICBp
ZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3Qs
IEpTVGVzdEV2ZW50VGFyZ2V0PikKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0RXZl
bnRUYXJnZXQgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5o
ZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVGVzdEV2ZW50
VGFyZ2V0KTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0RXZlbnRUYXJnZXQgPSBt
YWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0
cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0RXZlbnRUYXJnZXQpOwogICAgIGVs
c2UKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0RXZlbnRUYXJnZXQgPSBtYWtlVW5p
cXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENl
bGxUeXBlLmdldCgpLCBKU1Rlc3RFdmVudFRhcmdldCk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNw
YWNlRm9yVGVzdEV2ZW50VGFyZ2V0ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQ
QUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RFdmVudFRhcmdl
dCk7CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RFdmVudFRhcmdl
dC5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJR05P
UkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFeGNlcHRpb24uY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RF
eGNlcHRpb24uY3BwCShyZXZpc2lvbiAyODYwMjQpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXhjZXB0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NjYsNyArNjYsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNw
YWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VC
U1BBQ0VfU0hBUkFCTEUoSlNUZXN0RXhjZXB0aW9uUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAg
cmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2Jq
ZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1
Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlND
OjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC0xODcsOSArMTg3LDkgQEAgSlNDOjpJc29T
dWJzcGFjZSogSlNUZXN0RXhjZXB0aW9uOjpzdWJzcAogICAgICAgICByZXR1cm4gc3BhY2U7CiAg
ICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2Jq
ZWN0LCBKU1Rlc3RFeGNlcHRpb24+IHx8ICFKU1Rlc3RFeGNlcHRpb246Om5lZWRzRGVzdHJ1Y3Rp
b24pOwogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0
aWJsZU9iamVjdCwgSlNUZXN0RXhjZXB0aW9uPikKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VG
b3JUZXN0RXhjZXB0aW9uID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lO
SVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmdldCgpLCBKU1Rl
c3RFeGNlcHRpb24pOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RFeGNlcHRpb24g
PSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5k
ZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0RXhjZXB0aW9uKTsKICAgICBl
bHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEV4Y2VwdGlvbiA9IG1ha2VVbmlx
dWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2Vs
bFR5cGUuZ2V0KCksIEpTVGVzdEV4Y2VwdGlvbik7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNl
Rm9yVGVzdEV4Y2VwdGlvbiA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9J
TklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0RXhjZXB0aW9uKTsKICAg
ICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEV4Y2VwdGlvbi5nZXQoKTsK
IElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklO
R1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RHZW5lcmF0ZUFkZE9wYXF1ZVJvb3QuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RHZW5lcmF0ZUFkZE9wYXF1ZVJvb3QuY3BwCShyZXZpc2lvbiAyODYwMjQpCisrKyBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2VuZXJhdGVBZGRPcGFxdWVS
b290LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjYsNyArNjYsNyBAQCBwdWJsaWM6CiAgICAgc3Rh
dGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAg
ICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0R2VuZXJhdGVB
ZGRPcGFxdWVSb290UHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9i
amVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9
CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0s
IEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlw
ZSkKICAgICB7CkBAIC0xODcsOSArMTg3LDkgQEAgSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0R2Vu
ZXJhdGVBZGRPcGFxdQogICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fzc2VydChz
dGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RHZW5lcmF0
ZUFkZE9wYXF1ZVJvb3Q+IHx8ICFKU1Rlc3RHZW5lcmF0ZUFkZE9wYXF1ZVJvb3Q6Om5lZWRzRGVz
dHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rl
c3RydWN0aWJsZU9iamVjdCwgSlNUZXN0R2VuZXJhdGVBZGRPcGFxdWVSb290PikKLSAgICAgICAg
c3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0R2VuZXJhdGVBZGRPcGFxdWVSb290ID0gbWFrZVVuaXF1
ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxl
T2JqZWN0SGVhcENlbGxUeXBlLmdldCgpLCBKU1Rlc3RHZW5lcmF0ZUFkZE9wYXF1ZVJvb3QpOwor
ICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RHZW5lcmF0ZUFkZE9wYXF1ZVJvb3QgPSBt
YWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0
cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0R2VuZXJhdGVBZGRPcGFxdWVSb290
KTsKICAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEdlbmVyYXRlQWRk
T3BhcXVlUm9vdCA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZt
LmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVGVzdEdlbmVyYXRlQWRkT3BhcXVl
Um9vdCk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEdlbmVyYXRlQWRkT3BhcXVl
Um9vdCA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAs
IHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0R2VuZXJhdGVBZGRPcGFxdWVSb290KTsKICAg
ICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEdlbmVyYXRlQWRkT3BhcXVl
Um9vdC5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJ
R05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RHZW5lcmF0ZUlzUmVhY2hh
YmxlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZS5jcHAJKHJldmlzaW9uIDI4NjAyNCkKKysr
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RHZW5lcmF0ZUlz
UmVhY2hhYmxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjYsNyArNjYsNyBAQCBwdWJsaWM6CiAg
ICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAg
IHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0R2Vu
ZXJhdGVJc1JlYWNoYWJsZVByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxh
aW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAg
ICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0m
IHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90
b3R5cGUpCiAgICAgewpAQCAtMTk3LDkgKzE5Nyw5IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVz
dEdlbmVyYXRlSXNSZWFjaGEKICAgICAgICAgcmV0dXJuIHNwYWNlOwogICAgIHN0YXRpY19hc3Nl
cnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0R2Vu
ZXJhdGVJc1JlYWNoYWJsZT4gfHwgIUpTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGU6Om5lZWRzRGVz
dHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rl
c3RydWN0aWJsZU9iamVjdCwgSlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZT4pCi0gICAgICAgIHNw
YWNlcy5tX3N1YnNwYWNlRm9yVGVzdEdlbmVyYXRlSXNSZWFjaGFibGUgPSBtYWtlVW5pcXVlPElz
b1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmpl
Y3RIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGUpOworICAgICAg
ICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlID0gbWFrZVVuaXF1
ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxl
T2JqZWN0SGVhcENlbGxUeXBlKCksIEpTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGUpOwogICAgIGVs
c2UKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZSA9
IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNl
bGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGUpOworICAgICAg
ICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlID0gbWFrZVVuaXF1
ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxs
VHlwZSgpLCBKU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlKTsKICAgICBhdXRvKiBzcGFjZSA9IHNw
YWNlcy5tX3N1YnNwYWNlRm9yVGVzdEdlbmVyYXRlSXNSZWFjaGFibGUuZ2V0KCk7CiBJR05PUkVf
V0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lO
KCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2xvYmFsT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2xvYmFsT2JqZWN0LmNw
cAkocmV2aXNpb24gMjg2MDI0KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdEdsb2JhbE9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE4MTQsNyAr
MTgxNCw3IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdEdsb2JhbE9iamVjdDo6c3UKICAgICBh
dXRvJiBzcGFjZXMgPSBjbGllbnREYXRhLnN1YnNwYWNlcygpOwogICAgIGlmIChhdXRvKiBzcGFj
ZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEdsb2JhbE9iamVjdC5nZXQoKSkKICAgICAgICAg
cmV0dXJuIHNwYWNlOwotICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEdsb2JhbE9iamVjdCA9
IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIGNsaWVu
dERhdGEubV9oZWFwQ2VsbFR5cGVGb3JKU1Rlc3RHbG9iYWxPYmplY3QuZ2V0KCksIEpTVGVzdEds
b2JhbE9iamVjdCk7CisgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0R2xvYmFsT2JqZWN0ID0g
bWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKmNsaWVu
dERhdGEubV9oZWFwQ2VsbFR5cGVGb3JKU1Rlc3RHbG9iYWxPYmplY3QsIEpTVGVzdEdsb2JhbE9i
amVjdCk7CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RHbG9iYWxP
YmplY3QuZ2V0KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQog
SUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2xvYmFsT2JqZWN0LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdEdsb2JhbE9iamVjdC5oCShyZXZpc2lvbiAyODYwMjQpCisrKyBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2xvYmFsT2JqZWN0LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTk4LDcgKzk4LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNl
KiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRf
SVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdEdsb2JhbE9iamVjdFByb3RvdHlwZSwgQmFzZSk7
Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2
bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSog
Y3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpJbmRleDogU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZp
ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyLmNwcAkocmV2aXNpb24gMjg2MDI0
KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEluZGV4
ZWRTZXR0ZXJOb0lkZW50aWZpZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NSw3ICs2NSw3IEBA
IHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpW
TSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJM
RShKU1Rlc3RJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyUHJvdG90eXBlLCBCYXNlKTsKLSAgICAg
ICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWlu
T2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVT
dHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
SlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC0yNzYsOSArMjc2LDkgQEAgSlNDOjpJ
c29TdWJzcGFjZSogSlNUZXN0SW5kZXhlZFNldHRlck5vSQogICAgICAgICByZXR1cm4gc3BhY2U7
CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxl
T2JqZWN0LCBKU1Rlc3RJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyPiB8fCAhSlNUZXN0SW5kZXhl
ZFNldHRlck5vSWRlbnRpZmllcjo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3RleHBy
IChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RJbmRl
eGVkU2V0dGVyTm9JZGVudGlmaWVyPikKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0
SW5kZXhlZFNldHRlck5vSWRlbnRpZmllciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19T
VUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5n
ZXQoKSwgSlNUZXN0SW5kZXhlZFNldHRlck5vSWRlbnRpZmllcik7CisgICAgICAgIHNwYWNlcy5t
X3N1YnNwYWNlRm9yVGVzdEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXIgPSBtYWtlVW5pcXVlPElz
b1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmpl
Y3RIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0SW5kZXhlZFNldHRlck5vSWRlbnRpZmllcik7CiAgICAg
ZWxzZQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RJbmRleGVkU2V0dGVyTm9JZGVu
dGlmaWVyID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVh
cCwgdm0uY2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNUZXN0SW5kZXhlZFNldHRlck5vSWRlbnRp
Zmllcik7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEluZGV4ZWRTZXR0ZXJOb0lk
ZW50aWZpZXIgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5o
ZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCksIEpTVGVzdEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZp
ZXIpOwogICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0SW5kZXhlZFNl
dHRlck5vSWRlbnRpZmllci5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFi
bGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbmRl
eGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbmRleGVkU2V0dGVyVGhyb3dpbmdF
eGNlcHRpb24uY3BwCShyZXZpc2lvbiAyODYwMjQpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNjUsNyArNjUsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpT
Qzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAg
U1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0SW5kZXhlZFNldHRlclRo
cm93aW5nRXhjZXB0aW9uUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFp
bk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAg
ICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYg
dm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3Rv
dHlwZSkKICAgICB7CkBAIC0yNzYsOSArMjc2LDkgQEAgSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0
SW5kZXhlZFNldHRlclRocgogICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fzc2Vy
dChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RJbmRl
eGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24+IHx8ICFKU1Rlc3RJbmRleGVkU2V0dGVyVGhyb3dp
bmdFeGNlcHRpb246Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjpp
c19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0SW5kZXhlZFNldHRl
clRocm93aW5nRXhjZXB0aW9uPikKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0SW5k
ZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNP
X1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBl
LmdldCgpLCBKU1Rlc3RJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24pOworICAgICAgICBz
cGFjZXMubV9zdWJzcGFjZUZvclRlc3RJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24gPSBt
YWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0
cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0SW5kZXhlZFNldHRlclRocm93aW5n
RXhjZXB0aW9uKTsKICAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdElu
ZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbiA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElT
T19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVGVz
dEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbik7CisgICAgICAgIHNwYWNlcy5tX3N1YnNw
YWNlRm9yVGVzdEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbiA9IG1ha2VVbmlxdWU8SXNv
U3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUo
KSwgSlNUZXN0SW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uKTsKICAgICBhdXRvKiBzcGFj
ZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlv
bi5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJR05P
UkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbmRleGVkU2V0dGVyV2l0aElk
ZW50aWZpZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXIuY3BwCShyZXZpc2lv
biAyODYwMjQpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0SW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzMs
NyArNzMsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNl
Rm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BB
Q0VfU0hBUkFCTEUoSlNUZXN0SW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyUHJvdG90eXBlLCBC
YXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1
cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0
dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC0zMDgsOSArMzA4
LDkgQEAgSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0SW5kZXhlZFNldHRlcldpdAogICAgICAgICBy
ZXR1cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpT
RGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXI+IHx8
ICFKU1Rlc3RJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXI6Om5lZWRzRGVzdHJ1Y3Rpb24pOwog
ICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9i
amVjdCwgSlNUZXN0SW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyPikKLSAgICAgICAgc3BhY2Vz
Lm1fc3Vic3BhY2VGb3JUZXN0SW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyID0gbWFrZVVuaXF1
ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxl
T2JqZWN0SGVhcENlbGxUeXBlLmdldCgpLCBKU1Rlc3RJbmRleGVkU2V0dGVyV2l0aElkZW50aWZp
ZXIpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RJbmRleGVkU2V0dGVyV2l0aElk
ZW50aWZpZXIgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5o
ZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0SW5kZXhlZFNl
dHRlcldpdGhJZGVudGlmaWVyKTsKICAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNl
Rm9yVGVzdEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllciA9IG1ha2VVbmlxdWU8SXNvU3Vic3Bh
Y2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCks
IEpTVGVzdEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllcik7CisgICAgICAgIHNwYWNlcy5tX3N1
YnNwYWNlRm9yVGVzdEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllciA9IG1ha2VVbmlxdWU8SXNv
U3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUo
KSwgSlNUZXN0SW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyKTsKICAgICBhdXRvKiBzcGFjZSA9
IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllci5nZXQo
KTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVfV0FS
TklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2UuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZh
Y2UuY3BwCShyZXZpc2lvbiAyODYwMjQpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTgxLDcg
KzE4MSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VG
b3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFD
RV9TSEFSQUJMRShKU1Rlc3RJbnRlcmZhY2VQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1
cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RT
cGFjZSgpOwogICAgIH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVy
ZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpT
VmFsdWUgcHJvdG90eXBlKQogICAgIHsKQEAgLTExMDQsOSArMTEwNCw5IEBAIHB1YmxpYzoKICAg
ICAgICAgICAgIHJldHVybiBzcGFjZTsKICAgICAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jh
c2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBUZXN0SW50ZXJmYWNlSXRlcmF0b3I+
IHx8ICFUZXN0SW50ZXJmYWNlSXRlcmF0b3I6Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAgICAgICBp
ZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3Qs
IFRlc3RJbnRlcmZhY2VJdGVyYXRvcj4pCi0gICAgICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZv
clRlc3RJbnRlcmZhY2VJdGVyYXRvciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJT
UEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5nZXQo
KSwgVGVzdEludGVyZmFjZUl0ZXJhdG9yKTsKKyAgICAgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNl
Rm9yVGVzdEludGVyZmFjZUl0ZXJhdG9yID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NV
QlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCks
IFRlc3RJbnRlcmZhY2VJdGVyYXRvcik7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHNwYWNl
cy5tX3N1YnNwYWNlRm9yVGVzdEludGVyZmFjZUl0ZXJhdG9yID0gbWFrZVVuaXF1ZTxJc29TdWJz
cGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZS5nZXQo
KSwgVGVzdEludGVyZmFjZUl0ZXJhdG9yKTsKKyAgICAgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNl
Rm9yVGVzdEludGVyZmFjZUl0ZXJhdG9yID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NV
QlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBUZXN0SW50ZXJmYWNl
SXRlcmF0b3IpOwogICAgICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVz
dEludGVyZmFjZUl0ZXJhdG9yLmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNo
YWJsZS1jb2RlIikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUi
KQpAQCAtMTE5Niw5ICsxMTk2LDkgQEAgSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0SW50ZXJmYWNl
OjpzdWJzcAogICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6Omlz
X2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RJbnRlcmZhY2U+IHx8
ICFKU1Rlc3RJbnRlcmZhY2U6Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhwciAo
c3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0SW50ZXJm
YWNlPikKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0SW50ZXJmYWNlID0gbWFrZVVu
aXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3Rp
YmxlT2JqZWN0SGVhcENlbGxUeXBlLmdldCgpLCBKU1Rlc3RJbnRlcmZhY2UpOworICAgICAgICBz
cGFjZXMubV9zdWJzcGFjZUZvclRlc3RJbnRlcmZhY2UgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNl
PiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2Vs
bFR5cGUoKSwgSlNUZXN0SW50ZXJmYWNlKTsKICAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1
YnNwYWNlRm9yVGVzdEludGVyZmFjZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJT
UEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVGVzdEludGVy
ZmFjZSk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEludGVyZmFjZSA9IG1ha2VV
bmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFw
Q2VsbFR5cGUoKSwgSlNUZXN0SW50ZXJmYWNlKTsKICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5t
X3N1YnNwYWNlRm9yVGVzdEludGVyZmFjZS5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigi
dW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1j
b21wYXJlIikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RJbnRlcmZhY2VMZWFkaW5nVW5kZXJzY29yZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZUxlYWRpbmdV
bmRlcnNjb3JlLmNwcAkocmV2aXNpb24gMjg2MDI0KQorKysgU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZUxlYWRpbmdVbmRlcnNjb3JlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNjYsNyArNjYsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6
SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RB
VElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0SW50ZXJmYWNlTGVhZGluZ1Vu
ZGVyc2NvcmVQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0
U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KICAg
ICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlND
OjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQog
ICAgIHsKQEAgLTE4Nyw5ICsxODcsOSBAQCBKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3RJbnRlcmZh
Y2VMZWFkaW5nCiAgICAgICAgIHJldHVybiBzcGFjZTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6
aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdEludGVyZmFjZUxl
YWRpbmdVbmRlcnNjb3JlPiB8fCAhSlNUZXN0SW50ZXJmYWNlTGVhZGluZ1VuZGVyc2NvcmU6Om5l
ZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlND
OjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0SW50ZXJmYWNlTGVhZGluZ1VuZGVyc2NvcmU+
KQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RJbnRlcmZhY2VMZWFkaW5nVW5kZXJz
Y29yZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAs
IHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNUZXN0SW50ZXJmYWNl
TGVhZGluZ1VuZGVyc2NvcmUpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RJbnRl
cmZhY2VMZWFkaW5nVW5kZXJzY29yZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJT
UEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBK
U1Rlc3RJbnRlcmZhY2VMZWFkaW5nVW5kZXJzY29yZSk7CiAgICAgZWxzZQotICAgICAgICBzcGFj
ZXMubV9zdWJzcGFjZUZvclRlc3RJbnRlcmZhY2VMZWFkaW5nVW5kZXJzY29yZSA9IG1ha2VVbmlx
dWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2Vs
bFR5cGUuZ2V0KCksIEpTVGVzdEludGVyZmFjZUxlYWRpbmdVbmRlcnNjb3JlKTsKKyAgICAgICAg
c3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0SW50ZXJmYWNlTGVhZGluZ1VuZGVyc2NvcmUgPSBtYWtl
VW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVh
cENlbGxUeXBlKCksIEpTVGVzdEludGVyZmFjZUxlYWRpbmdVbmRlcnNjb3JlKTsKICAgICBhdXRv
KiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEludGVyZmFjZUxlYWRpbmdVbmRlcnNj
b3JlLmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKIElH
Tk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRleDogU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEl0ZXJhYmxlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
SXRlcmFibGUuY3BwCShyZXZpc2lvbiAyODYwMjQpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SXRlcmFibGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03
NSw3ICs3NSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3Bh
Y2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJT
UEFDRV9TSEFSQUJMRShKU1Rlc3RJdGVyYWJsZVByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJl
dHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVj
dFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0
dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6
SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAtMjAxLDkgKzIwMSw5IEBAIHB1YmxpYzoKICAg
ICAgICAgICAgIHJldHVybiBzcGFjZTsKICAgICAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jh
c2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBUZXN0SXRlcmFibGVJdGVyYXRvcj4g
fHwgIVRlc3RJdGVyYWJsZUl0ZXJhdG9yOjpuZWVkc0Rlc3RydWN0aW9uKTsKICAgICAgICAgaWYg
Y29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBU
ZXN0SXRlcmFibGVJdGVyYXRvcj4pCi0gICAgICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRl
c3RJdGVyYWJsZUl0ZXJhdG9yID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNF
X0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmdldCgpLCBU
ZXN0SXRlcmFibGVJdGVyYXRvcik7CisgICAgICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRl
c3RJdGVyYWJsZUl0ZXJhdG9yID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNF
X0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCksIFRlc3RJ
dGVyYWJsZUl0ZXJhdG9yKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgc3BhY2VzLm1fc3Vi
c3BhY2VGb3JUZXN0SXRlcmFibGVJdGVyYXRvciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElT
T19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIFRlc3RJ
dGVyYWJsZUl0ZXJhdG9yKTsKKyAgICAgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEl0
ZXJhYmxlSXRlcmF0b3IgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5J
VCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCksIFRlc3RJdGVyYWJsZUl0ZXJhdG9yKTsK
ICAgICAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RJdGVyYWJsZUl0
ZXJhdG9yLmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikK
IElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpAQCAtMjkzLDkg
KzI5Myw5IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdEl0ZXJhYmxlOjpzdWJzcGEKICAgICAg
ICAgcmV0dXJuIHNwYWNlOwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlND
OjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0SXRlcmFibGU+IHx8ICFKU1Rlc3RJdGVyYWJs
ZTo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2Zf
djxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RJdGVyYWJsZT4pCi0gICAgICAgIHNw
YWNlcy5tX3N1YnNwYWNlRm9yVGVzdEl0ZXJhYmxlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4g
SVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxU
eXBlLmdldCgpLCBKU1Rlc3RJdGVyYWJsZSk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9y
VGVzdEl0ZXJhYmxlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQo
dm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCksIEpTVGVzdEl0ZXJh
YmxlKTsKICAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEl0ZXJhYmxl
ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0u
Y2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNUZXN0SXRlcmFibGUpOworICAgICAgICBzcGFjZXMu
bV9zdWJzcGFjZUZvclRlc3RJdGVyYWJsZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19T
VUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0SXRlcmFi
bGUpOwogICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0SXRlcmFibGUu
Z2V0KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JF
X1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3Iu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rvci5jcHAJKHJldmlzaW9uIDI4NjAyNCkKKysrIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RKU0J1aWx0aW5Db25z
dHJ1Y3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY5LDcgKzY5LDcgQEAgcHVibGljOgogICAg
IHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7
CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdEpTQnVp
bHRpbkNvbnN0cnVjdG9yUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFp
bk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAg
ICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYg
dm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3Rv
dHlwZSkKICAgICB7CkBAIC0yMzAsOSArMjMwLDkgQEAgSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0
SlNCdWlsdGluQ29uc3RydQogICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fzc2Vy
dChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RKU0J1
aWx0aW5Db25zdHJ1Y3Rvcj4gfHwgIUpTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yOjpuZWVkc0Rl
c3RydWN0aW9uKTsKICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNE
ZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yPikKLSAgICAgICAg
c3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0SlNCdWlsdGluQ29uc3RydWN0b3IgPSBtYWtlVW5pcXVl
PElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVP
YmplY3RIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yKTsKKyAg
ICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0SlNCdWlsdGluQ29uc3RydWN0b3IgPSBtYWtl
VW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVj
dGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3IpOwog
ICAgIGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0SlNCdWlsdGluQ29uc3Ry
dWN0b3IgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFw
LCB2bS5jZWxsSGVhcENlbGxUeXBlLmdldCgpLCBKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rvcik7
CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yID0g
bWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2Vs
bEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rvcik7CiAgICAgYXV0byog
c3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rvci5nZXQo
KTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVfV0FS
TklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb24uY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb24uY3BwCShyZXZpc2lvbiAyODYwMjQpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TGVnYWN5RmFjdG9yeUZ1
bmN0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjcsNyArNjcsNyBAQCBwdWJsaWM6CiAgICAg
c3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsK
ICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0TGVnYWN5
RmFjdG9yeUZ1bmN0aW9uUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFp
bk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAg
ICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYg
dm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3Rv
dHlwZSkKICAgICB7CkBAIC0yMzAsOSArMjMwLDkgQEAgSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0
TGVnYWN5RmFjdG9yeUZ1bgogICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fzc2Vy
dChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RMZWdh
Y3lGYWN0b3J5RnVuY3Rpb24+IHx8ICFKU1Rlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb246Om5lZWRz
RGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpK
U0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uPikKLSAgICAg
ICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uID0gbWFrZVVu
aXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3Rp
YmxlT2JqZWN0SGVhcENlbGxUeXBlLmdldCgpLCBKU1Rlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb24p
OworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb24g
PSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5k
ZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0
aW9uKTsKICAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdExlZ2FjeUZh
Y3RvcnlGdW5jdGlvbiA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklU
KHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVGVzdExlZ2FjeUZhY3RvcnlG
dW5jdGlvbik7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdExlZ2FjeUZhY3RvcnlG
dW5jdGlvbiA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhl
YXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uKTsK
ICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdExlZ2FjeUZhY3RvcnlG
dW5jdGlvbi5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIp
CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RMZWdhY3lOb0ludGVy
ZmFjZU9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0LmNwcAkocmV2aXNpb24g
Mjg2MDI0KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtODUsNyArODUs
NyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpT
Qzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hB
UkFCTEUoSlNUZXN0TGVnYWN5Tm9JbnRlcmZhY2VPYmplY3RQcm90b3R5cGUsIEJhc2UpOwotICAg
ICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxh
aW5PYmplY3RTcGFjZSgpOwogICAgIH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0
ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKQEAgLTMzNSw5ICszMzUsOSBAQCBKU0M6
Oklzb1N1YnNwYWNlKiBKU1Rlc3RMZWdhY3lOb0ludGVyZmFjCiAgICAgICAgIHJldHVybiBzcGFj
ZTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGli
bGVPYmplY3QsIEpTVGVzdExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0PiB8fCAhSlNUZXN0TGVnYWN5
Tm9JbnRlcmZhY2VPYmplY3Q6Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhwciAo
c3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0TGVnYWN5
Tm9JbnRlcmZhY2VPYmplY3Q+KQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RMZWdh
Y3lOb0ludGVyZmFjZU9iamVjdCA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFD
RV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5nZXQoKSwg
SlNUZXN0TGVnYWN5Tm9JbnRlcmZhY2VPYmplY3QpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFj
ZUZvclRlc3RMZWdhY3lOb0ludGVyZmFjZU9iamVjdCA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+
IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxs
VHlwZSgpLCBKU1Rlc3RMZWdhY3lOb0ludGVyZmFjZU9iamVjdCk7CiAgICAgZWxzZQotICAgICAg
ICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RMZWdhY3lOb0ludGVyZmFjZU9iamVjdCA9IG1ha2VV
bmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFw
Q2VsbFR5cGUuZ2V0KCksIEpTVGVzdExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0KTsKKyAgICAgICAg
c3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TGVnYWN5Tm9JbnRlcmZhY2VPYmplY3QgPSBtYWtlVW5p
cXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENl
bGxUeXBlKCksIEpTVGVzdExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0KTsKICAgICBhdXRvKiBzcGFj
ZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0LmdldCgp
OwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKIElHTk9SRV9XQVJO
SU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRleDogU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zLmNwcAkocmV2aXNpb24gMjg2MDI0KQorKysgU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdExlZ2FjeU92ZXJyaWRl
QnVpbHRJbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03Myw3ICs3Myw3IEBAIHB1YmxpYzoKICAg
ICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAg
ewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3RMZWdh
Y3lPdmVycmlkZUJ1aWx0SW5zUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5w
bGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsK
ICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpW
TSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHBy
b3RvdHlwZSkKICAgICB7CkBAIC0yNDksOSArMjQ5LDkgQEAgSlNDOjpJc29TdWJzcGFjZSogSlNU
ZXN0TGVnYWN5T3ZlcnJpZGVCdQogICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fz
c2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RM
ZWdhY3lPdmVycmlkZUJ1aWx0SW5zPiB8fCAhSlNUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdEluczo6
bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxK
U0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zPikK
LSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdElucyA9
IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRl
c3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNUZXN0TGVnYWN5T3ZlcnJpZGVC
dWlsdElucyk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdExlZ2FjeU92ZXJyaWRl
QnVpbHRJbnMgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5o
ZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0TGVnYWN5T3Zl
cnJpZGVCdWlsdElucyk7CiAgICAgZWxzZQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRl
c3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NV
QlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNUZXN0TGVn
YWN5T3ZlcnJpZGVCdWlsdElucyk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdExl
Z2FjeU92ZXJyaWRlQnVpbHRJbnMgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BB
Q0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCksIEpTVGVzdExlZ2FjeU92ZXJy
aWRlQnVpbHRJbnMpOwogICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0
TGVnYWN5T3ZlcnJpZGVCdWlsdElucy5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5y
ZWFjaGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21w
YXJlIikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RNYXBMaWtlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0TWFwTGlrZS5jcHAJKHJldmlzaW9uIDI4NjAyNCkKKysrIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RNYXBMaWtlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtODIsNyArODIsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNv
U3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElD
X0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0TWFwTGlrZVByb3RvdHlwZSwgQmFz
ZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJu
ICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVy
ZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAtMzY2LDkgKzM2Niw5
IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdE1hcExpa2U6OnN1YnNwYWMKICAgICAgICAgcmV0
dXJuIHNwYWNlOwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rl
c3RydWN0aWJsZU9iamVjdCwgSlNUZXN0TWFwTGlrZT4gfHwgIUpTVGVzdE1hcExpa2U6Om5lZWRz
RGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpK
U0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0TWFwTGlrZT4pCi0gICAgICAgIHNwYWNlcy5tX3N1
YnNwYWNlRm9yVGVzdE1hcExpa2UgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BB
Q0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuZ2V0KCks
IEpTVGVzdE1hcExpa2UpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RNYXBMaWtl
ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0u
ZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCksIEpTVGVzdE1hcExpa2UpOwogICAgIGVs
c2UKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TWFwTGlrZSA9IG1ha2VVbmlxdWU8
SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5
cGUuZ2V0KCksIEpTVGVzdE1hcExpa2UpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRl
c3RNYXBMaWtlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0u
aGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RNYXBMaWtlKTsKICAgICBhdXRvKiBz
cGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE1hcExpa2UuZ2V0KCk7CiBJR05PUkVfV0FS
TklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0
YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0TWFwTGlrZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9ucy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dE1hcExpa2VXaXRoT3ZlcnJpZGRlbk9wZXJhdGlvbnMuY3BwCShyZXZpc2lvbiAyODYwMjQpCisr
KyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TWFwTGlrZVdp
dGhPdmVycmlkZGVuT3BlcmF0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg2LDcgKzg2LDcg
QEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6
OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJB
QkxFKEpTVGVzdE1hcExpa2VXaXRoT3ZlcnJpZGRlbk9wZXJhdGlvbnNQcm90b3R5cGUsIEJhc2Up
OwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAm
dm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUq
IGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKQEAgLTM4MCw5ICszODAsOSBA
QCBKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3RNYXBMaWtlV2l0aE92ZXJyCiAgICAgICAgIHJldHVy
biBzcGFjZTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0
cnVjdGlibGVPYmplY3QsIEpTVGVzdE1hcExpa2VXaXRoT3ZlcnJpZGRlbk9wZXJhdGlvbnM+IHx8
ICFKU1Rlc3RNYXBMaWtlV2l0aE92ZXJyaWRkZW5PcGVyYXRpb25zOjpuZWVkc0Rlc3RydWN0aW9u
KTsKICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGli
bGVPYmplY3QsIEpTVGVzdE1hcExpa2VXaXRoT3ZlcnJpZGRlbk9wZXJhdGlvbnM+KQotICAgICAg
ICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RNYXBMaWtlV2l0aE92ZXJyaWRkZW5PcGVyYXRpb25z
ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0u
ZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmdldCgpLCBKU1Rlc3RNYXBMaWtlV2l0aE92
ZXJyaWRkZW5PcGVyYXRpb25zKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TWFw
TGlrZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9ucyA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElT
T19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlw
ZSgpLCBKU1Rlc3RNYXBMaWtlV2l0aE92ZXJyaWRkZW5PcGVyYXRpb25zKTsKICAgICBlbHNlCi0g
ICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE1hcExpa2VXaXRoT3ZlcnJpZGRlbk9wZXJh
dGlvbnMgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFw
LCB2bS5jZWxsSGVhcENlbGxUeXBlLmdldCgpLCBKU1Rlc3RNYXBMaWtlV2l0aE92ZXJyaWRkZW5P
cGVyYXRpb25zKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TWFwTGlrZVdpdGhP
dmVycmlkZGVuT3BlcmF0aW9ucyA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFD
RV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0TWFwTGlrZVdpdGhP
dmVycmlkZGVuT3BlcmF0aW9ucyk7CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFj
ZUZvclRlc3RNYXBMaWtlV2l0aE92ZXJyaWRkZW5PcGVyYXRpb25zLmdldCgpOwogSUdOT1JFX1dB
Uk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigi
dGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlck5vSWRlbnRpZmllci5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlck5vSWRlbnRpZmllci5jcHAJKHJldmlzaW9uIDI4NjAy
NCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1l
ZEFuZEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02Niw3
ICs2Niw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VG
b3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFD
RV9TSEFSQUJMRShKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXJQcm90b3R5
cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAg
IHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KICAgICBzdGF0aWMgSlNDOjpT
dHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKQEAgLTM0NCw5
ICszNDQsOSBAQCBKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTCiAgICAg
ICAgIHJldHVybiBzcGFjZTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpT
Qzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlck5vSWRl
bnRpZmllcj4gfHwgIUpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlck5vSWRlbnRpZmllcjo6bmVl
ZHNEZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6
OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJOb0lkZW50
aWZpZXI+KQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZEFuZEluZGV4ZWRT
ZXR0ZXJOb0lkZW50aWZpZXIgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0Vf
SU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuZ2V0KCksIEpT
VGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlck5vSWRlbnRpZmllcik7CisgICAgICAgIHNwYWNlcy5t
X3N1YnNwYWNlRm9yVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlck5vSWRlbnRpZmllciA9IG1ha2VV
bmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0
aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJOb0lk
ZW50aWZpZXIpOwogICAgIGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFt
ZWRBbmRJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4g
SVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNU
ZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyKTsKKyAgICAgICAgc3BhY2VzLm1f
c3Vic3BhY2VGb3JUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyID0gbWFrZVVu
aXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBD
ZWxsVHlwZSgpLCBKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXIpOwogICAg
IGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRBbmRJbmRleGVkU2V0
dGVyTm9JZGVudGlmaWVyLmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJs
ZS1jb2RlIikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJ
bmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVk
QW5kSW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRBbmRJbmRleGVk
U2V0dGVyVGhyb3dpbmdFeGNlcHRpb24uY3BwCShyZXZpc2lvbiAyODYwMjQpCisrKyBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0
dGVyVGhyb3dpbmdFeGNlcHRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02Niw3ICs2Niw3IEBA
IHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpW
TSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJM
RShKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvblByb3RvdHlwZSwg
QmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0
dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVj
dHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAtMzQ0LDkgKzM0
NCw5IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdE5hbWVkQW5kSW5kZXhlZFMKICAgICAgICAg
cmV0dXJuIHNwYWNlOwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpK
U0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyVGhyb3dpbmdF
eGNlcHRpb24+IHx8ICFKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlv
bjo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2Zf
djxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJU
aHJvd2luZ0V4Y2VwdGlvbj4pCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVk
QW5kSW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFj
ZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENl
bGxUeXBlLmdldCgpLCBKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlv
bik7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRl
clRocm93aW5nRXhjZXB0aW9uID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNF
X0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCksIEpTVGVz
dE5hbWVkQW5kSW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uKTsKICAgICBlbHNlCi0gICAg
ICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlclRocm93aW5n
RXhjZXB0aW9uID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0u
aGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0
dGVyVGhyb3dpbmdFeGNlcHRpb24pOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RO
YW1lZEFuZEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbiA9IG1ha2VVbmlxdWU8SXNvU3Vi
c3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwg
SlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24pOwogICAgIGF1dG8q
IHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyVGhy
b3dpbmdFeGNlcHRpb24uZ2V0KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxl
LWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRB
bmRJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0
ZXJXaXRoSWRlbnRpZmllci5jcHAJKHJldmlzaW9uIDI4NjAyNCkKKysrIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJXaXRo
SWRlbnRpZmllci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc1LDcgKzc1LDcgQEAgcHVibGljOgog
ICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKICAg
ICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdE5h
bWVkQW5kSW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyUHJvdG90eXBlLCBCYXNlKTsKLSAgICAg
ICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWlu
T2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVT
dHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
SlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC00MDEsOSArNDAxLDkgQEAgSlNDOjpJ
c29TdWJzcGFjZSogSlNUZXN0TmFtZWRBbmRJbmRleGVkUwogICAgICAgICByZXR1cm4gc3BhY2U7
CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxl
T2JqZWN0LCBKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllcj4gfHwgIUpT
VGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyOjpuZWVkc0Rlc3RydWN0aW9u
KTsKICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGli
bGVPYmplY3QsIEpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyPikKLSAg
ICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0aElk
ZW50aWZpZXIgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5o
ZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVGVzdE5hbWVk
QW5kSW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3Bh
Y2VGb3JUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXIgPSBtYWtlVW5pcXVl
PElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVP
YmplY3RIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0aElkZW50
aWZpZXIpOwogICAgIGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRB
bmRJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXIgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJ
U09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlLmdldCgpLCBKU1Rl
c3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllcik7CisgICAgICAgIHNwYWNlcy5t
X3N1YnNwYWNlRm9yVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyID0gbWFr
ZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhl
YXBDZWxsVHlwZSgpLCBKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllcik7
CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZEFuZEluZGV4
ZWRTZXR0ZXJXaXRoSWRlbnRpZmllci5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5y
ZWFjaGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21w
YXJlIikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3ROYW1lZERlbGV0ZXJOb0lkZW50aWZpZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJOb0lkZW50aWZp
ZXIuY3BwCShyZXZpc2lvbiAyODYwMjQpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyTm9JZGVudGlmaWVyLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNjUsNyArNjUsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3Bh
Y2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VS
VF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0TmFtZWREZWxldGVyTm9JZGVudGlmaWVyUHJv
dG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAg
ICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpT
Qzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC0y
NDYsOSArMjQ2LDkgQEAgSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0TmFtZWREZWxldGVyTm9JZAog
ICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2Zf
djxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3ROYW1lZERlbGV0ZXJOb0lkZW50aWZp
ZXI+IHx8ICFKU1Rlc3ROYW1lZERlbGV0ZXJOb0lkZW50aWZpZXI6Om5lZWRzRGVzdHJ1Y3Rpb24p
OwogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJs
ZU9iamVjdCwgSlNUZXN0TmFtZWREZWxldGVyTm9JZGVudGlmaWVyPikKLSAgICAgICAgc3BhY2Vz
Lm1fc3Vic3BhY2VGb3JUZXN0TmFtZWREZWxldGVyTm9JZGVudGlmaWVyID0gbWFrZVVuaXF1ZTxJ
c29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2Jq
ZWN0SGVhcENlbGxUeXBlLmdldCgpLCBKU1Rlc3ROYW1lZERlbGV0ZXJOb0lkZW50aWZpZXIpOwor
ICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZERlbGV0ZXJOb0lkZW50aWZpZXIg
PSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5k
ZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0TmFtZWREZWxldGVyTm9JZGVu
dGlmaWVyKTsKICAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVk
RGVsZXRlck5vSWRlbnRpZmllciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFD
RV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVGVzdE5hbWVkRGVs
ZXRlck5vSWRlbnRpZmllcik7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVk
RGVsZXRlck5vSWRlbnRpZmllciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFD
RV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0TmFtZWREZWxldGVy
Tm9JZGVudGlmaWVyKTsKICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVz
dE5hbWVkRGVsZXRlck5vSWRlbnRpZmllci5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigi
dW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1j
b21wYXJlIikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3ROYW1lZERlbGV0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlclRo
cm93aW5nRXhjZXB0aW9uLmNwcAkocmV2aXNpb24gMjg2MDI0KQorKysgU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlclRocm93aW5nRXhjZXB0
aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjUsNyArNjUsNyBAQCBwdWJsaWM6CiAgICAgc3Rh
dGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAg
ICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0TmFtZWREZWxl
dGVyVGhyb3dpbmdFeGNlcHRpb25Qcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZt
LnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgp
OwogICAgIH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6
OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUg
cHJvdG90eXBlKQogICAgIHsKQEAgLTI0Niw5ICsyNDYsOSBAQCBKU0M6Oklzb1N1YnNwYWNlKiBK
U1Rlc3ROYW1lZERlbGV0ZXJUaHJvCiAgICAgICAgIHJldHVybiBzcGFjZTsKICAgICBzdGF0aWNf
YXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVz
dE5hbWVkRGVsZXRlclRocm93aW5nRXhjZXB0aW9uPiB8fCAhSlNUZXN0TmFtZWREZWxldGVyVGhy
b3dpbmdFeGNlcHRpb246Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhwciAoc3Rk
Ojppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0TmFtZWREZWxl
dGVyVGhyb3dpbmdFeGNlcHRpb24+KQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RO
YW1lZERlbGV0ZXJUaHJvd2luZ0V4Y2VwdGlvbiA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElT
T19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlw
ZS5nZXQoKSwgSlNUZXN0TmFtZWREZWxldGVyVGhyb3dpbmdFeGNlcHRpb24pOworICAgICAgICBz
cGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZERlbGV0ZXJUaHJvd2luZ0V4Y2VwdGlvbiA9IG1h
a2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3Ry
dWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3ROYW1lZERlbGV0ZXJUaHJvd2luZ0V4
Y2VwdGlvbik7CiAgICAgZWxzZQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1l
ZERlbGV0ZXJUaHJvd2luZ0V4Y2VwdGlvbiA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19T
VUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVGVzdE5h
bWVkRGVsZXRlclRocm93aW5nRXhjZXB0aW9uKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VG
b3JUZXN0TmFtZWREZWxldGVyVGhyb3dpbmdFeGNlcHRpb24gPSBtYWtlVW5pcXVlPElzb1N1YnNw
YWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCksIEpT
VGVzdE5hbWVkRGVsZXRlclRocm93aW5nRXhjZXB0aW9uKTsKICAgICBhdXRvKiBzcGFjZSA9IHNw
YWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkRGVsZXRlclRocm93aW5nRXhjZXB0aW9uLmdldCgp
OwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKIElHTk9SRV9XQVJO
SU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRleDogU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlcldpdGhJZGVudGlmaWVy
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0TmFtZWREZWxldGVyV2l0aElkZW50aWZpZXIuY3BwCShyZXZpc2lvbiAyODYwMjQp
CisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRE
ZWxldGVyV2l0aElkZW50aWZpZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03Miw3ICs3Miw3IEBA
IHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpW
TSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJM
RShKU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllclByb3RvdHlwZSwgQmFzZSk7Ci0gICAg
ICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFp
bk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRl
U3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAtMjcwLDkgKzI3MCw5IEBAIEpTQzo6
SXNvU3Vic3BhY2UqIEpTVGVzdE5hbWVkRGVsZXRlcldpdGgKICAgICAgICAgcmV0dXJuIHNwYWNl
OwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJs
ZU9iamVjdCwgSlNUZXN0TmFtZWREZWxldGVyV2l0aElkZW50aWZpZXI+IHx8ICFKU1Rlc3ROYW1l
ZERlbGV0ZXJXaXRoSWRlbnRpZmllcjo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3Rl
eHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RO
YW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllcj4pCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9y
VGVzdE5hbWVkRGVsZXRlcldpdGhJZGVudGlmaWVyID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4g
SVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxU
eXBlLmdldCgpLCBKU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllcik7CisgICAgICAgIHNw
YWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkRGVsZXRlcldpdGhJZGVudGlmaWVyID0gbWFrZVVu
aXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3Rp
YmxlT2JqZWN0SGVhcENlbGxUeXBlKCksIEpTVGVzdE5hbWVkRGVsZXRlcldpdGhJZGVudGlmaWVy
KTsKICAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkRGVsZXRl
cldpdGhJZGVudGlmaWVyID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lO
SVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNUZXN0TmFtZWREZWxldGVy
V2l0aElkZW50aWZpZXIpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZERl
bGV0ZXJXaXRoSWRlbnRpZmllciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFD
RV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0TmFtZWREZWxldGVy
V2l0aElkZW50aWZpZXIpOwogICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JU
ZXN0TmFtZWREZWxldGVyV2l0aElkZW50aWZpZXIuZ2V0KCk7CiBJR05PUkVfV0FSTklOR1NfQkVH
SU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2lj
YWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0TmFtZWREZWxldGVyV2l0aEluZGV4ZWRHZXR0ZXIuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0
ZXJXaXRoSW5kZXhlZEdldHRlci5jcHAJKHJldmlzaW9uIDI4NjAyNCkKKysrIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSW5kZXhl
ZEdldHRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY2LDcgKzY2LDcgQEAgcHVibGljOgogICAg
IHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7
CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdE5hbWVk
RGVsZXRlcldpdGhJbmRleGVkR2V0dGVyUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJu
ICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3Bh
Y2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUo
SlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1Zh
bHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC0yNjIsOSArMjYyLDkgQEAgSlNDOjpJc29TdWJzcGFj
ZSogSlNUZXN0TmFtZWREZWxldGVyV2l0aAogICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAgc3Rh
dGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBK
U1Rlc3ROYW1lZERlbGV0ZXJXaXRoSW5kZXhlZEdldHRlcj4gfHwgIUpTVGVzdE5hbWVkRGVsZXRl
cldpdGhJbmRleGVkR2V0dGVyOjpuZWVkc0Rlc3RydWN0aW9uKTsKICAgICBpZiBjb25zdGV4cHIg
KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdE5hbWVk
RGVsZXRlcldpdGhJbmRleGVkR2V0dGVyPikKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JU
ZXN0TmFtZWREZWxldGVyV2l0aEluZGV4ZWRHZXR0ZXIgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNl
PiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2Vs
bFR5cGUuZ2V0KCksIEpTVGVzdE5hbWVkRGVsZXRlcldpdGhJbmRleGVkR2V0dGVyKTsKKyAgICAg
ICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWREZWxldGVyV2l0aEluZGV4ZWRHZXR0ZXIg
PSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5k
ZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0TmFtZWREZWxldGVyV2l0aElu
ZGV4ZWRHZXR0ZXIpOwogICAgIGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0
TmFtZWREZWxldGVyV2l0aEluZGV4ZWRHZXR0ZXIgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJ
U09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlLmdldCgpLCBKU1Rl
c3ROYW1lZERlbGV0ZXJXaXRoSW5kZXhlZEdldHRlcik7CisgICAgICAgIHNwYWNlcy5tX3N1YnNw
YWNlRm9yVGVzdE5hbWVkRGVsZXRlcldpdGhJbmRleGVkR2V0dGVyID0gbWFrZVVuaXF1ZTxJc29T
dWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgp
LCBKU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSW5kZXhlZEdldHRlcik7CiAgICAgYXV0byogc3BhY2Ug
PSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZERlbGV0ZXJXaXRoSW5kZXhlZEdldHRlci5n
ZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVf
V0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEdldHRlckNhbGxXaXRoLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0TmFtZWRHZXR0ZXJDYWxsV2l0aC5jcHAJKHJldmlzaW9uIDI4NjAyNCkKKysrIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEdldHRlckNhbGxX
aXRoLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjUsNyArNjUsNyBAQCBwdWJsaWM6CiAgICAgc3Rh
dGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAg
ICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0TmFtZWRHZXR0
ZXJDYWxsV2l0aFByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmpl
Y3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQog
ICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBK
U0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUp
CiAgICAgewpAQCAtMjIwLDkgKzIyMCw5IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdE5hbWVk
R2V0dGVyQ2FsbFcKICAgICAgICAgcmV0dXJuIHNwYWNlOwogICAgIHN0YXRpY19hc3NlcnQoc3Rk
Ojppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0TmFtZWRHZXR0
ZXJDYWxsV2l0aD4gfHwgIUpTVGVzdE5hbWVkR2V0dGVyQ2FsbFdpdGg6Om5lZWRzRGVzdHJ1Y3Rp
b24pOwogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0
aWJsZU9iamVjdCwgSlNUZXN0TmFtZWRHZXR0ZXJDYWxsV2l0aD4pCi0gICAgICAgIHNwYWNlcy5t
X3N1YnNwYWNlRm9yVGVzdE5hbWVkR2V0dGVyQ2FsbFdpdGggPSBtYWtlVW5pcXVlPElzb1N1YnNw
YWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFw
Q2VsbFR5cGUuZ2V0KCksIEpTVGVzdE5hbWVkR2V0dGVyQ2FsbFdpdGgpOworICAgICAgICBzcGFj
ZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZEdldHRlckNhbGxXaXRoID0gbWFrZVVuaXF1ZTxJc29T
dWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0
SGVhcENlbGxUeXBlKCksIEpTVGVzdE5hbWVkR2V0dGVyQ2FsbFdpdGgpOwogICAgIGVsc2UKLSAg
ICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRHZXR0ZXJDYWxsV2l0aCA9IG1ha2VV
bmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFw
Q2VsbFR5cGUuZ2V0KCksIEpTVGVzdE5hbWVkR2V0dGVyQ2FsbFdpdGgpOworICAgICAgICBzcGFj
ZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZEdldHRlckNhbGxXaXRoID0gbWFrZVVuaXF1ZTxJc29T
dWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgp
LCBKU1Rlc3ROYW1lZEdldHRlckNhbGxXaXRoKTsKICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5t
X3N1YnNwYWNlRm9yVGVzdE5hbWVkR2V0dGVyQ2FsbFdpdGguZ2V0KCk7CiBJR05PUkVfV0FSTklO
R1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0
b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0TmFtZWRHZXR0ZXJOb0lkZW50aWZpZXIuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEdldHRl
ck5vSWRlbnRpZmllci5jcHAJKHJldmlzaW9uIDI4NjAyNCkKKysrIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEdldHRlck5vSWRlbnRpZmllci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTY1LDcgKzY1LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6
Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNU
QVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdE5hbWVkR2V0dGVyTm9JZGVu
dGlmaWVyUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNw
YWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAg
c3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAg
ICB7CkBAIC0yMjAsOSArMjIwLDkgQEAgSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0TmFtZWRHZXR0
ZXJOb0lkZQogICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6Omlz
X2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3ROYW1lZEdldHRlck5v
SWRlbnRpZmllcj4gfHwgIUpTVGVzdE5hbWVkR2V0dGVyTm9JZGVudGlmaWVyOjpuZWVkc0Rlc3Ry
dWN0aW9uKTsKICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0
cnVjdGlibGVPYmplY3QsIEpTVGVzdE5hbWVkR2V0dGVyTm9JZGVudGlmaWVyPikKLSAgICAgICAg
c3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRHZXR0ZXJOb0lkZW50aWZpZXIgPSBtYWtlVW5p
cXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGli
bGVPYmplY3RIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVGVzdE5hbWVkR2V0dGVyTm9JZGVudGlmaWVy
KTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRHZXR0ZXJOb0lkZW50aWZp
ZXIgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2
bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0TmFtZWRHZXR0ZXJOb0lk
ZW50aWZpZXIpOwogICAgIGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFt
ZWRHZXR0ZXJOb0lkZW50aWZpZXIgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BB
Q0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlLmdldCgpLCBKU1Rlc3ROYW1lZEdl
dHRlck5vSWRlbnRpZmllcik7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVk
R2V0dGVyTm9JZGVudGlmaWVyID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNF
X0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3ROYW1lZEdldHRlck5v
SWRlbnRpZmllcik7CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RO
YW1lZEdldHRlck5vSWRlbnRpZmllci5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5y
ZWFjaGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21w
YXJlIikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3ROYW1lZEdldHRlcldpdGhJZGVudGlmaWVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRHZXR0ZXJXaXRoSWRlbnRp
Zmllci5jcHAJKHJldmlzaW9uIDI4NjAyNCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEdldHRlcldpdGhJZGVudGlmaWVyLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNzAsNyArNzAsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vi
c3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FT
U0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0TmFtZWRHZXR0ZXJXaXRoSWRlbnRpZmll
clByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsK
KyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRp
YyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpA
QCAtMjQ2LDkgKzI0Niw5IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdE5hbWVkR2V0dGVyV2l0
aEkKICAgICAgICAgcmV0dXJuIHNwYWNlOwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNl
X29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0TmFtZWRHZXR0ZXJXaXRoSWRl
bnRpZmllcj4gfHwgIUpTVGVzdE5hbWVkR2V0dGVyV2l0aElkZW50aWZpZXI6Om5lZWRzRGVzdHJ1
Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3Ry
dWN0aWJsZU9iamVjdCwgSlNUZXN0TmFtZWRHZXR0ZXJXaXRoSWRlbnRpZmllcj4pCi0gICAgICAg
IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkR2V0dGVyV2l0aElkZW50aWZpZXIgPSBtYWtl
VW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVj
dGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVGVzdE5hbWVkR2V0dGVyV2l0aElkZW50
aWZpZXIpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZEdldHRlcldpdGhJ
ZGVudGlmaWVyID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0u
aGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCksIEpTVGVzdE5hbWVkR2V0
dGVyV2l0aElkZW50aWZpZXIpOwogICAgIGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VG
b3JUZXN0TmFtZWRHZXR0ZXJXaXRoSWRlbnRpZmllciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+
IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEpT
VGVzdE5hbWVkR2V0dGVyV2l0aElkZW50aWZpZXIpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFj
ZUZvclRlc3ROYW1lZEdldHRlcldpdGhJZGVudGlmaWVyID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFj
ZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU1Rl
c3ROYW1lZEdldHRlcldpdGhJZGVudGlmaWVyKTsKICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5t
X3N1YnNwYWNlRm9yVGVzdE5hbWVkR2V0dGVyV2l0aElkZW50aWZpZXIuZ2V0KCk7CiBJR05PUkVf
V0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lO
KCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJOb0lkZW50aWZpZXIuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1l
ZFNldHRlck5vSWRlbnRpZmllci5jcHAJKHJldmlzaW9uIDI4NjAyNCkKKysrIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlck5vSWRlbnRpZmll
ci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY1LDcgKzY1LDcgQEAgcHVibGljOgogICAgIHN0YXRp
YyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAg
ICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdE5hbWVkU2V0dGVy
Tm9JZGVudGlmaWVyUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9i
amVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9
CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0s
IEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlw
ZSkKICAgICB7CkBAIC0zMDAsOSArMzAwLDkgQEAgSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0TmFt
ZWRTZXR0ZXJOb0lkZQogICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fzc2VydChz
dGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3ROYW1lZFNl
dHRlck5vSWRlbnRpZmllcj4gfHwgIUpTVGVzdE5hbWVkU2V0dGVyTm9JZGVudGlmaWVyOjpuZWVk
c0Rlc3RydWN0aW9uKTsKICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6
SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdE5hbWVkU2V0dGVyTm9JZGVudGlmaWVyPikKLSAg
ICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRTZXR0ZXJOb0lkZW50aWZpZXIgPSBt
YWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0
cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVGVzdE5hbWVkU2V0dGVyTm9JZGVu
dGlmaWVyKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRTZXR0ZXJOb0lk
ZW50aWZpZXIgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5o
ZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0TmFtZWRTZXR0
ZXJOb0lkZW50aWZpZXIpOwogICAgIGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JU
ZXN0TmFtZWRTZXR0ZXJOb0lkZW50aWZpZXIgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09f
U1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlLmdldCgpLCBKU1Rlc3RO
YW1lZFNldHRlck5vSWRlbnRpZmllcik7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVz
dE5hbWVkU2V0dGVyTm9JZGVudGlmaWVyID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NV
QlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3ROYW1lZFNl
dHRlck5vSWRlbnRpZmllcik7CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZv
clRlc3ROYW1lZFNldHRlck5vSWRlbnRpZmllci5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJ
TigidW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNh
bC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3ROYW1lZFNldHRlclRocm93aW5nRXhjZXB0aW9uLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJU
aHJvd2luZ0V4Y2VwdGlvbi5jcHAJKHJldmlzaW9uIDI4NjAyNCkKKysrIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlclRocm93aW5nRXhjZXB0
aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjUsNyArNjUsNyBAQCBwdWJsaWM6CiAgICAgc3Rh
dGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAg
ICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0TmFtZWRTZXR0
ZXJUaHJvd2luZ0V4Y2VwdGlvblByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0u
cGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7
CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6
Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBw
cm90b3R5cGUpCiAgICAgewpAQCAtMzAwLDkgKzMwMCw5IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpT
VGVzdE5hbWVkU2V0dGVyVGhyb3cKICAgICAgICAgcmV0dXJuIHNwYWNlOwogICAgIHN0YXRpY19h
c3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0
TmFtZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbj4gfHwgIUpTVGVzdE5hbWVkU2V0dGVyVGhyb3dp
bmdFeGNlcHRpb246Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjpp
c19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0TmFtZWRTZXR0ZXJU
aHJvd2luZ0V4Y2VwdGlvbj4pCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVk
U2V0dGVyVGhyb3dpbmdFeGNlcHRpb24gPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VC
U1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuZ2V0
KCksIEpTVGVzdE5hbWVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24pOworICAgICAgICBzcGFjZXMu
bV9zdWJzcGFjZUZvclRlc3ROYW1lZFNldHRlclRocm93aW5nRXhjZXB0aW9uID0gbWFrZVVuaXF1
ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxl
T2JqZWN0SGVhcENlbGxUeXBlKCksIEpTVGVzdE5hbWVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24p
OwogICAgIGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRTZXR0ZXJU
aHJvd2luZ0V4Y2VwdGlvbiA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9J
TklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVGVzdE5hbWVkU2V0dGVy
VGhyb3dpbmdFeGNlcHRpb24pOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1l
ZFNldHRlclRocm93aW5nRXhjZXB0aW9uID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NV
QlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3ROYW1lZFNl
dHRlclRocm93aW5nRXhjZXB0aW9uKTsKICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNw
YWNlRm9yVGVzdE5hbWVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24uZ2V0KCk7CiBJR05PUkVfV0FS
TklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0
YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmllci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVk
U2V0dGVyV2l0aElkZW50aWZpZXIuY3BwCShyZXZpc2lvbiAyODYwMjQpCisrKyBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRp
Zmllci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcyLDcgKzcyLDcgQEAgcHVibGljOgogICAgIHN0
YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAg
ICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdE5hbWVkU2V0
dGVyV2l0aElkZW50aWZpZXJQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBs
YWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwog
ICAgIH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZN
JiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJv
dG90eXBlKQogICAgIHsKQEAgLTMzMSw5ICszMzEsOSBAQCBKU0M6Oklzb1N1YnNwYWNlKiBKU1Rl
c3ROYW1lZFNldHRlcldpdGhJCiAgICAgICAgIHJldHVybiBzcGFjZTsKICAgICBzdGF0aWNfYXNz
ZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdE5h
bWVkU2V0dGVyV2l0aElkZW50aWZpZXI+IHx8ICFKU1Rlc3ROYW1lZFNldHRlcldpdGhJZGVudGlm
aWVyOjpuZWVkc0Rlc3RydWN0aW9uKTsKICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9v
Zl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdE5hbWVkU2V0dGVyV2l0aElkZW50
aWZpZXI+KQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZFNldHRlcldpdGhJ
ZGVudGlmaWVyID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0u
aGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmdldCgpLCBKU1Rlc3ROYW1l
ZFNldHRlcldpdGhJZGVudGlmaWVyKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0
TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmllciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19T
VUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgp
LCBKU1Rlc3ROYW1lZFNldHRlcldpdGhJZGVudGlmaWVyKTsKICAgICBlbHNlCi0gICAgICAgIHNw
YWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkU2V0dGVyV2l0aElkZW50aWZpZXIgPSBtYWtlVW5p
cXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENl
bGxUeXBlLmdldCgpLCBKU1Rlc3ROYW1lZFNldHRlcldpdGhJZGVudGlmaWVyKTsKKyAgICAgICAg
c3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmllciA9IG1ha2VV
bmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFw
Q2VsbFR5cGUoKSwgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmllcik7CiAgICAgYXV0byog
c3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZFNldHRlcldpdGhJZGVudGlmaWVy
LmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKIElHTk9S
RV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRleDogU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4
ZWRHZXR0ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyLmNwcAkocmV2aXNp
b24gMjg2MDI0KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03
NSw3ICs3NSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3Bh
Y2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJT
UEFDRV9TSEFSQUJMRShKU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyUHJvdG90eXBl
LCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICBy
ZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3Ry
dWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC0zNzgsOSAr
Mzc4LDkgQEAgSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSQogICAgICAg
ICByZXR1cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6
OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVy
PiB8fCAhSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlcjo6bmVlZHNEZXN0cnVjdGlv
bik7CiAgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3Rp
YmxlT2JqZWN0LCBKU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyPikKLSAgICAgICAg
c3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlciA9IG1h
a2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3Ry
dWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5k
ZXhlZEdldHRlcik7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkU2V0dGVy
V2l0aEluZGV4ZWRHZXR0ZXIgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0Vf
SU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0
TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlcik7CiAgICAgZWxzZQotICAgICAgICBzcGFjZXMu
bV9zdWJzcGFjZUZvclRlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyID0gbWFrZVVuaXF1
ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxs
VHlwZS5nZXQoKSwgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlcik7CisgICAgICAg
IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXIgPSBt
YWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxs
SGVhcENlbGxUeXBlKCksIEpTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXIpOwogICAg
IGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRTZXR0ZXJXaXRoSW5k
ZXhlZEdldHRlci5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29k
ZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRl
cldpdGhJbmRleGVkR2V0dGVyQW5kU2V0dGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhl
ZEdldHRlckFuZFNldHRlci5jcHAJKHJldmlzaW9uIDI4NjAyNCkKKysrIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0
dGVyQW5kU2V0dGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzUsNyArNzUsNyBAQCBwdWJsaWM6
CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQog
ICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0
TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlckFuZFNldHRlclByb3RvdHlwZSwgQmFzZSk7Ci0g
ICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5w
bGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3Jl
YXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAtNDI4LDkgKzQyOCw5IEBAIEpT
Qzo6SXNvU3Vic3BhY2UqIEpTVGVzdE5hbWVkU2V0dGVyV2l0aEkKICAgICAgICAgcmV0dXJuIHNw
YWNlOwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0
aWJsZU9iamVjdCwgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlckFuZFNldHRlcj4g
fHwgIUpTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0ZXI6Om5lZWRzRGVz
dHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rl
c3RydWN0aWJsZU9iamVjdCwgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlckFuZFNl
dHRlcj4pCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkU2V0dGVyV2l0aElu
ZGV4ZWRHZXR0ZXJBbmRTZXR0ZXIgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BB
Q0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuZ2V0KCks
IEpTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0ZXIpOworICAgICAgICBz
cGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQW5kU2V0
dGVyID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwg
dm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCksIEpTVGVzdE5hbWVkU2V0dGVyV2l0
aEluZGV4ZWRHZXR0ZXJBbmRTZXR0ZXIpOwogICAgIGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vi
c3BhY2VGb3JUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlckFuZFNldHRlciA9IG1ha2VV
bmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFw
Q2VsbFR5cGUuZ2V0KCksIEpTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0
ZXIpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZFNldHRlcldpdGhJbmRl
eGVkR2V0dGVyQW5kU2V0dGVyID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNF
X0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3ROYW1lZFNldHRlcldp
dGhJbmRleGVkR2V0dGVyQW5kU2V0dGVyKTsKICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1
YnNwYWNlRm9yVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0ZXIuZ2V0KCk7
CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5J
TkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5T3ZlcnJp
ZGVCdWlsdElucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMu
Y3BwCShyZXZpc2lvbiAyODYwMjQpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5T3ZlcnJpZGVCdWlsdElucy5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTY1LDcgKzY1LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6
Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNU
QVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdE5hbWVkU2V0dGVyV2l0aExl
Z2FjeU92ZXJyaWRlQnVpbHRJbnNQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZt
LnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgp
OwogICAgIH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6
OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUg
cHJvdG90eXBlKQogICAgIHsKQEAgLTI3Nyw5ICsyNzcsOSBAQCBKU0M6Oklzb1N1YnNwYWNlKiBK
U1Rlc3ROYW1lZFNldHRlcldpdGhMCiAgICAgICAgIHJldHVybiBzcGFjZTsKICAgICBzdGF0aWNf
YXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVz
dE5hbWVkU2V0dGVyV2l0aExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM+IHx8ICFKU1Rlc3ROYW1lZFNl
dHRlcldpdGhMZWdhY3lPdmVycmlkZUJ1aWx0SW5zOjpuZWVkc0Rlc3RydWN0aW9uKTsKICAgICBp
ZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3Qs
IEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM+KQotICAgICAgICBz
cGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lPdmVycmlkZUJ1aWx0
SW5zID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwg
dm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmdldCgpLCBKU1Rlc3ROYW1lZFNldHRl
cldpdGhMZWdhY3lPdmVycmlkZUJ1aWx0SW5zKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VG
b3JUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5T3ZlcnJpZGVCdWlsdElucyA9IG1ha2VVbmlxdWU8
SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9i
amVjdEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lPdmVycmlkZUJ1
aWx0SW5zKTsKICAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVk
U2V0dGVyV2l0aExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNl
PiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlLmdldCgpLCBK
U1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lPdmVycmlkZUJ1aWx0SW5zKTsKKyAgICAgICAgc3Bh
Y2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5T3ZlcnJpZGVCdWlsdElu
cyA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZt
LmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5T3ZlcnJpZGVC
dWlsdElucyk7CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1l
ZFNldHRlcldpdGhMZWdhY3lPdmVycmlkZUJ1aWx0SW5zLmdldCgpOwogSUdOT1JFX1dBUk5JTkdT
X0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9s
b2dpY2FsLWNvbXBhcmUiKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllcy5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllcy5jcHAJKHJl
dmlzaW9uIDI4NjAyNCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXMuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC03NCw3ICs3NCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJ
c29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFU
SUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdh
Y3lVbmZvcmdlYWJsZVByb3BlcnRpZXNQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4g
JnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFj
ZSgpOwogICAgIH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShK
U0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFs
dWUgcHJvdG90eXBlKQogICAgIHsKQEAgLTM2MSw5ICszNjEsOSBAQCBKU0M6Oklzb1N1YnNwYWNl
KiBKU1Rlc3ROYW1lZFNldHRlcldpdGhMCiAgICAgICAgIHJldHVybiBzcGFjZTsKICAgICBzdGF0
aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpT
VGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllcz4gfHwgIUpTVGVz
dE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllczo6bmVlZHNEZXN0cnVj
dGlvbik7CiAgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1
Y3RpYmxlT2JqZWN0LCBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3Bl
cnRpZXM+KQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZFNldHRlcldpdGhM
ZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXMgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09f
U1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUu
Z2V0KCksIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllcyk7
CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVu
Zm9yZ2VhYmxlUHJvcGVydGllcyA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFD
RV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBKU1Rl
c3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXMpOwogICAgIGVsc2UK
LSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5m
b3JnZWFibGVQcm9wZXJ0aWVzID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNF
X0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNUZXN0TmFtZWRTZXR0
ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vi
c3BhY2VGb3JUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzID0g
bWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2Vs
bEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVBy
b3BlcnRpZXMpOwogICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFt
ZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzLmdldCgpOwogSUdOT1JFX1dB
Uk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigi
dGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVy
dGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdh
Y3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zLmNwcAkocmV2
aXNpb24gMjg2MDI0KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2Fj
eU92ZXJyaWRlQnVpbHRJbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NCw3ICs3NCw3IEBAIHB1
YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYg
dm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShK
U1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lP
dmVycmlkZUJ1aWx0SW5zUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFp
bk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAg
ICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYg
dm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3Rv
dHlwZSkKICAgICB7CkBAIC0zMzgsOSArMzM4LDkgQEAgSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0
TmFtZWRTZXR0ZXJXaXRoTAogICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fzc2Vy
dChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3ROYW1l
ZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1
aWx0SW5zPiB8fCAhSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0
aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdEluczo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgaWYg
Y29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBK
U1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lP
dmVycmlkZUJ1aWx0SW5zPikKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRT
ZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWls
dElucyA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAs
IHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNUZXN0TmFtZWRTZXR0
ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdElu
cyk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2Fj
eVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMgPSBtYWtlVW5p
cXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGli
bGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3Jn
ZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdElucyk7CiAgICAgZWxzZQotICAg
ICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdl
YWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zID0gbWFrZVVuaXF1ZTxJc29T
dWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZS5n
ZXQoKSwgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5k
TGVnYWN5T3ZlcnJpZGVCdWlsdElucyk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVz
dE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJy
aWRlQnVpbHRJbnMgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2
bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCksIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2Fj
eVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMpOwogICAgIGF1
dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5
VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdElucy5nZXQoKTsKIElH
Tk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1Nf
QkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lc3BhY2VPYmplY3QuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lc3Bh
Y2VPYmplY3QuY3BwCShyZXZpc2lvbiAyODYwMjQpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZXNwYWNlT2JqZWN0LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjgwLDkgKzI4MCw5IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdE5hbWVzcGFjZU9i
amVjdDoKICAgICAgICAgcmV0dXJuIHNwYWNlOwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19i
YXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0TmFtZXNwYWNlT2JqZWN0
PiB8fCAhSlNUZXN0TmFtZXNwYWNlT2JqZWN0OjpuZWVkc0Rlc3RydWN0aW9uKTsKICAgICBpZiBj
b25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpT
VGVzdE5hbWVzcGFjZU9iamVjdD4pCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5h
bWVzcGFjZU9iamVjdCA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklU
KHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNUZXN0
TmFtZXNwYWNlT2JqZWN0KTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZXNw
YWNlT2JqZWN0ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0u
aGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCksIEpTVGVzdE5hbWVzcGFj
ZU9iamVjdCk7CiAgICAgZWxzZQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1l
c3BhY2VPYmplY3QgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2
bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlLmdldCgpLCBKU1Rlc3ROYW1lc3BhY2VPYmplY3Qp
OworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lc3BhY2VPYmplY3QgPSBtYWtl
VW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVh
cENlbGxUeXBlKCksIEpTVGVzdE5hbWVzcGFjZU9iamVjdCk7CiAgICAgYXV0byogc3BhY2UgPSBz
cGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lc3BhY2VPYmplY3QuZ2V0KCk7CiBJR05PUkVfV0FS
TklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0
YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0Tm9kZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5vZGUuY3BwCShyZXZpc2lvbiAyODYwMjQp
CisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Tm9kZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTk1LDcgKzk1LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBK
U0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAg
IFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdE5vZGVQcm90b3R5cGUs
IEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJl
dHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1
Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKQEAgLTQwNSw5ICs0
MDUsOSBAQCBwdWJsaWM6CiAgICAgICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAgICAgIHN0YXRp
Y19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgVGVz
dE5vZGVJdGVyYXRvcj4gfHwgIVRlc3ROb2RlSXRlcmF0b3I6Om5lZWRzRGVzdHJ1Y3Rpb24pOwog
ICAgICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGli
bGVPYmplY3QsIFRlc3ROb2RlSXRlcmF0b3I+KQotICAgICAgICAgICAgc3BhY2VzLm1fc3Vic3Bh
Y2VGb3JUZXN0Tm9kZUl0ZXJhdG9yID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQ
QUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmdldCgp
LCBUZXN0Tm9kZUl0ZXJhdG9yKTsKKyAgICAgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVz
dE5vZGVJdGVyYXRvciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklU
KHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBUZXN0Tm9kZUl0
ZXJhdG9yKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JU
ZXN0Tm9kZUl0ZXJhdG9yID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lO
SVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgVGVzdE5vZGVJdGVyYXRvcik7
CisgICAgICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROb2RlSXRlcmF0b3IgPSBtYWtl
VW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVh
cENlbGxUeXBlKCksIFRlc3ROb2RlSXRlcmF0b3IpOwogICAgICAgICBhdXRvKiBzcGFjZSA9IHNw
YWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5vZGVJdGVyYXRvci5nZXQoKTsKIElHTk9SRV9XQVJOSU5H
U19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRv
bG9naWNhbC1jb21wYXJlIikKQEAgLTQ5Nyw5ICs0OTcsOSBAQCBKU0M6Oklzb1N1YnNwYWNlKiBK
U1Rlc3ROb2RlOjpzdWJzcGFjZUZvCiAgICAgICAgIHJldHVybiBzcGFjZTsKICAgICBzdGF0aWNf
YXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVz
dE5vZGU+IHx8ICFKU1Rlc3ROb2RlOjpuZWVkc0Rlc3RydWN0aW9uKTsKICAgICBpZiBjb25zdGV4
cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdE5v
ZGU+KQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROb2RlID0gbWFrZVVuaXF1ZTxJ
c29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2Jq
ZWN0SGVhcENlbGxUeXBlLmdldCgpLCBKU1Rlc3ROb2RlKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vi
c3BhY2VGb3JUZXN0Tm9kZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9J
TklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RO
b2RlKTsKICAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5vZGUgPSBt
YWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxs
SGVhcENlbGxUeXBlLmdldCgpLCBKU1Rlc3ROb2RlKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3Bh
Y2VGb3JUZXN0Tm9kZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklU
KHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0Tm9kZSk7CiAgICAgYXV0byog
c3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROb2RlLmdldCgpOwogSUdOT1JFX1dBUk5J
TkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1
dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAJKHJldmlzaW9uIDI4NjAyNCkKKysr
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xODY2LDcgKzE4NjYsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpT
Qzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAg
U1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0T2JqUHJvdG90eXBlLCBC
YXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1
cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0
dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC05MDA2LDkgKzkw
MDYsOSBAQCBKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3RPYmo6OnN1YnNwYWNlRm9yCiAgICAgICAg
IHJldHVybiBzcGFjZTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6
SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdE9iaj4gfHwgIUpTVGVzdE9iajo6bmVlZHNEZXN0
cnVjdGlvbik7CiAgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVz
dHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RPYmo+KQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZv
clRlc3RPYmogPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5o
ZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVGVzdE9iaik7
CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE9iaiA9IG1ha2VVbmlxdWU8SXNvU3Vi
c3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhl
YXBDZWxsVHlwZSgpLCBKU1Rlc3RPYmopOwogICAgIGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vi
c3BhY2VGb3JUZXN0T2JqID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lO
SVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNUZXN0T2JqKTsKKyAgICAg
ICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0T2JqID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4g
SVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RP
YmopOwogICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0T2JqLmdldCgp
OwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKIElHTk9SRV9XQVJO
SU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRleDogU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9wZXJhdGlvbkNvbmRpdGlvbmFsLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0T3BlcmF0aW9uQ29uZGl0aW9uYWwuY3BwCShyZXZpc2lvbiAyODYwMjQpCisrKyBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3BlcmF0aW9uQ29uZGl0aW9u
YWwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04MSw3ICs4MSw3IEBAIHB1YmxpYzoKICAgICBzdGF0
aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAg
ICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3RPcGVyYXRpb25D
b25kaXRpb25hbFByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmpl
Y3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQog
ICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBK
U0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUp
CiAgICAgewpAQCAtMjM0LDkgKzIzNCw5IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdE9wZXJh
dGlvbkNvbmRpdGkKICAgICAgICAgcmV0dXJuIHNwYWNlOwogICAgIHN0YXRpY19hc3NlcnQoc3Rk
Ojppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0T3BlcmF0aW9u
Q29uZGl0aW9uYWw+IHx8ICFKU1Rlc3RPcGVyYXRpb25Db25kaXRpb25hbDo6bmVlZHNEZXN0cnVj
dGlvbik7CiAgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1
Y3RpYmxlT2JqZWN0LCBKU1Rlc3RPcGVyYXRpb25Db25kaXRpb25hbD4pCi0gICAgICAgIHNwYWNl
cy5tX3N1YnNwYWNlRm9yVGVzdE9wZXJhdGlvbkNvbmRpdGlvbmFsID0gbWFrZVVuaXF1ZTxJc29T
dWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0
SGVhcENlbGxUeXBlLmdldCgpLCBKU1Rlc3RPcGVyYXRpb25Db25kaXRpb25hbCk7CisgICAgICAg
IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE9wZXJhdGlvbkNvbmRpdGlvbmFsID0gbWFrZVVuaXF1
ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxl
T2JqZWN0SGVhcENlbGxUeXBlKCksIEpTVGVzdE9wZXJhdGlvbkNvbmRpdGlvbmFsKTsKICAgICBl
bHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE9wZXJhdGlvbkNvbmRpdGlvbmFs
ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0u
Y2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNUZXN0T3BlcmF0aW9uQ29uZGl0aW9uYWwpOworICAg
ICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RPcGVyYXRpb25Db25kaXRpb25hbCA9IG1ha2VV
bmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFw
Q2VsbFR5cGUoKSwgSlNUZXN0T3BlcmF0aW9uQ29uZGl0aW9uYWwpOwogICAgIGF1dG8qIHNwYWNl
ID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0T3BlcmF0aW9uQ29uZGl0aW9uYWwuZ2V0KCk7CiBJ
R05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdT
X0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuY3BwCShyZXZpc2lvbiAyODYwMjQpCisrKyBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVj
dG9ycy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY5LDcgKzY5LDcgQEAgcHVibGljOgogICAgIHN0
YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAg
ICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdE92ZXJsb2Fk
ZWRDb25zdHJ1Y3RvcnNQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWlu
T2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAg
IH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2
bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90
eXBlKQogICAgIHsKQEAgLTI5NSw5ICsyOTUsOSBAQCBKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3RP
dmVybG9hZGVkQ29uc3RyCiAgICAgICAgIHJldHVybiBzcGFjZTsKICAgICBzdGF0aWNfYXNzZXJ0
KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdE92ZXJs
b2FkZWRDb25zdHJ1Y3RvcnM+IHx8ICFKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzOjpuZWVk
c0Rlc3RydWN0aW9uKTsKICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6
SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM+KQotICAg
ICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzID0gbWFr
ZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1
Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmdldCgpLCBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0
b3JzKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0T3ZlcmxvYWRlZENvbnN0cnVj
dG9ycyA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAs
IHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RPdmVybG9hZGVkQ29u
c3RydWN0b3JzKTsKICAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE92
ZXJsb2FkZWRDb25zdHJ1Y3RvcnMgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BB
Q0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlLmdldCgpLCBKU1Rlc3RPdmVybG9h
ZGVkQ29uc3RydWN0b3JzKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0T3Zlcmxv
YWRlZENvbnN0cnVjdG9ycyA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9J
TklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0T3ZlcmxvYWRlZENvbnN0
cnVjdG9ycyk7CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RPdmVy
bG9hZGVkQ29uc3RydWN0b3JzLmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNo
YWJsZS1jb2RlIikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUi
KQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92
ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2UuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVybG9hZGVkQ29uc3Ry
dWN0b3JzV2l0aFNlcXVlbmNlLmNwcAkocmV2aXNpb24gMjg2MDI0KQorKysgU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNX
aXRoU2VxdWVuY2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02OCw3ICs2OCw3IEBAIHB1YmxpYzoK
ICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAg
ICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3RP
dmVybG9hZGVkQ29uc3RydWN0b3JzV2l0aFNlcXVlbmNlUHJvdG90eXBlLCBCYXNlKTsKLSAgICAg
ICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWlu
T2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVT
dHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
SlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC0yMzgsOSArMjM4LDkgQEAgSlNDOjpJ
c29TdWJzcGFjZSogSlNUZXN0T3ZlcmxvYWRlZENvbnN0cgogICAgICAgICByZXR1cm4gc3BhY2U7
CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxl
T2JqZWN0LCBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzV2l0aFNlcXVlbmNlPiB8fCAhSlNU
ZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5jZTo6bmVlZHNEZXN0cnVjdGlvbik7
CiAgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxl
T2JqZWN0LCBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzV2l0aFNlcXVlbmNlPikKLSAgICAg
ICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1
ZW5jZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAs
IHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNUZXN0T3ZlcmxvYWRl
ZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5jZSk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9y
VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2UgPSBtYWtlVW5pcXVlPElzb1N1
YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RI
ZWFwQ2VsbFR5cGUoKSwgSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5jZSk7
CiAgICAgZWxzZQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RPdmVybG9hZGVkQ29u
c3RydWN0b3JzV2l0aFNlcXVlbmNlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQ
QUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNUZXN0T3Zlcmxv
YWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5jZSk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNl
Rm9yVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2UgPSBtYWtlVW5pcXVlPElz
b1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBl
KCksIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2UpOwogICAgIGF1dG8q
IHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dp
dGhTZXF1ZW5jZS5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29k
ZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RQbHVnaW5JbnRl
cmZhY2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RQbHVnaW5JbnRlcmZhY2UuY3BwCShyZXZpc2lvbiAyODYwMjQpCisrKyBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0UGx1Z2luSW50ZXJm
YWNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjQsNyArNjQsNyBAQCBwdWJsaWM6CiAgICAgc3Rh
dGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAg
ICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0UGx1Z2luSW50
ZXJmYWNlUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNw
YWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAg
c3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAg
ICB7CkBAIC0yNDQsOSArMjQ0LDkgQEAgSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0UGx1Z2luSW50
ZXJmYWNlOgogICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6Omlz
X2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RQbHVnaW5JbnRlcmZh
Y2U+IHx8ICFKU1Rlc3RQbHVnaW5JbnRlcmZhY2U6Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlm
IGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwg
SlNUZXN0UGx1Z2luSW50ZXJmYWNlPikKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0
UGx1Z2luSW50ZXJmYWNlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lO
SVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmdldCgpLCBKU1Rl
c3RQbHVnaW5JbnRlcmZhY2UpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RQbHVn
aW5JbnRlcmZhY2UgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2
bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0UGx1Z2lu
SW50ZXJmYWNlKTsKICAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFBs
dWdpbkludGVyZmFjZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklU
KHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVGVzdFBsdWdpbkludGVyZmFj
ZSk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFBsdWdpbkludGVyZmFjZSA9IG1h
a2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxI
ZWFwQ2VsbFR5cGUoKSwgSlNUZXN0UGx1Z2luSW50ZXJmYWNlKTsKICAgICBhdXRvKiBzcGFjZSA9
IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFBsdWdpbkludGVyZmFjZS5nZXQoKTsKIElHTk9SRV9X
QVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4o
InRhdXRvbG9naWNhbC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RQcm9taXNl
UmVqZWN0aW9uRXZlbnQuY3BwCShyZXZpc2lvbiAyODYwMjQpCisrKyBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTQ4LDcgKzE0OCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlND
OjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBT
VEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3RQcm9taXNlUmVqZWN0aW9u
RXZlbnRQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3Bh
Y2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KICAgICBz
dGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAg
IHsKQEAgLTMwMSw5ICszMDEsOSBAQCBKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3RQcm9taXNlUmVq
ZWN0aW9uCiAgICAgICAgIHJldHVybiBzcGFjZTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNf
YmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdFByb21pc2VSZWplY3Rp
b25FdmVudD4gfHwgIUpTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudDo6bmVlZHNEZXN0cnVjdGlv
bik7CiAgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3Rp
YmxlT2JqZWN0LCBKU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQ+KQotICAgICAgICBzcGFjZXMu
bV9zdWJzcGFjZUZvclRlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQgPSBtYWtlVW5pcXVlPElzb1N1
YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RI
ZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudCk7CisgICAgICAg
IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFByb21pc2VSZWplY3Rpb25FdmVudCA9IG1ha2VVbmlx
dWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJs
ZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQpOwogICAg
IGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0UHJvbWlzZVJlamVjdGlvbkV2
ZW50ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwg
dm0uY2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50KTsK
KyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50ID0g
bWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2Vs
bEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQpOwogICAgIGF1dG8q
IHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50Lmdl
dCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKIElHTk9SRV9X
QVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRleDogU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFJlYWRPbmx5TWFwTGlrZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dFJlYWRPbmx5TWFwTGlrZS5jcHAJKHJldmlzaW9uIDI4NjAyNCkKKysrIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RSZWFkT25seU1hcExpa2UuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC03OSw3ICs3OSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29T
dWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNf
QVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3RSZWFkT25seU1hcExpa2VQcm90b3R5
cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAg
IHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KICAgICBzdGF0aWMgSlNDOjpT
dHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKQEAgLTMwNSw5
ICszMDUsOSBAQCBKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3RSZWFkT25seU1hcExpa2U6CiAgICAg
ICAgIHJldHVybiBzcGFjZTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpT
Qzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdFJlYWRPbmx5TWFwTGlrZT4gfHwgIUpTVGVz
dFJlYWRPbmx5TWFwTGlrZTo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3RleHByIChz
dGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RSZWFkT25s
eU1hcExpa2U+KQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RSZWFkT25seU1hcExp
a2UgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2
bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVGVzdFJlYWRPbmx5TWFw
TGlrZSk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFJlYWRPbmx5TWFwTGlrZSA9
IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRl
c3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RSZWFkT25seU1hcExpa2UpOwog
ICAgIGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0UmVhZE9ubHlNYXBMaWtl
ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0u
Y2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNUZXN0UmVhZE9ubHlNYXBMaWtlKTsKKyAgICAgICAg
c3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0UmVhZE9ubHlNYXBMaWtlID0gbWFrZVVuaXF1ZTxJc29T
dWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgp
LCBKU1Rlc3RSZWFkT25seU1hcExpa2UpOwogICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vi
c3BhY2VGb3JUZXN0UmVhZE9ubHlNYXBMaWtlLmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lO
KCJ1bnJlYWNoYWJsZS1jb2RlIikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2Fs
LWNvbXBhcmUiKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdFJlYWRPbmx5U2V0TGlrZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFJlYWRPbmx5U2V0TGlrZS5jcHAJKHJldmlz
aW9uIDI4NjAyNCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RSZWFkT25seVNldExpa2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03OCw3ICs3OCw3IEBA
IHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpW
TSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJM
RShKU1Rlc3RSZWFkT25seVNldExpa2VQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4g
JnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFj
ZSgpOwogICAgIH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShK
U0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFs
dWUgcHJvdG90eXBlKQogICAgIHsKQEAgLTI4NCw5ICsyODQsOSBAQCBKU0M6Oklzb1N1YnNwYWNl
KiBKU1Rlc3RSZWFkT25seVNldExpa2U6CiAgICAgICAgIHJldHVybiBzcGFjZTsKICAgICBzdGF0
aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpT
VGVzdFJlYWRPbmx5U2V0TGlrZT4gfHwgIUpTVGVzdFJlYWRPbmx5U2V0TGlrZTo6bmVlZHNEZXN0
cnVjdGlvbik7CiAgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVz
dHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RSZWFkT25seVNldExpa2U+KQotICAgICAgICBzcGFjZXMu
bV9zdWJzcGFjZUZvclRlc3RSZWFkT25seVNldExpa2UgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNl
PiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2Vs
bFR5cGUuZ2V0KCksIEpTVGVzdFJlYWRPbmx5U2V0TGlrZSk7CisgICAgICAgIHNwYWNlcy5tX3N1
YnNwYWNlRm9yVGVzdFJlYWRPbmx5U2V0TGlrZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElT
T19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlw
ZSgpLCBKU1Rlc3RSZWFkT25seVNldExpa2UpOwogICAgIGVsc2UKLSAgICAgICAgc3BhY2VzLm1f
c3Vic3BhY2VGb3JUZXN0UmVhZE9ubHlTZXRMaWtlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4g
SVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNU
ZXN0UmVhZE9ubHlTZXRMaWtlKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0UmVh
ZE9ubHlTZXRMaWtlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQo
dm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RSZWFkT25seVNldExpa2UpOwog
ICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0UmVhZE9ubHlTZXRMaWtl
LmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKIElHTk9S
RV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRleDogU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFJlcG9ydEV4dHJhTWVtb3J5Q29z
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdFJlcG9ydEV4dHJhTWVtb3J5Q29zdC5jcHAJKHJldmlzaW9uIDI4NjAyNCkKKysr
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RSZXBvcnRFeHRy
YU1lbW9yeUNvc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02Myw3ICs2Myw3IEBAIHB1YmxpYzoK
ICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAg
ICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3RS
ZXBvcnRFeHRyYU1lbW9yeUNvc3RQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZt
LnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgp
OwogICAgIH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6
OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUg
cHJvdG90eXBlKQogICAgIHsKQEAgLTE3MSw5ICsxNzEsOSBAQCBKU0M6Oklzb1N1YnNwYWNlKiBK
U1Rlc3RSZXBvcnRFeHRyYU1lbW9yCiAgICAgICAgIHJldHVybiBzcGFjZTsKICAgICBzdGF0aWNf
YXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVz
dFJlcG9ydEV4dHJhTWVtb3J5Q29zdD4gfHwgIUpTVGVzdFJlcG9ydEV4dHJhTWVtb3J5Q29zdDo6
bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxK
U0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RSZXBvcnRFeHRyYU1lbW9yeUNvc3Q+KQot
ICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RSZXBvcnRFeHRyYU1lbW9yeUNvc3QgPSBt
YWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0
cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVGVzdFJlcG9ydEV4dHJhTWVtb3J5
Q29zdCk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFJlcG9ydEV4dHJhTWVtb3J5
Q29zdCA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAs
IHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RSZXBvcnRFeHRyYU1l
bW9yeUNvc3QpOwogICAgIGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0UmVw
b3J0RXh0cmFNZW1vcnlDb3N0ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNF
X0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNUZXN0UmVwb3J0RXh0
cmFNZW1vcnlDb3N0KTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0UmVwb3J0RXh0
cmFNZW1vcnlDb3N0ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQo
dm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RSZXBvcnRFeHRyYU1lbW9yeUNv
c3QpOwogICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0UmVwb3J0RXh0
cmFNZW1vcnlDb3N0LmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1j
b2RlIikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRl
eDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVy
ZmFjZS5jcHAJKHJldmlzaW9uIDI4NjAyNCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC04OSw3ICs4OSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJ
c29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFU
SUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFs
dWVJbnRlcmZhY2VQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2Jq
ZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0K
ICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwg
SlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBl
KQogICAgIHsKQEAgLTM0OSw5ICszNDksOSBAQCBKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3RTZXJp
YWxpemVkU2NyaXB0CiAgICAgICAgIHJldHVybiBzcGFjZTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0
ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZUludGVyZmFjZT4gfHwgIUpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUlu
dGVyZmFjZTo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jh
c2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RTZXJpYWxpemVkU2NyaXB0
VmFsdWVJbnRlcmZhY2U+KQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RTZXJpYWxp
emVkU2NyaXB0VmFsdWVJbnRlcmZhY2UgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VC
U1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuZ2V0
KCksIEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSk7CisgICAgICAgIHNwYWNl
cy5tX3N1YnNwYWNlRm9yVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSA9IG1ha2VV
bmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0
aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRl
cmZhY2UpOwogICAgIGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0U2VyaWFs
aXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NV
QlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNUZXN0U2Vy
aWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VG
b3JUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlID0gbWFrZVVuaXF1ZTxJc29TdWJz
cGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBK
U1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UpOwogICAgIGF1dG8qIHNwYWNlID0g
c3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmdl
dCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKIElHTk9SRV9X
QVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRleDogU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNldExpa2UuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXRMaWtl
LmNwcAkocmV2aXNpb24gMjg2MDI0KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdFNldExpa2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04MSw3ICs4MSw3
IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlND
OjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFS
QUJMRShKU1Rlc3RTZXRMaWtlUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5w
bGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsK
ICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpW
TSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHBy
b3RvdHlwZSkKICAgICB7CkBAIC0zNDIsOSArMzQyLDkgQEAgSlNDOjpJc29TdWJzcGFjZSogSlNU
ZXN0U2V0TGlrZTo6c3Vic3BhYwogICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fz
c2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RT
ZXRMaWtlPiB8fCAhSlNUZXN0U2V0TGlrZTo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgaWYgY29u
c3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rl
c3RTZXRMaWtlPikKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0U2V0TGlrZSA9IG1h
a2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3Ry
dWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNUZXN0U2V0TGlrZSk7CisgICAgICAg
IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFNldExpa2UgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNl
PiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2Vs
bFR5cGUoKSwgSlNUZXN0U2V0TGlrZSk7CiAgICAgZWxzZQotICAgICAgICBzcGFjZXMubV9zdWJz
cGFjZUZvclRlc3RTZXRMaWtlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNF
X0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNUZXN0U2V0TGlrZSk7
CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFNldExpa2UgPSBtYWtlVW5pcXVlPElz
b1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBl
KCksIEpTVGVzdFNldExpa2UpOwogICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VG
b3JUZXN0U2V0TGlrZS5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUt
Y29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXRMaWtl
V2l0aE92ZXJyaWRkZW5PcGVyYXRpb25zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2V0TGlrZVdpdGhPdmVycmlkZGVuT3Bl
cmF0aW9ucy5jcHAJKHJldmlzaW9uIDI4NjAyNCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXRMaWtlV2l0aE92ZXJyaWRkZW5PcGVyYXRpb25zLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtODUsNyArODUsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpT
Qzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAg
U1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0U2V0TGlrZVdpdGhPdmVy
cmlkZGVuT3BlcmF0aW9uc1Byb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxh
aW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAg
ICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0m
IHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90
b3R5cGUpCiAgICAgewpAQCAtMzU0LDkgKzM1NCw5IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVz
dFNldExpa2VXaXRoT3ZlcnIKICAgICAgICAgcmV0dXJuIHNwYWNlOwogICAgIHN0YXRpY19hc3Nl
cnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0U2V0
TGlrZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9ucz4gfHwgIUpTVGVzdFNldExpa2VXaXRoT3ZlcnJp
ZGRlbk9wZXJhdGlvbnM6Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhwciAoc3Rk
Ojppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0U2V0TGlrZVdp
dGhPdmVycmlkZGVuT3BlcmF0aW9ucz4pCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVz
dFNldExpa2VXaXRoT3ZlcnJpZGRlbk9wZXJhdGlvbnMgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNl
PiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2Vs
bFR5cGUuZ2V0KCksIEpTVGVzdFNldExpa2VXaXRoT3ZlcnJpZGRlbk9wZXJhdGlvbnMpOworICAg
ICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RTZXRMaWtlV2l0aE92ZXJyaWRkZW5PcGVyYXRp
b25zID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwg
dm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCksIEpTVGVzdFNldExpa2VXaXRoT3Zl
cnJpZGRlbk9wZXJhdGlvbnMpOwogICAgIGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VG
b3JUZXN0U2V0TGlrZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9ucyA9IG1ha2VVbmlxdWU8SXNvU3Vi
c3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUuZ2V0
KCksIEpTVGVzdFNldExpa2VXaXRoT3ZlcnJpZGRlbk9wZXJhdGlvbnMpOworICAgICAgICBzcGFj
ZXMubV9zdWJzcGFjZUZvclRlc3RTZXRMaWtlV2l0aE92ZXJyaWRkZW5PcGVyYXRpb25zID0gbWFr
ZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhl
YXBDZWxsVHlwZSgpLCBKU1Rlc3RTZXRMaWtlV2l0aE92ZXJyaWRkZW5PcGVyYXRpb25zKTsKICAg
ICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFNldExpa2VXaXRoT3ZlcnJp
ZGRlbk9wZXJhdGlvbnMuZ2V0KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxl
LWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5n
aWZpZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllci5jcHAJKHJldmlzaW9uIDI4NjAyNCkKKysrIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTY5LDcgKzY5LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6
Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNU
QVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdFN0cmluZ2lmaWVyUHJvdG90
eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAg
ICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6
U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC0xOTIs
OSArMTkyLDkgQEAgSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0U3RyaW5naWZpZXI6OnN1YgogICAg
ICAgICByZXR1cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxK
U0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RTdHJpbmdpZmllcj4gfHwgIUpTVGVzdFN0
cmluZ2lmaWVyOjpuZWVkc0Rlc3RydWN0aW9uKTsKICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNf
YmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdFN0cmluZ2lmaWVyPikK
LSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0U3RyaW5naWZpZXIgPSBtYWtlVW5pcXVl
PElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVP
YmplY3RIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVGVzdFN0cmluZ2lmaWVyKTsKKyAgICAgICAgc3Bh
Y2VzLm1fc3Vic3BhY2VGb3JUZXN0U3RyaW5naWZpZXIgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNl
PiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2Vs
bFR5cGUoKSwgSlNUZXN0U3RyaW5naWZpZXIpOwogICAgIGVsc2UKLSAgICAgICAgc3BhY2VzLm1f
c3Vic3BhY2VGb3JUZXN0U3RyaW5naWZpZXIgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09f
U1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlLmdldCgpLCBKU1Rlc3RT
dHJpbmdpZmllcik7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFN0cmluZ2lmaWVy
ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0u
Y2VsbEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RTdHJpbmdpZmllcik7CiAgICAgYXV0byogc3BhY2Ug
PSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RTdHJpbmdpZmllci5nZXQoKTsKIElHTk9SRV9XQVJO
SU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRh
dXRvbG9naWNhbC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllckFub255bW91c09wZXJhdGlvbi5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0
cmluZ2lmaWVyQW5vbnltb3VzT3BlcmF0aW9uLmNwcAkocmV2aXNpb24gMjg2MDI0KQorKysgU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyQW5v
bnltb3VzT3BlcmF0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjksNyArNjksNyBAQCBwdWJs
aWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZt
KQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNU
ZXN0U3RyaW5naWZpZXJBbm9ueW1vdXNPcGVyYXRpb25Qcm90b3R5cGUsIEJhc2UpOwotICAgICAg
ICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5P
YmplY3RTcGFjZSgpOwogICAgIH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0
cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBK
U0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKQEAgLTE5Miw5ICsxOTIsOSBAQCBKU0M6Oklz
b1N1YnNwYWNlKiBKU1Rlc3RTdHJpbmdpZmllckFub255CiAgICAgICAgIHJldHVybiBzcGFjZTsK
ICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVP
YmplY3QsIEpTVGVzdFN0cmluZ2lmaWVyQW5vbnltb3VzT3BlcmF0aW9uPiB8fCAhSlNUZXN0U3Ry
aW5naWZpZXJBbm9ueW1vdXNPcGVyYXRpb246Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNv
bnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNU
ZXN0U3RyaW5naWZpZXJBbm9ueW1vdXNPcGVyYXRpb24+KQotICAgICAgICBzcGFjZXMubV9zdWJz
cGFjZUZvclRlc3RTdHJpbmdpZmllckFub255bW91c09wZXJhdGlvbiA9IG1ha2VVbmlxdWU8SXNv
U3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVj
dEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNUZXN0U3RyaW5naWZpZXJBbm9ueW1vdXNPcGVyYXRpb24p
OworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RTdHJpbmdpZmllckFub255bW91c09w
ZXJhdGlvbiA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhl
YXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RTdHJpbmdpZmll
ckFub255bW91c09wZXJhdGlvbik7CiAgICAgZWxzZQotICAgICAgICBzcGFjZXMubV9zdWJzcGFj
ZUZvclRlc3RTdHJpbmdpZmllckFub255bW91c09wZXJhdGlvbiA9IG1ha2VVbmlxdWU8SXNvU3Vi
c3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUuZ2V0
KCksIEpTVGVzdFN0cmluZ2lmaWVyQW5vbnltb3VzT3BlcmF0aW9uKTsKKyAgICAgICAgc3BhY2Vz
Lm1fc3Vic3BhY2VGb3JUZXN0U3RyaW5naWZpZXJBbm9ueW1vdXNPcGVyYXRpb24gPSBtYWtlVW5p
cXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENl
bGxUeXBlKCksIEpTVGVzdFN0cmluZ2lmaWVyQW5vbnltb3VzT3BlcmF0aW9uKTsKICAgICBhdXRv
KiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFN0cmluZ2lmaWVyQW5vbnltb3VzT3Bl
cmF0aW9uLmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikK
IElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRleDogU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyTmFt
ZWRPcGVyYXRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllck5hbWVkT3BlcmF0aW9uLmNwcAkocmV2aXNp
b24gMjg2MDI0KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdFN0cmluZ2lmaWVyTmFtZWRPcGVyYXRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03MCw3
ICs3MCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VG
b3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFD
RV9TSEFSQUJMRShKU1Rlc3RTdHJpbmdpZmllck5hbWVkT3BlcmF0aW9uUHJvdG90eXBlLCBCYXNl
KTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4g
JnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJl
KiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC0yMDksOSArMjA5LDkg
QEAgSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0U3RyaW5naWZpZXJOYW1lZAogICAgICAgICByZXR1
cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVz
dHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RTdHJpbmdpZmllck5hbWVkT3BlcmF0aW9uPiB8fCAhSlNU
ZXN0U3RyaW5naWZpZXJOYW1lZE9wZXJhdGlvbjo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgaWYg
Y29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBK
U1Rlc3RTdHJpbmdpZmllck5hbWVkT3BlcmF0aW9uPikKLSAgICAgICAgc3BhY2VzLm1fc3Vic3Bh
Y2VGb3JUZXN0U3RyaW5naWZpZXJOYW1lZE9wZXJhdGlvbiA9IG1ha2VVbmlxdWU8SXNvU3Vic3Bh
Y2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBD
ZWxsVHlwZS5nZXQoKSwgSlNUZXN0U3RyaW5naWZpZXJOYW1lZE9wZXJhdGlvbik7CisgICAgICAg
IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFN0cmluZ2lmaWVyTmFtZWRPcGVyYXRpb24gPSBtYWtl
VW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVj
dGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0U3RyaW5naWZpZXJOYW1lZE9wZXJhdGlv
bik7CiAgICAgZWxzZQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RTdHJpbmdpZmll
ck5hbWVkT3BlcmF0aW9uID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lO
SVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNUZXN0U3RyaW5naWZpZXJO
YW1lZE9wZXJhdGlvbik7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFN0cmluZ2lm
aWVyTmFtZWRPcGVyYXRpb24gPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0Vf
SU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCksIEpTVGVzdFN0cmluZ2lmaWVyTmFt
ZWRPcGVyYXRpb24pOwogICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0
U3RyaW5naWZpZXJOYW1lZE9wZXJhdGlvbi5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigi
dW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1j
b21wYXJlIikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbkltcGxlbWVudGVkQXMuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmll
ck9wZXJhdGlvbkltcGxlbWVudGVkQXMuY3BwCShyZXZpc2lvbiAyODYwMjQpCisrKyBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJPcGVyYXRp
b25JbXBsZW1lbnRlZEFzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzAsNyArNzAsNyBAQCBwdWJs
aWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZt
KQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNU
ZXN0U3RyaW5naWZpZXJPcGVyYXRpb25JbXBsZW1lbnRlZEFzUHJvdG90eXBlLCBCYXNlKTsKLSAg
ICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBs
YWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVh
dGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC0yMDksOSArMjA5LDkgQEAgSlND
OjpJc29TdWJzcGFjZSogSlNUZXN0U3RyaW5naWZpZXJPcGVyYQogICAgICAgICByZXR1cm4gc3Bh
Y2U7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3Rp
YmxlT2JqZWN0LCBKU1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbkltcGxlbWVudGVkQXM+IHx8ICFK
U1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbkltcGxlbWVudGVkQXM6Om5lZWRzRGVzdHJ1Y3Rpb24p
OwogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJs
ZU9iamVjdCwgSlNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25JbXBsZW1lbnRlZEFzPikKLSAgICAg
ICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25JbXBsZW1lbnRl
ZEFzID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwg
dm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmdldCgpLCBKU1Rlc3RTdHJpbmdpZmll
ck9wZXJhdGlvbkltcGxlbWVudGVkQXMpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRl
c3RTdHJpbmdpZmllck9wZXJhdGlvbkltcGxlbWVudGVkQXMgPSBtYWtlVW5pcXVlPElzb1N1YnNw
YWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFw
Q2VsbFR5cGUoKSwgSlNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25JbXBsZW1lbnRlZEFzKTsKICAg
ICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFN0cmluZ2lmaWVyT3BlcmF0
aW9uSW1wbGVtZW50ZWRBcyA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9J
TklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVGVzdFN0cmluZ2lmaWVy
T3BlcmF0aW9uSW1wbGVtZW50ZWRBcyk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVz
dFN0cmluZ2lmaWVyT3BlcmF0aW9uSW1wbGVtZW50ZWRBcyA9IG1ha2VVbmlxdWU8SXNvU3Vic3Bh
Y2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNU
ZXN0U3RyaW5naWZpZXJPcGVyYXRpb25JbXBsZW1lbnRlZEFzKTsKICAgICBhdXRvKiBzcGFjZSA9
IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uSW1wbGVtZW50ZWRB
cy5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJR05P
UkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllck9wZXJhdGlv
bk5hbWVkVG9TdHJpbmcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbk5hbWVkVG9TdHJpbmcu
Y3BwCShyZXZpc2lvbiAyODYwMjQpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25OYW1lZFRvU3RyaW5nLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNjksNyArNjksNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNv
U3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElD
X0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25O
YW1lZFRvU3RyaW5nUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9i
amVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9
CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0s
IEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlw
ZSkKICAgICB7CkBAIC0xOTIsOSArMTkyLDkgQEAgSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0U3Ry
aW5naWZpZXJPcGVyYQogICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fzc2VydChz
dGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RTdHJpbmdp
Zmllck9wZXJhdGlvbk5hbWVkVG9TdHJpbmc+IHx8ICFKU1Rlc3RTdHJpbmdpZmllck9wZXJhdGlv
bk5hbWVkVG9TdHJpbmc6Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhwciAoc3Rk
Ojppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0U3RyaW5naWZp
ZXJPcGVyYXRpb25OYW1lZFRvU3RyaW5nPikKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JU
ZXN0U3RyaW5naWZpZXJPcGVyYXRpb25OYW1lZFRvU3RyaW5nID0gbWFrZVVuaXF1ZTxJc29TdWJz
cGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVh
cENlbGxUeXBlLmdldCgpLCBKU1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbk5hbWVkVG9TdHJpbmcp
OworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RTdHJpbmdpZmllck9wZXJhdGlvbk5h
bWVkVG9TdHJpbmcgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2
bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0U3RyaW5n
aWZpZXJPcGVyYXRpb25OYW1lZFRvU3RyaW5nKTsKICAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5t
X3N1YnNwYWNlRm9yVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uTmFtZWRUb1N0cmluZyA9IG1ha2VV
bmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFw
Q2VsbFR5cGUuZ2V0KCksIEpTVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uTmFtZWRUb1N0cmluZyk7
CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uTmFt
ZWRUb1N0cmluZyA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZt
LmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25O
YW1lZFRvU3RyaW5nKTsKICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVz
dFN0cmluZ2lmaWVyT3BlcmF0aW9uTmFtZWRUb1N0cmluZy5nZXQoKTsKIElHTk9SRV9XQVJOSU5H
U19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRv
bG9naWNhbC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllclJlYWRPbmx5QXR0cmlidXRlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5n
aWZpZXJSZWFkT25seUF0dHJpYnV0ZS5jcHAJKHJldmlzaW9uIDI4NjAyNCkKKysrIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllclJlYWRPbmx5
QXR0cmlidXRlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzEsNyArNzEsNyBAQCBwdWJsaWM6CiAg
ICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAg
IHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0U3Ry
aW5naWZpZXJSZWFkT25seUF0dHJpYnV0ZVByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVy
biAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNw
YWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJl
KEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNW
YWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAtMjA4LDkgKzIwOCw5IEBAIEpTQzo6SXNvU3Vic3Bh
Y2UqIEpTVGVzdFN0cmluZ2lmaWVyUmVhZE8KICAgICAgICAgcmV0dXJuIHNwYWNlOwogICAgIHN0
YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwg
SlNUZXN0U3RyaW5naWZpZXJSZWFkT25seUF0dHJpYnV0ZT4gfHwgIUpTVGVzdFN0cmluZ2lmaWVy
UmVhZE9ubHlBdHRyaWJ1dGU6Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhwciAo
c3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0U3RyaW5n
aWZpZXJSZWFkT25seUF0dHJpYnV0ZT4pCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVz
dFN0cmluZ2lmaWVyUmVhZE9ubHlBdHRyaWJ1dGUgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJ
U09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5
cGUuZ2V0KCksIEpTVGVzdFN0cmluZ2lmaWVyUmVhZE9ubHlBdHRyaWJ1dGUpOworICAgICAgICBz
cGFjZXMubV9zdWJzcGFjZUZvclRlc3RTdHJpbmdpZmllclJlYWRPbmx5QXR0cmlidXRlID0gbWFr
ZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1
Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCksIEpTVGVzdFN0cmluZ2lmaWVyUmVhZE9ubHlBdHRy
aWJ1dGUpOwogICAgIGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0U3RyaW5n
aWZpZXJSZWFkT25seUF0dHJpYnV0ZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJT
UEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVGVzdFN0cmlu
Z2lmaWVyUmVhZE9ubHlBdHRyaWJ1dGUpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRl
c3RTdHJpbmdpZmllclJlYWRPbmx5QXR0cmlidXRlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4g
SVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RT
dHJpbmdpZmllclJlYWRPbmx5QXR0cmlidXRlKTsKICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5t
X3N1YnNwYWNlRm9yVGVzdFN0cmluZ2lmaWVyUmVhZE9ubHlBdHRyaWJ1dGUuZ2V0KCk7CiBJR05P
UkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JF
R0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJSZWFkV3JpdGVBdHRyaWJ1dGUuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RTdHJpbmdpZmllclJlYWRXcml0ZUF0dHJpYnV0ZS5jcHAJKHJldmlzaW9uIDI4NjAyNCkK
KysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdp
ZmllclJlYWRXcml0ZUF0dHJpYnV0ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcyLDcgKzcyLDcg
QEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6
OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJB
QkxFKEpTVGVzdFN0cmluZ2lmaWVyUmVhZFdyaXRlQXR0cmlidXRlUHJvdG90eXBlLCBCYXNlKTsK
LSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZt
LnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBj
cmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC0yMjcsOSArMjI3LDkgQEAg
SlNDOjpJc29TdWJzcGFjZSogSlNUZXN0U3RyaW5naWZpZXJSZWFkVwogICAgICAgICByZXR1cm4g
c3BhY2U7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1
Y3RpYmxlT2JqZWN0LCBKU1Rlc3RTdHJpbmdpZmllclJlYWRXcml0ZUF0dHJpYnV0ZT4gfHwgIUpT
VGVzdFN0cmluZ2lmaWVyUmVhZFdyaXRlQXR0cmlidXRlOjpuZWVkc0Rlc3RydWN0aW9uKTsKICAg
ICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmpl
Y3QsIEpTVGVzdFN0cmluZ2lmaWVyUmVhZFdyaXRlQXR0cmlidXRlPikKLSAgICAgICAgc3BhY2Vz
Lm1fc3Vic3BhY2VGb3JUZXN0U3RyaW5naWZpZXJSZWFkV3JpdGVBdHRyaWJ1dGUgPSBtYWtlVW5p
cXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGli
bGVPYmplY3RIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVGVzdFN0cmluZ2lmaWVyUmVhZFdyaXRlQXR0
cmlidXRlKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0U3RyaW5naWZpZXJSZWFk
V3JpdGVBdHRyaWJ1dGUgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5J
VCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0U3Ry
aW5naWZpZXJSZWFkV3JpdGVBdHRyaWJ1dGUpOwogICAgIGVsc2UKLSAgICAgICAgc3BhY2VzLm1f
c3Vic3BhY2VGb3JUZXN0U3RyaW5naWZpZXJSZWFkV3JpdGVBdHRyaWJ1dGUgPSBtYWtlVW5pcXVl
PElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxU
eXBlLmdldCgpLCBKU1Rlc3RTdHJpbmdpZmllclJlYWRXcml0ZUF0dHJpYnV0ZSk7CisgICAgICAg
IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFN0cmluZ2lmaWVyUmVhZFdyaXRlQXR0cmlidXRlID0g
bWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2Vs
bEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RTdHJpbmdpZmllclJlYWRXcml0ZUF0dHJpYnV0ZSk7CiAg
ICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RTdHJpbmdpZmllclJlYWRX
cml0ZUF0dHJpYnV0ZS5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUt
Y29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RUeXBlZGVm
cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdFR5cGVkZWZzLmNwcAkocmV2aXNpb24gMjg2MDI0KQorKysgU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFR5cGVkZWZzLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTE2LDcgKzExNiw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJz
cGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNT
RVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3RUeXBlZGVmc1Byb3RvdHlwZSwgQmFzZSk7
Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2
bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSog
Y3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAtNzc4LDkgKzc3OCw5IEBA
IEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdFR5cGVkZWZzOjpzdWJzcGEKICAgICAgICAgcmV0dXJu
IHNwYWNlOwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3Ry
dWN0aWJsZU9iamVjdCwgSlNUZXN0VHlwZWRlZnM+IHx8ICFKU1Rlc3RUeXBlZGVmczo6bmVlZHNE
ZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpT
RGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RUeXBlZGVmcz4pCi0gICAgICAgIHNwYWNlcy5tX3N1
YnNwYWNlRm9yVGVzdFR5cGVkZWZzID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQ
QUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmdldCgp
LCBKU1Rlc3RUeXBlZGVmcyk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFR5cGVk
ZWZzID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwg
dm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCksIEpTVGVzdFR5cGVkZWZzKTsKICAg
ICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFR5cGVkZWZzID0gbWFrZVVu
aXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBD
ZWxsVHlwZS5nZXQoKSwgSlNUZXN0VHlwZWRlZnMpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFj
ZUZvclRlc3RUeXBlZGVmcyA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9J
TklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0VHlwZWRlZnMpOwogICAg
IGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0VHlwZWRlZnMuZ2V0KCk7CiBJ
R05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdT
X0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNXb3JrZXJHbG9iYWxTY29wZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTV29ya2VyR2xvYmFs
U2NvcGUuY3BwCShyZXZpc2lvbiAyODYwMjQpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNXb3JrZXJHbG9iYWxTY29wZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTI0OSw3ICsyNDksNyBAQCBKU0M6Oklzb1N1YnNwYWNlKiBKU1dvcmtlckdsb2JhbFNjb3BlOjpz
CiAgICAgYXV0byYgc3BhY2VzID0gY2xpZW50RGF0YS5zdWJzcGFjZXMoKTsKICAgICBpZiAoYXV0
byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvcldvcmtlckdsb2JhbFNjb3BlLmdldCgpKQog
ICAgICAgICByZXR1cm4gc3BhY2U7Ci0gICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JXb3JrZXJHbG9i
YWxTY29wZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhl
YXAsIGNsaWVudERhdGEubV9oZWFwQ2VsbFR5cGVGb3JKU1dvcmtlckdsb2JhbFNjb3BlLmdldCgp
LCBKU1dvcmtlckdsb2JhbFNjb3BlKTsKKyAgICBzcGFjZXMubV9zdWJzcGFjZUZvcldvcmtlckds
b2JhbFNjb3BlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0u
aGVhcCwgKmNsaWVudERhdGEubV9oZWFwQ2VsbFR5cGVGb3JKU1dvcmtlckdsb2JhbFNjb3BlLCBK
U1dvcmtlckdsb2JhbFNjb3BlKTsKICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNl
Rm9yV29ya2VyR2xvYmFsU2NvcGUuZ2V0KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVh
Y2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFy
ZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNXb3Jr
ZXJHbG9iYWxTY29wZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1dvcmtlckdsb2JhbFNjb3BlLmgJKHJldmlzaW9uIDI4NjAyNCkKKysr
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1dvcmtlckdsb2JhbFNj
b3BlLmgJKHdvcmtpbmcgY29weSkKQEAgLTg1LDcgKzg1LDcgQEAgcHVibGljOgogICAgIHN0YXRp
YyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAg
ICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTV29ya2VyR2xvYmFsU2Nv
cGVQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7
CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KICAgICBzdGF0
aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1dvcmtsZXRH
bG9iYWxTY29wZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTV29ya2xldEdsb2JhbFNjb3BlLmNwcAkocmV2aXNpb24gMjg2MDI0KQor
KysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTV29ya2xldEdsb2Jh
bFNjb3BlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTYzLDcgKzE2Myw3IEBAIEpTQzo6SXNvU3Vi
c3BhY2UqIEpTV29ya2xldEdsb2JhbFNjb3BlOjoKICAgICBhdXRvJiBzcGFjZXMgPSBjbGllbnRE
YXRhLnN1YnNwYWNlcygpOwogICAgIGlmIChhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNl
Rm9yV29ya2xldEdsb2JhbFNjb3BlLmdldCgpKQogICAgICAgICByZXR1cm4gc3BhY2U7Ci0gICAg
c3BhY2VzLm1fc3Vic3BhY2VGb3JXb3JrbGV0R2xvYmFsU2NvcGUgPSBtYWtlVW5pcXVlPElzb1N1
YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCBjbGllbnREYXRhLm1faGVhcENlbGxU
eXBlRm9ySlNXb3JrbGV0R2xvYmFsU2NvcGUuZ2V0KCksIEpTV29ya2xldEdsb2JhbFNjb3BlKTsK
KyAgICBzcGFjZXMubV9zdWJzcGFjZUZvcldvcmtsZXRHbG9iYWxTY29wZSA9IG1ha2VVbmlxdWU8
SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICpjbGllbnREYXRhLm1faGVh
cENlbGxUeXBlRm9ySlNXb3JrbGV0R2xvYmFsU2NvcGUsIEpTV29ya2xldEdsb2JhbFNjb3BlKTsK
ICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yV29ya2xldEdsb2JhbFNjb3Bl
LmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKIElHTk9S
RV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRleDogU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTV29ya2xldEdsb2JhbFNjb3BlLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTV29y
a2xldEdsb2JhbFNjb3BlLmgJKHJldmlzaW9uIDI4NjAyNCkKKysrIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1dvcmtsZXRHbG9iYWxTY29wZS5oCSh3b3JraW5nIGNv
cHkpCkBAIC04NSw3ICs4NSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFj
ZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJU
X0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1dvcmtsZXRHbG9iYWxTY29wZVByb3RvdHlwZSwgQmFz
ZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJu
ICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVy
ZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpJbmRleDogU291cmNlL1dl
YkNvcmUvYnJpZGdlL29iamMvb2JqY19ydW50aW1lLm1tCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfcnVudGltZS5tbQkocmV2aXNpb24gMjg2MDI0KQorKysg
U291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19ydW50aW1lLm1tCSh3b3JraW5nIGNvcHkp
CkBAIC0zMzQsNyArMzM0LDkgQEAgYm9vbCBPYmpjRmFsbGJhY2tPYmplY3RJbXA6OnRvQm9vbGVh
bihKUwogCiBKU0M6Oklzb1N1YnNwYWNlKiBPYmpjRmFsbGJhY2tPYmplY3RJbXA6OnN1YnNwYWNl
Rm9ySW1wbChKU0M6OlZNJiB2bSkKIHsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SlNDOjpJ
c29TdWJzcGFjZVBlclZNPiBwZXJWTShbXSAoSlNDOjpWTSYgdm0pIHsgcmV0dXJuIElTT19TVUJT
UEFDRV9QQVJBTUVURVJTKHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5nZXQoKSwg
T2JqY0ZhbGxiYWNrT2JqZWN0SW1wKTsgfSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEpT
Qzo6SXNvU3Vic3BhY2VQZXJWTT4gcGVyVk0oW10gKEpTQzo6Vk0mIHZtKSB7CisgICAgICAgIHJl
dHVybiBJU09fU1VCU1BBQ0VfUEFSQU1FVEVSUyh2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2Vs
bFR5cGUoKSwgT2JqY0ZhbGxiYWNrT2JqZWN0SW1wKTsKKyAgICB9KTsKICAgICByZXR1cm4gJnBl
clZNLmdldCgpLmZvclZNKHZtKTsKIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>444849</attachid>
            <date>2021-11-19 13:12:12 -0800</date>
            <delta_ts>2021-11-19 14:06:18 -0800</delta_ts>
            <desc>work in progress.</desc>
            <filename>bug-233240c.patch</filename>
            <type>text/plain</type>
            <size>213926</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCShyZXZpc2lvbiAyODYwNDMpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvanNjLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQyOSw3ICsxNDI5LDcgQEAg
cHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlLCBTdWJzcGFjZUFjY2Vzcz4K
ICAgICBzdGF0aWMgQ29tcGxldGVTdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsK
LSAgICAgICAgcmV0dXJuICZ2bS5kZXN0cnVjdGlibGVPYmplY3RTcGFjZTsKKyAgICAgICAgcmV0
dXJuICZ2bS5kZXN0cnVjdGlibGVPYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIEpTQ01lbW9y
eUZvb3RwcmludChWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQpAQCAtMTc2Miw3ICsxNzYy
LDcgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlLCBTdWJzcGFjZUFj
Y2Vzcz4KICAgICBzdGF0aWMgQ29tcGxldGVTdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQog
ICAgIHsKLSAgICAgICAgcmV0dXJuICZ2bS5kZXN0cnVjdGlibGVPYmplY3RTcGFjZTsKKyAgICAg
ICAgcmV0dXJuICZ2bS5kZXN0cnVjdGlibGVPYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIHN0
YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oJKHJldmlzaW9uIDI4NjA0MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZh
U2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0x
OTU5LDcgKzE5NTksNyBAQAogCQlFM0M2OTRCMzIzMDI2ODc3MDA2RkJFNDIgLyogV2FzbU9TUkVu
dHJ5RGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RTNDNjk0QjEyMzAyNjg3MzAwNkZCRTQyIC8qIFdhc21PU1JFbnRyeURhdGEuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFM0M3M0E5MTI1QkZBNzNC
MDBFRkUzMDMgLyogV2FzbVN0cmVhbWluZ1BsYW4uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzQzczQTkwMjVCRkE3MzQwMEVGRTMwMyAvKiBXYXNtU3Ry
ZWFtaW5nUGxhbi5oICovOyB9OwogCQlFM0M3OUNBQjFEQjlBNERDMDBEMUVDQTQgLyogRE9NSklU
RWZmZWN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBF
M0M3OUNBQTFEQjlBNEQ2MDBEMUVDQTQgLyogRE9NSklURWZmZWN0LmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJRTNDOEVENDMyM0ExREJDQjAwMTMx
OTU4IC8qIElzb0lubGluZWRIZWFwQ2VsbFR5cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzQzhFRDQyMjNBMURCQzUwMDEzMTk1OCAvKiBJc29Jbmxp
bmVkSGVhcENlbGxUeXBlLmggKi87IH07CisJCUUzQzhFRDQzMjNBMURCQ0IwMDEzMTk1OCAvKiBJ
c29JbmxpbmVkSGVhcENlbGxUeXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBFM0M4RUQ0MjIzQTFEQkM1MDAxMzE5NTggLyogSXNvSW5saW5lZEhlYXBD
ZWxsVHlwZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCUUzQ0EzQTRFMjUyN0FCMkYwMDQ4MDJCRiAvKiBKSVRPcGVyYXRpb25MaXN0LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFM0NBM0E0QzI1MjdBQjJG
MDA0ODAyQkYgLyogSklUT3BlcmF0aW9uTGlzdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUzRDIzOUM5MUI4MjlDMUMwMEJCRUY2NyAvKiBKU01v
ZHVsZUVudmlyb25tZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBFM0QyMzlDNzFCODI5QzFDMDBCQkVGNjcgLyogSlNNb2R1bGVFbnZpcm9ubWVudC5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUzRDM1
MTVGMjQxQjg5RDcwMDhEQzE2RSAvKiBNYXJrZWRKU1ZhbHVlUmVmQXJyYXkuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzRDM1MTVEMjQxQjg5Q0UwMDhE
QzE2RSAvKiBNYXJrZWRKU1ZhbHVlUmVmQXJyYXkuaCAqLzsgfTsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5jcHAJKHJldmlzaW9uIDI4NjA0MykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNlLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMjI3Nyw3ICsyMjc3LDcgQEAgdm9pZCBBY2Nlc3NDYXNlOjpnZW5lcmF0ZUlt
cGwoQWNjZXNzR2VuZQogICAgICAgICAgICAgc2l6ZV90IG5ld1NpemUgPSBuZXdTdHJ1Y3R1cmUo
KS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSAqIHNpemVvZihKU1ZhbHVlKTsKIAogICAgICAgICAgICAg
aWYgKGFsbG9jYXRpbmdJbmxpbmUpIHsKLSAgICAgICAgICAgICAgICBBbGxvY2F0b3IgYWxsb2Nh
dG9yID0gdm0uanNWYWx1ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UuYWxsb2NhdG9yRm9yKG5ld1Np
emUsIEFsbG9jYXRvckZvck1vZGU6OkFsbG9jYXRvcklmRXhpc3RzKTsKKyAgICAgICAgICAgICAg
ICBBbGxvY2F0b3IgYWxsb2NhdG9yID0gdm0uanNWYWx1ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2Uo
KS5hbGxvY2F0b3JGb3IobmV3U2l6ZSwgQWxsb2NhdG9yRm9yTW9kZTo6QWxsb2NhdG9ySWZFeGlz
dHMpOwogCiAgICAgICAgICAgICAgICAgaml0LmVtaXRBbGxvY2F0ZShzY3JhdGNoR1BSLCBKSVRB
bGxvY2F0b3I6OmNvbnN0YW50KGFsbG9jYXRvciksIHNjcmF0Y2hHUFIyLCBzY3JhdGNoR1BSMywg
c2xvd1BhdGgpOwogICAgICAgICAgICAgICAgIGppdC5hZGRQdHIoQ0NhbGxIZWxwZXJzOjpUcnVz
dGVkSW1tMzIobmV3U2l6ZSArIHNpemVvZihJbmRleGluZ0hlYWRlcikpLCBzY3JhdGNoR1BSKTsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FdmFsQ29kZUJsb2NrLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0V2YWxDb2RlQmxvY2su
aAkocmV2aXNpb24gMjg2MDQzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0V2
YWxDb2RlQmxvY2suaAkod29ya2luZyBjb3B5KQpAQCAtNDEsNyArNDEsNyBAQCBwdWJsaWM6CiAg
ICAgdGVtcGxhdGU8dHlwZW5hbWUsIFN1YnNwYWNlQWNjZXNzPgogICAgIHN0YXRpYyBJc29TdWJz
cGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKLSAgICAgICAgcmV0dXJuICZ2bS5jb2Rl
QmxvY2tTcGFjZS5zcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5jb2RlQmxvY2tTcGFjZSgpLnNw
YWNlOwogICAgIH0KIAogICAgIHN0YXRpYyBFdmFsQ29kZUJsb2NrKiBjcmVhdGUoVk0mIHZtLCBD
b3B5UGFyc2VkQmxvY2tUYWcsIEV2YWxDb2RlQmxvY2smIG90aGVyKQpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0V4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2UuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FeGVjdXRhYmxlVG9Db2Rl
QmxvY2tFZGdlLmNwcAkocmV2aXNpb24gMjg2MDQzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0V4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC04MSw3ICs4MSw3IEBAIHZvaWQgRXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZTo6dmlzaXRDaGkK
ICAgICAgICAgdmlzaXRvci5hcHBlbmRVbmJhcnJpZXJlZChjb2RlQmxvY2spOwogICAgIAogICAg
IGlmICghdmlzaXRvci5pc01hcmtlZChjb2RlQmxvY2spKQotICAgICAgICB2bS5leGVjdXRhYmxl
VG9Db2RlQmxvY2tFZGdlc1dpdGhGaW5hbGl6ZXJzLmFkZChlZGdlKTsKKyAgICAgICAgdm0uZXhl
Y3V0YWJsZVRvQ29kZUJsb2NrRWRnZXNXaXRoRmluYWxpemVycygpLmFkZChlZGdlKTsKICAgICAK
ICAgICBpZiAoSklUQ29kZTo6aXNPcHRpbWl6aW5nSklUKGNvZGVCbG9jay0+aml0VHlwZSgpKSkg
ewogICAgICAgICAvLyBJZiB3ZSBqZXR0aXNvbiBvdXJzZWx2ZXMgd2UnbGwgaW5zdGFsbCBvdXIg
YWx0ZXJuYXRpdmUsIHNvIG1ha2Ugc3VyZSB0aGF0IGl0CkBAIC0xMTQsNyArMTE0LDcgQEAgdm9p
ZCBFeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlOjp2aXNpdENoaQogICAgIC8vIG5vdCB5ZXQgbWFy
a2VkIGJlY2F1c2UgaXQgd2Vha2x5IGRlcGVuZHMgb24gYSBzdHJ1Y3R1cmUgdGhhdCB3ZSBkaWQg
bm90IHlldCBtYXJrLCB0aGVuIHdlCiAgICAgLy8gd2lsbCBrZWVwIGZpeHBvaW50aW5nIHVudGls
IHRoZSBlbmQuCiAgICAgdmlzaXRvci5hcHBlbmRVbmJhcnJpZXJlZChjb2RlQmxvY2stPmdsb2Jh
bE9iamVjdCgpKTsKLSAgICB2bS5leGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlc1dpdGhDb25zdHJh
aW50cy5hZGQoZWRnZSk7CisgICAgdm0uZXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZXNXaXRoQ29u
c3RyYWludHMoKS5hZGQoZWRnZSk7CiAgICAgZWRnZS0+cnVuQ29uc3RyYWludChsb2NrZXIsIHZt
LCB2aXNpdG9yKTsKIH0KIApAQCAtMTQzLDggKzE0Myw4IEBAIHZvaWQgRXhlY3V0YWJsZVRvQ29k
ZUJsb2NrRWRnZTo6ZmluYWxpemUKICAgICAgICAgbV9jb2RlQmxvY2suY2xlYXIoKTsKICAgICB9
CiAgICAgCi0gICAgdm0uZXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZXNXaXRoRmluYWxpemVycy5y
ZW1vdmUodGhpcyk7Ci0gICAgdm0uZXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZXNXaXRoQ29uc3Ry
YWludHMucmVtb3ZlKHRoaXMpOworICAgIHZtLmV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2VzV2l0
aEZpbmFsaXplcnMoKS5yZW1vdmUodGhpcyk7CisgICAgdm0uZXhlY3V0YWJsZVRvQ29kZUJsb2Nr
RWRnZXNXaXRoQ29uc3RyYWludHMoKS5yZW1vdmUodGhpcyk7CiB9CiAKIGlubGluZSB2b2lkIEV4
ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2U6OmFjdGl2YXRlKCkKQEAgLTIwMSw3ICsyMDEsNyBAQCB2
b2lkIEV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2U6OnJ1bkNvbnN0CiAgICAgY29kZUJsb2NrLT5k
ZXRlcm1pbmVMaXZlbmVzcyhsb2NrZXIsIHZpc2l0b3IpOwogCiAgICAgaWYgKHZpc2l0b3IuaXNN
YXJrZWQoY29kZUJsb2NrKSkKLSAgICAgICAgdm0uZXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZXNX
aXRoQ29uc3RyYWludHMucmVtb3ZlKHRoaXMpOworICAgICAgICB2bS5leGVjdXRhYmxlVG9Db2Rl
QmxvY2tFZGdlc1dpdGhDb25zdHJhaW50cygpLnJlbW92ZSh0aGlzKTsKIH0KIAogdGVtcGxhdGUg
dm9pZCBFeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlOjpydW5Db25zdHJhaW50KGNvbnN0IENvbmN1
cnJlbnRKU0xvY2tlciYsIFZNJiwgQWJzdHJhY3RTbG90VmlzaXRvciYpOwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0V4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2UuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhlY3V0YWJsZVRvQ29k
ZUJsb2NrRWRnZS5oCShyZXZpc2lvbiAyODYwNDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvRXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00
Myw3ICs0Myw3IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vi
c3BhY2VBY2Nlc3M+CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0p
CiAgICAgewotICAgICAgICByZXR1cm4gJnZtLmV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2VTcGFj
ZTsKKyAgICAgICAgcmV0dXJuICZ2bS5leGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlU3BhY2UoKTsK
ICAgICB9CiAKICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mLCBKU0ds
b2JhbE9iamVjdCosIEpTVmFsdWUgcHJvdG90eXBlKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9GdW5jdGlvbkNvZGVCbG9jay5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9GdW5jdGlvbkNvZGVCbG9jay5oCShyZXZpc2lvbiAyODYw
NDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRnVuY3Rpb25Db2RlQmxvY2su
aAkod29ya2luZyBjb3B5KQpAQCAtNDIsNyArNDIsNyBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8
dHlwZW5hbWUsIFN1YnNwYWNlQWNjZXNzPgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3Bh
Y2VGb3IoVk0mIHZtKQogICAgIHsKLSAgICAgICAgcmV0dXJuICZ2bS5jb2RlQmxvY2tTcGFjZS5z
cGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5jb2RlQmxvY2tTcGFjZSgpLnNwYWNlOwogICAgIH0K
IAogICAgIHN0YXRpYyBGdW5jdGlvbkNvZGVCbG9jayogY3JlYXRlKFZNJiB2bSwgQ29weVBhcnNl
ZEJsb2NrVGFnLCBGdW5jdGlvbkNvZGVCbG9jayYgb3RoZXIpCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvTW9kdWxlUHJvZ3JhbUNvZGVCbG9jay5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Nb2R1bGVQcm9ncmFtQ29kZUJsb2NrLmgJ
KHJldmlzaW9uIDI4NjA0MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Nb2R1
bGVQcm9ncmFtQ29kZUJsb2NrLmgJKHdvcmtpbmcgY29weSkKQEAgLTQyLDcgKzQyLDcgQEAgcHVi
bGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lLCBTdWJzcGFjZUFjY2Vzcz4KICAgICBzdGF0aWMg
SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7Ci0gICAgICAgIHJldHVybiAm
dm0uY29kZUJsb2NrU3BhY2Uuc3BhY2U7CisgICAgICAgIHJldHVybiAmdm0uY29kZUJsb2NrU3Bh
Y2UoKS5zcGFjZTsKICAgICB9CiAKICAgICBzdGF0aWMgTW9kdWxlUHJvZ3JhbUNvZGVCbG9jayog
Y3JlYXRlKFZNJiB2bSwgQ29weVBhcnNlZEJsb2NrVGFnLCBNb2R1bGVQcm9ncmFtQ29kZUJsb2Nr
JiBvdGhlcikKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qcm9ncmFtQ29k
ZUJsb2NrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1By
b2dyYW1Db2RlQmxvY2suaAkocmV2aXNpb24gMjg2MDQzKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL1Byb2dyYW1Db2RlQmxvY2suaAkod29ya2luZyBjb3B5KQpAQCAtNDIsNyAr
NDIsNyBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUsIFN1YnNwYWNlQWNjZXNzPgog
ICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKLSAgICAg
ICAgcmV0dXJuICZ2bS5jb2RlQmxvY2tTcGFjZS5zcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5j
b2RlQmxvY2tTcGFjZSgpLnNwYWNlOwogICAgIH0KIAogICAgIHN0YXRpYyBQcm9ncmFtQ29kZUJs
b2NrKiBjcmVhdGUoVk0mIHZtLCBDb3B5UGFyc2VkQmxvY2tUYWcsIFByb2dyYW1Db2RlQmxvY2sm
IG90aGVyKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkRnVu
Y3Rpb25FeGVjdXRhYmxlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuY3BwCShyZXZpc2lvbiAyODYwNDMp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1
dGFibGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNTEsNyArMjUxLDcgQEAgVW5saW5rZWRGdW5j
dGlvbkNvZGVCbG9jayogVW5saW5rZWRGdW5jdAogICAgICAgICBtX3VubGlua2VkQ29kZUJsb2Nr
Rm9yQ29uc3RydWN0LnNldCh2bSwgdGhpcywgcmVzdWx0KTsKICAgICAgICAgYnJlYWs7CiAgICAg
fQotICAgIHZtLnVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlU3BhY2Uuc2V0LmFkZCh0aGlzKTsK
KyAgICB2bS51bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZVNwYWNlKCkuc2V0LmFkZCh0aGlzKTsK
ICAgICByZXR1cm4gcmVzdWx0OwogfQogCkBAIC0zMTAsNyArMzEwLDcgQEAgdm9pZCBVbmxpbmtl
ZEZ1bmN0aW9uRXhlY3V0YWJsZTo6ZmluYWxpegogICAgICAgICBjbGVhcklmRGVhZChtX3VubGlu
a2VkQ29kZUJsb2NrRm9yQ2FsbCk7CiAgICAgICAgIGNsZWFySWZEZWFkKG1fdW5saW5rZWRDb2Rl
QmxvY2tGb3JDb25zdHJ1Y3QpOwogICAgICAgICBpZiAoaXNDbGVhcmVkICYmICFpc1N0aWxsVmFs
aWQpCi0gICAgICAgICAgICB2bS51bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZVNwYWNlLnNldC5y
ZW1vdmUodGhpcyk7CisgICAgICAgICAgICB2bS51bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZVNw
YWNlKCkuc2V0LnJlbW92ZSh0aGlzKTsKICAgICB9CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0
YWJsZS5oCShyZXZpc2lvbiAyODYwNDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuaAkod29ya2luZyBjb3B5KQpAQCAtNjcsNyAr
NjcsNyBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUsIFN1YnNwYWNl
QWNjZXNzPgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAg
IHsKLSAgICAgICAgcmV0dXJuICZ2bS51bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZVNwYWNlLnNw
YWNlOworICAgICAgICByZXR1cm4gJnZtLnVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlU3BhY2Uo
KS5zcGFjZTsKICAgICB9CiAKICAgICBzdGF0aWMgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUq
IGNyZWF0ZShWTSYgdm0sIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgRnVuY3Rpb25NZXRhZGF0
YU5vZGUqIG5vZGUsIFVubGlua2VkRnVuY3Rpb25LaW5kIHVubGlua2VkRnVuY3Rpb25LaW5kLCBD
b25zdHJ1Y3RBYmlsaXR5IGNvbnN0cnVjdEFiaWxpdHksIEpTUGFyc2VyU2NyaXB0TW9kZSBzY3Jp
cHRNb2RlLCBSZWZQdHI8VERaRW52aXJvbm1lbnRMaW5rPiBwYXJlbnRTY29wZVREWlZhcmlhYmxl
cywgc3RkOjpvcHRpb25hbDxQcml2YXRlTmFtZUVudmlyb25tZW50PiBwYXJlbnRQcml2YXRlTmFt
ZUVudmlyb25tZW50LCBEZXJpdmVkQ29udGV4dFR5cGUgZGVyaXZlZENvbnRleHRUeXBlLCBOZWVk
c0NsYXNzRmllbGRJbml0aWFsaXplciBuZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciwgUHJpdmF0
ZUJyYW5kUmVxdWlyZW1lbnQgcHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQsIGJvb2wgaXNCdWlsdGlu
RGVmYXVsdENsYXNzQ29uc3RydWN0b3IgPSBmYWxzZSkKQEAgLTEzMSw3ICsxMzEsNyBAQCBwdWJs
aWM6CiAgICAgewogICAgICAgICBtX3VubGlua2VkQ29kZUJsb2NrRm9yQ2FsbC5jbGVhcigpOwog
ICAgICAgICBtX3VubGlua2VkQ29kZUJsb2NrRm9yQ29uc3RydWN0LmNsZWFyKCk7Ci0gICAgICAg
IHZtLnVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlU3BhY2Uuc2V0LnJlbW92ZSh0aGlzKTsKKyAg
ICAgICAgdm0udW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGVTcGFjZSgpLnNldC5yZW1vdmUodGhp
cyk7CiAgICAgfQogCiAgICAgdm9pZCByZWNvcmRQYXJzZShDb2RlRmVhdHVyZXMgZmVhdHVyZXMs
IExleGljYWxTY29wZUZlYXR1cmVzIGxleGljYWxTY29wZUZlYXR1cmVzLCBib29sIGhhc0NhcHR1
cmVkVmFyaWFibGVzKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxh
dGl2ZUpJVC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
cGVjdWxhdGl2ZUpJVC5jcHAJKHJldmlzaW9uIDI4NjA0MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjAsNyAr
MTIwLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdEFsbG9jYXRlUmF3T2JqZQogCiAgICAg
Vk0mIHZtID0gdGhpcy0+dm0oKTsKICAgICBpZiAoc2l6ZSkgewotICAgICAgICBpZiAoQWxsb2Nh
dG9yIGFsbG9jYXRvciA9IHZtLmpzVmFsdWVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlLmFsbG9jYXRv
ckZvck5vblZpcnR1YWwoc2l6ZSwgQWxsb2NhdG9yRm9yTW9kZTo6QWxsb2NhdG9ySWZFeGlzdHMp
KSB7CisgICAgICAgIGlmIChBbGxvY2F0b3IgYWxsb2NhdG9yID0gdm0uanNWYWx1ZUdpZ2FjYWdl
QXV4aWxpYXJ5U3BhY2UoKS5hbGxvY2F0b3JGb3JOb25WaXJ0dWFsKHNpemUsIEFsbG9jYXRvckZv
ck1vZGU6OkFsbG9jYXRvcklmRXhpc3RzKSkgewogICAgICAgICAgICAgbV9qaXQuZW1pdEFsbG9j
YXRlKHN0b3JhZ2VHUFIsIEpJVEFsbG9jYXRvcjo6Y29uc3RhbnQoYWxsb2NhdG9yKSwgc2NyYXRj
aEdQUiwgc2NyYXRjaDJHUFIsIHNsb3dDYXNlcyk7CiAgICAgICAgICAgICAKICAgICAgICAgICAg
IG1faml0LmFkZFB0cigKQEAgLTEwNzM4LDcgKzEwNzM4LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZUFsbG9jYXRlUHJvcAogICAgIAogICAgIHNpemVfdCBzaXplID0gaW5pdGlhbE91
dE9mTGluZUNhcGFjaXR5ICogc2l6ZW9mKEpTVmFsdWUpOwogCi0gICAgQWxsb2NhdG9yIGFsbG9j
YXRvciA9IHZtKCkuanNWYWx1ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UuYWxsb2NhdG9yRm9yTm9u
VmlydHVhbChzaXplLCBBbGxvY2F0b3JGb3JNb2RlOjpBbGxvY2F0b3JJZkV4aXN0cyk7CisgICAg
QWxsb2NhdG9yIGFsbG9jYXRvciA9IHZtKCkuanNWYWx1ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2Uo
KS5hbGxvY2F0b3JGb3JOb25WaXJ0dWFsKHNpemUsIEFsbG9jYXRvckZvck1vZGU6OkFsbG9jYXRv
cklmRXhpc3RzKTsKIAogICAgIGlmICghYWxsb2NhdG9yIHx8IG5vZGUtPnRyYW5zaXRpb24oKS0+
cHJldmlvdXMtPmNvdWxkSGF2ZUluZGV4aW5nSGVhZGVyKCkpIHsKICAgICAgICAgU3BlY3VsYXRl
Q2VsbE9wZXJhbmQgYmFzZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CkBAIC0xMDc4Miw3ICsxMDc4
Miw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVSZWFsbG9jYXRlUHIKICAgICBzaXpl
X3QgbmV3U2l6ZSA9IG9sZFNpemUgKiBvdXRPZkxpbmVHcm93dGhGYWN0b3I7CiAgICAgQVNTRVJU
KG5ld1NpemUgPT0gbm9kZS0+dHJhbnNpdGlvbigpLT5uZXh0LT5vdXRPZkxpbmVDYXBhY2l0eSgp
ICogc2l6ZW9mKEpTVmFsdWUpKTsKICAgICAKLSAgICBBbGxvY2F0b3IgYWxsb2NhdG9yID0gdm0o
KS5qc1ZhbHVlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZS5hbGxvY2F0b3JGb3JOb25WaXJ0dWFsKG5l
d1NpemUsIEFsbG9jYXRvckZvck1vZGU6OkFsbG9jYXRvcklmRXhpc3RzKTsKKyAgICBBbGxvY2F0
b3IgYWxsb2NhdG9yID0gdm0oKS5qc1ZhbHVlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZSgpLmFsbG9j
YXRvckZvck5vblZpcnR1YWwobmV3U2l6ZSwgQWxsb2NhdG9yRm9yTW9kZTo6QWxsb2NhdG9ySWZF
eGlzdHMpOwogCiAgICAgaWYgKCFhbGxvY2F0b3IgfHwgbm9kZS0+dHJhbnNpdGlvbigpLT5wcmV2
aW91cy0+Y291bGRIYXZlSW5kZXhpbmdIZWFkZXIoKSkgewogICAgICAgICBTcGVjdWxhdGVDZWxs
T3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKQEAgLTExNDk5LDcgKzExNDk5LDcg
QEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdE5ld1R5cGVkQXJyYXlXaQogICAgICAgICBtX2pp
dC5hbmQzMihUcnVzdGVkSW1tMzIofjcpLCBzY3JhdGNoR1BSKTsKICAgICB9CiAgICAgbV9qaXQu
ZW1pdEFsbG9jYXRlVmFyaWFibGVTaXplZCgKLSAgICAgICAgc3RvcmFnZUdQUiwgdm0oKS5wcmlt
aXRpdmVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlLCBzY3JhdGNoR1BSLCBzY3JhdGNoR1BSLAorICAg
ICAgICBzdG9yYWdlR1BSLCB2bSgpLnByaW1pdGl2ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UoKSwg
c2NyYXRjaEdQUiwgc2NyYXRjaEdQUiwKICAgICAgICAgc2NyYXRjaEdQUjIsIHNsb3dDYXNlcyk7
CiAgICAgCiAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgZG9uZSA9IG1faml0LmJyYW5jaFRlc3Qz
MihNYWNyb0Fzc2VtYmxlcjo6WmVybywgc2l6ZUdQUik7CkBAIC0xMzcwMCw3ICsxMzcwMCw3IEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRBbGxvY2F0ZUJ1dHRlcmYKICAgICBkaWROb3RPdmVy
Zmxvdy5saW5rKCZtX2ppdCk7CiAjZW5kaWYKICAgICBtX2ppdC5lbWl0QWxsb2NhdGVWYXJpYWJs
ZVNpemVkKAotICAgICAgICBzdG9yYWdlUmVzdWx0R1BSLCB2bSgpLmpzVmFsdWVHaWdhY2FnZUF1
eGlsaWFyeVNwYWNlLCBzY3JhdGNoMiwgc2NyYXRjaDEsIHNjcmF0Y2gzLCBzbG93Q2FzZXMpOwor
ICAgICAgICBzdG9yYWdlUmVzdWx0R1BSLCB2bSgpLmpzVmFsdWVHaWdhY2FnZUF1eGlsaWFyeVNw
YWNlKCksIHNjcmF0Y2gyLCBzY3JhdGNoMSwgc2NyYXRjaDMsIHNsb3dDYXNlcyk7CiAgICAgbV9q
aXQuYWRkUHRyKFRydXN0ZWRJbW0zMihzaXplb2YoSW5kZXhpbmdIZWFkZXIpKSwgc3RvcmFnZVJl
c3VsdEdQUik7CiAKICAgICBtX2ppdC5zdG9yZTMyKHNpemVHUFIsIE1hY3JvQXNzZW1ibGVyOjpB
ZGRyZXNzKHN0b3JhZ2VSZXN1bHRHUFIsIEJ1dHRlcmZseTo6b2Zmc2V0T2ZQdWJsaWNMZW5ndGgo
KSkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0Iz
LmNwcAkocmV2aXNpb24gMjg2MDQzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExM
b3dlckRGR1RvQjMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04MzAwLDcgKzgzMDAsNyBAQCBJR05P
UkVfQ0xBTkdfV0FSTklOR1NfRU5ECiAgICAgICAgICAgICAgICAgbV9vdXQuY29uc3RJbnRQdHIo
fnN0YXRpY19jYXN0PGludHB0cl90Pig3KSkpOwogICAgICAgICB9CiAKLSAgICAgICAgTFZhbHVl
IGFsbG9jYXRvciA9IGFsbG9jYXRvckZvclNpemUodm0oKS5wcmltaXRpdmVHaWdhY2FnZUF1eGls
aWFyeVNwYWNlLCBieXRlU2l6ZSwgc2xvd0Nhc2UpOworICAgICAgICBMVmFsdWUgYWxsb2NhdG9y
ID0gYWxsb2NhdG9yRm9yU2l6ZSh2bSgpLnByaW1pdGl2ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2Uo
KSwgYnl0ZVNpemUsIHNsb3dDYXNlKTsKICAgICAgICAgTFZhbHVlIHN0b3JhZ2UgPSBhbGxvY2F0
ZUhlYXBDZWxsKGFsbG9jYXRvciwgc2xvd0Nhc2UpOwogCiAgICAgICAgIHNwbGF0V29yZHMoCkBA
IC0xMzkyMSw3ICsxMzkyMSw3IEBAIElHTk9SRV9DTEFOR19XQVJOSU5HU19FTkQKICAgICAgICAg
ICAgICAgICBWYWx1ZUZyb21CbG9jayBub0J1dHRlcmZseSA9IG1fb3V0LmFuY2hvcihtX291dC5p
bnRQdHJaZXJvKTsKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBMVmFsdWUgc3Rh
cnRPZlN0b3JhZ2UgPSBhbGxvY2F0ZUhlYXBDZWxsKAotICAgICAgICAgICAgICAgICAgICBhbGxv
Y2F0b3JGb3JTaXplKHZtKCkuanNWYWx1ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UsIGJ1dHRlcmZs
eVNpemUsIHNsb3dQYXRoKSwKKyAgICAgICAgICAgICAgICAgICAgYWxsb2NhdG9yRm9yU2l6ZSh2
bSgpLmpzVmFsdWVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlKCksIGJ1dHRlcmZseVNpemUsIHNsb3dQ
YXRoKSwKICAgICAgICAgICAgICAgICAgICAgc2xvd1BhdGgpOwogCiAgICAgICAgICAgICAgICAg
TFZhbHVlIGZhc3RCdXR0ZXJmbHlWYWx1ZSA9IG1fb3V0LmFkZCgKQEAgLTE1MDE2LDcgKzE1MDE2
LDcgQEAgSUdOT1JFX0NMQU5HX1dBUk5JTkdTX0VORAogICAgICAgICBMQmFzaWNCbG9jayBsYXN0
TmV4dCA9IG1fb3V0Lmluc2VydE5ld0Jsb2Nrc0JlZm9yZShzbG93UGF0aCk7CiAKICAgICAgICAg
c2l6ZV90IHNpemVJbkJ5dGVzID0gc2l6ZUluVmFsdWVzICogc2l6ZW9mKEpTVmFsdWUpOwotICAg
ICAgICBBbGxvY2F0b3IgYWxsb2NhdG9yID0gdm0oKS5qc1ZhbHVlR2lnYWNhZ2VBdXhpbGlhcnlT
cGFjZS5hbGxvY2F0b3JGb3JOb25WaXJ0dWFsKHNpemVJbkJ5dGVzLCBBbGxvY2F0b3JGb3JNb2Rl
OjpBbGxvY2F0b3JJZkV4aXN0cyk7CisgICAgICAgIEFsbG9jYXRvciBhbGxvY2F0b3IgPSB2bSgp
LmpzVmFsdWVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlKCkuYWxsb2NhdG9yRm9yTm9uVmlydHVhbChz
aXplSW5CeXRlcywgQWxsb2NhdG9yRm9yTW9kZTo6QWxsb2NhdG9ySWZFeGlzdHMpOwogICAgICAg
ICBMVmFsdWUgc3RhcnRPZlN0b3JhZ2UgPSBhbGxvY2F0ZUhlYXBDZWxsKAogICAgICAgICAgICAg
bV9vdXQuY29uc3RJbnRQdHIoYWxsb2NhdG9yLmxvY2FsQWxsb2NhdG9yKCkpLCBzbG93UGF0aCk7
CiAgICAgICAgIFZhbHVlRnJvbUJsb2NrIGZhc3RCdXR0ZXJmbHkgPSBtX291dC5hbmNob3IoCkBA
IC0xNzAzOCw3ICsxNzAzOCw3IEBAIElHTk9SRV9DTEFOR19XQVJOSU5HU19FTkQKICAgICAgICAg
TFZhbHVlIGJ1dHRlcmZseVNpemUgPSBtX291dC5hZGQoCiAgICAgICAgICAgICBwYXlsb2FkU2l6
ZSwgbV9vdXQuY29uc3RJbnRQdHIoc2l6ZW9mKEluZGV4aW5nSGVhZGVyKSkpOwogCi0gICAgICAg
IExWYWx1ZSBhbGxvY2F0b3IgPSBhbGxvY2F0b3JGb3JTaXplKHZtKCkuanNWYWx1ZUdpZ2FjYWdl
QXV4aWxpYXJ5U3BhY2UsIGJ1dHRlcmZseVNpemUsIGZhaWxDYXNlKTsKKyAgICAgICAgTFZhbHVl
IGFsbG9jYXRvciA9IGFsbG9jYXRvckZvclNpemUodm0oKS5qc1ZhbHVlR2lnYWNhZ2VBdXhpbGlh
cnlTcGFjZSgpLCBidXR0ZXJmbHlTaXplLCBmYWlsQ2FzZSk7CiAgICAgICAgIExWYWx1ZSBzdGFy
dE9mU3RvcmFnZSA9IGFsbG9jYXRlSGVhcENlbGwoYWxsb2NhdG9yLCBmYWlsQ2FzZSk7CiAKICAg
ICAgICAgTFZhbHVlIGJ1dHRlcmZseSA9IG1fb3V0LmFkZChzdGFydE9mU3RvcmFnZSwgbV9vdXQu
Y29uc3RJbnRQdHIoc2l6ZW9mKEluZGV4aW5nSGVhZGVyKSkpOwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvQ29kZUJsb2NrU2V0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvQ29kZUJsb2NrU2V0LmgJKHJldmlzaW9uIDI4NjA0MykKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0NvZGVCbG9ja1NldC5oCSh3b3JraW5nIGNvcHkpCkBAIC02
Niw4ICs2Niw2IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPiB2b2lk
IGl0ZXJhdGUoY29uc3QgRnVuY3RvciYpOwogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+
IHZvaWQgaXRlcmF0ZShjb25zdCBBYnN0cmFjdExvY2tlciYsIGNvbnN0IEZ1bmN0b3ImKTsKIAot
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+IHZvaWQgaXRlcmF0ZVZpYVN1YnNwYWNlcyhW
TSYsIGNvbnN0IEZ1bmN0b3ImKTsKLSAgICAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9y
PiB2b2lkIGl0ZXJhdGVDdXJyZW50bHlFeGVjdXRpbmcoY29uc3QgRnVuY3RvciYpOwogICAgIAog
ICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYpIGNvbnN0OwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvQ29kZUJsb2NrU2V0SW5saW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL0NvZGVCbG9ja1NldElubGluZXMuaAkocmV2aXNpb24gMjg2MDQz
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ29kZUJsb2NrU2V0SW5saW5lcy5oCSh3
b3JraW5nIGNvcHkpCkBAIC02MCwxOCArNjAsNiBAQCB2b2lkIENvZGVCbG9ja1NldDo6aXRlcmF0
ZShjb25zdCBBYnN0cmFjCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+Ci12b2lkIENv
ZGVCbG9ja1NldDo6aXRlcmF0ZVZpYVN1YnNwYWNlcyhWTSYgdm0sIGNvbnN0IEZ1bmN0b3ImIGZ1
bmN0b3IpCi17Ci0gICAgdm0uZm9yRWFjaENvZGVCbG9ja1NwYWNlKAotICAgICAgICBbJl0gKGF1
dG8mIHNwYWNlQW5kU2V0KSB7Ci0gICAgICAgICAgICBzcGFjZUFuZFNldC5zcGFjZS5mb3JFYWNo
TGl2ZUNlbGwoCi0gICAgICAgICAgICAgICAgWyZdIChIZWFwQ2VsbCogY2VsbCwgSGVhcENlbGw6
OktpbmQpIHsKLSAgICAgICAgICAgICAgICAgICAgZnVuY3Rvcihqc0Nhc3Q8Q29kZUJsb2NrKj4o
c3RhdGljX2Nhc3Q8SlNDZWxsKj4oY2VsbCkpKTsKLSAgICAgICAgICAgICAgICB9KTsKLSAgICAg
ICAgfSk7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+CiB2b2lkIENvZGVCbG9ja1Nl
dDo6aXRlcmF0ZUN1cnJlbnRseUV4ZWN1dGluZyhjb25zdCBGdW5jdG9yJiBmdW5jdG9yKQogewog
ICAgIExvY2tlciBsb2NrZXIgeyBtX2xvY2sgfTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL0hlYXAuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L0hlYXAuY3BwCShyZXZpc2lvbiAyODYwNDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVh
cC9IZWFwLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjEsMTMgKzIxLDIwIEBACiAjaW5jbHVkZSAi
Y29uZmlnLmgiCiAjaW5jbHVkZSAiSGVhcC5oIgogCisjaW5jbHVkZSAiQmlnSW50T2JqZWN0Lmgi
CisjaW5jbHVkZSAiQm9vbGVhbk9iamVjdC5oIgorI2luY2x1ZGUgIkJyYW5kZWRTdHJ1Y3R1cmUu
aCIKICNpbmNsdWRlICJCdWlsdGluRXhlY3V0YWJsZXMuaCIKKyNpbmNsdWRlICJDbG9uZWRBcmd1
bWVudHMuaCIKICNpbmNsdWRlICJDb2RlQmxvY2suaCIKICNpbmNsdWRlICJDb2RlQmxvY2tTZXRJ
bmxpbmVzLmgiCiAjaW5jbHVkZSAiQ29sbGVjdGluZ1Njb3BlLmgiCiAjaW5jbHVkZSAiQ29uc2Vy
dmF0aXZlUm9vdHMuaCIKKyNpbmNsdWRlICJEYXRlSW5zdGFuY2UuaCIKKyNpbmNsdWRlICJEZWJ1
Z2dlclNjb3BlLmgiCiAjaW5jbHVkZSAiRWRlbkdDQWN0aXZpdHlDYWxsYmFjay5oIgogI2luY2x1
ZGUgIkV4Y2VwdGlvbi5oIgorI2luY2x1ZGUgIkZhc3RNYWxsb2NBbGlnbmVkTWVtb3J5QWxsb2Nh
dG9yLmgiCiAjaW5jbHVkZSAiRnVsbEdDQWN0aXZpdHlDYWxsYmFjay5oIgogI2luY2x1ZGUgIkZ1
bmN0aW9uRXhlY3V0YWJsZUlubGluZXMuaCIKICNpbmNsdWRlICJHQ0FjdGl2aXR5Q2FsbGJhY2su
aCIKQEAgLTM1LDYgKzQyLDcgQEAKICNpbmNsdWRlICJHQ0luY29taW5nUmVmQ291bnRlZFNldElu
bGluZXMuaCIKICNpbmNsdWRlICJHQ1NlZ21lbnRlZEFycmF5SW5saW5lcy5oIgogI2luY2x1ZGUg
IkdDVHlwZU1hcC5oIgorI2luY2x1ZGUgIkdldHRlclNldHRlci5oIgogI2luY2x1ZGUgIkhhc093
blByb3BlcnR5Q2FjaGUuaCIKICNpbmNsdWRlICJIZWFwSGVscGVyUG9vbC5oIgogI2luY2x1ZGUg
IkhlYXBJdGVyYXRpb25TY29wZS5oIgpAQCAtNDMsMzcgKzUxLDExNiBAQAogI2luY2x1ZGUgIkhl
YXBWZXJpZmllci5oIgogI2luY2x1ZGUgIkluY3JlbWVudGFsU3dlZXBlci5oIgogI2luY2x1ZGUg
IkludGVycHJldGVyLmgiCisjaW5jbHVkZSAiSW50bENvbGxhdG9yLmgiCisjaW5jbHVkZSAiSW50
bERhdGVUaW1lRm9ybWF0LmgiCisjaW5jbHVkZSAiSW50bERpc3BsYXlOYW1lcy5oIgorI2luY2x1
ZGUgIkludGxMaXN0Rm9ybWF0LmgiCisjaW5jbHVkZSAiSW50bExvY2FsZS5oIgorI2luY2x1ZGUg
IkludGxOdW1iZXJGb3JtYXQuaCIKKyNpbmNsdWRlICJJbnRsUGx1cmFsUnVsZXMuaCIKKyNpbmNs
dWRlICJJbnRsUmVsYXRpdmVUaW1lRm9ybWF0LmgiCisjaW5jbHVkZSAiSW50bFNlZ21lbnRJdGVy
YXRvci5oIgorI2luY2x1ZGUgIkludGxTZWdtZW50ZXIuaCIKKyNpbmNsdWRlICJJbnRsU2VnbWVu
dHMuaCIKICNpbmNsdWRlICJJc29DZWxsU2V0SW5saW5lcy5oIgogI2luY2x1ZGUgIkpJVFN0dWJS
b3V0aW5lU2V0LmgiCiAjaW5jbHVkZSAiSklUV29ya2xpc3RJbmxpbmVzLmgiCisjaW5jbHVkZSAi
SlNBUElHbG9iYWxPYmplY3QuaCIKKyNpbmNsdWRlICJKU0FQSVZhbHVlV3JhcHBlci5oIgorI2lu
Y2x1ZGUgIkpTQVBJV3JhcHBlck9iamVjdC5oIgorI2luY2x1ZGUgIkpTQXJyYXkuaCIKKyNpbmNs
dWRlICJKU0FycmF5QnVmZmVyLmgiCisjaW5jbHVkZSAiSlNBcnJheUl0ZXJhdG9yLmgiCisjaW5j
bHVkZSAiSlNBc3luY0dlbmVyYXRvci5oIgorI2luY2x1ZGUgIkpTQmlnSW50LmgiCisjaW5jbHVk
ZSAiSlNCb3VuZEZ1bmN0aW9uLmgiCisjaW5jbHVkZSAiSlNDYWxsYmFja0NvbnN0cnVjdG9yLmgi
CisjaW5jbHVkZSAiSlNDYWxsYmFja0Z1bmN0aW9uLmgiCisjaW5jbHVkZSAiSlNDYWxsYmFja09i
amVjdC5oIgorI2luY2x1ZGUgIkpTQ2FsbGVlLmgiCisjaW5jbHVkZSAiSlNDdXN0b21HZXR0ZXJG
dW5jdGlvbi5oIgorI2luY2x1ZGUgIkpTQ3VzdG9tU2V0dGVyRnVuY3Rpb24uaCIKKyNpbmNsdWRl
ICJKU0RhdGFWaWV3LmgiCiAjaW5jbHVkZSAiSlNGaW5hbGl6YXRpb25SZWdpc3RyeS5oIgorI2lu
Y2x1ZGUgIkpTRnVuY3Rpb24uaCIKKyNpbmNsdWRlICJKU0dsb2JhbExleGljYWxFbnZpcm9ubWVu
dC5oIgorI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCisjaW5jbHVkZSAiSlNJbmplY3RlZFNj
cmlwdEhvc3QuaCIKKyNpbmNsdWRlICJKU0phdmFTY3JpcHRDYWxsRnJhbWUuaCIKKyNpbmNsdWRl
ICJKU01hcC5oIgorI2luY2x1ZGUgIkpTTWFwSXRlcmF0b3IuaCIKKyNpbmNsdWRlICJKU01vZHVs
ZU5hbWVzcGFjZU9iamVjdC5oIgorI2luY2x1ZGUgIkpTTW9kdWxlUmVjb3JkLmgiCisjaW5jbHVk
ZSAiSlNOYXRpdmVTdGRGdW5jdGlvbi5oIgorI2luY2x1ZGUgIkpTUHJvbWlzZS5oIgorI2luY2x1
ZGUgIkpTUHJvcGVydHlOYW1lRW51bWVyYXRvci5oIgorI2luY2x1ZGUgIkpTUHJveHkuaCIKKyNp
bmNsdWRlICJKU1NjcmlwdEZldGNoUGFyYW1ldGVycy5oIgorI2luY2x1ZGUgIkpTU2NyaXB0RmV0
Y2hlci5oIgorI2luY2x1ZGUgIkpTU2V0LmgiCisjaW5jbHVkZSAiSlNTZXRJdGVyYXRvci5oIgor
I2luY2x1ZGUgIkpTU291cmNlQ29kZS5oIgorI2luY2x1ZGUgIkpTU3RyaW5nSXRlcmF0b3IuaCIK
KyNpbmNsdWRlICJKU1RlbXBsYXRlT2JqZWN0RGVzY3JpcHRvci5oIgorI2luY2x1ZGUgIkpTVG9X
YXNtSUNDYWxsZWUuaCIKKyNpbmNsdWRlICJKU1R5cGVkQXJyYXlzLmgiCiAjaW5jbHVkZSAiSlNW
aXJ0dWFsTWFjaGluZUludGVybmFsLmgiCiAjaW5jbHVkZSAiSlNXZWFrTWFwLmgiCiAjaW5jbHVk
ZSAiSlNXZWFrT2JqZWN0UmVmLmgiCiAjaW5jbHVkZSAiSlNXZWFrU2V0LmgiCiAjaW5jbHVkZSAi
SlNXZWJBc3NlbWJseUNvZGVCbG9jay5oIgorI2luY2x1ZGUgIkpTV2ViQXNzZW1ibHlFeGNlcHRp
b24uaCIKKyNpbmNsdWRlICJKU1dlYkFzc2VtYmx5R2xvYmFsLmgiCisjaW5jbHVkZSAiSlNXZWJB
c3NlbWJseUluc3RhbmNlLmgiCisjaW5jbHVkZSAiSlNXZWJBc3NlbWJseU1lbW9yeS5oIgorI2lu
Y2x1ZGUgIkpTV2ViQXNzZW1ibHlNb2R1bGUuaCIKKyNpbmNsdWRlICJKU1dlYkFzc2VtYmx5VGFi
bGUuaCIKKyNpbmNsdWRlICJKU1dlYkFzc2VtYmx5VGFnLmgiCisjaW5jbHVkZSAiSlNXaXRoU2Nv
cGUuaCIKICNpbmNsdWRlICJNYWNoaW5lU3RhY2tNYXJrZXIuaCIKICNpbmNsdWRlICJNYXJrU3Rh
Y2tNZXJnaW5nQ29uc3RyYWludC5oIgogI2luY2x1ZGUgIk1hcmtlZEpTVmFsdWVSZWZBcnJheS5o
IgogI2luY2x1ZGUgIk1hcmtlZFNwYWNlSW5saW5lcy5oIgogI2luY2x1ZGUgIk1hcmtpbmdDb25z
dHJhaW50U2V0LmgiCisjaW5jbHVkZSAiTmF0aXZlRXhlY3V0YWJsZS5oIgogI2luY2x1ZGUgIlBy
ZXZlbnRDb2xsZWN0aW9uU2NvcGUuaCIKKyNpbmNsdWRlICJQcm9ncmFtRXhlY3V0YWJsZS5oIgor
I2luY2x1ZGUgIlByb3BlcnR5VGFibGUuaCIKKyNpbmNsdWRlICJQcm94eVJldm9rZS5oIgorI2lu
Y2x1ZGUgIlJlZ0V4cE9iamVjdC5oIgogI2luY2x1ZGUgIlNhbXBsaW5nUHJvZmlsZXIuaCIKKyNp
bmNsdWRlICJTY29wZWRBcmd1bWVudHMuaCIKICNpbmNsdWRlICJTaGFkb3dDaGlja2VuLmgiCisj
aW5jbHVkZSAiU2hhZG93UmVhbG1PYmplY3QuaCIKICNpbmNsdWRlICJTcGFjZVRpbWVNdXRhdG9y
U2NoZWR1bGVyLmgiCiAjaW5jbHVkZSAiU3RvY2hhc3RpY1NwYWNlVGltZU11dGF0b3JTY2hlZHVs
ZXIuaCIKICNpbmNsdWRlICJTdG9wSWZOZWNlc3NhcnlUaW1lci5oIgorI2luY2x1ZGUgIlN0cmlj
dEV2YWxBY3RpdmF0aW9uLmgiCisjaW5jbHVkZSAiU3RyaW5nT2JqZWN0LmgiCisjaW5jbHVkZSAi
U3RydWN0dXJlQ2hhaW4uaCIKICNpbmNsdWRlICJTdWJzcGFjZUlubGluZXMuaCIKICNpbmNsdWRl
ICJTdXBlclNhbXBsZXIuaCIKICNpbmNsdWRlICJTd2VlcGluZ1Njb3BlLmgiCisjaW5jbHVkZSAi
U3ltYm9sT2JqZWN0LmgiCiAjaW5jbHVkZSAiU3ltYm9sVGFibGVJbmxpbmVzLmgiCiAjaW5jbHVk
ZSAiU3luY2hyb25vdXNTdG9wVGhlV29ybGRNdXRhdG9yU2NoZWR1bGVyLmgiCisjaW5jbHVkZSAi
VGVtcG9yYWxDYWxlbmRhci5oIgorI2luY2x1ZGUgIlRlbXBvcmFsRHVyYXRpb24uaCIKKyNpbmNs
dWRlICJUZW1wb3JhbEluc3RhbnQuaCIKKyNpbmNsdWRlICJUZW1wb3JhbFBsYWluVGltZS5oIgor
I2luY2x1ZGUgIlRlbXBvcmFsVGltZVpvbmUuaCIKICNpbmNsdWRlICJUeXBlUHJvZmlsZXIuaCIK
ICNpbmNsdWRlICJUeXBlUHJvZmlsZXJMb2cuaCIKKyNpbmNsdWRlICJVbmxpbmtlZEZ1bmN0aW9u
Q29kZUJsb2NrLmgiCisjaW5jbHVkZSAiVW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrLmgi
CisjaW5jbHVkZSAiVW5saW5rZWRQcm9ncmFtQ29kZUJsb2NrLmgiCiAjaW5jbHVkZSAiVk0uaCIK
ICNpbmNsdWRlICJWZXJpZmllclNsb3RWaXNpdG9ySW5saW5lcy5oIgogI2luY2x1ZGUgIldlYWtN
YXBJbXBsSW5saW5lcy5oIgogI2luY2x1ZGUgIldlYWtTZXRJbmxpbmVzLmgiCisjaW5jbHVkZSAi
V2ViQXNzZW1ibHlGdW5jdGlvbi5oIgorI2luY2x1ZGUgIldlYkFzc2VtYmx5TW9kdWxlUmVjb3Jk
LmgiCisjaW5jbHVkZSAiV2ViQXNzZW1ibHlXcmFwcGVyRnVuY3Rpb24uaCIKICNpbmNsdWRlIDxh
bGdvcml0aG0+CiAjaW5jbHVkZSA8d3RmL0NyeXB0b2dyYXBoaWNhbGx5UmFuZG9tTnVtYmVyLmg+
CiAjaW5jbHVkZSA8d3RmL0xpc3REdW1wLmg+CkBAIC05NCw2ICsxODEsMTAgQEAKICNpbmNsdWRl
ICJKU0NHTGliV3JhcHBlck9iamVjdC5oIgogI2VuZGlmCiAKKyNpZiBKU0NfT0JKQ19BUElfRU5B
QkxFRAorI2luY2x1ZGUgIk9iakNDYWxsYmFja0Z1bmN0aW9uLmgiCisjZW5kaWYKKwogbmFtZXNw
YWNlIEpTQyB7CiAKIG5hbWVzcGFjZSB7CkBAIC0yODYsNiArMzc3LDExNCBAQCBIZWFwOjpIZWFw
KFZNJiB2bSwgSGVhcFR5cGUgaGVhcFR5cGUpCiAgICAgLCBtX2hlbHBlckNsaWVudCgmaGVhcEhl
bHBlclBvb2woKSkKICAgICAsIG1fdGhyZWFkTG9jayhCb3g8TG9jaz46OmNyZWF0ZSgpKQogICAg
ICwgbV90aHJlYWRDb25kaXRpb24oQXV0b21hdGljVGhyZWFkQ29uZGl0aW9uOjpjcmVhdGUoKSkK
KworICAgIC8vIG1sYW0gSGVhcENlbGxUeXBlcworICAgICwgYXV4aWxpYXJ5SGVhcENlbGxUeXBl
KENlbGxBdHRyaWJ1dGVzKERvZXNOb3ROZWVkRGVzdHJ1Y3Rpb24sIEhlYXBDZWxsOjpBdXhpbGlh
cnkpKQorICAgICwgaW1tdXRhYmxlQnV0dGVyZmx5SGVhcENlbGxUeXBlKENlbGxBdHRyaWJ1dGVz
KERvZXNOb3ROZWVkRGVzdHJ1Y3Rpb24sIEhlYXBDZWxsOjpKU0NlbGxXaXRoSW5kZXhpbmdIZWFk
ZXIpKQorICAgICwgY2VsbEhlYXBDZWxsVHlwZShDZWxsQXR0cmlidXRlcyhEb2VzTm90TmVlZERl
c3RydWN0aW9uLCBIZWFwQ2VsbDo6SlNDZWxsKSkKKyAgICAsIGRlc3RydWN0aWJsZUNlbGxIZWFw
Q2VsbFR5cGUoQ2VsbEF0dHJpYnV0ZXMoTmVlZHNEZXN0cnVjdGlvbiwgSGVhcENlbGw6OkpTQ2Vs
bCkpCisgICAgLCBhcGlHbG9iYWxPYmplY3RIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpB
cmdzPEpTQVBJR2xvYmFsT2JqZWN0PigpKQorICAgICwgY2FsbGJhY2tDb25zdHJ1Y3RvckhlYXBD
ZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OkFyZ3M8SlNDYWxsYmFja0NvbnN0cnVjdG9yPigpKQor
ICAgICwgY2FsbGJhY2tHbG9iYWxPYmplY3RIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpB
cmdzPEpTQ2FsbGJhY2tPYmplY3Q8SlNHbG9iYWxPYmplY3Q+PigpKQorICAgICwgY2FsbGJhY2tP
YmplY3RIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpBcmdzPEpTQ2FsbGJhY2tPYmplY3Q8
SlNOb25GaW5hbE9iamVjdD4+KCkpCisgICAgLCBjdXN0b21HZXR0ZXJGdW5jdGlvbkhlYXBDZWxs
VHlwZShJc29IZWFwQ2VsbFR5cGU6OkFyZ3M8SlNDdXN0b21HZXR0ZXJGdW5jdGlvbj4oKSkKKyAg
ICAsIGN1c3RvbVNldHRlckZ1bmN0aW9uSGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6QXJn
czxKU0N1c3RvbVNldHRlckZ1bmN0aW9uPigpKQorICAgICwgZGF0ZUluc3RhbmNlSGVhcENlbGxU
eXBlKElzb0hlYXBDZWxsVHlwZTo6QXJnczxEYXRlSW5zdGFuY2U+KCkpCisgICAgLCBlcnJvcklu
c3RhbmNlSGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6QXJnczxFcnJvckluc3RhbmNlPigp
KQorICAgICwgZmluYWxpemF0aW9uUmVnaXN0cnlDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OkFy
Z3M8SlNGaW5hbGl6YXRpb25SZWdpc3RyeT4oKSkKKyAgICAsIGdsb2JhbExleGljYWxFbnZpcm9u
bWVudEhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OkFyZ3M8SlNHbG9iYWxMZXhpY2FsRW52
aXJvbm1lbnQ+KCkpCisgICAgLCBnbG9iYWxPYmplY3RIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxU
eXBlOjpBcmdzPEpTR2xvYmFsT2JqZWN0PigpKQorICAgICwgaW5qZWN0ZWRTY3JpcHRIb3N0U3Bh
Y2VIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpBcmdzPEluc3BlY3Rvcjo6SlNJbmplY3Rl
ZFNjcmlwdEhvc3Q+KCkpCisgICAgLCBqYXZhU2NyaXB0Q2FsbEZyYW1lSGVhcENlbGxUeXBlKElz
b0hlYXBDZWxsVHlwZTo6QXJnczxJbnNwZWN0b3I6OkpTSmF2YVNjcmlwdENhbGxGcmFtZT4oKSkK
KyAgICAsIGpzTW9kdWxlUmVjb3JkSGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6QXJnczxK
U01vZHVsZVJlY29yZD4oKSkKKyAgICAsIG1vZHVsZU5hbWVzcGFjZU9iamVjdEhlYXBDZWxsVHlw
ZShJc29IZWFwQ2VsbFR5cGU6OkFyZ3M8SlNNb2R1bGVOYW1lc3BhY2VPYmplY3Q+KCkpCisgICAg
LCBuYXRpdmVTdGRGdW5jdGlvbkhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OkFyZ3M8SlNO
YXRpdmVTdGRGdW5jdGlvbj4oKSkKKyAgICAsIHdlYWtNYXBIZWFwQ2VsbFR5cGUoSXNvSGVhcENl
bGxUeXBlOjpBcmdzPEpTV2Vha01hcD4oKSkKKyAgICAsIHdlYWtTZXRIZWFwQ2VsbFR5cGUoSXNv
SGVhcENlbGxUeXBlOjpBcmdzPEpTV2Vha1NldD4oKSkKKyNpZiBKU0NfT0JKQ19BUElfRU5BQkxF
RAorICAgICwgYXBpV3JhcHBlck9iamVjdEhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OkFy
Z3M8SlNDYWxsYmFja09iamVjdDxKU0FQSVdyYXBwZXJPYmplY3Q+PigpKQorICAgICwgb2JqQ0Nh
bGxiYWNrRnVuY3Rpb25IZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpBcmdzPE9iakNDYWxs
YmFja0Z1bmN0aW9uPigpKQorI2VuZGlmCisjaWZkZWYgSlNDX0dMSUJfQVBJX0VOQUJMRUQKKyAg
ICAsIGFwaVdyYXBwZXJPYmplY3RIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpBcmdzPEpT
Q2FsbGJhY2tPYmplY3Q8SlNBUElXcmFwcGVyT2JqZWN0Pj4oKSkKKyAgICAsIGNhbGxiYWNrQVBJ
V3JhcHBlckdsb2JhbE9iamVjdEhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OkFyZ3M8SlND
YWxsYmFja09iamVjdDxKU0FQSVdyYXBwZXJHbG9iYWxPYmplY3Q+PigpKQorICAgICwganNjQ2Fs
bGJhY2tGdW5jdGlvbkhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OkFyZ3M8SlNDQ2FsbGJh
Y2tGdW5jdGlvbj4oKSkKKyNlbmRpZgorICAgICwgaW50bENvbGxhdG9ySGVhcENlbGxUeXBlKElz
b0hlYXBDZWxsVHlwZTo6QXJnczxJbnRsQ29sbGF0b3I+KCkpCisgICAgLCBpbnRsRGF0ZVRpbWVG
b3JtYXRIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpBcmdzPEludGxEYXRlVGltZUZvcm1h
dD4oKSkKKyAgICAsIGludGxEaXNwbGF5TmFtZXNIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBl
OjpBcmdzPEludGxEaXNwbGF5TmFtZXM+KCkpCisgICAgLCBpbnRsTGlzdEZvcm1hdEhlYXBDZWxs
VHlwZShJc29IZWFwQ2VsbFR5cGU6OkFyZ3M8SW50bExpc3RGb3JtYXQ+KCkpCisgICAgLCBpbnRs
TG9jYWxlSGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6QXJnczxJbnRsTG9jYWxlPigpKQor
ICAgICwgaW50bE51bWJlckZvcm1hdEhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OkFyZ3M8
SW50bE51bWJlckZvcm1hdD4oKSkKKyAgICAsIGludGxQbHVyYWxSdWxlc0hlYXBDZWxsVHlwZShJ
c29IZWFwQ2VsbFR5cGU6OkFyZ3M8SW50bFBsdXJhbFJ1bGVzPigpKQorICAgICwgaW50bFJlbGF0
aXZlVGltZUZvcm1hdEhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OkFyZ3M8SW50bFJlbGF0
aXZlVGltZUZvcm1hdD4oKSkKKyAgICAsIGludGxTZWdtZW50SXRlcmF0b3JIZWFwQ2VsbFR5cGUo
SXNvSGVhcENlbGxUeXBlOjpBcmdzPEludGxTZWdtZW50SXRlcmF0b3I+KCkpCisgICAgLCBpbnRs
U2VnbWVudGVySGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6QXJnczxJbnRsU2VnbWVudGVy
PigpKQorICAgICwgaW50bFNlZ21lbnRzSGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6QXJn
czxJbnRsU2VnbWVudHM+KCkpCisjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQorICAgICwgd2ViQXNz
ZW1ibHlDb2RlQmxvY2tIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpBcmdzPEpTV2ViQXNz
ZW1ibHlDb2RlQmxvY2s+KCkpCisgICAgLCB3ZWJBc3NlbWJseUV4Y2VwdGlvbkhlYXBDZWxsVHlw
ZShJc29IZWFwQ2VsbFR5cGU6OkFyZ3M8SlNXZWJBc3NlbWJseUV4Y2VwdGlvbj4oKSkKKyAgICAs
IHdlYkFzc2VtYmx5RnVuY3Rpb25IZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpBcmdzPFdl
YkFzc2VtYmx5RnVuY3Rpb24+KCkpCisgICAgLCB3ZWJBc3NlbWJseUdsb2JhbEhlYXBDZWxsVHlw
ZShJc29IZWFwQ2VsbFR5cGU6OkFyZ3M8SlNXZWJBc3NlbWJseUdsb2JhbD4oKSkKKyAgICAsIHdl
YkFzc2VtYmx5SW5zdGFuY2VIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpBcmdzPEpTV2Vi
QXNzZW1ibHlJbnN0YW5jZT4oKSkKKyAgICAsIHdlYkFzc2VtYmx5TWVtb3J5SGVhcENlbGxUeXBl
KElzb0hlYXBDZWxsVHlwZTo6QXJnczxKU1dlYkFzc2VtYmx5TWVtb3J5PigpKQorICAgICwgd2Vi
QXNzZW1ibHlNb2R1bGVIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpBcmdzPEpTV2ViQXNz
ZW1ibHlNb2R1bGU+KCkpCisgICAgLCB3ZWJBc3NlbWJseU1vZHVsZVJlY29yZEhlYXBDZWxsVHlw
ZShJc29IZWFwQ2VsbFR5cGU6OkFyZ3M8V2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQ+KCkpCisgICAg
LCB3ZWJBc3NlbWJseVRhYmxlSGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6QXJnczxKU1dl
YkFzc2VtYmx5VGFibGU+KCkpCisgICAgLCB3ZWJBc3NlbWJseVRhZ0hlYXBDZWxsVHlwZShJc29I
ZWFwQ2VsbFR5cGU6OkFyZ3M8SlNXZWJBc3NlbWJseVRhZz4oKSkKKyNlbmRpZgorCisgICAgLy8g
bWxhbSBBbGlnbmVkTWVtb3J5QWxsb2NhdG9ycworICAgICwgZmFzdE1hbGxvY0FsbG9jYXRvciht
YWtlVW5pcXVlPEZhc3RNYWxsb2NBbGlnbmVkTWVtb3J5QWxsb2NhdG9yPigpKQorICAgICwgcHJp
bWl0aXZlR2lnYWNhZ2VBbGxvY2F0b3IobWFrZVVuaXF1ZTxHaWdhY2FnZUFsaWduZWRNZW1vcnlB
bGxvY2F0b3I+KEdpZ2FjYWdlOjpQcmltaXRpdmUpKQorICAgICwganNWYWx1ZUdpZ2FjYWdlQWxs
b2NhdG9yKG1ha2VVbmlxdWU8R2lnYWNhZ2VBbGlnbmVkTWVtb3J5QWxsb2NhdG9yPihHaWdhY2Fn
ZTo6SlNWYWx1ZSkpCisKKyAgICAvLyBtbGFtIFN1YnNwYWNlcworICAgICwgcHJpbWl0aXZlR2ln
YWNhZ2VBdXhpbGlhcnlTcGFjZSgiUHJpbWl0aXZlIEdpZ2FjYWdlIEF1eGlsaWFyeSIsICp0aGlz
LCBhdXhpbGlhcnlIZWFwQ2VsbFR5cGUsIHByaW1pdGl2ZUdpZ2FjYWdlQWxsb2NhdG9yLmdldCgp
KSAvLyBIYXNoOjB4M2U3Y2Q3NjIKKyAgICAsIGpzVmFsdWVHaWdhY2FnZUF1eGlsaWFyeVNwYWNl
KCJKU1ZhbHVlIEdpZ2FjYWdlIEF1eGlsaWFyeSIsICp0aGlzLCBhdXhpbGlhcnlIZWFwQ2VsbFR5
cGUsIGpzVmFsdWVHaWdhY2FnZUFsbG9jYXRvci5nZXQoKSkgLy8gSGFzaDoweDI0MWU5NDYKKyAg
ICAsIGltbXV0YWJsZUJ1dHRlcmZseUpTVmFsdWVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlKCJJbW11
dGFibGVCdXR0ZXJmbHkgR2lnYWNhZ2UgSlNDZWxsV2l0aEluZGV4aW5nSGVhZGVyIiwgKnRoaXMs
IGltbXV0YWJsZUJ1dHRlcmZseUhlYXBDZWxsVHlwZSwganNWYWx1ZUdpZ2FjYWdlQWxsb2NhdG9y
LmdldCgpKSAvLyBIYXNoOjB4N2E5NDUzMDAKKyAgICAsIGNlbGxTcGFjZSgiSlNDZWxsIiwgKnRo
aXMsIGNlbGxIZWFwQ2VsbFR5cGUsIGZhc3RNYWxsb2NBbGxvY2F0b3IuZ2V0KCkpIC8vIEhhc2g6
MHhhZGZiNWE3OQorICAgICwgdmFyaWFibGVTaXplZENlbGxTcGFjZSgiVmFyaWFibGUgU2l6ZWQg
SlNDZWxsIiwgKnRoaXMsIGNlbGxIZWFwQ2VsbFR5cGUsIGZhc3RNYWxsb2NBbGxvY2F0b3IuZ2V0
KCkpIC8vIEhhc2g6MHhiY2Q3NjljYworICAgICwgZGVzdHJ1Y3RpYmxlT2JqZWN0U3BhY2UoIkpT
RGVzdHJ1Y3RpYmxlT2JqZWN0IiwgKnRoaXMsIGRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlw
ZSwgZmFzdE1hbGxvY0FsbG9jYXRvci5nZXQoKSkgLy8gSGFzaDoweDRmNWVkN2E5CisgICAgLCBh
cnJheVNwYWNlIElTT19TVUJTUEFDRV9JTklUKCp0aGlzLCBjZWxsSGVhcENlbGxUeXBlLCBKU0Fy
cmF5KQorICAgICwgYmlnSW50U3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoKnRoaXMsIGNlbGxIZWFw
Q2VsbFR5cGUsIEpTQmlnSW50KQorICAgICwgY2FsbGVlU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQo
KnRoaXMsIGNlbGxIZWFwQ2VsbFR5cGUsIEpTQ2FsbGVlKQorICAgICwgY2xvbmVkQXJndW1lbnRz
U3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoKnRoaXMsIGNlbGxIZWFwQ2VsbFR5cGUsIENsb25lZEFy
Z3VtZW50cykKKyAgICAsIGN1c3RvbUdldHRlclNldHRlclNwYWNlIElTT19TVUJTUEFDRV9JTklU
KCp0aGlzLCBjZWxsSGVhcENlbGxUeXBlLCBDdXN0b21HZXR0ZXJTZXR0ZXIpCisgICAgLCBkYXRl
SW5zdGFuY2VTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVCgqdGhpcywgZGF0ZUluc3RhbmNlSGVhcENl
bGxUeXBlLCBEYXRlSW5zdGFuY2UpCisgICAgLCBkb21BdHRyaWJ1dGVHZXR0ZXJTZXR0ZXJTcGFj
ZSBJU09fU1VCU1BBQ0VfSU5JVCgqdGhpcywgY2VsbEhlYXBDZWxsVHlwZSwgRE9NQXR0cmlidXRl
R2V0dGVyU2V0dGVyKQorICAgICwgZXhjZXB0aW9uU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoKnRo
aXMsIGRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUsIEV4Y2VwdGlvbikKKyAgICAsIGV4ZWN1
dGFibGVUb0NvZGVCbG9ja0VkZ2VTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVCgqdGhpcywgY2VsbEhl
YXBDZWxsVHlwZSwgRXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZSkgLy8gSGFzaDoweDdiNzMwYjIw
CisgICAgLCBmdW5jdGlvblNwYWNlIElTT19TVUJTUEFDRV9JTklUKCp0aGlzLCBjZWxsSGVhcENl
bGxUeXBlLCBKU0Z1bmN0aW9uKSAvLyBIYXNoOjB4ODAwZmNhNzIKKyAgICAsIGdldHRlclNldHRl
clNwYWNlIElTT19TVUJTUEFDRV9JTklUKCp0aGlzLCBjZWxsSGVhcENlbGxUeXBlLCBHZXR0ZXJT
ZXR0ZXIpCisgICAgLCBnbG9iYWxMZXhpY2FsRW52aXJvbm1lbnRTcGFjZSBJU09fU1VCU1BBQ0Vf
SU5JVCgqdGhpcywgZ2xvYmFsTGV4aWNhbEVudmlyb25tZW50SGVhcENlbGxUeXBlLCBKU0dsb2Jh
bExleGljYWxFbnZpcm9ubWVudCkKKyAgICAsIGludGVybmFsRnVuY3Rpb25TcGFjZSBJU09fU1VC
U1BBQ0VfSU5JVCgqdGhpcywgY2VsbEhlYXBDZWxsVHlwZSwgSW50ZXJuYWxGdW5jdGlvbikgLy8g
SGFzaDoweGY4NDVjNDY0CisgICAgLCBqc1Byb3h5U3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoKnRo
aXMsIGNlbGxIZWFwQ2VsbFR5cGUsIEpTUHJveHkpCisgICAgLCBuYXRpdmVFeGVjdXRhYmxlU3Bh
Y2UgSVNPX1NVQlNQQUNFX0lOSVQoKnRoaXMsIGRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUs
IE5hdGl2ZUV4ZWN1dGFibGUpIC8vIEhhc2g6MHg2NzU2N2Y5NQorICAgICwgbnVtYmVyT2JqZWN0
U3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoKnRoaXMsIGNlbGxIZWFwQ2VsbFR5cGUsIE51bWJlck9i
amVjdCkKKyAgICAsIHBsYWluT2JqZWN0U3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoKnRoaXMsIGNl
bGxIZWFwQ2VsbFR5cGUsIEpTTm9uRmluYWxPYmplY3QpIC8vIE1haW5seSB1c2VkIGZvciBwcm90
b3R5cGVzLgorICAgICwgcHJvbWlzZVNwYWNlIElTT19TVUJTUEFDRV9JTklUKCp0aGlzLCBjZWxs
SGVhcENlbGxUeXBlLCBKU1Byb21pc2UpCisgICAgLCBwcm9wZXJ0eU5hbWVFbnVtZXJhdG9yU3Bh
Y2UgSVNPX1NVQlNQQUNFX0lOSVQoKnRoaXMsIGNlbGxIZWFwQ2VsbFR5cGUsIEpTUHJvcGVydHlO
YW1lRW51bWVyYXRvcikKKyAgICAsIHByb3BlcnR5VGFibGVTcGFjZSBJU09fU1VCU1BBQ0VfSU5J
VCgqdGhpcywgZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZSwgUHJvcGVydHlUYWJsZSkgLy8g
SGFzaDoweGM2YmM5ZjEyCisgICAgLCByZWdFeHBTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVCgqdGhp
cywgZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZSwgUmVnRXhwKQorICAgICwgcmVnRXhwT2Jq
ZWN0U3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoKnRoaXMsIGNlbGxIZWFwQ2VsbFR5cGUsIFJlZ0V4
cE9iamVjdCkKKyAgICAsIHJvcGVTdHJpbmdTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVCgqdGhpcywg
c3RyaW5nSGVhcENlbGxUeXBlLCBKU1JvcGVTdHJpbmcpCisgICAgLCBzY29wZWRBcmd1bWVudHNT
cGFjZSBJU09fU1VCU1BBQ0VfSU5JVCgqdGhpcywgY2VsbEhlYXBDZWxsVHlwZSwgU2NvcGVkQXJn
dW1lbnRzKQorICAgICwgc3BhcnNlQXJyYXlWYWx1ZU1hcFNwYWNlIElTT19TVUJTUEFDRV9JTklU
KCp0aGlzLCBkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlLCBTcGFyc2VBcnJheVZhbHVlTWFw
KQorICAgICwgc3RyaW5nU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoKnRoaXMsIHN0cmluZ0hlYXBD
ZWxsVHlwZSwgSlNTdHJpbmcpIC8vIEhhc2g6MHg5MGNmNzU4ZgorICAgICwgc3RyaW5nT2JqZWN0
U3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoKnRoaXMsIGNlbGxIZWFwQ2VsbFR5cGUsIFN0cmluZ09i
amVjdCkKKyAgICAsIHN0cnVjdHVyZUNoYWluU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoKnRoaXMs
IGNlbGxIZWFwQ2VsbFR5cGUsIFN0cnVjdHVyZUNoYWluKQorICAgICwgc3RydWN0dXJlUmFyZURh
dGFTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVCgqdGhpcywgZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxs
VHlwZSwgU3RydWN0dXJlUmFyZURhdGEpIC8vIEhhc2g6MHhhY2E0ZTYyZAorICAgICwgc3RydWN0
dXJlU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoKnRoaXMsIGRlc3RydWN0aWJsZUNlbGxIZWFwQ2Vs
bFR5cGUsIFN0cnVjdHVyZSkgLy8gSGFzaDoweDFmMWJjZGNhCisgICAgLCBicmFuZGVkU3RydWN0
dXJlU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoKnRoaXMsIGRlc3RydWN0aWJsZUNlbGxIZWFwQ2Vs
bFR5cGUsIEJyYW5kZWRTdHJ1Y3R1cmUpCisgICAgLCBzeW1ib2xUYWJsZVNwYWNlIElTT19TVUJT
UEFDRV9JTklUKCp0aGlzLCBkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlLCBTeW1ib2xUYWJs
ZSkgLy8gSGFzaDoweGM1MjE1YWZkCisgICAgLCBleGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlc1dp
dGhDb25zdHJhaW50cyhleGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlU3BhY2UpCisgICAgLCBleGVj
dXRhYmxlVG9Db2RlQmxvY2tFZGdlc1dpdGhGaW5hbGl6ZXJzKGV4ZWN1dGFibGVUb0NvZGVCbG9j
a0VkZ2VTcGFjZSkKKyAgICAsIGNvZGVCbG9ja1NwYWNlIElTT19TVUJTUEFDRV9JTklUKCp0aGlz
LCBkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlLCBDb2RlQmxvY2spIC8vIEhhc2g6MHg3N2U2
NmVjOQorICAgICwgZnVuY3Rpb25FeGVjdXRhYmxlU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoKnRo
aXMsIGRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUsIEZ1bmN0aW9uRXhlY3V0YWJsZSkgLy8g
SGFzaDoweDVkMTU4ZjMKKyAgICAsIHByb2dyYW1FeGVjdXRhYmxlU3BhY2UgSVNPX1NVQlNQQUNF
X0lOSVQoKnRoaXMsIGRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUsIFByb2dyYW1FeGVjdXRh
YmxlKSAvLyBIYXNoOjB4NTI3Yzc3ZTcKKyAgICAsIHVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxl
U3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoKnRoaXMsIGRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5
cGUsIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKSAvLyBIYXNoOjB4ZjZiODI4ZDkKKwogewog
ICAgIG1fd29ybGRTdGF0ZS5zdG9yZSgwKTsKIApAQCAtNTc5LDMxICs3NzgsMzEgQEAgdm9pZCBI
ZWFwOjpmaW5hbGl6ZVVuY29uZGl0aW9uYWxGaW5hbGl6ZQogewogICAgIFZNJiB2bSA9IHRoaXMt
PnZtKCk7CiAgICAgdm0uYnVpbHRpbkV4ZWN1dGFibGVzKCktPmZpbmFsaXplVW5jb25kaXRpb25h
bGx5KCk7Ci0gICAgZmluYWxpemVNYXJrZWRVbmNvbmRpdGlvbmFsRmluYWxpemVyczxGdW5jdGlv
bkV4ZWN1dGFibGU+KHZtLmZ1bmN0aW9uRXhlY3V0YWJsZVNwYWNlLnNwYWNlKTsKLSAgICBmaW5h
bGl6ZU1hcmtlZFVuY29uZGl0aW9uYWxGaW5hbGl6ZXJzPFN5bWJvbFRhYmxlPih2bS5zeW1ib2xU
YWJsZVNwYWNlKTsKLSAgICBmaW5hbGl6ZU1hcmtlZFVuY29uZGl0aW9uYWxGaW5hbGl6ZXJzPEV4
ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2U+KHZtLmV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2VzV2l0
aEZpbmFsaXplcnMpOyAvLyBXZSBydW4gdGhpcyBiZWZvcmUgQ29kZUJsb2NrJ3MgdW5jb25kaXRp
b25hbCBmaW5hbGl6ZXIgc2luY2UgQ29kZUJsb2NrIGxvb2tzIGF0IHRoZSBvd25lciBleGVjdXRh
YmxlJ3MgaW5zdGFsbGVkIENvZGVCbG9jayBpbiBpdHMgZmluYWxpemVVbmNvbmRpdGlvbmFsbHku
Ci0gICAgdm0uZm9yRWFjaENvZGVCbG9ja1NwYWNlKAorICAgIGZpbmFsaXplTWFya2VkVW5jb25k
aXRpb25hbEZpbmFsaXplcnM8RnVuY3Rpb25FeGVjdXRhYmxlPihmdW5jdGlvbkV4ZWN1dGFibGVT
cGFjZS5zcGFjZSk7CisgICAgZmluYWxpemVNYXJrZWRVbmNvbmRpdGlvbmFsRmluYWxpemVyczxT
eW1ib2xUYWJsZT4oc3ltYm9sVGFibGVTcGFjZSk7CisgICAgZmluYWxpemVNYXJrZWRVbmNvbmRp
dGlvbmFsRmluYWxpemVyczxFeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlPihleGVjdXRhYmxlVG9D
b2RlQmxvY2tFZGdlc1dpdGhGaW5hbGl6ZXJzKTsgLy8gV2UgcnVuIHRoaXMgYmVmb3JlIENvZGVC
bG9jaydzIHVuY29uZGl0aW9uYWwgZmluYWxpemVyIHNpbmNlIENvZGVCbG9jayBsb29rcyBhdCB0
aGUgb3duZXIgZXhlY3V0YWJsZSdzIGluc3RhbGxlZCBDb2RlQmxvY2sgaW4gaXRzIGZpbmFsaXpl
VW5jb25kaXRpb25hbGx5LgorICAgIGZvckVhY2hDb2RlQmxvY2tTcGFjZSgKICAgICAgICAgWyZd
IChhdXRvJiBzcGFjZSkgewogICAgICAgICAgICAgdGhpcy0+ZmluYWxpemVNYXJrZWRVbmNvbmRp
dGlvbmFsRmluYWxpemVyczxDb2RlQmxvY2s+KHNwYWNlLnNldCk7CiAgICAgICAgIH0pOwotICAg
IGZpbmFsaXplTWFya2VkVW5jb25kaXRpb25hbEZpbmFsaXplcnM8U3RydWN0dXJlUmFyZURhdGE+
KHZtLnN0cnVjdHVyZVJhcmVEYXRhU3BhY2UpOwotICAgIGZpbmFsaXplTWFya2VkVW5jb25kaXRp
b25hbEZpbmFsaXplcnM8VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU+KHZtLnVubGlua2VkRnVu
Y3Rpb25FeGVjdXRhYmxlU3BhY2Uuc2V0KTsKLSAgICBpZiAodm0ubV93ZWFrU2V0U3BhY2UpCi0g
ICAgICAgIGZpbmFsaXplTWFya2VkVW5jb25kaXRpb25hbEZpbmFsaXplcnM8SlNXZWFrU2V0Pigq
dm0ubV93ZWFrU2V0U3BhY2UpOwotICAgIGlmICh2bS5tX3dlYWtNYXBTcGFjZSkKLSAgICAgICAg
ZmluYWxpemVNYXJrZWRVbmNvbmRpdGlvbmFsRmluYWxpemVyczxKU1dlYWtNYXA+KCp2bS5tX3dl
YWtNYXBTcGFjZSk7Ci0gICAgaWYgKHZtLm1fd2Vha09iamVjdFJlZlNwYWNlKQotICAgICAgICBm
aW5hbGl6ZU1hcmtlZFVuY29uZGl0aW9uYWxGaW5hbGl6ZXJzPEpTV2Vha09iamVjdFJlZj4oKnZt
Lm1fd2Vha09iamVjdFJlZlNwYWNlKTsKLSAgICBpZiAodm0ubV9lcnJvckluc3RhbmNlU3BhY2Up
Ci0gICAgICAgIGZpbmFsaXplTWFya2VkVW5jb25kaXRpb25hbEZpbmFsaXplcnM8RXJyb3JJbnN0
YW5jZT4oKnZtLm1fZXJyb3JJbnN0YW5jZVNwYWNlKTsKKyAgICBmaW5hbGl6ZU1hcmtlZFVuY29u
ZGl0aW9uYWxGaW5hbGl6ZXJzPFN0cnVjdHVyZVJhcmVEYXRhPihzdHJ1Y3R1cmVSYXJlRGF0YVNw
YWNlKTsKKyAgICBmaW5hbGl6ZU1hcmtlZFVuY29uZGl0aW9uYWxGaW5hbGl6ZXJzPFVubGlua2Vk
RnVuY3Rpb25FeGVjdXRhYmxlPih1bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZVNwYWNlLnNldCk7
CisgICAgaWYgKG1fd2Vha1NldFNwYWNlKQorICAgICAgICBmaW5hbGl6ZU1hcmtlZFVuY29uZGl0
aW9uYWxGaW5hbGl6ZXJzPEpTV2Vha1NldD4oKm1fd2Vha1NldFNwYWNlKTsKKyAgICBpZiAobV93
ZWFrTWFwU3BhY2UpCisgICAgICAgIGZpbmFsaXplTWFya2VkVW5jb25kaXRpb25hbEZpbmFsaXpl
cnM8SlNXZWFrTWFwPigqbV93ZWFrTWFwU3BhY2UpOworICAgIGlmIChtX3dlYWtPYmplY3RSZWZT
cGFjZSkKKyAgICAgICAgZmluYWxpemVNYXJrZWRVbmNvbmRpdGlvbmFsRmluYWxpemVyczxKU1dl
YWtPYmplY3RSZWY+KCptX3dlYWtPYmplY3RSZWZTcGFjZSk7CisgICAgaWYgKG1fZXJyb3JJbnN0
YW5jZVNwYWNlKQorICAgICAgICBmaW5hbGl6ZU1hcmtlZFVuY29uZGl0aW9uYWxGaW5hbGl6ZXJz
PEVycm9ySW5zdGFuY2U+KCptX2Vycm9ySW5zdGFuY2VTcGFjZSk7CiAKICAgICAvLyBGaW5hbGl6
YXRpb25SZWdpc3RyaWVzIGN1cnJlbnRseSByZWx5IG9uIHNlcmlhbCBmaW5hbGl6YXRpb24gYmVj
YXVzZSB0aGV5IGNhbiBwb3N0IHRhc2tzIHRvIHRoZSBkZWZlcnJlZFdvcmtUaW1lciwgd2hpY2gg
bm9ybWFsbHkgZXhwZWN0cyB0YXNrcyB0byBvbmx5IGJlIHBvc3RlZCBieSB0aGUgQVBJIGxvY2sg
aG9sZGVyLgotICAgIGlmICh2bS5tX2ZpbmFsaXphdGlvblJlZ2lzdHJ5U3BhY2UpCi0gICAgICAg
IGZpbmFsaXplTWFya2VkVW5jb25kaXRpb25hbEZpbmFsaXplcnM8SlNGaW5hbGl6YXRpb25SZWdp
c3RyeT4oKnZtLm1fZmluYWxpemF0aW9uUmVnaXN0cnlTcGFjZSk7CisgICAgaWYgKG1fZmluYWxp
emF0aW9uUmVnaXN0cnlTcGFjZSkKKyAgICAgICAgZmluYWxpemVNYXJrZWRVbmNvbmRpdGlvbmFs
RmluYWxpemVyczxKU0ZpbmFsaXphdGlvblJlZ2lzdHJ5PigqbV9maW5hbGl6YXRpb25SZWdpc3Ry
eVNwYWNlKTsKIAogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKLSAgICBpZiAodm0ubV93ZWJBc3Nl
bWJseUNvZGVCbG9ja1NwYWNlKQotICAgICAgICBmaW5hbGl6ZU1hcmtlZFVuY29uZGl0aW9uYWxG
aW5hbGl6ZXJzPEpTV2ViQXNzZW1ibHlDb2RlQmxvY2s+KCp2bS5tX3dlYkFzc2VtYmx5Q29kZUJs
b2NrU3BhY2UpOworICAgIGlmIChtX3dlYkFzc2VtYmx5Q29kZUJsb2NrU3BhY2UpCisgICAgICAg
IGZpbmFsaXplTWFya2VkVW5jb25kaXRpb25hbEZpbmFsaXplcnM8SlNXZWJBc3NlbWJseUNvZGVC
bG9jaz4oKm1fd2ViQXNzZW1ibHlDb2RlQmxvY2tTcGFjZSk7CiAjZW5kaWYKIH0KIApAQCAtOTA1
LDcgKzExMDQsNyBAQCB2b2lkIEhlYXA6OmRlbGV0ZUFsbENvZGVCbG9ja3MoRGVsZXRlQWxsCiAK
ICAgICBjb21wbGV0ZUFsbEpJVFBsYW5zKCk7CiAKLSAgICB2bS5mb3JFYWNoU2NyaXB0RXhlY3V0
YWJsZVNwYWNlKAorICAgIGZvckVhY2hTY3JpcHRFeGVjdXRhYmxlU3BhY2UoCiAgICAgICAgIFsm
XSAoYXV0byYgc3BhY2VBbmRTZXQpIHsKICAgICAgICAgICAgIEhlYXBJdGVyYXRpb25TY29wZSBo
ZWFwSXRlcmF0aW9uU2NvcGUoKnRoaXMpOwogICAgICAgICAgICAgYXV0byYgc2V0ID0gc3BhY2VB
bmRTZXQuc2V0OwpAQCAtOTI0LDggKzExMjMsOCBAQCB2b2lkIEhlYXA6OmRlbGV0ZUFsbENvZGVC
bG9ja3MoRGVsZXRlQWxsCiAgICAgICAgIC8vIHBvaW50cyBpbnRvIGEgQ29kZUJsb2NrIHRoYXQg
Y291bGQgYmUgZGVhZC4gVGhlIElDIHdpbGwgc3RpbGwgc3VjY2VlZCBiZWNhdXNlCiAgICAgICAg
IC8vIGl0IHVzZXMgYSBjYWxsZWUgY2hlY2ssIGJ1dCB0aGVuIGl0IHdpbGwgY2FsbCBpbnRvIGRl
YWQgY29kZS4KICAgICAgICAgSGVhcEl0ZXJhdGlvblNjb3BlIGhlYXBJdGVyYXRpb25TY29wZSgq
dGhpcyk7Ci0gICAgICAgIGlmICh2bS5tX3dlYkFzc2VtYmx5Q29kZUJsb2NrU3BhY2UpIHsKLSAg
ICAgICAgICAgIHZtLm1fd2ViQXNzZW1ibHlDb2RlQmxvY2tTcGFjZS0+Zm9yRWFjaExpdmVDZWxs
KFsmXSAoSGVhcENlbGwqIGNlbGwsIEhlYXBDZWxsOjpLaW5kIGtpbmQpIHsKKyAgICAgICAgaWYg
KG1fd2ViQXNzZW1ibHlDb2RlQmxvY2tTcGFjZSkgeworICAgICAgICAgICAgbV93ZWJBc3NlbWJs
eUNvZGVCbG9ja1NwYWNlLT5mb3JFYWNoTGl2ZUNlbGwoWyZdIChIZWFwQ2VsbCogY2VsbCwgSGVh
cENlbGw6OktpbmQga2luZCkgewogICAgICAgICAgICAgICAgIEFTU0VSVF9VTlVTRUQoa2luZCwg
a2luZCA9PSBIZWFwQ2VsbDo6SlNDZWxsKTsKICAgICAgICAgICAgICAgICBKU1dlYkFzc2VtYmx5
Q29kZUJsb2NrKiBjb2RlQmxvY2sgPSBzdGF0aWNfY2FzdDxKU1dlYkFzc2VtYmx5Q29kZUJsb2Nr
Kj4oY2VsbCk7CiAgICAgICAgICAgICAgICAgY29kZUJsb2NrLT5jbGVhckpTQ2FsbElDcyh2bSk7
CkBAIC05NDYsNyArMTE0NSw3IEBAIHZvaWQgSGVhcDo6ZGVsZXRlQWxsVW5saW5rZWRDb2RlQmxv
Y2tzKEQKICAgICBSRUxFQVNFX0FTU0VSVCghbV9jb2xsZWN0aW9uU2NvcGUpOwogCiAgICAgSGVh
cEl0ZXJhdGlvblNjb3BlIGhlYXBJdGVyYXRpb25TY29wZSgqdGhpcyk7Ci0gICAgdm0udW5saW5r
ZWRGdW5jdGlvbkV4ZWN1dGFibGVTcGFjZS5zZXQuZm9yRWFjaExpdmVDZWxsKAorICAgIHVubGlu
a2VkRnVuY3Rpb25FeGVjdXRhYmxlU3BhY2Uuc2V0LmZvckVhY2hMaXZlQ2VsbCgKICAgICAgICAg
WyZdIChIZWFwQ2VsbCogY2VsbCwgSGVhcENlbGw6OktpbmQpIHsKICAgICAgICAgICAgIFVubGlu
a2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlID0gc3RhdGljX2Nhc3Q8VW5saW5rZWRG
dW5jdGlvbkV4ZWN1dGFibGUqPihjZWxsKTsKICAgICAgICAgICAgIGV4ZWN1dGFibGUtPmNsZWFy
Q29kZSh2bSk7CkBAIC05NTUsMTAgKzExNTQsMTAgQEAgdm9pZCBIZWFwOjpkZWxldGVBbGxVbmxp
bmtlZENvZGVCbG9ja3MoRAogCiB2b2lkIEhlYXA6OmRlbGV0ZVVubWFya2VkQ29tcGlsZWRDb2Rl
KCkKIHsKLSAgICB2bSgpLmZvckVhY2hTY3JpcHRFeGVjdXRhYmxlU3BhY2UoW10gKGF1dG8mIHNw
YWNlKSB7IHNwYWNlLnNwYWNlLnN3ZWVwKCk7IH0pOworICAgIGZvckVhY2hTY3JpcHRFeGVjdXRh
YmxlU3BhY2UoW10gKGF1dG8mIHNwYWNlKSB7IHNwYWNlLnNwYWNlLnN3ZWVwMygpOyB9KTsKICAg
ICAvLyBTd2VlcGluZyBtdXN0IG9jY3VyIGJlZm9yZSBkZWxldGluZyBzdHVicywgb3RoZXJ3aXNl
IHRoZSBzdHVicyBtaWdodCBzdGlsbCB0aGluayB0aGV5J3JlIGFsaXZlIGFzIHRoZXkgZ2V0IGRl
bGV0ZWQuCiAgICAgLy8gQW5kIENvZGVCbG9jayBkZXN0cnVjdG9yIGlzIGFzc3VtaW5nIHRoYXQg
Q29kZUJsb2NrIGdldHMgZGVzdHJveWVkIGJlZm9yZSBVbmxpbmtlZENvZGVCbG9jayBnZXRzIGRl
c3Ryb3llZC4KLSAgICB2bSgpLmZvckVhY2hDb2RlQmxvY2tTcGFjZShbXSAoYXV0byYgc3BhY2Up
IHsgc3BhY2Uuc3BhY2Uuc3dlZXAoKTsgfSk7CisgICAgZm9yRWFjaENvZGVCbG9ja1NwYWNlKFtd
IChhdXRvJiBzcGFjZSkgeyBzcGFjZS5zcGFjZS5zd2VlcDMoKTsgfSk7CiAgICAgbV9qaXRTdHVi
Um91dGluZXMtPmRlbGV0ZVVubWFya2VkSmV0dGlzb25lZFN0dWJSb3V0aW5lcygpOwogfQogCkBA
IC0yMTAzLDggKzIzMDIsOCBAQCB2b2lkIEhlYXA6OnN3ZWVwSW5GaW5hbGl6ZSgpCiAgICAgbV9v
YmplY3RTcGFjZS5zd2VlcFByZWNpc2VBbGxvY2F0aW9ucygpOwogI2lmIEVOQUJMRShXRUJBU1NF
TUJMWSkKICAgICAvLyBXZSBob2xkIG9udG8gYSBsb3Qgb2YgbWVtb3J5LCBzbyBpdCBtYWtlcyBh
IGxvdCBvZiBzZW5zZSB0byBiZSBzd2VwdCBlYWdlcmx5LgotICAgIGlmICh2bSgpLm1fd2ViQXNz
ZW1ibHlNZW1vcnlTcGFjZSkKLSAgICAgICAgdm0oKS5tX3dlYkFzc2VtYmx5TWVtb3J5U3BhY2Ut
PnN3ZWVwKCk7CisgICAgaWYgKG1fd2ViQXNzZW1ibHlNZW1vcnlTcGFjZSkKKyAgICAgICAgbV93
ZWJBc3NlbWJseU1lbW9yeVNwYWNlLT5zd2VlcDMoKTsKICNlbmRpZgogfQogCkBAIC0yODA1LDcg
KzMwMDQsNyBAQCB2b2lkIEhlYXA6OmFkZENvcmVDb25zdHJhaW50cygpCiAgICAgICAgICJPIiwg
Ik91dHB1dCIsCiAgICAgICAgIE1BS0VfTUFSS0lOR19DT05TVFJBSU5UX0VYRUNVVE9SX1BBSVIo
KFtdIChhdXRvJiB2aXNpdG9yKSB7CiAgICAgICAgICAgICB1c2luZyBWaXNpdG9yID0gZGVjbHR5
cGUodmlzaXRvcik7Ci0gICAgICAgICAgICBWTSYgdm0gPSB2aXNpdG9yLnZtKCk7CisgICAgICAg
ICAgICBIZWFwKiBoZWFwID0gdmlzaXRvci5oZWFwKCk7CiAKICAgICAgICAgICAgIC8vIFRoZSBg
dmlzaXRvcjJgIGFyZ3VtZW50IGlzIHN0cmFuZ2VseSBuYW1lZCBiZWNhdXNlIHRoZSBXaW5DYWly
byBwb3J0CiAgICAgICAgICAgICAvLyBnZXRzIGNvbmZ1c2VkICBhbmQgdGhpbmtzIHdlJ3JlIHRy
eWluZyB0byBjYXB0dXJlIHRoZSBvdXRlciB2aXNpdG9yCkBAIC0yODI0LDExICszMDIzLDExIEBA
IHZvaWQgSGVhcDo6YWRkQ29yZUNvbnN0cmFpbnRzKCkKIAogICAgICAgICAgICAgewogICAgICAg
ICAgICAgICAgIFNldFJvb3RNYXJrUmVhc29uU2NvcGUgcm9vdFNjb3BlKHZpc2l0b3IsIFJvb3RN
YXJrUmVhc29uOjpFeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlcyk7Ci0gICAgICAgICAgICAgICAg
YWRkKHZtLmV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2VzV2l0aENvbnN0cmFpbnRzKTsKKyAgICAg
ICAgICAgICAgICBhZGQoaGVhcC0+ZXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZXNXaXRoQ29uc3Ry
YWludHMpOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKHZtLm1fd2Vha01hcFNwYWNl
KSB7CisgICAgICAgICAgICBpZiAoaGVhcC0+bV93ZWFrTWFwU3BhY2UpIHsKICAgICAgICAgICAg
ICAgICBTZXRSb290TWFya1JlYXNvblNjb3BlIHJvb3RTY29wZSh2aXNpdG9yLCBSb290TWFya1Jl
YXNvbjo6V2Vha01hcFNwYWNlKTsKLSAgICAgICAgICAgICAgICBhZGQoKnZtLm1fd2Vha01hcFNw
YWNlKTsKKyAgICAgICAgICAgICAgICBhZGQoKmhlYXAtPm1fd2Vha01hcFNwYWNlKTsKICAgICAg
ICAgICAgIH0KICAgICAgICAgfSkpLAogICAgICAgICBDb25zdHJhaW50Vm9sYXRpbGl0eTo6R3Jl
eWVkQnlNYXJraW5nLApAQCAtMzA2Miw0ICszMjYxLDEzNSBAQCB2b2lkIEhlYXA6OnZlcmlmeUdD
KCkKICAgICBtX3ZlcmlmaWVyU2xvdFZpc2l0b3IgPSBudWxscHRyOwogfQogCisjZGVmaW5lIERZ
TkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhuYW1lLCBoZWFwQ2VsbFR5cGUs
IHR5cGUpIFwKKyAgICBJc29TdWJzcGFjZSogSGVhcDo6bmFtZSMjU2xvdygpIFwKKyAgICB7IFwK
KyAgICAgICAgQVNTRVJUKCFtXyMjbmFtZSk7IFwKKyAgICAgICAgYXV0byBzcGFjZSA9IG1ha2VV
bmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKCp0aGlzLCBoZWFwQ2VsbFR5cGUs
IHR5cGUpOyBcCisgICAgICAgIFdURjo6c3RvcmVTdG9yZUZlbmNlKCk7IFwKKyAgICAgICAgbV8j
I25hbWUgPSBXVEZNb3ZlKHNwYWNlKTsgXAorICAgICAgICByZXR1cm4gbV8jI25hbWUuZ2V0KCk7
IFwKKyAgICB9CisKKworRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGFw
aUdsb2JhbE9iamVjdFNwYWNlLCBhcGlHbG9iYWxPYmplY3RIZWFwQ2VsbFR5cGUsIEpTQVBJR2xv
YmFsT2JqZWN0KQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGFwaVZh
bHVlV3JhcHBlclNwYWNlLCBjZWxsSGVhcENlbGxUeXBlLCBKU0FQSVZhbHVlV3JhcHBlcikKK0RZ
TkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhhcnJheUJ1ZmZlclNwYWNlLCBj
ZWxsSGVhcENlbGxUeXBlLCBKU0FycmF5QnVmZmVyKQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVG
SU5FX01FTUJFUl9TTE9XKGFycmF5SXRlcmF0b3JTcGFjZSwgY2VsbEhlYXBDZWxsVHlwZSwgSlNB
cnJheUl0ZXJhdG9yKQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGFz
eW5jR2VuZXJhdG9yU3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUsIEpTQXN5bmNHZW5lcmF0b3IpCitE
WU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coYmlnSW50NjRBcnJheVNwYWNl
LCBjZWxsSGVhcENlbGxUeXBlLCBKU0JpZ0ludDY0QXJyYXkpCitEWU5BTUlDX0lTT19TVUJTUEFD
RV9ERUZJTkVfTUVNQkVSX1NMT1coYmlnSW50T2JqZWN0U3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUs
IEJpZ0ludE9iamVjdCkKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhi
aWdVaW50NjRBcnJheVNwYWNlLCBjZWxsSGVhcENlbGxUeXBlLCBKU0JpZ1VpbnQ2NEFycmF5KQor
RFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGJvb2xlYW5PYmplY3RTcGFj
ZSwgY2VsbEhlYXBDZWxsVHlwZSwgQm9vbGVhbk9iamVjdCkKK0RZTkFNSUNfSVNPX1NVQlNQQUNF
X0RFRklORV9NRU1CRVJfU0xPVyhib3VuZEZ1bmN0aW9uU3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUs
IEpTQm91bmRGdW5jdGlvbikgLy8gSGFzaDoweGQ3OTE2ZDQxCitEWU5BTUlDX0lTT19TVUJTUEFD
RV9ERUZJTkVfTUVNQkVSX1NMT1coY2FsbGJhY2tDb25zdHJ1Y3RvclNwYWNlLCBjYWxsYmFja0Nv
bnN0cnVjdG9ySGVhcENlbGxUeXBlLCBKU0NhbGxiYWNrQ29uc3RydWN0b3IpCitEWU5BTUlDX0lT
T19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coY2FsbGJhY2tHbG9iYWxPYmplY3RTcGFjZSwg
Y2FsbGJhY2tHbG9iYWxPYmplY3RIZWFwQ2VsbFR5cGUsIEpTQ2FsbGJhY2tPYmplY3Q8SlNHbG9i
YWxPYmplY3Q+KQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGNhbGxi
YWNrRnVuY3Rpb25TcGFjZSwgY2VsbEhlYXBDZWxsVHlwZSwgSlNDYWxsYmFja0Z1bmN0aW9uKSAv
LyBIYXNoOjB4ZTc2NDhlYmMKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xP
VyhjYWxsYmFja09iamVjdFNwYWNlLCBjYWxsYmFja09iamVjdEhlYXBDZWxsVHlwZSwgSlNDYWxs
YmFja09iamVjdDxKU05vbkZpbmFsT2JqZWN0PikKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklO
RV9NRU1CRVJfU0xPVyhjdXN0b21HZXR0ZXJGdW5jdGlvblNwYWNlLCBjdXN0b21HZXR0ZXJGdW5j
dGlvbkhlYXBDZWxsVHlwZSwgSlNDdXN0b21HZXR0ZXJGdW5jdGlvbikKK0RZTkFNSUNfSVNPX1NV
QlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhjdXN0b21TZXR0ZXJGdW5jdGlvblNwYWNlLCBjdXN0
b21TZXR0ZXJGdW5jdGlvbkhlYXBDZWxsVHlwZSwgSlNDdXN0b21TZXR0ZXJGdW5jdGlvbikKK0RZ
TkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhkYXRhVmlld1NwYWNlLCBjZWxs
SGVhcENlbGxUeXBlLCBKU0RhdGFWaWV3KQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01F
TUJFUl9TTE9XKGRlYnVnZ2VyU2NvcGVTcGFjZSwgY2VsbEhlYXBDZWxsVHlwZSwgRGVidWdnZXJT
Y29wZSkKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhlcnJvckluc3Rh
bmNlU3BhY2UsIGVycm9ySW5zdGFuY2VIZWFwQ2VsbFR5cGUsIEVycm9ySW5zdGFuY2UpIC8vIEhh
c2g6MHgzZjQwZDRhCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coZmxv
YXQzMkFycmF5U3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUsIEpTRmxvYXQzMkFycmF5KQorRFlOQU1J
Q19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGZsb2F0NjRBcnJheVNwYWNlLCBjZWxs
SGVhcENlbGxUeXBlLCBKU0Zsb2F0NjRBcnJheSkKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklO
RV9NRU1CRVJfU0xPVyhmdW5jdGlvblJhcmVEYXRhU3BhY2UsIGRlc3RydWN0aWJsZUNlbGxIZWFw
Q2VsbFR5cGUsIEZ1bmN0aW9uUmFyZURhdGEpCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVf
TUVNQkVSX1NMT1coZ2VuZXJhdG9yU3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUsIEpTR2VuZXJhdG9y
KQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGdsb2JhbE9iamVjdFNw
YWNlLCBnbG9iYWxPYmplY3RIZWFwQ2VsbFR5cGUsIEpTR2xvYmFsT2JqZWN0KQorRFlOQU1JQ19J
U09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGluamVjdGVkU2NyaXB0SG9zdFNwYWNlLCBp
bmplY3RlZFNjcmlwdEhvc3RTcGFjZUhlYXBDZWxsVHlwZSwgSW5zcGVjdG9yOjpKU0luamVjdGVk
U2NyaXB0SG9zdCkKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhpbnQ4
QXJyYXlTcGFjZSwgY2VsbEhlYXBDZWxsVHlwZSwgSlNJbnQ4QXJyYXkpCitEWU5BTUlDX0lTT19T
VUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coaW50MTZBcnJheVNwYWNlLCBjZWxsSGVhcENlbGxU
eXBlLCBKU0ludDE2QXJyYXkpCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NM
T1coaW50MzJBcnJheVNwYWNlLCBjZWxsSGVhcENlbGxUeXBlLCBKU0ludDMyQXJyYXkpCitEWU5B
TUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coamF2YVNjcmlwdENhbGxGcmFtZVNw
YWNlLCBqYXZhU2NyaXB0Q2FsbEZyYW1lSGVhcENlbGxUeXBlLCBJbnNwZWN0b3I6OkpTSmF2YVNj
cmlwdENhbGxGcmFtZSkKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhq
c01vZHVsZVJlY29yZFNwYWNlLCBqc01vZHVsZVJlY29yZEhlYXBDZWxsVHlwZSwgSlNNb2R1bGVS
ZWNvcmQpCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1cobWFwQnVja2V0
U3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUsIEpTTWFwOjpCdWNrZXRUeXBlKQorRFlOQU1JQ19JU09f
U1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKG1hcEl0ZXJhdG9yU3BhY2UsIGNlbGxIZWFwQ2Vs
bFR5cGUsIEpTTWFwSXRlcmF0b3IpCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVS
X1NMT1cobWFwU3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUsIEpTTWFwKQorRFlOQU1JQ19JU09fU1VC
U1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKG1vZHVsZU5hbWVzcGFjZU9iamVjdFNwYWNlLCBtb2R1
bGVOYW1lc3BhY2VPYmplY3RIZWFwQ2VsbFR5cGUsIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0KQor
RFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKG5hdGl2ZVN0ZEZ1bmN0aW9u
U3BhY2UsIG5hdGl2ZVN0ZEZ1bmN0aW9uSGVhcENlbGxUeXBlLCBKU05hdGl2ZVN0ZEZ1bmN0aW9u
KSAvLyBIYXNoOjB4NzBlZDYxZTQKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJf
U0xPVyhwcm94eU9iamVjdFNwYWNlLCBjZWxsSGVhcENlbGxUeXBlLCBQcm94eU9iamVjdCkKK0RZ
TkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhwcm94eVJldm9rZVNwYWNlLCBj
ZWxsSGVhcENlbGxUeXBlLCBQcm94eVJldm9rZSkgLy8gSGFzaDoweGI1MDZhOTM5CitEWU5BTUlD
X0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coc2NvcGVkQXJndW1lbnRzVGFibGVTcGFj
ZSwgZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZSwgU2NvcGVkQXJndW1lbnRzVGFibGUpCitE
WU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coc2NyaXB0RmV0Y2hQYXJhbWV0
ZXJzU3BhY2UsIGRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUsIEpTU2NyaXB0RmV0Y2hQYXJh
bWV0ZXJzKQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHNjcmlwdEZl
dGNoZXJTcGFjZSwgZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZSwgSlNTY3JpcHRGZXRjaGVy
KQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHNldEJ1Y2tldFNwYWNl
LCBjZWxsSGVhcENlbGxUeXBlLCBKU1NldDo6QnVja2V0VHlwZSkKK0RZTkFNSUNfSVNPX1NVQlNQ
QUNFX0RFRklORV9NRU1CRVJfU0xPVyhzZXRJdGVyYXRvclNwYWNlLCBjZWxsSGVhcENlbGxUeXBl
LCBKU1NldEl0ZXJhdG9yKQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9X
KHNldFNwYWNlLCBjZWxsSGVhcENlbGxUeXBlLCBKU1NldCkKK0RZTkFNSUNfSVNPX1NVQlNQQUNF
X0RFRklORV9NRU1CRVJfU0xPVyhzaGFkb3dSZWFsbVNwYWNlLCBjZWxsSGVhcENlbGxUeXBlLCBT
aGFkb3dSZWFsbU9iamVjdCkKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xP
VyhzdHJpY3RFdmFsQWN0aXZhdGlvblNwYWNlLCBjZWxsSGVhcENlbGxUeXBlLCBTdHJpY3RFdmFs
QWN0aXZhdGlvbikKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhzdHJp
bmdJdGVyYXRvclNwYWNlLCBjZWxsSGVhcENlbGxUeXBlLCBKU1N0cmluZ0l0ZXJhdG9yKQorRFlO
QU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHNvdXJjZUNvZGVTcGFjZSwgZGVz
dHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZSwgSlNTb3VyY2VDb2RlKQorRFlOQU1JQ19JU09fU1VC
U1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHN5bWJvbFNwYWNlLCBkZXN0cnVjdGlibGVDZWxsSGVh
cENlbGxUeXBlLCBTeW1ib2wpCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NM
T1coc3ltYm9sT2JqZWN0U3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUsIFN5bWJvbE9iamVjdCkKK0RZ
TkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh0ZW1wbGF0ZU9iamVjdERlc2Ny
aXB0b3JTcGFjZSwgZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZSwgSlNUZW1wbGF0ZU9iamVj
dERlc2NyaXB0b3IpCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1codGVt
cG9yYWxDYWxlbmRhclNwYWNlLCBjZWxsSGVhcENlbGxUeXBlLCBUZW1wb3JhbENhbGVuZGFyKQor
RFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHRlbXBvcmFsRHVyYXRpb25T
cGFjZSwgY2VsbEhlYXBDZWxsVHlwZSwgVGVtcG9yYWxEdXJhdGlvbikKK0RZTkFNSUNfSVNPX1NV
QlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh0ZW1wb3JhbEluc3RhbnRTcGFjZSwgY2VsbEhlYXBD
ZWxsVHlwZSwgVGVtcG9yYWxJbnN0YW50KQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01F
TUJFUl9TTE9XKHRlbXBvcmFsUGxhaW5UaW1lU3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUsIFRlbXBv
cmFsUGxhaW5UaW1lKQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHRl
bXBvcmFsVGltZVpvbmVTcGFjZSwgY2VsbEhlYXBDZWxsVHlwZSwgVGVtcG9yYWxUaW1lWm9uZSkK
K0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh1aW50OEFycmF5U3BhY2Us
IGNlbGxIZWFwQ2VsbFR5cGUsIEpTVWludDhBcnJheSkKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RF
RklORV9NRU1CRVJfU0xPVyh1aW50OENsYW1wZWRBcnJheVNwYWNlLCBjZWxsSGVhcENlbGxUeXBl
LCBKU1VpbnQ4Q2xhbXBlZEFycmF5KQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJF
Ul9TTE9XKHVpbnQxNkFycmF5U3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUsIEpTVWludDE2QXJyYXkp
CitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1codWludDMyQXJyYXlTcGFj
ZSwgY2VsbEhlYXBDZWxsVHlwZSwgSlNVaW50MzJBcnJheSkKK0RZTkFNSUNfSVNPX1NVQlNQQUNF
X0RFRklORV9NRU1CRVJfU0xPVyh1bmxpbmtlZEV2YWxDb2RlQmxvY2tTcGFjZSwgZGVzdHJ1Y3Rp
YmxlQ2VsbEhlYXBDZWxsVHlwZSwgVW5saW5rZWRFdmFsQ29kZUJsb2NrKQorRFlOQU1JQ19JU09f
U1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2tTcGFj
ZSwgZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZSwgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9j
aykKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh1bmxpbmtlZE1vZHVs
ZVByb2dyYW1Db2RlQmxvY2tTcGFjZSwgZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZSwgVW5s
aW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5F
X01FTUJFUl9TTE9XKHVubGlua2VkUHJvZ3JhbUNvZGVCbG9ja1NwYWNlLCBkZXN0cnVjdGlibGVD
ZWxsSGVhcENlbGxUeXBlLCBVbmxpbmtlZFByb2dyYW1Db2RlQmxvY2spCitEWU5BTUlDX0lTT19T
VUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1cod2Vha01hcFNwYWNlLCB3ZWFrTWFwSGVhcENlbGxU
eXBlLCBKU1dlYWtNYXApIC8vIEhhc2g6MHg2NjJiMTJhMworRFlOQU1JQ19JU09fU1VCU1BBQ0Vf
REVGSU5FX01FTUJFUl9TTE9XKHdlYWtTZXRTcGFjZSwgd2Vha1NldEhlYXBDZWxsVHlwZSwgSlNX
ZWFrU2V0KSAvLyBIYXNoOjB4NGM3ODFiMzAKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9N
RU1CRVJfU0xPVyh3ZWFrT2JqZWN0UmVmU3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUsIEpTV2Vha09i
amVjdFJlZikgLy8gSGFzaDoweDhlYzY4ZjFmCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVf
TUVNQkVSX1NMT1cod2l0aFNjb3BlU3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUsIEpTV2l0aFNjb3Bl
KQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGZpbmFsaXphdGlvblJl
Z2lzdHJ5U3BhY2UsIGZpbmFsaXphdGlvblJlZ2lzdHJ5Q2VsbFR5cGUsIEpTRmluYWxpemF0aW9u
UmVnaXN0cnkpCisjaWYgSlNDX09CSkNfQVBJX0VOQUJMRUQKK0RZTkFNSUNfSVNPX1NVQlNQQUNF
X0RFRklORV9NRU1CRVJfU0xPVyhhcGlXcmFwcGVyT2JqZWN0U3BhY2UsIGFwaVdyYXBwZXJPYmpl
Y3RIZWFwQ2VsbFR5cGUsIEpTQ2FsbGJhY2tPYmplY3Q8SlNBUElXcmFwcGVyT2JqZWN0PikKK0RZ
TkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhvYmpDQ2FsbGJhY2tGdW5jdGlv
blNwYWNlLCBvYmpDQ2FsbGJhY2tGdW5jdGlvbkhlYXBDZWxsVHlwZSwgT2JqQ0NhbGxiYWNrRnVu
Y3Rpb24pIC8vIEhhc2g6MHgxMGY2MTBiOAorI2VuZGlmCisjaWZkZWYgSlNDX0dMSUJfQVBJX0VO
QUJMRUQKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhhcGlXcmFwcGVy
T2JqZWN0U3BhY2UsIGFwaVdyYXBwZXJPYmplY3RIZWFwQ2VsbFR5cGUsIEpTQ2FsbGJhY2tPYmpl
Y3Q8SlNBUElXcmFwcGVyT2JqZWN0PikKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1C
RVJfU0xPVyhqc2NDYWxsYmFja0Z1bmN0aW9uU3BhY2UsIGpzY0NhbGxiYWNrRnVuY3Rpb25IZWFw
Q2VsbFR5cGUsIEpTQ0NhbGxiYWNrRnVuY3Rpb24pCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJ
TkVfTUVNQkVSX1NMT1coY2FsbGJhY2tBUElXcmFwcGVyR2xvYmFsT2JqZWN0U3BhY2UsIGNhbGxi
YWNrQVBJV3JhcHBlckdsb2JhbE9iamVjdEhlYXBDZWxsVHlwZSwgSlNDYWxsYmFja09iamVjdDxK
U0FQSVdyYXBwZXJHbG9iYWxPYmplY3Q+KQorI2VuZGlmCitEWU5BTUlDX0lTT19TVUJTUEFDRV9E
RUZJTkVfTUVNQkVSX1NMT1coaW50bENvbGxhdG9yU3BhY2UsIGludGxDb2xsYXRvckhlYXBDZWxs
VHlwZSwgSW50bENvbGxhdG9yKQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9T
TE9XKGludGxEYXRlVGltZUZvcm1hdFNwYWNlLCBpbnRsRGF0ZVRpbWVGb3JtYXRIZWFwQ2VsbFR5
cGUsIEludGxEYXRlVGltZUZvcm1hdCkKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1C
RVJfU0xPVyhpbnRsRGlzcGxheU5hbWVzU3BhY2UsIGludGxEaXNwbGF5TmFtZXNIZWFwQ2VsbFR5
cGUsIEludGxEaXNwbGF5TmFtZXMpCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVS
X1NMT1coaW50bExpc3RGb3JtYXRTcGFjZSwgaW50bExpc3RGb3JtYXRIZWFwQ2VsbFR5cGUsIElu
dGxMaXN0Rm9ybWF0KQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGlu
dGxMb2NhbGVTcGFjZSwgaW50bExvY2FsZUhlYXBDZWxsVHlwZSwgSW50bExvY2FsZSkKK0RZTkFN
SUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhpbnRsTnVtYmVyRm9ybWF0U3BhY2Us
IGludGxOdW1iZXJGb3JtYXRIZWFwQ2VsbFR5cGUsIEludGxOdW1iZXJGb3JtYXQpCitEWU5BTUlD
X0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coaW50bFBsdXJhbFJ1bGVzU3BhY2UsIGlu
dGxQbHVyYWxSdWxlc0hlYXBDZWxsVHlwZSwgSW50bFBsdXJhbFJ1bGVzKQorRFlOQU1JQ19JU09f
U1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGludGxSZWxhdGl2ZVRpbWVGb3JtYXRTcGFjZSwg
aW50bFJlbGF0aXZlVGltZUZvcm1hdEhlYXBDZWxsVHlwZSwgSW50bFJlbGF0aXZlVGltZUZvcm1h
dCkKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhpbnRsU2VnbWVudEl0
ZXJhdG9yU3BhY2UsIGludGxTZWdtZW50SXRlcmF0b3JIZWFwQ2VsbFR5cGUsIEludGxTZWdtZW50
SXRlcmF0b3IpCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coaW50bFNl
Z21lbnRlclNwYWNlLCBpbnRsU2VnbWVudGVySGVhcENlbGxUeXBlLCBJbnRsU2VnbWVudGVyKQor
RFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGludGxTZWdtZW50c1NwYWNl
LCBpbnRsU2VnbWVudHNIZWFwQ2VsbFR5cGUsIEludGxTZWdtZW50cykKKyNpZiBFTkFCTEUoV0VC
QVNTRU1CTFkpCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coanNUb1dh
c21JQ0NhbGxlZVNwYWNlLCBjZWxsSGVhcENlbGxUeXBlLCBKU1RvV2FzbUlDQ2FsbGVlKQorRFlO
QU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHdlYkFzc2VtYmx5Q29kZUJsb2Nr
U3BhY2UsIHdlYkFzc2VtYmx5Q29kZUJsb2NrSGVhcENlbGxUeXBlLCBKU1dlYkFzc2VtYmx5Q29k
ZUJsb2NrKSAvLyBIYXNoOjB4OWFkOTk1Y2QKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9N
RU1CRVJfU0xPVyh3ZWJBc3NlbWJseUV4Y2VwdGlvblNwYWNlLCB3ZWJBc3NlbWJseUV4Y2VwdGlv
bkhlYXBDZWxsVHlwZSwgSlNXZWJBc3NlbWJseUV4Y2VwdGlvbikKK0RZTkFNSUNfSVNPX1NVQlNQ
QUNFX0RFRklORV9NRU1CRVJfU0xPVyh3ZWJBc3NlbWJseUZ1bmN0aW9uU3BhY2UsIHdlYkFzc2Vt
Ymx5RnVuY3Rpb25IZWFwQ2VsbFR5cGUsIFdlYkFzc2VtYmx5RnVuY3Rpb24pIC8vIEhhc2g6MHg4
YjdjMzJkYgorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHdlYkFzc2Vt
Ymx5R2xvYmFsU3BhY2UsIHdlYkFzc2VtYmx5R2xvYmFsSGVhcENlbGxUeXBlLCBKU1dlYkFzc2Vt
Ymx5R2xvYmFsKQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHdlYkFz
c2VtYmx5SW5zdGFuY2VTcGFjZSwgd2ViQXNzZW1ibHlJbnN0YW5jZUhlYXBDZWxsVHlwZSwgSlNX
ZWJBc3NlbWJseUluc3RhbmNlKQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9T
TE9XKHdlYkFzc2VtYmx5TWVtb3J5U3BhY2UsIHdlYkFzc2VtYmx5TWVtb3J5SGVhcENlbGxUeXBl
LCBKU1dlYkFzc2VtYmx5TWVtb3J5KQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJF
Ul9TTE9XKHdlYkFzc2VtYmx5TW9kdWxlU3BhY2UsIHdlYkFzc2VtYmx5TW9kdWxlSGVhcENlbGxU
eXBlLCBKU1dlYkFzc2VtYmx5TW9kdWxlKQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01F
TUJFUl9TTE9XKHdlYkFzc2VtYmx5TW9kdWxlUmVjb3JkU3BhY2UsIHdlYkFzc2VtYmx5TW9kdWxl
UmVjb3JkSGVhcENlbGxUeXBlLCBXZWJBc3NlbWJseU1vZHVsZVJlY29yZCkKK0RZTkFNSUNfSVNP
X1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh3ZWJBc3NlbWJseVRhYmxlU3BhY2UsIHdlYkFz
c2VtYmx5VGFibGVIZWFwQ2VsbFR5cGUsIEpTV2ViQXNzZW1ibHlUYWJsZSkKK0RZTkFNSUNfSVNP
X1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh3ZWJBc3NlbWJseVRhZ1NwYWNlLCB3ZWJBc3Nl
bWJseVRhZ0hlYXBDZWxsVHlwZSwgSlNXZWJBc3NlbWJseVRhZykKK0RZTkFNSUNfSVNPX1NVQlNQ
QUNFX0RFRklORV9NRU1CRVJfU0xPVyh3ZWJBc3NlbWJseVdyYXBwZXJGdW5jdGlvblNwYWNlLCBj
ZWxsSGVhcENlbGxUeXBlLCBXZWJBc3NlbWJseVdyYXBwZXJGdW5jdGlvbikgLy8gSGFzaDoweGQ0
YTVmZjAxCisjZW5kaWYKKworI3VuZGVmIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1C
RVJfU0xPVworCisjZGVmaW5lIERZTkFNSUNfU1BBQ0VfQU5EX1NFVF9ERUZJTkVfTUVNQkVSX1NM
T1cobmFtZSwgaGVhcENlbGxUeXBlLCB0eXBlKSBcCisgICAgSXNvU3Vic3BhY2UqIEhlYXA6Om5h
bWUjI1Nsb3coKSBcCisgICAgeyBcCisgICAgICAgIEFTU0VSVCghbV8jI25hbWUpOyBcCisgICAg
ICAgIGF1dG8gc3BhY2UgPSBtYWtlVW5pcXVlPFNwYWNlQW5kU2V0PiBJU09fU1VCU1BBQ0VfSU5J
VCgqdGhpcywgaGVhcENlbGxUeXBlLCB0eXBlKTsgXAorICAgICAgICBXVEY6OnN0b3JlU3RvcmVG
ZW5jZSgpOyBcCisgICAgICAgIG1fIyNuYW1lID0gV1RGTW92ZShzcGFjZSk7IFwKKyAgICAgICAg
cmV0dXJuICZtXyMjbmFtZS0+c3BhY2U7IFwKKyAgICB9CisKK0RZTkFNSUNfU1BBQ0VfQU5EX1NF
VF9ERUZJTkVfTUVNQkVSX1NMT1coZXZhbEV4ZWN1dGFibGVTcGFjZSwgZGVzdHJ1Y3RpYmxlQ2Vs
bEhlYXBDZWxsVHlwZSwgRXZhbEV4ZWN1dGFibGUpIC8vIEhhc2g6MHg5NThlM2U5ZAorRFlOQU1J
Q19TUEFDRV9BTkRfU0VUX0RFRklORV9NRU1CRVJfU0xPVyhtb2R1bGVQcm9ncmFtRXhlY3V0YWJs
ZVNwYWNlLCBkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlLCBNb2R1bGVQcm9ncmFtRXhlY3V0
YWJsZSkgLy8gSGFzaDoweDY1MDZmYTNjCisKKyN1bmRlZiBEWU5BTUlDX1NQQUNFX0FORF9TRVRf
REVGSU5FX01FTUJFUl9TTE9XCisKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL0hlYXAuaAkocmV2aXNpb24gMjg2MDQzKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvSGVhcC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw2ICsyNSw3IEBACiAjaW5jbHVk
ZSAiQ2VsbFN0YXRlLmgiCiAjaW5jbHVkZSAiQ29sbGVjdGlvblNjb3BlLmgiCiAjaW5jbHVkZSAi
Q29sbGVjdG9yUGhhc2UuaCIKKyNpbmNsdWRlICJDb21wbGV0ZVN1YnNwYWNlLmgiCiAjaW5jbHVk
ZSAiRGVsZXRlQWxsQ29kZUVmZm9ydC5oIgogI2luY2x1ZGUgIkdDQ29uZHVjdG9yLmgiCiAjaW5j
bHVkZSAiR0NJbmNvbWluZ1JlZkNvdW50ZWRTZXQuaCIKQEAgLTMzLDYgKzM0LDExIEBACiAjaW5j
bHVkZSAiSGFuZGxlU2V0LmgiCiAjaW5jbHVkZSAiSGVhcEZpbmFsaXplckNhbGxiYWNrLmgiCiAj
aW5jbHVkZSAiSGVhcE9ic2VydmVyLmgiCisjaW5jbHVkZSAiSXNvQ2VsbFNldC5oIgorI2luY2x1
ZGUgIklzb0hlYXBDZWxsVHlwZS5oIgorI2luY2x1ZGUgIklzb0lubGluZWRIZWFwQ2VsbFR5cGUu
aCIKKyNpbmNsdWRlICJJc29TdWJzcGFjZS5oIgorI2luY2x1ZGUgIkpTRGVzdHJ1Y3RpYmxlT2Jq
ZWN0SGVhcENlbGxUeXBlLmgiCiAjaW5jbHVkZSAiTWFya2VkQmxvY2suaCIKICNpbmNsdWRlICJN
YXJrZWRTcGFjZS5oIgogI2luY2x1ZGUgIk11dGF0b3JTdGF0ZS5oIgpAQCAtNTgsOSArNjQsMTEg
QEAgY2xhc3MgQ29sbGVjdGluZ1Njb3BlOwogY2xhc3MgQ29uc2VydmF0aXZlUm9vdHM7CiBjbGFz
cyBHQ0RlZmVycmFsQ29udGV4dDsKIGNsYXNzIEVkZW5HQ0FjdGl2aXR5Q2FsbGJhY2s7CitjbGFz
cyBGYXN0TWFsbG9jQWxpZ25lZE1lbW9yeUFsbG9jYXRvcjsKIGNsYXNzIEZ1bGxHQ0FjdGl2aXR5
Q2FsbGJhY2s7CiBjbGFzcyBHQ0FjdGl2aXR5Q2FsbGJhY2s7CiBjbGFzcyBHQ0F3YXJlSklUU3R1
YlJvdXRpbmU7CitjbGFzcyBHaWdhY2FnZUFsaWduZWRNZW1vcnlBbGxvY2F0b3I7CiBjbGFzcyBI
ZWFwOwogY2xhc3MgSGVhcFByb2ZpbGVyOwogY2xhc3MgSGVhcFZlcmlmaWVyOwpAQCAtNjksNiAr
NzcsNyBAQCBjbGFzcyBKSVRTdHViUm91dGluZTsKIGNsYXNzIEpJVFN0dWJSb3V0aW5lU2V0Owog
Y2xhc3MgSlNDZWxsOwogY2xhc3MgSlNJbW11dGFibGVCdXR0ZXJmbHk7CitjbGFzcyBKU1N0cmlu
ZzsKIGNsYXNzIEpTVmFsdWU7CiBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiBjbGFzcyBN
YWNoaW5lVGhyZWFkczsKQEAgLTcyOSw2ICs3MzgsMzE4IEBAIHByaXZhdGU6CiAgICAgYm9vbCBt
X3BhcmFsbGVsTWFya2Vyc1Nob3VsZEV4aXQgeyBmYWxzZSB9OwogICAgIExvY2sgbV9jb2xsZWN0
Q29udGludW91c2x5TG9jazsKICAgICBDb25kaXRpb24gbV9jb2xsZWN0Q29udGludW91c2x5Q29u
ZGl0aW9uOworCitwdWJsaWM6CisgICAgLy8gSGVhcENlbGxUeXBlcworICAgIEhlYXBDZWxsVHlw
ZSBhdXhpbGlhcnlIZWFwQ2VsbFR5cGU7CisgICAgSGVhcENlbGxUeXBlIGltbXV0YWJsZUJ1dHRl
cmZseUhlYXBDZWxsVHlwZTsKKyAgICBIZWFwQ2VsbFR5cGUgY2VsbEhlYXBDZWxsVHlwZTsKKyAg
ICBIZWFwQ2VsbFR5cGUgZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZTsKKyAgICBJc29IZWFw
Q2VsbFR5cGUgYXBpR2xvYmFsT2JqZWN0SGVhcENlbGxUeXBlOworICAgIElzb0hlYXBDZWxsVHlw
ZSBjYWxsYmFja0NvbnN0cnVjdG9ySGVhcENlbGxUeXBlOworICAgIElzb0hlYXBDZWxsVHlwZSBj
YWxsYmFja0dsb2JhbE9iamVjdEhlYXBDZWxsVHlwZTsKKyAgICBJc29IZWFwQ2VsbFR5cGUgY2Fs
bGJhY2tPYmplY3RIZWFwQ2VsbFR5cGU7CisgICAgSXNvSGVhcENlbGxUeXBlIGN1c3RvbUdldHRl
ckZ1bmN0aW9uSGVhcENlbGxUeXBlOworICAgIElzb0hlYXBDZWxsVHlwZSBjdXN0b21TZXR0ZXJG
dW5jdGlvbkhlYXBDZWxsVHlwZTsKKyAgICBJc29IZWFwQ2VsbFR5cGUgZGF0ZUluc3RhbmNlSGVh
cENlbGxUeXBlOworICAgIElzb0hlYXBDZWxsVHlwZSBlcnJvckluc3RhbmNlSGVhcENlbGxUeXBl
OworICAgIElzb0hlYXBDZWxsVHlwZSBmaW5hbGl6YXRpb25SZWdpc3RyeUNlbGxUeXBlOworICAg
IElzb0hlYXBDZWxsVHlwZSBnbG9iYWxMZXhpY2FsRW52aXJvbm1lbnRIZWFwQ2VsbFR5cGU7Cisg
ICAgSXNvSGVhcENlbGxUeXBlIGdsb2JhbE9iamVjdEhlYXBDZWxsVHlwZTsKKyAgICBJc29IZWFw
Q2VsbFR5cGUgaW5qZWN0ZWRTY3JpcHRIb3N0U3BhY2VIZWFwQ2VsbFR5cGU7CisgICAgSXNvSGVh
cENlbGxUeXBlIGphdmFTY3JpcHRDYWxsRnJhbWVIZWFwQ2VsbFR5cGU7CisgICAgSXNvSGVhcENl
bGxUeXBlIGpzTW9kdWxlUmVjb3JkSGVhcENlbGxUeXBlOworICAgIElzb0hlYXBDZWxsVHlwZSBt
b2R1bGVOYW1lc3BhY2VPYmplY3RIZWFwQ2VsbFR5cGU7CisgICAgSXNvSGVhcENlbGxUeXBlIG5h
dGl2ZVN0ZEZ1bmN0aW9uSGVhcENlbGxUeXBlOworICAgIElzb0lubGluZWRIZWFwQ2VsbFR5cGU8
SlNTdHJpbmc+IHN0cmluZ0hlYXBDZWxsVHlwZTsKKyAgICBJc29IZWFwQ2VsbFR5cGUgd2Vha01h
cEhlYXBDZWxsVHlwZTsKKyAgICBJc29IZWFwQ2VsbFR5cGUgd2Vha1NldEhlYXBDZWxsVHlwZTsK
KyAgICBKU0Rlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSBkZXN0cnVjdGlibGVPYmplY3RI
ZWFwQ2VsbFR5cGU7CisjaWYgSlNDX09CSkNfQVBJX0VOQUJMRUQKKyAgICBJc29IZWFwQ2VsbFR5
cGUgYXBpV3JhcHBlck9iamVjdEhlYXBDZWxsVHlwZTsKKyAgICBJc29IZWFwQ2VsbFR5cGUgb2Jq
Q0NhbGxiYWNrRnVuY3Rpb25IZWFwQ2VsbFR5cGU7CisjZW5kaWYKKyNpZmRlZiBKU0NfR0xJQl9B
UElfRU5BQkxFRAorICAgIElzb0hlYXBDZWxsVHlwZSBhcGlXcmFwcGVyT2JqZWN0SGVhcENlbGxU
eXBlOworICAgIElzb0hlYXBDZWxsVHlwZSBjYWxsYmFja0FQSVdyYXBwZXJHbG9iYWxPYmplY3RI
ZWFwQ2VsbFR5cGU7CisgICAgSXNvSGVhcENlbGxUeXBlIGpzY0NhbGxiYWNrRnVuY3Rpb25IZWFw
Q2VsbFR5cGU7CisjZW5kaWYKKyAgICBJc29IZWFwQ2VsbFR5cGUgaW50bENvbGxhdG9ySGVhcENl
bGxUeXBlOworICAgIElzb0hlYXBDZWxsVHlwZSBpbnRsRGF0ZVRpbWVGb3JtYXRIZWFwQ2VsbFR5
cGU7CisgICAgSXNvSGVhcENlbGxUeXBlIGludGxEaXNwbGF5TmFtZXNIZWFwQ2VsbFR5cGU7Cisg
ICAgSXNvSGVhcENlbGxUeXBlIGludGxMaXN0Rm9ybWF0SGVhcENlbGxUeXBlOworICAgIElzb0hl
YXBDZWxsVHlwZSBpbnRsTG9jYWxlSGVhcENlbGxUeXBlOworICAgIElzb0hlYXBDZWxsVHlwZSBp
bnRsTnVtYmVyRm9ybWF0SGVhcENlbGxUeXBlOworICAgIElzb0hlYXBDZWxsVHlwZSBpbnRsUGx1
cmFsUnVsZXNIZWFwQ2VsbFR5cGU7CisgICAgSXNvSGVhcENlbGxUeXBlIGludGxSZWxhdGl2ZVRp
bWVGb3JtYXRIZWFwQ2VsbFR5cGU7CisgICAgSXNvSGVhcENlbGxUeXBlIGludGxTZWdtZW50SXRl
cmF0b3JIZWFwQ2VsbFR5cGU7CisgICAgSXNvSGVhcENlbGxUeXBlIGludGxTZWdtZW50ZXJIZWFw
Q2VsbFR5cGU7CisgICAgSXNvSGVhcENlbGxUeXBlIGludGxTZWdtZW50c0hlYXBDZWxsVHlwZTsK
KyNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCisgICAgSXNvSGVhcENlbGxUeXBlIHdlYkFzc2VtYmx5
Q29kZUJsb2NrSGVhcENlbGxUeXBlOworICAgIElzb0hlYXBDZWxsVHlwZSB3ZWJBc3NlbWJseUV4
Y2VwdGlvbkhlYXBDZWxsVHlwZTsKKyAgICBJc29IZWFwQ2VsbFR5cGUgd2ViQXNzZW1ibHlGdW5j
dGlvbkhlYXBDZWxsVHlwZTsKKyAgICBJc29IZWFwQ2VsbFR5cGUgd2ViQXNzZW1ibHlHbG9iYWxI
ZWFwQ2VsbFR5cGU7CisgICAgSXNvSGVhcENlbGxUeXBlIHdlYkFzc2VtYmx5SW5zdGFuY2VIZWFw
Q2VsbFR5cGU7CisgICAgSXNvSGVhcENlbGxUeXBlIHdlYkFzc2VtYmx5TWVtb3J5SGVhcENlbGxU
eXBlOworICAgIElzb0hlYXBDZWxsVHlwZSB3ZWJBc3NlbWJseU1vZHVsZUhlYXBDZWxsVHlwZTsK
KyAgICBJc29IZWFwQ2VsbFR5cGUgd2ViQXNzZW1ibHlNb2R1bGVSZWNvcmRIZWFwQ2VsbFR5cGU7
CisgICAgSXNvSGVhcENlbGxUeXBlIHdlYkFzc2VtYmx5VGFibGVIZWFwQ2VsbFR5cGU7CisgICAg
SXNvSGVhcENlbGxUeXBlIHdlYkFzc2VtYmx5VGFnSGVhcENlbGxUeXBlOworI2VuZGlmCisKKyAg
ICAvLyBBbGlnbmVkTWVtb3J5QWxsb2NhdG9ycworICAgIHN0ZDo6dW5pcXVlX3B0cjxGYXN0TWFs
bG9jQWxpZ25lZE1lbW9yeUFsbG9jYXRvcj4gZmFzdE1hbGxvY0FsbG9jYXRvcjsKKyAgICBzdGQ6
OnVuaXF1ZV9wdHI8R2lnYWNhZ2VBbGlnbmVkTWVtb3J5QWxsb2NhdG9yPiBwcmltaXRpdmVHaWdh
Y2FnZUFsbG9jYXRvcjsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8R2lnYWNhZ2VBbGlnbmVkTWVtb3J5
QWxsb2NhdG9yPiBqc1ZhbHVlR2lnYWNhZ2VBbGxvY2F0b3I7CisKKyAgICAvLyBTdWJzcGFjZXMK
KyAgICBDb21wbGV0ZVN1YnNwYWNlIHByaW1pdGl2ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2U7IC8v
IFR5cGVkIGFycmF5cywgc3RyaW5ncywgYml0dmVjdG9ycywgZXRjIGdvIGhlcmUuCisgICAgQ29t
cGxldGVTdWJzcGFjZSBqc1ZhbHVlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZTsgLy8gQnV0dGVyZmxp
ZXMsIGFycmF5cyBvZiBKU1ZhbHVlcywgZXRjIGdvIGhlcmUuCisgICAgQ29tcGxldGVTdWJzcGFj
ZSBpbW11dGFibGVCdXR0ZXJmbHlKU1ZhbHVlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZTsgLy8gSlNJ
bW11dGFibGVCdXR0ZXJmbHkgZ29lcyBoZXJlLgorCisgICAgLy8gV2UgbWFrZSBjcm9zcy1jdXR0
aW5nIGFzc3VtcHRpb25zIGFib3V0IHR5cGVkIGFycmF5cyBiZWluZyBpbiB0aGUgcHJpbWl0aXZl
IEdpZ2FjYWdlIGFuZCBidXR0ZXJmbGllcworICAgIC8vIGJlaW5nIGluIHRoZSBKU1ZhbHVlIGdp
Z2FjYWdlLiBGb3Igc29tZSB0eXBlcywgaXQncyBzdXBlciBvYnZpb3VzIHdoZXJlIHRoZXkgc2hv
dWxkIGdvLCBhbmQgc28gd2UKKyAgICAvLyBjYW4gaGFyZGNvZGUgdGhhdCBmYWN0LiBCdXQgc29t
ZXRpbWVzIGl0J3Mgbm90IGNsZWFyLCBzbyB3ZSBhYnN0cmFjdCBpdCBieSBoYXZpbmcgYSBHaWdh
Y2FnZTo6S2luZAorICAgIC8vIGNvbnN0YW50IHNvbWV3aGVyZS4KKyAgICAvLyBGSVhNRTogTWF5
YmUgaXQgd291bGQgYmUgYmV0dGVyIGlmIGV2ZXJ5b25lIGFic3RyYWN0ZWQgdGhpcz8KKyAgICAv
LyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc1MjQ4CisgICAgQUxX
QVlTX0lOTElORSBDb21wbGV0ZVN1YnNwYWNlJiBnaWdhY2FnZUF1eGlsaWFyeVNwYWNlKEdpZ2Fj
YWdlOjpLaW5kIGtpbmQpCisgICAgeworICAgICAgICBzd2l0Y2ggKGtpbmQpIHsKKyAgICAgICAg
Y2FzZSBHaWdhY2FnZTo6UHJpbWl0aXZlOgorICAgICAgICAgICAgcmV0dXJuIHByaW1pdGl2ZUdp
Z2FjYWdlQXV4aWxpYXJ5U3BhY2U7CisgICAgICAgIGNhc2UgR2lnYWNhZ2U6OkpTVmFsdWU6Cisg
ICAgICAgICAgICByZXR1cm4ganNWYWx1ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2U7CisgICAgICAg
IGNhc2UgR2lnYWNhZ2U6Ok51bWJlck9mS2luZHM6CisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgfQorICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1
cm4gcHJpbWl0aXZlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZTsKKyAgICB9CisgICAgCisgICAgLy8g
V2hlbmV2ZXIgcG9zc2libGUsIHVzZSBzdWJzcGFjZUZvcjxDZWxsVHlwZT4odm0pIHRvIGdldCBv
bmUgb2YgdGhlc2Ugc3Vic3BhY2VzLgorICAgIENvbXBsZXRlU3Vic3BhY2UgY2VsbFNwYWNlOwor
ICAgIENvbXBsZXRlU3Vic3BhY2UgdmFyaWFibGVTaXplZENlbGxTcGFjZTsgLy8gRklYTUU6IFRo
aXMgc3BhY2UgaXMgcHJvYmxlbWF0aWMgYmVjYXVzZSB3ZSBoYXZlIHRoaW5ncyBpbiBoZXJlIGxp
a2UgRGlyZWN0QXJndW1lbnRzIGFuZCBTY29wZWRBcmd1bWVudHM7IHRob3NlIHNob3VsZCBiZSBz
cGxpdCBpbnRvIEpTVmFsdWVPT0IgY2VsbHMgYW5kIEpTVmFsdWVTdHJpY3QgYXV4aWxpYXJpZXMu
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODI4NTgKKyAgICBDb21w
bGV0ZVN1YnNwYWNlIGRlc3RydWN0aWJsZU9iamVjdFNwYWNlOworCisgICAgSXNvU3Vic3BhY2Ug
YXJyYXlTcGFjZTsKKyAgICBJc29TdWJzcGFjZSBiaWdJbnRTcGFjZTsKKyAgICBJc29TdWJzcGFj
ZSBjYWxsZWVTcGFjZTsKKyAgICBJc29TdWJzcGFjZSBjbG9uZWRBcmd1bWVudHNTcGFjZTsKKyAg
ICBJc29TdWJzcGFjZSBjdXN0b21HZXR0ZXJTZXR0ZXJTcGFjZTsKKyAgICBJc29TdWJzcGFjZSBk
YXRlSW5zdGFuY2VTcGFjZTsKKyAgICBJc29TdWJzcGFjZSBkb21BdHRyaWJ1dGVHZXR0ZXJTZXR0
ZXJTcGFjZTsKKyAgICBJc29TdWJzcGFjZSBleGNlcHRpb25TcGFjZTsKKyAgICBJc29TdWJzcGFj
ZSBleGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlU3BhY2U7CisgICAgSXNvU3Vic3BhY2UgZnVuY3Rp
b25TcGFjZTsKKyAgICBJc29TdWJzcGFjZSBnZXR0ZXJTZXR0ZXJTcGFjZTsKKyAgICBJc29TdWJz
cGFjZSBnbG9iYWxMZXhpY2FsRW52aXJvbm1lbnRTcGFjZTsKKyAgICBJc29TdWJzcGFjZSBpbnRl
cm5hbEZ1bmN0aW9uU3BhY2U7CisgICAgSXNvU3Vic3BhY2UganNQcm94eVNwYWNlOworICAgIElz
b1N1YnNwYWNlIG5hdGl2ZUV4ZWN1dGFibGVTcGFjZTsKKyAgICBJc29TdWJzcGFjZSBudW1iZXJP
YmplY3RTcGFjZTsKKyAgICBJc29TdWJzcGFjZSBwbGFpbk9iamVjdFNwYWNlOworICAgIElzb1N1
YnNwYWNlIHByb21pc2VTcGFjZTsKKyAgICBJc29TdWJzcGFjZSBwcm9wZXJ0eU5hbWVFbnVtZXJh
dG9yU3BhY2U7CisgICAgSXNvU3Vic3BhY2UgcHJvcGVydHlUYWJsZVNwYWNlOworICAgIElzb1N1
YnNwYWNlIHJlZ0V4cFNwYWNlOworICAgIElzb1N1YnNwYWNlIHJlZ0V4cE9iamVjdFNwYWNlOwor
ICAgIElzb1N1YnNwYWNlIHJvcGVTdHJpbmdTcGFjZTsKKyAgICBJc29TdWJzcGFjZSBzY29wZWRB
cmd1bWVudHNTcGFjZTsKKyAgICBJc29TdWJzcGFjZSBzcGFyc2VBcnJheVZhbHVlTWFwU3BhY2U7
CisgICAgSXNvU3Vic3BhY2Ugc3RyaW5nU3BhY2U7CisgICAgSXNvU3Vic3BhY2Ugc3RyaW5nT2Jq
ZWN0U3BhY2U7CisgICAgSXNvU3Vic3BhY2Ugc3RydWN0dXJlQ2hhaW5TcGFjZTsKKyAgICBJc29T
dWJzcGFjZSBzdHJ1Y3R1cmVSYXJlRGF0YVNwYWNlOworICAgIElzb1N1YnNwYWNlIHN0cnVjdHVy
ZVNwYWNlOworICAgIElzb1N1YnNwYWNlIGJyYW5kZWRTdHJ1Y3R1cmVTcGFjZTsKKyAgICBJc29T
dWJzcGFjZSBzeW1ib2xUYWJsZVNwYWNlOworCisjZGVmaW5lIERZTkFNSUNfSVNPX1NVQlNQQUNF
X0RFRklORV9NRU1CRVIobmFtZSkgXAorICAgIHRlbXBsYXRlPFN1YnNwYWNlQWNjZXNzIG1vZGU+
IFwKKyAgICBJc29TdWJzcGFjZSogbmFtZSgpIFwKKyAgICB7IFwKKyAgICAgICAgaWYgKG1fIyNu
YW1lIHx8IG1vZGUgPT0gU3Vic3BhY2VBY2Nlc3M6OkNvbmN1cnJlbnRseSkgXAorICAgICAgICAg
ICAgcmV0dXJuIG1fIyNuYW1lLmdldCgpOyBcCisgICAgICAgIHJldHVybiBuYW1lIyNTbG93KCk7
IFwKKyAgICB9IFwKKyAgICBKU19FWFBPUlRfUFJJVkFURSBJc29TdWJzcGFjZSogbmFtZSMjU2xv
dygpOyBcCisgICAgc3RkOjp1bmlxdWVfcHRyPElzb1N1YnNwYWNlPiBtXyMjbmFtZTsKKworCisj
aWYgSlNDX09CSkNfQVBJX0VOQUJMRUQKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVf
TUVNQkVSKGFwaVdyYXBwZXJPYmplY3RTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9E
RUZJTkVfTUVNQkVSKG9iakNDYWxsYmFja0Z1bmN0aW9uU3BhY2UpCisjZW5kaWYKKyNpZmRlZiBK
U0NfR0xJQl9BUElfRU5BQkxFRAorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1C
RVIoYXBpV3JhcHBlck9iamVjdFNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklO
RV9NRU1CRVIoanNjQ2FsbGJhY2tGdW5jdGlvblNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQ
QUNFX0RFRklORV9NRU1CRVIoY2FsbGJhY2tBUElXcmFwcGVyR2xvYmFsT2JqZWN0U3BhY2UpCisj
ZW5kaWYKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKGFwaUdsb2JhbE9i
amVjdFNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoYXBpVmFs
dWVXcmFwcGVyU3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihh
cnJheUJ1ZmZlclNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIo
YXJyYXlJdGVyYXRvclNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1C
RVIoYXN5bmNHZW5lcmF0b3JTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVf
TUVNQkVSKGJpZ0ludDY0QXJyYXlTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJ
TkVfTUVNQkVSKGJpZ0ludE9iamVjdFNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RF
RklORV9NRU1CRVIoYmlnVWludDY0QXJyYXlTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFD
RV9ERUZJTkVfTUVNQkVSKGJvb2xlYW5PYmplY3RTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJT
UEFDRV9ERUZJTkVfTUVNQkVSKGJvdW5kRnVuY3Rpb25TcGFjZSkKKyAgICBEWU5BTUlDX0lTT19T
VUJTUEFDRV9ERUZJTkVfTUVNQkVSKGNhbGxiYWNrQ29uc3RydWN0b3JTcGFjZSkKKyAgICBEWU5B
TUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKGNhbGxiYWNrR2xvYmFsT2JqZWN0U3BhY2Up
CisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihjYWxsYmFja0Z1bmN0aW9u
U3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihjYWxsYmFja09i
amVjdFNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoY3VzdG9t
R2V0dGVyRnVuY3Rpb25TcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVN
QkVSKGN1c3RvbVNldHRlckZ1bmN0aW9uU3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0Vf
REVGSU5FX01FTUJFUihkYXRhVmlld1NwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RF
RklORV9NRU1CRVIoZGVidWdnZXJTY29wZVNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNF
X0RFRklORV9NRU1CRVIoZXJyb3JJbnN0YW5jZVNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQ
QUNFX0RFRklORV9NRU1CRVIoZmxvYXQzMkFycmF5U3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VC
U1BBQ0VfREVGSU5FX01FTUJFUihmbG9hdDY0QXJyYXlTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19T
VUJTUEFDRV9ERUZJTkVfTUVNQkVSKGZ1bmN0aW9uUmFyZURhdGFTcGFjZSkKKyAgICBEWU5BTUlD
X0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKGdlbmVyYXRvclNwYWNlKQorICAgIERZTkFNSUNf
SVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoZ2xvYmFsT2JqZWN0U3BhY2UpCisgICAgRFlOQU1J
Q19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihpbmplY3RlZFNjcmlwdEhvc3RTcGFjZSkKKyAg
ICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKGludDhBcnJheVNwYWNlKQorICAg
IERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoaW50MTZBcnJheVNwYWNlKQorICAg
IERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoaW50MzJBcnJheVNwYWNlKQorICAg
IERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoamF2YVNjcmlwdENhbGxGcmFtZVNw
YWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoanNNb2R1bGVSZWNv
cmRTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKG1hcEJ1Y2tl
dFNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIobWFwSXRlcmF0
b3JTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKG1hcFNwYWNl
KQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIobW9kdWxlTmFtZXNwYWNl
T2JqZWN0U3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihuYXRp
dmVTdGRGdW5jdGlvblNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1C
RVIocHJveHlPYmplY3RTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVN
QkVSKHByb3h5UmV2b2tlU3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01F
TUJFUihzY29wZWRBcmd1bWVudHNUYWJsZVNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNF
X0RFRklORV9NRU1CRVIoc2NyaXB0RmV0Y2hQYXJhbWV0ZXJzU3BhY2UpCisgICAgRFlOQU1JQ19J
U09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihzY3JpcHRGZXRjaGVyU3BhY2UpCisgICAgRFlOQU1J
Q19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihzZXRCdWNrZXRTcGFjZSkKKyAgICBEWU5BTUlD
X0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKHNldEl0ZXJhdG9yU3BhY2UpCisgICAgRFlOQU1J
Q19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihzZXRTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19T
VUJTUEFDRV9ERUZJTkVfTUVNQkVSKHNoYWRvd1JlYWxtU3BhY2UpOworICAgIERZTkFNSUNfSVNP
X1NVQlNQQUNFX0RFRklORV9NRU1CRVIoc3RyaWN0RXZhbEFjdGl2YXRpb25TcGFjZSkKKyAgICBE
WU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKHN0cmluZ0l0ZXJhdG9yU3BhY2UpCisg
ICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihzb3VyY2VDb2RlU3BhY2UpCisg
ICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihzeW1ib2xTcGFjZSkKKyAgICBE
WU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKHN5bWJvbE9iamVjdFNwYWNlKQorICAg
IERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIodGVtcGxhdGVPYmplY3REZXNjcmlw
dG9yU3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUih0ZW1wb3Jh
bENhbGVuZGFyU3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUih0
ZW1wb3JhbER1cmF0aW9uU3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01F
TUJFUih0ZW1wb3JhbEluc3RhbnRTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJ
TkVfTUVNQkVSKHRlbXBvcmFsUGxhaW5UaW1lU3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BB
Q0VfREVGSU5FX01FTUJFUih0ZW1wb3JhbFRpbWVab25lU3BhY2UpCisgICAgRFlOQU1JQ19JU09f
U1VCU1BBQ0VfREVGSU5FX01FTUJFUih1aW50OEFycmF5U3BhY2UpCisgICAgRFlOQU1JQ19JU09f
U1VCU1BBQ0VfREVGSU5FX01FTUJFUih1aW50OENsYW1wZWRBcnJheVNwYWNlKQorICAgIERZTkFN
SUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIodWludDE2QXJyYXlTcGFjZSkKKyAgICBEWU5B
TUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKHVpbnQzMkFycmF5U3BhY2UpCisgICAgRFlO
QU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUih1bmxpbmtlZEV2YWxDb2RlQmxvY2tTcGFj
ZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKHVubGlua2VkRnVuY3Rp
b25Db2RlQmxvY2tTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVS
KHVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9ja1NwYWNlKQorICAgIERZTkFNSUNfSVNPX1NV
QlNQQUNFX0RFRklORV9NRU1CRVIodW5saW5rZWRQcm9ncmFtQ29kZUJsb2NrU3BhY2UpCisgICAg
RFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihmaW5hbGl6YXRpb25SZWdpc3RyeVNw
YWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIod2Vha09iamVjdFJl
ZlNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIod2Vha1NldFNw
YWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIod2Vha01hcFNwYWNl
KQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIod2l0aFNjb3BlU3BhY2Up
CisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihpbnRsQ29sbGF0b3JTcGFj
ZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKGludGxEYXRlVGltZUZv
cm1hdFNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoaW50bERp
c3BsYXlOYW1lc1NwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIo
aW50bExpc3RGb3JtYXRTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVN
QkVSKGludGxMb2NhbGVTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVN
QkVSKGludGxOdW1iZXJGb3JtYXRTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJ
TkVfTUVNQkVSKGludGxQbHVyYWxSdWxlc1NwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNF
X0RFRklORV9NRU1CRVIoaW50bFJlbGF0aXZlVGltZUZvcm1hdFNwYWNlKQorICAgIERZTkFNSUNf
SVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoaW50bFNlZ21lbnRJdGVyYXRvclNwYWNlKQorICAg
IERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoaW50bFNlZ21lbnRlclNwYWNlKQor
ICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoaW50bFNlZ21lbnRzU3BhY2Up
CisjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklO
RV9NRU1CRVIoanNUb1dhc21JQ0NhbGxlZVNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNF
X0RFRklORV9NRU1CRVIod2ViQXNzZW1ibHlDb2RlQmxvY2tTcGFjZSkKKyAgICBEWU5BTUlDX0lT
T19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKHdlYkFzc2VtYmx5RXhjZXB0aW9uU3BhY2UpCisgICAg
RFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUih3ZWJBc3NlbWJseUZ1bmN0aW9uU3Bh
Y2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUih3ZWJBc3NlbWJseUds
b2JhbFNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIod2ViQXNz
ZW1ibHlJbnN0YW5jZVNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1C
RVIod2ViQXNzZW1ibHlNZW1vcnlTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJ
TkVfTUVNQkVSKHdlYkFzc2VtYmx5TW9kdWxlU3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BB
Q0VfREVGSU5FX01FTUJFUih3ZWJBc3NlbWJseU1vZHVsZVJlY29yZFNwYWNlKQorICAgIERZTkFN
SUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIod2ViQXNzZW1ibHlUYWJsZVNwYWNlKQorICAg
IERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIod2ViQXNzZW1ibHlUYWdTcGFjZSkK
KyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKHdlYkFzc2VtYmx5V3JhcHBl
ckZ1bmN0aW9uU3BhY2UpCisjZW5kaWYKKworI3VuZGVmIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RF
RklORV9NRU1CRVIKKyAgICAKKyAgICBJc29DZWxsU2V0IGV4ZWN1dGFibGVUb0NvZGVCbG9ja0Vk
Z2VzV2l0aENvbnN0cmFpbnRzOworICAgIElzb0NlbGxTZXQgZXhlY3V0YWJsZVRvQ29kZUJsb2Nr
RWRnZXNXaXRoRmluYWxpemVyczsKKworI2RlZmluZSBEWU5BTUlDX1NQQUNFX0FORF9TRVRfREVG
SU5FX01FTUJFUihuYW1lKSBcCisgICAgdGVtcGxhdGU8U3Vic3BhY2VBY2Nlc3MgbW9kZT4gXAor
ICAgIElzb1N1YnNwYWNlKiBuYW1lKCkgXAorICAgIHsgXAorICAgICAgICBpZiAoYXV0byogc3Bh
Y2VBbmRTZXQgPSBtXyMjbmFtZS5nZXQoKSkgXAorICAgICAgICAgICAgcmV0dXJuICZzcGFjZUFu
ZFNldC0+c3BhY2U7IFwKKyAgICAgICAgaWYgKG1vZGUgPT0gU3Vic3BhY2VBY2Nlc3M6OkNvbmN1
cnJlbnRseSkgXAorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7IFwKKyAgICAgICAgcmV0dXJu
IG5hbWUjI1Nsb3coKTsgXAorICAgIH0gXAorICAgIElzb1N1YnNwYWNlKiBuYW1lIyNTbG93KCk7
IFwKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8U3BhY2VBbmRTZXQ+IG1fIyNuYW1lOworICAgIAorICAg
IHN0cnVjdCBTcGFjZUFuZFNldCB7CisgICAgICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9D
QVRFRDsKKworICAgICAgICBJc29TdWJzcGFjZSBzcGFjZTsKKyAgICAgICAgSXNvQ2VsbFNldCBz
ZXQ7CisgICAgICAgIAorICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBBcmd1bWVudHM+Cisg
ICAgICAgIFNwYWNlQW5kU2V0KEFyZ3VtZW50cyYmLi4uIGFyZ3VtZW50cykKKyAgICAgICAgICAg
IDogc3BhY2Uoc3RkOjpmb3J3YXJkPEFyZ3VtZW50cz4oYXJndW1lbnRzKS4uLikKKyAgICAgICAg
ICAgICwgc2V0KHNwYWNlKQorICAgICAgICB7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAg
IHN0YXRpYyBJc29DZWxsU2V0JiBzZXRGb3IoU3Vic3BhY2UmIHNwYWNlKQorICAgICAgICB7Cisg
ICAgICAgICAgICByZXR1cm4gKmJpdHdpc2VfY2FzdDxJc29DZWxsU2V0Kj4oCisgICAgICAgICAg
ICAgICAgYml0d2lzZV9jYXN0PGNoYXIqPigmc3BhY2UpIC0KKyAgICAgICAgICAgICAgICBPQkpF
Q1RfT0ZGU0VUT0YoU3BhY2VBbmRTZXQsIHNwYWNlKSArCisgICAgICAgICAgICAgICAgT0JKRUNU
X09GRlNFVE9GKFNwYWNlQW5kU2V0LCBzZXQpKTsKKyAgICAgICAgfQorICAgIH07CisgICAgCisg
ICAgU3BhY2VBbmRTZXQgY29kZUJsb2NrU3BhY2U7CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBG
dW5jPgorICAgIHZvaWQgZm9yRWFjaENvZGVCbG9ja1NwYWNlKGNvbnN0IEZ1bmMmIGZ1bmMpCisg
ICAgeworICAgICAgICAvLyBUaGlzIHNob3VsZCBub3QgaW5jbHVkZSB3ZWJBc3NlbWJseUNvZGVC
bG9ja1NwYWNlIGJlY2F1c2UgdGhpcyBpcyBhYm91dCBzdWJzY2xhc3NlcyBvZgorICAgICAgICAv
LyBKU0M6OkNvZGVCbG9jay4KKyAgICAgICAgZnVuYyhjb2RlQmxvY2tTcGFjZSk7CisgICAgfQor
CisgICAgRFlOQU1JQ19TUEFDRV9BTkRfU0VUX0RFRklORV9NRU1CRVIoZXZhbEV4ZWN1dGFibGVT
cGFjZSkKKyAgICBEWU5BTUlDX1NQQUNFX0FORF9TRVRfREVGSU5FX01FTUJFUihtb2R1bGVQcm9n
cmFtRXhlY3V0YWJsZVNwYWNlKQorICAgIFNwYWNlQW5kU2V0IGZ1bmN0aW9uRXhlY3V0YWJsZVNw
YWNlOworICAgIFNwYWNlQW5kU2V0IHByb2dyYW1FeGVjdXRhYmxlU3BhY2U7CisKKyAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBGdW5jPgorICAgIHZvaWQgZm9yRWFjaFNjcmlwdEV4ZWN1dGFibGVTcGFj
ZShjb25zdCBGdW5jJiBmdW5jKQorICAgIHsKKyAgICAgICAgaWYgKG1fZXZhbEV4ZWN1dGFibGVT
cGFjZSkKKyAgICAgICAgICAgIGZ1bmMoKm1fZXZhbEV4ZWN1dGFibGVTcGFjZSk7CisgICAgICAg
IGZ1bmMoZnVuY3Rpb25FeGVjdXRhYmxlU3BhY2UpOworICAgICAgICBpZiAobV9tb2R1bGVQcm9n
cmFtRXhlY3V0YWJsZVNwYWNlKQorICAgICAgICAgICAgZnVuYygqbV9tb2R1bGVQcm9ncmFtRXhl
Y3V0YWJsZVNwYWNlKTsKKyAgICAgICAgZnVuYyhwcm9ncmFtRXhlY3V0YWJsZVNwYWNlKTsKKyAg
ICB9CisKKyAgICBTcGFjZUFuZFNldCB1bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZVNwYWNlOwor
CisjdW5kZWYgRFlOQU1JQ19TUEFDRV9BTkRfU0VUX0RFRklORV9NRU1CRVIKIH07CiAKIH0gLy8g
bmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSXNvSGVhcENl
bGxUeXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSXNvSGVh
cENlbGxUeXBlLmgJKHJldmlzaW9uIDI4NjA0MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL0lzb0hlYXBDZWxsVHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw2ICszOCwyMiBAQCBw
dWJsaWM6CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgSXNvSGVhcENlbGxUeXBlKERlc3RydWN0aW9u
TW9kZSwgRGVzdHJveUZ1bmN0aW9uUHRyKTsKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxU
eXBlPgorICAgIHN0cnVjdCBBcmdzIHsKKyAgICAgICAgQXJncygpCisgICAgICAgICAgICA6IG1v
ZGUoQ2VsbFR5cGU6Om5lZWRzRGVzdHJ1Y3Rpb24gPyBOZWVkc0Rlc3RydWN0aW9uIDogRG9lc05v
dE5lZWREZXN0cnVjdGlvbikKKyAgICAgICAgICAgICwgZnVuY3Rpb25QdHIoJkNlbGxUeXBlOjpk
ZXN0cm95KQorICAgICAgICB7IH0KKworICAgICAgICBEZXN0cnVjdGlvbk1vZGUgbW9kZTsKKyAg
ICAgICAgRGVzdHJveUZ1bmN0aW9uUHRyIGZ1bmN0aW9uUHRyOworICAgIH07CisKKyAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBDZWxsVHlwZT4KKyAgICBJc29IZWFwQ2VsbFR5cGUoQXJnczxDZWxsVHlw
ZT4mJiBhcmdzKQorICAgICAgICA6IElzb0hlYXBDZWxsVHlwZShhcmdzLm1vZGUsIGFyZ3MuZnVu
Y3Rpb25QdHIpCisgICAgeyB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZT4KICAg
ICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPElzb0hlYXBDZWxsVHlwZT4gY3JlYXRlKCkKICAgICB7
CiAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPElzb0hlYXBDZWxsVHlwZT4oQ2VsbFR5cGU6Om5l
ZWRzRGVzdHJ1Y3Rpb24gPyBOZWVkc0Rlc3RydWN0aW9uIDogRG9lc05vdE5lZWREZXN0cnVjdGlv
biwgJkNlbGxUeXBlOjpkZXN0cm95KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L0lzb1N1YnNwYWNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
SXNvU3Vic3BhY2UuaAkocmV2aXNpb24gMjg2MDQzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvSXNvU3Vic3BhY2UuaAkod29ya2luZyBjb3B5KQpAQCAtNTQsNyArNTQsNyBAQCBwdWJs
aWM6CiAgICAgdm9pZCogdHJ5QWxsb2NhdGVGcm9tTG93ZXJUaWVyKCk7CiAgICAgdm9pZCBkZXN0
cm95TG93ZXJUaWVyRnJlZUxpc3QoKTsKIAotICAgIHZvaWQgc3dlZXAoKTsKKyAgICB2b2lkIHN3
ZWVwMygpOwogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuYz4gdm9pZCBmb3JFYWNoTG93ZXJU
aWVyRnJlZUxpc3RlZFByZWNpc2VBbGxvY2F0aW9uKGNvbnN0IEZ1bmMmKTsKIApJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSXNvU3Vic3BhY2VJbmxpbmVzLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSXNvU3Vic3BhY2VJbmxpbmVzLmgJKHJldmlz
aW9uIDI4NjA0MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lzb1N1YnNwYWNlSW5s
aW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC00NCw3ICs0NCw3IEBAIGlubGluZSB2b2lkIElzb1N1
YnNwYWNlOjpjbGVhcklzb0NlbGxTZXQKICAgICAgICAgfSk7CiB9CiAKLWlubGluZSB2b2lkIElz
b1N1YnNwYWNlOjpzd2VlcCgpCitpbmxpbmUgdm9pZCBJc29TdWJzcGFjZTo6c3dlZXAzKCkKIHsK
ICAgICBTdWJzcGFjZTo6c3dlZXBCbG9ja3MoKTsKICAgICAvLyBXZSBzd2VlcCBwcmVjaXNlLWFs
bG9jYXRpb25zIGVhZ2VybHksIGJ1dCB3ZSBkbyBub3QgZnJlZSBpdCBpbW1lZGlhdGVseS4KSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrSW5saW5lcy5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrSW5saW5lcy5o
CShyZXZpc2lvbiAyODYwNDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRC
bG9ja0lubGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTYtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTYtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIxMyw3ICsyMTMsNyBAQCBpbmxpbmUg
Ym9vbCBNYXJrZWRCbG9jazo6SGFuZGxlOjphcmVNYXJrCiAvLyBzd2VlcE1vZGUgPT0gU3dlZXBU
b0ZyZWVMaXN0CiAvLyBzY3JpYmJsZU1vZGUgPT0gRG9udFNjcmliYmxlCiAvLyBuZXdseUFsbG9j
YXRlZE1vZGUgPT0gRG9lc05vdEhhdmVOZXdseUFsbG9jYXRlZAotLy8gZGVzdHJ1Y3Rpb25Nb2Rl
ICE9IEJsb2NrSGFzRGVzdHJpY3RvcnNBbmRDb2xsZWN0b3JJc1J1bm5pbmcKKy8vIGRlc3RydWN0
aW9uTW9kZSAhPSBCbG9ja0hhc0Rlc3RydWN0b3JzQW5kQ29sbGVjdG9ySXNSdW5uaW5nCiAvLwog
Ly8gZW1wdHlNb2RlID0gSXNFbXB0eQogLy8gICAgIGRlc3RydWN0aW9uTW9kZSA9IERvZXNOb3RO
ZWVkRGVzdHJ1Y3Rpb24KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNJ
bmplY3RlZFNjcmlwdEhvc3RQcm90b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL0pTSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBlLmgJKHJldmlz
aW9uIDI4NjA0MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNJbmplY3Rl
ZFNjcmlwdEhvc3RQcm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtNDAsNyArNDAsNyBAQCBw
dWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0m
IHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUo
SlNJbmplY3RlZFNjcmlwdEhvc3RQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZt
LnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgp
OwogICAgIH0KIAogICAgIERFQ0xBUkVfSU5GTzsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3IvSlNKYXZhU2NyaXB0Q2FsbEZyYW1lUHJvdG90eXBlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0phdmFTY3JpcHRDYWxsRnJhbWVQ
cm90b3R5cGUuaAkocmV2aXNpb24gMjg2MDQzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9KU0phdmFTY3JpcHRDYWxsRnJhbWVQcm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpA
QCAtNDAsNyArNDAsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1
YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09f
U1VCU1BBQ0VfU0hBUkFCTEUoSlNKYXZhU2NyaXB0Q2FsbEZyYW1lUHJvdG90eXBlLCBCYXNlKTsK
LSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZt
LnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBERUNMQVJFX0lORk87CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BZ2dyZWdhdGVFcnJvclByb3RvdHlwZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FnZ3JlZ2F0ZUVycm9y
UHJvdG90eXBlLmgJKHJldmlzaW9uIDI4NjA0MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0FnZ3JlZ2F0ZUVycm9yUHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDcg
KzQ0LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0m
IHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUo
QWdncmVnYXRlRXJyb3JQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWlu
T2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAg
IH0KIAogICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlJdGVyYXRvclByb3RvdHlwZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5SXRlcmF0b3JQcm90b3R5
cGUuaAkocmV2aXNpb24gMjg2MDQzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
QXJyYXlJdGVyYXRvclByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw3ICszOCw3IEBA
IHB1YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAg
ICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEFycmF5SXRl
cmF0b3JQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3Bh
Y2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAg
IHN0YXRpYyBBcnJheUl0ZXJhdG9yUHJvdG90eXBlKiBjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0FzeW5jRnJvbVN5bmNJdGVyYXRvclByb3RvdHlwZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FzeW5jRnJvbVN5bmNJ
dGVyYXRvclByb3RvdHlwZS5oCShyZXZpc2lvbiAyODYwNDMpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Bc3luY0Zyb21TeW5jSXRlcmF0b3JQcm90b3R5cGUuaAkod29ya2luZyBj
b3B5KQpAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTctMjAxOSBPbGVr
c2FuZHIgU2thY2hrb3YgPGdza2FjaGtvdkBnbWFpbC5jb20+LgorICogQ29weXJpZ2h0IChDKSAy
MDIxIEFwcGxlLCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTM3LDcgKzM4LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJc29TdWJz
cGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9J
U09fU1VCU1BBQ0VfU0hBUkFCTEUoQXN5bmNGcm9tU3luY0l0ZXJhdG9yUHJvdG90eXBlLCBCYXNl
KTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4g
JnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBERUNMQVJFX0lORk87CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bc3luY0Z1bmN0aW9uUHJvdG90eXBlLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXN5bmNGdW5jdGlv
blByb3RvdHlwZS5oCShyZXZpc2lvbiAyODYwNDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Bc3luY0Z1bmN0aW9uUHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM4LDcg
KzM4LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0m
IHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUo
QXN5bmNGdW5jdGlvblByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5P
YmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAg
fQogCiAgICAgREVDTEFSRV9JTkZPOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQXN5bmNHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FzeW5jR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUu
aAkocmV2aXNpb24gMjg2MDQzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXN5
bmNHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw3ICsz
OCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2
bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEFz
eW5jR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZt
LnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgp
OwogICAgIH0KIAogICAgIERFQ0xBUkVfSU5GTzsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0FzeW5jR2VuZXJhdG9yUHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXN5bmNHZW5lcmF0b3JQcm90b3R5cGUuaAkocmV2aXNp
b24gMjg2MDQzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXN5bmNHZW5lcmF0
b3JQcm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtNDEsNyArNDEsNyBAQCBwdWJsaWM6CiAg
ICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewogICAgICAg
ICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShBc3luY0dlbmVyYXRvclByb3Rv
dHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAg
ICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIEFz
eW5jR2VuZXJhdG9yUHJvdG90eXBlKiBjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCosIFN0
cnVjdHVyZSogc3RydWN0dXJlKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
QXN5bmNJdGVyYXRvclByb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0FzeW5jSXRlcmF0b3JQcm90b3R5cGUuaAkocmV2aXNpb24gMjg2MDQzKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXN5bmNJdGVyYXRvclByb3RvdHlwZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC0zOSw3ICszOSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNv
U3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NF
UlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEFzeW5jSXRlcmF0b3JQcm90b3R5cGUsIEJhc2UpOwot
ICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0u
cGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBBc3luY0l0ZXJhdG9yUHJv
dG90eXBlKiBjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0F0
b21pY3NPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9BdG9taWNzT2JqZWN0LmgJKHJldmlzaW9uIDI4NjA0MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0F0b21pY3NPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUg
QEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM3LDcgKzM3
LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZt
KQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoQXRv
bWljc09iamVjdCwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsK
KyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIAogICAg
IHN0YXRpYyBBdG9taWNzT2JqZWN0KiBjcmVhdGUoVk0mLCBKU0dsb2JhbE9iamVjdCosIFN0cnVj
dHVyZSopOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQmlnSW50UHJvdG90
eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQmlnSW50
UHJvdG90eXBlLmgJKHJldmlzaW9uIDI4NjA0MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0JpZ0ludFByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw3ICszOSw3IEBA
IHB1YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAg
ICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEJpZ0ludFBy
b3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAg
ICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGlj
IEJpZ0ludFByb3RvdHlwZSogY3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9CcmFuZGVkU3RydWN0dXJlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQnJhbmRlZFN0cnVjdHVyZS5oCShyZXZpc2lvbiAyODYwNDMpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9CcmFuZGVkU3RydWN0dXJlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTQ3LDcgKzQ3LDcgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENl
bGxUeXBlLCBTdWJzcGFjZUFjY2Vzcz4KICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNl
Rm9yKFZNJiB2bSkKICAgICB7Ci0gICAgICAgIHJldHVybiAmdm0uYnJhbmRlZFN0cnVjdHVyZVNw
YWNlOworICAgICAgICByZXR1cm4gJnZtLmJyYW5kZWRTdHJ1Y3R1cmVTcGFjZSgpOwogICAgIH0K
IAogICAgIEFMV0FZU19JTkxJTkUgYm9vbCBjaGVja0JyYW5kKFN5bWJvbCogYnJhbmQpCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9CdXR0ZXJmbHlJbmxpbmVzLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQnV0dGVyZmx5SW5saW5lcy5o
CShyZXZpc2lvbiAyODYwNDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9CdXR0
ZXJmbHlJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTc3LDcgKzc3LDcgQEAgQUxXQVlTX0lO
TElORSB1bnNpZ25lZCBCdXR0ZXJmbHk6Om9wdGltYQogaW5saW5lIEJ1dHRlcmZseSogQnV0dGVy
Zmx5Ojp0cnlDcmVhdGVVbmluaXRpYWxpemVkKFZNJiB2bSwgSlNPYmplY3QqLCBzaXplX3QgcHJl
Q2FwYWNpdHksIHNpemVfdCBwcm9wZXJ0eUNhcGFjaXR5LCBib29sIGhhc0luZGV4aW5nSGVhZGVy
LCBzaXplX3QgaW5kZXhpbmdQYXlsb2FkU2l6ZUluQnl0ZXMsIEdDRGVmZXJyYWxDb250ZXh0KiBk
ZWZlcnJhbENvbnRleHQpCiB7CiAgICAgc2l6ZV90IHNpemUgPSB0b3RhbFNpemUocHJlQ2FwYWNp
dHksIHByb3BlcnR5Q2FwYWNpdHksIGhhc0luZGV4aW5nSGVhZGVyLCBpbmRleGluZ1BheWxvYWRT
aXplSW5CeXRlcyk7Ci0gICAgdm9pZCogYmFzZSA9IHZtLmpzVmFsdWVHaWdhY2FnZUF1eGlsaWFy
eVNwYWNlLmFsbG9jYXRlTm9uVmlydHVhbCh2bSwgc2l6ZSwgZGVmZXJyYWxDb250ZXh0LCBBbGxv
Y2F0aW9uRmFpbHVyZU1vZGU6OlJldHVybk51bGwpOworICAgIHZvaWQqIGJhc2UgPSB2bS5qc1Zh
bHVlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZSgpLmFsbG9jYXRlTm9uVmlydHVhbCh2bSwgc2l6ZSwg
ZGVmZXJyYWxDb250ZXh0LCBBbGxvY2F0aW9uRmFpbHVyZU1vZGU6OlJldHVybk51bGwpOwogICAg
IGlmIChVTkxJS0VMWSghYmFzZSkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCkBAIC04OSw3
ICs4OSw3IEBAIGlubGluZSBCdXR0ZXJmbHkqIEJ1dHRlcmZseTo6dHJ5Q3JlYXRlVW4KIGlubGlu
ZSBCdXR0ZXJmbHkqIEJ1dHRlcmZseTo6Y3JlYXRlVW5pbml0aWFsaXplZChWTSYgdm0sIEpTT2Jq
ZWN0Kiwgc2l6ZV90IHByZUNhcGFjaXR5LCBzaXplX3QgcHJvcGVydHlDYXBhY2l0eSwgYm9vbCBo
YXNJbmRleGluZ0hlYWRlciwgc2l6ZV90IGluZGV4aW5nUGF5bG9hZFNpemVJbkJ5dGVzKQogewog
ICAgIHNpemVfdCBzaXplID0gdG90YWxTaXplKHByZUNhcGFjaXR5LCBwcm9wZXJ0eUNhcGFjaXR5
LCBoYXNJbmRleGluZ0hlYWRlciwgaW5kZXhpbmdQYXlsb2FkU2l6ZUluQnl0ZXMpOwotICAgIHZv
aWQqIGJhc2UgPSB2bS5qc1ZhbHVlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZS5hbGxvY2F0ZU5vblZp
cnR1YWwodm0sIHNpemUsIG51bGxwdHIsIEFsbG9jYXRpb25GYWlsdXJlTW9kZTo6QXNzZXJ0KTsK
KyAgICB2b2lkKiBiYXNlID0gdm0uanNWYWx1ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UoKS5hbGxv
Y2F0ZU5vblZpcnR1YWwodm0sIHNpemUsIG51bGxwdHIsIEFsbG9jYXRpb25GYWlsdXJlTW9kZTo6
QXNzZXJ0KTsKICAgICBCdXR0ZXJmbHkqIHJlc3VsdCA9IGZyb21CYXNlKGJhc2UsIHByZUNhcGFj
aXR5LCBwcm9wZXJ0eUNhcGFjaXR5KTsKIAogICAgIHJldHVybiByZXN1bHQ7CkBAIC05OCw3ICs5
OCw3IEBAIGlubGluZSBCdXR0ZXJmbHkqIEJ1dHRlcmZseTo6Y3JlYXRlVW5pbmkKIGlubGluZSBC
dXR0ZXJmbHkqIEJ1dHRlcmZseTo6dHJ5Q3JlYXRlKFZNJiB2bSwgSlNPYmplY3QqLCBzaXplX3Qg
cHJlQ2FwYWNpdHksIHNpemVfdCBwcm9wZXJ0eUNhcGFjaXR5LCBib29sIGhhc0luZGV4aW5nSGVh
ZGVyLCBjb25zdCBJbmRleGluZ0hlYWRlciYgaW5kZXhpbmdIZWFkZXIsIHNpemVfdCBpbmRleGlu
Z1BheWxvYWRTaXplSW5CeXRlcykKIHsKICAgICBzaXplX3Qgc2l6ZSA9IHRvdGFsU2l6ZShwcmVD
YXBhY2l0eSwgcHJvcGVydHlDYXBhY2l0eSwgaGFzSW5kZXhpbmdIZWFkZXIsIGluZGV4aW5nUGF5
bG9hZFNpemVJbkJ5dGVzKTsKLSAgICB2b2lkKiBiYXNlID0gdm0uanNWYWx1ZUdpZ2FjYWdlQXV4
aWxpYXJ5U3BhY2UuYWxsb2NhdGVOb25WaXJ0dWFsKHZtLCBzaXplLCBudWxscHRyLCBBbGxvY2F0
aW9uRmFpbHVyZU1vZGU6OlJldHVybk51bGwpOworICAgIHZvaWQqIGJhc2UgPSB2bS5qc1ZhbHVl
R2lnYWNhZ2VBdXhpbGlhcnlTcGFjZSgpLmFsbG9jYXRlTm9uVmlydHVhbCh2bSwgc2l6ZSwgbnVs
bHB0ciwgQWxsb2NhdGlvbkZhaWx1cmVNb2RlOjpSZXR1cm5OdWxsKTsKICAgICBpZiAoIWJhc2Up
CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIEJ1dHRlcmZseSogcmVzdWx0ID0gZnJvbUJh
c2UoYmFzZSwgcHJlQ2FwYWNpdHksIHByb3BlcnR5Q2FwYWNpdHkpOwpAQCAtMTc0LDcgKzE3NCw3
IEBAIGlubGluZSBCdXR0ZXJmbHkqIEJ1dHRlcmZseTo6Z3Jvd0FycmF5UmkKICAgICB2b2lkKiB0
aGVCYXNlID0gYmFzZSgwLCBwcm9wZXJ0eUNhcGFjaXR5KTsKICAgICBzaXplX3Qgb2xkU2l6ZSA9
IHRvdGFsU2l6ZSgwLCBwcm9wZXJ0eUNhcGFjaXR5LCBoYWRJbmRleGluZ0hlYWRlciwgb2xkSW5k
ZXhpbmdQYXlsb2FkU2l6ZUluQnl0ZXMpOwogICAgIHNpemVfdCBuZXdTaXplID0gdG90YWxTaXpl
KDAsIHByb3BlcnR5Q2FwYWNpdHksIHRydWUsIG5ld0luZGV4aW5nUGF5bG9hZFNpemVJbkJ5dGVz
KTsKLSAgICB2b2lkKiBuZXdCYXNlID0gdm0uanNWYWx1ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2Uu
YWxsb2NhdGVOb25WaXJ0dWFsKHZtLCBuZXdTaXplLCBudWxscHRyLCBBbGxvY2F0aW9uRmFpbHVy
ZU1vZGU6OlJldHVybk51bGwpOworICAgIHZvaWQqIG5ld0Jhc2UgPSB2bS5qc1ZhbHVlR2lnYWNh
Z2VBdXhpbGlhcnlTcGFjZSgpLmFsbG9jYXRlTm9uVmlydHVhbCh2bSwgbmV3U2l6ZSwgbnVsbHB0
ciwgQWxsb2NhdGlvbkZhaWx1cmVNb2RlOjpSZXR1cm5OdWxsKTsKICAgICBpZiAoIW5ld0Jhc2Up
CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIC8vIEZJWE1FOiBUaGlzIHByb2JhYmx5IHNo
b3VsZG4ndCBiZSBhIG1lbWNweS4KQEAgLTIxMSwxMyArMjExLDEzIEBAIGlubGluZSBCdXR0ZXJm
bHkqIEJ1dHRlcmZseTo6cmVhbGxvY0FycmEKICAgICAvLyBPYmplY3RzIHdpdGggbm8gcHJvcGVy
dGllcyBhcmUgY29tbW9uIGluIGFycmF5cywgYW5kIHdlIGFyZSBmb2N1c2luZyBvbiB2ZXJ5IGxh
cmdlIGFycmF5IGNyYWZ0ZWQgYnkgcmVwZWF0aW5nIEFycmF5I3B1c2gsIHNvLi4uIHRoYXQncyBm
aW5lIQogICAgIGJvb2wgY2FuUmVhbGxvYyA9ICFwcm9wZXJ0eUNhcGFjaXR5ICYmICF2bS5oZWFw
Lm11dGF0b3JTaG91bGRCZUZlbmNlZCgpICYmIGJpdHdpc2VfY2FzdDxIZWFwQ2VsbCo+KHRoZUJh
c2UpLT5pc1ByZWNpc2VBbGxvY2F0aW9uKCk7CiAgICAgaWYgKGNhblJlYWxsb2MpIHsKLSAgICAg
ICAgdm9pZCogbmV3QmFzZSA9IHZtLmpzVmFsdWVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlLnJlYWxs
b2NhdGVQcmVjaXNlQWxsb2NhdGlvbk5vblZpcnR1YWwodm0sIGJpdHdpc2VfY2FzdDxIZWFwQ2Vs
bCo+KHRoZUJhc2UpLCBuZXdTaXplLCAmZGVmZXJyYWxDb250ZXh0LCBBbGxvY2F0aW9uRmFpbHVy
ZU1vZGU6OlJldHVybk51bGwpOworICAgICAgICB2b2lkKiBuZXdCYXNlID0gdm0uanNWYWx1ZUdp
Z2FjYWdlQXV4aWxpYXJ5U3BhY2UoKS5yZWFsbG9jYXRlUHJlY2lzZUFsbG9jYXRpb25Ob25WaXJ0
dWFsKHZtLCBiaXR3aXNlX2Nhc3Q8SGVhcENlbGwqPih0aGVCYXNlKSwgbmV3U2l6ZSwgJmRlZmVy
cmFsQ29udGV4dCwgQWxsb2NhdGlvbkZhaWx1cmVNb2RlOjpSZXR1cm5OdWxsKTsKICAgICAgICAg
aWYgKCFuZXdCYXNlKQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIHJldHVy
biBmcm9tQmFzZShuZXdCYXNlLCAwLCBwcm9wZXJ0eUNhcGFjaXR5KTsKICAgICB9CiAKLSAgICB2
b2lkKiBuZXdCYXNlID0gdm0uanNWYWx1ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UuYWxsb2NhdGVO
b25WaXJ0dWFsKHZtLCBuZXdTaXplLCAmZGVmZXJyYWxDb250ZXh0LCBBbGxvY2F0aW9uRmFpbHVy
ZU1vZGU6OlJldHVybk51bGwpOworICAgIHZvaWQqIG5ld0Jhc2UgPSB2bS5qc1ZhbHVlR2lnYWNh
Z2VBdXhpbGlhcnlTcGFjZSgpLmFsbG9jYXRlTm9uVmlydHVhbCh2bSwgbmV3U2l6ZSwgJmRlZmVy
cmFsQ29udGV4dCwgQWxsb2NhdGlvbkZhaWx1cmVNb2RlOjpSZXR1cm5OdWxsKTsKICAgICBpZiAo
IW5ld0Jhc2UpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIGdjU2FmZU1lbWNweShzdGF0
aWNfY2FzdDxKU1ZhbHVlKj4obmV3QmFzZSksIHN0YXRpY19jYXN0PEpTVmFsdWUqPih0aGVCYXNl
KSwgb2xkU2l6ZSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DbG9uZWRB
cmd1bWVudHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9D
bG9uZWRBcmd1bWVudHMuaAkocmV2aXNpb24gMjg2MDQzKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQ2xvbmVkQXJndW1lbnRzLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDcgKzQ2
LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZt
KQogICAgIHsKICAgICAgICAgc3RhdGljX2Fzc2VydCghQ2VsbFR5cGU6Om5lZWRzRGVzdHJ1Y3Rp
b24sICIiKTsKLSAgICAgICAgcmV0dXJuICZ2bS5jbG9uZWRBcmd1bWVudHNTcGFjZTsKKyAgICAg
ICAgcmV0dXJuICZ2bS5jbG9uZWRBcmd1bWVudHNTcGFjZSgpOwogICAgIH0KICAgICAKIHByaXZh
dGU6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db25zb2xlT2JqZWN0LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29uc29sZU9iamVj
dC5oCShyZXZpc2lvbiAyODYwNDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9D
b25zb2xlT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTM3LDcgKzM3LDcgQEAgcHVibGljOgog
ICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAg
ICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoQ29uc29sZU9iamVjdCwgQmFz
ZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJu
ICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIENvbnNvbGVPYmpl
Y3QqIGNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVy
ZSogc3RydWN0dXJlKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ3VzdG9t
R2V0dGVyU2V0dGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQ3VzdG9tR2V0dGVyU2V0dGVyLmgJKHJldmlzaW9uIDI4NjA0MykKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0N1c3RvbUdldHRlclNldHRlci5oCSh3b3JraW5nIGNvcHkpCkBA
IC00Myw3ICs0Myw3IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwg
U3Vic3BhY2VBY2Nlc3M+CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYg
dm0pCiAgICAgewotICAgICAgICByZXR1cm4gJnZtLmN1c3RvbUdldHRlclNldHRlclNwYWNlOwor
ICAgICAgICByZXR1cm4gJnZtLmN1c3RvbUdldHRlclNldHRlclNwYWNlKCk7CiAgICAgfQogCiAg
ICAgc3RhdGljIEN1c3RvbUdldHRlclNldHRlciogY3JlYXRlKFZNJiB2bSwgQ3VzdG9tR2V0dGVy
IGN1c3RvbUdldHRlciwgQ3VzdG9tU2V0dGVyIGN1c3RvbVNldHRlcikKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0RPTUF0dHJpYnV0ZUdldHRlclNldHRlci5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RPTUF0dHJpYnV0ZUdldHRlclNl
dHRlci5oCShyZXZpc2lvbiAyODYwNDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9ET01BdHRyaWJ1dGVHZXR0ZXJTZXR0ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNDMsNyArNDMs
NyBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUsIFN1YnNwYWNlQWNj
ZXNzPgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsK
LSAgICAgICAgcmV0dXJuICZ2bS5kb21BdHRyaWJ1dGVHZXR0ZXJTZXR0ZXJTcGFjZTsKKyAgICAg
ICAgcmV0dXJuICZ2bS5kb21BdHRyaWJ1dGVHZXR0ZXJTZXR0ZXJTcGFjZSgpOwogICAgIH0KIAog
ICAgIHN0YXRpYyBET01BdHRyaWJ1dGVHZXR0ZXJTZXR0ZXIqIGNyZWF0ZShWTSYgdm0sIEN1c3Rv
bUdldHRlciBjdXN0b21HZXR0ZXIsIEN1c3RvbVNldHRlciBjdXN0b21TZXR0ZXIsIERPTUF0dHJp
YnV0ZUFubm90YXRpb24gZG9tQXR0cmlidXRlKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvRGF0ZUluc3RhbmNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvRGF0ZUluc3RhbmNlLmgJKHJldmlzaW9uIDI4NjA0MykKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVJbnN0YW5jZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0z
Nyw3ICszNyw3IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vi
c3BhY2VBY2Nlc3MgbW9kZT4KICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZN
JiB2bSkKICAgICB7Ci0gICAgICAgIHJldHVybiAmdm0uZGF0ZUluc3RhbmNlU3BhY2U7CisgICAg
ICAgIHJldHVybiAmdm0uZGF0ZUluc3RhbmNlU3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMg
RGF0ZUluc3RhbmNlKiBjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgZG91Ymxl
IGRhdGUpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlUHJvdG90eXBl
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZVByb3Rv
dHlwZS5oCShyZXZpc2lvbiAyODYwNDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9EYXRlUHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM1LDcgKzM1LDcgQEAgcHVibGlj
OgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAg
ICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoRGF0ZVByb3RvdHlwZSwg
QmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0
dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIERhdGVQcm90
b3R5cGUqIGNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVj
dHVyZSogc3RydWN0dXJlKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGly
ZWN0QXJndW1lbnRzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvRGlyZWN0QXJndW1lbnRzLmgJKHJldmlzaW9uIDI4NjA0MykKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0RpcmVjdEFyZ3VtZW50cy5oCSh3b3JraW5nIGNvcHkpCkBAIC01MCw3
ICs1MCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgQ29tcGxldGVTdWJzcGFjZSogc3Vic3BhY2VG
b3IoVk0mIHZtKQogICAgIHsKICAgICAgICAgc3RhdGljX2Fzc2VydCghQ2VsbFR5cGU6Om5lZWRz
RGVzdHJ1Y3Rpb24sICIiKTsKLSAgICAgICAgcmV0dXJuICZ2bS52YXJpYWJsZVNpemVkQ2VsbFNw
YWNlOworICAgICAgICByZXR1cm4gJnZtLnZhcmlhYmxlU2l6ZWRDZWxsU3BhY2UoKTsKICAgICB9
CiAKICAgICAvLyBDcmVhdGVzIGFuIGFyZ3VtZW50cyBvYmplY3QgYnV0IGxlYXZlcyBpdCB1bmlu
aXRpYWxpemVkLiBUaGlzIGlzIGRhbmdlcm91cyBpZiB3ZSBHQyByaWdodApJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JQcm90b3R5cGUuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvclByb3RvdHlwZS5oCShyZXZpc2lvbiAy
ODYwNDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvclByb3RvdHlwZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC00NSw3ICs0NSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNv
U3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NF
UlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEVycm9yUHJvdG90eXBlQmFzZSwgQmFzZSk7Ci0gICAg
ICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFp
bk9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAgREVDTEFSRV9JTkZPOwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9uLmgJKHJldmlzaW9uIDI4NjA0MykKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvbi5oCSh3b3JraW5nIGNvcHkp
CkBAIC00MCw3ICs0MCw3IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlw
ZSwgU3Vic3BhY2VBY2Nlc3MgbW9kZT4KICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNl
Rm9yKFZNJiB2bSkKICAgICB7Ci0gICAgICAgIHJldHVybiAmdm0uZXhjZXB0aW9uU3BhY2U7Cisg
ICAgICAgIHJldHVybiAmdm0uZXhjZXB0aW9uU3BhY2UoKTsKICAgICB9CiAKICAgICBlbnVtIFN0
YWNrQ2FwdHVyZUFjdGlvbiB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9G
aW5hbGl6YXRpb25SZWdpc3RyeVByb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0ZpbmFsaXphdGlvblJlZ2lzdHJ5UHJvdG90eXBlLmgJKHJldmlz
aW9uIDI4NjA0MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ZpbmFsaXphdGlv
blJlZ2lzdHJ5UHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM3LDcgKzM3LDcgQEAgcHVi
bGljOgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsK
ICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoRmluYWxpemF0aW9u
UmVnaXN0cnlQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0
U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAog
ICAgIHN0YXRpYyBGaW5hbGl6YXRpb25SZWdpc3RyeVByb3RvdHlwZSogY3JlYXRlKFZNJiB2bSwg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkV4ZWN1dGFibGUuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkV4ZWN1dGFi
bGUuaAkocmV2aXNpb24gMjg2MDQzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
RnVuY3Rpb25FeGVjdXRhYmxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDcgKzQ2LDcgQEAgcHVi
bGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlLCBTdWJzcGFjZUFjY2Vzcz4KICAg
ICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7Ci0gICAgICAg
IHJldHVybiAmdm0uZnVuY3Rpb25FeGVjdXRhYmxlU3BhY2Uuc3BhY2U7CisgICAgICAgIHJldHVy
biAmdm0uZnVuY3Rpb25FeGVjdXRhYmxlU3BhY2UoKS5zcGFjZTsKICAgICB9CiAKICAgICBzdGF0
aWMgRnVuY3Rpb25FeGVjdXRhYmxlKiBjcmVhdGUoVk0mIHZtLCBTY3JpcHRFeGVjdXRhYmxlKiB0
b3BMZXZlbEV4ZWN1dGFibGUsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgVW5saW5rZWRGdW5j
dGlvbkV4ZWN1dGFibGUqIHVubGlua2VkRXhlY3V0YWJsZSwgSW50cmluc2ljIGludHJpbnNpYywg
Ym9vbCBpc0luc2lkZU9yZGluYXJ5RnVuY3Rpb24pCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9HZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmgJ
KHJldmlzaW9uIDI4NjA0MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVy
YXRvckZ1bmN0aW9uUHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQwLDcgKzQwLDcgQEAg
cHVibGljOgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAg
IHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoR2VuZXJhdG9y
RnVuY3Rpb25Qcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0
U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAog
ICAgIHN0YXRpYyBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSogY3JlYXRlKFZNJiB2bSwgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9H
ZW5lcmF0b3JQcm90b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9HZW5lcmF0b3JQcm90b3R5cGUuaAkocmV2aXNpb24gMjg2MDQzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yUHJvdG90eXBlLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTQxLDcgKzQxLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vi
c3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BB
Q0VfU0hBUkFCTEUoR2VuZXJhdG9yUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2
bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2Uo
KTsKICAgICB9CiAKICAgICBzdGF0aWMgR2VuZXJhdG9yUHJvdG90eXBlKiBjcmVhdGUoVk0mIHZt
LCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSogc3RydWN0dXJlKQpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvR2V0dGVyU2V0dGVyLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2V0dGVyU2V0dGVyLmgJKHJldmlzaW9uIDI4NjA0MykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dldHRlclNldHRlci5oCSh3b3JraW5n
IGNvcHkpCkBAIC01OSw3ICs1OSw3IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBD
ZWxsVHlwZSwgU3Vic3BhY2VBY2Nlc3M+CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFj
ZUZvcihWTSYgdm0pCiAgICAgewotICAgICAgICByZXR1cm4gJnZtLmdldHRlclNldHRlclNwYWNl
OworICAgICAgICByZXR1cm4gJnZtLmdldHRlclNldHRlclNwYWNlKCk7CiAgICAgfQogCiAgICAg
c3RhdGljIEdldHRlclNldHRlciogY3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgSlNPYmplY3QqIGdldHRlciwgSlNPYmplY3QqIHNldHRlcikKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0hhc2hNYXBJbXBsLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSGFzaE1hcEltcGwuaAkocmV2aXNpb24gMjg2MDQz
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSGFzaE1hcEltcGwuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMjEzLDcgKzIxMyw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIGF1dG8g
c2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICAgICAgc2l6ZV90IGFsbG9jYXRp
b25TaXplID0gSGFzaE1hcEJ1ZmZlcjo6YWxsb2NhdGlvblNpemUoY2FwYWNpdHkpOwotICAgICAg
ICB2b2lkKiBkYXRhID0gdm0uanNWYWx1ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UuYWxsb2NhdGVO
b25WaXJ0dWFsKHZtLCBhbGxvY2F0aW9uU2l6ZSwgbnVsbHB0ciwgQWxsb2NhdGlvbkZhaWx1cmVN
b2RlOjpSZXR1cm5OdWxsKTsKKyAgICAgICAgdm9pZCogZGF0YSA9IHZtLmpzVmFsdWVHaWdhY2Fn
ZUF1eGlsaWFyeVNwYWNlKCkuYWxsb2NhdGVOb25WaXJ0dWFsKHZtLCBhbGxvY2F0aW9uU2l6ZSwg
bnVsbHB0ciwgQWxsb2NhdGlvbkZhaWx1cmVNb2RlOjpSZXR1cm5OdWxsKTsKICAgICAgICAgaWYg
KCFkYXRhKSB7CiAgICAgICAgICAgICB0aHJvd091dE9mTWVtb3J5RXJyb3IoZ2xvYmFsT2JqZWN0
LCBzY29wZSk7CiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0ludGVybmFsRnVuY3Rpb24uaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRlcm5hbEZ1bmN0aW9uLmgJKHJldmlzaW9uIDI4
NjA0MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGVybmFsRnVuY3Rpb24u
aAkod29ya2luZyBjb3B5KQpAQCAtNDEsNyArNDEsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIElz
b1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewogICAgICAgICBzdGF0aWNfYXNz
ZXJ0KHNpemVvZihDZWxsVHlwZSkgPT0gc2l6ZW9mKEludGVybmFsRnVuY3Rpb24pLCAiSW50ZXJu
YWxGdW5jdGlvbiBzdWJjbGFzc2VzIHRoYXQgYWRkIGZpZWxkcyBuZWVkIHRvIG92ZXJyaWRlIHN1
YnNwYWNlRm9yPD4oKSIpOwotICAgICAgICByZXR1cm4gJnZtLmludGVybmFsRnVuY3Rpb25TcGFj
ZTsKKyAgICAgICAgcmV0dXJuICZ2bS5pbnRlcm5hbEZ1bmN0aW9uU3BhY2UoKTsKICAgICB9CiAK
ICAgICBERUNMQVJFX0VYUE9SVF9JTkZPOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSW50bENvbGxhdG9yUHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSW50bENvbGxhdG9yUHJvdG90eXBlLmgJKHJldmlzaW9uIDI4NjA0
MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxDb2xsYXRvclByb3RvdHlw
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykg
MjAxNSBBbmR5IFZhbldhZ29uZXIgKGFuZHlAdmFud2Fnb25lci5mYW1pbHkpCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDE5LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zOSw3ICszOSw3IEBAIHB1YmxpYzoKICAgICBzdGF0
aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJ
Q19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEludGxDb2xsYXRvclByb3RvdHlwZSwgQmFz
ZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJu
ICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIEludGxDb2xsYXRv
clByb3RvdHlwZSogY3JlYXRlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqKTsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdFByb3Rv
dHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxE
YXRlVGltZUZvcm1hdFByb3RvdHlwZS5oCShyZXZpc2lvbiAyODYwNDMpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQW5keSBW
YW5XYWdvbmVyIChhbmR5QHZhbndhZ29uZXIuZmFtaWx5KQotICogQ29weXJpZ2h0IChDKSAyMDE5
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxOS0y
MDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwpAQCAtMzksNyArMzksNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIElzb1N1YnNw
YWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lT
T19TVUJTUEFDRV9TSEFSQUJMRShJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUsIEJhc2UpOwot
ICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0u
cGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBJbnRsRGF0ZVRpbWVGb3Jt
YXRQcm90b3R5cGUqIGNyZWF0ZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKik7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGlzcGxheU5hbWVzUHJvdG90
eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERp
c3BsYXlOYW1lc1Byb3RvdHlwZS5oCShyZXZpc2lvbiAyODYwNDMpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9JbnRsRGlzcGxheU5hbWVzUHJvdG90eXBlLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAyMC0yMDIxIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpA
QCAtMzgsNyArMzgsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFj
ZUZvcihWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9T
SEFSQUJMRShJbnRsRGlzcGxheU5hbWVzUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJu
ICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3Bh
Y2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgSW50bERpc3BsYXlOYW1lc1Byb3RvdHlwZSogY3Jl
YXRlKFZNJiwgU3RydWN0dXJlKik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9JbnRsTGlzdEZvcm1hdFByb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0ludGxMaXN0Rm9ybWF0UHJvdG90eXBlLmgJKHJldmlzaW9uIDI4NjA0
MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxMaXN0Rm9ybWF0UHJvdG90
eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChD
KSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAyMC0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwpAQCAtMzgsNyArMzgsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIElz
b1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNT
RVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShJbnRsTGlzdEZvcm1hdFByb3RvdHlwZSwgQmFzZSk7
Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2
bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIEludGxMaXN0Rm9ybWF0
UHJvdG90eXBlKiBjcmVhdGUoVk0mLCBTdHJ1Y3R1cmUqKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0ludGxMb2NhbGVQcm90b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTG9jYWxlUHJvdG90eXBlLmgJKHJldmlzaW9u
IDI4NjA0MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxMb2NhbGVQcm90
b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQg
KEMpIDIwMjAgU29ueSBJbnRlcmFjdGl2ZSBFbnRlcnRhaW5tZW50IEluYy4KKyAqIENvcHlyaWdo
dCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKQEAgLTM4LDcgKzM5LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJ
c29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FT
U0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSW50bExvY2FsZVByb3RvdHlwZSwgQmFzZSk7Ci0g
ICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5w
bGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIEludGxMb2NhbGVQcm90b3R5
cGUqIGNyZWF0ZShWTSYsIFN0cnVjdHVyZSopOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSW50bE51bWJlckZvcm1hdFByb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUuaAkocmV2
aXNpb24gMjg2MDQzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJl
ckZvcm1hdFByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNiBAQAogLyoKICAq
IENvcHlyaWdodCAoQykgMjAxNSBBbmR5IFZhbldhZ29uZXIgKGFuZHlAdmFud2Fnb25lci5mYW1p
bHkpCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDE5LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zOSw3ICszOSw3IEBAIHB1
YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7
CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEludGxOdW1iZXJG
b3JtYXRQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3Bh
Y2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAg
IHN0YXRpYyBJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlKiBjcmVhdGUoVk0mLCBKU0dsb2JhbE9i
amVjdCosIFN0cnVjdHVyZSopOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SW50bE9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0ludGxPYmplY3QuaAkocmV2aXNpb24gMjg2MDQzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSW50bE9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNiBAQAogLyoK
ICAqIENvcHlyaWdodCAoQykgMjAxNSBBbmR5IFZhbldhZ29uZXIgKGFuZHlAdmFud2Fnb25lci5m
YW1pbHkpCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTktMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTktMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMjAgU29ueSBJbnRlcmFjdGl2ZSBFbnRl
cnRhaW5tZW50IEluYy4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKQEAgLTc2LDcgKzc2LDcgQEAgcHVibGlj
OgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAg
ICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSW50bE9iamVjdCwgQmFz
ZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJu
ICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIEludGxPYmplY3Qq
IGNyZWF0ZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKik7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsUGx1cmFsUnVsZXNQcm90b3R5cGUuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsUGx1cmFsUnVsZXNQcm90
b3R5cGUuaAkocmV2aXNpb24gMjg2MDQzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSW50bFBsdXJhbFJ1bGVzUHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw2
IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDE4IEFuZHkgVmFuV2Fnb25lciAoYW5keUB2YW53
YWdvbmVyLmZhbWlseSkKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTktMjAyMSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM5LDcg
KzM5LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0m
IHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUo
SW50bFBsdXJhbFJ1bGVzUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFp
bk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAg
ICB9CiAKICAgICBzdGF0aWMgSW50bFBsdXJhbFJ1bGVzUHJvdG90eXBlKiBjcmVhdGUoVk0mLCBK
U0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSopOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSW50bFJlbGF0aXZlVGltZUZvcm1hdFByb3RvdHlwZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxSZWxhdGl2ZVRpbWVGb3JtYXRQcm90
b3R5cGUuaAkocmV2aXNpb24gMjg2MDQzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSW50bFJlbGF0aXZlVGltZUZvcm1hdFByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAyMCBTb255IEludGVyYWN0aXZlIEVu
dGVydGFpbm1lbnQgSW5jLgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzgsNyAr
MzksNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYg
dm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShJ
bnRsUmVsYXRpdmVUaW1lRm9ybWF0UHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2
bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2Uo
KTsKICAgICB9CiAKICAgICBzdGF0aWMgSW50bFJlbGF0aXZlVGltZUZvcm1hdFByb3RvdHlwZSog
Y3JlYXRlKFZNJiwgU3RydWN0dXJlKik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9JbnRsU2VnbWVudEl0ZXJhdG9yUHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFNlZ21lbnRJdGVyYXRvclByb3RvdHlwZS5oCShy
ZXZpc2lvbiAyODYwNDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsU2Vn
bWVudEl0ZXJhdG9yUHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAv
KgotICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAyMC0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzgsNyArMzgsNyBAQCBwdWJs
aWM6CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewog
ICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShJbnRsU2VnbWVudEl0
ZXJhdG9yUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNw
YWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAg
ICBzdGF0aWMgSW50bFNlZ21lbnRJdGVyYXRvclByb3RvdHlwZSogY3JlYXRlKFZNJiwgU3RydWN0
dXJlKik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsU2VnbWVudGVy
UHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SW50bFNlZ21lbnRlclByb3RvdHlwZS5oCShyZXZpc2lvbiAyODYwNDMpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9JbnRsU2VnbWVudGVyUHJvdG90eXBlLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAyMC0yMDIxIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpA
QCAtMzgsNyArMzgsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFj
ZUZvcihWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9T
SEFSQUJMRShJbnRsU2VnbWVudGVyUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2
bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2Uo
KTsKICAgICB9CiAKICAgICBzdGF0aWMgSW50bFNlZ21lbnRlclByb3RvdHlwZSogY3JlYXRlKFZN
JiwgU3RydWN0dXJlKik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRs
U2VnbWVudHNQcm90b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9JbnRsU2VnbWVudHNQcm90b3R5cGUuaAkocmV2aXNpb24gMjg2MDQzKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFNlZ21lbnRzUHJvdG90eXBlLmgJKHdvcmtp
bmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAyMC0yMDIxIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwpAQCAtMzgsNyArMzgsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBz
dWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJT
UEFDRV9TSEFSQUJMRShJbnRsU2VnbWVudHNQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1
cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RT
cGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBJbnRsU2VnbWVudHNQcm90b3R5cGUqIGNyZWF0
ZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKik7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9JdGVyYXRvclByb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0l0ZXJhdG9yUHJvdG90eXBlLmgJKHJldmlzaW9uIDI4
NjA0MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0l0ZXJhdG9yUHJvdG90eXBl
LmgJKHdvcmtpbmcgY29weSkKQEAgLTM5LDcgKzM5LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJ
c29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FT
U0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSXRlcmF0b3JQcm90b3R5cGUsIEJhc2UpOwotICAg
ICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxh
aW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBJdGVyYXRvclByb3RvdHlwZSog
Y3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmNw
cAkocmV2aXNpb24gMjg2MDQzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNB
cnJheS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU2LDcgKzU2LDcgQEAgSlNBcnJheSogSlNBcnJh
eTo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZAogICAgICAgICAgICAgfHwgaGFzQ29udGlndW91cyhp
bmRleGluZ1R5cGUpKTsKIAogICAgICAgICB1bnNpZ25lZCB2ZWN0b3JMZW5ndGggPSBCdXR0ZXJm
bHk6Om9wdGltYWxDb250aWd1b3VzVmVjdG9yTGVuZ3RoKHN0cnVjdHVyZSwgaW5pdGlhbExlbmd0
aCk7Ci0gICAgICAgIHZvaWQqIHRlbXAgPSB2bS5qc1ZhbHVlR2lnYWNhZ2VBdXhpbGlhcnlTcGFj
ZS5hbGxvY2F0ZU5vblZpcnR1YWwoCisgICAgICAgIHZvaWQqIHRlbXAgPSB2bS5qc1ZhbHVlR2ln
YWNhZ2VBdXhpbGlhcnlTcGFjZSgpLmFsbG9jYXRlTm9uVmlydHVhbCgKICAgICAgICAgICAgIHZt
LAogICAgICAgICAgICAgQnV0dGVyZmx5Ojp0b3RhbFNpemUoMCwgb3V0T2ZMaW5lU3RvcmFnZSwg
dHJ1ZSwgdmVjdG9yTGVuZ3RoICogc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKSksCiAgICAgICAgICAg
ICBkZWZlcnJhbENvbnRleHQsIEFsbG9jYXRpb25GYWlsdXJlTW9kZTo6UmV0dXJuTnVsbCk7CkBA
IC03OCw3ICs3OCw3IEBAIEpTQXJyYXkqIEpTQXJyYXk6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQK
ICAgICAgICAgICAgIHx8IGluZGV4aW5nVHlwZSA9PSBBcnJheVdpdGhBcnJheVN0b3JhZ2UpOwog
ICAgICAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIGluZGV4QmlhcyA9IDA7CiAgICAgICAg
IHVuc2lnbmVkIHZlY3Rvckxlbmd0aCA9IEFycmF5U3RvcmFnZTo6b3B0aW1hbFZlY3Rvckxlbmd0
aChpbmRleEJpYXMsIHN0cnVjdHVyZSwgaW5pdGlhbExlbmd0aCk7Ci0gICAgICAgIHZvaWQqIHRl
bXAgPSB2bS5qc1ZhbHVlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZS5hbGxvY2F0ZU5vblZpcnR1YWwo
CisgICAgICAgIHZvaWQqIHRlbXAgPSB2bS5qc1ZhbHVlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZSgp
LmFsbG9jYXRlTm9uVmlydHVhbCgKICAgICAgICAgICAgIHZtLAogICAgICAgICAgICAgQnV0dGVy
Zmx5Ojp0b3RhbFNpemUoaW5kZXhCaWFzLCBvdXRPZkxpbmVTdG9yYWdlLCB0cnVlLCBBcnJheVN0
b3JhZ2U6OnNpemVGb3IodmVjdG9yTGVuZ3RoKSksCiAgICAgICAgICAgICBkZWZlcnJhbENvbnRl
eHQsIEFsbG9jYXRpb25GYWlsdXJlTW9kZTo6UmV0dXJuTnVsbCk7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5oCShyZXZpc2lvbiAyODYwNDMpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmgJKHdvcmtpbmcgY29weSkKQEAgLTUxLDcg
KzUxLDcgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlLCBTdWJzcGFj
ZUFjY2Vzcz4KICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAg
ICB7Ci0gICAgICAgIHJldHVybiAmdm0uYXJyYXlTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5h
cnJheVNwYWNlKCk7CiAgICAgfQogICAgICAgICAKIHByb3RlY3RlZDoKQEAgLTI0NCw3ICsyNDQs
NyBAQCBpbmxpbmUgSlNBcnJheSogSlNBcnJheTo6dHJ5Q3JlYXRlKFZNJiB2CiAgICAgICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKIAogICAgICAgICB1bnNpZ25lZCB2ZWN0b3JMZW5ndGggPSBCdXR0
ZXJmbHk6Om9wdGltYWxDb250aWd1b3VzVmVjdG9yTGVuZ3RoKHN0cnVjdHVyZSwgdmVjdG9yTGVu
Z3RoSGludCk7Ci0gICAgICAgIHZvaWQqIHRlbXAgPSB2bS5qc1ZhbHVlR2lnYWNhZ2VBdXhpbGlh
cnlTcGFjZS5hbGxvY2F0ZU5vblZpcnR1YWwoCisgICAgICAgIHZvaWQqIHRlbXAgPSB2bS5qc1Zh
bHVlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZSgpLmFsbG9jYXRlTm9uVmlydHVhbCgKICAgICAgICAg
ICAgIHZtLAogICAgICAgICAgICAgQnV0dGVyZmx5Ojp0b3RhbFNpemUoMCwgb3V0T2ZMaW5lU3Rv
cmFnZSwgdHJ1ZSwgdmVjdG9yTGVuZ3RoICogc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKSksCiAgICAg
ICAgICAgICBudWxscHRyLCBBbGxvY2F0aW9uRmFpbHVyZU1vZGU6OlJldHVybk51bGwpOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlclByb3RvdHlwZS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZm
ZXJQcm90b3R5cGUuaAkocmV2aXNpb24gMjg2MDQzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNBcnJheUJ1ZmZlclByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNiBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAyMSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM3
LDcgKzM3LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3Io
Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFC
TEUoSlNBcnJheUJ1ZmZlclByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxh
aW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAg
ICAgfQogCiAgICAgc3RhdGljIEpTQXJyYXlCdWZmZXJQcm90b3R5cGUqIGNyZWF0ZShWTSYsIEpT
R2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgQXJyYXlCdWZmZXJTaGFyaW5nTW9kZSA9IEFycmF5
QnVmZmVyU2hhcmluZ01vZGU6OkRlZmF1bHQpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNBcnJheUJ1ZmZlclZpZXcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3LmNwcAkocmV2aXNpb24gMjg2MDQz
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlclZpZXcuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC02NCw3ICs2NCw3IEBAIEpTQXJyYXlCdWZmZXJWaWV3OjpDb25z
dHJ1Y3Rpb25Db250ZXh0OjoKICAgICAgICAgLy8gQXR0ZW1wdCBHQyBhbGxvY2F0aW9uLgogICAg
ICAgICB2b2lkKiB0ZW1wOwogICAgICAgICBzaXplX3Qgc2l6ZSA9IHNpemVPZihsZW5ndGgsIGVs
ZW1lbnRTaXplKTsKLSAgICAgICAgdGVtcCA9IHZtLnByaW1pdGl2ZUdpZ2FjYWdlQXV4aWxpYXJ5
U3BhY2UuYWxsb2NhdGVOb25WaXJ0dWFsKHZtLCBzaXplLCBudWxscHRyLCBBbGxvY2F0aW9uRmFp
bHVyZU1vZGU6OlJldHVybk51bGwpOworICAgICAgICB0ZW1wID0gdm0ucHJpbWl0aXZlR2lnYWNh
Z2VBdXhpbGlhcnlTcGFjZSgpLmFsbG9jYXRlTm9uVmlydHVhbCh2bSwgc2l6ZSwgbnVsbHB0ciwg
QWxsb2NhdGlvbkZhaWx1cmVNb2RlOjpSZXR1cm5OdWxsKTsKICAgICAgICAgaWYgKCF0ZW1wKQog
ICAgICAgICAgICAgcmV0dXJuOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0JpZ0ludC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNCaWdJbnQuY3BwCShyZXZpc2lvbiAyODYwNDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0JpZ0ludC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExNyw3ICsxMTcsNyBA
QCBpbmxpbmUgSlNCaWdJbnQqIEpTQmlnSW50OjpjcmVhdGVXaXRoTGVuCiAgICAgfQogCiAgICAg
QVNTRVJUKGxlbmd0aCA8PSBtYXhMZW5ndGgpOwotICAgIHZvaWQqIGRhdGEgPSB2bS5wcmltaXRp
dmVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlLmFsbG9jYXRlTm9uVmlydHVhbCh2bSwgbGVuZ3RoICog
c2l6ZW9mKERpZ2l0KSwgbnVsbHB0ciwgQWxsb2NhdGlvbkZhaWx1cmVNb2RlOjpSZXR1cm5OdWxs
KTsKKyAgICB2b2lkKiBkYXRhID0gdm0ucHJpbWl0aXZlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZSgp
LmFsbG9jYXRlTm9uVmlydHVhbCh2bSwgbGVuZ3RoICogc2l6ZW9mKERpZ2l0KSwgbnVsbHB0ciwg
QWxsb2NhdGlvbkZhaWx1cmVNb2RlOjpSZXR1cm5OdWxsKTsKICAgICBpZiAoVU5MSUtFTFkoIWRh
dGEpKSB7CiAgICAgICAgIGlmIChudWxsT3JHbG9iYWxPYmplY3RGb3JPT00pIHsKICAgICAgICAg
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQmlnSW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCaWdJbnQuaAkocmV2aXNpb24gMjg2MDQzKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCaWdJbnQuaAkod29ya2luZyBjb3B5KQpAQCAt
NTYsNyArNTYsNyBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUsIFN1
YnNwYWNlQWNjZXNzPgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZt
KQogICAgIHsKLSAgICAgICAgcmV0dXJuICZ2bS5iaWdJbnRTcGFjZTsKKyAgICAgICAgcmV0dXJu
ICZ2bS5iaWdJbnRTcGFjZSgpOwogICAgIH0KIAogICAgIGVudW0gY2xhc3MgSW5pdGlhbGl6YXRp
b25UeXBlIHsgTm9uZSwgV2l0aFplcm8gfTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTQ2FsbGVlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNDYWxsZWUuaAkocmV2aXNpb24gMjg2MDQzKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNDYWxsZWUuaAkod29ya2luZyBjb3B5KQpAQCAtNTAsNyArNTAsNyBAQCBw
dWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNzPgog
ICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKLSAgICAg
ICAgcmV0dXJuICZ2bS5jYWxsZWVTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5jYWxsZWVTcGFj
ZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBKU0NhbGxlZSogY3JlYXRlKFZNJiB2bSwgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNTY29wZSogc2NvcGUpCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGFWaWV3UHJvdG90eXBlLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRhVmlld1Byb3RvdHlwZS5oCShyZXZp
c2lvbiAyODYwNDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGFWaWV3
UHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDEzLTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDEzLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zOCw3ICszOCw3IEBAIHB1YmxpYzoKICAg
ICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAg
IFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTRGF0YVZpZXdQcm90b3R5cGUs
IEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJl
dHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBKU0RhdGFW
aWV3UHJvdG90eXBlKiBjcmVhdGUoVk0mLCBTdHJ1Y3R1cmUqKTsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmgJKHJldmlzaW9uIDI4NjA0MykKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uaAkod29ya2luZyBjb3B5KQpA
QCAtNjYsNyArNjYsNyBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUs
IFN1YnNwYWNlQWNjZXNzPgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0m
IHZtKQogICAgIHsKLSAgICAgICAgcmV0dXJuICZ2bS5mdW5jdGlvblNwYWNlOworICAgICAgICBy
ZXR1cm4gJnZtLmZ1bmN0aW9uU3BhY2UoKTsKICAgICB9CiAgICAgCiAgICAgdHlwZWRlZiBKU0Nh
bGxlZSBCYXNlOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmlj
VHlwZWRBcnJheVZpZXdQcm90b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZS5oCShyZXZpc2lv
biAyODYwNDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBl
ZEFycmF5Vmlld1Byb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM4LDcgKzM4LDcgQEAgcHVibGlj
OgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAg
ICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNHZW5lcmljVHlwZWRB
cnJheVZpZXdQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0
U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAog
ICAgIHN0YXRpYyBKU0dlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZSogY3JlYXRlKApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxMZXhpY2FsRW52aXJvbm1l
bnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2Jh
bExleGljYWxFbnZpcm9ubWVudC5oCShyZXZpc2lvbiAyODYwNDMpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0dsb2JhbExleGljYWxFbnZpcm9ubWVudC5oCSh3b3JraW5nIGNv
cHkpCkBAIC0zOCw3ICszOCw3IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxs
VHlwZSwgU3Vic3BhY2VBY2Nlc3MgbW9kZT4KICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNw
YWNlRm9yKFZNJiB2bSkKICAgICB7Ci0gICAgICAgIHJldHVybiAmdm0uZ2xvYmFsTGV4aWNhbEVu
dmlyb25tZW50U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0uZ2xvYmFsTGV4aWNhbEVudmlyb25t
ZW50U3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgSlNHbG9iYWxMZXhpY2FsRW52aXJvbm1l
bnQqIGNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBKU1Njb3BlKiBwYXJlbnRT
Y29wZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTSW1tdXRhYmxlQnV0
dGVyZmx5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNJ
bW11dGFibGVCdXR0ZXJmbHkuaAkocmV2aXNpb24gMjg2MDQzKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNJbW11dGFibGVCdXR0ZXJmbHkuaAkod29ya2luZyBjb3B5KQpAQCAt
MTUzLDcgKzE1Myw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgQ29tcGxldGVTdWJzcGFjZSogc3Vi
c3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAgICAgLy8gV2UgYWxsb2NhdGUgb3V0IG9mIHRo
ZSBKU1ZhbHVlIGdpZ2FjYWdlIGFzIG90aGVyIGNvZGUgZXhwZWN0cyBhbGwgYnV0dGVyZmxpZXMg
dG8gbGl2ZSB0aGVyZS4KLSAgICAgICAgcmV0dXJuICZ2bS5pbW11dGFibGVCdXR0ZXJmbHlKU1Zh
bHVlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5pbW11dGFibGVC
dXR0ZXJmbHlKU1ZhbHVlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZSgpOwogICAgIH0KIAogICAgIC8v
IE9ubHkgY2FsbCB0aGlzIGlmIHlvdSBqdXN0IGFsbG9jYXRlZCB0aGlzIGJ1dHRlcmZseS4KSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTGV4aWNhbEVudmlyb25tZW50LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNMZXhpY2FsRW52
aXJvbm1lbnQuaAkocmV2aXNpb24gMjg2MDQzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNMZXhpY2FsRW52aXJvbm1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNDQsNyArNDQs
NyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIENvbXBsZXRlU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZN
JiB2bSkKICAgICB7CiAgICAgICAgIHN0YXRpY19hc3NlcnQoIUNlbGxUeXBlOjpuZWVkc0Rlc3Ry
dWN0aW9uLCAiIik7Ci0gICAgICAgIHJldHVybiAmdm0udmFyaWFibGVTaXplZENlbGxTcGFjZTsK
KyAgICAgICAgcmV0dXJuICZ2bS52YXJpYWJsZVNpemVkQ2VsbFNwYWNlKCk7CiAgICAgfQogCiAg
ICAgdXNpbmcgQmFzZSA9IEpTU3ltYm9sVGFibGVPYmplY3Q7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU01vZHVsZUxvYWRlci5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlTG9hZGVyLmgJKHJldmlzaW9uIDI4NjA0MykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlTG9hZGVyLmgJKHdvcmtp
bmcgY29weSkKQEAgLTQ0LDcgKzQ0LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJc29TdWJzcGFj
ZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09f
U1VCU1BBQ0VfU0hBUkFCTEUoSlNNb2R1bGVMb2FkZXIsIEJhc2UpOwotICAgICAgICByZXR1cm4g
JnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFj
ZSgpOwogICAgIH0KIAogICAgIGVudW0gU3RhdHVzIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTT05PYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU09OT2JqZWN0LmgJKHJldmlzaW9uIDI4NjA0MykKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT05PYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtMzgs
NyArMzgsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihW
TSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJM
RShKU09OT2JqZWN0LCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNl
OworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBz
dGF0aWMgSlNPTk9iamVjdCogY3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdElubGluZXMuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdElubGluZXMu
aAkocmV2aXNpb24gMjg2MDQzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNP
YmplY3RJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTQxLDcgKzQxLDcgQEAgdGVtcGxhdGU8
dHlwZW5hbWUgQ2VsbFR5cGUsIFN1YnNwYWNlQWNjZQogQ29tcGxldGVTdWJzcGFjZSogSlNGaW5h
bE9iamVjdDo6c3Vic3BhY2VGb3IoVk0mIHZtKQogewogICAgIHN0YXRpY19hc3NlcnQoIUNlbGxU
eXBlOjpuZWVkc0Rlc3RydWN0aW9uKTsKLSAgICByZXR1cm4gJnZtLmNlbGxTcGFjZTsKKyAgICBy
ZXR1cm4gJnZtLmNlbGxTcGFjZSgpOwogfQogCiAvLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8j
c2VjLWNyZWF0ZWxpc3Rmcm9tYXJyYXlsaWtlCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU1Byb21pc2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU1Byb21pc2UuaAkocmV2aXNpb24gMjg2MDQzKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNQcm9taXNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM3LDcgKzM3LDcg
QEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlLCBTdWJzcGFjZUFjY2Vz
cyBtb2RlPgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAg
IHsKLSAgICAgICAgcmV0dXJuICZ2bS5wcm9taXNlU3BhY2U7CisgICAgICAgIHJldHVybiAmdm0u
cHJvbWlzZVNwYWNlKCk7CiAgICAgfQogCiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIEpT
UHJvbWlzZSogY3JlYXRlKFZNJiwgU3RydWN0dXJlKik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU1Byb21pc2VQcm90b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2VQcm90b3R5cGUuaAkocmV2aXNpb24gMjg2
MDQzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9taXNlUHJvdG90eXBl
LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAy
MDEzLTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDEzLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCkBAIC0zOCw3ICszOCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMg
SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19B
U1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTUHJvbWlzZVByb3RvdHlwZSwgQmFzZSk7Ci0g
ICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5w
bGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIEpTUHJvbWlzZVByb3RvdHlw
ZSogY3JlYXRlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqKTsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lRW51bWVyYXRvci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVF
bnVtZXJhdG9yLmNwcAkocmV2aXNpb24gMjg2MDQzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzgsNyArMzgsNyBAQCBKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3IqIEpTUHJvcGVydHlOYW1lCiAg
ICAgdW5zaWduZWQgcHJvcGVydHlOYW1lc0J1ZmZlclNpemVJbkJ5dGVzID0gQ2hlY2tlZDx1bnNp
Z25lZD4ocHJvcGVydHlOYW1lc1NpemUpICogc2l6ZW9mKFdyaXRlQmFycmllcjxKU1N0cmluZz4p
OwogICAgIFdyaXRlQmFycmllcjxKU1N0cmluZz4qIHByb3BlcnR5TmFtZXNCdWZmZXIgPSBudWxs
cHRyOwogICAgIGlmIChwcm9wZXJ0eU5hbWVzQnVmZmVyU2l6ZUluQnl0ZXMpIHsKLSAgICAgICAg
cHJvcGVydHlOYW1lc0J1ZmZlciA9IHN0YXRpY19jYXN0PFdyaXRlQmFycmllcjxKU1N0cmluZz4q
Pih2bS5qc1ZhbHVlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZS5hbGxvY2F0ZU5vblZpcnR1YWwodm0s
IHByb3BlcnR5TmFtZXNCdWZmZXJTaXplSW5CeXRlcywgbnVsbHB0ciwgQWxsb2NhdGlvbkZhaWx1
cmVNb2RlOjpBc3NlcnQpKTsKKyAgICAgICAgcHJvcGVydHlOYW1lc0J1ZmZlciA9IHN0YXRpY19j
YXN0PFdyaXRlQmFycmllcjxKU1N0cmluZz4qPih2bS5qc1ZhbHVlR2lnYWNhZ2VBdXhpbGlhcnlT
cGFjZSgpLmFsbG9jYXRlTm9uVmlydHVhbCh2bSwgcHJvcGVydHlOYW1lc0J1ZmZlclNpemVJbkJ5
dGVzLCBudWxscHRyLCBBbGxvY2F0aW9uRmFpbHVyZU1vZGU6OkFzc2VydCkpOwogICAgICAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcHJvcGVydHlOYW1lc1NpemU7ICsraSkKICAgICAgICAg
ICAgIHByb3BlcnR5TmFtZXNCdWZmZXJbaV0uY2xlYXIoKTsKICAgICB9CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUVudW1lcmF0b3IuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUVudW1l
cmF0b3IuaAkocmV2aXNpb24gMjg2MDQzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTUxLDcgKzUx
LDcgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlLCBTdWJzcGFjZUFj
Y2VzcyBtb2RlPgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQog
ICAgIHsKLSAgICAgICAgcmV0dXJuICZ2bS5wcm9wZXJ0eU5hbWVFbnVtZXJhdG9yU3BhY2U7Cisg
ICAgICAgIHJldHVybiAmdm0ucHJvcGVydHlOYW1lRW51bWVyYXRvclNwYWNlKCk7CiAgICAgfQog
CiAgICAgc3RhdGljIEpTUHJvcGVydHlOYW1lRW51bWVyYXRvciogY3JlYXRlKFZNJiwgU3RydWN0
dXJlKiwgdWludDMyX3QsIHVpbnQzMl90LCBQcm9wZXJ0eU5hbWVBcnJheSYmKTsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJveHkuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3h5LmgJKHJldmlzaW9uIDI4NjA0MykKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJveHkuaAkod29ya2luZyBjb3B5KQpA
QCAtMzgsNyArMzgsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFj
ZUZvcihWTSYgdm0pCiAgICAgewogICAgICAgICBzdGF0aWNfYXNzZXJ0KHNpemVvZihDZWxsVHlw
ZSkgPT0gc2l6ZW9mKEpTUHJveHkpKTsKLSAgICAgICAgcmV0dXJuICZ2bS5qc1Byb3h5U3BhY2U7
CisgICAgICAgIHJldHVybiAmdm0uanNQcm94eVNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGlj
IEpTUHJveHkqIGNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBKU09iamVjdCog
dGFyZ2V0KQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5oCShy
ZXZpc2lvbiAyODYwNDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmlu
Zy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTEsNyArMTExLDcgQEAgcHVibGljOgogICAgIHRlbXBs
YXRlPHR5cGVuYW1lLCBTdWJzcGFjZUFjY2Vzcz4KICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1
YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7Ci0gICAgICAgIHJldHVybiAmdm0uc3RyaW5nU3BhY2U7
CisgICAgICAgIHJldHVybiAmdm0uc3RyaW5nU3BhY2UoKTsKICAgICB9CiAgICAgCiAgICAgLy8g
V2UgZW1wbG95IG92ZXJmbG93IGNoZWNrcyBpbiBtYW55IHBsYWNlcyB3aXRoIHRoZSBhc3N1bXB0
aW9uIHRoYXQgTWF4TGVuZ3RoCkBAIC0yNzAsNyArMjcwLDcgQEAgcHVibGljOgogICAgIHRlbXBs
YXRlPHR5cGVuYW1lLCBTdWJzcGFjZUFjY2Vzcz4KICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1
YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7Ci0gICAgICAgIHJldHVybiAmdm0ucm9wZVN0cmluZ1Nw
YWNlOworICAgICAgICByZXR1cm4gJnZtLnJvcGVTdHJpbmdTcGFjZSgpOwogICAgIH0KIAogICAg
IC8vIFdlIHVzZSBsb3dlciAzYml0cyBvZiBmaWJlcjAgZm9yIGZsYWdzLiBUaGVzZSBiaXRzIGFy
ZSB1c2FibGUgZHVlIHRvIGFsaWdubWVudCwgYW5kIGl0IGlzIE9LIGV2ZW4gaW4gMzJiaXQgYXJj
aGl0ZWN0dXJlLgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlZEFy
cmF5Vmlld1Byb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTVHlwZWRBcnJheVZpZXdQcm90b3R5cGUuaAkocmV2aXNpb24gMjg2MDQzKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
NSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUt
MjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTM3LDcgKzM3LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJc29TdWJz
cGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9J
U09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZSwgQmFzZSk7Ci0g
ICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5w
bGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIEpTVHlwZWRBcnJheVZpZXdQ
cm90b3R5cGUqIGNyZWF0ZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKik7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXBJdGVyYXRvclByb3RvdHlwZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hcEl0ZXJhdG9yUHJv
dG90eXBlLmgJKHJldmlzaW9uIDI4NjA0MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL01hcEl0ZXJhdG9yUHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM3LDcgKzM3LDcg
QEAgcHVibGljOgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQog
ICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoTWFwSXRl
cmF0b3JQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3Bh
Y2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAg
IHN0YXRpYyBNYXBJdGVyYXRvclByb3RvdHlwZSogY3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9NYXBQcm90b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXBQcm90b3R5cGUuaAkocmV2aXNpb24gMjg2MDQzKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFwUHJvdG90eXBlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTM3LDcgKzM3LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSog
c3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VC
U1BBQ0VfU0hBUkFCTEUoTWFwUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5w
bGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsK
ICAgICB9CiAKICAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0g
QmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBIYXNTdGF0aWNQcm9wZXJ0eVRhYmxlOwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWF0aE9iamVjdC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hdGhPYmplY3QuaAkocmV2aXNpb24gMjg2MDQz
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWF0aE9iamVjdC5oCSh3b3JraW5n
IGNvcHkpCkBAIC0zMiw3ICszMiw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2Uq
IHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NV
QlNQQUNFX1NIQVJBQkxFKE1hdGhPYmplY3QsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBs
YWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwog
ICAgIH0KIAogICAgIHN0YXRpYyBNYXRoT2JqZWN0KiBjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUVycm9yUHJvdG90eXBlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRXJyb3JQcm90b3R5cGUuaAko
cmV2aXNpb24gMjg2MDQzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZl
RXJyb3JQcm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzQsNyArMzQsNyBAQCBwdWJsaWM6
CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewogICAg
ICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShOYXRpdmVFcnJvclByb3Rv
dHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAg
ICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIFN0
cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9OYXRpdmVFeGVjdXRhYmxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvTmF0aXZlRXhlY3V0YWJsZS5oCShyZXZpc2lvbiAyODYwNDMpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OYXRpdmVFeGVjdXRhYmxlLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA5LTIwMTkgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA5LTIwMjEgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCkBAIC00Myw3ICs0Myw3IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxs
VHlwZSwgU3Vic3BhY2VBY2Nlc3M+CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZv
cihWTSYgdm0pCiAgICAgewotICAgICAgICByZXR1cm4gJnZtLm5hdGl2ZUV4ZWN1dGFibGVTcGFj
ZTsKKyAgICAgICAgcmV0dXJuICZ2bS5uYXRpdmVFeGVjdXRhYmxlU3BhY2UoKTsKICAgICB9CiAK
ICAgICBDb2RlQmxvY2tIYXNoIGhhc2hGb3IoQ29kZVNwZWNpYWxpemF0aW9uS2luZCkgY29uc3Q7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdW1iZXJPYmplY3QuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdW1iZXJPYmplY3QuaAko
cmV2aXNpb24gMjg2MDQzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVy
T2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTM1LDcgKzM1LDcgQEAgcHVibGljOgogICAgIHRl
bXBsYXRlPHR5cGVuYW1lLCBTdWJzcGFjZUFjY2VzcyBtb2RlPgogICAgIHN0YXRpYyBJc29TdWJz
cGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKLSAgICAgICAgcmV0dXJuICZ2bS5udW1i
ZXJPYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5udW1iZXJPYmplY3RTcGFjZSgpOwog
ICAgIH0KIAogICAgIHN0YXRpYyBOdW1iZXJPYmplY3QqIGNyZWF0ZShWTSYgdm0sIFN0cnVjdHVy
ZSogc3RydWN0dXJlKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0
UHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
T2JqZWN0UHJvdG90eXBlLmgJKHJldmlzaW9uIDI4NjA0MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL09iamVjdFByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEs
NiBAQAogLyoKICAqICBDb3B5cmlnaHQgKEMpIDE5OTktMjAwMCBIYXJyaSBQb3J0ZW4gKHBvcnRl
bkBrZGUub3JnKQotICogIENvcHlyaWdodCAoQykgMjAwOC0yMDE5IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqICBDb3B5cmlnaHQgKEMpIDIwMDgtMjAyMSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJl
OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqICBtb2RpZnkgaXQgdW5kZXIgdGhl
IHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCkBAIC0zMyw3ICszMyw3IEBA
IHB1YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAg
ICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKE9iamVjdFBy
b3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAg
ICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGlj
IE9iamVjdFByb3RvdHlwZSogY3JlYXRlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUq
KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb2dyYW1FeGVjdXRhYmxl
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvZ3JhbUV4
ZWN1dGFibGUuaAkocmV2aXNpb24gMjg2MDQzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvUHJvZ3JhbUV4ZWN1dGFibGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzksNyArMzksNyBA
QCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNz
PgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKLSAg
ICAgICAgcmV0dXJuICZ2bS5wcm9ncmFtRXhlY3V0YWJsZVNwYWNlLnNwYWNlOworICAgICAgICBy
ZXR1cm4gJnZtLnByb2dyYW1FeGVjdXRhYmxlU3BhY2UoKS5zcGFjZTsKICAgICB9CiAKICAgICBz
dGF0aWMgUHJvZ3JhbUV4ZWN1dGFibGUqIGNyZWF0ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Qcm9wZXJ0eVRhYmxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvUHJvcGVydHlUYWJsZS5oCShyZXZpc2lvbiAyODYwNDMpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eVRhYmxlLmgJKHdvcmtpbmcgY29weSkK
QEAgLTEyOSw3ICsxMjksNyBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5
cGUsIFN1YnNwYWNlQWNjZXNzPgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3Io
Vk0mIHZtKQogICAgIHsKLSAgICAgICAgcmV0dXJuICZ2bS5wcm9wZXJ0eVRhYmxlU3BhY2U7Cisg
ICAgICAgIHJldHVybiAmdm0ucHJvcGVydHlUYWJsZVNwYWNlKCk7CiAgICAgfQogCiAgICAgc3Rh
dGljIGNvbnN0ZXhwciBib29sIG5lZWRzRGVzdHJ1Y3Rpb24gPSB0cnVlOwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVmbGVjdE9iamVjdC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZmxlY3RPYmplY3QuaAkocmV2aXNpb24gMjg2
MDQzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVmbGVjdE9iamVjdC5oCSh3
b3JraW5nIGNvcHkpCkBAIC0zOCw3ICszOCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vi
c3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRf
SVNPX1NVQlNQQUNFX1NIQVJBQkxFKFJlZmxlY3RPYmplY3QsIEJhc2UpOwotICAgICAgICByZXR1
cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RT
cGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBSZWZsZWN0T2JqZWN0KiBjcmVhdGUoVk0mIHZt
LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cC5oCShyZXZpc2lvbiAyODYwNDMp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHAuaAkod29ya2luZyBjb3B5
KQpAQCAtNDksNyArNDksNyBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5
cGUsIFN1YnNwYWNlQWNjZXNzIG1vZGU+CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFj
ZUZvcihWTSYgdm0pCiAgICAgewotICAgICAgICByZXR1cm4gJnZtLnJlZ0V4cFNwYWNlOworICAg
ICAgICByZXR1cm4gJnZtLnJlZ0V4cFNwYWNlKCk7CiAgICAgfQogCiAgICAgSlNfRVhQT1JUX1BS
SVZBVEUgc3RhdGljIFJlZ0V4cCogY3JlYXRlKFZNJiwgY29uc3QgU3RyaW5nJiBwYXR0ZXJuLCBP
cHRpb25TZXQ8WWFycjo6RmxhZ3M+KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1JlZ0V4cE9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1JlZ0V4cE9iamVjdC5oCShyZXZpc2lvbiAyODYwNDMpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9SZWdFeHBPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtMzYsNyAr
MzYsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYg
dm0pCiAgICAgewogICAgICAgICBzdGF0aWNfYXNzZXJ0KCFDZWxsVHlwZTo6bmVlZHNEZXN0cnVj
dGlvbiwgIiIpOwotICAgICAgICByZXR1cm4gJnZtLnJlZ0V4cE9iamVjdFNwYWNlOworICAgICAg
ICByZXR1cm4gJnZtLnJlZ0V4cE9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIGNv
bnN0ZXhwciB1aW50cHRyX3QgbGFzdEluZGV4SXNOb3RXcml0YWJsZUZsYWcgPSAwYjAxOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwUHJvdG90eXBlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwUHJvdG90eXBlLmgJ
KHJldmlzaW9uIDI4NjA0MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4
cFByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw3ICszNCw3IEBAIHB1YmxpYzoKICAg
ICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAg
IFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKFJlZ0V4cFByb3RvdHlwZSwgQmFz
ZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJu
ICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIFJlZ0V4cFByb3Rv
dHlwZSogY3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdF
eHBTdHJpbmdJdGVyYXRvclByb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1JlZ0V4cFN0cmluZ0l0ZXJhdG9yUHJvdG90eXBlLmgJKHJldmlzaW9u
IDI4NjA0MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cFN0cmluZ0l0
ZXJhdG9yUHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM5LDcgKzM5LDcgQEAgcHVibGlj
OgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAg
ICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoUmVnRXhwU3RyaW5nSXRl
cmF0b3JQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3Bh
Y2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAg
IHN0YXRpYyBSZWdFeHBTdHJpbmdJdGVyYXRvclByb3RvdHlwZSogY3JlYXRlKFZNJiB2bSwgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TY29wZWRBcmd1bWVudHMuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Njb3BlZEFyZ3VtZW50cy5jcHAJ
KHJldmlzaW9uIDI4NjA0MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Njb3Bl
ZEFyZ3VtZW50cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU1LDcgKzU1LDcgQEAgU2NvcGVkQXJn
dW1lbnRzKiBTY29wZWRBcmd1bWVudHM6OmNyZWF0ZQogICAgIFdyaXRlQmFycmllcjxVbmtub3du
Piogc3RvcmFnZSA9IG51bGxwdHI7CiAgICAgaWYgKHRvdGFsTGVuZ3RoID4gdGFibGUtPmxlbmd0
aCgpKSB7CiAgICAgICAgIENoZWNrZWQ8dW5zaWduZWQ+IG92ZXJmbG93TGVuZ3RoID0gdG90YWxM
ZW5ndGggLSB0YWJsZS0+bGVuZ3RoKCk7Ci0gICAgICAgIHN0b3JhZ2UgPSBzdGF0aWNfY2FzdDxX
cml0ZUJhcnJpZXI8VW5rbm93bj4qPih2bS5qc1ZhbHVlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZS5h
bGxvY2F0ZU5vblZpcnR1YWwodm0sIG92ZXJmbG93TGVuZ3RoICogc2l6ZW9mKFdyaXRlQmFycmll
cjxVbmtub3duPiksIG51bGxwdHIsIEFsbG9jYXRpb25GYWlsdXJlTW9kZTo6QXNzZXJ0KSk7Cisg
ICAgICAgIHN0b3JhZ2UgPSBzdGF0aWNfY2FzdDxXcml0ZUJhcnJpZXI8VW5rbm93bj4qPih2bS5q
c1ZhbHVlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZSgpLmFsbG9jYXRlTm9uVmlydHVhbCh2bSwgb3Zl
cmZsb3dMZW5ndGggKiBzaXplb2YoV3JpdGVCYXJyaWVyPFVua25vd24+KSwgbnVsbHB0ciwgQWxs
b2NhdGlvbkZhaWx1cmVNb2RlOjpBc3NlcnQpKTsKICAgICB9CiAKICAgICBTY29wZWRBcmd1bWVu
dHMqIHJlc3VsdCA9IG5ldyAoCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
Y29wZWRBcmd1bWVudHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9TY29wZWRBcmd1bWVudHMuaAkocmV2aXNpb24gMjg2MDQzKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvU2NvcGVkQXJndW1lbnRzLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ3
LDcgKzQ3LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3Io
Vk0mIHZtKQogICAgIHsKICAgICAgICAgc3RhdGljX2Fzc2VydCghQ2VsbFR5cGU6Om5lZWRzRGVz
dHJ1Y3Rpb24sICIiKTsKLSAgICAgICAgcmV0dXJuICZ2bS5zY29wZWRBcmd1bWVudHNTcGFjZTsK
KyAgICAgICAgcmV0dXJuICZ2bS5zY29wZWRBcmd1bWVudHNTcGFjZSgpOwogICAgIH0KIAogICAg
IC8vIENyZWF0ZXMgYW4gYXJndW1lbnRzIG9iamVjdCBidXQgbGVhdmVzIGl0IHVuaW5pdGlhbGl6
ZWQuIFRoaXMgaXMgZGFuZ2Vyb3VzIGlmIHdlIEdDIHJpZ2h0CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9TZXRJdGVyYXRvclByb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NldEl0ZXJhdG9yUHJvdG90eXBlLmgJKHJldmlz
aW9uIDI4NjA0MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NldEl0ZXJhdG9y
UHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM3LDcgKzM3LDcgQEAgcHVibGljOgogICAg
IHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAgICAg
U1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoU2V0SXRlcmF0b3JQcm90b3R5cGUs
IEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJl
dHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBTZXRJdGVy
YXRvclByb3RvdHlwZSogY3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9TZXRQcm90b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9TZXRQcm90b3R5cGUuaAkocmV2aXNpb24gMjg2MDQzKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvU2V0UHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM3LDcg
KzM3LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0m
IHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUo
U2V0UHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNl
OworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBz
dGF0aWMgY29uc3RleHByIHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJl
RmxhZ3MgfCBIYXNTdGF0aWNQcm9wZXJ0eVRhYmxlOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvU2hhZG93UmVhbG1Qcm90b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TaGFkb3dSZWFsbVByb3RvdHlwZS5oCShyZXZpc2lvbiAy
ODYwNDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TaGFkb3dSZWFsbVByb3Rv
dHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw3ICszOSw3IEBAIHB1YmxpYzoKICAgICBzdGF0
aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJ
Q19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKFNoYWRvd1JlYWxtUHJvdG90eXBlLCBCYXNl
KTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4g
JnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgU2hhZG93UmVhbG1Q
cm90b3R5cGUqIGNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3BhcnNlQXJyYXlWYWx1ZU1hcC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NwYXJzZUFycmF5VmFsdWVNYXAu
aAkocmV2aXNpb24gMjg2MDQzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3Bh
cnNlQXJyYXlWYWx1ZU1hcC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTAsNyArMTEwLDcgQEAgcHVi
bGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlLCBTdWJzcGFjZUFjY2Vzcz4KICAg
ICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7Ci0gICAgICAg
IHJldHVybiAmdm0uc3BhcnNlQXJyYXlWYWx1ZU1hcFNwYWNlOworICAgICAgICByZXR1cm4gJnZt
LnNwYXJzZUFycmF5VmFsdWVNYXBTcGFjZSgpOwogICAgIH0KICAgICAKICAgICBzdGF0aWMgU3Ry
dWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mLCBKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUgcHJv
dG90eXBlKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ0l0ZXJh
dG9yUHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU3RyaW5nSXRlcmF0b3JQcm90b3R5cGUuaAkocmV2aXNpb24gMjg2MDQzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nSXRlcmF0b3JQcm90b3R5cGUuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMzksNyArMzksNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIElzb1N1YnNwYWNl
KiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19T
VUJTUEFDRV9TSEFSQUJMRShTdHJpbmdJdGVyYXRvclByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAg
IHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9i
amVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIFN0cmluZ0l0ZXJhdG9yUHJvdG90eXBl
KiBjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ09i
amVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmlu
Z09iamVjdC5oCShyZXZpc2lvbiAyODYwNDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9TdHJpbmdPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtMzMsNyArMzMsNyBAQCBwdWJs
aWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUsIFN1YnNwYWNlQWNjZXNzIG1vZGU+CiAgICAgc3Rh
dGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewotICAgICAgICByZXR1
cm4gJnZtLnN0cmluZ09iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnN0cmluZ09iamVj
dFNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIFN0cmluZ09iamVjdCogY3JlYXRlKFZNJiB2
bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9TdHJ1Y3R1cmUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9TdHJ1Y3R1cmUuaAkocmV2aXNpb24gMjg2MDQzKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvU3RydWN0dXJlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEyOCw3ICsxMjgsNyBA
QCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNz
PgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKLSAg
ICAgICAgcmV0dXJuICZ2bS5zdHJ1Y3R1cmVTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5zdHJ1
Y3R1cmVTcGFjZSgpOwogICAgIH0KIAogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29s
IGlzVmFsaWRQcm90b3R5cGUoSlNWYWx1ZSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9TdHJ1Y3R1cmVDaGFpbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlQ2hhaW4uY3BwCShyZXZpc2lvbiAyODYwNDMpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVDaGFpbi5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTQ4LDcgKzQ4LDcgQEAgU3RydWN0dXJlQ2hhaW4qIFN0cnVjdHVyZUNoYWluOjpj
cmVhdGUoVgogICAgICAgICArK3NpemU7CiAgICAgKytzaXplOyAvLyBTZW50aW5lbCBudWxscHRy
LgogICAgIHNpemVfdCBieXRlcyA9IENoZWNrZWQ8c2l6ZV90PihzaXplKSAqIHNpemVvZihTdHJ1
Y3R1cmVJRCk7Ci0gICAgU3RydWN0dXJlSUQqIHZlY3RvciA9IHN0YXRpY19jYXN0PFN0cnVjdHVy
ZUlEKj4odm0uanNWYWx1ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UuYWxsb2NhdGVOb25WaXJ0dWFs
KHZtLCBieXRlcywgbnVsbHB0ciwgQWxsb2NhdGlvbkZhaWx1cmVNb2RlOjpBc3NlcnQpKTsKKyAg
ICBTdHJ1Y3R1cmVJRCogdmVjdG9yID0gc3RhdGljX2Nhc3Q8U3RydWN0dXJlSUQqPih2bS5qc1Zh
bHVlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZSgpLmFsbG9jYXRlTm9uVmlydHVhbCh2bSwgYnl0ZXMs
IG51bGxwdHIsIEFsbG9jYXRpb25GYWlsdXJlTW9kZTo6QXNzZXJ0KSk7CiAgICAgbWVtc2V0KHZl
Y3RvciwgMCwgYnl0ZXMpOwogICAgIFN0cnVjdHVyZUNoYWluKiBjaGFpbiA9IG5ldyAoTm90TnVs
bCwgYWxsb2NhdGVDZWxsPFN0cnVjdHVyZUNoYWluPih2bSkpIFN0cnVjdHVyZUNoYWluKHZtLCB2
bS5zdHJ1Y3R1cmVDaGFpblN0cnVjdHVyZS5nZXQoKSwgdmVjdG9yKTsKICAgICBjaGFpbi0+Zmlu
aXNoQ3JlYXRpb24odm0sIGhlYWQpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU3RydWN0dXJlQ2hhaW4uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9TdHJ1Y3R1cmVDaGFpbi5oCShyZXZpc2lvbiAyODYwNDMpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVDaGFpbi5oCSh3b3JraW5nIGNvcHkpCkBAIC00
Niw3ICs0Niw3IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vi
c3BhY2VBY2Nlc3M+CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0p
CiAgICAgewotICAgICAgICByZXR1cm4gJnZtLnN0cnVjdHVyZUNoYWluU3BhY2U7CisgICAgICAg
IHJldHVybiAmdm0uc3RydWN0dXJlQ2hhaW5TcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBT
dHJ1Y3R1cmVDaGFpbiogY3JlYXRlKFZNJiwgSlNPYmplY3QqKTsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZVJhcmVEYXRhLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlUmFyZURhdGEuaAkocmV2aXNpb24g
Mjg2MDQzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlUmFyZURh
dGEuaAkod29ya2luZyBjb3B5KQpAQCAtNjYsNyArNjYsNyBAQCBwdWJsaWM6CiAgICAgdGVtcGxh
dGU8dHlwZW5hbWUgQ2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNzPgogICAgIHN0YXRpYyBJc29TdWJz
cGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKLSAgICAgICAgcmV0dXJuICZ2bS5zdHJ1
Y3R1cmVSYXJlRGF0YVNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnN0cnVjdHVyZVJhcmVEYXRh
U3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgU3RydWN0dXJlUmFyZURhdGEqIGNyZWF0ZShW
TSYsIFN0cnVjdHVyZSopOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3lt
Ym9sUHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU3ltYm9sUHJvdG90eXBlLmgJKHJldmlzaW9uIDI4NjA0MykKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1N5bWJvbFByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00MSw3
ICs0MSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZN
JiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxF
KFN5bWJvbFByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RT
cGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAg
ICAgc3RhdGljIFN5bWJvbFByb3RvdHlwZSogY3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9TeW1ib2xUYWJsZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbFRhYmxlLmgJKHJldmlzaW9uIDI4NjA0MykKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbFRhYmxlLmgJKHdvcmtpbmcgY29weSkK
QEAgLTQ1Niw3ICs0NTYsNyBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5
cGUsIFN1YnNwYWNlQWNjZXNzPgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3Io
Vk0mIHZtKQogICAgIHsKLSAgICAgICAgcmV0dXJuICZ2bS5zeW1ib2xUYWJsZVNwYWNlOworICAg
ICAgICByZXR1cm4gJnZtLnN5bWJvbFRhYmxlU3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMg
U3ltYm9sVGFibGUqIGNyZWF0ZShWTSYgdm0pCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9UZW1wb3JhbENhbGVuZGFyUHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxDYWxlbmRhclByb3RvdHlwZS5oCShyZXZp
c2lvbiAyODYwNDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbENh
bGVuZGFyUHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM4LDcgKzM4LDcgQEAgcHVibGlj
OgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAg
ICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoVGVtcG9yYWxDYWxlbmRh
clByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsK
KyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAgc3Rh
dGljIFRlbXBvcmFsQ2FsZW5kYXJQcm90b3R5cGUqIGNyZWF0ZShWTSYsIEpTR2xvYmFsT2JqZWN0
KiwgU3RydWN0dXJlKik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1w
b3JhbER1cmF0aW9uUHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvVGVtcG9yYWxEdXJhdGlvblByb3RvdHlwZS5oCShyZXZpc2lvbiAyODYwNDMp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbER1cmF0aW9uUHJvdG90
eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChD
KSAyMDIxIFNvbnkgSW50ZXJhY3RpdmUgRW50ZXJ0YWlubWVudCBJbmMuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCkBAIC0zOCw3ICszOSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNv
U3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NF
UlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKFRlbXBvcmFsRHVyYXRpb25Qcm90b3R5cGUsIEJhc2Up
OwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAm
dm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBUZW1wb3JhbER1cmF0
aW9uUHJvdG90eXBlKiBjcmVhdGUoVk0mLCBTdHJ1Y3R1cmUqKTsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsSW5zdGFudFByb3RvdHlwZS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsSW5zdGFudFByb3RvdHlw
ZS5oCShyZXZpc2lvbiAyODYwNDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9U
ZW1wb3JhbEluc3RhbnRQcm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDYgQEAK
IC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMjEgSWdhbGlhIFMuTC4KKyAqIENvcHlyaWdodCAoQykg
MjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTM4LDcgKzM5LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJc29TdWJz
cGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9J
U09fU1VCU1BBQ0VfU0hBUkFCTEUoVGVtcG9yYWxJbnN0YW50UHJvdG90eXBlLCBCYXNlKTsKLSAg
ICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBs
YWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgVGVtcG9yYWxJbnN0YW50UHJv
dG90eXBlKiBjcmVhdGUoVk0mLCBTdHJ1Y3R1cmUqKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1RlbXBvcmFsTm93LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxOb3cuaAkocmV2aXNpb24gMjg2MDQzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxOb3cuaAkod29ya2luZyBjb3B5KQpAQCAt
MSw1ICsxLDYgQEAKIC8qCiAgKiAgQ29weXJpZ2h0IChDKSAyMDIxIElnYWxpYSwgUy5MLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5
b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRl
cm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCkBAIC0zMiw3ICszMyw3IEBAIHB1
YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7
CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKFRlbXBvcmFsTm93
LCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICBy
ZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgVGVtcG9y
YWxOb3cqIGNyZWF0ZShWTSYsIFN0cnVjdHVyZSopOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvVGVtcG9yYWxPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9UZW1wb3JhbE9iamVjdC5oCShyZXZpc2lvbiAyODYwNDMpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbE9iamVjdC5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDYgKzEsNyBAQAogLyoKICAqICBDb3B5cmlnaHQgKEMpIDIwMjEgSWdhbGlhLCBT
LkwuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiAgQ29weXJpZ2h0IChDKSAyMDIxIFNvbnkgSW50
ZXJhY3RpdmUgRW50ZXJ0YWlubWVudCBJbmMuCisgKiAgQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUg
c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogIG1vZGlmeSBpdCB1
bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKQEAgLTY0LDcg
KzY1LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0m
IHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUo
VGVtcG9yYWxPYmplY3QsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3Bh
Y2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAg
IHN0YXRpYyBUZW1wb3JhbE9iamVjdCogY3JlYXRlKFZNJiwgU3RydWN0dXJlKik7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbFBsYWluVGltZVByb3RvdHlwZS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsUGxh
aW5UaW1lUHJvdG90eXBlLmgJKHJldmlzaW9uIDI4NjA0MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1RlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkK
QEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4KKyAq
IENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM4LDcgKzM4LDcgQEAgcHVibGljOgogICAg
IHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAgICAg
U1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoVGVtcG9yYWxQbGFpblRpbWVQcm90
b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAg
ICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBU
ZW1wb3JhbFBsYWluVGltZVByb3RvdHlwZSogY3JlYXRlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBT
dHJ1Y3R1cmUqKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFs
VGltZVpvbmVQcm90b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9UZW1wb3JhbFRpbWVab25lUHJvdG90eXBlLmgJKHJldmlzaW9uIDI4NjA0MykKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsVGltZVpvbmVQcm90b3R5cGUu
aAkod29ya2luZyBjb3B5KQpAQCAtMzgsNyArMzgsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIElz
b1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNT
RVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShUZW1wb3JhbFRpbWVab25lUHJvdG90eXBlLCBCYXNl
KTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4g
JnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgVGVtcG9yYWxUaW1l
Wm9uZVByb3RvdHlwZSogY3JlYXRlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqKTsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAJKHJldmlzaW9uIDI4NjA0MykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMzIsMjEgKzMyLDE1IEBACiAjaW5jbHVkZSAiQWNjZXNzQ2FzZS5oIgogI2luY2x1ZGUgIkFn
Z3JlZ2F0ZUVycm9yLmgiCiAjaW5jbHVkZSAiQXJnTGlzdC5oIgotI2luY2x1ZGUgIkJpZ0ludE9i
amVjdC5oIgotI2luY2x1ZGUgIkJvb2xlYW5PYmplY3QuaCIKLSNpbmNsdWRlICJCcmFuZGVkU3Ry
dWN0dXJlLmgiCiAjaW5jbHVkZSAiQnVpbHRpbkV4ZWN1dGFibGVzLmgiCiAjaW5jbHVkZSAiQnl0
ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeS5oIgogI2luY2x1ZGUgIkNoZWNrcG9pbnRPU1JFeGl0U2lk
ZVN0YXRlLmgiCi0jaW5jbHVkZSAiQ2xvbmVkQXJndW1lbnRzLmgiCiAjaW5jbHVkZSAiQ29kZUJs
b2NrLmgiCiAjaW5jbHVkZSAiQ29kZUNhY2hlLmgiCiAjaW5jbHVkZSAiQ29tbW9uSWRlbnRpZmll
cnMuaCIKICNpbmNsdWRlICJDb250cm9sRmxvd1Byb2ZpbGVyLmgiCiAjaW5jbHVkZSAiQ3VzdG9t
R2V0dGVyU2V0dGVyLmgiCiAjaW5jbHVkZSAiRE9NQXR0cmlidXRlR2V0dGVyU2V0dGVyLmgiCi0j
aW5jbHVkZSAiRGF0ZUluc3RhbmNlLmgiCi0jaW5jbHVkZSAiRGVidWdnZXJTY29wZS5oIgogI2lu
Y2x1ZGUgIkRlZmVycmVkV29ya1RpbWVyLmgiCiAjaW5jbHVkZSAiRGlzYXNzZW1ibGVyLmgiCiAj
aW5jbHVkZSAiRG91YmxlUHJlZGljdGlvbkZ1enplckFnZW50LmgiCkBAIC01NSw3ICs0OSw2IEBA
CiAjaW5jbHVkZSAiRXhjZXB0aW9uLmgiCiAjaW5jbHVkZSAiRXhlY3V0YWJsZVRvQ29kZUJsb2Nr
RWRnZS5oIgogI2luY2x1ZGUgIkZUTFRodW5rcy5oIgotI2luY2x1ZGUgIkZhc3RNYWxsb2NBbGln
bmVkTWVtb3J5QWxsb2NhdG9yLmgiCiAjaW5jbHVkZSAiRmlsZUJhc2VkRnV6emVyQWdlbnQuaCIK
ICNpbmNsdWRlICJGdW5jdGlvbkNvZGVCbG9jay5oIgogI2luY2x1ZGUgIkZ1bmN0aW9uRXhlY3V0
YWJsZS5oIgpAQCAtNjYsNzcgKzU5LDI1IEBACiAjaW5jbHVkZSAiSGVhcFByb2ZpbGVyLmgiCiAj
aW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKICNpbmNsdWRlICJJbnRsQ2FjaGUuaCIKLSNpbmNsdWRl
ICJJbnRsQ29sbGF0b3IuaCIKLSNpbmNsdWRlICJJbnRsRGF0ZVRpbWVGb3JtYXQuaCIKLSNpbmNs
dWRlICJJbnRsRGlzcGxheU5hbWVzLmgiCi0jaW5jbHVkZSAiSW50bExpc3RGb3JtYXQuaCIKLSNp
bmNsdWRlICJJbnRsTG9jYWxlLmgiCi0jaW5jbHVkZSAiSW50bE51bWJlckZvcm1hdC5oIgotI2lu
Y2x1ZGUgIkludGxQbHVyYWxSdWxlcy5oIgotI2luY2x1ZGUgIkludGxSZWxhdGl2ZVRpbWVGb3Jt
YXQuaCIKLSNpbmNsdWRlICJJbnRsU2VnbWVudEl0ZXJhdG9yLmgiCi0jaW5jbHVkZSAiSW50bFNl
Z21lbnRlci5oIgotI2luY2x1ZGUgIkludGxTZWdtZW50cy5oIgotI2luY2x1ZGUgIklzb0hlYXBD
ZWxsVHlwZS5oIgotI2luY2x1ZGUgIklzb0lubGluZWRIZWFwQ2VsbFR5cGUuaCIKICNpbmNsdWRl
ICJKSVRDb2RlLmgiCiAjaW5jbHVkZSAiSklUT3BlcmF0aW9uTGlzdC5oIgogI2luY2x1ZGUgIkpJ
VFNpemVTdGF0aXN0aWNzLmgiCiAjaW5jbHVkZSAiSklUVGh1bmtzLmgiCiAjaW5jbHVkZSAiSklU
V29ya2xpc3QuaCIKLSNpbmNsdWRlICJKU0FQSUdsb2JhbE9iamVjdC5oIgogI2luY2x1ZGUgIkpT
QVBJVmFsdWVXcmFwcGVyLmgiCi0jaW5jbHVkZSAiSlNBUElXcmFwcGVyT2JqZWN0LmgiCi0jaW5j
bHVkZSAiSlNBcnJheS5oIgotI2luY2x1ZGUgIkpTQXJyYXlCdWZmZXIuaCIKLSNpbmNsdWRlICJK
U0FycmF5SXRlcmF0b3IuaCIKLSNpbmNsdWRlICJKU0FzeW5jR2VuZXJhdG9yLmgiCiAjaW5jbHVk
ZSAiSlNCaWdJbnQuaCIKLSNpbmNsdWRlICJKU0JvdW5kRnVuY3Rpb24uaCIKLSNpbmNsdWRlICJK
U0NhbGxiYWNrQ29uc3RydWN0b3IuaCIKLSNpbmNsdWRlICJKU0NhbGxiYWNrRnVuY3Rpb24uaCIK
LSNpbmNsdWRlICJKU0NhbGxiYWNrT2JqZWN0LmgiCi0jaW5jbHVkZSAiSlNDYWxsZWUuaCIKLSNp
bmNsdWRlICJKU0N1c3RvbUdldHRlckZ1bmN0aW9uLmgiCi0jaW5jbHVkZSAiSlNDdXN0b21TZXR0
ZXJGdW5jdGlvbi5oIgotI2luY2x1ZGUgIkpTRGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBl
LmgiCi0jaW5jbHVkZSAiSlNGaW5hbGl6YXRpb25SZWdpc3RyeS5oIgotI2luY2x1ZGUgIkpTRnVu
Y3Rpb24uaCIKLSNpbmNsdWRlICJKU0dsb2JhbExleGljYWxFbnZpcm9ubWVudC5oIgogI2luY2x1
ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCiAjaW5jbHVkZSAiSlNJbW11dGFibGVCdXR0ZXJmbHkuaCIK
LSNpbmNsdWRlICJKU0luamVjdGVkU2NyaXB0SG9zdC5oIgotI2luY2x1ZGUgIkpTSmF2YVNjcmlw
dENhbGxGcmFtZS5oIgogI2luY2x1ZGUgIkpTTG9jay5oIgogI2luY2x1ZGUgIkpTTWFwLmgiCi0j
aW5jbHVkZSAiSlNNYXBJdGVyYXRvci5oIgotI2luY2x1ZGUgIkpTTW9kdWxlTmFtZXNwYWNlT2Jq
ZWN0LmgiCi0jaW5jbHVkZSAiSlNNb2R1bGVSZWNvcmQuaCIKLSNpbmNsdWRlICJKU05hdGl2ZVN0
ZEZ1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNQcm9taXNlLmgiCiAjaW5jbHVkZSAiSlNQcm9wZXJ0
eU5hbWVFbnVtZXJhdG9yLmgiCi0jaW5jbHVkZSAiSlNQcm94eS5oIgogI2luY2x1ZGUgIkpTU2Ny
aXB0RmV0Y2hQYXJhbWV0ZXJzLmgiCiAjaW5jbHVkZSAiSlNTY3JpcHRGZXRjaGVyLmgiCiAjaW5j
bHVkZSAiSlNTZXQuaCIKLSNpbmNsdWRlICJKU1NldEl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiSlNT
b3VyY2VDb2RlLmgiCi0jaW5jbHVkZSAiSlNTdHJpbmdJdGVyYXRvci5oIgogI2luY2x1ZGUgIkpT
VGVtcGxhdGVPYmplY3REZXNjcmlwdG9yLmgiCi0jaW5jbHVkZSAiSlNUb1dhc21JQ0NhbGxlZS5o
IgotI2luY2x1ZGUgIkpTVHlwZWRBcnJheXMuaCIKLSNpbmNsdWRlICJKU1dlYWtNYXAuaCIKLSNp
bmNsdWRlICJKU1dlYWtPYmplY3RSZWYuaCIKLSNpbmNsdWRlICJKU1dlYWtTZXQuaCIKICNpbmNs
dWRlICJKU1dlYkFzc2VtYmx5Q29kZUJsb2NrLmgiCi0jaW5jbHVkZSAiSlNXZWJBc3NlbWJseUV4
Y2VwdGlvbi5oIgotI2luY2x1ZGUgIkpTV2ViQXNzZW1ibHlHbG9iYWwuaCIKLSNpbmNsdWRlICJK
U1dlYkFzc2VtYmx5SW5zdGFuY2UuaCIKLSNpbmNsdWRlICJKU1dlYkFzc2VtYmx5TWVtb3J5Lmgi
Ci0jaW5jbHVkZSAiSlNXZWJBc3NlbWJseU1vZHVsZS5oIgotI2luY2x1ZGUgIkpTV2ViQXNzZW1i
bHlUYWJsZS5oIgotI2luY2x1ZGUgIkpTV2ViQXNzZW1ibHlUYWcuaCIKLSNpbmNsdWRlICJKU1dp
dGhTY29wZS5oIgogI2luY2x1ZGUgIkxMSW50RGF0YS5oIgogI2luY2x1ZGUgIkxMSW50RXhjZXB0
aW9ucy5oIgogI2luY2x1ZGUgIk1hcmtlZEJsb2NrSW5saW5lcy5oIgpAQCAtMTUxLDI3ICs5Miwx
NiBAQAogI2luY2x1ZGUgIlByb2dyYW1Db2RlQmxvY2suaCIKICNpbmNsdWRlICJQcm9ncmFtRXhl
Y3V0YWJsZS5oIgogI2luY2x1ZGUgIlByb3BlcnR5VGFibGUuaCIKLSNpbmNsdWRlICJQcm94eVJl
dm9rZS5oIgogI2luY2x1ZGUgIlJhbmRvbWl6aW5nRnV6emVyQWdlbnQuaCIKICNpbmNsdWRlICJS
ZWdFeHBDYWNoZS5oIgotI2luY2x1ZGUgIlJlZ0V4cE9iamVjdC5oIgogI2luY2x1ZGUgIlNhbXBs
aW5nUHJvZmlsZXIuaCIKICNpbmNsdWRlICJTY29wZWRBcmd1bWVudHMuaCIKICNpbmNsdWRlICJT
aGFkb3dDaGlja2VuLmgiCi0jaW5jbHVkZSAiU2hhZG93UmVhbG1PYmplY3QuaCIKICNpbmNsdWRl
ICJTaW1wbGVUeXBlZEFycmF5Q29udHJvbGxlci5oIgogI2luY2x1ZGUgIlNvdXJjZVByb3ZpZGVy
Q2FjaGUuaCIKLSNpbmNsdWRlICJTdHJpY3RFdmFsQWN0aXZhdGlvbi5oIgotI2luY2x1ZGUgIlN0
cmluZ09iamVjdC5oIgogI2luY2x1ZGUgIlN0cm9uZ0lubGluZXMuaCIKICNpbmNsdWRlICJTdHJ1
Y3R1cmVDaGFpbi5oIgogI2luY2x1ZGUgIlN0cnVjdHVyZUlubGluZXMuaCIKLSNpbmNsdWRlICJT
eW1ib2xPYmplY3QuaCIKLSNpbmNsdWRlICJUZW1wb3JhbENhbGVuZGFyLmgiCi0jaW5jbHVkZSAi
VGVtcG9yYWxEdXJhdGlvbi5oIgotI2luY2x1ZGUgIlRlbXBvcmFsSW5zdGFudC5oIgotI2luY2x1
ZGUgIlRlbXBvcmFsUGxhaW5UaW1lLmgiCi0jaW5jbHVkZSAiVGVtcG9yYWxUaW1lWm9uZS5oIgog
I2luY2x1ZGUgIlRlc3RSdW5uZXJVdGlscy5oIgogI2luY2x1ZGUgIlRodW5rR2VuZXJhdG9ycy5o
IgogI2luY2x1ZGUgIlR5cGVQcm9maWxlci5oIgpAQCAtMTgzLDkgKzExMyw2IEBACiAjaW5jbHVk
ZSAiV2FzbVdvcmtsaXN0LmgiCiAjaW5jbHVkZSAiV2F0Y2hkb2cuaCIKICNpbmNsdWRlICJXZWFr
R0NNYXBJbmxpbmVzLmgiCi0jaW5jbHVkZSAiV2ViQXNzZW1ibHlGdW5jdGlvbi5oIgotI2luY2x1
ZGUgIldlYkFzc2VtYmx5TW9kdWxlUmVjb3JkLmgiCi0jaW5jbHVkZSAiV2ViQXNzZW1ibHlXcmFw
cGVyRnVuY3Rpb24uaCIKICNpbmNsdWRlICJXaWRlbmluZ051bWJlclByZWRpY3Rpb25GdXp6ZXJB
Z2VudC5oIgogI2luY2x1ZGUgPHd0Zi9Qcm9jZXNzSUQuaD4KICNpbmNsdWRlIDx3dGYvUmVhZFdy
aXRlTG9jay5oPgpAQCAtMjA3LDEwICsxMzQsNiBAQAogI2luY2x1ZGUgIlJlZ0V4cC5oIgogI2Vu
ZGlmCiAKLSNpZiBKU0NfT0JKQ19BUElfRU5BQkxFRAotI2luY2x1ZGUgIk9iakNDYWxsYmFja0Z1
bmN0aW9uLmgiCi0jZW5kaWYKLQogI2lmZGVmIEpTQ19HTElCX0FQSV9FTkFCTEVECiAjaW5jbHVk
ZSAiSlNBUElXcmFwcGVyR2xvYmFsT2JqZWN0LmgiCiAjaW5jbHVkZSAiSlNDQ2FsbGJhY2tGdW5j
dGlvbi5oIgpAQCAtMjkxLDEwOSArMjE0LDYgQEAgVk06OlZNKFZNVHlwZSB2bVR5cGUsIEhlYXBU
eXBlIGhlYXBUeXBlLAogICAgICwgbV9yYW5kb20oT3B0aW9uczo6c2VlZE9mVk1SYW5kb21Gb3JG
dXp6ZXIoKSA/IE9wdGlvbnM6OnNlZWRPZlZNUmFuZG9tRm9yRnV6emVyKCkgOiBjcnlwdG9ncmFw
aGljYWxseVJhbmRvbU51bWJlcigpKQogICAgICwgbV9pbnRlZ3JpdHlSYW5kb20oKnRoaXMpCiAg
ICAgLCBoZWFwKCp0aGlzLCBoZWFwVHlwZSkKLSAgICAsIGZhc3RNYWxsb2NBbGxvY2F0b3IobWFr
ZVVuaXF1ZTxGYXN0TWFsbG9jQWxpZ25lZE1lbW9yeUFsbG9jYXRvcj4oKSkKLSAgICAsIHByaW1p
dGl2ZUdpZ2FjYWdlQWxsb2NhdG9yKG1ha2VVbmlxdWU8R2lnYWNhZ2VBbGlnbmVkTWVtb3J5QWxs
b2NhdG9yPihHaWdhY2FnZTo6UHJpbWl0aXZlKSkKLSAgICAsIGpzVmFsdWVHaWdhY2FnZUFsbG9j
YXRvcihtYWtlVW5pcXVlPEdpZ2FjYWdlQWxpZ25lZE1lbW9yeUFsbG9jYXRvcj4oR2lnYWNhZ2U6
OkpTVmFsdWUpKQotICAgICwgYXV4aWxpYXJ5SGVhcENlbGxUeXBlKG1ha2VVbmlxdWU8SGVhcENl
bGxUeXBlPihDZWxsQXR0cmlidXRlcyhEb2VzTm90TmVlZERlc3RydWN0aW9uLCBIZWFwQ2VsbDo6
QXV4aWxpYXJ5KSkpCi0gICAgLCBpbW11dGFibGVCdXR0ZXJmbHlIZWFwQ2VsbFR5cGUobWFrZVVu
aXF1ZTxIZWFwQ2VsbFR5cGU+KENlbGxBdHRyaWJ1dGVzKERvZXNOb3ROZWVkRGVzdHJ1Y3Rpb24s
IEhlYXBDZWxsOjpKU0NlbGxXaXRoSW5kZXhpbmdIZWFkZXIpKSkKLSAgICAsIGNlbGxIZWFwQ2Vs
bFR5cGUobWFrZVVuaXF1ZTxIZWFwQ2VsbFR5cGU+KENlbGxBdHRyaWJ1dGVzKERvZXNOb3ROZWVk
RGVzdHJ1Y3Rpb24sIEhlYXBDZWxsOjpKU0NlbGwpKSkKLSAgICAsIGRlc3RydWN0aWJsZUNlbGxI
ZWFwQ2VsbFR5cGUobWFrZVVuaXF1ZTxIZWFwQ2VsbFR5cGU+KENlbGxBdHRyaWJ1dGVzKE5lZWRz
RGVzdHJ1Y3Rpb24sIEhlYXBDZWxsOjpKU0NlbGwpKSkKLSAgICAsIGFwaUdsb2JhbE9iamVjdEhl
YXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OmNyZWF0ZTxKU0FQSUdsb2JhbE9iamVjdD4oKSkK
LSAgICAsIGNhbGxiYWNrQ29uc3RydWN0b3JIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpj
cmVhdGU8SlNDYWxsYmFja0NvbnN0cnVjdG9yPigpKQotICAgICwgY2FsbGJhY2tHbG9iYWxPYmpl
Y3RIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpjcmVhdGU8SlNDYWxsYmFja09iamVjdDxK
U0dsb2JhbE9iamVjdD4+KCkpCi0gICAgLCBjYWxsYmFja09iamVjdEhlYXBDZWxsVHlwZShJc29I
ZWFwQ2VsbFR5cGU6OmNyZWF0ZTxKU0NhbGxiYWNrT2JqZWN0PEpTTm9uRmluYWxPYmplY3Q+Pigp
KQotICAgICwgY3VzdG9tR2V0dGVyRnVuY3Rpb25IZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBl
OjpjcmVhdGU8SlNDdXN0b21HZXR0ZXJGdW5jdGlvbj4oKSkKLSAgICAsIGN1c3RvbVNldHRlckZ1
bmN0aW9uSGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6Y3JlYXRlPEpTQ3VzdG9tU2V0dGVy
RnVuY3Rpb24+KCkpCi0gICAgLCBkYXRlSW5zdGFuY2VIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxU
eXBlOjpjcmVhdGU8RGF0ZUluc3RhbmNlPigpKQotICAgICwgZXJyb3JJbnN0YW5jZUhlYXBDZWxs
VHlwZShJc29IZWFwQ2VsbFR5cGU6OmNyZWF0ZTxFcnJvckluc3RhbmNlPigpKQotICAgICwgZmlu
YWxpemF0aW9uUmVnaXN0cnlDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OmNyZWF0ZTxKU0ZpbmFs
aXphdGlvblJlZ2lzdHJ5PigpKQotICAgICwgZ2xvYmFsTGV4aWNhbEVudmlyb25tZW50SGVhcENl
bGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6Y3JlYXRlPEpTR2xvYmFsTGV4aWNhbEVudmlyb25tZW50
PigpKQotICAgICwgZ2xvYmFsT2JqZWN0SGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6Y3Jl
YXRlPEpTR2xvYmFsT2JqZWN0PigpKQotICAgICwgaW5qZWN0ZWRTY3JpcHRIb3N0U3BhY2VIZWFw
Q2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpjcmVhdGU8SW5zcGVjdG9yOjpKU0luamVjdGVkU2Ny
aXB0SG9zdD4oKSkKLSAgICAsIGphdmFTY3JpcHRDYWxsRnJhbWVIZWFwQ2VsbFR5cGUoSXNvSGVh
cENlbGxUeXBlOjpjcmVhdGU8SW5zcGVjdG9yOjpKU0phdmFTY3JpcHRDYWxsRnJhbWU+KCkpCi0g
ICAgLCBqc01vZHVsZVJlY29yZEhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OmNyZWF0ZTxK
U01vZHVsZVJlY29yZD4oKSkKLSAgICAsIG1vZHVsZU5hbWVzcGFjZU9iamVjdEhlYXBDZWxsVHlw
ZShJc29IZWFwQ2VsbFR5cGU6OmNyZWF0ZTxKU01vZHVsZU5hbWVzcGFjZU9iamVjdD4oKSkKLSAg
ICAsIG5hdGl2ZVN0ZEZ1bmN0aW9uSGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6Y3JlYXRl
PEpTTmF0aXZlU3RkRnVuY3Rpb24+KCkpCi0gICAgLCBzdHJpbmdIZWFwQ2VsbFR5cGUobWFrZVVu
aXF1ZTxJc29JbmxpbmVkSGVhcENlbGxUeXBlPEpTU3RyaW5nPj4oKSkKLSAgICAsIHdlYWtNYXBI
ZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpjcmVhdGU8SlNXZWFrTWFwPigpKQotICAgICwg
d2Vha1NldEhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OmNyZWF0ZTxKU1dlYWtTZXQ+KCkp
Ci0gICAgLCBkZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUobWFrZVVuaXF1ZTxKU0Rlc3Ry
dWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZT4oKSkKLSNpZiBKU0NfT0JKQ19BUElfRU5BQkxFRAot
ICAgICwgYXBpV3JhcHBlck9iamVjdEhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OmNyZWF0
ZTxKU0NhbGxiYWNrT2JqZWN0PEpTQVBJV3JhcHBlck9iamVjdD4+KCkpCi0gICAgLCBvYmpDQ2Fs
bGJhY2tGdW5jdGlvbkhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OmNyZWF0ZTxPYmpDQ2Fs
bGJhY2tGdW5jdGlvbj4oKSkKLSNlbmRpZgotI2lmZGVmIEpTQ19HTElCX0FQSV9FTkFCTEVECi0g
ICAgLCBhcGlXcmFwcGVyT2JqZWN0SGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6Y3JlYXRl
PEpTQ2FsbGJhY2tPYmplY3Q8SlNBUElXcmFwcGVyT2JqZWN0Pj4oKSkKLSAgICAsIGNhbGxiYWNr
QVBJV3JhcHBlckdsb2JhbE9iamVjdEhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OmNyZWF0
ZTxKU0NhbGxiYWNrT2JqZWN0PEpTQVBJV3JhcHBlckdsb2JhbE9iamVjdD4+KCkpCi0gICAgLCBq
c2NDYWxsYmFja0Z1bmN0aW9uSGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6Y3JlYXRlPEpT
Q0NhbGxiYWNrRnVuY3Rpb24+KCkpCi0jZW5kaWYKLSAgICAsIGludGxDb2xsYXRvckhlYXBDZWxs
VHlwZShJc29IZWFwQ2VsbFR5cGU6OmNyZWF0ZTxJbnRsQ29sbGF0b3I+KCkpCi0gICAgLCBpbnRs
RGF0ZVRpbWVGb3JtYXRIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpjcmVhdGU8SW50bERh
dGVUaW1lRm9ybWF0PigpKQotICAgICwgaW50bERpc3BsYXlOYW1lc0hlYXBDZWxsVHlwZShJc29I
ZWFwQ2VsbFR5cGU6OmNyZWF0ZTxJbnRsRGlzcGxheU5hbWVzPigpKQotICAgICwgaW50bExpc3RG
b3JtYXRIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpjcmVhdGU8SW50bExpc3RGb3JtYXQ+
KCkpCi0gICAgLCBpbnRsTG9jYWxlSGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6Y3JlYXRl
PEludGxMb2NhbGU+KCkpCi0gICAgLCBpbnRsTnVtYmVyRm9ybWF0SGVhcENlbGxUeXBlKElzb0hl
YXBDZWxsVHlwZTo6Y3JlYXRlPEludGxOdW1iZXJGb3JtYXQ+KCkpCi0gICAgLCBpbnRsUGx1cmFs
UnVsZXNIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpjcmVhdGU8SW50bFBsdXJhbFJ1bGVz
PigpKQotICAgICwgaW50bFJlbGF0aXZlVGltZUZvcm1hdEhlYXBDZWxsVHlwZShJc29IZWFwQ2Vs
bFR5cGU6OmNyZWF0ZTxJbnRsUmVsYXRpdmVUaW1lRm9ybWF0PigpKQotICAgICwgaW50bFNlZ21l
bnRJdGVyYXRvckhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OmNyZWF0ZTxJbnRsU2VnbWVu
dEl0ZXJhdG9yPigpKQotICAgICwgaW50bFNlZ21lbnRlckhlYXBDZWxsVHlwZShJc29IZWFwQ2Vs
bFR5cGU6OmNyZWF0ZTxJbnRsU2VnbWVudGVyPigpKQotICAgICwgaW50bFNlZ21lbnRzSGVhcENl
bGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6Y3JlYXRlPEludGxTZWdtZW50cz4oKSkKLSNpZiBFTkFC
TEUoV0VCQVNTRU1CTFkpCi0gICAgLCB3ZWJBc3NlbWJseUNvZGVCbG9ja0hlYXBDZWxsVHlwZShJ
c29IZWFwQ2VsbFR5cGU6OmNyZWF0ZTxKU1dlYkFzc2VtYmx5Q29kZUJsb2NrPigpKQotICAgICwg
d2ViQXNzZW1ibHlFeGNlcHRpb25IZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpjcmVhdGU8
SlNXZWJBc3NlbWJseUV4Y2VwdGlvbj4oKSkKLSAgICAsIHdlYkFzc2VtYmx5RnVuY3Rpb25IZWFw
Q2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpjcmVhdGU8V2ViQXNzZW1ibHlGdW5jdGlvbj4oKSkK
LSAgICAsIHdlYkFzc2VtYmx5R2xvYmFsSGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6Y3Jl
YXRlPEpTV2ViQXNzZW1ibHlHbG9iYWw+KCkpCi0gICAgLCB3ZWJBc3NlbWJseUluc3RhbmNlSGVh
cENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6Y3JlYXRlPEpTV2ViQXNzZW1ibHlJbnN0YW5jZT4o
KSkKLSAgICAsIHdlYkFzc2VtYmx5TWVtb3J5SGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6
Y3JlYXRlPEpTV2ViQXNzZW1ibHlNZW1vcnk+KCkpCi0gICAgLCB3ZWJBc3NlbWJseU1vZHVsZUhl
YXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OmNyZWF0ZTxKU1dlYkFzc2VtYmx5TW9kdWxlPigp
KQotICAgICwgd2ViQXNzZW1ibHlNb2R1bGVSZWNvcmRIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxU
eXBlOjpjcmVhdGU8V2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQ+KCkpCi0gICAgLCB3ZWJBc3NlbWJs
eVRhYmxlSGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6Y3JlYXRlPEpTV2ViQXNzZW1ibHlU
YWJsZT4oKSkKLSAgICAsIHdlYkFzc2VtYmx5VGFnSGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlw
ZTo6Y3JlYXRlPEpTV2ViQXNzZW1ibHlUYWc+KCkpCi0jZW5kaWYKLSAgICAsIHByaW1pdGl2ZUdp
Z2FjYWdlQXV4aWxpYXJ5U3BhY2UoIlByaW1pdGl2ZSBHaWdhY2FnZSBBdXhpbGlhcnkiLCBoZWFw
LCAqYXV4aWxpYXJ5SGVhcENlbGxUeXBlLCBwcmltaXRpdmVHaWdhY2FnZUFsbG9jYXRvci5nZXQo
KSkgLy8gSGFzaDoweDNlN2NkNzYyCi0gICAgLCBqc1ZhbHVlR2lnYWNhZ2VBdXhpbGlhcnlTcGFj
ZSgiSlNWYWx1ZSBHaWdhY2FnZSBBdXhpbGlhcnkiLCBoZWFwLCAqYXV4aWxpYXJ5SGVhcENlbGxU
eXBlLCBqc1ZhbHVlR2lnYWNhZ2VBbGxvY2F0b3IuZ2V0KCkpIC8vIEhhc2g6MHgyNDFlOTQ2Ci0g
ICAgLCBpbW11dGFibGVCdXR0ZXJmbHlKU1ZhbHVlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZSgiSW1t
dXRhYmxlQnV0dGVyZmx5IEdpZ2FjYWdlIEpTQ2VsbFdpdGhJbmRleGluZ0hlYWRlciIsIGhlYXAs
ICppbW11dGFibGVCdXR0ZXJmbHlIZWFwQ2VsbFR5cGUsIGpzVmFsdWVHaWdhY2FnZUFsbG9jYXRv
ci5nZXQoKSkgLy8gSGFzaDoweDdhOTQ1MzAwCi0gICAgLCBjZWxsU3BhY2UoIkpTQ2VsbCIsIGhl
YXAsICpjZWxsSGVhcENlbGxUeXBlLCBmYXN0TWFsbG9jQWxsb2NhdG9yLmdldCgpKSAvLyBIYXNo
OjB4YWRmYjVhNzkKLSAgICAsIHZhcmlhYmxlU2l6ZWRDZWxsU3BhY2UoIlZhcmlhYmxlIFNpemVk
IEpTQ2VsbCIsIGhlYXAsICpjZWxsSGVhcENlbGxUeXBlLCBmYXN0TWFsbG9jQWxsb2NhdG9yLmdl
dCgpKSAvLyBIYXNoOjB4YmNkNzY5Y2MKLSAgICAsIGRlc3RydWN0aWJsZU9iamVjdFNwYWNlKCJK
U0Rlc3RydWN0aWJsZU9iamVjdCIsIGhlYXAsICpkZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5
cGUsIGZhc3RNYWxsb2NBbGxvY2F0b3IuZ2V0KCkpIC8vIEhhc2g6MHg0ZjVlZDdhOQotICAgICwg
YXJyYXlTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVChoZWFwLCAqY2VsbEhlYXBDZWxsVHlwZSwgSlNB
cnJheSkKLSAgICAsIGJpZ0ludFNwYWNlIElTT19TVUJTUEFDRV9JTklUKGhlYXAsICpjZWxsSGVh
cENlbGxUeXBlLCBKU0JpZ0ludCkKLSAgICAsIGNhbGxlZVNwYWNlIElTT19TVUJTUEFDRV9JTklU
KGhlYXAsICpjZWxsSGVhcENlbGxUeXBlLCBKU0NhbGxlZSkKLSAgICAsIGNsb25lZEFyZ3VtZW50
c1NwYWNlIElTT19TVUJTUEFDRV9JTklUKGhlYXAsICpjZWxsSGVhcENlbGxUeXBlLCBDbG9uZWRB
cmd1bWVudHMpCi0gICAgLCBjdXN0b21HZXR0ZXJTZXR0ZXJTcGFjZSBJU09fU1VCU1BBQ0VfSU5J
VChoZWFwLCAqY2VsbEhlYXBDZWxsVHlwZSwgQ3VzdG9tR2V0dGVyU2V0dGVyKQotICAgICwgZGF0
ZUluc3RhbmNlU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoaGVhcCwgKmRhdGVJbnN0YW5jZUhlYXBD
ZWxsVHlwZSwgRGF0ZUluc3RhbmNlKQotICAgICwgZG9tQXR0cmlidXRlR2V0dGVyU2V0dGVyU3Bh
Y2UgSVNPX1NVQlNQQUNFX0lOSVQoaGVhcCwgKmNlbGxIZWFwQ2VsbFR5cGUsIERPTUF0dHJpYnV0
ZUdldHRlclNldHRlcikKLSAgICAsIGV4Y2VwdGlvblNwYWNlIElTT19TVUJTUEFDRV9JTklUKGhl
YXAsICpkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlLCBFeGNlcHRpb24pCi0gICAgLCBleGVj
dXRhYmxlVG9Db2RlQmxvY2tFZGdlU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoaGVhcCwgKmNlbGxI
ZWFwQ2VsbFR5cGUsIEV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2UpIC8vIEhhc2g6MHg3YjczMGIy
MAotICAgICwgZnVuY3Rpb25TcGFjZSBJU09fU1VCU1BBQ0VfSU5JVChoZWFwLCAqY2VsbEhlYXBD
ZWxsVHlwZSwgSlNGdW5jdGlvbikgLy8gSGFzaDoweDgwMGZjYTcyCi0gICAgLCBnZXR0ZXJTZXR0
ZXJTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVChoZWFwLCAqY2VsbEhlYXBDZWxsVHlwZSwgR2V0dGVy
U2V0dGVyKQotICAgICwgZ2xvYmFsTGV4aWNhbEVudmlyb25tZW50U3BhY2UgSVNPX1NVQlNQQUNF
X0lOSVQoaGVhcCwgKmdsb2JhbExleGljYWxFbnZpcm9ubWVudEhlYXBDZWxsVHlwZSwgSlNHbG9i
YWxMZXhpY2FsRW52aXJvbm1lbnQpCi0gICAgLCBpbnRlcm5hbEZ1bmN0aW9uU3BhY2UgSVNPX1NV
QlNQQUNFX0lOSVQoaGVhcCwgKmNlbGxIZWFwQ2VsbFR5cGUsIEludGVybmFsRnVuY3Rpb24pIC8v
IEhhc2g6MHhmODQ1YzQ2NAotICAgICwganNQcm94eVNwYWNlIElTT19TVUJTUEFDRV9JTklUKGhl
YXAsICpjZWxsSGVhcENlbGxUeXBlLCBKU1Byb3h5KQotICAgICwgbmF0aXZlRXhlY3V0YWJsZVNw
YWNlIElTT19TVUJTUEFDRV9JTklUKGhlYXAsICpkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBl
LCBOYXRpdmVFeGVjdXRhYmxlKSAvLyBIYXNoOjB4Njc1NjdmOTUKLSAgICAsIG51bWJlck9iamVj
dFNwYWNlIElTT19TVUJTUEFDRV9JTklUKGhlYXAsICpjZWxsSGVhcENlbGxUeXBlLCBOdW1iZXJP
YmplY3QpCi0gICAgLCBwbGFpbk9iamVjdFNwYWNlIElTT19TVUJTUEFDRV9JTklUKGhlYXAsICpj
ZWxsSGVhcENlbGxUeXBlLCBKU05vbkZpbmFsT2JqZWN0KSAvLyBNYWlubHkgdXNlZCBmb3IgcHJv
dG90eXBlcy4KLSAgICAsIHByb21pc2VTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVChoZWFwLCAqY2Vs
bEhlYXBDZWxsVHlwZSwgSlNQcm9taXNlKQotICAgICwgcHJvcGVydHlOYW1lRW51bWVyYXRvclNw
YWNlIElTT19TVUJTUEFDRV9JTklUKGhlYXAsICpjZWxsSGVhcENlbGxUeXBlLCBKU1Byb3BlcnR5
TmFtZUVudW1lcmF0b3IpCi0gICAgLCBwcm9wZXJ0eVRhYmxlU3BhY2UgSVNPX1NVQlNQQUNFX0lO
SVQoaGVhcCwgKmRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUsIFByb3BlcnR5VGFibGUpIC8v
IEhhc2g6MHhjNmJjOWYxMgotICAgICwgcmVnRXhwU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoaGVh
cCwgKmRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUsIFJlZ0V4cCkKLSAgICAsIHJlZ0V4cE9i
amVjdFNwYWNlIElTT19TVUJTUEFDRV9JTklUKGhlYXAsICpjZWxsSGVhcENlbGxUeXBlLCBSZWdF
eHBPYmplY3QpCi0gICAgLCByb3BlU3RyaW5nU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoaGVhcCwg
KnN0cmluZ0hlYXBDZWxsVHlwZSwgSlNSb3BlU3RyaW5nKQotICAgICwgc2NvcGVkQXJndW1lbnRz
U3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoaGVhcCwgKmNlbGxIZWFwQ2VsbFR5cGUsIFNjb3BlZEFy
Z3VtZW50cykKLSAgICAsIHNwYXJzZUFycmF5VmFsdWVNYXBTcGFjZSBJU09fU1VCU1BBQ0VfSU5J
VChoZWFwLCAqZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZSwgU3BhcnNlQXJyYXlWYWx1ZU1h
cCkKLSAgICAsIHN0cmluZ1NwYWNlIElTT19TVUJTUEFDRV9JTklUKGhlYXAsICpzdHJpbmdIZWFw
Q2VsbFR5cGUsIEpTU3RyaW5nKSAvLyBIYXNoOjB4OTBjZjc1OGYKLSAgICAsIHN0cmluZ09iamVj
dFNwYWNlIElTT19TVUJTUEFDRV9JTklUKGhlYXAsICpjZWxsSGVhcENlbGxUeXBlLCBTdHJpbmdP
YmplY3QpCi0gICAgLCBzdHJ1Y3R1cmVDaGFpblNwYWNlIElTT19TVUJTUEFDRV9JTklUKGhlYXAs
ICpjZWxsSGVhcENlbGxUeXBlLCBTdHJ1Y3R1cmVDaGFpbikKLSAgICAsIHN0cnVjdHVyZVJhcmVE
YXRhU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoaGVhcCwgKmRlc3RydWN0aWJsZUNlbGxIZWFwQ2Vs
bFR5cGUsIFN0cnVjdHVyZVJhcmVEYXRhKSAvLyBIYXNoOjB4YWNhNGU2MmQKLSAgICAsIHN0cnVj
dHVyZVNwYWNlIElTT19TVUJTUEFDRV9JTklUKGhlYXAsICpkZXN0cnVjdGlibGVDZWxsSGVhcENl
bGxUeXBlLCBTdHJ1Y3R1cmUpIC8vIEhhc2g6MHgxZjFiY2RjYQotICAgICwgYnJhbmRlZFN0cnVj
dHVyZVNwYWNlIElTT19TVUJTUEFDRV9JTklUKGhlYXAsICpkZXN0cnVjdGlibGVDZWxsSGVhcENl
bGxUeXBlLCBCcmFuZGVkU3RydWN0dXJlKQotICAgICwgc3ltYm9sVGFibGVTcGFjZSBJU09fU1VC
U1BBQ0VfSU5JVChoZWFwLCAqZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZSwgU3ltYm9sVGFi
bGUpIC8vIEhhc2g6MHhjNTIxNWFmZAotICAgICwgZXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZXNX
aXRoQ29uc3RyYWludHMoZXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZVNwYWNlKQotICAgICwgZXhl
Y3V0YWJsZVRvQ29kZUJsb2NrRWRnZXNXaXRoRmluYWxpemVycyhleGVjdXRhYmxlVG9Db2RlQmxv
Y2tFZGdlU3BhY2UpCi0gICAgLCBjb2RlQmxvY2tTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVChoZWFw
LCAqZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZSwgQ29kZUJsb2NrKSAvLyBIYXNoOjB4Nzdl
NjZlYzkKLSAgICAsIGZ1bmN0aW9uRXhlY3V0YWJsZVNwYWNlIElTT19TVUJTUEFDRV9JTklUKGhl
YXAsICpkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlLCBGdW5jdGlvbkV4ZWN1dGFibGUpIC8v
IEhhc2g6MHg1ZDE1OGYzCi0gICAgLCBwcm9ncmFtRXhlY3V0YWJsZVNwYWNlIElTT19TVUJTUEFD
RV9JTklUKGhlYXAsICpkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlLCBQcm9ncmFtRXhlY3V0
YWJsZSkgLy8gSGFzaDoweDUyN2M3N2U3Ci0gICAgLCB1bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJs
ZVNwYWNlIElTT19TVUJTUEFDRV9JTklUKGhlYXAsICpkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxU
eXBlLCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSkgLy8gSGFzaDoweGY2YjgyOGQ5CiAgICAg
LCB2bVR5cGUodm1UeXBlKQogICAgICwgY2xpZW50RGF0YShudWxscHRyKQogICAgICwgdG9wRW50
cnlGcmFtZShudWxscHRyKQpAQCAtMTU3MiwxMzcgKzEzOTIsNiBAQCB2b2lkIFZNOjplbnN1cmVT
aGFkb3dDaGlja2VuKCkKICAgICBtX3NoYWRvd0NoaWNrZW4gPSBtYWtlVW5pcXVlPFNoYWRvd0No
aWNrZW4+KCk7CiB9CiAKLSNkZWZpbmUgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJF
Ul9TTE9XKG5hbWUsIGhlYXBDZWxsVHlwZSwgdHlwZSkgXAotICAgIElzb1N1YnNwYWNlKiBWTTo6
bmFtZSMjU2xvdygpIFwKLSAgICB7IFwKLSAgICAgICAgQVNTRVJUKCFtXyMjbmFtZSk7IFwKLSAg
ICAgICAgYXV0byBzcGFjZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9J
TklUKGhlYXAsIGhlYXBDZWxsVHlwZSwgdHlwZSk7IFwKLSAgICAgICAgV1RGOjpzdG9yZVN0b3Jl
RmVuY2UoKTsgXAotICAgICAgICBtXyMjbmFtZSA9IFdURk1vdmUoc3BhY2UpOyBcCi0gICAgICAg
IHJldHVybiBtXyMjbmFtZS5nZXQoKTsgXAotICAgIH0KLQotCi1EWU5BTUlDX0lTT19TVUJTUEFD
RV9ERUZJTkVfTUVNQkVSX1NMT1coYXBpR2xvYmFsT2JqZWN0U3BhY2UsICphcGlHbG9iYWxPYmpl
Y3RIZWFwQ2VsbFR5cGUsIEpTQVBJR2xvYmFsT2JqZWN0KQotRFlOQU1JQ19JU09fU1VCU1BBQ0Vf
REVGSU5FX01FTUJFUl9TTE9XKGFwaVZhbHVlV3JhcHBlclNwYWNlLCAqY2VsbEhlYXBDZWxsVHlw
ZSwgSlNBUElWYWx1ZVdyYXBwZXIpCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVS
X1NMT1coYXJyYXlCdWZmZXJTcGFjZSwgKmNlbGxIZWFwQ2VsbFR5cGUsIEpTQXJyYXlCdWZmZXIp
Ci1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coYXJyYXlJdGVyYXRvclNw
YWNlLCAqY2VsbEhlYXBDZWxsVHlwZSwgSlNBcnJheUl0ZXJhdG9yKQotRFlOQU1JQ19JU09fU1VC
U1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGFzeW5jR2VuZXJhdG9yU3BhY2UsICpjZWxsSGVhcENl
bGxUeXBlLCBKU0FzeW5jR2VuZXJhdG9yKQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01F
TUJFUl9TTE9XKGJpZ0ludDY0QXJyYXlTcGFjZSwgKmNlbGxIZWFwQ2VsbFR5cGUsIEpTQmlnSW50
NjRBcnJheSkKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhiaWdJbnRP
YmplY3RTcGFjZSwgKmNlbGxIZWFwQ2VsbFR5cGUsIEJpZ0ludE9iamVjdCkKLURZTkFNSUNfSVNP
X1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhiaWdVaW50NjRBcnJheVNwYWNlLCAqY2VsbEhl
YXBDZWxsVHlwZSwgSlNCaWdVaW50NjRBcnJheSkKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklO
RV9NRU1CRVJfU0xPVyhib29sZWFuT2JqZWN0U3BhY2UsICpjZWxsSGVhcENlbGxUeXBlLCBCb29s
ZWFuT2JqZWN0KQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGJvdW5k
RnVuY3Rpb25TcGFjZSwgKmNlbGxIZWFwQ2VsbFR5cGUsIEpTQm91bmRGdW5jdGlvbikgLy8gSGFz
aDoweGQ3OTE2ZDQxCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coY2Fs
bGJhY2tDb25zdHJ1Y3RvclNwYWNlLCAqY2FsbGJhY2tDb25zdHJ1Y3RvckhlYXBDZWxsVHlwZSwg
SlNDYWxsYmFja0NvbnN0cnVjdG9yKQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJF
Ul9TTE9XKGNhbGxiYWNrR2xvYmFsT2JqZWN0U3BhY2UsICpjYWxsYmFja0dsb2JhbE9iamVjdEhl
YXBDZWxsVHlwZSwgSlNDYWxsYmFja09iamVjdDxKU0dsb2JhbE9iamVjdD4pCi1EWU5BTUlDX0lT
T19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coY2FsbGJhY2tGdW5jdGlvblNwYWNlLCAqY2Vs
bEhlYXBDZWxsVHlwZSwgSlNDYWxsYmFja0Z1bmN0aW9uKSAvLyBIYXNoOjB4ZTc2NDhlYmMKLURZ
TkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhjYWxsYmFja09iamVjdFNwYWNl
LCAqY2FsbGJhY2tPYmplY3RIZWFwQ2VsbFR5cGUsIEpTQ2FsbGJhY2tPYmplY3Q8SlNOb25GaW5h
bE9iamVjdD4pCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coY3VzdG9t
R2V0dGVyRnVuY3Rpb25TcGFjZSwgKmN1c3RvbUdldHRlckZ1bmN0aW9uSGVhcENlbGxUeXBlLCBK
U0N1c3RvbUdldHRlckZ1bmN0aW9uKQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJF
Ul9TTE9XKGN1c3RvbVNldHRlckZ1bmN0aW9uU3BhY2UsICpjdXN0b21TZXR0ZXJGdW5jdGlvbkhl
YXBDZWxsVHlwZSwgSlNDdXN0b21TZXR0ZXJGdW5jdGlvbikKLURZTkFNSUNfSVNPX1NVQlNQQUNF
X0RFRklORV9NRU1CRVJfU0xPVyhkYXRhVmlld1NwYWNlLCAqY2VsbEhlYXBDZWxsVHlwZSwgSlNE
YXRhVmlldykKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhkZWJ1Z2dl
clNjb3BlU3BhY2UsICpjZWxsSGVhcENlbGxUeXBlLCBEZWJ1Z2dlclNjb3BlKQotRFlOQU1JQ19J
U09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGVycm9ySW5zdGFuY2VTcGFjZSwgKmVycm9y
SW5zdGFuY2VIZWFwQ2VsbFR5cGUsIEVycm9ySW5zdGFuY2UpIC8vIEhhc2g6MHgzZjQwZDRhCi1E
WU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coZmxvYXQzMkFycmF5U3BhY2Us
ICpjZWxsSGVhcENlbGxUeXBlLCBKU0Zsb2F0MzJBcnJheSkKLURZTkFNSUNfSVNPX1NVQlNQQUNF
X0RFRklORV9NRU1CRVJfU0xPVyhmbG9hdDY0QXJyYXlTcGFjZSwgKmNlbGxIZWFwQ2VsbFR5cGUs
IEpTRmxvYXQ2NEFycmF5KQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9X
KGZ1bmN0aW9uUmFyZURhdGFTcGFjZSwgKmRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUsIEZ1
bmN0aW9uUmFyZURhdGEpCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1co
Z2VuZXJhdG9yU3BhY2UsICpjZWxsSGVhcENlbGxUeXBlLCBKU0dlbmVyYXRvcikKLURZTkFNSUNf
SVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhnbG9iYWxPYmplY3RTcGFjZSwgKmdsb2Jh
bE9iamVjdEhlYXBDZWxsVHlwZSwgSlNHbG9iYWxPYmplY3QpCi1EWU5BTUlDX0lTT19TVUJTUEFD
RV9ERUZJTkVfTUVNQkVSX1NMT1coaW5qZWN0ZWRTY3JpcHRIb3N0U3BhY2UsICppbmplY3RlZFNj
cmlwdEhvc3RTcGFjZUhlYXBDZWxsVHlwZSwgSW5zcGVjdG9yOjpKU0luamVjdGVkU2NyaXB0SG9z
dCkKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhpbnQ4QXJyYXlTcGFj
ZSwgKmNlbGxIZWFwQ2VsbFR5cGUsIEpTSW50OEFycmF5KQotRFlOQU1JQ19JU09fU1VCU1BBQ0Vf
REVGSU5FX01FTUJFUl9TTE9XKGludDE2QXJyYXlTcGFjZSwgKmNlbGxIZWFwQ2VsbFR5cGUsIEpT
SW50MTZBcnJheSkKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhpbnQz
MkFycmF5U3BhY2UsICpjZWxsSGVhcENlbGxUeXBlLCBKU0ludDMyQXJyYXkpCi1EWU5BTUlDX0lT
T19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coamF2YVNjcmlwdENhbGxGcmFtZVNwYWNlLCAq
amF2YVNjcmlwdENhbGxGcmFtZUhlYXBDZWxsVHlwZSwgSW5zcGVjdG9yOjpKU0phdmFTY3JpcHRD
YWxsRnJhbWUpCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coanNNb2R1
bGVSZWNvcmRTcGFjZSwgKmpzTW9kdWxlUmVjb3JkSGVhcENlbGxUeXBlLCBKU01vZHVsZVJlY29y
ZCkKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhtYXBCdWNrZXRTcGFj
ZSwgKmNlbGxIZWFwQ2VsbFR5cGUsIEpTTWFwOjpCdWNrZXRUeXBlKQotRFlOQU1JQ19JU09fU1VC
U1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKG1hcEl0ZXJhdG9yU3BhY2UsICpjZWxsSGVhcENlbGxU
eXBlLCBKU01hcEl0ZXJhdG9yKQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9T
TE9XKG1hcFNwYWNlLCAqY2VsbEhlYXBDZWxsVHlwZSwgSlNNYXApCi1EWU5BTUlDX0lTT19TVUJT
UEFDRV9ERUZJTkVfTUVNQkVSX1NMT1cobW9kdWxlTmFtZXNwYWNlT2JqZWN0U3BhY2UsICptb2R1
bGVOYW1lc3BhY2VPYmplY3RIZWFwQ2VsbFR5cGUsIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0KQot
RFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKG5hdGl2ZVN0ZEZ1bmN0aW9u
U3BhY2UsICpuYXRpdmVTdGRGdW5jdGlvbkhlYXBDZWxsVHlwZSwgSlNOYXRpdmVTdGRGdW5jdGlv
bikgLy8gSGFzaDoweDcwZWQ2MWU0Ci1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVS
X1NMT1cocHJveHlPYmplY3RTcGFjZSwgKmNlbGxIZWFwQ2VsbFR5cGUsIFByb3h5T2JqZWN0KQot
RFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHByb3h5UmV2b2tlU3BhY2Us
ICpjZWxsSGVhcENlbGxUeXBlLCBQcm94eVJldm9rZSkgLy8gSGFzaDoweGI1MDZhOTM5Ci1EWU5B
TUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coc2NvcGVkQXJndW1lbnRzVGFibGVT
cGFjZSwgKmRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUsIFNjb3BlZEFyZ3VtZW50c1RhYmxl
KQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHNjcmlwdEZldGNoUGFy
YW1ldGVyc1NwYWNlLCAqZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZSwgSlNTY3JpcHRGZXRj
aFBhcmFtZXRlcnMpCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coc2Ny
aXB0RmV0Y2hlclNwYWNlLCAqZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZSwgSlNTY3JpcHRG
ZXRjaGVyKQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHNldEJ1Y2tl
dFNwYWNlLCAqY2VsbEhlYXBDZWxsVHlwZSwgSlNTZXQ6OkJ1Y2tldFR5cGUpCi1EWU5BTUlDX0lT
T19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coc2V0SXRlcmF0b3JTcGFjZSwgKmNlbGxIZWFw
Q2VsbFR5cGUsIEpTU2V0SXRlcmF0b3IpCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVN
QkVSX1NMT1coc2V0U3BhY2UsICpjZWxsSGVhcENlbGxUeXBlLCBKU1NldCkKLURZTkFNSUNfSVNP
X1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhzaGFkb3dSZWFsbVNwYWNlLCAqY2VsbEhlYXBD
ZWxsVHlwZSwgU2hhZG93UmVhbG1PYmplY3QpCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVf
TUVNQkVSX1NMT1coc3RyaWN0RXZhbEFjdGl2YXRpb25TcGFjZSwgKmNlbGxIZWFwQ2VsbFR5cGUs
IFN0cmljdEV2YWxBY3RpdmF0aW9uKQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJF
Ul9TTE9XKHN0cmluZ0l0ZXJhdG9yU3BhY2UsICpjZWxsSGVhcENlbGxUeXBlLCBKU1N0cmluZ0l0
ZXJhdG9yKQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHNvdXJjZUNv
ZGVTcGFjZSwgKmRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUsIEpTU291cmNlQ29kZSkKLURZ
TkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhzeW1ib2xTcGFjZSwgKmRlc3Ry
dWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUsIFN5bWJvbCkKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RF
RklORV9NRU1CRVJfU0xPVyhzeW1ib2xPYmplY3RTcGFjZSwgKmNlbGxIZWFwQ2VsbFR5cGUsIFN5
bWJvbE9iamVjdCkKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh0ZW1w
bGF0ZU9iamVjdERlc2NyaXB0b3JTcGFjZSwgKmRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUs
IEpTVGVtcGxhdGVPYmplY3REZXNjcmlwdG9yKQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5F
X01FTUJFUl9TTE9XKHRlbXBvcmFsQ2FsZW5kYXJTcGFjZSwgKmNlbGxIZWFwQ2VsbFR5cGUsIFRl
bXBvcmFsQ2FsZW5kYXIpCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1co
dGVtcG9yYWxEdXJhdGlvblNwYWNlLCAqY2VsbEhlYXBDZWxsVHlwZSwgVGVtcG9yYWxEdXJhdGlv
bikKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh0ZW1wb3JhbEluc3Rh
bnRTcGFjZSwgKmNlbGxIZWFwQ2VsbFR5cGUsIFRlbXBvcmFsSW5zdGFudCkKLURZTkFNSUNfSVNP
X1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh0ZW1wb3JhbFBsYWluVGltZVNwYWNlLCAqY2Vs
bEhlYXBDZWxsVHlwZSwgVGVtcG9yYWxQbGFpblRpbWUpCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9E
RUZJTkVfTUVNQkVSX1NMT1codGVtcG9yYWxUaW1lWm9uZVNwYWNlLCAqY2VsbEhlYXBDZWxsVHlw
ZSwgVGVtcG9yYWxUaW1lWm9uZSkKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJf
U0xPVyh1aW50OEFycmF5U3BhY2UsICpjZWxsSGVhcENlbGxUeXBlLCBKU1VpbnQ4QXJyYXkpCi1E
WU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1codWludDhDbGFtcGVkQXJyYXlT
cGFjZSwgKmNlbGxIZWFwQ2VsbFR5cGUsIEpTVWludDhDbGFtcGVkQXJyYXkpCi1EWU5BTUlDX0lT
T19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1codWludDE2QXJyYXlTcGFjZSwgKmNlbGxIZWFw
Q2VsbFR5cGUsIEpTVWludDE2QXJyYXkpCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVN
QkVSX1NMT1codWludDMyQXJyYXlTcGFjZSwgKmNlbGxIZWFwQ2VsbFR5cGUsIEpTVWludDMyQXJy
YXkpCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1codW5saW5rZWRFdmFs
Q29kZUJsb2NrU3BhY2UsICpkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlLCBVbmxpbmtlZEV2
YWxDb2RlQmxvY2spCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1codW5s
aW5rZWRGdW5jdGlvbkNvZGVCbG9ja1NwYWNlLCAqZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlw
ZSwgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jaykKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklO
RV9NRU1CRVJfU0xPVyh1bmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2tTcGFjZSwgKmRlc3Ry
dWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUsIFVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jaykK
LURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh1bmxpbmtlZFByb2dyYW1D
b2RlQmxvY2tTcGFjZSwgKmRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUsIFVubGlua2VkUHJv
Z3JhbUNvZGVCbG9jaykKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh3
ZWFrTWFwU3BhY2UsICp3ZWFrTWFwSGVhcENlbGxUeXBlLCBKU1dlYWtNYXApIC8vIEhhc2g6MHg2
NjJiMTJhMwotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHdlYWtTZXRT
cGFjZSwgKndlYWtTZXRIZWFwQ2VsbFR5cGUsIEpTV2Vha1NldCkgLy8gSGFzaDoweDRjNzgxYjMw
Ci1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1cod2Vha09iamVjdFJlZlNw
YWNlLCAqY2VsbEhlYXBDZWxsVHlwZSwgSlNXZWFrT2JqZWN0UmVmKSAvLyBIYXNoOjB4OGVjNjhm
MWYKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh3aXRoU2NvcGVTcGFj
ZSwgKmNlbGxIZWFwQ2VsbFR5cGUsIEpTV2l0aFNjb3BlKQotRFlOQU1JQ19JU09fU1VCU1BBQ0Vf
REVGSU5FX01FTUJFUl9TTE9XKGZpbmFsaXphdGlvblJlZ2lzdHJ5U3BhY2UsICpmaW5hbGl6YXRp
b25SZWdpc3RyeUNlbGxUeXBlLCBKU0ZpbmFsaXphdGlvblJlZ2lzdHJ5KQotI2lmIEpTQ19PQkpD
X0FQSV9FTkFCTEVECi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coYXBp
V3JhcHBlck9iamVjdFNwYWNlLCAqYXBpV3JhcHBlck9iamVjdEhlYXBDZWxsVHlwZSwgSlNDYWxs
YmFja09iamVjdDxKU0FQSVdyYXBwZXJPYmplY3Q+KQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVG
SU5FX01FTUJFUl9TTE9XKG9iakNDYWxsYmFja0Z1bmN0aW9uU3BhY2UsICpvYmpDQ2FsbGJhY2tG
dW5jdGlvbkhlYXBDZWxsVHlwZSwgT2JqQ0NhbGxiYWNrRnVuY3Rpb24pIC8vIEhhc2g6MHgxMGY2
MTBiOAotI2VuZGlmCi0jaWZkZWYgSlNDX0dMSUJfQVBJX0VOQUJMRUQKLURZTkFNSUNfSVNPX1NV
QlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhhcGlXcmFwcGVyT2JqZWN0U3BhY2UsICphcGlXcmFw
cGVyT2JqZWN0SGVhcENlbGxUeXBlLCBKU0NhbGxiYWNrT2JqZWN0PEpTQVBJV3JhcHBlck9iamVj
dD4pCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coanNjQ2FsbGJhY2tG
dW5jdGlvblNwYWNlLCAqanNjQ2FsbGJhY2tGdW5jdGlvbkhlYXBDZWxsVHlwZSwgSlNDQ2FsbGJh
Y2tGdW5jdGlvbikKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhjYWxs
YmFja0FQSVdyYXBwZXJHbG9iYWxPYmplY3RTcGFjZSwgKmNhbGxiYWNrQVBJV3JhcHBlckdsb2Jh
bE9iamVjdEhlYXBDZWxsVHlwZSwgSlNDYWxsYmFja09iamVjdDxKU0FQSVdyYXBwZXJHbG9iYWxP
YmplY3Q+KQotI2VuZGlmCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1co
aW50bENvbGxhdG9yU3BhY2UsICppbnRsQ29sbGF0b3JIZWFwQ2VsbFR5cGUsIEludGxDb2xsYXRv
cikKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhpbnRsRGF0ZVRpbWVG
b3JtYXRTcGFjZSwgKmludGxEYXRlVGltZUZvcm1hdEhlYXBDZWxsVHlwZSwgSW50bERhdGVUaW1l
Rm9ybWF0KQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGludGxEaXNw
bGF5TmFtZXNTcGFjZSwgKmludGxEaXNwbGF5TmFtZXNIZWFwQ2VsbFR5cGUsIEludGxEaXNwbGF5
TmFtZXMpCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coaW50bExpc3RG
b3JtYXRTcGFjZSwgKmludGxMaXN0Rm9ybWF0SGVhcENlbGxUeXBlLCBJbnRsTGlzdEZvcm1hdCkK
LURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhpbnRsTG9jYWxlU3BhY2Us
ICppbnRsTG9jYWxlSGVhcENlbGxUeXBlLCBJbnRsTG9jYWxlKQotRFlOQU1JQ19JU09fU1VCU1BB
Q0VfREVGSU5FX01FTUJFUl9TTE9XKGludGxOdW1iZXJGb3JtYXRTcGFjZSwgKmludGxOdW1iZXJG
b3JtYXRIZWFwQ2VsbFR5cGUsIEludGxOdW1iZXJGb3JtYXQpCi1EWU5BTUlDX0lTT19TVUJTUEFD
RV9ERUZJTkVfTUVNQkVSX1NMT1coaW50bFBsdXJhbFJ1bGVzU3BhY2UsICppbnRsUGx1cmFsUnVs
ZXNIZWFwQ2VsbFR5cGUsIEludGxQbHVyYWxSdWxlcykKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RF
RklORV9NRU1CRVJfU0xPVyhpbnRsUmVsYXRpdmVUaW1lRm9ybWF0U3BhY2UsICppbnRsUmVsYXRp
dmVUaW1lRm9ybWF0SGVhcENlbGxUeXBlLCBJbnRsUmVsYXRpdmVUaW1lRm9ybWF0KQotRFlOQU1J
Q19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGludGxTZWdtZW50SXRlcmF0b3JTcGFj
ZSwgKmludGxTZWdtZW50SXRlcmF0b3JIZWFwQ2VsbFR5cGUsIEludGxTZWdtZW50SXRlcmF0b3Ip
Ci1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coaW50bFNlZ21lbnRlclNw
YWNlLCAqaW50bFNlZ21lbnRlckhlYXBDZWxsVHlwZSwgSW50bFNlZ21lbnRlcikKLURZTkFNSUNf
SVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhpbnRsU2VnbWVudHNTcGFjZSwgKmludGxT
ZWdtZW50c0hlYXBDZWxsVHlwZSwgSW50bFNlZ21lbnRzKQotI2lmIEVOQUJMRShXRUJBU1NFTUJM
WSkKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhqc1RvV2FzbUlDQ2Fs
bGVlU3BhY2UsICpjZWxsSGVhcENlbGxUeXBlLCBKU1RvV2FzbUlDQ2FsbGVlKQotRFlOQU1JQ19J
U09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHdlYkFzc2VtYmx5Q29kZUJsb2NrU3BhY2Us
ICp3ZWJBc3NlbWJseUNvZGVCbG9ja0hlYXBDZWxsVHlwZSwgSlNXZWJBc3NlbWJseUNvZGVCbG9j
aykgLy8gSGFzaDoweDlhZDk5NWNkCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVS
X1NMT1cod2ViQXNzZW1ibHlFeGNlcHRpb25TcGFjZSwgKndlYkFzc2VtYmx5RXhjZXB0aW9uSGVh
cENlbGxUeXBlLCBKU1dlYkFzc2VtYmx5RXhjZXB0aW9uKQotRFlOQU1JQ19JU09fU1VCU1BBQ0Vf
REVGSU5FX01FTUJFUl9TTE9XKHdlYkFzc2VtYmx5RnVuY3Rpb25TcGFjZSwgKndlYkFzc2VtYmx5
RnVuY3Rpb25IZWFwQ2VsbFR5cGUsIFdlYkFzc2VtYmx5RnVuY3Rpb24pIC8vIEhhc2g6MHg4Yjdj
MzJkYgotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHdlYkFzc2VtYmx5
R2xvYmFsU3BhY2UsICp3ZWJBc3NlbWJseUdsb2JhbEhlYXBDZWxsVHlwZSwgSlNXZWJBc3NlbWJs
eUdsb2JhbCkKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh3ZWJBc3Nl
bWJseUluc3RhbmNlU3BhY2UsICp3ZWJBc3NlbWJseUluc3RhbmNlSGVhcENlbGxUeXBlLCBKU1dl
YkFzc2VtYmx5SW5zdGFuY2UpCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NM
T1cod2ViQXNzZW1ibHlNZW1vcnlTcGFjZSwgKndlYkFzc2VtYmx5TWVtb3J5SGVhcENlbGxUeXBl
LCBKU1dlYkFzc2VtYmx5TWVtb3J5KQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJF
Ul9TTE9XKHdlYkFzc2VtYmx5TW9kdWxlU3BhY2UsICp3ZWJBc3NlbWJseU1vZHVsZUhlYXBDZWxs
VHlwZSwgSlNXZWJBc3NlbWJseU1vZHVsZSkKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9N
RU1CRVJfU0xPVyh3ZWJBc3NlbWJseU1vZHVsZVJlY29yZFNwYWNlLCAqd2ViQXNzZW1ibHlNb2R1
bGVSZWNvcmRIZWFwQ2VsbFR5cGUsIFdlYkFzc2VtYmx5TW9kdWxlUmVjb3JkKQotRFlOQU1JQ19J
U09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHdlYkFzc2VtYmx5VGFibGVTcGFjZSwgKndl
YkFzc2VtYmx5VGFibGVIZWFwQ2VsbFR5cGUsIEpTV2ViQXNzZW1ibHlUYWJsZSkKLURZTkFNSUNf
SVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh3ZWJBc3NlbWJseVRhZ1NwYWNlLCAqd2Vi
QXNzZW1ibHlUYWdIZWFwQ2VsbFR5cGUsIEpTV2ViQXNzZW1ibHlUYWcpCi1EWU5BTUlDX0lTT19T
VUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1cod2ViQXNzZW1ibHlXcmFwcGVyRnVuY3Rpb25TcGFj
ZSwgKmNlbGxIZWFwQ2VsbFR5cGUsIFdlYkFzc2VtYmx5V3JhcHBlckZ1bmN0aW9uKSAvLyBIYXNo
OjB4ZDRhNWZmMDEKLSNlbmRpZgotCi0jdW5kZWYgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5F
X01FTUJFUl9TTE9XCi0KLSNkZWZpbmUgRFlOQU1JQ19TUEFDRV9BTkRfU0VUX0RFRklORV9NRU1C
RVJfU0xPVyhuYW1lLCBoZWFwQ2VsbFR5cGUsIHR5cGUpIFwKLSAgICBJc29TdWJzcGFjZSogVk06
Om5hbWUjI1Nsb3coKSBcCi0gICAgeyBcCi0gICAgICAgIEFTU0VSVCghbV8jI25hbWUpOyBcCi0g
ICAgICAgIGF1dG8gc3BhY2UgPSBtYWtlVW5pcXVlPFNwYWNlQW5kU2V0PiBJU09fU1VCU1BBQ0Vf
SU5JVChoZWFwLCBoZWFwQ2VsbFR5cGUsIHR5cGUpOyBcCi0gICAgICAgIFdURjo6c3RvcmVTdG9y
ZUZlbmNlKCk7IFwKLSAgICAgICAgbV8jI25hbWUgPSBXVEZNb3ZlKHNwYWNlKTsgXAotICAgICAg
ICByZXR1cm4gJm1fIyNuYW1lLT5zcGFjZTsgXAotICAgIH0KLQotRFlOQU1JQ19TUEFDRV9BTkRf
U0VUX0RFRklORV9NRU1CRVJfU0xPVyhldmFsRXhlY3V0YWJsZVNwYWNlLCAqZGVzdHJ1Y3RpYmxl
Q2VsbEhlYXBDZWxsVHlwZSwgRXZhbEV4ZWN1dGFibGUpIC8vIEhhc2g6MHg5NThlM2U5ZAotRFlO
QU1JQ19TUEFDRV9BTkRfU0VUX0RFRklORV9NRU1CRVJfU0xPVyhtb2R1bGVQcm9ncmFtRXhlY3V0
YWJsZVNwYWNlLCAqZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZSwgTW9kdWxlUHJvZ3JhbUV4
ZWN1dGFibGUpIC8vIEhhc2g6MHg2NTA2ZmEzYwotCi0jdW5kZWYgRFlOQU1JQ19TUEFDRV9BTkRf
U0VUX0RFRklORV9NRU1CRVJfU0xPVwotCiBKU0NlbGwqIFZNOjpzZW50aW5lbFNldEJ1Y2tldFNs
b3coKQogewogICAgIEFTU0VSVCghbV9zZW50aW5lbFNldEJ1Y2tldCk7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1ZNLmgJKHJldmlzaW9uIDI4NjA0MykKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1ZNLmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDcgKzMxLDYgQEAKICNp
bmNsdWRlICJDYWxsRGF0YS5oIgogI2luY2x1ZGUgIkNhbGxlZUJpdHMuaCIKICNpbmNsdWRlICJD
b2RlU3BlY2lhbGl6YXRpb25LaW5kLmgiCi0jaW5jbHVkZSAiQ29tcGxldGVTdWJzcGFjZS5oIgog
I2luY2x1ZGUgIkNvbmN1cnJlbnRKU0xvY2suaCIKICNpbmNsdWRlICJERkdEb2VzR0NDaGVjay5o
IgogI2luY2x1ZGUgIkRlbGV0ZUFsbENvZGVFZmZvcnQuaCIKQEAgLTQyLDggKzQxLDYgQEAKICNp
bmNsdWRlICJIZWFwLmgiCiAjaW5jbHVkZSAiSW50ZWdyaXR5LmgiCiAjaW5jbHVkZSAiSW50cmlu
c2ljLmgiCi0jaW5jbHVkZSAiSXNvQ2VsbFNldC5oIgotI2luY2x1ZGUgIklzb1N1YnNwYWNlLmgi
CiAjaW5jbHVkZSAiSlNDSlNWYWx1ZS5oIgogI2luY2x1ZGUgIkpTRGF0ZU1hdGguaCIKICNpbmNs
dWRlICJKU0xvY2suaCIKQEAgLTEyMiw4ICsxMTksNiBAQCBjbGFzcyBEYXRlSW5zdGFuY2U7CiBj
bGFzcyBFcnJvckluc3RhbmNlOwogY2xhc3MgRXhjZXB0aW9uOwogY2xhc3MgRXhjZXB0aW9uU2Nv
cGU7Ci1jbGFzcyBGYXN0TWFsbG9jQWxpZ25lZE1lbW9yeUFsbG9jYXRvcjsKLWNsYXNzIEdpZ2Fj
YWdlQWxpZ25lZE1lbW9yeUFsbG9jYXRvcjsKIGNsYXNzIEhhbmRsZVN0YWNrOwogY2xhc3MgSGFz
T3duUHJvcGVydHlDYWNoZTsKIGNsYXNzIEhlYXBBbmFseXplcjsKQEAgLTIyMCw4ICsyMTUsNiBA
QCBjbGFzcyBXZWJBc3NlbWJseU1vZHVsZVJlY29yZDsKIAogY29uc3RleHByIGJvb2wgdmFsaWRh
dGVERkdEb2VzR0MgPSBFTkFCTEVfREZHX0RPRVNfR0NfVkFMSURBVElPTjsKIAotY2xhc3MgSXNv
SGVhcENlbGxUeXBlOwotdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGU+IGNsYXNzIElzb0lubGlu
ZWRIZWFwQ2VsbFR5cGU7CiB0ZW1wbGF0ZTx0eXBlbmFtZSBQYXJlbnQ+IGNsYXNzIEpTQ2FsbGJh
Y2tPYmplY3Q7CiAKICNpZiBFTkFCTEUoRlRMX0pJVCkKQEAgLTQxMywxNDUgKzQwNiw1OCBAQCBw
cml2YXRlOgogCiBwdWJsaWM6CiAgICAgSGVhcCBoZWFwOwotICAgIAotICAgIHN0ZDo6dW5pcXVl
X3B0cjxGYXN0TWFsbG9jQWxpZ25lZE1lbW9yeUFsbG9jYXRvcj4gZmFzdE1hbGxvY0FsbG9jYXRv
cjsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8R2lnYWNhZ2VBbGlnbmVkTWVtb3J5QWxsb2NhdG9yPiBw
cmltaXRpdmVHaWdhY2FnZUFsbG9jYXRvcjsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8R2lnYWNhZ2VB
bGlnbmVkTWVtb3J5QWxsb2NhdG9yPiBqc1ZhbHVlR2lnYWNhZ2VBbGxvY2F0b3I7Ci0KLSAgICBz
dGQ6OnVuaXF1ZV9wdHI8SGVhcENlbGxUeXBlPiBhdXhpbGlhcnlIZWFwQ2VsbFR5cGU7Ci0gICAg
c3RkOjp1bmlxdWVfcHRyPEhlYXBDZWxsVHlwZT4gaW1tdXRhYmxlQnV0dGVyZmx5SGVhcENlbGxU
eXBlOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxIZWFwQ2VsbFR5cGU+IGNlbGxIZWFwQ2VsbFR5cGU7
Ci0gICAgc3RkOjp1bmlxdWVfcHRyPEhlYXBDZWxsVHlwZT4gZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBD
ZWxsVHlwZTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SXNvSGVhcENlbGxUeXBlPiBhcGlHbG9iYWxP
YmplY3RIZWFwQ2VsbFR5cGU7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPElzb0hlYXBDZWxsVHlwZT4g
Y2FsbGJhY2tDb25zdHJ1Y3RvckhlYXBDZWxsVHlwZTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SXNv
SGVhcENlbGxUeXBlPiBjYWxsYmFja0dsb2JhbE9iamVjdEhlYXBDZWxsVHlwZTsKLSAgICBzdGQ6
OnVuaXF1ZV9wdHI8SXNvSGVhcENlbGxUeXBlPiBjYWxsYmFja09iamVjdEhlYXBDZWxsVHlwZTsK
LSAgICBzdGQ6OnVuaXF1ZV9wdHI8SXNvSGVhcENlbGxUeXBlPiBjdXN0b21HZXR0ZXJGdW5jdGlv
bkhlYXBDZWxsVHlwZTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SXNvSGVhcENlbGxUeXBlPiBjdXN0
b21TZXR0ZXJGdW5jdGlvbkhlYXBDZWxsVHlwZTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SXNvSGVh
cENlbGxUeXBlPiBkYXRlSW5zdGFuY2VIZWFwQ2VsbFR5cGU7Ci0gICAgc3RkOjp1bmlxdWVfcHRy
PElzb0hlYXBDZWxsVHlwZT4gZXJyb3JJbnN0YW5jZUhlYXBDZWxsVHlwZTsKLSAgICBzdGQ6OnVu
aXF1ZV9wdHI8SXNvSGVhcENlbGxUeXBlPiBmaW5hbGl6YXRpb25SZWdpc3RyeUNlbGxUeXBlOwot
ICAgIHN0ZDo6dW5pcXVlX3B0cjxJc29IZWFwQ2VsbFR5cGU+IGdsb2JhbExleGljYWxFbnZpcm9u
bWVudEhlYXBDZWxsVHlwZTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SXNvSGVhcENlbGxUeXBlPiBn
bG9iYWxPYmplY3RIZWFwQ2VsbFR5cGU7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPElzb0hlYXBDZWxs
VHlwZT4gaW5qZWN0ZWRTY3JpcHRIb3N0U3BhY2VIZWFwQ2VsbFR5cGU7Ci0gICAgc3RkOjp1bmlx
dWVfcHRyPElzb0hlYXBDZWxsVHlwZT4gamF2YVNjcmlwdENhbGxGcmFtZUhlYXBDZWxsVHlwZTsK
LSAgICBzdGQ6OnVuaXF1ZV9wdHI8SXNvSGVhcENlbGxUeXBlPiBqc01vZHVsZVJlY29yZEhlYXBD
ZWxsVHlwZTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SXNvSGVhcENlbGxUeXBlPiBtb2R1bGVOYW1l
c3BhY2VPYmplY3RIZWFwQ2VsbFR5cGU7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPElzb0hlYXBDZWxs
VHlwZT4gbmF0aXZlU3RkRnVuY3Rpb25IZWFwQ2VsbFR5cGU7Ci0gICAgc3RkOjp1bmlxdWVfcHRy
PElzb0lubGluZWRIZWFwQ2VsbFR5cGU8SlNTdHJpbmc+PiBzdHJpbmdIZWFwQ2VsbFR5cGU7Ci0g
ICAgc3RkOjp1bmlxdWVfcHRyPElzb0hlYXBDZWxsVHlwZT4gd2Vha01hcEhlYXBDZWxsVHlwZTsK
LSAgICBzdGQ6OnVuaXF1ZV9wdHI8SXNvSGVhcENlbGxUeXBlPiB3ZWFrU2V0SGVhcENlbGxUeXBl
OwotICAgIHN0ZDo6dW5pcXVlX3B0cjxKU0Rlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZT4g
ZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlOwotI2lmIEpTQ19PQkpDX0FQSV9FTkFCTEVE
Ci0gICAgc3RkOjp1bmlxdWVfcHRyPElzb0hlYXBDZWxsVHlwZT4gYXBpV3JhcHBlck9iamVjdEhl
YXBDZWxsVHlwZTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SXNvSGVhcENlbGxUeXBlPiBvYmpDQ2Fs
bGJhY2tGdW5jdGlvbkhlYXBDZWxsVHlwZTsKLSNlbmRpZgotI2lmZGVmIEpTQ19HTElCX0FQSV9F
TkFCTEVECi0gICAgc3RkOjp1bmlxdWVfcHRyPElzb0hlYXBDZWxsVHlwZT4gYXBpV3JhcHBlck9i
amVjdEhlYXBDZWxsVHlwZTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SXNvSGVhcENlbGxUeXBlPiBj
YWxsYmFja0FQSVdyYXBwZXJHbG9iYWxPYmplY3RIZWFwQ2VsbFR5cGU7Ci0gICAgc3RkOjp1bmlx
dWVfcHRyPElzb0hlYXBDZWxsVHlwZT4ganNjQ2FsbGJhY2tGdW5jdGlvbkhlYXBDZWxsVHlwZTsK
LSNlbmRpZgotICAgIHN0ZDo6dW5pcXVlX3B0cjxJc29IZWFwQ2VsbFR5cGU+IGludGxDb2xsYXRv
ckhlYXBDZWxsVHlwZTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SXNvSGVhcENlbGxUeXBlPiBpbnRs
RGF0ZVRpbWVGb3JtYXRIZWFwQ2VsbFR5cGU7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPElzb0hlYXBD
ZWxsVHlwZT4gaW50bERpc3BsYXlOYW1lc0hlYXBDZWxsVHlwZTsKLSAgICBzdGQ6OnVuaXF1ZV9w
dHI8SXNvSGVhcENlbGxUeXBlPiBpbnRsTGlzdEZvcm1hdEhlYXBDZWxsVHlwZTsKLSAgICBzdGQ6
OnVuaXF1ZV9wdHI8SXNvSGVhcENlbGxUeXBlPiBpbnRsTG9jYWxlSGVhcENlbGxUeXBlOwotICAg
IHN0ZDo6dW5pcXVlX3B0cjxJc29IZWFwQ2VsbFR5cGU+IGludGxOdW1iZXJGb3JtYXRIZWFwQ2Vs
bFR5cGU7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPElzb0hlYXBDZWxsVHlwZT4gaW50bFBsdXJhbFJ1
bGVzSGVhcENlbGxUeXBlOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxJc29IZWFwQ2VsbFR5cGU+IGlu
dGxSZWxhdGl2ZVRpbWVGb3JtYXRIZWFwQ2VsbFR5cGU7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPElz
b0hlYXBDZWxsVHlwZT4gaW50bFNlZ21lbnRJdGVyYXRvckhlYXBDZWxsVHlwZTsKLSAgICBzdGQ6
OnVuaXF1ZV9wdHI8SXNvSGVhcENlbGxUeXBlPiBpbnRsU2VnbWVudGVySGVhcENlbGxUeXBlOwot
ICAgIHN0ZDo6dW5pcXVlX3B0cjxJc29IZWFwQ2VsbFR5cGU+IGludGxTZWdtZW50c0hlYXBDZWxs
VHlwZTsKLSNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCi0gICAgc3RkOjp1bmlxdWVfcHRyPElzb0hl
YXBDZWxsVHlwZT4gd2ViQXNzZW1ibHlDb2RlQmxvY2tIZWFwQ2VsbFR5cGU7Ci0gICAgc3RkOjp1
bmlxdWVfcHRyPElzb0hlYXBDZWxsVHlwZT4gd2ViQXNzZW1ibHlFeGNlcHRpb25IZWFwQ2VsbFR5
cGU7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPElzb0hlYXBDZWxsVHlwZT4gd2ViQXNzZW1ibHlGdW5j
dGlvbkhlYXBDZWxsVHlwZTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SXNvSGVhcENlbGxUeXBlPiB3
ZWJBc3NlbWJseUdsb2JhbEhlYXBDZWxsVHlwZTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SXNvSGVh
cENlbGxUeXBlPiB3ZWJBc3NlbWJseUluc3RhbmNlSGVhcENlbGxUeXBlOwotICAgIHN0ZDo6dW5p
cXVlX3B0cjxJc29IZWFwQ2VsbFR5cGU+IHdlYkFzc2VtYmx5TWVtb3J5SGVhcENlbGxUeXBlOwot
ICAgIHN0ZDo6dW5pcXVlX3B0cjxJc29IZWFwQ2VsbFR5cGU+IHdlYkFzc2VtYmx5TW9kdWxlSGVh
cENlbGxUeXBlOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxJc29IZWFwQ2VsbFR5cGU+IHdlYkFzc2Vt
Ymx5TW9kdWxlUmVjb3JkSGVhcENlbGxUeXBlOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxJc29IZWFw
Q2VsbFR5cGU+IHdlYkFzc2VtYmx5VGFibGVIZWFwQ2VsbFR5cGU7Ci0gICAgc3RkOjp1bmlxdWVf
cHRyPElzb0hlYXBDZWxsVHlwZT4gd2ViQXNzZW1ibHlUYWdIZWFwQ2VsbFR5cGU7Ci0jZW5kaWYK
KworICAgIGNvbnN0IEhlYXBDZWxsVHlwZSYgY2VsbEhlYXBDZWxsVHlwZSgpIHsgcmV0dXJuIGhl
YXAuY2VsbEhlYXBDZWxsVHlwZTsgfQorICAgIGNvbnN0IEpTRGVzdHJ1Y3RpYmxlT2JqZWN0SGVh
cENlbGxUeXBlJiBkZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSB7IHJldHVybiBoZWFw
LmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZTsgfTsKIAogI2lmIEVOQUJMRShKSVQpCiAg
ICAgc3RkOjp1bmlxdWVfcHRyPEpJVFNpemVTdGF0aXN0aWNzPiBqaXRTaXplU3RhdGlzdGljczsK
ICNlbmRpZgogICAgIAotICAgIENvbXBsZXRlU3Vic3BhY2UgcHJpbWl0aXZlR2lnYWNhZ2VBdXhp
bGlhcnlTcGFjZTsgLy8gVHlwZWQgYXJyYXlzLCBzdHJpbmdzLCBiaXR2ZWN0b3JzLCBldGMgZ28g
aGVyZS4KLSAgICBDb21wbGV0ZVN1YnNwYWNlIGpzVmFsdWVHaWdhY2FnZUF1eGlsaWFyeVNwYWNl
OyAvLyBCdXR0ZXJmbGllcywgYXJyYXlzIG9mIEpTVmFsdWVzLCBldGMgZ28gaGVyZS4KLSAgICBD
b21wbGV0ZVN1YnNwYWNlIGltbXV0YWJsZUJ1dHRlcmZseUpTVmFsdWVHaWdhY2FnZUF1eGlsaWFy
eVNwYWNlOyAvLyBKU0ltbXV0YWJsZUJ1dHRlcmZseSBnb2VzIGhlcmUuCi0KLSAgICAvLyBXZSBt
YWtlIGNyb3NzLWN1dHRpbmcgYXNzdW1wdGlvbnMgYWJvdXQgdHlwZWQgYXJyYXlzIGJlaW5nIGlu
IHRoZSBwcmltaXRpdmUgR2lnYWNhZ2UgYW5kIGJ1dHRlcmZsaWVzCi0gICAgLy8gYmVpbmcgaW4g
dGhlIEpTVmFsdWUgZ2lnYWNhZ2UuIEZvciBzb21lIHR5cGVzLCBpdCdzIHN1cGVyIG9idmlvdXMg
d2hlcmUgdGhleSBzaG91bGQgZ28sIGFuZCBzbyB3ZQotICAgIC8vIGNhbiBoYXJkY29kZSB0aGF0
IGZhY3QuIEJ1dCBzb21ldGltZXMgaXQncyBub3QgY2xlYXIsIHNvIHdlIGFic3RyYWN0IGl0IGJ5
IGhhdmluZyBhIEdpZ2FjYWdlOjpLaW5kCi0gICAgLy8gY29uc3RhbnQgc29tZXdoZXJlLgotICAg
IC8vIEZJWE1FOiBNYXliZSBpdCB3b3VsZCBiZSBiZXR0ZXIgaWYgZXZlcnlvbmUgYWJzdHJhY3Rl
ZCB0aGlzPwotICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NzUyNDgKLSAgICBBTFdBWVNfSU5MSU5FIENvbXBsZXRlU3Vic3BhY2UmIGdpZ2FjYWdlQXV4aWxp
YXJ5U3BhY2UoR2lnYWNhZ2U6OktpbmQga2luZCkKLSAgICB7Ci0gICAgICAgIHN3aXRjaCAoa2lu
ZCkgewotICAgICAgICBjYXNlIEdpZ2FjYWdlOjpQcmltaXRpdmU6Ci0gICAgICAgICAgICByZXR1
cm4gcHJpbWl0aXZlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZTsKLSAgICAgICAgY2FzZSBHaWdhY2Fn
ZTo6SlNWYWx1ZToKLSAgICAgICAgICAgIHJldHVybiBqc1ZhbHVlR2lnYWNhZ2VBdXhpbGlhcnlT
cGFjZTsKLSAgICAgICAgY2FzZSBHaWdhY2FnZTo6TnVtYmVyT2ZLaW5kczoKLSAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7
Ci0gICAgICAgIHJldHVybiBwcmltaXRpdmVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlOwotICAgIH0K
LSAgICAKLSAgICAvLyBXaGVuZXZlciBwb3NzaWJsZSwgdXNlIHN1YnNwYWNlRm9yPENlbGxUeXBl
Pih2bSkgdG8gZ2V0IG9uZSBvZiB0aGVzZSBzdWJzcGFjZXMuCi0gICAgQ29tcGxldGVTdWJzcGFj
ZSBjZWxsU3BhY2U7Ci0gICAgQ29tcGxldGVTdWJzcGFjZSB2YXJpYWJsZVNpemVkQ2VsbFNwYWNl
OyAvLyBGSVhNRTogVGhpcyBzcGFjZSBpcyBwcm9ibGVtYXRpYyBiZWNhdXNlIHdlIGhhdmUgdGhp
bmdzIGluIGhlcmUgbGlrZSBEaXJlY3RBcmd1bWVudHMgYW5kIFNjb3BlZEFyZ3VtZW50czsgdGhv
c2Ugc2hvdWxkIGJlIHNwbGl0IGludG8gSlNWYWx1ZU9PQiBjZWxscyBhbmQgSlNWYWx1ZVN0cmlj
dCBhdXhpbGlhcmllcy4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4
Mjg1OAotICAgIENvbXBsZXRlU3Vic3BhY2UgZGVzdHJ1Y3RpYmxlT2JqZWN0U3BhY2U7Ci0gICAg
Ci0gICAgSXNvU3Vic3BhY2UgYXJyYXlTcGFjZTsKLSAgICBJc29TdWJzcGFjZSBiaWdJbnRTcGFj
ZTsKLSAgICBJc29TdWJzcGFjZSBjYWxsZWVTcGFjZTsKLSAgICBJc29TdWJzcGFjZSBjbG9uZWRB
cmd1bWVudHNTcGFjZTsKLSAgICBJc29TdWJzcGFjZSBjdXN0b21HZXR0ZXJTZXR0ZXJTcGFjZTsK
LSAgICBJc29TdWJzcGFjZSBkYXRlSW5zdGFuY2VTcGFjZTsKLSAgICBJc29TdWJzcGFjZSBkb21B
dHRyaWJ1dGVHZXR0ZXJTZXR0ZXJTcGFjZTsKLSAgICBJc29TdWJzcGFjZSBleGNlcHRpb25TcGFj
ZTsKLSAgICBJc29TdWJzcGFjZSBleGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlU3BhY2U7Ci0gICAg
SXNvU3Vic3BhY2UgZnVuY3Rpb25TcGFjZTsKLSAgICBJc29TdWJzcGFjZSBnZXR0ZXJTZXR0ZXJT
cGFjZTsKLSAgICBJc29TdWJzcGFjZSBnbG9iYWxMZXhpY2FsRW52aXJvbm1lbnRTcGFjZTsKLSAg
ICBJc29TdWJzcGFjZSBpbnRlcm5hbEZ1bmN0aW9uU3BhY2U7Ci0gICAgSXNvU3Vic3BhY2UganNQ
cm94eVNwYWNlOwotICAgIElzb1N1YnNwYWNlIG5hdGl2ZUV4ZWN1dGFibGVTcGFjZTsKLSAgICBJ
c29TdWJzcGFjZSBudW1iZXJPYmplY3RTcGFjZTsKLSAgICBJc29TdWJzcGFjZSBwbGFpbk9iamVj
dFNwYWNlOwotICAgIElzb1N1YnNwYWNlIHByb21pc2VTcGFjZTsKLSAgICBJc29TdWJzcGFjZSBw
cm9wZXJ0eU5hbWVFbnVtZXJhdG9yU3BhY2U7Ci0gICAgSXNvU3Vic3BhY2UgcHJvcGVydHlUYWJs
ZVNwYWNlOwotICAgIElzb1N1YnNwYWNlIHJlZ0V4cFNwYWNlOwotICAgIElzb1N1YnNwYWNlIHJl
Z0V4cE9iamVjdFNwYWNlOwotICAgIElzb1N1YnNwYWNlIHJvcGVTdHJpbmdTcGFjZTsKLSAgICBJ
c29TdWJzcGFjZSBzY29wZWRBcmd1bWVudHNTcGFjZTsKLSAgICBJc29TdWJzcGFjZSBzcGFyc2VB
cnJheVZhbHVlTWFwU3BhY2U7Ci0gICAgSXNvU3Vic3BhY2Ugc3RyaW5nU3BhY2U7Ci0gICAgSXNv
U3Vic3BhY2Ugc3RyaW5nT2JqZWN0U3BhY2U7Ci0gICAgSXNvU3Vic3BhY2Ugc3RydWN0dXJlQ2hh
aW5TcGFjZTsKLSAgICBJc29TdWJzcGFjZSBzdHJ1Y3R1cmVSYXJlRGF0YVNwYWNlOwotICAgIElz
b1N1YnNwYWNlIHN0cnVjdHVyZVNwYWNlOwotICAgIElzb1N1YnNwYWNlIGJyYW5kZWRTdHJ1Y3R1
cmVTcGFjZTsKLSAgICBJc29TdWJzcGFjZSBzeW1ib2xUYWJsZVNwYWNlOworICAgIEFMV0FZU19J
TkxJTkUgQ29tcGxldGVTdWJzcGFjZSYgcHJpbWl0aXZlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZSgp
IHsgcmV0dXJuIGhlYXAucHJpbWl0aXZlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZTsgfQorICAgIEFM
V0FZU19JTkxJTkUgQ29tcGxldGVTdWJzcGFjZSYganNWYWx1ZUdpZ2FjYWdlQXV4aWxpYXJ5U3Bh
Y2UoKSB7IHJldHVybiBoZWFwLmpzVmFsdWVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlOyB9CisgICAg
QUxXQVlTX0lOTElORSBDb21wbGV0ZVN1YnNwYWNlJiBpbW11dGFibGVCdXR0ZXJmbHlKU1ZhbHVl
R2lnYWNhZ2VBdXhpbGlhcnlTcGFjZSgpIHsgcmV0dXJuIGhlYXAuaW1tdXRhYmxlQnV0dGVyZmx5
SlNWYWx1ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2U7IH0KKyAgICBBTFdBWVNfSU5MSU5FIENvbXBs
ZXRlU3Vic3BhY2UmIGdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UoR2lnYWNhZ2U6OktpbmQga2luZCkg
eyByZXR1cm4gaGVhcC5naWdhY2FnZUF1eGlsaWFyeVNwYWNlKGtpbmQpOyB9CisgICAgQUxXQVlT
X0lOTElORSBDb21wbGV0ZVN1YnNwYWNlJiBjZWxsU3BhY2UoKSB7IHJldHVybiBoZWFwLmNlbGxT
cGFjZTsgfQorICAgIEFMV0FZU19JTkxJTkUgQ29tcGxldGVTdWJzcGFjZSYgdmFyaWFibGVTaXpl
ZENlbGxTcGFjZSgpIHsgcmV0dXJuIGhlYXAudmFyaWFibGVTaXplZENlbGxTcGFjZTsgfQorICAg
IEFMV0FZU19JTkxJTkUgQ29tcGxldGVTdWJzcGFjZSYgZGVzdHJ1Y3RpYmxlT2JqZWN0U3BhY2Uo
KSB7IHJldHVybiBoZWFwLmRlc3RydWN0aWJsZU9iamVjdFNwYWNlOyB9CisKKyAgICBBTFdBWVNf
SU5MSU5FIElzb1N1YnNwYWNlJiBhcnJheVNwYWNlKCkgeyByZXR1cm4gaGVhcC5hcnJheVNwYWNl
OyB9CisgICAgQUxXQVlTX0lOTElORSBJc29TdWJzcGFjZSYgYmlnSW50U3BhY2UoKSB7IHJldHVy
biBoZWFwLmJpZ0ludFNwYWNlOyB9CisgICAgQUxXQVlTX0lOTElORSBJc29TdWJzcGFjZSYgY2Fs
bGVlU3BhY2UoKSB7IHJldHVybiBoZWFwLmNhbGxlZVNwYWNlOyB9CisgICAgQUxXQVlTX0lOTElO
RSBJc29TdWJzcGFjZSYgY2xvbmVkQXJndW1lbnRzU3BhY2UoKSB7IHJldHVybiBoZWFwLmNsb25l
ZEFyZ3VtZW50c1NwYWNlOyB9CisgICAgQUxXQVlTX0lOTElORSBJc29TdWJzcGFjZSYgY3VzdG9t
R2V0dGVyU2V0dGVyU3BhY2UoKSB7IHJldHVybiBoZWFwLmN1c3RvbUdldHRlclNldHRlclNwYWNl
OyB9CisgICAgQUxXQVlTX0lOTElORSBJc29TdWJzcGFjZSYgZGF0ZUluc3RhbmNlU3BhY2UoKSB7
IHJldHVybiBoZWFwLmRhdGVJbnN0YW5jZVNwYWNlOyB9CisgICAgQUxXQVlTX0lOTElORSBJc29T
dWJzcGFjZSYgZG9tQXR0cmlidXRlR2V0dGVyU2V0dGVyU3BhY2UoKSB7IHJldHVybiBoZWFwLmRv
bUF0dHJpYnV0ZUdldHRlclNldHRlclNwYWNlOyB9CisgICAgQUxXQVlTX0lOTElORSBJc29TdWJz
cGFjZSYgZXhjZXB0aW9uU3BhY2UoKSB7IHJldHVybiBoZWFwLmV4Y2VwdGlvblNwYWNlOyB9Cisg
ICAgQUxXQVlTX0lOTElORSBJc29TdWJzcGFjZSYgZXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZVNw
YWNlKCkgeyByZXR1cm4gaGVhcC5leGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlU3BhY2U7IH0KKyAg
ICBBTFdBWVNfSU5MSU5FIElzb1N1YnNwYWNlJiBmdW5jdGlvblNwYWNlKCkgeyByZXR1cm4gaGVh
cC5mdW5jdGlvblNwYWNlOyB9CisgICAgQUxXQVlTX0lOTElORSBJc29TdWJzcGFjZSYgZ2V0dGVy
U2V0dGVyU3BhY2UoKSB7IHJldHVybiBoZWFwLmdldHRlclNldHRlclNwYWNlOyB9CisgICAgQUxX
QVlTX0lOTElORSBJc29TdWJzcGFjZSYgZ2xvYmFsTGV4aWNhbEVudmlyb25tZW50U3BhY2UoKSB7
IHJldHVybiBoZWFwLmdsb2JhbExleGljYWxFbnZpcm9ubWVudFNwYWNlOyB9CisgICAgQUxXQVlT
X0lOTElORSBJc29TdWJzcGFjZSYgaW50ZXJuYWxGdW5jdGlvblNwYWNlKCkgeyByZXR1cm4gaGVh
cC5pbnRlcm5hbEZ1bmN0aW9uU3BhY2U7IH0KKyAgICBBTFdBWVNfSU5MSU5FIElzb1N1YnNwYWNl
JiBqc1Byb3h5U3BhY2UoKSB7IHJldHVybiBoZWFwLmpzUHJveHlTcGFjZTsgfQorICAgIEFMV0FZ
U19JTkxJTkUgSXNvU3Vic3BhY2UmIG5hdGl2ZUV4ZWN1dGFibGVTcGFjZSgpIHsgcmV0dXJuIGhl
YXAubmF0aXZlRXhlY3V0YWJsZVNwYWNlOyB9CisgICAgQUxXQVlTX0lOTElORSBJc29TdWJzcGFj
ZSYgbnVtYmVyT2JqZWN0U3BhY2UoKSB7IHJldHVybiBoZWFwLm51bWJlck9iamVjdFNwYWNlOyB9
CisgICAgQUxXQVlTX0lOTElORSBJc29TdWJzcGFjZSYgcGxhaW5PYmplY3RTcGFjZSgpIHsgcmV0
dXJuIGhlYXAucGxhaW5PYmplY3RTcGFjZTsgfQorICAgIEFMV0FZU19JTkxJTkUgSXNvU3Vic3Bh
Y2UmIHByb21pc2VTcGFjZSgpIHsgcmV0dXJuIGhlYXAucHJvbWlzZVNwYWNlOyB9CisgICAgQUxX
QVlTX0lOTElORSBJc29TdWJzcGFjZSYgcHJvcGVydHlOYW1lRW51bWVyYXRvclNwYWNlKCkgeyBy
ZXR1cm4gaGVhcC5wcm9wZXJ0eU5hbWVFbnVtZXJhdG9yU3BhY2U7IH0KKyAgICBBTFdBWVNfSU5M
SU5FIElzb1N1YnNwYWNlJiBwcm9wZXJ0eVRhYmxlU3BhY2UoKSB7IHJldHVybiBoZWFwLnByb3Bl
cnR5VGFibGVTcGFjZTsgfQorICAgIEFMV0FZU19JTkxJTkUgSXNvU3Vic3BhY2UmIHJlZ0V4cFNw
YWNlKCkgeyByZXR1cm4gaGVhcC5yZWdFeHBTcGFjZTsgfQorICAgIEFMV0FZU19JTkxJTkUgSXNv
U3Vic3BhY2UmIHJlZ0V4cE9iamVjdFNwYWNlKCkgeyByZXR1cm4gaGVhcC5yZWdFeHBPYmplY3RT
cGFjZTsgfQorICAgIEFMV0FZU19JTkxJTkUgSXNvU3Vic3BhY2UmIHJvcGVTdHJpbmdTcGFjZSgp
IHsgcmV0dXJuIGhlYXAucm9wZVN0cmluZ1NwYWNlOyB9CisgICAgQUxXQVlTX0lOTElORSBJc29T
dWJzcGFjZSYgc2NvcGVkQXJndW1lbnRzU3BhY2UoKSB7IHJldHVybiBoZWFwLnNjb3BlZEFyZ3Vt
ZW50c1NwYWNlOyB9CisgICAgQUxXQVlTX0lOTElORSBJc29TdWJzcGFjZSYgc3BhcnNlQXJyYXlW
YWx1ZU1hcFNwYWNlKCkgeyByZXR1cm4gaGVhcC5zcGFyc2VBcnJheVZhbHVlTWFwU3BhY2U7IH0K
KyAgICBBTFdBWVNfSU5MSU5FIElzb1N1YnNwYWNlJiBzdHJpbmdTcGFjZSgpIHsgcmV0dXJuIGhl
YXAuc3RyaW5nU3BhY2U7IH0KKyAgICBBTFdBWVNfSU5MSU5FIElzb1N1YnNwYWNlJiBzdHJpbmdP
YmplY3RTcGFjZSgpIHsgcmV0dXJuIGhlYXAuc3RyaW5nT2JqZWN0U3BhY2U7IH0KKyAgICBBTFdB
WVNfSU5MSU5FIElzb1N1YnNwYWNlJiBzdHJ1Y3R1cmVDaGFpblNwYWNlKCkgeyByZXR1cm4gaGVh
cC5zdHJ1Y3R1cmVDaGFpblNwYWNlOyB9CisgICAgQUxXQVlTX0lOTElORSBJc29TdWJzcGFjZSYg
c3RydWN0dXJlUmFyZURhdGFTcGFjZSgpIHsgcmV0dXJuIGhlYXAuc3RydWN0dXJlUmFyZURhdGFT
cGFjZTsgfQorICAgIEFMV0FZU19JTkxJTkUgSXNvU3Vic3BhY2UmIHN0cnVjdHVyZVNwYWNlKCkg
eyByZXR1cm4gaGVhcC5zdHJ1Y3R1cmVTcGFjZTsgfQorICAgIEFMV0FZU19JTkxJTkUgSXNvU3Vi
c3BhY2UmIGJyYW5kZWRTdHJ1Y3R1cmVTcGFjZSgpIHsgcmV0dXJuIGhlYXAuYnJhbmRlZFN0cnVj
dHVyZVNwYWNlOyB9CisgICAgQUxXQVlTX0lOTElORSBJc29TdWJzcGFjZSYgc3ltYm9sVGFibGVT
cGFjZSgpIHsgcmV0dXJuIGhlYXAuc3ltYm9sVGFibGVTcGFjZTsgfQogCiAjZGVmaW5lIERZTkFN
SUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIobmFtZSkgXAogICAgIHRlbXBsYXRlPFN1YnNw
YWNlQWNjZXNzIG1vZGU+IFwKLSAgICBJc29TdWJzcGFjZSogbmFtZSgpIFwKLSAgICB7IFwKLSAg
ICAgICAgaWYgKG1fIyNuYW1lIHx8IG1vZGUgPT0gU3Vic3BhY2VBY2Nlc3M6OkNvbmN1cnJlbnRs
eSkgXAotICAgICAgICAgICAgcmV0dXJuIG1fIyNuYW1lLmdldCgpOyBcCi0gICAgICAgIHJldHVy
biBuYW1lIyNTbG93KCk7IFwKLSAgICB9IFwKLSAgICBKU19FWFBPUlRfUFJJVkFURSBJc29TdWJz
cGFjZSogbmFtZSMjU2xvdygpOyBcCi0gICAgc3RkOjp1bmlxdWVfcHRyPElzb1N1YnNwYWNlPiBt
XyMjbmFtZTsKLQorICAgIEFMV0FZU19JTkxJTkUgSXNvU3Vic3BhY2UqIG5hbWUoKSB7IHJldHVy
biBoZWFwLm5hbWU8bW9kZT4oKTsgfQogCiAjaWYgSlNDX09CSkNfQVBJX0VOQUJMRUQKICAgICBE
WU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKGFwaVdyYXBwZXJPYmplY3RTcGFjZSkK
QEAgLTY1Nyw3NCArNTYzLDIzIEBAIHB1YmxpYzoKICNlbmRpZgogCiAjdW5kZWYgRFlOQU1JQ19J
U09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUgotICAgIAotICAgIElzb0NlbGxTZXQgZXhlY3V0YWJs
ZVRvQ29kZUJsb2NrRWRnZXNXaXRoQ29uc3RyYWludHM7Ci0gICAgSXNvQ2VsbFNldCBleGVjdXRh
YmxlVG9Db2RlQmxvY2tFZGdlc1dpdGhGaW5hbGl6ZXJzOworCisgICAgQUxXQVlTX0lOTElORSBJ
c29DZWxsU2V0JiBleGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlc1dpdGhDb25zdHJhaW50cygpIHsg
cmV0dXJuIGhlYXAuZXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZXNXaXRoQ29uc3RyYWludHM7IH0K
KyAgICBBTFdBWVNfSU5MSU5FIElzb0NlbGxTZXQmIGV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2Vz
V2l0aEZpbmFsaXplcnMoKSB7IHJldHVybiBoZWFwLmV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2Vz
V2l0aEZpbmFsaXplcnM7IH0KIAogI2RlZmluZSBEWU5BTUlDX1NQQUNFX0FORF9TRVRfREVGSU5F
X01FTUJFUihuYW1lKSBcCiAgICAgdGVtcGxhdGU8U3Vic3BhY2VBY2Nlc3MgbW9kZT4gXAotICAg
IElzb1N1YnNwYWNlKiBuYW1lKCkgXAotICAgIHsgXAotICAgICAgICBpZiAoYXV0byogc3BhY2VB
bmRTZXQgPSBtXyMjbmFtZS5nZXQoKSkgXAotICAgICAgICAgICAgcmV0dXJuICZzcGFjZUFuZFNl
dC0+c3BhY2U7IFwKLSAgICAgICAgaWYgKG1vZGUgPT0gU3Vic3BhY2VBY2Nlc3M6OkNvbmN1cnJl
bnRseSkgXAotICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7IFwKLSAgICAgICAgcmV0dXJuIG5h
bWUjI1Nsb3coKTsgXAotICAgIH0gXAotICAgIElzb1N1YnNwYWNlKiBuYW1lIyNTbG93KCk7IFwK
LSAgICBzdGQ6OnVuaXF1ZV9wdHI8U3BhY2VBbmRTZXQ+IG1fIyNuYW1lOwotICAgIAotICAgIHN0
cnVjdCBTcGFjZUFuZFNldCB7Ci0gICAgICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRF
RDsKKyAgICBBTFdBWVNfSU5MSU5FIElzb1N1YnNwYWNlKiBuYW1lKCkgeyByZXR1cm4gaGVhcC5u
YW1lPG1vZGU+KCk7IH0KIAotICAgICAgICBJc29TdWJzcGFjZSBzcGFjZTsKLSAgICAgICAgSXNv
Q2VsbFNldCBzZXQ7Ci0gICAgICAgIAotICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBBcmd1
bWVudHM+Ci0gICAgICAgIFNwYWNlQW5kU2V0KEFyZ3VtZW50cyYmLi4uIGFyZ3VtZW50cykKLSAg
ICAgICAgICAgIDogc3BhY2Uoc3RkOjpmb3J3YXJkPEFyZ3VtZW50cz4oYXJndW1lbnRzKS4uLikK
LSAgICAgICAgICAgICwgc2V0KHNwYWNlKQotICAgICAgICB7Ci0gICAgICAgIH0KLSAgICAgICAg
Ci0gICAgICAgIHN0YXRpYyBJc29DZWxsU2V0JiBzZXRGb3IoU3Vic3BhY2UmIHNwYWNlKQotICAg
ICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gKmJpdHdpc2VfY2FzdDxJc29DZWxsU2V0Kj4oCi0g
ICAgICAgICAgICAgICAgYml0d2lzZV9jYXN0PGNoYXIqPigmc3BhY2UpIC0KLSAgICAgICAgICAg
ICAgICBPQkpFQ1RfT0ZGU0VUT0YoU3BhY2VBbmRTZXQsIHNwYWNlKSArCi0gICAgICAgICAgICAg
ICAgT0JKRUNUX09GRlNFVE9GKFNwYWNlQW5kU2V0LCBzZXQpKTsKLSAgICAgICAgfQotICAgIH07
Ci0gICAgCi0gICAgU3BhY2VBbmRTZXQgY29kZUJsb2NrU3BhY2U7Ci0KLSAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBGdW5jPgotICAgIHZvaWQgZm9yRWFjaENvZGVCbG9ja1NwYWNlKGNvbnN0IEZ1bmMm
IGZ1bmMpCi0gICAgewotICAgICAgICAvLyBUaGlzIHNob3VsZCBub3QgaW5jbHVkZSB3ZWJBc3Nl
bWJseUNvZGVCbG9ja1NwYWNlIGJlY2F1c2UgdGhpcyBpcyBhYm91dCBzdWJzY2xhc3NlcyBvZgot
ICAgICAgICAvLyBKU0M6OkNvZGVCbG9jay4KLSAgICAgICAgZnVuYyhjb2RlQmxvY2tTcGFjZSk7
Ci0gICAgfQorICAgIHVzaW5nIFNwYWNlQW5kU2V0ID0gSGVhcDo6U3BhY2VBbmRTZXQ7CisgICAg
QUxXQVlTX0lOTElORSBTcGFjZUFuZFNldCYgY29kZUJsb2NrU3BhY2UoKSB7IHJldHVybiBoZWFw
LmNvZGVCbG9ja1NwYWNlOyB9CiAKICAgICBEWU5BTUlDX1NQQUNFX0FORF9TRVRfREVGSU5FX01F
TUJFUihldmFsRXhlY3V0YWJsZVNwYWNlKQogICAgIERZTkFNSUNfU1BBQ0VfQU5EX1NFVF9ERUZJ
TkVfTUVNQkVSKG1vZHVsZVByb2dyYW1FeGVjdXRhYmxlU3BhY2UpCi0gICAgU3BhY2VBbmRTZXQg
ZnVuY3Rpb25FeGVjdXRhYmxlU3BhY2U7Ci0gICAgU3BhY2VBbmRTZXQgcHJvZ3JhbUV4ZWN1dGFi
bGVTcGFjZTsKLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmM+Ci0gICAgdm9pZCBmb3JFYWNo
U2NyaXB0RXhlY3V0YWJsZVNwYWNlKGNvbnN0IEZ1bmMmIGZ1bmMpCi0gICAgewotICAgICAgICBp
ZiAobV9ldmFsRXhlY3V0YWJsZVNwYWNlKQotICAgICAgICAgICAgZnVuYygqbV9ldmFsRXhlY3V0
YWJsZVNwYWNlKTsKLSAgICAgICAgZnVuYyhmdW5jdGlvbkV4ZWN1dGFibGVTcGFjZSk7Ci0gICAg
ICAgIGlmIChtX21vZHVsZVByb2dyYW1FeGVjdXRhYmxlU3BhY2UpCi0gICAgICAgICAgICBmdW5j
KCptX21vZHVsZVByb2dyYW1FeGVjdXRhYmxlU3BhY2UpOwotICAgICAgICBmdW5jKHByb2dyYW1F
eGVjdXRhYmxlU3BhY2UpOwotICAgIH0KLQotICAgIFNwYWNlQW5kU2V0IHVubGlua2VkRnVuY3Rp
b25FeGVjdXRhYmxlU3BhY2U7CiAKLSN1bmRlZiBEWU5BTUlDX1NQQUNFX0FORF9TRVRfREVGSU5F
X01FTUJFUgorICAgIEFMV0FZU19JTkxJTkUgU3BhY2VBbmRTZXQmIGZ1bmN0aW9uRXhlY3V0YWJs
ZVNwYWNlKCkgeyByZXR1cm4gaGVhcC5mdW5jdGlvbkV4ZWN1dGFibGVTcGFjZTsgfQorICAgIEFM
V0FZU19JTkxJTkUgU3BhY2VBbmRTZXQmIHByb2dyYW1FeGVjdXRhYmxlU3BhY2UoKSB7IHJldHVy
biBoZWFwLnByb2dyYW1FeGVjdXRhYmxlU3BhY2U7IH0KKyAgICBBTFdBWVNfSU5MSU5FIFNwYWNl
QW5kU2V0JiB1bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZVNwYWNlKCkgeyByZXR1cm4gaGVhcC51
bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZVNwYWNlOyB9CiAKICAgICBWTVR5cGUgdm1UeXBlOwog
ICAgIENsaWVudERhdGEqIGNsaWVudERhdGE7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9XZWFrTWFwUHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvV2Vha01hcFByb3RvdHlwZS5oCShyZXZpc2lvbiAyODYwNDMpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFrTWFwUHJvdG90eXBlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTQxLDcgKzQxLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSog
c3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VC
U1BBQ0VfU0hBUkFCTEUoV2Vha01hcFByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAm
dm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNl
KCk7CiAgICAgfQogCiAgICAgc3RhdGljIFdlYWtNYXBQcm90b3R5cGUqIGNyZWF0ZShWTSYgdm0s
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlKQpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha09iamVjdFJlZlByb3RvdHlwZS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dlYWtPYmplY3RS
ZWZQcm90b3R5cGUuaAkocmV2aXNpb24gMjg2MDQzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvV2Vha09iamVjdFJlZlByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw3
ICszNyw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZN
JiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxF
KFdlYWtPYmplY3RSZWZQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWlu
T2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAg
IH0KIAogICAgIHN0YXRpYyBXZWFrT2JqZWN0UmVmUHJvdG90eXBlKiBjcmVhdGUoVk0mIHZtLCBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dlYWtTZXRQcm90b3R5cGUuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFrU2V0UHJvdG90eXBlLmgJ
KHJldmlzaW9uIDI4NjA0MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dlYWtT
ZXRQcm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtNDEsNyArNDEsNyBAQCBwdWJsaWM6CiAg
ICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewogICAgICAg
ICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShXZWFrU2V0UHJvdG90eXBlLCBC
YXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1
cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgV2Vha1NldFBy
b3RvdHlwZSogY3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvSlNE
b2xsYXJWTS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0pT
RG9sbGFyVk0uY3BwCShyZXZpc2lvbiAyODYwNDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
dG9vbHMvSlNEb2xsYXJWTS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzMyw3ICsxMzMsNyBAQCBw
dWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNzPgog
ICAgIHN0YXRpYyBDb21wbGV0ZVN1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewot
ICAgICAgICByZXR1cm4gJnZtLmNlbGxTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5jZWxsU3Bh
Y2UoKTsKICAgICB9CiAKICAgICBKU0RvbGxhclZNQ2FsbEZyYW1lKFZNJiB2bSwgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUpCkBAIC0yMjMsNyArMjIzLDcgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5
cGVuYW1lIENlbGxUeXBlLCBTdWJzcGFjZUFjY2Vzcz4KICAgICBzdGF0aWMgQ29tcGxldGVTdWJz
cGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKLSAgICAgICAgcmV0dXJuICZ2bS5jZWxs
U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0uY2VsbFNwYWNlKCk7CiAgICAgfQogCiAgICAgUm9v
dCogcm9vdCgpIGNvbnN0IHsgcmV0dXJuIG1fcm9vdC5nZXQoKTsgfQpAQCAtMjg3LDcgKzI4Nyw3
IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vic3BhY2VBY2Nl
c3M+CiAgICAgc3RhdGljIENvbXBsZXRlU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAg
ICB7Ci0gICAgICAgIHJldHVybiAmdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0U3BhY2U7CisgICAgICAg
IHJldHVybiAmdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBSb290
KFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCkBAIC0zNTQsNyArMzU0LDcgQEAgcHVibGlj
OgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlLCBTdWJzcGFjZUFjY2Vzcz4KICAgICBz
dGF0aWMgQ29tcGxldGVTdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKLSAgICAg
ICAgcmV0dXJuICZ2bS5jZWxsU3BhY2U7CisgICAgICAgIHJldHVybiAmdm0uY2VsbFNwYWNlKCk7
CiAgICAgfQogCiAgICAgc3RhdGljIFNpbXBsZU9iamVjdCogY3JlYXRlKFZNJiB2bSwgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCkKQEAgLTQyNiw3ICs0MjYsNyBAQCBwdWJsaWM6CiAgICAg
dGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNzPgogICAgIHN0YXRpYyBD
b21wbGV0ZVN1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewotICAgICAgICByZXR1
cm4gJnZtLmNlbGxTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5jZWxsU3BhY2UoKTsKICAgICB9
CiAKICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKQEAgLTUwOCw3ICs1MDgs
NyBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUsIFN1YnNwYWNlQWNj
ZXNzPgogICAgIHN0YXRpYyBDb21wbGV0ZVN1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAg
ICAgewotICAgICAgICByZXR1cm4gJnZtLmNlbGxTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5j
ZWxsU3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1
cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlw
ZSkKQEAgLTU5MCw3ICs1OTAsNyBAQCBJR05PUkVfV0FSTklOR1NfRU5ECiAgICAgdGVtcGxhdGU8
dHlwZW5hbWUgQ2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNzPgogICAgIHN0YXRpYyBDb21wbGV0ZVN1
YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewotICAgICAgICByZXR1cm4gJnZtLmNl
bGxTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5jZWxsU3BhY2UoKTsKICAgICB9CiAKICAgICBz
dGF0aWMgUnVudGltZUFycmF5KiBjcmVhdGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
Q2FsbEZyYW1lKiBjYWxsRnJhbWUpCkBAIC03NzIsNyArNzcyLDcgQEAgcHVibGljOgogICAgIHRl
bXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlLCBTdWJzcGFjZUFjY2Vzcz4KICAgICBzdGF0aWMgQ29t
cGxldGVTdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKLSAgICAgICAgcmV0dXJu
ICZ2bS5jZWxsU3BhY2U7CisgICAgICAgIHJldHVybiAmdm0uY2VsbFNwYWNlKCk7CiAgICAgfQog
CiAgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCkBAIC04NzIsNyArODcyLDcg
QEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlLCBTdWJzcGFjZUFjY2Vz
cz4KICAgICBzdGF0aWMgQ29tcGxldGVTdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAg
IHsKLSAgICAgICAgcmV0dXJuICZ2bS5jZWxsU3BhY2U7CisgICAgICAgIHJldHVybiAmdm0uY2Vs
bFNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJl
KFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUp
CkBAIC04OTcsNyArODk3LDcgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxU
eXBlLCBTdWJzcGFjZUFjY2Vzcz4KICAgICBzdGF0aWMgQ29tcGxldGVTdWJzcGFjZSogc3Vic3Bh
Y2VGb3IoVk0mIHZtKQogICAgIHsKLSAgICAgICAgcmV0dXJuICZ2bS5jZWxsU3BhY2U7CisgICAg
ICAgIHJldHVybiAmdm0uY2VsbFNwYWNlKCk7CiAgICAgfQogCiAgICAgT2JqZWN0RG9pbmdTaWRl
RWZmZWN0UHV0V2l0aG91dENvcnJlY3RTbG90U3RhdHVzKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUpCkBAIC05NDgsNyArOTQ4LDcgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1l
IENlbGxUeXBlLCBTdWJzcGFjZUFjY2Vzcz4KICAgICBzdGF0aWMgQ29tcGxldGVTdWJzcGFjZSog
c3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKLSAgICAgICAgcmV0dXJuICZ2bS5jZWxsU3BhY2U7
CisgICAgICAgIHJldHVybiAmdm0uY2VsbFNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIFN0
cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCkBAIC0xNTg1LDcgKzE1ODUsNyBAQCBwdWJsaWM6CiAg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNzPgogICAgIHN0YXRp
YyBDb21wbGV0ZVN1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewotICAgICAgICBy
ZXR1cm4gJnZtLmNlbGxTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5jZWxsU3BhY2UoKTsKICAg
ICB9CiAKICAgICBKU1Rlc3RDdXN0b21HZXR0ZXJTZXR0ZXIoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSkKQEAgLTE4MzgsNyArMTgzOCw3IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBDZWxsVHlwZSwgU3Vic3BhY2VBY2Nlc3M+CiAgICAgc3RhdGljIENvbXBsZXRlU3Vic3Bh
Y2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7Ci0gICAgICAgIHJldHVybiAmdm0uZGVzdHJ1
Y3RpYmxlT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0
U3BhY2UoKTsKICAgICB9CiAKICAgICBjbGFzcyBDbGllbnQgZmluYWwgOiBwdWJsaWMgV2FzbTo6
U3RyZWFtaW5nUGFyc2VyQ2xpZW50IHsKQEAgLTE5MzMsNyArMTkzMyw3IEBAIHB1YmxpYzoKICAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vic3BhY2VBY2Nlc3M+CiAgICAgc3RhdGlj
IENvbXBsZXRlU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7Ci0gICAgICAgIHJl
dHVybiAmdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0uZGVz
dHJ1Y3RpYmxlT2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBXYXNtU3RyZWFtaW5nQ29tcGls
ZXIoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgV2FzbTo6Q29tcGlsZXJNb2RlIGNvbXBp
bGVyTW9kZSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNQcm9taXNlKiBwcm9taXNl
LCBKU09iamVjdCogaW1wb3J0T2JqZWN0KQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3Rv
b2xzL0pTRG9sbGFyVk0uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9v
bHMvSlNEb2xsYXJWTS5oCShyZXZpc2lvbiAyODYwNDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvdG9vbHMvSlNEb2xsYXJWTS5oCSh3b3JraW5nIGNvcHkpCkBAIC00Miw3ICs0Miw3IEBAIHB1
YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vic3BhY2VBY2Nlc3M+CiAg
ICAgc3RhdGljIENvbXBsZXRlU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7Ci0g
ICAgICAgIHJldHVybiAmdm0uY2VsbFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLmNlbGxTcGFj
ZSgpOwogICAgIH0KICAgICAKICAgICBERUNMQVJFX0VYUE9SVF9JTkZPOwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHkuaAkocmV2aXNpb24gMjg2
MDQzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseS5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNi0y
MDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAx
Ni0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpAQCAtNDEsNyArNDEsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIElzb1N1
YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJU
X0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1dlYkFzc2VtYmx5LCBCYXNlKTsKLSAgICAgICAgcmV0
dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0
U3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgSlNXZWJBc3NlbWJseSogY3JlYXRlKFZNJiwg
SlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL2pzL1dlYkFzc2VtYmx5Q29tcGlsZUVycm9yUHJvdG90eXBlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlDb21waWxlRXJyb3JQ
cm90b3R5cGUuaAkocmV2aXNpb24gMjg2MDQzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vanMvV2ViQXNzZW1ibHlDb21waWxlRXJyb3JQcm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpA
QCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAxOSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAyMSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
QEAgLTQxLDcgKzQxLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3Bh
Y2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0Vf
U0hBUkFCTEUoV2ViQXNzZW1ibHlDb21waWxlRXJyb3JQcm90b3R5cGUsIEJhc2UpOwotICAgICAg
ICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5P
YmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBXZWJBc3NlbWJseUNvbXBpbGVFcnJv
clByb3RvdHlwZSogY3JlYXRlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqKTsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5RXhjZXB0aW9uUHJv
dG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2Vi
QXNzZW1ibHlFeGNlcHRpb25Qcm90b3R5cGUuaAkocmV2aXNpb24gMjg2MDQzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlFeGNlcHRpb25Qcm90b3R5cGUuaAko
d29ya2luZyBjb3B5KQpAQCAtNDEsNyArNDEsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIElzb1N1
YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJU
X0lTT19TVUJTUEFDRV9TSEFSQUJMRShXZWJBc3NlbWJseUV4Y2VwdGlvblByb3RvdHlwZSwgQmFz
ZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJu
ICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIFdlYkFzc2VtYmx5
RXhjZXB0aW9uUHJvdG90eXBlKiBjcmVhdGUoVk0mLCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVy
ZSopOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlHbG9i
YWxQcm90b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9q
cy9XZWJBc3NlbWJseUdsb2JhbFByb3RvdHlwZS5oCShyZXZpc2lvbiAyODYwNDMpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUdsb2JhbFByb3RvdHlwZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTktMjAy
MSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKQEAgLTQwLDcgKzQwLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJc29TdWJzcGFj
ZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09f
U1VCU1BBQ0VfU0hBUkFCTEUoV2ViQXNzZW1ibHlHbG9iYWxQcm90b3R5cGUsIEJhc2UpOwotICAg
ICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxh
aW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBXZWJBc3NlbWJseUdsb2JhbFBy
b3RvdHlwZSogY3JlYXRlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqKTsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5SW5zdGFuY2VQcm90b3R5
cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3Nl
bWJseUluc3RhbmNlUHJvdG90eXBlLmgJKHJldmlzaW9uIDI4NjA0MykKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5SW5zdGFuY2VQcm90b3R5cGUuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAxOSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAy
MSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKQEAgLTQxLDcgKzQxLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJc29TdWJzcGFj
ZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09f
U1VCU1BBQ0VfU0hBUkFCTEUoV2ViQXNzZW1ibHlJbnN0YW5jZVByb3RvdHlwZSwgQmFzZSk7Ci0g
ICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5w
bGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIFdlYkFzc2VtYmx5SW5zdGFu
Y2VQcm90b3R5cGUqIGNyZWF0ZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKik7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUxpbmtFcnJvclBy
b3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dl
YkFzc2VtYmx5TGlua0Vycm9yUHJvdG90eXBlLmgJKHJldmlzaW9uIDI4NjA0MykKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TGlua0Vycm9yUHJvdG90eXBlLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE2
LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDE2LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCkBAIC00MSw3ICs0MSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNv
U3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NF
UlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKFdlYkFzc2VtYmx5TGlua0Vycm9yUHJvdG90eXBlLCBC
YXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1
cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgV2ViQXNzZW1i
bHlMaW5rRXJyb3JQcm90b3R5cGUqIGNyZWF0ZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0
dXJlKik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseU1l
bW9yeVByb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L2pzL1dlYkFzc2VtYmx5TWVtb3J5UHJvdG90eXBlLmgJKHJldmlzaW9uIDI4NjA0MykKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TWVtb3J5UHJvdG90eXBlLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE2
LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDE2LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCkBAIC00MSw3ICs0MSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNv
U3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NF
UlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKFdlYkFzc2VtYmx5TWVtb3J5UHJvdG90eXBlLCBCYXNl
KTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4g
JnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgV2ViQXNzZW1ibHlN
ZW1vcnlQcm90b3R5cGUqIGNyZWF0ZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKik7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseU1vZHVsZVBy
b3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dl
YkFzc2VtYmx5TW9kdWxlUHJvdG90eXBlLmgJKHJldmlzaW9uIDI4NjA0MykKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TW9kdWxlUHJvdG90eXBlLmgJKHdvcmtp
bmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMTkg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIw
MjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCkBAIC00MSw3ICs0MSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vic3Bh
Y2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNP
X1NVQlNQQUNFX1NIQVJBQkxFKFdlYkFzc2VtYmx5TW9kdWxlUHJvdG90eXBlLCBCYXNlKTsKLSAg
ICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBs
YWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgV2ViQXNzZW1ibHlNb2R1bGVQ
cm90b3R5cGUqIGNyZWF0ZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKik7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseVJ1bnRpbWVFcnJvclBy
b3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dl
YkFzc2VtYmx5UnVudGltZUVycm9yUHJvdG90eXBlLmgJKHJldmlzaW9uIDI4NjA0MykKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5UnVudGltZUVycm9yUHJvdG90
eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChD
KSAyMDE2LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDE2LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00MSw3ICs0MSw3IEBAIHB1YmxpYzoKICAgICBzdGF0
aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJ
Q19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKFdlYkFzc2VtYmx5UnVudGltZUVycm9yUHJv
dG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAg
ICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMg
V2ViQXNzZW1ibHlSdW50aW1lRXJyb3JQcm90b3R5cGUqIGNyZWF0ZShWTSYsIEpTR2xvYmFsT2Jq
ZWN0KiwgU3RydWN0dXJlKik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9X
ZWJBc3NlbWJseVRhYmxlUHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlUYWJsZVByb3RvdHlwZS5oCShyZXZpc2lvbiAyODYw
NDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseVRhYmxlUHJv
dG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDE2LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDE2LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00MSw3ICs0MSw3IEBAIHB1YmxpYzoKICAgICBz
dGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAgIFNU
QVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKFdlYkFzc2VtYmx5VGFibGVQcm90b3R5
cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAg
IHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBXZWJB
c3NlbWJseVRhYmxlUHJvdG90eXBlKiBjcmVhdGUoVk0mLCBKU0dsb2JhbE9iamVjdCosIFN0cnVj
dHVyZSopOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlU
YWdQcm90b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9q
cy9XZWJBc3NlbWJseVRhZ1Byb3RvdHlwZS5oCShyZXZpc2lvbiAyODYwNDMpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseVRhZ1Byb3RvdHlwZS5oCSh3b3JraW5n
IGNvcHkpCkBAIC00MCw3ICs0MCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2Uq
IHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NV
QlNQQUNFX1NIQVJBQkxFKFdlYkFzc2VtYmx5VGFnUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAg
cmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2Jq
ZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgV2ViQXNzZW1ibHlUYWdQcm90b3R5cGUq
IGNyZWF0ZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKik7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUFzeW5jSXRlcmF0b3IuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUFzeW5jSXRlcmF0b3IuaAkocmV2aXNpb24g
Mjg2MDQzKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Bc3luY0l0ZXJhdG9y
LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDcgKzQ4LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBK
U0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAg
IFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTRE9NQXN5bmNJdGVyYXRvclBy
b3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAg
ICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGlj
IEpTRE9NQXN5bmNJdGVyYXRvclByb3RvdHlwZSogY3JlYXRlKEpTQzo6Vk0mIHZtLCBKU0M6OkpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUpCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUl0ZXJhdG9yLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01JdGVyYXRvci5oCShyZXZpc2lv
biAyODYwNDMpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUl0ZXJhdG9yLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTU1LDcgKzU1LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6
Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNU
QVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTRE9NSXRlcmF0b3JQcm90b3R5cGUs
IEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJl
dHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBKU0RPTUl0
ZXJhdG9yUHJvdG90eXBlKiBjcmVhdGUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRmlsZVN5c3RlbURpcmVjdG9yeUhhbmRsZUl0ZXJhdG9yLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0ZpbGVTeXN0ZW1E
aXJlY3RvcnlIYW5kbGVJdGVyYXRvci5jcHAJKHJldmlzaW9uIDI4NjA0MykKKysrIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRmlsZVN5c3RlbURpcmVjdG9yeUhhbmRsZUl0ZXJhdG9yLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNTUsOSArNTUsOSBAQCBJc29TdWJzcGFjZSogSlNGaWxlU3lz
dGVtRGlyZWN0b3J5SGFuZGxlCiAgICAgICAgIHJldHVybiBzcGFjZTsKICAgICBzdGF0aWNfYXNz
ZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTRmlsZVN5
c3RlbURpcmVjdG9yeUhhbmRsZUl0ZXJhdG9yPiB8fCAhSlNGaWxlU3lzdGVtRGlyZWN0b3J5SGFu
ZGxlSXRlcmF0b3I6Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjpp
c19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNGaWxlU3lzdGVtRGlyZWN0
b3J5SGFuZGxlSXRlcmF0b3I+KQotICAgICAgICBjbGllbnREYXRhLnNldEZpbGVTeXN0ZW1EaXJl
Y3RvcnlIYW5kbGVJdGVyYXRvclNwYWNlKG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJT
UEFDRV9JTklUKHZtLmhlYXAsICp2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUsIEpT
RmlsZVN5c3RlbURpcmVjdG9yeUhhbmRsZUl0ZXJhdG9yKSk7CisgICAgICAgIGNsaWVudERhdGEu
c2V0RmlsZVN5c3RlbURpcmVjdG9yeUhhbmRsZUl0ZXJhdG9yU3BhY2UobWFrZVVuaXF1ZTxJc29T
dWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0
SGVhcENlbGxUeXBlKCksIEpTRmlsZVN5c3RlbURpcmVjdG9yeUhhbmRsZUl0ZXJhdG9yKSk7CiAg
ICAgZWxzZQotICAgICAgICBjbGllbnREYXRhLnNldEZpbGVTeXN0ZW1EaXJlY3RvcnlIYW5kbGVJ
dGVyYXRvclNwYWNlKG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZt
LmhlYXAsICp2bS5jZWxsSGVhcENlbGxUeXBlLCBKU0ZpbGVTeXN0ZW1EaXJlY3RvcnlIYW5kbGVJ
dGVyYXRvcikpOworICAgICAgICBjbGllbnREYXRhLnNldEZpbGVTeXN0ZW1EaXJlY3RvcnlIYW5k
bGVJdGVyYXRvclNwYWNlKG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklU
KHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNGaWxlU3lzdGVtRGlyZWN0b3J5SGFu
ZGxlSXRlcmF0b3IpKTsKICAgICBhdXRvKiBzcGFjZSA9IGNsaWVudERhdGEuZmlsZVN5c3RlbURp
cmVjdG9yeUhhbmRsZUl0ZXJhdG9yU3BhY2UoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5y
ZWFjaGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21w
YXJlIikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dlYkNvcmVKU0NsaWVudERh
dGEuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dlYkNvcmVK
U0NsaWVudERhdGEuY3BwCShyZXZpc2lvbiAyODYwNDMpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9XZWJDb3JlSlNDbGllbnREYXRhLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzcsMTIg
Kzc3LDEyIEBAIEpTVk1DbGllbnREYXRhOjpKU1ZNQ2xpZW50RGF0YShWTSYgdm0pCiAgICAgLCBt
X2hlYXBDZWxsVHlwZUZvckpTQXVkaW9Xb3JrbGV0R2xvYmFsU2NvcGUoSlNDOjpJc29IZWFwQ2Vs
bFR5cGU6OmNyZWF0ZTxKU0F1ZGlvV29ya2xldEdsb2JhbFNjb3BlPigpKQogI2VuZGlmCiAgICAg
LCBtX2hlYXBDZWxsVHlwZUZvckpTSURCU2VyaWFsaXphdGlvbkdsb2JhbE9iamVjdChKU0M6Oklz
b0hlYXBDZWxsVHlwZTo6Y3JlYXRlPEpTSURCU2VyaWFsaXphdGlvbkdsb2JhbE9iamVjdD4oKSkK
LSAgICAsIG1fZG9tQnVpbHRpbkNvbnN0cnVjdG9yU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQodm0u
aGVhcCwgKnZtLmNlbGxIZWFwQ2VsbFR5cGUsIEpTRE9NQnVpbHRpbkNvbnN0cnVjdG9yQmFzZSkK
LSAgICAsIG1fZG9tQ29uc3RydWN0b3JTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAq
dm0uY2VsbEhlYXBDZWxsVHlwZSwgSlNET01Db25zdHJ1Y3RvckJhc2UpCi0gICAgLCBtX2RvbU5h
bWVzcGFjZU9iamVjdFNwYWNlIElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5jZWxsSGVh
cENlbGxUeXBlLCBKU0RPTU9iamVjdCkKLSAgICAsIG1fZG9tV2luZG93UHJvcGVydGllc1NwYWNl
IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5jZWxsSGVhcENlbGxUeXBlLCBKU0RPTVdp
bmRvd1Byb3BlcnRpZXMpCisgICAgLCBtX2RvbUJ1aWx0aW5Db25zdHJ1Y3RvclNwYWNlIElTT19T
VUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNET01CdWlsdGlu
Q29uc3RydWN0b3JCYXNlKQorICAgICwgbV9kb21Db25zdHJ1Y3RvclNwYWNlIElTT19TVUJTUEFD
RV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNET01Db25zdHJ1Y3RvckJh
c2UpCisgICAgLCBtX2RvbU5hbWVzcGFjZU9iamVjdFNwYWNlIElTT19TVUJTUEFDRV9JTklUKHZt
LmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNET01PYmplY3QpCisgICAgLCBtX2RvbVdp
bmRvd1Byb3BlcnRpZXNTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVh
cENlbGxUeXBlKCksIEpTRE9NV2luZG93UHJvcGVydGllcykKICAgICAsIG1fcnVudGltZUFycmF5
U3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKm1fcnVudGltZUFycmF5SGVhcENlbGxU
eXBlLCBSdW50aW1lQXJyYXkpCi0gICAgLCBtX3J1bnRpbWVNZXRob2RTcGFjZSBJU09fU1VCU1BB
Q0VfSU5JVCh2bS5oZWFwLCAqdm0uY2VsbEhlYXBDZWxsVHlwZSwgUnVudGltZU1ldGhvZCkgLy8g
SGFzaDoweGY3MGM0YTg1CisgICAgLCBtX3J1bnRpbWVNZXRob2RTcGFjZSBJU09fU1VCU1BBQ0Vf
SU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCksIFJ1bnRpbWVNZXRob2QpIC8vIEhh
c2g6MHhmNzBjNGE4NQogICAgICwgbV9ydW50aW1lT2JqZWN0U3BhY2UgSVNPX1NVQlNQQUNFX0lO
SVQodm0uaGVhcCwgKm1fcnVudGltZU9iamVjdEhlYXBDZWxsVHlwZSwgSlNDOjpCaW5kaW5nczo6
UnVudGltZU9iamVjdCkKICAgICAsIG1fd2luZG93UHJveHlTcGFjZSBJU09fU1VCU1BBQ0VfSU5J
VCh2bS5oZWFwLCAqbV93aW5kb3dQcm94eUhlYXBDZWxsVHlwZSwgSlNXaW5kb3dQcm94eSkKICAg
ICAsIG1faWRiU2VyaWFsaXphdGlvblNwYWNlIElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICpt
X2hlYXBDZWxsVHlwZUZvckpTSURCU2VyaWFsaXphdGlvbkdsb2JhbE9iamVjdCwgSlNJREJTZXJp
YWxpemF0aW9uR2xvYmFsT2JqZWN0KQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0JKHJldmlzaW9uIDI4NjA0MykKKysrIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCSh3b3JraW5n
IGNvcHkpCkBAIC00ODU2LDkgKzQ4NTYsOSBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgog
ICAgIH0gZWxzZSB7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHN0YXRpY19hc3Nl
cnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgJHtjbGFzc05h
bWV9PiB8fCAhJHtjbGFzc05hbWV9OjpuZWVkc0Rlc3RydWN0aW9uKTtcbiIpOwogICAgICAgICBw
dXNoKEBpbXBsQ29udGVudCwgIiAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpT
Qzo6SlNEZXN0cnVjdGlibGVPYmplY3QsICR7Y2xhc3NOYW1lfT4pXG4iKTsKLSAgICAgICAgcHVz
aChAaW1wbENvbnRlbnQsICIgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yJHtpbnRlcmZhY2VO
YW1lfSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAs
ICp2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUsICR7Y2xhc3NOYW1lfSk7XG4iKTsK
KyAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9y
JHtpbnRlcmZhY2VOYW1lfSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9J
TklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpLCAke2NsYXNz
TmFtZX0pO1xuIik7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGVsc2VcbiIpOwot
ICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3Ik
e2ludGVyZmFjZU5hbWV9ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lO
SVQodm0uaGVhcCwgKnZtLmNlbGxIZWFwQ2VsbFR5cGUsICR7Y2xhc3NOYW1lfSk7XG4iKTsKKyAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yJHtp
bnRlcmZhY2VOYW1lfSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklU
KHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgJHtjbGFzc05hbWV9KTtcbiIpOwogICAg
IH0KICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1
YnNwYWNlRm9yJHtpbnRlcmZhY2VOYW1lfS5nZXQoKTtcbiIpOwogICAgIHB1c2goQGltcGxDb250
ZW50LCAiSUdOT1JFX1dBUk5JTkdTX0JFR0lOKFwidW5yZWFjaGFibGUtY29kZVwiKVxuIik7CkBA
IC02NzMxLDkgKzY3MzEsOSBAQCBwdWJsaWM6CiAgICAgICAgICAgICByZXR1cm4gc3BhY2U7CiAg
ICAgICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJs
ZU9iamVjdCwgJHtpdGVyYXRvck5hbWV9PiB8fCAhJHtpdGVyYXRvck5hbWV9OjpuZWVkc0Rlc3Ry
dWN0aW9uKTsKICAgICAgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpT
RGVzdHJ1Y3RpYmxlT2JqZWN0LCAke2l0ZXJhdG9yTmFtZX0+KQotICAgICAgICAgICAgc3BhY2Vz
Lm1fc3Vic3BhY2VGb3Ike2l0ZXJhdG9yTmFtZX0gPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJ
U09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxU
eXBlLmdldCgpLCAke2l0ZXJhdG9yTmFtZX0pOworICAgICAgICAgICAgc3BhY2VzLm1fc3Vic3Bh
Y2VGb3Ike2l0ZXJhdG9yTmFtZX0gPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BB
Q0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwgJHtp
dGVyYXRvck5hbWV9KTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgc3BhY2VzLm1fc3Vic3Bh
Y2VGb3Ike2l0ZXJhdG9yTmFtZX0gPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BB
Q0VfSU5JVCh2bS5oZWFwLCAqdm0uY2VsbEhlYXBDZWxsVHlwZSwgJHtpdGVyYXRvck5hbWV9KTsK
KyAgICAgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yJHtpdGVyYXRvck5hbWV9ID0gbWFrZVVu
aXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBD
ZWxsVHlwZSgpLCAke2l0ZXJhdG9yTmFtZX0pOwogICAgICAgICBhdXRvKiBzcGFjZSA9IHNwYWNl
cy5tX3N1YnNwYWNlRm9yJHtpdGVyYXRvck5hbWV9LmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JF
R0lOKFwidW5yZWFjaGFibGUtY29kZVwiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKFwidGF1dG9s
b2dpY2FsLWNvbXBhcmVcIikKQEAgLTc1MjksNyArNzUyOSw3IEBAIHN1YiBHZW5lcmF0ZVByb3Rv
dHlwZURlY2xhcmF0aW9uCiAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIHN0YXRpYyBKU0M6
Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSlcbiIpOwogICAgIHB1c2goQCRv
dXRwdXRBcnJheSwgIiAgICB7XG4iKTsKICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgICAg
IFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKCR7cHJvdG90eXBlQ2xhc3NOYW1l
fSwgQmFzZSk7XG4iKTsKLSAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgICAgIHJldHVybiAm
dm0ucGxhaW5PYmplY3RTcGFjZTtcbiIpOworICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICAg
ICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7XG4iKTsKICAgICBwdXNoKEAkb3V0cHV0
QXJyYXksICIgICAgfVxuIik7CiAKICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgc3RhdGlj
IEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSlcbiIpOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19ydW50aW1lLm1tCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfcnVudGltZS5tbQkocmV2aXNpb24g
Mjg2MDQzKQorKysgU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19ydW50aW1lLm1tCSh3
b3JraW5nIGNvcHkpCkBAIC0zMzUsNyArMzM1LDcgQEAgYm9vbCBPYmpjRmFsbGJhY2tPYmplY3RJ
bXA6OnRvQm9vbGVhbihKUwogSlNDOjpJc29TdWJzcGFjZSogT2JqY0ZhbGxiYWNrT2JqZWN0SW1w
OjpzdWJzcGFjZUZvckltcGwoSlNDOjpWTSYgdm0pCiB7CiAgICAgc3RhdGljIE5ldmVyRGVzdHJv
eWVkPEpTQzo6SXNvU3Vic3BhY2VQZXJWTT4gcGVyVk0oW10gKEpTQzo6Vk0mIHZtKSB7Ci0gICAg
ICAgIHJldHVybiBJU09fU1VCU1BBQ0VfUEFSQU1FVEVSUygqdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0
SGVhcENlbGxUeXBlLCBPYmpjRmFsbGJhY2tPYmplY3RJbXApOworICAgICAgICByZXR1cm4gSVNP
X1NVQlNQQUNFX1BBUkFNRVRFUlModm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCks
IE9iamNGYWxsYmFja09iamVjdEltcCk7CiAgICAgfSk7CiAgICAgcmV0dXJuICZwZXJWTS5nZXQo
KS5mb3JWTSh2bSk7CiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9Nb2Rl
bEVsZW1lbnRDb250cm9sbGVyQ29jb2EubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQ29jb2EvTW9kZWxFbGVtZW50Q29udHJvbGxlckNvY29hLm1tCShyZXZpc2lvbiAy
ODYwNDMpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9Nb2RlbEVsZW1lbnRDb250
cm9sbGVyQ29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTIzNSwxMSArMjM1LDExIEBAIHZvaWQg
TW9kZWxFbGVtZW50Q29udHJvbGxlcjo6aGFuZGxlTW91c2UKIAogc3RhdGljIGJvb2wgcHJldmll
d0hhc0NhbWVyYVN1cHBvcnQoQVNWSW5saW5lUHJldmlldyAqcHJldmlldykKIHsKLSNpZiBFTkFC
TEUoQVJLSVRfSU5MSU5FX1BSRVZJRVdfQ0FNRVJBX1RSQU5TRk9STSkKLSAgICByZXR1cm4gW3By
ZXZpZXcgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihnZXRDYW1lcmFUcmFuc2Zvcm06KV07
Ci0jZWxzZQorLy8jaWYgRU5BQkxFKEFSS0lUX0lOTElORV9QUkVWSUVXX0NBTUVSQV9UUkFOU0ZP
Uk0pCisvLyAgICByZXR1cm4gW3ByZXZpZXcgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihn
ZXRDYW1lcmFUcmFuc2Zvcm06KV07CisvLyNlbHNlCiAgICAgcmV0dXJuIGZhbHNlOwotI2VuZGlm
CisvLyNlbmRpZgogfQogCiB2b2lkIE1vZGVsRWxlbWVudENvbnRyb2xsZXI6OmdldENhbWVyYUZv
ck1vZGVsRWxlbWVudChNb2RlbElkZW50aWZpZXIgbW9kZWxJZGVudGlmaWVyLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKEV4cGVjdGVkPFdlYkNvcmU6OkhUTUxNb2RlbEVsZW1lbnRDYW1lcmEsIFdl
YkNvcmU6OlJlc291cmNlRXJyb3I+KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKQEAgLTI1MywyOCAr
MjUzLDI4IEBAIHZvaWQgTW9kZWxFbGVtZW50Q29udHJvbGxlcjo6Z2V0Q2FtZXJhRm8KICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIAotI2lmIEVOQUJMRShBUktJVF9JTkxJTkVfUFJFVklFV19DQU1F
UkFfVFJBTlNGT1JNKQotICAgIFtwcmV2aWV3IGdldENhbWVyYVRyYW5zZm9ybTptYWtlQmxvY2tQ
dHIoW3dlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH0sIGNvbXBsZXRpb25IYW5kbGVyID0gV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlcildIChzaW1kX2Zsb2F0MyBjYW1lcmFUcmFuc2Zvcm0sIE5T
RXJyb3IgKmVycm9yKSBtdXRhYmxlIHsKLSAgICAgICAgaWYgKGVycm9yKSB7Ci0gICAgICAgICAg
ICBjYWxsT25NYWluUnVuTG9vcChbd2Vha1RoaXMgPSBXVEZNb3ZlKHdlYWtUaGlzKSwgY29tcGxl
dGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgZXJyb3IgPSBXZWJDb3Jl
OjpSZXNvdXJjZUVycm9yIHsgV2ViQ29yZTo6UmVzb3VyY2VFcnJvcjo6VHlwZTo6R2VuZXJhbCB9
XSAoKSBtdXRhYmxlIHsKLSAgICAgICAgICAgICAgICBpZiAod2Vha1RoaXMpCi0gICAgICAgICAg
ICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKG1ha2VVbmV4cGVjdGVkKGVycm9yKSk7Ci0gICAg
ICAgICAgICB9KTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIGNh
bGxPbk1haW5SdW5Mb29wKFtjYW1lcmFUcmFuc2Zvcm0sIHdlYWtUaGlzID0gV1RGTW92ZSh3ZWFr
VGhpcyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildICgp
IG11dGFibGUgewotICAgICAgICAgICAgaWYgKHdlYWtUaGlzKQotICAgICAgICAgICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKFdlYkNvcmU6OkhUTUxNb2RlbEVsZW1lbnRDYW1lcmEgeyBjYW1lcmFU
cmFuc2Zvcm0ueCwgY2FtZXJhVHJhbnNmb3JtLnksIGNhbWVyYVRyYW5zZm9ybS56IH0pOwotICAg
ICAgICB9KTsKLSAgICB9KS5nZXQoKV07Ci0jZWxzZQorLy8jaWYgRU5BQkxFKEFSS0lUX0lOTElO
RV9QUkVWSUVXX0NBTUVSQV9UUkFOU0ZPUk0pCisvLyAgICBbcHJldmlldyBnZXRDYW1lcmFUcmFu
c2Zvcm06bWFrZUJsb2NrUHRyKFt3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9LCBjb21wbGV0
aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoc2ltZF9mbG9hdDMgY2Ft
ZXJhVHJhbnNmb3JtLCBOU0Vycm9yICplcnJvcikgbXV0YWJsZSB7CisvLyAgICAgICAgaWYgKGVy
cm9yKSB7CisvLyAgICAgICAgICAgIGNhbGxPbk1haW5SdW5Mb29wKFt3ZWFrVGhpcyA9IFdURk1v
dmUod2Vha1RoaXMpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpLCBlcnJvciA9IFdlYkNvcmU6OlJlc291cmNlRXJyb3IgeyBXZWJDb3JlOjpSZXNvdXJjZUVy
cm9yOjpUeXBlOjpHZW5lcmFsIH1dICgpIG11dGFibGUgeworLy8gICAgICAgICAgICAgICAgaWYg
KHdlYWtUaGlzKQorLy8gICAgICAgICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKG1ha2VV
bmV4cGVjdGVkKGVycm9yKSk7CisvLyAgICAgICAgICAgIH0pOworLy8gICAgICAgICAgICByZXR1
cm47CisvLyAgICAgICAgfQorLy8KKy8vICAgICAgICBjYWxsT25NYWluUnVuTG9vcChbY2FtZXJh
VHJhbnNmb3JtLCB3ZWFrVGhpcyA9IFdURk1vdmUod2Vha1RoaXMpLCBjb21wbGV0aW9uSGFuZGxl
ciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoKSBtdXRhYmxlIHsKKy8vICAgICAgICAg
ICAgaWYgKHdlYWtUaGlzKQorLy8gICAgICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV2Vi
Q29yZTo6SFRNTE1vZGVsRWxlbWVudENhbWVyYSB7IGNhbWVyYVRyYW5zZm9ybS54LCBjYW1lcmFU
cmFuc2Zvcm0ueSwgY2FtZXJhVHJhbnNmb3JtLnogfSk7CisvLyAgICAgICAgfSk7CisvLyAgICB9
KS5nZXQoKV07CisvLyNlbHNlCiAgICAgY2FsbE9uTWFpblJ1bkxvb3AoW3dlYWtUaGlzID0gV2Vh
a1B0ciB7ICp0aGlzIH0sIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlciksIGVycm9yID0gV2ViQ29yZTo6UmVzb3VyY2VFcnJvciB7IFdlYkNvcmU6OlJlc291cmNl
RXJyb3I6OlR5cGU6OkdlbmVyYWwgfV0gKCkgbXV0YWJsZSB7CiAgICAgICAgIGlmICh3ZWFrVGhp
cykKICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKG1ha2VVbmV4cGVjdGVkKGVycm9yKSk7
CiAgICAgfSk7CiAgICAgcmV0dXJuOwotI2VuZGlmCisvLyNlbmRpZgogfQogCiB2b2lkIE1vZGVs
RWxlbWVudENvbnRyb2xsZXI6OnNldENhbWVyYUZvck1vZGVsRWxlbWVudChNb2RlbElkZW50aWZp
ZXIgbW9kZWxJZGVudGlmaWVyLCBXZWJDb3JlOjpIVE1MTW9kZWxFbGVtZW50Q2FtZXJhIGNhbWVy
YSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKQEAg
LTI4OCwxNyArMjg4LDE3IEBAIHZvaWQgTW9kZWxFbGVtZW50Q29udHJvbGxlcjo6c2V0Q2FtZXJh
Rm8KICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotI2lmIEVOQUJMRShBUktJVF9JTkxJTkVfUFJF
VklFV19DQU1FUkFfVFJBTlNGT1JNKQotICAgIFtwcmV2aWV3IHNldENhbWVyYVRyYW5zZm9ybTpz
aW1kX21ha2VfZmxvYXQzKGNhbWVyYS5waXRjaCwgY2FtZXJhLnlhdywgY2FtZXJhLnNjYWxlKV07
Ci0jZW5kaWYKKy8vI2lmIEVOQUJMRShBUktJVF9JTkxJTkVfUFJFVklFV19DQU1FUkFfVFJBTlNG
T1JNKQorLy8gICAgW3ByZXZpZXcgc2V0Q2FtZXJhVHJhbnNmb3JtOnNpbWRfbWFrZV9mbG9hdDMo
Y2FtZXJhLnBpdGNoLCBjYW1lcmEueWF3LCBjYW1lcmEuc2NhbGUpXTsKKy8vI2VuZGlmCiAKICAg
ICBjYWxsT25NYWluUnVuTG9vcChbd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfSwgY29tcGxl
dGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKCkgbXV0YWJsZSB7CiAg
ICAgICAgIGlmICh3ZWFrVGhpcykKLSNpZiBFTkFCTEUoQVJLSVRfSU5MSU5FX1BSRVZJRVdfQ0FN
RVJBX1RSQU5TRk9STSkKLSAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHRydWUpOwotI2Vs
c2UKKy8vI2lmIEVOQUJMRShBUktJVF9JTkxJTkVfUFJFVklFV19DQU1FUkFfVFJBTlNGT1JNKQor
Ly8gICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih0cnVlKTsKKy8vI2Vsc2UKICAgICAgICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyKGZhbHNlKTsKLSNlbmRpZgorLy8jZW5kaWYKICAgICB9KTsK
IH0KIAo=
</data>
<flag name="commit-queue"
          id="469961"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>444853</attachid>
            <date>2021-11-19 14:06:18 -0800</date>
            <delta_ts>2021-11-19 14:08:19 -0800</delta_ts>
            <desc>work in progress.</desc>
            <filename>bug-233240c.patch</filename>
            <type>text/plain</type>
            <size>374591</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCShyZXZpc2lvbiAyODYwNDMpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvanNjLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQyOSw3ICsxNDI5LDcgQEAg
cHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlLCBTdWJzcGFjZUFjY2Vzcz4K
ICAgICBzdGF0aWMgQ29tcGxldGVTdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsK
LSAgICAgICAgcmV0dXJuICZ2bS5kZXN0cnVjdGlibGVPYmplY3RTcGFjZTsKKyAgICAgICAgcmV0
dXJuICZ2bS5kZXN0cnVjdGlibGVPYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIEpTQ01lbW9y
eUZvb3RwcmludChWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQpAQCAtMTc2Miw3ICsxNzYy
LDcgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlLCBTdWJzcGFjZUFj
Y2Vzcz4KICAgICBzdGF0aWMgQ29tcGxldGVTdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQog
ICAgIHsKLSAgICAgICAgcmV0dXJuICZ2bS5kZXN0cnVjdGlibGVPYmplY3RTcGFjZTsKKyAgICAg
ICAgcmV0dXJuICZ2bS5kZXN0cnVjdGlibGVPYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIHN0
YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oJKHJldmlzaW9uIDI4NjA0MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZh
U2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0x
OTU5LDcgKzE5NTksNyBAQAogCQlFM0M2OTRCMzIzMDI2ODc3MDA2RkJFNDIgLyogV2FzbU9TUkVu
dHJ5RGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RTNDNjk0QjEyMzAyNjg3MzAwNkZCRTQyIC8qIFdhc21PU1JFbnRyeURhdGEuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFM0M3M0E5MTI1QkZBNzNC
MDBFRkUzMDMgLyogV2FzbVN0cmVhbWluZ1BsYW4uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzQzczQTkwMjVCRkE3MzQwMEVGRTMwMyAvKiBXYXNtU3Ry
ZWFtaW5nUGxhbi5oICovOyB9OwogCQlFM0M3OUNBQjFEQjlBNERDMDBEMUVDQTQgLyogRE9NSklU
RWZmZWN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBF
M0M3OUNBQTFEQjlBNEQ2MDBEMUVDQTQgLyogRE9NSklURWZmZWN0LmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJRTNDOEVENDMyM0ExREJDQjAwMTMx
OTU4IC8qIElzb0lubGluZWRIZWFwQ2VsbFR5cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzQzhFRDQyMjNBMURCQzUwMDEzMTk1OCAvKiBJc29Jbmxp
bmVkSGVhcENlbGxUeXBlLmggKi87IH07CisJCUUzQzhFRDQzMjNBMURCQ0IwMDEzMTk1OCAvKiBJ
c29JbmxpbmVkSGVhcENlbGxUeXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBFM0M4RUQ0MjIzQTFEQkM1MDAxMzE5NTggLyogSXNvSW5saW5lZEhlYXBD
ZWxsVHlwZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCUUzQ0EzQTRFMjUyN0FCMkYwMDQ4MDJCRiAvKiBKSVRPcGVyYXRpb25MaXN0LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFM0NBM0E0QzI1MjdBQjJG
MDA0ODAyQkYgLyogSklUT3BlcmF0aW9uTGlzdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUzRDIzOUM5MUI4MjlDMUMwMEJCRUY2NyAvKiBKU01v
ZHVsZUVudmlyb25tZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBFM0QyMzlDNzFCODI5QzFDMDBCQkVGNjcgLyogSlNNb2R1bGVFbnZpcm9ubWVudC5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUzRDM1
MTVGMjQxQjg5RDcwMDhEQzE2RSAvKiBNYXJrZWRKU1ZhbHVlUmVmQXJyYXkuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzRDM1MTVEMjQxQjg5Q0UwMDhE
QzE2RSAvKiBNYXJrZWRKU1ZhbHVlUmVmQXJyYXkuaCAqLzsgfTsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5jcHAJKHJldmlzaW9uIDI4NjA0MykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNlLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMjI3Nyw3ICsyMjc3LDcgQEAgdm9pZCBBY2Nlc3NDYXNlOjpnZW5lcmF0ZUlt
cGwoQWNjZXNzR2VuZQogICAgICAgICAgICAgc2l6ZV90IG5ld1NpemUgPSBuZXdTdHJ1Y3R1cmUo
KS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSAqIHNpemVvZihKU1ZhbHVlKTsKIAogICAgICAgICAgICAg
aWYgKGFsbG9jYXRpbmdJbmxpbmUpIHsKLSAgICAgICAgICAgICAgICBBbGxvY2F0b3IgYWxsb2Nh
dG9yID0gdm0uanNWYWx1ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UuYWxsb2NhdG9yRm9yKG5ld1Np
emUsIEFsbG9jYXRvckZvck1vZGU6OkFsbG9jYXRvcklmRXhpc3RzKTsKKyAgICAgICAgICAgICAg
ICBBbGxvY2F0b3IgYWxsb2NhdG9yID0gdm0uanNWYWx1ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2Uo
KS5hbGxvY2F0b3JGb3IobmV3U2l6ZSwgQWxsb2NhdG9yRm9yTW9kZTo6QWxsb2NhdG9ySWZFeGlz
dHMpOwogCiAgICAgICAgICAgICAgICAgaml0LmVtaXRBbGxvY2F0ZShzY3JhdGNoR1BSLCBKSVRB
bGxvY2F0b3I6OmNvbnN0YW50KGFsbG9jYXRvciksIHNjcmF0Y2hHUFIyLCBzY3JhdGNoR1BSMywg
c2xvd1BhdGgpOwogICAgICAgICAgICAgICAgIGppdC5hZGRQdHIoQ0NhbGxIZWxwZXJzOjpUcnVz
dGVkSW1tMzIobmV3U2l6ZSArIHNpemVvZihJbmRleGluZ0hlYWRlcikpLCBzY3JhdGNoR1BSKTsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9ERkdFeGl0UHJvZmlsZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9ERkdFeGl0UHJvZmls
ZS5oCShyZXZpc2lvbiAyODYwNDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
REZHRXhpdFByb2ZpbGUuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTEtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM0LDcgKzM0LDExIEBACiAjaW5j
bHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKLW5hbWVzcGFj
ZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBVbmxpbmtl
ZENvZGVCbG9jazsKKworbmFtZXNwYWNlIERGRyB7CiAKIGNsYXNzIEZyZXF1ZW50RXhpdFNpdGUg
ewogcHVibGljOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0V2YWxDb2Rl
QmxvY2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXZh
bENvZGVCbG9jay5oCShyZXZpc2lvbiAyODYwNDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvRXZhbENvZGVCbG9jay5oCSh3b3JraW5nIGNvcHkpCkBAIC00MSw3ICs0MSw3IEBA
IHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSwgU3Vic3BhY2VBY2Nlc3M+CiAgICAgc3Rh
dGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewotICAgICAgICByZXR1
cm4gJnZtLmNvZGVCbG9ja1NwYWNlLnNwYWNlOworICAgICAgICByZXR1cm4gJnZtLmNvZGVCbG9j
a1NwYWNlKCkuc3BhY2U7CiAgICAgfQogCiAgICAgc3RhdGljIEV2YWxDb2RlQmxvY2sqIGNyZWF0
ZShWTSYgdm0sIENvcHlQYXJzZWRCbG9ja1RhZywgRXZhbENvZGVCbG9jayYgb3RoZXIpCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRn
ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0V4ZWN1
dGFibGVUb0NvZGVCbG9ja0VkZ2UuY3BwCShyZXZpc2lvbiAyODYwNDMpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTgxLDcgKzgxLDcgQEAgdm9pZCBFeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdl
Ojp2aXNpdENoaQogICAgICAgICB2aXNpdG9yLmFwcGVuZFVuYmFycmllcmVkKGNvZGVCbG9jayk7
CiAgICAgCiAgICAgaWYgKCF2aXNpdG9yLmlzTWFya2VkKGNvZGVCbG9jaykpCi0gICAgICAgIHZt
LmV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2VzV2l0aEZpbmFsaXplcnMuYWRkKGVkZ2UpOworICAg
ICAgICB2bS5leGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlc1dpdGhGaW5hbGl6ZXJzKCkuYWRkKGVk
Z2UpOwogICAgIAogICAgIGlmIChKSVRDb2RlOjppc09wdGltaXppbmdKSVQoY29kZUJsb2NrLT5q
aXRUeXBlKCkpKSB7CiAgICAgICAgIC8vIElmIHdlIGpldHRpc29uIG91cnNlbHZlcyB3ZSdsbCBp
bnN0YWxsIG91ciBhbHRlcm5hdGl2ZSwgc28gbWFrZSBzdXJlIHRoYXQgaXQKQEAgLTExNCw3ICsx
MTQsNyBAQCB2b2lkIEV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2U6OnZpc2l0Q2hpCiAgICAgLy8g
bm90IHlldCBtYXJrZWQgYmVjYXVzZSBpdCB3ZWFrbHkgZGVwZW5kcyBvbiBhIHN0cnVjdHVyZSB0
aGF0IHdlIGRpZCBub3QgeWV0IG1hcmssIHRoZW4gd2UKICAgICAvLyB3aWxsIGtlZXAgZml4cG9p
bnRpbmcgdW50aWwgdGhlIGVuZC4KICAgICB2aXNpdG9yLmFwcGVuZFVuYmFycmllcmVkKGNvZGVC
bG9jay0+Z2xvYmFsT2JqZWN0KCkpOwotICAgIHZtLmV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2Vz
V2l0aENvbnN0cmFpbnRzLmFkZChlZGdlKTsKKyAgICB2bS5leGVjdXRhYmxlVG9Db2RlQmxvY2tF
ZGdlc1dpdGhDb25zdHJhaW50cygpLmFkZChlZGdlKTsKICAgICBlZGdlLT5ydW5Db25zdHJhaW50
KGxvY2tlciwgdm0sIHZpc2l0b3IpOwogfQogCkBAIC0xNDMsOCArMTQzLDggQEAgdm9pZCBFeGVj
dXRhYmxlVG9Db2RlQmxvY2tFZGdlOjpmaW5hbGl6ZQogICAgICAgICBtX2NvZGVCbG9jay5jbGVh
cigpOwogICAgIH0KICAgICAKLSAgICB2bS5leGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlc1dpdGhG
aW5hbGl6ZXJzLnJlbW92ZSh0aGlzKTsKLSAgICB2bS5leGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdl
c1dpdGhDb25zdHJhaW50cy5yZW1vdmUodGhpcyk7CisgICAgdm0uZXhlY3V0YWJsZVRvQ29kZUJs
b2NrRWRnZXNXaXRoRmluYWxpemVycygpLnJlbW92ZSh0aGlzKTsKKyAgICB2bS5leGVjdXRhYmxl
VG9Db2RlQmxvY2tFZGdlc1dpdGhDb25zdHJhaW50cygpLnJlbW92ZSh0aGlzKTsKIH0KIAogaW5s
aW5lIHZvaWQgRXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZTo6YWN0aXZhdGUoKQpAQCAtMjAxLDcg
KzIwMSw3IEBAIHZvaWQgRXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZTo6cnVuQ29uc3QKICAgICBj
b2RlQmxvY2stPmRldGVybWluZUxpdmVuZXNzKGxvY2tlciwgdmlzaXRvcik7CiAKICAgICBpZiAo
dmlzaXRvci5pc01hcmtlZChjb2RlQmxvY2spKQotICAgICAgICB2bS5leGVjdXRhYmxlVG9Db2Rl
QmxvY2tFZGdlc1dpdGhDb25zdHJhaW50cy5yZW1vdmUodGhpcyk7CisgICAgICAgIHZtLmV4ZWN1
dGFibGVUb0NvZGVCbG9ja0VkZ2VzV2l0aENvbnN0cmFpbnRzKCkucmVtb3ZlKHRoaXMpOwogfQog
CiB0ZW1wbGF0ZSB2b2lkIEV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2U6OnJ1bkNvbnN0cmFpbnQo
Y29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiwgVk0mLCBBYnN0cmFjdFNsb3RWaXNpdG9yJik7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhlY3V0YWJsZVRvQ29kZUJsb2Nr
RWRnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FeGVj
dXRhYmxlVG9Db2RlQmxvY2tFZGdlLmgJKHJldmlzaW9uIDI4NjA0MykKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9FeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTQzLDcgKzQzLDcgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENl
bGxUeXBlLCBTdWJzcGFjZUFjY2Vzcz4KICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNl
Rm9yKFZNJiB2bSkKICAgICB7Ci0gICAgICAgIHJldHVybiAmdm0uZXhlY3V0YWJsZVRvQ29kZUJs
b2NrRWRnZVNwYWNlOworICAgICAgICByZXR1cm4gJnZtLmV4ZWN1dGFibGVUb0NvZGVCbG9ja0Vk
Z2VTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVy
ZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSBwcm90b3R5cGUpOwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Z1bmN0aW9uQ29kZUJsb2NrLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Z1bmN0aW9uQ29kZUJsb2NrLmgJKHJl
dmlzaW9uIDI4NjA0MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9GdW5jdGlv
bkNvZGVCbG9jay5oCSh3b3JraW5nIGNvcHkpCkBAIC00Miw3ICs0Miw3IEBAIHB1YmxpYzoKICAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSwgU3Vic3BhY2VBY2Nlc3M+CiAgICAgc3RhdGljIElzb1N1YnNw
YWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewotICAgICAgICByZXR1cm4gJnZtLmNvZGVC
bG9ja1NwYWNlLnNwYWNlOworICAgICAgICByZXR1cm4gJnZtLmNvZGVCbG9ja1NwYWNlKCkuc3Bh
Y2U7CiAgICAgfQogCiAgICAgc3RhdGljIEZ1bmN0aW9uQ29kZUJsb2NrKiBjcmVhdGUoVk0mIHZt
LCBDb3B5UGFyc2VkQmxvY2tUYWcsIEZ1bmN0aW9uQ29kZUJsb2NrJiBvdGhlcikKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Nb2R1bGVQcm9ncmFtQ29kZUJsb2NrLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL01vZHVsZVByb2dyYW1D
b2RlQmxvY2suaAkocmV2aXNpb24gMjg2MDQzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL01vZHVsZVByb2dyYW1Db2RlQmxvY2suaAkod29ya2luZyBjb3B5KQpAQCAtNDIsNyAr
NDIsNyBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUsIFN1YnNwYWNlQWNjZXNzPgog
ICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKLSAgICAg
ICAgcmV0dXJuICZ2bS5jb2RlQmxvY2tTcGFjZS5zcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5j
b2RlQmxvY2tTcGFjZSgpLnNwYWNlOwogICAgIH0KIAogICAgIHN0YXRpYyBNb2R1bGVQcm9ncmFt
Q29kZUJsb2NrKiBjcmVhdGUoVk0mIHZtLCBDb3B5UGFyc2VkQmxvY2tUYWcsIE1vZHVsZVByb2dy
YW1Db2RlQmxvY2smIG90aGVyKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1Byb2dyYW1Db2RlQmxvY2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvUHJvZ3JhbUNvZGVCbG9jay5oCShyZXZpc2lvbiAyODYwNDMpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJvZ3JhbUNvZGVCbG9jay5oCSh3b3JraW5nIGNvcHkp
CkBAIC00Miw3ICs0Miw3IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSwgU3Vic3Bh
Y2VBY2Nlc3M+CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAg
ICAgewotICAgICAgICByZXR1cm4gJnZtLmNvZGVCbG9ja1NwYWNlLnNwYWNlOworICAgICAgICBy
ZXR1cm4gJnZtLmNvZGVCbG9ja1NwYWNlKCkuc3BhY2U7CiAgICAgfQogCiAgICAgc3RhdGljIFBy
b2dyYW1Db2RlQmxvY2sqIGNyZWF0ZShWTSYgdm0sIENvcHlQYXJzZWRCbG9ja1RhZywgUHJvZ3Jh
bUNvZGVCbG9jayYgb3RoZXIpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5jcHAJKHJldmlz
aW9uIDI4NjA0MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1
bmN0aW9uRXhlY3V0YWJsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI1MSw3ICsyNTEsNyBAQCBV
bmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiBVbmxpbmtlZEZ1bmN0CiAgICAgICAgIG1fdW5saW5r
ZWRDb2RlQmxvY2tGb3JDb25zdHJ1Y3Quc2V0KHZtLCB0aGlzLCByZXN1bHQpOwogICAgICAgICBi
cmVhazsKICAgICB9Ci0gICAgdm0udW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGVTcGFjZS5zZXQu
YWRkKHRoaXMpOworICAgIHZtLnVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlU3BhY2UoKS5zZXQu
YWRkKHRoaXMpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKQEAgLTMxMCw3ICszMTAsNyBAQCB2
b2lkIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpmaW5hbGl6CiAgICAgICAgIGNsZWFySWZE
ZWFkKG1fdW5saW5rZWRDb2RlQmxvY2tGb3JDYWxsKTsKICAgICAgICAgY2xlYXJJZkRlYWQobV91
bmxpbmtlZENvZGVCbG9ja0ZvckNvbnN0cnVjdCk7CiAgICAgICAgIGlmIChpc0NsZWFyZWQgJiYg
IWlzU3RpbGxWYWxpZCkKLSAgICAgICAgICAgIHZtLnVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxl
U3BhY2Uuc2V0LnJlbW92ZSh0aGlzKTsKKyAgICAgICAgICAgIHZtLnVubGlua2VkRnVuY3Rpb25F
eGVjdXRhYmxlU3BhY2UoKS5zZXQucmVtb3ZlKHRoaXMpOwogICAgIH0KIH0KIApJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkRnVu
Y3Rpb25FeGVjdXRhYmxlLmgJKHJldmlzaW9uIDI4NjA0MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC00MiwxMyArNDIsMTQgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKK2NsYXNzIENhY2hlZEZ1
bmN0aW9uRXhlY3V0YWJsZTsKIGNsYXNzIERlY29kZXI7Ci1jbGFzcyBGdW5jdGlvbk1ldGFkYXRh
Tm9kZTsKIGNsYXNzIEZ1bmN0aW9uRXhlY3V0YWJsZTsKK2NsYXNzIEZ1bmN0aW9uTWV0YWRhdGFO
b2RlOwogY2xhc3MgUGFyc2VyRXJyb3I7CitjbGFzcyBTY3JpcHRFeGVjdXRhYmxlOwogY2xhc3Mg
U291cmNlUHJvdmlkZXI7CiBjbGFzcyBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrOwotY2xhc3Mg
Q2FjaGVkRnVuY3Rpb25FeGVjdXRhYmxlOwogCiBlbnVtIFVubGlua2VkRnVuY3Rpb25LaW5kIHsK
ICAgICBVbmxpbmtlZE5vcm1hbEZ1bmN0aW9uLApAQCAtNjcsNyArNjgsNyBAQCBwdWJsaWM6CiAg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNzPgogICAgIHN0YXRp
YyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKLSAgICAgICAgcmV0dXJu
ICZ2bS51bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZVNwYWNlLnNwYWNlOworICAgICAgICByZXR1
cm4gJnZtLnVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlU3BhY2UoKS5zcGFjZTsKICAgICB9CiAK
ICAgICBzdGF0aWMgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIGNyZWF0ZShWTSYgdm0sIGNv
bnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgRnVuY3Rpb25NZXRhZGF0YU5vZGUqIG5vZGUsIFVubGlu
a2VkRnVuY3Rpb25LaW5kIHVubGlua2VkRnVuY3Rpb25LaW5kLCBDb25zdHJ1Y3RBYmlsaXR5IGNv
bnN0cnVjdEFiaWxpdHksIEpTUGFyc2VyU2NyaXB0TW9kZSBzY3JpcHRNb2RlLCBSZWZQdHI8VERa
RW52aXJvbm1lbnRMaW5rPiBwYXJlbnRTY29wZVREWlZhcmlhYmxlcywgc3RkOjpvcHRpb25hbDxQ
cml2YXRlTmFtZUVudmlyb25tZW50PiBwYXJlbnRQcml2YXRlTmFtZUVudmlyb25tZW50LCBEZXJp
dmVkQ29udGV4dFR5cGUgZGVyaXZlZENvbnRleHRUeXBlLCBOZWVkc0NsYXNzRmllbGRJbml0aWFs
aXplciBuZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciwgUHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQg
cHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQsIGJvb2wgaXNCdWlsdGluRGVmYXVsdENsYXNzQ29uc3Ry
dWN0b3IgPSBmYWxzZSkKQEAgLTEzMSw3ICsxMzIsNyBAQCBwdWJsaWM6CiAgICAgewogICAgICAg
ICBtX3VubGlua2VkQ29kZUJsb2NrRm9yQ2FsbC5jbGVhcigpOwogICAgICAgICBtX3VubGlua2Vk
Q29kZUJsb2NrRm9yQ29uc3RydWN0LmNsZWFyKCk7Ci0gICAgICAgIHZtLnVubGlua2VkRnVuY3Rp
b25FeGVjdXRhYmxlU3BhY2Uuc2V0LnJlbW92ZSh0aGlzKTsKKyAgICAgICAgdm0udW5saW5rZWRG
dW5jdGlvbkV4ZWN1dGFibGVTcGFjZSgpLnNldC5yZW1vdmUodGhpcyk7CiAgICAgfQogCiAgICAg
dm9pZCByZWNvcmRQYXJzZShDb2RlRmVhdHVyZXMgZmVhdHVyZXMsIExleGljYWxTY29wZUZlYXR1
cmVzIGxleGljYWxTY29wZUZlYXR1cmVzLCBib29sIGhhc0NhcHR1cmVkVmFyaWFibGVzKQpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAJ
KHJldmlzaW9uIDI4NjA0MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3Vs
YXRpdmVKSVQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjAsNyArMTIwLDcgQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6ZW1pdEFsbG9jYXRlUmF3T2JqZQogCiAgICAgVk0mIHZtID0gdGhpcy0+dm0o
KTsKICAgICBpZiAoc2l6ZSkgewotICAgICAgICBpZiAoQWxsb2NhdG9yIGFsbG9jYXRvciA9IHZt
LmpzVmFsdWVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlLmFsbG9jYXRvckZvck5vblZpcnR1YWwoc2l6
ZSwgQWxsb2NhdG9yRm9yTW9kZTo6QWxsb2NhdG9ySWZFeGlzdHMpKSB7CisgICAgICAgIGlmIChB
bGxvY2F0b3IgYWxsb2NhdG9yID0gdm0uanNWYWx1ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UoKS5h
bGxvY2F0b3JGb3JOb25WaXJ0dWFsKHNpemUsIEFsbG9jYXRvckZvck1vZGU6OkFsbG9jYXRvcklm
RXhpc3RzKSkgewogICAgICAgICAgICAgbV9qaXQuZW1pdEFsbG9jYXRlKHN0b3JhZ2VHUFIsIEpJ
VEFsbG9jYXRvcjo6Y29uc3RhbnQoYWxsb2NhdG9yKSwgc2NyYXRjaEdQUiwgc2NyYXRjaDJHUFIs
IHNsb3dDYXNlcyk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIG1faml0LmFkZFB0cigKQEAg
LTEwNzM4LDcgKzEwNzM4LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUFsbG9jYXRl
UHJvcAogICAgIAogICAgIHNpemVfdCBzaXplID0gaW5pdGlhbE91dE9mTGluZUNhcGFjaXR5ICog
c2l6ZW9mKEpTVmFsdWUpOwogCi0gICAgQWxsb2NhdG9yIGFsbG9jYXRvciA9IHZtKCkuanNWYWx1
ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UuYWxsb2NhdG9yRm9yTm9uVmlydHVhbChzaXplLCBBbGxv
Y2F0b3JGb3JNb2RlOjpBbGxvY2F0b3JJZkV4aXN0cyk7CisgICAgQWxsb2NhdG9yIGFsbG9jYXRv
ciA9IHZtKCkuanNWYWx1ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UoKS5hbGxvY2F0b3JGb3JOb25W
aXJ0dWFsKHNpemUsIEFsbG9jYXRvckZvck1vZGU6OkFsbG9jYXRvcklmRXhpc3RzKTsKIAogICAg
IGlmICghYWxsb2NhdG9yIHx8IG5vZGUtPnRyYW5zaXRpb24oKS0+cHJldmlvdXMtPmNvdWxkSGF2
ZUluZGV4aW5nSGVhZGVyKCkpIHsKICAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYmFzZSh0
aGlzLCBub2RlLT5jaGlsZDEoKSk7CkBAIC0xMDc4Miw3ICsxMDc4Miw3IEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGVSZWFsbG9jYXRlUHIKICAgICBzaXplX3QgbmV3U2l6ZSA9IG9sZFNp
emUgKiBvdXRPZkxpbmVHcm93dGhGYWN0b3I7CiAgICAgQVNTRVJUKG5ld1NpemUgPT0gbm9kZS0+
dHJhbnNpdGlvbigpLT5uZXh0LT5vdXRPZkxpbmVDYXBhY2l0eSgpICogc2l6ZW9mKEpTVmFsdWUp
KTsKICAgICAKLSAgICBBbGxvY2F0b3IgYWxsb2NhdG9yID0gdm0oKS5qc1ZhbHVlR2lnYWNhZ2VB
dXhpbGlhcnlTcGFjZS5hbGxvY2F0b3JGb3JOb25WaXJ0dWFsKG5ld1NpemUsIEFsbG9jYXRvckZv
ck1vZGU6OkFsbG9jYXRvcklmRXhpc3RzKTsKKyAgICBBbGxvY2F0b3IgYWxsb2NhdG9yID0gdm0o
KS5qc1ZhbHVlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZSgpLmFsbG9jYXRvckZvck5vblZpcnR1YWwo
bmV3U2l6ZSwgQWxsb2NhdG9yRm9yTW9kZTo6QWxsb2NhdG9ySWZFeGlzdHMpOwogCiAgICAgaWYg
KCFhbGxvY2F0b3IgfHwgbm9kZS0+dHJhbnNpdGlvbigpLT5wcmV2aW91cy0+Y291bGRIYXZlSW5k
ZXhpbmdIZWFkZXIoKSkgewogICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMs
IG5vZGUtPmNoaWxkMSgpKTsKQEAgLTExNDk5LDcgKzExNDk5LDcgQEAgdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6ZW1pdE5ld1R5cGVkQXJyYXlXaQogICAgICAgICBtX2ppdC5hbmQzMihUcnVzdGVkSW1t
MzIofjcpLCBzY3JhdGNoR1BSKTsKICAgICB9CiAgICAgbV9qaXQuZW1pdEFsbG9jYXRlVmFyaWFi
bGVTaXplZCgKLSAgICAgICAgc3RvcmFnZUdQUiwgdm0oKS5wcmltaXRpdmVHaWdhY2FnZUF1eGls
aWFyeVNwYWNlLCBzY3JhdGNoR1BSLCBzY3JhdGNoR1BSLAorICAgICAgICBzdG9yYWdlR1BSLCB2
bSgpLnByaW1pdGl2ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UoKSwgc2NyYXRjaEdQUiwgc2NyYXRj
aEdQUiwKICAgICAgICAgc2NyYXRjaEdQUjIsIHNsb3dDYXNlcyk7CiAgICAgCiAgICAgTWFjcm9B
c3NlbWJsZXI6Okp1bXAgZG9uZSA9IG1faml0LmJyYW5jaFRlc3QzMihNYWNyb0Fzc2VtYmxlcjo6
WmVybywgc2l6ZUdQUik7CkBAIC0xMzcwMCw3ICsxMzcwMCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmVtaXRBbGxvY2F0ZUJ1dHRlcmYKICAgICBkaWROb3RPdmVyZmxvdy5saW5rKCZtX2ppdCk7
CiAjZW5kaWYKICAgICBtX2ppdC5lbWl0QWxsb2NhdGVWYXJpYWJsZVNpemVkKAotICAgICAgICBz
dG9yYWdlUmVzdWx0R1BSLCB2bSgpLmpzVmFsdWVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlLCBzY3Jh
dGNoMiwgc2NyYXRjaDEsIHNjcmF0Y2gzLCBzbG93Q2FzZXMpOworICAgICAgICBzdG9yYWdlUmVz
dWx0R1BSLCB2bSgpLmpzVmFsdWVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlKCksIHNjcmF0Y2gyLCBz
Y3JhdGNoMSwgc2NyYXRjaDMsIHNsb3dDYXNlcyk7CiAgICAgbV9qaXQuYWRkUHRyKFRydXN0ZWRJ
bW0zMihzaXplb2YoSW5kZXhpbmdIZWFkZXIpKSwgc3RvcmFnZVJlc3VsdEdQUik7CiAKICAgICBt
X2ppdC5zdG9yZTMyKHNpemVHUFIsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHN0b3JhZ2VSZXN1
bHRHUFIsIEJ1dHRlcmZseTo6b2Zmc2V0T2ZQdWJsaWNMZW5ndGgoKSkpOwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAkocmV2aXNpb24gMjg2
MDQzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC04MzAwLDcgKzgzMDAsNyBAQCBJR05PUkVfQ0xBTkdfV0FSTklOR1Nf
RU5ECiAgICAgICAgICAgICAgICAgbV9vdXQuY29uc3RJbnRQdHIofnN0YXRpY19jYXN0PGludHB0
cl90Pig3KSkpOwogICAgICAgICB9CiAKLSAgICAgICAgTFZhbHVlIGFsbG9jYXRvciA9IGFsbG9j
YXRvckZvclNpemUodm0oKS5wcmltaXRpdmVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlLCBieXRlU2l6
ZSwgc2xvd0Nhc2UpOworICAgICAgICBMVmFsdWUgYWxsb2NhdG9yID0gYWxsb2NhdG9yRm9yU2l6
ZSh2bSgpLnByaW1pdGl2ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UoKSwgYnl0ZVNpemUsIHNsb3dD
YXNlKTsKICAgICAgICAgTFZhbHVlIHN0b3JhZ2UgPSBhbGxvY2F0ZUhlYXBDZWxsKGFsbG9jYXRv
ciwgc2xvd0Nhc2UpOwogCiAgICAgICAgIHNwbGF0V29yZHMoCkBAIC0xMzkyMSw3ICsxMzkyMSw3
IEBAIElHTk9SRV9DTEFOR19XQVJOSU5HU19FTkQKICAgICAgICAgICAgICAgICBWYWx1ZUZyb21C
bG9jayBub0J1dHRlcmZseSA9IG1fb3V0LmFuY2hvcihtX291dC5pbnRQdHJaZXJvKTsKICAgICAg
ICAgICAgICAgICAKICAgICAgICAgICAgICAgICBMVmFsdWUgc3RhcnRPZlN0b3JhZ2UgPSBhbGxv
Y2F0ZUhlYXBDZWxsKAotICAgICAgICAgICAgICAgICAgICBhbGxvY2F0b3JGb3JTaXplKHZtKCku
anNWYWx1ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UsIGJ1dHRlcmZseVNpemUsIHNsb3dQYXRoKSwK
KyAgICAgICAgICAgICAgICAgICAgYWxsb2NhdG9yRm9yU2l6ZSh2bSgpLmpzVmFsdWVHaWdhY2Fn
ZUF1eGlsaWFyeVNwYWNlKCksIGJ1dHRlcmZseVNpemUsIHNsb3dQYXRoKSwKICAgICAgICAgICAg
ICAgICAgICAgc2xvd1BhdGgpOwogCiAgICAgICAgICAgICAgICAgTFZhbHVlIGZhc3RCdXR0ZXJm
bHlWYWx1ZSA9IG1fb3V0LmFkZCgKQEAgLTE1MDE2LDcgKzE1MDE2LDcgQEAgSUdOT1JFX0NMQU5H
X1dBUk5JTkdTX0VORAogICAgICAgICBMQmFzaWNCbG9jayBsYXN0TmV4dCA9IG1fb3V0Lmluc2Vy
dE5ld0Jsb2Nrc0JlZm9yZShzbG93UGF0aCk7CiAKICAgICAgICAgc2l6ZV90IHNpemVJbkJ5dGVz
ID0gc2l6ZUluVmFsdWVzICogc2l6ZW9mKEpTVmFsdWUpOwotICAgICAgICBBbGxvY2F0b3IgYWxs
b2NhdG9yID0gdm0oKS5qc1ZhbHVlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZS5hbGxvY2F0b3JGb3JO
b25WaXJ0dWFsKHNpemVJbkJ5dGVzLCBBbGxvY2F0b3JGb3JNb2RlOjpBbGxvY2F0b3JJZkV4aXN0
cyk7CisgICAgICAgIEFsbG9jYXRvciBhbGxvY2F0b3IgPSB2bSgpLmpzVmFsdWVHaWdhY2FnZUF1
eGlsaWFyeVNwYWNlKCkuYWxsb2NhdG9yRm9yTm9uVmlydHVhbChzaXplSW5CeXRlcywgQWxsb2Nh
dG9yRm9yTW9kZTo6QWxsb2NhdG9ySWZFeGlzdHMpOwogICAgICAgICBMVmFsdWUgc3RhcnRPZlN0
b3JhZ2UgPSBhbGxvY2F0ZUhlYXBDZWxsKAogICAgICAgICAgICAgbV9vdXQuY29uc3RJbnRQdHIo
YWxsb2NhdG9yLmxvY2FsQWxsb2NhdG9yKCkpLCBzbG93UGF0aCk7CiAgICAgICAgIFZhbHVlRnJv
bUJsb2NrIGZhc3RCdXR0ZXJmbHkgPSBtX291dC5hbmNob3IoCkBAIC0xNzAzOCw3ICsxNzAzOCw3
IEBAIElHTk9SRV9DTEFOR19XQVJOSU5HU19FTkQKICAgICAgICAgTFZhbHVlIGJ1dHRlcmZseVNp
emUgPSBtX291dC5hZGQoCiAgICAgICAgICAgICBwYXlsb2FkU2l6ZSwgbV9vdXQuY29uc3RJbnRQ
dHIoc2l6ZW9mKEluZGV4aW5nSGVhZGVyKSkpOwogCi0gICAgICAgIExWYWx1ZSBhbGxvY2F0b3Ig
PSBhbGxvY2F0b3JGb3JTaXplKHZtKCkuanNWYWx1ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UsIGJ1
dHRlcmZseVNpemUsIGZhaWxDYXNlKTsKKyAgICAgICAgTFZhbHVlIGFsbG9jYXRvciA9IGFsbG9j
YXRvckZvclNpemUodm0oKS5qc1ZhbHVlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZSgpLCBidXR0ZXJm
bHlTaXplLCBmYWlsQ2FzZSk7CiAgICAgICAgIExWYWx1ZSBzdGFydE9mU3RvcmFnZSA9IGFsbG9j
YXRlSGVhcENlbGwoYWxsb2NhdG9yLCBmYWlsQ2FzZSk7CiAKICAgICAgICAgTFZhbHVlIGJ1dHRl
cmZseSA9IG1fb3V0LmFkZChzdGFydE9mU3RvcmFnZSwgbV9vdXQuY29uc3RJbnRQdHIoc2l6ZW9m
KEluZGV4aW5nSGVhZGVyKSkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2dlbmVyYXRv
ci9EU0wucmIKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2dlbmVyYXRvci9E
U0wucmIJKHJldmlzaW9uIDI4NjA0MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9nZW5lcmF0
b3IvRFNMLnJiCSh3b3JraW5nIGNvcHkpCkBAIC0xLDQgKzEsNCBAQAotIyBDb3B5cmlnaHQgKEMp
IDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIyBDb3B5cmlnaHQgKEMpIDIw
MTgtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAjCiAjIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
IyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTE0Nyw2ICsxNDcsOCBAQCBtb2R1bGUgRFNMCiAKIG5hbWVzcGFjZSBK
U0MgewogCitjbGFzcyBCYXNpY0Jsb2NrTG9jYXRpb247CisKIHZvaWQgZHVtcEJ5dGVjb2RlKEJ5
dGVjb2RlRHVtcGVyQmFzZSogZHVtcGVyLCBJbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0LCBjb25z
dCBJbnN0cnVjdGlvbiopOwogCiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvQ29kZUJsb2NrU2V0LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvQ29kZUJsb2NrU2V0LmgJKHJldmlzaW9uIDI4NjA0MykKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0NvZGVCbG9ja1NldC5oCSh3b3JraW5nIGNvcHkp
CkBAIC02Niw4ICs2Niw2IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9y
PiB2b2lkIGl0ZXJhdGUoY29uc3QgRnVuY3RvciYpOwogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1
bmN0b3I+IHZvaWQgaXRlcmF0ZShjb25zdCBBYnN0cmFjdExvY2tlciYsIGNvbnN0IEZ1bmN0b3Im
KTsKIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+IHZvaWQgaXRlcmF0ZVZpYVN1YnNw
YWNlcyhWTSYsIGNvbnN0IEZ1bmN0b3ImKTsKLSAgICAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBG
dW5jdG9yPiB2b2lkIGl0ZXJhdGVDdXJyZW50bHlFeGVjdXRpbmcoY29uc3QgRnVuY3RvciYpOwog
ICAgIAogICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYpIGNvbnN0OwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvQ29kZUJsb2NrU2V0SW5saW5lcy5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0NvZGVCbG9ja1NldElubGluZXMuaAkocmV2aXNpb24g
Mjg2MDQzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ29kZUJsb2NrU2V0SW5saW5l
cy5oCSh3b3JraW5nIGNvcHkpCkBAIC02MCwxOCArNjAsNiBAQCB2b2lkIENvZGVCbG9ja1NldDo6
aXRlcmF0ZShjb25zdCBBYnN0cmFjCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+Ci12
b2lkIENvZGVCbG9ja1NldDo6aXRlcmF0ZVZpYVN1YnNwYWNlcyhWTSYgdm0sIGNvbnN0IEZ1bmN0
b3ImIGZ1bmN0b3IpCi17Ci0gICAgdm0uZm9yRWFjaENvZGVCbG9ja1NwYWNlKAotICAgICAgICBb
Jl0gKGF1dG8mIHNwYWNlQW5kU2V0KSB7Ci0gICAgICAgICAgICBzcGFjZUFuZFNldC5zcGFjZS5m
b3JFYWNoTGl2ZUNlbGwoCi0gICAgICAgICAgICAgICAgWyZdIChIZWFwQ2VsbCogY2VsbCwgSGVh
cENlbGw6OktpbmQpIHsKLSAgICAgICAgICAgICAgICAgICAgZnVuY3Rvcihqc0Nhc3Q8Q29kZUJs
b2NrKj4oc3RhdGljX2Nhc3Q8SlNDZWxsKj4oY2VsbCkpKTsKLSAgICAgICAgICAgICAgICB9KTsK
LSAgICAgICAgfSk7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+CiB2b2lkIENvZGVC
bG9ja1NldDo6aXRlcmF0ZUN1cnJlbnRseUV4ZWN1dGluZyhjb25zdCBGdW5jdG9yJiBmdW5jdG9y
KQogewogICAgIExvY2tlciBsb2NrZXIgeyBtX2xvY2sgfTsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL0hlYXAuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL0hlYXAuY3BwCShyZXZpc2lvbiAyODYwNDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9IZWFwLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjEsMTMgKzIxLDIwIEBACiAjaW5j
bHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiSGVhcC5oIgogCisjaW5jbHVkZSAiQmlnSW50T2Jq
ZWN0LmgiCisjaW5jbHVkZSAiQm9vbGVhbk9iamVjdC5oIgorI2luY2x1ZGUgIkJyYW5kZWRTdHJ1
Y3R1cmUuaCIKICNpbmNsdWRlICJCdWlsdGluRXhlY3V0YWJsZXMuaCIKKyNpbmNsdWRlICJDbG9u
ZWRBcmd1bWVudHMuaCIKICNpbmNsdWRlICJDb2RlQmxvY2suaCIKICNpbmNsdWRlICJDb2RlQmxv
Y2tTZXRJbmxpbmVzLmgiCiAjaW5jbHVkZSAiQ29sbGVjdGluZ1Njb3BlLmgiCiAjaW5jbHVkZSAi
Q29uc2VydmF0aXZlUm9vdHMuaCIKKyNpbmNsdWRlICJEYXRlSW5zdGFuY2UuaCIKKyNpbmNsdWRl
ICJEZWJ1Z2dlclNjb3BlLmgiCiAjaW5jbHVkZSAiRWRlbkdDQWN0aXZpdHlDYWxsYmFjay5oIgog
I2luY2x1ZGUgIkV4Y2VwdGlvbi5oIgorI2luY2x1ZGUgIkZhc3RNYWxsb2NBbGlnbmVkTWVtb3J5
QWxsb2NhdG9yLmgiCiAjaW5jbHVkZSAiRnVsbEdDQWN0aXZpdHlDYWxsYmFjay5oIgogI2luY2x1
ZGUgIkZ1bmN0aW9uRXhlY3V0YWJsZUlubGluZXMuaCIKICNpbmNsdWRlICJHQ0FjdGl2aXR5Q2Fs
bGJhY2suaCIKQEAgLTM1LDYgKzQyLDcgQEAKICNpbmNsdWRlICJHQ0luY29taW5nUmVmQ291bnRl
ZFNldElubGluZXMuaCIKICNpbmNsdWRlICJHQ1NlZ21lbnRlZEFycmF5SW5saW5lcy5oIgogI2lu
Y2x1ZGUgIkdDVHlwZU1hcC5oIgorI2luY2x1ZGUgIkdldHRlclNldHRlci5oIgogI2luY2x1ZGUg
Ikhhc093blByb3BlcnR5Q2FjaGUuaCIKICNpbmNsdWRlICJIZWFwSGVscGVyUG9vbC5oIgogI2lu
Y2x1ZGUgIkhlYXBJdGVyYXRpb25TY29wZS5oIgpAQCAtNDMsMzcgKzUxLDExNiBAQAogI2luY2x1
ZGUgIkhlYXBWZXJpZmllci5oIgogI2luY2x1ZGUgIkluY3JlbWVudGFsU3dlZXBlci5oIgogI2lu
Y2x1ZGUgIkludGVycHJldGVyLmgiCisjaW5jbHVkZSAiSW50bENvbGxhdG9yLmgiCisjaW5jbHVk
ZSAiSW50bERhdGVUaW1lRm9ybWF0LmgiCisjaW5jbHVkZSAiSW50bERpc3BsYXlOYW1lcy5oIgor
I2luY2x1ZGUgIkludGxMaXN0Rm9ybWF0LmgiCisjaW5jbHVkZSAiSW50bExvY2FsZS5oIgorI2lu
Y2x1ZGUgIkludGxOdW1iZXJGb3JtYXQuaCIKKyNpbmNsdWRlICJJbnRsUGx1cmFsUnVsZXMuaCIK
KyNpbmNsdWRlICJJbnRsUmVsYXRpdmVUaW1lRm9ybWF0LmgiCisjaW5jbHVkZSAiSW50bFNlZ21l
bnRJdGVyYXRvci5oIgorI2luY2x1ZGUgIkludGxTZWdtZW50ZXIuaCIKKyNpbmNsdWRlICJJbnRs
U2VnbWVudHMuaCIKICNpbmNsdWRlICJJc29DZWxsU2V0SW5saW5lcy5oIgogI2luY2x1ZGUgIkpJ
VFN0dWJSb3V0aW5lU2V0LmgiCiAjaW5jbHVkZSAiSklUV29ya2xpc3RJbmxpbmVzLmgiCisjaW5j
bHVkZSAiSlNBUElHbG9iYWxPYmplY3QuaCIKKyNpbmNsdWRlICJKU0FQSVZhbHVlV3JhcHBlci5o
IgorI2luY2x1ZGUgIkpTQVBJV3JhcHBlck9iamVjdC5oIgorI2luY2x1ZGUgIkpTQXJyYXkuaCIK
KyNpbmNsdWRlICJKU0FycmF5QnVmZmVyLmgiCisjaW5jbHVkZSAiSlNBcnJheUl0ZXJhdG9yLmgi
CisjaW5jbHVkZSAiSlNBc3luY0dlbmVyYXRvci5oIgorI2luY2x1ZGUgIkpTQmlnSW50LmgiCisj
aW5jbHVkZSAiSlNCb3VuZEZ1bmN0aW9uLmgiCisjaW5jbHVkZSAiSlNDYWxsYmFja0NvbnN0cnVj
dG9yLmgiCisjaW5jbHVkZSAiSlNDYWxsYmFja0Z1bmN0aW9uLmgiCisjaW5jbHVkZSAiSlNDYWxs
YmFja09iamVjdC5oIgorI2luY2x1ZGUgIkpTQ2FsbGVlLmgiCisjaW5jbHVkZSAiSlNDdXN0b21H
ZXR0ZXJGdW5jdGlvbi5oIgorI2luY2x1ZGUgIkpTQ3VzdG9tU2V0dGVyRnVuY3Rpb24uaCIKKyNp
bmNsdWRlICJKU0RhdGFWaWV3LmgiCiAjaW5jbHVkZSAiSlNGaW5hbGl6YXRpb25SZWdpc3RyeS5o
IgorI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKKyNpbmNsdWRlICJKU0dsb2JhbExleGljYWxFbnZp
cm9ubWVudC5oIgorI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCisjaW5jbHVkZSAiSlNJbmpl
Y3RlZFNjcmlwdEhvc3QuaCIKKyNpbmNsdWRlICJKU0phdmFTY3JpcHRDYWxsRnJhbWUuaCIKKyNp
bmNsdWRlICJKU01hcC5oIgorI2luY2x1ZGUgIkpTTWFwSXRlcmF0b3IuaCIKKyNpbmNsdWRlICJK
U01vZHVsZU5hbWVzcGFjZU9iamVjdC5oIgorI2luY2x1ZGUgIkpTTW9kdWxlUmVjb3JkLmgiCisj
aW5jbHVkZSAiSlNOYXRpdmVTdGRGdW5jdGlvbi5oIgorI2luY2x1ZGUgIkpTUHJvbWlzZS5oIgor
I2luY2x1ZGUgIkpTUHJvcGVydHlOYW1lRW51bWVyYXRvci5oIgorI2luY2x1ZGUgIkpTUHJveHku
aCIKKyNpbmNsdWRlICJKU1NjcmlwdEZldGNoUGFyYW1ldGVycy5oIgorI2luY2x1ZGUgIkpTU2Ny
aXB0RmV0Y2hlci5oIgorI2luY2x1ZGUgIkpTU2V0LmgiCisjaW5jbHVkZSAiSlNTZXRJdGVyYXRv
ci5oIgorI2luY2x1ZGUgIkpTU291cmNlQ29kZS5oIgorI2luY2x1ZGUgIkpTU3RyaW5nSXRlcmF0
b3IuaCIKKyNpbmNsdWRlICJKU1RlbXBsYXRlT2JqZWN0RGVzY3JpcHRvci5oIgorI2luY2x1ZGUg
IkpTVG9XYXNtSUNDYWxsZWUuaCIKKyNpbmNsdWRlICJKU1R5cGVkQXJyYXlzLmgiCiAjaW5jbHVk
ZSAiSlNWaXJ0dWFsTWFjaGluZUludGVybmFsLmgiCiAjaW5jbHVkZSAiSlNXZWFrTWFwLmgiCiAj
aW5jbHVkZSAiSlNXZWFrT2JqZWN0UmVmLmgiCiAjaW5jbHVkZSAiSlNXZWFrU2V0LmgiCiAjaW5j
bHVkZSAiSlNXZWJBc3NlbWJseUNvZGVCbG9jay5oIgorI2luY2x1ZGUgIkpTV2ViQXNzZW1ibHlF
eGNlcHRpb24uaCIKKyNpbmNsdWRlICJKU1dlYkFzc2VtYmx5R2xvYmFsLmgiCisjaW5jbHVkZSAi
SlNXZWJBc3NlbWJseUluc3RhbmNlLmgiCisjaW5jbHVkZSAiSlNXZWJBc3NlbWJseU1lbW9yeS5o
IgorI2luY2x1ZGUgIkpTV2ViQXNzZW1ibHlNb2R1bGUuaCIKKyNpbmNsdWRlICJKU1dlYkFzc2Vt
Ymx5VGFibGUuaCIKKyNpbmNsdWRlICJKU1dlYkFzc2VtYmx5VGFnLmgiCisjaW5jbHVkZSAiSlNX
aXRoU2NvcGUuaCIKICNpbmNsdWRlICJNYWNoaW5lU3RhY2tNYXJrZXIuaCIKICNpbmNsdWRlICJN
YXJrU3RhY2tNZXJnaW5nQ29uc3RyYWludC5oIgogI2luY2x1ZGUgIk1hcmtlZEpTVmFsdWVSZWZB
cnJheS5oIgogI2luY2x1ZGUgIk1hcmtlZFNwYWNlSW5saW5lcy5oIgogI2luY2x1ZGUgIk1hcmtp
bmdDb25zdHJhaW50U2V0LmgiCisjaW5jbHVkZSAiTmF0aXZlRXhlY3V0YWJsZS5oIgogI2luY2x1
ZGUgIlByZXZlbnRDb2xsZWN0aW9uU2NvcGUuaCIKKyNpbmNsdWRlICJQcm9ncmFtRXhlY3V0YWJs
ZS5oIgorI2luY2x1ZGUgIlByb3BlcnR5VGFibGUuaCIKKyNpbmNsdWRlICJQcm94eVJldm9rZS5o
IgorI2luY2x1ZGUgIlJlZ0V4cE9iamVjdC5oIgogI2luY2x1ZGUgIlNhbXBsaW5nUHJvZmlsZXIu
aCIKKyNpbmNsdWRlICJTY29wZWRBcmd1bWVudHMuaCIKICNpbmNsdWRlICJTaGFkb3dDaGlja2Vu
LmgiCisjaW5jbHVkZSAiU2hhZG93UmVhbG1PYmplY3QuaCIKICNpbmNsdWRlICJTcGFjZVRpbWVN
dXRhdG9yU2NoZWR1bGVyLmgiCiAjaW5jbHVkZSAiU3RvY2hhc3RpY1NwYWNlVGltZU11dGF0b3JT
Y2hlZHVsZXIuaCIKICNpbmNsdWRlICJTdG9wSWZOZWNlc3NhcnlUaW1lci5oIgorI2luY2x1ZGUg
IlN0cmljdEV2YWxBY3RpdmF0aW9uLmgiCisjaW5jbHVkZSAiU3RyaW5nT2JqZWN0LmgiCisjaW5j
bHVkZSAiU3RydWN0dXJlQ2hhaW4uaCIKICNpbmNsdWRlICJTdWJzcGFjZUlubGluZXMuaCIKICNp
bmNsdWRlICJTdXBlclNhbXBsZXIuaCIKICNpbmNsdWRlICJTd2VlcGluZ1Njb3BlLmgiCisjaW5j
bHVkZSAiU3ltYm9sT2JqZWN0LmgiCiAjaW5jbHVkZSAiU3ltYm9sVGFibGVJbmxpbmVzLmgiCiAj
aW5jbHVkZSAiU3luY2hyb25vdXNTdG9wVGhlV29ybGRNdXRhdG9yU2NoZWR1bGVyLmgiCisjaW5j
bHVkZSAiVGVtcG9yYWxDYWxlbmRhci5oIgorI2luY2x1ZGUgIlRlbXBvcmFsRHVyYXRpb24uaCIK
KyNpbmNsdWRlICJUZW1wb3JhbEluc3RhbnQuaCIKKyNpbmNsdWRlICJUZW1wb3JhbFBsYWluVGlt
ZS5oIgorI2luY2x1ZGUgIlRlbXBvcmFsVGltZVpvbmUuaCIKICNpbmNsdWRlICJUeXBlUHJvZmls
ZXIuaCIKICNpbmNsdWRlICJUeXBlUHJvZmlsZXJMb2cuaCIKKyNpbmNsdWRlICJVbmxpbmtlZEZ1
bmN0aW9uQ29kZUJsb2NrLmgiCisjaW5jbHVkZSAiVW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJs
b2NrLmgiCisjaW5jbHVkZSAiVW5saW5rZWRQcm9ncmFtQ29kZUJsb2NrLmgiCiAjaW5jbHVkZSAi
Vk0uaCIKICNpbmNsdWRlICJWZXJpZmllclNsb3RWaXNpdG9ySW5saW5lcy5oIgogI2luY2x1ZGUg
IldlYWtNYXBJbXBsSW5saW5lcy5oIgogI2luY2x1ZGUgIldlYWtTZXRJbmxpbmVzLmgiCisjaW5j
bHVkZSAiV2ViQXNzZW1ibHlGdW5jdGlvbi5oIgorI2luY2x1ZGUgIldlYkFzc2VtYmx5TW9kdWxl
UmVjb3JkLmgiCisjaW5jbHVkZSAiV2ViQXNzZW1ibHlXcmFwcGVyRnVuY3Rpb24uaCIKICNpbmNs
dWRlIDxhbGdvcml0aG0+CiAjaW5jbHVkZSA8d3RmL0NyeXB0b2dyYXBoaWNhbGx5UmFuZG9tTnVt
YmVyLmg+CiAjaW5jbHVkZSA8d3RmL0xpc3REdW1wLmg+CkBAIC05MCw3ICsxNzcsMTMgQEAKICNp
bmNsdWRlIDx3dGYvc3BpL2NvY29hL29iamNTUEkuaD4KICNlbmRpZgogCisjaWYgSlNDX09CSkNf
QVBJX0VOQUJMRUQKKyNpbmNsdWRlICJPYmpDQ2FsbGJhY2tGdW5jdGlvbi5oIgorI2VuZGlmCisK
ICNpZmRlZiBKU0NfR0xJQl9BUElfRU5BQkxFRAorI2luY2x1ZGUgIkpTQVBJV3JhcHBlckdsb2Jh
bE9iamVjdC5oIgorI2luY2x1ZGUgIkpTQ0NhbGxiYWNrRnVuY3Rpb24uaCIKICNpbmNsdWRlICJK
U0NHTGliV3JhcHBlck9iamVjdC5oIgogI2VuZGlmCiAKQEAgLTI4Niw2ICszNzksMTE0IEBAIEhl
YXA6OkhlYXAoVk0mIHZtLCBIZWFwVHlwZSBoZWFwVHlwZSkKICAgICAsIG1faGVscGVyQ2xpZW50
KCZoZWFwSGVscGVyUG9vbCgpKQogICAgICwgbV90aHJlYWRMb2NrKEJveDxMb2NrPjo6Y3JlYXRl
KCkpCiAgICAgLCBtX3RocmVhZENvbmRpdGlvbihBdXRvbWF0aWNUaHJlYWRDb25kaXRpb246OmNy
ZWF0ZSgpKQorCisgICAgLy8gbWxhbSBIZWFwQ2VsbFR5cGVzCisgICAgLCBhdXhpbGlhcnlIZWFw
Q2VsbFR5cGUoQ2VsbEF0dHJpYnV0ZXMoRG9lc05vdE5lZWREZXN0cnVjdGlvbiwgSGVhcENlbGw6
OkF1eGlsaWFyeSkpCisgICAgLCBpbW11dGFibGVCdXR0ZXJmbHlIZWFwQ2VsbFR5cGUoQ2VsbEF0
dHJpYnV0ZXMoRG9lc05vdE5lZWREZXN0cnVjdGlvbiwgSGVhcENlbGw6OkpTQ2VsbFdpdGhJbmRl
eGluZ0hlYWRlcikpCisgICAgLCBjZWxsSGVhcENlbGxUeXBlKENlbGxBdHRyaWJ1dGVzKERvZXNO
b3ROZWVkRGVzdHJ1Y3Rpb24sIEhlYXBDZWxsOjpKU0NlbGwpKQorICAgICwgZGVzdHJ1Y3RpYmxl
Q2VsbEhlYXBDZWxsVHlwZShDZWxsQXR0cmlidXRlcyhOZWVkc0Rlc3RydWN0aW9uLCBIZWFwQ2Vs
bDo6SlNDZWxsKSkKKyAgICAsIGFwaUdsb2JhbE9iamVjdEhlYXBDZWxsVHlwZShJc29IZWFwQ2Vs
bFR5cGU6OkFyZ3M8SlNBUElHbG9iYWxPYmplY3Q+KCkpCisgICAgLCBjYWxsYmFja0NvbnN0cnVj
dG9ySGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6QXJnczxKU0NhbGxiYWNrQ29uc3RydWN0
b3I+KCkpCisgICAgLCBjYWxsYmFja0dsb2JhbE9iamVjdEhlYXBDZWxsVHlwZShJc29IZWFwQ2Vs
bFR5cGU6OkFyZ3M8SlNDYWxsYmFja09iamVjdDxKU0dsb2JhbE9iamVjdD4+KCkpCisgICAgLCBj
YWxsYmFja09iamVjdEhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OkFyZ3M8SlNDYWxsYmFj
a09iamVjdDxKU05vbkZpbmFsT2JqZWN0Pj4oKSkKKyAgICAsIGN1c3RvbUdldHRlckZ1bmN0aW9u
SGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6QXJnczxKU0N1c3RvbUdldHRlckZ1bmN0aW9u
PigpKQorICAgICwgY3VzdG9tU2V0dGVyRnVuY3Rpb25IZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxU
eXBlOjpBcmdzPEpTQ3VzdG9tU2V0dGVyRnVuY3Rpb24+KCkpCisgICAgLCBkYXRlSW5zdGFuY2VI
ZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpBcmdzPERhdGVJbnN0YW5jZT4oKSkKKyAgICAs
IGVycm9ySW5zdGFuY2VIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpBcmdzPEVycm9ySW5z
dGFuY2U+KCkpCisgICAgLCBmaW5hbGl6YXRpb25SZWdpc3RyeUNlbGxUeXBlKElzb0hlYXBDZWxs
VHlwZTo6QXJnczxKU0ZpbmFsaXphdGlvblJlZ2lzdHJ5PigpKQorICAgICwgZ2xvYmFsTGV4aWNh
bEVudmlyb25tZW50SGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6QXJnczxKU0dsb2JhbExl
eGljYWxFbnZpcm9ubWVudD4oKSkKKyAgICAsIGdsb2JhbE9iamVjdEhlYXBDZWxsVHlwZShJc29I
ZWFwQ2VsbFR5cGU6OkFyZ3M8SlNHbG9iYWxPYmplY3Q+KCkpCisgICAgLCBpbmplY3RlZFNjcmlw
dEhvc3RTcGFjZUhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OkFyZ3M8SW5zcGVjdG9yOjpK
U0luamVjdGVkU2NyaXB0SG9zdD4oKSkKKyAgICAsIGphdmFTY3JpcHRDYWxsRnJhbWVIZWFwQ2Vs
bFR5cGUoSXNvSGVhcENlbGxUeXBlOjpBcmdzPEluc3BlY3Rvcjo6SlNKYXZhU2NyaXB0Q2FsbEZy
YW1lPigpKQorICAgICwganNNb2R1bGVSZWNvcmRIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBl
OjpBcmdzPEpTTW9kdWxlUmVjb3JkPigpKQorICAgICwgbW9kdWxlTmFtZXNwYWNlT2JqZWN0SGVh
cENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6QXJnczxKU01vZHVsZU5hbWVzcGFjZU9iamVjdD4o
KSkKKyAgICAsIG5hdGl2ZVN0ZEZ1bmN0aW9uSGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6
QXJnczxKU05hdGl2ZVN0ZEZ1bmN0aW9uPigpKQorICAgICwgd2Vha01hcEhlYXBDZWxsVHlwZShJ
c29IZWFwQ2VsbFR5cGU6OkFyZ3M8SlNXZWFrTWFwPigpKQorICAgICwgd2Vha1NldEhlYXBDZWxs
VHlwZShJc29IZWFwQ2VsbFR5cGU6OkFyZ3M8SlNXZWFrU2V0PigpKQorI2lmIEpTQ19PQkpDX0FQ
SV9FTkFCTEVECisgICAgLCBhcGlXcmFwcGVyT2JqZWN0SGVhcENlbGxUeXBlKElzb0hlYXBDZWxs
VHlwZTo6QXJnczxKU0NhbGxiYWNrT2JqZWN0PEpTQVBJV3JhcHBlck9iamVjdD4+KCkpCisgICAg
LCBvYmpDQ2FsbGJhY2tGdW5jdGlvbkhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OkFyZ3M8
T2JqQ0NhbGxiYWNrRnVuY3Rpb24+KCkpCisjZW5kaWYKKyNpZmRlZiBKU0NfR0xJQl9BUElfRU5B
QkxFRAorICAgICwgYXBpV3JhcHBlck9iamVjdEhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6
OkFyZ3M8SlNDYWxsYmFja09iamVjdDxKU0FQSVdyYXBwZXJPYmplY3Q+PigpKQorICAgICwgY2Fs
bGJhY2tBUElXcmFwcGVyR2xvYmFsT2JqZWN0SGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6
QXJnczxKU0NhbGxiYWNrT2JqZWN0PEpTQVBJV3JhcHBlckdsb2JhbE9iamVjdD4+KCkpCisgICAg
LCBqc2NDYWxsYmFja0Z1bmN0aW9uSGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6QXJnczxK
U0NDYWxsYmFja0Z1bmN0aW9uPigpKQorI2VuZGlmCisgICAgLCBpbnRsQ29sbGF0b3JIZWFwQ2Vs
bFR5cGUoSXNvSGVhcENlbGxUeXBlOjpBcmdzPEludGxDb2xsYXRvcj4oKSkKKyAgICAsIGludGxE
YXRlVGltZUZvcm1hdEhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OkFyZ3M8SW50bERhdGVU
aW1lRm9ybWF0PigpKQorICAgICwgaW50bERpc3BsYXlOYW1lc0hlYXBDZWxsVHlwZShJc29IZWFw
Q2VsbFR5cGU6OkFyZ3M8SW50bERpc3BsYXlOYW1lcz4oKSkKKyAgICAsIGludGxMaXN0Rm9ybWF0
SGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6QXJnczxJbnRsTGlzdEZvcm1hdD4oKSkKKyAg
ICAsIGludGxMb2NhbGVIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpBcmdzPEludGxMb2Nh
bGU+KCkpCisgICAgLCBpbnRsTnVtYmVyRm9ybWF0SGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlw
ZTo6QXJnczxJbnRsTnVtYmVyRm9ybWF0PigpKQorICAgICwgaW50bFBsdXJhbFJ1bGVzSGVhcENl
bGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6QXJnczxJbnRsUGx1cmFsUnVsZXM+KCkpCisgICAgLCBp
bnRsUmVsYXRpdmVUaW1lRm9ybWF0SGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6QXJnczxJ
bnRsUmVsYXRpdmVUaW1lRm9ybWF0PigpKQorICAgICwgaW50bFNlZ21lbnRJdGVyYXRvckhlYXBD
ZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OkFyZ3M8SW50bFNlZ21lbnRJdGVyYXRvcj4oKSkKKyAg
ICAsIGludGxTZWdtZW50ZXJIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpBcmdzPEludGxT
ZWdtZW50ZXI+KCkpCisgICAgLCBpbnRsU2VnbWVudHNIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxU
eXBlOjpBcmdzPEludGxTZWdtZW50cz4oKSkKKyNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCisgICAg
LCB3ZWJBc3NlbWJseUNvZGVCbG9ja0hlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OkFyZ3M8
SlNXZWJBc3NlbWJseUNvZGVCbG9jaz4oKSkKKyAgICAsIHdlYkFzc2VtYmx5RXhjZXB0aW9uSGVh
cENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6QXJnczxKU1dlYkFzc2VtYmx5RXhjZXB0aW9uPigp
KQorICAgICwgd2ViQXNzZW1ibHlGdW5jdGlvbkhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6
OkFyZ3M8V2ViQXNzZW1ibHlGdW5jdGlvbj4oKSkKKyAgICAsIHdlYkFzc2VtYmx5R2xvYmFsSGVh
cENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6QXJnczxKU1dlYkFzc2VtYmx5R2xvYmFsPigpKQor
ICAgICwgd2ViQXNzZW1ibHlJbnN0YW5jZUhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OkFy
Z3M8SlNXZWJBc3NlbWJseUluc3RhbmNlPigpKQorICAgICwgd2ViQXNzZW1ibHlNZW1vcnlIZWFw
Q2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpBcmdzPEpTV2ViQXNzZW1ibHlNZW1vcnk+KCkpCisg
ICAgLCB3ZWJBc3NlbWJseU1vZHVsZUhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OkFyZ3M8
SlNXZWJBc3NlbWJseU1vZHVsZT4oKSkKKyAgICAsIHdlYkFzc2VtYmx5TW9kdWxlUmVjb3JkSGVh
cENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6QXJnczxXZWJBc3NlbWJseU1vZHVsZVJlY29yZD4o
KSkKKyAgICAsIHdlYkFzc2VtYmx5VGFibGVIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpB
cmdzPEpTV2ViQXNzZW1ibHlUYWJsZT4oKSkKKyAgICAsIHdlYkFzc2VtYmx5VGFnSGVhcENlbGxU
eXBlKElzb0hlYXBDZWxsVHlwZTo6QXJnczxKU1dlYkFzc2VtYmx5VGFnPigpKQorI2VuZGlmCisK
KyAgICAvLyBtbGFtIEFsaWduZWRNZW1vcnlBbGxvY2F0b3JzCisgICAgLCBmYXN0TWFsbG9jQWxs
b2NhdG9yKG1ha2VVbmlxdWU8RmFzdE1hbGxvY0FsaWduZWRNZW1vcnlBbGxvY2F0b3I+KCkpCisg
ICAgLCBwcmltaXRpdmVHaWdhY2FnZUFsbG9jYXRvcihtYWtlVW5pcXVlPEdpZ2FjYWdlQWxpZ25l
ZE1lbW9yeUFsbG9jYXRvcj4oR2lnYWNhZ2U6OlByaW1pdGl2ZSkpCisgICAgLCBqc1ZhbHVlR2ln
YWNhZ2VBbGxvY2F0b3IobWFrZVVuaXF1ZTxHaWdhY2FnZUFsaWduZWRNZW1vcnlBbGxvY2F0b3I+
KEdpZ2FjYWdlOjpKU1ZhbHVlKSkKKworICAgIC8vIG1sYW0gU3Vic3BhY2VzCisgICAgLCBwcmlt
aXRpdmVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlKCJQcmltaXRpdmUgR2lnYWNhZ2UgQXV4aWxpYXJ5
IiwgKnRoaXMsIGF1eGlsaWFyeUhlYXBDZWxsVHlwZSwgcHJpbWl0aXZlR2lnYWNhZ2VBbGxvY2F0
b3IuZ2V0KCkpIC8vIEhhc2g6MHgzZTdjZDc2MgorICAgICwganNWYWx1ZUdpZ2FjYWdlQXV4aWxp
YXJ5U3BhY2UoIkpTVmFsdWUgR2lnYWNhZ2UgQXV4aWxpYXJ5IiwgKnRoaXMsIGF1eGlsaWFyeUhl
YXBDZWxsVHlwZSwganNWYWx1ZUdpZ2FjYWdlQWxsb2NhdG9yLmdldCgpKSAvLyBIYXNoOjB4MjQx
ZTk0NgorICAgICwgaW1tdXRhYmxlQnV0dGVyZmx5SlNWYWx1ZUdpZ2FjYWdlQXV4aWxpYXJ5U3Bh
Y2UoIkltbXV0YWJsZUJ1dHRlcmZseSBHaWdhY2FnZSBKU0NlbGxXaXRoSW5kZXhpbmdIZWFkZXIi
LCAqdGhpcywgaW1tdXRhYmxlQnV0dGVyZmx5SGVhcENlbGxUeXBlLCBqc1ZhbHVlR2lnYWNhZ2VB
bGxvY2F0b3IuZ2V0KCkpIC8vIEhhc2g6MHg3YTk0NTMwMAorICAgICwgY2VsbFNwYWNlKCJKU0Nl
bGwiLCAqdGhpcywgY2VsbEhlYXBDZWxsVHlwZSwgZmFzdE1hbGxvY0FsbG9jYXRvci5nZXQoKSkg
Ly8gSGFzaDoweGFkZmI1YTc5CisgICAgLCB2YXJpYWJsZVNpemVkQ2VsbFNwYWNlKCJWYXJpYWJs
ZSBTaXplZCBKU0NlbGwiLCAqdGhpcywgY2VsbEhlYXBDZWxsVHlwZSwgZmFzdE1hbGxvY0FsbG9j
YXRvci5nZXQoKSkgLy8gSGFzaDoweGJjZDc2OWNjCisgICAgLCBkZXN0cnVjdGlibGVPYmplY3RT
cGFjZSgiSlNEZXN0cnVjdGlibGVPYmplY3QiLCAqdGhpcywgZGVzdHJ1Y3RpYmxlT2JqZWN0SGVh
cENlbGxUeXBlLCBmYXN0TWFsbG9jQWxsb2NhdG9yLmdldCgpKSAvLyBIYXNoOjB4NGY1ZWQ3YTkK
KyAgICAsIGFycmF5U3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoKnRoaXMsIGNlbGxIZWFwQ2VsbFR5
cGUsIEpTQXJyYXkpCisgICAgLCBiaWdJbnRTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVCgqdGhpcywg
Y2VsbEhlYXBDZWxsVHlwZSwgSlNCaWdJbnQpCisgICAgLCBjYWxsZWVTcGFjZSBJU09fU1VCU1BB
Q0VfSU5JVCgqdGhpcywgY2VsbEhlYXBDZWxsVHlwZSwgSlNDYWxsZWUpCisgICAgLCBjbG9uZWRB
cmd1bWVudHNTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVCgqdGhpcywgY2VsbEhlYXBDZWxsVHlwZSwg
Q2xvbmVkQXJndW1lbnRzKQorICAgICwgY3VzdG9tR2V0dGVyU2V0dGVyU3BhY2UgSVNPX1NVQlNQ
QUNFX0lOSVQoKnRoaXMsIGNlbGxIZWFwQ2VsbFR5cGUsIEN1c3RvbUdldHRlclNldHRlcikKKyAg
ICAsIGRhdGVJbnN0YW5jZVNwYWNlIElTT19TVUJTUEFDRV9JTklUKCp0aGlzLCBkYXRlSW5zdGFu
Y2VIZWFwQ2VsbFR5cGUsIERhdGVJbnN0YW5jZSkKKyAgICAsIGRvbUF0dHJpYnV0ZUdldHRlclNl
dHRlclNwYWNlIElTT19TVUJTUEFDRV9JTklUKCp0aGlzLCBjZWxsSGVhcENlbGxUeXBlLCBET01B
dHRyaWJ1dGVHZXR0ZXJTZXR0ZXIpCisgICAgLCBleGNlcHRpb25TcGFjZSBJU09fU1VCU1BBQ0Vf
SU5JVCgqdGhpcywgZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZSwgRXhjZXB0aW9uKQorICAg
ICwgZXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZVNwYWNlIElTT19TVUJTUEFDRV9JTklUKCp0aGlz
LCBjZWxsSGVhcENlbGxUeXBlLCBFeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlKSAvLyBIYXNoOjB4
N2I3MzBiMjAKKyAgICAsIGZ1bmN0aW9uU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoKnRoaXMsIGNl
bGxIZWFwQ2VsbFR5cGUsIEpTRnVuY3Rpb24pIC8vIEhhc2g6MHg4MDBmY2E3MgorICAgICwgZ2V0
dGVyU2V0dGVyU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoKnRoaXMsIGNlbGxIZWFwQ2VsbFR5cGUs
IEdldHRlclNldHRlcikKKyAgICAsIGdsb2JhbExleGljYWxFbnZpcm9ubWVudFNwYWNlIElTT19T
VUJTUEFDRV9JTklUKCp0aGlzLCBnbG9iYWxMZXhpY2FsRW52aXJvbm1lbnRIZWFwQ2VsbFR5cGUs
IEpTR2xvYmFsTGV4aWNhbEVudmlyb25tZW50KQorICAgICwgaW50ZXJuYWxGdW5jdGlvblNwYWNl
IElTT19TVUJTUEFDRV9JTklUKCp0aGlzLCBjZWxsSGVhcENlbGxUeXBlLCBJbnRlcm5hbEZ1bmN0
aW9uKSAvLyBIYXNoOjB4Zjg0NWM0NjQKKyAgICAsIGpzUHJveHlTcGFjZSBJU09fU1VCU1BBQ0Vf
SU5JVCgqdGhpcywgY2VsbEhlYXBDZWxsVHlwZSwgSlNQcm94eSkKKyAgICAsIG5hdGl2ZUV4ZWN1
dGFibGVTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVCgqdGhpcywgZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBD
ZWxsVHlwZSwgTmF0aXZlRXhlY3V0YWJsZSkgLy8gSGFzaDoweDY3NTY3Zjk1CisgICAgLCBudW1i
ZXJPYmplY3RTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVCgqdGhpcywgY2VsbEhlYXBDZWxsVHlwZSwg
TnVtYmVyT2JqZWN0KQorICAgICwgcGxhaW5PYmplY3RTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVCgq
dGhpcywgY2VsbEhlYXBDZWxsVHlwZSwgSlNOb25GaW5hbE9iamVjdCkgLy8gTWFpbmx5IHVzZWQg
Zm9yIHByb3RvdHlwZXMuCisgICAgLCBwcm9taXNlU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoKnRo
aXMsIGNlbGxIZWFwQ2VsbFR5cGUsIEpTUHJvbWlzZSkKKyAgICAsIHByb3BlcnR5TmFtZUVudW1l
cmF0b3JTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVCgqdGhpcywgY2VsbEhlYXBDZWxsVHlwZSwgSlNQ
cm9wZXJ0eU5hbWVFbnVtZXJhdG9yKQorICAgICwgcHJvcGVydHlUYWJsZVNwYWNlIElTT19TVUJT
UEFDRV9JTklUKCp0aGlzLCBkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlLCBQcm9wZXJ0eVRh
YmxlKSAvLyBIYXNoOjB4YzZiYzlmMTIKKyAgICAsIHJlZ0V4cFNwYWNlIElTT19TVUJTUEFDRV9J
TklUKCp0aGlzLCBkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlLCBSZWdFeHApCisgICAgLCBy
ZWdFeHBPYmplY3RTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVCgqdGhpcywgY2VsbEhlYXBDZWxsVHlw
ZSwgUmVnRXhwT2JqZWN0KQorICAgICwgcm9wZVN0cmluZ1NwYWNlIElTT19TVUJTUEFDRV9JTklU
KCp0aGlzLCBzdHJpbmdIZWFwQ2VsbFR5cGUsIEpTUm9wZVN0cmluZykKKyAgICAsIHNjb3BlZEFy
Z3VtZW50c1NwYWNlIElTT19TVUJTUEFDRV9JTklUKCp0aGlzLCBjZWxsSGVhcENlbGxUeXBlLCBT
Y29wZWRBcmd1bWVudHMpCisgICAgLCBzcGFyc2VBcnJheVZhbHVlTWFwU3BhY2UgSVNPX1NVQlNQ
QUNFX0lOSVQoKnRoaXMsIGRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUsIFNwYXJzZUFycmF5
VmFsdWVNYXApCisgICAgLCBzdHJpbmdTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVCgqdGhpcywgc3Ry
aW5nSGVhcENlbGxUeXBlLCBKU1N0cmluZykgLy8gSGFzaDoweDkwY2Y3NThmCisgICAgLCBzdHJp
bmdPYmplY3RTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVCgqdGhpcywgY2VsbEhlYXBDZWxsVHlwZSwg
U3RyaW5nT2JqZWN0KQorICAgICwgc3RydWN0dXJlQ2hhaW5TcGFjZSBJU09fU1VCU1BBQ0VfSU5J
VCgqdGhpcywgY2VsbEhlYXBDZWxsVHlwZSwgU3RydWN0dXJlQ2hhaW4pCisgICAgLCBzdHJ1Y3R1
cmVSYXJlRGF0YVNwYWNlIElTT19TVUJTUEFDRV9JTklUKCp0aGlzLCBkZXN0cnVjdGlibGVDZWxs
SGVhcENlbGxUeXBlLCBTdHJ1Y3R1cmVSYXJlRGF0YSkgLy8gSGFzaDoweGFjYTRlNjJkCisgICAg
LCBzdHJ1Y3R1cmVTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVCgqdGhpcywgZGVzdHJ1Y3RpYmxlQ2Vs
bEhlYXBDZWxsVHlwZSwgU3RydWN0dXJlKSAvLyBIYXNoOjB4MWYxYmNkY2EKKyAgICAsIGJyYW5k
ZWRTdHJ1Y3R1cmVTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVCgqdGhpcywgZGVzdHJ1Y3RpYmxlQ2Vs
bEhlYXBDZWxsVHlwZSwgQnJhbmRlZFN0cnVjdHVyZSkKKyAgICAsIHN5bWJvbFRhYmxlU3BhY2Ug
SVNPX1NVQlNQQUNFX0lOSVQoKnRoaXMsIGRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUsIFN5
bWJvbFRhYmxlKSAvLyBIYXNoOjB4YzUyMTVhZmQKKyAgICAsIGV4ZWN1dGFibGVUb0NvZGVCbG9j
a0VkZ2VzV2l0aENvbnN0cmFpbnRzKGV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2VTcGFjZSkKKyAg
ICAsIGV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2VzV2l0aEZpbmFsaXplcnMoZXhlY3V0YWJsZVRv
Q29kZUJsb2NrRWRnZVNwYWNlKQorICAgICwgY29kZUJsb2NrU3BhY2UgSVNPX1NVQlNQQUNFX0lO
SVQoKnRoaXMsIGRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUsIENvZGVCbG9jaykgLy8gSGFz
aDoweDc3ZTY2ZWM5CisgICAgLCBmdW5jdGlvbkV4ZWN1dGFibGVTcGFjZSBJU09fU1VCU1BBQ0Vf
SU5JVCgqdGhpcywgZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZSwgRnVuY3Rpb25FeGVjdXRh
YmxlKSAvLyBIYXNoOjB4NWQxNThmMworICAgICwgcHJvZ3JhbUV4ZWN1dGFibGVTcGFjZSBJU09f
U1VCU1BBQ0VfSU5JVCgqdGhpcywgZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZSwgUHJvZ3Jh
bUV4ZWN1dGFibGUpIC8vIEhhc2g6MHg1MjdjNzdlNworICAgICwgdW5saW5rZWRGdW5jdGlvbkV4
ZWN1dGFibGVTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVCgqdGhpcywgZGVzdHJ1Y3RpYmxlQ2VsbEhl
YXBDZWxsVHlwZSwgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUpIC8vIEhhc2g6MHhmNmI4Mjhk
OQorCiB7CiAgICAgbV93b3JsZFN0YXRlLnN0b3JlKDApOwogCkBAIC01NzksMzEgKzc4MCwzMSBA
QCB2b2lkIEhlYXA6OmZpbmFsaXplVW5jb25kaXRpb25hbEZpbmFsaXplCiB7CiAgICAgVk0mIHZt
ID0gdGhpcy0+dm0oKTsKICAgICB2bS5idWlsdGluRXhlY3V0YWJsZXMoKS0+ZmluYWxpemVVbmNv
bmRpdGlvbmFsbHkoKTsKLSAgICBmaW5hbGl6ZU1hcmtlZFVuY29uZGl0aW9uYWxGaW5hbGl6ZXJz
PEZ1bmN0aW9uRXhlY3V0YWJsZT4odm0uZnVuY3Rpb25FeGVjdXRhYmxlU3BhY2Uuc3BhY2UpOwot
ICAgIGZpbmFsaXplTWFya2VkVW5jb25kaXRpb25hbEZpbmFsaXplcnM8U3ltYm9sVGFibGU+KHZt
LnN5bWJvbFRhYmxlU3BhY2UpOwotICAgIGZpbmFsaXplTWFya2VkVW5jb25kaXRpb25hbEZpbmFs
aXplcnM8RXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZT4odm0uZXhlY3V0YWJsZVRvQ29kZUJsb2Nr
RWRnZXNXaXRoRmluYWxpemVycyk7IC8vIFdlIHJ1biB0aGlzIGJlZm9yZSBDb2RlQmxvY2sncyB1
bmNvbmRpdGlvbmFsIGZpbmFsaXplciBzaW5jZSBDb2RlQmxvY2sgbG9va3MgYXQgdGhlIG93bmVy
IGV4ZWN1dGFibGUncyBpbnN0YWxsZWQgQ29kZUJsb2NrIGluIGl0cyBmaW5hbGl6ZVVuY29uZGl0
aW9uYWxseS4KLSAgICB2bS5mb3JFYWNoQ29kZUJsb2NrU3BhY2UoCisgICAgZmluYWxpemVNYXJr
ZWRVbmNvbmRpdGlvbmFsRmluYWxpemVyczxGdW5jdGlvbkV4ZWN1dGFibGU+KGZ1bmN0aW9uRXhl
Y3V0YWJsZVNwYWNlLnNwYWNlKTsKKyAgICBmaW5hbGl6ZU1hcmtlZFVuY29uZGl0aW9uYWxGaW5h
bGl6ZXJzPFN5bWJvbFRhYmxlPihzeW1ib2xUYWJsZVNwYWNlKTsKKyAgICBmaW5hbGl6ZU1hcmtl
ZFVuY29uZGl0aW9uYWxGaW5hbGl6ZXJzPEV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2U+KGV4ZWN1
dGFibGVUb0NvZGVCbG9ja0VkZ2VzV2l0aEZpbmFsaXplcnMpOyAvLyBXZSBydW4gdGhpcyBiZWZv
cmUgQ29kZUJsb2NrJ3MgdW5jb25kaXRpb25hbCBmaW5hbGl6ZXIgc2luY2UgQ29kZUJsb2NrIGxv
b2tzIGF0IHRoZSBvd25lciBleGVjdXRhYmxlJ3MgaW5zdGFsbGVkIENvZGVCbG9jayBpbiBpdHMg
ZmluYWxpemVVbmNvbmRpdGlvbmFsbHkuCisgICAgZm9yRWFjaENvZGVCbG9ja1NwYWNlKAogICAg
ICAgICBbJl0gKGF1dG8mIHNwYWNlKSB7CiAgICAgICAgICAgICB0aGlzLT5maW5hbGl6ZU1hcmtl
ZFVuY29uZGl0aW9uYWxGaW5hbGl6ZXJzPENvZGVCbG9jaz4oc3BhY2Uuc2V0KTsKICAgICAgICAg
fSk7Ci0gICAgZmluYWxpemVNYXJrZWRVbmNvbmRpdGlvbmFsRmluYWxpemVyczxTdHJ1Y3R1cmVS
YXJlRGF0YT4odm0uc3RydWN0dXJlUmFyZURhdGFTcGFjZSk7Ci0gICAgZmluYWxpemVNYXJrZWRV
bmNvbmRpdGlvbmFsRmluYWxpemVyczxVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZT4odm0udW5s
aW5rZWRGdW5jdGlvbkV4ZWN1dGFibGVTcGFjZS5zZXQpOwotICAgIGlmICh2bS5tX3dlYWtTZXRT
cGFjZSkKLSAgICAgICAgZmluYWxpemVNYXJrZWRVbmNvbmRpdGlvbmFsRmluYWxpemVyczxKU1dl
YWtTZXQ+KCp2bS5tX3dlYWtTZXRTcGFjZSk7Ci0gICAgaWYgKHZtLm1fd2Vha01hcFNwYWNlKQot
ICAgICAgICBmaW5hbGl6ZU1hcmtlZFVuY29uZGl0aW9uYWxGaW5hbGl6ZXJzPEpTV2Vha01hcD4o
KnZtLm1fd2Vha01hcFNwYWNlKTsKLSAgICBpZiAodm0ubV93ZWFrT2JqZWN0UmVmU3BhY2UpCi0g
ICAgICAgIGZpbmFsaXplTWFya2VkVW5jb25kaXRpb25hbEZpbmFsaXplcnM8SlNXZWFrT2JqZWN0
UmVmPigqdm0ubV93ZWFrT2JqZWN0UmVmU3BhY2UpOwotICAgIGlmICh2bS5tX2Vycm9ySW5zdGFu
Y2VTcGFjZSkKLSAgICAgICAgZmluYWxpemVNYXJrZWRVbmNvbmRpdGlvbmFsRmluYWxpemVyczxF
cnJvckluc3RhbmNlPigqdm0ubV9lcnJvckluc3RhbmNlU3BhY2UpOworICAgIGZpbmFsaXplTWFy
a2VkVW5jb25kaXRpb25hbEZpbmFsaXplcnM8U3RydWN0dXJlUmFyZURhdGE+KHN0cnVjdHVyZVJh
cmVEYXRhU3BhY2UpOworICAgIGZpbmFsaXplTWFya2VkVW5jb25kaXRpb25hbEZpbmFsaXplcnM8
VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU+KHVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlU3Bh
Y2Uuc2V0KTsKKyAgICBpZiAobV93ZWFrU2V0U3BhY2UpCisgICAgICAgIGZpbmFsaXplTWFya2Vk
VW5jb25kaXRpb25hbEZpbmFsaXplcnM8SlNXZWFrU2V0PigqbV93ZWFrU2V0U3BhY2UpOworICAg
IGlmIChtX3dlYWtNYXBTcGFjZSkKKyAgICAgICAgZmluYWxpemVNYXJrZWRVbmNvbmRpdGlvbmFs
RmluYWxpemVyczxKU1dlYWtNYXA+KCptX3dlYWtNYXBTcGFjZSk7CisgICAgaWYgKG1fd2Vha09i
amVjdFJlZlNwYWNlKQorICAgICAgICBmaW5hbGl6ZU1hcmtlZFVuY29uZGl0aW9uYWxGaW5hbGl6
ZXJzPEpTV2Vha09iamVjdFJlZj4oKm1fd2Vha09iamVjdFJlZlNwYWNlKTsKKyAgICBpZiAobV9l
cnJvckluc3RhbmNlU3BhY2UpCisgICAgICAgIGZpbmFsaXplTWFya2VkVW5jb25kaXRpb25hbEZp
bmFsaXplcnM8RXJyb3JJbnN0YW5jZT4oKm1fZXJyb3JJbnN0YW5jZVNwYWNlKTsKIAogICAgIC8v
IEZpbmFsaXphdGlvblJlZ2lzdHJpZXMgY3VycmVudGx5IHJlbHkgb24gc2VyaWFsIGZpbmFsaXph
dGlvbiBiZWNhdXNlIHRoZXkgY2FuIHBvc3QgdGFza3MgdG8gdGhlIGRlZmVycmVkV29ya1RpbWVy
LCB3aGljaCBub3JtYWxseSBleHBlY3RzIHRhc2tzIHRvIG9ubHkgYmUgcG9zdGVkIGJ5IHRoZSBB
UEkgbG9jayBob2xkZXIuCi0gICAgaWYgKHZtLm1fZmluYWxpemF0aW9uUmVnaXN0cnlTcGFjZSkK
LSAgICAgICAgZmluYWxpemVNYXJrZWRVbmNvbmRpdGlvbmFsRmluYWxpemVyczxKU0ZpbmFsaXph
dGlvblJlZ2lzdHJ5Pigqdm0ubV9maW5hbGl6YXRpb25SZWdpc3RyeVNwYWNlKTsKKyAgICBpZiAo
bV9maW5hbGl6YXRpb25SZWdpc3RyeVNwYWNlKQorICAgICAgICBmaW5hbGl6ZU1hcmtlZFVuY29u
ZGl0aW9uYWxGaW5hbGl6ZXJzPEpTRmluYWxpemF0aW9uUmVnaXN0cnk+KCptX2ZpbmFsaXphdGlv
blJlZ2lzdHJ5U3BhY2UpOwogCiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQotICAgIGlmICh2bS5t
X3dlYkFzc2VtYmx5Q29kZUJsb2NrU3BhY2UpCi0gICAgICAgIGZpbmFsaXplTWFya2VkVW5jb25k
aXRpb25hbEZpbmFsaXplcnM8SlNXZWJBc3NlbWJseUNvZGVCbG9jaz4oKnZtLm1fd2ViQXNzZW1i
bHlDb2RlQmxvY2tTcGFjZSk7CisgICAgaWYgKG1fd2ViQXNzZW1ibHlDb2RlQmxvY2tTcGFjZSkK
KyAgICAgICAgZmluYWxpemVNYXJrZWRVbmNvbmRpdGlvbmFsRmluYWxpemVyczxKU1dlYkFzc2Vt
Ymx5Q29kZUJsb2NrPigqbV93ZWJBc3NlbWJseUNvZGVCbG9ja1NwYWNlKTsKICNlbmRpZgogfQog
CkBAIC05MDUsNyArMTEwNiw3IEBAIHZvaWQgSGVhcDo6ZGVsZXRlQWxsQ29kZUJsb2NrcyhEZWxl
dGVBbGwKIAogICAgIGNvbXBsZXRlQWxsSklUUGxhbnMoKTsKIAotICAgIHZtLmZvckVhY2hTY3Jp
cHRFeGVjdXRhYmxlU3BhY2UoCisgICAgZm9yRWFjaFNjcmlwdEV4ZWN1dGFibGVTcGFjZSgKICAg
ICAgICAgWyZdIChhdXRvJiBzcGFjZUFuZFNldCkgewogICAgICAgICAgICAgSGVhcEl0ZXJhdGlv
blNjb3BlIGhlYXBJdGVyYXRpb25TY29wZSgqdGhpcyk7CiAgICAgICAgICAgICBhdXRvJiBzZXQg
PSBzcGFjZUFuZFNldC5zZXQ7CkBAIC05MjQsOCArMTEyNSw4IEBAIHZvaWQgSGVhcDo6ZGVsZXRl
QWxsQ29kZUJsb2NrcyhEZWxldGVBbGwKICAgICAgICAgLy8gcG9pbnRzIGludG8gYSBDb2RlQmxv
Y2sgdGhhdCBjb3VsZCBiZSBkZWFkLiBUaGUgSUMgd2lsbCBzdGlsbCBzdWNjZWVkIGJlY2F1c2UK
ICAgICAgICAgLy8gaXQgdXNlcyBhIGNhbGxlZSBjaGVjaywgYnV0IHRoZW4gaXQgd2lsbCBjYWxs
IGludG8gZGVhZCBjb2RlLgogICAgICAgICBIZWFwSXRlcmF0aW9uU2NvcGUgaGVhcEl0ZXJhdGlv
blNjb3BlKCp0aGlzKTsKLSAgICAgICAgaWYgKHZtLm1fd2ViQXNzZW1ibHlDb2RlQmxvY2tTcGFj
ZSkgewotICAgICAgICAgICAgdm0ubV93ZWJBc3NlbWJseUNvZGVCbG9ja1NwYWNlLT5mb3JFYWNo
TGl2ZUNlbGwoWyZdIChIZWFwQ2VsbCogY2VsbCwgSGVhcENlbGw6OktpbmQga2luZCkgeworICAg
ICAgICBpZiAobV93ZWJBc3NlbWJseUNvZGVCbG9ja1NwYWNlKSB7CisgICAgICAgICAgICBtX3dl
YkFzc2VtYmx5Q29kZUJsb2NrU3BhY2UtPmZvckVhY2hMaXZlQ2VsbChbJl0gKEhlYXBDZWxsKiBj
ZWxsLCBIZWFwQ2VsbDo6S2luZCBraW5kKSB7CiAgICAgICAgICAgICAgICAgQVNTRVJUX1VOVVNF
RChraW5kLCBraW5kID09IEhlYXBDZWxsOjpKU0NlbGwpOwogICAgICAgICAgICAgICAgIEpTV2Vi
QXNzZW1ibHlDb2RlQmxvY2sqIGNvZGVCbG9jayA9IHN0YXRpY19jYXN0PEpTV2ViQXNzZW1ibHlD
b2RlQmxvY2sqPihjZWxsKTsKICAgICAgICAgICAgICAgICBjb2RlQmxvY2stPmNsZWFySlNDYWxs
SUNzKHZtKTsKQEAgLTk0Niw3ICsxMTQ3LDcgQEAgdm9pZCBIZWFwOjpkZWxldGVBbGxVbmxpbmtl
ZENvZGVCbG9ja3MoRAogICAgIFJFTEVBU0VfQVNTRVJUKCFtX2NvbGxlY3Rpb25TY29wZSk7CiAK
ICAgICBIZWFwSXRlcmF0aW9uU2NvcGUgaGVhcEl0ZXJhdGlvblNjb3BlKCp0aGlzKTsKLSAgICB2
bS51bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZVNwYWNlLnNldC5mb3JFYWNoTGl2ZUNlbGwoCisg
ICAgdW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGVTcGFjZS5zZXQuZm9yRWFjaExpdmVDZWxsKAog
ICAgICAgICBbJl0gKEhlYXBDZWxsKiBjZWxsLCBIZWFwQ2VsbDo6S2luZCkgewogICAgICAgICAg
ICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSBzdGF0aWNfY2FzdDxV
bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSo+KGNlbGwpOwogICAgICAgICAgICAgZXhlY3V0YWJs
ZS0+Y2xlYXJDb2RlKHZtKTsKQEAgLTk1NSwxMCArMTE1NiwxMCBAQCB2b2lkIEhlYXA6OmRlbGV0
ZUFsbFVubGlua2VkQ29kZUJsb2NrcyhECiAKIHZvaWQgSGVhcDo6ZGVsZXRlVW5tYXJrZWRDb21w
aWxlZENvZGUoKQogewotICAgIHZtKCkuZm9yRWFjaFNjcmlwdEV4ZWN1dGFibGVTcGFjZShbXSAo
YXV0byYgc3BhY2UpIHsgc3BhY2Uuc3BhY2Uuc3dlZXAoKTsgfSk7CisgICAgZm9yRWFjaFNjcmlw
dEV4ZWN1dGFibGVTcGFjZShbXSAoYXV0byYgc3BhY2UpIHsgc3BhY2Uuc3BhY2Uuc3dlZXAzKCk7
IH0pOwogICAgIC8vIFN3ZWVwaW5nIG11c3Qgb2NjdXIgYmVmb3JlIGRlbGV0aW5nIHN0dWJzLCBv
dGhlcndpc2UgdGhlIHN0dWJzIG1pZ2h0IHN0aWxsIHRoaW5rIHRoZXkncmUgYWxpdmUgYXMgdGhl
eSBnZXQgZGVsZXRlZC4KICAgICAvLyBBbmQgQ29kZUJsb2NrIGRlc3RydWN0b3IgaXMgYXNzdW1p
bmcgdGhhdCBDb2RlQmxvY2sgZ2V0cyBkZXN0cm95ZWQgYmVmb3JlIFVubGlua2VkQ29kZUJsb2Nr
IGdldHMgZGVzdHJveWVkLgotICAgIHZtKCkuZm9yRWFjaENvZGVCbG9ja1NwYWNlKFtdIChhdXRv
JiBzcGFjZSkgeyBzcGFjZS5zcGFjZS5zd2VlcCgpOyB9KTsKKyAgICBmb3JFYWNoQ29kZUJsb2Nr
U3BhY2UoW10gKGF1dG8mIHNwYWNlKSB7IHNwYWNlLnNwYWNlLnN3ZWVwMygpOyB9KTsKICAgICBt
X2ppdFN0dWJSb3V0aW5lcy0+ZGVsZXRlVW5tYXJrZWRKZXR0aXNvbmVkU3R1YlJvdXRpbmVzKCk7
CiB9CiAKQEAgLTIxMDMsOCArMjMwNCw4IEBAIHZvaWQgSGVhcDo6c3dlZXBJbkZpbmFsaXplKCkK
ICAgICBtX29iamVjdFNwYWNlLnN3ZWVwUHJlY2lzZUFsbG9jYXRpb25zKCk7CiAjaWYgRU5BQkxF
KFdFQkFTU0VNQkxZKQogICAgIC8vIFdlIGhvbGQgb250byBhIGxvdCBvZiBtZW1vcnksIHNvIGl0
IG1ha2VzIGEgbG90IG9mIHNlbnNlIHRvIGJlIHN3ZXB0IGVhZ2VybHkuCi0gICAgaWYgKHZtKCku
bV93ZWJBc3NlbWJseU1lbW9yeVNwYWNlKQotICAgICAgICB2bSgpLm1fd2ViQXNzZW1ibHlNZW1v
cnlTcGFjZS0+c3dlZXAoKTsKKyAgICBpZiAobV93ZWJBc3NlbWJseU1lbW9yeVNwYWNlKQorICAg
ICAgICBtX3dlYkFzc2VtYmx5TWVtb3J5U3BhY2UtPnN3ZWVwMygpOwogI2VuZGlmCiB9CiAKQEAg
LTI4MDUsNyArMzAwNiw3IEBAIHZvaWQgSGVhcDo6YWRkQ29yZUNvbnN0cmFpbnRzKCkKICAgICAg
ICAgIk8iLCAiT3V0cHV0IiwKICAgICAgICAgTUFLRV9NQVJLSU5HX0NPTlNUUkFJTlRfRVhFQ1VU
T1JfUEFJUigoW10gKGF1dG8mIHZpc2l0b3IpIHsKICAgICAgICAgICAgIHVzaW5nIFZpc2l0b3Ig
PSBkZWNsdHlwZSh2aXNpdG9yKTsKLSAgICAgICAgICAgIFZNJiB2bSA9IHZpc2l0b3Iudm0oKTsK
KyAgICAgICAgICAgIEhlYXAqIGhlYXAgPSB2aXNpdG9yLmhlYXAoKTsKIAogICAgICAgICAgICAg
Ly8gVGhlIGB2aXNpdG9yMmAgYXJndW1lbnQgaXMgc3RyYW5nZWx5IG5hbWVkIGJlY2F1c2UgdGhl
IFdpbkNhaXJvIHBvcnQKICAgICAgICAgICAgIC8vIGdldHMgY29uZnVzZWQgIGFuZCB0aGlua3Mg
d2UncmUgdHJ5aW5nIHRvIGNhcHR1cmUgdGhlIG91dGVyIHZpc2l0b3IKQEAgLTI4MjQsMTEgKzMw
MjUsMTEgQEAgdm9pZCBIZWFwOjphZGRDb3JlQ29uc3RyYWludHMoKQogCiAgICAgICAgICAgICB7
CiAgICAgICAgICAgICAgICAgU2V0Um9vdE1hcmtSZWFzb25TY29wZSByb290U2NvcGUodmlzaXRv
ciwgUm9vdE1hcmtSZWFzb246OkV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2VzKTsKLSAgICAgICAg
ICAgICAgICBhZGQodm0uZXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZXNXaXRoQ29uc3RyYWludHMp
OworICAgICAgICAgICAgICAgIGFkZChoZWFwLT5leGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlc1dp
dGhDb25zdHJhaW50cyk7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAodm0ubV93ZWFr
TWFwU3BhY2UpIHsKKyAgICAgICAgICAgIGlmIChoZWFwLT5tX3dlYWtNYXBTcGFjZSkgewogICAg
ICAgICAgICAgICAgIFNldFJvb3RNYXJrUmVhc29uU2NvcGUgcm9vdFNjb3BlKHZpc2l0b3IsIFJv
b3RNYXJrUmVhc29uOjpXZWFrTWFwU3BhY2UpOwotICAgICAgICAgICAgICAgIGFkZCgqdm0ubV93
ZWFrTWFwU3BhY2UpOworICAgICAgICAgICAgICAgIGFkZCgqaGVhcC0+bV93ZWFrTWFwU3BhY2Up
OwogICAgICAgICAgICAgfQogICAgICAgICB9KSksCiAgICAgICAgIENvbnN0cmFpbnRWb2xhdGls
aXR5OjpHcmV5ZWRCeU1hcmtpbmcsCkBAIC0zMDYyLDQgKzMyNjMsMTM1IEBAIHZvaWQgSGVhcDo6
dmVyaWZ5R0MoKQogICAgIG1fdmVyaWZpZXJTbG90VmlzaXRvciA9IG51bGxwdHI7CiB9CiAKKyNk
ZWZpbmUgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKG5hbWUsIGhlYXBD
ZWxsVHlwZSwgdHlwZSkgXAorICAgIElzb1N1YnNwYWNlKiBIZWFwOjpuYW1lIyNTbG93KCkgXAor
ICAgIHsgXAorICAgICAgICBBU1NFUlQoIW1fIyNuYW1lKTsgXAorICAgICAgICBhdXRvIHNwYWNl
ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQoKnRoaXMsIGhlYXBD
ZWxsVHlwZSwgdHlwZSk7IFwKKyAgICAgICAgV1RGOjpzdG9yZVN0b3JlRmVuY2UoKTsgXAorICAg
ICAgICBtXyMjbmFtZSA9IFdURk1vdmUoc3BhY2UpOyBcCisgICAgICAgIHJldHVybiBtXyMjbmFt
ZS5nZXQoKTsgXAorICAgIH0KKworCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVS
X1NMT1coYXBpR2xvYmFsT2JqZWN0U3BhY2UsIGFwaUdsb2JhbE9iamVjdEhlYXBDZWxsVHlwZSwg
SlNBUElHbG9iYWxPYmplY3QpCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NM
T1coYXBpVmFsdWVXcmFwcGVyU3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUsIEpTQVBJVmFsdWVXcmFw
cGVyKQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGFycmF5QnVmZmVy
U3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUsIEpTQXJyYXlCdWZmZXIpCitEWU5BTUlDX0lTT19TVUJT
UEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coYXJyYXlJdGVyYXRvclNwYWNlLCBjZWxsSGVhcENlbGxU
eXBlLCBKU0FycmF5SXRlcmF0b3IpCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVS
X1NMT1coYXN5bmNHZW5lcmF0b3JTcGFjZSwgY2VsbEhlYXBDZWxsVHlwZSwgSlNBc3luY0dlbmVy
YXRvcikKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhiaWdJbnQ2NEFy
cmF5U3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUsIEpTQmlnSW50NjRBcnJheSkKK0RZTkFNSUNfSVNP
X1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhiaWdJbnRPYmplY3RTcGFjZSwgY2VsbEhlYXBD
ZWxsVHlwZSwgQmlnSW50T2JqZWN0KQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJF
Ul9TTE9XKGJpZ1VpbnQ2NEFycmF5U3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUsIEpTQmlnVWludDY0
QXJyYXkpCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coYm9vbGVhbk9i
amVjdFNwYWNlLCBjZWxsSGVhcENlbGxUeXBlLCBCb29sZWFuT2JqZWN0KQorRFlOQU1JQ19JU09f
U1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGJvdW5kRnVuY3Rpb25TcGFjZSwgY2VsbEhlYXBD
ZWxsVHlwZSwgSlNCb3VuZEZ1bmN0aW9uKSAvLyBIYXNoOjB4ZDc5MTZkNDEKK0RZTkFNSUNfSVNP
X1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhjYWxsYmFja0NvbnN0cnVjdG9yU3BhY2UsIGNh
bGxiYWNrQ29uc3RydWN0b3JIZWFwQ2VsbFR5cGUsIEpTQ2FsbGJhY2tDb25zdHJ1Y3RvcikKK0RZ
TkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhjYWxsYmFja0dsb2JhbE9iamVj
dFNwYWNlLCBjYWxsYmFja0dsb2JhbE9iamVjdEhlYXBDZWxsVHlwZSwgSlNDYWxsYmFja09iamVj
dDxKU0dsb2JhbE9iamVjdD4pCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NM
T1coY2FsbGJhY2tGdW5jdGlvblNwYWNlLCBjZWxsSGVhcENlbGxUeXBlLCBKU0NhbGxiYWNrRnVu
Y3Rpb24pIC8vIEhhc2g6MHhlNzY0OGViYworRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01F
TUJFUl9TTE9XKGNhbGxiYWNrT2JqZWN0U3BhY2UsIGNhbGxiYWNrT2JqZWN0SGVhcENlbGxUeXBl
LCBKU0NhbGxiYWNrT2JqZWN0PEpTTm9uRmluYWxPYmplY3Q+KQorRFlOQU1JQ19JU09fU1VCU1BB
Q0VfREVGSU5FX01FTUJFUl9TTE9XKGN1c3RvbUdldHRlckZ1bmN0aW9uU3BhY2UsIGN1c3RvbUdl
dHRlckZ1bmN0aW9uSGVhcENlbGxUeXBlLCBKU0N1c3RvbUdldHRlckZ1bmN0aW9uKQorRFlOQU1J
Q19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGN1c3RvbVNldHRlckZ1bmN0aW9uU3Bh
Y2UsIGN1c3RvbVNldHRlckZ1bmN0aW9uSGVhcENlbGxUeXBlLCBKU0N1c3RvbVNldHRlckZ1bmN0
aW9uKQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGRhdGFWaWV3U3Bh
Y2UsIGNlbGxIZWFwQ2VsbFR5cGUsIEpTRGF0YVZpZXcpCitEWU5BTUlDX0lTT19TVUJTUEFDRV9E
RUZJTkVfTUVNQkVSX1NMT1coZGVidWdnZXJTY29wZVNwYWNlLCBjZWxsSGVhcENlbGxUeXBlLCBE
ZWJ1Z2dlclNjb3BlKQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGVy
cm9ySW5zdGFuY2VTcGFjZSwgZXJyb3JJbnN0YW5jZUhlYXBDZWxsVHlwZSwgRXJyb3JJbnN0YW5j
ZSkgLy8gSGFzaDoweDNmNDBkNGEKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJf
U0xPVyhmbG9hdDMyQXJyYXlTcGFjZSwgY2VsbEhlYXBDZWxsVHlwZSwgSlNGbG9hdDMyQXJyYXkp
CitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coZmxvYXQ2NEFycmF5U3Bh
Y2UsIGNlbGxIZWFwQ2VsbFR5cGUsIEpTRmxvYXQ2NEFycmF5KQorRFlOQU1JQ19JU09fU1VCU1BB
Q0VfREVGSU5FX01FTUJFUl9TTE9XKGZ1bmN0aW9uUmFyZURhdGFTcGFjZSwgZGVzdHJ1Y3RpYmxl
Q2VsbEhlYXBDZWxsVHlwZSwgRnVuY3Rpb25SYXJlRGF0YSkKK0RZTkFNSUNfSVNPX1NVQlNQQUNF
X0RFRklORV9NRU1CRVJfU0xPVyhnZW5lcmF0b3JTcGFjZSwgY2VsbEhlYXBDZWxsVHlwZSwgSlNH
ZW5lcmF0b3IpCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coZ2xvYmFs
T2JqZWN0U3BhY2UsIGdsb2JhbE9iamVjdEhlYXBDZWxsVHlwZSwgSlNHbG9iYWxPYmplY3QpCitE
WU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coaW5qZWN0ZWRTY3JpcHRIb3N0
U3BhY2UsIGluamVjdGVkU2NyaXB0SG9zdFNwYWNlSGVhcENlbGxUeXBlLCBJbnNwZWN0b3I6OkpT
SW5qZWN0ZWRTY3JpcHRIb3N0KQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9T
TE9XKGludDhBcnJheVNwYWNlLCBjZWxsSGVhcENlbGxUeXBlLCBKU0ludDhBcnJheSkKK0RZTkFN
SUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhpbnQxNkFycmF5U3BhY2UsIGNlbGxI
ZWFwQ2VsbFR5cGUsIEpTSW50MTZBcnJheSkKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9N
RU1CRVJfU0xPVyhpbnQzMkFycmF5U3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUsIEpTSW50MzJBcnJh
eSkKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhqYXZhU2NyaXB0Q2Fs
bEZyYW1lU3BhY2UsIGphdmFTY3JpcHRDYWxsRnJhbWVIZWFwQ2VsbFR5cGUsIEluc3BlY3Rvcjo6
SlNKYXZhU2NyaXB0Q2FsbEZyYW1lKQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJF
Ul9TTE9XKGpzTW9kdWxlUmVjb3JkU3BhY2UsIGpzTW9kdWxlUmVjb3JkSGVhcENlbGxUeXBlLCBK
U01vZHVsZVJlY29yZCkKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyht
YXBCdWNrZXRTcGFjZSwgY2VsbEhlYXBDZWxsVHlwZSwgSlNNYXA6OkJ1Y2tldFR5cGUpCitEWU5B
TUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1cobWFwSXRlcmF0b3JTcGFjZSwgY2Vs
bEhlYXBDZWxsVHlwZSwgSlNNYXBJdGVyYXRvcikKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklO
RV9NRU1CRVJfU0xPVyhtYXBTcGFjZSwgY2VsbEhlYXBDZWxsVHlwZSwgSlNNYXApCitEWU5BTUlD
X0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1cobW9kdWxlTmFtZXNwYWNlT2JqZWN0U3Bh
Y2UsIG1vZHVsZU5hbWVzcGFjZU9iamVjdEhlYXBDZWxsVHlwZSwgSlNNb2R1bGVOYW1lc3BhY2VP
YmplY3QpCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1cobmF0aXZlU3Rk
RnVuY3Rpb25TcGFjZSwgbmF0aXZlU3RkRnVuY3Rpb25IZWFwQ2VsbFR5cGUsIEpTTmF0aXZlU3Rk
RnVuY3Rpb24pIC8vIEhhc2g6MHg3MGVkNjFlNAorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5F
X01FTUJFUl9TTE9XKHByb3h5T2JqZWN0U3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUsIFByb3h5T2Jq
ZWN0KQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHByb3h5UmV2b2tl
U3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUsIFByb3h5UmV2b2tlKSAvLyBIYXNoOjB4YjUwNmE5MzkK
K0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhzY29wZWRBcmd1bWVudHNU
YWJsZVNwYWNlLCBkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlLCBTY29wZWRBcmd1bWVudHNU
YWJsZSkKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhzY3JpcHRGZXRj
aFBhcmFtZXRlcnNTcGFjZSwgZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZSwgSlNTY3JpcHRG
ZXRjaFBhcmFtZXRlcnMpCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1co
c2NyaXB0RmV0Y2hlclNwYWNlLCBkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlLCBKU1Njcmlw
dEZldGNoZXIpCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coc2V0QnVj
a2V0U3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUsIEpTU2V0OjpCdWNrZXRUeXBlKQorRFlOQU1JQ19J
U09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHNldEl0ZXJhdG9yU3BhY2UsIGNlbGxIZWFw
Q2VsbFR5cGUsIEpTU2V0SXRlcmF0b3IpCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVN
QkVSX1NMT1coc2V0U3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUsIEpTU2V0KQorRFlOQU1JQ19JU09f
U1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHNoYWRvd1JlYWxtU3BhY2UsIGNlbGxIZWFwQ2Vs
bFR5cGUsIFNoYWRvd1JlYWxtT2JqZWN0KQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01F
TUJFUl9TTE9XKHN0cmljdEV2YWxBY3RpdmF0aW9uU3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUsIFN0
cmljdEV2YWxBY3RpdmF0aW9uKQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9T
TE9XKHN0cmluZ0l0ZXJhdG9yU3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUsIEpTU3RyaW5nSXRlcmF0
b3IpCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coc291cmNlQ29kZVNw
YWNlLCBkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlLCBKU1NvdXJjZUNvZGUpCitEWU5BTUlD
X0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coc3ltYm9sU3BhY2UsIGRlc3RydWN0aWJs
ZUNlbGxIZWFwQ2VsbFR5cGUsIFN5bWJvbCkKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9N
RU1CRVJfU0xPVyhzeW1ib2xPYmplY3RTcGFjZSwgY2VsbEhlYXBDZWxsVHlwZSwgU3ltYm9sT2Jq
ZWN0KQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHRlbXBsYXRlT2Jq
ZWN0RGVzY3JpcHRvclNwYWNlLCBkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlLCBKU1RlbXBs
YXRlT2JqZWN0RGVzY3JpcHRvcikKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJf
U0xPVyh0ZW1wb3JhbENhbGVuZGFyU3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUsIFRlbXBvcmFsQ2Fs
ZW5kYXIpCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1codGVtcG9yYWxE
dXJhdGlvblNwYWNlLCBjZWxsSGVhcENlbGxUeXBlLCBUZW1wb3JhbER1cmF0aW9uKQorRFlOQU1J
Q19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHRlbXBvcmFsSW5zdGFudFNwYWNlLCBj
ZWxsSGVhcENlbGxUeXBlLCBUZW1wb3JhbEluc3RhbnQpCitEWU5BTUlDX0lTT19TVUJTUEFDRV9E
RUZJTkVfTUVNQkVSX1NMT1codGVtcG9yYWxQbGFpblRpbWVTcGFjZSwgY2VsbEhlYXBDZWxsVHlw
ZSwgVGVtcG9yYWxQbGFpblRpbWUpCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVS
X1NMT1codGVtcG9yYWxUaW1lWm9uZVNwYWNlLCBjZWxsSGVhcENlbGxUeXBlLCBUZW1wb3JhbFRp
bWVab25lKQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHVpbnQ4QXJy
YXlTcGFjZSwgY2VsbEhlYXBDZWxsVHlwZSwgSlNVaW50OEFycmF5KQorRFlOQU1JQ19JU09fU1VC
U1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHVpbnQ4Q2xhbXBlZEFycmF5U3BhY2UsIGNlbGxIZWFw
Q2VsbFR5cGUsIEpTVWludDhDbGFtcGVkQXJyYXkpCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJ
TkVfTUVNQkVSX1NMT1codWludDE2QXJyYXlTcGFjZSwgY2VsbEhlYXBDZWxsVHlwZSwgSlNVaW50
MTZBcnJheSkKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh1aW50MzJB
cnJheVNwYWNlLCBjZWxsSGVhcENlbGxUeXBlLCBKU1VpbnQzMkFycmF5KQorRFlOQU1JQ19JU09f
U1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHVubGlua2VkRXZhbENvZGVCbG9ja1NwYWNlLCBk
ZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlLCBVbmxpbmtlZEV2YWxDb2RlQmxvY2spCitEWU5B
TUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1codW5saW5rZWRGdW5jdGlvbkNvZGVC
bG9ja1NwYWNlLCBkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlLCBVbmxpbmtlZEZ1bmN0aW9u
Q29kZUJsb2NrKQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHVubGlu
a2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9ja1NwYWNlLCBkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxU
eXBlLCBVbmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2spCitEWU5BTUlDX0lTT19TVUJTUEFD
RV9ERUZJTkVfTUVNQkVSX1NMT1codW5saW5rZWRQcm9ncmFtQ29kZUJsb2NrU3BhY2UsIGRlc3Ry
dWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUsIFVubGlua2VkUHJvZ3JhbUNvZGVCbG9jaykKK0RZTkFN
SUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh3ZWFrTWFwU3BhY2UsIHdlYWtNYXBI
ZWFwQ2VsbFR5cGUsIEpTV2Vha01hcCkgLy8gSGFzaDoweDY2MmIxMmEzCitEWU5BTUlDX0lTT19T
VUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1cod2Vha1NldFNwYWNlLCB3ZWFrU2V0SGVhcENlbGxU
eXBlLCBKU1dlYWtTZXQpIC8vIEhhc2g6MHg0Yzc4MWIzMAorRFlOQU1JQ19JU09fU1VCU1BBQ0Vf
REVGSU5FX01FTUJFUl9TTE9XKHdlYWtPYmplY3RSZWZTcGFjZSwgY2VsbEhlYXBDZWxsVHlwZSwg
SlNXZWFrT2JqZWN0UmVmKSAvLyBIYXNoOjB4OGVjNjhmMWYKK0RZTkFNSUNfSVNPX1NVQlNQQUNF
X0RFRklORV9NRU1CRVJfU0xPVyh3aXRoU2NvcGVTcGFjZSwgY2VsbEhlYXBDZWxsVHlwZSwgSlNX
aXRoU2NvcGUpCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coZmluYWxp
emF0aW9uUmVnaXN0cnlTcGFjZSwgZmluYWxpemF0aW9uUmVnaXN0cnlDZWxsVHlwZSwgSlNGaW5h
bGl6YXRpb25SZWdpc3RyeSkKKyNpZiBKU0NfT0JKQ19BUElfRU5BQkxFRAorRFlOQU1JQ19JU09f
U1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGFwaVdyYXBwZXJPYmplY3RTcGFjZSwgYXBpV3Jh
cHBlck9iamVjdEhlYXBDZWxsVHlwZSwgSlNDYWxsYmFja09iamVjdDxKU0FQSVdyYXBwZXJPYmpl
Y3Q+KQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKG9iakNDYWxsYmFj
a0Z1bmN0aW9uU3BhY2UsIG9iakNDYWxsYmFja0Z1bmN0aW9uSGVhcENlbGxUeXBlLCBPYmpDQ2Fs
bGJhY2tGdW5jdGlvbikgLy8gSGFzaDoweDEwZjYxMGI4CisjZW5kaWYKKyNpZmRlZiBKU0NfR0xJ
Ql9BUElfRU5BQkxFRAorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGFw
aVdyYXBwZXJPYmplY3RTcGFjZSwgYXBpV3JhcHBlck9iamVjdEhlYXBDZWxsVHlwZSwgSlNDYWxs
YmFja09iamVjdDxKU0FQSVdyYXBwZXJPYmplY3Q+KQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVG
SU5FX01FTUJFUl9TTE9XKGpzY0NhbGxiYWNrRnVuY3Rpb25TcGFjZSwganNjQ2FsbGJhY2tGdW5j
dGlvbkhlYXBDZWxsVHlwZSwgSlNDQ2FsbGJhY2tGdW5jdGlvbikKK0RZTkFNSUNfSVNPX1NVQlNQ
QUNFX0RFRklORV9NRU1CRVJfU0xPVyhjYWxsYmFja0FQSVdyYXBwZXJHbG9iYWxPYmplY3RTcGFj
ZSwgY2FsbGJhY2tBUElXcmFwcGVyR2xvYmFsT2JqZWN0SGVhcENlbGxUeXBlLCBKU0NhbGxiYWNr
T2JqZWN0PEpTQVBJV3JhcHBlckdsb2JhbE9iamVjdD4pCisjZW5kaWYKK0RZTkFNSUNfSVNPX1NV
QlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhpbnRsQ29sbGF0b3JTcGFjZSwgaW50bENvbGxhdG9y
SGVhcENlbGxUeXBlLCBJbnRsQ29sbGF0b3IpCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVf
TUVNQkVSX1NMT1coaW50bERhdGVUaW1lRm9ybWF0U3BhY2UsIGludGxEYXRlVGltZUZvcm1hdEhl
YXBDZWxsVHlwZSwgSW50bERhdGVUaW1lRm9ybWF0KQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVG
SU5FX01FTUJFUl9TTE9XKGludGxEaXNwbGF5TmFtZXNTcGFjZSwgaW50bERpc3BsYXlOYW1lc0hl
YXBDZWxsVHlwZSwgSW50bERpc3BsYXlOYW1lcykKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklO
RV9NRU1CRVJfU0xPVyhpbnRsTGlzdEZvcm1hdFNwYWNlLCBpbnRsTGlzdEZvcm1hdEhlYXBDZWxs
VHlwZSwgSW50bExpc3RGb3JtYXQpCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVS
X1NMT1coaW50bExvY2FsZVNwYWNlLCBpbnRsTG9jYWxlSGVhcENlbGxUeXBlLCBJbnRsTG9jYWxl
KQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGludGxOdW1iZXJGb3Jt
YXRTcGFjZSwgaW50bE51bWJlckZvcm1hdEhlYXBDZWxsVHlwZSwgSW50bE51bWJlckZvcm1hdCkK
K0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhpbnRsUGx1cmFsUnVsZXNT
cGFjZSwgaW50bFBsdXJhbFJ1bGVzSGVhcENlbGxUeXBlLCBJbnRsUGx1cmFsUnVsZXMpCitEWU5B
TUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coaW50bFJlbGF0aXZlVGltZUZvcm1h
dFNwYWNlLCBpbnRsUmVsYXRpdmVUaW1lRm9ybWF0SGVhcENlbGxUeXBlLCBJbnRsUmVsYXRpdmVU
aW1lRm9ybWF0KQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGludGxT
ZWdtZW50SXRlcmF0b3JTcGFjZSwgaW50bFNlZ21lbnRJdGVyYXRvckhlYXBDZWxsVHlwZSwgSW50
bFNlZ21lbnRJdGVyYXRvcikKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xP
VyhpbnRsU2VnbWVudGVyU3BhY2UsIGludGxTZWdtZW50ZXJIZWFwQ2VsbFR5cGUsIEludGxTZWdt
ZW50ZXIpCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coaW50bFNlZ21l
bnRzU3BhY2UsIGludGxTZWdtZW50c0hlYXBDZWxsVHlwZSwgSW50bFNlZ21lbnRzKQorI2lmIEVO
QUJMRShXRUJBU1NFTUJMWSkKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xP
Vyhqc1RvV2FzbUlDQ2FsbGVlU3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUsIEpTVG9XYXNtSUNDYWxs
ZWUpCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1cod2ViQXNzZW1ibHlD
b2RlQmxvY2tTcGFjZSwgd2ViQXNzZW1ibHlDb2RlQmxvY2tIZWFwQ2VsbFR5cGUsIEpTV2ViQXNz
ZW1ibHlDb2RlQmxvY2spIC8vIEhhc2g6MHg5YWQ5OTVjZAorRFlOQU1JQ19JU09fU1VCU1BBQ0Vf
REVGSU5FX01FTUJFUl9TTE9XKHdlYkFzc2VtYmx5RXhjZXB0aW9uU3BhY2UsIHdlYkFzc2VtYmx5
RXhjZXB0aW9uSGVhcENlbGxUeXBlLCBKU1dlYkFzc2VtYmx5RXhjZXB0aW9uKQorRFlOQU1JQ19J
U09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHdlYkFzc2VtYmx5RnVuY3Rpb25TcGFjZSwg
d2ViQXNzZW1ibHlGdW5jdGlvbkhlYXBDZWxsVHlwZSwgV2ViQXNzZW1ibHlGdW5jdGlvbikgLy8g
SGFzaDoweDhiN2MzMmRiCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1co
d2ViQXNzZW1ibHlHbG9iYWxTcGFjZSwgd2ViQXNzZW1ibHlHbG9iYWxIZWFwQ2VsbFR5cGUsIEpT
V2ViQXNzZW1ibHlHbG9iYWwpCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NM
T1cod2ViQXNzZW1ibHlJbnN0YW5jZVNwYWNlLCB3ZWJBc3NlbWJseUluc3RhbmNlSGVhcENlbGxU
eXBlLCBKU1dlYkFzc2VtYmx5SW5zdGFuY2UpCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVf
TUVNQkVSX1NMT1cod2ViQXNzZW1ibHlNZW1vcnlTcGFjZSwgd2ViQXNzZW1ibHlNZW1vcnlIZWFw
Q2VsbFR5cGUsIEpTV2ViQXNzZW1ibHlNZW1vcnkpCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJ
TkVfTUVNQkVSX1NMT1cod2ViQXNzZW1ibHlNb2R1bGVTcGFjZSwgd2ViQXNzZW1ibHlNb2R1bGVI
ZWFwQ2VsbFR5cGUsIEpTV2ViQXNzZW1ibHlNb2R1bGUpCitEWU5BTUlDX0lTT19TVUJTUEFDRV9E
RUZJTkVfTUVNQkVSX1NMT1cod2ViQXNzZW1ibHlNb2R1bGVSZWNvcmRTcGFjZSwgd2ViQXNzZW1i
bHlNb2R1bGVSZWNvcmRIZWFwQ2VsbFR5cGUsIFdlYkFzc2VtYmx5TW9kdWxlUmVjb3JkKQorRFlO
QU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHdlYkFzc2VtYmx5VGFibGVTcGFj
ZSwgd2ViQXNzZW1ibHlUYWJsZUhlYXBDZWxsVHlwZSwgSlNXZWJBc3NlbWJseVRhYmxlKQorRFlO
QU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHdlYkFzc2VtYmx5VGFnU3BhY2Us
IHdlYkFzc2VtYmx5VGFnSGVhcENlbGxUeXBlLCBKU1dlYkFzc2VtYmx5VGFnKQorRFlOQU1JQ19J
U09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHdlYkFzc2VtYmx5V3JhcHBlckZ1bmN0aW9u
U3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUsIFdlYkFzc2VtYmx5V3JhcHBlckZ1bmN0aW9uKSAvLyBI
YXNoOjB4ZDRhNWZmMDEKKyNlbmRpZgorCisjdW5kZWYgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVG
SU5FX01FTUJFUl9TTE9XCisKKyNkZWZpbmUgRFlOQU1JQ19TUEFDRV9BTkRfU0VUX0RFRklORV9N
RU1CRVJfU0xPVyhuYW1lLCBoZWFwQ2VsbFR5cGUsIHR5cGUpIFwKKyAgICBJc29TdWJzcGFjZSog
SGVhcDo6bmFtZSMjU2xvdygpIFwKKyAgICB7IFwKKyAgICAgICAgQVNTRVJUKCFtXyMjbmFtZSk7
IFwKKyAgICAgICAgYXV0byBzcGFjZSA9IG1ha2VVbmlxdWU8U3BhY2VBbmRTZXQ+IElTT19TVUJT
UEFDRV9JTklUKCp0aGlzLCBoZWFwQ2VsbFR5cGUsIHR5cGUpOyBcCisgICAgICAgIFdURjo6c3Rv
cmVTdG9yZUZlbmNlKCk7IFwKKyAgICAgICAgbV8jI25hbWUgPSBXVEZNb3ZlKHNwYWNlKTsgXAor
ICAgICAgICByZXR1cm4gJm1fIyNuYW1lLT5zcGFjZTsgXAorICAgIH0KKworRFlOQU1JQ19TUEFD
RV9BTkRfU0VUX0RFRklORV9NRU1CRVJfU0xPVyhldmFsRXhlY3V0YWJsZVNwYWNlLCBkZXN0cnVj
dGlibGVDZWxsSGVhcENlbGxUeXBlLCBFdmFsRXhlY3V0YWJsZSkgLy8gSGFzaDoweDk1OGUzZTlk
CitEWU5BTUlDX1NQQUNFX0FORF9TRVRfREVGSU5FX01FTUJFUl9TTE9XKG1vZHVsZVByb2dyYW1F
eGVjdXRhYmxlU3BhY2UsIGRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUsIE1vZHVsZVByb2dy
YW1FeGVjdXRhYmxlKSAvLyBIYXNoOjB4NjUwNmZhM2MKKworI3VuZGVmIERZTkFNSUNfU1BBQ0Vf
QU5EX1NFVF9ERUZJTkVfTUVNQkVSX1NMT1cKKwogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oCShyZXZpc2lvbiAyODYwNDMpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgJKHdvcmtpbmcgY29weSkKQEAgLTI1LDYgKzI1LDcgQEAK
ICNpbmNsdWRlICJDZWxsU3RhdGUuaCIKICNpbmNsdWRlICJDb2xsZWN0aW9uU2NvcGUuaCIKICNp
bmNsdWRlICJDb2xsZWN0b3JQaGFzZS5oIgorI2luY2x1ZGUgIkNvbXBsZXRlU3Vic3BhY2UuaCIK
ICNpbmNsdWRlICJEZWxldGVBbGxDb2RlRWZmb3J0LmgiCiAjaW5jbHVkZSAiR0NDb25kdWN0b3Iu
aCIKICNpbmNsdWRlICJHQ0luY29taW5nUmVmQ291bnRlZFNldC5oIgpAQCAtMzMsNiArMzQsMTEg
QEAKICNpbmNsdWRlICJIYW5kbGVTZXQuaCIKICNpbmNsdWRlICJIZWFwRmluYWxpemVyQ2FsbGJh
Y2suaCIKICNpbmNsdWRlICJIZWFwT2JzZXJ2ZXIuaCIKKyNpbmNsdWRlICJJc29DZWxsU2V0Lmgi
CisjaW5jbHVkZSAiSXNvSGVhcENlbGxUeXBlLmgiCisjaW5jbHVkZSAiSXNvSW5saW5lZEhlYXBD
ZWxsVHlwZS5oIgorI2luY2x1ZGUgIklzb1N1YnNwYWNlLmgiCisjaW5jbHVkZSAiSlNEZXN0cnVj
dGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuaCIKICNpbmNsdWRlICJNYXJrZWRCbG9jay5oIgogI2lu
Y2x1ZGUgIk1hcmtlZFNwYWNlLmgiCiAjaW5jbHVkZSAiTXV0YXRvclN0YXRlLmgiCkBAIC01OCw5
ICs2NCwxMSBAQCBjbGFzcyBDb2xsZWN0aW5nU2NvcGU7CiBjbGFzcyBDb25zZXJ2YXRpdmVSb290
czsKIGNsYXNzIEdDRGVmZXJyYWxDb250ZXh0OwogY2xhc3MgRWRlbkdDQWN0aXZpdHlDYWxsYmFj
azsKK2NsYXNzIEZhc3RNYWxsb2NBbGlnbmVkTWVtb3J5QWxsb2NhdG9yOwogY2xhc3MgRnVsbEdD
QWN0aXZpdHlDYWxsYmFjazsKIGNsYXNzIEdDQWN0aXZpdHlDYWxsYmFjazsKIGNsYXNzIEdDQXdh
cmVKSVRTdHViUm91dGluZTsKK2NsYXNzIEdpZ2FjYWdlQWxpZ25lZE1lbW9yeUFsbG9jYXRvcjsK
IGNsYXNzIEhlYXA7CiBjbGFzcyBIZWFwUHJvZmlsZXI7CiBjbGFzcyBIZWFwVmVyaWZpZXI7CkBA
IC02OSw4ICs3Nyw5IEBAIGNsYXNzIEpJVFN0dWJSb3V0aW5lOwogY2xhc3MgSklUU3R1YlJvdXRp
bmVTZXQ7CiBjbGFzcyBKU0NlbGw7CiBjbGFzcyBKU0ltbXV0YWJsZUJ1dHRlcmZseTsKK2NsYXNz
IEpTU3RyaW5nOwogY2xhc3MgSlNWYWx1ZTsKLWNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsK
Ky8vY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOyAvLyBtbGFtCiBjbGFzcyBNYWNoaW5lVGhy
ZWFkczsKIGNsYXNzIE1hcmtTdGFja0FycmF5OwogY2xhc3MgTWFya1N0YWNrTWVyZ2luZ0NvbnN0
cmFpbnQ7CkBAIC03MjksNiArNzM4LDMxOCBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9wYXJhbGxl
bE1hcmtlcnNTaG91bGRFeGl0IHsgZmFsc2UgfTsKICAgICBMb2NrIG1fY29sbGVjdENvbnRpbnVv
dXNseUxvY2s7CiAgICAgQ29uZGl0aW9uIG1fY29sbGVjdENvbnRpbnVvdXNseUNvbmRpdGlvbjsK
KworcHVibGljOgorICAgIC8vIEhlYXBDZWxsVHlwZXMKKyAgICBIZWFwQ2VsbFR5cGUgYXV4aWxp
YXJ5SGVhcENlbGxUeXBlOworICAgIEhlYXBDZWxsVHlwZSBpbW11dGFibGVCdXR0ZXJmbHlIZWFw
Q2VsbFR5cGU7CisgICAgSGVhcENlbGxUeXBlIGNlbGxIZWFwQ2VsbFR5cGU7CisgICAgSGVhcENl
bGxUeXBlIGRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGU7CisgICAgSXNvSGVhcENlbGxUeXBl
IGFwaUdsb2JhbE9iamVjdEhlYXBDZWxsVHlwZTsKKyAgICBJc29IZWFwQ2VsbFR5cGUgY2FsbGJh
Y2tDb25zdHJ1Y3RvckhlYXBDZWxsVHlwZTsKKyAgICBJc29IZWFwQ2VsbFR5cGUgY2FsbGJhY2tH
bG9iYWxPYmplY3RIZWFwQ2VsbFR5cGU7CisgICAgSXNvSGVhcENlbGxUeXBlIGNhbGxiYWNrT2Jq
ZWN0SGVhcENlbGxUeXBlOworICAgIElzb0hlYXBDZWxsVHlwZSBjdXN0b21HZXR0ZXJGdW5jdGlv
bkhlYXBDZWxsVHlwZTsKKyAgICBJc29IZWFwQ2VsbFR5cGUgY3VzdG9tU2V0dGVyRnVuY3Rpb25I
ZWFwQ2VsbFR5cGU7CisgICAgSXNvSGVhcENlbGxUeXBlIGRhdGVJbnN0YW5jZUhlYXBDZWxsVHlw
ZTsKKyAgICBJc29IZWFwQ2VsbFR5cGUgZXJyb3JJbnN0YW5jZUhlYXBDZWxsVHlwZTsKKyAgICBJ
c29IZWFwQ2VsbFR5cGUgZmluYWxpemF0aW9uUmVnaXN0cnlDZWxsVHlwZTsKKyAgICBJc29IZWFw
Q2VsbFR5cGUgZ2xvYmFsTGV4aWNhbEVudmlyb25tZW50SGVhcENlbGxUeXBlOworICAgIElzb0hl
YXBDZWxsVHlwZSBnbG9iYWxPYmplY3RIZWFwQ2VsbFR5cGU7CisgICAgSXNvSGVhcENlbGxUeXBl
IGluamVjdGVkU2NyaXB0SG9zdFNwYWNlSGVhcENlbGxUeXBlOworICAgIElzb0hlYXBDZWxsVHlw
ZSBqYXZhU2NyaXB0Q2FsbEZyYW1lSGVhcENlbGxUeXBlOworICAgIElzb0hlYXBDZWxsVHlwZSBq
c01vZHVsZVJlY29yZEhlYXBDZWxsVHlwZTsKKyAgICBJc29IZWFwQ2VsbFR5cGUgbW9kdWxlTmFt
ZXNwYWNlT2JqZWN0SGVhcENlbGxUeXBlOworICAgIElzb0hlYXBDZWxsVHlwZSBuYXRpdmVTdGRG
dW5jdGlvbkhlYXBDZWxsVHlwZTsKKyAgICBJc29JbmxpbmVkSGVhcENlbGxUeXBlPEpTU3RyaW5n
PiBzdHJpbmdIZWFwQ2VsbFR5cGU7CisgICAgSXNvSGVhcENlbGxUeXBlIHdlYWtNYXBIZWFwQ2Vs
bFR5cGU7CisgICAgSXNvSGVhcENlbGxUeXBlIHdlYWtTZXRIZWFwQ2VsbFR5cGU7CisgICAgSlNE
ZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUgZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxU
eXBlOworI2lmIEpTQ19PQkpDX0FQSV9FTkFCTEVECisgICAgSXNvSGVhcENlbGxUeXBlIGFwaVdy
YXBwZXJPYmplY3RIZWFwQ2VsbFR5cGU7CisgICAgSXNvSGVhcENlbGxUeXBlIG9iakNDYWxsYmFj
a0Z1bmN0aW9uSGVhcENlbGxUeXBlOworI2VuZGlmCisjaWZkZWYgSlNDX0dMSUJfQVBJX0VOQUJM
RUQKKyAgICBJc29IZWFwQ2VsbFR5cGUgYXBpV3JhcHBlck9iamVjdEhlYXBDZWxsVHlwZTsKKyAg
ICBJc29IZWFwQ2VsbFR5cGUgY2FsbGJhY2tBUElXcmFwcGVyR2xvYmFsT2JqZWN0SGVhcENlbGxU
eXBlOworICAgIElzb0hlYXBDZWxsVHlwZSBqc2NDYWxsYmFja0Z1bmN0aW9uSGVhcENlbGxUeXBl
OworI2VuZGlmCisgICAgSXNvSGVhcENlbGxUeXBlIGludGxDb2xsYXRvckhlYXBDZWxsVHlwZTsK
KyAgICBJc29IZWFwQ2VsbFR5cGUgaW50bERhdGVUaW1lRm9ybWF0SGVhcENlbGxUeXBlOworICAg
IElzb0hlYXBDZWxsVHlwZSBpbnRsRGlzcGxheU5hbWVzSGVhcENlbGxUeXBlOworICAgIElzb0hl
YXBDZWxsVHlwZSBpbnRsTGlzdEZvcm1hdEhlYXBDZWxsVHlwZTsKKyAgICBJc29IZWFwQ2VsbFR5
cGUgaW50bExvY2FsZUhlYXBDZWxsVHlwZTsKKyAgICBJc29IZWFwQ2VsbFR5cGUgaW50bE51bWJl
ckZvcm1hdEhlYXBDZWxsVHlwZTsKKyAgICBJc29IZWFwQ2VsbFR5cGUgaW50bFBsdXJhbFJ1bGVz
SGVhcENlbGxUeXBlOworICAgIElzb0hlYXBDZWxsVHlwZSBpbnRsUmVsYXRpdmVUaW1lRm9ybWF0
SGVhcENlbGxUeXBlOworICAgIElzb0hlYXBDZWxsVHlwZSBpbnRsU2VnbWVudEl0ZXJhdG9ySGVh
cENlbGxUeXBlOworICAgIElzb0hlYXBDZWxsVHlwZSBpbnRsU2VnbWVudGVySGVhcENlbGxUeXBl
OworICAgIElzb0hlYXBDZWxsVHlwZSBpbnRsU2VnbWVudHNIZWFwQ2VsbFR5cGU7CisjaWYgRU5B
QkxFKFdFQkFTU0VNQkxZKQorICAgIElzb0hlYXBDZWxsVHlwZSB3ZWJBc3NlbWJseUNvZGVCbG9j
a0hlYXBDZWxsVHlwZTsKKyAgICBJc29IZWFwQ2VsbFR5cGUgd2ViQXNzZW1ibHlFeGNlcHRpb25I
ZWFwQ2VsbFR5cGU7CisgICAgSXNvSGVhcENlbGxUeXBlIHdlYkFzc2VtYmx5RnVuY3Rpb25IZWFw
Q2VsbFR5cGU7CisgICAgSXNvSGVhcENlbGxUeXBlIHdlYkFzc2VtYmx5R2xvYmFsSGVhcENlbGxU
eXBlOworICAgIElzb0hlYXBDZWxsVHlwZSB3ZWJBc3NlbWJseUluc3RhbmNlSGVhcENlbGxUeXBl
OworICAgIElzb0hlYXBDZWxsVHlwZSB3ZWJBc3NlbWJseU1lbW9yeUhlYXBDZWxsVHlwZTsKKyAg
ICBJc29IZWFwQ2VsbFR5cGUgd2ViQXNzZW1ibHlNb2R1bGVIZWFwQ2VsbFR5cGU7CisgICAgSXNv
SGVhcENlbGxUeXBlIHdlYkFzc2VtYmx5TW9kdWxlUmVjb3JkSGVhcENlbGxUeXBlOworICAgIElz
b0hlYXBDZWxsVHlwZSB3ZWJBc3NlbWJseVRhYmxlSGVhcENlbGxUeXBlOworICAgIElzb0hlYXBD
ZWxsVHlwZSB3ZWJBc3NlbWJseVRhZ0hlYXBDZWxsVHlwZTsKKyNlbmRpZgorCisgICAgLy8gQWxp
Z25lZE1lbW9yeUFsbG9jYXRvcnMKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8RmFzdE1hbGxvY0FsaWdu
ZWRNZW1vcnlBbGxvY2F0b3I+IGZhc3RNYWxsb2NBbGxvY2F0b3I7CisgICAgc3RkOjp1bmlxdWVf
cHRyPEdpZ2FjYWdlQWxpZ25lZE1lbW9yeUFsbG9jYXRvcj4gcHJpbWl0aXZlR2lnYWNhZ2VBbGxv
Y2F0b3I7CisgICAgc3RkOjp1bmlxdWVfcHRyPEdpZ2FjYWdlQWxpZ25lZE1lbW9yeUFsbG9jYXRv
cj4ganNWYWx1ZUdpZ2FjYWdlQWxsb2NhdG9yOworCisgICAgLy8gU3Vic3BhY2VzCisgICAgQ29t
cGxldGVTdWJzcGFjZSBwcmltaXRpdmVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlOyAvLyBUeXBlZCBh
cnJheXMsIHN0cmluZ3MsIGJpdHZlY3RvcnMsIGV0YyBnbyBoZXJlLgorICAgIENvbXBsZXRlU3Vi
c3BhY2UganNWYWx1ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2U7IC8vIEJ1dHRlcmZsaWVzLCBhcnJh
eXMgb2YgSlNWYWx1ZXMsIGV0YyBnbyBoZXJlLgorICAgIENvbXBsZXRlU3Vic3BhY2UgaW1tdXRh
YmxlQnV0dGVyZmx5SlNWYWx1ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2U7IC8vIEpTSW1tdXRhYmxl
QnV0dGVyZmx5IGdvZXMgaGVyZS4KKworICAgIC8vIFdlIG1ha2UgY3Jvc3MtY3V0dGluZyBhc3N1
bXB0aW9ucyBhYm91dCB0eXBlZCBhcnJheXMgYmVpbmcgaW4gdGhlIHByaW1pdGl2ZSBHaWdhY2Fn
ZSBhbmQgYnV0dGVyZmxpZXMKKyAgICAvLyBiZWluZyBpbiB0aGUgSlNWYWx1ZSBnaWdhY2FnZS4g
Rm9yIHNvbWUgdHlwZXMsIGl0J3Mgc3VwZXIgb2J2aW91cyB3aGVyZSB0aGV5IHNob3VsZCBnbywg
YW5kIHNvIHdlCisgICAgLy8gY2FuIGhhcmRjb2RlIHRoYXQgZmFjdC4gQnV0IHNvbWV0aW1lcyBp
dCdzIG5vdCBjbGVhciwgc28gd2UgYWJzdHJhY3QgaXQgYnkgaGF2aW5nIGEgR2lnYWNhZ2U6Oktp
bmQKKyAgICAvLyBjb25zdGFudCBzb21ld2hlcmUuCisgICAgLy8gRklYTUU6IE1heWJlIGl0IHdv
dWxkIGJlIGJldHRlciBpZiBldmVyeW9uZSBhYnN0cmFjdGVkIHRoaXM/CisgICAgLy8gaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NTI0OAorICAgIEFMV0FZU19JTkxJ
TkUgQ29tcGxldGVTdWJzcGFjZSYgZ2lnYWNhZ2VBdXhpbGlhcnlTcGFjZShHaWdhY2FnZTo6S2lu
ZCBraW5kKQorICAgIHsKKyAgICAgICAgc3dpdGNoIChraW5kKSB7CisgICAgICAgIGNhc2UgR2ln
YWNhZ2U6OlByaW1pdGl2ZToKKyAgICAgICAgICAgIHJldHVybiBwcmltaXRpdmVHaWdhY2FnZUF1
eGlsaWFyeVNwYWNlOworICAgICAgICBjYXNlIEdpZ2FjYWdlOjpKU1ZhbHVlOgorICAgICAgICAg
ICAgcmV0dXJuIGpzVmFsdWVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlOworICAgICAgICBjYXNlIEdp
Z2FjYWdlOjpOdW1iZXJPZktpbmRzOgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAg
ICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIHByaW1p
dGl2ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2U7CisgICAgfQorICAgIAorICAgIC8vIFdoZW5ldmVy
IHBvc3NpYmxlLCB1c2Ugc3Vic3BhY2VGb3I8Q2VsbFR5cGU+KHZtKSB0byBnZXQgb25lIG9mIHRo
ZXNlIHN1YnNwYWNlcy4KKyAgICBDb21wbGV0ZVN1YnNwYWNlIGNlbGxTcGFjZTsKKyAgICBDb21w
bGV0ZVN1YnNwYWNlIHZhcmlhYmxlU2l6ZWRDZWxsU3BhY2U7IC8vIEZJWE1FOiBUaGlzIHNwYWNl
IGlzIHByb2JsZW1hdGljIGJlY2F1c2Ugd2UgaGF2ZSB0aGluZ3MgaW4gaGVyZSBsaWtlIERpcmVj
dEFyZ3VtZW50cyBhbmQgU2NvcGVkQXJndW1lbnRzOyB0aG9zZSBzaG91bGQgYmUgc3BsaXQgaW50
byBKU1ZhbHVlT09CIGNlbGxzIGFuZCBKU1ZhbHVlU3RyaWN0IGF1eGlsaWFyaWVzLiBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgyODU4CisgICAgQ29tcGxldGVTdWJz
cGFjZSBkZXN0cnVjdGlibGVPYmplY3RTcGFjZTsKKworICAgIElzb1N1YnNwYWNlIGFycmF5U3Bh
Y2U7CisgICAgSXNvU3Vic3BhY2UgYmlnSW50U3BhY2U7CisgICAgSXNvU3Vic3BhY2UgY2FsbGVl
U3BhY2U7CisgICAgSXNvU3Vic3BhY2UgY2xvbmVkQXJndW1lbnRzU3BhY2U7CisgICAgSXNvU3Vi
c3BhY2UgY3VzdG9tR2V0dGVyU2V0dGVyU3BhY2U7CisgICAgSXNvU3Vic3BhY2UgZGF0ZUluc3Rh
bmNlU3BhY2U7CisgICAgSXNvU3Vic3BhY2UgZG9tQXR0cmlidXRlR2V0dGVyU2V0dGVyU3BhY2U7
CisgICAgSXNvU3Vic3BhY2UgZXhjZXB0aW9uU3BhY2U7CisgICAgSXNvU3Vic3BhY2UgZXhlY3V0
YWJsZVRvQ29kZUJsb2NrRWRnZVNwYWNlOworICAgIElzb1N1YnNwYWNlIGZ1bmN0aW9uU3BhY2U7
CisgICAgSXNvU3Vic3BhY2UgZ2V0dGVyU2V0dGVyU3BhY2U7CisgICAgSXNvU3Vic3BhY2UgZ2xv
YmFsTGV4aWNhbEVudmlyb25tZW50U3BhY2U7CisgICAgSXNvU3Vic3BhY2UgaW50ZXJuYWxGdW5j
dGlvblNwYWNlOworICAgIElzb1N1YnNwYWNlIGpzUHJveHlTcGFjZTsKKyAgICBJc29TdWJzcGFj
ZSBuYXRpdmVFeGVjdXRhYmxlU3BhY2U7CisgICAgSXNvU3Vic3BhY2UgbnVtYmVyT2JqZWN0U3Bh
Y2U7CisgICAgSXNvU3Vic3BhY2UgcGxhaW5PYmplY3RTcGFjZTsKKyAgICBJc29TdWJzcGFjZSBw
cm9taXNlU3BhY2U7CisgICAgSXNvU3Vic3BhY2UgcHJvcGVydHlOYW1lRW51bWVyYXRvclNwYWNl
OworICAgIElzb1N1YnNwYWNlIHByb3BlcnR5VGFibGVTcGFjZTsKKyAgICBJc29TdWJzcGFjZSBy
ZWdFeHBTcGFjZTsKKyAgICBJc29TdWJzcGFjZSByZWdFeHBPYmplY3RTcGFjZTsKKyAgICBJc29T
dWJzcGFjZSByb3BlU3RyaW5nU3BhY2U7CisgICAgSXNvU3Vic3BhY2Ugc2NvcGVkQXJndW1lbnRz
U3BhY2U7CisgICAgSXNvU3Vic3BhY2Ugc3BhcnNlQXJyYXlWYWx1ZU1hcFNwYWNlOworICAgIElz
b1N1YnNwYWNlIHN0cmluZ1NwYWNlOworICAgIElzb1N1YnNwYWNlIHN0cmluZ09iamVjdFNwYWNl
OworICAgIElzb1N1YnNwYWNlIHN0cnVjdHVyZUNoYWluU3BhY2U7CisgICAgSXNvU3Vic3BhY2Ug
c3RydWN0dXJlUmFyZURhdGFTcGFjZTsKKyAgICBJc29TdWJzcGFjZSBzdHJ1Y3R1cmVTcGFjZTsK
KyAgICBJc29TdWJzcGFjZSBicmFuZGVkU3RydWN0dXJlU3BhY2U7CisgICAgSXNvU3Vic3BhY2Ug
c3ltYm9sVGFibGVTcGFjZTsKKworI2RlZmluZSBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVf
TUVNQkVSKG5hbWUpIFwKKyAgICB0ZW1wbGF0ZTxTdWJzcGFjZUFjY2VzcyBtb2RlPiBcCisgICAg
SXNvU3Vic3BhY2UqIG5hbWUoKSBcCisgICAgeyBcCisgICAgICAgIGlmIChtXyMjbmFtZSB8fCBt
b2RlID09IFN1YnNwYWNlQWNjZXNzOjpDb25jdXJyZW50bHkpIFwKKyAgICAgICAgICAgIHJldHVy
biBtXyMjbmFtZS5nZXQoKTsgXAorICAgICAgICByZXR1cm4gbmFtZSMjU2xvdygpOyBcCisgICAg
fSBcCisgICAgSlNfRVhQT1JUX1BSSVZBVEUgSXNvU3Vic3BhY2UqIG5hbWUjI1Nsb3coKTsgXAor
ICAgIHN0ZDo6dW5pcXVlX3B0cjxJc29TdWJzcGFjZT4gbV8jI25hbWU7CisKKworI2lmIEpTQ19P
QkpDX0FQSV9FTkFCTEVECisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihh
cGlXcmFwcGVyT2JqZWN0U3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01F
TUJFUihvYmpDQ2FsbGJhY2tGdW5jdGlvblNwYWNlKQorI2VuZGlmCisjaWZkZWYgSlNDX0dMSUJf
QVBJX0VOQUJMRUQKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKGFwaVdy
YXBwZXJPYmplY3RTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVS
KGpzY0NhbGxiYWNrRnVuY3Rpb25TcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJ
TkVfTUVNQkVSKGNhbGxiYWNrQVBJV3JhcHBlckdsb2JhbE9iamVjdFNwYWNlKQorI2VuZGlmCisg
ICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihhcGlHbG9iYWxPYmplY3RTcGFj
ZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKGFwaVZhbHVlV3JhcHBl
clNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoYXJyYXlCdWZm
ZXJTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKGFycmF5SXRl
cmF0b3JTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKGFzeW5j
R2VuZXJhdG9yU3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihi
aWdJbnQ2NEFycmF5U3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJF
UihiaWdJbnRPYmplY3RTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVN
QkVSKGJpZ1VpbnQ2NEFycmF5U3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5F
X01FTUJFUihib29sZWFuT2JqZWN0U3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVG
SU5FX01FTUJFUihib3VuZEZ1bmN0aW9uU3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0Vf
REVGSU5FX01FTUJFUihjYWxsYmFja0NvbnN0cnVjdG9yU3BhY2UpCisgICAgRFlOQU1JQ19JU09f
U1VCU1BBQ0VfREVGSU5FX01FTUJFUihjYWxsYmFja0dsb2JhbE9iamVjdFNwYWNlKQorICAgIERZ
TkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoY2FsbGJhY2tGdW5jdGlvblNwYWNlKQor
ICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoY2FsbGJhY2tPYmplY3RTcGFj
ZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKGN1c3RvbUdldHRlckZ1
bmN0aW9uU3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihjdXN0
b21TZXR0ZXJGdW5jdGlvblNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9N
RU1CRVIoZGF0YVZpZXdTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVN
QkVSKGRlYnVnZ2VyU2NvcGVTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVf
TUVNQkVSKGVycm9ySW5zdGFuY2VTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJ
TkVfTUVNQkVSKGZsb2F0MzJBcnJheVNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RF
RklORV9NRU1CRVIoZmxvYXQ2NEFycmF5U3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0Vf
REVGSU5FX01FTUJFUihmdW5jdGlvblJhcmVEYXRhU3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VC
U1BBQ0VfREVGSU5FX01FTUJFUihnZW5lcmF0b3JTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJT
UEFDRV9ERUZJTkVfTUVNQkVSKGdsb2JhbE9iamVjdFNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NV
QlNQQUNFX0RFRklORV9NRU1CRVIoaW5qZWN0ZWRTY3JpcHRIb3N0U3BhY2UpCisgICAgRFlOQU1J
Q19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihpbnQ4QXJyYXlTcGFjZSkKKyAgICBEWU5BTUlD
X0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKGludDE2QXJyYXlTcGFjZSkKKyAgICBEWU5BTUlD
X0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKGludDMyQXJyYXlTcGFjZSkKKyAgICBEWU5BTUlD
X0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKGphdmFTY3JpcHRDYWxsRnJhbWVTcGFjZSkKKyAg
ICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKGpzTW9kdWxlUmVjb3JkU3BhY2Up
CisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihtYXBCdWNrZXRTcGFjZSkK
KyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKG1hcEl0ZXJhdG9yU3BhY2Up
CisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihtYXBTcGFjZSkKKyAgICBE
WU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKG1vZHVsZU5hbWVzcGFjZU9iamVjdFNw
YWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIobmF0aXZlU3RkRnVu
Y3Rpb25TcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKHByb3h5
T2JqZWN0U3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihwcm94
eVJldm9rZVNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoc2Nv
cGVkQXJndW1lbnRzVGFibGVTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVf
TUVNQkVSKHNjcmlwdEZldGNoUGFyYW1ldGVyc1NwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQ
QUNFX0RFRklORV9NRU1CRVIoc2NyaXB0RmV0Y2hlclNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NV
QlNQQUNFX0RFRklORV9NRU1CRVIoc2V0QnVja2V0U3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VC
U1BBQ0VfREVGSU5FX01FTUJFUihzZXRJdGVyYXRvclNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NV
QlNQQUNFX0RFRklORV9NRU1CRVIoc2V0U3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0Vf
REVGSU5FX01FTUJFUihzaGFkb3dSZWFsbVNwYWNlKTsKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFD
RV9ERUZJTkVfTUVNQkVSKHN0cmljdEV2YWxBY3RpdmF0aW9uU3BhY2UpCisgICAgRFlOQU1JQ19J
U09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihzdHJpbmdJdGVyYXRvclNwYWNlKQorICAgIERZTkFN
SUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoc291cmNlQ29kZVNwYWNlKQorICAgIERZTkFN
SUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoc3ltYm9sU3BhY2UpCisgICAgRFlOQU1JQ19J
U09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihzeW1ib2xPYmplY3RTcGFjZSkKKyAgICBEWU5BTUlD
X0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKHRlbXBsYXRlT2JqZWN0RGVzY3JpcHRvclNwYWNl
KQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIodGVtcG9yYWxDYWxlbmRh
clNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIodGVtcG9yYWxE
dXJhdGlvblNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIodGVt
cG9yYWxJbnN0YW50U3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJF
Uih0ZW1wb3JhbFBsYWluVGltZVNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklO
RV9NRU1CRVIodGVtcG9yYWxUaW1lWm9uZVNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNF
X0RFRklORV9NRU1CRVIodWludDhBcnJheVNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNF
X0RFRklORV9NRU1CRVIodWludDhDbGFtcGVkQXJyYXlTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19T
VUJTUEFDRV9ERUZJTkVfTUVNQkVSKHVpbnQxNkFycmF5U3BhY2UpCisgICAgRFlOQU1JQ19JU09f
U1VCU1BBQ0VfREVGSU5FX01FTUJFUih1aW50MzJBcnJheVNwYWNlKQorICAgIERZTkFNSUNfSVNP
X1NVQlNQQUNFX0RFRklORV9NRU1CRVIodW5saW5rZWRFdmFsQ29kZUJsb2NrU3BhY2UpCisgICAg
RFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUih1bmxpbmtlZEZ1bmN0aW9uQ29kZUJs
b2NrU3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUih1bmxpbmtl
ZE1vZHVsZVByb2dyYW1Db2RlQmxvY2tTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9E
RUZJTkVfTUVNQkVSKHVubGlua2VkUHJvZ3JhbUNvZGVCbG9ja1NwYWNlKQorICAgIERZTkFNSUNf
SVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoZmluYWxpemF0aW9uUmVnaXN0cnlTcGFjZSkKKyAg
ICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKHdlYWtPYmplY3RSZWZTcGFjZSkK
KyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKHdlYWtTZXRTcGFjZSkKKyAg
ICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKHdlYWtNYXBTcGFjZSkKKyAgICBE
WU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKHdpdGhTY29wZVNwYWNlKQorICAgIERZ
TkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoaW50bENvbGxhdG9yU3BhY2UpCisgICAg
RFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihpbnRsRGF0ZVRpbWVGb3JtYXRTcGFj
ZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKGludGxEaXNwbGF5TmFt
ZXNTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKGludGxMaXN0
Rm9ybWF0U3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihpbnRs
TG9jYWxlU3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihpbnRs
TnVtYmVyRm9ybWF0U3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJF
UihpbnRsUGx1cmFsUnVsZXNTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVf
TUVNQkVSKGludGxSZWxhdGl2ZVRpbWVGb3JtYXRTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJT
UEFDRV9ERUZJTkVfTUVNQkVSKGludGxTZWdtZW50SXRlcmF0b3JTcGFjZSkKKyAgICBEWU5BTUlD
X0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKGludGxTZWdtZW50ZXJTcGFjZSkKKyAgICBEWU5B
TUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKGludGxTZWdtZW50c1NwYWNlKQorI2lmIEVO
QUJMRShXRUJBU1NFTUJMWSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVS
KGpzVG9XYXNtSUNDYWxsZWVTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVf
TUVNQkVSKHdlYkFzc2VtYmx5Q29kZUJsb2NrU3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BB
Q0VfREVGSU5FX01FTUJFUih3ZWJBc3NlbWJseUV4Y2VwdGlvblNwYWNlKQorICAgIERZTkFNSUNf
SVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIod2ViQXNzZW1ibHlGdW5jdGlvblNwYWNlKQorICAg
IERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIod2ViQXNzZW1ibHlHbG9iYWxTcGFj
ZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKHdlYkFzc2VtYmx5SW5z
dGFuY2VTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKHdlYkFz
c2VtYmx5TWVtb3J5U3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJF
Uih3ZWJBc3NlbWJseU1vZHVsZVNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklO
RV9NRU1CRVIod2ViQXNzZW1ibHlNb2R1bGVSZWNvcmRTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19T
VUJTUEFDRV9ERUZJTkVfTUVNQkVSKHdlYkFzc2VtYmx5VGFibGVTcGFjZSkKKyAgICBEWU5BTUlD
X0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKHdlYkFzc2VtYmx5VGFnU3BhY2UpCisgICAgRFlO
QU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUih3ZWJBc3NlbWJseVdyYXBwZXJGdW5jdGlv
blNwYWNlKQorI2VuZGlmCisKKyN1bmRlZiBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVN
QkVSCisgICAgCisgICAgSXNvQ2VsbFNldCBleGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlc1dpdGhD
b25zdHJhaW50czsKKyAgICBJc29DZWxsU2V0IGV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2VzV2l0
aEZpbmFsaXplcnM7CisKKyNkZWZpbmUgRFlOQU1JQ19TUEFDRV9BTkRfU0VUX0RFRklORV9NRU1C
RVIobmFtZSkgXAorICAgIHRlbXBsYXRlPFN1YnNwYWNlQWNjZXNzIG1vZGU+IFwKKyAgICBJc29T
dWJzcGFjZSogbmFtZSgpIFwKKyAgICB7IFwKKyAgICAgICAgaWYgKGF1dG8qIHNwYWNlQW5kU2V0
ID0gbV8jI25hbWUuZ2V0KCkpIFwKKyAgICAgICAgICAgIHJldHVybiAmc3BhY2VBbmRTZXQtPnNw
YWNlOyBcCisgICAgICAgIGlmIChtb2RlID09IFN1YnNwYWNlQWNjZXNzOjpDb25jdXJyZW50bHkp
IFwKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOyBcCisgICAgICAgIHJldHVybiBuYW1lIyNT
bG93KCk7IFwKKyAgICB9IFwKKyAgICBJc29TdWJzcGFjZSogbmFtZSMjU2xvdygpOyBcCisgICAg
c3RkOjp1bmlxdWVfcHRyPFNwYWNlQW5kU2V0PiBtXyMjbmFtZTsKKyAgICAKKyAgICBzdHJ1Y3Qg
U3BhY2VBbmRTZXQgeworICAgICAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7CisK
KyAgICAgICAgSXNvU3Vic3BhY2Ugc3BhY2U7CisgICAgICAgIElzb0NlbGxTZXQgc2V0OworICAg
ICAgICAKKyAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gQXJndW1lbnRzPgorICAgICAgICBT
cGFjZUFuZFNldChBcmd1bWVudHMmJi4uLiBhcmd1bWVudHMpCisgICAgICAgICAgICA6IHNwYWNl
KHN0ZDo6Zm9yd2FyZDxBcmd1bWVudHM+KGFyZ3VtZW50cykuLi4pCisgICAgICAgICAgICAsIHNl
dChzcGFjZSkKKyAgICAgICAgeworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBzdGF0aWMg
SXNvQ2VsbFNldCYgc2V0Rm9yKFN1YnNwYWNlJiBzcGFjZSkKKyAgICAgICAgeworICAgICAgICAg
ICAgcmV0dXJuICpiaXR3aXNlX2Nhc3Q8SXNvQ2VsbFNldCo+KAorICAgICAgICAgICAgICAgIGJp
dHdpc2VfY2FzdDxjaGFyKj4oJnNwYWNlKSAtCisgICAgICAgICAgICAgICAgT0JKRUNUX09GRlNF
VE9GKFNwYWNlQW5kU2V0LCBzcGFjZSkgKworICAgICAgICAgICAgICAgIE9CSkVDVF9PRkZTRVRP
RihTcGFjZUFuZFNldCwgc2V0KSk7CisgICAgICAgIH0KKyAgICB9OworICAgIAorICAgIFNwYWNl
QW5kU2V0IGNvZGVCbG9ja1NwYWNlOworCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuYz4KKyAg
ICB2b2lkIGZvckVhY2hDb2RlQmxvY2tTcGFjZShjb25zdCBGdW5jJiBmdW5jKQorICAgIHsKKyAg
ICAgICAgLy8gVGhpcyBzaG91bGQgbm90IGluY2x1ZGUgd2ViQXNzZW1ibHlDb2RlQmxvY2tTcGFj
ZSBiZWNhdXNlIHRoaXMgaXMgYWJvdXQgc3Vic2NsYXNzZXMgb2YKKyAgICAgICAgLy8gSlNDOjpD
b2RlQmxvY2suCisgICAgICAgIGZ1bmMoY29kZUJsb2NrU3BhY2UpOworICAgIH0KKworICAgIERZ
TkFNSUNfU1BBQ0VfQU5EX1NFVF9ERUZJTkVfTUVNQkVSKGV2YWxFeGVjdXRhYmxlU3BhY2UpCisg
ICAgRFlOQU1JQ19TUEFDRV9BTkRfU0VUX0RFRklORV9NRU1CRVIobW9kdWxlUHJvZ3JhbUV4ZWN1
dGFibGVTcGFjZSkKKyAgICBTcGFjZUFuZFNldCBmdW5jdGlvbkV4ZWN1dGFibGVTcGFjZTsKKyAg
ICBTcGFjZUFuZFNldCBwcm9ncmFtRXhlY3V0YWJsZVNwYWNlOworCisgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgRnVuYz4KKyAgICB2b2lkIGZvckVhY2hTY3JpcHRFeGVjdXRhYmxlU3BhY2UoY29uc3Qg
RnVuYyYgZnVuYykKKyAgICB7CisgICAgICAgIGlmIChtX2V2YWxFeGVjdXRhYmxlU3BhY2UpCisg
ICAgICAgICAgICBmdW5jKCptX2V2YWxFeGVjdXRhYmxlU3BhY2UpOworICAgICAgICBmdW5jKGZ1
bmN0aW9uRXhlY3V0YWJsZVNwYWNlKTsKKyAgICAgICAgaWYgKG1fbW9kdWxlUHJvZ3JhbUV4ZWN1
dGFibGVTcGFjZSkKKyAgICAgICAgICAgIGZ1bmMoKm1fbW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGVT
cGFjZSk7CisgICAgICAgIGZ1bmMocHJvZ3JhbUV4ZWN1dGFibGVTcGFjZSk7CisgICAgfQorCisg
ICAgU3BhY2VBbmRTZXQgdW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGVTcGFjZTsKKworI3VuZGVm
IERZTkFNSUNfU1BBQ0VfQU5EX1NFVF9ERUZJTkVfTUVNQkVSCiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lzb0hlYXBDZWxsVHlwZS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lzb0hlYXBDZWxsVHlw
ZS5oCShyZXZpc2lvbiAyODYwNDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Jc29I
ZWFwQ2VsbFR5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzgsNiArMzgsMjIgQEAgcHVibGljOgog
ICAgIEpTX0VYUE9SVF9QUklWQVRFIElzb0hlYXBDZWxsVHlwZShEZXN0cnVjdGlvbk1vZGUsIERl
c3Ryb3lGdW5jdGlvblB0cik7CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZT4KKyAg
ICBzdHJ1Y3QgQXJncyB7CisgICAgICAgIEFyZ3MoKQorICAgICAgICAgICAgOiBtb2RlKENlbGxU
eXBlOjpuZWVkc0Rlc3RydWN0aW9uID8gTmVlZHNEZXN0cnVjdGlvbiA6IERvZXNOb3ROZWVkRGVz
dHJ1Y3Rpb24pCisgICAgICAgICAgICAsIGZ1bmN0aW9uUHRyKCZDZWxsVHlwZTo6ZGVzdHJveSkK
KyAgICAgICAgeyB9CisKKyAgICAgICAgRGVzdHJ1Y3Rpb25Nb2RlIG1vZGU7CisgICAgICAgIERl
c3Ryb3lGdW5jdGlvblB0ciBmdW5jdGlvblB0cjsKKyAgICB9OworCisgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgQ2VsbFR5cGU+CisgICAgSXNvSGVhcENlbGxUeXBlKEFyZ3M8Q2VsbFR5cGU+JiYgYXJn
cykKKyAgICAgICAgOiBJc29IZWFwQ2VsbFR5cGUoYXJncy5tb2RlLCBhcmdzLmZ1bmN0aW9uUHRy
KQorICAgIHsgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGU+CiAgICAgc3RhdGlj
IHN0ZDo6dW5pcXVlX3B0cjxJc29IZWFwQ2VsbFR5cGU+IGNyZWF0ZSgpCiAgICAgewogICAgICAg
ICByZXR1cm4gbWFrZVVuaXF1ZTxJc29IZWFwQ2VsbFR5cGU+KENlbGxUeXBlOjpuZWVkc0Rlc3Ry
dWN0aW9uID8gTmVlZHNEZXN0cnVjdGlvbiA6IERvZXNOb3ROZWVkRGVzdHJ1Y3Rpb24sICZDZWxs
VHlwZTo6ZGVzdHJveSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Jc29TdWJz
cGFjZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lzb1N1YnNw
YWNlLmgJKHJldmlzaW9uIDI4NjA0MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lz
b1N1YnNwYWNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTU0LDcgKzU0LDcgQEAgcHVibGljOgogICAg
IHZvaWQqIHRyeUFsbG9jYXRlRnJvbUxvd2VyVGllcigpOwogICAgIHZvaWQgZGVzdHJveUxvd2Vy
VGllckZyZWVMaXN0KCk7CiAKLSAgICB2b2lkIHN3ZWVwKCk7CisgICAgdm9pZCBzd2VlcDMoKTsK
IAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmM+IHZvaWQgZm9yRWFjaExvd2VyVGllckZyZWVM
aXN0ZWRQcmVjaXNlQWxsb2NhdGlvbihjb25zdCBGdW5jJik7CiAKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL0lzb1N1YnNwYWNlSW5saW5lcy5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lzb1N1YnNwYWNlSW5saW5lcy5oCShyZXZpc2lvbiAyODYw
NDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Jc29TdWJzcGFjZUlubGluZXMuaAko
d29ya2luZyBjb3B5KQpAQCAtNDQsNyArNDQsNyBAQCBpbmxpbmUgdm9pZCBJc29TdWJzcGFjZTo6
Y2xlYXJJc29DZWxsU2V0CiAgICAgICAgIH0pOwogfQogCi1pbmxpbmUgdm9pZCBJc29TdWJzcGFj
ZTo6c3dlZXAoKQoraW5saW5lIHZvaWQgSXNvU3Vic3BhY2U6OnN3ZWVwMygpCiB7CiAgICAgU3Vi
c3BhY2U6OnN3ZWVwQmxvY2tzKCk7CiAgICAgLy8gV2Ugc3dlZXAgcHJlY2lzZS1hbGxvY2F0aW9u
cyBlYWdlcmx5LCBidXQgd2UgZG8gbm90IGZyZWUgaXQgaW1tZWRpYXRlbHkuCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9ja0lubGluZXMuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9ja0lubGluZXMuaAkocmV2aXNp
b24gMjg2MDQzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2tJbmxp
bmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChD
KSAyMDE2LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDE2LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yMTMsNyArMjEzLDcgQEAgaW5saW5lIGJvb2wgTWFy
a2VkQmxvY2s6OkhhbmRsZTo6YXJlTWFyawogLy8gc3dlZXBNb2RlID09IFN3ZWVwVG9GcmVlTGlz
dAogLy8gc2NyaWJibGVNb2RlID09IERvbnRTY3JpYmJsZQogLy8gbmV3bHlBbGxvY2F0ZWRNb2Rl
ID09IERvZXNOb3RIYXZlTmV3bHlBbGxvY2F0ZWQKLS8vIGRlc3RydWN0aW9uTW9kZSAhPSBCbG9j
a0hhc0Rlc3RyaWN0b3JzQW5kQ29sbGVjdG9ySXNSdW5uaW5nCisvLyBkZXN0cnVjdGlvbk1vZGUg
IT0gQmxvY2tIYXNEZXN0cnVjdG9yc0FuZENvbGxlY3RvcklzUnVubmluZwogLy8KIC8vIGVtcHR5
TW9kZSA9IElzRW1wdHkKIC8vICAgICBkZXN0cnVjdGlvbk1vZGUgPSBEb2VzTm90TmVlZERlc3Ry
dWN0aW9uCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTSW5qZWN0ZWRT
Y3JpcHRIb3N0UHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9KU0luamVjdGVkU2NyaXB0SG9zdFByb3RvdHlwZS5oCShyZXZpc2lvbiAyODYw
NDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTSW5qZWN0ZWRTY3JpcHRI
b3N0UHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQwLDcgKzQwLDcgQEAgcHVibGljOgog
ICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKICAg
ICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTSW5qZWN0
ZWRTY3JpcHRIb3N0UHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9i
amVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9
CiAKICAgICBERUNMQVJFX0lORk87CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL0pTSmF2YVNjcmlwdENhbGxGcmFtZVByb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNKYXZhU2NyaXB0Q2FsbEZyYW1lUHJvdG90eXBl
LmgJKHJldmlzaW9uIDI4NjA0MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
SlNKYXZhU2NyaXB0Q2FsbEZyYW1lUHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQwLDcg
KzQwLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZv
cihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNF
X1NIQVJBQkxFKEpTSmF2YVNjcmlwdENhbGxGcmFtZVByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAg
IHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9i
amVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAgREVDTEFSRV9JTkZPOwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0NhbGxGcmFtZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9DYWxsRnJhbWUuaAkocmV2aXNpb24gMjg2MDQz
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0NhbGxGcmFtZS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zOCw2ICszOCw3IEBAIG5hbWVzcGFjZSBKU0MgIHsKICAgICBjbGFzcyBK
U0NhbGxlZTsKICAgICBjbGFzcyBKU1Njb3BlOwogICAgIGNsYXNzIFNvdXJjZU9yaWdpbjsKKyAg
ICBjbGFzcyBWaXJ0dWFsUmVnaXN0ZXI7CiAKICAgICBzdHJ1Y3QgSW5zdHJ1Y3Rpb247CiAKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FnZ3JlZ2F0ZUVycm9yUHJvdG90eXBl
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQWdncmVnYXRl
RXJyb3JQcm90b3R5cGUuaAkocmV2aXNpb24gMjg2MDQzKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQWdncmVnYXRlRXJyb3JQcm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAt
NDQsNyArNDQsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZv
cihWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFS
QUJMRShBZ2dyZWdhdGVFcnJvclByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0u
cGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7
CiAgICAgfQogCiAgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiB2bSwg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUl0ZXJhdG9yUHJvdG90eXBlLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlJdGVyYXRvclBy
b3RvdHlwZS5oCShyZXZpc2lvbiAyODYwNDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9BcnJheUl0ZXJhdG9yUHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM4LDcgKzM4
LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZt
KQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoQXJy
YXlJdGVyYXRvclByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmpl
Y3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQog
CiAgICAgc3RhdGljIEFycmF5SXRlcmF0b3JQcm90b3R5cGUqIGNyZWF0ZShWTSYgdm0sIEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlKQpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXN5bmNGcm9tU3luY0l0ZXJhdG9yUHJvdG90eXBl
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXN5bmNGcm9t
U3luY0l0ZXJhdG9yUHJvdG90eXBlLmgJKHJldmlzaW9uIDI4NjA0MykKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0FzeW5jRnJvbVN5bmNJdGVyYXRvclByb3RvdHlwZS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxNy0yMDE5
IE9sZWtzYW5kciBTa2FjaGtvdiA8Z3NrYWNoa292QGdtYWlsLmNvbT4uCisgKiBDb3B5cmlnaHQg
KEMpIDIwMjEgQXBwbGUsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwpAQCAtMzcsNyArMzgsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIElz
b1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNT
RVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShBc3luY0Zyb21TeW5jSXRlcmF0b3JQcm90b3R5cGUs
IEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJl
dHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIERFQ0xBUkVfSU5GTzsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FzeW5jRnVuY3Rpb25Qcm90b3R5
cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bc3luY0Z1
bmN0aW9uUHJvdG90eXBlLmgJKHJldmlzaW9uIDI4NjA0MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0FzeW5jRnVuY3Rpb25Qcm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAt
MzgsNyArMzgsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZv
cihWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFS
QUJMRShBc3luY0Z1bmN0aW9uUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5w
bGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsK
ICAgICB9CiAKICAgICBERUNMQVJFX0lORk87CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Bc3luY0dlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXN5bmNHZW5lcmF0b3JGdW5jdGlvblByb3Rv
dHlwZS5oCShyZXZpc2lvbiAyODYwNDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Bc3luY0dlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM4
LDcgKzM4LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3Io
Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFC
TEUoQXN5bmNHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVy
biAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNw
YWNlKCk7CiAgICAgfQogCiAgICAgREVDTEFSRV9JTkZPOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQXN5bmNHZW5lcmF0b3JQcm90b3R5cGUuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bc3luY0dlbmVyYXRvclByb3RvdHlwZS5oCShy
ZXZpc2lvbiAyODYwNDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bc3luY0dl
bmVyYXRvclByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00MSw3ICs0MSw3IEBAIHB1Ymxp
YzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAg
ICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEFzeW5jR2VuZXJhdG9y
UHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOwor
ICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0
aWMgQXN5bmNHZW5lcmF0b3JQcm90b3R5cGUqIGNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0
KiwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Bc3luY0l0ZXJhdG9yUHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQXN5bmNJdGVyYXRvclByb3RvdHlwZS5oCShyZXZpc2lvbiAyODYw
NDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bc3luY0l0ZXJhdG9yUHJvdG90
eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM5LDcgKzM5LDcgQEAgcHVibGljOgogICAgIHN0YXRp
YyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElD
X0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoQXN5bmNJdGVyYXRvclByb3RvdHlwZSwgQmFz
ZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJu
ICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIEFzeW5jSXRlcmF0
b3JQcm90b3R5cGUqIGNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IFN0cnVjdHVyZSogc3RydWN0dXJlKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQXRvbWljc09iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0F0b21pY3NPYmplY3QuaAkocmV2aXNpb24gMjg2MDQzKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQXRvbWljc09iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNi0yMDE3IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNi0yMDIxIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzcs
NyArMzcsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihW
TSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJM
RShBdG9taWNzT2JqZWN0LCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNw
YWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAg
CiAgICAgc3RhdGljIEF0b21pY3NPYmplY3QqIGNyZWF0ZShWTSYsIEpTR2xvYmFsT2JqZWN0Kiwg
U3RydWN0dXJlKik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9CaWdJbnRQ
cm90b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9C
aWdJbnRQcm90b3R5cGUuaAkocmV2aXNpb24gMjg2MDQzKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQmlnSW50UHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM5LDcgKzM5
LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZt
KQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoQmln
SW50UHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNl
OworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBz
dGF0aWMgQmlnSW50UHJvdG90eXBlKiBjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0JyYW5kZWRTdHJ1Y3R1cmUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9CcmFuZGVkU3RydWN0dXJlLmgJKHJldmlzaW9uIDI4NjA0MykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0JyYW5kZWRTdHJ1Y3R1cmUuaAkod29y
a2luZyBjb3B5KQpAQCAtNDcsNyArNDcsNyBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5h
bWUgQ2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNzPgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vi
c3BhY2VGb3IoVk0mIHZtKQogICAgIHsKLSAgICAgICAgcmV0dXJuICZ2bS5icmFuZGVkU3RydWN0
dXJlU3BhY2U7CisgICAgICAgIHJldHVybiAmdm0uYnJhbmRlZFN0cnVjdHVyZVNwYWNlKCk7CiAg
ICAgfQogCiAgICAgQUxXQVlTX0lOTElORSBib29sIGNoZWNrQnJhbmQoU3ltYm9sKiBicmFuZCkK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0J1dHRlcmZseUlubGluZXMuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9CdXR0ZXJmbHlJbmxp
bmVzLmgJKHJldmlzaW9uIDI4NjA0MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0J1dHRlcmZseUlubGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtNzcsNyArNzcsNyBAQCBBTFdB
WVNfSU5MSU5FIHVuc2lnbmVkIEJ1dHRlcmZseTo6b3B0aW1hCiBpbmxpbmUgQnV0dGVyZmx5KiBC
dXR0ZXJmbHk6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQoVk0mIHZtLCBKU09iamVjdCosIHNpemVf
dCBwcmVDYXBhY2l0eSwgc2l6ZV90IHByb3BlcnR5Q2FwYWNpdHksIGJvb2wgaGFzSW5kZXhpbmdI
ZWFkZXIsIHNpemVfdCBpbmRleGluZ1BheWxvYWRTaXplSW5CeXRlcywgR0NEZWZlcnJhbENvbnRl
eHQqIGRlZmVycmFsQ29udGV4dCkKIHsKICAgICBzaXplX3Qgc2l6ZSA9IHRvdGFsU2l6ZShwcmVD
YXBhY2l0eSwgcHJvcGVydHlDYXBhY2l0eSwgaGFzSW5kZXhpbmdIZWFkZXIsIGluZGV4aW5nUGF5
bG9hZFNpemVJbkJ5dGVzKTsKLSAgICB2b2lkKiBiYXNlID0gdm0uanNWYWx1ZUdpZ2FjYWdlQXV4
aWxpYXJ5U3BhY2UuYWxsb2NhdGVOb25WaXJ0dWFsKHZtLCBzaXplLCBkZWZlcnJhbENvbnRleHQs
IEFsbG9jYXRpb25GYWlsdXJlTW9kZTo6UmV0dXJuTnVsbCk7CisgICAgdm9pZCogYmFzZSA9IHZt
LmpzVmFsdWVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlKCkuYWxsb2NhdGVOb25WaXJ0dWFsKHZtLCBz
aXplLCBkZWZlcnJhbENvbnRleHQsIEFsbG9jYXRpb25GYWlsdXJlTW9kZTo6UmV0dXJuTnVsbCk7
CiAgICAgaWYgKFVOTElLRUxZKCFiYXNlKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKQEAg
LTg5LDcgKzg5LDcgQEAgaW5saW5lIEJ1dHRlcmZseSogQnV0dGVyZmx5Ojp0cnlDcmVhdGVVbgog
aW5saW5lIEJ1dHRlcmZseSogQnV0dGVyZmx5OjpjcmVhdGVVbmluaXRpYWxpemVkKFZNJiB2bSwg
SlNPYmplY3QqLCBzaXplX3QgcHJlQ2FwYWNpdHksIHNpemVfdCBwcm9wZXJ0eUNhcGFjaXR5LCBi
b29sIGhhc0luZGV4aW5nSGVhZGVyLCBzaXplX3QgaW5kZXhpbmdQYXlsb2FkU2l6ZUluQnl0ZXMp
CiB7CiAgICAgc2l6ZV90IHNpemUgPSB0b3RhbFNpemUocHJlQ2FwYWNpdHksIHByb3BlcnR5Q2Fw
YWNpdHksIGhhc0luZGV4aW5nSGVhZGVyLCBpbmRleGluZ1BheWxvYWRTaXplSW5CeXRlcyk7Ci0g
ICAgdm9pZCogYmFzZSA9IHZtLmpzVmFsdWVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlLmFsbG9jYXRl
Tm9uVmlydHVhbCh2bSwgc2l6ZSwgbnVsbHB0ciwgQWxsb2NhdGlvbkZhaWx1cmVNb2RlOjpBc3Nl
cnQpOworICAgIHZvaWQqIGJhc2UgPSB2bS5qc1ZhbHVlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZSgp
LmFsbG9jYXRlTm9uVmlydHVhbCh2bSwgc2l6ZSwgbnVsbHB0ciwgQWxsb2NhdGlvbkZhaWx1cmVN
b2RlOjpBc3NlcnQpOwogICAgIEJ1dHRlcmZseSogcmVzdWx0ID0gZnJvbUJhc2UoYmFzZSwgcHJl
Q2FwYWNpdHksIHByb3BlcnR5Q2FwYWNpdHkpOwogCiAgICAgcmV0dXJuIHJlc3VsdDsKQEAgLTk4
LDcgKzk4LDcgQEAgaW5saW5lIEJ1dHRlcmZseSogQnV0dGVyZmx5OjpjcmVhdGVVbmluaQogaW5s
aW5lIEJ1dHRlcmZseSogQnV0dGVyZmx5Ojp0cnlDcmVhdGUoVk0mIHZtLCBKU09iamVjdCosIHNp
emVfdCBwcmVDYXBhY2l0eSwgc2l6ZV90IHByb3BlcnR5Q2FwYWNpdHksIGJvb2wgaGFzSW5kZXhp
bmdIZWFkZXIsIGNvbnN0IEluZGV4aW5nSGVhZGVyJiBpbmRleGluZ0hlYWRlciwgc2l6ZV90IGlu
ZGV4aW5nUGF5bG9hZFNpemVJbkJ5dGVzKQogewogICAgIHNpemVfdCBzaXplID0gdG90YWxTaXpl
KHByZUNhcGFjaXR5LCBwcm9wZXJ0eUNhcGFjaXR5LCBoYXNJbmRleGluZ0hlYWRlciwgaW5kZXhp
bmdQYXlsb2FkU2l6ZUluQnl0ZXMpOwotICAgIHZvaWQqIGJhc2UgPSB2bS5qc1ZhbHVlR2lnYWNh
Z2VBdXhpbGlhcnlTcGFjZS5hbGxvY2F0ZU5vblZpcnR1YWwodm0sIHNpemUsIG51bGxwdHIsIEFs
bG9jYXRpb25GYWlsdXJlTW9kZTo6UmV0dXJuTnVsbCk7CisgICAgdm9pZCogYmFzZSA9IHZtLmpz
VmFsdWVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlKCkuYWxsb2NhdGVOb25WaXJ0dWFsKHZtLCBzaXpl
LCBudWxscHRyLCBBbGxvY2F0aW9uRmFpbHVyZU1vZGU6OlJldHVybk51bGwpOwogICAgIGlmICgh
YmFzZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgQnV0dGVyZmx5KiByZXN1bHQgPSBm
cm9tQmFzZShiYXNlLCBwcmVDYXBhY2l0eSwgcHJvcGVydHlDYXBhY2l0eSk7CkBAIC0xNzQsNyAr
MTc0LDcgQEAgaW5saW5lIEJ1dHRlcmZseSogQnV0dGVyZmx5Ojpncm93QXJyYXlSaQogICAgIHZv
aWQqIHRoZUJhc2UgPSBiYXNlKDAsIHByb3BlcnR5Q2FwYWNpdHkpOwogICAgIHNpemVfdCBvbGRT
aXplID0gdG90YWxTaXplKDAsIHByb3BlcnR5Q2FwYWNpdHksIGhhZEluZGV4aW5nSGVhZGVyLCBv
bGRJbmRleGluZ1BheWxvYWRTaXplSW5CeXRlcyk7CiAgICAgc2l6ZV90IG5ld1NpemUgPSB0b3Rh
bFNpemUoMCwgcHJvcGVydHlDYXBhY2l0eSwgdHJ1ZSwgbmV3SW5kZXhpbmdQYXlsb2FkU2l6ZUlu
Qnl0ZXMpOwotICAgIHZvaWQqIG5ld0Jhc2UgPSB2bS5qc1ZhbHVlR2lnYWNhZ2VBdXhpbGlhcnlT
cGFjZS5hbGxvY2F0ZU5vblZpcnR1YWwodm0sIG5ld1NpemUsIG51bGxwdHIsIEFsbG9jYXRpb25G
YWlsdXJlTW9kZTo6UmV0dXJuTnVsbCk7CisgICAgdm9pZCogbmV3QmFzZSA9IHZtLmpzVmFsdWVH
aWdhY2FnZUF1eGlsaWFyeVNwYWNlKCkuYWxsb2NhdGVOb25WaXJ0dWFsKHZtLCBuZXdTaXplLCBu
dWxscHRyLCBBbGxvY2F0aW9uRmFpbHVyZU1vZGU6OlJldHVybk51bGwpOwogICAgIGlmICghbmV3
QmFzZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgLy8gRklYTUU6IFRoaXMgcHJvYmFi
bHkgc2hvdWxkbid0IGJlIGEgbWVtY3B5LgpAQCAtMjExLDEzICsyMTEsMTMgQEAgaW5saW5lIEJ1
dHRlcmZseSogQnV0dGVyZmx5OjpyZWFsbG9jQXJyYQogICAgIC8vIE9iamVjdHMgd2l0aCBubyBw
cm9wZXJ0aWVzIGFyZSBjb21tb24gaW4gYXJyYXlzLCBhbmQgd2UgYXJlIGZvY3VzaW5nIG9uIHZl
cnkgbGFyZ2UgYXJyYXkgY3JhZnRlZCBieSByZXBlYXRpbmcgQXJyYXkjcHVzaCwgc28uLi4gdGhh
dCdzIGZpbmUhCiAgICAgYm9vbCBjYW5SZWFsbG9jID0gIXByb3BlcnR5Q2FwYWNpdHkgJiYgIXZt
LmhlYXAubXV0YXRvclNob3VsZEJlRmVuY2VkKCkgJiYgYml0d2lzZV9jYXN0PEhlYXBDZWxsKj4o
dGhlQmFzZSktPmlzUHJlY2lzZUFsbG9jYXRpb24oKTsKICAgICBpZiAoY2FuUmVhbGxvYykgewot
ICAgICAgICB2b2lkKiBuZXdCYXNlID0gdm0uanNWYWx1ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2Uu
cmVhbGxvY2F0ZVByZWNpc2VBbGxvY2F0aW9uTm9uVmlydHVhbCh2bSwgYml0d2lzZV9jYXN0PEhl
YXBDZWxsKj4odGhlQmFzZSksIG5ld1NpemUsICZkZWZlcnJhbENvbnRleHQsIEFsbG9jYXRpb25G
YWlsdXJlTW9kZTo6UmV0dXJuTnVsbCk7CisgICAgICAgIHZvaWQqIG5ld0Jhc2UgPSB2bS5qc1Zh
bHVlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZSgpLnJlYWxsb2NhdGVQcmVjaXNlQWxsb2NhdGlvbk5v
blZpcnR1YWwodm0sIGJpdHdpc2VfY2FzdDxIZWFwQ2VsbCo+KHRoZUJhc2UpLCBuZXdTaXplLCAm
ZGVmZXJyYWxDb250ZXh0LCBBbGxvY2F0aW9uRmFpbHVyZU1vZGU6OlJldHVybk51bGwpOwogICAg
ICAgICBpZiAoIW5ld0Jhc2UpCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAg
cmV0dXJuIGZyb21CYXNlKG5ld0Jhc2UsIDAsIHByb3BlcnR5Q2FwYWNpdHkpOwogICAgIH0KIAot
ICAgIHZvaWQqIG5ld0Jhc2UgPSB2bS5qc1ZhbHVlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZS5hbGxv
Y2F0ZU5vblZpcnR1YWwodm0sIG5ld1NpemUsICZkZWZlcnJhbENvbnRleHQsIEFsbG9jYXRpb25G
YWlsdXJlTW9kZTo6UmV0dXJuTnVsbCk7CisgICAgdm9pZCogbmV3QmFzZSA9IHZtLmpzVmFsdWVH
aWdhY2FnZUF1eGlsaWFyeVNwYWNlKCkuYWxsb2NhdGVOb25WaXJ0dWFsKHZtLCBuZXdTaXplLCAm
ZGVmZXJyYWxDb250ZXh0LCBBbGxvY2F0aW9uRmFpbHVyZU1vZGU6OlJldHVybk51bGwpOwogICAg
IGlmICghbmV3QmFzZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgZ2NTYWZlTWVtY3B5
KHN0YXRpY19jYXN0PEpTVmFsdWUqPihuZXdCYXNlKSwgc3RhdGljX2Nhc3Q8SlNWYWx1ZSo+KHRo
ZUJhc2UpLCBvbGRTaXplKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nh
Y2hlZFR5cGVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Q2FjaGVkVHlwZXMuaAkocmV2aXNpb24gMjg2MDQzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQ2FjaGVkVHlwZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTgtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTgtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM5LDYgKzM5LDcgQEAg
Y2xhc3MgQ2FjaGVkQnl0ZWNvZGU7CiBjbGFzcyBTb3VyY2VDb2RlS2V5OwogY2xhc3MgVW5saW5r
ZWRDb2RlQmxvY2s7CiBjbGFzcyBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrOworY2xhc3MgVW5s
aW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU7CiAKIGVudW0gY2xhc3MgU291cmNlQ29kZVR5cGU7CiAK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nsb25lZEFyZ3VtZW50cy5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nsb25lZEFyZ3VtZW50
cy5oCShyZXZpc2lvbiAyODYwNDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9D
bG9uZWRBcmd1bWVudHMuaAkod29ya2luZyBjb3B5KQpAQCAtNDYsNyArNDYsNyBAQCBwdWJsaWM6
CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewogICAg
ICAgICBzdGF0aWNfYXNzZXJ0KCFDZWxsVHlwZTo6bmVlZHNEZXN0cnVjdGlvbiwgIiIpOwotICAg
ICAgICByZXR1cm4gJnZtLmNsb25lZEFyZ3VtZW50c1NwYWNlOworICAgICAgICByZXR1cm4gJnZt
LmNsb25lZEFyZ3VtZW50c1NwYWNlKCk7CiAgICAgfQogICAgIAogcHJpdmF0ZToKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbnNvbGVPYmplY3QuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db25zb2xlT2JqZWN0LmgJKHJldmlzaW9u
IDI4NjA0MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbnNvbGVPYmplY3Qu
aAkod29ya2luZyBjb3B5KQpAQCAtMzcsNyArMzcsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIElz
b1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNT
RVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShDb25zb2xlT2JqZWN0LCBCYXNlKTsKLSAgICAgICAg
cmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2Jq
ZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgQ29uc29sZU9iamVjdCogY3JlYXRlKFZN
JiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUp
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DdXN0b21HZXR0ZXJTZXR0ZXIu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DdXN0b21HZXR0
ZXJTZXR0ZXIuaAkocmV2aXNpb24gMjg2MDQzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQ3VzdG9tR2V0dGVyU2V0dGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTQzLDcgKzQzLDcg
QEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlLCBTdWJzcGFjZUFjY2Vz
cz4KICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7Ci0g
ICAgICAgIHJldHVybiAmdm0uY3VzdG9tR2V0dGVyU2V0dGVyU3BhY2U7CisgICAgICAgIHJldHVy
biAmdm0uY3VzdG9tR2V0dGVyU2V0dGVyU3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgQ3Vz
dG9tR2V0dGVyU2V0dGVyKiBjcmVhdGUoVk0mIHZtLCBDdXN0b21HZXR0ZXIgY3VzdG9tR2V0dGVy
LCBDdXN0b21TZXR0ZXIgY3VzdG9tU2V0dGVyKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvRE9NQXR0cmlidXRlR2V0dGVyU2V0dGVyLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRE9NQXR0cmlidXRlR2V0dGVyU2V0dGVyLmgJKHJldmlz
aW9uIDI4NjA0MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RPTUF0dHJpYnV0
ZUdldHRlclNldHRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC00Myw3ICs0Myw3IEBAIHB1YmxpYzoK
ICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vic3BhY2VBY2Nlc3M+CiAgICAgc3Rh
dGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewotICAgICAgICByZXR1
cm4gJnZtLmRvbUF0dHJpYnV0ZUdldHRlclNldHRlclNwYWNlOworICAgICAgICByZXR1cm4gJnZt
LmRvbUF0dHJpYnV0ZUdldHRlclNldHRlclNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIERP
TUF0dHJpYnV0ZUdldHRlclNldHRlciogY3JlYXRlKFZNJiB2bSwgQ3VzdG9tR2V0dGVyIGN1c3Rv
bUdldHRlciwgQ3VzdG9tU2V0dGVyIGN1c3RvbVNldHRlciwgRE9NQXR0cmlidXRlQW5ub3RhdGlv
biBkb21BdHRyaWJ1dGUpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRl
SW5zdGFuY2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9E
YXRlSW5zdGFuY2UuaAkocmV2aXNpb24gMjg2MDQzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvRGF0ZUluc3RhbmNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM3LDcgKzM3LDcgQEAg
cHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlLCBTdWJzcGFjZUFjY2VzcyBt
b2RlPgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsK
LSAgICAgICAgcmV0dXJuICZ2bS5kYXRlSW5zdGFuY2VTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2
bS5kYXRlSW5zdGFuY2VTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBEYXRlSW5zdGFuY2Uq
IGNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBkb3VibGUgZGF0ZSkKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVQcm90b3R5cGUuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlUHJvdG90eXBlLmgJKHJldmlz
aW9uIDI4NjA0MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVQcm90b3R5
cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzUsNyArMzUsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGlj
IElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNf
QVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShEYXRlUHJvdG90eXBlLCBCYXNlKTsKLSAgICAg
ICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWlu
T2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgRGF0ZVByb3RvdHlwZSogY3JlYXRl
KFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EaXJlY3RBcmd1bWVudHMu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EaXJlY3RBcmd1
bWVudHMuaAkocmV2aXNpb24gMjg2MDQzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvRGlyZWN0QXJndW1lbnRzLmgJKHdvcmtpbmcgY29weSkKQEAgLTUwLDcgKzUwLDcgQEAgcHVi
bGljOgogICAgIHN0YXRpYyBDb21wbGV0ZVN1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAg
ICAgewogICAgICAgICBzdGF0aWNfYXNzZXJ0KCFDZWxsVHlwZTo6bmVlZHNEZXN0cnVjdGlvbiwg
IiIpOwotICAgICAgICByZXR1cm4gJnZtLnZhcmlhYmxlU2l6ZWRDZWxsU3BhY2U7CisgICAgICAg
IHJldHVybiAmdm0udmFyaWFibGVTaXplZENlbGxTcGFjZSgpOwogICAgIH0KIAogICAgIC8vIENy
ZWF0ZXMgYW4gYXJndW1lbnRzIG9iamVjdCBidXQgbGVhdmVzIGl0IHVuaW5pdGlhbGl6ZWQuIFRo
aXMgaXMgZGFuZ2Vyb3VzIGlmIHdlIEdDIHJpZ2h0CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9FcnJvclByb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0Vycm9yUHJvdG90eXBlLmgJKHJldmlzaW9uIDI4NjA0MykKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yUHJvdG90eXBlLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTQ1LDcgKzQ1LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vi
c3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BB
Q0VfU0hBUkFCTEUoRXJyb3JQcm90b3R5cGVCYXNlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2
bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2Uo
KTsKICAgICB9CiAKICAgICBERUNMQVJFX0lORk87CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9FeGNlcHRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9FeGNlcHRpb24uaAkocmV2aXNpb24gMjg2MDQzKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTQwLDcgKzQw
LDcgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlLCBTdWJzcGFjZUFj
Y2VzcyBtb2RlPgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQog
ICAgIHsKLSAgICAgICAgcmV0dXJuICZ2bS5leGNlcHRpb25TcGFjZTsKKyAgICAgICAgcmV0dXJu
ICZ2bS5leGNlcHRpb25TcGFjZSgpOwogICAgIH0KIAogICAgIGVudW0gU3RhY2tDYXB0dXJlQWN0
aW9uIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ZpbmFsaXphdGlvblJl
Z2lzdHJ5UHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvRmluYWxpemF0aW9uUmVnaXN0cnlQcm90b3R5cGUuaAkocmV2aXNpb24gMjg2MDQzKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRmluYWxpemF0aW9uUmVnaXN0cnlQcm90
b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzcsNyArMzcsNyBAQCBwdWJsaWM6CiAgICAgc3Rh
dGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFU
SUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShGaW5hbGl6YXRpb25SZWdpc3RyeVByb3Rv
dHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAg
ICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIEZp
bmFsaXphdGlvblJlZ2lzdHJ5UHJvdG90eXBlKiBjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uRXhlY3V0YWJsZS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uRXhlY3V0YWJsZS5oCShyZXZpc2lv
biAyODYwNDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkV4ZWN1
dGFibGUuaAkod29ya2luZyBjb3B5KQpAQCAtNDYsNyArNDYsNyBAQCBwdWJsaWM6CiAgICAgdGVt
cGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNzPgogICAgIHN0YXRpYyBJc29T
dWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKLSAgICAgICAgcmV0dXJuICZ2bS5m
dW5jdGlvbkV4ZWN1dGFibGVTcGFjZS5zcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5mdW5jdGlv
bkV4ZWN1dGFibGVTcGFjZSgpLnNwYWNlOwogICAgIH0KIAogICAgIHN0YXRpYyBGdW5jdGlvbkV4
ZWN1dGFibGUqIGNyZWF0ZShWTSYgdm0sIFNjcmlwdEV4ZWN1dGFibGUqIHRvcExldmVsRXhlY3V0
YWJsZSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJs
ZSogdW5saW5rZWRFeGVjdXRhYmxlLCBJbnRyaW5zaWMgaW50cmluc2ljLCBib29sIGlzSW5zaWRl
T3JkaW5hcnlGdW5jdGlvbikKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dl
bmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuaAkocmV2aXNpb24gMjg2
MDQzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yRnVuY3Rpb25Q
cm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtNDAsNyArNDAsNyBAQCBwdWJsaWM6CiAgICAg
c3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewogICAgICAgICBT
VEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShHZW5lcmF0b3JGdW5jdGlvblByb3Rv
dHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAg
ICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIEdl
bmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlKiBjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvclByb3Rv
dHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVy
YXRvclByb3RvdHlwZS5oCShyZXZpc2lvbiAyODYwNDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9HZW5lcmF0b3JQcm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtNDEsNyAr
NDEsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYg
dm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShH
ZW5lcmF0b3JQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0
U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAog
ICAgIHN0YXRpYyBHZW5lcmF0b3JQcm90b3R5cGUqIGNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2Jq
ZWN0KiwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9HZXR0ZXJTZXR0ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9HZXR0ZXJTZXR0ZXIuaAkocmV2aXNpb24gMjg2MDQzKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvR2V0dGVyU2V0dGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTU5
LDcgKzU5LDcgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlLCBTdWJz
cGFjZUFjY2Vzcz4KICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkK
ICAgICB7Ci0gICAgICAgIHJldHVybiAmdm0uZ2V0dGVyU2V0dGVyU3BhY2U7CisgICAgICAgIHJl
dHVybiAmdm0uZ2V0dGVyU2V0dGVyU3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgR2V0dGVy
U2V0dGVyKiBjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU09i
amVjdCogZ2V0dGVyLCBKU09iamVjdCogc2V0dGVyKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSGFzaE1hcEltcGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9IYXNoTWFwSW1wbC5oCShyZXZpc2lvbiAyODYwNDMpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9IYXNoTWFwSW1wbC5oCSh3b3JraW5nIGNvcHkpCkBAIC0y
MTMsNyArMjEzLDcgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgYXV0byBzY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOwogICAgICAgICBzaXplX3QgYWxsb2NhdGlvblNpemUgPSBIYXNo
TWFwQnVmZmVyOjphbGxvY2F0aW9uU2l6ZShjYXBhY2l0eSk7Ci0gICAgICAgIHZvaWQqIGRhdGEg
PSB2bS5qc1ZhbHVlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZS5hbGxvY2F0ZU5vblZpcnR1YWwodm0s
IGFsbG9jYXRpb25TaXplLCBudWxscHRyLCBBbGxvY2F0aW9uRmFpbHVyZU1vZGU6OlJldHVybk51
bGwpOworICAgICAgICB2b2lkKiBkYXRhID0gdm0uanNWYWx1ZUdpZ2FjYWdlQXV4aWxpYXJ5U3Bh
Y2UoKS5hbGxvY2F0ZU5vblZpcnR1YWwodm0sIGFsbG9jYXRpb25TaXplLCBudWxscHRyLCBBbGxv
Y2F0aW9uRmFpbHVyZU1vZGU6OlJldHVybk51bGwpOwogICAgICAgICBpZiAoIWRhdGEpIHsKICAg
ICAgICAgICAgIHRocm93T3V0T2ZNZW1vcnlFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlKTsKICAg
ICAgICAgICAgIHJldHVybiBudWxscHRyOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSW50ZXJuYWxGdW5jdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0ludGVybmFsRnVuY3Rpb24uaAkocmV2aXNpb24gMjg2MDQzKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50ZXJuYWxGdW5jdGlvbi5oCSh3b3JraW5nIGNv
cHkpCkBAIC00MSw3ICs0MSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1
YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAgIHN0YXRpY19hc3NlcnQoc2l6ZW9mKENl
bGxUeXBlKSA9PSBzaXplb2YoSW50ZXJuYWxGdW5jdGlvbiksICJJbnRlcm5hbEZ1bmN0aW9uIHN1
YmNsYXNzZXMgdGhhdCBhZGQgZmllbGRzIG5lZWQgdG8gb3ZlcnJpZGUgc3Vic3BhY2VGb3I8Pigp
Iik7Ci0gICAgICAgIHJldHVybiAmdm0uaW50ZXJuYWxGdW5jdGlvblNwYWNlOworICAgICAgICBy
ZXR1cm4gJnZtLmludGVybmFsRnVuY3Rpb25TcGFjZSgpOwogICAgIH0KIAogICAgIERFQ0xBUkVf
RVhQT1JUX0lORk87CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsQ29s
bGF0b3JQcm90b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9JbnRsQ29sbGF0b3JQcm90b3R5cGUuaAkocmV2aXNpb24gMjg2MDQzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bENvbGxhdG9yUHJvdG90eXBlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTEsNiArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDE1IEFuZHkgVmFu
V2Fnb25lciAoYW5keUB2YW53YWdvbmVyLmZhbWlseSkKLSAqIENvcHlyaWdodCAoQykgMjAxOSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTktMjAy
MSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKQEAgLTM5LDcgKzM5LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJc29TdWJzcGFj
ZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09f
U1VCU1BBQ0VfU0hBUkFCTEUoSW50bENvbGxhdG9yUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAg
cmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2Jq
ZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgSW50bENvbGxhdG9yUHJvdG90eXBlKiBj
cmVhdGUoVk0mLCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSopOwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0
UHJvdG90eXBlLmgJKHJldmlzaW9uIDI4NjA0MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0ludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDYgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxNSBBbmR5IFZhbldhZ29uZXIgKGFu
ZHlAdmFud2Fnb25lci5mYW1pbHkpCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE5LTIwMjEgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC0zOSw3ICszOSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNl
Rm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NI
QVJBQkxFKEludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVy
biAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNw
YWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIEludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZSog
Y3JlYXRlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqKTsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEaXNwbGF5TmFtZXNQcm90b3R5cGUuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGlzcGxheU5hbWVzUHJv
dG90eXBlLmgJKHJldmlzaW9uIDI4NjA0MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0ludGxEaXNwbGF5TmFtZXNQcm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsx
LDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDIwLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zOCw3ICszOCw3
IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkK
ICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEludGxE
aXNwbGF5TmFtZXNQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2Jq
ZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0K
IAogICAgIHN0YXRpYyBJbnRsRGlzcGxheU5hbWVzUHJvdG90eXBlKiBjcmVhdGUoVk0mLCBTdHJ1
Y3R1cmUqKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxMaXN0Rm9y
bWF0UHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSW50bExpc3RGb3JtYXRQcm90b3R5cGUuaAkocmV2aXNpb24gMjg2MDQzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bExpc3RGb3JtYXRQcm90b3R5cGUuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDIwLTIwMjEgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCkBAIC0zOCw3ICszOCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1
YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQ
QUNFX1NIQVJBQkxFKEludGxMaXN0Rm9ybWF0UHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0
dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0
U3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgSW50bExpc3RGb3JtYXRQcm90b3R5cGUqIGNy
ZWF0ZShWTSYsIFN0cnVjdHVyZSopOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSW50bExvY2FsZVByb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0ludGxMb2NhbGVQcm90b3R5cGUuaAkocmV2aXNpb24gMjg2MDQzKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bExvY2FsZVByb3RvdHlwZS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAyMCBTb255
IEludGVyYWN0aXZlIEVudGVydGFpbm1lbnQgSW5jLgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwpAQCAtMzgsNyArMzksNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBz
dWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJT
UEFDRV9TSEFSQUJMRShJbnRsTG9jYWxlUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJu
ICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3Bh
Y2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgSW50bExvY2FsZVByb3RvdHlwZSogY3JlYXRlKFZN
JiwgU3RydWN0dXJlKik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRs
TnVtYmVyRm9ybWF0UHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdFByb3RvdHlwZS5oCShyZXZpc2lvbiAyODYwNDMp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0UHJvdG90
eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChD
KSAyMDE1IEFuZHkgVmFuV2Fnb25lciAoYW5keUB2YW53YWdvbmVyLmZhbWlseSkKLSAqIENvcHly
aWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMTktMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM5LDcgKzM5LDcgQEAgcHVibGljOgogICAgIHN0
YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAgICAgU1RB
VElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSW50bE51bWJlckZvcm1hdFByb3RvdHlw
ZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAg
cmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIEludGxO
dW1iZXJGb3JtYXRQcm90b3R5cGUqIGNyZWF0ZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0
dXJlKik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsT2JqZWN0LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE9iamVjdC5o
CShyZXZpc2lvbiAyODYwNDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRs
T2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw2IEBACiAvKgogICogQ29weXJpZ2h0
IChDKSAyMDE1IEFuZHkgVmFuV2Fnb25lciAoYW5keUB2YW53YWdvbmVyLmZhbWlseSkKLSAqIENv
cHlyaWdodCAoQykgMjAxOS0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAxOS0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqIENvcHlyaWdodCAoQykgMjAyMCBTb255IEludGVyYWN0aXZlIEVudGVydGFpbm1lbnQgSW5j
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dApAQCAtNzYsNyArNzYsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGlj
IElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNf
QVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShJbnRsT2JqZWN0LCBCYXNlKTsKLSAgICAgICAg
cmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2Jq
ZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgSW50bE9iamVjdCogY3JlYXRlKFZNJiwg
SlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0ludGxQbHVyYWxSdWxlc1Byb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxQbHVyYWxSdWxlc1Byb3RvdHlwZS5oCShyZXZp
c2lvbiAyODYwNDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsUGx1cmFs
UnVsZXNQcm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiBD
b3B5cmlnaHQgKEMpIDIwMTggQW5keSBWYW5XYWdvbmVyIChhbmR5QHZhbndhZ29uZXIuZmFtaWx5
KQotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAxOS0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzksNyArMzksNyBAQCBwdWJs
aWM6CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewog
ICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShJbnRsUGx1cmFsUnVs
ZXNQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7
CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIHN0
YXRpYyBJbnRsUGx1cmFsUnVsZXNQcm90b3R5cGUqIGNyZWF0ZShWTSYsIEpTR2xvYmFsT2JqZWN0
KiwgU3RydWN0dXJlKik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRs
UmVsYXRpdmVUaW1lRm9ybWF0UHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSW50bFJlbGF0aXZlVGltZUZvcm1hdFByb3RvdHlwZS5oCShyZXZp
c2lvbiAyODYwNDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsUmVsYXRp
dmVUaW1lRm9ybWF0UHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw2IEBACiAv
KgogICogQ29weXJpZ2h0IChDKSAyMDIwIFNvbnkgSW50ZXJhY3RpdmUgRW50ZXJ0YWlubWVudCBJ
bmMuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zOCw3ICszOSw3IEBAIHB1Ymxp
YzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAg
ICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEludGxSZWxhdGl2ZVRp
bWVGb3JtYXRQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0
U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAog
ICAgIHN0YXRpYyBJbnRsUmVsYXRpdmVUaW1lRm9ybWF0UHJvdG90eXBlKiBjcmVhdGUoVk0mLCBT
dHJ1Y3R1cmUqKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxTZWdt
ZW50SXRlcmF0b3JQcm90b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9JbnRsU2VnbWVudEl0ZXJhdG9yUHJvdG90eXBlLmgJKHJldmlzaW9uIDI4NjA0
MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxTZWdtZW50SXRlcmF0b3JQ
cm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDIwLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zOCw3ICszOCw3IEBAIHB1YmxpYzoKICAgICBzdGF0
aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJ
Q19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEludGxTZWdtZW50SXRlcmF0b3JQcm90b3R5
cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAg
IHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBJbnRs
U2VnbWVudEl0ZXJhdG9yUHJvdG90eXBlKiBjcmVhdGUoVk0mLCBTdHJ1Y3R1cmUqKTsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxTZWdtZW50ZXJQcm90b3R5cGUuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsU2VnbWVudGVy
UHJvdG90eXBlLmgJKHJldmlzaW9uIDI4NjA0MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0ludGxTZWdtZW50ZXJQcm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsx
LDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDIwLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zOCw3ICszOCw3
IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkK
ICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEludGxT
ZWdtZW50ZXJQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0
U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAog
ICAgIHN0YXRpYyBJbnRsU2VnbWVudGVyUHJvdG90eXBlKiBjcmVhdGUoVk0mLCBTdHJ1Y3R1cmUq
KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxTZWdtZW50c1Byb3Rv
dHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxT
ZWdtZW50c1Byb3RvdHlwZS5oCShyZXZpc2lvbiAyODYwNDMpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9JbnRsU2VnbWVudHNQcm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAt
MSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDIwLTIwMjEgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zOCw3
ICszOCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZN
JiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxF
KEludGxTZWdtZW50c1Byb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5P
YmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAg
fQogCiAgICAgc3RhdGljIEludGxTZWdtZW50c1Byb3RvdHlwZSogY3JlYXRlKFZNJiwgSlNHbG9i
YWxPYmplY3QqLCBTdHJ1Y3R1cmUqKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0l0ZXJhdG9yUHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSXRlcmF0b3JQcm90b3R5cGUuaAkocmV2aXNpb24gMjg2MDQzKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSXRlcmF0b3JQcm90b3R5cGUuaAkod29ya2luZyBj
b3B5KQpAQCAtMzksNyArMzksNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBz
dWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJT
UEFDRV9TSEFSQUJMRShJdGVyYXRvclByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAm
dm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNl
KCk7CiAgICAgfQogCiAgICAgc3RhdGljIEl0ZXJhdG9yUHJvdG90eXBlKiBjcmVhdGUoVk0mIHZt
LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuY3BwCShyZXZpc2lvbiAy
ODYwNDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNTYsNyArNTYsNyBAQCBKU0FycmF5KiBKU0FycmF5Ojp0cnlDcmVhdGVV
bmluaXRpYWxpemVkCiAgICAgICAgICAgICB8fCBoYXNDb250aWd1b3VzKGluZGV4aW5nVHlwZSkp
OwogCiAgICAgICAgIHVuc2lnbmVkIHZlY3Rvckxlbmd0aCA9IEJ1dHRlcmZseTo6b3B0aW1hbENv
bnRpZ3VvdXNWZWN0b3JMZW5ndGgoc3RydWN0dXJlLCBpbml0aWFsTGVuZ3RoKTsKLSAgICAgICAg
dm9pZCogdGVtcCA9IHZtLmpzVmFsdWVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlLmFsbG9jYXRlTm9u
VmlydHVhbCgKKyAgICAgICAgdm9pZCogdGVtcCA9IHZtLmpzVmFsdWVHaWdhY2FnZUF1eGlsaWFy
eVNwYWNlKCkuYWxsb2NhdGVOb25WaXJ0dWFsKAogICAgICAgICAgICAgdm0sCiAgICAgICAgICAg
ICBCdXR0ZXJmbHk6OnRvdGFsU2l6ZSgwLCBvdXRPZkxpbmVTdG9yYWdlLCB0cnVlLCB2ZWN0b3JM
ZW5ndGggKiBzaXplb2YoRW5jb2RlZEpTVmFsdWUpKSwKICAgICAgICAgICAgIGRlZmVycmFsQ29u
dGV4dCwgQWxsb2NhdGlvbkZhaWx1cmVNb2RlOjpSZXR1cm5OdWxsKTsKQEAgLTc4LDcgKzc4LDcg
QEAgSlNBcnJheSogSlNBcnJheTo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZAogICAgICAgICAgICAg
fHwgaW5kZXhpbmdUeXBlID09IEFycmF5V2l0aEFycmF5U3RvcmFnZSk7CiAgICAgICAgIHN0YXRp
YyBjb25zdGV4cHIgdW5zaWduZWQgaW5kZXhCaWFzID0gMDsKICAgICAgICAgdW5zaWduZWQgdmVj
dG9yTGVuZ3RoID0gQXJyYXlTdG9yYWdlOjpvcHRpbWFsVmVjdG9yTGVuZ3RoKGluZGV4Qmlhcywg
c3RydWN0dXJlLCBpbml0aWFsTGVuZ3RoKTsKLSAgICAgICAgdm9pZCogdGVtcCA9IHZtLmpzVmFs
dWVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlLmFsbG9jYXRlTm9uVmlydHVhbCgKKyAgICAgICAgdm9p
ZCogdGVtcCA9IHZtLmpzVmFsdWVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlKCkuYWxsb2NhdGVOb25W
aXJ0dWFsKAogICAgICAgICAgICAgdm0sCiAgICAgICAgICAgICBCdXR0ZXJmbHk6OnRvdGFsU2l6
ZShpbmRleEJpYXMsIG91dE9mTGluZVN0b3JhZ2UsIHRydWUsIEFycmF5U3RvcmFnZTo6c2l6ZUZv
cih2ZWN0b3JMZW5ndGgpKSwKICAgICAgICAgICAgIGRlZmVycmFsQ29udGV4dCwgQWxsb2NhdGlv
bkZhaWx1cmVNb2RlOjpSZXR1cm5OdWxsKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTQXJyYXkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0FycmF5LmgJKHJldmlzaW9uIDI4NjA0MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTQXJyYXkuaAkod29ya2luZyBjb3B5KQpAQCAtNTEsNyArNTEsNyBAQCBwdWJs
aWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNzPgogICAg
IHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKLSAgICAgICAg
cmV0dXJuICZ2bS5hcnJheVNwYWNlOworICAgICAgICByZXR1cm4gJnZtLmFycmF5U3BhY2UoKTsK
ICAgICB9CiAgICAgICAgIAogcHJvdGVjdGVkOgpAQCAtMjQ0LDcgKzI0NCw3IEBAIGlubGluZSBK
U0FycmF5KiBKU0FycmF5Ojp0cnlDcmVhdGUoVk0mIHYKICAgICAgICAgICAgIHJldHVybiBudWxs
cHRyOwogCiAgICAgICAgIHVuc2lnbmVkIHZlY3Rvckxlbmd0aCA9IEJ1dHRlcmZseTo6b3B0aW1h
bENvbnRpZ3VvdXNWZWN0b3JMZW5ndGgoc3RydWN0dXJlLCB2ZWN0b3JMZW5ndGhIaW50KTsKLSAg
ICAgICAgdm9pZCogdGVtcCA9IHZtLmpzVmFsdWVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlLmFsbG9j
YXRlTm9uVmlydHVhbCgKKyAgICAgICAgdm9pZCogdGVtcCA9IHZtLmpzVmFsdWVHaWdhY2FnZUF1
eGlsaWFyeVNwYWNlKCkuYWxsb2NhdGVOb25WaXJ0dWFsKAogICAgICAgICAgICAgdm0sCiAgICAg
ICAgICAgICBCdXR0ZXJmbHk6OnRvdGFsU2l6ZSgwLCBvdXRPZkxpbmVTdG9yYWdlLCB0cnVlLCB2
ZWN0b3JMZW5ndGggKiBzaXplb2YoRW5jb2RlZEpTVmFsdWUpKSwKICAgICAgICAgICAgIG51bGxw
dHIsIEFsbG9jYXRpb25GYWlsdXJlTW9kZTo6UmV0dXJuTnVsbCk7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyUHJvdG90eXBlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlclByb3RvdHlwZS5o
CShyZXZpc2lvbiAyODYwNDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Fy
cmF5QnVmZmVyUHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgot
ICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzcsNyArMzcsNyBAQCBw
dWJsaWM6CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAg
ewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU0FycmF5QnVm
ZmVyUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNl
OworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBz
dGF0aWMgSlNBcnJheUJ1ZmZlclByb3RvdHlwZSogY3JlYXRlKFZNJiwgSlNHbG9iYWxPYmplY3Qq
LCBTdHJ1Y3R1cmUqLCBBcnJheUJ1ZmZlclNoYXJpbmdNb2RlID0gQXJyYXlCdWZmZXJTaGFyaW5n
TW9kZTo6RGVmYXVsdCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Fy
cmF5QnVmZmVyVmlldy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNBcnJheUJ1ZmZlclZpZXcuY3BwCShyZXZpc2lvbiAyODYwNDMpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyVmlldy5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTY0LDcgKzY0LDcgQEAgSlNBcnJheUJ1ZmZlclZpZXc6OkNvbnN0cnVjdGlvbkNvbnRl
eHQ6OgogICAgICAgICAvLyBBdHRlbXB0IEdDIGFsbG9jYXRpb24uCiAgICAgICAgIHZvaWQqIHRl
bXA7CiAgICAgICAgIHNpemVfdCBzaXplID0gc2l6ZU9mKGxlbmd0aCwgZWxlbWVudFNpemUpOwot
ICAgICAgICB0ZW1wID0gdm0ucHJpbWl0aXZlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZS5hbGxvY2F0
ZU5vblZpcnR1YWwodm0sIHNpemUsIG51bGxwdHIsIEFsbG9jYXRpb25GYWlsdXJlTW9kZTo6UmV0
dXJuTnVsbCk7CisgICAgICAgIHRlbXAgPSB2bS5wcmltaXRpdmVHaWdhY2FnZUF1eGlsaWFyeVNw
YWNlKCkuYWxsb2NhdGVOb25WaXJ0dWFsKHZtLCBzaXplLCBudWxscHRyLCBBbGxvY2F0aW9uRmFp
bHVyZU1vZGU6OlJldHVybk51bGwpOwogICAgICAgICBpZiAoIXRlbXApCiAgICAgICAgICAgICBy
ZXR1cm47CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQmlnSW50LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JpZ0ludC5j
cHAJKHJldmlzaW9uIDI4NjA0MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
QmlnSW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE3LDcgKzExNyw3IEBAIGlubGluZSBKU0Jp
Z0ludCogSlNCaWdJbnQ6OmNyZWF0ZVdpdGhMZW4KICAgICB9CiAKICAgICBBU1NFUlQobGVuZ3Ro
IDw9IG1heExlbmd0aCk7Ci0gICAgdm9pZCogZGF0YSA9IHZtLnByaW1pdGl2ZUdpZ2FjYWdlQXV4
aWxpYXJ5U3BhY2UuYWxsb2NhdGVOb25WaXJ0dWFsKHZtLCBsZW5ndGggKiBzaXplb2YoRGlnaXQp
LCBudWxscHRyLCBBbGxvY2F0aW9uRmFpbHVyZU1vZGU6OlJldHVybk51bGwpOworICAgIHZvaWQq
IGRhdGEgPSB2bS5wcmltaXRpdmVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlKCkuYWxsb2NhdGVOb25W
aXJ0dWFsKHZtLCBsZW5ndGggKiBzaXplb2YoRGlnaXQpLCBudWxscHRyLCBBbGxvY2F0aW9uRmFp
bHVyZU1vZGU6OlJldHVybk51bGwpOwogICAgIGlmIChVTkxJS0VMWSghZGF0YSkpIHsKICAgICAg
ICAgaWYgKG51bGxPckdsb2JhbE9iamVjdEZvck9PTSkgewogICAgICAgICAgICAgYXV0byBzY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNCaWdJbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0JpZ0ludC5oCShyZXZpc2lvbiAyODYwNDMpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0JpZ0ludC5oCSh3b3JraW5nIGNvcHkpCkBAIC01Niw3ICs1Niw3IEBA
IHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vic3BhY2VBY2Nlc3M+
CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewotICAg
ICAgICByZXR1cm4gJnZtLmJpZ0ludFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLmJpZ0ludFNw
YWNlKCk7CiAgICAgfQogCiAgICAgZW51bSBjbGFzcyBJbml0aWFsaXphdGlvblR5cGUgeyBOb25l
LCBXaXRoWmVybyB9OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDYWxs
ZWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NhbGxl
ZS5oCShyZXZpc2lvbiAyODYwNDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0NhbGxlZS5oCSh3b3JraW5nIGNvcHkpCkBAIC01MCw3ICs1MCw3IEBAIHB1YmxpYzoKICAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vic3BhY2VBY2Nlc3M+CiAgICAgc3RhdGljIElz
b1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewotICAgICAgICByZXR1cm4gJnZt
LmNhbGxlZVNwYWNlOworICAgICAgICByZXR1cm4gJnZtLmNhbGxlZVNwYWNlKCk7CiAgICAgfQog
CiAgICAgc3RhdGljIEpTQ2FsbGVlKiBjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBKU1Njb3BlKiBzY29wZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTRGF0YVZpZXdQcm90b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0RhdGFWaWV3UHJvdG90eXBlLmgJKHJldmlzaW9uIDI4NjA0MykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0YVZpZXdQcm90b3R5cGUuaAko
d29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMt
MjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTMtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTM4LDcgKzM4LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJc29T
dWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VS
VF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNEYXRhVmlld1Byb3RvdHlwZSwgQmFzZSk7Ci0gICAg
ICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFp
bk9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIEpTRGF0YVZpZXdQcm90b3R5cGUq
IGNyZWF0ZShWTSYsIFN0cnVjdHVyZSopOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNGdW5jdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTRnVuY3Rpb24uaAkocmV2aXNpb24gMjg2MDQzKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC02Niw3ICs2Niw3
IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vic3BhY2VBY2Nl
c3M+CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewot
ICAgICAgICByZXR1cm4gJnZtLmZ1bmN0aW9uU3BhY2U7CisgICAgICAgIHJldHVybiAmdm0uZnVu
Y3Rpb25TcGFjZSgpOwogICAgIH0KICAgICAKICAgICB0eXBlZGVmIEpTQ2FsbGVlIEJhc2U7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmll
d1Byb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlLmgJKHJldmlzaW9uIDI4NjA0MykKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJv
dG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAxMy0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzgsNyArMzgsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGlj
IElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNf
QVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU0dlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3Rv
dHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAg
ICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIEpT
R2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlKiBjcmVhdGUoCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbExleGljYWxFbnZpcm9ubWVudC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsTGV4aWNhbEVudmly
b25tZW50LmgJKHJldmlzaW9uIDI4NjA0MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTR2xvYmFsTGV4aWNhbEVudmlyb25tZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTM4LDcg
KzM4LDcgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlLCBTdWJzcGFj
ZUFjY2VzcyBtb2RlPgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZt
KQogICAgIHsKLSAgICAgICAgcmV0dXJuICZ2bS5nbG9iYWxMZXhpY2FsRW52aXJvbm1lbnRTcGFj
ZTsKKyAgICAgICAgcmV0dXJuICZ2bS5nbG9iYWxMZXhpY2FsRW52aXJvbm1lbnRTcGFjZSgpOwog
ICAgIH0KIAogICAgIHN0YXRpYyBKU0dsb2JhbExleGljYWxFbnZpcm9ubWVudCogY3JlYXRlKFZN
JiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTU2NvcGUqIHBhcmVudFNjb3BlKQpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNJbW11dGFibGVCdXR0ZXJmbHkuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ltbXV0YWJsZUJ1dHRl
cmZseS5oCShyZXZpc2lvbiAyODYwNDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0ltbXV0YWJsZUJ1dHRlcmZseS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNTMsNyArMTUzLDcg
QEAgcHVibGljOgogICAgIHN0YXRpYyBDb21wbGV0ZVN1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYg
dm0pCiAgICAgewogICAgICAgICAvLyBXZSBhbGxvY2F0ZSBvdXQgb2YgdGhlIEpTVmFsdWUgZ2ln
YWNhZ2UgYXMgb3RoZXIgY29kZSBleHBlY3RzIGFsbCBidXR0ZXJmbGllcyB0byBsaXZlIHRoZXJl
LgotICAgICAgICByZXR1cm4gJnZtLmltbXV0YWJsZUJ1dHRlcmZseUpTVmFsdWVHaWdhY2FnZUF1
eGlsaWFyeVNwYWNlOworICAgICAgICByZXR1cm4gJnZtLmltbXV0YWJsZUJ1dHRlcmZseUpTVmFs
dWVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlKCk7CiAgICAgfQogCiAgICAgLy8gT25seSBjYWxsIHRo
aXMgaWYgeW91IGp1c3QgYWxsb2NhdGVkIHRoaXMgYnV0dGVyZmx5LgpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNMZXhpY2FsRW52aXJvbm1lbnQuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xleGljYWxFbnZpcm9ubWVudC5oCShy
ZXZpc2lvbiAyODYwNDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xleGlj
YWxFbnZpcm9ubWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC00NCw3ICs0NCw3IEBAIHB1YmxpYzoK
ICAgICBzdGF0aWMgQ29tcGxldGVTdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsK
ICAgICAgICAgc3RhdGljX2Fzc2VydCghQ2VsbFR5cGU6Om5lZWRzRGVzdHJ1Y3Rpb24sICIiKTsK
LSAgICAgICAgcmV0dXJuICZ2bS52YXJpYWJsZVNpemVkQ2VsbFNwYWNlOworICAgICAgICByZXR1
cm4gJnZtLnZhcmlhYmxlU2l6ZWRDZWxsU3BhY2UoKTsKICAgICB9CiAKICAgICB1c2luZyBCYXNl
ID0gSlNTeW1ib2xUYWJsZU9iamVjdDsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTTW9kdWxlTG9hZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNNb2R1bGVMb2FkZXIuaAkocmV2aXNpb24gMjg2MDQzKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVMb2FkZXIuaAkod29ya2luZyBjb3B5KQpAQCAt
NDQsNyArNDQsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZv
cihWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFS
QUJMRShKU01vZHVsZUxvYWRlciwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmpl
Y3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQog
CiAgICAgZW51bSBTdGF0dXMgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNPTk9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTT05PYmplY3QuaAkocmV2aXNpb24gMjg2MDQzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNPTk9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw3ICszOCw3IEBAIHB1
YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7
CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTT05PYmplY3Qs
IEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJl
dHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBKU09OT2Jq
ZWN0KiBjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0SW5saW5lcy5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0SW5saW5lcy5oCShyZXZpc2lvbiAy
ODYwNDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdElubGluZXMu
aAkod29ya2luZyBjb3B5KQpAQCAtNDEsNyArNDEsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxs
VHlwZSwgU3Vic3BhY2VBY2NlCiBDb21wbGV0ZVN1YnNwYWNlKiBKU0ZpbmFsT2JqZWN0OjpzdWJz
cGFjZUZvcihWTSYgdm0pCiB7CiAgICAgc3RhdGljX2Fzc2VydCghQ2VsbFR5cGU6Om5lZWRzRGVz
dHJ1Y3Rpb24pOwotICAgIHJldHVybiAmdm0uY2VsbFNwYWNlOworICAgIHJldHVybiAmdm0uY2Vs
bFNwYWNlKCk7CiB9CiAKIC8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtY3JlYXRlbGlz
dGZyb21hcnJheWxpa2UKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJv
bWlzZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJv
bWlzZS5oCShyZXZpc2lvbiAyODYwNDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU1Byb21pc2UuaAkod29ya2luZyBjb3B5KQpAQCAtMzcsNyArMzcsNyBAQCBwdWJsaWM6CiAg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNzIG1vZGU+CiAgICAg
c3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewotICAgICAgICBy
ZXR1cm4gJnZtLnByb21pc2VTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wcm9taXNlU3BhY2Uo
KTsKICAgICB9CiAKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgSlNQcm9taXNlKiBjcmVh
dGUoVk0mLCBTdHJ1Y3R1cmUqKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTUHJvbWlzZVByb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTUHJvbWlzZVByb3RvdHlwZS5oCShyZXZpc2lvbiAyODYwNDMpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2VQcm90b3R5cGUuaAkod29ya2luZyBj
b3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxOSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAyMSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTM4LDcgKzM4LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSog
c3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VC
U1BBQ0VfU0hBUkFCTEUoSlNQcm9taXNlUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJu
ICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3Bh
Y2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgSlNQcm9taXNlUHJvdG90eXBlKiBjcmVhdGUoVk0m
LCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSopOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUVudW1lcmF0b3IuY3Bw
CShyZXZpc2lvbiAyODYwNDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1By
b3BlcnR5TmFtZUVudW1lcmF0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw3ICszOCw3IEBA
IEpTUHJvcGVydHlOYW1lRW51bWVyYXRvciogSlNQcm9wZXJ0eU5hbWUKICAgICB1bnNpZ25lZCBw
cm9wZXJ0eU5hbWVzQnVmZmVyU2l6ZUluQnl0ZXMgPSBDaGVja2VkPHVuc2lnbmVkPihwcm9wZXJ0
eU5hbWVzU2l6ZSkgKiBzaXplb2YoV3JpdGVCYXJyaWVyPEpTU3RyaW5nPik7CiAgICAgV3JpdGVC
YXJyaWVyPEpTU3RyaW5nPiogcHJvcGVydHlOYW1lc0J1ZmZlciA9IG51bGxwdHI7CiAgICAgaWYg
KHByb3BlcnR5TmFtZXNCdWZmZXJTaXplSW5CeXRlcykgewotICAgICAgICBwcm9wZXJ0eU5hbWVz
QnVmZmVyID0gc3RhdGljX2Nhc3Q8V3JpdGVCYXJyaWVyPEpTU3RyaW5nPio+KHZtLmpzVmFsdWVH
aWdhY2FnZUF1eGlsaWFyeVNwYWNlLmFsbG9jYXRlTm9uVmlydHVhbCh2bSwgcHJvcGVydHlOYW1l
c0J1ZmZlclNpemVJbkJ5dGVzLCBudWxscHRyLCBBbGxvY2F0aW9uRmFpbHVyZU1vZGU6OkFzc2Vy
dCkpOworICAgICAgICBwcm9wZXJ0eU5hbWVzQnVmZmVyID0gc3RhdGljX2Nhc3Q8V3JpdGVCYXJy
aWVyPEpTU3RyaW5nPio+KHZtLmpzVmFsdWVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlKCkuYWxsb2Nh
dGVOb25WaXJ0dWFsKHZtLCBwcm9wZXJ0eU5hbWVzQnVmZmVyU2l6ZUluQnl0ZXMsIG51bGxwdHIs
IEFsbG9jYXRpb25GYWlsdXJlTW9kZTo6QXNzZXJ0KSk7CiAgICAgICAgIGZvciAodW5zaWduZWQg
aSA9IDA7IGkgPCBwcm9wZXJ0eU5hbWVzU2l6ZTsgKytpKQogICAgICAgICAgICAgcHJvcGVydHlO
YW1lc0J1ZmZlcltpXS5jbGVhcigpOwogICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lRW51bWVyYXRvci5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lRW51bWVyYXRvci5oCShyZXZp
c2lvbiAyODYwNDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5
TmFtZUVudW1lcmF0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtNTEsNyArNTEsNyBAQCBwdWJsaWM6
CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNzIG1vZGU+CiAg
ICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewotICAgICAg
ICByZXR1cm4gJnZtLnByb3BlcnR5TmFtZUVudW1lcmF0b3JTcGFjZTsKKyAgICAgICAgcmV0dXJu
ICZ2bS5wcm9wZXJ0eU5hbWVFbnVtZXJhdG9yU3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMg
SlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yKiBjcmVhdGUoVk0mLCBTdHJ1Y3R1cmUqLCB1aW50MzJf
dCwgdWludDMyX3QsIFByb3BlcnR5TmFtZUFycmF5JiYpOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNQcm94eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTUHJveHkuaAkocmV2aXNpb24gMjg2MDQzKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw3ICszOCw3
IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkK
ICAgICB7CiAgICAgICAgIHN0YXRpY19hc3NlcnQoc2l6ZW9mKENlbGxUeXBlKSA9PSBzaXplb2Yo
SlNQcm94eSkpOwotICAgICAgICByZXR1cm4gJnZtLmpzUHJveHlTcGFjZTsKKyAgICAgICAgcmV0
dXJuICZ2bS5qc1Byb3h5U3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgSlNQcm94eSogY3Jl
YXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTT2JqZWN0KiB0YXJnZXQpCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmgJKHJldmlzaW9uIDI4NjA0
MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTExMSw3ICsxMTEsNyBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUs
IFN1YnNwYWNlQWNjZXNzPgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0m
IHZtKQogICAgIHsKLSAgICAgICAgcmV0dXJuICZ2bS5zdHJpbmdTcGFjZTsKKyAgICAgICAgcmV0
dXJuICZ2bS5zdHJpbmdTcGFjZSgpOwogICAgIH0KICAgICAKICAgICAvLyBXZSBlbXBsb3kgb3Zl
cmZsb3cgY2hlY2tzIGluIG1hbnkgcGxhY2VzIHdpdGggdGhlIGFzc3VtcHRpb24gdGhhdCBNYXhM
ZW5ndGgKQEAgLTI3MCw3ICsyNzAsNyBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUs
IFN1YnNwYWNlQWNjZXNzPgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0m
IHZtKQogICAgIHsKLSAgICAgICAgcmV0dXJuICZ2bS5yb3BlU3RyaW5nU3BhY2U7CisgICAgICAg
IHJldHVybiAmdm0ucm9wZVN0cmluZ1NwYWNlKCk7CiAgICAgfQogCiAgICAgLy8gV2UgdXNlIGxv
d2VyIDNiaXRzIG9mIGZpYmVyMCBmb3IgZmxhZ3MuIFRoZXNlIGJpdHMgYXJlIHVzYWJsZSBkdWUg
dG8gYWxpZ25tZW50LCBhbmQgaXQgaXMgT0sgZXZlbiBpbiAzMmJpdCBhcmNoaXRlY3R1cmUuCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGVkQXJyYXlWaWV3UHJvdG90
eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBl
ZEFycmF5Vmlld1Byb3RvdHlwZS5oCShyZXZpc2lvbiAyODYwNDMpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNS0yMDIxIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpA
QCAtMzcsNyArMzcsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFj
ZUZvcihWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9T
SEFSQUJMRShKU1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJu
ICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3Bh
Y2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgSlNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZSogY3Jl
YXRlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqKTsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL01hcEl0ZXJhdG9yUHJvdG90eXBlLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFwSXRlcmF0b3JQcm90b3R5cGUuaAkocmV2
aXNpb24gMjg2MDQzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFwSXRlcmF0
b3JQcm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzcsNyArMzcsNyBAQCBwdWJsaWM6CiAg
ICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewogICAgICAg
ICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShNYXBJdGVyYXRvclByb3RvdHlw
ZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAg
cmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIE1hcEl0
ZXJhdG9yUHJvdG90eXBlKiBjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL01hcFByb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL01hcFByb3RvdHlwZS5oCShyZXZpc2lvbiAyODYwNDMpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9NYXBQcm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzcs
NyArMzcsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihW
TSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJM
RShNYXBQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3Bh
Y2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAg
IHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1
cmVGbGFncyB8IEhhc1N0YXRpY1Byb3BlcnR5VGFibGU7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9NYXRoT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvTWF0aE9iamVjdC5oCShyZXZpc2lvbiAyODYwNDMpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXRoT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTMy
LDcgKzMyLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3Io
Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFC
TEUoTWF0aE9iamVjdCwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFj
ZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAg
c3RhdGljIE1hdGhPYmplY3QqIGNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvTmF0aXZlRXJyb3JQcm90b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9OYXRpdmVFcnJvclByb3RvdHlwZS5oCShyZXZpc2lvbiAyODYw
NDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OYXRpdmVFcnJvclByb3RvdHlw
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw3ICszNCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMg
SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19B
U1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKE5hdGl2ZUVycm9yUHJvdG90eXBlLCBCYXNlKTsK
LSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZt
LnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVh
dGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVl
IHByb3RvdHlwZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUV4
ZWN1dGFibGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9O
YXRpdmVFeGVjdXRhYmxlLmgJKHJldmlzaW9uIDI4NjA0MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL05hdGl2ZUV4ZWN1dGFibGUuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsx
LDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDktMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDktMjAyMSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQzLDcg
KzQzLDcgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlLCBTdWJzcGFj
ZUFjY2Vzcz4KICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAg
ICB7Ci0gICAgICAgIHJldHVybiAmdm0ubmF0aXZlRXhlY3V0YWJsZVNwYWNlOworICAgICAgICBy
ZXR1cm4gJnZtLm5hdGl2ZUV4ZWN1dGFibGVTcGFjZSgpOwogICAgIH0KIAogICAgIENvZGVCbG9j
a0hhc2ggaGFzaEZvcihDb2RlU3BlY2lhbGl6YXRpb25LaW5kKSBjb25zdDsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWJlck9iamVjdC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWJlck9iamVjdC5oCShyZXZpc2lvbiAyODYw
NDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdW1iZXJPYmplY3QuaAkod29y
a2luZyBjb3B5KQpAQCAtMzUsNyArMzUsNyBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5h
bWUsIFN1YnNwYWNlQWNjZXNzIG1vZGU+CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFj
ZUZvcihWTSYgdm0pCiAgICAgewotICAgICAgICByZXR1cm4gJnZtLm51bWJlck9iamVjdFNwYWNl
OworICAgICAgICByZXR1cm4gJnZtLm51bWJlck9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAg
c3RhdGljIE51bWJlck9iamVjdCogY3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUp
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RQcm90b3R5cGUuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RQcm90b3R5
cGUuaAkocmV2aXNpb24gMjg2MDQzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
T2JqZWN0UHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw2IEBACiAvKgogICog
IENvcHlyaWdodCAoQykgMTk5OS0yMDAwIEhhcnJpIFBvcnRlbiAocG9ydGVuQGtkZS5vcmcpCi0g
KiAgQ29weXJpZ2h0IChDKSAyMDA4LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogIENvcHlyaWdodCAoQykgMjAwOC0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk
aXN0cmlidXRlIGl0IGFuZC9vcgogICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhl
IEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKQEAgLTMzLDcgKzMzLDcgQEAgcHVibGljOgogICAg
IHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAgICAg
U1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoT2JqZWN0UHJvdG90eXBlLCBCYXNl
KTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4g
JnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgT2JqZWN0UHJvdG90
eXBlKiBjcmVhdGUoVk0mLCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSopOwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvZ3JhbUV4ZWN1dGFibGUuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9ncmFtRXhlY3V0YWJsZS5oCShy
ZXZpc2lvbiAyODYwNDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9ncmFt
RXhlY3V0YWJsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw2ICszMCw4IEBACiAKIG5hbWVzcGFj
ZSBKU0MgewogCitjbGFzcyBVbmxpbmtlZFByb2dyYW1Db2RlQmxvY2s7CisKIGNsYXNzIFByb2dy
YW1FeGVjdXRhYmxlIGZpbmFsIDogcHVibGljIEdsb2JhbEV4ZWN1dGFibGUgewogICAgIGZyaWVu
ZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiBwdWJsaWM6CkBAIC0zOSw3ICs0MSw3IEBA
IHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vic3BhY2VBY2Nlc3M+
CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewotICAg
ICAgICByZXR1cm4gJnZtLnByb2dyYW1FeGVjdXRhYmxlU3BhY2Uuc3BhY2U7CisgICAgICAgIHJl
dHVybiAmdm0ucHJvZ3JhbUV4ZWN1dGFibGVTcGFjZSgpLnNwYWNlOwogICAgIH0KIAogICAgIHN0
YXRpYyBQcm9ncmFtRXhlY3V0YWJsZSogY3JlYXRlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1Byb3BlcnR5VGFibGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Qcm9wZXJ0eVRhYmxlLmgJKHJldmlzaW9uIDI4NjA0MykKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5VGFibGUuaAkod29ya2luZyBjb3B5KQpA
QCAtMTI5LDcgKzEyOSw3IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlw
ZSwgU3Vic3BhY2VBY2Nlc3M+CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihW
TSYgdm0pCiAgICAgewotICAgICAgICByZXR1cm4gJnZtLnByb3BlcnR5VGFibGVTcGFjZTsKKyAg
ICAgICAgcmV0dXJuICZ2bS5wcm9wZXJ0eVRhYmxlU3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0
aWMgY29uc3RleHByIGJvb2wgbmVlZHNEZXN0cnVjdGlvbiA9IHRydWU7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWZsZWN0T2JqZWN0LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVmbGVjdE9iamVjdC5oCShyZXZpc2lvbiAyODYw
NDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWZsZWN0T2JqZWN0LmgJKHdv
cmtpbmcgY29weSkKQEAgLTM4LDcgKzM4LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJc29TdWJz
cGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9J
U09fU1VCU1BBQ0VfU0hBUkFCTEUoUmVmbGVjdE9iamVjdCwgQmFzZSk7Ci0gICAgICAgIHJldHVy
biAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNw
YWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIFJlZmxlY3RPYmplY3QqIGNyZWF0ZShWTSYgdm0s
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlKQpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwLmgJKHJldmlzaW9uIDI4NjA0MykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cC5oCSh3b3JraW5nIGNvcHkp
CkBAIC00OSw3ICs0OSw3IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlw
ZSwgU3Vic3BhY2VBY2Nlc3MgbW9kZT4KICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNl
Rm9yKFZNJiB2bSkKICAgICB7Ci0gICAgICAgIHJldHVybiAmdm0ucmVnRXhwU3BhY2U7CisgICAg
ICAgIHJldHVybiAmdm0ucmVnRXhwU3BhY2UoKTsKICAgICB9CiAKICAgICBKU19FWFBPUlRfUFJJ
VkFURSBzdGF0aWMgUmVnRXhwKiBjcmVhdGUoVk0mLCBjb25zdCBTdHJpbmcmIHBhdHRlcm4sIE9w
dGlvblNldDxZYXJyOjpGbGFncz4pOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvUmVnRXhwT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvUmVnRXhwT2JqZWN0LmgJKHJldmlzaW9uIDI4NjA0MykKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1JlZ0V4cE9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw3ICsz
Niw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2
bSkKICAgICB7CiAgICAgICAgIHN0YXRpY19hc3NlcnQoIUNlbGxUeXBlOjpuZWVkc0Rlc3RydWN0
aW9uLCAiIik7Ci0gICAgICAgIHJldHVybiAmdm0ucmVnRXhwT2JqZWN0U3BhY2U7CisgICAgICAg
IHJldHVybiAmdm0ucmVnRXhwT2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgY29u
c3RleHByIHVpbnRwdHJfdCBsYXN0SW5kZXhJc05vdFdyaXRhYmxlRmxhZyA9IDBiMDE7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBQcm90b3R5cGUuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBQcm90b3R5cGUuaAko
cmV2aXNpb24gMjg2MDQzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhw
UHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM0LDcgKzM0LDcgQEAgcHVibGljOgogICAg
IHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAgICAg
U1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoUmVnRXhwUHJvdG90eXBlLCBCYXNl
KTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4g
JnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgUmVnRXhwUHJvdG90
eXBlKiBjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4
cFN0cmluZ0l0ZXJhdG9yUHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvUmVnRXhwU3RyaW5nSXRlcmF0b3JQcm90b3R5cGUuaAkocmV2aXNpb24g
Mjg2MDQzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwU3RyaW5nSXRl
cmF0b3JQcm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzksNyArMzksNyBAQCBwdWJsaWM6
CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewogICAg
ICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShSZWdFeHBTdHJpbmdJdGVy
YXRvclByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFj
ZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAg
c3RhdGljIFJlZ0V4cFN0cmluZ0l0ZXJhdG9yUHJvdG90eXBlKiBjcmVhdGUoVk0mIHZtLCBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Njb3BlZEFyZ3VtZW50cy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2NvcGVkQXJndW1lbnRzLmNwcAko
cmV2aXNpb24gMjg2MDQzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2NvcGVk
QXJndW1lbnRzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTUsNyArNTUsNyBAQCBTY29wZWRBcmd1
bWVudHMqIFNjb3BlZEFyZ3VtZW50czo6Y3JlYXRlCiAgICAgV3JpdGVCYXJyaWVyPFVua25vd24+
KiBzdG9yYWdlID0gbnVsbHB0cjsKICAgICBpZiAodG90YWxMZW5ndGggPiB0YWJsZS0+bGVuZ3Ro
KCkpIHsKICAgICAgICAgQ2hlY2tlZDx1bnNpZ25lZD4gb3ZlcmZsb3dMZW5ndGggPSB0b3RhbExl
bmd0aCAtIHRhYmxlLT5sZW5ndGgoKTsKLSAgICAgICAgc3RvcmFnZSA9IHN0YXRpY19jYXN0PFdy
aXRlQmFycmllcjxVbmtub3duPio+KHZtLmpzVmFsdWVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlLmFs
bG9jYXRlTm9uVmlydHVhbCh2bSwgb3ZlcmZsb3dMZW5ndGggKiBzaXplb2YoV3JpdGVCYXJyaWVy
PFVua25vd24+KSwgbnVsbHB0ciwgQWxsb2NhdGlvbkZhaWx1cmVNb2RlOjpBc3NlcnQpKTsKKyAg
ICAgICAgc3RvcmFnZSA9IHN0YXRpY19jYXN0PFdyaXRlQmFycmllcjxVbmtub3duPio+KHZtLmpz
VmFsdWVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlKCkuYWxsb2NhdGVOb25WaXJ0dWFsKHZtLCBvdmVy
Zmxvd0xlbmd0aCAqIHNpemVvZihXcml0ZUJhcnJpZXI8VW5rbm93bj4pLCBudWxscHRyLCBBbGxv
Y2F0aW9uRmFpbHVyZU1vZGU6OkFzc2VydCkpOwogICAgIH0KIAogICAgIFNjb3BlZEFyZ3VtZW50
cyogcmVzdWx0ID0gbmV3ICgKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Nj
b3BlZEFyZ3VtZW50cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1Njb3BlZEFyZ3VtZW50cy5oCShyZXZpc2lvbiAyODYwNDMpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9TY29wZWRBcmd1bWVudHMuaAkod29ya2luZyBjb3B5KQpAQCAtNDcs
NyArNDcsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihW
TSYgdm0pCiAgICAgewogICAgICAgICBzdGF0aWNfYXNzZXJ0KCFDZWxsVHlwZTo6bmVlZHNEZXN0
cnVjdGlvbiwgIiIpOwotICAgICAgICByZXR1cm4gJnZtLnNjb3BlZEFyZ3VtZW50c1NwYWNlOwor
ICAgICAgICByZXR1cm4gJnZtLnNjb3BlZEFyZ3VtZW50c1NwYWNlKCk7CiAgICAgfQogCiAgICAg
Ly8gQ3JlYXRlcyBhbiBhcmd1bWVudHMgb2JqZWN0IGJ1dCBsZWF2ZXMgaXQgdW5pbml0aWFsaXpl
ZC4gVGhpcyBpcyBkYW5nZXJvdXMgaWYgd2UgR0MgcmlnaHQKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1NldEl0ZXJhdG9yUHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2V0SXRlcmF0b3JQcm90b3R5cGUuaAkocmV2aXNp
b24gMjg2MDQzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2V0SXRlcmF0b3JQ
cm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzcsNyArMzcsNyBAQCBwdWJsaWM6CiAgICAg
c3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewogICAgICAgICBT
VEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShTZXRJdGVyYXRvclByb3RvdHlwZSwg
QmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0
dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIFNldEl0ZXJh
dG9yUHJvdG90eXBlKiBjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1NldFByb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1NldFByb3RvdHlwZS5oCShyZXZpc2lvbiAyODYwNDMpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9TZXRQcm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzcsNyAr
MzcsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYg
dm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShT
ZXRQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7
CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIHN0
YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVG
bGFncyB8IEhhc1N0YXRpY1Byb3BlcnR5VGFibGU7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9TaGFkb3dSZWFsbVByb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1NoYWRvd1JlYWxtUHJvdG90eXBlLmgJKHJldmlzaW9uIDI4
NjA0MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NoYWRvd1JlYWxtUHJvdG90
eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM5LDcgKzM5LDcgQEAgcHVibGljOgogICAgIHN0YXRp
YyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElD
X0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoU2hhZG93UmVhbG1Qcm90b3R5cGUsIEJhc2Up
OwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAm
dm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBTaGFkb3dSZWFsbVBy
b3RvdHlwZSogY3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TcGFyc2VBcnJheVZhbHVlTWFwLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3BhcnNlQXJyYXlWYWx1ZU1hcC5o
CShyZXZpc2lvbiAyODYwNDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TcGFy
c2VBcnJheVZhbHVlTWFwLmgJKHdvcmtpbmcgY29weSkKQEAgLTExMCw3ICsxMTAsNyBAQCBwdWJs
aWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNzPgogICAg
IHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKLSAgICAgICAg
cmV0dXJuICZ2bS5zcGFyc2VBcnJheVZhbHVlTWFwU3BhY2U7CisgICAgICAgIHJldHVybiAmdm0u
c3BhcnNlQXJyYXlWYWx1ZU1hcFNwYWNlKCk7CiAgICAgfQogICAgIAogICAgIHN0YXRpYyBTdHJ1
Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSBwcm90
b3R5cGUpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nSXRlcmF0
b3JQcm90b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9TdHJpbmdJdGVyYXRvclByb3RvdHlwZS5oCShyZXZpc2lvbiAyODYwNDMpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdJdGVyYXRvclByb3RvdHlwZS5oCSh3b3JraW5n
IGNvcHkpCkBAIC0zOSw3ICszOSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2Uq
IHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NV
QlNQQUNFX1NIQVJBQkxFKFN0cmluZ0l0ZXJhdG9yUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAg
cmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2Jq
ZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgU3RyaW5nSXRlcmF0b3JQcm90b3R5cGUq
IGNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSog
c3RydWN0dXJlKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nT2Jq
ZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5n
T2JqZWN0LmgJKHJldmlzaW9uIDI4NjA0MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1N0cmluZ09iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw3ICszMyw3IEBAIHB1Ymxp
YzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSwgU3Vic3BhY2VBY2Nlc3MgbW9kZT4KICAgICBzdGF0
aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7Ci0gICAgICAgIHJldHVy
biAmdm0uc3RyaW5nT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0uc3RyaW5nT2JqZWN0
U3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgU3RyaW5nT2JqZWN0KiBjcmVhdGUoVk0mIHZt
LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1N0cnVjdHVyZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1N0cnVjdHVyZS5oCShyZXZpc2lvbiAyODYwNDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9TdHJ1Y3R1cmUuaAkod29ya2luZyBjb3B5KQpAQCAtMTI4LDcgKzEyOCw3IEBA
IHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vic3BhY2VBY2Nlc3M+
CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewotICAg
ICAgICByZXR1cm4gJnZtLnN0cnVjdHVyZVNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnN0cnVj
dHVyZVNwYWNlKCk7CiAgICAgfQogCiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGJvb2wg
aXNWYWxpZFByb3RvdHlwZShKU1ZhbHVlKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1N0cnVjdHVyZUNoYWluLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TdHJ1Y3R1cmVDaGFpbi5jcHAJKHJldmlzaW9uIDI4NjA0MykKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUNoYWluLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNDgsNyArNDgsNyBAQCBTdHJ1Y3R1cmVDaGFpbiogU3RydWN0dXJlQ2hhaW46OmNy
ZWF0ZShWCiAgICAgICAgICsrc2l6ZTsKICAgICArK3NpemU7IC8vIFNlbnRpbmVsIG51bGxwdHIu
CiAgICAgc2l6ZV90IGJ5dGVzID0gQ2hlY2tlZDxzaXplX3Q+KHNpemUpICogc2l6ZW9mKFN0cnVj
dHVyZUlEKTsKLSAgICBTdHJ1Y3R1cmVJRCogdmVjdG9yID0gc3RhdGljX2Nhc3Q8U3RydWN0dXJl
SUQqPih2bS5qc1ZhbHVlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZS5hbGxvY2F0ZU5vblZpcnR1YWwo
dm0sIGJ5dGVzLCBudWxscHRyLCBBbGxvY2F0aW9uRmFpbHVyZU1vZGU6OkFzc2VydCkpOworICAg
IFN0cnVjdHVyZUlEKiB2ZWN0b3IgPSBzdGF0aWNfY2FzdDxTdHJ1Y3R1cmVJRCo+KHZtLmpzVmFs
dWVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlKCkuYWxsb2NhdGVOb25WaXJ0dWFsKHZtLCBieXRlcywg
bnVsbHB0ciwgQWxsb2NhdGlvbkZhaWx1cmVNb2RlOjpBc3NlcnQpKTsKICAgICBtZW1zZXQodmVj
dG9yLCAwLCBieXRlcyk7CiAgICAgU3RydWN0dXJlQ2hhaW4qIGNoYWluID0gbmV3IChOb3ROdWxs
LCBhbGxvY2F0ZUNlbGw8U3RydWN0dXJlQ2hhaW4+KHZtKSkgU3RydWN0dXJlQ2hhaW4odm0sIHZt
LnN0cnVjdHVyZUNoYWluU3RydWN0dXJlLmdldCgpLCB2ZWN0b3IpOwogICAgIGNoYWluLT5maW5p
c2hDcmVhdGlvbih2bSwgaGVhZCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9TdHJ1Y3R1cmVDaGFpbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1N0cnVjdHVyZUNoYWluLmgJKHJldmlzaW9uIDI4NjA0MykKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUNoYWluLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ2
LDcgKzQ2LDcgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlLCBTdWJz
cGFjZUFjY2Vzcz4KICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkK
ICAgICB7Ci0gICAgICAgIHJldHVybiAmdm0uc3RydWN0dXJlQ2hhaW5TcGFjZTsKKyAgICAgICAg
cmV0dXJuICZ2bS5zdHJ1Y3R1cmVDaGFpblNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIFN0
cnVjdHVyZUNoYWluKiBjcmVhdGUoVk0mLCBKU09iamVjdCopOwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlUmFyZURhdGEuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVSYXJlRGF0YS5oCShyZXZpc2lvbiAy
ODYwNDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVSYXJlRGF0
YS5oCSh3b3JraW5nIGNvcHkpCkBAIC02Niw3ICs2Niw3IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vic3BhY2VBY2Nlc3M+CiAgICAgc3RhdGljIElzb1N1YnNw
YWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewotICAgICAgICByZXR1cm4gJnZtLnN0cnVj
dHVyZVJhcmVEYXRhU3BhY2U7CisgICAgICAgIHJldHVybiAmdm0uc3RydWN0dXJlUmFyZURhdGFT
cGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBTdHJ1Y3R1cmVSYXJlRGF0YSogY3JlYXRlKFZN
JiwgU3RydWN0dXJlKik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1i
b2xQcm90b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9TeW1ib2xQcm90b3R5cGUuaAkocmV2aXNpb24gMjg2MDQzKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU3ltYm9sUHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQxLDcg
KzQxLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0m
IHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUo
U3ltYm9sUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNw
YWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAg
ICBzdGF0aWMgU3ltYm9sUHJvdG90eXBlKiBjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1N5bWJvbFRhYmxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sVGFibGUuaAkocmV2aXNpb24gMjg2MDQzKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sVGFibGUuaAkod29ya2luZyBjb3B5KQpA
QCAtNDU2LDcgKzQ1Niw3IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlw
ZSwgU3Vic3BhY2VBY2Nlc3M+CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihW
TSYgdm0pCiAgICAgewotICAgICAgICByZXR1cm4gJnZtLnN5bWJvbFRhYmxlU3BhY2U7CisgICAg
ICAgIHJldHVybiAmdm0uc3ltYm9sVGFibGVTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBT
eW1ib2xUYWJsZSogY3JlYXRlKFZNJiB2bSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1RlbXBvcmFsQ2FsZW5kYXJQcm90b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbENhbGVuZGFyUHJvdG90eXBlLmgJKHJldmlz
aW9uIDI4NjA0MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsQ2Fs
ZW5kYXJQcm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzgsNyArMzgsNyBAQCBwdWJsaWM6
CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewogICAg
ICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShUZW1wb3JhbENhbGVuZGFy
UHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOwor
ICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0
aWMgVGVtcG9yYWxDYWxlbmRhclByb3RvdHlwZSogY3JlYXRlKFZNJiwgSlNHbG9iYWxPYmplY3Qq
LCBTdHJ1Y3R1cmUqKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBv
cmFsRHVyYXRpb25Qcm90b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9UZW1wb3JhbER1cmF0aW9uUHJvdG90eXBlLmgJKHJldmlzaW9uIDI4NjA0MykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsRHVyYXRpb25Qcm90b3R5
cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMp
IDIwMjEgU29ueSBJbnRlcmFjdGl2ZSBFbnRlcnRhaW5tZW50IEluYy4KKyAqIENvcHlyaWdodCAo
QykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTM4LDcgKzM5LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJc29T
dWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VS
VF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoVGVtcG9yYWxEdXJhdGlvblByb3RvdHlwZSwgQmFzZSk7
Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2
bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIFRlbXBvcmFsRHVyYXRp
b25Qcm90b3R5cGUqIGNyZWF0ZShWTSYsIFN0cnVjdHVyZSopOwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxJbnN0YW50UHJvdG90eXBlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxJbnN0YW50UHJvdG90eXBl
LmgJKHJldmlzaW9uIDI4NjA0MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Rl
bXBvcmFsSW5zdGFudFByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNiBAQAog
LyoKICAqIENvcHlyaWdodCAoQykgMjAyMSBJZ2FsaWEgUy5MLgorICogQ29weXJpZ2h0IChDKSAy
MDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwpAQCAtMzgsNyArMzksNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIElzb1N1YnNw
YWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lT
T19TVUJTUEFDRV9TSEFSQUJMRShUZW1wb3JhbEluc3RhbnRQcm90b3R5cGUsIEJhc2UpOwotICAg
ICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxh
aW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBUZW1wb3JhbEluc3RhbnRQcm90
b3R5cGUqIGNyZWF0ZShWTSYsIFN0cnVjdHVyZSopOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvVGVtcG9yYWxOb3cuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9UZW1wb3JhbE5vdy5oCShyZXZpc2lvbiAyODYwNDMpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbE5vdy5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDUgKzEsNiBAQAogLyoKICAqICBDb3B5cmlnaHQgKEMpIDIwMjEgSWdhbGlhLCBTLkwuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiAgQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlv
dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVy
bXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKQEAgLTMyLDcgKzMzLDcgQEAgcHVi
bGljOgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsK
ICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoVGVtcG9yYWxOb3cs
IEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJl
dHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBUZW1wb3Jh
bE5vdyogY3JlYXRlKFZNJiwgU3RydWN0dXJlKik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9UZW1wb3JhbE9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsT2JqZWN0LmgJKHJldmlzaW9uIDI4NjA0MykKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsT2JqZWN0LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTEsNiArMSw3IEBACiAvKgogICogIENvcHlyaWdodCAoQykgMjAyMSBJZ2FsaWEsIFMu
TC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqICBDb3B5cmlnaHQgKEMpIDIwMjEgU29ueSBJbnRl
cmFjdGl2ZSBFbnRlcnRhaW5tZW50IEluYy4KKyAqICBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBz
b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiAgbW9kaWZ5IGl0IHVu
ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwpAQCAtNjQsNyAr
NjUsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYg
dm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShU
ZW1wb3JhbE9iamVjdCwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFj
ZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAg
c3RhdGljIFRlbXBvcmFsT2JqZWN0KiBjcmVhdGUoVk0mLCBTdHJ1Y3R1cmUqKTsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxQbGFp
blRpbWVQcm90b3R5cGUuaAkocmV2aXNpb24gMjg2MDQzKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvVGVtcG9yYWxQbGFpblRpbWVQcm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpA
QCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLgorICog
Q29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzgsNyArMzgsNyBAQCBwdWJsaWM6CiAgICAg
c3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewogICAgICAgICBT
VEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShUZW1wb3JhbFBsYWluVGltZVByb3Rv
dHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAg
ICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIFRl
bXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlKiBjcmVhdGUoVk0mLCBKU0dsb2JhbE9iamVjdCosIFN0
cnVjdHVyZSopOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxU
aW1lWm9uZVByb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1RlbXBvcmFsVGltZVpvbmVQcm90b3R5cGUuaAkocmV2aXNpb24gMjg2MDQzKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxUaW1lWm9uZVByb3RvdHlwZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC0zOCw3ICszOCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNv
U3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NF
UlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKFRlbXBvcmFsVGltZVpvbmVQcm90b3R5cGUsIEJhc2Up
OwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAm
dm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBUZW1wb3JhbFRpbWVa
b25lUHJvdG90eXBlKiBjcmVhdGUoVk0mLCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSopOwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAkocmV2aXNpb24gMjg2MDQzKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0zMiwyMSArMzIsMTUgQEAKICNpbmNsdWRlICJBY2Nlc3NDYXNlLmgiCiAjaW5jbHVkZSAiQWdn
cmVnYXRlRXJyb3IuaCIKICNpbmNsdWRlICJBcmdMaXN0LmgiCi0jaW5jbHVkZSAiQmlnSW50T2Jq
ZWN0LmgiCi0jaW5jbHVkZSAiQm9vbGVhbk9iamVjdC5oIgotI2luY2x1ZGUgIkJyYW5kZWRTdHJ1
Y3R1cmUuaCIKICNpbmNsdWRlICJCdWlsdGluRXhlY3V0YWJsZXMuaCIKICNpbmNsdWRlICJCeXRl
Y29kZUludHJpbnNpY1JlZ2lzdHJ5LmgiCiAjaW5jbHVkZSAiQ2hlY2twb2ludE9TUkV4aXRTaWRl
U3RhdGUuaCIKLSNpbmNsdWRlICJDbG9uZWRBcmd1bWVudHMuaCIKICNpbmNsdWRlICJDb2RlQmxv
Y2suaCIKICNpbmNsdWRlICJDb2RlQ2FjaGUuaCIKICNpbmNsdWRlICJDb21tb25JZGVudGlmaWVy
cy5oIgogI2luY2x1ZGUgIkNvbnRyb2xGbG93UHJvZmlsZXIuaCIKICNpbmNsdWRlICJDdXN0b21H
ZXR0ZXJTZXR0ZXIuaCIKICNpbmNsdWRlICJET01BdHRyaWJ1dGVHZXR0ZXJTZXR0ZXIuaCIKLSNp
bmNsdWRlICJEYXRlSW5zdGFuY2UuaCIKLSNpbmNsdWRlICJEZWJ1Z2dlclNjb3BlLmgiCiAjaW5j
bHVkZSAiRGVmZXJyZWRXb3JrVGltZXIuaCIKICNpbmNsdWRlICJEaXNhc3NlbWJsZXIuaCIKICNp
bmNsdWRlICJEb3VibGVQcmVkaWN0aW9uRnV6emVyQWdlbnQuaCIKQEAgLTU1LDcgKzQ5LDYgQEAK
ICNpbmNsdWRlICJFeGNlcHRpb24uaCIKICNpbmNsdWRlICJFeGVjdXRhYmxlVG9Db2RlQmxvY2tF
ZGdlLmgiCiAjaW5jbHVkZSAiRlRMVGh1bmtzLmgiCi0jaW5jbHVkZSAiRmFzdE1hbGxvY0FsaWdu
ZWRNZW1vcnlBbGxvY2F0b3IuaCIKICNpbmNsdWRlICJGaWxlQmFzZWRGdXp6ZXJBZ2VudC5oIgog
I2luY2x1ZGUgIkZ1bmN0aW9uQ29kZUJsb2NrLmgiCiAjaW5jbHVkZSAiRnVuY3Rpb25FeGVjdXRh
YmxlLmgiCkBAIC02Niw3NyArNTksMjUgQEAKICNpbmNsdWRlICJIZWFwUHJvZmlsZXIuaCIKICNp
bmNsdWRlICJJbnRlcnByZXRlci5oIgogI2luY2x1ZGUgIkludGxDYWNoZS5oIgotI2luY2x1ZGUg
IkludGxDb2xsYXRvci5oIgotI2luY2x1ZGUgIkludGxEYXRlVGltZUZvcm1hdC5oIgotI2luY2x1
ZGUgIkludGxEaXNwbGF5TmFtZXMuaCIKLSNpbmNsdWRlICJJbnRsTGlzdEZvcm1hdC5oIgotI2lu
Y2x1ZGUgIkludGxMb2NhbGUuaCIKLSNpbmNsdWRlICJJbnRsTnVtYmVyRm9ybWF0LmgiCi0jaW5j
bHVkZSAiSW50bFBsdXJhbFJ1bGVzLmgiCi0jaW5jbHVkZSAiSW50bFJlbGF0aXZlVGltZUZvcm1h
dC5oIgotI2luY2x1ZGUgIkludGxTZWdtZW50SXRlcmF0b3IuaCIKLSNpbmNsdWRlICJJbnRsU2Vn
bWVudGVyLmgiCi0jaW5jbHVkZSAiSW50bFNlZ21lbnRzLmgiCi0jaW5jbHVkZSAiSXNvSGVhcENl
bGxUeXBlLmgiCi0jaW5jbHVkZSAiSXNvSW5saW5lZEhlYXBDZWxsVHlwZS5oIgogI2luY2x1ZGUg
IkpJVENvZGUuaCIKICNpbmNsdWRlICJKSVRPcGVyYXRpb25MaXN0LmgiCiAjaW5jbHVkZSAiSklU
U2l6ZVN0YXRpc3RpY3MuaCIKICNpbmNsdWRlICJKSVRUaHVua3MuaCIKICNpbmNsdWRlICJKSVRX
b3JrbGlzdC5oIgotI2luY2x1ZGUgIkpTQVBJR2xvYmFsT2JqZWN0LmgiCiAjaW5jbHVkZSAiSlNB
UElWYWx1ZVdyYXBwZXIuaCIKLSNpbmNsdWRlICJKU0FQSVdyYXBwZXJPYmplY3QuaCIKLSNpbmNs
dWRlICJKU0FycmF5LmgiCi0jaW5jbHVkZSAiSlNBcnJheUJ1ZmZlci5oIgotI2luY2x1ZGUgIkpT
QXJyYXlJdGVyYXRvci5oIgotI2luY2x1ZGUgIkpTQXN5bmNHZW5lcmF0b3IuaCIKICNpbmNsdWRl
ICJKU0JpZ0ludC5oIgotI2luY2x1ZGUgIkpTQm91bmRGdW5jdGlvbi5oIgotI2luY2x1ZGUgIkpT
Q2FsbGJhY2tDb25zdHJ1Y3Rvci5oIgotI2luY2x1ZGUgIkpTQ2FsbGJhY2tGdW5jdGlvbi5oIgot
I2luY2x1ZGUgIkpTQ2FsbGJhY2tPYmplY3QuaCIKLSNpbmNsdWRlICJKU0NhbGxlZS5oIgotI2lu
Y2x1ZGUgIkpTQ3VzdG9tR2V0dGVyRnVuY3Rpb24uaCIKLSNpbmNsdWRlICJKU0N1c3RvbVNldHRl
ckZ1bmN0aW9uLmgiCi0jaW5jbHVkZSAiSlNEZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUu
aCIKLSNpbmNsdWRlICJKU0ZpbmFsaXphdGlvblJlZ2lzdHJ5LmgiCi0jaW5jbHVkZSAiSlNGdW5j
dGlvbi5oIgotI2luY2x1ZGUgIkpTR2xvYmFsTGV4aWNhbEVudmlyb25tZW50LmgiCiAjaW5jbHVk
ZSAiSlNHbG9iYWxPYmplY3QuaCIKICNpbmNsdWRlICJKU0ltbXV0YWJsZUJ1dHRlcmZseS5oIgot
I2luY2x1ZGUgIkpTSW5qZWN0ZWRTY3JpcHRIb3N0LmgiCi0jaW5jbHVkZSAiSlNKYXZhU2NyaXB0
Q2FsbEZyYW1lLmgiCiAjaW5jbHVkZSAiSlNMb2NrLmgiCiAjaW5jbHVkZSAiSlNNYXAuaCIKLSNp
bmNsdWRlICJKU01hcEl0ZXJhdG9yLmgiCi0jaW5jbHVkZSAiSlNNb2R1bGVOYW1lc3BhY2VPYmpl
Y3QuaCIKLSNpbmNsdWRlICJKU01vZHVsZVJlY29yZC5oIgotI2luY2x1ZGUgIkpTTmF0aXZlU3Rk
RnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU1Byb21pc2UuaCIKICNpbmNsdWRlICJKU1Byb3BlcnR5
TmFtZUVudW1lcmF0b3IuaCIKLSNpbmNsdWRlICJKU1Byb3h5LmgiCiAjaW5jbHVkZSAiSlNTY3Jp
cHRGZXRjaFBhcmFtZXRlcnMuaCIKICNpbmNsdWRlICJKU1NjcmlwdEZldGNoZXIuaCIKICNpbmNs
dWRlICJKU1NldC5oIgotI2luY2x1ZGUgIkpTU2V0SXRlcmF0b3IuaCIKICNpbmNsdWRlICJKU1Nv
dXJjZUNvZGUuaCIKLSNpbmNsdWRlICJKU1N0cmluZ0l0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiSlNU
ZW1wbGF0ZU9iamVjdERlc2NyaXB0b3IuaCIKLSNpbmNsdWRlICJKU1RvV2FzbUlDQ2FsbGVlLmgi
Ci0jaW5jbHVkZSAiSlNUeXBlZEFycmF5cy5oIgotI2luY2x1ZGUgIkpTV2Vha01hcC5oIgotI2lu
Y2x1ZGUgIkpTV2Vha09iamVjdFJlZi5oIgotI2luY2x1ZGUgIkpTV2Vha1NldC5oIgogI2luY2x1
ZGUgIkpTV2ViQXNzZW1ibHlDb2RlQmxvY2suaCIKLSNpbmNsdWRlICJKU1dlYkFzc2VtYmx5RXhj
ZXB0aW9uLmgiCi0jaW5jbHVkZSAiSlNXZWJBc3NlbWJseUdsb2JhbC5oIgotI2luY2x1ZGUgIkpT
V2ViQXNzZW1ibHlJbnN0YW5jZS5oIgotI2luY2x1ZGUgIkpTV2ViQXNzZW1ibHlNZW1vcnkuaCIK
LSNpbmNsdWRlICJKU1dlYkFzc2VtYmx5TW9kdWxlLmgiCi0jaW5jbHVkZSAiSlNXZWJBc3NlbWJs
eVRhYmxlLmgiCi0jaW5jbHVkZSAiSlNXZWJBc3NlbWJseVRhZy5oIgotI2luY2x1ZGUgIkpTV2l0
aFNjb3BlLmgiCiAjaW5jbHVkZSAiTExJbnREYXRhLmgiCiAjaW5jbHVkZSAiTExJbnRFeGNlcHRp
b25zLmgiCiAjaW5jbHVkZSAiTWFya2VkQmxvY2tJbmxpbmVzLmgiCkBAIC0xNTEsMjcgKzkyLDE2
IEBACiAjaW5jbHVkZSAiUHJvZ3JhbUNvZGVCbG9jay5oIgogI2luY2x1ZGUgIlByb2dyYW1FeGVj
dXRhYmxlLmgiCiAjaW5jbHVkZSAiUHJvcGVydHlUYWJsZS5oIgotI2luY2x1ZGUgIlByb3h5UmV2
b2tlLmgiCiAjaW5jbHVkZSAiUmFuZG9taXppbmdGdXp6ZXJBZ2VudC5oIgogI2luY2x1ZGUgIlJl
Z0V4cENhY2hlLmgiCi0jaW5jbHVkZSAiUmVnRXhwT2JqZWN0LmgiCiAjaW5jbHVkZSAiU2FtcGxp
bmdQcm9maWxlci5oIgogI2luY2x1ZGUgIlNjb3BlZEFyZ3VtZW50cy5oIgogI2luY2x1ZGUgIlNo
YWRvd0NoaWNrZW4uaCIKLSNpbmNsdWRlICJTaGFkb3dSZWFsbU9iamVjdC5oIgogI2luY2x1ZGUg
IlNpbXBsZVR5cGVkQXJyYXlDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiU291cmNlUHJvdmlkZXJD
YWNoZS5oIgotI2luY2x1ZGUgIlN0cmljdEV2YWxBY3RpdmF0aW9uLmgiCi0jaW5jbHVkZSAiU3Ry
aW5nT2JqZWN0LmgiCiAjaW5jbHVkZSAiU3Ryb25nSW5saW5lcy5oIgogI2luY2x1ZGUgIlN0cnVj
dHVyZUNoYWluLmgiCiAjaW5jbHVkZSAiU3RydWN0dXJlSW5saW5lcy5oIgotI2luY2x1ZGUgIlN5
bWJvbE9iamVjdC5oIgotI2luY2x1ZGUgIlRlbXBvcmFsQ2FsZW5kYXIuaCIKLSNpbmNsdWRlICJU
ZW1wb3JhbER1cmF0aW9uLmgiCi0jaW5jbHVkZSAiVGVtcG9yYWxJbnN0YW50LmgiCi0jaW5jbHVk
ZSAiVGVtcG9yYWxQbGFpblRpbWUuaCIKLSNpbmNsdWRlICJUZW1wb3JhbFRpbWVab25lLmgiCiAj
aW5jbHVkZSAiVGVzdFJ1bm5lclV0aWxzLmgiCiAjaW5jbHVkZSAiVGh1bmtHZW5lcmF0b3JzLmgi
CiAjaW5jbHVkZSAiVHlwZVByb2ZpbGVyLmgiCkBAIC0xODMsOSArMTEzLDYgQEAKICNpbmNsdWRl
ICJXYXNtV29ya2xpc3QuaCIKICNpbmNsdWRlICJXYXRjaGRvZy5oIgogI2luY2x1ZGUgIldlYWtH
Q01hcElubGluZXMuaCIKLSNpbmNsdWRlICJXZWJBc3NlbWJseUZ1bmN0aW9uLmgiCi0jaW5jbHVk
ZSAiV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQuaCIKLSNpbmNsdWRlICJXZWJBc3NlbWJseVdyYXBw
ZXJGdW5jdGlvbi5oIgogI2luY2x1ZGUgIldpZGVuaW5nTnVtYmVyUHJlZGljdGlvbkZ1enplckFn
ZW50LmgiCiAjaW5jbHVkZSA8d3RmL1Byb2Nlc3NJRC5oPgogI2luY2x1ZGUgPHd0Zi9SZWFkV3Jp
dGVMb2NrLmg+CkBAIC0xOTUsNyArMTIyLDYgQEAKICNpbmNsdWRlIDx3dGYvdGV4dC9BdG9tU3Ry
aW5nVGFibGUuaD4KIAogI2lmIEVOQUJMRShDX0xPT1ApCi0jaW5jbHVkZSAiQ0xvb3BTdGFjay5o
IgogI2luY2x1ZGUgIkNMb29wU3RhY2tJbmxpbmVzLmgiCiAjZW5kaWYKIApAQCAtMjA3LDE1ICsx
MzMsNiBAQAogI2luY2x1ZGUgIlJlZ0V4cC5oIgogI2VuZGlmCiAKLSNpZiBKU0NfT0JKQ19BUElf
RU5BQkxFRAotI2luY2x1ZGUgIk9iakNDYWxsYmFja0Z1bmN0aW9uLmgiCi0jZW5kaWYKLQotI2lm
ZGVmIEpTQ19HTElCX0FQSV9FTkFCTEVECi0jaW5jbHVkZSAiSlNBUElXcmFwcGVyR2xvYmFsT2Jq
ZWN0LmgiCi0jaW5jbHVkZSAiSlNDQ2FsbGJhY2tGdW5jdGlvbi5oIgotI2VuZGlmCi0KIG5hbWVz
cGFjZSBKU0MgewogCiBBdG9taWM8dW5zaWduZWQ+IFZNOjpzX251bWJlck9mSURzOwpAQCAtMjkx
LDEwOSArMjA4LDYgQEAgVk06OlZNKFZNVHlwZSB2bVR5cGUsIEhlYXBUeXBlIGhlYXBUeXBlLAog
ICAgICwgbV9yYW5kb20oT3B0aW9uczo6c2VlZE9mVk1SYW5kb21Gb3JGdXp6ZXIoKSA/IE9wdGlv
bnM6OnNlZWRPZlZNUmFuZG9tRm9yRnV6emVyKCkgOiBjcnlwdG9ncmFwaGljYWxseVJhbmRvbU51
bWJlcigpKQogICAgICwgbV9pbnRlZ3JpdHlSYW5kb20oKnRoaXMpCiAgICAgLCBoZWFwKCp0aGlz
LCBoZWFwVHlwZSkKLSAgICAsIGZhc3RNYWxsb2NBbGxvY2F0b3IobWFrZVVuaXF1ZTxGYXN0TWFs
bG9jQWxpZ25lZE1lbW9yeUFsbG9jYXRvcj4oKSkKLSAgICAsIHByaW1pdGl2ZUdpZ2FjYWdlQWxs
b2NhdG9yKG1ha2VVbmlxdWU8R2lnYWNhZ2VBbGlnbmVkTWVtb3J5QWxsb2NhdG9yPihHaWdhY2Fn
ZTo6UHJpbWl0aXZlKSkKLSAgICAsIGpzVmFsdWVHaWdhY2FnZUFsbG9jYXRvcihtYWtlVW5pcXVl
PEdpZ2FjYWdlQWxpZ25lZE1lbW9yeUFsbG9jYXRvcj4oR2lnYWNhZ2U6OkpTVmFsdWUpKQotICAg
ICwgYXV4aWxpYXJ5SGVhcENlbGxUeXBlKG1ha2VVbmlxdWU8SGVhcENlbGxUeXBlPihDZWxsQXR0
cmlidXRlcyhEb2VzTm90TmVlZERlc3RydWN0aW9uLCBIZWFwQ2VsbDo6QXV4aWxpYXJ5KSkpCi0g
ICAgLCBpbW11dGFibGVCdXR0ZXJmbHlIZWFwQ2VsbFR5cGUobWFrZVVuaXF1ZTxIZWFwQ2VsbFR5
cGU+KENlbGxBdHRyaWJ1dGVzKERvZXNOb3ROZWVkRGVzdHJ1Y3Rpb24sIEhlYXBDZWxsOjpKU0Nl
bGxXaXRoSW5kZXhpbmdIZWFkZXIpKSkKLSAgICAsIGNlbGxIZWFwQ2VsbFR5cGUobWFrZVVuaXF1
ZTxIZWFwQ2VsbFR5cGU+KENlbGxBdHRyaWJ1dGVzKERvZXNOb3ROZWVkRGVzdHJ1Y3Rpb24sIEhl
YXBDZWxsOjpKU0NlbGwpKSkKLSAgICAsIGRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUobWFr
ZVVuaXF1ZTxIZWFwQ2VsbFR5cGU+KENlbGxBdHRyaWJ1dGVzKE5lZWRzRGVzdHJ1Y3Rpb24sIEhl
YXBDZWxsOjpKU0NlbGwpKSkKLSAgICAsIGFwaUdsb2JhbE9iamVjdEhlYXBDZWxsVHlwZShJc29I
ZWFwQ2VsbFR5cGU6OmNyZWF0ZTxKU0FQSUdsb2JhbE9iamVjdD4oKSkKLSAgICAsIGNhbGxiYWNr
Q29uc3RydWN0b3JIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpjcmVhdGU8SlNDYWxsYmFj
a0NvbnN0cnVjdG9yPigpKQotICAgICwgY2FsbGJhY2tHbG9iYWxPYmplY3RIZWFwQ2VsbFR5cGUo
SXNvSGVhcENlbGxUeXBlOjpjcmVhdGU8SlNDYWxsYmFja09iamVjdDxKU0dsb2JhbE9iamVjdD4+
KCkpCi0gICAgLCBjYWxsYmFja09iamVjdEhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OmNy
ZWF0ZTxKU0NhbGxiYWNrT2JqZWN0PEpTTm9uRmluYWxPYmplY3Q+PigpKQotICAgICwgY3VzdG9t
R2V0dGVyRnVuY3Rpb25IZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpjcmVhdGU8SlNDdXN0
b21HZXR0ZXJGdW5jdGlvbj4oKSkKLSAgICAsIGN1c3RvbVNldHRlckZ1bmN0aW9uSGVhcENlbGxU
eXBlKElzb0hlYXBDZWxsVHlwZTo6Y3JlYXRlPEpTQ3VzdG9tU2V0dGVyRnVuY3Rpb24+KCkpCi0g
ICAgLCBkYXRlSW5zdGFuY2VIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpjcmVhdGU8RGF0
ZUluc3RhbmNlPigpKQotICAgICwgZXJyb3JJbnN0YW5jZUhlYXBDZWxsVHlwZShJc29IZWFwQ2Vs
bFR5cGU6OmNyZWF0ZTxFcnJvckluc3RhbmNlPigpKQotICAgICwgZmluYWxpemF0aW9uUmVnaXN0
cnlDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OmNyZWF0ZTxKU0ZpbmFsaXphdGlvblJlZ2lzdHJ5
PigpKQotICAgICwgZ2xvYmFsTGV4aWNhbEVudmlyb25tZW50SGVhcENlbGxUeXBlKElzb0hlYXBD
ZWxsVHlwZTo6Y3JlYXRlPEpTR2xvYmFsTGV4aWNhbEVudmlyb25tZW50PigpKQotICAgICwgZ2xv
YmFsT2JqZWN0SGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6Y3JlYXRlPEpTR2xvYmFsT2Jq
ZWN0PigpKQotICAgICwgaW5qZWN0ZWRTY3JpcHRIb3N0U3BhY2VIZWFwQ2VsbFR5cGUoSXNvSGVh
cENlbGxUeXBlOjpjcmVhdGU8SW5zcGVjdG9yOjpKU0luamVjdGVkU2NyaXB0SG9zdD4oKSkKLSAg
ICAsIGphdmFTY3JpcHRDYWxsRnJhbWVIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpjcmVh
dGU8SW5zcGVjdG9yOjpKU0phdmFTY3JpcHRDYWxsRnJhbWU+KCkpCi0gICAgLCBqc01vZHVsZVJl
Y29yZEhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OmNyZWF0ZTxKU01vZHVsZVJlY29yZD4o
KSkKLSAgICAsIG1vZHVsZU5hbWVzcGFjZU9iamVjdEhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5
cGU6OmNyZWF0ZTxKU01vZHVsZU5hbWVzcGFjZU9iamVjdD4oKSkKLSAgICAsIG5hdGl2ZVN0ZEZ1
bmN0aW9uSGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6Y3JlYXRlPEpTTmF0aXZlU3RkRnVu
Y3Rpb24+KCkpCi0gICAgLCBzdHJpbmdIZWFwQ2VsbFR5cGUobWFrZVVuaXF1ZTxJc29JbmxpbmVk
SGVhcENlbGxUeXBlPEpTU3RyaW5nPj4oKSkKLSAgICAsIHdlYWtNYXBIZWFwQ2VsbFR5cGUoSXNv
SGVhcENlbGxUeXBlOjpjcmVhdGU8SlNXZWFrTWFwPigpKQotICAgICwgd2Vha1NldEhlYXBDZWxs
VHlwZShJc29IZWFwQ2VsbFR5cGU6OmNyZWF0ZTxKU1dlYWtTZXQ+KCkpCi0gICAgLCBkZXN0cnVj
dGlibGVPYmplY3RIZWFwQ2VsbFR5cGUobWFrZVVuaXF1ZTxKU0Rlc3RydWN0aWJsZU9iamVjdEhl
YXBDZWxsVHlwZT4oKSkKLSNpZiBKU0NfT0JKQ19BUElfRU5BQkxFRAotICAgICwgYXBpV3JhcHBl
ck9iamVjdEhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OmNyZWF0ZTxKU0NhbGxiYWNrT2Jq
ZWN0PEpTQVBJV3JhcHBlck9iamVjdD4+KCkpCi0gICAgLCBvYmpDQ2FsbGJhY2tGdW5jdGlvbkhl
YXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OmNyZWF0ZTxPYmpDQ2FsbGJhY2tGdW5jdGlvbj4o
KSkKLSNlbmRpZgotI2lmZGVmIEpTQ19HTElCX0FQSV9FTkFCTEVECi0gICAgLCBhcGlXcmFwcGVy
T2JqZWN0SGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6Y3JlYXRlPEpTQ2FsbGJhY2tPYmpl
Y3Q8SlNBUElXcmFwcGVyT2JqZWN0Pj4oKSkKLSAgICAsIGNhbGxiYWNrQVBJV3JhcHBlckdsb2Jh
bE9iamVjdEhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OmNyZWF0ZTxKU0NhbGxiYWNrT2Jq
ZWN0PEpTQVBJV3JhcHBlckdsb2JhbE9iamVjdD4+KCkpCi0gICAgLCBqc2NDYWxsYmFja0Z1bmN0
aW9uSGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6Y3JlYXRlPEpTQ0NhbGxiYWNrRnVuY3Rp
b24+KCkpCi0jZW5kaWYKLSAgICAsIGludGxDb2xsYXRvckhlYXBDZWxsVHlwZShJc29IZWFwQ2Vs
bFR5cGU6OmNyZWF0ZTxJbnRsQ29sbGF0b3I+KCkpCi0gICAgLCBpbnRsRGF0ZVRpbWVGb3JtYXRI
ZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpjcmVhdGU8SW50bERhdGVUaW1lRm9ybWF0Pigp
KQotICAgICwgaW50bERpc3BsYXlOYW1lc0hlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OmNy
ZWF0ZTxJbnRsRGlzcGxheU5hbWVzPigpKQotICAgICwgaW50bExpc3RGb3JtYXRIZWFwQ2VsbFR5
cGUoSXNvSGVhcENlbGxUeXBlOjpjcmVhdGU8SW50bExpc3RGb3JtYXQ+KCkpCi0gICAgLCBpbnRs
TG9jYWxlSGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6Y3JlYXRlPEludGxMb2NhbGU+KCkp
Ci0gICAgLCBpbnRsTnVtYmVyRm9ybWF0SGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6Y3Jl
YXRlPEludGxOdW1iZXJGb3JtYXQ+KCkpCi0gICAgLCBpbnRsUGx1cmFsUnVsZXNIZWFwQ2VsbFR5
cGUoSXNvSGVhcENlbGxUeXBlOjpjcmVhdGU8SW50bFBsdXJhbFJ1bGVzPigpKQotICAgICwgaW50
bFJlbGF0aXZlVGltZUZvcm1hdEhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OmNyZWF0ZTxJ
bnRsUmVsYXRpdmVUaW1lRm9ybWF0PigpKQotICAgICwgaW50bFNlZ21lbnRJdGVyYXRvckhlYXBD
ZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OmNyZWF0ZTxJbnRsU2VnbWVudEl0ZXJhdG9yPigpKQot
ICAgICwgaW50bFNlZ21lbnRlckhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OmNyZWF0ZTxJ
bnRsU2VnbWVudGVyPigpKQotICAgICwgaW50bFNlZ21lbnRzSGVhcENlbGxUeXBlKElzb0hlYXBD
ZWxsVHlwZTo6Y3JlYXRlPEludGxTZWdtZW50cz4oKSkKLSNpZiBFTkFCTEUoV0VCQVNTRU1CTFkp
Ci0gICAgLCB3ZWJBc3NlbWJseUNvZGVCbG9ja0hlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6
OmNyZWF0ZTxKU1dlYkFzc2VtYmx5Q29kZUJsb2NrPigpKQotICAgICwgd2ViQXNzZW1ibHlFeGNl
cHRpb25IZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpjcmVhdGU8SlNXZWJBc3NlbWJseUV4
Y2VwdGlvbj4oKSkKLSAgICAsIHdlYkFzc2VtYmx5RnVuY3Rpb25IZWFwQ2VsbFR5cGUoSXNvSGVh
cENlbGxUeXBlOjpjcmVhdGU8V2ViQXNzZW1ibHlGdW5jdGlvbj4oKSkKLSAgICAsIHdlYkFzc2Vt
Ymx5R2xvYmFsSGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6Y3JlYXRlPEpTV2ViQXNzZW1i
bHlHbG9iYWw+KCkpCi0gICAgLCB3ZWJBc3NlbWJseUluc3RhbmNlSGVhcENlbGxUeXBlKElzb0hl
YXBDZWxsVHlwZTo6Y3JlYXRlPEpTV2ViQXNzZW1ibHlJbnN0YW5jZT4oKSkKLSAgICAsIHdlYkFz
c2VtYmx5TWVtb3J5SGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6Y3JlYXRlPEpTV2ViQXNz
ZW1ibHlNZW1vcnk+KCkpCi0gICAgLCB3ZWJBc3NlbWJseU1vZHVsZUhlYXBDZWxsVHlwZShJc29I
ZWFwQ2VsbFR5cGU6OmNyZWF0ZTxKU1dlYkFzc2VtYmx5TW9kdWxlPigpKQotICAgICwgd2ViQXNz
ZW1ibHlNb2R1bGVSZWNvcmRIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpjcmVhdGU8V2Vi
QXNzZW1ibHlNb2R1bGVSZWNvcmQ+KCkpCi0gICAgLCB3ZWJBc3NlbWJseVRhYmxlSGVhcENlbGxU
eXBlKElzb0hlYXBDZWxsVHlwZTo6Y3JlYXRlPEpTV2ViQXNzZW1ibHlUYWJsZT4oKSkKLSAgICAs
IHdlYkFzc2VtYmx5VGFnSGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6Y3JlYXRlPEpTV2Vi
QXNzZW1ibHlUYWc+KCkpCi0jZW5kaWYKLSAgICAsIHByaW1pdGl2ZUdpZ2FjYWdlQXV4aWxpYXJ5
U3BhY2UoIlByaW1pdGl2ZSBHaWdhY2FnZSBBdXhpbGlhcnkiLCBoZWFwLCAqYXV4aWxpYXJ5SGVh
cENlbGxUeXBlLCBwcmltaXRpdmVHaWdhY2FnZUFsbG9jYXRvci5nZXQoKSkgLy8gSGFzaDoweDNl
N2NkNzYyCi0gICAgLCBqc1ZhbHVlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZSgiSlNWYWx1ZSBHaWdh
Y2FnZSBBdXhpbGlhcnkiLCBoZWFwLCAqYXV4aWxpYXJ5SGVhcENlbGxUeXBlLCBqc1ZhbHVlR2ln
YWNhZ2VBbGxvY2F0b3IuZ2V0KCkpIC8vIEhhc2g6MHgyNDFlOTQ2Ci0gICAgLCBpbW11dGFibGVC
dXR0ZXJmbHlKU1ZhbHVlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZSgiSW1tdXRhYmxlQnV0dGVyZmx5
IEdpZ2FjYWdlIEpTQ2VsbFdpdGhJbmRleGluZ0hlYWRlciIsIGhlYXAsICppbW11dGFibGVCdXR0
ZXJmbHlIZWFwQ2VsbFR5cGUsIGpzVmFsdWVHaWdhY2FnZUFsbG9jYXRvci5nZXQoKSkgLy8gSGFz
aDoweDdhOTQ1MzAwCi0gICAgLCBjZWxsU3BhY2UoIkpTQ2VsbCIsIGhlYXAsICpjZWxsSGVhcENl
bGxUeXBlLCBmYXN0TWFsbG9jQWxsb2NhdG9yLmdldCgpKSAvLyBIYXNoOjB4YWRmYjVhNzkKLSAg
ICAsIHZhcmlhYmxlU2l6ZWRDZWxsU3BhY2UoIlZhcmlhYmxlIFNpemVkIEpTQ2VsbCIsIGhlYXAs
ICpjZWxsSGVhcENlbGxUeXBlLCBmYXN0TWFsbG9jQWxsb2NhdG9yLmdldCgpKSAvLyBIYXNoOjB4
YmNkNzY5Y2MKLSAgICAsIGRlc3RydWN0aWJsZU9iamVjdFNwYWNlKCJKU0Rlc3RydWN0aWJsZU9i
amVjdCIsIGhlYXAsICpkZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUsIGZhc3RNYWxsb2NB
bGxvY2F0b3IuZ2V0KCkpIC8vIEhhc2g6MHg0ZjVlZDdhOQotICAgICwgYXJyYXlTcGFjZSBJU09f
U1VCU1BBQ0VfSU5JVChoZWFwLCAqY2VsbEhlYXBDZWxsVHlwZSwgSlNBcnJheSkKLSAgICAsIGJp
Z0ludFNwYWNlIElTT19TVUJTUEFDRV9JTklUKGhlYXAsICpjZWxsSGVhcENlbGxUeXBlLCBKU0Jp
Z0ludCkKLSAgICAsIGNhbGxlZVNwYWNlIElTT19TVUJTUEFDRV9JTklUKGhlYXAsICpjZWxsSGVh
cENlbGxUeXBlLCBKU0NhbGxlZSkKLSAgICAsIGNsb25lZEFyZ3VtZW50c1NwYWNlIElTT19TVUJT
UEFDRV9JTklUKGhlYXAsICpjZWxsSGVhcENlbGxUeXBlLCBDbG9uZWRBcmd1bWVudHMpCi0gICAg
LCBjdXN0b21HZXR0ZXJTZXR0ZXJTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVChoZWFwLCAqY2VsbEhl
YXBDZWxsVHlwZSwgQ3VzdG9tR2V0dGVyU2V0dGVyKQotICAgICwgZGF0ZUluc3RhbmNlU3BhY2Ug
SVNPX1NVQlNQQUNFX0lOSVQoaGVhcCwgKmRhdGVJbnN0YW5jZUhlYXBDZWxsVHlwZSwgRGF0ZUlu
c3RhbmNlKQotICAgICwgZG9tQXR0cmlidXRlR2V0dGVyU2V0dGVyU3BhY2UgSVNPX1NVQlNQQUNF
X0lOSVQoaGVhcCwgKmNlbGxIZWFwQ2VsbFR5cGUsIERPTUF0dHJpYnV0ZUdldHRlclNldHRlcikK
LSAgICAsIGV4Y2VwdGlvblNwYWNlIElTT19TVUJTUEFDRV9JTklUKGhlYXAsICpkZXN0cnVjdGli
bGVDZWxsSGVhcENlbGxUeXBlLCBFeGNlcHRpb24pCi0gICAgLCBleGVjdXRhYmxlVG9Db2RlQmxv
Y2tFZGdlU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoaGVhcCwgKmNlbGxIZWFwQ2VsbFR5cGUsIEV4
ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2UpIC8vIEhhc2g6MHg3YjczMGIyMAotICAgICwgZnVuY3Rp
b25TcGFjZSBJU09fU1VCU1BBQ0VfSU5JVChoZWFwLCAqY2VsbEhlYXBDZWxsVHlwZSwgSlNGdW5j
dGlvbikgLy8gSGFzaDoweDgwMGZjYTcyCi0gICAgLCBnZXR0ZXJTZXR0ZXJTcGFjZSBJU09fU1VC
U1BBQ0VfSU5JVChoZWFwLCAqY2VsbEhlYXBDZWxsVHlwZSwgR2V0dGVyU2V0dGVyKQotICAgICwg
Z2xvYmFsTGV4aWNhbEVudmlyb25tZW50U3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoaGVhcCwgKmds
b2JhbExleGljYWxFbnZpcm9ubWVudEhlYXBDZWxsVHlwZSwgSlNHbG9iYWxMZXhpY2FsRW52aXJv
bm1lbnQpCi0gICAgLCBpbnRlcm5hbEZ1bmN0aW9uU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoaGVh
cCwgKmNlbGxIZWFwQ2VsbFR5cGUsIEludGVybmFsRnVuY3Rpb24pIC8vIEhhc2g6MHhmODQ1YzQ2
NAotICAgICwganNQcm94eVNwYWNlIElTT19TVUJTUEFDRV9JTklUKGhlYXAsICpjZWxsSGVhcENl
bGxUeXBlLCBKU1Byb3h5KQotICAgICwgbmF0aXZlRXhlY3V0YWJsZVNwYWNlIElTT19TVUJTUEFD
RV9JTklUKGhlYXAsICpkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlLCBOYXRpdmVFeGVjdXRh
YmxlKSAvLyBIYXNoOjB4Njc1NjdmOTUKLSAgICAsIG51bWJlck9iamVjdFNwYWNlIElTT19TVUJT
UEFDRV9JTklUKGhlYXAsICpjZWxsSGVhcENlbGxUeXBlLCBOdW1iZXJPYmplY3QpCi0gICAgLCBw
bGFpbk9iamVjdFNwYWNlIElTT19TVUJTUEFDRV9JTklUKGhlYXAsICpjZWxsSGVhcENlbGxUeXBl
LCBKU05vbkZpbmFsT2JqZWN0KSAvLyBNYWlubHkgdXNlZCBmb3IgcHJvdG90eXBlcy4KLSAgICAs
IHByb21pc2VTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVChoZWFwLCAqY2VsbEhlYXBDZWxsVHlwZSwg
SlNQcm9taXNlKQotICAgICwgcHJvcGVydHlOYW1lRW51bWVyYXRvclNwYWNlIElTT19TVUJTUEFD
RV9JTklUKGhlYXAsICpjZWxsSGVhcENlbGxUeXBlLCBKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3Ip
Ci0gICAgLCBwcm9wZXJ0eVRhYmxlU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoaGVhcCwgKmRlc3Ry
dWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUsIFByb3BlcnR5VGFibGUpIC8vIEhhc2g6MHhjNmJjOWYx
MgotICAgICwgcmVnRXhwU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoaGVhcCwgKmRlc3RydWN0aWJs
ZUNlbGxIZWFwQ2VsbFR5cGUsIFJlZ0V4cCkKLSAgICAsIHJlZ0V4cE9iamVjdFNwYWNlIElTT19T
VUJTUEFDRV9JTklUKGhlYXAsICpjZWxsSGVhcENlbGxUeXBlLCBSZWdFeHBPYmplY3QpCi0gICAg
LCByb3BlU3RyaW5nU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoaGVhcCwgKnN0cmluZ0hlYXBDZWxs
VHlwZSwgSlNSb3BlU3RyaW5nKQotICAgICwgc2NvcGVkQXJndW1lbnRzU3BhY2UgSVNPX1NVQlNQ
QUNFX0lOSVQoaGVhcCwgKmNlbGxIZWFwQ2VsbFR5cGUsIFNjb3BlZEFyZ3VtZW50cykKLSAgICAs
IHNwYXJzZUFycmF5VmFsdWVNYXBTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVChoZWFwLCAqZGVzdHJ1
Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZSwgU3BhcnNlQXJyYXlWYWx1ZU1hcCkKLSAgICAsIHN0cmlu
Z1NwYWNlIElTT19TVUJTUEFDRV9JTklUKGhlYXAsICpzdHJpbmdIZWFwQ2VsbFR5cGUsIEpTU3Ry
aW5nKSAvLyBIYXNoOjB4OTBjZjc1OGYKLSAgICAsIHN0cmluZ09iamVjdFNwYWNlIElTT19TVUJT
UEFDRV9JTklUKGhlYXAsICpjZWxsSGVhcENlbGxUeXBlLCBTdHJpbmdPYmplY3QpCi0gICAgLCBz
dHJ1Y3R1cmVDaGFpblNwYWNlIElTT19TVUJTUEFDRV9JTklUKGhlYXAsICpjZWxsSGVhcENlbGxU
eXBlLCBTdHJ1Y3R1cmVDaGFpbikKLSAgICAsIHN0cnVjdHVyZVJhcmVEYXRhU3BhY2UgSVNPX1NV
QlNQQUNFX0lOSVQoaGVhcCwgKmRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUsIFN0cnVjdHVy
ZVJhcmVEYXRhKSAvLyBIYXNoOjB4YWNhNGU2MmQKLSAgICAsIHN0cnVjdHVyZVNwYWNlIElTT19T
VUJTUEFDRV9JTklUKGhlYXAsICpkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlLCBTdHJ1Y3R1
cmUpIC8vIEhhc2g6MHgxZjFiY2RjYQotICAgICwgYnJhbmRlZFN0cnVjdHVyZVNwYWNlIElTT19T
VUJTUEFDRV9JTklUKGhlYXAsICpkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlLCBCcmFuZGVk
U3RydWN0dXJlKQotICAgICwgc3ltYm9sVGFibGVTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVChoZWFw
LCAqZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZSwgU3ltYm9sVGFibGUpIC8vIEhhc2g6MHhj
NTIxNWFmZAotICAgICwgZXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZXNXaXRoQ29uc3RyYWludHMo
ZXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZVNwYWNlKQotICAgICwgZXhlY3V0YWJsZVRvQ29kZUJs
b2NrRWRnZXNXaXRoRmluYWxpemVycyhleGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlU3BhY2UpCi0g
ICAgLCBjb2RlQmxvY2tTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVChoZWFwLCAqZGVzdHJ1Y3RpYmxl
Q2VsbEhlYXBDZWxsVHlwZSwgQ29kZUJsb2NrKSAvLyBIYXNoOjB4NzdlNjZlYzkKLSAgICAsIGZ1
bmN0aW9uRXhlY3V0YWJsZVNwYWNlIElTT19TVUJTUEFDRV9JTklUKGhlYXAsICpkZXN0cnVjdGli
bGVDZWxsSGVhcENlbGxUeXBlLCBGdW5jdGlvbkV4ZWN1dGFibGUpIC8vIEhhc2g6MHg1ZDE1OGYz
Ci0gICAgLCBwcm9ncmFtRXhlY3V0YWJsZVNwYWNlIElTT19TVUJTUEFDRV9JTklUKGhlYXAsICpk
ZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlLCBQcm9ncmFtRXhlY3V0YWJsZSkgLy8gSGFzaDow
eDUyN2M3N2U3Ci0gICAgLCB1bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZVNwYWNlIElTT19TVUJT
UEFDRV9JTklUKGhlYXAsICpkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlLCBVbmxpbmtlZEZ1
bmN0aW9uRXhlY3V0YWJsZSkgLy8gSGFzaDoweGY2YjgyOGQ5CiAgICAgLCB2bVR5cGUodm1UeXBl
KQogICAgICwgY2xpZW50RGF0YShudWxscHRyKQogICAgICwgdG9wRW50cnlGcmFtZShudWxscHRy
KQpAQCAtMTU3MiwxMzcgKzEzODYsNiBAQCB2b2lkIFZNOjplbnN1cmVTaGFkb3dDaGlja2VuKCkK
ICAgICBtX3NoYWRvd0NoaWNrZW4gPSBtYWtlVW5pcXVlPFNoYWRvd0NoaWNrZW4+KCk7CiB9CiAK
LSNkZWZpbmUgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKG5hbWUsIGhl
YXBDZWxsVHlwZSwgdHlwZSkgXAotICAgIElzb1N1YnNwYWNlKiBWTTo6bmFtZSMjU2xvdygpIFwK
LSAgICB7IFwKLSAgICAgICAgQVNTRVJUKCFtXyMjbmFtZSk7IFwKLSAgICAgICAgYXV0byBzcGFj
ZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKGhlYXAsIGhlYXBD
ZWxsVHlwZSwgdHlwZSk7IFwKLSAgICAgICAgV1RGOjpzdG9yZVN0b3JlRmVuY2UoKTsgXAotICAg
ICAgICBtXyMjbmFtZSA9IFdURk1vdmUoc3BhY2UpOyBcCi0gICAgICAgIHJldHVybiBtXyMjbmFt
ZS5nZXQoKTsgXAotICAgIH0KLQotCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVS
X1NMT1coYXBpR2xvYmFsT2JqZWN0U3BhY2UsICphcGlHbG9iYWxPYmplY3RIZWFwQ2VsbFR5cGUs
IEpTQVBJR2xvYmFsT2JqZWN0KQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9T
TE9XKGFwaVZhbHVlV3JhcHBlclNwYWNlLCAqY2VsbEhlYXBDZWxsVHlwZSwgSlNBUElWYWx1ZVdy
YXBwZXIpCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coYXJyYXlCdWZm
ZXJTcGFjZSwgKmNlbGxIZWFwQ2VsbFR5cGUsIEpTQXJyYXlCdWZmZXIpCi1EWU5BTUlDX0lTT19T
VUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coYXJyYXlJdGVyYXRvclNwYWNlLCAqY2VsbEhlYXBD
ZWxsVHlwZSwgSlNBcnJheUl0ZXJhdG9yKQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01F
TUJFUl9TTE9XKGFzeW5jR2VuZXJhdG9yU3BhY2UsICpjZWxsSGVhcENlbGxUeXBlLCBKU0FzeW5j
R2VuZXJhdG9yKQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGJpZ0lu
dDY0QXJyYXlTcGFjZSwgKmNlbGxIZWFwQ2VsbFR5cGUsIEpTQmlnSW50NjRBcnJheSkKLURZTkFN
SUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhiaWdJbnRPYmplY3RTcGFjZSwgKmNl
bGxIZWFwQ2VsbFR5cGUsIEJpZ0ludE9iamVjdCkKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklO
RV9NRU1CRVJfU0xPVyhiaWdVaW50NjRBcnJheVNwYWNlLCAqY2VsbEhlYXBDZWxsVHlwZSwgSlNC
aWdVaW50NjRBcnJheSkKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhi
b29sZWFuT2JqZWN0U3BhY2UsICpjZWxsSGVhcENlbGxUeXBlLCBCb29sZWFuT2JqZWN0KQotRFlO
QU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGJvdW5kRnVuY3Rpb25TcGFjZSwg
KmNlbGxIZWFwQ2VsbFR5cGUsIEpTQm91bmRGdW5jdGlvbikgLy8gSGFzaDoweGQ3OTE2ZDQxCi1E
WU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coY2FsbGJhY2tDb25zdHJ1Y3Rv
clNwYWNlLCAqY2FsbGJhY2tDb25zdHJ1Y3RvckhlYXBDZWxsVHlwZSwgSlNDYWxsYmFja0NvbnN0
cnVjdG9yKQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGNhbGxiYWNr
R2xvYmFsT2JqZWN0U3BhY2UsICpjYWxsYmFja0dsb2JhbE9iamVjdEhlYXBDZWxsVHlwZSwgSlND
YWxsYmFja09iamVjdDxKU0dsb2JhbE9iamVjdD4pCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJ
TkVfTUVNQkVSX1NMT1coY2FsbGJhY2tGdW5jdGlvblNwYWNlLCAqY2VsbEhlYXBDZWxsVHlwZSwg
SlNDYWxsYmFja0Z1bmN0aW9uKSAvLyBIYXNoOjB4ZTc2NDhlYmMKLURZTkFNSUNfSVNPX1NVQlNQ
QUNFX0RFRklORV9NRU1CRVJfU0xPVyhjYWxsYmFja09iamVjdFNwYWNlLCAqY2FsbGJhY2tPYmpl
Y3RIZWFwQ2VsbFR5cGUsIEpTQ2FsbGJhY2tPYmplY3Q8SlNOb25GaW5hbE9iamVjdD4pCi1EWU5B
TUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coY3VzdG9tR2V0dGVyRnVuY3Rpb25T
cGFjZSwgKmN1c3RvbUdldHRlckZ1bmN0aW9uSGVhcENlbGxUeXBlLCBKU0N1c3RvbUdldHRlckZ1
bmN0aW9uKQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGN1c3RvbVNl
dHRlckZ1bmN0aW9uU3BhY2UsICpjdXN0b21TZXR0ZXJGdW5jdGlvbkhlYXBDZWxsVHlwZSwgSlND
dXN0b21TZXR0ZXJGdW5jdGlvbikKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJf
U0xPVyhkYXRhVmlld1NwYWNlLCAqY2VsbEhlYXBDZWxsVHlwZSwgSlNEYXRhVmlldykKLURZTkFN
SUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhkZWJ1Z2dlclNjb3BlU3BhY2UsICpj
ZWxsSGVhcENlbGxUeXBlLCBEZWJ1Z2dlclNjb3BlKQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVG
SU5FX01FTUJFUl9TTE9XKGVycm9ySW5zdGFuY2VTcGFjZSwgKmVycm9ySW5zdGFuY2VIZWFwQ2Vs
bFR5cGUsIEVycm9ySW5zdGFuY2UpIC8vIEhhc2g6MHgzZjQwZDRhCi1EWU5BTUlDX0lTT19TVUJT
UEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coZmxvYXQzMkFycmF5U3BhY2UsICpjZWxsSGVhcENlbGxU
eXBlLCBKU0Zsb2F0MzJBcnJheSkKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJf
U0xPVyhmbG9hdDY0QXJyYXlTcGFjZSwgKmNlbGxIZWFwQ2VsbFR5cGUsIEpTRmxvYXQ2NEFycmF5
KQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGZ1bmN0aW9uUmFyZURh
dGFTcGFjZSwgKmRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUsIEZ1bmN0aW9uUmFyZURhdGEp
Ci1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coZ2VuZXJhdG9yU3BhY2Us
ICpjZWxsSGVhcENlbGxUeXBlLCBKU0dlbmVyYXRvcikKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RF
RklORV9NRU1CRVJfU0xPVyhnbG9iYWxPYmplY3RTcGFjZSwgKmdsb2JhbE9iamVjdEhlYXBDZWxs
VHlwZSwgSlNHbG9iYWxPYmplY3QpCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVS
X1NMT1coaW5qZWN0ZWRTY3JpcHRIb3N0U3BhY2UsICppbmplY3RlZFNjcmlwdEhvc3RTcGFjZUhl
YXBDZWxsVHlwZSwgSW5zcGVjdG9yOjpKU0luamVjdGVkU2NyaXB0SG9zdCkKLURZTkFNSUNfSVNP
X1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhpbnQ4QXJyYXlTcGFjZSwgKmNlbGxIZWFwQ2Vs
bFR5cGUsIEpTSW50OEFycmF5KQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9T
TE9XKGludDE2QXJyYXlTcGFjZSwgKmNlbGxIZWFwQ2VsbFR5cGUsIEpTSW50MTZBcnJheSkKLURZ
TkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhpbnQzMkFycmF5U3BhY2UsICpj
ZWxsSGVhcENlbGxUeXBlLCBKU0ludDMyQXJyYXkpCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJ
TkVfTUVNQkVSX1NMT1coamF2YVNjcmlwdENhbGxGcmFtZVNwYWNlLCAqamF2YVNjcmlwdENhbGxG
cmFtZUhlYXBDZWxsVHlwZSwgSW5zcGVjdG9yOjpKU0phdmFTY3JpcHRDYWxsRnJhbWUpCi1EWU5B
TUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coanNNb2R1bGVSZWNvcmRTcGFjZSwg
KmpzTW9kdWxlUmVjb3JkSGVhcENlbGxUeXBlLCBKU01vZHVsZVJlY29yZCkKLURZTkFNSUNfSVNP
X1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhtYXBCdWNrZXRTcGFjZSwgKmNlbGxIZWFwQ2Vs
bFR5cGUsIEpTTWFwOjpCdWNrZXRUeXBlKQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01F
TUJFUl9TTE9XKG1hcEl0ZXJhdG9yU3BhY2UsICpjZWxsSGVhcENlbGxUeXBlLCBKU01hcEl0ZXJh
dG9yKQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKG1hcFNwYWNlLCAq
Y2VsbEhlYXBDZWxsVHlwZSwgSlNNYXApCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVN
QkVSX1NMT1cobW9kdWxlTmFtZXNwYWNlT2JqZWN0U3BhY2UsICptb2R1bGVOYW1lc3BhY2VPYmpl
Y3RIZWFwQ2VsbFR5cGUsIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0KQotRFlOQU1JQ19JU09fU1VC
U1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKG5hdGl2ZVN0ZEZ1bmN0aW9uU3BhY2UsICpuYXRpdmVT
dGRGdW5jdGlvbkhlYXBDZWxsVHlwZSwgSlNOYXRpdmVTdGRGdW5jdGlvbikgLy8gSGFzaDoweDcw
ZWQ2MWU0Ci1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1cocHJveHlPYmpl
Y3RTcGFjZSwgKmNlbGxIZWFwQ2VsbFR5cGUsIFByb3h5T2JqZWN0KQotRFlOQU1JQ19JU09fU1VC
U1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHByb3h5UmV2b2tlU3BhY2UsICpjZWxsSGVhcENlbGxU
eXBlLCBQcm94eVJldm9rZSkgLy8gSGFzaDoweGI1MDZhOTM5Ci1EWU5BTUlDX0lTT19TVUJTUEFD
RV9ERUZJTkVfTUVNQkVSX1NMT1coc2NvcGVkQXJndW1lbnRzVGFibGVTcGFjZSwgKmRlc3RydWN0
aWJsZUNlbGxIZWFwQ2VsbFR5cGUsIFNjb3BlZEFyZ3VtZW50c1RhYmxlKQotRFlOQU1JQ19JU09f
U1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHNjcmlwdEZldGNoUGFyYW1ldGVyc1NwYWNlLCAq
ZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZSwgSlNTY3JpcHRGZXRjaFBhcmFtZXRlcnMpCi1E
WU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coc2NyaXB0RmV0Y2hlclNwYWNl
LCAqZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZSwgSlNTY3JpcHRGZXRjaGVyKQotRFlOQU1J
Q19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHNldEJ1Y2tldFNwYWNlLCAqY2VsbEhl
YXBDZWxsVHlwZSwgSlNTZXQ6OkJ1Y2tldFR5cGUpCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJ
TkVfTUVNQkVSX1NMT1coc2V0SXRlcmF0b3JTcGFjZSwgKmNlbGxIZWFwQ2VsbFR5cGUsIEpTU2V0
SXRlcmF0b3IpCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coc2V0U3Bh
Y2UsICpjZWxsSGVhcENlbGxUeXBlLCBKU1NldCkKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklO
RV9NRU1CRVJfU0xPVyhzaGFkb3dSZWFsbVNwYWNlLCAqY2VsbEhlYXBDZWxsVHlwZSwgU2hhZG93
UmVhbG1PYmplY3QpCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coc3Ry
aWN0RXZhbEFjdGl2YXRpb25TcGFjZSwgKmNlbGxIZWFwQ2VsbFR5cGUsIFN0cmljdEV2YWxBY3Rp
dmF0aW9uKQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHN0cmluZ0l0
ZXJhdG9yU3BhY2UsICpjZWxsSGVhcENlbGxUeXBlLCBKU1N0cmluZ0l0ZXJhdG9yKQotRFlOQU1J
Q19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHNvdXJjZUNvZGVTcGFjZSwgKmRlc3Ry
dWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUsIEpTU291cmNlQ29kZSkKLURZTkFNSUNfSVNPX1NVQlNQ
QUNFX0RFRklORV9NRU1CRVJfU0xPVyhzeW1ib2xTcGFjZSwgKmRlc3RydWN0aWJsZUNlbGxIZWFw
Q2VsbFR5cGUsIFN5bWJvbCkKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xP
VyhzeW1ib2xPYmplY3RTcGFjZSwgKmNlbGxIZWFwQ2VsbFR5cGUsIFN5bWJvbE9iamVjdCkKLURZ
TkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh0ZW1wbGF0ZU9iamVjdERlc2Ny
aXB0b3JTcGFjZSwgKmRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUsIEpTVGVtcGxhdGVPYmpl
Y3REZXNjcmlwdG9yKQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHRl
bXBvcmFsQ2FsZW5kYXJTcGFjZSwgKmNlbGxIZWFwQ2VsbFR5cGUsIFRlbXBvcmFsQ2FsZW5kYXIp
Ci1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1codGVtcG9yYWxEdXJhdGlv
blNwYWNlLCAqY2VsbEhlYXBDZWxsVHlwZSwgVGVtcG9yYWxEdXJhdGlvbikKLURZTkFNSUNfSVNP
X1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh0ZW1wb3JhbEluc3RhbnRTcGFjZSwgKmNlbGxI
ZWFwQ2VsbFR5cGUsIFRlbXBvcmFsSW5zdGFudCkKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklO
RV9NRU1CRVJfU0xPVyh0ZW1wb3JhbFBsYWluVGltZVNwYWNlLCAqY2VsbEhlYXBDZWxsVHlwZSwg
VGVtcG9yYWxQbGFpblRpbWUpCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NM
T1codGVtcG9yYWxUaW1lWm9uZVNwYWNlLCAqY2VsbEhlYXBDZWxsVHlwZSwgVGVtcG9yYWxUaW1l
Wm9uZSkKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh1aW50OEFycmF5
U3BhY2UsICpjZWxsSGVhcENlbGxUeXBlLCBKU1VpbnQ4QXJyYXkpCi1EWU5BTUlDX0lTT19TVUJT
UEFDRV9ERUZJTkVfTUVNQkVSX1NMT1codWludDhDbGFtcGVkQXJyYXlTcGFjZSwgKmNlbGxIZWFw
Q2VsbFR5cGUsIEpTVWludDhDbGFtcGVkQXJyYXkpCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJ
TkVfTUVNQkVSX1NMT1codWludDE2QXJyYXlTcGFjZSwgKmNlbGxIZWFwQ2VsbFR5cGUsIEpTVWlu
dDE2QXJyYXkpCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1codWludDMy
QXJyYXlTcGFjZSwgKmNlbGxIZWFwQ2VsbFR5cGUsIEpTVWludDMyQXJyYXkpCi1EWU5BTUlDX0lT
T19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1codW5saW5rZWRFdmFsQ29kZUJsb2NrU3BhY2Us
ICpkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlLCBVbmxpbmtlZEV2YWxDb2RlQmxvY2spCi1E
WU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1codW5saW5rZWRGdW5jdGlvbkNv
ZGVCbG9ja1NwYWNlLCAqZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZSwgVW5saW5rZWRGdW5j
dGlvbkNvZGVCbG9jaykKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh1
bmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2tTcGFjZSwgKmRlc3RydWN0aWJsZUNlbGxIZWFw
Q2VsbFR5cGUsIFVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jaykKLURZTkFNSUNfSVNPX1NV
QlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh1bmxpbmtlZFByb2dyYW1Db2RlQmxvY2tTcGFjZSwg
KmRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUsIFVubGlua2VkUHJvZ3JhbUNvZGVCbG9jaykK
LURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh3ZWFrTWFwU3BhY2UsICp3
ZWFrTWFwSGVhcENlbGxUeXBlLCBKU1dlYWtNYXApIC8vIEhhc2g6MHg2NjJiMTJhMwotRFlOQU1J
Q19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHdlYWtTZXRTcGFjZSwgKndlYWtTZXRI
ZWFwQ2VsbFR5cGUsIEpTV2Vha1NldCkgLy8gSGFzaDoweDRjNzgxYjMwCi1EWU5BTUlDX0lTT19T
VUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1cod2Vha09iamVjdFJlZlNwYWNlLCAqY2VsbEhlYXBD
ZWxsVHlwZSwgSlNXZWFrT2JqZWN0UmVmKSAvLyBIYXNoOjB4OGVjNjhmMWYKLURZTkFNSUNfSVNP
X1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh3aXRoU2NvcGVTcGFjZSwgKmNlbGxIZWFwQ2Vs
bFR5cGUsIEpTV2l0aFNjb3BlKQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9T
TE9XKGZpbmFsaXphdGlvblJlZ2lzdHJ5U3BhY2UsICpmaW5hbGl6YXRpb25SZWdpc3RyeUNlbGxU
eXBlLCBKU0ZpbmFsaXphdGlvblJlZ2lzdHJ5KQotI2lmIEpTQ19PQkpDX0FQSV9FTkFCTEVECi1E
WU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coYXBpV3JhcHBlck9iamVjdFNw
YWNlLCAqYXBpV3JhcHBlck9iamVjdEhlYXBDZWxsVHlwZSwgSlNDYWxsYmFja09iamVjdDxKU0FQ
SVdyYXBwZXJPYmplY3Q+KQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9X
KG9iakNDYWxsYmFja0Z1bmN0aW9uU3BhY2UsICpvYmpDQ2FsbGJhY2tGdW5jdGlvbkhlYXBDZWxs
VHlwZSwgT2JqQ0NhbGxiYWNrRnVuY3Rpb24pIC8vIEhhc2g6MHgxMGY2MTBiOAotI2VuZGlmCi0j
aWZkZWYgSlNDX0dMSUJfQVBJX0VOQUJMRUQKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9N
RU1CRVJfU0xPVyhhcGlXcmFwcGVyT2JqZWN0U3BhY2UsICphcGlXcmFwcGVyT2JqZWN0SGVhcENl
bGxUeXBlLCBKU0NhbGxiYWNrT2JqZWN0PEpTQVBJV3JhcHBlck9iamVjdD4pCi1EWU5BTUlDX0lT
T19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coanNjQ2FsbGJhY2tGdW5jdGlvblNwYWNlLCAq
anNjQ2FsbGJhY2tGdW5jdGlvbkhlYXBDZWxsVHlwZSwgSlNDQ2FsbGJhY2tGdW5jdGlvbikKLURZ
TkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhjYWxsYmFja0FQSVdyYXBwZXJH
bG9iYWxPYmplY3RTcGFjZSwgKmNhbGxiYWNrQVBJV3JhcHBlckdsb2JhbE9iamVjdEhlYXBDZWxs
VHlwZSwgSlNDYWxsYmFja09iamVjdDxKU0FQSVdyYXBwZXJHbG9iYWxPYmplY3Q+KQotI2VuZGlm
Ci1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coaW50bENvbGxhdG9yU3Bh
Y2UsICppbnRsQ29sbGF0b3JIZWFwQ2VsbFR5cGUsIEludGxDb2xsYXRvcikKLURZTkFNSUNfSVNP
X1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhpbnRsRGF0ZVRpbWVGb3JtYXRTcGFjZSwgKmlu
dGxEYXRlVGltZUZvcm1hdEhlYXBDZWxsVHlwZSwgSW50bERhdGVUaW1lRm9ybWF0KQotRFlOQU1J
Q19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGludGxEaXNwbGF5TmFtZXNTcGFjZSwg
KmludGxEaXNwbGF5TmFtZXNIZWFwQ2VsbFR5cGUsIEludGxEaXNwbGF5TmFtZXMpCi1EWU5BTUlD
X0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coaW50bExpc3RGb3JtYXRTcGFjZSwgKmlu
dGxMaXN0Rm9ybWF0SGVhcENlbGxUeXBlLCBJbnRsTGlzdEZvcm1hdCkKLURZTkFNSUNfSVNPX1NV
QlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhpbnRsTG9jYWxlU3BhY2UsICppbnRsTG9jYWxlSGVh
cENlbGxUeXBlLCBJbnRsTG9jYWxlKQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJF
Ul9TTE9XKGludGxOdW1iZXJGb3JtYXRTcGFjZSwgKmludGxOdW1iZXJGb3JtYXRIZWFwQ2VsbFR5
cGUsIEludGxOdW1iZXJGb3JtYXQpCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVS
X1NMT1coaW50bFBsdXJhbFJ1bGVzU3BhY2UsICppbnRsUGx1cmFsUnVsZXNIZWFwQ2VsbFR5cGUs
IEludGxQbHVyYWxSdWxlcykKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xP
VyhpbnRsUmVsYXRpdmVUaW1lRm9ybWF0U3BhY2UsICppbnRsUmVsYXRpdmVUaW1lRm9ybWF0SGVh
cENlbGxUeXBlLCBJbnRsUmVsYXRpdmVUaW1lRm9ybWF0KQotRFlOQU1JQ19JU09fU1VCU1BBQ0Vf
REVGSU5FX01FTUJFUl9TTE9XKGludGxTZWdtZW50SXRlcmF0b3JTcGFjZSwgKmludGxTZWdtZW50
SXRlcmF0b3JIZWFwQ2VsbFR5cGUsIEludGxTZWdtZW50SXRlcmF0b3IpCi1EWU5BTUlDX0lTT19T
VUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coaW50bFNlZ21lbnRlclNwYWNlLCAqaW50bFNlZ21l
bnRlckhlYXBDZWxsVHlwZSwgSW50bFNlZ21lbnRlcikKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RF
RklORV9NRU1CRVJfU0xPVyhpbnRsU2VnbWVudHNTcGFjZSwgKmludGxTZWdtZW50c0hlYXBDZWxs
VHlwZSwgSW50bFNlZ21lbnRzKQotI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKLURZTkFNSUNfSVNP
X1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhqc1RvV2FzbUlDQ2FsbGVlU3BhY2UsICpjZWxs
SGVhcENlbGxUeXBlLCBKU1RvV2FzbUlDQ2FsbGVlKQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVG
SU5FX01FTUJFUl9TTE9XKHdlYkFzc2VtYmx5Q29kZUJsb2NrU3BhY2UsICp3ZWJBc3NlbWJseUNv
ZGVCbG9ja0hlYXBDZWxsVHlwZSwgSlNXZWJBc3NlbWJseUNvZGVCbG9jaykgLy8gSGFzaDoweDlh
ZDk5NWNkCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1cod2ViQXNzZW1i
bHlFeGNlcHRpb25TcGFjZSwgKndlYkFzc2VtYmx5RXhjZXB0aW9uSGVhcENlbGxUeXBlLCBKU1dl
YkFzc2VtYmx5RXhjZXB0aW9uKQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9T
TE9XKHdlYkFzc2VtYmx5RnVuY3Rpb25TcGFjZSwgKndlYkFzc2VtYmx5RnVuY3Rpb25IZWFwQ2Vs
bFR5cGUsIFdlYkFzc2VtYmx5RnVuY3Rpb24pIC8vIEhhc2g6MHg4YjdjMzJkYgotRFlOQU1JQ19J
U09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHdlYkFzc2VtYmx5R2xvYmFsU3BhY2UsICp3
ZWJBc3NlbWJseUdsb2JhbEhlYXBDZWxsVHlwZSwgSlNXZWJBc3NlbWJseUdsb2JhbCkKLURZTkFN
SUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh3ZWJBc3NlbWJseUluc3RhbmNlU3Bh
Y2UsICp3ZWJBc3NlbWJseUluc3RhbmNlSGVhcENlbGxUeXBlLCBKU1dlYkFzc2VtYmx5SW5zdGFu
Y2UpCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1cod2ViQXNzZW1ibHlN
ZW1vcnlTcGFjZSwgKndlYkFzc2VtYmx5TWVtb3J5SGVhcENlbGxUeXBlLCBKU1dlYkFzc2VtYmx5
TWVtb3J5KQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHdlYkFzc2Vt
Ymx5TW9kdWxlU3BhY2UsICp3ZWJBc3NlbWJseU1vZHVsZUhlYXBDZWxsVHlwZSwgSlNXZWJBc3Nl
bWJseU1vZHVsZSkKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh3ZWJB
c3NlbWJseU1vZHVsZVJlY29yZFNwYWNlLCAqd2ViQXNzZW1ibHlNb2R1bGVSZWNvcmRIZWFwQ2Vs
bFR5cGUsIFdlYkFzc2VtYmx5TW9kdWxlUmVjb3JkKQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVG
SU5FX01FTUJFUl9TTE9XKHdlYkFzc2VtYmx5VGFibGVTcGFjZSwgKndlYkFzc2VtYmx5VGFibGVI
ZWFwQ2VsbFR5cGUsIEpTV2ViQXNzZW1ibHlUYWJsZSkKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RF
RklORV9NRU1CRVJfU0xPVyh3ZWJBc3NlbWJseVRhZ1NwYWNlLCAqd2ViQXNzZW1ibHlUYWdIZWFw
Q2VsbFR5cGUsIEpTV2ViQXNzZW1ibHlUYWcpCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVf
TUVNQkVSX1NMT1cod2ViQXNzZW1ibHlXcmFwcGVyRnVuY3Rpb25TcGFjZSwgKmNlbGxIZWFwQ2Vs
bFR5cGUsIFdlYkFzc2VtYmx5V3JhcHBlckZ1bmN0aW9uKSAvLyBIYXNoOjB4ZDRhNWZmMDEKLSNl
bmRpZgotCi0jdW5kZWYgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XCi0K
LSNkZWZpbmUgRFlOQU1JQ19TUEFDRV9BTkRfU0VUX0RFRklORV9NRU1CRVJfU0xPVyhuYW1lLCBo
ZWFwQ2VsbFR5cGUsIHR5cGUpIFwKLSAgICBJc29TdWJzcGFjZSogVk06Om5hbWUjI1Nsb3coKSBc
Ci0gICAgeyBcCi0gICAgICAgIEFTU0VSVCghbV8jI25hbWUpOyBcCi0gICAgICAgIGF1dG8gc3Bh
Y2UgPSBtYWtlVW5pcXVlPFNwYWNlQW5kU2V0PiBJU09fU1VCU1BBQ0VfSU5JVChoZWFwLCBoZWFw
Q2VsbFR5cGUsIHR5cGUpOyBcCi0gICAgICAgIFdURjo6c3RvcmVTdG9yZUZlbmNlKCk7IFwKLSAg
ICAgICAgbV8jI25hbWUgPSBXVEZNb3ZlKHNwYWNlKTsgXAotICAgICAgICByZXR1cm4gJm1fIyNu
YW1lLT5zcGFjZTsgXAotICAgIH0KLQotRFlOQU1JQ19TUEFDRV9BTkRfU0VUX0RFRklORV9NRU1C
RVJfU0xPVyhldmFsRXhlY3V0YWJsZVNwYWNlLCAqZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlw
ZSwgRXZhbEV4ZWN1dGFibGUpIC8vIEhhc2g6MHg5NThlM2U5ZAotRFlOQU1JQ19TUEFDRV9BTkRf
U0VUX0RFRklORV9NRU1CRVJfU0xPVyhtb2R1bGVQcm9ncmFtRXhlY3V0YWJsZVNwYWNlLCAqZGVz
dHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZSwgTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUpIC8vIEhh
c2g6MHg2NTA2ZmEzYwotCi0jdW5kZWYgRFlOQU1JQ19TUEFDRV9BTkRfU0VUX0RFRklORV9NRU1C
RVJfU0xPVwotCiBKU0NlbGwqIFZNOjpzZW50aW5lbFNldEJ1Y2tldFNsb3coKQogewogICAgIEFT
U0VSVCghbV9zZW50aW5lbFNldEJ1Y2tldCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9WTS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1ZNLmgJKHJldmlzaW9uIDI4NjA0MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1ZNLmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDcgKzMxLDYgQEAKICNpbmNsdWRlICJDYWxsRGF0
YS5oIgogI2luY2x1ZGUgIkNhbGxlZUJpdHMuaCIKICNpbmNsdWRlICJDb2RlU3BlY2lhbGl6YXRp
b25LaW5kLmgiCi0jaW5jbHVkZSAiQ29tcGxldGVTdWJzcGFjZS5oIgogI2luY2x1ZGUgIkNvbmN1
cnJlbnRKU0xvY2suaCIKICNpbmNsdWRlICJERkdEb2VzR0NDaGVjay5oIgogI2luY2x1ZGUgIkRl
bGV0ZUFsbENvZGVFZmZvcnQuaCIKQEAgLTQyLDggKzQxLDYgQEAKICNpbmNsdWRlICJIZWFwLmgi
CiAjaW5jbHVkZSAiSW50ZWdyaXR5LmgiCiAjaW5jbHVkZSAiSW50cmluc2ljLmgiCi0jaW5jbHVk
ZSAiSXNvQ2VsbFNldC5oIgotI2luY2x1ZGUgIklzb1N1YnNwYWNlLmgiCiAjaW5jbHVkZSAiSlND
SlNWYWx1ZS5oIgogI2luY2x1ZGUgIkpTRGF0ZU1hdGguaCIKICNpbmNsdWRlICJKU0xvY2suaCIK
QEAgLTU4LDcgKzU1LDcgQEAKICNpbmNsdWRlICJUaHVua0dlbmVyYXRvci5oIgogI2luY2x1ZGUg
IlZNVHJhcHMuaCIKICNpbmNsdWRlICJXYXNtQ29udGV4dC5oIgotI2luY2x1ZGUgIldhdGNocG9p
bnQuaCIKKy8vI2luY2x1ZGUgIldhdGNocG9pbnQuaCIgLy8gbWxhbQogI2luY2x1ZGUgPHd0Zi9C
dW1wUG9pbnRlckFsbG9jYXRvci5oPgogI2luY2x1ZGUgPHd0Zi9DaGVja2VkQXJpdGhtZXRpYy5o
PgogI2luY2x1ZGUgPHd0Zi9EYXRlTWF0aC5oPgpAQCAtMTAzLDExICsxMDAsMTEgQEAgdXNpbmcg
V1RGOjpTaW1wbGVTdGF0czsKIAogbmFtZXNwYWNlIEpTQyB7CiAKLWNsYXNzIEJhc2ljQmxvY2tM
b2NhdGlvbjsKKy8vY2xhc3MgQmFzaWNCbG9ja0xvY2F0aW9uOyAvLyBtbGFtCiBjbGFzcyBCdWls
dGluRXhlY3V0YWJsZXM7CiBjbGFzcyBCeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5OwogY2xhc3Mg
Q2FsbEZyYW1lOwotY2xhc3MgQ2FsbExpbmtJbmZvOworLy9jbGFzcyBDYWxsTGlua0luZm87IC8v
IG1sYW0KIGVudW0gY2xhc3MgQ2FsbE1vZGU7CiBzdHJ1Y3QgQ2hlY2twb2ludE9TUkV4aXRTaWRl
U3RhdGU7CiBjbGFzcyBDb2RlQmxvY2s7CkBAIC0xMTYsMTAxICsxMTMsOTYgQEAgY2xhc3MgQ29t
bW9uSWRlbnRpZmllcnM7CiBjbGFzcyBDb21wYWN0VERaRW52aXJvbm1lbnRNYXA7CiBjbGFzcyBD
b25zZXJ2YXRpdmVSb290czsKIGNsYXNzIENvbnRyb2xGbG93UHJvZmlsZXI7Ci1jbGFzcyBDdXN0
b21HZXR0ZXJTZXR0ZXI7Ci1jbGFzcyBET01BdHRyaWJ1dGVHZXR0ZXJTZXR0ZXI7Ci1jbGFzcyBE
YXRlSW5zdGFuY2U7Ci1jbGFzcyBFcnJvckluc3RhbmNlOworLy9jbGFzcyBDdXN0b21HZXR0ZXJT
ZXR0ZXI7IC8vIG1sYW0KKy8vY2xhc3MgRE9NQXR0cmlidXRlR2V0dGVyU2V0dGVyOyAvLyBtbGFt
CisvL2NsYXNzIERhdGVJbnN0YW5jZTsgLy8gbWxhbQorLy9jbGFzcyBFcnJvckluc3RhbmNlOyAv
LyBtbGFtCiBjbGFzcyBFeGNlcHRpb247CiBjbGFzcyBFeGNlcHRpb25TY29wZTsKLWNsYXNzIEZh
c3RNYWxsb2NBbGlnbmVkTWVtb3J5QWxsb2NhdG9yOwotY2xhc3MgR2lnYWNhZ2VBbGlnbmVkTWVt
b3J5QWxsb2NhdG9yOwotY2xhc3MgSGFuZGxlU3RhY2s7CisvL2NsYXNzIEhhbmRsZVN0YWNrOyAv
LyBtbGFtCiBjbGFzcyBIYXNPd25Qcm9wZXJ0eUNhY2hlOwogY2xhc3MgSGVhcEFuYWx5emVyOwog
Y2xhc3MgSGVhcFByb2ZpbGVyOwotY2xhc3MgSWRlbnRpZmllcjsKKy8vY2xhc3MgSWRlbnRpZmll
cjsgLy8gbWxhbQogY2xhc3MgSW50ZXJwcmV0ZXI7CiBjbGFzcyBJbnRsQ2FjaGU7Ci1jbGFzcyBJ
bnRsQ29sbGF0b3I7Ci1jbGFzcyBJbnRsRGF0ZVRpbWVGb3JtYXQ7Ci1jbGFzcyBJbnRsRGlzcGxh
eU5hbWVzOwotY2xhc3MgSW50bExpc3RGb3JtYXQ7Ci1jbGFzcyBJbnRsTG9jYWxlOwotY2xhc3Mg
SW50bE51bWJlckZvcm1hdDsKLWNsYXNzIEludGxQbHVyYWxSdWxlczsKLWNsYXNzIEludGxSZWxh
dGl2ZVRpbWVGb3JtYXQ7Ci1jbGFzcyBJbnRsU2VnbWVudEl0ZXJhdG9yOwotY2xhc3MgSW50bFNl
Z21lbnRlcjsKLWNsYXNzIEludGxTZWdtZW50czsKLWNsYXNzIEpTQVBJR2xvYmFsT2JqZWN0Owot
Y2xhc3MgSlNBUElXcmFwcGVyR2xvYmFsT2JqZWN0OwotY2xhc3MgSlNBUElXcmFwcGVyT2JqZWN0
OwotY2xhc3MgSlNDQ2FsbGJhY2tGdW5jdGlvbjsKLWNsYXNzIEpTQ2FsbGJhY2tDb25zdHJ1Y3Rv
cjsKKy8vY2xhc3MgSW50bENvbGxhdG9yOyAvLyBtbGFtCisvL2NsYXNzIEludGxEYXRlVGltZUZv
cm1hdDsgLy8gbWxhbQorLy9jbGFzcyBJbnRsRGlzcGxheU5hbWVzOyAvLyBtbGFtCisvL2NsYXNz
IEludGxMaXN0Rm9ybWF0OyAvLyBtbGFtCisvL2NsYXNzIEludGxMb2NhbGU7IC8vIG1sYW0KKy8v
Y2xhc3MgSW50bE51bWJlckZvcm1hdDsgLy8gbWxhbQorLy9jbGFzcyBJbnRsUGx1cmFsUnVsZXM7
IC8vIG1sYW0KKy8vY2xhc3MgSW50bFJlbGF0aXZlVGltZUZvcm1hdDsgLy8gbWxhbQorLy9jbGFz
cyBJbnRsU2VnbWVudEl0ZXJhdG9yOyAvLyBtbGFtCisvL2NsYXNzIEludGxTZWdtZW50ZXI7IC8v
IG1sYW0KKy8vY2xhc3MgSW50bFNlZ21lbnRzOyAvLyBtbGFtCisvL2NsYXNzIEpTQVBJR2xvYmFs
T2JqZWN0OyAvLyBtbGFtCisvL2NsYXNzIEpTQVBJV3JhcHBlckdsb2JhbE9iamVjdDsgLy8gbWxh
bQorLy9jbGFzcyBKU0FQSVdyYXBwZXJPYmplY3Q7IC8vIG1sYW0KKy8vY2xhc3MgSlNDQ2FsbGJh
Y2tGdW5jdGlvbjsgLy8gbWxhbQorLy9jbGFzcyBKU0NhbGxiYWNrQ29uc3RydWN0b3I7IC8vIG1s
YW0KIGNsYXNzIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlOwogY2xhc3MgSlNHbG9i
YWxPYmplY3Q7Ci1jbGFzcyBKU0dsb2JhbExleGljYWxFbnZpcm9ubWVudDsKLWNsYXNzIEpTTW9k
dWxlTmFtZXNwYWNlT2JqZWN0OwotY2xhc3MgSlNNb2R1bGVSZWNvcmQ7Ci1jbGFzcyBKU05hdGl2
ZVN0ZEZ1bmN0aW9uOwotY2xhc3MgSlNOb25GaW5hbE9iamVjdDsKKy8vY2xhc3MgSlNHbG9iYWxM
ZXhpY2FsRW52aXJvbm1lbnQ7IC8vIG1sYW0KKy8vY2xhc3MgSlNNb2R1bGVOYW1lc3BhY2VPYmpl
Y3Q7IC8vIG1sYW0KKy8vY2xhc3MgSlNNb2R1bGVSZWNvcmQ7IC8vIG1sYW0KKy8vY2xhc3MgSlNO
YXRpdmVTdGRGdW5jdGlvbjsgLy8gbWxhbQorLy9jbGFzcyBKU05vbkZpbmFsT2JqZWN0OyAvLyBt
bGFtCiBjbGFzcyBKU09iamVjdDsKIGNsYXNzIEpTUHJvbWlzZTsKIGNsYXNzIEpTUHJvcGVydHlO
YW1lRW51bWVyYXRvcjsKLWNsYXNzIEpTUnVuTG9vcFRpbWVyOwotY2xhc3MgSlNXZWFrTWFwOwot
Y2xhc3MgSlNXZWFrU2V0OwotY2xhc3MgSlNXZWJBc3NlbWJseUNvZGVCbG9jazsKLWNsYXNzIEpT
V2ViQXNzZW1ibHlHbG9iYWw7Ci1jbGFzcyBKU1dlYkFzc2VtYmx5SW5zdGFuY2U7Ci1jbGFzcyBK
U1dlYkFzc2VtYmx5TWVtb3J5OwotY2xhc3MgSlNXZWJBc3NlbWJseU1vZHVsZTsKLWNsYXNzIEpT
V2ViQXNzZW1ibHlUYWJsZTsKKy8vY2xhc3MgSlNSdW5Mb29wVGltZXI7IC8vIG1sYW0KKy8vY2xh
c3MgSlNXZWFrTWFwOyAvLyBtbGFtCisvL2NsYXNzIEpTV2Vha1NldDsgLy8gbWxhbQorLy9jbGFz
cyBKU1dlYkFzc2VtYmx5Q29kZUJsb2NrOyAvLyBtbGFtCisvL2NsYXNzIEpTV2ViQXNzZW1ibHlH
bG9iYWw7IC8vIG1sYW0KKy8vY2xhc3MgSlNXZWJBc3NlbWJseUluc3RhbmNlOyAvLyBtbGFtCisv
L2NsYXNzIEpTV2ViQXNzZW1ibHlNZW1vcnk7IC8vIG1sYW0KKy8vY2xhc3MgSlNXZWJBc3NlbWJs
eU1vZHVsZTsgLy8gbWxhbQorLy9jbGFzcyBKU1dlYkFzc2VtYmx5VGFibGU7IC8vIG1sYW0KIGNs
YXNzIEpJVFNpemVTdGF0aXN0aWNzOwogY2xhc3MgSklUVGh1bmtzOwotY2xhc3MgTExJbnRPZmZz
ZXRzRXh0cmFjdG9yOworLy9jbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiBjbGFzcyBOYXRp
dmVFeGVjdXRhYmxlOwotY2xhc3MgT2JqQ0NhbGxiYWNrRnVuY3Rpb247CisvL2NsYXNzIE9iakND
YWxsYmFja0Z1bmN0aW9uOyAvLyBtbGFtCiBjbGFzcyBEZWZlcnJlZFdvcmtUaW1lcjsKIGNsYXNz
IFJlZ0V4cDsKIGNsYXNzIFJlZ0V4cENhY2hlOwogY2xhc3MgUmVnaXN0ZXI7Ci1jbGFzcyBSZWdp
c3RlckF0T2Zmc2V0TGlzdDsKKy8vY2xhc3MgUmVnaXN0ZXJBdE9mZnNldExpc3Q7IC8vIG1sYW0K
ICNpZiBFTkFCTEUoU0FNUExJTkdfUFJPRklMRVIpCiBjbGFzcyBTYW1wbGluZ1Byb2ZpbGVyOwog
I2VuZGlmCiBjbGFzcyBTaGFkb3dDaGlja2VuOwogY2xhc3MgU2hhcmVkSklUU3R1YlNldDsKLWNs
YXNzIFNjcmlwdEV4ZWN1dGFibGU7CisvL2NsYXNzIFNjcmlwdEV4ZWN1dGFibGU7IC8vIG1sYW0K
IGNsYXNzIFNvdXJjZVByb3ZpZGVyOwogY2xhc3MgU291cmNlUHJvdmlkZXJDYWNoZTsKLWNsYXNz
IFN0YWNrRnJhbWU7CisvL2NsYXNzIFN0YWNrRnJhbWU7IC8vIG1sYW0KIGNsYXNzIFN0cnVjdHVy
ZTsKLSNpZiBFTkFCTEUoUkVHRVhQX1RSQUNJTkcpCi1jbGFzcyBSZWdFeHA7Ci0jZW5kaWYKIGNs
YXNzIFN5bWJvbDsKLWNsYXNzIFRlbXBvcmFsRHVyYXRpb247Ci1jbGFzcyBUZW1wb3JhbEluc3Rh
bnQ7CisvL2NsYXNzIFRlbXBvcmFsRHVyYXRpb247IC8vIG1sYW0KKy8vY2xhc3MgVGVtcG9yYWxJ
bnN0YW50OyAvLyBtbGFtCiBjbGFzcyBUeXBlZEFycmF5Q29udHJvbGxlcjsKLWNsYXNzIFVubGlu
a2VkQ29kZUJsb2NrOwotY2xhc3MgVW5saW5rZWRFdmFsQ29kZUJsb2NrOwotY2xhc3MgVW5saW5r
ZWRGdW5jdGlvbkV4ZWN1dGFibGU7Ci1jbGFzcyBVbmxpbmtlZFByb2dyYW1Db2RlQmxvY2s7Ci1j
bGFzcyBVbmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2s7Ci1jbGFzcyBWaXJ0dWFsUmVnaXN0
ZXI7CisvL2NsYXNzIFVubGlua2VkQ29kZUJsb2NrOyAvLyBtbGFtCisvL2NsYXNzIFVubGlua2Vk
RXZhbENvZGVCbG9jazsgLy8gbWxhbQorLy9jbGFzcyBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJs
ZTsgLy8gbWxhbQorLy9jbGFzcyBVbmxpbmtlZFByb2dyYW1Db2RlQmxvY2s7IC8vIG1sYW0KKy8v
Y2xhc3MgVW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrOyAvLyBtbGFtCisvL2NsYXNzIFZp
cnR1YWxSZWdpc3RlcjsgLy8gbWxhbQogY2xhc3MgVk1FbnRyeVNjb3BlOwotY2xhc3MgVGVtcG9y
YWxDYWxlbmRhcjsKLWNsYXNzIFRlbXBvcmFsUGxhaW5UaW1lOwotY2xhc3MgVGVtcG9yYWxUaW1l
Wm9uZTsKLWNsYXNzIFRvcExldmVsR2xvYmFsT2JqZWN0U2NvcGU7CisvL2NsYXNzIFRlbXBvcmFs
Q2FsZW5kYXI7IC8vIG1sYW0KKy8vY2xhc3MgVGVtcG9yYWxQbGFpblRpbWU7IC8vIG1sYW0KKy8v
Y2xhc3MgVGVtcG9yYWxUaW1lWm9uZTsgLy8gbWxhbQorLy9jbGFzcyBUb3BMZXZlbEdsb2JhbE9i
amVjdFNjb3BlOyAvLyBtbGFtCiBjbGFzcyBUeXBlUHJvZmlsZXI7CiBjbGFzcyBUeXBlUHJvZmls
ZXJMb2c7CiBjbGFzcyBXYXRjaGRvZzsKLWNsYXNzIFdhdGNocG9pbnQ7CisvL2NsYXNzIFdhdGNo
cG9pbnQ7IC8vIG1sYW0KIGNsYXNzIFdhdGNocG9pbnRTZXQ7Ci1jbGFzcyBXZWJBc3NlbWJseUZ1
bmN0aW9uOwotY2xhc3MgV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQ7CisvL2NsYXNzIFdlYkFzc2Vt
Ymx5RnVuY3Rpb247IC8vIG1sYW0KKy8vY2xhc3MgV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQ7IC8v
IG1sYW0KIAogI2lmIEVOQUJMRShERkdfSklUKSAmJiBBU1NFUlRfRU5BQkxFRAogI2RlZmluZSBF
TkFCTEVfREZHX0RPRVNfR0NfVkFMSURBVElPTiAxCkBAIC0yMjAsOSArMjEyLDcgQEAgY2xhc3Mg
V2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQ7CiAKIGNvbnN0ZXhwciBib29sIHZhbGlkYXRlREZHRG9l
c0dDID0gRU5BQkxFX0RGR19ET0VTX0dDX1ZBTElEQVRJT047CiAKLWNsYXNzIElzb0hlYXBDZWxs
VHlwZTsKLXRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlPiBjbGFzcyBJc29JbmxpbmVkSGVhcENl
bGxUeXBlOwotdGVtcGxhdGU8dHlwZW5hbWUgUGFyZW50PiBjbGFzcyBKU0NhbGxiYWNrT2JqZWN0
OworLy90ZW1wbGF0ZTx0eXBlbmFtZSBQYXJlbnQ+IGNsYXNzIEpTQ2FsbGJhY2tPYmplY3Q7IC8v
IG1sYW0KIAogI2lmIEVOQUJMRShGVExfSklUKQogbmFtZXNwYWNlIEZUTCB7CkBAIC0yMzUsMTQg
KzIyNSwxNCBAQCBjbGFzcyBEYXRhYmFzZTsKIG5hbWVzcGFjZSBET01KSVQgewogY2xhc3MgU2ln
bmF0dXJlOwogfQotbmFtZXNwYWNlIFlhcnIgewotY2xhc3MgTWF0Y2hpbmdDb250ZXh0SG9sZGVy
OwotfQorLy9uYW1lc3BhY2UgWWFyciB7CisvL2NsYXNzIE1hdGNoaW5nQ29udGV4dEhvbGRlcjsg
Ly8gbWxhbQorLy99CiAKIHN0cnVjdCBFbnRyeUZyYW1lOwotc3RydWN0IEhhc2hUYWJsZTsKKy8v
c3RydWN0IEhhc2hUYWJsZTsgLy8gbWxhbQogc3RydWN0IEluc3RydWN0aW9uOwotc3RydWN0IFZh
bHVlUHJvZmlsZTsKKy8vc3RydWN0IFZhbHVlUHJvZmlsZTsgLy8gbWxhbQogCiBjbGFzcyBRdWV1
ZWRUYXNrIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShRdWV1ZWRUYXNrKTsKQEAgLTI2MSw4
ICsyNTEsNiBAQCBwcml2YXRlOgogICAgIFJlZjxNaWNyb3Rhc2s+IG1fbWljcm90YXNrOwogfTsK
IAotY2xhc3MgQ29uc2VydmF0aXZlUm9vdHM7Ci0KIERFQ0xBUkVfQUxMT0NBVE9SX1dJVEhfSEVB
UF9JREVOVElGSUVSKFZNKTsKIAogI2lmIENPTVBJTEVSKE1TVkMpCkBAIC00MTMsMTQ1ICs0MDEs
NTggQEAgcHJpdmF0ZToKIAogcHVibGljOgogICAgIEhlYXAgaGVhcDsKLSAgICAKLSAgICBzdGQ6
OnVuaXF1ZV9wdHI8RmFzdE1hbGxvY0FsaWduZWRNZW1vcnlBbGxvY2F0b3I+IGZhc3RNYWxsb2NB
bGxvY2F0b3I7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPEdpZ2FjYWdlQWxpZ25lZE1lbW9yeUFsbG9j
YXRvcj4gcHJpbWl0aXZlR2lnYWNhZ2VBbGxvY2F0b3I7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPEdp
Z2FjYWdlQWxpZ25lZE1lbW9yeUFsbG9jYXRvcj4ganNWYWx1ZUdpZ2FjYWdlQWxsb2NhdG9yOwot
Ci0gICAgc3RkOjp1bmlxdWVfcHRyPEhlYXBDZWxsVHlwZT4gYXV4aWxpYXJ5SGVhcENlbGxUeXBl
OwotICAgIHN0ZDo6dW5pcXVlX3B0cjxIZWFwQ2VsbFR5cGU+IGltbXV0YWJsZUJ1dHRlcmZseUhl
YXBDZWxsVHlwZTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SGVhcENlbGxUeXBlPiBjZWxsSGVhcENl
bGxUeXBlOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxIZWFwQ2VsbFR5cGU+IGRlc3RydWN0aWJsZUNl
bGxIZWFwQ2VsbFR5cGU7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPElzb0hlYXBDZWxsVHlwZT4gYXBp
R2xvYmFsT2JqZWN0SGVhcENlbGxUeXBlOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxJc29IZWFwQ2Vs
bFR5cGU+IGNhbGxiYWNrQ29uc3RydWN0b3JIZWFwQ2VsbFR5cGU7Ci0gICAgc3RkOjp1bmlxdWVf
cHRyPElzb0hlYXBDZWxsVHlwZT4gY2FsbGJhY2tHbG9iYWxPYmplY3RIZWFwQ2VsbFR5cGU7Ci0g
ICAgc3RkOjp1bmlxdWVfcHRyPElzb0hlYXBDZWxsVHlwZT4gY2FsbGJhY2tPYmplY3RIZWFwQ2Vs
bFR5cGU7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPElzb0hlYXBDZWxsVHlwZT4gY3VzdG9tR2V0dGVy
RnVuY3Rpb25IZWFwQ2VsbFR5cGU7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPElzb0hlYXBDZWxsVHlw
ZT4gY3VzdG9tU2V0dGVyRnVuY3Rpb25IZWFwQ2VsbFR5cGU7Ci0gICAgc3RkOjp1bmlxdWVfcHRy
PElzb0hlYXBDZWxsVHlwZT4gZGF0ZUluc3RhbmNlSGVhcENlbGxUeXBlOwotICAgIHN0ZDo6dW5p
cXVlX3B0cjxJc29IZWFwQ2VsbFR5cGU+IGVycm9ySW5zdGFuY2VIZWFwQ2VsbFR5cGU7Ci0gICAg
c3RkOjp1bmlxdWVfcHRyPElzb0hlYXBDZWxsVHlwZT4gZmluYWxpemF0aW9uUmVnaXN0cnlDZWxs
VHlwZTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SXNvSGVhcENlbGxUeXBlPiBnbG9iYWxMZXhpY2Fs
RW52aXJvbm1lbnRIZWFwQ2VsbFR5cGU7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPElzb0hlYXBDZWxs
VHlwZT4gZ2xvYmFsT2JqZWN0SGVhcENlbGxUeXBlOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxJc29I
ZWFwQ2VsbFR5cGU+IGluamVjdGVkU2NyaXB0SG9zdFNwYWNlSGVhcENlbGxUeXBlOwotICAgIHN0
ZDo6dW5pcXVlX3B0cjxJc29IZWFwQ2VsbFR5cGU+IGphdmFTY3JpcHRDYWxsRnJhbWVIZWFwQ2Vs
bFR5cGU7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPElzb0hlYXBDZWxsVHlwZT4ganNNb2R1bGVSZWNv
cmRIZWFwQ2VsbFR5cGU7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPElzb0hlYXBDZWxsVHlwZT4gbW9k
dWxlTmFtZXNwYWNlT2JqZWN0SGVhcENlbGxUeXBlOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxJc29I
ZWFwQ2VsbFR5cGU+IG5hdGl2ZVN0ZEZ1bmN0aW9uSGVhcENlbGxUeXBlOwotICAgIHN0ZDo6dW5p
cXVlX3B0cjxJc29JbmxpbmVkSGVhcENlbGxUeXBlPEpTU3RyaW5nPj4gc3RyaW5nSGVhcENlbGxU
eXBlOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxJc29IZWFwQ2VsbFR5cGU+IHdlYWtNYXBIZWFwQ2Vs
bFR5cGU7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPElzb0hlYXBDZWxsVHlwZT4gd2Vha1NldEhlYXBD
ZWxsVHlwZTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SlNEZXN0cnVjdGlibGVPYmplY3RIZWFwQ2Vs
bFR5cGU+IGRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZTsKLSNpZiBKU0NfT0JKQ19BUElf
RU5BQkxFRAotICAgIHN0ZDo6dW5pcXVlX3B0cjxJc29IZWFwQ2VsbFR5cGU+IGFwaVdyYXBwZXJP
YmplY3RIZWFwQ2VsbFR5cGU7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPElzb0hlYXBDZWxsVHlwZT4g
b2JqQ0NhbGxiYWNrRnVuY3Rpb25IZWFwQ2VsbFR5cGU7Ci0jZW5kaWYKLSNpZmRlZiBKU0NfR0xJ
Ql9BUElfRU5BQkxFRAotICAgIHN0ZDo6dW5pcXVlX3B0cjxJc29IZWFwQ2VsbFR5cGU+IGFwaVdy
YXBwZXJPYmplY3RIZWFwQ2VsbFR5cGU7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPElzb0hlYXBDZWxs
VHlwZT4gY2FsbGJhY2tBUElXcmFwcGVyR2xvYmFsT2JqZWN0SGVhcENlbGxUeXBlOwotICAgIHN0
ZDo6dW5pcXVlX3B0cjxJc29IZWFwQ2VsbFR5cGU+IGpzY0NhbGxiYWNrRnVuY3Rpb25IZWFwQ2Vs
bFR5cGU7Ci0jZW5kaWYKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SXNvSGVhcENlbGxUeXBlPiBpbnRs
Q29sbGF0b3JIZWFwQ2VsbFR5cGU7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPElzb0hlYXBDZWxsVHlw
ZT4gaW50bERhdGVUaW1lRm9ybWF0SGVhcENlbGxUeXBlOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxJ
c29IZWFwQ2VsbFR5cGU+IGludGxEaXNwbGF5TmFtZXNIZWFwQ2VsbFR5cGU7Ci0gICAgc3RkOjp1
bmlxdWVfcHRyPElzb0hlYXBDZWxsVHlwZT4gaW50bExpc3RGb3JtYXRIZWFwQ2VsbFR5cGU7Ci0g
ICAgc3RkOjp1bmlxdWVfcHRyPElzb0hlYXBDZWxsVHlwZT4gaW50bExvY2FsZUhlYXBDZWxsVHlw
ZTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SXNvSGVhcENlbGxUeXBlPiBpbnRsTnVtYmVyRm9ybWF0
SGVhcENlbGxUeXBlOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxJc29IZWFwQ2VsbFR5cGU+IGludGxQ
bHVyYWxSdWxlc0hlYXBDZWxsVHlwZTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SXNvSGVhcENlbGxU
eXBlPiBpbnRsUmVsYXRpdmVUaW1lRm9ybWF0SGVhcENlbGxUeXBlOwotICAgIHN0ZDo6dW5pcXVl
X3B0cjxJc29IZWFwQ2VsbFR5cGU+IGludGxTZWdtZW50SXRlcmF0b3JIZWFwQ2VsbFR5cGU7Ci0g
ICAgc3RkOjp1bmlxdWVfcHRyPElzb0hlYXBDZWxsVHlwZT4gaW50bFNlZ21lbnRlckhlYXBDZWxs
VHlwZTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SXNvSGVhcENlbGxUeXBlPiBpbnRsU2VnbWVudHNI
ZWFwQ2VsbFR5cGU7Ci0jaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQotICAgIHN0ZDo6dW5pcXVlX3B0
cjxJc29IZWFwQ2VsbFR5cGU+IHdlYkFzc2VtYmx5Q29kZUJsb2NrSGVhcENlbGxUeXBlOwotICAg
IHN0ZDo6dW5pcXVlX3B0cjxJc29IZWFwQ2VsbFR5cGU+IHdlYkFzc2VtYmx5RXhjZXB0aW9uSGVh
cENlbGxUeXBlOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxJc29IZWFwQ2VsbFR5cGU+IHdlYkFzc2Vt
Ymx5RnVuY3Rpb25IZWFwQ2VsbFR5cGU7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPElzb0hlYXBDZWxs
VHlwZT4gd2ViQXNzZW1ibHlHbG9iYWxIZWFwQ2VsbFR5cGU7Ci0gICAgc3RkOjp1bmlxdWVfcHRy
PElzb0hlYXBDZWxsVHlwZT4gd2ViQXNzZW1ibHlJbnN0YW5jZUhlYXBDZWxsVHlwZTsKLSAgICBz
dGQ6OnVuaXF1ZV9wdHI8SXNvSGVhcENlbGxUeXBlPiB3ZWJBc3NlbWJseU1lbW9yeUhlYXBDZWxs
VHlwZTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SXNvSGVhcENlbGxUeXBlPiB3ZWJBc3NlbWJseU1v
ZHVsZUhlYXBDZWxsVHlwZTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SXNvSGVhcENlbGxUeXBlPiB3
ZWJBc3NlbWJseU1vZHVsZVJlY29yZEhlYXBDZWxsVHlwZTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8
SXNvSGVhcENlbGxUeXBlPiB3ZWJBc3NlbWJseVRhYmxlSGVhcENlbGxUeXBlOwotICAgIHN0ZDo6
dW5pcXVlX3B0cjxJc29IZWFwQ2VsbFR5cGU+IHdlYkFzc2VtYmx5VGFnSGVhcENlbGxUeXBlOwot
I2VuZGlmCisKKyAgICBjb25zdCBIZWFwQ2VsbFR5cGUmIGNlbGxIZWFwQ2VsbFR5cGUoKSB7IHJl
dHVybiBoZWFwLmNlbGxIZWFwQ2VsbFR5cGU7IH0KKyAgICBjb25zdCBKU0Rlc3RydWN0aWJsZU9i
amVjdEhlYXBDZWxsVHlwZSYgZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCkgeyByZXR1
cm4gaGVhcC5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGU7IH07CiAKICNpZiBFTkFCTEUo
SklUKQogICAgIHN0ZDo6dW5pcXVlX3B0cjxKSVRTaXplU3RhdGlzdGljcz4gaml0U2l6ZVN0YXRp
c3RpY3M7CiAjZW5kaWYKICAgICAKLSAgICBDb21wbGV0ZVN1YnNwYWNlIHByaW1pdGl2ZUdpZ2Fj
YWdlQXV4aWxpYXJ5U3BhY2U7IC8vIFR5cGVkIGFycmF5cywgc3RyaW5ncywgYml0dmVjdG9ycywg
ZXRjIGdvIGhlcmUuCi0gICAgQ29tcGxldGVTdWJzcGFjZSBqc1ZhbHVlR2lnYWNhZ2VBdXhpbGlh
cnlTcGFjZTsgLy8gQnV0dGVyZmxpZXMsIGFycmF5cyBvZiBKU1ZhbHVlcywgZXRjIGdvIGhlcmUu
Ci0gICAgQ29tcGxldGVTdWJzcGFjZSBpbW11dGFibGVCdXR0ZXJmbHlKU1ZhbHVlR2lnYWNhZ2VB
dXhpbGlhcnlTcGFjZTsgLy8gSlNJbW11dGFibGVCdXR0ZXJmbHkgZ29lcyBoZXJlLgotCi0gICAg
Ly8gV2UgbWFrZSBjcm9zcy1jdXR0aW5nIGFzc3VtcHRpb25zIGFib3V0IHR5cGVkIGFycmF5cyBi
ZWluZyBpbiB0aGUgcHJpbWl0aXZlIEdpZ2FjYWdlIGFuZCBidXR0ZXJmbGllcwotICAgIC8vIGJl
aW5nIGluIHRoZSBKU1ZhbHVlIGdpZ2FjYWdlLiBGb3Igc29tZSB0eXBlcywgaXQncyBzdXBlciBv
YnZpb3VzIHdoZXJlIHRoZXkgc2hvdWxkIGdvLCBhbmQgc28gd2UKLSAgICAvLyBjYW4gaGFyZGNv
ZGUgdGhhdCBmYWN0LiBCdXQgc29tZXRpbWVzIGl0J3Mgbm90IGNsZWFyLCBzbyB3ZSBhYnN0cmFj
dCBpdCBieSBoYXZpbmcgYSBHaWdhY2FnZTo6S2luZAotICAgIC8vIGNvbnN0YW50IHNvbWV3aGVy
ZS4KLSAgICAvLyBGSVhNRTogTWF5YmUgaXQgd291bGQgYmUgYmV0dGVyIGlmIGV2ZXJ5b25lIGFi
c3RyYWN0ZWQgdGhpcz8KLSAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTc1MjQ4Ci0gICAgQUxXQVlTX0lOTElORSBDb21wbGV0ZVN1YnNwYWNlJiBnaWdhY2Fn
ZUF1eGlsaWFyeVNwYWNlKEdpZ2FjYWdlOjpLaW5kIGtpbmQpCi0gICAgewotICAgICAgICBzd2l0
Y2ggKGtpbmQpIHsKLSAgICAgICAgY2FzZSBHaWdhY2FnZTo6UHJpbWl0aXZlOgotICAgICAgICAg
ICAgcmV0dXJuIHByaW1pdGl2ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2U7Ci0gICAgICAgIGNhc2Ug
R2lnYWNhZ2U6OkpTVmFsdWU6Ci0gICAgICAgICAgICByZXR1cm4ganNWYWx1ZUdpZ2FjYWdlQXV4
aWxpYXJ5U3BhY2U7Ci0gICAgICAgIGNhc2UgR2lnYWNhZ2U6Ok51bWJlck9mS2luZHM6Ci0gICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVB
Q0hFRCgpOwotICAgICAgICByZXR1cm4gcHJpbWl0aXZlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZTsK
LSAgICB9Ci0gICAgCi0gICAgLy8gV2hlbmV2ZXIgcG9zc2libGUsIHVzZSBzdWJzcGFjZUZvcjxD
ZWxsVHlwZT4odm0pIHRvIGdldCBvbmUgb2YgdGhlc2Ugc3Vic3BhY2VzLgotICAgIENvbXBsZXRl
U3Vic3BhY2UgY2VsbFNwYWNlOwotICAgIENvbXBsZXRlU3Vic3BhY2UgdmFyaWFibGVTaXplZENl
bGxTcGFjZTsgLy8gRklYTUU6IFRoaXMgc3BhY2UgaXMgcHJvYmxlbWF0aWMgYmVjYXVzZSB3ZSBo
YXZlIHRoaW5ncyBpbiBoZXJlIGxpa2UgRGlyZWN0QXJndW1lbnRzIGFuZCBTY29wZWRBcmd1bWVu
dHM7IHRob3NlIHNob3VsZCBiZSBzcGxpdCBpbnRvIEpTVmFsdWVPT0IgY2VsbHMgYW5kIEpTVmFs
dWVTdHJpY3QgYXV4aWxpYXJpZXMuIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xODI4NTgKLSAgICBDb21wbGV0ZVN1YnNwYWNlIGRlc3RydWN0aWJsZU9iamVjdFNwYWNl
OwotICAgIAotICAgIElzb1N1YnNwYWNlIGFycmF5U3BhY2U7Ci0gICAgSXNvU3Vic3BhY2UgYmln
SW50U3BhY2U7Ci0gICAgSXNvU3Vic3BhY2UgY2FsbGVlU3BhY2U7Ci0gICAgSXNvU3Vic3BhY2Ug
Y2xvbmVkQXJndW1lbnRzU3BhY2U7Ci0gICAgSXNvU3Vic3BhY2UgY3VzdG9tR2V0dGVyU2V0dGVy
U3BhY2U7Ci0gICAgSXNvU3Vic3BhY2UgZGF0ZUluc3RhbmNlU3BhY2U7Ci0gICAgSXNvU3Vic3Bh
Y2UgZG9tQXR0cmlidXRlR2V0dGVyU2V0dGVyU3BhY2U7Ci0gICAgSXNvU3Vic3BhY2UgZXhjZXB0
aW9uU3BhY2U7Ci0gICAgSXNvU3Vic3BhY2UgZXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZVNwYWNl
OwotICAgIElzb1N1YnNwYWNlIGZ1bmN0aW9uU3BhY2U7Ci0gICAgSXNvU3Vic3BhY2UgZ2V0dGVy
U2V0dGVyU3BhY2U7Ci0gICAgSXNvU3Vic3BhY2UgZ2xvYmFsTGV4aWNhbEVudmlyb25tZW50U3Bh
Y2U7Ci0gICAgSXNvU3Vic3BhY2UgaW50ZXJuYWxGdW5jdGlvblNwYWNlOwotICAgIElzb1N1YnNw
YWNlIGpzUHJveHlTcGFjZTsKLSAgICBJc29TdWJzcGFjZSBuYXRpdmVFeGVjdXRhYmxlU3BhY2U7
Ci0gICAgSXNvU3Vic3BhY2UgbnVtYmVyT2JqZWN0U3BhY2U7Ci0gICAgSXNvU3Vic3BhY2UgcGxh
aW5PYmplY3RTcGFjZTsKLSAgICBJc29TdWJzcGFjZSBwcm9taXNlU3BhY2U7Ci0gICAgSXNvU3Vi
c3BhY2UgcHJvcGVydHlOYW1lRW51bWVyYXRvclNwYWNlOwotICAgIElzb1N1YnNwYWNlIHByb3Bl
cnR5VGFibGVTcGFjZTsKLSAgICBJc29TdWJzcGFjZSByZWdFeHBTcGFjZTsKLSAgICBJc29TdWJz
cGFjZSByZWdFeHBPYmplY3RTcGFjZTsKLSAgICBJc29TdWJzcGFjZSByb3BlU3RyaW5nU3BhY2U7
Ci0gICAgSXNvU3Vic3BhY2Ugc2NvcGVkQXJndW1lbnRzU3BhY2U7Ci0gICAgSXNvU3Vic3BhY2Ug
c3BhcnNlQXJyYXlWYWx1ZU1hcFNwYWNlOwotICAgIElzb1N1YnNwYWNlIHN0cmluZ1NwYWNlOwot
ICAgIElzb1N1YnNwYWNlIHN0cmluZ09iamVjdFNwYWNlOwotICAgIElzb1N1YnNwYWNlIHN0cnVj
dHVyZUNoYWluU3BhY2U7Ci0gICAgSXNvU3Vic3BhY2Ugc3RydWN0dXJlUmFyZURhdGFTcGFjZTsK
LSAgICBJc29TdWJzcGFjZSBzdHJ1Y3R1cmVTcGFjZTsKLSAgICBJc29TdWJzcGFjZSBicmFuZGVk
U3RydWN0dXJlU3BhY2U7Ci0gICAgSXNvU3Vic3BhY2Ugc3ltYm9sVGFibGVTcGFjZTsKKyAgICBB
TFdBWVNfSU5MSU5FIENvbXBsZXRlU3Vic3BhY2UmIHByaW1pdGl2ZUdpZ2FjYWdlQXV4aWxpYXJ5
U3BhY2UoKSB7IHJldHVybiBoZWFwLnByaW1pdGl2ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2U7IH0K
KyAgICBBTFdBWVNfSU5MSU5FIENvbXBsZXRlU3Vic3BhY2UmIGpzVmFsdWVHaWdhY2FnZUF1eGls
aWFyeVNwYWNlKCkgeyByZXR1cm4gaGVhcC5qc1ZhbHVlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZTsg
fQorICAgIEFMV0FZU19JTkxJTkUgQ29tcGxldGVTdWJzcGFjZSYgaW1tdXRhYmxlQnV0dGVyZmx5
SlNWYWx1ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UoKSB7IHJldHVybiBoZWFwLmltbXV0YWJsZUJ1
dHRlcmZseUpTVmFsdWVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlOyB9CisgICAgQUxXQVlTX0lOTElO
RSBDb21wbGV0ZVN1YnNwYWNlJiBnaWdhY2FnZUF1eGlsaWFyeVNwYWNlKEdpZ2FjYWdlOjpLaW5k
IGtpbmQpIHsgcmV0dXJuIGhlYXAuZ2lnYWNhZ2VBdXhpbGlhcnlTcGFjZShraW5kKTsgfQorICAg
IEFMV0FZU19JTkxJTkUgQ29tcGxldGVTdWJzcGFjZSYgY2VsbFNwYWNlKCkgeyByZXR1cm4gaGVh
cC5jZWxsU3BhY2U7IH0KKyAgICBBTFdBWVNfSU5MSU5FIENvbXBsZXRlU3Vic3BhY2UmIHZhcmlh
YmxlU2l6ZWRDZWxsU3BhY2UoKSB7IHJldHVybiBoZWFwLnZhcmlhYmxlU2l6ZWRDZWxsU3BhY2U7
IH0KKyAgICBBTFdBWVNfSU5MSU5FIENvbXBsZXRlU3Vic3BhY2UmIGRlc3RydWN0aWJsZU9iamVj
dFNwYWNlKCkgeyByZXR1cm4gaGVhcC5kZXN0cnVjdGlibGVPYmplY3RTcGFjZTsgfQorCisgICAg
QUxXQVlTX0lOTElORSBJc29TdWJzcGFjZSYgYXJyYXlTcGFjZSgpIHsgcmV0dXJuIGhlYXAuYXJy
YXlTcGFjZTsgfQorICAgIEFMV0FZU19JTkxJTkUgSXNvU3Vic3BhY2UmIGJpZ0ludFNwYWNlKCkg
eyByZXR1cm4gaGVhcC5iaWdJbnRTcGFjZTsgfQorICAgIEFMV0FZU19JTkxJTkUgSXNvU3Vic3Bh
Y2UmIGNhbGxlZVNwYWNlKCkgeyByZXR1cm4gaGVhcC5jYWxsZWVTcGFjZTsgfQorICAgIEFMV0FZ
U19JTkxJTkUgSXNvU3Vic3BhY2UmIGNsb25lZEFyZ3VtZW50c1NwYWNlKCkgeyByZXR1cm4gaGVh
cC5jbG9uZWRBcmd1bWVudHNTcGFjZTsgfQorICAgIEFMV0FZU19JTkxJTkUgSXNvU3Vic3BhY2Um
IGN1c3RvbUdldHRlclNldHRlclNwYWNlKCkgeyByZXR1cm4gaGVhcC5jdXN0b21HZXR0ZXJTZXR0
ZXJTcGFjZTsgfQorICAgIEFMV0FZU19JTkxJTkUgSXNvU3Vic3BhY2UmIGRhdGVJbnN0YW5jZVNw
YWNlKCkgeyByZXR1cm4gaGVhcC5kYXRlSW5zdGFuY2VTcGFjZTsgfQorICAgIEFMV0FZU19JTkxJ
TkUgSXNvU3Vic3BhY2UmIGRvbUF0dHJpYnV0ZUdldHRlclNldHRlclNwYWNlKCkgeyByZXR1cm4g
aGVhcC5kb21BdHRyaWJ1dGVHZXR0ZXJTZXR0ZXJTcGFjZTsgfQorICAgIEFMV0FZU19JTkxJTkUg
SXNvU3Vic3BhY2UmIGV4Y2VwdGlvblNwYWNlKCkgeyByZXR1cm4gaGVhcC5leGNlcHRpb25TcGFj
ZTsgfQorICAgIEFMV0FZU19JTkxJTkUgSXNvU3Vic3BhY2UmIGV4ZWN1dGFibGVUb0NvZGVCbG9j
a0VkZ2VTcGFjZSgpIHsgcmV0dXJuIGhlYXAuZXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZVNwYWNl
OyB9CisgICAgQUxXQVlTX0lOTElORSBJc29TdWJzcGFjZSYgZnVuY3Rpb25TcGFjZSgpIHsgcmV0
dXJuIGhlYXAuZnVuY3Rpb25TcGFjZTsgfQorICAgIEFMV0FZU19JTkxJTkUgSXNvU3Vic3BhY2Um
IGdldHRlclNldHRlclNwYWNlKCkgeyByZXR1cm4gaGVhcC5nZXR0ZXJTZXR0ZXJTcGFjZTsgfQor
ICAgIEFMV0FZU19JTkxJTkUgSXNvU3Vic3BhY2UmIGdsb2JhbExleGljYWxFbnZpcm9ubWVudFNw
YWNlKCkgeyByZXR1cm4gaGVhcC5nbG9iYWxMZXhpY2FsRW52aXJvbm1lbnRTcGFjZTsgfQorICAg
IEFMV0FZU19JTkxJTkUgSXNvU3Vic3BhY2UmIGludGVybmFsRnVuY3Rpb25TcGFjZSgpIHsgcmV0
dXJuIGhlYXAuaW50ZXJuYWxGdW5jdGlvblNwYWNlOyB9CisgICAgQUxXQVlTX0lOTElORSBJc29T
dWJzcGFjZSYganNQcm94eVNwYWNlKCkgeyByZXR1cm4gaGVhcC5qc1Byb3h5U3BhY2U7IH0KKyAg
ICBBTFdBWVNfSU5MSU5FIElzb1N1YnNwYWNlJiBuYXRpdmVFeGVjdXRhYmxlU3BhY2UoKSB7IHJl
dHVybiBoZWFwLm5hdGl2ZUV4ZWN1dGFibGVTcGFjZTsgfQorICAgIEFMV0FZU19JTkxJTkUgSXNv
U3Vic3BhY2UmIG51bWJlck9iamVjdFNwYWNlKCkgeyByZXR1cm4gaGVhcC5udW1iZXJPYmplY3RT
cGFjZTsgfQorICAgIEFMV0FZU19JTkxJTkUgSXNvU3Vic3BhY2UmIHBsYWluT2JqZWN0U3BhY2Uo
KSB7IHJldHVybiBoZWFwLnBsYWluT2JqZWN0U3BhY2U7IH0KKyAgICBBTFdBWVNfSU5MSU5FIElz
b1N1YnNwYWNlJiBwcm9taXNlU3BhY2UoKSB7IHJldHVybiBoZWFwLnByb21pc2VTcGFjZTsgfQor
ICAgIEFMV0FZU19JTkxJTkUgSXNvU3Vic3BhY2UmIHByb3BlcnR5TmFtZUVudW1lcmF0b3JTcGFj
ZSgpIHsgcmV0dXJuIGhlYXAucHJvcGVydHlOYW1lRW51bWVyYXRvclNwYWNlOyB9CisgICAgQUxX
QVlTX0lOTElORSBJc29TdWJzcGFjZSYgcHJvcGVydHlUYWJsZVNwYWNlKCkgeyByZXR1cm4gaGVh
cC5wcm9wZXJ0eVRhYmxlU3BhY2U7IH0KKyAgICBBTFdBWVNfSU5MSU5FIElzb1N1YnNwYWNlJiBy
ZWdFeHBTcGFjZSgpIHsgcmV0dXJuIGhlYXAucmVnRXhwU3BhY2U7IH0KKyAgICBBTFdBWVNfSU5M
SU5FIElzb1N1YnNwYWNlJiByZWdFeHBPYmplY3RTcGFjZSgpIHsgcmV0dXJuIGhlYXAucmVnRXhw
T2JqZWN0U3BhY2U7IH0KKyAgICBBTFdBWVNfSU5MSU5FIElzb1N1YnNwYWNlJiByb3BlU3RyaW5n
U3BhY2UoKSB7IHJldHVybiBoZWFwLnJvcGVTdHJpbmdTcGFjZTsgfQorICAgIEFMV0FZU19JTkxJ
TkUgSXNvU3Vic3BhY2UmIHNjb3BlZEFyZ3VtZW50c1NwYWNlKCkgeyByZXR1cm4gaGVhcC5zY29w
ZWRBcmd1bWVudHNTcGFjZTsgfQorICAgIEFMV0FZU19JTkxJTkUgSXNvU3Vic3BhY2UmIHNwYXJz
ZUFycmF5VmFsdWVNYXBTcGFjZSgpIHsgcmV0dXJuIGhlYXAuc3BhcnNlQXJyYXlWYWx1ZU1hcFNw
YWNlOyB9CisgICAgQUxXQVlTX0lOTElORSBJc29TdWJzcGFjZSYgc3RyaW5nU3BhY2UoKSB7IHJl
dHVybiBoZWFwLnN0cmluZ1NwYWNlOyB9CisgICAgQUxXQVlTX0lOTElORSBJc29TdWJzcGFjZSYg
c3RyaW5nT2JqZWN0U3BhY2UoKSB7IHJldHVybiBoZWFwLnN0cmluZ09iamVjdFNwYWNlOyB9Cisg
ICAgQUxXQVlTX0lOTElORSBJc29TdWJzcGFjZSYgc3RydWN0dXJlQ2hhaW5TcGFjZSgpIHsgcmV0
dXJuIGhlYXAuc3RydWN0dXJlQ2hhaW5TcGFjZTsgfQorICAgIEFMV0FZU19JTkxJTkUgSXNvU3Vi
c3BhY2UmIHN0cnVjdHVyZVJhcmVEYXRhU3BhY2UoKSB7IHJldHVybiBoZWFwLnN0cnVjdHVyZVJh
cmVEYXRhU3BhY2U7IH0KKyAgICBBTFdBWVNfSU5MSU5FIElzb1N1YnNwYWNlJiBzdHJ1Y3R1cmVT
cGFjZSgpIHsgcmV0dXJuIGhlYXAuc3RydWN0dXJlU3BhY2U7IH0KKyAgICBBTFdBWVNfSU5MSU5F
IElzb1N1YnNwYWNlJiBicmFuZGVkU3RydWN0dXJlU3BhY2UoKSB7IHJldHVybiBoZWFwLmJyYW5k
ZWRTdHJ1Y3R1cmVTcGFjZTsgfQorICAgIEFMV0FZU19JTkxJTkUgSXNvU3Vic3BhY2UmIHN5bWJv
bFRhYmxlU3BhY2UoKSB7IHJldHVybiBoZWFwLnN5bWJvbFRhYmxlU3BhY2U7IH0KIAogI2RlZmlu
ZSBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKG5hbWUpIFwKICAgICB0ZW1wbGF0
ZTxTdWJzcGFjZUFjY2VzcyBtb2RlPiBcCi0gICAgSXNvU3Vic3BhY2UqIG5hbWUoKSBcCi0gICAg
eyBcCi0gICAgICAgIGlmIChtXyMjbmFtZSB8fCBtb2RlID09IFN1YnNwYWNlQWNjZXNzOjpDb25j
dXJyZW50bHkpIFwKLSAgICAgICAgICAgIHJldHVybiBtXyMjbmFtZS5nZXQoKTsgXAotICAgICAg
ICByZXR1cm4gbmFtZSMjU2xvdygpOyBcCi0gICAgfSBcCi0gICAgSlNfRVhQT1JUX1BSSVZBVEUg
SXNvU3Vic3BhY2UqIG5hbWUjI1Nsb3coKTsgXAotICAgIHN0ZDo6dW5pcXVlX3B0cjxJc29TdWJz
cGFjZT4gbV8jI25hbWU7Ci0KKyAgICBBTFdBWVNfSU5MSU5FIElzb1N1YnNwYWNlKiBuYW1lKCkg
eyByZXR1cm4gaGVhcC5uYW1lPG1vZGU+KCk7IH0KIAogI2lmIEpTQ19PQkpDX0FQSV9FTkFCTEVE
CiAgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihhcGlXcmFwcGVyT2JqZWN0
U3BhY2UpCkBAIC02NTcsNzQgKzU1OCwyMyBAQCBwdWJsaWM6CiAjZW5kaWYKIAogI3VuZGVmIERZ
TkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIKLSAgICAKLSAgICBJc29DZWxsU2V0IGV4
ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2VzV2l0aENvbnN0cmFpbnRzOwotICAgIElzb0NlbGxTZXQg
ZXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZXNXaXRoRmluYWxpemVyczsKKworICAgIEFMV0FZU19J
TkxJTkUgSXNvQ2VsbFNldCYgZXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZXNXaXRoQ29uc3RyYWlu
dHMoKSB7IHJldHVybiBoZWFwLmV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2VzV2l0aENvbnN0cmFp
bnRzOyB9CisgICAgQUxXQVlTX0lOTElORSBJc29DZWxsU2V0JiBleGVjdXRhYmxlVG9Db2RlQmxv
Y2tFZGdlc1dpdGhGaW5hbGl6ZXJzKCkgeyByZXR1cm4gaGVhcC5leGVjdXRhYmxlVG9Db2RlQmxv
Y2tFZGdlc1dpdGhGaW5hbGl6ZXJzOyB9CiAKICNkZWZpbmUgRFlOQU1JQ19TUEFDRV9BTkRfU0VU
X0RFRklORV9NRU1CRVIobmFtZSkgXAogICAgIHRlbXBsYXRlPFN1YnNwYWNlQWNjZXNzIG1vZGU+
IFwKLSAgICBJc29TdWJzcGFjZSogbmFtZSgpIFwKLSAgICB7IFwKLSAgICAgICAgaWYgKGF1dG8q
IHNwYWNlQW5kU2V0ID0gbV8jI25hbWUuZ2V0KCkpIFwKLSAgICAgICAgICAgIHJldHVybiAmc3Bh
Y2VBbmRTZXQtPnNwYWNlOyBcCi0gICAgICAgIGlmIChtb2RlID09IFN1YnNwYWNlQWNjZXNzOjpD
b25jdXJyZW50bHkpIFwKLSAgICAgICAgICAgIHJldHVybiBudWxscHRyOyBcCi0gICAgICAgIHJl
dHVybiBuYW1lIyNTbG93KCk7IFwKLSAgICB9IFwKLSAgICBJc29TdWJzcGFjZSogbmFtZSMjU2xv
dygpOyBcCi0gICAgc3RkOjp1bmlxdWVfcHRyPFNwYWNlQW5kU2V0PiBtXyMjbmFtZTsKLSAgICAK
LSAgICBzdHJ1Y3QgU3BhY2VBbmRTZXQgewotICAgICAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9B
TExPQ0FURUQ7Ci0KLSAgICAgICAgSXNvU3Vic3BhY2Ugc3BhY2U7Ci0gICAgICAgIElzb0NlbGxT
ZXQgc2V0OwotICAgICAgICAKLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gQXJndW1lbnRz
PgotICAgICAgICBTcGFjZUFuZFNldChBcmd1bWVudHMmJi4uLiBhcmd1bWVudHMpCi0gICAgICAg
ICAgICA6IHNwYWNlKHN0ZDo6Zm9yd2FyZDxBcmd1bWVudHM+KGFyZ3VtZW50cykuLi4pCi0gICAg
ICAgICAgICAsIHNldChzcGFjZSkKLSAgICAgICAgewotICAgICAgICB9Ci0gICAgICAgIAotICAg
ICAgICBzdGF0aWMgSXNvQ2VsbFNldCYgc2V0Rm9yKFN1YnNwYWNlJiBzcGFjZSkKLSAgICAgICAg
ewotICAgICAgICAgICAgcmV0dXJuICpiaXR3aXNlX2Nhc3Q8SXNvQ2VsbFNldCo+KAotICAgICAg
ICAgICAgICAgIGJpdHdpc2VfY2FzdDxjaGFyKj4oJnNwYWNlKSAtCi0gICAgICAgICAgICAgICAg
T0JKRUNUX09GRlNFVE9GKFNwYWNlQW5kU2V0LCBzcGFjZSkgKwotICAgICAgICAgICAgICAgIE9C
SkVDVF9PRkZTRVRPRihTcGFjZUFuZFNldCwgc2V0KSk7Ci0gICAgICAgIH0KLSAgICB9OwotICAg
IAotICAgIFNwYWNlQW5kU2V0IGNvZGVCbG9ja1NwYWNlOworICAgIEFMV0FZU19JTkxJTkUgSXNv
U3Vic3BhY2UqIG5hbWUoKSB7IHJldHVybiBoZWFwLm5hbWU8bW9kZT4oKTsgfQogCi0gICAgdGVt
cGxhdGU8dHlwZW5hbWUgRnVuYz4KLSAgICB2b2lkIGZvckVhY2hDb2RlQmxvY2tTcGFjZShjb25z
dCBGdW5jJiBmdW5jKQotICAgIHsKLSAgICAgICAgLy8gVGhpcyBzaG91bGQgbm90IGluY2x1ZGUg
d2ViQXNzZW1ibHlDb2RlQmxvY2tTcGFjZSBiZWNhdXNlIHRoaXMgaXMgYWJvdXQgc3Vic2NsYXNz
ZXMgb2YKLSAgICAgICAgLy8gSlNDOjpDb2RlQmxvY2suCi0gICAgICAgIGZ1bmMoY29kZUJsb2Nr
U3BhY2UpOwotICAgIH0KKyAgICB1c2luZyBTcGFjZUFuZFNldCA9IEhlYXA6OlNwYWNlQW5kU2V0
OworICAgIEFMV0FZU19JTkxJTkUgU3BhY2VBbmRTZXQmIGNvZGVCbG9ja1NwYWNlKCkgeyByZXR1
cm4gaGVhcC5jb2RlQmxvY2tTcGFjZTsgfQogCiAgICAgRFlOQU1JQ19TUEFDRV9BTkRfU0VUX0RF
RklORV9NRU1CRVIoZXZhbEV4ZWN1dGFibGVTcGFjZSkKICAgICBEWU5BTUlDX1NQQUNFX0FORF9T
RVRfREVGSU5FX01FTUJFUihtb2R1bGVQcm9ncmFtRXhlY3V0YWJsZVNwYWNlKQotICAgIFNwYWNl
QW5kU2V0IGZ1bmN0aW9uRXhlY3V0YWJsZVNwYWNlOwotICAgIFNwYWNlQW5kU2V0IHByb2dyYW1F
eGVjdXRhYmxlU3BhY2U7Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jPgotICAgIHZvaWQg
Zm9yRWFjaFNjcmlwdEV4ZWN1dGFibGVTcGFjZShjb25zdCBGdW5jJiBmdW5jKQotICAgIHsKLSAg
ICAgICAgaWYgKG1fZXZhbEV4ZWN1dGFibGVTcGFjZSkKLSAgICAgICAgICAgIGZ1bmMoKm1fZXZh
bEV4ZWN1dGFibGVTcGFjZSk7Ci0gICAgICAgIGZ1bmMoZnVuY3Rpb25FeGVjdXRhYmxlU3BhY2Up
OwotICAgICAgICBpZiAobV9tb2R1bGVQcm9ncmFtRXhlY3V0YWJsZVNwYWNlKQotICAgICAgICAg
ICAgZnVuYygqbV9tb2R1bGVQcm9ncmFtRXhlY3V0YWJsZVNwYWNlKTsKLSAgICAgICAgZnVuYyhw
cm9ncmFtRXhlY3V0YWJsZVNwYWNlKTsKLSAgICB9Ci0KLSAgICBTcGFjZUFuZFNldCB1bmxpbmtl
ZEZ1bmN0aW9uRXhlY3V0YWJsZVNwYWNlOwogCi0jdW5kZWYgRFlOQU1JQ19TUEFDRV9BTkRfU0VU
X0RFRklORV9NRU1CRVIKKyAgICBBTFdBWVNfSU5MSU5FIFNwYWNlQW5kU2V0JiBmdW5jdGlvbkV4
ZWN1dGFibGVTcGFjZSgpIHsgcmV0dXJuIGhlYXAuZnVuY3Rpb25FeGVjdXRhYmxlU3BhY2U7IH0K
KyAgICBBTFdBWVNfSU5MSU5FIFNwYWNlQW5kU2V0JiBwcm9ncmFtRXhlY3V0YWJsZVNwYWNlKCkg
eyByZXR1cm4gaGVhcC5wcm9ncmFtRXhlY3V0YWJsZVNwYWNlOyB9CisgICAgQUxXQVlTX0lOTElO
RSBTcGFjZUFuZFNldCYgdW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGVTcGFjZSgpIHsgcmV0dXJu
IGhlYXAudW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGVTcGFjZTsgfQogCiAgICAgVk1UeXBlIHZt
VHlwZTsKICAgICBDbGllbnREYXRhKiBjbGllbnREYXRhOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvV2Vha01hcFByb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1dlYWtNYXBQcm90b3R5cGUuaAkocmV2aXNpb24gMjg2MDQz
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha01hcFByb3RvdHlwZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC00MSw3ICs0MSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vi
c3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRf
SVNPX1NVQlNQQUNFX1NIQVJBQkxFKFdlYWtNYXBQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICBy
ZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmpl
Y3RTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBXZWFrTWFwUHJvdG90eXBlKiBjcmVhdGUo
Vk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dlYWtPYmplY3RSZWZQcm90
b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFr
T2JqZWN0UmVmUHJvdG90eXBlLmgJKHJldmlzaW9uIDI4NjA0MykKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1dlYWtPYmplY3RSZWZQcm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpA
QCAtMzcsNyArMzcsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFj
ZUZvcihWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9T
SEFSQUJMRShXZWFrT2JqZWN0UmVmUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2
bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2Uo
KTsKICAgICB9CiAKICAgICBzdGF0aWMgV2Vha09iamVjdFJlZlByb3RvdHlwZSogY3JlYXRlKFZN
JiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUp
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFrU2V0UHJvdG90eXBlLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha1NldFByb3Rv
dHlwZS5oCShyZXZpc2lvbiAyODYwNDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9XZWFrU2V0UHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQxLDcgKzQxLDcgQEAgcHVi
bGljOgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsK
ICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoV2Vha1NldFByb3Rv
dHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAg
ICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIFdl
YWtTZXRQcm90b3R5cGUqIGNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIFN0cnVjdHVyZSogc3RydWN0dXJlKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3Rv
b2xzL0pTRG9sbGFyVk0uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90
b29scy9KU0RvbGxhclZNLmNwcAkocmV2aXNpb24gMjg2MDQzKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3Rvb2xzL0pTRG9sbGFyVk0uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzMsNyArMTMz
LDcgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlLCBTdWJzcGFjZUFj
Y2Vzcz4KICAgICBzdGF0aWMgQ29tcGxldGVTdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQog
ICAgIHsKLSAgICAgICAgcmV0dXJuICZ2bS5jZWxsU3BhY2U7CisgICAgICAgIHJldHVybiAmdm0u
Y2VsbFNwYWNlKCk7CiAgICAgfQogCiAgICAgSlNEb2xsYXJWTUNhbGxGcmFtZShWTSYgdm0sIFN0
cnVjdHVyZSogc3RydWN0dXJlKQpAQCAtMjIzLDcgKzIyMyw3IEBAIHB1YmxpYzoKICAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vic3BhY2VBY2Nlc3M+CiAgICAgc3RhdGljIENvbXBs
ZXRlU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7Ci0gICAgICAgIHJldHVybiAm
dm0uY2VsbFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLmNlbGxTcGFjZSgpOwogICAgIH0KIAog
ICAgIFJvb3QqIHJvb3QoKSBjb25zdCB7IHJldHVybiBtX3Jvb3QuZ2V0KCk7IH0KQEAgLTI4Nyw3
ICsyODcsNyBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUsIFN1YnNw
YWNlQWNjZXNzPgogICAgIHN0YXRpYyBDb21wbGV0ZVN1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYg
dm0pCiAgICAgewotICAgICAgICByZXR1cm4gJnZtLmRlc3RydWN0aWJsZU9iamVjdFNwYWNlOwor
ICAgICAgICByZXR1cm4gJnZtLmRlc3RydWN0aWJsZU9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAg
ICAgUm9vdChWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQpAQCAtMzU0LDcgKzM1NCw3IEBA
IHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vic3BhY2VBY2Nlc3M+
CiAgICAgc3RhdGljIENvbXBsZXRlU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7
Ci0gICAgICAgIHJldHVybiAmdm0uY2VsbFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLmNlbGxT
cGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBTaW1wbGVPYmplY3QqIGNyZWF0ZShWTSYgdm0s
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCkBAIC00MjYsNyArNDI2LDcgQEAgcHVibGlj
OgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlLCBTdWJzcGFjZUFjY2Vzcz4KICAgICBz
dGF0aWMgQ29tcGxldGVTdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKLSAgICAg
ICAgcmV0dXJuICZ2bS5jZWxsU3BhY2U7CisgICAgICAgIHJldHVybiAmdm0uY2VsbFNwYWNlKCk7
CiAgICAgfQogCiAgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiB2bSwg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCkBAIC01MDgs
NyArNTA4LDcgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlLCBTdWJz
cGFjZUFjY2Vzcz4KICAgICBzdGF0aWMgQ29tcGxldGVTdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0m
IHZtKQogICAgIHsKLSAgICAgICAgcmV0dXJuICZ2bS5jZWxsU3BhY2U7CisgICAgICAgIHJldHVy
biAmdm0uY2VsbFNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRl
U3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBw
cm90b3R5cGUpCkBAIC01OTAsNyArNTkwLDcgQEAgSUdOT1JFX1dBUk5JTkdTX0VORAogICAgIHRl
bXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlLCBTdWJzcGFjZUFjY2Vzcz4KICAgICBzdGF0aWMgQ29t
cGxldGVTdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKLSAgICAgICAgcmV0dXJu
ICZ2bS5jZWxsU3BhY2U7CisgICAgICAgIHJldHVybiAmdm0uY2VsbFNwYWNlKCk7CiAgICAgfQog
CiAgICAgc3RhdGljIFJ1bnRpbWVBcnJheSogY3JlYXRlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQpAQCAtNzcyLDcgKzc3Miw3IEBAIHB1YmxpYzoK
ICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vic3BhY2VBY2Nlc3M+CiAgICAgc3Rh
dGljIENvbXBsZXRlU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7Ci0gICAgICAg
IHJldHVybiAmdm0uY2VsbFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLmNlbGxTcGFjZSgpOwog
ICAgIH0KIAogICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQpAQCAtODcyLDcg
Kzg3Miw3IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vic3Bh
Y2VBY2Nlc3M+CiAgICAgc3RhdGljIENvbXBsZXRlU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2
bSkKICAgICB7Ci0gICAgICAgIHJldHVybiAmdm0uY2VsbFNwYWNlOworICAgICAgICByZXR1cm4g
JnZtLmNlbGxTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0
cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJv
dG90eXBlKQpAQCAtODk3LDcgKzg5Nyw3IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBDZWxsVHlwZSwgU3Vic3BhY2VBY2Nlc3M+CiAgICAgc3RhdGljIENvbXBsZXRlU3Vic3BhY2Uq
IHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7Ci0gICAgICAgIHJldHVybiAmdm0uY2VsbFNwYWNl
OworICAgICAgICByZXR1cm4gJnZtLmNlbGxTcGFjZSgpOwogICAgIH0KIAogICAgIE9iamVjdERv
aW5nU2lkZUVmZmVjdFB1dFdpdGhvdXRDb3JyZWN0U2xvdFN0YXR1cyhWTSYgdm0sIFN0cnVjdHVy
ZSogc3RydWN0dXJlKQpAQCAtOTQ4LDcgKzk0OCw3IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBDZWxsVHlwZSwgU3Vic3BhY2VBY2Nlc3M+CiAgICAgc3RhdGljIENvbXBsZXRlU3Vi
c3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7Ci0gICAgICAgIHJldHVybiAmdm0uY2Vs
bFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLmNlbGxTcGFjZSgpOwogICAgIH0KIAogICAgIHN0
YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQpAQCAtMTU4NSw3ICsxNTg1LDcgQEAgcHVi
bGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlLCBTdWJzcGFjZUFjY2Vzcz4KICAg
ICBzdGF0aWMgQ29tcGxldGVTdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKLSAg
ICAgICAgcmV0dXJuICZ2bS5jZWxsU3BhY2U7CisgICAgICAgIHJldHVybiAmdm0uY2VsbFNwYWNl
KCk7CiAgICAgfQogCiAgICAgSlNUZXN0Q3VzdG9tR2V0dGVyU2V0dGVyKFZNJiB2bSwgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUpCkBAIC0xODM4LDcgKzE4MzgsNyBAQCBwdWJsaWM6CiAgICAgdGVtcGxh
dGU8dHlwZW5hbWUgQ2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNzPgogICAgIHN0YXRpYyBDb21wbGV0
ZVN1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewotICAgICAgICByZXR1cm4gJnZt
LmRlc3RydWN0aWJsZU9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLmRlc3RydWN0aWJs
ZU9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAgY2xhc3MgQ2xpZW50IGZpbmFsIDogcHVibGlj
IFdhc206OlN0cmVhbWluZ1BhcnNlckNsaWVudCB7CkBAIC0xOTMzLDcgKzE5MzMsNyBAQCBwdWJs
aWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNzPgogICAg
IHN0YXRpYyBDb21wbGV0ZVN1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewotICAg
ICAgICByZXR1cm4gJnZtLmRlc3RydWN0aWJsZU9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4g
JnZtLmRlc3RydWN0aWJsZU9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAgV2FzbVN0cmVhbWlu
Z0NvbXBpbGVyKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFdhc206OkNvbXBpbGVyTW9k
ZSBjb21waWxlck1vZGUsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTUHJvbWlzZSog
cHJvbWlzZSwgSlNPYmplY3QqIGltcG9ydE9iamVjdCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS90b29scy9KU0RvbGxhclZNLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3Rvb2xzL0pTRG9sbGFyVk0uaAkocmV2aXNpb24gMjg2MDQzKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3Rvb2xzL0pTRG9sbGFyVk0uaAkod29ya2luZyBjb3B5KQpAQCAtNDIsNyArNDIs
NyBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUsIFN1YnNwYWNlQWNj
ZXNzPgogICAgIHN0YXRpYyBDb21wbGV0ZVN1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAg
ICAgewotICAgICAgICByZXR1cm4gJnZtLmNlbGxTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5j
ZWxsU3BhY2UoKTsKICAgICB9CiAgICAgCiAgICAgREVDTEFSRV9FWFBPUlRfSU5GTzsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHkuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5LmgJKHJldmlz
aW9uIDI4NjA0MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1i
bHkuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTYtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTYtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQxLDcgKzQxLDcgQEAgcHVibGljOgogICAgIHN0YXRp
YyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElD
X0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNXZWJBc3NlbWJseSwgQmFzZSk7Ci0gICAg
ICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFp
bk9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIEpTV2ViQXNzZW1ibHkqIGNyZWF0
ZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKik7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUNvbXBpbGVFcnJvclByb3RvdHlwZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5Q29tcGls
ZUVycm9yUHJvdG90eXBlLmgJKHJldmlzaW9uIDI4NjA0MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5Q29tcGlsZUVycm9yUHJvdG90eXBlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMTkgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMjEg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCkBAIC00MSw3ICs0MSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2Uq
IHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NV
QlNQQUNFX1NIQVJBQkxFKFdlYkFzc2VtYmx5Q29tcGlsZUVycm9yUHJvdG90eXBlLCBCYXNlKTsK
LSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZt
LnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgV2ViQXNzZW1ibHlDb21w
aWxlRXJyb3JQcm90b3R5cGUqIGNyZWF0ZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJl
Kik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUV4Y2Vw
dGlvblByb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L2pzL1dlYkFzc2VtYmx5RXhjZXB0aW9uUHJvdG90eXBlLmgJKHJldmlzaW9uIDI4NjA0MykKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5RXhjZXB0aW9uUHJvdG90
eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQxLDcgKzQxLDcgQEAgcHVibGljOgogICAgIHN0YXRp
YyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElD
X0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoV2ViQXNzZW1ibHlFeGNlcHRpb25Qcm90b3R5
cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAg
IHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBXZWJB
c3NlbWJseUV4Y2VwdGlvblByb3RvdHlwZSogY3JlYXRlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBT
dHJ1Y3R1cmUqKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2Vt
Ymx5R2xvYmFsUHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vanMvV2ViQXNzZW1ibHlHbG9iYWxQcm90b3R5cGUuaAkocmV2aXNpb24gMjg2MDQzKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlHbG9iYWxQcm90b3R5
cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDE5LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCkBAIC00MCw3ICs0MCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNv
U3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NF
UlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKFdlYkFzc2VtYmx5R2xvYmFsUHJvdG90eXBlLCBCYXNl
KTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4g
JnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgV2ViQXNzZW1ibHlH
bG9iYWxQcm90b3R5cGUqIGNyZWF0ZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKik7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUluc3RhbmNl
UHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMv
V2ViQXNzZW1ibHlJbnN0YW5jZVByb3RvdHlwZS5oCShyZXZpc2lvbiAyODYwNDMpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUluc3RhbmNlUHJvdG90eXBlLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE2
LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDE2LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCkBAIC00MSw3ICs0MSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNv
U3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NF
UlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKFdlYkFzc2VtYmx5SW5zdGFuY2VQcm90b3R5cGUsIEJh
c2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVy
biAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBXZWJBc3NlbWJs
eUluc3RhbmNlUHJvdG90eXBlKiBjcmVhdGUoVk0mLCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVy
ZSopOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlMaW5r
RXJyb3JQcm90b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9qcy9XZWJBc3NlbWJseUxpbmtFcnJvclByb3RvdHlwZS5oCShyZXZpc2lvbiAyODYwNDMpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUxpbmtFcnJvclByb3Rv
dHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxNi0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAxNi0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDEsNyArNDEsNyBAQCBwdWJsaWM6CiAgICAgc3Rh
dGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFU
SUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShXZWJBc3NlbWJseUxpbmtFcnJvclByb3Rv
dHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAg
ICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIFdl
YkFzc2VtYmx5TGlua0Vycm9yUHJvdG90eXBlKiBjcmVhdGUoVk0mLCBKU0dsb2JhbE9iamVjdCos
IFN0cnVjdHVyZSopOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNz
ZW1ibHlNZW1vcnlQcm90b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9qcy9XZWJBc3NlbWJseU1lbW9yeVByb3RvdHlwZS5oCShyZXZpc2lvbiAyODYwNDMp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseU1lbW9yeVByb3Rv
dHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxNi0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAxNi0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDEsNyArNDEsNyBAQCBwdWJsaWM6CiAgICAgc3Rh
dGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFU
SUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShXZWJBc3NlbWJseU1lbW9yeVByb3RvdHlw
ZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAg
cmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIFdlYkFz
c2VtYmx5TWVtb3J5UHJvdG90eXBlKiBjcmVhdGUoVk0mLCBKU0dsb2JhbE9iamVjdCosIFN0cnVj
dHVyZSopOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlN
b2R1bGVQcm90b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9qcy9XZWJBc3NlbWJseU1vZHVsZVByb3RvdHlwZS5oCShyZXZpc2lvbiAyODYwNDMpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseU1vZHVsZVByb3RvdHlwZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
Ni0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAxNi0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwpAQCAtNDEsNyArNDEsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIElz
b1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNT
RVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShXZWJBc3NlbWJseU1vZHVsZVByb3RvdHlwZSwgQmFz
ZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJu
ICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIFdlYkFzc2VtYmx5
TW9kdWxlUHJvdG90eXBlKiBjcmVhdGUoVk0mLCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSop
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlSdW50aW1l
RXJyb3JQcm90b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9qcy9XZWJBc3NlbWJseVJ1bnRpbWVFcnJvclByb3RvdHlwZS5oCShyZXZpc2lvbiAyODYwNDMp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseVJ1bnRpbWVFcnJv
clByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHly
aWdodCAoQykgMjAxNi0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAxNi0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
CiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDEsNyArNDEsNyBAQCBwdWJsaWM6CiAg
ICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewogICAgICAg
ICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShXZWJBc3NlbWJseVJ1bnRpbWVF
cnJvclByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFj
ZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAg
c3RhdGljIFdlYkFzc2VtYmx5UnVudGltZUVycm9yUHJvdG90eXBlKiBjcmVhdGUoVk0mLCBKU0ds
b2JhbE9iamVjdCosIFN0cnVjdHVyZSopOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vanMvV2ViQXNzZW1ibHlUYWJsZVByb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5VGFibGVQcm90b3R5cGUuaAkocmV2aXNp
b24gMjg2MDQzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlU
YWJsZVByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxNi0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAxNi0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDEsNyArNDEsNyBAQCBwdWJsaWM6
CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewogICAg
ICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShXZWJBc3NlbWJseVRhYmxl
UHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOwor
ICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0
aWMgV2ViQXNzZW1ibHlUYWJsZVByb3RvdHlwZSogY3JlYXRlKFZNJiwgSlNHbG9iYWxPYmplY3Qq
LCBTdHJ1Y3R1cmUqKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFz
c2VtYmx5VGFnUHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vanMvV2ViQXNzZW1ibHlUYWdQcm90b3R5cGUuaAkocmV2aXNpb24gMjg2MDQzKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlUYWdQcm90b3R5cGUuaAko
d29ya2luZyBjb3B5KQpAQCAtNDAsNyArNDAsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIElzb1N1
YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJU
X0lTT19TVUJTUEFDRV9TSEFSQUJMRShXZWJBc3NlbWJseVRhZ1Byb3RvdHlwZSwgQmFzZSk7Ci0g
ICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5w
bGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIFdlYkFzc2VtYmx5VGFnUHJv
dG90eXBlKiBjcmVhdGUoVk0mLCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSopOwpJbmRleDog
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Bc3luY0l0ZXJhdG9yLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Bc3luY0l0ZXJhdG9yLmgJKHJl
dmlzaW9uIDI4NjA0MykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQXN5bmNJ
dGVyYXRvci5oCSh3b3JraW5nIGNvcHkpCkBAIC00OCw3ICs0OCw3IEBAIHB1YmxpYzoKICAgICBz
dGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewog
ICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU0RPTUFzeW5jSXRl
cmF0b3JQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3Bh
Y2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAg
IHN0YXRpYyBKU0RPTUFzeW5jSXRlcmF0b3JQcm90b3R5cGUqIGNyZWF0ZShKU0M6OlZNJiB2bSwg
SlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OlN0cnVjdHVyZSogc3RydWN0
dXJlKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01JdGVyYXRvci5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NSXRlcmF0b3IuaAko
cmV2aXNpb24gMjg2MDQzKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01JdGVy
YXRvci5oCSh3b3JraW5nIGNvcHkpCkBAIC01NSw3ICs1NSw3IEBAIHB1YmxpYzoKICAgICBzdGF0
aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAg
ICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU0RPTUl0ZXJhdG9yUHJv
dG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAg
ICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMg
SlNET01JdGVyYXRvclByb3RvdHlwZSogY3JlYXRlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUpCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0ZpbGVTeXN0ZW1EaXJlY3RvcnlIYW5kbGVJdGVy
YXRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNGaWxl
U3lzdGVtRGlyZWN0b3J5SGFuZGxlSXRlcmF0b3IuY3BwCShyZXZpc2lvbiAyODYwNDMpCisrKyBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0ZpbGVTeXN0ZW1EaXJlY3RvcnlIYW5kbGVJdGVy
YXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU1LDkgKzU1LDkgQEAgSXNvU3Vic3BhY2UqIEpT
RmlsZVN5c3RlbURpcmVjdG9yeUhhbmRsZQogICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAgc3Rh
dGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBK
U0ZpbGVTeXN0ZW1EaXJlY3RvcnlIYW5kbGVJdGVyYXRvcj4gfHwgIUpTRmlsZVN5c3RlbURpcmVj
dG9yeUhhbmRsZUl0ZXJhdG9yOjpuZWVkc0Rlc3RydWN0aW9uKTsKICAgICBpZiBjb25zdGV4cHIg
KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTRmlsZVN5c3Rl
bURpcmVjdG9yeUhhbmRsZUl0ZXJhdG9yPikKLSAgICAgICAgY2xpZW50RGF0YS5zZXRGaWxlU3lz
dGVtRGlyZWN0b3J5SGFuZGxlSXRlcmF0b3JTcGFjZShtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJ
U09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxU
eXBlLCBKU0ZpbGVTeXN0ZW1EaXJlY3RvcnlIYW5kbGVJdGVyYXRvcikpOworICAgICAgICBjbGll
bnREYXRhLnNldEZpbGVTeXN0ZW1EaXJlY3RvcnlIYW5kbGVJdGVyYXRvclNwYWNlKG1ha2VVbmlx
dWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJs
ZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBKU0ZpbGVTeXN0ZW1EaXJlY3RvcnlIYW5kbGVJdGVyYXRv
cikpOwogICAgIGVsc2UKLSAgICAgICAgY2xpZW50RGF0YS5zZXRGaWxlU3lzdGVtRGlyZWN0b3J5
SGFuZGxlSXRlcmF0b3JTcGFjZShtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0Vf
SU5JVCh2bS5oZWFwLCAqdm0uY2VsbEhlYXBDZWxsVHlwZSwgSlNGaWxlU3lzdGVtRGlyZWN0b3J5
SGFuZGxlSXRlcmF0b3IpKTsKKyAgICAgICAgY2xpZW50RGF0YS5zZXRGaWxlU3lzdGVtRGlyZWN0
b3J5SGFuZGxlSXRlcmF0b3JTcGFjZShtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BB
Q0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCksIEpTRmlsZVN5c3RlbURpcmVj
dG9yeUhhbmRsZUl0ZXJhdG9yKSk7CiAgICAgYXV0byogc3BhY2UgPSBjbGllbnREYXRhLmZpbGVT
eXN0ZW1EaXJlY3RvcnlIYW5kbGVJdGVyYXRvclNwYWNlKCk7CiBJR05PUkVfV0FSTklOR1NfQkVH
SU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2lj
YWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9XZWJDb3JlSlND
bGllbnREYXRhLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9X
ZWJDb3JlSlNDbGllbnREYXRhLmNwcAkocmV2aXNpb24gMjg2MDQzKQorKysgU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvV2ViQ29yZUpTQ2xpZW50RGF0YS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTc3LDEyICs3NywxMiBAQCBKU1ZNQ2xpZW50RGF0YTo6SlNWTUNsaWVudERhdGEoVk0mIHZtKQog
ICAgICwgbV9oZWFwQ2VsbFR5cGVGb3JKU0F1ZGlvV29ya2xldEdsb2JhbFNjb3BlKEpTQzo6SXNv
SGVhcENlbGxUeXBlOjpjcmVhdGU8SlNBdWRpb1dvcmtsZXRHbG9iYWxTY29wZT4oKSkKICNlbmRp
ZgogICAgICwgbV9oZWFwQ2VsbFR5cGVGb3JKU0lEQlNlcmlhbGl6YXRpb25HbG9iYWxPYmplY3Qo
SlNDOjpJc29IZWFwQ2VsbFR5cGU6OmNyZWF0ZTxKU0lEQlNlcmlhbGl6YXRpb25HbG9iYWxPYmpl
Y3Q+KCkpCi0gICAgLCBtX2RvbUJ1aWx0aW5Db25zdHJ1Y3RvclNwYWNlIElTT19TVUJTUEFDRV9J
TklUKHZtLmhlYXAsICp2bS5jZWxsSGVhcENlbGxUeXBlLCBKU0RPTUJ1aWx0aW5Db25zdHJ1Y3Rv
ckJhc2UpCi0gICAgLCBtX2RvbUNvbnN0cnVjdG9yU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQodm0u
aGVhcCwgKnZtLmNlbGxIZWFwQ2VsbFR5cGUsIEpTRE9NQ29uc3RydWN0b3JCYXNlKQotICAgICwg
bV9kb21OYW1lc3BhY2VPYmplY3RTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0u
Y2VsbEhlYXBDZWxsVHlwZSwgSlNET01PYmplY3QpCi0gICAgLCBtX2RvbVdpbmRvd1Byb3BlcnRp
ZXNTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uY2VsbEhlYXBDZWxsVHlwZSwg
SlNET01XaW5kb3dQcm9wZXJ0aWVzKQorICAgICwgbV9kb21CdWlsdGluQ29uc3RydWN0b3JTcGFj
ZSBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCksIEpTRE9N
QnVpbHRpbkNvbnN0cnVjdG9yQmFzZSkKKyAgICAsIG1fZG9tQ29uc3RydWN0b3JTcGFjZSBJU09f
U1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCksIEpTRE9NQ29uc3Ry
dWN0b3JCYXNlKQorICAgICwgbV9kb21OYW1lc3BhY2VPYmplY3RTcGFjZSBJU09fU1VCU1BBQ0Vf
SU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCksIEpTRE9NT2JqZWN0KQorICAgICwg
bV9kb21XaW5kb3dQcm9wZXJ0aWVzU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0u
Y2VsbEhlYXBDZWxsVHlwZSgpLCBKU0RPTVdpbmRvd1Byb3BlcnRpZXMpCiAgICAgLCBtX3J1bnRp
bWVBcnJheVNwYWNlIElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICptX3J1bnRpbWVBcnJheUhl
YXBDZWxsVHlwZSwgUnVudGltZUFycmF5KQotICAgICwgbV9ydW50aW1lTWV0aG9kU3BhY2UgSVNP
X1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmNlbGxIZWFwQ2VsbFR5cGUsIFJ1bnRpbWVNZXRo
b2QpIC8vIEhhc2g6MHhmNzBjNGE4NQorICAgICwgbV9ydW50aW1lTWV0aG9kU3BhY2UgSVNPX1NV
QlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBSdW50aW1lTWV0aG9k
KSAvLyBIYXNoOjB4ZjcwYzRhODUKICAgICAsIG1fcnVudGltZU9iamVjdFNwYWNlIElTT19TVUJT
UEFDRV9JTklUKHZtLmhlYXAsICptX3J1bnRpbWVPYmplY3RIZWFwQ2VsbFR5cGUsIEpTQzo6Qmlu
ZGluZ3M6OlJ1bnRpbWVPYmplY3QpCiAgICAgLCBtX3dpbmRvd1Byb3h5U3BhY2UgSVNPX1NVQlNQ
QUNFX0lOSVQodm0uaGVhcCwgKm1fd2luZG93UHJveHlIZWFwQ2VsbFR5cGUsIEpTV2luZG93UHJv
eHkpCiAgICAgLCBtX2lkYlNlcmlhbGl6YXRpb25TcGFjZSBJU09fU1VCU1BBQ0VfSU5JVCh2bS5o
ZWFwLCAqbV9oZWFwQ2VsbFR5cGVGb3JKU0lEQlNlcmlhbGl6YXRpb25HbG9iYWxPYmplY3QsIEpT
SURCU2VyaWFsaXphdGlvbkdsb2JhbE9iamVjdCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCShyZXZpc2lvbiAyODYwNDMp
CisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQko
d29ya2luZyBjb3B5KQpAQCAtNDg1Niw5ICs0ODU2LDkgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50
YXRpb24KICAgICB9IGVsc2UgewogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBzdGF0
aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsICR7
Y2xhc3NOYW1lfT4gfHwgISR7Y2xhc3NOYW1lfTo6bmVlZHNEZXN0cnVjdGlvbik7XG4iKTsKICAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vf
b2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCAke2NsYXNzTmFtZX0+KVxuIik7Ci0gICAg
ICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvciR7aW50
ZXJmYWNlTmFtZX0gPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2
bS5oZWFwLCAqdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLCAke2NsYXNzTmFtZX0p
O1xuIik7CisgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICBzcGFjZXMubV9zdWJz
cGFjZUZvciR7aW50ZXJmYWNlTmFtZX0gPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VC
U1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwg
JHtjbGFzc05hbWV9KTtcbiIpOwogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBlbHNl
XG4iKTsKLSAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIHNwYWNlcy5tX3N1YnNw
YWNlRm9yJHtpbnRlcmZhY2VOYW1lfSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJT
UEFDRV9JTklUKHZtLmhlYXAsICp2bS5jZWxsSGVhcENlbGxUeXBlLCAke2NsYXNzTmFtZX0pO1xu
Iik7CisgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICBzcGFjZXMubV9zdWJzcGFj
ZUZvciR7aW50ZXJmYWNlTmFtZX0gPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BB
Q0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCksICR7Y2xhc3NOYW1lfSk7XG4i
KTsKICAgICB9CiAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgYXV0byogc3BhY2UgPSBzcGFj
ZXMubV9zdWJzcGFjZUZvciR7aW50ZXJmYWNlTmFtZX0uZ2V0KCk7XG4iKTsKICAgICBwdXNoKEBp
bXBsQ29udGVudCwgIklHTk9SRV9XQVJOSU5HU19CRUdJTihcInVucmVhY2hhYmxlLWNvZGVcIilc
biIpOwpAQCAtNjczMSw5ICs2NzMxLDkgQEAgcHVibGljOgogICAgICAgICAgICAgcmV0dXJuIHNw
YWNlOwogICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0
cnVjdGlibGVPYmplY3QsICR7aXRlcmF0b3JOYW1lfT4gfHwgISR7aXRlcmF0b3JOYW1lfTo6bmVl
ZHNEZXN0cnVjdGlvbik7CiAgICAgICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8
SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgJHtpdGVyYXRvck5hbWV9PikKLSAgICAgICAgICAg
IHNwYWNlcy5tX3N1YnNwYWNlRm9yJHtpdGVyYXRvck5hbWV9ID0gbWFrZVVuaXF1ZTxJc29TdWJz
cGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmRlc3RydWN0aWJsZU9iamVjdEhl
YXBDZWxsVHlwZS5nZXQoKSwgJHtpdGVyYXRvck5hbWV9KTsKKyAgICAgICAgICAgIHNwYWNlcy5t
X3N1YnNwYWNlRm9yJHtpdGVyYXRvck5hbWV9ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNP
X1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBl
KCksICR7aXRlcmF0b3JOYW1lfSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHNwYWNlcy5t
X3N1YnNwYWNlRm9yJHtpdGVyYXRvck5hbWV9ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNP
X1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmNlbGxIZWFwQ2VsbFR5cGUsICR7aXRlcmF0b3JO
YW1lfSk7CisgICAgICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvciR7aXRlcmF0b3JOYW1lfSA9
IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNl
bGxIZWFwQ2VsbFR5cGUoKSwgJHtpdGVyYXRvck5hbWV9KTsKICAgICAgICAgYXV0byogc3BhY2Ug
PSBzcGFjZXMubV9zdWJzcGFjZUZvciR7aXRlcmF0b3JOYW1lfS5nZXQoKTsKIElHTk9SRV9XQVJO
SU5HU19CRUdJTihcInVucmVhY2hhYmxlLWNvZGVcIikKIElHTk9SRV9XQVJOSU5HU19CRUdJTihc
InRhdXRvbG9naWNhbC1jb21wYXJlXCIpCkBAIC03NTI5LDcgKzc1MjksNyBAQCBzdWIgR2VuZXJh
dGVQcm90b3R5cGVEZWNsYXJhdGlvbgogICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBzdGF0
aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pXG4iKTsKICAgICBw
dXNoKEAkb3V0cHV0QXJyYXksICIgICAge1xuIik7CiAgICAgcHVzaChAJG91dHB1dEFycmF5LCAi
ICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRSgke3Byb3RvdHlwZUNs
YXNzTmFtZX0sIEJhc2UpO1xuIik7Ci0gICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgICAgICBy
ZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7XG4iKTsKKyAgICBwdXNoKEAkb3V0cHV0QXJyYXks
ICIgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpO1xuIik7CiAgICAgcHVzaChA
JG91dHB1dEFycmF5LCAiICAgIH1cbiIpOwogCiAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAg
IHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6
OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpXG4i
KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU0RPTVdp
bmRvdy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU0RPTVdpbmRvdy5oCShyZXZpc2lvbiAyODYwNDMpCisrKyBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNET01XaW5kb3cuaAkod29ya2luZyBjb3B5KQpAQCAt
ODUsNyArODUsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNw
YWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VC
U1BBQ0VfU0hBUkFCTEUoSlNET01XaW5kb3dQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1
cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RT
cGFjZSgpOwogICAgIH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVy
ZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpT
VmFsdWUgcHJvdG90eXBlKQogICAgIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTRGVkaWNhdGVkV29y
a2VyR2xvYmFsU2NvcGUuaAkocmV2aXNpb24gMjg2MDQzKQorKysgU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUuaAkod29y
a2luZyBjb3B5KQpAQCAtODIsNyArODIsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNv
U3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElD
X0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29w
ZVByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsK
KyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRp
YyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpJ
bmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTRXhwb3NlZFN0
YXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU0V4cG9zZWRTdGFyLmNwcAkocmV2aXNpb24gMjg2MDQzKQorKysgU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTRXhwb3NlZFN0YXIuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC03MSw3ICs3MSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFj
ZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJU
X0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU0V4cG9zZWRTdGFyUHJvdG90eXBlLCBCYXNlKTsKLSAg
ICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBs
YWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVh
dGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC0yMzYsOSArMjM2LDkgQEAgSlND
OjpJc29TdWJzcGFjZSogSlNFeHBvc2VkU3Rhcjo6c3Vic3BhYwogICAgICAgICByZXR1cm4gc3Bh
Y2U7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3Rp
YmxlT2JqZWN0LCBKU0V4cG9zZWRTdGFyPiB8fCAhSlNFeHBvc2VkU3Rhcjo6bmVlZHNEZXN0cnVj
dGlvbik7CiAgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1
Y3RpYmxlT2JqZWN0LCBKU0V4cG9zZWRTdGFyPikKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VG
b3JFeHBvc2VkU3RhciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklU
KHZtLmhlYXAsICp2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUsIEpTRXhwb3NlZFN0
YXIpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvckV4cG9zZWRTdGFyID0gbWFrZVVuaXF1
ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxl
T2JqZWN0SGVhcENlbGxUeXBlKCksIEpTRXhwb3NlZFN0YXIpOwogICAgIGVsc2UKLSAgICAgICAg
c3BhY2VzLm1fc3Vic3BhY2VGb3JFeHBvc2VkU3RhciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+
IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5jZWxsSGVhcENlbGxUeXBlLCBKU0V4cG9z
ZWRTdGFyKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JFeHBvc2VkU3RhciA9IG1ha2VV
bmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFw
Q2VsbFR5cGUoKSwgSlNFeHBvc2VkU3Rhcik7CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9z
dWJzcGFjZUZvckV4cG9zZWRTdGFyLmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJl
YWNoYWJsZS1jb2RlIikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBh
cmUiKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTRXhw
b3NlZFRvV29ya2VyQW5kV2luZG93LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNFeHBvc2VkVG9Xb3JrZXJBbmRXaW5kb3cuY3BwCShy
ZXZpc2lvbiAyODYwNDMpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNFeHBvc2VkVG9Xb3JrZXJBbmRXaW5kb3cuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTIs
NyArMTEyLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFj
ZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQ
QUNFX1NIQVJBQkxFKEpTRXhwb3NlZFRvV29ya2VyQW5kV2luZG93UHJvdG90eXBlLCBCYXNlKTsK
LSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZt
LnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBj
cmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC0yNTIsOSArMjUyLDkgQEAg
SlNDOjpJc29TdWJzcGFjZSogSlNFeHBvc2VkVG9Xb3JrZXJBbmRXaQogICAgICAgICByZXR1cm4g
c3BhY2U7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1
Y3RpYmxlT2JqZWN0LCBKU0V4cG9zZWRUb1dvcmtlckFuZFdpbmRvdz4gfHwgIUpTRXhwb3NlZFRv
V29ya2VyQW5kV2luZG93OjpuZWVkc0Rlc3RydWN0aW9uKTsKICAgICBpZiBjb25zdGV4cHIgKHN0
ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTRXhwb3NlZFRvV29y
a2VyQW5kV2luZG93PikKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JFeHBvc2VkVG9Xb3Jr
ZXJBbmRXaW5kb3cgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2
bS5oZWFwLCAqdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLCBKU0V4cG9zZWRUb1dv
cmtlckFuZFdpbmRvdyk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yRXhwb3NlZFRvV29y
a2VyQW5kV2luZG93ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQo
dm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCksIEpTRXhwb3NlZFRv
V29ya2VyQW5kV2luZG93KTsKICAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9y
RXhwb3NlZFRvV29ya2VyQW5kV2luZG93ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NV
QlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmNlbGxIZWFwQ2VsbFR5cGUsIEpTRXhwb3NlZFRvV29y
a2VyQW5kV2luZG93KTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JFeHBvc2VkVG9Xb3Jr
ZXJBbmRXaW5kb3cgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2
bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCksIEpTRXhwb3NlZFRvV29ya2VyQW5kV2luZG93
KTsKICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yRXhwb3NlZFRvV29ya2Vy
QW5kV2luZG93LmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2Rl
IikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRleDog
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTUGFpbnRXb3JrbGV0R2xv
YmFsU2NvcGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNQYWludFdvcmtsZXRHbG9iYWxTY29wZS5oCShyZXZpc2lvbiAyODYwNDMpCisr
KyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNQYWludFdvcmtsZXRH
bG9iYWxTY29wZS5oCSh3b3JraW5nIGNvcHkpCkBAIC04Miw3ICs4Miw3IEBAIHB1YmxpYzoKICAg
ICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAg
ewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1BhaW50V29y
a2xldEdsb2JhbFNjb3BlUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFp
bk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAg
ICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYg
dm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3Rv
dHlwZSkKICAgICB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUu
aAkocmV2aXNpb24gMjg2MDQzKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTU2VydmljZVdvcmtlckdsb2JhbFNjb3BlLmgJKHdvcmtpbmcgY29weSkKQEAgLTgy
LDcgKzgyLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFj
ZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQ
QUNFX1NIQVJBQkxFKEpTU2VydmljZVdvcmtlckdsb2JhbFNjb3BlUHJvdG90eXBlLCBCYXNlKTsK
LSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZt
LnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBj
cmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNTaGFyZWRXb3JrZXJHbG9iYWxTY29wZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1No
YXJlZFdvcmtlckdsb2JhbFNjb3BlLmgJKHJldmlzaW9uIDI4NjA0MykKKysrIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1NoYXJlZFdvcmtlckdsb2JhbFNjb3BlLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTgyLDcgKzgyLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6
Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNU
QVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTU2hhcmVkV29ya2VyR2xvYmFsU2Nv
cGVQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7
CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KICAgICBzdGF0
aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDRVJl
YWN0aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdENFUmVhY3Rpb25zLmNwcAkocmV2aXNpb24gMjg2MDQzKQorKysgU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENFUmVhY3Rpb25zLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtOTEsNyArOTEsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpT
Qzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAg
U1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0Q0VSZWFjdGlvbnNQcm90
b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAg
ICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KICAgICBzdGF0aWMgSlND
OjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKQEAgLTQz
OCw5ICs0MzgsOSBAQCBKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3RDRVJlYWN0aW9uczo6c3ViCiAg
ICAgICAgIHJldHVybiBzcGFjZTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92
PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdENFUmVhY3Rpb25zPiB8fCAhSlNUZXN0
Q0VSZWFjdGlvbnM6Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjpp
c19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0Q0VSZWFjdGlvbnM+
KQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RDRVJlYWN0aW9ucyA9IG1ha2VVbmlx
dWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5kZXN0cnVjdGli
bGVPYmplY3RIZWFwQ2VsbFR5cGUsIEpTVGVzdENFUmVhY3Rpb25zKTsKKyAgICAgICAgc3BhY2Vz
Lm1fc3Vic3BhY2VGb3JUZXN0Q0VSZWFjdGlvbnMgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJ
U09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5
cGUoKSwgSlNUZXN0Q0VSZWFjdGlvbnMpOwogICAgIGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vi
c3BhY2VGb3JUZXN0Q0VSZWFjdGlvbnMgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VC
U1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uY2VsbEhlYXBDZWxsVHlwZSwgSlNUZXN0Q0VSZWFjdGlv
bnMpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RDRVJlYWN0aW9ucyA9IG1ha2VV
bmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFw
Q2VsbFR5cGUoKSwgSlNUZXN0Q0VSZWFjdGlvbnMpOwogICAgIGF1dG8qIHNwYWNlID0gc3BhY2Vz
Lm1fc3Vic3BhY2VGb3JUZXN0Q0VSZWFjdGlvbnMuZ2V0KCk7CiBJR05PUkVfV0FSTklOR1NfQkVH
SU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2lj
YWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENFUmVhY3Rpb25zU3RyaW5n
aWZpZXIuY3BwCShyZXZpc2lvbiAyODYwNDMpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllci5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTc1LDcgKzc1LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNw
YWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NF
UlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXJQcm90
b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAg
ICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KICAgICBzdGF0aWMgSlND
OjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKQEAgLTI2
NCw5ICsyNjQsOSBAQCBKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3RDRVJlYWN0aW9uc1N0cmluCiAg
ICAgICAgIHJldHVybiBzcGFjZTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92
PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXI+
IHx8ICFKU1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyOjpuZWVkc0Rlc3RydWN0aW9uKTsKICAg
ICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmpl
Y3QsIEpTVGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXI+KQotICAgICAgICBzcGFjZXMubV9zdWJz
cGFjZUZvclRlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFj
ZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBD
ZWxsVHlwZSwgSlNUZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllcik7CisgICAgICAgIHNwYWNlcy5t
X3N1YnNwYWNlRm9yVGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXIgPSBtYWtlVW5pcXVlPElzb1N1
YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RI
ZWFwQ2VsbFR5cGUoKSwgSlNUZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllcik7CiAgICAgZWxzZQot
ICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyID0g
bWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmNl
bGxIZWFwQ2VsbFR5cGUsIEpTVGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXIpOworICAgICAgICBz
cGFjZXMubV9zdWJzcGFjZUZvclRlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyID0gbWFrZVVuaXF1
ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxs
VHlwZSgpLCBKU1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyKTsKICAgICBhdXRvKiBzcGFjZSA9
IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXIuZ2V0KCk7CiBJ
R05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdT
X0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2FsbFRyYWNlci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENhbGxUcmFjZXIu
Y3BwCShyZXZpc2lvbiAyODYwNDMpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0Q2FsbFRyYWNlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk3LDcgKzk3
LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihK
U0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NI
QVJBQkxFKEpTVGVzdENhbGxUcmFjZXJQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4g
JnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFj
ZSgpOwogICAgIH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShK
U0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFs
dWUgcHJvdG90eXBlKQogICAgIHsKQEAgLTUxMyw5ICs1MTMsOSBAQCBKU0M6Oklzb1N1YnNwYWNl
KiBKU1Rlc3RDYWxsVHJhY2VyOjpzdWJzCiAgICAgICAgIHJldHVybiBzcGFjZTsKICAgICBzdGF0
aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpT
VGVzdENhbGxUcmFjZXI+IHx8ICFKU1Rlc3RDYWxsVHJhY2VyOjpuZWVkc0Rlc3RydWN0aW9uKTsK
ICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVP
YmplY3QsIEpTVGVzdENhbGxUcmFjZXI+KQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRl
c3RDYWxsVHJhY2VyID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQo
dm0uaGVhcCwgKnZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSwgSlNUZXN0Q2FsbFRy
YWNlcik7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdENhbGxUcmFjZXIgPSBtYWtl
VW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVj
dGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0Q2FsbFRyYWNlcik7CiAgICAgZWxzZQot
ICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RDYWxsVHJhY2VyID0gbWFrZVVuaXF1ZTxJ
c29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmNlbGxIZWFwQ2VsbFR5
cGUsIEpTVGVzdENhbGxUcmFjZXIpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RD
YWxsVHJhY2VyID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0u
aGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RDYWxsVHJhY2VyKTsKICAgICBhdXRv
KiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdENhbGxUcmFjZXIuZ2V0KCk7CiBJR05P
UkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JF
R0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3IuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3Rvci5jcHAJKHJldmlzaW9uIDI4NjA0MykK
KysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDbGFzc1dp
dGhKU0J1aWx0aW5Db25zdHJ1Y3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY0LDcgKzY0LDcg
QEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6
OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJB
QkxFKEpTVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yUHJvdG90eXBlLCBCYXNlKTsK
LSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZt
LnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBj
cmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC0xNzYsOSArMTc2LDkgQEAg
SlNDOjpJc29TdWJzcGFjZSogSlNUZXN0Q2xhc3NXaXRoSlNCdWlsdAogICAgICAgICByZXR1cm4g
c3BhY2U7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1
Y3RpYmxlT2JqZWN0LCBKU1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3Rvcj4gfHwgIUpT
VGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yOjpuZWVkc0Rlc3RydWN0aW9uKTsKICAg
ICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmpl
Y3QsIEpTVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yPikKLSAgICAgICAgc3BhY2Vz
Lm1fc3Vic3BhY2VGb3JUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3IgPSBtYWtlVW5p
cXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uZGVzdHJ1Y3Rp
YmxlT2JqZWN0SGVhcENlbGxUeXBlLCBKU1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3Rv
cik7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNv
bnN0cnVjdG9yID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0u
aGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCksIEpTVGVzdENsYXNzV2l0
aEpTQnVpbHRpbkNvbnN0cnVjdG9yKTsKICAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNw
YWNlRm9yVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yID0gbWFrZVVuaXF1ZTxJc29T
dWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmNlbGxIZWFwQ2VsbFR5cGUs
IEpTVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yKTsKKyAgICAgICAgc3BhY2VzLm1f
c3Vic3BhY2VGb3JUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3IgPSBtYWtlVW5pcXVl
PElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxU
eXBlKCksIEpTVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yKTsKICAgICBhdXRvKiBz
cGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVj
dG9yLmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKIElH
Tk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRleDogU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENvbmRpdGlvbmFsSW5jbHVk
ZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzLmNwcAkocmV2aXNpb24gMjg2MDQzKQorKysg
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENvbmRpdGlvbmFs
SW5jbHVkZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjcsNyArMTI3LDcgQEAgcHVibGljOgog
ICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKICAg
ICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdENv
bmRpdGlvbmFsSW5jbHVkZXNQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBs
YWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwog
ICAgIH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZN
JiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJv
dG90eXBlKQogICAgIHsKQEAgLTc4OSw5ICs3ODksOSBAQCBKU0M6Oklzb1N1YnNwYWNlKiBKU1Rl
c3RDb25kaXRpb25hbEluY2x1CiAgICAgICAgIHJldHVybiBzcGFjZTsKICAgICBzdGF0aWNfYXNz
ZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdENv
bmRpdGlvbmFsSW5jbHVkZXM+IHx8ICFKU1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzOjpuZWVkc0Rl
c3RydWN0aW9uKTsKICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNE
ZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdENvbmRpdGlvbmFsSW5jbHVkZXM+KQotICAgICAgICBz
cGFjZXMubV9zdWJzcGFjZUZvclRlc3RDb25kaXRpb25hbEluY2x1ZGVzID0gbWFrZVVuaXF1ZTxJ
c29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmRlc3RydWN0aWJsZU9i
amVjdEhlYXBDZWxsVHlwZSwgSlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlcyk7CisgICAgICAgIHNw
YWNlcy5tX3N1YnNwYWNlRm9yVGVzdENvbmRpdGlvbmFsSW5jbHVkZXMgPSBtYWtlVW5pcXVlPElz
b1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmpl
Y3RIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlcyk7CiAgICAgZWxzZQot
ICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RDb25kaXRpb25hbEluY2x1ZGVzID0gbWFr
ZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmNlbGxI
ZWFwQ2VsbFR5cGUsIEpTVGVzdENvbmRpdGlvbmFsSW5jbHVkZXMpOworICAgICAgICBzcGFjZXMu
bV9zdWJzcGFjZUZvclRlc3RDb25kaXRpb25hbEluY2x1ZGVzID0gbWFrZVVuaXF1ZTxJc29TdWJz
cGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBK
U1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzKTsKICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1
YnNwYWNlRm9yVGVzdENvbmRpdGlvbmFsSW5jbHVkZXMuZ2V0KCk7CiBJR05PUkVfV0FSTklOR1Nf
QkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xv
Z2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0Q29uZGl0aW9uYWxseVJlYWRXcml0ZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENvbmRpdGlvbmFsbHlS
ZWFkV3JpdGUuY3BwCShyZXZpc2lvbiAyODYwNDMpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q29uZGl0aW9uYWxseVJlYWRXcml0ZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTk4LDcgKzk4LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1
YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19B
U1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdENvbmRpdGlvbmFsbHlSZWFkV3JpdGVQ
cm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7Cisg
ICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KICAgICBzdGF0aWMg
SlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKQEAg
LTYxMSw5ICs2MTEsOSBAQCBKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3RDb25kaXRpb25hbGx5UmVh
CiAgICAgICAgIHJldHVybiBzcGFjZTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9v
Zl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdENvbmRpdGlvbmFsbHlSZWFkV3Jp
dGU+IHx8ICFKU1Rlc3RDb25kaXRpb25hbGx5UmVhZFdyaXRlOjpuZWVkc0Rlc3RydWN0aW9uKTsK
ICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVP
YmplY3QsIEpTVGVzdENvbmRpdGlvbmFsbHlSZWFkV3JpdGU+KQotICAgICAgICBzcGFjZXMubV9z
dWJzcGFjZUZvclRlc3RDb25kaXRpb25hbGx5UmVhZFdyaXRlID0gbWFrZVVuaXF1ZTxJc29TdWJz
cGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmRlc3RydWN0aWJsZU9iamVjdEhl
YXBDZWxsVHlwZSwgSlNUZXN0Q29uZGl0aW9uYWxseVJlYWRXcml0ZSk7CisgICAgICAgIHNwYWNl
cy5tX3N1YnNwYWNlRm9yVGVzdENvbmRpdGlvbmFsbHlSZWFkV3JpdGUgPSBtYWtlVW5pcXVlPElz
b1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmpl
Y3RIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0Q29uZGl0aW9uYWxseVJlYWRXcml0ZSk7CiAgICAgZWxz
ZQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RDb25kaXRpb25hbGx5UmVhZFdyaXRl
ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZt
LmNlbGxIZWFwQ2VsbFR5cGUsIEpTVGVzdENvbmRpdGlvbmFsbHlSZWFkV3JpdGUpOworICAgICAg
ICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RDb25kaXRpb25hbGx5UmVhZFdyaXRlID0gbWFrZVVu
aXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBD
ZWxsVHlwZSgpLCBKU1Rlc3RDb25kaXRpb25hbGx5UmVhZFdyaXRlKTsKICAgICBhdXRvKiBzcGFj
ZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdENvbmRpdGlvbmFsbHlSZWFkV3JpdGUuZ2V0KCk7
CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5J
TkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RE9NSklULmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RE9NSklULmNwcAko
cmV2aXNpb24gMjg2MDQzKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdERPTUpJVC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ4MSw3ICs0ODEsNyBAQCBw
dWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0m
IHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUo
SlNUZXN0RE9NSklUUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9i
amVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9
CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0s
IEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlw
ZSkKICAgICB7CkBAIC0xMjUyLDkgKzEyNTIsOSBAQCBKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3RE
T01KSVQ6OnN1YnNwYWNlCiAgICAgICAgIHJldHVybiBzcGFjZTsKICAgICBzdGF0aWNfYXNzZXJ0
KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdERPTUpJ
VD4gfHwgIUpTVGVzdERPTUpJVDo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3RleHBy
IChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RET01K
SVQ+KQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RET01KSVQgPSBtYWtlVW5pcXVl
PElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uZGVzdHJ1Y3RpYmxl
T2JqZWN0SGVhcENlbGxUeXBlLCBKU1Rlc3RET01KSVQpOworICAgICAgICBzcGFjZXMubV9zdWJz
cGFjZUZvclRlc3RET01KSVQgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0Vf
SU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0
RE9NSklUKTsKICAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdERPTUpJ
VCA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2
bS5jZWxsSGVhcENlbGxUeXBlLCBKU1Rlc3RET01KSVQpOworICAgICAgICBzcGFjZXMubV9zdWJz
cGFjZUZvclRlc3RET01KSVQgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0Vf
SU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCksIEpTVGVzdERPTUpJVCk7CiAgICAg
YXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RET01KSVQuZ2V0KCk7CiBJR05P
UkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JF
R0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RGVmYXVsdFRvSlNPTi5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERlZmF1bHRUb0pT
T04uY3BwCShyZXZpc2lvbiAyODYwNDMpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0RGVmYXVsdFRvSlNPTi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEy
NCw3ICsxMjQsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNw
YWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VC
U1BBQ0VfU0hBUkFCTEUoSlNUZXN0RGVmYXVsdFRvSlNPTlByb3RvdHlwZSwgQmFzZSk7Ci0gICAg
ICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFp
bk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRl
U3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAtODA4LDkgKzgwOCw5IEBAIEpTQzo6
SXNvU3Vic3BhY2UqIEpTVGVzdERlZmF1bHRUb0pTT046OnMKICAgICAgICAgcmV0dXJuIHNwYWNl
OwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJs
ZU9iamVjdCwgSlNUZXN0RGVmYXVsdFRvSlNPTj4gfHwgIUpTVGVzdERlZmF1bHRUb0pTT046Om5l
ZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlND
OjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0RGVmYXVsdFRvSlNPTj4pCi0gICAgICAgIHNw
YWNlcy5tX3N1YnNwYWNlRm9yVGVzdERlZmF1bHRUb0pTT04gPSBtYWtlVW5pcXVlPElzb1N1YnNw
YWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVh
cENlbGxUeXBlLCBKU1Rlc3REZWZhdWx0VG9KU09OKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3Bh
Y2VGb3JUZXN0RGVmYXVsdFRvSlNPTiA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJT
UEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBK
U1Rlc3REZWZhdWx0VG9KU09OKTsKICAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNl
Rm9yVGVzdERlZmF1bHRUb0pTT04gPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BB
Q0VfSU5JVCh2bS5oZWFwLCAqdm0uY2VsbEhlYXBDZWxsVHlwZSwgSlNUZXN0RGVmYXVsdFRvSlNP
Tik7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdERlZmF1bHRUb0pTT04gPSBtYWtl
VW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVh
cENlbGxUeXBlKCksIEpTVGVzdERlZmF1bHRUb0pTT04pOwogICAgIGF1dG8qIHNwYWNlID0gc3Bh
Y2VzLm1fc3Vic3BhY2VGb3JUZXN0RGVmYXVsdFRvSlNPTi5nZXQoKTsKIElHTk9SRV9XQVJOSU5H
U19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRv
bG9naWNhbC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3REZWZh
dWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWQuY3BwCShyZXZpc2lvbiAyODYwNDMpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RGVmYXVsdFRvSlNPTkZp
bHRlcmVkQnlFeHBvc2VkLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzUsNyArNzUsNyBAQCBwdWJs
aWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZt
KQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNU
ZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkUHJvdG90eXBlLCBCYXNlKTsKLSAgICAg
ICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWlu
T2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVT
dHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
SlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC0yNzAsOSArMjcwLDkgQEAgSlNDOjpJ
c29TdWJzcGFjZSogSlNUZXN0RGVmYXVsdFRvSlNPTkZpbAogICAgICAgICByZXR1cm4gc3BhY2U7
CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxl
T2JqZWN0LCBKU1Rlc3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWQ+IHx8ICFKU1Rlc3RE
ZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWQ6Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlm
IGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwg
SlNUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkPikKLSAgICAgICAgc3BhY2VzLm1f
c3Vic3BhY2VGb3JUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkID0gbWFrZVVuaXF1
ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmRlc3RydWN0aWJs
ZU9iamVjdEhlYXBDZWxsVHlwZSwgSlNUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2Vk
KTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVk
QnlFeHBvc2VkID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0u
aGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCksIEpTVGVzdERlZmF1bHRU
b0pTT05GaWx0ZXJlZEJ5RXhwb3NlZCk7CiAgICAgZWxzZQotICAgICAgICBzcGFjZXMubV9zdWJz
cGFjZUZvclRlc3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWQgPSBtYWtlVW5pcXVlPElz
b1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uY2VsbEhlYXBDZWxsVHlw
ZSwgSlNUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkKTsKKyAgICAgICAgc3BhY2Vz
Lm1fc3Vic3BhY2VGb3JUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkID0gbWFrZVVu
aXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBD
ZWxsVHlwZSgpLCBKU1Rlc3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWQpOwogICAgIGF1
dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVk
QnlFeHBvc2VkLmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2Rl
IikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRleDog
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERlZmF1bHRUb0pT
T05JbmRpcmVjdEluaGVyaXRhbmNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RGVmYXVsdFRvSlNPTkluZGlyZWN0SW5oZXJp
dGFuY2UuY3BwCShyZXZpc2lvbiAyODYwNDMpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0RGVmYXVsdFRvSlNPTkluZGlyZWN0SW5oZXJpdGFuY2UuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC02Miw3ICs2Miw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlND
OjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBT
VEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3REZWZhdWx0VG9KU09OSW5k
aXJlY3RJbmhlcml0YW5jZVByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxh
aW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAg
ICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0m
IHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90
b3R5cGUpCiAgICAgewpAQCAtMTYyLDkgKzE2Miw5IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVz
dERlZmF1bHRUb0pTT05JbmQKICAgICAgICAgcmV0dXJuIHNwYWNlOwogICAgIHN0YXRpY19hc3Nl
cnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0RGVm
YXVsdFRvSlNPTkluZGlyZWN0SW5oZXJpdGFuY2U+IHx8ICFKU1Rlc3REZWZhdWx0VG9KU09OSW5k
aXJlY3RJbmhlcml0YW5jZTo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3RleHByIChz
dGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3REZWZhdWx0
VG9KU09OSW5kaXJlY3RJbmhlcml0YW5jZT4pCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9y
VGVzdERlZmF1bHRUb0pTT05JbmRpcmVjdEluaGVyaXRhbmNlID0gbWFrZVVuaXF1ZTxJc29TdWJz
cGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmRlc3RydWN0aWJsZU9iamVjdEhl
YXBDZWxsVHlwZSwgSlNUZXN0RGVmYXVsdFRvSlNPTkluZGlyZWN0SW5oZXJpdGFuY2UpOworICAg
ICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3REZWZhdWx0VG9KU09OSW5kaXJlY3RJbmhlcml0
YW5jZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAs
IHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3REZWZhdWx0VG9KU09O
SW5kaXJlY3RJbmhlcml0YW5jZSk7CiAgICAgZWxzZQotICAgICAgICBzcGFjZXMubV9zdWJzcGFj
ZUZvclRlc3REZWZhdWx0VG9KU09OSW5kaXJlY3RJbmhlcml0YW5jZSA9IG1ha2VVbmlxdWU8SXNv
U3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5jZWxsSGVhcENlbGxUeXBl
LCBKU1Rlc3REZWZhdWx0VG9KU09OSW5kaXJlY3RJbmhlcml0YW5jZSk7CisgICAgICAgIHNwYWNl
cy5tX3N1YnNwYWNlRm9yVGVzdERlZmF1bHRUb0pTT05JbmRpcmVjdEluaGVyaXRhbmNlID0gbWFr
ZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhl
YXBDZWxsVHlwZSgpLCBKU1Rlc3REZWZhdWx0VG9KU09OSW5kaXJlY3RJbmhlcml0YW5jZSk7CiAg
ICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3REZWZhdWx0VG9KU09OSW5k
aXJlY3RJbmhlcml0YW5jZS5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFi
bGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3REZWZh
dWx0VG9KU09OSW5oZXJpdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERlZmF1bHRUb0pTT05Jbmhlcml0LmNwcAkocmV2aXNp
b24gMjg2MDQzKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdERlZmF1bHRUb0pTT05Jbmhlcml0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtODksNyArODks
NyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpT
Qzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hB
UkFCTEUoSlNUZXN0RGVmYXVsdFRvSlNPTkluaGVyaXRQcm90b3R5cGUsIEJhc2UpOwotICAgICAg
ICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5P
YmplY3RTcGFjZSgpOwogICAgIH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0
cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBK
U0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKQEAgLTI5Miw5ICsyOTIsOSBAQCBKU0M6Oklz
b1N1YnNwYWNlKiBKU1Rlc3REZWZhdWx0VG9KU09OSW5oCiAgICAgICAgIHJldHVybiBzcGFjZTsK
ICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVP
YmplY3QsIEpTVGVzdERlZmF1bHRUb0pTT05Jbmhlcml0PiB8fCAhSlNUZXN0RGVmYXVsdFRvSlNP
TkluaGVyaXQ6Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19i
YXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0RGVmYXVsdFRvSlNPTklu
aGVyaXQ+KQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3REZWZhdWx0VG9KU09OSW5o
ZXJpdCA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAs
ICp2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUsIEpTVGVzdERlZmF1bHRUb0pTT05J
bmhlcml0KTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0RGVmYXVsdFRvSlNPTklu
aGVyaXQgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFw
LCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0RGVmYXVsdFRvSlNP
TkluaGVyaXQpOwogICAgIGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0RGVm
YXVsdFRvSlNPTkluaGVyaXQgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0Vf
SU5JVCh2bS5oZWFwLCAqdm0uY2VsbEhlYXBDZWxsVHlwZSwgSlNUZXN0RGVmYXVsdFRvSlNPTklu
aGVyaXQpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3REZWZhdWx0VG9KU09OSW5o
ZXJpdCA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAs
IHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0RGVmYXVsdFRvSlNPTkluaGVyaXQpOwogICAg
IGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0RGVmYXVsdFRvSlNPTkluaGVy
aXQuZ2V0KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdO
T1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RGVmYXVsdFRvSlNPTkluaGVy
aXRGaW5hbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdERlZmF1bHRUb0pTT05Jbmhlcml0RmluYWwuY3BwCShyZXZpc2lvbiAy
ODYwNDMpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
RGVmYXVsdFRvSlNPTkluaGVyaXRGaW5hbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTkxLDcgKzkx
LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihK
U0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NI
QVJBQkxFKEpTVGVzdERlZmF1bHRUb0pTT05Jbmhlcml0RmluYWxQcm90b3R5cGUsIEJhc2UpOwot
ICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0u
cGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNy
ZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKQEAgLTMzMiw5ICszMzIsOSBAQCBK
U0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3REZWZhdWx0VG9KU09OSW5oCiAgICAgICAgIHJldHVybiBz
cGFjZTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVj
dGlibGVPYmplY3QsIEpTVGVzdERlZmF1bHRUb0pTT05Jbmhlcml0RmluYWw+IHx8ICFKU1Rlc3RE
ZWZhdWx0VG9KU09OSW5oZXJpdEZpbmFsOjpuZWVkc0Rlc3RydWN0aW9uKTsKICAgICBpZiBjb25z
dGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVz
dERlZmF1bHRUb0pTT05Jbmhlcml0RmluYWw+KQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZv
clRlc3REZWZhdWx0VG9KU09OSW5oZXJpdEZpbmFsID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4g
SVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxs
VHlwZSwgSlNUZXN0RGVmYXVsdFRvSlNPTkluaGVyaXRGaW5hbCk7CisgICAgICAgIHNwYWNlcy5t
X3N1YnNwYWNlRm9yVGVzdERlZmF1bHRUb0pTT05Jbmhlcml0RmluYWwgPSBtYWtlVW5pcXVlPElz
b1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmpl
Y3RIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0RGVmYXVsdFRvSlNPTkluaGVyaXRGaW5hbCk7CiAgICAg
ZWxzZQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3REZWZhdWx0VG9KU09OSW5oZXJp
dEZpbmFsID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVh
cCwgKnZtLmNlbGxIZWFwQ2VsbFR5cGUsIEpTVGVzdERlZmF1bHRUb0pTT05Jbmhlcml0RmluYWwp
OworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3REZWZhdWx0VG9KU09OSW5oZXJpdEZp
bmFsID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwg
dm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3REZWZhdWx0VG9KU09OSW5oZXJpdEZpbmFsKTsK
ICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdERlZmF1bHRUb0pTT05J
bmhlcml0RmluYWwuZ2V0KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNv
ZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RGVsZWdhdGVU
b1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0
aWNBdHRyaWJ1dGUuY3BwCShyZXZpc2lvbiAyODYwNDMpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJp
YnV0ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcwLDcgKzcwLDcgQEAgcHVibGljOgogICAgIHN0
YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAg
ICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdERlbGVnYXRl
VG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGVQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1
cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RT
cGFjZSgpOwogICAgIH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVy
ZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpT
VmFsdWUgcHJvdG90eXBlKQogICAgIHsKQEAgLTI0Niw5ICsyNDYsOSBAQCBKU0M6Oklzb1N1YnNw
YWNlKiBKU1Rlc3REZWxlZ2F0ZVRvU2hhcmVkCiAgICAgICAgIHJldHVybiBzcGFjZTsKICAgICBz
dGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3Qs
IEpTVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGU+IHx8ICFKU1Rlc3REZWxl
Z2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlOjpuZWVkc0Rlc3RydWN0aW9uKTsKICAgICBp
ZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3Qs
IEpTVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGU+KQotICAgICAgICBzcGFj
ZXMubV9zdWJzcGFjZUZvclRlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlID0g
bWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmRl
c3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSwgSlNUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRo
ZXRpY0F0dHJpYnV0ZSk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdERlbGVnYXRl
VG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGUgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09f
U1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUo
KSwgSlNUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZSk7CiAgICAgZWxzZQot
ICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGlj
QXR0cmlidXRlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0u
aGVhcCwgKnZtLmNlbGxIZWFwQ2VsbFR5cGUsIEpTVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0
aWNBdHRyaWJ1dGUpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3REZWxlZ2F0ZVRv
U2hhcmVkU3ludGhldGljQXR0cmlidXRlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NV
QlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3REZWxlZ2F0
ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlKTsKICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5t
X3N1YnNwYWNlRm9yVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGUuZ2V0KCk7
CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5J
TkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RG9tYWluU2VjdXJpdHkuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3REb21h
aW5TZWN1cml0eS5jcHAJKHJldmlzaW9uIDI4NjA0MykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3REb21haW5TZWN1cml0eS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTgwLDcgKzgwLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNl
KiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRf
SVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdERvbWFpblNlY3VyaXR5UHJvdG90eXBlLCBCYXNl
KTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4g
JnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJl
KiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC0zMjAsOSArMzIwLDkg
QEAgSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0RG9tYWluU2VjdXJpdHk6OgogICAgICAgICByZXR1
cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVz
dHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3REb21haW5TZWN1cml0eT4gfHwgIUpTVGVzdERvbWFpblNl
Y3VyaXR5OjpuZWVkc0Rlc3RydWN0aW9uKTsKICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFz
ZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdERvbWFpblNlY3VyaXR5PikK
LSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0RG9tYWluU2VjdXJpdHkgPSBtYWtlVW5p
cXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uZGVzdHJ1Y3Rp
YmxlT2JqZWN0SGVhcENlbGxUeXBlLCBKU1Rlc3REb21haW5TZWN1cml0eSk7CisgICAgICAgIHNw
YWNlcy5tX3N1YnNwYWNlRm9yVGVzdERvbWFpblNlY3VyaXR5ID0gbWFrZVVuaXF1ZTxJc29TdWJz
cGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVh
cENlbGxUeXBlKCksIEpTVGVzdERvbWFpblNlY3VyaXR5KTsKICAgICBlbHNlCi0gICAgICAgIHNw
YWNlcy5tX3N1YnNwYWNlRm9yVGVzdERvbWFpblNlY3VyaXR5ID0gbWFrZVVuaXF1ZTxJc29TdWJz
cGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmNlbGxIZWFwQ2VsbFR5cGUsIEpT
VGVzdERvbWFpblNlY3VyaXR5KTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0RG9t
YWluU2VjdXJpdHkgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2
bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCksIEpTVGVzdERvbWFpblNlY3VyaXR5KTsKICAg
ICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdERvbWFpblNlY3VyaXR5Lmdl
dCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKIElHTk9SRV9X
QVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRleDogU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEVuYWJsZWRCeVNldHRpbmcuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RFbmFibGVkQnlTZXR0aW5nLmNwcAkocmV2aXNpb24gMjg2MDQzKQorKysgU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEVuYWJsZWRCeVNldHRpbmcuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC05Miw3ICs5Miw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJ
c29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFU
SUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3RFbmFibGVkQnlTZXR0aW5nUHJv
dG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAg
ICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpT
Qzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC00
NTksOSArNDU5LDkgQEAgSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0RW5hYmxlZEJ5U2V0dGluZwog
ICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2Zf
djxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RFbmFibGVkQnlTZXR0aW5nPiB8fCAh
SlNUZXN0RW5hYmxlZEJ5U2V0dGluZzo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3Rl
eHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RF
bmFibGVkQnlTZXR0aW5nPikKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0RW5hYmxl
ZEJ5U2V0dGluZyA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZt
LmhlYXAsICp2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUsIEpTVGVzdEVuYWJsZWRC
eVNldHRpbmcpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RFbmFibGVkQnlTZXR0
aW5nID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwg
dm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCksIEpTVGVzdEVuYWJsZWRCeVNldHRp
bmcpOwogICAgIGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0RW5hYmxlZEJ5
U2V0dGluZyA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhl
YXAsICp2bS5jZWxsSGVhcENlbGxUeXBlLCBKU1Rlc3RFbmFibGVkQnlTZXR0aW5nKTsKKyAgICAg
ICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0RW5hYmxlZEJ5U2V0dGluZyA9IG1ha2VVbmlxdWU8
SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5
cGUoKSwgSlNUZXN0RW5hYmxlZEJ5U2V0dGluZyk7CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMu
bV9zdWJzcGFjZUZvclRlc3RFbmFibGVkQnlTZXR0aW5nLmdldCgpOwogSUdOT1JFX1dBUk5JTkdT
X0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9s
b2dpY2FsLWNvbXBhcmUiKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdEVuYWJsZWRGb3JDb250ZXh0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RW5hYmxlZEZvckNvbnRleHQu
Y3BwCShyZXZpc2lvbiAyODYwNDMpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0RW5hYmxlZEZvckNvbnRleHQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02
Niw3ICs2Niw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3Bh
Y2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJT
UEFDRV9TSEFSQUJMRShKU1Rlc3RFbmFibGVkRm9yQ29udGV4dFByb3RvdHlwZSwgQmFzZSk7Ci0g
ICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5w
bGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3Jl
YXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAtMTg2LDkgKzE4Niw5IEBAIEpT
Qzo6SXNvU3Vic3BhY2UqIEpTVGVzdEVuYWJsZWRGb3JDb250ZXgKICAgICAgICAgcmV0dXJuIHNw
YWNlOwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0
aWJsZU9iamVjdCwgSlNUZXN0RW5hYmxlZEZvckNvbnRleHQ+IHx8ICFKU1Rlc3RFbmFibGVkRm9y
Q29udGV4dDo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jh
c2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RFbmFibGVkRm9yQ29udGV4
dD4pCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEVuYWJsZWRGb3JDb250ZXh0ID0g
bWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmRl
c3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSwgSlNUZXN0RW5hYmxlZEZvckNvbnRleHQpOwor
ICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RFbmFibGVkRm9yQ29udGV4dCA9IG1ha2VV
bmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0
aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RFbmFibGVkRm9yQ29udGV4dCk7CiAgICAg
ZWxzZQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RFbmFibGVkRm9yQ29udGV4dCA9
IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5j
ZWxsSGVhcENlbGxUeXBlLCBKU1Rlc3RFbmFibGVkRm9yQ29udGV4dCk7CisgICAgICAgIHNwYWNl
cy5tX3N1YnNwYWNlRm9yVGVzdEVuYWJsZWRGb3JDb250ZXh0ID0gbWFrZVVuaXF1ZTxJc29TdWJz
cGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBK
U1Rlc3RFbmFibGVkRm9yQ29udGV4dCk7CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJz
cGFjZUZvclRlc3RFbmFibGVkRm9yQ29udGV4dC5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJ
TigidW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNh
bC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RFdmVudENvbnN0cnVjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRDb25zdHJ1Y3Rvci5jcHAJKHJl
dmlzaW9uIDI4NjA0MykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RFdmVudENvbnN0cnVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQ3LDcgKzE0
Nyw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3Io
SlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9T
SEFSQUJMRShKU1Rlc3RFdmVudENvbnN0cnVjdG9yUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAg
cmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2Jq
ZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1
Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlND
OjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC0zMjEsOSArMzIxLDkgQEAgSlNDOjpJc29T
dWJzcGFjZSogSlNUZXN0RXZlbnRDb25zdHJ1Y3RvcgogICAgICAgICByZXR1cm4gc3BhY2U7CiAg
ICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2Jq
ZWN0LCBKU1Rlc3RFdmVudENvbnN0cnVjdG9yPiB8fCAhSlNUZXN0RXZlbnRDb25zdHJ1Y3Rvcjo6
bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxK
U0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RFdmVudENvbnN0cnVjdG9yPikKLSAgICAg
ICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0RXZlbnRDb25zdHJ1Y3RvciA9IG1ha2VVbmlxdWU8
SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5kZXN0cnVjdGlibGVP
YmplY3RIZWFwQ2VsbFR5cGUsIEpTVGVzdEV2ZW50Q29uc3RydWN0b3IpOworICAgICAgICBzcGFj
ZXMubV9zdWJzcGFjZUZvclRlc3RFdmVudENvbnN0cnVjdG9yID0gbWFrZVVuaXF1ZTxJc29TdWJz
cGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVh
cENlbGxUeXBlKCksIEpTVGVzdEV2ZW50Q29uc3RydWN0b3IpOwogICAgIGVsc2UKLSAgICAgICAg
c3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0RXZlbnRDb25zdHJ1Y3RvciA9IG1ha2VVbmlxdWU8SXNv
U3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5jZWxsSGVhcENlbGxUeXBl
LCBKU1Rlc3RFdmVudENvbnN0cnVjdG9yKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JU
ZXN0RXZlbnRDb25zdHJ1Y3RvciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFD
RV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0RXZlbnRDb25zdHJ1
Y3Rvcik7CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RFdmVudENv
bnN0cnVjdG9yLmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2Rl
IikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRleDog
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50VGFyZ2V0
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0RXZlbnRUYXJnZXQuY3BwCShyZXZpc2lvbiAyODYwNDMpCisrKyBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRUYXJnZXQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC03Myw3ICs3Myw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29T
dWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNf
QVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3RFdmVudFRhcmdldFByb3RvdHlwZSwg
QmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0
dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVj
dHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAtMjYyLDkgKzI2
Miw5IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdEV2ZW50VGFyZ2V0OjpzdWIKICAgICAgICAg
cmV0dXJuIHNwYWNlOwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpK
U0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0RXZlbnRUYXJnZXQ+IHx8ICFKU1Rlc3RFdmVudFRh
cmdldDo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vf
b2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RFdmVudFRhcmdldD4pCi0gICAg
ICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEV2ZW50VGFyZ2V0ID0gbWFrZVVuaXF1ZTxJc29T
dWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmRlc3RydWN0aWJsZU9iamVj
dEhlYXBDZWxsVHlwZSwgSlNUZXN0RXZlbnRUYXJnZXQpOworICAgICAgICBzcGFjZXMubV9zdWJz
cGFjZUZvclRlc3RFdmVudFRhcmdldCA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJT
UEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBK
U1Rlc3RFdmVudFRhcmdldCk7CiAgICAgZWxzZQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZv
clRlc3RFdmVudFRhcmdldCA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9J
TklUKHZtLmhlYXAsICp2bS5jZWxsSGVhcENlbGxUeXBlLCBKU1Rlc3RFdmVudFRhcmdldCk7Cisg
ICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEV2ZW50VGFyZ2V0ID0gbWFrZVVuaXF1ZTxJ
c29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlw
ZSgpLCBKU1Rlc3RFdmVudFRhcmdldCk7CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJz
cGFjZUZvclRlc3RFdmVudFRhcmdldC5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5y
ZWFjaGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21w
YXJlIikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RFeGNlcHRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RFeGNlcHRpb24uY3BwCShyZXZpc2lvbiAyODYwNDMpCisrKyBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXhjZXB0aW9uLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNjYsNyArNjYsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpT
Qzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAg
U1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0RXhjZXB0aW9uUHJvdG90
eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAg
ICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6
U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC0xODcs
OSArMTg3LDkgQEAgSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0RXhjZXB0aW9uOjpzdWJzcAogICAg
ICAgICByZXR1cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxK
U0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RFeGNlcHRpb24+IHx8ICFKU1Rlc3RFeGNl
cHRpb246Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNl
X29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0RXhjZXB0aW9uPikKLSAgICAg
ICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0RXhjZXB0aW9uID0gbWFrZVVuaXF1ZTxJc29TdWJz
cGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmRlc3RydWN0aWJsZU9iamVjdEhl
YXBDZWxsVHlwZSwgSlNUZXN0RXhjZXB0aW9uKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VG
b3JUZXN0RXhjZXB0aW9uID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lO
SVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCksIEpTVGVzdEV4
Y2VwdGlvbik7CiAgICAgZWxzZQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RFeGNl
cHRpb24gPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFw
LCAqdm0uY2VsbEhlYXBDZWxsVHlwZSwgSlNUZXN0RXhjZXB0aW9uKTsKKyAgICAgICAgc3BhY2Vz
Lm1fc3Vic3BhY2VGb3JUZXN0RXhjZXB0aW9uID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNP
X1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RFeGNl
cHRpb24pOwogICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0RXhjZXB0
aW9uLmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKIElH
Tk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRleDogU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEdlbmVyYXRlQWRkT3BhcXVl
Um9vdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdEdlbmVyYXRlQWRkT3BhcXVlUm9vdC5jcHAJKHJldmlzaW9uIDI4NjA0MykK
KysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RHZW5lcmF0
ZUFkZE9wYXF1ZVJvb3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02Niw3ICs2Niw3IEBAIHB1Ymxp
YzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0p
CiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rl
c3RHZW5lcmF0ZUFkZE9wYXF1ZVJvb3RQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4g
JnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFj
ZSgpOwogICAgIH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShK
U0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFs
dWUgcHJvdG90eXBlKQogICAgIHsKQEAgLTE4Nyw5ICsxODcsOSBAQCBKU0M6Oklzb1N1YnNwYWNl
KiBKU1Rlc3RHZW5lcmF0ZUFkZE9wYXF1CiAgICAgICAgIHJldHVybiBzcGFjZTsKICAgICBzdGF0
aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpT
VGVzdEdlbmVyYXRlQWRkT3BhcXVlUm9vdD4gfHwgIUpTVGVzdEdlbmVyYXRlQWRkT3BhcXVlUm9v
dDo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2Zf
djxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RHZW5lcmF0ZUFkZE9wYXF1ZVJvb3Q+
KQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RHZW5lcmF0ZUFkZE9wYXF1ZVJvb3Qg
PSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0u
ZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLCBKU1Rlc3RHZW5lcmF0ZUFkZE9wYXF1ZVJv
b3QpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RHZW5lcmF0ZUFkZE9wYXF1ZVJv
b3QgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2
bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0R2VuZXJhdGVBZGRPcGFx
dWVSb290KTsKICAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEdlbmVy
YXRlQWRkT3BhcXVlUm9vdCA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9J
TklUKHZtLmhlYXAsICp2bS5jZWxsSGVhcENlbGxUeXBlLCBKU1Rlc3RHZW5lcmF0ZUFkZE9wYXF1
ZVJvb3QpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RHZW5lcmF0ZUFkZE9wYXF1
ZVJvb3QgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFw
LCB2bS5jZWxsSGVhcENlbGxUeXBlKCksIEpTVGVzdEdlbmVyYXRlQWRkT3BhcXVlUm9vdCk7CiAg
ICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RHZW5lcmF0ZUFkZE9wYXF1
ZVJvb3QuZ2V0KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQog
SUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2VuZXJhdGVJc1JlYWNo
YWJsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGUuY3BwCShyZXZpc2lvbiAyODYwNDMpCisr
KyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2VuZXJhdGVJ
c1JlYWNoYWJsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY2LDcgKzY2LDcgQEAgcHVibGljOgog
ICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKICAg
ICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdEdl
bmVyYXRlSXNSZWFjaGFibGVQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBs
YWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwog
ICAgIH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZN
JiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJv
dG90eXBlKQogICAgIHsKQEAgLTE5Nyw5ICsxOTcsOSBAQCBKU0M6Oklzb1N1YnNwYWNlKiBKU1Rl
c3RHZW5lcmF0ZUlzUmVhY2hhCiAgICAgICAgIHJldHVybiBzcGFjZTsKICAgICBzdGF0aWNfYXNz
ZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdEdl
bmVyYXRlSXNSZWFjaGFibGU+IHx8ICFKU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlOjpuZWVkc0Rl
c3RydWN0aW9uKTsKICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNE
ZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGU+KQotICAgICAgICBz
cGFjZXMubV9zdWJzcGFjZUZvclRlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlID0gbWFrZVVuaXF1ZTxJ
c29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmRlc3RydWN0aWJsZU9i
amVjdEhlYXBDZWxsVHlwZSwgSlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZSk7CisgICAgICAgIHNw
YWNlcy5tX3N1YnNwYWNlRm9yVGVzdEdlbmVyYXRlSXNSZWFjaGFibGUgPSBtYWtlVW5pcXVlPElz
b1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmpl
Y3RIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZSk7CiAgICAgZWxzZQot
ICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlID0gbWFr
ZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmNlbGxI
ZWFwQ2VsbFR5cGUsIEpTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGUpOworICAgICAgICBzcGFjZXMu
bV9zdWJzcGFjZUZvclRlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlID0gbWFrZVVuaXF1ZTxJc29TdWJz
cGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBK
U1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlKTsKICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1
YnNwYWNlRm9yVGVzdEdlbmVyYXRlSXNSZWFjaGFibGUuZ2V0KCk7CiBJR05PUkVfV0FSTklOR1Nf
QkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xv
Z2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0R2xvYmFsT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEdsb2JhbE9iamVjdC5oCShyZXZpc2lvbiAy
ODYwNDMpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
R2xvYmFsT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTk4LDcgKzk4LDcgQEAgcHVibGljOgog
ICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKICAg
ICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdEds
b2JhbE9iamVjdFByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmpl
Y3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQog
ICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBK
U0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUp
CiAgICAgewpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbmRleGVkU2V0dGVyTm9JZGVu
dGlmaWVyLmNwcAkocmV2aXNpb24gMjg2MDQzKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXIuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC02NSw3ICs2NSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29T
dWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNf
QVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3RJbmRleGVkU2V0dGVyTm9JZGVudGlm
aWVyUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNl
OworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3Rh
dGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7
CkBAIC0yNzYsOSArMjc2LDkgQEAgSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0SW5kZXhlZFNldHRl
ck5vSQogICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jh
c2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RJbmRleGVkU2V0dGVyTm9J
ZGVudGlmaWVyPiB8fCAhSlNUZXN0SW5kZXhlZFNldHRlck5vSWRlbnRpZmllcjo6bmVlZHNEZXN0
cnVjdGlvbik7CiAgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVz
dHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyPikKLSAgICAg
ICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0SW5kZXhlZFNldHRlck5vSWRlbnRpZmllciA9IG1h
a2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5kZXN0
cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUsIEpTVGVzdEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZp
ZXIpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RJbmRleGVkU2V0dGVyTm9JZGVu
dGlmaWVyID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVh
cCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCksIEpTVGVzdEluZGV4ZWRTZXR0
ZXJOb0lkZW50aWZpZXIpOwogICAgIGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JU
ZXN0SW5kZXhlZFNldHRlck5vSWRlbnRpZmllciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElT
T19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5jZWxsSGVhcENlbGxUeXBlLCBKU1Rlc3RJbmRl
eGVkU2V0dGVyTm9JZGVudGlmaWVyKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0
SW5kZXhlZFNldHRlck5vSWRlbnRpZmllciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19T
VUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0SW5kZXhl
ZFNldHRlck5vSWRlbnRpZmllcik7CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFj
ZUZvclRlc3RJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyLmdldCgpOwogSUdOT1JFX1dBUk5JTkdT
X0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9s
b2dpY2FsLWNvbXBhcmUiKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEluZGV4
ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5jcHAJKHJldmlzaW9uIDI4NjA0MykKKysrIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbmRleGVkU2V0dGVyVGhy
b3dpbmdFeGNlcHRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NSw3ICs2NSw3IEBAIHB1Ymxp
YzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0p
CiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rl
c3RJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb25Qcm90b3R5cGUsIEJhc2UpOwotICAgICAg
ICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5P
YmplY3RTcGFjZSgpOwogICAgIH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0
cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBK
U0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKQEAgLTI3Niw5ICsyNzYsOSBAQCBKU0M6Oklz
b1N1YnNwYWNlKiBKU1Rlc3RJbmRleGVkU2V0dGVyVGhyCiAgICAgICAgIHJldHVybiBzcGFjZTsK
ICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVP
YmplY3QsIEpTVGVzdEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbj4gfHwgIUpTVGVzdElu
ZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbjo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgaWYg
Y29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBK
U1Rlc3RJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24+KQotICAgICAgICBzcGFjZXMubV9z
dWJzcGFjZUZvclRlc3RJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24gPSBtYWtlVW5pcXVl
PElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uZGVzdHJ1Y3RpYmxl
T2JqZWN0SGVhcENlbGxUeXBlLCBKU1Rlc3RJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24p
OworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RJbmRleGVkU2V0dGVyVGhyb3dpbmdF
eGNlcHRpb24gPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5o
ZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0SW5kZXhlZFNl
dHRlclRocm93aW5nRXhjZXB0aW9uKTsKICAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNw
YWNlRm9yVGVzdEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbiA9IG1ha2VVbmlxdWU8SXNv
U3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5jZWxsSGVhcENlbGxUeXBl
LCBKU1Rlc3RJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24pOworICAgICAgICBzcGFjZXMu
bV9zdWJzcGFjZUZvclRlc3RJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24gPSBtYWtlVW5p
cXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENl
bGxUeXBlKCksIEpTVGVzdEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbik7CiAgICAgYXV0
byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RJbmRleGVkU2V0dGVyVGhyb3dpbmdF
eGNlcHRpb24uZ2V0KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUi
KQogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW5kZXhlZFNldHRl
cldpdGhJZGVudGlmaWVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyLmNwcAko
cmV2aXNpb24gMjg2MDQzKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTczLDcgKzczLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBz
dWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNP
X1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllclByb3Rv
dHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAg
ICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6
OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAtMzA4
LDkgKzMwOCw5IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdEluZGV4ZWRTZXR0ZXJXaXQKICAg
ICAgICAgcmV0dXJuIHNwYWNlOwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8
SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0SW5kZXhlZFNldHRlcldpdGhJZGVudGlm
aWVyPiB8fCAhSlNUZXN0SW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyOjpuZWVkc0Rlc3RydWN0
aW9uKTsKICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVj
dGlibGVPYmplY3QsIEpTVGVzdEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllcj4pCi0gICAgICAg
IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllciA9IG1h
a2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5kZXN0
cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUsIEpTVGVzdEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRp
Zmllcik7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEluZGV4ZWRTZXR0ZXJXaXRo
SWRlbnRpZmllciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZt
LmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RJbmRleGVk
U2V0dGVyV2l0aElkZW50aWZpZXIpOwogICAgIGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vic3Bh
Y2VGb3JUZXN0SW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyID0gbWFrZVVuaXF1ZTxJc29TdWJz
cGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmNlbGxIZWFwQ2VsbFR5cGUsIEpT
VGVzdEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllcik7CisgICAgICAgIHNwYWNlcy5tX3N1YnNw
YWNlRm9yVGVzdEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllciA9IG1ha2VVbmlxdWU8SXNvU3Vi
c3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwg
SlNUZXN0SW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyKTsKICAgICBhdXRvKiBzcGFjZSA9IHNw
YWNlcy5tX3N1YnNwYWNlRm9yVGVzdEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllci5nZXQoKTsK
IElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklO
R1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2UuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2Uu
Y3BwCShyZXZpc2lvbiAyODYwNDMpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTgxLDcgKzE4
MSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3Io
SlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9T
SEFSQUJMRShKU1Rlc3RJbnRlcmZhY2VQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4g
JnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFj
ZSgpOwogICAgIH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShK
U0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFs
dWUgcHJvdG90eXBlKQogICAgIHsKQEAgLTExMDQsOSArMTEwNCw5IEBAIHB1YmxpYzoKICAgICAg
ICAgICAgIHJldHVybiBzcGFjZTsKICAgICAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vf
b2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBUZXN0SW50ZXJmYWNlSXRlcmF0b3I+IHx8
ICFUZXN0SW50ZXJmYWNlSXRlcmF0b3I6Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAgICAgICBpZiBj
b25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIFRl
c3RJbnRlcmZhY2VJdGVyYXRvcj4pCi0gICAgICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRl
c3RJbnRlcmZhY2VJdGVyYXRvciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFD
RV9JTklUKHZtLmhlYXAsICp2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuZ2V0KCks
IFRlc3RJbnRlcmZhY2VJdGVyYXRvcik7CisgICAgICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZv
clRlc3RJbnRlcmZhY2VJdGVyYXRvciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJT
UEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBU
ZXN0SW50ZXJmYWNlSXRlcmF0b3IpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBzcGFjZXMu
bV9zdWJzcGFjZUZvclRlc3RJbnRlcmZhY2VJdGVyYXRvciA9IG1ha2VVbmlxdWU8SXNvU3Vic3Bh
Y2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5jZWxsSGVhcENlbGxUeXBlLCBUZXN0
SW50ZXJmYWNlSXRlcmF0b3IpOworICAgICAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0
SW50ZXJmYWNlSXRlcmF0b3IgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0Vf
SU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCksIFRlc3RJbnRlcmZhY2VJdGVyYXRv
cik7CiAgICAgICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0SW50ZXJm
YWNlSXRlcmF0b3IuZ2V0KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNv
ZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkBAIC0x
MTk2LDkgKzExOTYsOSBAQCBKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3RJbnRlcmZhY2U6OnN1YnNw
CiAgICAgICAgIHJldHVybiBzcGFjZTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9v
Zl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdEludGVyZmFjZT4gfHwgIUpTVGVz
dEludGVyZmFjZTo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3RleHByIChzdGQ6Omlz
X2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RJbnRlcmZhY2U+KQot
ICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RJbnRlcmZhY2UgPSBtYWtlVW5pcXVlPElz
b1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uZGVzdHJ1Y3RpYmxlT2Jq
ZWN0SGVhcENlbGxUeXBlLCBKU1Rlc3RJbnRlcmZhY2UpOworICAgICAgICBzcGFjZXMubV9zdWJz
cGFjZUZvclRlc3RJbnRlcmZhY2UgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BB
Q0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwgSlNU
ZXN0SW50ZXJmYWNlKTsKICAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVz
dEludGVyZmFjZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZt
LmhlYXAsICp2bS5jZWxsSGVhcENlbGxUeXBlLCBKU1Rlc3RJbnRlcmZhY2UpOworICAgICAgICBz
cGFjZXMubV9zdWJzcGFjZUZvclRlc3RJbnRlcmZhY2UgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNl
PiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCksIEpTVGVz
dEludGVyZmFjZSk7CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RJ
bnRlcmZhY2UuZ2V0KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUi
KQogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlTGVh
ZGluZ1VuZGVyc2NvcmUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2VMZWFkaW5nVW5kZXJzY29yZS5jcHAJKHJl
dmlzaW9uIDI4NjA0MykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RJbnRlcmZhY2VMZWFkaW5nVW5kZXJzY29yZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTY2LDcgKzY2LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJz
cGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NV
QlNQQUNFX1NIQVJBQkxFKEpTVGVzdEludGVyZmFjZUxlYWRpbmdVbmRlcnNjb3JlUHJvdG90eXBl
LCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICBy
ZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3Ry
dWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC0xODcsOSAr
MTg3LDkgQEAgSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0SW50ZXJmYWNlTGVhZGluZwogICAgICAg
ICByZXR1cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6
OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RJbnRlcmZhY2VMZWFkaW5nVW5kZXJzY29yZT4g
fHwgIUpTVGVzdEludGVyZmFjZUxlYWRpbmdVbmRlcnNjb3JlOjpuZWVkc0Rlc3RydWN0aW9uKTsK
ICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVP
YmplY3QsIEpTVGVzdEludGVyZmFjZUxlYWRpbmdVbmRlcnNjb3JlPikKLSAgICAgICAgc3BhY2Vz
Lm1fc3Vic3BhY2VGb3JUZXN0SW50ZXJmYWNlTGVhZGluZ1VuZGVyc2NvcmUgPSBtYWtlVW5pcXVl
PElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uZGVzdHJ1Y3RpYmxl
T2JqZWN0SGVhcENlbGxUeXBlLCBKU1Rlc3RJbnRlcmZhY2VMZWFkaW5nVW5kZXJzY29yZSk7Cisg
ICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEludGVyZmFjZUxlYWRpbmdVbmRlcnNjb3Jl
ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0u
ZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCksIEpTVGVzdEludGVyZmFjZUxlYWRpbmdV
bmRlcnNjb3JlKTsKICAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdElu
dGVyZmFjZUxlYWRpbmdVbmRlcnNjb3JlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NV
QlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmNlbGxIZWFwQ2VsbFR5cGUsIEpTVGVzdEludGVyZmFj
ZUxlYWRpbmdVbmRlcnNjb3JlKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0SW50
ZXJmYWNlTGVhZGluZ1VuZGVyc2NvcmUgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VC
U1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCksIEpTVGVzdEludGVyZmFj
ZUxlYWRpbmdVbmRlcnNjb3JlKTsKICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNl
Rm9yVGVzdEludGVyZmFjZUxlYWRpbmdVbmRlcnNjb3JlLmdldCgpOwogSUdOT1JFX1dBUk5JTkdT
X0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9s
b2dpY2FsLWNvbXBhcmUiKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdEl0ZXJhYmxlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SXRlcmFibGUuY3BwCShyZXZpc2lvbiAyODYw
NDMpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SXRl
cmFibGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NSw3ICs3NSw3IEBAIHB1YmxpYzoKICAgICBz
dGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewog
ICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3RJdGVyYWJs
ZVByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsK
KyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRp
YyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpA
QCAtMjAxLDkgKzIwMSw5IEBAIHB1YmxpYzoKICAgICAgICAgICAgIHJldHVybiBzcGFjZTsKICAg
ICAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxl
T2JqZWN0LCBUZXN0SXRlcmFibGVJdGVyYXRvcj4gfHwgIVRlc3RJdGVyYWJsZUl0ZXJhdG9yOjpu
ZWVkc0Rlc3RydWN0aW9uKTsKICAgICAgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2Zf
djxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBUZXN0SXRlcmFibGVJdGVyYXRvcj4pCi0gICAg
ICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RJdGVyYWJsZUl0ZXJhdG9yID0gbWFrZVVu
aXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmRlc3RydWN0
aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5nZXQoKSwgVGVzdEl0ZXJhYmxlSXRlcmF0b3IpOworICAg
ICAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0SXRlcmFibGVJdGVyYXRvciA9IG1ha2VV
bmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0
aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBUZXN0SXRlcmFibGVJdGVyYXRvcik7CiAgICAgICAg
IGVsc2UKLSAgICAgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEl0ZXJhYmxlSXRlcmF0
b3IgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAq
dm0uY2VsbEhlYXBDZWxsVHlwZSwgVGVzdEl0ZXJhYmxlSXRlcmF0b3IpOworICAgICAgICAgICAg
c3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0SXRlcmFibGVJdGVyYXRvciA9IG1ha2VVbmlxdWU8SXNv
U3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUo
KSwgVGVzdEl0ZXJhYmxlSXRlcmF0b3IpOwogICAgICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5t
X3N1YnNwYWNlRm9yVGVzdEl0ZXJhYmxlSXRlcmF0b3IuZ2V0KCk7CiBJR05PUkVfV0FSTklOR1Nf
QkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xv
Z2ljYWwtY29tcGFyZSIpCkBAIC0yOTMsOSArMjkzLDkgQEAgSlNDOjpJc29TdWJzcGFjZSogSlNU
ZXN0SXRlcmFibGU6OnN1YnNwYQogICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fz
c2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RJ
dGVyYWJsZT4gfHwgIUpTVGVzdEl0ZXJhYmxlOjpuZWVkc0Rlc3RydWN0aW9uKTsKICAgICBpZiBj
b25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpT
VGVzdEl0ZXJhYmxlPikKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0SXRlcmFibGUg
PSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0u
ZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLCBKU1Rlc3RJdGVyYWJsZSk7CisgICAgICAg
IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEl0ZXJhYmxlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFj
ZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENl
bGxUeXBlKCksIEpTVGVzdEl0ZXJhYmxlKTsKICAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1
YnNwYWNlRm9yVGVzdEl0ZXJhYmxlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQ
QUNFX0lOSVQodm0uaGVhcCwgKnZtLmNlbGxIZWFwQ2VsbFR5cGUsIEpTVGVzdEl0ZXJhYmxlKTsK
KyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0SXRlcmFibGUgPSBtYWtlVW5pcXVlPElz
b1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBl
KCksIEpTVGVzdEl0ZXJhYmxlKTsKICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNl
Rm9yVGVzdEl0ZXJhYmxlLmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJs
ZS1jb2RlIikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJ
bmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEpTQnVp
bHRpbkNvbnN0cnVjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3IuY3BwCShyZXZpc2lv
biAyODYwNDMpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0SlNCdWlsdGluQ29uc3RydWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02OSw3ICs2OSw3
IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlND
OjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFS
QUJMRShKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvclByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAg
IHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9i
amVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3Ry
dWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpT
Qzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAtMjMwLDkgKzIzMCw5IEBAIEpTQzo6SXNv
U3Vic3BhY2UqIEpTVGVzdEpTQnVpbHRpbkNvbnN0cnUKICAgICAgICAgcmV0dXJuIHNwYWNlOwog
ICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9i
amVjdCwgSlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3I+IHx8ICFKU1Rlc3RKU0J1aWx0aW5Db25z
dHJ1Y3Rvcjo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jh
c2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1
Y3Rvcj4pCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEpTQnVpbHRpbkNvbnN0cnVj
dG9yID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwg
KnZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSwgSlNUZXN0SlNCdWlsdGluQ29uc3Ry
dWN0b3IpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RKU0J1aWx0aW5Db25zdHJ1
Y3RvciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAs
IHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RKU0J1aWx0aW5Db25z
dHJ1Y3Rvcik7CiAgICAgZWxzZQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RKU0J1
aWx0aW5Db25zdHJ1Y3RvciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9J
TklUKHZtLmhlYXAsICp2bS5jZWxsSGVhcENlbGxUeXBlLCBKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1
Y3Rvcik7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEpTQnVpbHRpbkNvbnN0cnVj
dG9yID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwg
dm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rvcik7CiAgICAg
YXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rv
ci5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJR05P
UkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RMZWdhY3lGYWN0b3J5RnVuY3Rp
b24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb24uY3BwCShyZXZpc2lvbiAyODYwNDMpCisr
KyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TGVnYWN5RmFj
dG9yeUZ1bmN0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjcsNyArNjcsNyBAQCBwdWJsaWM6
CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQog
ICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0
TGVnYWN5RmFjdG9yeUZ1bmN0aW9uUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2
bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2Uo
KTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlND
OjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVl
IHByb3RvdHlwZSkKICAgICB7CkBAIC0yMzAsOSArMjMwLDkgQEAgSlNDOjpJc29TdWJzcGFjZSog
SlNUZXN0TGVnYWN5RmFjdG9yeUZ1bgogICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAgc3RhdGlj
X2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rl
c3RMZWdhY3lGYWN0b3J5RnVuY3Rpb24+IHx8ICFKU1Rlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb246
Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8
SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uPikK
LSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uID0g
bWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmRl
c3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSwgSlNUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9u
KTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9u
ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0u
ZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCksIEpTVGVzdExlZ2FjeUZhY3RvcnlGdW5j
dGlvbik7CiAgICAgZWxzZQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RMZWdhY3lG
YWN0b3J5RnVuY3Rpb24gPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5J
VCh2bS5oZWFwLCAqdm0uY2VsbEhlYXBDZWxsVHlwZSwgSlNUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0
aW9uKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0
aW9uID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwg
dm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb24pOwogICAg
IGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0
aW9uLmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKIElH
Tk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRleDogU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdExlZ2FjeU5vSW50ZXJmYWNl
T2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0TGVnYWN5Tm9JbnRlcmZhY2VPYmplY3QuY3BwCShyZXZpc2lvbiAyODYw
NDMpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TGVn
YWN5Tm9JbnRlcmZhY2VPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04NSw3ICs4NSw3IEBA
IHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpW
TSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJM
RShKU1Rlc3RMZWdhY3lOb0ludGVyZmFjZU9iamVjdFByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAg
IHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9i
amVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3Ry
dWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpT
Qzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAtMzM1LDkgKzMzNSw5IEBAIEpTQzo6SXNv
U3Vic3BhY2UqIEpTVGVzdExlZ2FjeU5vSW50ZXJmYWMKICAgICAgICAgcmV0dXJuIHNwYWNlOwog
ICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9i
amVjdCwgSlNUZXN0TGVnYWN5Tm9JbnRlcmZhY2VPYmplY3Q+IHx8ICFKU1Rlc3RMZWdhY3lOb0lu
dGVyZmFjZU9iamVjdDo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3RleHByIChzdGQ6
OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RMZWdhY3lOb0lu
dGVyZmFjZU9iamVjdD4pCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdExlZ2FjeU5v
SW50ZXJmYWNlT2JqZWN0ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lO
SVQodm0uaGVhcCwgKnZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSwgSlNUZXN0TGVn
YWN5Tm9JbnRlcmZhY2VPYmplY3QpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RM
ZWdhY3lOb0ludGVyZmFjZU9iamVjdCA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJT
UEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBK
U1Rlc3RMZWdhY3lOb0ludGVyZmFjZU9iamVjdCk7CiAgICAgZWxzZQotICAgICAgICBzcGFjZXMu
bV9zdWJzcGFjZUZvclRlc3RMZWdhY3lOb0ludGVyZmFjZU9iamVjdCA9IG1ha2VVbmlxdWU8SXNv
U3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5jZWxsSGVhcENlbGxUeXBl
LCBKU1Rlc3RMZWdhY3lOb0ludGVyZmFjZU9iamVjdCk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNw
YWNlRm9yVGVzdExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFj
ZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU1Rl
c3RMZWdhY3lOb0ludGVyZmFjZU9iamVjdCk7CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9z
dWJzcGFjZUZvclRlc3RMZWdhY3lOb0ludGVyZmFjZU9iamVjdC5nZXQoKTsKIElHTk9SRV9XQVJO
SU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRh
dXRvbG9naWNhbC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TGVnYWN5T3Zl
cnJpZGVCdWlsdElucy5jcHAJKHJldmlzaW9uIDI4NjA0MykKKysrIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNzMsNyArNzMsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6
SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RB
VElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0TGVnYWN5T3ZlcnJpZGVCdWls
dEluc1Byb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFj
ZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0
YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAg
ewpAQCAtMjQ5LDkgKzI0OSw5IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdExlZ2FjeU92ZXJy
aWRlQnUKICAgICAgICAgcmV0dXJuIHNwYWNlOwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19i
YXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0TGVnYWN5T3ZlcnJpZGVC
dWlsdElucz4gfHwgIUpTVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM6Om5lZWRzRGVzdHJ1Y3Rp
b24pOwogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0
aWJsZU9iamVjdCwgSlNUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdElucz4pCi0gICAgICAgIHNwYWNl
cy5tX3N1YnNwYWNlRm9yVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMgPSBtYWtlVW5pcXVlPElz
b1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uZGVzdHJ1Y3RpYmxlT2Jq
ZWN0SGVhcENlbGxUeXBlLCBKU1Rlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zKTsKKyAgICAgICAg
c3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdElucyA9IG1ha2VVbmlx
dWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJs
ZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zKTsKICAg
ICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdExlZ2FjeU92ZXJyaWRlQnVp
bHRJbnMgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFw
LCAqdm0uY2VsbEhlYXBDZWxsVHlwZSwgSlNUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdElucyk7Cisg
ICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMgPSBt
YWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxs
SGVhcENlbGxUeXBlKCksIEpTVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMpOwogICAgIGF1dG8q
IHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdElucy5n
ZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVf
V0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RNYXBMaWtlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TWFwTGlr
ZS5jcHAJKHJldmlzaW9uIDI4NjA0MykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RNYXBMaWtlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODIsNyArODIs
NyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpT
Qzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hB
UkFCTEUoSlNUZXN0TWFwTGlrZVByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0u
cGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7
CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6
Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBw
cm90b3R5cGUpCiAgICAgewpAQCAtMzY2LDkgKzM2Niw5IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpT
VGVzdE1hcExpa2U6OnN1YnNwYWMKICAgICAgICAgcmV0dXJuIHNwYWNlOwogICAgIHN0YXRpY19h
c3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0
TWFwTGlrZT4gfHwgIUpTVGVzdE1hcExpa2U6Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNv
bnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNU
ZXN0TWFwTGlrZT4pCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE1hcExpa2UgPSBt
YWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uZGVz
dHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLCBKU1Rlc3RNYXBMaWtlKTsKKyAgICAgICAgc3Bh
Y2VzLm1fc3Vic3BhY2VGb3JUZXN0TWFwTGlrZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElT
T19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlw
ZSgpLCBKU1Rlc3RNYXBMaWtlKTsKICAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNl
Rm9yVGVzdE1hcExpa2UgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5J
VCh2bS5oZWFwLCAqdm0uY2VsbEhlYXBDZWxsVHlwZSwgSlNUZXN0TWFwTGlrZSk7CisgICAgICAg
IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE1hcExpa2UgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNl
PiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCksIEpTVGVz
dE1hcExpa2UpOwogICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TWFw
TGlrZS5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJ
R05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RNYXBMaWtlV2l0aE92ZXJy
aWRkZW5PcGVyYXRpb25zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TWFwTGlrZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9ucy5j
cHAJKHJldmlzaW9uIDI4NjA0MykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RNYXBMaWtlV2l0aE92ZXJyaWRkZW5PcGVyYXRpb25zLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtODYsNyArODYsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vi
c3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FT
U0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0TWFwTGlrZVdpdGhPdmVycmlkZGVuT3Bl
cmF0aW9uc1Byb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RT
cGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAg
IHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6
OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAg
ICAgewpAQCAtMzgwLDkgKzM4MCw5IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdE1hcExpa2VX
aXRoT3ZlcnIKICAgICAgICAgcmV0dXJuIHNwYWNlOwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjpp
c19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0TWFwTGlrZVdpdGhP
dmVycmlkZGVuT3BlcmF0aW9ucz4gfHwgIUpTVGVzdE1hcExpa2VXaXRoT3ZlcnJpZGRlbk9wZXJh
dGlvbnM6Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNl
X29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0TWFwTGlrZVdpdGhPdmVycmlk
ZGVuT3BlcmF0aW9ucz4pCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE1hcExpa2VX
aXRoT3ZlcnJpZGRlbk9wZXJhdGlvbnMgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VC
U1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLCBK
U1Rlc3RNYXBMaWtlV2l0aE92ZXJyaWRkZW5PcGVyYXRpb25zKTsKKyAgICAgICAgc3BhY2VzLm1f
c3Vic3BhY2VGb3JUZXN0TWFwTGlrZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9ucyA9IG1ha2VVbmlx
dWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJs
ZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RNYXBMaWtlV2l0aE92ZXJyaWRkZW5PcGVyYXRp
b25zKTsKICAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE1hcExpa2VX
aXRoT3ZlcnJpZGRlbk9wZXJhdGlvbnMgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VC
U1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uY2VsbEhlYXBDZWxsVHlwZSwgSlNUZXN0TWFwTGlrZVdp
dGhPdmVycmlkZGVuT3BlcmF0aW9ucyk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVz
dE1hcExpa2VXaXRoT3ZlcnJpZGRlbk9wZXJhdGlvbnMgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNl
PiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCksIEpTVGVz
dE1hcExpa2VXaXRoT3ZlcnJpZGRlbk9wZXJhdGlvbnMpOwogICAgIGF1dG8qIHNwYWNlID0gc3Bh
Y2VzLm1fc3Vic3BhY2VGb3JUZXN0TWFwTGlrZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9ucy5nZXQo
KTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVfV0FS
TklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJOb0lk
ZW50aWZpZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXIuY3BwCShy
ZXZpc2lvbiAyODYwNDMpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNjYsNyArNjYsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3Bh
Y2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VS
VF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyTm9JZGVu
dGlmaWVyUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNw
YWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAg
c3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAg
ICB7CkBAIC0zNDQsOSArMzQ0LDkgQEAgSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0TmFtZWRBbmRJ
bmRleGVkUwogICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6Omlz
X2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3ROYW1lZEFuZEluZGV4
ZWRTZXR0ZXJOb0lkZW50aWZpZXI+IHx8ICFKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJOb0lk
ZW50aWZpZXI6Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19i
YXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0TmFtZWRBbmRJbmRleGVk
U2V0dGVyTm9JZGVudGlmaWVyPikKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFt
ZWRBbmRJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4g
SVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxs
VHlwZSwgSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyKTsKKyAgICAgICAg
c3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVy
ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0u
ZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCksIEpTVGVzdE5hbWVkQW5kSW5kZXhlZFNl
dHRlck5vSWRlbnRpZmllcik7CiAgICAgZWxzZQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZv
clRlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXIgPSBtYWtlVW5pcXVlPElzb1N1
YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uY2VsbEhlYXBDZWxsVHlwZSwg
SlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyKTsKKyAgICAgICAgc3BhY2Vz
Lm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyID0gbWFr
ZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhl
YXBDZWxsVHlwZSgpLCBKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXIpOwog
ICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRBbmRJbmRleGVk
U2V0dGVyTm9JZGVudGlmaWVyLmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNo
YWJsZS1jb2RlIikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUi
KQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5h
bWVkQW5kSW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRBbmRJbmRl
eGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24uY3BwCShyZXZpc2lvbiAyODYwNDMpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRBbmRJbmRleGVk
U2V0dGVyVGhyb3dpbmdFeGNlcHRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02Niw3ICs2Niw3
IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlND
OjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFS
QUJMRShKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvblByb3RvdHlw
ZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAg
cmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0
cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAtMzQ0LDkg
KzM0NCw5IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdE5hbWVkQW5kSW5kZXhlZFMKICAgICAg
ICAgcmV0dXJuIHNwYWNlOwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlND
OjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyVGhyb3dp
bmdFeGNlcHRpb24+IHx8ICFKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2Vw
dGlvbjo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vf
b2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0
ZXJUaHJvd2luZ0V4Y2VwdGlvbj4pCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5h
bWVkQW5kSW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uID0gbWFrZVVuaXF1ZTxJc29TdWJz
cGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmRlc3RydWN0aWJsZU9iamVjdEhl
YXBDZWxsVHlwZSwgSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24p
OworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJU
aHJvd2luZ0V4Y2VwdGlvbiA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9J
TklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RO
YW1lZEFuZEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbik7CiAgICAgZWxzZQotICAgICAg
ICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4
Y2VwdGlvbiA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhl
YXAsICp2bS5jZWxsSGVhcENlbGxUeXBlLCBKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJUaHJv
d2luZ0V4Y2VwdGlvbik7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkQW5k
SW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4g
SVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RO
YW1lZEFuZEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbik7CiAgICAgYXV0byogc3BhY2Ug
PSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4
Y2VwdGlvbi5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIp
CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEFuZEluZGV4
ZWRTZXR0ZXJXaXRoSWRlbnRpZmllci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlcldpdGhJ
ZGVudGlmaWVyLmNwcAkocmV2aXNpb24gMjg2MDQzKQorKysgU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlcldpdGhJZGVudGlm
aWVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzUsNyArNzUsNyBAQCBwdWJsaWM6CiAgICAgc3Rh
dGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAg
ICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0TmFtZWRBbmRJ
bmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXJQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1
cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RT
cGFjZSgpOwogICAgIH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVy
ZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpT
VmFsdWUgcHJvdG90eXBlKQogICAgIHsKQEAgLTQwMSw5ICs0MDEsOSBAQCBKU0M6Oklzb1N1YnNw
YWNlKiBKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTCiAgICAgICAgIHJldHVybiBzcGFjZTsKICAgICBz
dGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3Qs
IEpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyPiB8fCAhSlNUZXN0TmFt
ZWRBbmRJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXI6Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAg
IGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVj
dCwgSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXI+KQotICAgICAgICBz
cGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmll
ciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2
bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUsIEpTVGVzdE5hbWVkQW5kSW5kZXhlZFNl
dHRlcldpdGhJZGVudGlmaWVyKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFt
ZWRBbmRJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXIgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNl
PiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2Vs
bFR5cGUoKSwgSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXIpOwogICAg
IGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRBbmRJbmRleGVkU2V0
dGVyV2l0aElkZW50aWZpZXIgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0Vf
SU5JVCh2bS5oZWFwLCAqdm0uY2VsbEhlYXBDZWxsVHlwZSwgSlNUZXN0TmFtZWRBbmRJbmRleGVk
U2V0dGVyV2l0aElkZW50aWZpZXIpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RO
YW1lZEFuZEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllciA9IG1ha2VVbmlxdWU8SXNvU3Vic3Bh
Y2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNU
ZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXIpOwogICAgIGF1dG8qIHNwYWNl
ID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0aElkZW50
aWZpZXIuZ2V0KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQog
SUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyTm9J
ZGVudGlmaWVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyTm9JZGVudGlmaWVyLmNwcAkocmV2aXNpb24g
Mjg2MDQzKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dE5hbWVkRGVsZXRlck5vSWRlbnRpZmllci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY1LDcgKzY1
LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihK
U0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NI
QVJBQkxFKEpTVGVzdE5hbWVkRGVsZXRlck5vSWRlbnRpZmllclByb3RvdHlwZSwgQmFzZSk7Ci0g
ICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5w
bGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3Jl
YXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAtMjQ2LDkgKzI0Niw5IEBAIEpT
Qzo6SXNvU3Vic3BhY2UqIEpTVGVzdE5hbWVkRGVsZXRlck5vSWQKICAgICAgICAgcmV0dXJuIHNw
YWNlOwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0
aWJsZU9iamVjdCwgSlNUZXN0TmFtZWREZWxldGVyTm9JZGVudGlmaWVyPiB8fCAhSlNUZXN0TmFt
ZWREZWxldGVyTm9JZGVudGlmaWVyOjpuZWVkc0Rlc3RydWN0aW9uKTsKICAgICBpZiBjb25zdGV4
cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdE5h
bWVkRGVsZXRlck5vSWRlbnRpZmllcj4pCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVz
dE5hbWVkRGVsZXRlck5vSWRlbnRpZmllciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19T
VUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUs
IEpTVGVzdE5hbWVkRGVsZXRlck5vSWRlbnRpZmllcik7CisgICAgICAgIHNwYWNlcy5tX3N1YnNw
YWNlRm9yVGVzdE5hbWVkRGVsZXRlck5vSWRlbnRpZmllciA9IG1ha2VVbmlxdWU8SXNvU3Vic3Bh
Y2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBD
ZWxsVHlwZSgpLCBKU1Rlc3ROYW1lZERlbGV0ZXJOb0lkZW50aWZpZXIpOwogICAgIGVsc2UKLSAg
ICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWREZWxldGVyTm9JZGVudGlmaWVyID0g
bWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmNl
bGxIZWFwQ2VsbFR5cGUsIEpTVGVzdE5hbWVkRGVsZXRlck5vSWRlbnRpZmllcik7CisgICAgICAg
IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkRGVsZXRlck5vSWRlbnRpZmllciA9IG1ha2VV
bmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFw
Q2VsbFR5cGUoKSwgSlNUZXN0TmFtZWREZWxldGVyTm9JZGVudGlmaWVyKTsKICAgICBhdXRvKiBz
cGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkRGVsZXRlck5vSWRlbnRpZmllci5n
ZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVf
V0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJUaHJvd2luZ0V4
Y2VwdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlclRocm93aW5nRXhjZXB0aW9uLmNwcAkocmV2aXNp
b24gMjg2MDQzKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdE5hbWVkRGVsZXRlclRocm93aW5nRXhjZXB0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NjUsNyArNjUsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNw
YWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VC
U1BBQ0VfU0hBUkFCTEUoSlNUZXN0TmFtZWREZWxldGVyVGhyb3dpbmdFeGNlcHRpb25Qcm90b3R5
cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAg
IHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KICAgICBzdGF0aWMgSlNDOjpT
dHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKQEAgLTI0Niw5
ICsyNDYsOSBAQCBKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3ROYW1lZERlbGV0ZXJUaHJvCiAgICAg
ICAgIHJldHVybiBzcGFjZTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpT
Qzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdE5hbWVkRGVsZXRlclRocm93aW5nRXhjZXB0
aW9uPiB8fCAhSlNUZXN0TmFtZWREZWxldGVyVGhyb3dpbmdFeGNlcHRpb246Om5lZWRzRGVzdHJ1
Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3Ry
dWN0aWJsZU9iamVjdCwgSlNUZXN0TmFtZWREZWxldGVyVGhyb3dpbmdFeGNlcHRpb24+KQotICAg
ICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZERlbGV0ZXJUaHJvd2luZ0V4Y2VwdGlv
biA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2
bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUsIEpTVGVzdE5hbWVkRGVsZXRlclRocm93
aW5nRXhjZXB0aW9uKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWREZWxl
dGVyVGhyb3dpbmdFeGNlcHRpb24gPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BB
Q0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwgSlNU
ZXN0TmFtZWREZWxldGVyVGhyb3dpbmdFeGNlcHRpb24pOwogICAgIGVsc2UKLSAgICAgICAgc3Bh
Y2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWREZWxldGVyVGhyb3dpbmdFeGNlcHRpb24gPSBtYWtl
VW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uY2VsbEhl
YXBDZWxsVHlwZSwgSlNUZXN0TmFtZWREZWxldGVyVGhyb3dpbmdFeGNlcHRpb24pOworICAgICAg
ICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZERlbGV0ZXJUaHJvd2luZ0V4Y2VwdGlvbiA9
IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNl
bGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0TmFtZWREZWxldGVyVGhyb3dpbmdFeGNlcHRpb24pOwog
ICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWREZWxldGVyVGhy
b3dpbmdFeGNlcHRpb24uZ2V0KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxl
LWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRE
ZWxldGVyV2l0aElkZW50aWZpZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllci5j
cHAJKHJldmlzaW9uIDI4NjA0MykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTcyLDcgKzcyLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNl
KiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRf
SVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdE5hbWVkRGVsZXRlcldpdGhJZGVudGlmaWVyUHJv
dG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAg
ICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpT
Qzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC0y
NzAsOSArMjcwLDkgQEAgSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0TmFtZWREZWxldGVyV2l0aAog
ICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2Zf
djxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRp
Zmllcj4gfHwgIUpTVGVzdE5hbWVkRGVsZXRlcldpdGhJZGVudGlmaWVyOjpuZWVkc0Rlc3RydWN0
aW9uKTsKICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVj
dGlibGVPYmplY3QsIEpTVGVzdE5hbWVkRGVsZXRlcldpdGhJZGVudGlmaWVyPikKLSAgICAgICAg
c3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWREZWxldGVyV2l0aElkZW50aWZpZXIgPSBtYWtl
VW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uZGVzdHJ1
Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLCBKU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRpZmll
cik7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkRGVsZXRlcldpdGhJZGVu
dGlmaWVyID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVh
cCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCksIEpTVGVzdE5hbWVkRGVsZXRl
cldpdGhJZGVudGlmaWVyKTsKICAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9y
VGVzdE5hbWVkRGVsZXRlcldpdGhJZGVudGlmaWVyID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4g
SVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmNlbGxIZWFwQ2VsbFR5cGUsIEpTVGVzdE5h
bWVkRGVsZXRlcldpdGhJZGVudGlmaWVyKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JU
ZXN0TmFtZWREZWxldGVyV2l0aElkZW50aWZpZXIgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJ
U09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCksIEpTVGVzdE5h
bWVkRGVsZXRlcldpdGhJZGVudGlmaWVyKTsKICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1
YnNwYWNlRm9yVGVzdE5hbWVkRGVsZXRlcldpdGhJZGVudGlmaWVyLmdldCgpOwogSUdOT1JFX1dB
Uk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigi
dGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlcldpdGhJbmRleGVkR2V0dGVyLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
TmFtZWREZWxldGVyV2l0aEluZGV4ZWRHZXR0ZXIuY3BwCShyZXZpc2lvbiAyODYwNDMpCisrKyBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVy
V2l0aEluZGV4ZWRHZXR0ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02Niw3ICs2Niw3IEBAIHB1
YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYg
dm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShK
U1Rlc3ROYW1lZERlbGV0ZXJXaXRoSW5kZXhlZEdldHRlclByb3RvdHlwZSwgQmFzZSk7Ci0gICAg
ICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFp
bk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRl
U3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAtMjYyLDkgKzI2Miw5IEBAIEpTQzo6
SXNvU3Vic3BhY2UqIEpTVGVzdE5hbWVkRGVsZXRlcldpdGgKICAgICAgICAgcmV0dXJuIHNwYWNl
OwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJs
ZU9iamVjdCwgSlNUZXN0TmFtZWREZWxldGVyV2l0aEluZGV4ZWRHZXR0ZXI+IHx8ICFKU1Rlc3RO
YW1lZERlbGV0ZXJXaXRoSW5kZXhlZEdldHRlcjo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgaWYg
Y29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBK
U1Rlc3ROYW1lZERlbGV0ZXJXaXRoSW5kZXhlZEdldHRlcj4pCi0gICAgICAgIHNwYWNlcy5tX3N1
YnNwYWNlRm9yVGVzdE5hbWVkRGVsZXRlcldpdGhJbmRleGVkR2V0dGVyID0gbWFrZVVuaXF1ZTxJ
c29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmRlc3RydWN0aWJsZU9i
amVjdEhlYXBDZWxsVHlwZSwgSlNUZXN0TmFtZWREZWxldGVyV2l0aEluZGV4ZWRHZXR0ZXIpOwor
ICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZERlbGV0ZXJXaXRoSW5kZXhlZEdl
dHRlciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAs
IHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3ROYW1lZERlbGV0ZXJX
aXRoSW5kZXhlZEdldHRlcik7CiAgICAgZWxzZQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZv
clRlc3ROYW1lZERlbGV0ZXJXaXRoSW5kZXhlZEdldHRlciA9IG1ha2VVbmlxdWU8SXNvU3Vic3Bh
Y2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5jZWxsSGVhcENlbGxUeXBlLCBKU1Rl
c3ROYW1lZERlbGV0ZXJXaXRoSW5kZXhlZEdldHRlcik7CisgICAgICAgIHNwYWNlcy5tX3N1YnNw
YWNlRm9yVGVzdE5hbWVkRGVsZXRlcldpdGhJbmRleGVkR2V0dGVyID0gbWFrZVVuaXF1ZTxJc29T
dWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgp
LCBKU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSW5kZXhlZEdldHRlcik7CiAgICAgYXV0byogc3BhY2Ug
PSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZERlbGV0ZXJXaXRoSW5kZXhlZEdldHRlci5n
ZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVf
V0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEdldHRlckNhbGxXaXRoLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0TmFtZWRHZXR0ZXJDYWxsV2l0aC5jcHAJKHJldmlzaW9uIDI4NjA0MykKKysrIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEdldHRlckNhbGxX
aXRoLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjUsNyArNjUsNyBAQCBwdWJsaWM6CiAgICAgc3Rh
dGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAg
ICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0TmFtZWRHZXR0
ZXJDYWxsV2l0aFByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmpl
Y3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQog
ICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBK
U0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUp
CiAgICAgewpAQCAtMjIwLDkgKzIyMCw5IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdE5hbWVk
R2V0dGVyQ2FsbFcKICAgICAgICAgcmV0dXJuIHNwYWNlOwogICAgIHN0YXRpY19hc3NlcnQoc3Rk
Ojppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0TmFtZWRHZXR0
ZXJDYWxsV2l0aD4gfHwgIUpTVGVzdE5hbWVkR2V0dGVyQ2FsbFdpdGg6Om5lZWRzRGVzdHJ1Y3Rp
b24pOwogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0
aWJsZU9iamVjdCwgSlNUZXN0TmFtZWRHZXR0ZXJDYWxsV2l0aD4pCi0gICAgICAgIHNwYWNlcy5t
X3N1YnNwYWNlRm9yVGVzdE5hbWVkR2V0dGVyQ2FsbFdpdGggPSBtYWtlVW5pcXVlPElzb1N1YnNw
YWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVh
cENlbGxUeXBlLCBKU1Rlc3ROYW1lZEdldHRlckNhbGxXaXRoKTsKKyAgICAgICAgc3BhY2VzLm1f
c3Vic3BhY2VGb3JUZXN0TmFtZWRHZXR0ZXJDYWxsV2l0aCA9IG1ha2VVbmlxdWU8SXNvU3Vic3Bh
Y2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBD
ZWxsVHlwZSgpLCBKU1Rlc3ROYW1lZEdldHRlckNhbGxXaXRoKTsKICAgICBlbHNlCi0gICAgICAg
IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkR2V0dGVyQ2FsbFdpdGggPSBtYWtlVW5pcXVl
PElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uY2VsbEhlYXBDZWxs
VHlwZSwgSlNUZXN0TmFtZWRHZXR0ZXJDYWxsV2l0aCk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNw
YWNlRm9yVGVzdE5hbWVkR2V0dGVyQ2FsbFdpdGggPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJ
U09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCksIEpTVGVzdE5h
bWVkR2V0dGVyQ2FsbFdpdGgpOwogICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VG
b3JUZXN0TmFtZWRHZXR0ZXJDYWxsV2l0aC5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigi
dW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1j
b21wYXJlIikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3ROYW1lZEdldHRlck5vSWRlbnRpZmllci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkR2V0dGVyTm9JZGVudGlm
aWVyLmNwcAkocmV2aXNpb24gMjg2MDQzKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkR2V0dGVyTm9JZGVudGlmaWVyLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNjUsNyArNjUsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3Bh
Y2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VS
VF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0TmFtZWRHZXR0ZXJOb0lkZW50aWZpZXJQcm90
b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAg
ICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KICAgICBzdGF0aWMgSlND
OjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKQEAgLTIy
MCw5ICsyMjAsOSBAQCBKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3ROYW1lZEdldHRlck5vSWRlCiAg
ICAgICAgIHJldHVybiBzcGFjZTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92
PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdE5hbWVkR2V0dGVyTm9JZGVudGlmaWVy
PiB8fCAhSlNUZXN0TmFtZWRHZXR0ZXJOb0lkZW50aWZpZXI6Om5lZWRzRGVzdHJ1Y3Rpb24pOwog
ICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9i
amVjdCwgSlNUZXN0TmFtZWRHZXR0ZXJOb0lkZW50aWZpZXI+KQotICAgICAgICBzcGFjZXMubV9z
dWJzcGFjZUZvclRlc3ROYW1lZEdldHRlck5vSWRlbnRpZmllciA9IG1ha2VVbmlxdWU8SXNvU3Vi
c3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5kZXN0cnVjdGlibGVPYmplY3RI
ZWFwQ2VsbFR5cGUsIEpTVGVzdE5hbWVkR2V0dGVyTm9JZGVudGlmaWVyKTsKKyAgICAgICAgc3Bh
Y2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRHZXR0ZXJOb0lkZW50aWZpZXIgPSBtYWtlVW5pcXVl
PElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVP
YmplY3RIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0TmFtZWRHZXR0ZXJOb0lkZW50aWZpZXIpOwogICAg
IGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRHZXR0ZXJOb0lkZW50
aWZpZXIgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFw
LCAqdm0uY2VsbEhlYXBDZWxsVHlwZSwgSlNUZXN0TmFtZWRHZXR0ZXJOb0lkZW50aWZpZXIpOwor
ICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZEdldHRlck5vSWRlbnRpZmllciA9
IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNl
bGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0TmFtZWRHZXR0ZXJOb0lkZW50aWZpZXIpOwogICAgIGF1
dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRHZXR0ZXJOb0lkZW50aWZp
ZXIuZ2V0KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdO
T1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRHZXR0ZXJXaXRoSWRl
bnRpZmllci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE5hbWVkR2V0dGVyV2l0aElkZW50aWZpZXIuY3BwCShyZXZpc2lvbiAy
ODYwNDMpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
TmFtZWRHZXR0ZXJXaXRoSWRlbnRpZmllci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcwLDcgKzcw
LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihK
U0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NI
QVJBQkxFKEpTVGVzdE5hbWVkR2V0dGVyV2l0aElkZW50aWZpZXJQcm90b3R5cGUsIEJhc2UpOwot
ICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0u
cGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNy
ZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKQEAgLTI0Niw5ICsyNDYsOSBAQCBK
U0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3ROYW1lZEdldHRlcldpdGhJCiAgICAgICAgIHJldHVybiBz
cGFjZTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVj
dGlibGVPYmplY3QsIEpTVGVzdE5hbWVkR2V0dGVyV2l0aElkZW50aWZpZXI+IHx8ICFKU1Rlc3RO
YW1lZEdldHRlcldpdGhJZGVudGlmaWVyOjpuZWVkc0Rlc3RydWN0aW9uKTsKICAgICBpZiBjb25z
dGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVz
dE5hbWVkR2V0dGVyV2l0aElkZW50aWZpZXI+KQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZv
clRlc3ROYW1lZEdldHRlcldpdGhJZGVudGlmaWVyID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4g
SVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxs
VHlwZSwgSlNUZXN0TmFtZWRHZXR0ZXJXaXRoSWRlbnRpZmllcik7CisgICAgICAgIHNwYWNlcy5t
X3N1YnNwYWNlRm9yVGVzdE5hbWVkR2V0dGVyV2l0aElkZW50aWZpZXIgPSBtYWtlVW5pcXVlPElz
b1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmpl
Y3RIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0TmFtZWRHZXR0ZXJXaXRoSWRlbnRpZmllcik7CiAgICAg
ZWxzZQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZEdldHRlcldpdGhJZGVu
dGlmaWVyID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVh
cCwgKnZtLmNlbGxIZWFwQ2VsbFR5cGUsIEpTVGVzdE5hbWVkR2V0dGVyV2l0aElkZW50aWZpZXIp
OworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZEdldHRlcldpdGhJZGVudGlm
aWVyID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwg
dm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3ROYW1lZEdldHRlcldpdGhJZGVudGlmaWVyKTsK
ICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkR2V0dGVyV2l0
aElkZW50aWZpZXIuZ2V0KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNv
ZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0
ZXJOb0lkZW50aWZpZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlck5vSWRlbnRpZmllci5jcHAJKHJldmlz
aW9uIDI4NjA0MykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3ROYW1lZFNldHRlck5vSWRlbnRpZmllci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY1LDcg
KzY1LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZv
cihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNF
X1NIQVJBQkxFKEpTVGVzdE5hbWVkU2V0dGVyTm9JZGVudGlmaWVyUHJvdG90eXBlLCBCYXNlKTsK
LSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZt
LnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBj
cmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC0zMDAsOSArMzAwLDkgQEAg
SlNDOjpJc29TdWJzcGFjZSogSlNUZXN0TmFtZWRTZXR0ZXJOb0lkZQogICAgICAgICByZXR1cm4g
c3BhY2U7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1
Y3RpYmxlT2JqZWN0LCBKU1Rlc3ROYW1lZFNldHRlck5vSWRlbnRpZmllcj4gfHwgIUpTVGVzdE5h
bWVkU2V0dGVyTm9JZGVudGlmaWVyOjpuZWVkc0Rlc3RydWN0aW9uKTsKICAgICBpZiBjb25zdGV4
cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdE5h
bWVkU2V0dGVyTm9JZGVudGlmaWVyPikKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0
TmFtZWRTZXR0ZXJOb0lkZW50aWZpZXIgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VC
U1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLCBK
U1Rlc3ROYW1lZFNldHRlck5vSWRlbnRpZmllcik7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNl
Rm9yVGVzdE5hbWVkU2V0dGVyTm9JZGVudGlmaWVyID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4g
SVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxU
eXBlKCksIEpTVGVzdE5hbWVkU2V0dGVyTm9JZGVudGlmaWVyKTsKICAgICBlbHNlCi0gICAgICAg
IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkU2V0dGVyTm9JZGVudGlmaWVyID0gbWFrZVVu
aXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmNlbGxIZWFw
Q2VsbFR5cGUsIEpTVGVzdE5hbWVkU2V0dGVyTm9JZGVudGlmaWVyKTsKKyAgICAgICAgc3BhY2Vz
Lm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRTZXR0ZXJOb0lkZW50aWZpZXIgPSBtYWtlVW5pcXVlPElz
b1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBl
KCksIEpTVGVzdE5hbWVkU2V0dGVyTm9JZGVudGlmaWVyKTsKICAgICBhdXRvKiBzcGFjZSA9IHNw
YWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkU2V0dGVyTm9JZGVudGlmaWVyLmdldCgpOwogSUdO
T1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKIElHTk9SRV9XQVJOSU5HU19C
RUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24uY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3ROYW1lZFNldHRlclRocm93aW5nRXhjZXB0aW9uLmNwcAkocmV2aXNpb24gMjg2MDQzKQor
KysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0
dGVyVGhyb3dpbmdFeGNlcHRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NSw3ICs2NSw3IEBA
IHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpW
TSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJM
RShKU1Rlc3ROYW1lZFNldHRlclRocm93aW5nRXhjZXB0aW9uUHJvdG90eXBlLCBCYXNlKTsKLSAg
ICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBs
YWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVh
dGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC0zMDAsOSArMzAwLDkgQEAgSlND
OjpJc29TdWJzcGFjZSogSlNUZXN0TmFtZWRTZXR0ZXJUaHJvdwogICAgICAgICByZXR1cm4gc3Bh
Y2U7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3Rp
YmxlT2JqZWN0LCBKU1Rlc3ROYW1lZFNldHRlclRocm93aW5nRXhjZXB0aW9uPiB8fCAhSlNUZXN0
TmFtZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbjo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgaWYg
Y29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBK
U1Rlc3ROYW1lZFNldHRlclRocm93aW5nRXhjZXB0aW9uPikKLSAgICAgICAgc3BhY2VzLm1fc3Vi
c3BhY2VGb3JUZXN0TmFtZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbiA9IG1ha2VVbmlxdWU8SXNv
U3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5kZXN0cnVjdGlibGVPYmpl
Y3RIZWFwQ2VsbFR5cGUsIEpTVGVzdE5hbWVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24pOworICAg
ICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZFNldHRlclRocm93aW5nRXhjZXB0aW9u
ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0u
ZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCksIEpTVGVzdE5hbWVkU2V0dGVyVGhyb3dp
bmdFeGNlcHRpb24pOwogICAgIGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0
TmFtZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbiA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElT
T19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5jZWxsSGVhcENlbGxUeXBlLCBKU1Rlc3ROYW1l
ZFNldHRlclRocm93aW5nRXhjZXB0aW9uKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JU
ZXN0TmFtZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbiA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+
IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0
TmFtZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbik7CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMu
bV9zdWJzcGFjZUZvclRlc3ROYW1lZFNldHRlclRocm93aW5nRXhjZXB0aW9uLmdldCgpOwogSUdO
T1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKIElHTk9SRV9XQVJOSU5HU19C
RUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aElkZW50aWZpZXIuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3ROYW1lZFNldHRlcldpdGhJZGVudGlmaWVyLmNwcAkocmV2aXNpb24gMjg2MDQzKQorKysgU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0
aElkZW50aWZpZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03Miw3ICs3Miw3IEBAIHB1YmxpYzoK
ICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAg
ICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3RO
YW1lZFNldHRlcldpdGhJZGVudGlmaWVyUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJu
ICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3Bh
Y2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUo
SlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1Zh
bHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC0zMzEsOSArMzMxLDkgQEAgSlNDOjpJc29TdWJzcGFj
ZSogSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSQogICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAgc3Rh
dGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBK
U1Rlc3ROYW1lZFNldHRlcldpdGhJZGVudGlmaWVyPiB8fCAhSlNUZXN0TmFtZWRTZXR0ZXJXaXRo
SWRlbnRpZmllcjo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3RleHByIChzdGQ6Omlz
X2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3ROYW1lZFNldHRlcldp
dGhJZGVudGlmaWVyPikKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRTZXR0
ZXJXaXRoSWRlbnRpZmllciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9J
TklUKHZtLmhlYXAsICp2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUsIEpTVGVzdE5h
bWVkU2V0dGVyV2l0aElkZW50aWZpZXIpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRl
c3ROYW1lZFNldHRlcldpdGhJZGVudGlmaWVyID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNP
X1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBl
KCksIEpTVGVzdE5hbWVkU2V0dGVyV2l0aElkZW50aWZpZXIpOwogICAgIGVsc2UKLSAgICAgICAg
c3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmllciA9IG1ha2VV
bmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5jZWxsSGVh
cENlbGxUeXBlLCBKU1Rlc3ROYW1lZFNldHRlcldpdGhJZGVudGlmaWVyKTsKKyAgICAgICAgc3Bh
Y2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmllciA9IG1ha2VVbmlx
dWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2Vs
bFR5cGUoKSwgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmllcik7CiAgICAgYXV0byogc3Bh
Y2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZFNldHRlcldpdGhJZGVudGlmaWVyLmdl
dCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKIElHTk9SRV9X
QVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRleDogU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRH
ZXR0ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyLmNwcAkocmV2aXNpb24g
Mjg2MDQzKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NSw3
ICs3NSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VG
b3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFD
RV9TSEFSQUJMRShKU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyUHJvdG90eXBlLCBC
YXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1
cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0
dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC0zNzgsOSArMzc4
LDkgQEAgSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSQogICAgICAgICBy
ZXR1cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpT
RGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyPiB8
fCAhSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlcjo6bmVlZHNEZXN0cnVjdGlvbik7
CiAgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxl
T2JqZWN0LCBKU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyPikKLSAgICAgICAgc3Bh
Y2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlciA9IG1ha2VV
bmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5kZXN0cnVj
dGlibGVPYmplY3RIZWFwQ2VsbFR5cGUsIEpTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0
ZXIpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZFNldHRlcldpdGhJbmRl
eGVkR2V0dGVyID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0u
aGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCksIEpTVGVzdE5hbWVkU2V0
dGVyV2l0aEluZGV4ZWRHZXR0ZXIpOwogICAgIGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vic3Bh
Y2VGb3JUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlciA9IG1ha2VVbmlxdWU8SXNvU3Vi
c3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5jZWxsSGVhcENlbGxUeXBlLCBK
U1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vi
c3BhY2VGb3JUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlciA9IG1ha2VVbmlxdWU8SXNv
U3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUo
KSwgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlcik7CiAgICAgYXV0byogc3BhY2Ug
PSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyLmdl
dCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKIElHTk9SRV9X
QVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRleDogU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRH
ZXR0ZXJBbmRTZXR0ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQW5kU2V0
dGVyLmNwcAkocmV2aXNpb24gMjg2MDQzKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0ZXIu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NSw3ICs3NSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMg
SlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAgICAg
ICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3ROYW1lZFNldHRlcldp
dGhJbmRleGVkR2V0dGVyQW5kU2V0dGVyUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJu
ICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3Bh
Y2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUo
SlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1Zh
bHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC00MjgsOSArNDI4LDkgQEAgSlNDOjpJc29TdWJzcGFj
ZSogSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSQogICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAgc3Rh
dGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBK
U1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQW5kU2V0dGVyPiB8fCAhSlNUZXN0TmFt
ZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlckFuZFNldHRlcjo6bmVlZHNEZXN0cnVjdGlvbik7CiAg
ICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2Jq
ZWN0LCBKU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQW5kU2V0dGVyPikKLSAgICAg
ICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlckFu
ZFNldHRlciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhl
YXAsICp2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUsIEpTVGVzdE5hbWVkU2V0dGVy
V2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0ZXIpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZv
clRlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQW5kU2V0dGVyID0gbWFrZVVuaXF1ZTxJ
c29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2Jq
ZWN0SGVhcENlbGxUeXBlKCksIEpTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRT
ZXR0ZXIpOwogICAgIGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRT
ZXR0ZXJXaXRoSW5kZXhlZEdldHRlckFuZFNldHRlciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+
IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5jZWxsSGVhcENlbGxUeXBlLCBKU1Rlc3RO
YW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQW5kU2V0dGVyKTsKKyAgICAgICAgc3BhY2VzLm1f
c3Vic3BhY2VGb3JUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlckFuZFNldHRlciA9IG1h
a2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxI
ZWFwQ2VsbFR5cGUoKSwgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlckFuZFNldHRl
cik7CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZFNldHRl
cldpdGhJbmRleGVkR2V0dGVyQW5kU2V0dGVyLmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lO
KCJ1bnJlYWNoYWJsZS1jb2RlIikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2Fs
LWNvbXBhcmUiKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1l
ZFNldHRlcldpdGhMZWdhY3lPdmVycmlkZUJ1aWx0SW5zLmNwcAkocmV2aXNpb24gMjg2MDQzKQor
KysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0
dGVyV2l0aExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NSw3
ICs2NSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VG
b3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFD
RV9TSEFSQUJMRShKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lPdmVycmlkZUJ1aWx0SW5zUHJv
dG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAg
ICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpT
Qzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC0y
NzcsOSArMjc3LDkgQEAgSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTAog
ICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2Zf
djxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lP
dmVycmlkZUJ1aWx0SW5zPiB8fCAhSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5T3ZlcnJpZGVC
dWlsdEluczo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jh
c2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3ROYW1lZFNldHRlcldpdGhM
ZWdhY3lPdmVycmlkZUJ1aWx0SW5zPikKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0
TmFtZWRTZXR0ZXJXaXRoTGVnYWN5T3ZlcnJpZGVCdWlsdElucyA9IG1ha2VVbmlxdWU8SXNvU3Vi
c3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5kZXN0cnVjdGlibGVPYmplY3RI
ZWFwQ2VsbFR5cGUsIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMp
OworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lP
dmVycmlkZUJ1aWx0SW5zID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lO
SVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCksIEpTVGVzdE5h
bWVkU2V0dGVyV2l0aExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMpOwogICAgIGVsc2UKLSAgICAgICAg
c3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5T3ZlcnJpZGVCdWls
dElucyA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAs
ICp2bS5jZWxsSGVhcENlbGxUeXBlLCBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lPdmVycmlk
ZUJ1aWx0SW5zKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRTZXR0ZXJX
aXRoTGVnYWN5T3ZlcnJpZGVCdWlsdElucyA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19T
VUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0TmFtZWRT
ZXR0ZXJXaXRoTGVnYWN5T3ZlcnJpZGVCdWlsdElucyk7CiAgICAgYXV0byogc3BhY2UgPSBzcGFj
ZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lPdmVycmlkZUJ1aWx0SW5z
LmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKIElHTk9S
RV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRleDogU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2Fj
eVVuZm9yZ2VhYmxlUHJvcGVydGllcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9y
Z2VhYmxlUHJvcGVydGllcy5jcHAJKHJldmlzaW9uIDI4NjA0MykKKysrIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZv
cmdlYWJsZVByb3BlcnRpZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NCw3ICs3NCw3IEBAIHB1
YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYg
dm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShK
U1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNQcm90b3R5cGUs
IEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJl
dHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1
Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKQEAgLTM2MSw5ICsz
NjEsOSBAQCBKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3ROYW1lZFNldHRlcldpdGhMCiAgICAgICAg
IHJldHVybiBzcGFjZTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6
SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2Vh
YmxlUHJvcGVydGllcz4gfHwgIUpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxl
UHJvcGVydGllczo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3RleHByIChzdGQ6Omlz
X2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3ROYW1lZFNldHRlcldp
dGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXM+KQotICAgICAgICBzcGFjZXMubV9zdWJzcGFj
ZUZvclRlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXMgPSBtYWtl
VW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uZGVzdHJ1
Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLCBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZv
cmdlYWJsZVByb3BlcnRpZXMpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1l
ZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXMgPSBtYWtlVW5pcXVlPElzb1N1
YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RI
ZWFwQ2VsbFR5cGUoKSwgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9w
ZXJ0aWVzKTsKICAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVk
U2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllcyA9IG1ha2VVbmlxdWU8SXNvU3Vi
c3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5jZWxsSGVhcENlbGxUeXBlLCBK
U1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXMpOworICAgICAg
ICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJs
ZVByb3BlcnRpZXMgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2
bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCksIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2Fj
eVVuZm9yZ2VhYmxlUHJvcGVydGllcyk7CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJz
cGFjZUZvclRlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXMuZ2V0
KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dB
Uk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5m
b3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdElucy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVk
U2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVp
bHRJbnMuY3BwCShyZXZpc2lvbiAyODYwNDMpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9w
ZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdElucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc0
LDcgKzc0LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFj
ZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQ
QUNFX1NIQVJBQkxFKEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVy
dGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnNQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICBy
ZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmpl
Y3RTcGFjZSgpOwogICAgIH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVj
dHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6
OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKQEAgLTMzOCw5ICszMzgsOSBAQCBKU0M6Oklzb1N1
YnNwYWNlKiBKU1Rlc3ROYW1lZFNldHRlcldpdGhMCiAgICAgICAgIHJldHVybiBzcGFjZTsKICAg
ICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmpl
Y3QsIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExl
Z2FjeU92ZXJyaWRlQnVpbHRJbnM+IHx8ICFKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZv
cmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zOjpuZWVkc0Rlc3RydWN0
aW9uKTsKICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVj
dGlibGVPYmplY3QsIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVy
dGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM+KQotICAgICAgICBzcGFjZXMubV9zdWJzcGFj
ZUZvclRlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdh
Y3lPdmVycmlkZUJ1aWx0SW5zID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNF
X0lOSVQodm0uaGVhcCwgKnZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSwgSlNUZXN0
TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJp
ZGVCdWlsdElucyk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkU2V0dGVy
V2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMg
PSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5k
ZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVn
YWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdElucyk7CiAgICAg
ZWxzZQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZFNldHRlcldpdGhMZWdh
Y3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zID0gbWFrZVVu
aXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmNlbGxIZWFw
Q2VsbFR5cGUsIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGll
c0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZv
clRlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lP
dmVycmlkZUJ1aWx0SW5zID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lO
SVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3ROYW1lZFNldHRlcldpdGhM
ZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zKTsKICAg
ICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkU2V0dGVyV2l0aExl
Z2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMuZ2V0KCk7
CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5J
TkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZXNwYWNlT2JqZWN0LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFt
ZXNwYWNlT2JqZWN0LmNwcAkocmV2aXNpb24gMjg2MDQzKQorKysgU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVzcGFjZU9iamVjdC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTI4MCw5ICsyODAsOSBAQCBKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3ROYW1lc3Bh
Y2VPYmplY3Q6CiAgICAgICAgIHJldHVybiBzcGFjZTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6
aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdE5hbWVzcGFjZU9i
amVjdD4gfHwgIUpTVGVzdE5hbWVzcGFjZU9iamVjdDo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAg
aWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0
LCBKU1Rlc3ROYW1lc3BhY2VPYmplY3Q+KQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRl
c3ROYW1lc3BhY2VPYmplY3QgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0Vf
SU5JVCh2bS5oZWFwLCAqdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLCBKU1Rlc3RO
YW1lc3BhY2VPYmplY3QpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lc3Bh
Y2VPYmplY3QgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5o
ZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0TmFtZXNwYWNl
T2JqZWN0KTsKICAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVz
cGFjZU9iamVjdCA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZt
LmhlYXAsICp2bS5jZWxsSGVhcENlbGxUeXBlLCBKU1Rlc3ROYW1lc3BhY2VPYmplY3QpOworICAg
ICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lc3BhY2VPYmplY3QgPSBtYWtlVW5pcXVl
PElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxU
eXBlKCksIEpTVGVzdE5hbWVzcGFjZU9iamVjdCk7CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMu
bV9zdWJzcGFjZUZvclRlc3ROYW1lc3BhY2VPYmplY3QuZ2V0KCk7CiBJR05PUkVfV0FSTklOR1Nf
QkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xv
Z2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0Tm9kZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5vZGUuY3BwCShyZXZpc2lvbiAyODYwNDMpCisrKyBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Tm9kZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTk1LDcgKzk1LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklz
b1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJ
Q19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdE5vZGVQcm90b3R5cGUsIEJhc2Up
OwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAm
dm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUq
IGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKQEAgLTQwNSw5ICs0MDUsOSBA
QCBwdWJsaWM6CiAgICAgICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAgICAgIHN0YXRpY19hc3Nl
cnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgVGVzdE5vZGVJ
dGVyYXRvcj4gfHwgIVRlc3ROb2RlSXRlcmF0b3I6Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAgICAg
ICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmpl
Y3QsIFRlc3ROb2RlSXRlcmF0b3I+KQotICAgICAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JU
ZXN0Tm9kZUl0ZXJhdG9yID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lO
SVQodm0uaGVhcCwgKnZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5nZXQoKSwgVGVz
dE5vZGVJdGVyYXRvcik7CisgICAgICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROb2Rl
SXRlcmF0b3IgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5o
ZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwgVGVzdE5vZGVJdGVyYXRv
cik7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5v
ZGVJdGVyYXRvciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZt
LmhlYXAsICp2bS5jZWxsSGVhcENlbGxUeXBlLCBUZXN0Tm9kZUl0ZXJhdG9yKTsKKyAgICAgICAg
ICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5vZGVJdGVyYXRvciA9IG1ha2VVbmlxdWU8SXNv
U3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUo
KSwgVGVzdE5vZGVJdGVyYXRvcik7CiAgICAgICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vi
c3BhY2VGb3JUZXN0Tm9kZUl0ZXJhdG9yLmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1
bnJlYWNoYWJsZS1jb2RlIikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNv
bXBhcmUiKQpAQCAtNDk3LDkgKzQ5Nyw5IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdE5vZGU6
OnN1YnNwYWNlRm8KICAgICAgICAgcmV0dXJuIHNwYWNlOwogICAgIHN0YXRpY19hc3NlcnQoc3Rk
Ojppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0Tm9kZT4gfHwg
IUpTVGVzdE5vZGU6Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjpp
c19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0Tm9kZT4pCi0gICAg
ICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5vZGUgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNl
PiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENl
bGxUeXBlLCBKU1Rlc3ROb2RlKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0Tm9k
ZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZt
LmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3ROb2RlKTsKICAgICBlbHNl
Ci0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5vZGUgPSBtYWtlVW5pcXVlPElzb1N1
YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uY2VsbEhlYXBDZWxsVHlwZSwg
SlNUZXN0Tm9kZSk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5vZGUgPSBtYWtl
VW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVh
cENlbGxUeXBlKCksIEpTVGVzdE5vZGUpOwogICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vi
c3BhY2VGb3JUZXN0Tm9kZS5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFi
bGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmou
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RPYmouY3BwCShyZXZpc2lvbiAyODYwNDMpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTg2
Niw3ICsxODY2LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJz
cGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NV
QlNQQUNFX1NIQVJBQkxFKEpTVGVzdE9ialByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVy
biAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNw
YWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJl
KEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNW
YWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAtOTAwNiw5ICs5MDA2LDkgQEAgSlNDOjpJc29TdWJz
cGFjZSogSlNUZXN0T2JqOjpzdWJzcGFjZUZvcgogICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAg
c3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0
LCBKU1Rlc3RPYmo+IHx8ICFKU1Rlc3RPYmo6Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNv
bnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNU
ZXN0T2JqPikKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0T2JqID0gbWFrZVVuaXF1
ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmRlc3RydWN0aWJs
ZU9iamVjdEhlYXBDZWxsVHlwZSwgSlNUZXN0T2JqKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3Bh
Y2VGb3JUZXN0T2JqID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQo
dm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCksIEpTVGVzdE9iaik7
CiAgICAgZWxzZQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RPYmogPSBtYWtlVW5p
cXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uY2VsbEhlYXBD
ZWxsVHlwZSwgSlNUZXN0T2JqKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0T2Jq
ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0u
Y2VsbEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RPYmopOwogICAgIGF1dG8qIHNwYWNlID0gc3BhY2Vz
Lm1fc3Vic3BhY2VGb3JUZXN0T2JqLmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJl
YWNoYWJsZS1jb2RlIikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBh
cmUiKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dE9wZXJhdGlvbkNvbmRpdGlvbmFsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3BlcmF0aW9uQ29uZGl0aW9uYWwuY3BwCShy
ZXZpc2lvbiAyODYwNDMpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0T3BlcmF0aW9uQ29uZGl0aW9uYWwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04MSw3
ICs4MSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VG
b3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFD
RV9TSEFSQUJMRShKU1Rlc3RPcGVyYXRpb25Db25kaXRpb25hbFByb3RvdHlwZSwgQmFzZSk7Ci0g
ICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5w
bGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3Jl
YXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAtMjM0LDkgKzIzNCw5IEBAIEpT
Qzo6SXNvU3Vic3BhY2UqIEpTVGVzdE9wZXJhdGlvbkNvbmRpdGkKICAgICAgICAgcmV0dXJuIHNw
YWNlOwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0
aWJsZU9iamVjdCwgSlNUZXN0T3BlcmF0aW9uQ29uZGl0aW9uYWw+IHx8ICFKU1Rlc3RPcGVyYXRp
b25Db25kaXRpb25hbDo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3RleHByIChzdGQ6
OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RPcGVyYXRpb25D
b25kaXRpb25hbD4pCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE9wZXJhdGlvbkNv
bmRpdGlvbmFsID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0u
aGVhcCwgKnZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSwgSlNUZXN0T3BlcmF0aW9u
Q29uZGl0aW9uYWwpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RPcGVyYXRpb25D
b25kaXRpb25hbCA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZt
LmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RPcGVyYXRp
b25Db25kaXRpb25hbCk7CiAgICAgZWxzZQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRl
c3RPcGVyYXRpb25Db25kaXRpb25hbCA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJT
UEFDRV9JTklUKHZtLmhlYXAsICp2bS5jZWxsSGVhcENlbGxUeXBlLCBKU1Rlc3RPcGVyYXRpb25D
b25kaXRpb25hbCk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE9wZXJhdGlvbkNv
bmRpdGlvbmFsID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0u
aGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RPcGVyYXRpb25Db25kaXRpb25hbCk7
CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RPcGVyYXRpb25Db25k
aXRpb25hbC5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIp
CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVybG9hZGVkQ29u
c3RydWN0b3JzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5jcHAJKHJldmlzaW9uIDI4
NjA0MykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RP
dmVybG9hZGVkQ29uc3RydWN0b3JzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjksNyArNjksNyBA
QCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6
Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFC
TEUoSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1Byb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAg
IHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9i
amVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3Ry
dWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpT
Qzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAtMjk1LDkgKzI5NSw5IEBAIEpTQzo6SXNv
U3Vic3BhY2UqIEpTVGVzdE92ZXJsb2FkZWRDb25zdHIKICAgICAgICAgcmV0dXJuIHNwYWNlOwog
ICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9i
amVjdCwgSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycz4gfHwgIUpTVGVzdE92ZXJsb2FkZWRD
b25zdHJ1Y3RvcnM6Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjpp
c19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0T3ZlcmxvYWRlZENv
bnN0cnVjdG9ycz4pCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE92ZXJsb2FkZWRD
b25zdHJ1Y3RvcnMgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2
bS5oZWFwLCAqdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLCBKU1Rlc3RPdmVybG9h
ZGVkQ29uc3RydWN0b3JzKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0T3Zlcmxv
YWRlZENvbnN0cnVjdG9ycyA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9J
TklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RP
dmVybG9hZGVkQ29uc3RydWN0b3JzKTsKICAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNw
YWNlRm9yVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNl
PiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uY2VsbEhlYXBDZWxsVHlwZSwgSlNUZXN0
T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVz
dE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VC
U1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCksIEpTVGVzdE92ZXJsb2Fk
ZWRDb25zdHJ1Y3RvcnMpOwogICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JU
ZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigi
dW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1j
b21wYXJlIikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzV2l0aFNlcXVlbmNlLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcmxvYWRl
ZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5jZS5jcHAJKHJldmlzaW9uIDI4NjA0MykKKysrIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVybG9hZGVkQ29uc3Ry
dWN0b3JzV2l0aFNlcXVlbmNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjgsNyArNjgsNyBAQCBw
dWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0m
IHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUo
SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5jZVByb3RvdHlwZSwgQmFzZSk7
Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2
bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSog
Y3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAtMjM4LDkgKzIzOCw5IEBA
IEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdE92ZXJsb2FkZWRDb25zdHIKICAgICAgICAgcmV0dXJu
IHNwYWNlOwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3Ry
dWN0aWJsZU9iamVjdCwgSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5jZT4g
fHwgIUpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2U6Om5lZWRzRGVzdHJ1
Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3Ry
dWN0aWJsZU9iamVjdCwgSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5jZT4p
Ci0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNX
aXRoU2VxdWVuY2UgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2
bS5oZWFwLCAqdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLCBKU1Rlc3RPdmVybG9h
ZGVkQ29uc3RydWN0b3JzV2l0aFNlcXVlbmNlKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VG
b3JUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5jZSA9IG1ha2VVbmlxdWU8SXNv
U3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVj
dEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzV2l0aFNlcXVlbmNl
KTsKICAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE92ZXJsb2FkZWRD
b25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2UgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VC
U1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uY2VsbEhlYXBDZWxsVHlwZSwgSlNUZXN0T3ZlcmxvYWRl
ZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5jZSk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9y
VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2UgPSBtYWtlVW5pcXVlPElzb1N1
YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCks
IEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2UpOwogICAgIGF1dG8qIHNw
YWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dpdGhT
ZXF1ZW5jZS5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIp
CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RQbHVnaW5JbnRlcmZh
Y2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RQbHVnaW5JbnRlcmZhY2UuY3BwCShyZXZpc2lvbiAyODYwNDMpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0UGx1Z2luSW50ZXJmYWNl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjQsNyArNjQsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGlj
IEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAg
ICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0UGx1Z2luSW50ZXJm
YWNlUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNl
OworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3Rh
dGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7
CkBAIC0yNDQsOSArMjQ0LDkgQEAgSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0UGx1Z2luSW50ZXJm
YWNlOgogICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jh
c2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RQbHVnaW5JbnRlcmZhY2U+
IHx8ICFKU1Rlc3RQbHVnaW5JbnRlcmZhY2U6Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNv
bnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNU
ZXN0UGx1Z2luSW50ZXJmYWNlPikKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0UGx1
Z2luSW50ZXJmYWNlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQo
dm0uaGVhcCwgKnZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSwgSlNUZXN0UGx1Z2lu
SW50ZXJmYWNlKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0UGx1Z2luSW50ZXJm
YWNlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwg
dm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCksIEpTVGVzdFBsdWdpbkludGVyZmFj
ZSk7CiAgICAgZWxzZQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RQbHVnaW5JbnRl
cmZhY2UgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFw
LCAqdm0uY2VsbEhlYXBDZWxsVHlwZSwgSlNUZXN0UGx1Z2luSW50ZXJmYWNlKTsKKyAgICAgICAg
c3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0UGx1Z2luSW50ZXJmYWNlID0gbWFrZVVuaXF1ZTxJc29T
dWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgp
LCBKU1Rlc3RQbHVnaW5JbnRlcmZhY2UpOwogICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vi
c3BhY2VGb3JUZXN0UGx1Z2luSW50ZXJmYWNlLmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lO
KCJ1bnJlYWNoYWJsZS1jb2RlIikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2Fs
LWNvbXBhcmUiKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFByb21pc2VSZWplY3Rpb25FdmVu
dC5jcHAJKHJldmlzaW9uIDI4NjA0MykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xNDgsNyArMTQ4LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNl
KiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRf
SVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudFByb3RvdHlw
ZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAg
cmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0
cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAtMzAxLDkg
KzMwMSw5IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdFByb21pc2VSZWplY3Rpb24KICAgICAg
ICAgcmV0dXJuIHNwYWNlOwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlND
OjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50PiB8fCAh
SlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50OjpuZWVkc0Rlc3RydWN0aW9uKTsKICAgICBpZiBj
b25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpT
VGVzdFByb21pc2VSZWplY3Rpb25FdmVudD4pCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9y
VGVzdFByb21pc2VSZWplY3Rpb25FdmVudCA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19T
VUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUs
IEpTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudCk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNl
Rm9yVGVzdFByb21pc2VSZWplY3Rpb25FdmVudCA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElT
T19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlw
ZSgpLCBKU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQpOwogICAgIGVsc2UKLSAgICAgICAgc3Bh
Y2VzLm1fc3Vic3BhY2VGb3JUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50ID0gbWFrZVVuaXF1ZTxJ
c29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmNlbGxIZWFwQ2VsbFR5
cGUsIEpTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudCk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNw
YWNlRm9yVGVzdFByb21pc2VSZWplY3Rpb25FdmVudCA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+
IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0
UHJvbWlzZVJlamVjdGlvbkV2ZW50KTsKICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNw
YWNlRm9yVGVzdFByb21pc2VSZWplY3Rpb25FdmVudC5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19C
RUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9n
aWNhbC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RSZWFkT25seU1hcExpa2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RSZWFkT25seU1hcExpa2UuY3BwCShy
ZXZpc2lvbiAyODYwNDMpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0UmVhZE9ubHlNYXBMaWtlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzksNyArNzks
NyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpT
Qzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hB
UkFCTEUoSlNUZXN0UmVhZE9ubHlNYXBMaWtlUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0
dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0
U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1
cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpK
U1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC0zMDUsOSArMzA1LDkgQEAgSlNDOjpJc29TdWJz
cGFjZSogSlNUZXN0UmVhZE9ubHlNYXBMaWtlOgogICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAg
c3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0
LCBKU1Rlc3RSZWFkT25seU1hcExpa2U+IHx8ICFKU1Rlc3RSZWFkT25seU1hcExpa2U6Om5lZWRz
RGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpK
U0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0UmVhZE9ubHlNYXBMaWtlPikKLSAgICAgICAgc3Bh
Y2VzLm1fc3Vic3BhY2VGb3JUZXN0UmVhZE9ubHlNYXBMaWtlID0gbWFrZVVuaXF1ZTxJc29TdWJz
cGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmRlc3RydWN0aWJsZU9iamVjdEhl
YXBDZWxsVHlwZSwgSlNUZXN0UmVhZE9ubHlNYXBMaWtlKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vi
c3BhY2VGb3JUZXN0UmVhZE9ubHlNYXBMaWtlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNP
X1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBl
KCksIEpTVGVzdFJlYWRPbmx5TWFwTGlrZSk7CiAgICAgZWxzZQotICAgICAgICBzcGFjZXMubV9z
dWJzcGFjZUZvclRlc3RSZWFkT25seU1hcExpa2UgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJ
U09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uY2VsbEhlYXBDZWxsVHlwZSwgSlNUZXN0UmVh
ZE9ubHlNYXBMaWtlKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0UmVhZE9ubHlN
YXBMaWtlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVh
cCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RSZWFkT25seU1hcExpa2UpOwogICAgIGF1
dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0UmVhZE9ubHlNYXBMaWtlLmdldCgp
OwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKIElHTk9SRV9XQVJO
SU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRleDogU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFJlYWRPbmx5U2V0TGlrZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFJl
YWRPbmx5U2V0TGlrZS5jcHAJKHJldmlzaW9uIDI4NjA0MykKKysrIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RSZWFkT25seVNldExpa2UuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC03OCw3ICs3OCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJz
cGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNT
RVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3RSZWFkT25seVNldExpa2VQcm90b3R5cGUs
IEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJl
dHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1
Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKQEAgLTI4NCw5ICsy
ODQsOSBAQCBKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3RSZWFkT25seVNldExpa2U6CiAgICAgICAg
IHJldHVybiBzcGFjZTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6
SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdFJlYWRPbmx5U2V0TGlrZT4gfHwgIUpTVGVzdFJl
YWRPbmx5U2V0TGlrZTo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3RleHByIChzdGQ6
OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RSZWFkT25seVNl
dExpa2U+KQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RSZWFkT25seVNldExpa2Ug
PSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0u
ZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLCBKU1Rlc3RSZWFkT25seVNldExpa2UpOwor
ICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RSZWFkT25seVNldExpa2UgPSBtYWtlVW5p
cXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGli
bGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0UmVhZE9ubHlTZXRMaWtlKTsKICAgICBlbHNl
Ci0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFJlYWRPbmx5U2V0TGlrZSA9IG1ha2VV
bmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5jZWxsSGVh
cENlbGxUeXBlLCBKU1Rlc3RSZWFkT25seVNldExpa2UpOworICAgICAgICBzcGFjZXMubV9zdWJz
cGFjZUZvclRlc3RSZWFkT25seVNldExpa2UgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09f
U1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCksIEpTVGVzdFJlYWRP
bmx5U2V0TGlrZSk7CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RS
ZWFkT25seVNldExpa2UuZ2V0KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxl
LWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0UmVwb3J0
RXh0cmFNZW1vcnlDb3N0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0UmVwb3J0RXh0cmFNZW1vcnlDb3N0LmNwcAkocmV2aXNp
b24gMjg2MDQzKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdFJlcG9ydEV4dHJhTWVtb3J5Q29zdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYzLDcgKzYz
LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihK
U0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NI
QVJBQkxFKEpTVGVzdFJlcG9ydEV4dHJhTWVtb3J5Q29zdFByb3RvdHlwZSwgQmFzZSk7Ci0gICAg
ICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFp
bk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRl
U3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAtMTcxLDkgKzE3MSw5IEBAIEpTQzo6
SXNvU3Vic3BhY2UqIEpTVGVzdFJlcG9ydEV4dHJhTWVtb3IKICAgICAgICAgcmV0dXJuIHNwYWNl
OwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJs
ZU9iamVjdCwgSlNUZXN0UmVwb3J0RXh0cmFNZW1vcnlDb3N0PiB8fCAhSlNUZXN0UmVwb3J0RXh0
cmFNZW1vcnlDb3N0OjpuZWVkc0Rlc3RydWN0aW9uKTsKICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6
aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdFJlcG9ydEV4dHJh
TWVtb3J5Q29zdD4pCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFJlcG9ydEV4dHJh
TWVtb3J5Q29zdCA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZt
LmhlYXAsICp2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUsIEpTVGVzdFJlcG9ydEV4
dHJhTWVtb3J5Q29zdCk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFJlcG9ydEV4
dHJhTWVtb3J5Q29zdCA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklU
KHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RSZXBv
cnRFeHRyYU1lbW9yeUNvc3QpOwogICAgIGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VG
b3JUZXN0UmVwb3J0RXh0cmFNZW1vcnlDb3N0ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNP
X1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmNlbGxIZWFwQ2VsbFR5cGUsIEpTVGVzdFJlcG9y
dEV4dHJhTWVtb3J5Q29zdCk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFJlcG9y
dEV4dHJhTWVtb3J5Q29zdCA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9J
TklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0UmVwb3J0RXh0cmFNZW1v
cnlDb3N0KTsKICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFJlcG9y
dEV4dHJhTWVtb3J5Q29zdC5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFi
bGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJp
YWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJ
bnRlcmZhY2UuY3BwCShyZXZpc2lvbiAyODYwNDMpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtODksNyArODksNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpT
Qzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAg
U1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0U2VyaWFsaXplZFNjcmlw
dFZhbHVlSW50ZXJmYWNlUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFp
bk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAg
ICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYg
dm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3Rv
dHlwZSkKICAgICB7CkBAIC0zNDksOSArMzQ5LDkgQEAgSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0
U2VyaWFsaXplZFNjcmlwdAogICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fzc2Vy
dChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RTZXJp
YWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2U+IHx8ICFKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFs
dWVJbnRlcmZhY2U6Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjpp
c19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0U2VyaWFsaXplZFNj
cmlwdFZhbHVlSW50ZXJmYWNlPikKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0U2Vy
aWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNP
X1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlw
ZSwgSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlKTsKKyAgICAgICAgc3BhY2Vz
Lm1fc3Vic3BhY2VGb3JUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlID0gbWFrZVVu
aXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3Rp
YmxlT2JqZWN0SGVhcENlbGxUeXBlKCksIEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVy
ZmFjZSk7CiAgICAgZWxzZQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RTZXJpYWxp
emVkU2NyaXB0VmFsdWVJbnRlcmZhY2UgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VC
U1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uY2VsbEhlYXBDZWxsVHlwZSwgSlNUZXN0U2VyaWFsaXpl
ZFNjcmlwdFZhbHVlSW50ZXJmYWNlKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0
U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4g
SVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RT
ZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UpOwogICAgIGF1dG8qIHNwYWNlID0gc3BhY2Vz
Lm1fc3Vic3BhY2VGb3JUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmdldCgpOwog
SUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKIElHTk9SRV9XQVJOSU5H
U19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNldExpa2UuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXRMaWtlLmNwcAko
cmV2aXNpb24gMjg2MDQzKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdFNldExpa2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04MSw3ICs4MSw3IEBAIHB1
YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYg
dm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShK
U1Rlc3RTZXRMaWtlUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9i
amVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9
CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0s
IEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlw
ZSkKICAgICB7CkBAIC0zNDIsOSArMzQyLDkgQEAgSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0U2V0
TGlrZTo6c3Vic3BhYwogICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fzc2VydChz
dGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RTZXRMaWtl
PiB8fCAhSlNUZXN0U2V0TGlrZTo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3RleHBy
IChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RTZXRM
aWtlPikKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0U2V0TGlrZSA9IG1ha2VVbmlx
dWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5kZXN0cnVjdGli
bGVPYmplY3RIZWFwQ2VsbFR5cGUsIEpTVGVzdFNldExpa2UpOworICAgICAgICBzcGFjZXMubV9z
dWJzcGFjZUZvclRlc3RTZXRMaWtlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQ
QUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCksIEpT
VGVzdFNldExpa2UpOwogICAgIGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0
U2V0TGlrZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhl
YXAsICp2bS5jZWxsSGVhcENlbGxUeXBlLCBKU1Rlc3RTZXRMaWtlKTsKKyAgICAgICAgc3BhY2Vz
Lm1fc3Vic3BhY2VGb3JUZXN0U2V0TGlrZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19T
VUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0U2V0TGlr
ZSk7CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RTZXRMaWtlLmdl
dCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKIElHTk9SRV9X
QVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRleDogU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNldExpa2VXaXRoT3ZlcnJpZGRlbk9w
ZXJhdGlvbnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RTZXRMaWtlV2l0aE92ZXJyaWRkZW5PcGVyYXRpb25zLmNwcAkocmV2
aXNpb24gMjg2MDQzKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdFNldExpa2VXaXRoT3ZlcnJpZGRlbk9wZXJhdGlvbnMuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC04NSw3ICs4NSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSog
c3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lT
T19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3RTZXRMaWtlV2l0aE92ZXJyaWRkZW5PcGVyYXRpb25z
UHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOwor
ICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGlj
IEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBA
IC0zNTQsOSArMzU0LDkgQEAgSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0U2V0TGlrZVdpdGhPdmVy
cgogICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vf
b2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RTZXRMaWtlV2l0aE92ZXJyaWRk
ZW5PcGVyYXRpb25zPiB8fCAhSlNUZXN0U2V0TGlrZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9uczo6
bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxK
U0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RTZXRMaWtlV2l0aE92ZXJyaWRkZW5PcGVy
YXRpb25zPikKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0U2V0TGlrZVdpdGhPdmVy
cmlkZGVuT3BlcmF0aW9ucyA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9J
TklUKHZtLmhlYXAsICp2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUsIEpTVGVzdFNl
dExpa2VXaXRoT3ZlcnJpZGRlbk9wZXJhdGlvbnMpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFj
ZUZvclRlc3RTZXRMaWtlV2l0aE92ZXJyaWRkZW5PcGVyYXRpb25zID0gbWFrZVVuaXF1ZTxJc29T
dWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0
SGVhcENlbGxUeXBlKCksIEpTVGVzdFNldExpa2VXaXRoT3ZlcnJpZGRlbk9wZXJhdGlvbnMpOwog
ICAgIGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0U2V0TGlrZVdpdGhPdmVy
cmlkZGVuT3BlcmF0aW9ucyA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9J
TklUKHZtLmhlYXAsICp2bS5jZWxsSGVhcENlbGxUeXBlLCBKU1Rlc3RTZXRMaWtlV2l0aE92ZXJy
aWRkZW5PcGVyYXRpb25zKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0U2V0TGlr
ZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9ucyA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19T
VUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0U2V0TGlr
ZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9ucyk7CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9z
dWJzcGFjZUZvclRlc3RTZXRMaWtlV2l0aE92ZXJyaWRkZW5PcGVyYXRpb25zLmdldCgpOwogSUdO
T1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKIElHTk9SRV9XQVJOSU5HU19C
RUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXIu
Y3BwCShyZXZpc2lvbiAyODYwNDMpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02OSw3ICs2
OSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3Io
SlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9T
SEFSQUJMRShKU1Rlc3RTdHJpbmdpZmllclByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVy
biAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNw
YWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJl
KEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNW
YWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAtMTkyLDkgKzE5Miw5IEBAIEpTQzo6SXNvU3Vic3Bh
Y2UqIEpTVGVzdFN0cmluZ2lmaWVyOjpzdWIKICAgICAgICAgcmV0dXJuIHNwYWNlOwogICAgIHN0
YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwg
SlNUZXN0U3RyaW5naWZpZXI+IHx8ICFKU1Rlc3RTdHJpbmdpZmllcjo6bmVlZHNEZXN0cnVjdGlv
bik7CiAgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3Rp
YmxlT2JqZWN0LCBKU1Rlc3RTdHJpbmdpZmllcj4pCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNl
Rm9yVGVzdFN0cmluZ2lmaWVyID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNF
X0lOSVQodm0uaGVhcCwgKnZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSwgSlNUZXN0
U3RyaW5naWZpZXIpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RTdHJpbmdpZmll
ciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZt
LmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RTdHJpbmdpZmllcik7CiAg
ICAgZWxzZQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RTdHJpbmdpZmllciA9IG1h
a2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5jZWxs
SGVhcENlbGxUeXBlLCBKU1Rlc3RTdHJpbmdpZmllcik7CisgICAgICAgIHNwYWNlcy5tX3N1YnNw
YWNlRm9yVGVzdFN0cmluZ2lmaWVyID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQ
QUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RTdHJpbmdpZmll
cik7CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RTdHJpbmdpZmll
ci5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJR05P
UkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllckFub255bW91
c09wZXJhdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyQW5vbnltb3VzT3BlcmF0aW9uLmNwcAkocmV2
aXNpb24gMjg2MDQzKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdFN0cmluZ2lmaWVyQW5vbnltb3VzT3BlcmF0aW9uLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNjksNyArNjksNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1
YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09f
U1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0U3RyaW5naWZpZXJBbm9ueW1vdXNPcGVyYXRpb25Qcm90
b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAg
ICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KICAgICBzdGF0aWMgSlND
OjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKQEAgLTE5
Miw5ICsxOTIsOSBAQCBKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3RTdHJpbmdpZmllckFub255CiAg
ICAgICAgIHJldHVybiBzcGFjZTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92
PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdFN0cmluZ2lmaWVyQW5vbnltb3VzT3Bl
cmF0aW9uPiB8fCAhSlNUZXN0U3RyaW5naWZpZXJBbm9ueW1vdXNPcGVyYXRpb246Om5lZWRzRGVz
dHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rl
c3RydWN0aWJsZU9iamVjdCwgSlNUZXN0U3RyaW5naWZpZXJBbm9ueW1vdXNPcGVyYXRpb24+KQot
ICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RTdHJpbmdpZmllckFub255bW91c09wZXJh
dGlvbiA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAs
ICp2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUsIEpTVGVzdFN0cmluZ2lmaWVyQW5v
bnltb3VzT3BlcmF0aW9uKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0U3RyaW5n
aWZpZXJBbm9ueW1vdXNPcGVyYXRpb24gPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VC
U1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwg
SlNUZXN0U3RyaW5naWZpZXJBbm9ueW1vdXNPcGVyYXRpb24pOwogICAgIGVsc2UKLSAgICAgICAg
c3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0U3RyaW5naWZpZXJBbm9ueW1vdXNPcGVyYXRpb24gPSBt
YWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uY2Vs
bEhlYXBDZWxsVHlwZSwgSlNUZXN0U3RyaW5naWZpZXJBbm9ueW1vdXNPcGVyYXRpb24pOworICAg
ICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RTdHJpbmdpZmllckFub255bW91c09wZXJhdGlv
biA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZt
LmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0U3RyaW5naWZpZXJBbm9ueW1vdXNPcGVyYXRpb24p
OwogICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0U3RyaW5naWZpZXJB
bm9ueW1vdXNPcGVyYXRpb24uZ2V0KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hh
YmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIp
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3Ry
aW5naWZpZXJOYW1lZE9wZXJhdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyTmFtZWRPcGVyYXRpb24u
Y3BwCShyZXZpc2lvbiAyODYwNDMpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJOYW1lZE9wZXJhdGlvbi5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTcwLDcgKzcwLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNl
KiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRf
SVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdFN0cmluZ2lmaWVyTmFtZWRPcGVyYXRpb25Qcm90
b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAg
ICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KICAgICBzdGF0aWMgSlND
OjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKQEAgLTIw
OSw5ICsyMDksOSBAQCBKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3RTdHJpbmdpZmllck5hbWVkCiAg
ICAgICAgIHJldHVybiBzcGFjZTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92
PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdFN0cmluZ2lmaWVyTmFtZWRPcGVyYXRp
b24+IHx8ICFKU1Rlc3RTdHJpbmdpZmllck5hbWVkT3BlcmF0aW9uOjpuZWVkc0Rlc3RydWN0aW9u
KTsKICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGli
bGVPYmplY3QsIEpTVGVzdFN0cmluZ2lmaWVyTmFtZWRPcGVyYXRpb24+KQotICAgICAgICBzcGFj
ZXMubV9zdWJzcGFjZUZvclRlc3RTdHJpbmdpZmllck5hbWVkT3BlcmF0aW9uID0gbWFrZVVuaXF1
ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmRlc3RydWN0aWJs
ZU9iamVjdEhlYXBDZWxsVHlwZSwgSlNUZXN0U3RyaW5naWZpZXJOYW1lZE9wZXJhdGlvbik7Cisg
ICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFN0cmluZ2lmaWVyTmFtZWRPcGVyYXRpb24g
PSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5k
ZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0U3RyaW5naWZpZXJOYW1lZE9w
ZXJhdGlvbik7CiAgICAgZWxzZQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RTdHJp
bmdpZmllck5hbWVkT3BlcmF0aW9uID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQ
QUNFX0lOSVQodm0uaGVhcCwgKnZtLmNlbGxIZWFwQ2VsbFR5cGUsIEpTVGVzdFN0cmluZ2lmaWVy
TmFtZWRPcGVyYXRpb24pOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RTdHJpbmdp
Zmllck5hbWVkT3BlcmF0aW9uID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNF
X0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RTdHJpbmdpZmllck5h
bWVkT3BlcmF0aW9uKTsKICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVz
dFN0cmluZ2lmaWVyTmFtZWRPcGVyYXRpb24uZ2V0KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4o
InVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwt
Y29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25JbXBsZW1lbnRlZEFzLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZp
ZXJPcGVyYXRpb25JbXBsZW1lbnRlZEFzLmNwcAkocmV2aXNpb24gMjg2MDQzKQorKysgU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyT3BlcmF0
aW9uSW1wbGVtZW50ZWRBcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcwLDcgKzcwLDcgQEAgcHVi
bGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2
bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpT
VGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uSW1wbGVtZW50ZWRBc1Byb3RvdHlwZSwgQmFzZSk7Ci0g
ICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5w
bGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3Jl
YXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAtMjA5LDkgKzIwOSw5IEBAIEpT
Qzo6SXNvU3Vic3BhY2UqIEpTVGVzdFN0cmluZ2lmaWVyT3BlcmEKICAgICAgICAgcmV0dXJuIHNw
YWNlOwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0
aWJsZU9iamVjdCwgSlNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25JbXBsZW1lbnRlZEFzPiB8fCAh
SlNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25JbXBsZW1lbnRlZEFzOjpuZWVkc0Rlc3RydWN0aW9u
KTsKICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGli
bGVPYmplY3QsIEpTVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uSW1wbGVtZW50ZWRBcz4pCi0gICAg
ICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uSW1wbGVtZW50
ZWRBcyA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAs
ICp2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUsIEpTVGVzdFN0cmluZ2lmaWVyT3Bl
cmF0aW9uSW1wbGVtZW50ZWRBcyk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFN0
cmluZ2lmaWVyT3BlcmF0aW9uSW1wbGVtZW50ZWRBcyA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+
IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxs
VHlwZSgpLCBKU1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbkltcGxlbWVudGVkQXMpOwogICAgIGVs
c2UKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25J
bXBsZW1lbnRlZEFzID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQo
dm0uaGVhcCwgKnZtLmNlbGxIZWFwQ2VsbFR5cGUsIEpTVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9u
SW1wbGVtZW50ZWRBcyk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFN0cmluZ2lm
aWVyT3BlcmF0aW9uSW1wbGVtZW50ZWRBcyA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19T
VUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0U3RyaW5n
aWZpZXJPcGVyYXRpb25JbXBsZW1lbnRlZEFzKTsKICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5t
X3N1YnNwYWNlRm9yVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uSW1wbGVtZW50ZWRBcy5nZXQoKTsK
IElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklO
R1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbk5hbWVkVG9T
dHJpbmcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbk5hbWVkVG9TdHJpbmcuY3BwCShyZXZp
c2lvbiAyODYwNDMpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25OYW1lZFRvU3RyaW5nLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNjksNyArNjksNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2Uq
IHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9J
U09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25OYW1lZFRvU3Ry
aW5nUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNl
OworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3Rh
dGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7
CkBAIC0xOTIsOSArMTkyLDkgQEAgSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0U3RyaW5naWZpZXJP
cGVyYQogICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jh
c2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RTdHJpbmdpZmllck9wZXJh
dGlvbk5hbWVkVG9TdHJpbmc+IHx8ICFKU1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbk5hbWVkVG9T
dHJpbmc6Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNl
X29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0U3RyaW5naWZpZXJPcGVyYXRp
b25OYW1lZFRvU3RyaW5nPikKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0U3RyaW5n
aWZpZXJPcGVyYXRpb25OYW1lZFRvU3RyaW5nID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNP
X1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlw
ZSwgSlNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25OYW1lZFRvU3RyaW5nKTsKKyAgICAgICAgc3Bh
Y2VzLm1fc3Vic3BhY2VGb3JUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25OYW1lZFRvU3RyaW5nID0g
bWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVz
dHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCksIEpTVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9u
TmFtZWRUb1N0cmluZyk7CiAgICAgZWxzZQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRl
c3RTdHJpbmdpZmllck9wZXJhdGlvbk5hbWVkVG9TdHJpbmcgPSBtYWtlVW5pcXVlPElzb1N1YnNw
YWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uY2VsbEhlYXBDZWxsVHlwZSwgSlNU
ZXN0U3RyaW5naWZpZXJPcGVyYXRpb25OYW1lZFRvU3RyaW5nKTsKKyAgICAgICAgc3BhY2VzLm1f
c3Vic3BhY2VGb3JUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25OYW1lZFRvU3RyaW5nID0gbWFrZVVu
aXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBD
ZWxsVHlwZSgpLCBKU1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbk5hbWVkVG9TdHJpbmcpOwogICAg
IGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0U3RyaW5naWZpZXJPcGVyYXRp
b25OYW1lZFRvU3RyaW5nLmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJs
ZS1jb2RlIikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJ
bmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmlu
Z2lmaWVyUmVhZE9ubHlBdHRyaWJ1dGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllclJlYWRPbmx5QXR0cmli
dXRlLmNwcAkocmV2aXNpb24gMjg2MDQzKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyUmVhZE9ubHlBdHRyaWJ1dGUuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC03MSw3ICs3MSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29T
dWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNf
QVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3RTdHJpbmdpZmllclJlYWRPbmx5QXR0
cmlidXRlUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNw
YWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAg
c3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAg
ICB7CkBAIC0yMDgsOSArMjA4LDkgQEAgSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0U3RyaW5naWZp
ZXJSZWFkTwogICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6Omlz
X2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RTdHJpbmdpZmllclJl
YWRPbmx5QXR0cmlidXRlPiB8fCAhSlNUZXN0U3RyaW5naWZpZXJSZWFkT25seUF0dHJpYnV0ZTo6
bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxK
U0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RTdHJpbmdpZmllclJlYWRPbmx5QXR0cmli
dXRlPikKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0U3RyaW5naWZpZXJSZWFkT25s
eUF0dHJpYnV0ZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZt
LmhlYXAsICp2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUsIEpTVGVzdFN0cmluZ2lm
aWVyUmVhZE9ubHlBdHRyaWJ1dGUpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RT
dHJpbmdpZmllclJlYWRPbmx5QXR0cmlidXRlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNP
X1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBl
KCksIEpTVGVzdFN0cmluZ2lmaWVyUmVhZE9ubHlBdHRyaWJ1dGUpOwogICAgIGVsc2UKLSAgICAg
ICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0U3RyaW5naWZpZXJSZWFkT25seUF0dHJpYnV0ZSA9
IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5j
ZWxsSGVhcENlbGxUeXBlLCBKU1Rlc3RTdHJpbmdpZmllclJlYWRPbmx5QXR0cmlidXRlKTsKKyAg
ICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0U3RyaW5naWZpZXJSZWFkT25seUF0dHJpYnV0
ZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZt
LmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0U3RyaW5naWZpZXJSZWFkT25seUF0dHJpYnV0ZSk7
CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RTdHJpbmdpZmllclJl
YWRPbmx5QXR0cmlidXRlLmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJs
ZS1jb2RlIikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJ
bmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmlu
Z2lmaWVyUmVhZFdyaXRlQXR0cmlidXRlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJSZWFkV3JpdGVBdHRy
aWJ1dGUuY3BwCShyZXZpc2lvbiAyODYwNDMpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJSZWFkV3JpdGVBdHRyaWJ1dGUuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC03Miw3ICs3Miw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJ
c29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFU
SUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3RTdHJpbmdpZmllclJlYWRXcml0
ZUF0dHJpYnV0ZVByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmpl
Y3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQog
ICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBK
U0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUp
CiAgICAgewpAQCAtMjI3LDkgKzIyNyw5IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdFN0cmlu
Z2lmaWVyUmVhZFcKICAgICAgICAgcmV0dXJuIHNwYWNlOwogICAgIHN0YXRpY19hc3NlcnQoc3Rk
Ojppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0U3RyaW5naWZp
ZXJSZWFkV3JpdGVBdHRyaWJ1dGU+IHx8ICFKU1Rlc3RTdHJpbmdpZmllclJlYWRXcml0ZUF0dHJp
YnV0ZTo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vf
b2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RTdHJpbmdpZmllclJlYWRXcml0
ZUF0dHJpYnV0ZT4pCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFN0cmluZ2lmaWVy
UmVhZFdyaXRlQXR0cmlidXRlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNF
X0lOSVQodm0uaGVhcCwgKnZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSwgSlNUZXN0
U3RyaW5naWZpZXJSZWFkV3JpdGVBdHRyaWJ1dGUpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFj
ZUZvclRlc3RTdHJpbmdpZmllclJlYWRXcml0ZUF0dHJpYnV0ZSA9IG1ha2VVbmlxdWU8SXNvU3Vi
c3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhl
YXBDZWxsVHlwZSgpLCBKU1Rlc3RTdHJpbmdpZmllclJlYWRXcml0ZUF0dHJpYnV0ZSk7CiAgICAg
ZWxzZQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RTdHJpbmdpZmllclJlYWRXcml0
ZUF0dHJpYnV0ZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZt
LmhlYXAsICp2bS5jZWxsSGVhcENlbGxUeXBlLCBKU1Rlc3RTdHJpbmdpZmllclJlYWRXcml0ZUF0
dHJpYnV0ZSk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFN0cmluZ2lmaWVyUmVh
ZFdyaXRlQXR0cmlidXRlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lO
SVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RTdHJpbmdpZmllclJlYWRX
cml0ZUF0dHJpYnV0ZSk7CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRl
c3RTdHJpbmdpZmllclJlYWRXcml0ZUF0dHJpYnV0ZS5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19C
RUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9n
aWNhbC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RUeXBlZGVmcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFR5cGVkZWZzLmNwcAkocmV2aXNpb24gMjg2MDQz
KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFR5cGVk
ZWZzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE2LDcgKzExNiw3IEBAIHB1YmxpYzoKICAgICBz
dGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewog
ICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3RUeXBlZGVm
c1Byb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsK
KyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRp
YyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpA
QCAtNzc4LDkgKzc3OCw5IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdFR5cGVkZWZzOjpzdWJz
cGEKICAgICAgICAgcmV0dXJuIHNwYWNlOwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNl
X29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0VHlwZWRlZnM+IHx8ICFKU1Rl
c3RUeXBlZGVmczo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3RleHByIChzdGQ6Omlz
X2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RUeXBlZGVmcz4pCi0g
ICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFR5cGVkZWZzID0gbWFrZVVuaXF1ZTxJc29T
dWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmRlc3RydWN0aWJsZU9iamVj
dEhlYXBDZWxsVHlwZSwgSlNUZXN0VHlwZWRlZnMpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFj
ZUZvclRlc3RUeXBlZGVmcyA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9J
TklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RU
eXBlZGVmcyk7CiAgICAgZWxzZQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RUeXBl
ZGVmcyA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAs
ICp2bS5jZWxsSGVhcENlbGxUeXBlLCBKU1Rlc3RUeXBlZGVmcyk7CisgICAgICAgIHNwYWNlcy5t
X3N1YnNwYWNlRm9yVGVzdFR5cGVkZWZzID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NV
QlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RUeXBlZGVm
cyk7CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RUeXBlZGVmcy5n
ZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVf
V0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1dvcmtlckdsb2JhbFNjb3BlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTV29ya2Vy
R2xvYmFsU2NvcGUuaAkocmV2aXNpb24gMjg2MDQzKQorKysgU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTV29ya2VyR2xvYmFsU2NvcGUuaAkod29ya2luZyBjb3B5KQpA
QCAtODUsNyArODUsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1
YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09f
U1VCU1BBQ0VfU0hBUkFCTEUoSlNXb3JrZXJHbG9iYWxTY29wZVByb3RvdHlwZSwgQmFzZSk7Ci0g
ICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5w
bGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3Jl
YXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpJbmRleDogU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTV29ya2xldEdsb2JhbFNjb3BlLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTV29ya2xldEds
b2JhbFNjb3BlLmgJKHJldmlzaW9uIDI4NjA0MykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1dvcmtsZXRHbG9iYWxTY29wZS5oCSh3b3JraW5nIGNvcHkpCkBA
IC04NSw3ICs4NSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vi
c3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19T
VUJTUEFDRV9TSEFSQUJMRShKU1dvcmtsZXRHbG9iYWxTY29wZVByb3RvdHlwZSwgQmFzZSk7Ci0g
ICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5w
bGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3Jl
YXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpJbmRleDogU291cmNlL1dlYkNvcmUv
YnJpZGdlL29iamMvb2JqY19ydW50aW1lLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2JyaWRnZS9vYmpjL29iamNfcnVudGltZS5tbQkocmV2aXNpb24gMjg2MDQzKQorKysgU291cmNl
L1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19ydW50aW1lLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0z
MzUsNyArMzM1LDcgQEAgYm9vbCBPYmpjRmFsbGJhY2tPYmplY3RJbXA6OnRvQm9vbGVhbihKUwog
SlNDOjpJc29TdWJzcGFjZSogT2JqY0ZhbGxiYWNrT2JqZWN0SW1wOjpzdWJzcGFjZUZvckltcGwo
SlNDOjpWTSYgdm0pCiB7CiAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEpTQzo6SXNvU3Vic3Bh
Y2VQZXJWTT4gcGVyVk0oW10gKEpTQzo6Vk0mIHZtKSB7Ci0gICAgICAgIHJldHVybiBJU09fU1VC
U1BBQ0VfUEFSQU1FVEVSUygqdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLCBPYmpj
RmFsbGJhY2tPYmplY3RJbXApOworICAgICAgICByZXR1cm4gSVNPX1NVQlNQQUNFX1BBUkFNRVRF
UlModm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCksIE9iamNGYWxsYmFja09iamVj
dEltcCk7CiAgICAgfSk7CiAgICAgcmV0dXJuICZwZXJWTS5nZXQoKS5mb3JWTSh2bSk7CiB9Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9Nb2RlbEVsZW1lbnRDb250cm9sbGVy
Q29jb2EubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTW9k
ZWxFbGVtZW50Q29udHJvbGxlckNvY29hLm1tCShyZXZpc2lvbiAyODYwNDMpCisrKyBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9Nb2RlbEVsZW1lbnRDb250cm9sbGVyQ29jb2EubW0JKHdv
cmtpbmcgY29weSkKQEAgLTIzNSwxMSArMjM1LDExIEBAIHZvaWQgTW9kZWxFbGVtZW50Q29udHJv
bGxlcjo6aGFuZGxlTW91c2UKIAogc3RhdGljIGJvb2wgcHJldmlld0hhc0NhbWVyYVN1cHBvcnQo
QVNWSW5saW5lUHJldmlldyAqcHJldmlldykKIHsKLSNpZiBFTkFCTEUoQVJLSVRfSU5MSU5FX1BS
RVZJRVdfQ0FNRVJBX1RSQU5TRk9STSkKLSAgICByZXR1cm4gW3ByZXZpZXcgcmVzcG9uZHNUb1Nl
bGVjdG9yOkBzZWxlY3RvcihnZXRDYW1lcmFUcmFuc2Zvcm06KV07Ci0jZWxzZQorLy8jaWYgRU5B
QkxFKEFSS0lUX0lOTElORV9QUkVWSUVXX0NBTUVSQV9UUkFOU0ZPUk0pCisvLyAgICByZXR1cm4g
W3ByZXZpZXcgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihnZXRDYW1lcmFUcmFuc2Zvcm06
KV07CisvLyNlbHNlCiAgICAgcmV0dXJuIGZhbHNlOwotI2VuZGlmCisvLyNlbmRpZgogfQogCiB2
b2lkIE1vZGVsRWxlbWVudENvbnRyb2xsZXI6OmdldENhbWVyYUZvck1vZGVsRWxlbWVudChNb2Rl
bElkZW50aWZpZXIgbW9kZWxJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4cGVj
dGVkPFdlYkNvcmU6OkhUTUxNb2RlbEVsZW1lbnRDYW1lcmEsIFdlYkNvcmU6OlJlc291cmNlRXJy
b3I+KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKQEAgLTI1MywyOCArMjUzLDI4IEBAIHZvaWQgTW9k
ZWxFbGVtZW50Q29udHJvbGxlcjo6Z2V0Q2FtZXJhRm8KICAgICAgICAgcmV0dXJuOwogICAgIH0K
IAotI2lmIEVOQUJMRShBUktJVF9JTkxJTkVfUFJFVklFV19DQU1FUkFfVFJBTlNGT1JNKQotICAg
IFtwcmV2aWV3IGdldENhbWVyYVRyYW5zZm9ybTptYWtlQmxvY2tQdHIoW3dlYWtUaGlzID0gV2Vh
a1B0ciB7ICp0aGlzIH0sIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlcildIChzaW1kX2Zsb2F0MyBjYW1lcmFUcmFuc2Zvcm0sIE5TRXJyb3IgKmVycm9yKSBtdXRh
YmxlIHsKLSAgICAgICAgaWYgKGVycm9yKSB7Ci0gICAgICAgICAgICBjYWxsT25NYWluUnVuTG9v
cChbd2Vha1RoaXMgPSBXVEZNb3ZlKHdlYWtUaGlzKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgZXJyb3IgPSBXZWJDb3JlOjpSZXNvdXJjZUVycm9yIHsg
V2ViQ29yZTo6UmVzb3VyY2VFcnJvcjo6VHlwZTo6R2VuZXJhbCB9XSAoKSBtdXRhYmxlIHsKLSAg
ICAgICAgICAgICAgICBpZiAod2Vha1RoaXMpCi0gICAgICAgICAgICAgICAgICAgIGNvbXBsZXRp
b25IYW5kbGVyKG1ha2VVbmV4cGVjdGVkKGVycm9yKSk7Ci0gICAgICAgICAgICB9KTsKLSAgICAg
ICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIGNhbGxPbk1haW5SdW5Mb29wKFtj
YW1lcmFUcmFuc2Zvcm0sIHdlYWtUaGlzID0gV1RGTW92ZSh3ZWFrVGhpcyksIGNvbXBsZXRpb25I
YW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildICgpIG11dGFibGUgewotICAgICAg
ICAgICAgaWYgKHdlYWtUaGlzKQotICAgICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdl
YkNvcmU6OkhUTUxNb2RlbEVsZW1lbnRDYW1lcmEgeyBjYW1lcmFUcmFuc2Zvcm0ueCwgY2FtZXJh
VHJhbnNmb3JtLnksIGNhbWVyYVRyYW5zZm9ybS56IH0pOwotICAgICAgICB9KTsKLSAgICB9KS5n
ZXQoKV07Ci0jZWxzZQorLy8jaWYgRU5BQkxFKEFSS0lUX0lOTElORV9QUkVWSUVXX0NBTUVSQV9U
UkFOU0ZPUk0pCisvLyAgICBbcHJldmlldyBnZXRDYW1lcmFUcmFuc2Zvcm06bWFrZUJsb2NrUHRy
KFt3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9LCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpXSAoc2ltZF9mbG9hdDMgY2FtZXJhVHJhbnNmb3JtLCBOU0Vy
cm9yICplcnJvcikgbXV0YWJsZSB7CisvLyAgICAgICAgaWYgKGVycm9yKSB7CisvLyAgICAgICAg
ICAgIGNhbGxPbk1haW5SdW5Mb29wKFt3ZWFrVGhpcyA9IFdURk1vdmUod2Vha1RoaXMpLCBjb21w
bGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBlcnJvciA9IFdlYkNv
cmU6OlJlc291cmNlRXJyb3IgeyBXZWJDb3JlOjpSZXNvdXJjZUVycm9yOjpUeXBlOjpHZW5lcmFs
IH1dICgpIG11dGFibGUgeworLy8gICAgICAgICAgICAgICAgaWYgKHdlYWtUaGlzKQorLy8gICAg
ICAgICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKG1ha2VVbmV4cGVjdGVkKGVycm9yKSk7
CisvLyAgICAgICAgICAgIH0pOworLy8gICAgICAgICAgICByZXR1cm47CisvLyAgICAgICAgfQor
Ly8KKy8vICAgICAgICBjYWxsT25NYWluUnVuTG9vcChbY2FtZXJhVHJhbnNmb3JtLCB3ZWFrVGhp
cyA9IFdURk1vdmUod2Vha1RoaXMpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpXSAoKSBtdXRhYmxlIHsKKy8vICAgICAgICAgICAgaWYgKHdlYWtUaGlzKQor
Ly8gICAgICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV2ViQ29yZTo6SFRNTE1vZGVsRWxl
bWVudENhbWVyYSB7IGNhbWVyYVRyYW5zZm9ybS54LCBjYW1lcmFUcmFuc2Zvcm0ueSwgY2FtZXJh
VHJhbnNmb3JtLnogfSk7CisvLyAgICAgICAgfSk7CisvLyAgICB9KS5nZXQoKV07CisvLyNlbHNl
CiAgICAgY2FsbE9uTWFpblJ1bkxvb3AoW3dlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH0sIGNv
bXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIGVycm9yID0gV2Vi
Q29yZTo6UmVzb3VyY2VFcnJvciB7IFdlYkNvcmU6OlJlc291cmNlRXJyb3I6OlR5cGU6OkdlbmVy
YWwgfV0gKCkgbXV0YWJsZSB7CiAgICAgICAgIGlmICh3ZWFrVGhpcykKICAgICAgICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKG1ha2VVbmV4cGVjdGVkKGVycm9yKSk7CiAgICAgfSk7CiAgICAgcmV0
dXJuOwotI2VuZGlmCisvLyNlbmRpZgogfQogCiB2b2lkIE1vZGVsRWxlbWVudENvbnRyb2xsZXI6
OnNldENhbWVyYUZvck1vZGVsRWxlbWVudChNb2RlbElkZW50aWZpZXIgbW9kZWxJZGVudGlmaWVy
LCBXZWJDb3JlOjpIVE1MTW9kZWxFbGVtZW50Q2FtZXJhIGNhbWVyYSwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKQEAgLTI4OCwxNyArMjg4LDE3IEBA
IHZvaWQgTW9kZWxFbGVtZW50Q29udHJvbGxlcjo6c2V0Q2FtZXJhRm8KICAgICAgICAgcmV0dXJu
OwogICAgIH0KIAotI2lmIEVOQUJMRShBUktJVF9JTkxJTkVfUFJFVklFV19DQU1FUkFfVFJBTlNG
T1JNKQotICAgIFtwcmV2aWV3IHNldENhbWVyYVRyYW5zZm9ybTpzaW1kX21ha2VfZmxvYXQzKGNh
bWVyYS5waXRjaCwgY2FtZXJhLnlhdywgY2FtZXJhLnNjYWxlKV07Ci0jZW5kaWYKKy8vI2lmIEVO
QUJMRShBUktJVF9JTkxJTkVfUFJFVklFV19DQU1FUkFfVFJBTlNGT1JNKQorLy8gICAgW3ByZXZp
ZXcgc2V0Q2FtZXJhVHJhbnNmb3JtOnNpbWRfbWFrZV9mbG9hdDMoY2FtZXJhLnBpdGNoLCBjYW1l
cmEueWF3LCBjYW1lcmEuc2NhbGUpXTsKKy8vI2VuZGlmCiAKICAgICBjYWxsT25NYWluUnVuTG9v
cChbd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKCkgbXV0YWJsZSB7CiAgICAgICAgIGlmICh3ZWFrVGhp
cykKLSNpZiBFTkFCTEUoQVJLSVRfSU5MSU5FX1BSRVZJRVdfQ0FNRVJBX1RSQU5TRk9STSkKLSAg
ICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHRydWUpOwotI2Vsc2UKKy8vI2lmIEVOQUJMRShB
UktJVF9JTkxJTkVfUFJFVklFV19DQU1FUkFfVFJBTlNGT1JNKQorLy8gICAgICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcih0cnVlKTsKKy8vI2Vsc2UKICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKGZhbHNlKTsKLSNlbmRpZgorLy8jZW5kaWYKICAgICB9KTsKIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>444855</attachid>
            <date>2021-11-19 14:26:42 -0800</date>
            <delta_ts>2021-11-19 15:10:24 -0800</delta_ts>
            <desc>work in progress.</desc>
            <filename>bug-233240c.patch</filename>
            <type>text/plain</type>
            <size>374993</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCShyZXZpc2lvbiAyODYwNDMpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvanNjLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQyOSw3ICsxNDI5LDcgQEAg
cHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlLCBTdWJzcGFjZUFjY2Vzcz4K
ICAgICBzdGF0aWMgQ29tcGxldGVTdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsK
LSAgICAgICAgcmV0dXJuICZ2bS5kZXN0cnVjdGlibGVPYmplY3RTcGFjZTsKKyAgICAgICAgcmV0
dXJuICZ2bS5kZXN0cnVjdGlibGVPYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIEpTQ01lbW9y
eUZvb3RwcmludChWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQpAQCAtMTc2Miw3ICsxNzYy
LDcgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlLCBTdWJzcGFjZUFj
Y2Vzcz4KICAgICBzdGF0aWMgQ29tcGxldGVTdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQog
ICAgIHsKLSAgICAgICAgcmV0dXJuICZ2bS5kZXN0cnVjdGlibGVPYmplY3RTcGFjZTsKKyAgICAg
ICAgcmV0dXJuICZ2bS5kZXN0cnVjdGlibGVPYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIHN0
YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oJKHJldmlzaW9uIDI4NjA0MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZh
U2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0x
OTU5LDcgKzE5NTksNyBAQAogCQlFM0M2OTRCMzIzMDI2ODc3MDA2RkJFNDIgLyogV2FzbU9TUkVu
dHJ5RGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RTNDNjk0QjEyMzAyNjg3MzAwNkZCRTQyIC8qIFdhc21PU1JFbnRyeURhdGEuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFM0M3M0E5MTI1QkZBNzNC
MDBFRkUzMDMgLyogV2FzbVN0cmVhbWluZ1BsYW4uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzQzczQTkwMjVCRkE3MzQwMEVGRTMwMyAvKiBXYXNtU3Ry
ZWFtaW5nUGxhbi5oICovOyB9OwogCQlFM0M3OUNBQjFEQjlBNERDMDBEMUVDQTQgLyogRE9NSklU
RWZmZWN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBF
M0M3OUNBQTFEQjlBNEQ2MDBEMUVDQTQgLyogRE9NSklURWZmZWN0LmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJRTNDOEVENDMyM0ExREJDQjAwMTMx
OTU4IC8qIElzb0lubGluZWRIZWFwQ2VsbFR5cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzQzhFRDQyMjNBMURCQzUwMDEzMTk1OCAvKiBJc29Jbmxp
bmVkSGVhcENlbGxUeXBlLmggKi87IH07CisJCUUzQzhFRDQzMjNBMURCQ0IwMDEzMTk1OCAvKiBJ
c29JbmxpbmVkSGVhcENlbGxUeXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBFM0M4RUQ0MjIzQTFEQkM1MDAxMzE5NTggLyogSXNvSW5saW5lZEhlYXBD
ZWxsVHlwZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCUUzQ0EzQTRFMjUyN0FCMkYwMDQ4MDJCRiAvKiBKSVRPcGVyYXRpb25MaXN0LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFM0NBM0E0QzI1MjdBQjJG
MDA0ODAyQkYgLyogSklUT3BlcmF0aW9uTGlzdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUzRDIzOUM5MUI4MjlDMUMwMEJCRUY2NyAvKiBKU01v
ZHVsZUVudmlyb25tZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBFM0QyMzlDNzFCODI5QzFDMDBCQkVGNjcgLyogSlNNb2R1bGVFbnZpcm9ubWVudC5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUzRDM1
MTVGMjQxQjg5RDcwMDhEQzE2RSAvKiBNYXJrZWRKU1ZhbHVlUmVmQXJyYXkuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzRDM1MTVEMjQxQjg5Q0UwMDhE
QzE2RSAvKiBNYXJrZWRKU1ZhbHVlUmVmQXJyYXkuaCAqLzsgfTsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5jcHAJKHJldmlzaW9uIDI4NjA0MykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNlLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMjI3Nyw3ICsyMjc3LDcgQEAgdm9pZCBBY2Nlc3NDYXNlOjpnZW5lcmF0ZUlt
cGwoQWNjZXNzR2VuZQogICAgICAgICAgICAgc2l6ZV90IG5ld1NpemUgPSBuZXdTdHJ1Y3R1cmUo
KS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSAqIHNpemVvZihKU1ZhbHVlKTsKIAogICAgICAgICAgICAg
aWYgKGFsbG9jYXRpbmdJbmxpbmUpIHsKLSAgICAgICAgICAgICAgICBBbGxvY2F0b3IgYWxsb2Nh
dG9yID0gdm0uanNWYWx1ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UuYWxsb2NhdG9yRm9yKG5ld1Np
emUsIEFsbG9jYXRvckZvck1vZGU6OkFsbG9jYXRvcklmRXhpc3RzKTsKKyAgICAgICAgICAgICAg
ICBBbGxvY2F0b3IgYWxsb2NhdG9yID0gdm0uanNWYWx1ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2Uo
KS5hbGxvY2F0b3JGb3IobmV3U2l6ZSwgQWxsb2NhdG9yRm9yTW9kZTo6QWxsb2NhdG9ySWZFeGlz
dHMpOwogCiAgICAgICAgICAgICAgICAgaml0LmVtaXRBbGxvY2F0ZShzY3JhdGNoR1BSLCBKSVRB
bGxvY2F0b3I6OmNvbnN0YW50KGFsbG9jYXRvciksIHNjcmF0Y2hHUFIyLCBzY3JhdGNoR1BSMywg
c2xvd1BhdGgpOwogICAgICAgICAgICAgICAgIGppdC5hZGRQdHIoQ0NhbGxIZWxwZXJzOjpUcnVz
dGVkSW1tMzIobmV3U2l6ZSArIHNpemVvZihJbmRleGluZ0hlYWRlcikpLCBzY3JhdGNoR1BSKTsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9ERkdFeGl0UHJvZmlsZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9ERkdFeGl0UHJvZmls
ZS5oCShyZXZpc2lvbiAyODYwNDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
REZHRXhpdFByb2ZpbGUuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTEtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM0LDcgKzM0LDExIEBACiAjaW5j
bHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKLW5hbWVzcGFj
ZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBVbmxpbmtl
ZENvZGVCbG9jazsKKworbmFtZXNwYWNlIERGRyB7CiAKIGNsYXNzIEZyZXF1ZW50RXhpdFNpdGUg
ewogcHVibGljOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0V2YWxDb2Rl
QmxvY2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXZh
bENvZGVCbG9jay5oCShyZXZpc2lvbiAyODYwNDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvRXZhbENvZGVCbG9jay5oCSh3b3JraW5nIGNvcHkpCkBAIC00MSw3ICs0MSw3IEBA
IHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSwgU3Vic3BhY2VBY2Nlc3M+CiAgICAgc3Rh
dGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewotICAgICAgICByZXR1
cm4gJnZtLmNvZGVCbG9ja1NwYWNlLnNwYWNlOworICAgICAgICByZXR1cm4gJnZtLmNvZGVCbG9j
a1NwYWNlKCkuc3BhY2U7CiAgICAgfQogCiAgICAgc3RhdGljIEV2YWxDb2RlQmxvY2sqIGNyZWF0
ZShWTSYgdm0sIENvcHlQYXJzZWRCbG9ja1RhZywgRXZhbENvZGVCbG9jayYgb3RoZXIpCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRn
ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0V4ZWN1
dGFibGVUb0NvZGVCbG9ja0VkZ2UuY3BwCShyZXZpc2lvbiAyODYwNDMpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTgxLDcgKzgxLDcgQEAgdm9pZCBFeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdl
Ojp2aXNpdENoaQogICAgICAgICB2aXNpdG9yLmFwcGVuZFVuYmFycmllcmVkKGNvZGVCbG9jayk7
CiAgICAgCiAgICAgaWYgKCF2aXNpdG9yLmlzTWFya2VkKGNvZGVCbG9jaykpCi0gICAgICAgIHZt
LmV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2VzV2l0aEZpbmFsaXplcnMuYWRkKGVkZ2UpOworICAg
ICAgICB2bS5leGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlc1dpdGhGaW5hbGl6ZXJzKCkuYWRkKGVk
Z2UpOwogICAgIAogICAgIGlmIChKSVRDb2RlOjppc09wdGltaXppbmdKSVQoY29kZUJsb2NrLT5q
aXRUeXBlKCkpKSB7CiAgICAgICAgIC8vIElmIHdlIGpldHRpc29uIG91cnNlbHZlcyB3ZSdsbCBp
bnN0YWxsIG91ciBhbHRlcm5hdGl2ZSwgc28gbWFrZSBzdXJlIHRoYXQgaXQKQEAgLTExNCw3ICsx
MTQsNyBAQCB2b2lkIEV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2U6OnZpc2l0Q2hpCiAgICAgLy8g
bm90IHlldCBtYXJrZWQgYmVjYXVzZSBpdCB3ZWFrbHkgZGVwZW5kcyBvbiBhIHN0cnVjdHVyZSB0
aGF0IHdlIGRpZCBub3QgeWV0IG1hcmssIHRoZW4gd2UKICAgICAvLyB3aWxsIGtlZXAgZml4cG9p
bnRpbmcgdW50aWwgdGhlIGVuZC4KICAgICB2aXNpdG9yLmFwcGVuZFVuYmFycmllcmVkKGNvZGVC
bG9jay0+Z2xvYmFsT2JqZWN0KCkpOwotICAgIHZtLmV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2Vz
V2l0aENvbnN0cmFpbnRzLmFkZChlZGdlKTsKKyAgICB2bS5leGVjdXRhYmxlVG9Db2RlQmxvY2tF
ZGdlc1dpdGhDb25zdHJhaW50cygpLmFkZChlZGdlKTsKICAgICBlZGdlLT5ydW5Db25zdHJhaW50
KGxvY2tlciwgdm0sIHZpc2l0b3IpOwogfQogCkBAIC0xNDMsOCArMTQzLDggQEAgdm9pZCBFeGVj
dXRhYmxlVG9Db2RlQmxvY2tFZGdlOjpmaW5hbGl6ZQogICAgICAgICBtX2NvZGVCbG9jay5jbGVh
cigpOwogICAgIH0KICAgICAKLSAgICB2bS5leGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlc1dpdGhG
aW5hbGl6ZXJzLnJlbW92ZSh0aGlzKTsKLSAgICB2bS5leGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdl
c1dpdGhDb25zdHJhaW50cy5yZW1vdmUodGhpcyk7CisgICAgdm0uZXhlY3V0YWJsZVRvQ29kZUJs
b2NrRWRnZXNXaXRoRmluYWxpemVycygpLnJlbW92ZSh0aGlzKTsKKyAgICB2bS5leGVjdXRhYmxl
VG9Db2RlQmxvY2tFZGdlc1dpdGhDb25zdHJhaW50cygpLnJlbW92ZSh0aGlzKTsKIH0KIAogaW5s
aW5lIHZvaWQgRXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZTo6YWN0aXZhdGUoKQpAQCAtMjAxLDcg
KzIwMSw3IEBAIHZvaWQgRXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZTo6cnVuQ29uc3QKICAgICBj
b2RlQmxvY2stPmRldGVybWluZUxpdmVuZXNzKGxvY2tlciwgdmlzaXRvcik7CiAKICAgICBpZiAo
dmlzaXRvci5pc01hcmtlZChjb2RlQmxvY2spKQotICAgICAgICB2bS5leGVjdXRhYmxlVG9Db2Rl
QmxvY2tFZGdlc1dpdGhDb25zdHJhaW50cy5yZW1vdmUodGhpcyk7CisgICAgICAgIHZtLmV4ZWN1
dGFibGVUb0NvZGVCbG9ja0VkZ2VzV2l0aENvbnN0cmFpbnRzKCkucmVtb3ZlKHRoaXMpOwogfQog
CiB0ZW1wbGF0ZSB2b2lkIEV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2U6OnJ1bkNvbnN0cmFpbnQo
Y29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiwgVk0mLCBBYnN0cmFjdFNsb3RWaXNpdG9yJik7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhlY3V0YWJsZVRvQ29kZUJsb2Nr
RWRnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FeGVj
dXRhYmxlVG9Db2RlQmxvY2tFZGdlLmgJKHJldmlzaW9uIDI4NjA0MykKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9FeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTQzLDcgKzQzLDcgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENl
bGxUeXBlLCBTdWJzcGFjZUFjY2Vzcz4KICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNl
Rm9yKFZNJiB2bSkKICAgICB7Ci0gICAgICAgIHJldHVybiAmdm0uZXhlY3V0YWJsZVRvQ29kZUJs
b2NrRWRnZVNwYWNlOworICAgICAgICByZXR1cm4gJnZtLmV4ZWN1dGFibGVUb0NvZGVCbG9ja0Vk
Z2VTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVy
ZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSBwcm90b3R5cGUpOwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Z1bmN0aW9uQ29kZUJsb2NrLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Z1bmN0aW9uQ29kZUJsb2NrLmgJKHJl
dmlzaW9uIDI4NjA0MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9GdW5jdGlv
bkNvZGVCbG9jay5oCSh3b3JraW5nIGNvcHkpCkBAIC00Miw3ICs0Miw3IEBAIHB1YmxpYzoKICAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSwgU3Vic3BhY2VBY2Nlc3M+CiAgICAgc3RhdGljIElzb1N1YnNw
YWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewotICAgICAgICByZXR1cm4gJnZtLmNvZGVC
bG9ja1NwYWNlLnNwYWNlOworICAgICAgICByZXR1cm4gJnZtLmNvZGVCbG9ja1NwYWNlKCkuc3Bh
Y2U7CiAgICAgfQogCiAgICAgc3RhdGljIEZ1bmN0aW9uQ29kZUJsb2NrKiBjcmVhdGUoVk0mIHZt
LCBDb3B5UGFyc2VkQmxvY2tUYWcsIEZ1bmN0aW9uQ29kZUJsb2NrJiBvdGhlcikKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Nb2R1bGVQcm9ncmFtQ29kZUJsb2NrLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL01vZHVsZVByb2dyYW1D
b2RlQmxvY2suaAkocmV2aXNpb24gMjg2MDQzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL01vZHVsZVByb2dyYW1Db2RlQmxvY2suaAkod29ya2luZyBjb3B5KQpAQCAtNDIsNyAr
NDIsNyBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUsIFN1YnNwYWNlQWNjZXNzPgog
ICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKLSAgICAg
ICAgcmV0dXJuICZ2bS5jb2RlQmxvY2tTcGFjZS5zcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5j
b2RlQmxvY2tTcGFjZSgpLnNwYWNlOwogICAgIH0KIAogICAgIHN0YXRpYyBNb2R1bGVQcm9ncmFt
Q29kZUJsb2NrKiBjcmVhdGUoVk0mIHZtLCBDb3B5UGFyc2VkQmxvY2tUYWcsIE1vZHVsZVByb2dy
YW1Db2RlQmxvY2smIG90aGVyKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1Byb2dyYW1Db2RlQmxvY2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvUHJvZ3JhbUNvZGVCbG9jay5oCShyZXZpc2lvbiAyODYwNDMpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJvZ3JhbUNvZGVCbG9jay5oCSh3b3JraW5nIGNvcHkp
CkBAIC00Miw3ICs0Miw3IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSwgU3Vic3Bh
Y2VBY2Nlc3M+CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAg
ICAgewotICAgICAgICByZXR1cm4gJnZtLmNvZGVCbG9ja1NwYWNlLnNwYWNlOworICAgICAgICBy
ZXR1cm4gJnZtLmNvZGVCbG9ja1NwYWNlKCkuc3BhY2U7CiAgICAgfQogCiAgICAgc3RhdGljIFBy
b2dyYW1Db2RlQmxvY2sqIGNyZWF0ZShWTSYgdm0sIENvcHlQYXJzZWRCbG9ja1RhZywgUHJvZ3Jh
bUNvZGVCbG9jayYgb3RoZXIpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5jcHAJKHJldmlz
aW9uIDI4NjA0MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1
bmN0aW9uRXhlY3V0YWJsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI1MSw3ICsyNTEsNyBAQCBV
bmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiBVbmxpbmtlZEZ1bmN0CiAgICAgICAgIG1fdW5saW5r
ZWRDb2RlQmxvY2tGb3JDb25zdHJ1Y3Quc2V0KHZtLCB0aGlzLCByZXN1bHQpOwogICAgICAgICBi
cmVhazsKICAgICB9Ci0gICAgdm0udW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGVTcGFjZS5zZXQu
YWRkKHRoaXMpOworICAgIHZtLnVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlU3BhY2UoKS5zZXQu
YWRkKHRoaXMpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKQEAgLTMxMCw3ICszMTAsNyBAQCB2
b2lkIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpmaW5hbGl6CiAgICAgICAgIGNsZWFySWZE
ZWFkKG1fdW5saW5rZWRDb2RlQmxvY2tGb3JDYWxsKTsKICAgICAgICAgY2xlYXJJZkRlYWQobV91
bmxpbmtlZENvZGVCbG9ja0ZvckNvbnN0cnVjdCk7CiAgICAgICAgIGlmIChpc0NsZWFyZWQgJiYg
IWlzU3RpbGxWYWxpZCkKLSAgICAgICAgICAgIHZtLnVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxl
U3BhY2Uuc2V0LnJlbW92ZSh0aGlzKTsKKyAgICAgICAgICAgIHZtLnVubGlua2VkRnVuY3Rpb25F
eGVjdXRhYmxlU3BhY2UoKS5zZXQucmVtb3ZlKHRoaXMpOwogICAgIH0KIH0KIApJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkRnVu
Y3Rpb25FeGVjdXRhYmxlLmgJKHJldmlzaW9uIDI4NjA0MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC00MiwxMyArNDIsMTQgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKK2NsYXNzIENhY2hlZEZ1
bmN0aW9uRXhlY3V0YWJsZTsKIGNsYXNzIERlY29kZXI7Ci1jbGFzcyBGdW5jdGlvbk1ldGFkYXRh
Tm9kZTsKIGNsYXNzIEZ1bmN0aW9uRXhlY3V0YWJsZTsKK2NsYXNzIEZ1bmN0aW9uTWV0YWRhdGFO
b2RlOwogY2xhc3MgUGFyc2VyRXJyb3I7CitjbGFzcyBTY3JpcHRFeGVjdXRhYmxlOwogY2xhc3Mg
U291cmNlUHJvdmlkZXI7CiBjbGFzcyBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrOwotY2xhc3Mg
Q2FjaGVkRnVuY3Rpb25FeGVjdXRhYmxlOwogCiBlbnVtIFVubGlua2VkRnVuY3Rpb25LaW5kIHsK
ICAgICBVbmxpbmtlZE5vcm1hbEZ1bmN0aW9uLApAQCAtNjcsNyArNjgsNyBAQCBwdWJsaWM6CiAg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNzPgogICAgIHN0YXRp
YyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKLSAgICAgICAgcmV0dXJu
ICZ2bS51bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZVNwYWNlLnNwYWNlOworICAgICAgICByZXR1
cm4gJnZtLnVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlU3BhY2UoKS5zcGFjZTsKICAgICB9CiAK
ICAgICBzdGF0aWMgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIGNyZWF0ZShWTSYgdm0sIGNv
bnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgRnVuY3Rpb25NZXRhZGF0YU5vZGUqIG5vZGUsIFVubGlu
a2VkRnVuY3Rpb25LaW5kIHVubGlua2VkRnVuY3Rpb25LaW5kLCBDb25zdHJ1Y3RBYmlsaXR5IGNv
bnN0cnVjdEFiaWxpdHksIEpTUGFyc2VyU2NyaXB0TW9kZSBzY3JpcHRNb2RlLCBSZWZQdHI8VERa
RW52aXJvbm1lbnRMaW5rPiBwYXJlbnRTY29wZVREWlZhcmlhYmxlcywgc3RkOjpvcHRpb25hbDxQ
cml2YXRlTmFtZUVudmlyb25tZW50PiBwYXJlbnRQcml2YXRlTmFtZUVudmlyb25tZW50LCBEZXJp
dmVkQ29udGV4dFR5cGUgZGVyaXZlZENvbnRleHRUeXBlLCBOZWVkc0NsYXNzRmllbGRJbml0aWFs
aXplciBuZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciwgUHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQg
cHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQsIGJvb2wgaXNCdWlsdGluRGVmYXVsdENsYXNzQ29uc3Ry
dWN0b3IgPSBmYWxzZSkKQEAgLTEzMSw3ICsxMzIsNyBAQCBwdWJsaWM6CiAgICAgewogICAgICAg
ICBtX3VubGlua2VkQ29kZUJsb2NrRm9yQ2FsbC5jbGVhcigpOwogICAgICAgICBtX3VubGlua2Vk
Q29kZUJsb2NrRm9yQ29uc3RydWN0LmNsZWFyKCk7Ci0gICAgICAgIHZtLnVubGlua2VkRnVuY3Rp
b25FeGVjdXRhYmxlU3BhY2Uuc2V0LnJlbW92ZSh0aGlzKTsKKyAgICAgICAgdm0udW5saW5rZWRG
dW5jdGlvbkV4ZWN1dGFibGVTcGFjZSgpLnNldC5yZW1vdmUodGhpcyk7CiAgICAgfQogCiAgICAg
dm9pZCByZWNvcmRQYXJzZShDb2RlRmVhdHVyZXMgZmVhdHVyZXMsIExleGljYWxTY29wZUZlYXR1
cmVzIGxleGljYWxTY29wZUZlYXR1cmVzLCBib29sIGhhc0NhcHR1cmVkVmFyaWFibGVzKQpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAJ
KHJldmlzaW9uIDI4NjA0MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3Vs
YXRpdmVKSVQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjAsNyArMTIwLDcgQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6ZW1pdEFsbG9jYXRlUmF3T2JqZQogCiAgICAgVk0mIHZtID0gdGhpcy0+dm0o
KTsKICAgICBpZiAoc2l6ZSkgewotICAgICAgICBpZiAoQWxsb2NhdG9yIGFsbG9jYXRvciA9IHZt
LmpzVmFsdWVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlLmFsbG9jYXRvckZvck5vblZpcnR1YWwoc2l6
ZSwgQWxsb2NhdG9yRm9yTW9kZTo6QWxsb2NhdG9ySWZFeGlzdHMpKSB7CisgICAgICAgIGlmIChB
bGxvY2F0b3IgYWxsb2NhdG9yID0gdm0uanNWYWx1ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UoKS5h
bGxvY2F0b3JGb3JOb25WaXJ0dWFsKHNpemUsIEFsbG9jYXRvckZvck1vZGU6OkFsbG9jYXRvcklm
RXhpc3RzKSkgewogICAgICAgICAgICAgbV9qaXQuZW1pdEFsbG9jYXRlKHN0b3JhZ2VHUFIsIEpJ
VEFsbG9jYXRvcjo6Y29uc3RhbnQoYWxsb2NhdG9yKSwgc2NyYXRjaEdQUiwgc2NyYXRjaDJHUFIs
IHNsb3dDYXNlcyk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIG1faml0LmFkZFB0cigKQEAg
LTEwNzM4LDcgKzEwNzM4LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUFsbG9jYXRl
UHJvcAogICAgIAogICAgIHNpemVfdCBzaXplID0gaW5pdGlhbE91dE9mTGluZUNhcGFjaXR5ICog
c2l6ZW9mKEpTVmFsdWUpOwogCi0gICAgQWxsb2NhdG9yIGFsbG9jYXRvciA9IHZtKCkuanNWYWx1
ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UuYWxsb2NhdG9yRm9yTm9uVmlydHVhbChzaXplLCBBbGxv
Y2F0b3JGb3JNb2RlOjpBbGxvY2F0b3JJZkV4aXN0cyk7CisgICAgQWxsb2NhdG9yIGFsbG9jYXRv
ciA9IHZtKCkuanNWYWx1ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UoKS5hbGxvY2F0b3JGb3JOb25W
aXJ0dWFsKHNpemUsIEFsbG9jYXRvckZvck1vZGU6OkFsbG9jYXRvcklmRXhpc3RzKTsKIAogICAg
IGlmICghYWxsb2NhdG9yIHx8IG5vZGUtPnRyYW5zaXRpb24oKS0+cHJldmlvdXMtPmNvdWxkSGF2
ZUluZGV4aW5nSGVhZGVyKCkpIHsKICAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYmFzZSh0
aGlzLCBub2RlLT5jaGlsZDEoKSk7CkBAIC0xMDc4Miw3ICsxMDc4Miw3IEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGVSZWFsbG9jYXRlUHIKICAgICBzaXplX3QgbmV3U2l6ZSA9IG9sZFNp
emUgKiBvdXRPZkxpbmVHcm93dGhGYWN0b3I7CiAgICAgQVNTRVJUKG5ld1NpemUgPT0gbm9kZS0+
dHJhbnNpdGlvbigpLT5uZXh0LT5vdXRPZkxpbmVDYXBhY2l0eSgpICogc2l6ZW9mKEpTVmFsdWUp
KTsKICAgICAKLSAgICBBbGxvY2F0b3IgYWxsb2NhdG9yID0gdm0oKS5qc1ZhbHVlR2lnYWNhZ2VB
dXhpbGlhcnlTcGFjZS5hbGxvY2F0b3JGb3JOb25WaXJ0dWFsKG5ld1NpemUsIEFsbG9jYXRvckZv
ck1vZGU6OkFsbG9jYXRvcklmRXhpc3RzKTsKKyAgICBBbGxvY2F0b3IgYWxsb2NhdG9yID0gdm0o
KS5qc1ZhbHVlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZSgpLmFsbG9jYXRvckZvck5vblZpcnR1YWwo
bmV3U2l6ZSwgQWxsb2NhdG9yRm9yTW9kZTo6QWxsb2NhdG9ySWZFeGlzdHMpOwogCiAgICAgaWYg
KCFhbGxvY2F0b3IgfHwgbm9kZS0+dHJhbnNpdGlvbigpLT5wcmV2aW91cy0+Y291bGRIYXZlSW5k
ZXhpbmdIZWFkZXIoKSkgewogICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMs
IG5vZGUtPmNoaWxkMSgpKTsKQEAgLTExNDk5LDcgKzExNDk5LDcgQEAgdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6ZW1pdE5ld1R5cGVkQXJyYXlXaQogICAgICAgICBtX2ppdC5hbmQzMihUcnVzdGVkSW1t
MzIofjcpLCBzY3JhdGNoR1BSKTsKICAgICB9CiAgICAgbV9qaXQuZW1pdEFsbG9jYXRlVmFyaWFi
bGVTaXplZCgKLSAgICAgICAgc3RvcmFnZUdQUiwgdm0oKS5wcmltaXRpdmVHaWdhY2FnZUF1eGls
aWFyeVNwYWNlLCBzY3JhdGNoR1BSLCBzY3JhdGNoR1BSLAorICAgICAgICBzdG9yYWdlR1BSLCB2
bSgpLnByaW1pdGl2ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UoKSwgc2NyYXRjaEdQUiwgc2NyYXRj
aEdQUiwKICAgICAgICAgc2NyYXRjaEdQUjIsIHNsb3dDYXNlcyk7CiAgICAgCiAgICAgTWFjcm9B
c3NlbWJsZXI6Okp1bXAgZG9uZSA9IG1faml0LmJyYW5jaFRlc3QzMihNYWNyb0Fzc2VtYmxlcjo6
WmVybywgc2l6ZUdQUik7CkBAIC0xMzcwMCw3ICsxMzcwMCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmVtaXRBbGxvY2F0ZUJ1dHRlcmYKICAgICBkaWROb3RPdmVyZmxvdy5saW5rKCZtX2ppdCk7
CiAjZW5kaWYKICAgICBtX2ppdC5lbWl0QWxsb2NhdGVWYXJpYWJsZVNpemVkKAotICAgICAgICBz
dG9yYWdlUmVzdWx0R1BSLCB2bSgpLmpzVmFsdWVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlLCBzY3Jh
dGNoMiwgc2NyYXRjaDEsIHNjcmF0Y2gzLCBzbG93Q2FzZXMpOworICAgICAgICBzdG9yYWdlUmVz
dWx0R1BSLCB2bSgpLmpzVmFsdWVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlKCksIHNjcmF0Y2gyLCBz
Y3JhdGNoMSwgc2NyYXRjaDMsIHNsb3dDYXNlcyk7CiAgICAgbV9qaXQuYWRkUHRyKFRydXN0ZWRJ
bW0zMihzaXplb2YoSW5kZXhpbmdIZWFkZXIpKSwgc3RvcmFnZVJlc3VsdEdQUik7CiAKICAgICBt
X2ppdC5zdG9yZTMyKHNpemVHUFIsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHN0b3JhZ2VSZXN1
bHRHUFIsIEJ1dHRlcmZseTo6b2Zmc2V0T2ZQdWJsaWNMZW5ndGgoKSkpOwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAkocmV2aXNpb24gMjg2
MDQzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC04MzAwLDcgKzgzMDAsNyBAQCBJR05PUkVfQ0xBTkdfV0FSTklOR1Nf
RU5ECiAgICAgICAgICAgICAgICAgbV9vdXQuY29uc3RJbnRQdHIofnN0YXRpY19jYXN0PGludHB0
cl90Pig3KSkpOwogICAgICAgICB9CiAKLSAgICAgICAgTFZhbHVlIGFsbG9jYXRvciA9IGFsbG9j
YXRvckZvclNpemUodm0oKS5wcmltaXRpdmVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlLCBieXRlU2l6
ZSwgc2xvd0Nhc2UpOworICAgICAgICBMVmFsdWUgYWxsb2NhdG9yID0gYWxsb2NhdG9yRm9yU2l6
ZSh2bSgpLnByaW1pdGl2ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UoKSwgYnl0ZVNpemUsIHNsb3dD
YXNlKTsKICAgICAgICAgTFZhbHVlIHN0b3JhZ2UgPSBhbGxvY2F0ZUhlYXBDZWxsKGFsbG9jYXRv
ciwgc2xvd0Nhc2UpOwogCiAgICAgICAgIHNwbGF0V29yZHMoCkBAIC0xMzkyMSw3ICsxMzkyMSw3
IEBAIElHTk9SRV9DTEFOR19XQVJOSU5HU19FTkQKICAgICAgICAgICAgICAgICBWYWx1ZUZyb21C
bG9jayBub0J1dHRlcmZseSA9IG1fb3V0LmFuY2hvcihtX291dC5pbnRQdHJaZXJvKTsKICAgICAg
ICAgICAgICAgICAKICAgICAgICAgICAgICAgICBMVmFsdWUgc3RhcnRPZlN0b3JhZ2UgPSBhbGxv
Y2F0ZUhlYXBDZWxsKAotICAgICAgICAgICAgICAgICAgICBhbGxvY2F0b3JGb3JTaXplKHZtKCku
anNWYWx1ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UsIGJ1dHRlcmZseVNpemUsIHNsb3dQYXRoKSwK
KyAgICAgICAgICAgICAgICAgICAgYWxsb2NhdG9yRm9yU2l6ZSh2bSgpLmpzVmFsdWVHaWdhY2Fn
ZUF1eGlsaWFyeVNwYWNlKCksIGJ1dHRlcmZseVNpemUsIHNsb3dQYXRoKSwKICAgICAgICAgICAg
ICAgICAgICAgc2xvd1BhdGgpOwogCiAgICAgICAgICAgICAgICAgTFZhbHVlIGZhc3RCdXR0ZXJm
bHlWYWx1ZSA9IG1fb3V0LmFkZCgKQEAgLTE1MDE2LDcgKzE1MDE2LDcgQEAgSUdOT1JFX0NMQU5H
X1dBUk5JTkdTX0VORAogICAgICAgICBMQmFzaWNCbG9jayBsYXN0TmV4dCA9IG1fb3V0Lmluc2Vy
dE5ld0Jsb2Nrc0JlZm9yZShzbG93UGF0aCk7CiAKICAgICAgICAgc2l6ZV90IHNpemVJbkJ5dGVz
ID0gc2l6ZUluVmFsdWVzICogc2l6ZW9mKEpTVmFsdWUpOwotICAgICAgICBBbGxvY2F0b3IgYWxs
b2NhdG9yID0gdm0oKS5qc1ZhbHVlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZS5hbGxvY2F0b3JGb3JO
b25WaXJ0dWFsKHNpemVJbkJ5dGVzLCBBbGxvY2F0b3JGb3JNb2RlOjpBbGxvY2F0b3JJZkV4aXN0
cyk7CisgICAgICAgIEFsbG9jYXRvciBhbGxvY2F0b3IgPSB2bSgpLmpzVmFsdWVHaWdhY2FnZUF1
eGlsaWFyeVNwYWNlKCkuYWxsb2NhdG9yRm9yTm9uVmlydHVhbChzaXplSW5CeXRlcywgQWxsb2Nh
dG9yRm9yTW9kZTo6QWxsb2NhdG9ySWZFeGlzdHMpOwogICAgICAgICBMVmFsdWUgc3RhcnRPZlN0
b3JhZ2UgPSBhbGxvY2F0ZUhlYXBDZWxsKAogICAgICAgICAgICAgbV9vdXQuY29uc3RJbnRQdHIo
YWxsb2NhdG9yLmxvY2FsQWxsb2NhdG9yKCkpLCBzbG93UGF0aCk7CiAgICAgICAgIFZhbHVlRnJv
bUJsb2NrIGZhc3RCdXR0ZXJmbHkgPSBtX291dC5hbmNob3IoCkBAIC0xNzAzOCw3ICsxNzAzOCw3
IEBAIElHTk9SRV9DTEFOR19XQVJOSU5HU19FTkQKICAgICAgICAgTFZhbHVlIGJ1dHRlcmZseVNp
emUgPSBtX291dC5hZGQoCiAgICAgICAgICAgICBwYXlsb2FkU2l6ZSwgbV9vdXQuY29uc3RJbnRQ
dHIoc2l6ZW9mKEluZGV4aW5nSGVhZGVyKSkpOwogCi0gICAgICAgIExWYWx1ZSBhbGxvY2F0b3Ig
PSBhbGxvY2F0b3JGb3JTaXplKHZtKCkuanNWYWx1ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UsIGJ1
dHRlcmZseVNpemUsIGZhaWxDYXNlKTsKKyAgICAgICAgTFZhbHVlIGFsbG9jYXRvciA9IGFsbG9j
YXRvckZvclNpemUodm0oKS5qc1ZhbHVlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZSgpLCBidXR0ZXJm
bHlTaXplLCBmYWlsQ2FzZSk7CiAgICAgICAgIExWYWx1ZSBzdGFydE9mU3RvcmFnZSA9IGFsbG9j
YXRlSGVhcENlbGwoYWxsb2NhdG9yLCBmYWlsQ2FzZSk7CiAKICAgICAgICAgTFZhbHVlIGJ1dHRl
cmZseSA9IG1fb3V0LmFkZChzdGFydE9mU3RvcmFnZSwgbV9vdXQuY29uc3RJbnRQdHIoc2l6ZW9m
KEluZGV4aW5nSGVhZGVyKSkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2dlbmVyYXRv
ci9EU0wucmIKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2dlbmVyYXRvci9E
U0wucmIJKHJldmlzaW9uIDI4NjA0MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9nZW5lcmF0
b3IvRFNMLnJiCSh3b3JraW5nIGNvcHkpCkBAIC0xLDQgKzEsNCBAQAotIyBDb3B5cmlnaHQgKEMp
IDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIyBDb3B5cmlnaHQgKEMpIDIw
MTgtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAjCiAjIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
IyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTE0Nyw2ICsxNDcsOCBAQCBtb2R1bGUgRFNMCiAKIG5hbWVzcGFjZSBK
U0MgewogCitjbGFzcyBCYXNpY0Jsb2NrTG9jYXRpb247CisKIHZvaWQgZHVtcEJ5dGVjb2RlKEJ5
dGVjb2RlRHVtcGVyQmFzZSogZHVtcGVyLCBJbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0LCBjb25z
dCBJbnN0cnVjdGlvbiopOwogCiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvQ29kZUJsb2NrU2V0LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvQ29kZUJsb2NrU2V0LmgJKHJldmlzaW9uIDI4NjA0MykKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0NvZGVCbG9ja1NldC5oCSh3b3JraW5nIGNvcHkp
CkBAIC02Niw4ICs2Niw2IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9y
PiB2b2lkIGl0ZXJhdGUoY29uc3QgRnVuY3RvciYpOwogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1
bmN0b3I+IHZvaWQgaXRlcmF0ZShjb25zdCBBYnN0cmFjdExvY2tlciYsIGNvbnN0IEZ1bmN0b3Im
KTsKIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+IHZvaWQgaXRlcmF0ZVZpYVN1YnNw
YWNlcyhWTSYsIGNvbnN0IEZ1bmN0b3ImKTsKLSAgICAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBG
dW5jdG9yPiB2b2lkIGl0ZXJhdGVDdXJyZW50bHlFeGVjdXRpbmcoY29uc3QgRnVuY3RvciYpOwog
ICAgIAogICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYpIGNvbnN0OwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvQ29kZUJsb2NrU2V0SW5saW5lcy5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0NvZGVCbG9ja1NldElubGluZXMuaAkocmV2aXNpb24g
Mjg2MDQzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ29kZUJsb2NrU2V0SW5saW5l
cy5oCSh3b3JraW5nIGNvcHkpCkBAIC02MCwxOCArNjAsNiBAQCB2b2lkIENvZGVCbG9ja1NldDo6
aXRlcmF0ZShjb25zdCBBYnN0cmFjCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+Ci12
b2lkIENvZGVCbG9ja1NldDo6aXRlcmF0ZVZpYVN1YnNwYWNlcyhWTSYgdm0sIGNvbnN0IEZ1bmN0
b3ImIGZ1bmN0b3IpCi17Ci0gICAgdm0uZm9yRWFjaENvZGVCbG9ja1NwYWNlKAotICAgICAgICBb
Jl0gKGF1dG8mIHNwYWNlQW5kU2V0KSB7Ci0gICAgICAgICAgICBzcGFjZUFuZFNldC5zcGFjZS5m
b3JFYWNoTGl2ZUNlbGwoCi0gICAgICAgICAgICAgICAgWyZdIChIZWFwQ2VsbCogY2VsbCwgSGVh
cENlbGw6OktpbmQpIHsKLSAgICAgICAgICAgICAgICAgICAgZnVuY3Rvcihqc0Nhc3Q8Q29kZUJs
b2NrKj4oc3RhdGljX2Nhc3Q8SlNDZWxsKj4oY2VsbCkpKTsKLSAgICAgICAgICAgICAgICB9KTsK
LSAgICAgICAgfSk7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+CiB2b2lkIENvZGVC
bG9ja1NldDo6aXRlcmF0ZUN1cnJlbnRseUV4ZWN1dGluZyhjb25zdCBGdW5jdG9yJiBmdW5jdG9y
KQogewogICAgIExvY2tlciBsb2NrZXIgeyBtX2xvY2sgfTsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL0hlYXAuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL0hlYXAuY3BwCShyZXZpc2lvbiAyODYwNDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9IZWFwLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjEsMTMgKzIxLDIwIEBACiAjaW5j
bHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiSGVhcC5oIgogCisjaW5jbHVkZSAiQmlnSW50T2Jq
ZWN0LmgiCisjaW5jbHVkZSAiQm9vbGVhbk9iamVjdC5oIgorI2luY2x1ZGUgIkJyYW5kZWRTdHJ1
Y3R1cmUuaCIKICNpbmNsdWRlICJCdWlsdGluRXhlY3V0YWJsZXMuaCIKKyNpbmNsdWRlICJDbG9u
ZWRBcmd1bWVudHMuaCIKICNpbmNsdWRlICJDb2RlQmxvY2suaCIKICNpbmNsdWRlICJDb2RlQmxv
Y2tTZXRJbmxpbmVzLmgiCiAjaW5jbHVkZSAiQ29sbGVjdGluZ1Njb3BlLmgiCiAjaW5jbHVkZSAi
Q29uc2VydmF0aXZlUm9vdHMuaCIKKyNpbmNsdWRlICJEYXRlSW5zdGFuY2UuaCIKKyNpbmNsdWRl
ICJEZWJ1Z2dlclNjb3BlLmgiCiAjaW5jbHVkZSAiRWRlbkdDQWN0aXZpdHlDYWxsYmFjay5oIgog
I2luY2x1ZGUgIkV4Y2VwdGlvbi5oIgorI2luY2x1ZGUgIkZhc3RNYWxsb2NBbGlnbmVkTWVtb3J5
QWxsb2NhdG9yLmgiCiAjaW5jbHVkZSAiRnVsbEdDQWN0aXZpdHlDYWxsYmFjay5oIgogI2luY2x1
ZGUgIkZ1bmN0aW9uRXhlY3V0YWJsZUlubGluZXMuaCIKICNpbmNsdWRlICJHQ0FjdGl2aXR5Q2Fs
bGJhY2suaCIKQEAgLTM1LDYgKzQyLDcgQEAKICNpbmNsdWRlICJHQ0luY29taW5nUmVmQ291bnRl
ZFNldElubGluZXMuaCIKICNpbmNsdWRlICJHQ1NlZ21lbnRlZEFycmF5SW5saW5lcy5oIgogI2lu
Y2x1ZGUgIkdDVHlwZU1hcC5oIgorI2luY2x1ZGUgIkdldHRlclNldHRlci5oIgogI2luY2x1ZGUg
Ikhhc093blByb3BlcnR5Q2FjaGUuaCIKICNpbmNsdWRlICJIZWFwSGVscGVyUG9vbC5oIgogI2lu
Y2x1ZGUgIkhlYXBJdGVyYXRpb25TY29wZS5oIgpAQCAtNDMsMzcgKzUxLDExNiBAQAogI2luY2x1
ZGUgIkhlYXBWZXJpZmllci5oIgogI2luY2x1ZGUgIkluY3JlbWVudGFsU3dlZXBlci5oIgogI2lu
Y2x1ZGUgIkludGVycHJldGVyLmgiCisjaW5jbHVkZSAiSW50bENvbGxhdG9yLmgiCisjaW5jbHVk
ZSAiSW50bERhdGVUaW1lRm9ybWF0LmgiCisjaW5jbHVkZSAiSW50bERpc3BsYXlOYW1lcy5oIgor
I2luY2x1ZGUgIkludGxMaXN0Rm9ybWF0LmgiCisjaW5jbHVkZSAiSW50bExvY2FsZS5oIgorI2lu
Y2x1ZGUgIkludGxOdW1iZXJGb3JtYXQuaCIKKyNpbmNsdWRlICJJbnRsUGx1cmFsUnVsZXMuaCIK
KyNpbmNsdWRlICJJbnRsUmVsYXRpdmVUaW1lRm9ybWF0LmgiCisjaW5jbHVkZSAiSW50bFNlZ21l
bnRJdGVyYXRvci5oIgorI2luY2x1ZGUgIkludGxTZWdtZW50ZXIuaCIKKyNpbmNsdWRlICJJbnRs
U2VnbWVudHMuaCIKICNpbmNsdWRlICJJc29DZWxsU2V0SW5saW5lcy5oIgogI2luY2x1ZGUgIkpJ
VFN0dWJSb3V0aW5lU2V0LmgiCiAjaW5jbHVkZSAiSklUV29ya2xpc3RJbmxpbmVzLmgiCisjaW5j
bHVkZSAiSlNBUElHbG9iYWxPYmplY3QuaCIKKyNpbmNsdWRlICJKU0FQSVZhbHVlV3JhcHBlci5o
IgorI2luY2x1ZGUgIkpTQVBJV3JhcHBlck9iamVjdC5oIgorI2luY2x1ZGUgIkpTQXJyYXkuaCIK
KyNpbmNsdWRlICJKU0FycmF5QnVmZmVyLmgiCisjaW5jbHVkZSAiSlNBcnJheUl0ZXJhdG9yLmgi
CisjaW5jbHVkZSAiSlNBc3luY0dlbmVyYXRvci5oIgorI2luY2x1ZGUgIkpTQmlnSW50LmgiCisj
aW5jbHVkZSAiSlNCb3VuZEZ1bmN0aW9uLmgiCisjaW5jbHVkZSAiSlNDYWxsYmFja0NvbnN0cnVj
dG9yLmgiCisjaW5jbHVkZSAiSlNDYWxsYmFja0Z1bmN0aW9uLmgiCisjaW5jbHVkZSAiSlNDYWxs
YmFja09iamVjdC5oIgorI2luY2x1ZGUgIkpTQ2FsbGVlLmgiCisjaW5jbHVkZSAiSlNDdXN0b21H
ZXR0ZXJGdW5jdGlvbi5oIgorI2luY2x1ZGUgIkpTQ3VzdG9tU2V0dGVyRnVuY3Rpb24uaCIKKyNp
bmNsdWRlICJKU0RhdGFWaWV3LmgiCiAjaW5jbHVkZSAiSlNGaW5hbGl6YXRpb25SZWdpc3RyeS5o
IgorI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKKyNpbmNsdWRlICJKU0dsb2JhbExleGljYWxFbnZp
cm9ubWVudC5oIgorI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCisjaW5jbHVkZSAiSlNJbmpl
Y3RlZFNjcmlwdEhvc3QuaCIKKyNpbmNsdWRlICJKU0phdmFTY3JpcHRDYWxsRnJhbWUuaCIKKyNp
bmNsdWRlICJKU01hcC5oIgorI2luY2x1ZGUgIkpTTWFwSXRlcmF0b3IuaCIKKyNpbmNsdWRlICJK
U01vZHVsZU5hbWVzcGFjZU9iamVjdC5oIgorI2luY2x1ZGUgIkpTTW9kdWxlUmVjb3JkLmgiCisj
aW5jbHVkZSAiSlNOYXRpdmVTdGRGdW5jdGlvbi5oIgorI2luY2x1ZGUgIkpTUHJvbWlzZS5oIgor
I2luY2x1ZGUgIkpTUHJvcGVydHlOYW1lRW51bWVyYXRvci5oIgorI2luY2x1ZGUgIkpTUHJveHku
aCIKKyNpbmNsdWRlICJKU1NjcmlwdEZldGNoUGFyYW1ldGVycy5oIgorI2luY2x1ZGUgIkpTU2Ny
aXB0RmV0Y2hlci5oIgorI2luY2x1ZGUgIkpTU2V0LmgiCisjaW5jbHVkZSAiSlNTZXRJdGVyYXRv
ci5oIgorI2luY2x1ZGUgIkpTU291cmNlQ29kZS5oIgorI2luY2x1ZGUgIkpTU3RyaW5nSXRlcmF0
b3IuaCIKKyNpbmNsdWRlICJKU1RlbXBsYXRlT2JqZWN0RGVzY3JpcHRvci5oIgorI2luY2x1ZGUg
IkpTVG9XYXNtSUNDYWxsZWUuaCIKKyNpbmNsdWRlICJKU1R5cGVkQXJyYXlzLmgiCiAjaW5jbHVk
ZSAiSlNWaXJ0dWFsTWFjaGluZUludGVybmFsLmgiCiAjaW5jbHVkZSAiSlNXZWFrTWFwLmgiCiAj
aW5jbHVkZSAiSlNXZWFrT2JqZWN0UmVmLmgiCiAjaW5jbHVkZSAiSlNXZWFrU2V0LmgiCiAjaW5j
bHVkZSAiSlNXZWJBc3NlbWJseUNvZGVCbG9jay5oIgorI2luY2x1ZGUgIkpTV2ViQXNzZW1ibHlF
eGNlcHRpb24uaCIKKyNpbmNsdWRlICJKU1dlYkFzc2VtYmx5R2xvYmFsLmgiCisjaW5jbHVkZSAi
SlNXZWJBc3NlbWJseUluc3RhbmNlLmgiCisjaW5jbHVkZSAiSlNXZWJBc3NlbWJseU1lbW9yeS5o
IgorI2luY2x1ZGUgIkpTV2ViQXNzZW1ibHlNb2R1bGUuaCIKKyNpbmNsdWRlICJKU1dlYkFzc2Vt
Ymx5VGFibGUuaCIKKyNpbmNsdWRlICJKU1dlYkFzc2VtYmx5VGFnLmgiCisjaW5jbHVkZSAiSlNX
aXRoU2NvcGUuaCIKICNpbmNsdWRlICJNYWNoaW5lU3RhY2tNYXJrZXIuaCIKICNpbmNsdWRlICJN
YXJrU3RhY2tNZXJnaW5nQ29uc3RyYWludC5oIgogI2luY2x1ZGUgIk1hcmtlZEpTVmFsdWVSZWZB
cnJheS5oIgogI2luY2x1ZGUgIk1hcmtlZFNwYWNlSW5saW5lcy5oIgogI2luY2x1ZGUgIk1hcmtp
bmdDb25zdHJhaW50U2V0LmgiCisjaW5jbHVkZSAiTmF0aXZlRXhlY3V0YWJsZS5oIgogI2luY2x1
ZGUgIlByZXZlbnRDb2xsZWN0aW9uU2NvcGUuaCIKKyNpbmNsdWRlICJQcm9ncmFtRXhlY3V0YWJs
ZS5oIgorI2luY2x1ZGUgIlByb3BlcnR5VGFibGUuaCIKKyNpbmNsdWRlICJQcm94eVJldm9rZS5o
IgorI2luY2x1ZGUgIlJlZ0V4cE9iamVjdC5oIgogI2luY2x1ZGUgIlNhbXBsaW5nUHJvZmlsZXIu
aCIKKyNpbmNsdWRlICJTY29wZWRBcmd1bWVudHMuaCIKICNpbmNsdWRlICJTaGFkb3dDaGlja2Vu
LmgiCisjaW5jbHVkZSAiU2hhZG93UmVhbG1PYmplY3QuaCIKICNpbmNsdWRlICJTcGFjZVRpbWVN
dXRhdG9yU2NoZWR1bGVyLmgiCiAjaW5jbHVkZSAiU3RvY2hhc3RpY1NwYWNlVGltZU11dGF0b3JT
Y2hlZHVsZXIuaCIKICNpbmNsdWRlICJTdG9wSWZOZWNlc3NhcnlUaW1lci5oIgorI2luY2x1ZGUg
IlN0cmljdEV2YWxBY3RpdmF0aW9uLmgiCisjaW5jbHVkZSAiU3RyaW5nT2JqZWN0LmgiCisjaW5j
bHVkZSAiU3RydWN0dXJlQ2hhaW4uaCIKICNpbmNsdWRlICJTdWJzcGFjZUlubGluZXMuaCIKICNp
bmNsdWRlICJTdXBlclNhbXBsZXIuaCIKICNpbmNsdWRlICJTd2VlcGluZ1Njb3BlLmgiCisjaW5j
bHVkZSAiU3ltYm9sT2JqZWN0LmgiCiAjaW5jbHVkZSAiU3ltYm9sVGFibGVJbmxpbmVzLmgiCiAj
aW5jbHVkZSAiU3luY2hyb25vdXNTdG9wVGhlV29ybGRNdXRhdG9yU2NoZWR1bGVyLmgiCisjaW5j
bHVkZSAiVGVtcG9yYWxDYWxlbmRhci5oIgorI2luY2x1ZGUgIlRlbXBvcmFsRHVyYXRpb24uaCIK
KyNpbmNsdWRlICJUZW1wb3JhbEluc3RhbnQuaCIKKyNpbmNsdWRlICJUZW1wb3JhbFBsYWluVGlt
ZS5oIgorI2luY2x1ZGUgIlRlbXBvcmFsVGltZVpvbmUuaCIKICNpbmNsdWRlICJUeXBlUHJvZmls
ZXIuaCIKICNpbmNsdWRlICJUeXBlUHJvZmlsZXJMb2cuaCIKKyNpbmNsdWRlICJVbmxpbmtlZEZ1
bmN0aW9uQ29kZUJsb2NrLmgiCisjaW5jbHVkZSAiVW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJs
b2NrLmgiCisjaW5jbHVkZSAiVW5saW5rZWRQcm9ncmFtQ29kZUJsb2NrLmgiCiAjaW5jbHVkZSAi
Vk0uaCIKICNpbmNsdWRlICJWZXJpZmllclNsb3RWaXNpdG9ySW5saW5lcy5oIgogI2luY2x1ZGUg
IldlYWtNYXBJbXBsSW5saW5lcy5oIgogI2luY2x1ZGUgIldlYWtTZXRJbmxpbmVzLmgiCisjaW5j
bHVkZSAiV2ViQXNzZW1ibHlGdW5jdGlvbi5oIgorI2luY2x1ZGUgIldlYkFzc2VtYmx5TW9kdWxl
UmVjb3JkLmgiCisjaW5jbHVkZSAiV2ViQXNzZW1ibHlXcmFwcGVyRnVuY3Rpb24uaCIKICNpbmNs
dWRlIDxhbGdvcml0aG0+CiAjaW5jbHVkZSA8d3RmL0NyeXB0b2dyYXBoaWNhbGx5UmFuZG9tTnVt
YmVyLmg+CiAjaW5jbHVkZSA8d3RmL0xpc3REdW1wLmg+CkBAIC05MCw3ICsxNzcsMTMgQEAKICNp
bmNsdWRlIDx3dGYvc3BpL2NvY29hL29iamNTUEkuaD4KICNlbmRpZgogCisjaWYgSlNDX09CSkNf
QVBJX0VOQUJMRUQKKyNpbmNsdWRlICJPYmpDQ2FsbGJhY2tGdW5jdGlvbi5oIgorI2VuZGlmCisK
ICNpZmRlZiBKU0NfR0xJQl9BUElfRU5BQkxFRAorI2luY2x1ZGUgIkpTQVBJV3JhcHBlckdsb2Jh
bE9iamVjdC5oIgorI2luY2x1ZGUgIkpTQ0NhbGxiYWNrRnVuY3Rpb24uaCIKICNpbmNsdWRlICJK
U0NHTGliV3JhcHBlck9iamVjdC5oIgogI2VuZGlmCiAKQEAgLTI4Niw2ICszNzksMTE0IEBAIEhl
YXA6OkhlYXAoVk0mIHZtLCBIZWFwVHlwZSBoZWFwVHlwZSkKICAgICAsIG1faGVscGVyQ2xpZW50
KCZoZWFwSGVscGVyUG9vbCgpKQogICAgICwgbV90aHJlYWRMb2NrKEJveDxMb2NrPjo6Y3JlYXRl
KCkpCiAgICAgLCBtX3RocmVhZENvbmRpdGlvbihBdXRvbWF0aWNUaHJlYWRDb25kaXRpb246OmNy
ZWF0ZSgpKQorCisgICAgLy8gbWxhbSBIZWFwQ2VsbFR5cGVzCisgICAgLCBhdXhpbGlhcnlIZWFw
Q2VsbFR5cGUoQ2VsbEF0dHJpYnV0ZXMoRG9lc05vdE5lZWREZXN0cnVjdGlvbiwgSGVhcENlbGw6
OkF1eGlsaWFyeSkpCisgICAgLCBpbW11dGFibGVCdXR0ZXJmbHlIZWFwQ2VsbFR5cGUoQ2VsbEF0
dHJpYnV0ZXMoRG9lc05vdE5lZWREZXN0cnVjdGlvbiwgSGVhcENlbGw6OkpTQ2VsbFdpdGhJbmRl
eGluZ0hlYWRlcikpCisgICAgLCBjZWxsSGVhcENlbGxUeXBlKENlbGxBdHRyaWJ1dGVzKERvZXNO
b3ROZWVkRGVzdHJ1Y3Rpb24sIEhlYXBDZWxsOjpKU0NlbGwpKQorICAgICwgZGVzdHJ1Y3RpYmxl
Q2VsbEhlYXBDZWxsVHlwZShDZWxsQXR0cmlidXRlcyhOZWVkc0Rlc3RydWN0aW9uLCBIZWFwQ2Vs
bDo6SlNDZWxsKSkKKyAgICAsIGFwaUdsb2JhbE9iamVjdEhlYXBDZWxsVHlwZShJc29IZWFwQ2Vs
bFR5cGU6OkFyZ3M8SlNBUElHbG9iYWxPYmplY3Q+KCkpCisgICAgLCBjYWxsYmFja0NvbnN0cnVj
dG9ySGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6QXJnczxKU0NhbGxiYWNrQ29uc3RydWN0
b3I+KCkpCisgICAgLCBjYWxsYmFja0dsb2JhbE9iamVjdEhlYXBDZWxsVHlwZShJc29IZWFwQ2Vs
bFR5cGU6OkFyZ3M8SlNDYWxsYmFja09iamVjdDxKU0dsb2JhbE9iamVjdD4+KCkpCisgICAgLCBj
YWxsYmFja09iamVjdEhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OkFyZ3M8SlNDYWxsYmFj
a09iamVjdDxKU05vbkZpbmFsT2JqZWN0Pj4oKSkKKyAgICAsIGN1c3RvbUdldHRlckZ1bmN0aW9u
SGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6QXJnczxKU0N1c3RvbUdldHRlckZ1bmN0aW9u
PigpKQorICAgICwgY3VzdG9tU2V0dGVyRnVuY3Rpb25IZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxU
eXBlOjpBcmdzPEpTQ3VzdG9tU2V0dGVyRnVuY3Rpb24+KCkpCisgICAgLCBkYXRlSW5zdGFuY2VI
ZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpBcmdzPERhdGVJbnN0YW5jZT4oKSkKKyAgICAs
IGVycm9ySW5zdGFuY2VIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpBcmdzPEVycm9ySW5z
dGFuY2U+KCkpCisgICAgLCBmaW5hbGl6YXRpb25SZWdpc3RyeUNlbGxUeXBlKElzb0hlYXBDZWxs
VHlwZTo6QXJnczxKU0ZpbmFsaXphdGlvblJlZ2lzdHJ5PigpKQorICAgICwgZ2xvYmFsTGV4aWNh
bEVudmlyb25tZW50SGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6QXJnczxKU0dsb2JhbExl
eGljYWxFbnZpcm9ubWVudD4oKSkKKyAgICAsIGdsb2JhbE9iamVjdEhlYXBDZWxsVHlwZShJc29I
ZWFwQ2VsbFR5cGU6OkFyZ3M8SlNHbG9iYWxPYmplY3Q+KCkpCisgICAgLCBpbmplY3RlZFNjcmlw
dEhvc3RTcGFjZUhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OkFyZ3M8SW5zcGVjdG9yOjpK
U0luamVjdGVkU2NyaXB0SG9zdD4oKSkKKyAgICAsIGphdmFTY3JpcHRDYWxsRnJhbWVIZWFwQ2Vs
bFR5cGUoSXNvSGVhcENlbGxUeXBlOjpBcmdzPEluc3BlY3Rvcjo6SlNKYXZhU2NyaXB0Q2FsbEZy
YW1lPigpKQorICAgICwganNNb2R1bGVSZWNvcmRIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBl
OjpBcmdzPEpTTW9kdWxlUmVjb3JkPigpKQorICAgICwgbW9kdWxlTmFtZXNwYWNlT2JqZWN0SGVh
cENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6QXJnczxKU01vZHVsZU5hbWVzcGFjZU9iamVjdD4o
KSkKKyAgICAsIG5hdGl2ZVN0ZEZ1bmN0aW9uSGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6
QXJnczxKU05hdGl2ZVN0ZEZ1bmN0aW9uPigpKQorICAgICwgd2Vha01hcEhlYXBDZWxsVHlwZShJ
c29IZWFwQ2VsbFR5cGU6OkFyZ3M8SlNXZWFrTWFwPigpKQorICAgICwgd2Vha1NldEhlYXBDZWxs
VHlwZShJc29IZWFwQ2VsbFR5cGU6OkFyZ3M8SlNXZWFrU2V0PigpKQorI2lmIEpTQ19PQkpDX0FQ
SV9FTkFCTEVECisgICAgLCBhcGlXcmFwcGVyT2JqZWN0SGVhcENlbGxUeXBlKElzb0hlYXBDZWxs
VHlwZTo6QXJnczxKU0NhbGxiYWNrT2JqZWN0PEpTQVBJV3JhcHBlck9iamVjdD4+KCkpCisgICAg
LCBvYmpDQ2FsbGJhY2tGdW5jdGlvbkhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OkFyZ3M8
T2JqQ0NhbGxiYWNrRnVuY3Rpb24+KCkpCisjZW5kaWYKKyNpZmRlZiBKU0NfR0xJQl9BUElfRU5B
QkxFRAorICAgICwgYXBpV3JhcHBlck9iamVjdEhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6
OkFyZ3M8SlNDYWxsYmFja09iamVjdDxKU0FQSVdyYXBwZXJPYmplY3Q+PigpKQorICAgICwgY2Fs
bGJhY2tBUElXcmFwcGVyR2xvYmFsT2JqZWN0SGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6
QXJnczxKU0NhbGxiYWNrT2JqZWN0PEpTQVBJV3JhcHBlckdsb2JhbE9iamVjdD4+KCkpCisgICAg
LCBqc2NDYWxsYmFja0Z1bmN0aW9uSGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6QXJnczxK
U0NDYWxsYmFja0Z1bmN0aW9uPigpKQorI2VuZGlmCisgICAgLCBpbnRsQ29sbGF0b3JIZWFwQ2Vs
bFR5cGUoSXNvSGVhcENlbGxUeXBlOjpBcmdzPEludGxDb2xsYXRvcj4oKSkKKyAgICAsIGludGxE
YXRlVGltZUZvcm1hdEhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OkFyZ3M8SW50bERhdGVU
aW1lRm9ybWF0PigpKQorICAgICwgaW50bERpc3BsYXlOYW1lc0hlYXBDZWxsVHlwZShJc29IZWFw
Q2VsbFR5cGU6OkFyZ3M8SW50bERpc3BsYXlOYW1lcz4oKSkKKyAgICAsIGludGxMaXN0Rm9ybWF0
SGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6QXJnczxJbnRsTGlzdEZvcm1hdD4oKSkKKyAg
ICAsIGludGxMb2NhbGVIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpBcmdzPEludGxMb2Nh
bGU+KCkpCisgICAgLCBpbnRsTnVtYmVyRm9ybWF0SGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlw
ZTo6QXJnczxJbnRsTnVtYmVyRm9ybWF0PigpKQorICAgICwgaW50bFBsdXJhbFJ1bGVzSGVhcENl
bGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6QXJnczxJbnRsUGx1cmFsUnVsZXM+KCkpCisgICAgLCBp
bnRsUmVsYXRpdmVUaW1lRm9ybWF0SGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6QXJnczxJ
bnRsUmVsYXRpdmVUaW1lRm9ybWF0PigpKQorICAgICwgaW50bFNlZ21lbnRJdGVyYXRvckhlYXBD
ZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OkFyZ3M8SW50bFNlZ21lbnRJdGVyYXRvcj4oKSkKKyAg
ICAsIGludGxTZWdtZW50ZXJIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpBcmdzPEludGxT
ZWdtZW50ZXI+KCkpCisgICAgLCBpbnRsU2VnbWVudHNIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxU
eXBlOjpBcmdzPEludGxTZWdtZW50cz4oKSkKKyNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCisgICAg
LCB3ZWJBc3NlbWJseUNvZGVCbG9ja0hlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OkFyZ3M8
SlNXZWJBc3NlbWJseUNvZGVCbG9jaz4oKSkKKyAgICAsIHdlYkFzc2VtYmx5RXhjZXB0aW9uSGVh
cENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6QXJnczxKU1dlYkFzc2VtYmx5RXhjZXB0aW9uPigp
KQorICAgICwgd2ViQXNzZW1ibHlGdW5jdGlvbkhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6
OkFyZ3M8V2ViQXNzZW1ibHlGdW5jdGlvbj4oKSkKKyAgICAsIHdlYkFzc2VtYmx5R2xvYmFsSGVh
cENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6QXJnczxKU1dlYkFzc2VtYmx5R2xvYmFsPigpKQor
ICAgICwgd2ViQXNzZW1ibHlJbnN0YW5jZUhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OkFy
Z3M8SlNXZWJBc3NlbWJseUluc3RhbmNlPigpKQorICAgICwgd2ViQXNzZW1ibHlNZW1vcnlIZWFw
Q2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpBcmdzPEpTV2ViQXNzZW1ibHlNZW1vcnk+KCkpCisg
ICAgLCB3ZWJBc3NlbWJseU1vZHVsZUhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OkFyZ3M8
SlNXZWJBc3NlbWJseU1vZHVsZT4oKSkKKyAgICAsIHdlYkFzc2VtYmx5TW9kdWxlUmVjb3JkSGVh
cENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6QXJnczxXZWJBc3NlbWJseU1vZHVsZVJlY29yZD4o
KSkKKyAgICAsIHdlYkFzc2VtYmx5VGFibGVIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpB
cmdzPEpTV2ViQXNzZW1ibHlUYWJsZT4oKSkKKyAgICAsIHdlYkFzc2VtYmx5VGFnSGVhcENlbGxU
eXBlKElzb0hlYXBDZWxsVHlwZTo6QXJnczxKU1dlYkFzc2VtYmx5VGFnPigpKQorI2VuZGlmCisK
KyAgICAvLyBtbGFtIEFsaWduZWRNZW1vcnlBbGxvY2F0b3JzCisgICAgLCBmYXN0TWFsbG9jQWxs
b2NhdG9yKG1ha2VVbmlxdWU8RmFzdE1hbGxvY0FsaWduZWRNZW1vcnlBbGxvY2F0b3I+KCkpCisg
ICAgLCBwcmltaXRpdmVHaWdhY2FnZUFsbG9jYXRvcihtYWtlVW5pcXVlPEdpZ2FjYWdlQWxpZ25l
ZE1lbW9yeUFsbG9jYXRvcj4oR2lnYWNhZ2U6OlByaW1pdGl2ZSkpCisgICAgLCBqc1ZhbHVlR2ln
YWNhZ2VBbGxvY2F0b3IobWFrZVVuaXF1ZTxHaWdhY2FnZUFsaWduZWRNZW1vcnlBbGxvY2F0b3I+
KEdpZ2FjYWdlOjpKU1ZhbHVlKSkKKworICAgIC8vIG1sYW0gU3Vic3BhY2VzCisgICAgLCBwcmlt
aXRpdmVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlKCJQcmltaXRpdmUgR2lnYWNhZ2UgQXV4aWxpYXJ5
IiwgKnRoaXMsIGF1eGlsaWFyeUhlYXBDZWxsVHlwZSwgcHJpbWl0aXZlR2lnYWNhZ2VBbGxvY2F0
b3IuZ2V0KCkpIC8vIEhhc2g6MHgzZTdjZDc2MgorICAgICwganNWYWx1ZUdpZ2FjYWdlQXV4aWxp
YXJ5U3BhY2UoIkpTVmFsdWUgR2lnYWNhZ2UgQXV4aWxpYXJ5IiwgKnRoaXMsIGF1eGlsaWFyeUhl
YXBDZWxsVHlwZSwganNWYWx1ZUdpZ2FjYWdlQWxsb2NhdG9yLmdldCgpKSAvLyBIYXNoOjB4MjQx
ZTk0NgorICAgICwgaW1tdXRhYmxlQnV0dGVyZmx5SlNWYWx1ZUdpZ2FjYWdlQXV4aWxpYXJ5U3Bh
Y2UoIkltbXV0YWJsZUJ1dHRlcmZseSBHaWdhY2FnZSBKU0NlbGxXaXRoSW5kZXhpbmdIZWFkZXIi
LCAqdGhpcywgaW1tdXRhYmxlQnV0dGVyZmx5SGVhcENlbGxUeXBlLCBqc1ZhbHVlR2lnYWNhZ2VB
bGxvY2F0b3IuZ2V0KCkpIC8vIEhhc2g6MHg3YTk0NTMwMAorICAgICwgY2VsbFNwYWNlKCJKU0Nl
bGwiLCAqdGhpcywgY2VsbEhlYXBDZWxsVHlwZSwgZmFzdE1hbGxvY0FsbG9jYXRvci5nZXQoKSkg
Ly8gSGFzaDoweGFkZmI1YTc5CisgICAgLCB2YXJpYWJsZVNpemVkQ2VsbFNwYWNlKCJWYXJpYWJs
ZSBTaXplZCBKU0NlbGwiLCAqdGhpcywgY2VsbEhlYXBDZWxsVHlwZSwgZmFzdE1hbGxvY0FsbG9j
YXRvci5nZXQoKSkgLy8gSGFzaDoweGJjZDc2OWNjCisgICAgLCBkZXN0cnVjdGlibGVPYmplY3RT
cGFjZSgiSlNEZXN0cnVjdGlibGVPYmplY3QiLCAqdGhpcywgZGVzdHJ1Y3RpYmxlT2JqZWN0SGVh
cENlbGxUeXBlLCBmYXN0TWFsbG9jQWxsb2NhdG9yLmdldCgpKSAvLyBIYXNoOjB4NGY1ZWQ3YTkK
KyAgICAsIGFycmF5U3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoKnRoaXMsIGNlbGxIZWFwQ2VsbFR5
cGUsIEpTQXJyYXkpCisgICAgLCBiaWdJbnRTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVCgqdGhpcywg
Y2VsbEhlYXBDZWxsVHlwZSwgSlNCaWdJbnQpCisgICAgLCBjYWxsZWVTcGFjZSBJU09fU1VCU1BB
Q0VfSU5JVCgqdGhpcywgY2VsbEhlYXBDZWxsVHlwZSwgSlNDYWxsZWUpCisgICAgLCBjbG9uZWRB
cmd1bWVudHNTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVCgqdGhpcywgY2VsbEhlYXBDZWxsVHlwZSwg
Q2xvbmVkQXJndW1lbnRzKQorICAgICwgY3VzdG9tR2V0dGVyU2V0dGVyU3BhY2UgSVNPX1NVQlNQ
QUNFX0lOSVQoKnRoaXMsIGNlbGxIZWFwQ2VsbFR5cGUsIEN1c3RvbUdldHRlclNldHRlcikKKyAg
ICAsIGRhdGVJbnN0YW5jZVNwYWNlIElTT19TVUJTUEFDRV9JTklUKCp0aGlzLCBkYXRlSW5zdGFu
Y2VIZWFwQ2VsbFR5cGUsIERhdGVJbnN0YW5jZSkKKyAgICAsIGRvbUF0dHJpYnV0ZUdldHRlclNl
dHRlclNwYWNlIElTT19TVUJTUEFDRV9JTklUKCp0aGlzLCBjZWxsSGVhcENlbGxUeXBlLCBET01B
dHRyaWJ1dGVHZXR0ZXJTZXR0ZXIpCisgICAgLCBleGNlcHRpb25TcGFjZSBJU09fU1VCU1BBQ0Vf
SU5JVCgqdGhpcywgZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZSwgRXhjZXB0aW9uKQorICAg
ICwgZXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZVNwYWNlIElTT19TVUJTUEFDRV9JTklUKCp0aGlz
LCBjZWxsSGVhcENlbGxUeXBlLCBFeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlKSAvLyBIYXNoOjB4
N2I3MzBiMjAKKyAgICAsIGZ1bmN0aW9uU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoKnRoaXMsIGNl
bGxIZWFwQ2VsbFR5cGUsIEpTRnVuY3Rpb24pIC8vIEhhc2g6MHg4MDBmY2E3MgorICAgICwgZ2V0
dGVyU2V0dGVyU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoKnRoaXMsIGNlbGxIZWFwQ2VsbFR5cGUs
IEdldHRlclNldHRlcikKKyAgICAsIGdsb2JhbExleGljYWxFbnZpcm9ubWVudFNwYWNlIElTT19T
VUJTUEFDRV9JTklUKCp0aGlzLCBnbG9iYWxMZXhpY2FsRW52aXJvbm1lbnRIZWFwQ2VsbFR5cGUs
IEpTR2xvYmFsTGV4aWNhbEVudmlyb25tZW50KQorICAgICwgaW50ZXJuYWxGdW5jdGlvblNwYWNl
IElTT19TVUJTUEFDRV9JTklUKCp0aGlzLCBjZWxsSGVhcENlbGxUeXBlLCBJbnRlcm5hbEZ1bmN0
aW9uKSAvLyBIYXNoOjB4Zjg0NWM0NjQKKyAgICAsIGpzUHJveHlTcGFjZSBJU09fU1VCU1BBQ0Vf
SU5JVCgqdGhpcywgY2VsbEhlYXBDZWxsVHlwZSwgSlNQcm94eSkKKyAgICAsIG5hdGl2ZUV4ZWN1
dGFibGVTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVCgqdGhpcywgZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBD
ZWxsVHlwZSwgTmF0aXZlRXhlY3V0YWJsZSkgLy8gSGFzaDoweDY3NTY3Zjk1CisgICAgLCBudW1i
ZXJPYmplY3RTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVCgqdGhpcywgY2VsbEhlYXBDZWxsVHlwZSwg
TnVtYmVyT2JqZWN0KQorICAgICwgcGxhaW5PYmplY3RTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVCgq
dGhpcywgY2VsbEhlYXBDZWxsVHlwZSwgSlNOb25GaW5hbE9iamVjdCkgLy8gTWFpbmx5IHVzZWQg
Zm9yIHByb3RvdHlwZXMuCisgICAgLCBwcm9taXNlU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoKnRo
aXMsIGNlbGxIZWFwQ2VsbFR5cGUsIEpTUHJvbWlzZSkKKyAgICAsIHByb3BlcnR5TmFtZUVudW1l
cmF0b3JTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVCgqdGhpcywgY2VsbEhlYXBDZWxsVHlwZSwgSlNQ
cm9wZXJ0eU5hbWVFbnVtZXJhdG9yKQorICAgICwgcHJvcGVydHlUYWJsZVNwYWNlIElTT19TVUJT
UEFDRV9JTklUKCp0aGlzLCBkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlLCBQcm9wZXJ0eVRh
YmxlKSAvLyBIYXNoOjB4YzZiYzlmMTIKKyAgICAsIHJlZ0V4cFNwYWNlIElTT19TVUJTUEFDRV9J
TklUKCp0aGlzLCBkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlLCBSZWdFeHApCisgICAgLCBy
ZWdFeHBPYmplY3RTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVCgqdGhpcywgY2VsbEhlYXBDZWxsVHlw
ZSwgUmVnRXhwT2JqZWN0KQorICAgICwgcm9wZVN0cmluZ1NwYWNlIElTT19TVUJTUEFDRV9JTklU
KCp0aGlzLCBzdHJpbmdIZWFwQ2VsbFR5cGUsIEpTUm9wZVN0cmluZykKKyAgICAsIHNjb3BlZEFy
Z3VtZW50c1NwYWNlIElTT19TVUJTUEFDRV9JTklUKCp0aGlzLCBjZWxsSGVhcENlbGxUeXBlLCBT
Y29wZWRBcmd1bWVudHMpCisgICAgLCBzcGFyc2VBcnJheVZhbHVlTWFwU3BhY2UgSVNPX1NVQlNQ
QUNFX0lOSVQoKnRoaXMsIGRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUsIFNwYXJzZUFycmF5
VmFsdWVNYXApCisgICAgLCBzdHJpbmdTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVCgqdGhpcywgc3Ry
aW5nSGVhcENlbGxUeXBlLCBKU1N0cmluZykgLy8gSGFzaDoweDkwY2Y3NThmCisgICAgLCBzdHJp
bmdPYmplY3RTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVCgqdGhpcywgY2VsbEhlYXBDZWxsVHlwZSwg
U3RyaW5nT2JqZWN0KQorICAgICwgc3RydWN0dXJlQ2hhaW5TcGFjZSBJU09fU1VCU1BBQ0VfSU5J
VCgqdGhpcywgY2VsbEhlYXBDZWxsVHlwZSwgU3RydWN0dXJlQ2hhaW4pCisgICAgLCBzdHJ1Y3R1
cmVSYXJlRGF0YVNwYWNlIElTT19TVUJTUEFDRV9JTklUKCp0aGlzLCBkZXN0cnVjdGlibGVDZWxs
SGVhcENlbGxUeXBlLCBTdHJ1Y3R1cmVSYXJlRGF0YSkgLy8gSGFzaDoweGFjYTRlNjJkCisgICAg
LCBzdHJ1Y3R1cmVTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVCgqdGhpcywgZGVzdHJ1Y3RpYmxlQ2Vs
bEhlYXBDZWxsVHlwZSwgU3RydWN0dXJlKSAvLyBIYXNoOjB4MWYxYmNkY2EKKyAgICAsIGJyYW5k
ZWRTdHJ1Y3R1cmVTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVCgqdGhpcywgZGVzdHJ1Y3RpYmxlQ2Vs
bEhlYXBDZWxsVHlwZSwgQnJhbmRlZFN0cnVjdHVyZSkKKyAgICAsIHN5bWJvbFRhYmxlU3BhY2Ug
SVNPX1NVQlNQQUNFX0lOSVQoKnRoaXMsIGRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUsIFN5
bWJvbFRhYmxlKSAvLyBIYXNoOjB4YzUyMTVhZmQKKyAgICAsIGV4ZWN1dGFibGVUb0NvZGVCbG9j
a0VkZ2VzV2l0aENvbnN0cmFpbnRzKGV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2VTcGFjZSkKKyAg
ICAsIGV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2VzV2l0aEZpbmFsaXplcnMoZXhlY3V0YWJsZVRv
Q29kZUJsb2NrRWRnZVNwYWNlKQorICAgICwgY29kZUJsb2NrU3BhY2UgSVNPX1NVQlNQQUNFX0lO
SVQoKnRoaXMsIGRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUsIENvZGVCbG9jaykgLy8gSGFz
aDoweDc3ZTY2ZWM5CisgICAgLCBmdW5jdGlvbkV4ZWN1dGFibGVTcGFjZSBJU09fU1VCU1BBQ0Vf
SU5JVCgqdGhpcywgZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZSwgRnVuY3Rpb25FeGVjdXRh
YmxlKSAvLyBIYXNoOjB4NWQxNThmMworICAgICwgcHJvZ3JhbUV4ZWN1dGFibGVTcGFjZSBJU09f
U1VCU1BBQ0VfSU5JVCgqdGhpcywgZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZSwgUHJvZ3Jh
bUV4ZWN1dGFibGUpIC8vIEhhc2g6MHg1MjdjNzdlNworICAgICwgdW5saW5rZWRGdW5jdGlvbkV4
ZWN1dGFibGVTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVCgqdGhpcywgZGVzdHJ1Y3RpYmxlQ2VsbEhl
YXBDZWxsVHlwZSwgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUpIC8vIEhhc2g6MHhmNmI4Mjhk
OQorCiB7CiAgICAgbV93b3JsZFN0YXRlLnN0b3JlKDApOwogCkBAIC01NzksMzEgKzc4MCwzMSBA
QCB2b2lkIEhlYXA6OmZpbmFsaXplVW5jb25kaXRpb25hbEZpbmFsaXplCiB7CiAgICAgVk0mIHZt
ID0gdGhpcy0+dm0oKTsKICAgICB2bS5idWlsdGluRXhlY3V0YWJsZXMoKS0+ZmluYWxpemVVbmNv
bmRpdGlvbmFsbHkoKTsKLSAgICBmaW5hbGl6ZU1hcmtlZFVuY29uZGl0aW9uYWxGaW5hbGl6ZXJz
PEZ1bmN0aW9uRXhlY3V0YWJsZT4odm0uZnVuY3Rpb25FeGVjdXRhYmxlU3BhY2Uuc3BhY2UpOwot
ICAgIGZpbmFsaXplTWFya2VkVW5jb25kaXRpb25hbEZpbmFsaXplcnM8U3ltYm9sVGFibGU+KHZt
LnN5bWJvbFRhYmxlU3BhY2UpOwotICAgIGZpbmFsaXplTWFya2VkVW5jb25kaXRpb25hbEZpbmFs
aXplcnM8RXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZT4odm0uZXhlY3V0YWJsZVRvQ29kZUJsb2Nr
RWRnZXNXaXRoRmluYWxpemVycyk7IC8vIFdlIHJ1biB0aGlzIGJlZm9yZSBDb2RlQmxvY2sncyB1
bmNvbmRpdGlvbmFsIGZpbmFsaXplciBzaW5jZSBDb2RlQmxvY2sgbG9va3MgYXQgdGhlIG93bmVy
IGV4ZWN1dGFibGUncyBpbnN0YWxsZWQgQ29kZUJsb2NrIGluIGl0cyBmaW5hbGl6ZVVuY29uZGl0
aW9uYWxseS4KLSAgICB2bS5mb3JFYWNoQ29kZUJsb2NrU3BhY2UoCisgICAgZmluYWxpemVNYXJr
ZWRVbmNvbmRpdGlvbmFsRmluYWxpemVyczxGdW5jdGlvbkV4ZWN1dGFibGU+KGZ1bmN0aW9uRXhl
Y3V0YWJsZVNwYWNlLnNwYWNlKTsKKyAgICBmaW5hbGl6ZU1hcmtlZFVuY29uZGl0aW9uYWxGaW5h
bGl6ZXJzPFN5bWJvbFRhYmxlPihzeW1ib2xUYWJsZVNwYWNlKTsKKyAgICBmaW5hbGl6ZU1hcmtl
ZFVuY29uZGl0aW9uYWxGaW5hbGl6ZXJzPEV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2U+KGV4ZWN1
dGFibGVUb0NvZGVCbG9ja0VkZ2VzV2l0aEZpbmFsaXplcnMpOyAvLyBXZSBydW4gdGhpcyBiZWZv
cmUgQ29kZUJsb2NrJ3MgdW5jb25kaXRpb25hbCBmaW5hbGl6ZXIgc2luY2UgQ29kZUJsb2NrIGxv
b2tzIGF0IHRoZSBvd25lciBleGVjdXRhYmxlJ3MgaW5zdGFsbGVkIENvZGVCbG9jayBpbiBpdHMg
ZmluYWxpemVVbmNvbmRpdGlvbmFsbHkuCisgICAgZm9yRWFjaENvZGVCbG9ja1NwYWNlKAogICAg
ICAgICBbJl0gKGF1dG8mIHNwYWNlKSB7CiAgICAgICAgICAgICB0aGlzLT5maW5hbGl6ZU1hcmtl
ZFVuY29uZGl0aW9uYWxGaW5hbGl6ZXJzPENvZGVCbG9jaz4oc3BhY2Uuc2V0KTsKICAgICAgICAg
fSk7Ci0gICAgZmluYWxpemVNYXJrZWRVbmNvbmRpdGlvbmFsRmluYWxpemVyczxTdHJ1Y3R1cmVS
YXJlRGF0YT4odm0uc3RydWN0dXJlUmFyZURhdGFTcGFjZSk7Ci0gICAgZmluYWxpemVNYXJrZWRV
bmNvbmRpdGlvbmFsRmluYWxpemVyczxVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZT4odm0udW5s
aW5rZWRGdW5jdGlvbkV4ZWN1dGFibGVTcGFjZS5zZXQpOwotICAgIGlmICh2bS5tX3dlYWtTZXRT
cGFjZSkKLSAgICAgICAgZmluYWxpemVNYXJrZWRVbmNvbmRpdGlvbmFsRmluYWxpemVyczxKU1dl
YWtTZXQ+KCp2bS5tX3dlYWtTZXRTcGFjZSk7Ci0gICAgaWYgKHZtLm1fd2Vha01hcFNwYWNlKQot
ICAgICAgICBmaW5hbGl6ZU1hcmtlZFVuY29uZGl0aW9uYWxGaW5hbGl6ZXJzPEpTV2Vha01hcD4o
KnZtLm1fd2Vha01hcFNwYWNlKTsKLSAgICBpZiAodm0ubV93ZWFrT2JqZWN0UmVmU3BhY2UpCi0g
ICAgICAgIGZpbmFsaXplTWFya2VkVW5jb25kaXRpb25hbEZpbmFsaXplcnM8SlNXZWFrT2JqZWN0
UmVmPigqdm0ubV93ZWFrT2JqZWN0UmVmU3BhY2UpOwotICAgIGlmICh2bS5tX2Vycm9ySW5zdGFu
Y2VTcGFjZSkKLSAgICAgICAgZmluYWxpemVNYXJrZWRVbmNvbmRpdGlvbmFsRmluYWxpemVyczxF
cnJvckluc3RhbmNlPigqdm0ubV9lcnJvckluc3RhbmNlU3BhY2UpOworICAgIGZpbmFsaXplTWFy
a2VkVW5jb25kaXRpb25hbEZpbmFsaXplcnM8U3RydWN0dXJlUmFyZURhdGE+KHN0cnVjdHVyZVJh
cmVEYXRhU3BhY2UpOworICAgIGZpbmFsaXplTWFya2VkVW5jb25kaXRpb25hbEZpbmFsaXplcnM8
VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU+KHVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlU3Bh
Y2Uuc2V0KTsKKyAgICBpZiAobV93ZWFrU2V0U3BhY2UpCisgICAgICAgIGZpbmFsaXplTWFya2Vk
VW5jb25kaXRpb25hbEZpbmFsaXplcnM8SlNXZWFrU2V0PigqbV93ZWFrU2V0U3BhY2UpOworICAg
IGlmIChtX3dlYWtNYXBTcGFjZSkKKyAgICAgICAgZmluYWxpemVNYXJrZWRVbmNvbmRpdGlvbmFs
RmluYWxpemVyczxKU1dlYWtNYXA+KCptX3dlYWtNYXBTcGFjZSk7CisgICAgaWYgKG1fd2Vha09i
amVjdFJlZlNwYWNlKQorICAgICAgICBmaW5hbGl6ZU1hcmtlZFVuY29uZGl0aW9uYWxGaW5hbGl6
ZXJzPEpTV2Vha09iamVjdFJlZj4oKm1fd2Vha09iamVjdFJlZlNwYWNlKTsKKyAgICBpZiAobV9l
cnJvckluc3RhbmNlU3BhY2UpCisgICAgICAgIGZpbmFsaXplTWFya2VkVW5jb25kaXRpb25hbEZp
bmFsaXplcnM8RXJyb3JJbnN0YW5jZT4oKm1fZXJyb3JJbnN0YW5jZVNwYWNlKTsKIAogICAgIC8v
IEZpbmFsaXphdGlvblJlZ2lzdHJpZXMgY3VycmVudGx5IHJlbHkgb24gc2VyaWFsIGZpbmFsaXph
dGlvbiBiZWNhdXNlIHRoZXkgY2FuIHBvc3QgdGFza3MgdG8gdGhlIGRlZmVycmVkV29ya1RpbWVy
LCB3aGljaCBub3JtYWxseSBleHBlY3RzIHRhc2tzIHRvIG9ubHkgYmUgcG9zdGVkIGJ5IHRoZSBB
UEkgbG9jayBob2xkZXIuCi0gICAgaWYgKHZtLm1fZmluYWxpemF0aW9uUmVnaXN0cnlTcGFjZSkK
LSAgICAgICAgZmluYWxpemVNYXJrZWRVbmNvbmRpdGlvbmFsRmluYWxpemVyczxKU0ZpbmFsaXph
dGlvblJlZ2lzdHJ5Pigqdm0ubV9maW5hbGl6YXRpb25SZWdpc3RyeVNwYWNlKTsKKyAgICBpZiAo
bV9maW5hbGl6YXRpb25SZWdpc3RyeVNwYWNlKQorICAgICAgICBmaW5hbGl6ZU1hcmtlZFVuY29u
ZGl0aW9uYWxGaW5hbGl6ZXJzPEpTRmluYWxpemF0aW9uUmVnaXN0cnk+KCptX2ZpbmFsaXphdGlv
blJlZ2lzdHJ5U3BhY2UpOwogCiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQotICAgIGlmICh2bS5t
X3dlYkFzc2VtYmx5Q29kZUJsb2NrU3BhY2UpCi0gICAgICAgIGZpbmFsaXplTWFya2VkVW5jb25k
aXRpb25hbEZpbmFsaXplcnM8SlNXZWJBc3NlbWJseUNvZGVCbG9jaz4oKnZtLm1fd2ViQXNzZW1i
bHlDb2RlQmxvY2tTcGFjZSk7CisgICAgaWYgKG1fd2ViQXNzZW1ibHlDb2RlQmxvY2tTcGFjZSkK
KyAgICAgICAgZmluYWxpemVNYXJrZWRVbmNvbmRpdGlvbmFsRmluYWxpemVyczxKU1dlYkFzc2Vt
Ymx5Q29kZUJsb2NrPigqbV93ZWJBc3NlbWJseUNvZGVCbG9ja1NwYWNlKTsKICNlbmRpZgogfQog
CkBAIC05MDUsNyArMTEwNiw3IEBAIHZvaWQgSGVhcDo6ZGVsZXRlQWxsQ29kZUJsb2NrcyhEZWxl
dGVBbGwKIAogICAgIGNvbXBsZXRlQWxsSklUUGxhbnMoKTsKIAotICAgIHZtLmZvckVhY2hTY3Jp
cHRFeGVjdXRhYmxlU3BhY2UoCisgICAgZm9yRWFjaFNjcmlwdEV4ZWN1dGFibGVTcGFjZSgKICAg
ICAgICAgWyZdIChhdXRvJiBzcGFjZUFuZFNldCkgewogICAgICAgICAgICAgSGVhcEl0ZXJhdGlv
blNjb3BlIGhlYXBJdGVyYXRpb25TY29wZSgqdGhpcyk7CiAgICAgICAgICAgICBhdXRvJiBzZXQg
PSBzcGFjZUFuZFNldC5zZXQ7CkBAIC05MjQsOCArMTEyNSw4IEBAIHZvaWQgSGVhcDo6ZGVsZXRl
QWxsQ29kZUJsb2NrcyhEZWxldGVBbGwKICAgICAgICAgLy8gcG9pbnRzIGludG8gYSBDb2RlQmxv
Y2sgdGhhdCBjb3VsZCBiZSBkZWFkLiBUaGUgSUMgd2lsbCBzdGlsbCBzdWNjZWVkIGJlY2F1c2UK
ICAgICAgICAgLy8gaXQgdXNlcyBhIGNhbGxlZSBjaGVjaywgYnV0IHRoZW4gaXQgd2lsbCBjYWxs
IGludG8gZGVhZCBjb2RlLgogICAgICAgICBIZWFwSXRlcmF0aW9uU2NvcGUgaGVhcEl0ZXJhdGlv
blNjb3BlKCp0aGlzKTsKLSAgICAgICAgaWYgKHZtLm1fd2ViQXNzZW1ibHlDb2RlQmxvY2tTcGFj
ZSkgewotICAgICAgICAgICAgdm0ubV93ZWJBc3NlbWJseUNvZGVCbG9ja1NwYWNlLT5mb3JFYWNo
TGl2ZUNlbGwoWyZdIChIZWFwQ2VsbCogY2VsbCwgSGVhcENlbGw6OktpbmQga2luZCkgeworICAg
ICAgICBpZiAobV93ZWJBc3NlbWJseUNvZGVCbG9ja1NwYWNlKSB7CisgICAgICAgICAgICBtX3dl
YkFzc2VtYmx5Q29kZUJsb2NrU3BhY2UtPmZvckVhY2hMaXZlQ2VsbChbJl0gKEhlYXBDZWxsKiBj
ZWxsLCBIZWFwQ2VsbDo6S2luZCBraW5kKSB7CiAgICAgICAgICAgICAgICAgQVNTRVJUX1VOVVNF
RChraW5kLCBraW5kID09IEhlYXBDZWxsOjpKU0NlbGwpOwogICAgICAgICAgICAgICAgIEpTV2Vi
QXNzZW1ibHlDb2RlQmxvY2sqIGNvZGVCbG9jayA9IHN0YXRpY19jYXN0PEpTV2ViQXNzZW1ibHlD
b2RlQmxvY2sqPihjZWxsKTsKICAgICAgICAgICAgICAgICBjb2RlQmxvY2stPmNsZWFySlNDYWxs
SUNzKHZtKTsKQEAgLTk0Niw3ICsxMTQ3LDcgQEAgdm9pZCBIZWFwOjpkZWxldGVBbGxVbmxpbmtl
ZENvZGVCbG9ja3MoRAogICAgIFJFTEVBU0VfQVNTRVJUKCFtX2NvbGxlY3Rpb25TY29wZSk7CiAK
ICAgICBIZWFwSXRlcmF0aW9uU2NvcGUgaGVhcEl0ZXJhdGlvblNjb3BlKCp0aGlzKTsKLSAgICB2
bS51bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZVNwYWNlLnNldC5mb3JFYWNoTGl2ZUNlbGwoCisg
ICAgdW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGVTcGFjZS5zZXQuZm9yRWFjaExpdmVDZWxsKAog
ICAgICAgICBbJl0gKEhlYXBDZWxsKiBjZWxsLCBIZWFwQ2VsbDo6S2luZCkgewogICAgICAgICAg
ICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSBzdGF0aWNfY2FzdDxV
bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSo+KGNlbGwpOwogICAgICAgICAgICAgZXhlY3V0YWJs
ZS0+Y2xlYXJDb2RlKHZtKTsKQEAgLTk1NSwxMCArMTE1NiwxMCBAQCB2b2lkIEhlYXA6OmRlbGV0
ZUFsbFVubGlua2VkQ29kZUJsb2NrcyhECiAKIHZvaWQgSGVhcDo6ZGVsZXRlVW5tYXJrZWRDb21w
aWxlZENvZGUoKQogewotICAgIHZtKCkuZm9yRWFjaFNjcmlwdEV4ZWN1dGFibGVTcGFjZShbXSAo
YXV0byYgc3BhY2UpIHsgc3BhY2Uuc3BhY2Uuc3dlZXAoKTsgfSk7CisgICAgZm9yRWFjaFNjcmlw
dEV4ZWN1dGFibGVTcGFjZShbXSAoYXV0byYgc3BhY2UpIHsgc3BhY2Uuc3BhY2Uuc3dlZXAzKCk7
IH0pOwogICAgIC8vIFN3ZWVwaW5nIG11c3Qgb2NjdXIgYmVmb3JlIGRlbGV0aW5nIHN0dWJzLCBv
dGhlcndpc2UgdGhlIHN0dWJzIG1pZ2h0IHN0aWxsIHRoaW5rIHRoZXkncmUgYWxpdmUgYXMgdGhl
eSBnZXQgZGVsZXRlZC4KICAgICAvLyBBbmQgQ29kZUJsb2NrIGRlc3RydWN0b3IgaXMgYXNzdW1p
bmcgdGhhdCBDb2RlQmxvY2sgZ2V0cyBkZXN0cm95ZWQgYmVmb3JlIFVubGlua2VkQ29kZUJsb2Nr
IGdldHMgZGVzdHJveWVkLgotICAgIHZtKCkuZm9yRWFjaENvZGVCbG9ja1NwYWNlKFtdIChhdXRv
JiBzcGFjZSkgeyBzcGFjZS5zcGFjZS5zd2VlcCgpOyB9KTsKKyAgICBmb3JFYWNoQ29kZUJsb2Nr
U3BhY2UoW10gKGF1dG8mIHNwYWNlKSB7IHNwYWNlLnNwYWNlLnN3ZWVwMygpOyB9KTsKICAgICBt
X2ppdFN0dWJSb3V0aW5lcy0+ZGVsZXRlVW5tYXJrZWRKZXR0aXNvbmVkU3R1YlJvdXRpbmVzKCk7
CiB9CiAKQEAgLTIxMDMsOCArMjMwNCw4IEBAIHZvaWQgSGVhcDo6c3dlZXBJbkZpbmFsaXplKCkK
ICAgICBtX29iamVjdFNwYWNlLnN3ZWVwUHJlY2lzZUFsbG9jYXRpb25zKCk7CiAjaWYgRU5BQkxF
KFdFQkFTU0VNQkxZKQogICAgIC8vIFdlIGhvbGQgb250byBhIGxvdCBvZiBtZW1vcnksIHNvIGl0
IG1ha2VzIGEgbG90IG9mIHNlbnNlIHRvIGJlIHN3ZXB0IGVhZ2VybHkuCi0gICAgaWYgKHZtKCku
bV93ZWJBc3NlbWJseU1lbW9yeVNwYWNlKQotICAgICAgICB2bSgpLm1fd2ViQXNzZW1ibHlNZW1v
cnlTcGFjZS0+c3dlZXAoKTsKKyAgICBpZiAobV93ZWJBc3NlbWJseU1lbW9yeVNwYWNlKQorICAg
ICAgICBtX3dlYkFzc2VtYmx5TWVtb3J5U3BhY2UtPnN3ZWVwMygpOwogI2VuZGlmCiB9CiAKQEAg
LTI4MDUsNyArMzAwNiw3IEBAIHZvaWQgSGVhcDo6YWRkQ29yZUNvbnN0cmFpbnRzKCkKICAgICAg
ICAgIk8iLCAiT3V0cHV0IiwKICAgICAgICAgTUFLRV9NQVJLSU5HX0NPTlNUUkFJTlRfRVhFQ1VU
T1JfUEFJUigoW10gKGF1dG8mIHZpc2l0b3IpIHsKICAgICAgICAgICAgIHVzaW5nIFZpc2l0b3Ig
PSBkZWNsdHlwZSh2aXNpdG9yKTsKLSAgICAgICAgICAgIFZNJiB2bSA9IHZpc2l0b3Iudm0oKTsK
KyAgICAgICAgICAgIEhlYXAqIGhlYXAgPSB2aXNpdG9yLmhlYXAoKTsKIAogICAgICAgICAgICAg
Ly8gVGhlIGB2aXNpdG9yMmAgYXJndW1lbnQgaXMgc3RyYW5nZWx5IG5hbWVkIGJlY2F1c2UgdGhl
IFdpbkNhaXJvIHBvcnQKICAgICAgICAgICAgIC8vIGdldHMgY29uZnVzZWQgIGFuZCB0aGlua3Mg
d2UncmUgdHJ5aW5nIHRvIGNhcHR1cmUgdGhlIG91dGVyIHZpc2l0b3IKQEAgLTI4MjQsMTEgKzMw
MjUsMTEgQEAgdm9pZCBIZWFwOjphZGRDb3JlQ29uc3RyYWludHMoKQogCiAgICAgICAgICAgICB7
CiAgICAgICAgICAgICAgICAgU2V0Um9vdE1hcmtSZWFzb25TY29wZSByb290U2NvcGUodmlzaXRv
ciwgUm9vdE1hcmtSZWFzb246OkV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2VzKTsKLSAgICAgICAg
ICAgICAgICBhZGQodm0uZXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZXNXaXRoQ29uc3RyYWludHMp
OworICAgICAgICAgICAgICAgIGFkZChoZWFwLT5leGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlc1dp
dGhDb25zdHJhaW50cyk7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAodm0ubV93ZWFr
TWFwU3BhY2UpIHsKKyAgICAgICAgICAgIGlmIChoZWFwLT5tX3dlYWtNYXBTcGFjZSkgewogICAg
ICAgICAgICAgICAgIFNldFJvb3RNYXJrUmVhc29uU2NvcGUgcm9vdFNjb3BlKHZpc2l0b3IsIFJv
b3RNYXJrUmVhc29uOjpXZWFrTWFwU3BhY2UpOwotICAgICAgICAgICAgICAgIGFkZCgqdm0ubV93
ZWFrTWFwU3BhY2UpOworICAgICAgICAgICAgICAgIGFkZCgqaGVhcC0+bV93ZWFrTWFwU3BhY2Up
OwogICAgICAgICAgICAgfQogICAgICAgICB9KSksCiAgICAgICAgIENvbnN0cmFpbnRWb2xhdGls
aXR5OjpHcmV5ZWRCeU1hcmtpbmcsCkBAIC0zMDYyLDQgKzMyNjMsMTM1IEBAIHZvaWQgSGVhcDo6
dmVyaWZ5R0MoKQogICAgIG1fdmVyaWZpZXJTbG90VmlzaXRvciA9IG51bGxwdHI7CiB9CiAKKyNk
ZWZpbmUgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKG5hbWUsIGhlYXBD
ZWxsVHlwZSwgdHlwZSkgXAorICAgIElzb1N1YnNwYWNlKiBIZWFwOjpuYW1lIyNTbG93KCkgXAor
ICAgIHsgXAorICAgICAgICBBU1NFUlQoIW1fIyNuYW1lKTsgXAorICAgICAgICBhdXRvIHNwYWNl
ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQoKnRoaXMsIGhlYXBD
ZWxsVHlwZSwgdHlwZSk7IFwKKyAgICAgICAgV1RGOjpzdG9yZVN0b3JlRmVuY2UoKTsgXAorICAg
ICAgICBtXyMjbmFtZSA9IFdURk1vdmUoc3BhY2UpOyBcCisgICAgICAgIHJldHVybiBtXyMjbmFt
ZS5nZXQoKTsgXAorICAgIH0KKworCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVS
X1NMT1coYXBpR2xvYmFsT2JqZWN0U3BhY2UsIGFwaUdsb2JhbE9iamVjdEhlYXBDZWxsVHlwZSwg
SlNBUElHbG9iYWxPYmplY3QpCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NM
T1coYXBpVmFsdWVXcmFwcGVyU3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUsIEpTQVBJVmFsdWVXcmFw
cGVyKQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGFycmF5QnVmZmVy
U3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUsIEpTQXJyYXlCdWZmZXIpCitEWU5BTUlDX0lTT19TVUJT
UEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coYXJyYXlJdGVyYXRvclNwYWNlLCBjZWxsSGVhcENlbGxU
eXBlLCBKU0FycmF5SXRlcmF0b3IpCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVS
X1NMT1coYXN5bmNHZW5lcmF0b3JTcGFjZSwgY2VsbEhlYXBDZWxsVHlwZSwgSlNBc3luY0dlbmVy
YXRvcikKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhiaWdJbnQ2NEFy
cmF5U3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUsIEpTQmlnSW50NjRBcnJheSkKK0RZTkFNSUNfSVNP
X1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhiaWdJbnRPYmplY3RTcGFjZSwgY2VsbEhlYXBD
ZWxsVHlwZSwgQmlnSW50T2JqZWN0KQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJF
Ul9TTE9XKGJpZ1VpbnQ2NEFycmF5U3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUsIEpTQmlnVWludDY0
QXJyYXkpCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coYm9vbGVhbk9i
amVjdFNwYWNlLCBjZWxsSGVhcENlbGxUeXBlLCBCb29sZWFuT2JqZWN0KQorRFlOQU1JQ19JU09f
U1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGJvdW5kRnVuY3Rpb25TcGFjZSwgY2VsbEhlYXBD
ZWxsVHlwZSwgSlNCb3VuZEZ1bmN0aW9uKSAvLyBIYXNoOjB4ZDc5MTZkNDEKK0RZTkFNSUNfSVNP
X1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhjYWxsYmFja0NvbnN0cnVjdG9yU3BhY2UsIGNh
bGxiYWNrQ29uc3RydWN0b3JIZWFwQ2VsbFR5cGUsIEpTQ2FsbGJhY2tDb25zdHJ1Y3RvcikKK0RZ
TkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhjYWxsYmFja0dsb2JhbE9iamVj
dFNwYWNlLCBjYWxsYmFja0dsb2JhbE9iamVjdEhlYXBDZWxsVHlwZSwgSlNDYWxsYmFja09iamVj
dDxKU0dsb2JhbE9iamVjdD4pCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NM
T1coY2FsbGJhY2tGdW5jdGlvblNwYWNlLCBjZWxsSGVhcENlbGxUeXBlLCBKU0NhbGxiYWNrRnVu
Y3Rpb24pIC8vIEhhc2g6MHhlNzY0OGViYworRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01F
TUJFUl9TTE9XKGNhbGxiYWNrT2JqZWN0U3BhY2UsIGNhbGxiYWNrT2JqZWN0SGVhcENlbGxUeXBl
LCBKU0NhbGxiYWNrT2JqZWN0PEpTTm9uRmluYWxPYmplY3Q+KQorRFlOQU1JQ19JU09fU1VCU1BB
Q0VfREVGSU5FX01FTUJFUl9TTE9XKGN1c3RvbUdldHRlckZ1bmN0aW9uU3BhY2UsIGN1c3RvbUdl
dHRlckZ1bmN0aW9uSGVhcENlbGxUeXBlLCBKU0N1c3RvbUdldHRlckZ1bmN0aW9uKQorRFlOQU1J
Q19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGN1c3RvbVNldHRlckZ1bmN0aW9uU3Bh
Y2UsIGN1c3RvbVNldHRlckZ1bmN0aW9uSGVhcENlbGxUeXBlLCBKU0N1c3RvbVNldHRlckZ1bmN0
aW9uKQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGRhdGFWaWV3U3Bh
Y2UsIGNlbGxIZWFwQ2VsbFR5cGUsIEpTRGF0YVZpZXcpCitEWU5BTUlDX0lTT19TVUJTUEFDRV9E
RUZJTkVfTUVNQkVSX1NMT1coZGVidWdnZXJTY29wZVNwYWNlLCBjZWxsSGVhcENlbGxUeXBlLCBE
ZWJ1Z2dlclNjb3BlKQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGVy
cm9ySW5zdGFuY2VTcGFjZSwgZXJyb3JJbnN0YW5jZUhlYXBDZWxsVHlwZSwgRXJyb3JJbnN0YW5j
ZSkgLy8gSGFzaDoweDNmNDBkNGEKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJf
U0xPVyhmbG9hdDMyQXJyYXlTcGFjZSwgY2VsbEhlYXBDZWxsVHlwZSwgSlNGbG9hdDMyQXJyYXkp
CitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coZmxvYXQ2NEFycmF5U3Bh
Y2UsIGNlbGxIZWFwQ2VsbFR5cGUsIEpTRmxvYXQ2NEFycmF5KQorRFlOQU1JQ19JU09fU1VCU1BB
Q0VfREVGSU5FX01FTUJFUl9TTE9XKGZ1bmN0aW9uUmFyZURhdGFTcGFjZSwgZGVzdHJ1Y3RpYmxl
Q2VsbEhlYXBDZWxsVHlwZSwgRnVuY3Rpb25SYXJlRGF0YSkKK0RZTkFNSUNfSVNPX1NVQlNQQUNF
X0RFRklORV9NRU1CRVJfU0xPVyhnZW5lcmF0b3JTcGFjZSwgY2VsbEhlYXBDZWxsVHlwZSwgSlNH
ZW5lcmF0b3IpCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coZ2xvYmFs
T2JqZWN0U3BhY2UsIGdsb2JhbE9iamVjdEhlYXBDZWxsVHlwZSwgSlNHbG9iYWxPYmplY3QpCitE
WU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coaW5qZWN0ZWRTY3JpcHRIb3N0
U3BhY2UsIGluamVjdGVkU2NyaXB0SG9zdFNwYWNlSGVhcENlbGxUeXBlLCBJbnNwZWN0b3I6OkpT
SW5qZWN0ZWRTY3JpcHRIb3N0KQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9T
TE9XKGludDhBcnJheVNwYWNlLCBjZWxsSGVhcENlbGxUeXBlLCBKU0ludDhBcnJheSkKK0RZTkFN
SUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhpbnQxNkFycmF5U3BhY2UsIGNlbGxI
ZWFwQ2VsbFR5cGUsIEpTSW50MTZBcnJheSkKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9N
RU1CRVJfU0xPVyhpbnQzMkFycmF5U3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUsIEpTSW50MzJBcnJh
eSkKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhqYXZhU2NyaXB0Q2Fs
bEZyYW1lU3BhY2UsIGphdmFTY3JpcHRDYWxsRnJhbWVIZWFwQ2VsbFR5cGUsIEluc3BlY3Rvcjo6
SlNKYXZhU2NyaXB0Q2FsbEZyYW1lKQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJF
Ul9TTE9XKGpzTW9kdWxlUmVjb3JkU3BhY2UsIGpzTW9kdWxlUmVjb3JkSGVhcENlbGxUeXBlLCBK
U01vZHVsZVJlY29yZCkKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyht
YXBCdWNrZXRTcGFjZSwgY2VsbEhlYXBDZWxsVHlwZSwgSlNNYXA6OkJ1Y2tldFR5cGUpCitEWU5B
TUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1cobWFwSXRlcmF0b3JTcGFjZSwgY2Vs
bEhlYXBDZWxsVHlwZSwgSlNNYXBJdGVyYXRvcikKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklO
RV9NRU1CRVJfU0xPVyhtYXBTcGFjZSwgY2VsbEhlYXBDZWxsVHlwZSwgSlNNYXApCitEWU5BTUlD
X0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1cobW9kdWxlTmFtZXNwYWNlT2JqZWN0U3Bh
Y2UsIG1vZHVsZU5hbWVzcGFjZU9iamVjdEhlYXBDZWxsVHlwZSwgSlNNb2R1bGVOYW1lc3BhY2VP
YmplY3QpCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1cobmF0aXZlU3Rk
RnVuY3Rpb25TcGFjZSwgbmF0aXZlU3RkRnVuY3Rpb25IZWFwQ2VsbFR5cGUsIEpTTmF0aXZlU3Rk
RnVuY3Rpb24pIC8vIEhhc2g6MHg3MGVkNjFlNAorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5F
X01FTUJFUl9TTE9XKHByb3h5T2JqZWN0U3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUsIFByb3h5T2Jq
ZWN0KQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHByb3h5UmV2b2tl
U3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUsIFByb3h5UmV2b2tlKSAvLyBIYXNoOjB4YjUwNmE5MzkK
K0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhzY29wZWRBcmd1bWVudHNU
YWJsZVNwYWNlLCBkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlLCBTY29wZWRBcmd1bWVudHNU
YWJsZSkKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhzY3JpcHRGZXRj
aFBhcmFtZXRlcnNTcGFjZSwgZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZSwgSlNTY3JpcHRG
ZXRjaFBhcmFtZXRlcnMpCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1co
c2NyaXB0RmV0Y2hlclNwYWNlLCBkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlLCBKU1Njcmlw
dEZldGNoZXIpCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coc2V0QnVj
a2V0U3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUsIEpTU2V0OjpCdWNrZXRUeXBlKQorRFlOQU1JQ19J
U09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHNldEl0ZXJhdG9yU3BhY2UsIGNlbGxIZWFw
Q2VsbFR5cGUsIEpTU2V0SXRlcmF0b3IpCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVN
QkVSX1NMT1coc2V0U3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUsIEpTU2V0KQorRFlOQU1JQ19JU09f
U1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHNoYWRvd1JlYWxtU3BhY2UsIGNlbGxIZWFwQ2Vs
bFR5cGUsIFNoYWRvd1JlYWxtT2JqZWN0KQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01F
TUJFUl9TTE9XKHN0cmljdEV2YWxBY3RpdmF0aW9uU3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUsIFN0
cmljdEV2YWxBY3RpdmF0aW9uKQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9T
TE9XKHN0cmluZ0l0ZXJhdG9yU3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUsIEpTU3RyaW5nSXRlcmF0
b3IpCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coc291cmNlQ29kZVNw
YWNlLCBkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlLCBKU1NvdXJjZUNvZGUpCitEWU5BTUlD
X0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coc3ltYm9sU3BhY2UsIGRlc3RydWN0aWJs
ZUNlbGxIZWFwQ2VsbFR5cGUsIFN5bWJvbCkKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9N
RU1CRVJfU0xPVyhzeW1ib2xPYmplY3RTcGFjZSwgY2VsbEhlYXBDZWxsVHlwZSwgU3ltYm9sT2Jq
ZWN0KQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHRlbXBsYXRlT2Jq
ZWN0RGVzY3JpcHRvclNwYWNlLCBkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlLCBKU1RlbXBs
YXRlT2JqZWN0RGVzY3JpcHRvcikKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJf
U0xPVyh0ZW1wb3JhbENhbGVuZGFyU3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUsIFRlbXBvcmFsQ2Fs
ZW5kYXIpCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1codGVtcG9yYWxE
dXJhdGlvblNwYWNlLCBjZWxsSGVhcENlbGxUeXBlLCBUZW1wb3JhbER1cmF0aW9uKQorRFlOQU1J
Q19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHRlbXBvcmFsSW5zdGFudFNwYWNlLCBj
ZWxsSGVhcENlbGxUeXBlLCBUZW1wb3JhbEluc3RhbnQpCitEWU5BTUlDX0lTT19TVUJTUEFDRV9E
RUZJTkVfTUVNQkVSX1NMT1codGVtcG9yYWxQbGFpblRpbWVTcGFjZSwgY2VsbEhlYXBDZWxsVHlw
ZSwgVGVtcG9yYWxQbGFpblRpbWUpCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVS
X1NMT1codGVtcG9yYWxUaW1lWm9uZVNwYWNlLCBjZWxsSGVhcENlbGxUeXBlLCBUZW1wb3JhbFRp
bWVab25lKQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHVpbnQ4QXJy
YXlTcGFjZSwgY2VsbEhlYXBDZWxsVHlwZSwgSlNVaW50OEFycmF5KQorRFlOQU1JQ19JU09fU1VC
U1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHVpbnQ4Q2xhbXBlZEFycmF5U3BhY2UsIGNlbGxIZWFw
Q2VsbFR5cGUsIEpTVWludDhDbGFtcGVkQXJyYXkpCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJ
TkVfTUVNQkVSX1NMT1codWludDE2QXJyYXlTcGFjZSwgY2VsbEhlYXBDZWxsVHlwZSwgSlNVaW50
MTZBcnJheSkKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh1aW50MzJB
cnJheVNwYWNlLCBjZWxsSGVhcENlbGxUeXBlLCBKU1VpbnQzMkFycmF5KQorRFlOQU1JQ19JU09f
U1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHVubGlua2VkRXZhbENvZGVCbG9ja1NwYWNlLCBk
ZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlLCBVbmxpbmtlZEV2YWxDb2RlQmxvY2spCitEWU5B
TUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1codW5saW5rZWRGdW5jdGlvbkNvZGVC
bG9ja1NwYWNlLCBkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlLCBVbmxpbmtlZEZ1bmN0aW9u
Q29kZUJsb2NrKQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHVubGlu
a2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9ja1NwYWNlLCBkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxU
eXBlLCBVbmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2spCitEWU5BTUlDX0lTT19TVUJTUEFD
RV9ERUZJTkVfTUVNQkVSX1NMT1codW5saW5rZWRQcm9ncmFtQ29kZUJsb2NrU3BhY2UsIGRlc3Ry
dWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUsIFVubGlua2VkUHJvZ3JhbUNvZGVCbG9jaykKK0RZTkFN
SUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh3ZWFrTWFwU3BhY2UsIHdlYWtNYXBI
ZWFwQ2VsbFR5cGUsIEpTV2Vha01hcCkgLy8gSGFzaDoweDY2MmIxMmEzCitEWU5BTUlDX0lTT19T
VUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1cod2Vha1NldFNwYWNlLCB3ZWFrU2V0SGVhcENlbGxU
eXBlLCBKU1dlYWtTZXQpIC8vIEhhc2g6MHg0Yzc4MWIzMAorRFlOQU1JQ19JU09fU1VCU1BBQ0Vf
REVGSU5FX01FTUJFUl9TTE9XKHdlYWtPYmplY3RSZWZTcGFjZSwgY2VsbEhlYXBDZWxsVHlwZSwg
SlNXZWFrT2JqZWN0UmVmKSAvLyBIYXNoOjB4OGVjNjhmMWYKK0RZTkFNSUNfSVNPX1NVQlNQQUNF
X0RFRklORV9NRU1CRVJfU0xPVyh3aXRoU2NvcGVTcGFjZSwgY2VsbEhlYXBDZWxsVHlwZSwgSlNX
aXRoU2NvcGUpCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coZmluYWxp
emF0aW9uUmVnaXN0cnlTcGFjZSwgZmluYWxpemF0aW9uUmVnaXN0cnlDZWxsVHlwZSwgSlNGaW5h
bGl6YXRpb25SZWdpc3RyeSkKKyNpZiBKU0NfT0JKQ19BUElfRU5BQkxFRAorRFlOQU1JQ19JU09f
U1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGFwaVdyYXBwZXJPYmplY3RTcGFjZSwgYXBpV3Jh
cHBlck9iamVjdEhlYXBDZWxsVHlwZSwgSlNDYWxsYmFja09iamVjdDxKU0FQSVdyYXBwZXJPYmpl
Y3Q+KQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKG9iakNDYWxsYmFj
a0Z1bmN0aW9uU3BhY2UsIG9iakNDYWxsYmFja0Z1bmN0aW9uSGVhcENlbGxUeXBlLCBPYmpDQ2Fs
bGJhY2tGdW5jdGlvbikgLy8gSGFzaDoweDEwZjYxMGI4CisjZW5kaWYKKyNpZmRlZiBKU0NfR0xJ
Ql9BUElfRU5BQkxFRAorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGFw
aVdyYXBwZXJPYmplY3RTcGFjZSwgYXBpV3JhcHBlck9iamVjdEhlYXBDZWxsVHlwZSwgSlNDYWxs
YmFja09iamVjdDxKU0FQSVdyYXBwZXJPYmplY3Q+KQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVG
SU5FX01FTUJFUl9TTE9XKGpzY0NhbGxiYWNrRnVuY3Rpb25TcGFjZSwganNjQ2FsbGJhY2tGdW5j
dGlvbkhlYXBDZWxsVHlwZSwgSlNDQ2FsbGJhY2tGdW5jdGlvbikKK0RZTkFNSUNfSVNPX1NVQlNQ
QUNFX0RFRklORV9NRU1CRVJfU0xPVyhjYWxsYmFja0FQSVdyYXBwZXJHbG9iYWxPYmplY3RTcGFj
ZSwgY2FsbGJhY2tBUElXcmFwcGVyR2xvYmFsT2JqZWN0SGVhcENlbGxUeXBlLCBKU0NhbGxiYWNr
T2JqZWN0PEpTQVBJV3JhcHBlckdsb2JhbE9iamVjdD4pCisjZW5kaWYKK0RZTkFNSUNfSVNPX1NV
QlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhpbnRsQ29sbGF0b3JTcGFjZSwgaW50bENvbGxhdG9y
SGVhcENlbGxUeXBlLCBJbnRsQ29sbGF0b3IpCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVf
TUVNQkVSX1NMT1coaW50bERhdGVUaW1lRm9ybWF0U3BhY2UsIGludGxEYXRlVGltZUZvcm1hdEhl
YXBDZWxsVHlwZSwgSW50bERhdGVUaW1lRm9ybWF0KQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVG
SU5FX01FTUJFUl9TTE9XKGludGxEaXNwbGF5TmFtZXNTcGFjZSwgaW50bERpc3BsYXlOYW1lc0hl
YXBDZWxsVHlwZSwgSW50bERpc3BsYXlOYW1lcykKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklO
RV9NRU1CRVJfU0xPVyhpbnRsTGlzdEZvcm1hdFNwYWNlLCBpbnRsTGlzdEZvcm1hdEhlYXBDZWxs
VHlwZSwgSW50bExpc3RGb3JtYXQpCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVS
X1NMT1coaW50bExvY2FsZVNwYWNlLCBpbnRsTG9jYWxlSGVhcENlbGxUeXBlLCBJbnRsTG9jYWxl
KQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGludGxOdW1iZXJGb3Jt
YXRTcGFjZSwgaW50bE51bWJlckZvcm1hdEhlYXBDZWxsVHlwZSwgSW50bE51bWJlckZvcm1hdCkK
K0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhpbnRsUGx1cmFsUnVsZXNT
cGFjZSwgaW50bFBsdXJhbFJ1bGVzSGVhcENlbGxUeXBlLCBJbnRsUGx1cmFsUnVsZXMpCitEWU5B
TUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coaW50bFJlbGF0aXZlVGltZUZvcm1h
dFNwYWNlLCBpbnRsUmVsYXRpdmVUaW1lRm9ybWF0SGVhcENlbGxUeXBlLCBJbnRsUmVsYXRpdmVU
aW1lRm9ybWF0KQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGludGxT
ZWdtZW50SXRlcmF0b3JTcGFjZSwgaW50bFNlZ21lbnRJdGVyYXRvckhlYXBDZWxsVHlwZSwgSW50
bFNlZ21lbnRJdGVyYXRvcikKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xP
VyhpbnRsU2VnbWVudGVyU3BhY2UsIGludGxTZWdtZW50ZXJIZWFwQ2VsbFR5cGUsIEludGxTZWdt
ZW50ZXIpCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coaW50bFNlZ21l
bnRzU3BhY2UsIGludGxTZWdtZW50c0hlYXBDZWxsVHlwZSwgSW50bFNlZ21lbnRzKQorI2lmIEVO
QUJMRShXRUJBU1NFTUJMWSkKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xP
Vyhqc1RvV2FzbUlDQ2FsbGVlU3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUsIEpTVG9XYXNtSUNDYWxs
ZWUpCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1cod2ViQXNzZW1ibHlD
b2RlQmxvY2tTcGFjZSwgd2ViQXNzZW1ibHlDb2RlQmxvY2tIZWFwQ2VsbFR5cGUsIEpTV2ViQXNz
ZW1ibHlDb2RlQmxvY2spIC8vIEhhc2g6MHg5YWQ5OTVjZAorRFlOQU1JQ19JU09fU1VCU1BBQ0Vf
REVGSU5FX01FTUJFUl9TTE9XKHdlYkFzc2VtYmx5RXhjZXB0aW9uU3BhY2UsIHdlYkFzc2VtYmx5
RXhjZXB0aW9uSGVhcENlbGxUeXBlLCBKU1dlYkFzc2VtYmx5RXhjZXB0aW9uKQorRFlOQU1JQ19J
U09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHdlYkFzc2VtYmx5RnVuY3Rpb25TcGFjZSwg
d2ViQXNzZW1ibHlGdW5jdGlvbkhlYXBDZWxsVHlwZSwgV2ViQXNzZW1ibHlGdW5jdGlvbikgLy8g
SGFzaDoweDhiN2MzMmRiCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1co
d2ViQXNzZW1ibHlHbG9iYWxTcGFjZSwgd2ViQXNzZW1ibHlHbG9iYWxIZWFwQ2VsbFR5cGUsIEpT
V2ViQXNzZW1ibHlHbG9iYWwpCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NM
T1cod2ViQXNzZW1ibHlJbnN0YW5jZVNwYWNlLCB3ZWJBc3NlbWJseUluc3RhbmNlSGVhcENlbGxU
eXBlLCBKU1dlYkFzc2VtYmx5SW5zdGFuY2UpCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVf
TUVNQkVSX1NMT1cod2ViQXNzZW1ibHlNZW1vcnlTcGFjZSwgd2ViQXNzZW1ibHlNZW1vcnlIZWFw
Q2VsbFR5cGUsIEpTV2ViQXNzZW1ibHlNZW1vcnkpCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJ
TkVfTUVNQkVSX1NMT1cod2ViQXNzZW1ibHlNb2R1bGVTcGFjZSwgd2ViQXNzZW1ibHlNb2R1bGVI
ZWFwQ2VsbFR5cGUsIEpTV2ViQXNzZW1ibHlNb2R1bGUpCitEWU5BTUlDX0lTT19TVUJTUEFDRV9E
RUZJTkVfTUVNQkVSX1NMT1cod2ViQXNzZW1ibHlNb2R1bGVSZWNvcmRTcGFjZSwgd2ViQXNzZW1i
bHlNb2R1bGVSZWNvcmRIZWFwQ2VsbFR5cGUsIFdlYkFzc2VtYmx5TW9kdWxlUmVjb3JkKQorRFlO
QU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHdlYkFzc2VtYmx5VGFibGVTcGFj
ZSwgd2ViQXNzZW1ibHlUYWJsZUhlYXBDZWxsVHlwZSwgSlNXZWJBc3NlbWJseVRhYmxlKQorRFlO
QU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHdlYkFzc2VtYmx5VGFnU3BhY2Us
IHdlYkFzc2VtYmx5VGFnSGVhcENlbGxUeXBlLCBKU1dlYkFzc2VtYmx5VGFnKQorRFlOQU1JQ19J
U09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHdlYkFzc2VtYmx5V3JhcHBlckZ1bmN0aW9u
U3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUsIFdlYkFzc2VtYmx5V3JhcHBlckZ1bmN0aW9uKSAvLyBI
YXNoOjB4ZDRhNWZmMDEKKyNlbmRpZgorCisjdW5kZWYgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVG
SU5FX01FTUJFUl9TTE9XCisKKyNkZWZpbmUgRFlOQU1JQ19TUEFDRV9BTkRfU0VUX0RFRklORV9N
RU1CRVJfU0xPVyhuYW1lLCBoZWFwQ2VsbFR5cGUsIHR5cGUpIFwKKyAgICBJc29TdWJzcGFjZSog
SGVhcDo6bmFtZSMjU2xvdygpIFwKKyAgICB7IFwKKyAgICAgICAgQVNTRVJUKCFtXyMjbmFtZSk7
IFwKKyAgICAgICAgYXV0byBzcGFjZSA9IG1ha2VVbmlxdWU8U3BhY2VBbmRTZXQ+IElTT19TVUJT
UEFDRV9JTklUKCp0aGlzLCBoZWFwQ2VsbFR5cGUsIHR5cGUpOyBcCisgICAgICAgIFdURjo6c3Rv
cmVTdG9yZUZlbmNlKCk7IFwKKyAgICAgICAgbV8jI25hbWUgPSBXVEZNb3ZlKHNwYWNlKTsgXAor
ICAgICAgICByZXR1cm4gJm1fIyNuYW1lLT5zcGFjZTsgXAorICAgIH0KKworRFlOQU1JQ19TUEFD
RV9BTkRfU0VUX0RFRklORV9NRU1CRVJfU0xPVyhldmFsRXhlY3V0YWJsZVNwYWNlLCBkZXN0cnVj
dGlibGVDZWxsSGVhcENlbGxUeXBlLCBFdmFsRXhlY3V0YWJsZSkgLy8gSGFzaDoweDk1OGUzZTlk
CitEWU5BTUlDX1NQQUNFX0FORF9TRVRfREVGSU5FX01FTUJFUl9TTE9XKG1vZHVsZVByb2dyYW1F
eGVjdXRhYmxlU3BhY2UsIGRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUsIE1vZHVsZVByb2dy
YW1FeGVjdXRhYmxlKSAvLyBIYXNoOjB4NjUwNmZhM2MKKworI3VuZGVmIERZTkFNSUNfU1BBQ0Vf
QU5EX1NFVF9ERUZJTkVfTUVNQkVSX1NMT1cKKwogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oCShyZXZpc2lvbiAyODYwNDMpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgJKHdvcmtpbmcgY29weSkKQEAgLTI1LDYgKzI1LDcgQEAK
ICNpbmNsdWRlICJDZWxsU3RhdGUuaCIKICNpbmNsdWRlICJDb2xsZWN0aW9uU2NvcGUuaCIKICNp
bmNsdWRlICJDb2xsZWN0b3JQaGFzZS5oIgorI2luY2x1ZGUgIkNvbXBsZXRlU3Vic3BhY2UuaCIK
ICNpbmNsdWRlICJEZWxldGVBbGxDb2RlRWZmb3J0LmgiCiAjaW5jbHVkZSAiR0NDb25kdWN0b3Iu
aCIKICNpbmNsdWRlICJHQ0luY29taW5nUmVmQ291bnRlZFNldC5oIgpAQCAtMzMsNiArMzQsMTEg
QEAKICNpbmNsdWRlICJIYW5kbGVTZXQuaCIKICNpbmNsdWRlICJIZWFwRmluYWxpemVyQ2FsbGJh
Y2suaCIKICNpbmNsdWRlICJIZWFwT2JzZXJ2ZXIuaCIKKyNpbmNsdWRlICJJc29DZWxsU2V0Lmgi
CisjaW5jbHVkZSAiSXNvSGVhcENlbGxUeXBlLmgiCisjaW5jbHVkZSAiSXNvSW5saW5lZEhlYXBD
ZWxsVHlwZS5oIgorI2luY2x1ZGUgIklzb1N1YnNwYWNlLmgiCisjaW5jbHVkZSAiSlNEZXN0cnVj
dGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuaCIKICNpbmNsdWRlICJNYXJrZWRCbG9jay5oIgogI2lu
Y2x1ZGUgIk1hcmtlZFNwYWNlLmgiCiAjaW5jbHVkZSAiTXV0YXRvclN0YXRlLmgiCkBAIC01OCw5
ICs2NCwxMSBAQCBjbGFzcyBDb2xsZWN0aW5nU2NvcGU7CiBjbGFzcyBDb25zZXJ2YXRpdmVSb290
czsKIGNsYXNzIEdDRGVmZXJyYWxDb250ZXh0OwogY2xhc3MgRWRlbkdDQWN0aXZpdHlDYWxsYmFj
azsKK2NsYXNzIEZhc3RNYWxsb2NBbGlnbmVkTWVtb3J5QWxsb2NhdG9yOwogY2xhc3MgRnVsbEdD
QWN0aXZpdHlDYWxsYmFjazsKIGNsYXNzIEdDQWN0aXZpdHlDYWxsYmFjazsKIGNsYXNzIEdDQXdh
cmVKSVRTdHViUm91dGluZTsKK2NsYXNzIEdpZ2FjYWdlQWxpZ25lZE1lbW9yeUFsbG9jYXRvcjsK
IGNsYXNzIEhlYXA7CiBjbGFzcyBIZWFwUHJvZmlsZXI7CiBjbGFzcyBIZWFwVmVyaWZpZXI7CkBA
IC02OSw4ICs3Nyw5IEBAIGNsYXNzIEpJVFN0dWJSb3V0aW5lOwogY2xhc3MgSklUU3R1YlJvdXRp
bmVTZXQ7CiBjbGFzcyBKU0NlbGw7CiBjbGFzcyBKU0ltbXV0YWJsZUJ1dHRlcmZseTsKK2NsYXNz
IEpTU3RyaW5nOwogY2xhc3MgSlNWYWx1ZTsKLWNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsK
Ky8vY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOyAvLyBtbGFtCiBjbGFzcyBNYWNoaW5lVGhy
ZWFkczsKIGNsYXNzIE1hcmtTdGFja0FycmF5OwogY2xhc3MgTWFya1N0YWNrTWVyZ2luZ0NvbnN0
cmFpbnQ7CkBAIC03MjksNiArNzM4LDMxOCBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9wYXJhbGxl
bE1hcmtlcnNTaG91bGRFeGl0IHsgZmFsc2UgfTsKICAgICBMb2NrIG1fY29sbGVjdENvbnRpbnVv
dXNseUxvY2s7CiAgICAgQ29uZGl0aW9uIG1fY29sbGVjdENvbnRpbnVvdXNseUNvbmRpdGlvbjsK
KworcHVibGljOgorICAgIC8vIEhlYXBDZWxsVHlwZXMKKyAgICBIZWFwQ2VsbFR5cGUgYXV4aWxp
YXJ5SGVhcENlbGxUeXBlOworICAgIEhlYXBDZWxsVHlwZSBpbW11dGFibGVCdXR0ZXJmbHlIZWFw
Q2VsbFR5cGU7CisgICAgSGVhcENlbGxUeXBlIGNlbGxIZWFwQ2VsbFR5cGU7CisgICAgSGVhcENl
bGxUeXBlIGRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGU7CisgICAgSXNvSGVhcENlbGxUeXBl
IGFwaUdsb2JhbE9iamVjdEhlYXBDZWxsVHlwZTsKKyAgICBJc29IZWFwQ2VsbFR5cGUgY2FsbGJh
Y2tDb25zdHJ1Y3RvckhlYXBDZWxsVHlwZTsKKyAgICBJc29IZWFwQ2VsbFR5cGUgY2FsbGJhY2tH
bG9iYWxPYmplY3RIZWFwQ2VsbFR5cGU7CisgICAgSXNvSGVhcENlbGxUeXBlIGNhbGxiYWNrT2Jq
ZWN0SGVhcENlbGxUeXBlOworICAgIElzb0hlYXBDZWxsVHlwZSBjdXN0b21HZXR0ZXJGdW5jdGlv
bkhlYXBDZWxsVHlwZTsKKyAgICBJc29IZWFwQ2VsbFR5cGUgY3VzdG9tU2V0dGVyRnVuY3Rpb25I
ZWFwQ2VsbFR5cGU7CisgICAgSXNvSGVhcENlbGxUeXBlIGRhdGVJbnN0YW5jZUhlYXBDZWxsVHlw
ZTsKKyAgICBJc29IZWFwQ2VsbFR5cGUgZXJyb3JJbnN0YW5jZUhlYXBDZWxsVHlwZTsKKyAgICBJ
c29IZWFwQ2VsbFR5cGUgZmluYWxpemF0aW9uUmVnaXN0cnlDZWxsVHlwZTsKKyAgICBJc29IZWFw
Q2VsbFR5cGUgZ2xvYmFsTGV4aWNhbEVudmlyb25tZW50SGVhcENlbGxUeXBlOworICAgIElzb0hl
YXBDZWxsVHlwZSBnbG9iYWxPYmplY3RIZWFwQ2VsbFR5cGU7CisgICAgSXNvSGVhcENlbGxUeXBl
IGluamVjdGVkU2NyaXB0SG9zdFNwYWNlSGVhcENlbGxUeXBlOworICAgIElzb0hlYXBDZWxsVHlw
ZSBqYXZhU2NyaXB0Q2FsbEZyYW1lSGVhcENlbGxUeXBlOworICAgIElzb0hlYXBDZWxsVHlwZSBq
c01vZHVsZVJlY29yZEhlYXBDZWxsVHlwZTsKKyAgICBJc29IZWFwQ2VsbFR5cGUgbW9kdWxlTmFt
ZXNwYWNlT2JqZWN0SGVhcENlbGxUeXBlOworICAgIElzb0hlYXBDZWxsVHlwZSBuYXRpdmVTdGRG
dW5jdGlvbkhlYXBDZWxsVHlwZTsKKyAgICBJc29JbmxpbmVkSGVhcENlbGxUeXBlPEpTU3RyaW5n
PiBzdHJpbmdIZWFwQ2VsbFR5cGU7CisgICAgSXNvSGVhcENlbGxUeXBlIHdlYWtNYXBIZWFwQ2Vs
bFR5cGU7CisgICAgSXNvSGVhcENlbGxUeXBlIHdlYWtTZXRIZWFwQ2VsbFR5cGU7CisgICAgSlNE
ZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUgZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxU
eXBlOworI2lmIEpTQ19PQkpDX0FQSV9FTkFCTEVECisgICAgSXNvSGVhcENlbGxUeXBlIGFwaVdy
YXBwZXJPYmplY3RIZWFwQ2VsbFR5cGU7CisgICAgSXNvSGVhcENlbGxUeXBlIG9iakNDYWxsYmFj
a0Z1bmN0aW9uSGVhcENlbGxUeXBlOworI2VuZGlmCisjaWZkZWYgSlNDX0dMSUJfQVBJX0VOQUJM
RUQKKyAgICBJc29IZWFwQ2VsbFR5cGUgYXBpV3JhcHBlck9iamVjdEhlYXBDZWxsVHlwZTsKKyAg
ICBJc29IZWFwQ2VsbFR5cGUgY2FsbGJhY2tBUElXcmFwcGVyR2xvYmFsT2JqZWN0SGVhcENlbGxU
eXBlOworICAgIElzb0hlYXBDZWxsVHlwZSBqc2NDYWxsYmFja0Z1bmN0aW9uSGVhcENlbGxUeXBl
OworI2VuZGlmCisgICAgSXNvSGVhcENlbGxUeXBlIGludGxDb2xsYXRvckhlYXBDZWxsVHlwZTsK
KyAgICBJc29IZWFwQ2VsbFR5cGUgaW50bERhdGVUaW1lRm9ybWF0SGVhcENlbGxUeXBlOworICAg
IElzb0hlYXBDZWxsVHlwZSBpbnRsRGlzcGxheU5hbWVzSGVhcENlbGxUeXBlOworICAgIElzb0hl
YXBDZWxsVHlwZSBpbnRsTGlzdEZvcm1hdEhlYXBDZWxsVHlwZTsKKyAgICBJc29IZWFwQ2VsbFR5
cGUgaW50bExvY2FsZUhlYXBDZWxsVHlwZTsKKyAgICBJc29IZWFwQ2VsbFR5cGUgaW50bE51bWJl
ckZvcm1hdEhlYXBDZWxsVHlwZTsKKyAgICBJc29IZWFwQ2VsbFR5cGUgaW50bFBsdXJhbFJ1bGVz
SGVhcENlbGxUeXBlOworICAgIElzb0hlYXBDZWxsVHlwZSBpbnRsUmVsYXRpdmVUaW1lRm9ybWF0
SGVhcENlbGxUeXBlOworICAgIElzb0hlYXBDZWxsVHlwZSBpbnRsU2VnbWVudEl0ZXJhdG9ySGVh
cENlbGxUeXBlOworICAgIElzb0hlYXBDZWxsVHlwZSBpbnRsU2VnbWVudGVySGVhcENlbGxUeXBl
OworICAgIElzb0hlYXBDZWxsVHlwZSBpbnRsU2VnbWVudHNIZWFwQ2VsbFR5cGU7CisjaWYgRU5B
QkxFKFdFQkFTU0VNQkxZKQorICAgIElzb0hlYXBDZWxsVHlwZSB3ZWJBc3NlbWJseUNvZGVCbG9j
a0hlYXBDZWxsVHlwZTsKKyAgICBJc29IZWFwQ2VsbFR5cGUgd2ViQXNzZW1ibHlFeGNlcHRpb25I
ZWFwQ2VsbFR5cGU7CisgICAgSXNvSGVhcENlbGxUeXBlIHdlYkFzc2VtYmx5RnVuY3Rpb25IZWFw
Q2VsbFR5cGU7CisgICAgSXNvSGVhcENlbGxUeXBlIHdlYkFzc2VtYmx5R2xvYmFsSGVhcENlbGxU
eXBlOworICAgIElzb0hlYXBDZWxsVHlwZSB3ZWJBc3NlbWJseUluc3RhbmNlSGVhcENlbGxUeXBl
OworICAgIElzb0hlYXBDZWxsVHlwZSB3ZWJBc3NlbWJseU1lbW9yeUhlYXBDZWxsVHlwZTsKKyAg
ICBJc29IZWFwQ2VsbFR5cGUgd2ViQXNzZW1ibHlNb2R1bGVIZWFwQ2VsbFR5cGU7CisgICAgSXNv
SGVhcENlbGxUeXBlIHdlYkFzc2VtYmx5TW9kdWxlUmVjb3JkSGVhcENlbGxUeXBlOworICAgIElz
b0hlYXBDZWxsVHlwZSB3ZWJBc3NlbWJseVRhYmxlSGVhcENlbGxUeXBlOworICAgIElzb0hlYXBD
ZWxsVHlwZSB3ZWJBc3NlbWJseVRhZ0hlYXBDZWxsVHlwZTsKKyNlbmRpZgorCisgICAgLy8gQWxp
Z25lZE1lbW9yeUFsbG9jYXRvcnMKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8RmFzdE1hbGxvY0FsaWdu
ZWRNZW1vcnlBbGxvY2F0b3I+IGZhc3RNYWxsb2NBbGxvY2F0b3I7CisgICAgc3RkOjp1bmlxdWVf
cHRyPEdpZ2FjYWdlQWxpZ25lZE1lbW9yeUFsbG9jYXRvcj4gcHJpbWl0aXZlR2lnYWNhZ2VBbGxv
Y2F0b3I7CisgICAgc3RkOjp1bmlxdWVfcHRyPEdpZ2FjYWdlQWxpZ25lZE1lbW9yeUFsbG9jYXRv
cj4ganNWYWx1ZUdpZ2FjYWdlQWxsb2NhdG9yOworCisgICAgLy8gU3Vic3BhY2VzCisgICAgQ29t
cGxldGVTdWJzcGFjZSBwcmltaXRpdmVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlOyAvLyBUeXBlZCBh
cnJheXMsIHN0cmluZ3MsIGJpdHZlY3RvcnMsIGV0YyBnbyBoZXJlLgorICAgIENvbXBsZXRlU3Vi
c3BhY2UganNWYWx1ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2U7IC8vIEJ1dHRlcmZsaWVzLCBhcnJh
eXMgb2YgSlNWYWx1ZXMsIGV0YyBnbyBoZXJlLgorICAgIENvbXBsZXRlU3Vic3BhY2UgaW1tdXRh
YmxlQnV0dGVyZmx5SlNWYWx1ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2U7IC8vIEpTSW1tdXRhYmxl
QnV0dGVyZmx5IGdvZXMgaGVyZS4KKworICAgIC8vIFdlIG1ha2UgY3Jvc3MtY3V0dGluZyBhc3N1
bXB0aW9ucyBhYm91dCB0eXBlZCBhcnJheXMgYmVpbmcgaW4gdGhlIHByaW1pdGl2ZSBHaWdhY2Fn
ZSBhbmQgYnV0dGVyZmxpZXMKKyAgICAvLyBiZWluZyBpbiB0aGUgSlNWYWx1ZSBnaWdhY2FnZS4g
Rm9yIHNvbWUgdHlwZXMsIGl0J3Mgc3VwZXIgb2J2aW91cyB3aGVyZSB0aGV5IHNob3VsZCBnbywg
YW5kIHNvIHdlCisgICAgLy8gY2FuIGhhcmRjb2RlIHRoYXQgZmFjdC4gQnV0IHNvbWV0aW1lcyBp
dCdzIG5vdCBjbGVhciwgc28gd2UgYWJzdHJhY3QgaXQgYnkgaGF2aW5nIGEgR2lnYWNhZ2U6Oktp
bmQKKyAgICAvLyBjb25zdGFudCBzb21ld2hlcmUuCisgICAgLy8gRklYTUU6IE1heWJlIGl0IHdv
dWxkIGJlIGJldHRlciBpZiBldmVyeW9uZSBhYnN0cmFjdGVkIHRoaXM/CisgICAgLy8gaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NTI0OAorICAgIEFMV0FZU19JTkxJ
TkUgQ29tcGxldGVTdWJzcGFjZSYgZ2lnYWNhZ2VBdXhpbGlhcnlTcGFjZShHaWdhY2FnZTo6S2lu
ZCBraW5kKQorICAgIHsKKyAgICAgICAgc3dpdGNoIChraW5kKSB7CisgICAgICAgIGNhc2UgR2ln
YWNhZ2U6OlByaW1pdGl2ZToKKyAgICAgICAgICAgIHJldHVybiBwcmltaXRpdmVHaWdhY2FnZUF1
eGlsaWFyeVNwYWNlOworICAgICAgICBjYXNlIEdpZ2FjYWdlOjpKU1ZhbHVlOgorICAgICAgICAg
ICAgcmV0dXJuIGpzVmFsdWVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlOworICAgICAgICBjYXNlIEdp
Z2FjYWdlOjpOdW1iZXJPZktpbmRzOgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAg
ICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIHByaW1p
dGl2ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2U7CisgICAgfQorICAgIAorICAgIC8vIFdoZW5ldmVy
IHBvc3NpYmxlLCB1c2Ugc3Vic3BhY2VGb3I8Q2VsbFR5cGU+KHZtKSB0byBnZXQgb25lIG9mIHRo
ZXNlIHN1YnNwYWNlcy4KKyAgICBDb21wbGV0ZVN1YnNwYWNlIGNlbGxTcGFjZTsKKyAgICBDb21w
bGV0ZVN1YnNwYWNlIHZhcmlhYmxlU2l6ZWRDZWxsU3BhY2U7IC8vIEZJWE1FOiBUaGlzIHNwYWNl
IGlzIHByb2JsZW1hdGljIGJlY2F1c2Ugd2UgaGF2ZSB0aGluZ3MgaW4gaGVyZSBsaWtlIERpcmVj
dEFyZ3VtZW50cyBhbmQgU2NvcGVkQXJndW1lbnRzOyB0aG9zZSBzaG91bGQgYmUgc3BsaXQgaW50
byBKU1ZhbHVlT09CIGNlbGxzIGFuZCBKU1ZhbHVlU3RyaWN0IGF1eGlsaWFyaWVzLiBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgyODU4CisgICAgQ29tcGxldGVTdWJz
cGFjZSBkZXN0cnVjdGlibGVPYmplY3RTcGFjZTsKKworICAgIElzb1N1YnNwYWNlIGFycmF5U3Bh
Y2U7CisgICAgSXNvU3Vic3BhY2UgYmlnSW50U3BhY2U7CisgICAgSXNvU3Vic3BhY2UgY2FsbGVl
U3BhY2U7CisgICAgSXNvU3Vic3BhY2UgY2xvbmVkQXJndW1lbnRzU3BhY2U7CisgICAgSXNvU3Vi
c3BhY2UgY3VzdG9tR2V0dGVyU2V0dGVyU3BhY2U7CisgICAgSXNvU3Vic3BhY2UgZGF0ZUluc3Rh
bmNlU3BhY2U7CisgICAgSXNvU3Vic3BhY2UgZG9tQXR0cmlidXRlR2V0dGVyU2V0dGVyU3BhY2U7
CisgICAgSXNvU3Vic3BhY2UgZXhjZXB0aW9uU3BhY2U7CisgICAgSXNvU3Vic3BhY2UgZXhlY3V0
YWJsZVRvQ29kZUJsb2NrRWRnZVNwYWNlOworICAgIElzb1N1YnNwYWNlIGZ1bmN0aW9uU3BhY2U7
CisgICAgSXNvU3Vic3BhY2UgZ2V0dGVyU2V0dGVyU3BhY2U7CisgICAgSXNvU3Vic3BhY2UgZ2xv
YmFsTGV4aWNhbEVudmlyb25tZW50U3BhY2U7CisgICAgSXNvU3Vic3BhY2UgaW50ZXJuYWxGdW5j
dGlvblNwYWNlOworICAgIElzb1N1YnNwYWNlIGpzUHJveHlTcGFjZTsKKyAgICBJc29TdWJzcGFj
ZSBuYXRpdmVFeGVjdXRhYmxlU3BhY2U7CisgICAgSXNvU3Vic3BhY2UgbnVtYmVyT2JqZWN0U3Bh
Y2U7CisgICAgSXNvU3Vic3BhY2UgcGxhaW5PYmplY3RTcGFjZTsKKyAgICBJc29TdWJzcGFjZSBw
cm9taXNlU3BhY2U7CisgICAgSXNvU3Vic3BhY2UgcHJvcGVydHlOYW1lRW51bWVyYXRvclNwYWNl
OworICAgIElzb1N1YnNwYWNlIHByb3BlcnR5VGFibGVTcGFjZTsKKyAgICBJc29TdWJzcGFjZSBy
ZWdFeHBTcGFjZTsKKyAgICBJc29TdWJzcGFjZSByZWdFeHBPYmplY3RTcGFjZTsKKyAgICBJc29T
dWJzcGFjZSByb3BlU3RyaW5nU3BhY2U7CisgICAgSXNvU3Vic3BhY2Ugc2NvcGVkQXJndW1lbnRz
U3BhY2U7CisgICAgSXNvU3Vic3BhY2Ugc3BhcnNlQXJyYXlWYWx1ZU1hcFNwYWNlOworICAgIElz
b1N1YnNwYWNlIHN0cmluZ1NwYWNlOworICAgIElzb1N1YnNwYWNlIHN0cmluZ09iamVjdFNwYWNl
OworICAgIElzb1N1YnNwYWNlIHN0cnVjdHVyZUNoYWluU3BhY2U7CisgICAgSXNvU3Vic3BhY2Ug
c3RydWN0dXJlUmFyZURhdGFTcGFjZTsKKyAgICBJc29TdWJzcGFjZSBzdHJ1Y3R1cmVTcGFjZTsK
KyAgICBJc29TdWJzcGFjZSBicmFuZGVkU3RydWN0dXJlU3BhY2U7CisgICAgSXNvU3Vic3BhY2Ug
c3ltYm9sVGFibGVTcGFjZTsKKworI2RlZmluZSBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVf
TUVNQkVSKG5hbWUpIFwKKyAgICB0ZW1wbGF0ZTxTdWJzcGFjZUFjY2VzcyBtb2RlPiBcCisgICAg
SXNvU3Vic3BhY2UqIG5hbWUoKSBcCisgICAgeyBcCisgICAgICAgIGlmIChtXyMjbmFtZSB8fCBt
b2RlID09IFN1YnNwYWNlQWNjZXNzOjpDb25jdXJyZW50bHkpIFwKKyAgICAgICAgICAgIHJldHVy
biBtXyMjbmFtZS5nZXQoKTsgXAorICAgICAgICByZXR1cm4gbmFtZSMjU2xvdygpOyBcCisgICAg
fSBcCisgICAgSlNfRVhQT1JUX1BSSVZBVEUgSXNvU3Vic3BhY2UqIG5hbWUjI1Nsb3coKTsgXAor
ICAgIHN0ZDo6dW5pcXVlX3B0cjxJc29TdWJzcGFjZT4gbV8jI25hbWU7CisKKworI2lmIEpTQ19P
QkpDX0FQSV9FTkFCTEVECisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihh
cGlXcmFwcGVyT2JqZWN0U3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01F
TUJFUihvYmpDQ2FsbGJhY2tGdW5jdGlvblNwYWNlKQorI2VuZGlmCisjaWZkZWYgSlNDX0dMSUJf
QVBJX0VOQUJMRUQKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKGFwaVdy
YXBwZXJPYmplY3RTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVS
KGpzY0NhbGxiYWNrRnVuY3Rpb25TcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJ
TkVfTUVNQkVSKGNhbGxiYWNrQVBJV3JhcHBlckdsb2JhbE9iamVjdFNwYWNlKQorI2VuZGlmCisg
ICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihhcGlHbG9iYWxPYmplY3RTcGFj
ZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKGFwaVZhbHVlV3JhcHBl
clNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoYXJyYXlCdWZm
ZXJTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKGFycmF5SXRl
cmF0b3JTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKGFzeW5j
R2VuZXJhdG9yU3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihi
aWdJbnQ2NEFycmF5U3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJF
UihiaWdJbnRPYmplY3RTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVN
QkVSKGJpZ1VpbnQ2NEFycmF5U3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5F
X01FTUJFUihib29sZWFuT2JqZWN0U3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVG
SU5FX01FTUJFUihib3VuZEZ1bmN0aW9uU3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0Vf
REVGSU5FX01FTUJFUihjYWxsYmFja0NvbnN0cnVjdG9yU3BhY2UpCisgICAgRFlOQU1JQ19JU09f
U1VCU1BBQ0VfREVGSU5FX01FTUJFUihjYWxsYmFja0dsb2JhbE9iamVjdFNwYWNlKQorICAgIERZ
TkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoY2FsbGJhY2tGdW5jdGlvblNwYWNlKQor
ICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoY2FsbGJhY2tPYmplY3RTcGFj
ZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKGN1c3RvbUdldHRlckZ1
bmN0aW9uU3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihjdXN0
b21TZXR0ZXJGdW5jdGlvblNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9N
RU1CRVIoZGF0YVZpZXdTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVN
QkVSKGRlYnVnZ2VyU2NvcGVTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVf
TUVNQkVSKGVycm9ySW5zdGFuY2VTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJ
TkVfTUVNQkVSKGZsb2F0MzJBcnJheVNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RF
RklORV9NRU1CRVIoZmxvYXQ2NEFycmF5U3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0Vf
REVGSU5FX01FTUJFUihmdW5jdGlvblJhcmVEYXRhU3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VC
U1BBQ0VfREVGSU5FX01FTUJFUihnZW5lcmF0b3JTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJT
UEFDRV9ERUZJTkVfTUVNQkVSKGdsb2JhbE9iamVjdFNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NV
QlNQQUNFX0RFRklORV9NRU1CRVIoaW5qZWN0ZWRTY3JpcHRIb3N0U3BhY2UpCisgICAgRFlOQU1J
Q19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihpbnQ4QXJyYXlTcGFjZSkKKyAgICBEWU5BTUlD
X0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKGludDE2QXJyYXlTcGFjZSkKKyAgICBEWU5BTUlD
X0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKGludDMyQXJyYXlTcGFjZSkKKyAgICBEWU5BTUlD
X0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKGphdmFTY3JpcHRDYWxsRnJhbWVTcGFjZSkKKyAg
ICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKGpzTW9kdWxlUmVjb3JkU3BhY2Up
CisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihtYXBCdWNrZXRTcGFjZSkK
KyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKG1hcEl0ZXJhdG9yU3BhY2Up
CisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihtYXBTcGFjZSkKKyAgICBE
WU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKG1vZHVsZU5hbWVzcGFjZU9iamVjdFNw
YWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIobmF0aXZlU3RkRnVu
Y3Rpb25TcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKHByb3h5
T2JqZWN0U3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihwcm94
eVJldm9rZVNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoc2Nv
cGVkQXJndW1lbnRzVGFibGVTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVf
TUVNQkVSKHNjcmlwdEZldGNoUGFyYW1ldGVyc1NwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQ
QUNFX0RFRklORV9NRU1CRVIoc2NyaXB0RmV0Y2hlclNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NV
QlNQQUNFX0RFRklORV9NRU1CRVIoc2V0QnVja2V0U3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VC
U1BBQ0VfREVGSU5FX01FTUJFUihzZXRJdGVyYXRvclNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NV
QlNQQUNFX0RFRklORV9NRU1CRVIoc2V0U3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0Vf
REVGSU5FX01FTUJFUihzaGFkb3dSZWFsbVNwYWNlKTsKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFD
RV9ERUZJTkVfTUVNQkVSKHN0cmljdEV2YWxBY3RpdmF0aW9uU3BhY2UpCisgICAgRFlOQU1JQ19J
U09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihzdHJpbmdJdGVyYXRvclNwYWNlKQorICAgIERZTkFN
SUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoc291cmNlQ29kZVNwYWNlKQorICAgIERZTkFN
SUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoc3ltYm9sU3BhY2UpCisgICAgRFlOQU1JQ19J
U09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihzeW1ib2xPYmplY3RTcGFjZSkKKyAgICBEWU5BTUlD
X0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKHRlbXBsYXRlT2JqZWN0RGVzY3JpcHRvclNwYWNl
KQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIodGVtcG9yYWxDYWxlbmRh
clNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIodGVtcG9yYWxE
dXJhdGlvblNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIodGVt
cG9yYWxJbnN0YW50U3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJF
Uih0ZW1wb3JhbFBsYWluVGltZVNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklO
RV9NRU1CRVIodGVtcG9yYWxUaW1lWm9uZVNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNF
X0RFRklORV9NRU1CRVIodWludDhBcnJheVNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNF
X0RFRklORV9NRU1CRVIodWludDhDbGFtcGVkQXJyYXlTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19T
VUJTUEFDRV9ERUZJTkVfTUVNQkVSKHVpbnQxNkFycmF5U3BhY2UpCisgICAgRFlOQU1JQ19JU09f
U1VCU1BBQ0VfREVGSU5FX01FTUJFUih1aW50MzJBcnJheVNwYWNlKQorICAgIERZTkFNSUNfSVNP
X1NVQlNQQUNFX0RFRklORV9NRU1CRVIodW5saW5rZWRFdmFsQ29kZUJsb2NrU3BhY2UpCisgICAg
RFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUih1bmxpbmtlZEZ1bmN0aW9uQ29kZUJs
b2NrU3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUih1bmxpbmtl
ZE1vZHVsZVByb2dyYW1Db2RlQmxvY2tTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9E
RUZJTkVfTUVNQkVSKHVubGlua2VkUHJvZ3JhbUNvZGVCbG9ja1NwYWNlKQorICAgIERZTkFNSUNf
SVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoZmluYWxpemF0aW9uUmVnaXN0cnlTcGFjZSkKKyAg
ICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKHdlYWtPYmplY3RSZWZTcGFjZSkK
KyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKHdlYWtTZXRTcGFjZSkKKyAg
ICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKHdlYWtNYXBTcGFjZSkKKyAgICBE
WU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKHdpdGhTY29wZVNwYWNlKQorICAgIERZ
TkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoaW50bENvbGxhdG9yU3BhY2UpCisgICAg
RFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihpbnRsRGF0ZVRpbWVGb3JtYXRTcGFj
ZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKGludGxEaXNwbGF5TmFt
ZXNTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKGludGxMaXN0
Rm9ybWF0U3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihpbnRs
TG9jYWxlU3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihpbnRs
TnVtYmVyRm9ybWF0U3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJF
UihpbnRsUGx1cmFsUnVsZXNTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVf
TUVNQkVSKGludGxSZWxhdGl2ZVRpbWVGb3JtYXRTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJT
UEFDRV9ERUZJTkVfTUVNQkVSKGludGxTZWdtZW50SXRlcmF0b3JTcGFjZSkKKyAgICBEWU5BTUlD
X0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKGludGxTZWdtZW50ZXJTcGFjZSkKKyAgICBEWU5B
TUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKGludGxTZWdtZW50c1NwYWNlKQorI2lmIEVO
QUJMRShXRUJBU1NFTUJMWSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVS
KGpzVG9XYXNtSUNDYWxsZWVTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVf
TUVNQkVSKHdlYkFzc2VtYmx5Q29kZUJsb2NrU3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BB
Q0VfREVGSU5FX01FTUJFUih3ZWJBc3NlbWJseUV4Y2VwdGlvblNwYWNlKQorICAgIERZTkFNSUNf
SVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIod2ViQXNzZW1ibHlGdW5jdGlvblNwYWNlKQorICAg
IERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIod2ViQXNzZW1ibHlHbG9iYWxTcGFj
ZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKHdlYkFzc2VtYmx5SW5z
dGFuY2VTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKHdlYkFz
c2VtYmx5TWVtb3J5U3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJF
Uih3ZWJBc3NlbWJseU1vZHVsZVNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklO
RV9NRU1CRVIod2ViQXNzZW1ibHlNb2R1bGVSZWNvcmRTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19T
VUJTUEFDRV9ERUZJTkVfTUVNQkVSKHdlYkFzc2VtYmx5VGFibGVTcGFjZSkKKyAgICBEWU5BTUlD
X0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKHdlYkFzc2VtYmx5VGFnU3BhY2UpCisgICAgRFlO
QU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUih3ZWJBc3NlbWJseVdyYXBwZXJGdW5jdGlv
blNwYWNlKQorI2VuZGlmCisKKyN1bmRlZiBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVN
QkVSCisgICAgCisgICAgSXNvQ2VsbFNldCBleGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlc1dpdGhD
b25zdHJhaW50czsKKyAgICBJc29DZWxsU2V0IGV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2VzV2l0
aEZpbmFsaXplcnM7CisKKyNkZWZpbmUgRFlOQU1JQ19TUEFDRV9BTkRfU0VUX0RFRklORV9NRU1C
RVIobmFtZSkgXAorICAgIHRlbXBsYXRlPFN1YnNwYWNlQWNjZXNzIG1vZGU+IFwKKyAgICBJc29T
dWJzcGFjZSogbmFtZSgpIFwKKyAgICB7IFwKKyAgICAgICAgaWYgKGF1dG8qIHNwYWNlQW5kU2V0
ID0gbV8jI25hbWUuZ2V0KCkpIFwKKyAgICAgICAgICAgIHJldHVybiAmc3BhY2VBbmRTZXQtPnNw
YWNlOyBcCisgICAgICAgIGlmIChtb2RlID09IFN1YnNwYWNlQWNjZXNzOjpDb25jdXJyZW50bHkp
IFwKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOyBcCisgICAgICAgIHJldHVybiBuYW1lIyNT
bG93KCk7IFwKKyAgICB9IFwKKyAgICBJc29TdWJzcGFjZSogbmFtZSMjU2xvdygpOyBcCisgICAg
c3RkOjp1bmlxdWVfcHRyPFNwYWNlQW5kU2V0PiBtXyMjbmFtZTsKKyAgICAKKyAgICBzdHJ1Y3Qg
U3BhY2VBbmRTZXQgeworICAgICAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7CisK
KyAgICAgICAgSXNvU3Vic3BhY2Ugc3BhY2U7CisgICAgICAgIElzb0NlbGxTZXQgc2V0OworICAg
ICAgICAKKyAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gQXJndW1lbnRzPgorICAgICAgICBT
cGFjZUFuZFNldChBcmd1bWVudHMmJi4uLiBhcmd1bWVudHMpCisgICAgICAgICAgICA6IHNwYWNl
KHN0ZDo6Zm9yd2FyZDxBcmd1bWVudHM+KGFyZ3VtZW50cykuLi4pCisgICAgICAgICAgICAsIHNl
dChzcGFjZSkKKyAgICAgICAgeworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBzdGF0aWMg
SXNvQ2VsbFNldCYgc2V0Rm9yKFN1YnNwYWNlJiBzcGFjZSkKKyAgICAgICAgeworICAgICAgICAg
ICAgcmV0dXJuICpiaXR3aXNlX2Nhc3Q8SXNvQ2VsbFNldCo+KAorICAgICAgICAgICAgICAgIGJp
dHdpc2VfY2FzdDxjaGFyKj4oJnNwYWNlKSAtCisgICAgICAgICAgICAgICAgT0JKRUNUX09GRlNF
VE9GKFNwYWNlQW5kU2V0LCBzcGFjZSkgKworICAgICAgICAgICAgICAgIE9CSkVDVF9PRkZTRVRP
RihTcGFjZUFuZFNldCwgc2V0KSk7CisgICAgICAgIH0KKyAgICB9OworICAgIAorICAgIFNwYWNl
QW5kU2V0IGNvZGVCbG9ja1NwYWNlOworCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuYz4KKyAg
ICB2b2lkIGZvckVhY2hDb2RlQmxvY2tTcGFjZShjb25zdCBGdW5jJiBmdW5jKQorICAgIHsKKyAg
ICAgICAgLy8gVGhpcyBzaG91bGQgbm90IGluY2x1ZGUgd2ViQXNzZW1ibHlDb2RlQmxvY2tTcGFj
ZSBiZWNhdXNlIHRoaXMgaXMgYWJvdXQgc3Vic2NsYXNzZXMgb2YKKyAgICAgICAgLy8gSlNDOjpD
b2RlQmxvY2suCisgICAgICAgIGZ1bmMoY29kZUJsb2NrU3BhY2UpOworICAgIH0KKworICAgIERZ
TkFNSUNfU1BBQ0VfQU5EX1NFVF9ERUZJTkVfTUVNQkVSKGV2YWxFeGVjdXRhYmxlU3BhY2UpCisg
ICAgRFlOQU1JQ19TUEFDRV9BTkRfU0VUX0RFRklORV9NRU1CRVIobW9kdWxlUHJvZ3JhbUV4ZWN1
dGFibGVTcGFjZSkKKyAgICBTcGFjZUFuZFNldCBmdW5jdGlvbkV4ZWN1dGFibGVTcGFjZTsKKyAg
ICBTcGFjZUFuZFNldCBwcm9ncmFtRXhlY3V0YWJsZVNwYWNlOworCisgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgRnVuYz4KKyAgICB2b2lkIGZvckVhY2hTY3JpcHRFeGVjdXRhYmxlU3BhY2UoY29uc3Qg
RnVuYyYgZnVuYykKKyAgICB7CisgICAgICAgIGlmIChtX2V2YWxFeGVjdXRhYmxlU3BhY2UpCisg
ICAgICAgICAgICBmdW5jKCptX2V2YWxFeGVjdXRhYmxlU3BhY2UpOworICAgICAgICBmdW5jKGZ1
bmN0aW9uRXhlY3V0YWJsZVNwYWNlKTsKKyAgICAgICAgaWYgKG1fbW9kdWxlUHJvZ3JhbUV4ZWN1
dGFibGVTcGFjZSkKKyAgICAgICAgICAgIGZ1bmMoKm1fbW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGVT
cGFjZSk7CisgICAgICAgIGZ1bmMocHJvZ3JhbUV4ZWN1dGFibGVTcGFjZSk7CisgICAgfQorCisg
ICAgU3BhY2VBbmRTZXQgdW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGVTcGFjZTsKKworI3VuZGVm
IERZTkFNSUNfU1BBQ0VfQU5EX1NFVF9ERUZJTkVfTUVNQkVSCiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lzb0hlYXBDZWxsVHlwZS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lzb0hlYXBDZWxsVHlw
ZS5oCShyZXZpc2lvbiAyODYwNDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Jc29I
ZWFwQ2VsbFR5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzgsNiArMzgsMjIgQEAgcHVibGljOgog
ICAgIEpTX0VYUE9SVF9QUklWQVRFIElzb0hlYXBDZWxsVHlwZShEZXN0cnVjdGlvbk1vZGUsIERl
c3Ryb3lGdW5jdGlvblB0cik7CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZT4KKyAg
ICBzdHJ1Y3QgQXJncyB7CisgICAgICAgIEFyZ3MoKQorICAgICAgICAgICAgOiBtb2RlKENlbGxU
eXBlOjpuZWVkc0Rlc3RydWN0aW9uID8gTmVlZHNEZXN0cnVjdGlvbiA6IERvZXNOb3ROZWVkRGVz
dHJ1Y3Rpb24pCisgICAgICAgICAgICAsIGZ1bmN0aW9uUHRyKCZDZWxsVHlwZTo6ZGVzdHJveSkK
KyAgICAgICAgeyB9CisKKyAgICAgICAgRGVzdHJ1Y3Rpb25Nb2RlIG1vZGU7CisgICAgICAgIERl
c3Ryb3lGdW5jdGlvblB0ciBmdW5jdGlvblB0cjsKKyAgICB9OworCisgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgQ2VsbFR5cGU+CisgICAgSXNvSGVhcENlbGxUeXBlKEFyZ3M8Q2VsbFR5cGU+JiYgYXJn
cykKKyAgICAgICAgOiBJc29IZWFwQ2VsbFR5cGUoYXJncy5tb2RlLCBhcmdzLmZ1bmN0aW9uUHRy
KQorICAgIHsgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGU+CiAgICAgc3RhdGlj
IHN0ZDo6dW5pcXVlX3B0cjxJc29IZWFwQ2VsbFR5cGU+IGNyZWF0ZSgpCiAgICAgewogICAgICAg
ICByZXR1cm4gbWFrZVVuaXF1ZTxJc29IZWFwQ2VsbFR5cGU+KENlbGxUeXBlOjpuZWVkc0Rlc3Ry
dWN0aW9uID8gTmVlZHNEZXN0cnVjdGlvbiA6IERvZXNOb3ROZWVkRGVzdHJ1Y3Rpb24sICZDZWxs
VHlwZTo6ZGVzdHJveSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Jc29TdWJz
cGFjZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lzb1N1YnNw
YWNlLmgJKHJldmlzaW9uIDI4NjA0MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lz
b1N1YnNwYWNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTU0LDcgKzU0LDcgQEAgcHVibGljOgogICAg
IHZvaWQqIHRyeUFsbG9jYXRlRnJvbUxvd2VyVGllcigpOwogICAgIHZvaWQgZGVzdHJveUxvd2Vy
VGllckZyZWVMaXN0KCk7CiAKLSAgICB2b2lkIHN3ZWVwKCk7CisgICAgdm9pZCBzd2VlcDMoKTsK
IAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmM+IHZvaWQgZm9yRWFjaExvd2VyVGllckZyZWVM
aXN0ZWRQcmVjaXNlQWxsb2NhdGlvbihjb25zdCBGdW5jJik7CiAKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL0lzb1N1YnNwYWNlSW5saW5lcy5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lzb1N1YnNwYWNlSW5saW5lcy5oCShyZXZpc2lvbiAyODYw
NDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Jc29TdWJzcGFjZUlubGluZXMuaAko
d29ya2luZyBjb3B5KQpAQCAtNDQsNyArNDQsNyBAQCBpbmxpbmUgdm9pZCBJc29TdWJzcGFjZTo6
Y2xlYXJJc29DZWxsU2V0CiAgICAgICAgIH0pOwogfQogCi1pbmxpbmUgdm9pZCBJc29TdWJzcGFj
ZTo6c3dlZXAoKQoraW5saW5lIHZvaWQgSXNvU3Vic3BhY2U6OnN3ZWVwMygpCiB7CiAgICAgU3Vi
c3BhY2U6OnN3ZWVwQmxvY2tzKCk7CiAgICAgLy8gV2Ugc3dlZXAgcHJlY2lzZS1hbGxvY2F0aW9u
cyBlYWdlcmx5LCBidXQgd2UgZG8gbm90IGZyZWUgaXQgaW1tZWRpYXRlbHkuCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9ja0lubGluZXMuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9ja0lubGluZXMuaAkocmV2aXNp
b24gMjg2MDQzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2tJbmxp
bmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChD
KSAyMDE2LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDE2LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yMTMsNyArMjEzLDcgQEAgaW5saW5lIGJvb2wgTWFy
a2VkQmxvY2s6OkhhbmRsZTo6YXJlTWFyawogLy8gc3dlZXBNb2RlID09IFN3ZWVwVG9GcmVlTGlz
dAogLy8gc2NyaWJibGVNb2RlID09IERvbnRTY3JpYmJsZQogLy8gbmV3bHlBbGxvY2F0ZWRNb2Rl
ID09IERvZXNOb3RIYXZlTmV3bHlBbGxvY2F0ZWQKLS8vIGRlc3RydWN0aW9uTW9kZSAhPSBCbG9j
a0hhc0Rlc3RyaWN0b3JzQW5kQ29sbGVjdG9ySXNSdW5uaW5nCisvLyBkZXN0cnVjdGlvbk1vZGUg
IT0gQmxvY2tIYXNEZXN0cnVjdG9yc0FuZENvbGxlY3RvcklzUnVubmluZwogLy8KIC8vIGVtcHR5
TW9kZSA9IElzRW1wdHkKIC8vICAgICBkZXN0cnVjdGlvbk1vZGUgPSBEb2VzTm90TmVlZERlc3Ry
dWN0aW9uCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTSW5qZWN0ZWRT
Y3JpcHRIb3N0UHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9KU0luamVjdGVkU2NyaXB0SG9zdFByb3RvdHlwZS5oCShyZXZpc2lvbiAyODYw
NDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTSW5qZWN0ZWRTY3JpcHRI
b3N0UHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQwLDcgKzQwLDcgQEAgcHVibGljOgog
ICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKICAg
ICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTSW5qZWN0
ZWRTY3JpcHRIb3N0UHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9i
amVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9
CiAKICAgICBERUNMQVJFX0lORk87CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL0pTSmF2YVNjcmlwdENhbGxGcmFtZVByb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNKYXZhU2NyaXB0Q2FsbEZyYW1lUHJvdG90eXBl
LmgJKHJldmlzaW9uIDI4NjA0MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
SlNKYXZhU2NyaXB0Q2FsbEZyYW1lUHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQwLDcg
KzQwLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZv
cihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNF
X1NIQVJBQkxFKEpTSmF2YVNjcmlwdENhbGxGcmFtZVByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAg
IHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9i
amVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAgREVDTEFSRV9JTkZPOwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0NhbGxGcmFtZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9DYWxsRnJhbWUuaAkocmV2aXNpb24gMjg2MDQz
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0NhbGxGcmFtZS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zOCw2ICszOCw3IEBAIG5hbWVzcGFjZSBKU0MgIHsKICAgICBjbGFzcyBK
U0NhbGxlZTsKICAgICBjbGFzcyBKU1Njb3BlOwogICAgIGNsYXNzIFNvdXJjZU9yaWdpbjsKKyAg
ICBjbGFzcyBWaXJ0dWFsUmVnaXN0ZXI7CiAKICAgICBzdHJ1Y3QgSW5zdHJ1Y3Rpb247CiAKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FnZ3JlZ2F0ZUVycm9yUHJvdG90eXBl
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQWdncmVnYXRl
RXJyb3JQcm90b3R5cGUuaAkocmV2aXNpb24gMjg2MDQzKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQWdncmVnYXRlRXJyb3JQcm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAt
NDQsNyArNDQsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZv
cihWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFS
QUJMRShBZ2dyZWdhdGVFcnJvclByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0u
cGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7
CiAgICAgfQogCiAgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiB2bSwg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUl0ZXJhdG9yUHJvdG90eXBlLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlJdGVyYXRvclBy
b3RvdHlwZS5oCShyZXZpc2lvbiAyODYwNDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9BcnJheUl0ZXJhdG9yUHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM4LDcgKzM4
LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZt
KQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoQXJy
YXlJdGVyYXRvclByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmpl
Y3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQog
CiAgICAgc3RhdGljIEFycmF5SXRlcmF0b3JQcm90b3R5cGUqIGNyZWF0ZShWTSYgdm0sIEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlKQpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXN5bmNGcm9tU3luY0l0ZXJhdG9yUHJvdG90eXBl
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXN5bmNGcm9t
U3luY0l0ZXJhdG9yUHJvdG90eXBlLmgJKHJldmlzaW9uIDI4NjA0MykKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0FzeW5jRnJvbVN5bmNJdGVyYXRvclByb3RvdHlwZS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxNy0yMDE5
IE9sZWtzYW5kciBTa2FjaGtvdiA8Z3NrYWNoa292QGdtYWlsLmNvbT4uCisgKiBDb3B5cmlnaHQg
KEMpIDIwMjEgQXBwbGUsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwpAQCAtMzcsNyArMzgsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIElz
b1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNT
RVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShBc3luY0Zyb21TeW5jSXRlcmF0b3JQcm90b3R5cGUs
IEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJl
dHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIERFQ0xBUkVfSU5GTzsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FzeW5jRnVuY3Rpb25Qcm90b3R5
cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bc3luY0Z1
bmN0aW9uUHJvdG90eXBlLmgJKHJldmlzaW9uIDI4NjA0MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0FzeW5jRnVuY3Rpb25Qcm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAt
MzgsNyArMzgsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZv
cihWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFS
QUJMRShBc3luY0Z1bmN0aW9uUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5w
bGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsK
ICAgICB9CiAKICAgICBERUNMQVJFX0lORk87CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Bc3luY0dlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXN5bmNHZW5lcmF0b3JGdW5jdGlvblByb3Rv
dHlwZS5oCShyZXZpc2lvbiAyODYwNDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Bc3luY0dlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM4
LDcgKzM4LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3Io
Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFC
TEUoQXN5bmNHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVy
biAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNw
YWNlKCk7CiAgICAgfQogCiAgICAgREVDTEFSRV9JTkZPOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQXN5bmNHZW5lcmF0b3JQcm90b3R5cGUuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bc3luY0dlbmVyYXRvclByb3RvdHlwZS5oCShy
ZXZpc2lvbiAyODYwNDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bc3luY0dl
bmVyYXRvclByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00MSw3ICs0MSw3IEBAIHB1Ymxp
YzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAg
ICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEFzeW5jR2VuZXJhdG9y
UHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOwor
ICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0
aWMgQXN5bmNHZW5lcmF0b3JQcm90b3R5cGUqIGNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0
KiwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Bc3luY0l0ZXJhdG9yUHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQXN5bmNJdGVyYXRvclByb3RvdHlwZS5oCShyZXZpc2lvbiAyODYw
NDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bc3luY0l0ZXJhdG9yUHJvdG90
eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM5LDcgKzM5LDcgQEAgcHVibGljOgogICAgIHN0YXRp
YyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElD
X0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoQXN5bmNJdGVyYXRvclByb3RvdHlwZSwgQmFz
ZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJu
ICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIEFzeW5jSXRlcmF0
b3JQcm90b3R5cGUqIGNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IFN0cnVjdHVyZSogc3RydWN0dXJlKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQXRvbWljc09iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0F0b21pY3NPYmplY3QuaAkocmV2aXNpb24gMjg2MDQzKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQXRvbWljc09iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNi0yMDE3IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNi0yMDIxIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzcs
NyArMzcsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihW
TSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJM
RShBdG9taWNzT2JqZWN0LCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNw
YWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAg
CiAgICAgc3RhdGljIEF0b21pY3NPYmplY3QqIGNyZWF0ZShWTSYsIEpTR2xvYmFsT2JqZWN0Kiwg
U3RydWN0dXJlKik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9CaWdJbnRQ
cm90b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9C
aWdJbnRQcm90b3R5cGUuaAkocmV2aXNpb24gMjg2MDQzKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQmlnSW50UHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM5LDcgKzM5
LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZt
KQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoQmln
SW50UHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNl
OworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBz
dGF0aWMgQmlnSW50UHJvdG90eXBlKiBjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0JyYW5kZWRTdHJ1Y3R1cmUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9CcmFuZGVkU3RydWN0dXJlLmgJKHJldmlzaW9uIDI4NjA0MykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0JyYW5kZWRTdHJ1Y3R1cmUuaAkod29y
a2luZyBjb3B5KQpAQCAtNDcsNyArNDcsNyBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5h
bWUgQ2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNzPgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vi
c3BhY2VGb3IoVk0mIHZtKQogICAgIHsKLSAgICAgICAgcmV0dXJuICZ2bS5icmFuZGVkU3RydWN0
dXJlU3BhY2U7CisgICAgICAgIHJldHVybiAmdm0uYnJhbmRlZFN0cnVjdHVyZVNwYWNlKCk7CiAg
ICAgfQogCiAgICAgQUxXQVlTX0lOTElORSBib29sIGNoZWNrQnJhbmQoU3ltYm9sKiBicmFuZCkK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0J1dHRlcmZseUlubGluZXMuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9CdXR0ZXJmbHlJbmxp
bmVzLmgJKHJldmlzaW9uIDI4NjA0MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0J1dHRlcmZseUlubGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtNzcsNyArNzcsNyBAQCBBTFdB
WVNfSU5MSU5FIHVuc2lnbmVkIEJ1dHRlcmZseTo6b3B0aW1hCiBpbmxpbmUgQnV0dGVyZmx5KiBC
dXR0ZXJmbHk6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQoVk0mIHZtLCBKU09iamVjdCosIHNpemVf
dCBwcmVDYXBhY2l0eSwgc2l6ZV90IHByb3BlcnR5Q2FwYWNpdHksIGJvb2wgaGFzSW5kZXhpbmdI
ZWFkZXIsIHNpemVfdCBpbmRleGluZ1BheWxvYWRTaXplSW5CeXRlcywgR0NEZWZlcnJhbENvbnRl
eHQqIGRlZmVycmFsQ29udGV4dCkKIHsKICAgICBzaXplX3Qgc2l6ZSA9IHRvdGFsU2l6ZShwcmVD
YXBhY2l0eSwgcHJvcGVydHlDYXBhY2l0eSwgaGFzSW5kZXhpbmdIZWFkZXIsIGluZGV4aW5nUGF5
bG9hZFNpemVJbkJ5dGVzKTsKLSAgICB2b2lkKiBiYXNlID0gdm0uanNWYWx1ZUdpZ2FjYWdlQXV4
aWxpYXJ5U3BhY2UuYWxsb2NhdGVOb25WaXJ0dWFsKHZtLCBzaXplLCBkZWZlcnJhbENvbnRleHQs
IEFsbG9jYXRpb25GYWlsdXJlTW9kZTo6UmV0dXJuTnVsbCk7CisgICAgdm9pZCogYmFzZSA9IHZt
LmpzVmFsdWVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlKCkuYWxsb2NhdGVOb25WaXJ0dWFsKHZtLCBz
aXplLCBkZWZlcnJhbENvbnRleHQsIEFsbG9jYXRpb25GYWlsdXJlTW9kZTo6UmV0dXJuTnVsbCk7
CiAgICAgaWYgKFVOTElLRUxZKCFiYXNlKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKQEAg
LTg5LDcgKzg5LDcgQEAgaW5saW5lIEJ1dHRlcmZseSogQnV0dGVyZmx5Ojp0cnlDcmVhdGVVbgog
aW5saW5lIEJ1dHRlcmZseSogQnV0dGVyZmx5OjpjcmVhdGVVbmluaXRpYWxpemVkKFZNJiB2bSwg
SlNPYmplY3QqLCBzaXplX3QgcHJlQ2FwYWNpdHksIHNpemVfdCBwcm9wZXJ0eUNhcGFjaXR5LCBi
b29sIGhhc0luZGV4aW5nSGVhZGVyLCBzaXplX3QgaW5kZXhpbmdQYXlsb2FkU2l6ZUluQnl0ZXMp
CiB7CiAgICAgc2l6ZV90IHNpemUgPSB0b3RhbFNpemUocHJlQ2FwYWNpdHksIHByb3BlcnR5Q2Fw
YWNpdHksIGhhc0luZGV4aW5nSGVhZGVyLCBpbmRleGluZ1BheWxvYWRTaXplSW5CeXRlcyk7Ci0g
ICAgdm9pZCogYmFzZSA9IHZtLmpzVmFsdWVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlLmFsbG9jYXRl
Tm9uVmlydHVhbCh2bSwgc2l6ZSwgbnVsbHB0ciwgQWxsb2NhdGlvbkZhaWx1cmVNb2RlOjpBc3Nl
cnQpOworICAgIHZvaWQqIGJhc2UgPSB2bS5qc1ZhbHVlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZSgp
LmFsbG9jYXRlTm9uVmlydHVhbCh2bSwgc2l6ZSwgbnVsbHB0ciwgQWxsb2NhdGlvbkZhaWx1cmVN
b2RlOjpBc3NlcnQpOwogICAgIEJ1dHRlcmZseSogcmVzdWx0ID0gZnJvbUJhc2UoYmFzZSwgcHJl
Q2FwYWNpdHksIHByb3BlcnR5Q2FwYWNpdHkpOwogCiAgICAgcmV0dXJuIHJlc3VsdDsKQEAgLTk4
LDcgKzk4LDcgQEAgaW5saW5lIEJ1dHRlcmZseSogQnV0dGVyZmx5OjpjcmVhdGVVbmluaQogaW5s
aW5lIEJ1dHRlcmZseSogQnV0dGVyZmx5Ojp0cnlDcmVhdGUoVk0mIHZtLCBKU09iamVjdCosIHNp
emVfdCBwcmVDYXBhY2l0eSwgc2l6ZV90IHByb3BlcnR5Q2FwYWNpdHksIGJvb2wgaGFzSW5kZXhp
bmdIZWFkZXIsIGNvbnN0IEluZGV4aW5nSGVhZGVyJiBpbmRleGluZ0hlYWRlciwgc2l6ZV90IGlu
ZGV4aW5nUGF5bG9hZFNpemVJbkJ5dGVzKQogewogICAgIHNpemVfdCBzaXplID0gdG90YWxTaXpl
KHByZUNhcGFjaXR5LCBwcm9wZXJ0eUNhcGFjaXR5LCBoYXNJbmRleGluZ0hlYWRlciwgaW5kZXhp
bmdQYXlsb2FkU2l6ZUluQnl0ZXMpOwotICAgIHZvaWQqIGJhc2UgPSB2bS5qc1ZhbHVlR2lnYWNh
Z2VBdXhpbGlhcnlTcGFjZS5hbGxvY2F0ZU5vblZpcnR1YWwodm0sIHNpemUsIG51bGxwdHIsIEFs
bG9jYXRpb25GYWlsdXJlTW9kZTo6UmV0dXJuTnVsbCk7CisgICAgdm9pZCogYmFzZSA9IHZtLmpz
VmFsdWVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlKCkuYWxsb2NhdGVOb25WaXJ0dWFsKHZtLCBzaXpl
LCBudWxscHRyLCBBbGxvY2F0aW9uRmFpbHVyZU1vZGU6OlJldHVybk51bGwpOwogICAgIGlmICgh
YmFzZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgQnV0dGVyZmx5KiByZXN1bHQgPSBm
cm9tQmFzZShiYXNlLCBwcmVDYXBhY2l0eSwgcHJvcGVydHlDYXBhY2l0eSk7CkBAIC0xNzQsNyAr
MTc0LDcgQEAgaW5saW5lIEJ1dHRlcmZseSogQnV0dGVyZmx5Ojpncm93QXJyYXlSaQogICAgIHZv
aWQqIHRoZUJhc2UgPSBiYXNlKDAsIHByb3BlcnR5Q2FwYWNpdHkpOwogICAgIHNpemVfdCBvbGRT
aXplID0gdG90YWxTaXplKDAsIHByb3BlcnR5Q2FwYWNpdHksIGhhZEluZGV4aW5nSGVhZGVyLCBv
bGRJbmRleGluZ1BheWxvYWRTaXplSW5CeXRlcyk7CiAgICAgc2l6ZV90IG5ld1NpemUgPSB0b3Rh
bFNpemUoMCwgcHJvcGVydHlDYXBhY2l0eSwgdHJ1ZSwgbmV3SW5kZXhpbmdQYXlsb2FkU2l6ZUlu
Qnl0ZXMpOwotICAgIHZvaWQqIG5ld0Jhc2UgPSB2bS5qc1ZhbHVlR2lnYWNhZ2VBdXhpbGlhcnlT
cGFjZS5hbGxvY2F0ZU5vblZpcnR1YWwodm0sIG5ld1NpemUsIG51bGxwdHIsIEFsbG9jYXRpb25G
YWlsdXJlTW9kZTo6UmV0dXJuTnVsbCk7CisgICAgdm9pZCogbmV3QmFzZSA9IHZtLmpzVmFsdWVH
aWdhY2FnZUF1eGlsaWFyeVNwYWNlKCkuYWxsb2NhdGVOb25WaXJ0dWFsKHZtLCBuZXdTaXplLCBu
dWxscHRyLCBBbGxvY2F0aW9uRmFpbHVyZU1vZGU6OlJldHVybk51bGwpOwogICAgIGlmICghbmV3
QmFzZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgLy8gRklYTUU6IFRoaXMgcHJvYmFi
bHkgc2hvdWxkbid0IGJlIGEgbWVtY3B5LgpAQCAtMjExLDEzICsyMTEsMTMgQEAgaW5saW5lIEJ1
dHRlcmZseSogQnV0dGVyZmx5OjpyZWFsbG9jQXJyYQogICAgIC8vIE9iamVjdHMgd2l0aCBubyBw
cm9wZXJ0aWVzIGFyZSBjb21tb24gaW4gYXJyYXlzLCBhbmQgd2UgYXJlIGZvY3VzaW5nIG9uIHZl
cnkgbGFyZ2UgYXJyYXkgY3JhZnRlZCBieSByZXBlYXRpbmcgQXJyYXkjcHVzaCwgc28uLi4gdGhh
dCdzIGZpbmUhCiAgICAgYm9vbCBjYW5SZWFsbG9jID0gIXByb3BlcnR5Q2FwYWNpdHkgJiYgIXZt
LmhlYXAubXV0YXRvclNob3VsZEJlRmVuY2VkKCkgJiYgYml0d2lzZV9jYXN0PEhlYXBDZWxsKj4o
dGhlQmFzZSktPmlzUHJlY2lzZUFsbG9jYXRpb24oKTsKICAgICBpZiAoY2FuUmVhbGxvYykgewot
ICAgICAgICB2b2lkKiBuZXdCYXNlID0gdm0uanNWYWx1ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2Uu
cmVhbGxvY2F0ZVByZWNpc2VBbGxvY2F0aW9uTm9uVmlydHVhbCh2bSwgYml0d2lzZV9jYXN0PEhl
YXBDZWxsKj4odGhlQmFzZSksIG5ld1NpemUsICZkZWZlcnJhbENvbnRleHQsIEFsbG9jYXRpb25G
YWlsdXJlTW9kZTo6UmV0dXJuTnVsbCk7CisgICAgICAgIHZvaWQqIG5ld0Jhc2UgPSB2bS5qc1Zh
bHVlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZSgpLnJlYWxsb2NhdGVQcmVjaXNlQWxsb2NhdGlvbk5v
blZpcnR1YWwodm0sIGJpdHdpc2VfY2FzdDxIZWFwQ2VsbCo+KHRoZUJhc2UpLCBuZXdTaXplLCAm
ZGVmZXJyYWxDb250ZXh0LCBBbGxvY2F0aW9uRmFpbHVyZU1vZGU6OlJldHVybk51bGwpOwogICAg
ICAgICBpZiAoIW5ld0Jhc2UpCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAg
cmV0dXJuIGZyb21CYXNlKG5ld0Jhc2UsIDAsIHByb3BlcnR5Q2FwYWNpdHkpOwogICAgIH0KIAot
ICAgIHZvaWQqIG5ld0Jhc2UgPSB2bS5qc1ZhbHVlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZS5hbGxv
Y2F0ZU5vblZpcnR1YWwodm0sIG5ld1NpemUsICZkZWZlcnJhbENvbnRleHQsIEFsbG9jYXRpb25G
YWlsdXJlTW9kZTo6UmV0dXJuTnVsbCk7CisgICAgdm9pZCogbmV3QmFzZSA9IHZtLmpzVmFsdWVH
aWdhY2FnZUF1eGlsaWFyeVNwYWNlKCkuYWxsb2NhdGVOb25WaXJ0dWFsKHZtLCBuZXdTaXplLCAm
ZGVmZXJyYWxDb250ZXh0LCBBbGxvY2F0aW9uRmFpbHVyZU1vZGU6OlJldHVybk51bGwpOwogICAg
IGlmICghbmV3QmFzZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgZ2NTYWZlTWVtY3B5
KHN0YXRpY19jYXN0PEpTVmFsdWUqPihuZXdCYXNlKSwgc3RhdGljX2Nhc3Q8SlNWYWx1ZSo+KHRo
ZUJhc2UpLCBvbGRTaXplKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nh
Y2hlZFR5cGVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Q2FjaGVkVHlwZXMuaAkocmV2aXNpb24gMjg2MDQzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQ2FjaGVkVHlwZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTgtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTgtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM5LDYgKzM5LDcgQEAg
Y2xhc3MgQ2FjaGVkQnl0ZWNvZGU7CiBjbGFzcyBTb3VyY2VDb2RlS2V5OwogY2xhc3MgVW5saW5r
ZWRDb2RlQmxvY2s7CiBjbGFzcyBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrOworY2xhc3MgVW5s
aW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU7CiAKIGVudW0gY2xhc3MgU291cmNlQ29kZVR5cGU7CiAK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nsb25lZEFyZ3VtZW50cy5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nsb25lZEFyZ3VtZW50
cy5oCShyZXZpc2lvbiAyODYwNDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9D
bG9uZWRBcmd1bWVudHMuaAkod29ya2luZyBjb3B5KQpAQCAtNDYsNyArNDYsNyBAQCBwdWJsaWM6
CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewogICAg
ICAgICBzdGF0aWNfYXNzZXJ0KCFDZWxsVHlwZTo6bmVlZHNEZXN0cnVjdGlvbiwgIiIpOwotICAg
ICAgICByZXR1cm4gJnZtLmNsb25lZEFyZ3VtZW50c1NwYWNlOworICAgICAgICByZXR1cm4gJnZt
LmNsb25lZEFyZ3VtZW50c1NwYWNlKCk7CiAgICAgfQogICAgIAogcHJpdmF0ZToKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbnNvbGVPYmplY3QuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db25zb2xlT2JqZWN0LmgJKHJldmlzaW9u
IDI4NjA0MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbnNvbGVPYmplY3Qu
aAkod29ya2luZyBjb3B5KQpAQCAtMzcsNyArMzcsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIElz
b1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNT
RVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShDb25zb2xlT2JqZWN0LCBCYXNlKTsKLSAgICAgICAg
cmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2Jq
ZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgQ29uc29sZU9iamVjdCogY3JlYXRlKFZN
JiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUp
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DdXN0b21HZXR0ZXJTZXR0ZXIu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DdXN0b21HZXR0
ZXJTZXR0ZXIuaAkocmV2aXNpb24gMjg2MDQzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQ3VzdG9tR2V0dGVyU2V0dGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTQzLDcgKzQzLDcg
QEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlLCBTdWJzcGFjZUFjY2Vz
cz4KICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7Ci0g
ICAgICAgIHJldHVybiAmdm0uY3VzdG9tR2V0dGVyU2V0dGVyU3BhY2U7CisgICAgICAgIHJldHVy
biAmdm0uY3VzdG9tR2V0dGVyU2V0dGVyU3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgQ3Vz
dG9tR2V0dGVyU2V0dGVyKiBjcmVhdGUoVk0mIHZtLCBDdXN0b21HZXR0ZXIgY3VzdG9tR2V0dGVy
LCBDdXN0b21TZXR0ZXIgY3VzdG9tU2V0dGVyKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvRE9NQXR0cmlidXRlR2V0dGVyU2V0dGVyLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRE9NQXR0cmlidXRlR2V0dGVyU2V0dGVyLmgJKHJldmlz
aW9uIDI4NjA0MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RPTUF0dHJpYnV0
ZUdldHRlclNldHRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC00Myw3ICs0Myw3IEBAIHB1YmxpYzoK
ICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vic3BhY2VBY2Nlc3M+CiAgICAgc3Rh
dGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewotICAgICAgICByZXR1
cm4gJnZtLmRvbUF0dHJpYnV0ZUdldHRlclNldHRlclNwYWNlOworICAgICAgICByZXR1cm4gJnZt
LmRvbUF0dHJpYnV0ZUdldHRlclNldHRlclNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIERP
TUF0dHJpYnV0ZUdldHRlclNldHRlciogY3JlYXRlKFZNJiB2bSwgQ3VzdG9tR2V0dGVyIGN1c3Rv
bUdldHRlciwgQ3VzdG9tU2V0dGVyIGN1c3RvbVNldHRlciwgRE9NQXR0cmlidXRlQW5ub3RhdGlv
biBkb21BdHRyaWJ1dGUpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRl
SW5zdGFuY2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9E
YXRlSW5zdGFuY2UuaAkocmV2aXNpb24gMjg2MDQzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvRGF0ZUluc3RhbmNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM3LDcgKzM3LDcgQEAg
cHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlLCBTdWJzcGFjZUFjY2VzcyBt
b2RlPgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsK
LSAgICAgICAgcmV0dXJuICZ2bS5kYXRlSW5zdGFuY2VTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2
bS5kYXRlSW5zdGFuY2VTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBEYXRlSW5zdGFuY2Uq
IGNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBkb3VibGUgZGF0ZSkKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVQcm90b3R5cGUuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlUHJvdG90eXBlLmgJKHJldmlz
aW9uIDI4NjA0MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVQcm90b3R5
cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzUsNyArMzUsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGlj
IElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNf
QVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShEYXRlUHJvdG90eXBlLCBCYXNlKTsKLSAgICAg
ICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWlu
T2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgRGF0ZVByb3RvdHlwZSogY3JlYXRl
KFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EaXJlY3RBcmd1bWVudHMu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EaXJlY3RBcmd1
bWVudHMuaAkocmV2aXNpb24gMjg2MDQzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvRGlyZWN0QXJndW1lbnRzLmgJKHdvcmtpbmcgY29weSkKQEAgLTUwLDcgKzUwLDcgQEAgcHVi
bGljOgogICAgIHN0YXRpYyBDb21wbGV0ZVN1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAg
ICAgewogICAgICAgICBzdGF0aWNfYXNzZXJ0KCFDZWxsVHlwZTo6bmVlZHNEZXN0cnVjdGlvbiwg
IiIpOwotICAgICAgICByZXR1cm4gJnZtLnZhcmlhYmxlU2l6ZWRDZWxsU3BhY2U7CisgICAgICAg
IHJldHVybiAmdm0udmFyaWFibGVTaXplZENlbGxTcGFjZSgpOwogICAgIH0KIAogICAgIC8vIENy
ZWF0ZXMgYW4gYXJndW1lbnRzIG9iamVjdCBidXQgbGVhdmVzIGl0IHVuaW5pdGlhbGl6ZWQuIFRo
aXMgaXMgZGFuZ2Vyb3VzIGlmIHdlIEdDIHJpZ2h0CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9FcnJvclByb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0Vycm9yUHJvdG90eXBlLmgJKHJldmlzaW9uIDI4NjA0MykKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yUHJvdG90eXBlLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTQ1LDcgKzQ1LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vi
c3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BB
Q0VfU0hBUkFCTEUoRXJyb3JQcm90b3R5cGVCYXNlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2
bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2Uo
KTsKICAgICB9CiAKICAgICBERUNMQVJFX0lORk87CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9FeGNlcHRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9FeGNlcHRpb24uaAkocmV2aXNpb24gMjg2MDQzKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTQwLDcgKzQw
LDcgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlLCBTdWJzcGFjZUFj
Y2VzcyBtb2RlPgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQog
ICAgIHsKLSAgICAgICAgcmV0dXJuICZ2bS5leGNlcHRpb25TcGFjZTsKKyAgICAgICAgcmV0dXJu
ICZ2bS5leGNlcHRpb25TcGFjZSgpOwogICAgIH0KIAogICAgIGVudW0gU3RhY2tDYXB0dXJlQWN0
aW9uIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ZpbmFsaXphdGlvblJl
Z2lzdHJ5UHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvRmluYWxpemF0aW9uUmVnaXN0cnlQcm90b3R5cGUuaAkocmV2aXNpb24gMjg2MDQzKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRmluYWxpemF0aW9uUmVnaXN0cnlQcm90
b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzcsNyArMzcsNyBAQCBwdWJsaWM6CiAgICAgc3Rh
dGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFU
SUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShGaW5hbGl6YXRpb25SZWdpc3RyeVByb3Rv
dHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAg
ICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIEZp
bmFsaXphdGlvblJlZ2lzdHJ5UHJvdG90eXBlKiBjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uRXhlY3V0YWJsZS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uRXhlY3V0YWJsZS5oCShyZXZpc2lv
biAyODYwNDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkV4ZWN1
dGFibGUuaAkod29ya2luZyBjb3B5KQpAQCAtNDYsNyArNDYsNyBAQCBwdWJsaWM6CiAgICAgdGVt
cGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNzPgogICAgIHN0YXRpYyBJc29T
dWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKLSAgICAgICAgcmV0dXJuICZ2bS5m
dW5jdGlvbkV4ZWN1dGFibGVTcGFjZS5zcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5mdW5jdGlv
bkV4ZWN1dGFibGVTcGFjZSgpLnNwYWNlOwogICAgIH0KIAogICAgIHN0YXRpYyBGdW5jdGlvbkV4
ZWN1dGFibGUqIGNyZWF0ZShWTSYgdm0sIFNjcmlwdEV4ZWN1dGFibGUqIHRvcExldmVsRXhlY3V0
YWJsZSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJs
ZSogdW5saW5rZWRFeGVjdXRhYmxlLCBJbnRyaW5zaWMgaW50cmluc2ljLCBib29sIGlzSW5zaWRl
T3JkaW5hcnlGdW5jdGlvbikKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dl
bmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuaAkocmV2aXNpb24gMjg2
MDQzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yRnVuY3Rpb25Q
cm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtNDAsNyArNDAsNyBAQCBwdWJsaWM6CiAgICAg
c3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewogICAgICAgICBT
VEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShHZW5lcmF0b3JGdW5jdGlvblByb3Rv
dHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAg
ICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIEdl
bmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlKiBjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvclByb3Rv
dHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVy
YXRvclByb3RvdHlwZS5oCShyZXZpc2lvbiAyODYwNDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9HZW5lcmF0b3JQcm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtNDEsNyAr
NDEsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYg
dm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShH
ZW5lcmF0b3JQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0
U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAog
ICAgIHN0YXRpYyBHZW5lcmF0b3JQcm90b3R5cGUqIGNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2Jq
ZWN0KiwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9HZXR0ZXJTZXR0ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9HZXR0ZXJTZXR0ZXIuaAkocmV2aXNpb24gMjg2MDQzKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvR2V0dGVyU2V0dGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTU5
LDcgKzU5LDcgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlLCBTdWJz
cGFjZUFjY2Vzcz4KICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkK
ICAgICB7Ci0gICAgICAgIHJldHVybiAmdm0uZ2V0dGVyU2V0dGVyU3BhY2U7CisgICAgICAgIHJl
dHVybiAmdm0uZ2V0dGVyU2V0dGVyU3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgR2V0dGVy
U2V0dGVyKiBjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU09i
amVjdCogZ2V0dGVyLCBKU09iamVjdCogc2V0dGVyKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSGFzaE1hcEltcGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9IYXNoTWFwSW1wbC5oCShyZXZpc2lvbiAyODYwNDMpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9IYXNoTWFwSW1wbC5oCSh3b3JraW5nIGNvcHkpCkBAIC0y
MTMsNyArMjEzLDcgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgYXV0byBzY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOwogICAgICAgICBzaXplX3QgYWxsb2NhdGlvblNpemUgPSBIYXNo
TWFwQnVmZmVyOjphbGxvY2F0aW9uU2l6ZShjYXBhY2l0eSk7Ci0gICAgICAgIHZvaWQqIGRhdGEg
PSB2bS5qc1ZhbHVlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZS5hbGxvY2F0ZU5vblZpcnR1YWwodm0s
IGFsbG9jYXRpb25TaXplLCBudWxscHRyLCBBbGxvY2F0aW9uRmFpbHVyZU1vZGU6OlJldHVybk51
bGwpOworICAgICAgICB2b2lkKiBkYXRhID0gdm0uanNWYWx1ZUdpZ2FjYWdlQXV4aWxpYXJ5U3Bh
Y2UoKS5hbGxvY2F0ZU5vblZpcnR1YWwodm0sIGFsbG9jYXRpb25TaXplLCBudWxscHRyLCBBbGxv
Y2F0aW9uRmFpbHVyZU1vZGU6OlJldHVybk51bGwpOwogICAgICAgICBpZiAoIWRhdGEpIHsKICAg
ICAgICAgICAgIHRocm93T3V0T2ZNZW1vcnlFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlKTsKICAg
ICAgICAgICAgIHJldHVybiBudWxscHRyOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSW50ZXJuYWxGdW5jdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0ludGVybmFsRnVuY3Rpb24uaAkocmV2aXNpb24gMjg2MDQzKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50ZXJuYWxGdW5jdGlvbi5oCSh3b3JraW5nIGNv
cHkpCkBAIC00MSw3ICs0MSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1
YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAgIHN0YXRpY19hc3NlcnQoc2l6ZW9mKENl
bGxUeXBlKSA9PSBzaXplb2YoSW50ZXJuYWxGdW5jdGlvbiksICJJbnRlcm5hbEZ1bmN0aW9uIHN1
YmNsYXNzZXMgdGhhdCBhZGQgZmllbGRzIG5lZWQgdG8gb3ZlcnJpZGUgc3Vic3BhY2VGb3I8Pigp
Iik7Ci0gICAgICAgIHJldHVybiAmdm0uaW50ZXJuYWxGdW5jdGlvblNwYWNlOworICAgICAgICBy
ZXR1cm4gJnZtLmludGVybmFsRnVuY3Rpb25TcGFjZSgpOwogICAgIH0KIAogICAgIERFQ0xBUkVf
RVhQT1JUX0lORk87CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsQ29s
bGF0b3JQcm90b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9JbnRsQ29sbGF0b3JQcm90b3R5cGUuaAkocmV2aXNpb24gMjg2MDQzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bENvbGxhdG9yUHJvdG90eXBlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTEsNiArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDE1IEFuZHkgVmFu
V2Fnb25lciAoYW5keUB2YW53YWdvbmVyLmZhbWlseSkKLSAqIENvcHlyaWdodCAoQykgMjAxOSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTktMjAy
MSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKQEAgLTM5LDcgKzM5LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJc29TdWJzcGFj
ZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09f
U1VCU1BBQ0VfU0hBUkFCTEUoSW50bENvbGxhdG9yUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAg
cmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2Jq
ZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgSW50bENvbGxhdG9yUHJvdG90eXBlKiBj
cmVhdGUoVk0mLCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSopOwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0
UHJvdG90eXBlLmgJKHJldmlzaW9uIDI4NjA0MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0ludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDYgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxNSBBbmR5IFZhbldhZ29uZXIgKGFu
ZHlAdmFud2Fnb25lci5mYW1pbHkpCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE5LTIwMjEgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC0zOSw3ICszOSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNl
Rm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NI
QVJBQkxFKEludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVy
biAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNw
YWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIEludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZSog
Y3JlYXRlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqKTsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEaXNwbGF5TmFtZXNQcm90b3R5cGUuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGlzcGxheU5hbWVzUHJv
dG90eXBlLmgJKHJldmlzaW9uIDI4NjA0MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0ludGxEaXNwbGF5TmFtZXNQcm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsx
LDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDIwLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zOCw3ICszOCw3
IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkK
ICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEludGxE
aXNwbGF5TmFtZXNQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2Jq
ZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0K
IAogICAgIHN0YXRpYyBJbnRsRGlzcGxheU5hbWVzUHJvdG90eXBlKiBjcmVhdGUoVk0mLCBTdHJ1
Y3R1cmUqKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxMaXN0Rm9y
bWF0UHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSW50bExpc3RGb3JtYXRQcm90b3R5cGUuaAkocmV2aXNpb24gMjg2MDQzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bExpc3RGb3JtYXRQcm90b3R5cGUuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDIwLTIwMjEgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCkBAIC0zOCw3ICszOCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1
YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQ
QUNFX1NIQVJBQkxFKEludGxMaXN0Rm9ybWF0UHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0
dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0
U3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgSW50bExpc3RGb3JtYXRQcm90b3R5cGUqIGNy
ZWF0ZShWTSYsIFN0cnVjdHVyZSopOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSW50bExvY2FsZVByb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0ludGxMb2NhbGVQcm90b3R5cGUuaAkocmV2aXNpb24gMjg2MDQzKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bExvY2FsZVByb3RvdHlwZS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAyMCBTb255
IEludGVyYWN0aXZlIEVudGVydGFpbm1lbnQgSW5jLgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwpAQCAtMzgsNyArMzksNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBz
dWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJT
UEFDRV9TSEFSQUJMRShJbnRsTG9jYWxlUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJu
ICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3Bh
Y2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgSW50bExvY2FsZVByb3RvdHlwZSogY3JlYXRlKFZN
JiwgU3RydWN0dXJlKik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRs
TnVtYmVyRm9ybWF0UHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdFByb3RvdHlwZS5oCShyZXZpc2lvbiAyODYwNDMp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0UHJvdG90
eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChD
KSAyMDE1IEFuZHkgVmFuV2Fnb25lciAoYW5keUB2YW53YWdvbmVyLmZhbWlseSkKLSAqIENvcHly
aWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMTktMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM5LDcgKzM5LDcgQEAgcHVibGljOgogICAgIHN0
YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAgICAgU1RB
VElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSW50bE51bWJlckZvcm1hdFByb3RvdHlw
ZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAg
cmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIEludGxO
dW1iZXJGb3JtYXRQcm90b3R5cGUqIGNyZWF0ZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0
dXJlKik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsT2JqZWN0LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE9iamVjdC5o
CShyZXZpc2lvbiAyODYwNDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRs
T2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw2IEBACiAvKgogICogQ29weXJpZ2h0
IChDKSAyMDE1IEFuZHkgVmFuV2Fnb25lciAoYW5keUB2YW53YWdvbmVyLmZhbWlseSkKLSAqIENv
cHlyaWdodCAoQykgMjAxOS0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAxOS0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqIENvcHlyaWdodCAoQykgMjAyMCBTb255IEludGVyYWN0aXZlIEVudGVydGFpbm1lbnQgSW5j
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dApAQCAtNzYsNyArNzYsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGlj
IElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNf
QVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShJbnRsT2JqZWN0LCBCYXNlKTsKLSAgICAgICAg
cmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2Jq
ZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgSW50bE9iamVjdCogY3JlYXRlKFZNJiwg
SlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0ludGxQbHVyYWxSdWxlc1Byb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxQbHVyYWxSdWxlc1Byb3RvdHlwZS5oCShyZXZp
c2lvbiAyODYwNDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsUGx1cmFs
UnVsZXNQcm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiBD
b3B5cmlnaHQgKEMpIDIwMTggQW5keSBWYW5XYWdvbmVyIChhbmR5QHZhbndhZ29uZXIuZmFtaWx5
KQotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAxOS0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzksNyArMzksNyBAQCBwdWJs
aWM6CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewog
ICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShJbnRsUGx1cmFsUnVs
ZXNQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7
CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIHN0
YXRpYyBJbnRsUGx1cmFsUnVsZXNQcm90b3R5cGUqIGNyZWF0ZShWTSYsIEpTR2xvYmFsT2JqZWN0
KiwgU3RydWN0dXJlKik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRs
UmVsYXRpdmVUaW1lRm9ybWF0UHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSW50bFJlbGF0aXZlVGltZUZvcm1hdFByb3RvdHlwZS5oCShyZXZp
c2lvbiAyODYwNDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsUmVsYXRp
dmVUaW1lRm9ybWF0UHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw2IEBACiAv
KgogICogQ29weXJpZ2h0IChDKSAyMDIwIFNvbnkgSW50ZXJhY3RpdmUgRW50ZXJ0YWlubWVudCBJ
bmMuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zOCw3ICszOSw3IEBAIHB1Ymxp
YzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAg
ICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEludGxSZWxhdGl2ZVRp
bWVGb3JtYXRQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0
U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAog
ICAgIHN0YXRpYyBJbnRsUmVsYXRpdmVUaW1lRm9ybWF0UHJvdG90eXBlKiBjcmVhdGUoVk0mLCBT
dHJ1Y3R1cmUqKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxTZWdt
ZW50SXRlcmF0b3JQcm90b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9JbnRsU2VnbWVudEl0ZXJhdG9yUHJvdG90eXBlLmgJKHJldmlzaW9uIDI4NjA0
MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxTZWdtZW50SXRlcmF0b3JQ
cm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDIwLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zOCw3ICszOCw3IEBAIHB1YmxpYzoKICAgICBzdGF0
aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJ
Q19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEludGxTZWdtZW50SXRlcmF0b3JQcm90b3R5
cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAg
IHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBJbnRs
U2VnbWVudEl0ZXJhdG9yUHJvdG90eXBlKiBjcmVhdGUoVk0mLCBTdHJ1Y3R1cmUqKTsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxTZWdtZW50ZXJQcm90b3R5cGUuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsU2VnbWVudGVy
UHJvdG90eXBlLmgJKHJldmlzaW9uIDI4NjA0MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0ludGxTZWdtZW50ZXJQcm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsx
LDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDIwLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zOCw3ICszOCw3
IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkK
ICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEludGxT
ZWdtZW50ZXJQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0
U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAog
ICAgIHN0YXRpYyBJbnRsU2VnbWVudGVyUHJvdG90eXBlKiBjcmVhdGUoVk0mLCBTdHJ1Y3R1cmUq
KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxTZWdtZW50c1Byb3Rv
dHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxT
ZWdtZW50c1Byb3RvdHlwZS5oCShyZXZpc2lvbiAyODYwNDMpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9JbnRsU2VnbWVudHNQcm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAt
MSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDIwLTIwMjEgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zOCw3
ICszOCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZN
JiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxF
KEludGxTZWdtZW50c1Byb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5P
YmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAg
fQogCiAgICAgc3RhdGljIEludGxTZWdtZW50c1Byb3RvdHlwZSogY3JlYXRlKFZNJiwgSlNHbG9i
YWxPYmplY3QqLCBTdHJ1Y3R1cmUqKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0l0ZXJhdG9yUHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSXRlcmF0b3JQcm90b3R5cGUuaAkocmV2aXNpb24gMjg2MDQzKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSXRlcmF0b3JQcm90b3R5cGUuaAkod29ya2luZyBj
b3B5KQpAQCAtMzksNyArMzksNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBz
dWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJT
UEFDRV9TSEFSQUJMRShJdGVyYXRvclByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAm
dm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNl
KCk7CiAgICAgfQogCiAgICAgc3RhdGljIEl0ZXJhdG9yUHJvdG90eXBlKiBjcmVhdGUoVk0mIHZt
LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuY3BwCShyZXZpc2lvbiAy
ODYwNDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNTYsNyArNTYsNyBAQCBKU0FycmF5KiBKU0FycmF5Ojp0cnlDcmVhdGVV
bmluaXRpYWxpemVkCiAgICAgICAgICAgICB8fCBoYXNDb250aWd1b3VzKGluZGV4aW5nVHlwZSkp
OwogCiAgICAgICAgIHVuc2lnbmVkIHZlY3Rvckxlbmd0aCA9IEJ1dHRlcmZseTo6b3B0aW1hbENv
bnRpZ3VvdXNWZWN0b3JMZW5ndGgoc3RydWN0dXJlLCBpbml0aWFsTGVuZ3RoKTsKLSAgICAgICAg
dm9pZCogdGVtcCA9IHZtLmpzVmFsdWVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlLmFsbG9jYXRlTm9u
VmlydHVhbCgKKyAgICAgICAgdm9pZCogdGVtcCA9IHZtLmpzVmFsdWVHaWdhY2FnZUF1eGlsaWFy
eVNwYWNlKCkuYWxsb2NhdGVOb25WaXJ0dWFsKAogICAgICAgICAgICAgdm0sCiAgICAgICAgICAg
ICBCdXR0ZXJmbHk6OnRvdGFsU2l6ZSgwLCBvdXRPZkxpbmVTdG9yYWdlLCB0cnVlLCB2ZWN0b3JM
ZW5ndGggKiBzaXplb2YoRW5jb2RlZEpTVmFsdWUpKSwKICAgICAgICAgICAgIGRlZmVycmFsQ29u
dGV4dCwgQWxsb2NhdGlvbkZhaWx1cmVNb2RlOjpSZXR1cm5OdWxsKTsKQEAgLTc4LDcgKzc4LDcg
QEAgSlNBcnJheSogSlNBcnJheTo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZAogICAgICAgICAgICAg
fHwgaW5kZXhpbmdUeXBlID09IEFycmF5V2l0aEFycmF5U3RvcmFnZSk7CiAgICAgICAgIHN0YXRp
YyBjb25zdGV4cHIgdW5zaWduZWQgaW5kZXhCaWFzID0gMDsKICAgICAgICAgdW5zaWduZWQgdmVj
dG9yTGVuZ3RoID0gQXJyYXlTdG9yYWdlOjpvcHRpbWFsVmVjdG9yTGVuZ3RoKGluZGV4Qmlhcywg
c3RydWN0dXJlLCBpbml0aWFsTGVuZ3RoKTsKLSAgICAgICAgdm9pZCogdGVtcCA9IHZtLmpzVmFs
dWVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlLmFsbG9jYXRlTm9uVmlydHVhbCgKKyAgICAgICAgdm9p
ZCogdGVtcCA9IHZtLmpzVmFsdWVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlKCkuYWxsb2NhdGVOb25W
aXJ0dWFsKAogICAgICAgICAgICAgdm0sCiAgICAgICAgICAgICBCdXR0ZXJmbHk6OnRvdGFsU2l6
ZShpbmRleEJpYXMsIG91dE9mTGluZVN0b3JhZ2UsIHRydWUsIEFycmF5U3RvcmFnZTo6c2l6ZUZv
cih2ZWN0b3JMZW5ndGgpKSwKICAgICAgICAgICAgIGRlZmVycmFsQ29udGV4dCwgQWxsb2NhdGlv
bkZhaWx1cmVNb2RlOjpSZXR1cm5OdWxsKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTQXJyYXkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0FycmF5LmgJKHJldmlzaW9uIDI4NjA0MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTQXJyYXkuaAkod29ya2luZyBjb3B5KQpAQCAtNTEsNyArNTEsNyBAQCBwdWJs
aWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNzPgogICAg
IHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKLSAgICAgICAg
cmV0dXJuICZ2bS5hcnJheVNwYWNlOworICAgICAgICByZXR1cm4gJnZtLmFycmF5U3BhY2UoKTsK
ICAgICB9CiAgICAgICAgIAogcHJvdGVjdGVkOgpAQCAtMjQ0LDcgKzI0NCw3IEBAIGlubGluZSBK
U0FycmF5KiBKU0FycmF5Ojp0cnlDcmVhdGUoVk0mIHYKICAgICAgICAgICAgIHJldHVybiBudWxs
cHRyOwogCiAgICAgICAgIHVuc2lnbmVkIHZlY3Rvckxlbmd0aCA9IEJ1dHRlcmZseTo6b3B0aW1h
bENvbnRpZ3VvdXNWZWN0b3JMZW5ndGgoc3RydWN0dXJlLCB2ZWN0b3JMZW5ndGhIaW50KTsKLSAg
ICAgICAgdm9pZCogdGVtcCA9IHZtLmpzVmFsdWVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlLmFsbG9j
YXRlTm9uVmlydHVhbCgKKyAgICAgICAgdm9pZCogdGVtcCA9IHZtLmpzVmFsdWVHaWdhY2FnZUF1
eGlsaWFyeVNwYWNlKCkuYWxsb2NhdGVOb25WaXJ0dWFsKAogICAgICAgICAgICAgdm0sCiAgICAg
ICAgICAgICBCdXR0ZXJmbHk6OnRvdGFsU2l6ZSgwLCBvdXRPZkxpbmVTdG9yYWdlLCB0cnVlLCB2
ZWN0b3JMZW5ndGggKiBzaXplb2YoRW5jb2RlZEpTVmFsdWUpKSwKICAgICAgICAgICAgIG51bGxw
dHIsIEFsbG9jYXRpb25GYWlsdXJlTW9kZTo6UmV0dXJuTnVsbCk7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyUHJvdG90eXBlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlclByb3RvdHlwZS5o
CShyZXZpc2lvbiAyODYwNDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Fy
cmF5QnVmZmVyUHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgot
ICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzcsNyArMzcsNyBAQCBw
dWJsaWM6CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAg
ewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU0FycmF5QnVm
ZmVyUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNl
OworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBz
dGF0aWMgSlNBcnJheUJ1ZmZlclByb3RvdHlwZSogY3JlYXRlKFZNJiwgSlNHbG9iYWxPYmplY3Qq
LCBTdHJ1Y3R1cmUqLCBBcnJheUJ1ZmZlclNoYXJpbmdNb2RlID0gQXJyYXlCdWZmZXJTaGFyaW5n
TW9kZTo6RGVmYXVsdCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Fy
cmF5QnVmZmVyVmlldy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNBcnJheUJ1ZmZlclZpZXcuY3BwCShyZXZpc2lvbiAyODYwNDMpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyVmlldy5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTY0LDcgKzY0LDcgQEAgSlNBcnJheUJ1ZmZlclZpZXc6OkNvbnN0cnVjdGlvbkNvbnRl
eHQ6OgogICAgICAgICAvLyBBdHRlbXB0IEdDIGFsbG9jYXRpb24uCiAgICAgICAgIHZvaWQqIHRl
bXA7CiAgICAgICAgIHNpemVfdCBzaXplID0gc2l6ZU9mKGxlbmd0aCwgZWxlbWVudFNpemUpOwot
ICAgICAgICB0ZW1wID0gdm0ucHJpbWl0aXZlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZS5hbGxvY2F0
ZU5vblZpcnR1YWwodm0sIHNpemUsIG51bGxwdHIsIEFsbG9jYXRpb25GYWlsdXJlTW9kZTo6UmV0
dXJuTnVsbCk7CisgICAgICAgIHRlbXAgPSB2bS5wcmltaXRpdmVHaWdhY2FnZUF1eGlsaWFyeVNw
YWNlKCkuYWxsb2NhdGVOb25WaXJ0dWFsKHZtLCBzaXplLCBudWxscHRyLCBBbGxvY2F0aW9uRmFp
bHVyZU1vZGU6OlJldHVybk51bGwpOwogICAgICAgICBpZiAoIXRlbXApCiAgICAgICAgICAgICBy
ZXR1cm47CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQmlnSW50LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JpZ0ludC5j
cHAJKHJldmlzaW9uIDI4NjA0MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
QmlnSW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE3LDcgKzExNyw3IEBAIGlubGluZSBKU0Jp
Z0ludCogSlNCaWdJbnQ6OmNyZWF0ZVdpdGhMZW4KICAgICB9CiAKICAgICBBU1NFUlQobGVuZ3Ro
IDw9IG1heExlbmd0aCk7Ci0gICAgdm9pZCogZGF0YSA9IHZtLnByaW1pdGl2ZUdpZ2FjYWdlQXV4
aWxpYXJ5U3BhY2UuYWxsb2NhdGVOb25WaXJ0dWFsKHZtLCBsZW5ndGggKiBzaXplb2YoRGlnaXQp
LCBudWxscHRyLCBBbGxvY2F0aW9uRmFpbHVyZU1vZGU6OlJldHVybk51bGwpOworICAgIHZvaWQq
IGRhdGEgPSB2bS5wcmltaXRpdmVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlKCkuYWxsb2NhdGVOb25W
aXJ0dWFsKHZtLCBsZW5ndGggKiBzaXplb2YoRGlnaXQpLCBudWxscHRyLCBBbGxvY2F0aW9uRmFp
bHVyZU1vZGU6OlJldHVybk51bGwpOwogICAgIGlmIChVTkxJS0VMWSghZGF0YSkpIHsKICAgICAg
ICAgaWYgKG51bGxPckdsb2JhbE9iamVjdEZvck9PTSkgewogICAgICAgICAgICAgYXV0byBzY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNCaWdJbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0JpZ0ludC5oCShyZXZpc2lvbiAyODYwNDMpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0JpZ0ludC5oCSh3b3JraW5nIGNvcHkpCkBAIC01Niw3ICs1Niw3IEBA
IHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vic3BhY2VBY2Nlc3M+
CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewotICAg
ICAgICByZXR1cm4gJnZtLmJpZ0ludFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLmJpZ0ludFNw
YWNlKCk7CiAgICAgfQogCiAgICAgZW51bSBjbGFzcyBJbml0aWFsaXphdGlvblR5cGUgeyBOb25l
LCBXaXRoWmVybyB9OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDYWxs
ZWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NhbGxl
ZS5oCShyZXZpc2lvbiAyODYwNDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0NhbGxlZS5oCSh3b3JraW5nIGNvcHkpCkBAIC01MCw3ICs1MCw3IEBAIHB1YmxpYzoKICAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vic3BhY2VBY2Nlc3M+CiAgICAgc3RhdGljIElz
b1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewotICAgICAgICByZXR1cm4gJnZt
LmNhbGxlZVNwYWNlOworICAgICAgICByZXR1cm4gJnZtLmNhbGxlZVNwYWNlKCk7CiAgICAgfQog
CiAgICAgc3RhdGljIEpTQ2FsbGVlKiBjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBKU1Njb3BlKiBzY29wZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTRGF0YVZpZXdQcm90b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0RhdGFWaWV3UHJvdG90eXBlLmgJKHJldmlzaW9uIDI4NjA0MykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0YVZpZXdQcm90b3R5cGUuaAko
d29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMt
MjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTMtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTM4LDcgKzM4LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJc29T
dWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VS
VF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNEYXRhVmlld1Byb3RvdHlwZSwgQmFzZSk7Ci0gICAg
ICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFp
bk9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIEpTRGF0YVZpZXdQcm90b3R5cGUq
IGNyZWF0ZShWTSYsIFN0cnVjdHVyZSopOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNGdW5jdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTRnVuY3Rpb24uaAkocmV2aXNpb24gMjg2MDQzKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC02Niw3ICs2Niw3
IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vic3BhY2VBY2Nl
c3M+CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewot
ICAgICAgICByZXR1cm4gJnZtLmZ1bmN0aW9uU3BhY2U7CisgICAgICAgIHJldHVybiAmdm0uZnVu
Y3Rpb25TcGFjZSgpOwogICAgIH0KICAgICAKICAgICB0eXBlZGVmIEpTQ2FsbGVlIEJhc2U7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmll
d1Byb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlLmgJKHJldmlzaW9uIDI4NjA0MykKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJv
dG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAxMy0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzgsNyArMzgsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGlj
IElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNf
QVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU0dlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3Rv
dHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAg
ICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIEpT
R2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlKiBjcmVhdGUoCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbExleGljYWxFbnZpcm9ubWVudC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsTGV4aWNhbEVudmly
b25tZW50LmgJKHJldmlzaW9uIDI4NjA0MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTR2xvYmFsTGV4aWNhbEVudmlyb25tZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTM4LDcg
KzM4LDcgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlLCBTdWJzcGFj
ZUFjY2VzcyBtb2RlPgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZt
KQogICAgIHsKLSAgICAgICAgcmV0dXJuICZ2bS5nbG9iYWxMZXhpY2FsRW52aXJvbm1lbnRTcGFj
ZTsKKyAgICAgICAgcmV0dXJuICZ2bS5nbG9iYWxMZXhpY2FsRW52aXJvbm1lbnRTcGFjZSgpOwog
ICAgIH0KIAogICAgIHN0YXRpYyBKU0dsb2JhbExleGljYWxFbnZpcm9ubWVudCogY3JlYXRlKFZN
JiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTU2NvcGUqIHBhcmVudFNjb3BlKQpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNJbW11dGFibGVCdXR0ZXJmbHkuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ltbXV0YWJsZUJ1dHRl
cmZseS5oCShyZXZpc2lvbiAyODYwNDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0ltbXV0YWJsZUJ1dHRlcmZseS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNTMsNyArMTUzLDcg
QEAgcHVibGljOgogICAgIHN0YXRpYyBDb21wbGV0ZVN1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYg
dm0pCiAgICAgewogICAgICAgICAvLyBXZSBhbGxvY2F0ZSBvdXQgb2YgdGhlIEpTVmFsdWUgZ2ln
YWNhZ2UgYXMgb3RoZXIgY29kZSBleHBlY3RzIGFsbCBidXR0ZXJmbGllcyB0byBsaXZlIHRoZXJl
LgotICAgICAgICByZXR1cm4gJnZtLmltbXV0YWJsZUJ1dHRlcmZseUpTVmFsdWVHaWdhY2FnZUF1
eGlsaWFyeVNwYWNlOworICAgICAgICByZXR1cm4gJnZtLmltbXV0YWJsZUJ1dHRlcmZseUpTVmFs
dWVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlKCk7CiAgICAgfQogCiAgICAgLy8gT25seSBjYWxsIHRo
aXMgaWYgeW91IGp1c3QgYWxsb2NhdGVkIHRoaXMgYnV0dGVyZmx5LgpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNMZXhpY2FsRW52aXJvbm1lbnQuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xleGljYWxFbnZpcm9ubWVudC5oCShy
ZXZpc2lvbiAyODYwNDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xleGlj
YWxFbnZpcm9ubWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC00NCw3ICs0NCw3IEBAIHB1YmxpYzoK
ICAgICBzdGF0aWMgQ29tcGxldGVTdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsK
ICAgICAgICAgc3RhdGljX2Fzc2VydCghQ2VsbFR5cGU6Om5lZWRzRGVzdHJ1Y3Rpb24sICIiKTsK
LSAgICAgICAgcmV0dXJuICZ2bS52YXJpYWJsZVNpemVkQ2VsbFNwYWNlOworICAgICAgICByZXR1
cm4gJnZtLnZhcmlhYmxlU2l6ZWRDZWxsU3BhY2UoKTsKICAgICB9CiAKICAgICB1c2luZyBCYXNl
ID0gSlNTeW1ib2xUYWJsZU9iamVjdDsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTTW9kdWxlTG9hZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNNb2R1bGVMb2FkZXIuaAkocmV2aXNpb24gMjg2MDQzKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVMb2FkZXIuaAkod29ya2luZyBjb3B5KQpAQCAt
NDQsNyArNDQsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZv
cihWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFS
QUJMRShKU01vZHVsZUxvYWRlciwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmpl
Y3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQog
CiAgICAgZW51bSBTdGF0dXMgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNPTk9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTT05PYmplY3QuaAkocmV2aXNpb24gMjg2MDQzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNPTk9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw3ICszOCw3IEBAIHB1
YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7
CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTT05PYmplY3Qs
IEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJl
dHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBKU09OT2Jq
ZWN0KiBjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0SW5saW5lcy5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0SW5saW5lcy5oCShyZXZpc2lvbiAy
ODYwNDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdElubGluZXMu
aAkod29ya2luZyBjb3B5KQpAQCAtNDEsNyArNDEsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxs
VHlwZSwgU3Vic3BhY2VBY2NlCiBDb21wbGV0ZVN1YnNwYWNlKiBKU0ZpbmFsT2JqZWN0OjpzdWJz
cGFjZUZvcihWTSYgdm0pCiB7CiAgICAgc3RhdGljX2Fzc2VydCghQ2VsbFR5cGU6Om5lZWRzRGVz
dHJ1Y3Rpb24pOwotICAgIHJldHVybiAmdm0uY2VsbFNwYWNlOworICAgIHJldHVybiAmdm0uY2Vs
bFNwYWNlKCk7CiB9CiAKIC8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtY3JlYXRlbGlz
dGZyb21hcnJheWxpa2UKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJv
bWlzZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJv
bWlzZS5oCShyZXZpc2lvbiAyODYwNDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU1Byb21pc2UuaAkod29ya2luZyBjb3B5KQpAQCAtMzcsNyArMzcsNyBAQCBwdWJsaWM6CiAg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNzIG1vZGU+CiAgICAg
c3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewotICAgICAgICBy
ZXR1cm4gJnZtLnByb21pc2VTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wcm9taXNlU3BhY2Uo
KTsKICAgICB9CiAKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgSlNQcm9taXNlKiBjcmVh
dGUoVk0mLCBTdHJ1Y3R1cmUqKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTUHJvbWlzZVByb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTUHJvbWlzZVByb3RvdHlwZS5oCShyZXZpc2lvbiAyODYwNDMpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2VQcm90b3R5cGUuaAkod29ya2luZyBj
b3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxOSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAyMSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTM4LDcgKzM4LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSog
c3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VC
U1BBQ0VfU0hBUkFCTEUoSlNQcm9taXNlUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJu
ICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3Bh
Y2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgSlNQcm9taXNlUHJvdG90eXBlKiBjcmVhdGUoVk0m
LCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSopOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUVudW1lcmF0b3IuY3Bw
CShyZXZpc2lvbiAyODYwNDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1By
b3BlcnR5TmFtZUVudW1lcmF0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw3ICszOCw3IEBA
IEpTUHJvcGVydHlOYW1lRW51bWVyYXRvciogSlNQcm9wZXJ0eU5hbWUKICAgICB1bnNpZ25lZCBw
cm9wZXJ0eU5hbWVzQnVmZmVyU2l6ZUluQnl0ZXMgPSBDaGVja2VkPHVuc2lnbmVkPihwcm9wZXJ0
eU5hbWVzU2l6ZSkgKiBzaXplb2YoV3JpdGVCYXJyaWVyPEpTU3RyaW5nPik7CiAgICAgV3JpdGVC
YXJyaWVyPEpTU3RyaW5nPiogcHJvcGVydHlOYW1lc0J1ZmZlciA9IG51bGxwdHI7CiAgICAgaWYg
KHByb3BlcnR5TmFtZXNCdWZmZXJTaXplSW5CeXRlcykgewotICAgICAgICBwcm9wZXJ0eU5hbWVz
QnVmZmVyID0gc3RhdGljX2Nhc3Q8V3JpdGVCYXJyaWVyPEpTU3RyaW5nPio+KHZtLmpzVmFsdWVH
aWdhY2FnZUF1eGlsaWFyeVNwYWNlLmFsbG9jYXRlTm9uVmlydHVhbCh2bSwgcHJvcGVydHlOYW1l
c0J1ZmZlclNpemVJbkJ5dGVzLCBudWxscHRyLCBBbGxvY2F0aW9uRmFpbHVyZU1vZGU6OkFzc2Vy
dCkpOworICAgICAgICBwcm9wZXJ0eU5hbWVzQnVmZmVyID0gc3RhdGljX2Nhc3Q8V3JpdGVCYXJy
aWVyPEpTU3RyaW5nPio+KHZtLmpzVmFsdWVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlKCkuYWxsb2Nh
dGVOb25WaXJ0dWFsKHZtLCBwcm9wZXJ0eU5hbWVzQnVmZmVyU2l6ZUluQnl0ZXMsIG51bGxwdHIs
IEFsbG9jYXRpb25GYWlsdXJlTW9kZTo6QXNzZXJ0KSk7CiAgICAgICAgIGZvciAodW5zaWduZWQg
aSA9IDA7IGkgPCBwcm9wZXJ0eU5hbWVzU2l6ZTsgKytpKQogICAgICAgICAgICAgcHJvcGVydHlO
YW1lc0J1ZmZlcltpXS5jbGVhcigpOwogICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lRW51bWVyYXRvci5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lRW51bWVyYXRvci5oCShyZXZp
c2lvbiAyODYwNDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5
TmFtZUVudW1lcmF0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtNTEsNyArNTEsNyBAQCBwdWJsaWM6
CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNzIG1vZGU+CiAg
ICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewotICAgICAg
ICByZXR1cm4gJnZtLnByb3BlcnR5TmFtZUVudW1lcmF0b3JTcGFjZTsKKyAgICAgICAgcmV0dXJu
ICZ2bS5wcm9wZXJ0eU5hbWVFbnVtZXJhdG9yU3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMg
SlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yKiBjcmVhdGUoVk0mLCBTdHJ1Y3R1cmUqLCB1aW50MzJf
dCwgdWludDMyX3QsIFByb3BlcnR5TmFtZUFycmF5JiYpOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNQcm94eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTUHJveHkuaAkocmV2aXNpb24gMjg2MDQzKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw3ICszOCw3
IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkK
ICAgICB7CiAgICAgICAgIHN0YXRpY19hc3NlcnQoc2l6ZW9mKENlbGxUeXBlKSA9PSBzaXplb2Yo
SlNQcm94eSkpOwotICAgICAgICByZXR1cm4gJnZtLmpzUHJveHlTcGFjZTsKKyAgICAgICAgcmV0
dXJuICZ2bS5qc1Byb3h5U3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgSlNQcm94eSogY3Jl
YXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTT2JqZWN0KiB0YXJnZXQpCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmgJKHJldmlzaW9uIDI4NjA0
MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTExMSw3ICsxMTEsNyBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUs
IFN1YnNwYWNlQWNjZXNzPgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0m
IHZtKQogICAgIHsKLSAgICAgICAgcmV0dXJuICZ2bS5zdHJpbmdTcGFjZTsKKyAgICAgICAgcmV0
dXJuICZ2bS5zdHJpbmdTcGFjZSgpOwogICAgIH0KICAgICAKICAgICAvLyBXZSBlbXBsb3kgb3Zl
cmZsb3cgY2hlY2tzIGluIG1hbnkgcGxhY2VzIHdpdGggdGhlIGFzc3VtcHRpb24gdGhhdCBNYXhM
ZW5ndGgKQEAgLTI3MCw3ICsyNzAsNyBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUs
IFN1YnNwYWNlQWNjZXNzPgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0m
IHZtKQogICAgIHsKLSAgICAgICAgcmV0dXJuICZ2bS5yb3BlU3RyaW5nU3BhY2U7CisgICAgICAg
IHJldHVybiAmdm0ucm9wZVN0cmluZ1NwYWNlKCk7CiAgICAgfQogCiAgICAgLy8gV2UgdXNlIGxv
d2VyIDNiaXRzIG9mIGZpYmVyMCBmb3IgZmxhZ3MuIFRoZXNlIGJpdHMgYXJlIHVzYWJsZSBkdWUg
dG8gYWxpZ25tZW50LCBhbmQgaXQgaXMgT0sgZXZlbiBpbiAzMmJpdCBhcmNoaXRlY3R1cmUuCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGVkQXJyYXlWaWV3UHJvdG90
eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBl
ZEFycmF5Vmlld1Byb3RvdHlwZS5oCShyZXZpc2lvbiAyODYwNDMpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNS0yMDIxIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpA
QCAtMzcsNyArMzcsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFj
ZUZvcihWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9T
SEFSQUJMRShKU1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJu
ICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3Bh
Y2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgSlNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZSogY3Jl
YXRlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqKTsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL01hcEl0ZXJhdG9yUHJvdG90eXBlLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFwSXRlcmF0b3JQcm90b3R5cGUuaAkocmV2
aXNpb24gMjg2MDQzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFwSXRlcmF0
b3JQcm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzcsNyArMzcsNyBAQCBwdWJsaWM6CiAg
ICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewogICAgICAg
ICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShNYXBJdGVyYXRvclByb3RvdHlw
ZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAg
cmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIE1hcEl0
ZXJhdG9yUHJvdG90eXBlKiBjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL01hcFByb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL01hcFByb3RvdHlwZS5oCShyZXZpc2lvbiAyODYwNDMpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9NYXBQcm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzcs
NyArMzcsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihW
TSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJM
RShNYXBQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3Bh
Y2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAg
IHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1
cmVGbGFncyB8IEhhc1N0YXRpY1Byb3BlcnR5VGFibGU7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9NYXRoT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvTWF0aE9iamVjdC5oCShyZXZpc2lvbiAyODYwNDMpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXRoT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTMy
LDcgKzMyLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3Io
Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFC
TEUoTWF0aE9iamVjdCwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFj
ZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAg
c3RhdGljIE1hdGhPYmplY3QqIGNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvTmF0aXZlRXJyb3JQcm90b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9OYXRpdmVFcnJvclByb3RvdHlwZS5oCShyZXZpc2lvbiAyODYw
NDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OYXRpdmVFcnJvclByb3RvdHlw
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw3ICszNCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMg
SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19B
U1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKE5hdGl2ZUVycm9yUHJvdG90eXBlLCBCYXNlKTsK
LSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZt
LnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVh
dGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVl
IHByb3RvdHlwZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUV4
ZWN1dGFibGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9O
YXRpdmVFeGVjdXRhYmxlLmgJKHJldmlzaW9uIDI4NjA0MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL05hdGl2ZUV4ZWN1dGFibGUuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsx
LDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDktMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDktMjAyMSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQzLDcg
KzQzLDcgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlLCBTdWJzcGFj
ZUFjY2Vzcz4KICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAg
ICB7Ci0gICAgICAgIHJldHVybiAmdm0ubmF0aXZlRXhlY3V0YWJsZVNwYWNlOworICAgICAgICBy
ZXR1cm4gJnZtLm5hdGl2ZUV4ZWN1dGFibGVTcGFjZSgpOwogICAgIH0KIAogICAgIENvZGVCbG9j
a0hhc2ggaGFzaEZvcihDb2RlU3BlY2lhbGl6YXRpb25LaW5kKSBjb25zdDsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWJlck9iamVjdC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWJlck9iamVjdC5oCShyZXZpc2lvbiAyODYw
NDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdW1iZXJPYmplY3QuaAkod29y
a2luZyBjb3B5KQpAQCAtMzUsNyArMzUsNyBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5h
bWUsIFN1YnNwYWNlQWNjZXNzIG1vZGU+CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFj
ZUZvcihWTSYgdm0pCiAgICAgewotICAgICAgICByZXR1cm4gJnZtLm51bWJlck9iamVjdFNwYWNl
OworICAgICAgICByZXR1cm4gJnZtLm51bWJlck9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAg
c3RhdGljIE51bWJlck9iamVjdCogY3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUp
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RQcm90b3R5cGUuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RQcm90b3R5
cGUuaAkocmV2aXNpb24gMjg2MDQzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
T2JqZWN0UHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw2IEBACiAvKgogICog
IENvcHlyaWdodCAoQykgMTk5OS0yMDAwIEhhcnJpIFBvcnRlbiAocG9ydGVuQGtkZS5vcmcpCi0g
KiAgQ29weXJpZ2h0IChDKSAyMDA4LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogIENvcHlyaWdodCAoQykgMjAwOC0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk
aXN0cmlidXRlIGl0IGFuZC9vcgogICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhl
IEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKQEAgLTMzLDcgKzMzLDcgQEAgcHVibGljOgogICAg
IHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAgICAg
U1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoT2JqZWN0UHJvdG90eXBlLCBCYXNl
KTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4g
JnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgT2JqZWN0UHJvdG90
eXBlKiBjcmVhdGUoVk0mLCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSopOwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvZ3JhbUV4ZWN1dGFibGUuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9ncmFtRXhlY3V0YWJsZS5oCShy
ZXZpc2lvbiAyODYwNDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9ncmFt
RXhlY3V0YWJsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw2ICszMCw4IEBACiAKIG5hbWVzcGFj
ZSBKU0MgewogCitjbGFzcyBVbmxpbmtlZFByb2dyYW1Db2RlQmxvY2s7CisKIGNsYXNzIFByb2dy
YW1FeGVjdXRhYmxlIGZpbmFsIDogcHVibGljIEdsb2JhbEV4ZWN1dGFibGUgewogICAgIGZyaWVu
ZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiBwdWJsaWM6CkBAIC0zOSw3ICs0MSw3IEBA
IHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vic3BhY2VBY2Nlc3M+
CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewotICAg
ICAgICByZXR1cm4gJnZtLnByb2dyYW1FeGVjdXRhYmxlU3BhY2Uuc3BhY2U7CisgICAgICAgIHJl
dHVybiAmdm0ucHJvZ3JhbUV4ZWN1dGFibGVTcGFjZSgpLnNwYWNlOwogICAgIH0KIAogICAgIHN0
YXRpYyBQcm9ncmFtRXhlY3V0YWJsZSogY3JlYXRlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1Byb3BlcnR5VGFibGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Qcm9wZXJ0eVRhYmxlLmgJKHJldmlzaW9uIDI4NjA0MykKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5VGFibGUuaAkod29ya2luZyBjb3B5KQpA
QCAtMTI5LDcgKzEyOSw3IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlw
ZSwgU3Vic3BhY2VBY2Nlc3M+CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihW
TSYgdm0pCiAgICAgewotICAgICAgICByZXR1cm4gJnZtLnByb3BlcnR5VGFibGVTcGFjZTsKKyAg
ICAgICAgcmV0dXJuICZ2bS5wcm9wZXJ0eVRhYmxlU3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0
aWMgY29uc3RleHByIGJvb2wgbmVlZHNEZXN0cnVjdGlvbiA9IHRydWU7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWZsZWN0T2JqZWN0LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVmbGVjdE9iamVjdC5oCShyZXZpc2lvbiAyODYw
NDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWZsZWN0T2JqZWN0LmgJKHdv
cmtpbmcgY29weSkKQEAgLTM4LDcgKzM4LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJc29TdWJz
cGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9J
U09fU1VCU1BBQ0VfU0hBUkFCTEUoUmVmbGVjdE9iamVjdCwgQmFzZSk7Ci0gICAgICAgIHJldHVy
biAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNw
YWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIFJlZmxlY3RPYmplY3QqIGNyZWF0ZShWTSYgdm0s
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlKQpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwLmgJKHJldmlzaW9uIDI4NjA0MykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cC5oCSh3b3JraW5nIGNvcHkp
CkBAIC00OSw3ICs0OSw3IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlw
ZSwgU3Vic3BhY2VBY2Nlc3MgbW9kZT4KICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNl
Rm9yKFZNJiB2bSkKICAgICB7Ci0gICAgICAgIHJldHVybiAmdm0ucmVnRXhwU3BhY2U7CisgICAg
ICAgIHJldHVybiAmdm0ucmVnRXhwU3BhY2UoKTsKICAgICB9CiAKICAgICBKU19FWFBPUlRfUFJJ
VkFURSBzdGF0aWMgUmVnRXhwKiBjcmVhdGUoVk0mLCBjb25zdCBTdHJpbmcmIHBhdHRlcm4sIE9w
dGlvblNldDxZYXJyOjpGbGFncz4pOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvUmVnRXhwT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvUmVnRXhwT2JqZWN0LmgJKHJldmlzaW9uIDI4NjA0MykKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1JlZ0V4cE9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw3ICsz
Niw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2
bSkKICAgICB7CiAgICAgICAgIHN0YXRpY19hc3NlcnQoIUNlbGxUeXBlOjpuZWVkc0Rlc3RydWN0
aW9uLCAiIik7Ci0gICAgICAgIHJldHVybiAmdm0ucmVnRXhwT2JqZWN0U3BhY2U7CisgICAgICAg
IHJldHVybiAmdm0ucmVnRXhwT2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgY29u
c3RleHByIHVpbnRwdHJfdCBsYXN0SW5kZXhJc05vdFdyaXRhYmxlRmxhZyA9IDBiMDE7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBQcm90b3R5cGUuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBQcm90b3R5cGUuaAko
cmV2aXNpb24gMjg2MDQzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhw
UHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM0LDcgKzM0LDcgQEAgcHVibGljOgogICAg
IHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAgICAg
U1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoUmVnRXhwUHJvdG90eXBlLCBCYXNl
KTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4g
JnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgUmVnRXhwUHJvdG90
eXBlKiBjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4
cFN0cmluZ0l0ZXJhdG9yUHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvUmVnRXhwU3RyaW5nSXRlcmF0b3JQcm90b3R5cGUuaAkocmV2aXNpb24g
Mjg2MDQzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwU3RyaW5nSXRl
cmF0b3JQcm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzksNyArMzksNyBAQCBwdWJsaWM6
CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewogICAg
ICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShSZWdFeHBTdHJpbmdJdGVy
YXRvclByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFj
ZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAg
c3RhdGljIFJlZ0V4cFN0cmluZ0l0ZXJhdG9yUHJvdG90eXBlKiBjcmVhdGUoVk0mIHZtLCBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Njb3BlZEFyZ3VtZW50cy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2NvcGVkQXJndW1lbnRzLmNwcAko
cmV2aXNpb24gMjg2MDQzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2NvcGVk
QXJndW1lbnRzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTUsNyArNTUsNyBAQCBTY29wZWRBcmd1
bWVudHMqIFNjb3BlZEFyZ3VtZW50czo6Y3JlYXRlCiAgICAgV3JpdGVCYXJyaWVyPFVua25vd24+
KiBzdG9yYWdlID0gbnVsbHB0cjsKICAgICBpZiAodG90YWxMZW5ndGggPiB0YWJsZS0+bGVuZ3Ro
KCkpIHsKICAgICAgICAgQ2hlY2tlZDx1bnNpZ25lZD4gb3ZlcmZsb3dMZW5ndGggPSB0b3RhbExl
bmd0aCAtIHRhYmxlLT5sZW5ndGgoKTsKLSAgICAgICAgc3RvcmFnZSA9IHN0YXRpY19jYXN0PFdy
aXRlQmFycmllcjxVbmtub3duPio+KHZtLmpzVmFsdWVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlLmFs
bG9jYXRlTm9uVmlydHVhbCh2bSwgb3ZlcmZsb3dMZW5ndGggKiBzaXplb2YoV3JpdGVCYXJyaWVy
PFVua25vd24+KSwgbnVsbHB0ciwgQWxsb2NhdGlvbkZhaWx1cmVNb2RlOjpBc3NlcnQpKTsKKyAg
ICAgICAgc3RvcmFnZSA9IHN0YXRpY19jYXN0PFdyaXRlQmFycmllcjxVbmtub3duPio+KHZtLmpz
VmFsdWVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlKCkuYWxsb2NhdGVOb25WaXJ0dWFsKHZtLCBvdmVy
Zmxvd0xlbmd0aCAqIHNpemVvZihXcml0ZUJhcnJpZXI8VW5rbm93bj4pLCBudWxscHRyLCBBbGxv
Y2F0aW9uRmFpbHVyZU1vZGU6OkFzc2VydCkpOwogICAgIH0KIAogICAgIFNjb3BlZEFyZ3VtZW50
cyogcmVzdWx0ID0gbmV3ICgKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Nj
b3BlZEFyZ3VtZW50cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1Njb3BlZEFyZ3VtZW50cy5oCShyZXZpc2lvbiAyODYwNDMpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9TY29wZWRBcmd1bWVudHMuaAkod29ya2luZyBjb3B5KQpAQCAtNDcs
NyArNDcsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihW
TSYgdm0pCiAgICAgewogICAgICAgICBzdGF0aWNfYXNzZXJ0KCFDZWxsVHlwZTo6bmVlZHNEZXN0
cnVjdGlvbiwgIiIpOwotICAgICAgICByZXR1cm4gJnZtLnNjb3BlZEFyZ3VtZW50c1NwYWNlOwor
ICAgICAgICByZXR1cm4gJnZtLnNjb3BlZEFyZ3VtZW50c1NwYWNlKCk7CiAgICAgfQogCiAgICAg
Ly8gQ3JlYXRlcyBhbiBhcmd1bWVudHMgb2JqZWN0IGJ1dCBsZWF2ZXMgaXQgdW5pbml0aWFsaXpl
ZC4gVGhpcyBpcyBkYW5nZXJvdXMgaWYgd2UgR0MgcmlnaHQKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1NldEl0ZXJhdG9yUHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2V0SXRlcmF0b3JQcm90b3R5cGUuaAkocmV2aXNp
b24gMjg2MDQzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2V0SXRlcmF0b3JQ
cm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzcsNyArMzcsNyBAQCBwdWJsaWM6CiAgICAg
c3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewogICAgICAgICBT
VEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShTZXRJdGVyYXRvclByb3RvdHlwZSwg
QmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0
dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIFNldEl0ZXJh
dG9yUHJvdG90eXBlKiBjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1NldFByb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1NldFByb3RvdHlwZS5oCShyZXZpc2lvbiAyODYwNDMpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9TZXRQcm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzcsNyAr
MzcsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYg
dm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShT
ZXRQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7
CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIHN0
YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVG
bGFncyB8IEhhc1N0YXRpY1Byb3BlcnR5VGFibGU7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9TaGFkb3dSZWFsbVByb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1NoYWRvd1JlYWxtUHJvdG90eXBlLmgJKHJldmlzaW9uIDI4
NjA0MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NoYWRvd1JlYWxtUHJvdG90
eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM5LDcgKzM5LDcgQEAgcHVibGljOgogICAgIHN0YXRp
YyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElD
X0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoU2hhZG93UmVhbG1Qcm90b3R5cGUsIEJhc2Up
OwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAm
dm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBTaGFkb3dSZWFsbVBy
b3RvdHlwZSogY3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TcGFyc2VBcnJheVZhbHVlTWFwLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3BhcnNlQXJyYXlWYWx1ZU1hcC5o
CShyZXZpc2lvbiAyODYwNDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TcGFy
c2VBcnJheVZhbHVlTWFwLmgJKHdvcmtpbmcgY29weSkKQEAgLTExMCw3ICsxMTAsNyBAQCBwdWJs
aWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNzPgogICAg
IHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKLSAgICAgICAg
cmV0dXJuICZ2bS5zcGFyc2VBcnJheVZhbHVlTWFwU3BhY2U7CisgICAgICAgIHJldHVybiAmdm0u
c3BhcnNlQXJyYXlWYWx1ZU1hcFNwYWNlKCk7CiAgICAgfQogICAgIAogICAgIHN0YXRpYyBTdHJ1
Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSBwcm90
b3R5cGUpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nSXRlcmF0
b3JQcm90b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9TdHJpbmdJdGVyYXRvclByb3RvdHlwZS5oCShyZXZpc2lvbiAyODYwNDMpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdJdGVyYXRvclByb3RvdHlwZS5oCSh3b3JraW5n
IGNvcHkpCkBAIC0zOSw3ICszOSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2Uq
IHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NV
QlNQQUNFX1NIQVJBQkxFKFN0cmluZ0l0ZXJhdG9yUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAg
cmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2Jq
ZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgU3RyaW5nSXRlcmF0b3JQcm90b3R5cGUq
IGNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSog
c3RydWN0dXJlKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nT2Jq
ZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5n
T2JqZWN0LmgJKHJldmlzaW9uIDI4NjA0MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1N0cmluZ09iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw3ICszMyw3IEBAIHB1Ymxp
YzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSwgU3Vic3BhY2VBY2Nlc3MgbW9kZT4KICAgICBzdGF0
aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7Ci0gICAgICAgIHJldHVy
biAmdm0uc3RyaW5nT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0uc3RyaW5nT2JqZWN0
U3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgU3RyaW5nT2JqZWN0KiBjcmVhdGUoVk0mIHZt
LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1N0cnVjdHVyZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1N0cnVjdHVyZS5oCShyZXZpc2lvbiAyODYwNDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9TdHJ1Y3R1cmUuaAkod29ya2luZyBjb3B5KQpAQCAtMTI4LDcgKzEyOCw3IEBA
IHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vic3BhY2VBY2Nlc3M+
CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewotICAg
ICAgICByZXR1cm4gJnZtLnN0cnVjdHVyZVNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnN0cnVj
dHVyZVNwYWNlKCk7CiAgICAgfQogCiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGJvb2wg
aXNWYWxpZFByb3RvdHlwZShKU1ZhbHVlKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1N0cnVjdHVyZUNoYWluLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TdHJ1Y3R1cmVDaGFpbi5jcHAJKHJldmlzaW9uIDI4NjA0MykKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUNoYWluLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNDgsNyArNDgsNyBAQCBTdHJ1Y3R1cmVDaGFpbiogU3RydWN0dXJlQ2hhaW46OmNy
ZWF0ZShWCiAgICAgICAgICsrc2l6ZTsKICAgICArK3NpemU7IC8vIFNlbnRpbmVsIG51bGxwdHIu
CiAgICAgc2l6ZV90IGJ5dGVzID0gQ2hlY2tlZDxzaXplX3Q+KHNpemUpICogc2l6ZW9mKFN0cnVj
dHVyZUlEKTsKLSAgICBTdHJ1Y3R1cmVJRCogdmVjdG9yID0gc3RhdGljX2Nhc3Q8U3RydWN0dXJl
SUQqPih2bS5qc1ZhbHVlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZS5hbGxvY2F0ZU5vblZpcnR1YWwo
dm0sIGJ5dGVzLCBudWxscHRyLCBBbGxvY2F0aW9uRmFpbHVyZU1vZGU6OkFzc2VydCkpOworICAg
IFN0cnVjdHVyZUlEKiB2ZWN0b3IgPSBzdGF0aWNfY2FzdDxTdHJ1Y3R1cmVJRCo+KHZtLmpzVmFs
dWVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlKCkuYWxsb2NhdGVOb25WaXJ0dWFsKHZtLCBieXRlcywg
bnVsbHB0ciwgQWxsb2NhdGlvbkZhaWx1cmVNb2RlOjpBc3NlcnQpKTsKICAgICBtZW1zZXQodmVj
dG9yLCAwLCBieXRlcyk7CiAgICAgU3RydWN0dXJlQ2hhaW4qIGNoYWluID0gbmV3IChOb3ROdWxs
LCBhbGxvY2F0ZUNlbGw8U3RydWN0dXJlQ2hhaW4+KHZtKSkgU3RydWN0dXJlQ2hhaW4odm0sIHZt
LnN0cnVjdHVyZUNoYWluU3RydWN0dXJlLmdldCgpLCB2ZWN0b3IpOwogICAgIGNoYWluLT5maW5p
c2hDcmVhdGlvbih2bSwgaGVhZCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9TdHJ1Y3R1cmVDaGFpbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1N0cnVjdHVyZUNoYWluLmgJKHJldmlzaW9uIDI4NjA0MykKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUNoYWluLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ2
LDcgKzQ2LDcgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlLCBTdWJz
cGFjZUFjY2Vzcz4KICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkK
ICAgICB7Ci0gICAgICAgIHJldHVybiAmdm0uc3RydWN0dXJlQ2hhaW5TcGFjZTsKKyAgICAgICAg
cmV0dXJuICZ2bS5zdHJ1Y3R1cmVDaGFpblNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIFN0
cnVjdHVyZUNoYWluKiBjcmVhdGUoVk0mLCBKU09iamVjdCopOwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlUmFyZURhdGEuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVSYXJlRGF0YS5oCShyZXZpc2lvbiAy
ODYwNDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVSYXJlRGF0
YS5oCSh3b3JraW5nIGNvcHkpCkBAIC02Niw3ICs2Niw3IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vic3BhY2VBY2Nlc3M+CiAgICAgc3RhdGljIElzb1N1YnNw
YWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewotICAgICAgICByZXR1cm4gJnZtLnN0cnVj
dHVyZVJhcmVEYXRhU3BhY2U7CisgICAgICAgIHJldHVybiAmdm0uc3RydWN0dXJlUmFyZURhdGFT
cGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBTdHJ1Y3R1cmVSYXJlRGF0YSogY3JlYXRlKFZN
JiwgU3RydWN0dXJlKik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1i
b2xQcm90b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9TeW1ib2xQcm90b3R5cGUuaAkocmV2aXNpb24gMjg2MDQzKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU3ltYm9sUHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQxLDcg
KzQxLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0m
IHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUo
U3ltYm9sUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNw
YWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAg
ICBzdGF0aWMgU3ltYm9sUHJvdG90eXBlKiBjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1N5bWJvbFRhYmxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sVGFibGUuaAkocmV2aXNpb24gMjg2MDQzKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sVGFibGUuaAkod29ya2luZyBjb3B5KQpA
QCAtNDU2LDcgKzQ1Niw3IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlw
ZSwgU3Vic3BhY2VBY2Nlc3M+CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihW
TSYgdm0pCiAgICAgewotICAgICAgICByZXR1cm4gJnZtLnN5bWJvbFRhYmxlU3BhY2U7CisgICAg
ICAgIHJldHVybiAmdm0uc3ltYm9sVGFibGVTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBT
eW1ib2xUYWJsZSogY3JlYXRlKFZNJiB2bSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1RlbXBvcmFsQ2FsZW5kYXJQcm90b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbENhbGVuZGFyUHJvdG90eXBlLmgJKHJldmlz
aW9uIDI4NjA0MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsQ2Fs
ZW5kYXJQcm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzgsNyArMzgsNyBAQCBwdWJsaWM6
CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewogICAg
ICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShUZW1wb3JhbENhbGVuZGFy
UHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOwor
ICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0
aWMgVGVtcG9yYWxDYWxlbmRhclByb3RvdHlwZSogY3JlYXRlKFZNJiwgSlNHbG9iYWxPYmplY3Qq
LCBTdHJ1Y3R1cmUqKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBv
cmFsRHVyYXRpb25Qcm90b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9UZW1wb3JhbER1cmF0aW9uUHJvdG90eXBlLmgJKHJldmlzaW9uIDI4NjA0MykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsRHVyYXRpb25Qcm90b3R5
cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMp
IDIwMjEgU29ueSBJbnRlcmFjdGl2ZSBFbnRlcnRhaW5tZW50IEluYy4KKyAqIENvcHlyaWdodCAo
QykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTM4LDcgKzM5LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJc29T
dWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VS
VF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoVGVtcG9yYWxEdXJhdGlvblByb3RvdHlwZSwgQmFzZSk7
Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2
bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIFRlbXBvcmFsRHVyYXRp
b25Qcm90b3R5cGUqIGNyZWF0ZShWTSYsIFN0cnVjdHVyZSopOwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxJbnN0YW50UHJvdG90eXBlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxJbnN0YW50UHJvdG90eXBl
LmgJKHJldmlzaW9uIDI4NjA0MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Rl
bXBvcmFsSW5zdGFudFByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNiBAQAog
LyoKICAqIENvcHlyaWdodCAoQykgMjAyMSBJZ2FsaWEgUy5MLgorICogQ29weXJpZ2h0IChDKSAy
MDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwpAQCAtMzgsNyArMzksNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIElzb1N1YnNw
YWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lT
T19TVUJTUEFDRV9TSEFSQUJMRShUZW1wb3JhbEluc3RhbnRQcm90b3R5cGUsIEJhc2UpOwotICAg
ICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxh
aW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBUZW1wb3JhbEluc3RhbnRQcm90
b3R5cGUqIGNyZWF0ZShWTSYsIFN0cnVjdHVyZSopOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvVGVtcG9yYWxOb3cuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9UZW1wb3JhbE5vdy5oCShyZXZpc2lvbiAyODYwNDMpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbE5vdy5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDUgKzEsNiBAQAogLyoKICAqICBDb3B5cmlnaHQgKEMpIDIwMjEgSWdhbGlhLCBTLkwuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiAgQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlv
dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVy
bXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKQEAgLTMyLDcgKzMzLDcgQEAgcHVi
bGljOgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsK
ICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoVGVtcG9yYWxOb3cs
IEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJl
dHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBUZW1wb3Jh
bE5vdyogY3JlYXRlKFZNJiwgU3RydWN0dXJlKik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9UZW1wb3JhbE9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsT2JqZWN0LmgJKHJldmlzaW9uIDI4NjA0MykKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsT2JqZWN0LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTEsNiArMSw3IEBACiAvKgogICogIENvcHlyaWdodCAoQykgMjAyMSBJZ2FsaWEsIFMu
TC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqICBDb3B5cmlnaHQgKEMpIDIwMjEgU29ueSBJbnRl
cmFjdGl2ZSBFbnRlcnRhaW5tZW50IEluYy4KKyAqICBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBz
b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiAgbW9kaWZ5IGl0IHVu
ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwpAQCAtNjQsNyAr
NjUsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYg
dm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShU
ZW1wb3JhbE9iamVjdCwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFj
ZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAg
c3RhdGljIFRlbXBvcmFsT2JqZWN0KiBjcmVhdGUoVk0mLCBTdHJ1Y3R1cmUqKTsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxQbGFp
blRpbWVQcm90b3R5cGUuaAkocmV2aXNpb24gMjg2MDQzKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvVGVtcG9yYWxQbGFpblRpbWVQcm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpA
QCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLgorICog
Q29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzgsNyArMzgsNyBAQCBwdWJsaWM6CiAgICAg
c3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewogICAgICAgICBT
VEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShUZW1wb3JhbFBsYWluVGltZVByb3Rv
dHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAg
ICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIFRl
bXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlKiBjcmVhdGUoVk0mLCBKU0dsb2JhbE9iamVjdCosIFN0
cnVjdHVyZSopOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxU
aW1lWm9uZVByb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1RlbXBvcmFsVGltZVpvbmVQcm90b3R5cGUuaAkocmV2aXNpb24gMjg2MDQzKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxUaW1lWm9uZVByb3RvdHlwZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC0zOCw3ICszOCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNv
U3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NF
UlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKFRlbXBvcmFsVGltZVpvbmVQcm90b3R5cGUsIEJhc2Up
OwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAm
dm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBUZW1wb3JhbFRpbWVa
b25lUHJvdG90eXBlKiBjcmVhdGUoVk0mLCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSopOwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAkocmV2aXNpb24gMjg2MDQzKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0zMiwyMSArMzIsMTUgQEAKICNpbmNsdWRlICJBY2Nlc3NDYXNlLmgiCiAjaW5jbHVkZSAiQWdn
cmVnYXRlRXJyb3IuaCIKICNpbmNsdWRlICJBcmdMaXN0LmgiCi0jaW5jbHVkZSAiQmlnSW50T2Jq
ZWN0LmgiCi0jaW5jbHVkZSAiQm9vbGVhbk9iamVjdC5oIgotI2luY2x1ZGUgIkJyYW5kZWRTdHJ1
Y3R1cmUuaCIKICNpbmNsdWRlICJCdWlsdGluRXhlY3V0YWJsZXMuaCIKICNpbmNsdWRlICJCeXRl
Y29kZUludHJpbnNpY1JlZ2lzdHJ5LmgiCiAjaW5jbHVkZSAiQ2hlY2twb2ludE9TUkV4aXRTaWRl
U3RhdGUuaCIKLSNpbmNsdWRlICJDbG9uZWRBcmd1bWVudHMuaCIKICNpbmNsdWRlICJDb2RlQmxv
Y2suaCIKICNpbmNsdWRlICJDb2RlQ2FjaGUuaCIKICNpbmNsdWRlICJDb21tb25JZGVudGlmaWVy
cy5oIgogI2luY2x1ZGUgIkNvbnRyb2xGbG93UHJvZmlsZXIuaCIKICNpbmNsdWRlICJDdXN0b21H
ZXR0ZXJTZXR0ZXIuaCIKICNpbmNsdWRlICJET01BdHRyaWJ1dGVHZXR0ZXJTZXR0ZXIuaCIKLSNp
bmNsdWRlICJEYXRlSW5zdGFuY2UuaCIKLSNpbmNsdWRlICJEZWJ1Z2dlclNjb3BlLmgiCiAjaW5j
bHVkZSAiRGVmZXJyZWRXb3JrVGltZXIuaCIKICNpbmNsdWRlICJEaXNhc3NlbWJsZXIuaCIKICNp
bmNsdWRlICJEb3VibGVQcmVkaWN0aW9uRnV6emVyQWdlbnQuaCIKQEAgLTU1LDcgKzQ5LDYgQEAK
ICNpbmNsdWRlICJFeGNlcHRpb24uaCIKICNpbmNsdWRlICJFeGVjdXRhYmxlVG9Db2RlQmxvY2tF
ZGdlLmgiCiAjaW5jbHVkZSAiRlRMVGh1bmtzLmgiCi0jaW5jbHVkZSAiRmFzdE1hbGxvY0FsaWdu
ZWRNZW1vcnlBbGxvY2F0b3IuaCIKICNpbmNsdWRlICJGaWxlQmFzZWRGdXp6ZXJBZ2VudC5oIgog
I2luY2x1ZGUgIkZ1bmN0aW9uQ29kZUJsb2NrLmgiCiAjaW5jbHVkZSAiRnVuY3Rpb25FeGVjdXRh
YmxlLmgiCkBAIC02Niw3NyArNTksMjUgQEAKICNpbmNsdWRlICJIZWFwUHJvZmlsZXIuaCIKICNp
bmNsdWRlICJJbnRlcnByZXRlci5oIgogI2luY2x1ZGUgIkludGxDYWNoZS5oIgotI2luY2x1ZGUg
IkludGxDb2xsYXRvci5oIgotI2luY2x1ZGUgIkludGxEYXRlVGltZUZvcm1hdC5oIgotI2luY2x1
ZGUgIkludGxEaXNwbGF5TmFtZXMuaCIKLSNpbmNsdWRlICJJbnRsTGlzdEZvcm1hdC5oIgotI2lu
Y2x1ZGUgIkludGxMb2NhbGUuaCIKLSNpbmNsdWRlICJJbnRsTnVtYmVyRm9ybWF0LmgiCi0jaW5j
bHVkZSAiSW50bFBsdXJhbFJ1bGVzLmgiCi0jaW5jbHVkZSAiSW50bFJlbGF0aXZlVGltZUZvcm1h
dC5oIgotI2luY2x1ZGUgIkludGxTZWdtZW50SXRlcmF0b3IuaCIKLSNpbmNsdWRlICJJbnRsU2Vn
bWVudGVyLmgiCi0jaW5jbHVkZSAiSW50bFNlZ21lbnRzLmgiCi0jaW5jbHVkZSAiSXNvSGVhcENl
bGxUeXBlLmgiCi0jaW5jbHVkZSAiSXNvSW5saW5lZEhlYXBDZWxsVHlwZS5oIgogI2luY2x1ZGUg
IkpJVENvZGUuaCIKICNpbmNsdWRlICJKSVRPcGVyYXRpb25MaXN0LmgiCiAjaW5jbHVkZSAiSklU
U2l6ZVN0YXRpc3RpY3MuaCIKICNpbmNsdWRlICJKSVRUaHVua3MuaCIKICNpbmNsdWRlICJKSVRX
b3JrbGlzdC5oIgotI2luY2x1ZGUgIkpTQVBJR2xvYmFsT2JqZWN0LmgiCiAjaW5jbHVkZSAiSlNB
UElWYWx1ZVdyYXBwZXIuaCIKLSNpbmNsdWRlICJKU0FQSVdyYXBwZXJPYmplY3QuaCIKLSNpbmNs
dWRlICJKU0FycmF5LmgiCi0jaW5jbHVkZSAiSlNBcnJheUJ1ZmZlci5oIgotI2luY2x1ZGUgIkpT
QXJyYXlJdGVyYXRvci5oIgotI2luY2x1ZGUgIkpTQXN5bmNHZW5lcmF0b3IuaCIKICNpbmNsdWRl
ICJKU0JpZ0ludC5oIgotI2luY2x1ZGUgIkpTQm91bmRGdW5jdGlvbi5oIgotI2luY2x1ZGUgIkpT
Q2FsbGJhY2tDb25zdHJ1Y3Rvci5oIgotI2luY2x1ZGUgIkpTQ2FsbGJhY2tGdW5jdGlvbi5oIgot
I2luY2x1ZGUgIkpTQ2FsbGJhY2tPYmplY3QuaCIKLSNpbmNsdWRlICJKU0NhbGxlZS5oIgotI2lu
Y2x1ZGUgIkpTQ3VzdG9tR2V0dGVyRnVuY3Rpb24uaCIKLSNpbmNsdWRlICJKU0N1c3RvbVNldHRl
ckZ1bmN0aW9uLmgiCi0jaW5jbHVkZSAiSlNEZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUu
aCIKLSNpbmNsdWRlICJKU0ZpbmFsaXphdGlvblJlZ2lzdHJ5LmgiCi0jaW5jbHVkZSAiSlNGdW5j
dGlvbi5oIgotI2luY2x1ZGUgIkpTR2xvYmFsTGV4aWNhbEVudmlyb25tZW50LmgiCiAjaW5jbHVk
ZSAiSlNHbG9iYWxPYmplY3QuaCIKICNpbmNsdWRlICJKU0ltbXV0YWJsZUJ1dHRlcmZseS5oIgot
I2luY2x1ZGUgIkpTSW5qZWN0ZWRTY3JpcHRIb3N0LmgiCi0jaW5jbHVkZSAiSlNKYXZhU2NyaXB0
Q2FsbEZyYW1lLmgiCiAjaW5jbHVkZSAiSlNMb2NrLmgiCiAjaW5jbHVkZSAiSlNNYXAuaCIKLSNp
bmNsdWRlICJKU01hcEl0ZXJhdG9yLmgiCi0jaW5jbHVkZSAiSlNNb2R1bGVOYW1lc3BhY2VPYmpl
Y3QuaCIKLSNpbmNsdWRlICJKU01vZHVsZVJlY29yZC5oIgotI2luY2x1ZGUgIkpTTmF0aXZlU3Rk
RnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU1Byb21pc2UuaCIKICNpbmNsdWRlICJKU1Byb3BlcnR5
TmFtZUVudW1lcmF0b3IuaCIKLSNpbmNsdWRlICJKU1Byb3h5LmgiCiAjaW5jbHVkZSAiSlNTY3Jp
cHRGZXRjaFBhcmFtZXRlcnMuaCIKICNpbmNsdWRlICJKU1NjcmlwdEZldGNoZXIuaCIKICNpbmNs
dWRlICJKU1NldC5oIgotI2luY2x1ZGUgIkpTU2V0SXRlcmF0b3IuaCIKICNpbmNsdWRlICJKU1Nv
dXJjZUNvZGUuaCIKLSNpbmNsdWRlICJKU1N0cmluZ0l0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiSlNU
ZW1wbGF0ZU9iamVjdERlc2NyaXB0b3IuaCIKLSNpbmNsdWRlICJKU1RvV2FzbUlDQ2FsbGVlLmgi
Ci0jaW5jbHVkZSAiSlNUeXBlZEFycmF5cy5oIgotI2luY2x1ZGUgIkpTV2Vha01hcC5oIgotI2lu
Y2x1ZGUgIkpTV2Vha09iamVjdFJlZi5oIgotI2luY2x1ZGUgIkpTV2Vha1NldC5oIgogI2luY2x1
ZGUgIkpTV2ViQXNzZW1ibHlDb2RlQmxvY2suaCIKLSNpbmNsdWRlICJKU1dlYkFzc2VtYmx5RXhj
ZXB0aW9uLmgiCi0jaW5jbHVkZSAiSlNXZWJBc3NlbWJseUdsb2JhbC5oIgotI2luY2x1ZGUgIkpT
V2ViQXNzZW1ibHlJbnN0YW5jZS5oIgotI2luY2x1ZGUgIkpTV2ViQXNzZW1ibHlNZW1vcnkuaCIK
LSNpbmNsdWRlICJKU1dlYkFzc2VtYmx5TW9kdWxlLmgiCi0jaW5jbHVkZSAiSlNXZWJBc3NlbWJs
eVRhYmxlLmgiCi0jaW5jbHVkZSAiSlNXZWJBc3NlbWJseVRhZy5oIgotI2luY2x1ZGUgIkpTV2l0
aFNjb3BlLmgiCiAjaW5jbHVkZSAiTExJbnREYXRhLmgiCiAjaW5jbHVkZSAiTExJbnRFeGNlcHRp
b25zLmgiCiAjaW5jbHVkZSAiTWFya2VkQmxvY2tJbmxpbmVzLmgiCkBAIC0xNTEsMjcgKzkyLDE2
IEBACiAjaW5jbHVkZSAiUHJvZ3JhbUNvZGVCbG9jay5oIgogI2luY2x1ZGUgIlByb2dyYW1FeGVj
dXRhYmxlLmgiCiAjaW5jbHVkZSAiUHJvcGVydHlUYWJsZS5oIgotI2luY2x1ZGUgIlByb3h5UmV2
b2tlLmgiCiAjaW5jbHVkZSAiUmFuZG9taXppbmdGdXp6ZXJBZ2VudC5oIgogI2luY2x1ZGUgIlJl
Z0V4cENhY2hlLmgiCi0jaW5jbHVkZSAiUmVnRXhwT2JqZWN0LmgiCiAjaW5jbHVkZSAiU2FtcGxp
bmdQcm9maWxlci5oIgogI2luY2x1ZGUgIlNjb3BlZEFyZ3VtZW50cy5oIgogI2luY2x1ZGUgIlNo
YWRvd0NoaWNrZW4uaCIKLSNpbmNsdWRlICJTaGFkb3dSZWFsbU9iamVjdC5oIgogI2luY2x1ZGUg
IlNpbXBsZVR5cGVkQXJyYXlDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiU291cmNlUHJvdmlkZXJD
YWNoZS5oIgotI2luY2x1ZGUgIlN0cmljdEV2YWxBY3RpdmF0aW9uLmgiCi0jaW5jbHVkZSAiU3Ry
aW5nT2JqZWN0LmgiCiAjaW5jbHVkZSAiU3Ryb25nSW5saW5lcy5oIgogI2luY2x1ZGUgIlN0cnVj
dHVyZUNoYWluLmgiCiAjaW5jbHVkZSAiU3RydWN0dXJlSW5saW5lcy5oIgotI2luY2x1ZGUgIlN5
bWJvbE9iamVjdC5oIgotI2luY2x1ZGUgIlRlbXBvcmFsQ2FsZW5kYXIuaCIKLSNpbmNsdWRlICJU
ZW1wb3JhbER1cmF0aW9uLmgiCi0jaW5jbHVkZSAiVGVtcG9yYWxJbnN0YW50LmgiCi0jaW5jbHVk
ZSAiVGVtcG9yYWxQbGFpblRpbWUuaCIKLSNpbmNsdWRlICJUZW1wb3JhbFRpbWVab25lLmgiCiAj
aW5jbHVkZSAiVGVzdFJ1bm5lclV0aWxzLmgiCiAjaW5jbHVkZSAiVGh1bmtHZW5lcmF0b3JzLmgi
CiAjaW5jbHVkZSAiVHlwZVByb2ZpbGVyLmgiCkBAIC0xODMsOSArMTEzLDYgQEAKICNpbmNsdWRl
ICJXYXNtV29ya2xpc3QuaCIKICNpbmNsdWRlICJXYXRjaGRvZy5oIgogI2luY2x1ZGUgIldlYWtH
Q01hcElubGluZXMuaCIKLSNpbmNsdWRlICJXZWJBc3NlbWJseUZ1bmN0aW9uLmgiCi0jaW5jbHVk
ZSAiV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQuaCIKLSNpbmNsdWRlICJXZWJBc3NlbWJseVdyYXBw
ZXJGdW5jdGlvbi5oIgogI2luY2x1ZGUgIldpZGVuaW5nTnVtYmVyUHJlZGljdGlvbkZ1enplckFn
ZW50LmgiCiAjaW5jbHVkZSA8d3RmL1Byb2Nlc3NJRC5oPgogI2luY2x1ZGUgPHd0Zi9SZWFkV3Jp
dGVMb2NrLmg+CkBAIC0xOTUsNyArMTIyLDYgQEAKICNpbmNsdWRlIDx3dGYvdGV4dC9BdG9tU3Ry
aW5nVGFibGUuaD4KIAogI2lmIEVOQUJMRShDX0xPT1ApCi0jaW5jbHVkZSAiQ0xvb3BTdGFjay5o
IgogI2luY2x1ZGUgIkNMb29wU3RhY2tJbmxpbmVzLmgiCiAjZW5kaWYKIApAQCAtMjA3LDE1ICsx
MzMsNiBAQAogI2luY2x1ZGUgIlJlZ0V4cC5oIgogI2VuZGlmCiAKLSNpZiBKU0NfT0JKQ19BUElf
RU5BQkxFRAotI2luY2x1ZGUgIk9iakNDYWxsYmFja0Z1bmN0aW9uLmgiCi0jZW5kaWYKLQotI2lm
ZGVmIEpTQ19HTElCX0FQSV9FTkFCTEVECi0jaW5jbHVkZSAiSlNBUElXcmFwcGVyR2xvYmFsT2Jq
ZWN0LmgiCi0jaW5jbHVkZSAiSlNDQ2FsbGJhY2tGdW5jdGlvbi5oIgotI2VuZGlmCi0KIG5hbWVz
cGFjZSBKU0MgewogCiBBdG9taWM8dW5zaWduZWQ+IFZNOjpzX251bWJlck9mSURzOwpAQCAtMjkx
LDEwOSArMjA4LDYgQEAgVk06OlZNKFZNVHlwZSB2bVR5cGUsIEhlYXBUeXBlIGhlYXBUeXBlLAog
ICAgICwgbV9yYW5kb20oT3B0aW9uczo6c2VlZE9mVk1SYW5kb21Gb3JGdXp6ZXIoKSA/IE9wdGlv
bnM6OnNlZWRPZlZNUmFuZG9tRm9yRnV6emVyKCkgOiBjcnlwdG9ncmFwaGljYWxseVJhbmRvbU51
bWJlcigpKQogICAgICwgbV9pbnRlZ3JpdHlSYW5kb20oKnRoaXMpCiAgICAgLCBoZWFwKCp0aGlz
LCBoZWFwVHlwZSkKLSAgICAsIGZhc3RNYWxsb2NBbGxvY2F0b3IobWFrZVVuaXF1ZTxGYXN0TWFs
bG9jQWxpZ25lZE1lbW9yeUFsbG9jYXRvcj4oKSkKLSAgICAsIHByaW1pdGl2ZUdpZ2FjYWdlQWxs
b2NhdG9yKG1ha2VVbmlxdWU8R2lnYWNhZ2VBbGlnbmVkTWVtb3J5QWxsb2NhdG9yPihHaWdhY2Fn
ZTo6UHJpbWl0aXZlKSkKLSAgICAsIGpzVmFsdWVHaWdhY2FnZUFsbG9jYXRvcihtYWtlVW5pcXVl
PEdpZ2FjYWdlQWxpZ25lZE1lbW9yeUFsbG9jYXRvcj4oR2lnYWNhZ2U6OkpTVmFsdWUpKQotICAg
ICwgYXV4aWxpYXJ5SGVhcENlbGxUeXBlKG1ha2VVbmlxdWU8SGVhcENlbGxUeXBlPihDZWxsQXR0
cmlidXRlcyhEb2VzTm90TmVlZERlc3RydWN0aW9uLCBIZWFwQ2VsbDo6QXV4aWxpYXJ5KSkpCi0g
ICAgLCBpbW11dGFibGVCdXR0ZXJmbHlIZWFwQ2VsbFR5cGUobWFrZVVuaXF1ZTxIZWFwQ2VsbFR5
cGU+KENlbGxBdHRyaWJ1dGVzKERvZXNOb3ROZWVkRGVzdHJ1Y3Rpb24sIEhlYXBDZWxsOjpKU0Nl
bGxXaXRoSW5kZXhpbmdIZWFkZXIpKSkKLSAgICAsIGNlbGxIZWFwQ2VsbFR5cGUobWFrZVVuaXF1
ZTxIZWFwQ2VsbFR5cGU+KENlbGxBdHRyaWJ1dGVzKERvZXNOb3ROZWVkRGVzdHJ1Y3Rpb24sIEhl
YXBDZWxsOjpKU0NlbGwpKSkKLSAgICAsIGRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUobWFr
ZVVuaXF1ZTxIZWFwQ2VsbFR5cGU+KENlbGxBdHRyaWJ1dGVzKE5lZWRzRGVzdHJ1Y3Rpb24sIEhl
YXBDZWxsOjpKU0NlbGwpKSkKLSAgICAsIGFwaUdsb2JhbE9iamVjdEhlYXBDZWxsVHlwZShJc29I
ZWFwQ2VsbFR5cGU6OmNyZWF0ZTxKU0FQSUdsb2JhbE9iamVjdD4oKSkKLSAgICAsIGNhbGxiYWNr
Q29uc3RydWN0b3JIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpjcmVhdGU8SlNDYWxsYmFj
a0NvbnN0cnVjdG9yPigpKQotICAgICwgY2FsbGJhY2tHbG9iYWxPYmplY3RIZWFwQ2VsbFR5cGUo
SXNvSGVhcENlbGxUeXBlOjpjcmVhdGU8SlNDYWxsYmFja09iamVjdDxKU0dsb2JhbE9iamVjdD4+
KCkpCi0gICAgLCBjYWxsYmFja09iamVjdEhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OmNy
ZWF0ZTxKU0NhbGxiYWNrT2JqZWN0PEpTTm9uRmluYWxPYmplY3Q+PigpKQotICAgICwgY3VzdG9t
R2V0dGVyRnVuY3Rpb25IZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpjcmVhdGU8SlNDdXN0
b21HZXR0ZXJGdW5jdGlvbj4oKSkKLSAgICAsIGN1c3RvbVNldHRlckZ1bmN0aW9uSGVhcENlbGxU
eXBlKElzb0hlYXBDZWxsVHlwZTo6Y3JlYXRlPEpTQ3VzdG9tU2V0dGVyRnVuY3Rpb24+KCkpCi0g
ICAgLCBkYXRlSW5zdGFuY2VIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpjcmVhdGU8RGF0
ZUluc3RhbmNlPigpKQotICAgICwgZXJyb3JJbnN0YW5jZUhlYXBDZWxsVHlwZShJc29IZWFwQ2Vs
bFR5cGU6OmNyZWF0ZTxFcnJvckluc3RhbmNlPigpKQotICAgICwgZmluYWxpemF0aW9uUmVnaXN0
cnlDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OmNyZWF0ZTxKU0ZpbmFsaXphdGlvblJlZ2lzdHJ5
PigpKQotICAgICwgZ2xvYmFsTGV4aWNhbEVudmlyb25tZW50SGVhcENlbGxUeXBlKElzb0hlYXBD
ZWxsVHlwZTo6Y3JlYXRlPEpTR2xvYmFsTGV4aWNhbEVudmlyb25tZW50PigpKQotICAgICwgZ2xv
YmFsT2JqZWN0SGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6Y3JlYXRlPEpTR2xvYmFsT2Jq
ZWN0PigpKQotICAgICwgaW5qZWN0ZWRTY3JpcHRIb3N0U3BhY2VIZWFwQ2VsbFR5cGUoSXNvSGVh
cENlbGxUeXBlOjpjcmVhdGU8SW5zcGVjdG9yOjpKU0luamVjdGVkU2NyaXB0SG9zdD4oKSkKLSAg
ICAsIGphdmFTY3JpcHRDYWxsRnJhbWVIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpjcmVh
dGU8SW5zcGVjdG9yOjpKU0phdmFTY3JpcHRDYWxsRnJhbWU+KCkpCi0gICAgLCBqc01vZHVsZVJl
Y29yZEhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OmNyZWF0ZTxKU01vZHVsZVJlY29yZD4o
KSkKLSAgICAsIG1vZHVsZU5hbWVzcGFjZU9iamVjdEhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5
cGU6OmNyZWF0ZTxKU01vZHVsZU5hbWVzcGFjZU9iamVjdD4oKSkKLSAgICAsIG5hdGl2ZVN0ZEZ1
bmN0aW9uSGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6Y3JlYXRlPEpTTmF0aXZlU3RkRnVu
Y3Rpb24+KCkpCi0gICAgLCBzdHJpbmdIZWFwQ2VsbFR5cGUobWFrZVVuaXF1ZTxJc29JbmxpbmVk
SGVhcENlbGxUeXBlPEpTU3RyaW5nPj4oKSkKLSAgICAsIHdlYWtNYXBIZWFwQ2VsbFR5cGUoSXNv
SGVhcENlbGxUeXBlOjpjcmVhdGU8SlNXZWFrTWFwPigpKQotICAgICwgd2Vha1NldEhlYXBDZWxs
VHlwZShJc29IZWFwQ2VsbFR5cGU6OmNyZWF0ZTxKU1dlYWtTZXQ+KCkpCi0gICAgLCBkZXN0cnVj
dGlibGVPYmplY3RIZWFwQ2VsbFR5cGUobWFrZVVuaXF1ZTxKU0Rlc3RydWN0aWJsZU9iamVjdEhl
YXBDZWxsVHlwZT4oKSkKLSNpZiBKU0NfT0JKQ19BUElfRU5BQkxFRAotICAgICwgYXBpV3JhcHBl
ck9iamVjdEhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OmNyZWF0ZTxKU0NhbGxiYWNrT2Jq
ZWN0PEpTQVBJV3JhcHBlck9iamVjdD4+KCkpCi0gICAgLCBvYmpDQ2FsbGJhY2tGdW5jdGlvbkhl
YXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OmNyZWF0ZTxPYmpDQ2FsbGJhY2tGdW5jdGlvbj4o
KSkKLSNlbmRpZgotI2lmZGVmIEpTQ19HTElCX0FQSV9FTkFCTEVECi0gICAgLCBhcGlXcmFwcGVy
T2JqZWN0SGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6Y3JlYXRlPEpTQ2FsbGJhY2tPYmpl
Y3Q8SlNBUElXcmFwcGVyT2JqZWN0Pj4oKSkKLSAgICAsIGNhbGxiYWNrQVBJV3JhcHBlckdsb2Jh
bE9iamVjdEhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OmNyZWF0ZTxKU0NhbGxiYWNrT2Jq
ZWN0PEpTQVBJV3JhcHBlckdsb2JhbE9iamVjdD4+KCkpCi0gICAgLCBqc2NDYWxsYmFja0Z1bmN0
aW9uSGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6Y3JlYXRlPEpTQ0NhbGxiYWNrRnVuY3Rp
b24+KCkpCi0jZW5kaWYKLSAgICAsIGludGxDb2xsYXRvckhlYXBDZWxsVHlwZShJc29IZWFwQ2Vs
bFR5cGU6OmNyZWF0ZTxJbnRsQ29sbGF0b3I+KCkpCi0gICAgLCBpbnRsRGF0ZVRpbWVGb3JtYXRI
ZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpjcmVhdGU8SW50bERhdGVUaW1lRm9ybWF0Pigp
KQotICAgICwgaW50bERpc3BsYXlOYW1lc0hlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OmNy
ZWF0ZTxJbnRsRGlzcGxheU5hbWVzPigpKQotICAgICwgaW50bExpc3RGb3JtYXRIZWFwQ2VsbFR5
cGUoSXNvSGVhcENlbGxUeXBlOjpjcmVhdGU8SW50bExpc3RGb3JtYXQ+KCkpCi0gICAgLCBpbnRs
TG9jYWxlSGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6Y3JlYXRlPEludGxMb2NhbGU+KCkp
Ci0gICAgLCBpbnRsTnVtYmVyRm9ybWF0SGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6Y3Jl
YXRlPEludGxOdW1iZXJGb3JtYXQ+KCkpCi0gICAgLCBpbnRsUGx1cmFsUnVsZXNIZWFwQ2VsbFR5
cGUoSXNvSGVhcENlbGxUeXBlOjpjcmVhdGU8SW50bFBsdXJhbFJ1bGVzPigpKQotICAgICwgaW50
bFJlbGF0aXZlVGltZUZvcm1hdEhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OmNyZWF0ZTxJ
bnRsUmVsYXRpdmVUaW1lRm9ybWF0PigpKQotICAgICwgaW50bFNlZ21lbnRJdGVyYXRvckhlYXBD
ZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OmNyZWF0ZTxJbnRsU2VnbWVudEl0ZXJhdG9yPigpKQot
ICAgICwgaW50bFNlZ21lbnRlckhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OmNyZWF0ZTxJ
bnRsU2VnbWVudGVyPigpKQotICAgICwgaW50bFNlZ21lbnRzSGVhcENlbGxUeXBlKElzb0hlYXBD
ZWxsVHlwZTo6Y3JlYXRlPEludGxTZWdtZW50cz4oKSkKLSNpZiBFTkFCTEUoV0VCQVNTRU1CTFkp
Ci0gICAgLCB3ZWJBc3NlbWJseUNvZGVCbG9ja0hlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6
OmNyZWF0ZTxKU1dlYkFzc2VtYmx5Q29kZUJsb2NrPigpKQotICAgICwgd2ViQXNzZW1ibHlFeGNl
cHRpb25IZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpjcmVhdGU8SlNXZWJBc3NlbWJseUV4
Y2VwdGlvbj4oKSkKLSAgICAsIHdlYkFzc2VtYmx5RnVuY3Rpb25IZWFwQ2VsbFR5cGUoSXNvSGVh
cENlbGxUeXBlOjpjcmVhdGU8V2ViQXNzZW1ibHlGdW5jdGlvbj4oKSkKLSAgICAsIHdlYkFzc2Vt
Ymx5R2xvYmFsSGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6Y3JlYXRlPEpTV2ViQXNzZW1i
bHlHbG9iYWw+KCkpCi0gICAgLCB3ZWJBc3NlbWJseUluc3RhbmNlSGVhcENlbGxUeXBlKElzb0hl
YXBDZWxsVHlwZTo6Y3JlYXRlPEpTV2ViQXNzZW1ibHlJbnN0YW5jZT4oKSkKLSAgICAsIHdlYkFz
c2VtYmx5TWVtb3J5SGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6Y3JlYXRlPEpTV2ViQXNz
ZW1ibHlNZW1vcnk+KCkpCi0gICAgLCB3ZWJBc3NlbWJseU1vZHVsZUhlYXBDZWxsVHlwZShJc29I
ZWFwQ2VsbFR5cGU6OmNyZWF0ZTxKU1dlYkFzc2VtYmx5TW9kdWxlPigpKQotICAgICwgd2ViQXNz
ZW1ibHlNb2R1bGVSZWNvcmRIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpjcmVhdGU8V2Vi
QXNzZW1ibHlNb2R1bGVSZWNvcmQ+KCkpCi0gICAgLCB3ZWJBc3NlbWJseVRhYmxlSGVhcENlbGxU
eXBlKElzb0hlYXBDZWxsVHlwZTo6Y3JlYXRlPEpTV2ViQXNzZW1ibHlUYWJsZT4oKSkKLSAgICAs
IHdlYkFzc2VtYmx5VGFnSGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6Y3JlYXRlPEpTV2Vi
QXNzZW1ibHlUYWc+KCkpCi0jZW5kaWYKLSAgICAsIHByaW1pdGl2ZUdpZ2FjYWdlQXV4aWxpYXJ5
U3BhY2UoIlByaW1pdGl2ZSBHaWdhY2FnZSBBdXhpbGlhcnkiLCBoZWFwLCAqYXV4aWxpYXJ5SGVh
cENlbGxUeXBlLCBwcmltaXRpdmVHaWdhY2FnZUFsbG9jYXRvci5nZXQoKSkgLy8gSGFzaDoweDNl
N2NkNzYyCi0gICAgLCBqc1ZhbHVlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZSgiSlNWYWx1ZSBHaWdh
Y2FnZSBBdXhpbGlhcnkiLCBoZWFwLCAqYXV4aWxpYXJ5SGVhcENlbGxUeXBlLCBqc1ZhbHVlR2ln
YWNhZ2VBbGxvY2F0b3IuZ2V0KCkpIC8vIEhhc2g6MHgyNDFlOTQ2Ci0gICAgLCBpbW11dGFibGVC
dXR0ZXJmbHlKU1ZhbHVlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZSgiSW1tdXRhYmxlQnV0dGVyZmx5
IEdpZ2FjYWdlIEpTQ2VsbFdpdGhJbmRleGluZ0hlYWRlciIsIGhlYXAsICppbW11dGFibGVCdXR0
ZXJmbHlIZWFwQ2VsbFR5cGUsIGpzVmFsdWVHaWdhY2FnZUFsbG9jYXRvci5nZXQoKSkgLy8gSGFz
aDoweDdhOTQ1MzAwCi0gICAgLCBjZWxsU3BhY2UoIkpTQ2VsbCIsIGhlYXAsICpjZWxsSGVhcENl
bGxUeXBlLCBmYXN0TWFsbG9jQWxsb2NhdG9yLmdldCgpKSAvLyBIYXNoOjB4YWRmYjVhNzkKLSAg
ICAsIHZhcmlhYmxlU2l6ZWRDZWxsU3BhY2UoIlZhcmlhYmxlIFNpemVkIEpTQ2VsbCIsIGhlYXAs
ICpjZWxsSGVhcENlbGxUeXBlLCBmYXN0TWFsbG9jQWxsb2NhdG9yLmdldCgpKSAvLyBIYXNoOjB4
YmNkNzY5Y2MKLSAgICAsIGRlc3RydWN0aWJsZU9iamVjdFNwYWNlKCJKU0Rlc3RydWN0aWJsZU9i
amVjdCIsIGhlYXAsICpkZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUsIGZhc3RNYWxsb2NB
bGxvY2F0b3IuZ2V0KCkpIC8vIEhhc2g6MHg0ZjVlZDdhOQotICAgICwgYXJyYXlTcGFjZSBJU09f
U1VCU1BBQ0VfSU5JVChoZWFwLCAqY2VsbEhlYXBDZWxsVHlwZSwgSlNBcnJheSkKLSAgICAsIGJp
Z0ludFNwYWNlIElTT19TVUJTUEFDRV9JTklUKGhlYXAsICpjZWxsSGVhcENlbGxUeXBlLCBKU0Jp
Z0ludCkKLSAgICAsIGNhbGxlZVNwYWNlIElTT19TVUJTUEFDRV9JTklUKGhlYXAsICpjZWxsSGVh
cENlbGxUeXBlLCBKU0NhbGxlZSkKLSAgICAsIGNsb25lZEFyZ3VtZW50c1NwYWNlIElTT19TVUJT
UEFDRV9JTklUKGhlYXAsICpjZWxsSGVhcENlbGxUeXBlLCBDbG9uZWRBcmd1bWVudHMpCi0gICAg
LCBjdXN0b21HZXR0ZXJTZXR0ZXJTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVChoZWFwLCAqY2VsbEhl
YXBDZWxsVHlwZSwgQ3VzdG9tR2V0dGVyU2V0dGVyKQotICAgICwgZGF0ZUluc3RhbmNlU3BhY2Ug
SVNPX1NVQlNQQUNFX0lOSVQoaGVhcCwgKmRhdGVJbnN0YW5jZUhlYXBDZWxsVHlwZSwgRGF0ZUlu
c3RhbmNlKQotICAgICwgZG9tQXR0cmlidXRlR2V0dGVyU2V0dGVyU3BhY2UgSVNPX1NVQlNQQUNF
X0lOSVQoaGVhcCwgKmNlbGxIZWFwQ2VsbFR5cGUsIERPTUF0dHJpYnV0ZUdldHRlclNldHRlcikK
LSAgICAsIGV4Y2VwdGlvblNwYWNlIElTT19TVUJTUEFDRV9JTklUKGhlYXAsICpkZXN0cnVjdGli
bGVDZWxsSGVhcENlbGxUeXBlLCBFeGNlcHRpb24pCi0gICAgLCBleGVjdXRhYmxlVG9Db2RlQmxv
Y2tFZGdlU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoaGVhcCwgKmNlbGxIZWFwQ2VsbFR5cGUsIEV4
ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2UpIC8vIEhhc2g6MHg3YjczMGIyMAotICAgICwgZnVuY3Rp
b25TcGFjZSBJU09fU1VCU1BBQ0VfSU5JVChoZWFwLCAqY2VsbEhlYXBDZWxsVHlwZSwgSlNGdW5j
dGlvbikgLy8gSGFzaDoweDgwMGZjYTcyCi0gICAgLCBnZXR0ZXJTZXR0ZXJTcGFjZSBJU09fU1VC
U1BBQ0VfSU5JVChoZWFwLCAqY2VsbEhlYXBDZWxsVHlwZSwgR2V0dGVyU2V0dGVyKQotICAgICwg
Z2xvYmFsTGV4aWNhbEVudmlyb25tZW50U3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoaGVhcCwgKmds
b2JhbExleGljYWxFbnZpcm9ubWVudEhlYXBDZWxsVHlwZSwgSlNHbG9iYWxMZXhpY2FsRW52aXJv
bm1lbnQpCi0gICAgLCBpbnRlcm5hbEZ1bmN0aW9uU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoaGVh
cCwgKmNlbGxIZWFwQ2VsbFR5cGUsIEludGVybmFsRnVuY3Rpb24pIC8vIEhhc2g6MHhmODQ1YzQ2
NAotICAgICwganNQcm94eVNwYWNlIElTT19TVUJTUEFDRV9JTklUKGhlYXAsICpjZWxsSGVhcENl
bGxUeXBlLCBKU1Byb3h5KQotICAgICwgbmF0aXZlRXhlY3V0YWJsZVNwYWNlIElTT19TVUJTUEFD
RV9JTklUKGhlYXAsICpkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlLCBOYXRpdmVFeGVjdXRh
YmxlKSAvLyBIYXNoOjB4Njc1NjdmOTUKLSAgICAsIG51bWJlck9iamVjdFNwYWNlIElTT19TVUJT
UEFDRV9JTklUKGhlYXAsICpjZWxsSGVhcENlbGxUeXBlLCBOdW1iZXJPYmplY3QpCi0gICAgLCBw
bGFpbk9iamVjdFNwYWNlIElTT19TVUJTUEFDRV9JTklUKGhlYXAsICpjZWxsSGVhcENlbGxUeXBl
LCBKU05vbkZpbmFsT2JqZWN0KSAvLyBNYWlubHkgdXNlZCBmb3IgcHJvdG90eXBlcy4KLSAgICAs
IHByb21pc2VTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVChoZWFwLCAqY2VsbEhlYXBDZWxsVHlwZSwg
SlNQcm9taXNlKQotICAgICwgcHJvcGVydHlOYW1lRW51bWVyYXRvclNwYWNlIElTT19TVUJTUEFD
RV9JTklUKGhlYXAsICpjZWxsSGVhcENlbGxUeXBlLCBKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3Ip
Ci0gICAgLCBwcm9wZXJ0eVRhYmxlU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoaGVhcCwgKmRlc3Ry
dWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUsIFByb3BlcnR5VGFibGUpIC8vIEhhc2g6MHhjNmJjOWYx
MgotICAgICwgcmVnRXhwU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoaGVhcCwgKmRlc3RydWN0aWJs
ZUNlbGxIZWFwQ2VsbFR5cGUsIFJlZ0V4cCkKLSAgICAsIHJlZ0V4cE9iamVjdFNwYWNlIElTT19T
VUJTUEFDRV9JTklUKGhlYXAsICpjZWxsSGVhcENlbGxUeXBlLCBSZWdFeHBPYmplY3QpCi0gICAg
LCByb3BlU3RyaW5nU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoaGVhcCwgKnN0cmluZ0hlYXBDZWxs
VHlwZSwgSlNSb3BlU3RyaW5nKQotICAgICwgc2NvcGVkQXJndW1lbnRzU3BhY2UgSVNPX1NVQlNQ
QUNFX0lOSVQoaGVhcCwgKmNlbGxIZWFwQ2VsbFR5cGUsIFNjb3BlZEFyZ3VtZW50cykKLSAgICAs
IHNwYXJzZUFycmF5VmFsdWVNYXBTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVChoZWFwLCAqZGVzdHJ1
Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZSwgU3BhcnNlQXJyYXlWYWx1ZU1hcCkKLSAgICAsIHN0cmlu
Z1NwYWNlIElTT19TVUJTUEFDRV9JTklUKGhlYXAsICpzdHJpbmdIZWFwQ2VsbFR5cGUsIEpTU3Ry
aW5nKSAvLyBIYXNoOjB4OTBjZjc1OGYKLSAgICAsIHN0cmluZ09iamVjdFNwYWNlIElTT19TVUJT
UEFDRV9JTklUKGhlYXAsICpjZWxsSGVhcENlbGxUeXBlLCBTdHJpbmdPYmplY3QpCi0gICAgLCBz
dHJ1Y3R1cmVDaGFpblNwYWNlIElTT19TVUJTUEFDRV9JTklUKGhlYXAsICpjZWxsSGVhcENlbGxU
eXBlLCBTdHJ1Y3R1cmVDaGFpbikKLSAgICAsIHN0cnVjdHVyZVJhcmVEYXRhU3BhY2UgSVNPX1NV
QlNQQUNFX0lOSVQoaGVhcCwgKmRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUsIFN0cnVjdHVy
ZVJhcmVEYXRhKSAvLyBIYXNoOjB4YWNhNGU2MmQKLSAgICAsIHN0cnVjdHVyZVNwYWNlIElTT19T
VUJTUEFDRV9JTklUKGhlYXAsICpkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlLCBTdHJ1Y3R1
cmUpIC8vIEhhc2g6MHgxZjFiY2RjYQotICAgICwgYnJhbmRlZFN0cnVjdHVyZVNwYWNlIElTT19T
VUJTUEFDRV9JTklUKGhlYXAsICpkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlLCBCcmFuZGVk
U3RydWN0dXJlKQotICAgICwgc3ltYm9sVGFibGVTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVChoZWFw
LCAqZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZSwgU3ltYm9sVGFibGUpIC8vIEhhc2g6MHhj
NTIxNWFmZAotICAgICwgZXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZXNXaXRoQ29uc3RyYWludHMo
ZXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZVNwYWNlKQotICAgICwgZXhlY3V0YWJsZVRvQ29kZUJs
b2NrRWRnZXNXaXRoRmluYWxpemVycyhleGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlU3BhY2UpCi0g
ICAgLCBjb2RlQmxvY2tTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVChoZWFwLCAqZGVzdHJ1Y3RpYmxl
Q2VsbEhlYXBDZWxsVHlwZSwgQ29kZUJsb2NrKSAvLyBIYXNoOjB4NzdlNjZlYzkKLSAgICAsIGZ1
bmN0aW9uRXhlY3V0YWJsZVNwYWNlIElTT19TVUJTUEFDRV9JTklUKGhlYXAsICpkZXN0cnVjdGli
bGVDZWxsSGVhcENlbGxUeXBlLCBGdW5jdGlvbkV4ZWN1dGFibGUpIC8vIEhhc2g6MHg1ZDE1OGYz
Ci0gICAgLCBwcm9ncmFtRXhlY3V0YWJsZVNwYWNlIElTT19TVUJTUEFDRV9JTklUKGhlYXAsICpk
ZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlLCBQcm9ncmFtRXhlY3V0YWJsZSkgLy8gSGFzaDow
eDUyN2M3N2U3Ci0gICAgLCB1bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZVNwYWNlIElTT19TVUJT
UEFDRV9JTklUKGhlYXAsICpkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlLCBVbmxpbmtlZEZ1
bmN0aW9uRXhlY3V0YWJsZSkgLy8gSGFzaDoweGY2YjgyOGQ5CiAgICAgLCB2bVR5cGUodm1UeXBl
KQogICAgICwgY2xpZW50RGF0YShudWxscHRyKQogICAgICwgdG9wRW50cnlGcmFtZShudWxscHRy
KQpAQCAtMTU3MiwxMzcgKzEzODYsNiBAQCB2b2lkIFZNOjplbnN1cmVTaGFkb3dDaGlja2VuKCkK
ICAgICBtX3NoYWRvd0NoaWNrZW4gPSBtYWtlVW5pcXVlPFNoYWRvd0NoaWNrZW4+KCk7CiB9CiAK
LSNkZWZpbmUgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKG5hbWUsIGhl
YXBDZWxsVHlwZSwgdHlwZSkgXAotICAgIElzb1N1YnNwYWNlKiBWTTo6bmFtZSMjU2xvdygpIFwK
LSAgICB7IFwKLSAgICAgICAgQVNTRVJUKCFtXyMjbmFtZSk7IFwKLSAgICAgICAgYXV0byBzcGFj
ZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKGhlYXAsIGhlYXBD
ZWxsVHlwZSwgdHlwZSk7IFwKLSAgICAgICAgV1RGOjpzdG9yZVN0b3JlRmVuY2UoKTsgXAotICAg
ICAgICBtXyMjbmFtZSA9IFdURk1vdmUoc3BhY2UpOyBcCi0gICAgICAgIHJldHVybiBtXyMjbmFt
ZS5nZXQoKTsgXAotICAgIH0KLQotCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVS
X1NMT1coYXBpR2xvYmFsT2JqZWN0U3BhY2UsICphcGlHbG9iYWxPYmplY3RIZWFwQ2VsbFR5cGUs
IEpTQVBJR2xvYmFsT2JqZWN0KQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9T
TE9XKGFwaVZhbHVlV3JhcHBlclNwYWNlLCAqY2VsbEhlYXBDZWxsVHlwZSwgSlNBUElWYWx1ZVdy
YXBwZXIpCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coYXJyYXlCdWZm
ZXJTcGFjZSwgKmNlbGxIZWFwQ2VsbFR5cGUsIEpTQXJyYXlCdWZmZXIpCi1EWU5BTUlDX0lTT19T
VUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coYXJyYXlJdGVyYXRvclNwYWNlLCAqY2VsbEhlYXBD
ZWxsVHlwZSwgSlNBcnJheUl0ZXJhdG9yKQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01F
TUJFUl9TTE9XKGFzeW5jR2VuZXJhdG9yU3BhY2UsICpjZWxsSGVhcENlbGxUeXBlLCBKU0FzeW5j
R2VuZXJhdG9yKQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGJpZ0lu
dDY0QXJyYXlTcGFjZSwgKmNlbGxIZWFwQ2VsbFR5cGUsIEpTQmlnSW50NjRBcnJheSkKLURZTkFN
SUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhiaWdJbnRPYmplY3RTcGFjZSwgKmNl
bGxIZWFwQ2VsbFR5cGUsIEJpZ0ludE9iamVjdCkKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklO
RV9NRU1CRVJfU0xPVyhiaWdVaW50NjRBcnJheVNwYWNlLCAqY2VsbEhlYXBDZWxsVHlwZSwgSlNC
aWdVaW50NjRBcnJheSkKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhi
b29sZWFuT2JqZWN0U3BhY2UsICpjZWxsSGVhcENlbGxUeXBlLCBCb29sZWFuT2JqZWN0KQotRFlO
QU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGJvdW5kRnVuY3Rpb25TcGFjZSwg
KmNlbGxIZWFwQ2VsbFR5cGUsIEpTQm91bmRGdW5jdGlvbikgLy8gSGFzaDoweGQ3OTE2ZDQxCi1E
WU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coY2FsbGJhY2tDb25zdHJ1Y3Rv
clNwYWNlLCAqY2FsbGJhY2tDb25zdHJ1Y3RvckhlYXBDZWxsVHlwZSwgSlNDYWxsYmFja0NvbnN0
cnVjdG9yKQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGNhbGxiYWNr
R2xvYmFsT2JqZWN0U3BhY2UsICpjYWxsYmFja0dsb2JhbE9iamVjdEhlYXBDZWxsVHlwZSwgSlND
YWxsYmFja09iamVjdDxKU0dsb2JhbE9iamVjdD4pCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJ
TkVfTUVNQkVSX1NMT1coY2FsbGJhY2tGdW5jdGlvblNwYWNlLCAqY2VsbEhlYXBDZWxsVHlwZSwg
SlNDYWxsYmFja0Z1bmN0aW9uKSAvLyBIYXNoOjB4ZTc2NDhlYmMKLURZTkFNSUNfSVNPX1NVQlNQ
QUNFX0RFRklORV9NRU1CRVJfU0xPVyhjYWxsYmFja09iamVjdFNwYWNlLCAqY2FsbGJhY2tPYmpl
Y3RIZWFwQ2VsbFR5cGUsIEpTQ2FsbGJhY2tPYmplY3Q8SlNOb25GaW5hbE9iamVjdD4pCi1EWU5B
TUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coY3VzdG9tR2V0dGVyRnVuY3Rpb25T
cGFjZSwgKmN1c3RvbUdldHRlckZ1bmN0aW9uSGVhcENlbGxUeXBlLCBKU0N1c3RvbUdldHRlckZ1
bmN0aW9uKQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGN1c3RvbVNl
dHRlckZ1bmN0aW9uU3BhY2UsICpjdXN0b21TZXR0ZXJGdW5jdGlvbkhlYXBDZWxsVHlwZSwgSlND
dXN0b21TZXR0ZXJGdW5jdGlvbikKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJf
U0xPVyhkYXRhVmlld1NwYWNlLCAqY2VsbEhlYXBDZWxsVHlwZSwgSlNEYXRhVmlldykKLURZTkFN
SUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhkZWJ1Z2dlclNjb3BlU3BhY2UsICpj
ZWxsSGVhcENlbGxUeXBlLCBEZWJ1Z2dlclNjb3BlKQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVG
SU5FX01FTUJFUl9TTE9XKGVycm9ySW5zdGFuY2VTcGFjZSwgKmVycm9ySW5zdGFuY2VIZWFwQ2Vs
bFR5cGUsIEVycm9ySW5zdGFuY2UpIC8vIEhhc2g6MHgzZjQwZDRhCi1EWU5BTUlDX0lTT19TVUJT
UEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coZmxvYXQzMkFycmF5U3BhY2UsICpjZWxsSGVhcENlbGxU
eXBlLCBKU0Zsb2F0MzJBcnJheSkKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJf
U0xPVyhmbG9hdDY0QXJyYXlTcGFjZSwgKmNlbGxIZWFwQ2VsbFR5cGUsIEpTRmxvYXQ2NEFycmF5
KQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGZ1bmN0aW9uUmFyZURh
dGFTcGFjZSwgKmRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUsIEZ1bmN0aW9uUmFyZURhdGEp
Ci1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coZ2VuZXJhdG9yU3BhY2Us
ICpjZWxsSGVhcENlbGxUeXBlLCBKU0dlbmVyYXRvcikKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RF
RklORV9NRU1CRVJfU0xPVyhnbG9iYWxPYmplY3RTcGFjZSwgKmdsb2JhbE9iamVjdEhlYXBDZWxs
VHlwZSwgSlNHbG9iYWxPYmplY3QpCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVS
X1NMT1coaW5qZWN0ZWRTY3JpcHRIb3N0U3BhY2UsICppbmplY3RlZFNjcmlwdEhvc3RTcGFjZUhl
YXBDZWxsVHlwZSwgSW5zcGVjdG9yOjpKU0luamVjdGVkU2NyaXB0SG9zdCkKLURZTkFNSUNfSVNP
X1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhpbnQ4QXJyYXlTcGFjZSwgKmNlbGxIZWFwQ2Vs
bFR5cGUsIEpTSW50OEFycmF5KQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9T
TE9XKGludDE2QXJyYXlTcGFjZSwgKmNlbGxIZWFwQ2VsbFR5cGUsIEpTSW50MTZBcnJheSkKLURZ
TkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhpbnQzMkFycmF5U3BhY2UsICpj
ZWxsSGVhcENlbGxUeXBlLCBKU0ludDMyQXJyYXkpCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJ
TkVfTUVNQkVSX1NMT1coamF2YVNjcmlwdENhbGxGcmFtZVNwYWNlLCAqamF2YVNjcmlwdENhbGxG
cmFtZUhlYXBDZWxsVHlwZSwgSW5zcGVjdG9yOjpKU0phdmFTY3JpcHRDYWxsRnJhbWUpCi1EWU5B
TUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coanNNb2R1bGVSZWNvcmRTcGFjZSwg
KmpzTW9kdWxlUmVjb3JkSGVhcENlbGxUeXBlLCBKU01vZHVsZVJlY29yZCkKLURZTkFNSUNfSVNP
X1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhtYXBCdWNrZXRTcGFjZSwgKmNlbGxIZWFwQ2Vs
bFR5cGUsIEpTTWFwOjpCdWNrZXRUeXBlKQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01F
TUJFUl9TTE9XKG1hcEl0ZXJhdG9yU3BhY2UsICpjZWxsSGVhcENlbGxUeXBlLCBKU01hcEl0ZXJh
dG9yKQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKG1hcFNwYWNlLCAq
Y2VsbEhlYXBDZWxsVHlwZSwgSlNNYXApCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVN
QkVSX1NMT1cobW9kdWxlTmFtZXNwYWNlT2JqZWN0U3BhY2UsICptb2R1bGVOYW1lc3BhY2VPYmpl
Y3RIZWFwQ2VsbFR5cGUsIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0KQotRFlOQU1JQ19JU09fU1VC
U1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKG5hdGl2ZVN0ZEZ1bmN0aW9uU3BhY2UsICpuYXRpdmVT
dGRGdW5jdGlvbkhlYXBDZWxsVHlwZSwgSlNOYXRpdmVTdGRGdW5jdGlvbikgLy8gSGFzaDoweDcw
ZWQ2MWU0Ci1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1cocHJveHlPYmpl
Y3RTcGFjZSwgKmNlbGxIZWFwQ2VsbFR5cGUsIFByb3h5T2JqZWN0KQotRFlOQU1JQ19JU09fU1VC
U1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHByb3h5UmV2b2tlU3BhY2UsICpjZWxsSGVhcENlbGxU
eXBlLCBQcm94eVJldm9rZSkgLy8gSGFzaDoweGI1MDZhOTM5Ci1EWU5BTUlDX0lTT19TVUJTUEFD
RV9ERUZJTkVfTUVNQkVSX1NMT1coc2NvcGVkQXJndW1lbnRzVGFibGVTcGFjZSwgKmRlc3RydWN0
aWJsZUNlbGxIZWFwQ2VsbFR5cGUsIFNjb3BlZEFyZ3VtZW50c1RhYmxlKQotRFlOQU1JQ19JU09f
U1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHNjcmlwdEZldGNoUGFyYW1ldGVyc1NwYWNlLCAq
ZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZSwgSlNTY3JpcHRGZXRjaFBhcmFtZXRlcnMpCi1E
WU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coc2NyaXB0RmV0Y2hlclNwYWNl
LCAqZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZSwgSlNTY3JpcHRGZXRjaGVyKQotRFlOQU1J
Q19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHNldEJ1Y2tldFNwYWNlLCAqY2VsbEhl
YXBDZWxsVHlwZSwgSlNTZXQ6OkJ1Y2tldFR5cGUpCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJ
TkVfTUVNQkVSX1NMT1coc2V0SXRlcmF0b3JTcGFjZSwgKmNlbGxIZWFwQ2VsbFR5cGUsIEpTU2V0
SXRlcmF0b3IpCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coc2V0U3Bh
Y2UsICpjZWxsSGVhcENlbGxUeXBlLCBKU1NldCkKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklO
RV9NRU1CRVJfU0xPVyhzaGFkb3dSZWFsbVNwYWNlLCAqY2VsbEhlYXBDZWxsVHlwZSwgU2hhZG93
UmVhbG1PYmplY3QpCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coc3Ry
aWN0RXZhbEFjdGl2YXRpb25TcGFjZSwgKmNlbGxIZWFwQ2VsbFR5cGUsIFN0cmljdEV2YWxBY3Rp
dmF0aW9uKQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHN0cmluZ0l0
ZXJhdG9yU3BhY2UsICpjZWxsSGVhcENlbGxUeXBlLCBKU1N0cmluZ0l0ZXJhdG9yKQotRFlOQU1J
Q19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHNvdXJjZUNvZGVTcGFjZSwgKmRlc3Ry
dWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUsIEpTU291cmNlQ29kZSkKLURZTkFNSUNfSVNPX1NVQlNQ
QUNFX0RFRklORV9NRU1CRVJfU0xPVyhzeW1ib2xTcGFjZSwgKmRlc3RydWN0aWJsZUNlbGxIZWFw
Q2VsbFR5cGUsIFN5bWJvbCkKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xP
VyhzeW1ib2xPYmplY3RTcGFjZSwgKmNlbGxIZWFwQ2VsbFR5cGUsIFN5bWJvbE9iamVjdCkKLURZ
TkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh0ZW1wbGF0ZU9iamVjdERlc2Ny
aXB0b3JTcGFjZSwgKmRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUsIEpTVGVtcGxhdGVPYmpl
Y3REZXNjcmlwdG9yKQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHRl
bXBvcmFsQ2FsZW5kYXJTcGFjZSwgKmNlbGxIZWFwQ2VsbFR5cGUsIFRlbXBvcmFsQ2FsZW5kYXIp
Ci1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1codGVtcG9yYWxEdXJhdGlv
blNwYWNlLCAqY2VsbEhlYXBDZWxsVHlwZSwgVGVtcG9yYWxEdXJhdGlvbikKLURZTkFNSUNfSVNP
X1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh0ZW1wb3JhbEluc3RhbnRTcGFjZSwgKmNlbGxI
ZWFwQ2VsbFR5cGUsIFRlbXBvcmFsSW5zdGFudCkKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklO
RV9NRU1CRVJfU0xPVyh0ZW1wb3JhbFBsYWluVGltZVNwYWNlLCAqY2VsbEhlYXBDZWxsVHlwZSwg
VGVtcG9yYWxQbGFpblRpbWUpCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NM
T1codGVtcG9yYWxUaW1lWm9uZVNwYWNlLCAqY2VsbEhlYXBDZWxsVHlwZSwgVGVtcG9yYWxUaW1l
Wm9uZSkKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh1aW50OEFycmF5
U3BhY2UsICpjZWxsSGVhcENlbGxUeXBlLCBKU1VpbnQ4QXJyYXkpCi1EWU5BTUlDX0lTT19TVUJT
UEFDRV9ERUZJTkVfTUVNQkVSX1NMT1codWludDhDbGFtcGVkQXJyYXlTcGFjZSwgKmNlbGxIZWFw
Q2VsbFR5cGUsIEpTVWludDhDbGFtcGVkQXJyYXkpCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJ
TkVfTUVNQkVSX1NMT1codWludDE2QXJyYXlTcGFjZSwgKmNlbGxIZWFwQ2VsbFR5cGUsIEpTVWlu
dDE2QXJyYXkpCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1codWludDMy
QXJyYXlTcGFjZSwgKmNlbGxIZWFwQ2VsbFR5cGUsIEpTVWludDMyQXJyYXkpCi1EWU5BTUlDX0lT
T19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1codW5saW5rZWRFdmFsQ29kZUJsb2NrU3BhY2Us
ICpkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlLCBVbmxpbmtlZEV2YWxDb2RlQmxvY2spCi1E
WU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1codW5saW5rZWRGdW5jdGlvbkNv
ZGVCbG9ja1NwYWNlLCAqZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZSwgVW5saW5rZWRGdW5j
dGlvbkNvZGVCbG9jaykKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh1
bmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2tTcGFjZSwgKmRlc3RydWN0aWJsZUNlbGxIZWFw
Q2VsbFR5cGUsIFVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jaykKLURZTkFNSUNfSVNPX1NV
QlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh1bmxpbmtlZFByb2dyYW1Db2RlQmxvY2tTcGFjZSwg
KmRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUsIFVubGlua2VkUHJvZ3JhbUNvZGVCbG9jaykK
LURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh3ZWFrTWFwU3BhY2UsICp3
ZWFrTWFwSGVhcENlbGxUeXBlLCBKU1dlYWtNYXApIC8vIEhhc2g6MHg2NjJiMTJhMwotRFlOQU1J
Q19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHdlYWtTZXRTcGFjZSwgKndlYWtTZXRI
ZWFwQ2VsbFR5cGUsIEpTV2Vha1NldCkgLy8gSGFzaDoweDRjNzgxYjMwCi1EWU5BTUlDX0lTT19T
VUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1cod2Vha09iamVjdFJlZlNwYWNlLCAqY2VsbEhlYXBD
ZWxsVHlwZSwgSlNXZWFrT2JqZWN0UmVmKSAvLyBIYXNoOjB4OGVjNjhmMWYKLURZTkFNSUNfSVNP
X1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh3aXRoU2NvcGVTcGFjZSwgKmNlbGxIZWFwQ2Vs
bFR5cGUsIEpTV2l0aFNjb3BlKQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9T
TE9XKGZpbmFsaXphdGlvblJlZ2lzdHJ5U3BhY2UsICpmaW5hbGl6YXRpb25SZWdpc3RyeUNlbGxU
eXBlLCBKU0ZpbmFsaXphdGlvblJlZ2lzdHJ5KQotI2lmIEpTQ19PQkpDX0FQSV9FTkFCTEVECi1E
WU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coYXBpV3JhcHBlck9iamVjdFNw
YWNlLCAqYXBpV3JhcHBlck9iamVjdEhlYXBDZWxsVHlwZSwgSlNDYWxsYmFja09iamVjdDxKU0FQ
SVdyYXBwZXJPYmplY3Q+KQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9X
KG9iakNDYWxsYmFja0Z1bmN0aW9uU3BhY2UsICpvYmpDQ2FsbGJhY2tGdW5jdGlvbkhlYXBDZWxs
VHlwZSwgT2JqQ0NhbGxiYWNrRnVuY3Rpb24pIC8vIEhhc2g6MHgxMGY2MTBiOAotI2VuZGlmCi0j
aWZkZWYgSlNDX0dMSUJfQVBJX0VOQUJMRUQKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9N
RU1CRVJfU0xPVyhhcGlXcmFwcGVyT2JqZWN0U3BhY2UsICphcGlXcmFwcGVyT2JqZWN0SGVhcENl
bGxUeXBlLCBKU0NhbGxiYWNrT2JqZWN0PEpTQVBJV3JhcHBlck9iamVjdD4pCi1EWU5BTUlDX0lT
T19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coanNjQ2FsbGJhY2tGdW5jdGlvblNwYWNlLCAq
anNjQ2FsbGJhY2tGdW5jdGlvbkhlYXBDZWxsVHlwZSwgSlNDQ2FsbGJhY2tGdW5jdGlvbikKLURZ
TkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhjYWxsYmFja0FQSVdyYXBwZXJH
bG9iYWxPYmplY3RTcGFjZSwgKmNhbGxiYWNrQVBJV3JhcHBlckdsb2JhbE9iamVjdEhlYXBDZWxs
VHlwZSwgSlNDYWxsYmFja09iamVjdDxKU0FQSVdyYXBwZXJHbG9iYWxPYmplY3Q+KQotI2VuZGlm
Ci1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coaW50bENvbGxhdG9yU3Bh
Y2UsICppbnRsQ29sbGF0b3JIZWFwQ2VsbFR5cGUsIEludGxDb2xsYXRvcikKLURZTkFNSUNfSVNP
X1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhpbnRsRGF0ZVRpbWVGb3JtYXRTcGFjZSwgKmlu
dGxEYXRlVGltZUZvcm1hdEhlYXBDZWxsVHlwZSwgSW50bERhdGVUaW1lRm9ybWF0KQotRFlOQU1J
Q19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGludGxEaXNwbGF5TmFtZXNTcGFjZSwg
KmludGxEaXNwbGF5TmFtZXNIZWFwQ2VsbFR5cGUsIEludGxEaXNwbGF5TmFtZXMpCi1EWU5BTUlD
X0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coaW50bExpc3RGb3JtYXRTcGFjZSwgKmlu
dGxMaXN0Rm9ybWF0SGVhcENlbGxUeXBlLCBJbnRsTGlzdEZvcm1hdCkKLURZTkFNSUNfSVNPX1NV
QlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhpbnRsTG9jYWxlU3BhY2UsICppbnRsTG9jYWxlSGVh
cENlbGxUeXBlLCBJbnRsTG9jYWxlKQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJF
Ul9TTE9XKGludGxOdW1iZXJGb3JtYXRTcGFjZSwgKmludGxOdW1iZXJGb3JtYXRIZWFwQ2VsbFR5
cGUsIEludGxOdW1iZXJGb3JtYXQpCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVS
X1NMT1coaW50bFBsdXJhbFJ1bGVzU3BhY2UsICppbnRsUGx1cmFsUnVsZXNIZWFwQ2VsbFR5cGUs
IEludGxQbHVyYWxSdWxlcykKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xP
VyhpbnRsUmVsYXRpdmVUaW1lRm9ybWF0U3BhY2UsICppbnRsUmVsYXRpdmVUaW1lRm9ybWF0SGVh
cENlbGxUeXBlLCBJbnRsUmVsYXRpdmVUaW1lRm9ybWF0KQotRFlOQU1JQ19JU09fU1VCU1BBQ0Vf
REVGSU5FX01FTUJFUl9TTE9XKGludGxTZWdtZW50SXRlcmF0b3JTcGFjZSwgKmludGxTZWdtZW50
SXRlcmF0b3JIZWFwQ2VsbFR5cGUsIEludGxTZWdtZW50SXRlcmF0b3IpCi1EWU5BTUlDX0lTT19T
VUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coaW50bFNlZ21lbnRlclNwYWNlLCAqaW50bFNlZ21l
bnRlckhlYXBDZWxsVHlwZSwgSW50bFNlZ21lbnRlcikKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RF
RklORV9NRU1CRVJfU0xPVyhpbnRsU2VnbWVudHNTcGFjZSwgKmludGxTZWdtZW50c0hlYXBDZWxs
VHlwZSwgSW50bFNlZ21lbnRzKQotI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKLURZTkFNSUNfSVNP
X1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhqc1RvV2FzbUlDQ2FsbGVlU3BhY2UsICpjZWxs
SGVhcENlbGxUeXBlLCBKU1RvV2FzbUlDQ2FsbGVlKQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVG
SU5FX01FTUJFUl9TTE9XKHdlYkFzc2VtYmx5Q29kZUJsb2NrU3BhY2UsICp3ZWJBc3NlbWJseUNv
ZGVCbG9ja0hlYXBDZWxsVHlwZSwgSlNXZWJBc3NlbWJseUNvZGVCbG9jaykgLy8gSGFzaDoweDlh
ZDk5NWNkCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1cod2ViQXNzZW1i
bHlFeGNlcHRpb25TcGFjZSwgKndlYkFzc2VtYmx5RXhjZXB0aW9uSGVhcENlbGxUeXBlLCBKU1dl
YkFzc2VtYmx5RXhjZXB0aW9uKQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9T
TE9XKHdlYkFzc2VtYmx5RnVuY3Rpb25TcGFjZSwgKndlYkFzc2VtYmx5RnVuY3Rpb25IZWFwQ2Vs
bFR5cGUsIFdlYkFzc2VtYmx5RnVuY3Rpb24pIC8vIEhhc2g6MHg4YjdjMzJkYgotRFlOQU1JQ19J
U09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHdlYkFzc2VtYmx5R2xvYmFsU3BhY2UsICp3
ZWJBc3NlbWJseUdsb2JhbEhlYXBDZWxsVHlwZSwgSlNXZWJBc3NlbWJseUdsb2JhbCkKLURZTkFN
SUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh3ZWJBc3NlbWJseUluc3RhbmNlU3Bh
Y2UsICp3ZWJBc3NlbWJseUluc3RhbmNlSGVhcENlbGxUeXBlLCBKU1dlYkFzc2VtYmx5SW5zdGFu
Y2UpCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1cod2ViQXNzZW1ibHlN
ZW1vcnlTcGFjZSwgKndlYkFzc2VtYmx5TWVtb3J5SGVhcENlbGxUeXBlLCBKU1dlYkFzc2VtYmx5
TWVtb3J5KQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHdlYkFzc2Vt
Ymx5TW9kdWxlU3BhY2UsICp3ZWJBc3NlbWJseU1vZHVsZUhlYXBDZWxsVHlwZSwgSlNXZWJBc3Nl
bWJseU1vZHVsZSkKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh3ZWJB
c3NlbWJseU1vZHVsZVJlY29yZFNwYWNlLCAqd2ViQXNzZW1ibHlNb2R1bGVSZWNvcmRIZWFwQ2Vs
bFR5cGUsIFdlYkFzc2VtYmx5TW9kdWxlUmVjb3JkKQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVG
SU5FX01FTUJFUl9TTE9XKHdlYkFzc2VtYmx5VGFibGVTcGFjZSwgKndlYkFzc2VtYmx5VGFibGVI
ZWFwQ2VsbFR5cGUsIEpTV2ViQXNzZW1ibHlUYWJsZSkKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RF
RklORV9NRU1CRVJfU0xPVyh3ZWJBc3NlbWJseVRhZ1NwYWNlLCAqd2ViQXNzZW1ibHlUYWdIZWFw
Q2VsbFR5cGUsIEpTV2ViQXNzZW1ibHlUYWcpCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVf
TUVNQkVSX1NMT1cod2ViQXNzZW1ibHlXcmFwcGVyRnVuY3Rpb25TcGFjZSwgKmNlbGxIZWFwQ2Vs
bFR5cGUsIFdlYkFzc2VtYmx5V3JhcHBlckZ1bmN0aW9uKSAvLyBIYXNoOjB4ZDRhNWZmMDEKLSNl
bmRpZgotCi0jdW5kZWYgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XCi0K
LSNkZWZpbmUgRFlOQU1JQ19TUEFDRV9BTkRfU0VUX0RFRklORV9NRU1CRVJfU0xPVyhuYW1lLCBo
ZWFwQ2VsbFR5cGUsIHR5cGUpIFwKLSAgICBJc29TdWJzcGFjZSogVk06Om5hbWUjI1Nsb3coKSBc
Ci0gICAgeyBcCi0gICAgICAgIEFTU0VSVCghbV8jI25hbWUpOyBcCi0gICAgICAgIGF1dG8gc3Bh
Y2UgPSBtYWtlVW5pcXVlPFNwYWNlQW5kU2V0PiBJU09fU1VCU1BBQ0VfSU5JVChoZWFwLCBoZWFw
Q2VsbFR5cGUsIHR5cGUpOyBcCi0gICAgICAgIFdURjo6c3RvcmVTdG9yZUZlbmNlKCk7IFwKLSAg
ICAgICAgbV8jI25hbWUgPSBXVEZNb3ZlKHNwYWNlKTsgXAotICAgICAgICByZXR1cm4gJm1fIyNu
YW1lLT5zcGFjZTsgXAotICAgIH0KLQotRFlOQU1JQ19TUEFDRV9BTkRfU0VUX0RFRklORV9NRU1C
RVJfU0xPVyhldmFsRXhlY3V0YWJsZVNwYWNlLCAqZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlw
ZSwgRXZhbEV4ZWN1dGFibGUpIC8vIEhhc2g6MHg5NThlM2U5ZAotRFlOQU1JQ19TUEFDRV9BTkRf
U0VUX0RFRklORV9NRU1CRVJfU0xPVyhtb2R1bGVQcm9ncmFtRXhlY3V0YWJsZVNwYWNlLCAqZGVz
dHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZSwgTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUpIC8vIEhh
c2g6MHg2NTA2ZmEzYwotCi0jdW5kZWYgRFlOQU1JQ19TUEFDRV9BTkRfU0VUX0RFRklORV9NRU1C
RVJfU0xPVwotCiBKU0NlbGwqIFZNOjpzZW50aW5lbFNldEJ1Y2tldFNsb3coKQogewogICAgIEFT
U0VSVCghbV9zZW50aW5lbFNldEJ1Y2tldCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9WTS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1ZNLmgJKHJldmlzaW9uIDI4NjA0MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1ZNLmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDcgKzMxLDYgQEAKICNpbmNsdWRlICJDYWxsRGF0
YS5oIgogI2luY2x1ZGUgIkNhbGxlZUJpdHMuaCIKICNpbmNsdWRlICJDb2RlU3BlY2lhbGl6YXRp
b25LaW5kLmgiCi0jaW5jbHVkZSAiQ29tcGxldGVTdWJzcGFjZS5oIgogI2luY2x1ZGUgIkNvbmN1
cnJlbnRKU0xvY2suaCIKICNpbmNsdWRlICJERkdEb2VzR0NDaGVjay5oIgogI2luY2x1ZGUgIkRl
bGV0ZUFsbENvZGVFZmZvcnQuaCIKQEAgLTQyLDggKzQxLDYgQEAKICNpbmNsdWRlICJIZWFwLmgi
CiAjaW5jbHVkZSAiSW50ZWdyaXR5LmgiCiAjaW5jbHVkZSAiSW50cmluc2ljLmgiCi0jaW5jbHVk
ZSAiSXNvQ2VsbFNldC5oIgotI2luY2x1ZGUgIklzb1N1YnNwYWNlLmgiCiAjaW5jbHVkZSAiSlND
SlNWYWx1ZS5oIgogI2luY2x1ZGUgIkpTRGF0ZU1hdGguaCIKICNpbmNsdWRlICJKU0xvY2suaCIK
QEAgLTU4LDcgKzU1LDcgQEAKICNpbmNsdWRlICJUaHVua0dlbmVyYXRvci5oIgogI2luY2x1ZGUg
IlZNVHJhcHMuaCIKICNpbmNsdWRlICJXYXNtQ29udGV4dC5oIgotI2luY2x1ZGUgIldhdGNocG9p
bnQuaCIKKy8vI2luY2x1ZGUgIldhdGNocG9pbnQuaCIgLy8gbWxhbQogI2luY2x1ZGUgPHd0Zi9C
dW1wUG9pbnRlckFsbG9jYXRvci5oPgogI2luY2x1ZGUgPHd0Zi9DaGVja2VkQXJpdGhtZXRpYy5o
PgogI2luY2x1ZGUgPHd0Zi9EYXRlTWF0aC5oPgpAQCAtMTAzLDExICsxMDAsMTEgQEAgdXNpbmcg
V1RGOjpTaW1wbGVTdGF0czsKIAogbmFtZXNwYWNlIEpTQyB7CiAKLWNsYXNzIEJhc2ljQmxvY2tM
b2NhdGlvbjsKKy8vY2xhc3MgQmFzaWNCbG9ja0xvY2F0aW9uOyAvLyBtbGFtCiBjbGFzcyBCdWls
dGluRXhlY3V0YWJsZXM7CiBjbGFzcyBCeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5OwogY2xhc3Mg
Q2FsbEZyYW1lOwotY2xhc3MgQ2FsbExpbmtJbmZvOworLy9jbGFzcyBDYWxsTGlua0luZm87IC8v
IG1sYW0KIGVudW0gY2xhc3MgQ2FsbE1vZGU7CiBzdHJ1Y3QgQ2hlY2twb2ludE9TUkV4aXRTaWRl
U3RhdGU7CiBjbGFzcyBDb2RlQmxvY2s7CkBAIC0xMTYsMTAxICsxMTMsOTYgQEAgY2xhc3MgQ29t
bW9uSWRlbnRpZmllcnM7CiBjbGFzcyBDb21wYWN0VERaRW52aXJvbm1lbnRNYXA7CiBjbGFzcyBD
b25zZXJ2YXRpdmVSb290czsKIGNsYXNzIENvbnRyb2xGbG93UHJvZmlsZXI7Ci1jbGFzcyBDdXN0
b21HZXR0ZXJTZXR0ZXI7Ci1jbGFzcyBET01BdHRyaWJ1dGVHZXR0ZXJTZXR0ZXI7Ci1jbGFzcyBE
YXRlSW5zdGFuY2U7Ci1jbGFzcyBFcnJvckluc3RhbmNlOworLy9jbGFzcyBDdXN0b21HZXR0ZXJT
ZXR0ZXI7IC8vIG1sYW0KKy8vY2xhc3MgRE9NQXR0cmlidXRlR2V0dGVyU2V0dGVyOyAvLyBtbGFt
CisvL2NsYXNzIERhdGVJbnN0YW5jZTsgLy8gbWxhbQorLy9jbGFzcyBFcnJvckluc3RhbmNlOyAv
LyBtbGFtCiBjbGFzcyBFeGNlcHRpb247CiBjbGFzcyBFeGNlcHRpb25TY29wZTsKLWNsYXNzIEZh
c3RNYWxsb2NBbGlnbmVkTWVtb3J5QWxsb2NhdG9yOwotY2xhc3MgR2lnYWNhZ2VBbGlnbmVkTWVt
b3J5QWxsb2NhdG9yOwotY2xhc3MgSGFuZGxlU3RhY2s7CisvL2NsYXNzIEhhbmRsZVN0YWNrOyAv
LyBtbGFtCiBjbGFzcyBIYXNPd25Qcm9wZXJ0eUNhY2hlOwogY2xhc3MgSGVhcEFuYWx5emVyOwog
Y2xhc3MgSGVhcFByb2ZpbGVyOwotY2xhc3MgSWRlbnRpZmllcjsKKy8vY2xhc3MgSWRlbnRpZmll
cjsgLy8gbWxhbQogY2xhc3MgSW50ZXJwcmV0ZXI7CiBjbGFzcyBJbnRsQ2FjaGU7Ci1jbGFzcyBJ
bnRsQ29sbGF0b3I7Ci1jbGFzcyBJbnRsRGF0ZVRpbWVGb3JtYXQ7Ci1jbGFzcyBJbnRsRGlzcGxh
eU5hbWVzOwotY2xhc3MgSW50bExpc3RGb3JtYXQ7Ci1jbGFzcyBJbnRsTG9jYWxlOwotY2xhc3Mg
SW50bE51bWJlckZvcm1hdDsKLWNsYXNzIEludGxQbHVyYWxSdWxlczsKLWNsYXNzIEludGxSZWxh
dGl2ZVRpbWVGb3JtYXQ7Ci1jbGFzcyBJbnRsU2VnbWVudEl0ZXJhdG9yOwotY2xhc3MgSW50bFNl
Z21lbnRlcjsKLWNsYXNzIEludGxTZWdtZW50czsKLWNsYXNzIEpTQVBJR2xvYmFsT2JqZWN0Owot
Y2xhc3MgSlNBUElXcmFwcGVyR2xvYmFsT2JqZWN0OwotY2xhc3MgSlNBUElXcmFwcGVyT2JqZWN0
OwotY2xhc3MgSlNDQ2FsbGJhY2tGdW5jdGlvbjsKLWNsYXNzIEpTQ2FsbGJhY2tDb25zdHJ1Y3Rv
cjsKKy8vY2xhc3MgSW50bENvbGxhdG9yOyAvLyBtbGFtCisvL2NsYXNzIEludGxEYXRlVGltZUZv
cm1hdDsgLy8gbWxhbQorLy9jbGFzcyBJbnRsRGlzcGxheU5hbWVzOyAvLyBtbGFtCisvL2NsYXNz
IEludGxMaXN0Rm9ybWF0OyAvLyBtbGFtCisvL2NsYXNzIEludGxMb2NhbGU7IC8vIG1sYW0KKy8v
Y2xhc3MgSW50bE51bWJlckZvcm1hdDsgLy8gbWxhbQorLy9jbGFzcyBJbnRsUGx1cmFsUnVsZXM7
IC8vIG1sYW0KKy8vY2xhc3MgSW50bFJlbGF0aXZlVGltZUZvcm1hdDsgLy8gbWxhbQorLy9jbGFz
cyBJbnRsU2VnbWVudEl0ZXJhdG9yOyAvLyBtbGFtCisvL2NsYXNzIEludGxTZWdtZW50ZXI7IC8v
IG1sYW0KKy8vY2xhc3MgSW50bFNlZ21lbnRzOyAvLyBtbGFtCisvL2NsYXNzIEpTQVBJR2xvYmFs
T2JqZWN0OyAvLyBtbGFtCisvL2NsYXNzIEpTQVBJV3JhcHBlckdsb2JhbE9iamVjdDsgLy8gbWxh
bQorLy9jbGFzcyBKU0FQSVdyYXBwZXJPYmplY3Q7IC8vIG1sYW0KKy8vY2xhc3MgSlNDQ2FsbGJh
Y2tGdW5jdGlvbjsgLy8gbWxhbQorLy9jbGFzcyBKU0NhbGxiYWNrQ29uc3RydWN0b3I7IC8vIG1s
YW0KIGNsYXNzIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlOwogY2xhc3MgSlNHbG9i
YWxPYmplY3Q7Ci1jbGFzcyBKU0dsb2JhbExleGljYWxFbnZpcm9ubWVudDsKLWNsYXNzIEpTTW9k
dWxlTmFtZXNwYWNlT2JqZWN0OwotY2xhc3MgSlNNb2R1bGVSZWNvcmQ7Ci1jbGFzcyBKU05hdGl2
ZVN0ZEZ1bmN0aW9uOwotY2xhc3MgSlNOb25GaW5hbE9iamVjdDsKKy8vY2xhc3MgSlNHbG9iYWxM
ZXhpY2FsRW52aXJvbm1lbnQ7IC8vIG1sYW0KKy8vY2xhc3MgSlNNb2R1bGVOYW1lc3BhY2VPYmpl
Y3Q7IC8vIG1sYW0KKy8vY2xhc3MgSlNNb2R1bGVSZWNvcmQ7IC8vIG1sYW0KKy8vY2xhc3MgSlNO
YXRpdmVTdGRGdW5jdGlvbjsgLy8gbWxhbQorLy9jbGFzcyBKU05vbkZpbmFsT2JqZWN0OyAvLyBt
bGFtCiBjbGFzcyBKU09iamVjdDsKIGNsYXNzIEpTUHJvbWlzZTsKIGNsYXNzIEpTUHJvcGVydHlO
YW1lRW51bWVyYXRvcjsKLWNsYXNzIEpTUnVuTG9vcFRpbWVyOwotY2xhc3MgSlNXZWFrTWFwOwot
Y2xhc3MgSlNXZWFrU2V0OwotY2xhc3MgSlNXZWJBc3NlbWJseUNvZGVCbG9jazsKLWNsYXNzIEpT
V2ViQXNzZW1ibHlHbG9iYWw7Ci1jbGFzcyBKU1dlYkFzc2VtYmx5SW5zdGFuY2U7Ci1jbGFzcyBK
U1dlYkFzc2VtYmx5TWVtb3J5OwotY2xhc3MgSlNXZWJBc3NlbWJseU1vZHVsZTsKLWNsYXNzIEpT
V2ViQXNzZW1ibHlUYWJsZTsKKy8vY2xhc3MgSlNSdW5Mb29wVGltZXI7IC8vIG1sYW0KKy8vY2xh
c3MgSlNXZWFrTWFwOyAvLyBtbGFtCisvL2NsYXNzIEpTV2Vha1NldDsgLy8gbWxhbQorLy9jbGFz
cyBKU1dlYkFzc2VtYmx5Q29kZUJsb2NrOyAvLyBtbGFtCisvL2NsYXNzIEpTV2ViQXNzZW1ibHlH
bG9iYWw7IC8vIG1sYW0KKy8vY2xhc3MgSlNXZWJBc3NlbWJseUluc3RhbmNlOyAvLyBtbGFtCisv
L2NsYXNzIEpTV2ViQXNzZW1ibHlNZW1vcnk7IC8vIG1sYW0KKy8vY2xhc3MgSlNXZWJBc3NlbWJs
eU1vZHVsZTsgLy8gbWxhbQorLy9jbGFzcyBKU1dlYkFzc2VtYmx5VGFibGU7IC8vIG1sYW0KIGNs
YXNzIEpJVFNpemVTdGF0aXN0aWNzOwogY2xhc3MgSklUVGh1bmtzOwotY2xhc3MgTExJbnRPZmZz
ZXRzRXh0cmFjdG9yOworLy9jbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiBjbGFzcyBOYXRp
dmVFeGVjdXRhYmxlOwotY2xhc3MgT2JqQ0NhbGxiYWNrRnVuY3Rpb247CisvL2NsYXNzIE9iakND
YWxsYmFja0Z1bmN0aW9uOyAvLyBtbGFtCiBjbGFzcyBEZWZlcnJlZFdvcmtUaW1lcjsKIGNsYXNz
IFJlZ0V4cDsKIGNsYXNzIFJlZ0V4cENhY2hlOwogY2xhc3MgUmVnaXN0ZXI7Ci1jbGFzcyBSZWdp
c3RlckF0T2Zmc2V0TGlzdDsKKy8vY2xhc3MgUmVnaXN0ZXJBdE9mZnNldExpc3Q7IC8vIG1sYW0K
ICNpZiBFTkFCTEUoU0FNUExJTkdfUFJPRklMRVIpCiBjbGFzcyBTYW1wbGluZ1Byb2ZpbGVyOwog
I2VuZGlmCiBjbGFzcyBTaGFkb3dDaGlja2VuOwogY2xhc3MgU2hhcmVkSklUU3R1YlNldDsKLWNs
YXNzIFNjcmlwdEV4ZWN1dGFibGU7CisvL2NsYXNzIFNjcmlwdEV4ZWN1dGFibGU7IC8vIG1sYW0K
IGNsYXNzIFNvdXJjZVByb3ZpZGVyOwogY2xhc3MgU291cmNlUHJvdmlkZXJDYWNoZTsKLWNsYXNz
IFN0YWNrRnJhbWU7CisvL2NsYXNzIFN0YWNrRnJhbWU7IC8vIG1sYW0KIGNsYXNzIFN0cnVjdHVy
ZTsKLSNpZiBFTkFCTEUoUkVHRVhQX1RSQUNJTkcpCi1jbGFzcyBSZWdFeHA7Ci0jZW5kaWYKIGNs
YXNzIFN5bWJvbDsKLWNsYXNzIFRlbXBvcmFsRHVyYXRpb247Ci1jbGFzcyBUZW1wb3JhbEluc3Rh
bnQ7CisvL2NsYXNzIFRlbXBvcmFsRHVyYXRpb247IC8vIG1sYW0KKy8vY2xhc3MgVGVtcG9yYWxJ
bnN0YW50OyAvLyBtbGFtCiBjbGFzcyBUeXBlZEFycmF5Q29udHJvbGxlcjsKLWNsYXNzIFVubGlu
a2VkQ29kZUJsb2NrOwotY2xhc3MgVW5saW5rZWRFdmFsQ29kZUJsb2NrOwotY2xhc3MgVW5saW5r
ZWRGdW5jdGlvbkV4ZWN1dGFibGU7Ci1jbGFzcyBVbmxpbmtlZFByb2dyYW1Db2RlQmxvY2s7Ci1j
bGFzcyBVbmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2s7Ci1jbGFzcyBWaXJ0dWFsUmVnaXN0
ZXI7CisvL2NsYXNzIFVubGlua2VkQ29kZUJsb2NrOyAvLyBtbGFtCisvL2NsYXNzIFVubGlua2Vk
RXZhbENvZGVCbG9jazsgLy8gbWxhbQorLy9jbGFzcyBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJs
ZTsgLy8gbWxhbQorLy9jbGFzcyBVbmxpbmtlZFByb2dyYW1Db2RlQmxvY2s7IC8vIG1sYW0KKy8v
Y2xhc3MgVW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrOyAvLyBtbGFtCisvL2NsYXNzIFZp
cnR1YWxSZWdpc3RlcjsgLy8gbWxhbQogY2xhc3MgVk1FbnRyeVNjb3BlOwotY2xhc3MgVGVtcG9y
YWxDYWxlbmRhcjsKLWNsYXNzIFRlbXBvcmFsUGxhaW5UaW1lOwotY2xhc3MgVGVtcG9yYWxUaW1l
Wm9uZTsKLWNsYXNzIFRvcExldmVsR2xvYmFsT2JqZWN0U2NvcGU7CisvL2NsYXNzIFRlbXBvcmFs
Q2FsZW5kYXI7IC8vIG1sYW0KKy8vY2xhc3MgVGVtcG9yYWxQbGFpblRpbWU7IC8vIG1sYW0KKy8v
Y2xhc3MgVGVtcG9yYWxUaW1lWm9uZTsgLy8gbWxhbQorLy9jbGFzcyBUb3BMZXZlbEdsb2JhbE9i
amVjdFNjb3BlOyAvLyBtbGFtCiBjbGFzcyBUeXBlUHJvZmlsZXI7CiBjbGFzcyBUeXBlUHJvZmls
ZXJMb2c7CiBjbGFzcyBXYXRjaGRvZzsKLWNsYXNzIFdhdGNocG9pbnQ7CisvL2NsYXNzIFdhdGNo
cG9pbnQ7IC8vIG1sYW0KIGNsYXNzIFdhdGNocG9pbnRTZXQ7Ci1jbGFzcyBXZWJBc3NlbWJseUZ1
bmN0aW9uOwotY2xhc3MgV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQ7CisvL2NsYXNzIFdlYkFzc2Vt
Ymx5RnVuY3Rpb247IC8vIG1sYW0KKy8vY2xhc3MgV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQ7IC8v
IG1sYW0KIAogI2lmIEVOQUJMRShERkdfSklUKSAmJiBBU1NFUlRfRU5BQkxFRAogI2RlZmluZSBF
TkFCTEVfREZHX0RPRVNfR0NfVkFMSURBVElPTiAxCkBAIC0yMjAsOSArMjEyLDcgQEAgY2xhc3Mg
V2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQ7CiAKIGNvbnN0ZXhwciBib29sIHZhbGlkYXRlREZHRG9l
c0dDID0gRU5BQkxFX0RGR19ET0VTX0dDX1ZBTElEQVRJT047CiAKLWNsYXNzIElzb0hlYXBDZWxs
VHlwZTsKLXRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlPiBjbGFzcyBJc29JbmxpbmVkSGVhcENl
bGxUeXBlOwotdGVtcGxhdGU8dHlwZW5hbWUgUGFyZW50PiBjbGFzcyBKU0NhbGxiYWNrT2JqZWN0
OworLy90ZW1wbGF0ZTx0eXBlbmFtZSBQYXJlbnQ+IGNsYXNzIEpTQ2FsbGJhY2tPYmplY3Q7IC8v
IG1sYW0KIAogI2lmIEVOQUJMRShGVExfSklUKQogbmFtZXNwYWNlIEZUTCB7CkBAIC0yMzUsMTQg
KzIyNSwxNCBAQCBjbGFzcyBEYXRhYmFzZTsKIG5hbWVzcGFjZSBET01KSVQgewogY2xhc3MgU2ln
bmF0dXJlOwogfQotbmFtZXNwYWNlIFlhcnIgewotY2xhc3MgTWF0Y2hpbmdDb250ZXh0SG9sZGVy
OwotfQorLy9uYW1lc3BhY2UgWWFyciB7CisvL2NsYXNzIE1hdGNoaW5nQ29udGV4dEhvbGRlcjsg
Ly8gbWxhbQorLy99CiAKIHN0cnVjdCBFbnRyeUZyYW1lOwotc3RydWN0IEhhc2hUYWJsZTsKKy8v
c3RydWN0IEhhc2hUYWJsZTsgLy8gbWxhbQogc3RydWN0IEluc3RydWN0aW9uOwotc3RydWN0IFZh
bHVlUHJvZmlsZTsKKy8vc3RydWN0IFZhbHVlUHJvZmlsZTsgLy8gbWxhbQogCiBjbGFzcyBRdWV1
ZWRUYXNrIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShRdWV1ZWRUYXNrKTsKQEAgLTI2MSw4
ICsyNTEsNiBAQCBwcml2YXRlOgogICAgIFJlZjxNaWNyb3Rhc2s+IG1fbWljcm90YXNrOwogfTsK
IAotY2xhc3MgQ29uc2VydmF0aXZlUm9vdHM7Ci0KIERFQ0xBUkVfQUxMT0NBVE9SX1dJVEhfSEVB
UF9JREVOVElGSUVSKFZNKTsKIAogI2lmIENPTVBJTEVSKE1TVkMpCkBAIC00MTMsMTQ1ICs0MDEs
NTggQEAgcHJpdmF0ZToKIAogcHVibGljOgogICAgIEhlYXAgaGVhcDsKLSAgICAKLSAgICBzdGQ6
OnVuaXF1ZV9wdHI8RmFzdE1hbGxvY0FsaWduZWRNZW1vcnlBbGxvY2F0b3I+IGZhc3RNYWxsb2NB
bGxvY2F0b3I7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPEdpZ2FjYWdlQWxpZ25lZE1lbW9yeUFsbG9j
YXRvcj4gcHJpbWl0aXZlR2lnYWNhZ2VBbGxvY2F0b3I7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPEdp
Z2FjYWdlQWxpZ25lZE1lbW9yeUFsbG9jYXRvcj4ganNWYWx1ZUdpZ2FjYWdlQWxsb2NhdG9yOwot
Ci0gICAgc3RkOjp1bmlxdWVfcHRyPEhlYXBDZWxsVHlwZT4gYXV4aWxpYXJ5SGVhcENlbGxUeXBl
OwotICAgIHN0ZDo6dW5pcXVlX3B0cjxIZWFwQ2VsbFR5cGU+IGltbXV0YWJsZUJ1dHRlcmZseUhl
YXBDZWxsVHlwZTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SGVhcENlbGxUeXBlPiBjZWxsSGVhcENl
bGxUeXBlOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxIZWFwQ2VsbFR5cGU+IGRlc3RydWN0aWJsZUNl
bGxIZWFwQ2VsbFR5cGU7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPElzb0hlYXBDZWxsVHlwZT4gYXBp
R2xvYmFsT2JqZWN0SGVhcENlbGxUeXBlOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxJc29IZWFwQ2Vs
bFR5cGU+IGNhbGxiYWNrQ29uc3RydWN0b3JIZWFwQ2VsbFR5cGU7Ci0gICAgc3RkOjp1bmlxdWVf
cHRyPElzb0hlYXBDZWxsVHlwZT4gY2FsbGJhY2tHbG9iYWxPYmplY3RIZWFwQ2VsbFR5cGU7Ci0g
ICAgc3RkOjp1bmlxdWVfcHRyPElzb0hlYXBDZWxsVHlwZT4gY2FsbGJhY2tPYmplY3RIZWFwQ2Vs
bFR5cGU7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPElzb0hlYXBDZWxsVHlwZT4gY3VzdG9tR2V0dGVy
RnVuY3Rpb25IZWFwQ2VsbFR5cGU7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPElzb0hlYXBDZWxsVHlw
ZT4gY3VzdG9tU2V0dGVyRnVuY3Rpb25IZWFwQ2VsbFR5cGU7Ci0gICAgc3RkOjp1bmlxdWVfcHRy
PElzb0hlYXBDZWxsVHlwZT4gZGF0ZUluc3RhbmNlSGVhcENlbGxUeXBlOwotICAgIHN0ZDo6dW5p
cXVlX3B0cjxJc29IZWFwQ2VsbFR5cGU+IGVycm9ySW5zdGFuY2VIZWFwQ2VsbFR5cGU7Ci0gICAg
c3RkOjp1bmlxdWVfcHRyPElzb0hlYXBDZWxsVHlwZT4gZmluYWxpemF0aW9uUmVnaXN0cnlDZWxs
VHlwZTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SXNvSGVhcENlbGxUeXBlPiBnbG9iYWxMZXhpY2Fs
RW52aXJvbm1lbnRIZWFwQ2VsbFR5cGU7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPElzb0hlYXBDZWxs
VHlwZT4gZ2xvYmFsT2JqZWN0SGVhcENlbGxUeXBlOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxJc29I
ZWFwQ2VsbFR5cGU+IGluamVjdGVkU2NyaXB0SG9zdFNwYWNlSGVhcENlbGxUeXBlOwotICAgIHN0
ZDo6dW5pcXVlX3B0cjxJc29IZWFwQ2VsbFR5cGU+IGphdmFTY3JpcHRDYWxsRnJhbWVIZWFwQ2Vs
bFR5cGU7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPElzb0hlYXBDZWxsVHlwZT4ganNNb2R1bGVSZWNv
cmRIZWFwQ2VsbFR5cGU7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPElzb0hlYXBDZWxsVHlwZT4gbW9k
dWxlTmFtZXNwYWNlT2JqZWN0SGVhcENlbGxUeXBlOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxJc29I
ZWFwQ2VsbFR5cGU+IG5hdGl2ZVN0ZEZ1bmN0aW9uSGVhcENlbGxUeXBlOwotICAgIHN0ZDo6dW5p
cXVlX3B0cjxJc29JbmxpbmVkSGVhcENlbGxUeXBlPEpTU3RyaW5nPj4gc3RyaW5nSGVhcENlbGxU
eXBlOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxJc29IZWFwQ2VsbFR5cGU+IHdlYWtNYXBIZWFwQ2Vs
bFR5cGU7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPElzb0hlYXBDZWxsVHlwZT4gd2Vha1NldEhlYXBD
ZWxsVHlwZTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SlNEZXN0cnVjdGlibGVPYmplY3RIZWFwQ2Vs
bFR5cGU+IGRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZTsKLSNpZiBKU0NfT0JKQ19BUElf
RU5BQkxFRAotICAgIHN0ZDo6dW5pcXVlX3B0cjxJc29IZWFwQ2VsbFR5cGU+IGFwaVdyYXBwZXJP
YmplY3RIZWFwQ2VsbFR5cGU7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPElzb0hlYXBDZWxsVHlwZT4g
b2JqQ0NhbGxiYWNrRnVuY3Rpb25IZWFwQ2VsbFR5cGU7Ci0jZW5kaWYKLSNpZmRlZiBKU0NfR0xJ
Ql9BUElfRU5BQkxFRAotICAgIHN0ZDo6dW5pcXVlX3B0cjxJc29IZWFwQ2VsbFR5cGU+IGFwaVdy
YXBwZXJPYmplY3RIZWFwQ2VsbFR5cGU7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPElzb0hlYXBDZWxs
VHlwZT4gY2FsbGJhY2tBUElXcmFwcGVyR2xvYmFsT2JqZWN0SGVhcENlbGxUeXBlOwotICAgIHN0
ZDo6dW5pcXVlX3B0cjxJc29IZWFwQ2VsbFR5cGU+IGpzY0NhbGxiYWNrRnVuY3Rpb25IZWFwQ2Vs
bFR5cGU7Ci0jZW5kaWYKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SXNvSGVhcENlbGxUeXBlPiBpbnRs
Q29sbGF0b3JIZWFwQ2VsbFR5cGU7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPElzb0hlYXBDZWxsVHlw
ZT4gaW50bERhdGVUaW1lRm9ybWF0SGVhcENlbGxUeXBlOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxJ
c29IZWFwQ2VsbFR5cGU+IGludGxEaXNwbGF5TmFtZXNIZWFwQ2VsbFR5cGU7Ci0gICAgc3RkOjp1
bmlxdWVfcHRyPElzb0hlYXBDZWxsVHlwZT4gaW50bExpc3RGb3JtYXRIZWFwQ2VsbFR5cGU7Ci0g
ICAgc3RkOjp1bmlxdWVfcHRyPElzb0hlYXBDZWxsVHlwZT4gaW50bExvY2FsZUhlYXBDZWxsVHlw
ZTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SXNvSGVhcENlbGxUeXBlPiBpbnRsTnVtYmVyRm9ybWF0
SGVhcENlbGxUeXBlOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxJc29IZWFwQ2VsbFR5cGU+IGludGxQ
bHVyYWxSdWxlc0hlYXBDZWxsVHlwZTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SXNvSGVhcENlbGxU
eXBlPiBpbnRsUmVsYXRpdmVUaW1lRm9ybWF0SGVhcENlbGxUeXBlOwotICAgIHN0ZDo6dW5pcXVl
X3B0cjxJc29IZWFwQ2VsbFR5cGU+IGludGxTZWdtZW50SXRlcmF0b3JIZWFwQ2VsbFR5cGU7Ci0g
ICAgc3RkOjp1bmlxdWVfcHRyPElzb0hlYXBDZWxsVHlwZT4gaW50bFNlZ21lbnRlckhlYXBDZWxs
VHlwZTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SXNvSGVhcENlbGxUeXBlPiBpbnRsU2VnbWVudHNI
ZWFwQ2VsbFR5cGU7Ci0jaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQotICAgIHN0ZDo6dW5pcXVlX3B0
cjxJc29IZWFwQ2VsbFR5cGU+IHdlYkFzc2VtYmx5Q29kZUJsb2NrSGVhcENlbGxUeXBlOwotICAg
IHN0ZDo6dW5pcXVlX3B0cjxJc29IZWFwQ2VsbFR5cGU+IHdlYkFzc2VtYmx5RXhjZXB0aW9uSGVh
cENlbGxUeXBlOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxJc29IZWFwQ2VsbFR5cGU+IHdlYkFzc2Vt
Ymx5RnVuY3Rpb25IZWFwQ2VsbFR5cGU7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPElzb0hlYXBDZWxs
VHlwZT4gd2ViQXNzZW1ibHlHbG9iYWxIZWFwQ2VsbFR5cGU7Ci0gICAgc3RkOjp1bmlxdWVfcHRy
PElzb0hlYXBDZWxsVHlwZT4gd2ViQXNzZW1ibHlJbnN0YW5jZUhlYXBDZWxsVHlwZTsKLSAgICBz
dGQ6OnVuaXF1ZV9wdHI8SXNvSGVhcENlbGxUeXBlPiB3ZWJBc3NlbWJseU1lbW9yeUhlYXBDZWxs
VHlwZTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SXNvSGVhcENlbGxUeXBlPiB3ZWJBc3NlbWJseU1v
ZHVsZUhlYXBDZWxsVHlwZTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SXNvSGVhcENlbGxUeXBlPiB3
ZWJBc3NlbWJseU1vZHVsZVJlY29yZEhlYXBDZWxsVHlwZTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8
SXNvSGVhcENlbGxUeXBlPiB3ZWJBc3NlbWJseVRhYmxlSGVhcENlbGxUeXBlOwotICAgIHN0ZDo6
dW5pcXVlX3B0cjxJc29IZWFwQ2VsbFR5cGU+IHdlYkFzc2VtYmx5VGFnSGVhcENlbGxUeXBlOwot
I2VuZGlmCisKKyAgICBjb25zdCBIZWFwQ2VsbFR5cGUmIGNlbGxIZWFwQ2VsbFR5cGUoKSB7IHJl
dHVybiBoZWFwLmNlbGxIZWFwQ2VsbFR5cGU7IH0KKyAgICBjb25zdCBKU0Rlc3RydWN0aWJsZU9i
amVjdEhlYXBDZWxsVHlwZSYgZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCkgeyByZXR1
cm4gaGVhcC5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGU7IH07CiAKICNpZiBFTkFCTEUo
SklUKQogICAgIHN0ZDo6dW5pcXVlX3B0cjxKSVRTaXplU3RhdGlzdGljcz4gaml0U2l6ZVN0YXRp
c3RpY3M7CiAjZW5kaWYKICAgICAKLSAgICBDb21wbGV0ZVN1YnNwYWNlIHByaW1pdGl2ZUdpZ2Fj
YWdlQXV4aWxpYXJ5U3BhY2U7IC8vIFR5cGVkIGFycmF5cywgc3RyaW5ncywgYml0dmVjdG9ycywg
ZXRjIGdvIGhlcmUuCi0gICAgQ29tcGxldGVTdWJzcGFjZSBqc1ZhbHVlR2lnYWNhZ2VBdXhpbGlh
cnlTcGFjZTsgLy8gQnV0dGVyZmxpZXMsIGFycmF5cyBvZiBKU1ZhbHVlcywgZXRjIGdvIGhlcmUu
Ci0gICAgQ29tcGxldGVTdWJzcGFjZSBpbW11dGFibGVCdXR0ZXJmbHlKU1ZhbHVlR2lnYWNhZ2VB
dXhpbGlhcnlTcGFjZTsgLy8gSlNJbW11dGFibGVCdXR0ZXJmbHkgZ29lcyBoZXJlLgotCi0gICAg
Ly8gV2UgbWFrZSBjcm9zcy1jdXR0aW5nIGFzc3VtcHRpb25zIGFib3V0IHR5cGVkIGFycmF5cyBi
ZWluZyBpbiB0aGUgcHJpbWl0aXZlIEdpZ2FjYWdlIGFuZCBidXR0ZXJmbGllcwotICAgIC8vIGJl
aW5nIGluIHRoZSBKU1ZhbHVlIGdpZ2FjYWdlLiBGb3Igc29tZSB0eXBlcywgaXQncyBzdXBlciBv
YnZpb3VzIHdoZXJlIHRoZXkgc2hvdWxkIGdvLCBhbmQgc28gd2UKLSAgICAvLyBjYW4gaGFyZGNv
ZGUgdGhhdCBmYWN0LiBCdXQgc29tZXRpbWVzIGl0J3Mgbm90IGNsZWFyLCBzbyB3ZSBhYnN0cmFj
dCBpdCBieSBoYXZpbmcgYSBHaWdhY2FnZTo6S2luZAotICAgIC8vIGNvbnN0YW50IHNvbWV3aGVy
ZS4KLSAgICAvLyBGSVhNRTogTWF5YmUgaXQgd291bGQgYmUgYmV0dGVyIGlmIGV2ZXJ5b25lIGFi
c3RyYWN0ZWQgdGhpcz8KLSAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTc1MjQ4Ci0gICAgQUxXQVlTX0lOTElORSBDb21wbGV0ZVN1YnNwYWNlJiBnaWdhY2Fn
ZUF1eGlsaWFyeVNwYWNlKEdpZ2FjYWdlOjpLaW5kIGtpbmQpCi0gICAgewotICAgICAgICBzd2l0
Y2ggKGtpbmQpIHsKLSAgICAgICAgY2FzZSBHaWdhY2FnZTo6UHJpbWl0aXZlOgotICAgICAgICAg
ICAgcmV0dXJuIHByaW1pdGl2ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2U7Ci0gICAgICAgIGNhc2Ug
R2lnYWNhZ2U6OkpTVmFsdWU6Ci0gICAgICAgICAgICByZXR1cm4ganNWYWx1ZUdpZ2FjYWdlQXV4
aWxpYXJ5U3BhY2U7Ci0gICAgICAgIGNhc2UgR2lnYWNhZ2U6Ok51bWJlck9mS2luZHM6Ci0gICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVB
Q0hFRCgpOwotICAgICAgICByZXR1cm4gcHJpbWl0aXZlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZTsK
LSAgICB9Ci0gICAgCi0gICAgLy8gV2hlbmV2ZXIgcG9zc2libGUsIHVzZSBzdWJzcGFjZUZvcjxD
ZWxsVHlwZT4odm0pIHRvIGdldCBvbmUgb2YgdGhlc2Ugc3Vic3BhY2VzLgotICAgIENvbXBsZXRl
U3Vic3BhY2UgY2VsbFNwYWNlOwotICAgIENvbXBsZXRlU3Vic3BhY2UgdmFyaWFibGVTaXplZENl
bGxTcGFjZTsgLy8gRklYTUU6IFRoaXMgc3BhY2UgaXMgcHJvYmxlbWF0aWMgYmVjYXVzZSB3ZSBo
YXZlIHRoaW5ncyBpbiBoZXJlIGxpa2UgRGlyZWN0QXJndW1lbnRzIGFuZCBTY29wZWRBcmd1bWVu
dHM7IHRob3NlIHNob3VsZCBiZSBzcGxpdCBpbnRvIEpTVmFsdWVPT0IgY2VsbHMgYW5kIEpTVmFs
dWVTdHJpY3QgYXV4aWxpYXJpZXMuIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xODI4NTgKLSAgICBDb21wbGV0ZVN1YnNwYWNlIGRlc3RydWN0aWJsZU9iamVjdFNwYWNl
OwotICAgIAotICAgIElzb1N1YnNwYWNlIGFycmF5U3BhY2U7Ci0gICAgSXNvU3Vic3BhY2UgYmln
SW50U3BhY2U7Ci0gICAgSXNvU3Vic3BhY2UgY2FsbGVlU3BhY2U7Ci0gICAgSXNvU3Vic3BhY2Ug
Y2xvbmVkQXJndW1lbnRzU3BhY2U7Ci0gICAgSXNvU3Vic3BhY2UgY3VzdG9tR2V0dGVyU2V0dGVy
U3BhY2U7Ci0gICAgSXNvU3Vic3BhY2UgZGF0ZUluc3RhbmNlU3BhY2U7Ci0gICAgSXNvU3Vic3Bh
Y2UgZG9tQXR0cmlidXRlR2V0dGVyU2V0dGVyU3BhY2U7Ci0gICAgSXNvU3Vic3BhY2UgZXhjZXB0
aW9uU3BhY2U7Ci0gICAgSXNvU3Vic3BhY2UgZXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZVNwYWNl
OwotICAgIElzb1N1YnNwYWNlIGZ1bmN0aW9uU3BhY2U7Ci0gICAgSXNvU3Vic3BhY2UgZ2V0dGVy
U2V0dGVyU3BhY2U7Ci0gICAgSXNvU3Vic3BhY2UgZ2xvYmFsTGV4aWNhbEVudmlyb25tZW50U3Bh
Y2U7Ci0gICAgSXNvU3Vic3BhY2UgaW50ZXJuYWxGdW5jdGlvblNwYWNlOwotICAgIElzb1N1YnNw
YWNlIGpzUHJveHlTcGFjZTsKLSAgICBJc29TdWJzcGFjZSBuYXRpdmVFeGVjdXRhYmxlU3BhY2U7
Ci0gICAgSXNvU3Vic3BhY2UgbnVtYmVyT2JqZWN0U3BhY2U7Ci0gICAgSXNvU3Vic3BhY2UgcGxh
aW5PYmplY3RTcGFjZTsKLSAgICBJc29TdWJzcGFjZSBwcm9taXNlU3BhY2U7Ci0gICAgSXNvU3Vi
c3BhY2UgcHJvcGVydHlOYW1lRW51bWVyYXRvclNwYWNlOwotICAgIElzb1N1YnNwYWNlIHByb3Bl
cnR5VGFibGVTcGFjZTsKLSAgICBJc29TdWJzcGFjZSByZWdFeHBTcGFjZTsKLSAgICBJc29TdWJz
cGFjZSByZWdFeHBPYmplY3RTcGFjZTsKLSAgICBJc29TdWJzcGFjZSByb3BlU3RyaW5nU3BhY2U7
Ci0gICAgSXNvU3Vic3BhY2Ugc2NvcGVkQXJndW1lbnRzU3BhY2U7Ci0gICAgSXNvU3Vic3BhY2Ug
c3BhcnNlQXJyYXlWYWx1ZU1hcFNwYWNlOwotICAgIElzb1N1YnNwYWNlIHN0cmluZ1NwYWNlOwot
ICAgIElzb1N1YnNwYWNlIHN0cmluZ09iamVjdFNwYWNlOwotICAgIElzb1N1YnNwYWNlIHN0cnVj
dHVyZUNoYWluU3BhY2U7Ci0gICAgSXNvU3Vic3BhY2Ugc3RydWN0dXJlUmFyZURhdGFTcGFjZTsK
LSAgICBJc29TdWJzcGFjZSBzdHJ1Y3R1cmVTcGFjZTsKLSAgICBJc29TdWJzcGFjZSBicmFuZGVk
U3RydWN0dXJlU3BhY2U7Ci0gICAgSXNvU3Vic3BhY2Ugc3ltYm9sVGFibGVTcGFjZTsKKyAgICBB
TFdBWVNfSU5MSU5FIENvbXBsZXRlU3Vic3BhY2UmIHByaW1pdGl2ZUdpZ2FjYWdlQXV4aWxpYXJ5
U3BhY2UoKSB7IHJldHVybiBoZWFwLnByaW1pdGl2ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2U7IH0K
KyAgICBBTFdBWVNfSU5MSU5FIENvbXBsZXRlU3Vic3BhY2UmIGpzVmFsdWVHaWdhY2FnZUF1eGls
aWFyeVNwYWNlKCkgeyByZXR1cm4gaGVhcC5qc1ZhbHVlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZTsg
fQorICAgIEFMV0FZU19JTkxJTkUgQ29tcGxldGVTdWJzcGFjZSYgaW1tdXRhYmxlQnV0dGVyZmx5
SlNWYWx1ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UoKSB7IHJldHVybiBoZWFwLmltbXV0YWJsZUJ1
dHRlcmZseUpTVmFsdWVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlOyB9CisgICAgQUxXQVlTX0lOTElO
RSBDb21wbGV0ZVN1YnNwYWNlJiBnaWdhY2FnZUF1eGlsaWFyeVNwYWNlKEdpZ2FjYWdlOjpLaW5k
IGtpbmQpIHsgcmV0dXJuIGhlYXAuZ2lnYWNhZ2VBdXhpbGlhcnlTcGFjZShraW5kKTsgfQorICAg
IEFMV0FZU19JTkxJTkUgQ29tcGxldGVTdWJzcGFjZSYgY2VsbFNwYWNlKCkgeyByZXR1cm4gaGVh
cC5jZWxsU3BhY2U7IH0KKyAgICBBTFdBWVNfSU5MSU5FIENvbXBsZXRlU3Vic3BhY2UmIHZhcmlh
YmxlU2l6ZWRDZWxsU3BhY2UoKSB7IHJldHVybiBoZWFwLnZhcmlhYmxlU2l6ZWRDZWxsU3BhY2U7
IH0KKyAgICBBTFdBWVNfSU5MSU5FIENvbXBsZXRlU3Vic3BhY2UmIGRlc3RydWN0aWJsZU9iamVj
dFNwYWNlKCkgeyByZXR1cm4gaGVhcC5kZXN0cnVjdGlibGVPYmplY3RTcGFjZTsgfQorCisgICAg
QUxXQVlTX0lOTElORSBJc29TdWJzcGFjZSYgYXJyYXlTcGFjZSgpIHsgcmV0dXJuIGhlYXAuYXJy
YXlTcGFjZTsgfQorICAgIEFMV0FZU19JTkxJTkUgSXNvU3Vic3BhY2UmIGJpZ0ludFNwYWNlKCkg
eyByZXR1cm4gaGVhcC5iaWdJbnRTcGFjZTsgfQorICAgIEFMV0FZU19JTkxJTkUgSXNvU3Vic3Bh
Y2UmIGNhbGxlZVNwYWNlKCkgeyByZXR1cm4gaGVhcC5jYWxsZWVTcGFjZTsgfQorICAgIEFMV0FZ
U19JTkxJTkUgSXNvU3Vic3BhY2UmIGNsb25lZEFyZ3VtZW50c1NwYWNlKCkgeyByZXR1cm4gaGVh
cC5jbG9uZWRBcmd1bWVudHNTcGFjZTsgfQorICAgIEFMV0FZU19JTkxJTkUgSXNvU3Vic3BhY2Um
IGN1c3RvbUdldHRlclNldHRlclNwYWNlKCkgeyByZXR1cm4gaGVhcC5jdXN0b21HZXR0ZXJTZXR0
ZXJTcGFjZTsgfQorICAgIEFMV0FZU19JTkxJTkUgSXNvU3Vic3BhY2UmIGRhdGVJbnN0YW5jZVNw
YWNlKCkgeyByZXR1cm4gaGVhcC5kYXRlSW5zdGFuY2VTcGFjZTsgfQorICAgIEFMV0FZU19JTkxJ
TkUgSXNvU3Vic3BhY2UmIGRvbUF0dHJpYnV0ZUdldHRlclNldHRlclNwYWNlKCkgeyByZXR1cm4g
aGVhcC5kb21BdHRyaWJ1dGVHZXR0ZXJTZXR0ZXJTcGFjZTsgfQorICAgIEFMV0FZU19JTkxJTkUg
SXNvU3Vic3BhY2UmIGV4Y2VwdGlvblNwYWNlKCkgeyByZXR1cm4gaGVhcC5leGNlcHRpb25TcGFj
ZTsgfQorICAgIEFMV0FZU19JTkxJTkUgSXNvU3Vic3BhY2UmIGV4ZWN1dGFibGVUb0NvZGVCbG9j
a0VkZ2VTcGFjZSgpIHsgcmV0dXJuIGhlYXAuZXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZVNwYWNl
OyB9CisgICAgQUxXQVlTX0lOTElORSBJc29TdWJzcGFjZSYgZnVuY3Rpb25TcGFjZSgpIHsgcmV0
dXJuIGhlYXAuZnVuY3Rpb25TcGFjZTsgfQorICAgIEFMV0FZU19JTkxJTkUgSXNvU3Vic3BhY2Um
IGdldHRlclNldHRlclNwYWNlKCkgeyByZXR1cm4gaGVhcC5nZXR0ZXJTZXR0ZXJTcGFjZTsgfQor
ICAgIEFMV0FZU19JTkxJTkUgSXNvU3Vic3BhY2UmIGdsb2JhbExleGljYWxFbnZpcm9ubWVudFNw
YWNlKCkgeyByZXR1cm4gaGVhcC5nbG9iYWxMZXhpY2FsRW52aXJvbm1lbnRTcGFjZTsgfQorICAg
IEFMV0FZU19JTkxJTkUgSXNvU3Vic3BhY2UmIGludGVybmFsRnVuY3Rpb25TcGFjZSgpIHsgcmV0
dXJuIGhlYXAuaW50ZXJuYWxGdW5jdGlvblNwYWNlOyB9CisgICAgQUxXQVlTX0lOTElORSBJc29T
dWJzcGFjZSYganNQcm94eVNwYWNlKCkgeyByZXR1cm4gaGVhcC5qc1Byb3h5U3BhY2U7IH0KKyAg
ICBBTFdBWVNfSU5MSU5FIElzb1N1YnNwYWNlJiBuYXRpdmVFeGVjdXRhYmxlU3BhY2UoKSB7IHJl
dHVybiBoZWFwLm5hdGl2ZUV4ZWN1dGFibGVTcGFjZTsgfQorICAgIEFMV0FZU19JTkxJTkUgSXNv
U3Vic3BhY2UmIG51bWJlck9iamVjdFNwYWNlKCkgeyByZXR1cm4gaGVhcC5udW1iZXJPYmplY3RT
cGFjZTsgfQorICAgIEFMV0FZU19JTkxJTkUgSXNvU3Vic3BhY2UmIHBsYWluT2JqZWN0U3BhY2Uo
KSB7IHJldHVybiBoZWFwLnBsYWluT2JqZWN0U3BhY2U7IH0KKyAgICBBTFdBWVNfSU5MSU5FIElz
b1N1YnNwYWNlJiBwcm9taXNlU3BhY2UoKSB7IHJldHVybiBoZWFwLnByb21pc2VTcGFjZTsgfQor
ICAgIEFMV0FZU19JTkxJTkUgSXNvU3Vic3BhY2UmIHByb3BlcnR5TmFtZUVudW1lcmF0b3JTcGFj
ZSgpIHsgcmV0dXJuIGhlYXAucHJvcGVydHlOYW1lRW51bWVyYXRvclNwYWNlOyB9CisgICAgQUxX
QVlTX0lOTElORSBJc29TdWJzcGFjZSYgcHJvcGVydHlUYWJsZVNwYWNlKCkgeyByZXR1cm4gaGVh
cC5wcm9wZXJ0eVRhYmxlU3BhY2U7IH0KKyAgICBBTFdBWVNfSU5MSU5FIElzb1N1YnNwYWNlJiBy
ZWdFeHBTcGFjZSgpIHsgcmV0dXJuIGhlYXAucmVnRXhwU3BhY2U7IH0KKyAgICBBTFdBWVNfSU5M
SU5FIElzb1N1YnNwYWNlJiByZWdFeHBPYmplY3RTcGFjZSgpIHsgcmV0dXJuIGhlYXAucmVnRXhw
T2JqZWN0U3BhY2U7IH0KKyAgICBBTFdBWVNfSU5MSU5FIElzb1N1YnNwYWNlJiByb3BlU3RyaW5n
U3BhY2UoKSB7IHJldHVybiBoZWFwLnJvcGVTdHJpbmdTcGFjZTsgfQorICAgIEFMV0FZU19JTkxJ
TkUgSXNvU3Vic3BhY2UmIHNjb3BlZEFyZ3VtZW50c1NwYWNlKCkgeyByZXR1cm4gaGVhcC5zY29w
ZWRBcmd1bWVudHNTcGFjZTsgfQorICAgIEFMV0FZU19JTkxJTkUgSXNvU3Vic3BhY2UmIHNwYXJz
ZUFycmF5VmFsdWVNYXBTcGFjZSgpIHsgcmV0dXJuIGhlYXAuc3BhcnNlQXJyYXlWYWx1ZU1hcFNw
YWNlOyB9CisgICAgQUxXQVlTX0lOTElORSBJc29TdWJzcGFjZSYgc3RyaW5nU3BhY2UoKSB7IHJl
dHVybiBoZWFwLnN0cmluZ1NwYWNlOyB9CisgICAgQUxXQVlTX0lOTElORSBJc29TdWJzcGFjZSYg
c3RyaW5nT2JqZWN0U3BhY2UoKSB7IHJldHVybiBoZWFwLnN0cmluZ09iamVjdFNwYWNlOyB9Cisg
ICAgQUxXQVlTX0lOTElORSBJc29TdWJzcGFjZSYgc3RydWN0dXJlQ2hhaW5TcGFjZSgpIHsgcmV0
dXJuIGhlYXAuc3RydWN0dXJlQ2hhaW5TcGFjZTsgfQorICAgIEFMV0FZU19JTkxJTkUgSXNvU3Vi
c3BhY2UmIHN0cnVjdHVyZVJhcmVEYXRhU3BhY2UoKSB7IHJldHVybiBoZWFwLnN0cnVjdHVyZVJh
cmVEYXRhU3BhY2U7IH0KKyAgICBBTFdBWVNfSU5MSU5FIElzb1N1YnNwYWNlJiBzdHJ1Y3R1cmVT
cGFjZSgpIHsgcmV0dXJuIGhlYXAuc3RydWN0dXJlU3BhY2U7IH0KKyAgICBBTFdBWVNfSU5MSU5F
IElzb1N1YnNwYWNlJiBicmFuZGVkU3RydWN0dXJlU3BhY2UoKSB7IHJldHVybiBoZWFwLmJyYW5k
ZWRTdHJ1Y3R1cmVTcGFjZTsgfQorICAgIEFMV0FZU19JTkxJTkUgSXNvU3Vic3BhY2UmIHN5bWJv
bFRhYmxlU3BhY2UoKSB7IHJldHVybiBoZWFwLnN5bWJvbFRhYmxlU3BhY2U7IH0KIAogI2RlZmlu
ZSBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKG5hbWUpIFwKICAgICB0ZW1wbGF0
ZTxTdWJzcGFjZUFjY2VzcyBtb2RlPiBcCi0gICAgSXNvU3Vic3BhY2UqIG5hbWUoKSBcCi0gICAg
eyBcCi0gICAgICAgIGlmIChtXyMjbmFtZSB8fCBtb2RlID09IFN1YnNwYWNlQWNjZXNzOjpDb25j
dXJyZW50bHkpIFwKLSAgICAgICAgICAgIHJldHVybiBtXyMjbmFtZS5nZXQoKTsgXAotICAgICAg
ICByZXR1cm4gbmFtZSMjU2xvdygpOyBcCi0gICAgfSBcCi0gICAgSlNfRVhQT1JUX1BSSVZBVEUg
SXNvU3Vic3BhY2UqIG5hbWUjI1Nsb3coKTsgXAotICAgIHN0ZDo6dW5pcXVlX3B0cjxJc29TdWJz
cGFjZT4gbV8jI25hbWU7Ci0KKyAgICBBTFdBWVNfSU5MSU5FIElzb1N1YnNwYWNlKiBuYW1lKCkg
eyByZXR1cm4gaGVhcC5uYW1lPG1vZGU+KCk7IH0KIAogI2lmIEpTQ19PQkpDX0FQSV9FTkFCTEVE
CiAgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihhcGlXcmFwcGVyT2JqZWN0
U3BhY2UpCkBAIC02NTcsNzQgKzU1OCwyMyBAQCBwdWJsaWM6CiAjZW5kaWYKIAogI3VuZGVmIERZ
TkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIKLSAgICAKLSAgICBJc29DZWxsU2V0IGV4
ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2VzV2l0aENvbnN0cmFpbnRzOwotICAgIElzb0NlbGxTZXQg
ZXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZXNXaXRoRmluYWxpemVyczsKKworICAgIEFMV0FZU19J
TkxJTkUgSXNvQ2VsbFNldCYgZXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZXNXaXRoQ29uc3RyYWlu
dHMoKSB7IHJldHVybiBoZWFwLmV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2VzV2l0aENvbnN0cmFp
bnRzOyB9CisgICAgQUxXQVlTX0lOTElORSBJc29DZWxsU2V0JiBleGVjdXRhYmxlVG9Db2RlQmxv
Y2tFZGdlc1dpdGhGaW5hbGl6ZXJzKCkgeyByZXR1cm4gaGVhcC5leGVjdXRhYmxlVG9Db2RlQmxv
Y2tFZGdlc1dpdGhGaW5hbGl6ZXJzOyB9CiAKICNkZWZpbmUgRFlOQU1JQ19TUEFDRV9BTkRfU0VU
X0RFRklORV9NRU1CRVIobmFtZSkgXAogICAgIHRlbXBsYXRlPFN1YnNwYWNlQWNjZXNzIG1vZGU+
IFwKLSAgICBJc29TdWJzcGFjZSogbmFtZSgpIFwKLSAgICB7IFwKLSAgICAgICAgaWYgKGF1dG8q
IHNwYWNlQW5kU2V0ID0gbV8jI25hbWUuZ2V0KCkpIFwKLSAgICAgICAgICAgIHJldHVybiAmc3Bh
Y2VBbmRTZXQtPnNwYWNlOyBcCi0gICAgICAgIGlmIChtb2RlID09IFN1YnNwYWNlQWNjZXNzOjpD
b25jdXJyZW50bHkpIFwKLSAgICAgICAgICAgIHJldHVybiBudWxscHRyOyBcCi0gICAgICAgIHJl
dHVybiBuYW1lIyNTbG93KCk7IFwKLSAgICB9IFwKLSAgICBJc29TdWJzcGFjZSogbmFtZSMjU2xv
dygpOyBcCi0gICAgc3RkOjp1bmlxdWVfcHRyPFNwYWNlQW5kU2V0PiBtXyMjbmFtZTsKLSAgICAK
LSAgICBzdHJ1Y3QgU3BhY2VBbmRTZXQgewotICAgICAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9B
TExPQ0FURUQ7Ci0KLSAgICAgICAgSXNvU3Vic3BhY2Ugc3BhY2U7Ci0gICAgICAgIElzb0NlbGxT
ZXQgc2V0OwotICAgICAgICAKLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gQXJndW1lbnRz
PgotICAgICAgICBTcGFjZUFuZFNldChBcmd1bWVudHMmJi4uLiBhcmd1bWVudHMpCi0gICAgICAg
ICAgICA6IHNwYWNlKHN0ZDo6Zm9yd2FyZDxBcmd1bWVudHM+KGFyZ3VtZW50cykuLi4pCi0gICAg
ICAgICAgICAsIHNldChzcGFjZSkKLSAgICAgICAgewotICAgICAgICB9Ci0gICAgICAgIAotICAg
ICAgICBzdGF0aWMgSXNvQ2VsbFNldCYgc2V0Rm9yKFN1YnNwYWNlJiBzcGFjZSkKLSAgICAgICAg
ewotICAgICAgICAgICAgcmV0dXJuICpiaXR3aXNlX2Nhc3Q8SXNvQ2VsbFNldCo+KAotICAgICAg
ICAgICAgICAgIGJpdHdpc2VfY2FzdDxjaGFyKj4oJnNwYWNlKSAtCi0gICAgICAgICAgICAgICAg
T0JKRUNUX09GRlNFVE9GKFNwYWNlQW5kU2V0LCBzcGFjZSkgKwotICAgICAgICAgICAgICAgIE9C
SkVDVF9PRkZTRVRPRihTcGFjZUFuZFNldCwgc2V0KSk7Ci0gICAgICAgIH0KLSAgICB9OwotICAg
IAotICAgIFNwYWNlQW5kU2V0IGNvZGVCbG9ja1NwYWNlOworICAgIEFMV0FZU19JTkxJTkUgSXNv
U3Vic3BhY2UqIG5hbWUoKSB7IHJldHVybiBoZWFwLm5hbWU8bW9kZT4oKTsgfQogCi0gICAgdGVt
cGxhdGU8dHlwZW5hbWUgRnVuYz4KLSAgICB2b2lkIGZvckVhY2hDb2RlQmxvY2tTcGFjZShjb25z
dCBGdW5jJiBmdW5jKQotICAgIHsKLSAgICAgICAgLy8gVGhpcyBzaG91bGQgbm90IGluY2x1ZGUg
d2ViQXNzZW1ibHlDb2RlQmxvY2tTcGFjZSBiZWNhdXNlIHRoaXMgaXMgYWJvdXQgc3Vic2NsYXNz
ZXMgb2YKLSAgICAgICAgLy8gSlNDOjpDb2RlQmxvY2suCi0gICAgICAgIGZ1bmMoY29kZUJsb2Nr
U3BhY2UpOwotICAgIH0KKyAgICB1c2luZyBTcGFjZUFuZFNldCA9IEhlYXA6OlNwYWNlQW5kU2V0
OworICAgIEFMV0FZU19JTkxJTkUgU3BhY2VBbmRTZXQmIGNvZGVCbG9ja1NwYWNlKCkgeyByZXR1
cm4gaGVhcC5jb2RlQmxvY2tTcGFjZTsgfQogCiAgICAgRFlOQU1JQ19TUEFDRV9BTkRfU0VUX0RF
RklORV9NRU1CRVIoZXZhbEV4ZWN1dGFibGVTcGFjZSkKICAgICBEWU5BTUlDX1NQQUNFX0FORF9T
RVRfREVGSU5FX01FTUJFUihtb2R1bGVQcm9ncmFtRXhlY3V0YWJsZVNwYWNlKQotICAgIFNwYWNl
QW5kU2V0IGZ1bmN0aW9uRXhlY3V0YWJsZVNwYWNlOwotICAgIFNwYWNlQW5kU2V0IHByb2dyYW1F
eGVjdXRhYmxlU3BhY2U7Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jPgotICAgIHZvaWQg
Zm9yRWFjaFNjcmlwdEV4ZWN1dGFibGVTcGFjZShjb25zdCBGdW5jJiBmdW5jKQotICAgIHsKLSAg
ICAgICAgaWYgKG1fZXZhbEV4ZWN1dGFibGVTcGFjZSkKLSAgICAgICAgICAgIGZ1bmMoKm1fZXZh
bEV4ZWN1dGFibGVTcGFjZSk7Ci0gICAgICAgIGZ1bmMoZnVuY3Rpb25FeGVjdXRhYmxlU3BhY2Up
OwotICAgICAgICBpZiAobV9tb2R1bGVQcm9ncmFtRXhlY3V0YWJsZVNwYWNlKQotICAgICAgICAg
ICAgZnVuYygqbV9tb2R1bGVQcm9ncmFtRXhlY3V0YWJsZVNwYWNlKTsKLSAgICAgICAgZnVuYyhw
cm9ncmFtRXhlY3V0YWJsZVNwYWNlKTsKLSAgICB9Ci0KLSAgICBTcGFjZUFuZFNldCB1bmxpbmtl
ZEZ1bmN0aW9uRXhlY3V0YWJsZVNwYWNlOwogCi0jdW5kZWYgRFlOQU1JQ19TUEFDRV9BTkRfU0VU
X0RFRklORV9NRU1CRVIKKyAgICBBTFdBWVNfSU5MSU5FIFNwYWNlQW5kU2V0JiBmdW5jdGlvbkV4
ZWN1dGFibGVTcGFjZSgpIHsgcmV0dXJuIGhlYXAuZnVuY3Rpb25FeGVjdXRhYmxlU3BhY2U7IH0K
KyAgICBBTFdBWVNfSU5MSU5FIFNwYWNlQW5kU2V0JiBwcm9ncmFtRXhlY3V0YWJsZVNwYWNlKCkg
eyByZXR1cm4gaGVhcC5wcm9ncmFtRXhlY3V0YWJsZVNwYWNlOyB9CisgICAgQUxXQVlTX0lOTElO
RSBTcGFjZUFuZFNldCYgdW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGVTcGFjZSgpIHsgcmV0dXJu
IGhlYXAudW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGVTcGFjZTsgfQogCiAgICAgVk1UeXBlIHZt
VHlwZTsKICAgICBDbGllbnREYXRhKiBjbGllbnREYXRhOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvV2Vha01hcFByb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1dlYWtNYXBQcm90b3R5cGUuaAkocmV2aXNpb24gMjg2MDQz
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha01hcFByb3RvdHlwZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC00MSw3ICs0MSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vi
c3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRf
SVNPX1NVQlNQQUNFX1NIQVJBQkxFKFdlYWtNYXBQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICBy
ZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmpl
Y3RTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBXZWFrTWFwUHJvdG90eXBlKiBjcmVhdGUo
Vk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dlYWtPYmplY3RSZWZQcm90
b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFr
T2JqZWN0UmVmUHJvdG90eXBlLmgJKHJldmlzaW9uIDI4NjA0MykKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1dlYWtPYmplY3RSZWZQcm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpA
QCAtMzcsNyArMzcsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFj
ZUZvcihWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9T
SEFSQUJMRShXZWFrT2JqZWN0UmVmUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2
bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2Uo
KTsKICAgICB9CiAKICAgICBzdGF0aWMgV2Vha09iamVjdFJlZlByb3RvdHlwZSogY3JlYXRlKFZN
JiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUp
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFrU2V0UHJvdG90eXBlLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha1NldFByb3Rv
dHlwZS5oCShyZXZpc2lvbiAyODYwNDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9XZWFrU2V0UHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQxLDcgKzQxLDcgQEAgcHVi
bGljOgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsK
ICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoV2Vha1NldFByb3Rv
dHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAg
ICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIFdl
YWtTZXRQcm90b3R5cGUqIGNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIFN0cnVjdHVyZSogc3RydWN0dXJlKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3Rv
b2xzL0pTRG9sbGFyVk0uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90
b29scy9KU0RvbGxhclZNLmNwcAkocmV2aXNpb24gMjg2MDQzKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3Rvb2xzL0pTRG9sbGFyVk0uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzMsNyArMTMz
LDcgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlLCBTdWJzcGFjZUFj
Y2Vzcz4KICAgICBzdGF0aWMgQ29tcGxldGVTdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQog
ICAgIHsKLSAgICAgICAgcmV0dXJuICZ2bS5jZWxsU3BhY2U7CisgICAgICAgIHJldHVybiAmdm0u
Y2VsbFNwYWNlKCk7CiAgICAgfQogCiAgICAgSlNEb2xsYXJWTUNhbGxGcmFtZShWTSYgdm0sIFN0
cnVjdHVyZSogc3RydWN0dXJlKQpAQCAtMjIzLDcgKzIyMyw3IEBAIHB1YmxpYzoKICAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vic3BhY2VBY2Nlc3M+CiAgICAgc3RhdGljIENvbXBs
ZXRlU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7Ci0gICAgICAgIHJldHVybiAm
dm0uY2VsbFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLmNlbGxTcGFjZSgpOwogICAgIH0KIAog
ICAgIFJvb3QqIHJvb3QoKSBjb25zdCB7IHJldHVybiBtX3Jvb3QuZ2V0KCk7IH0KQEAgLTI4Nyw3
ICsyODcsNyBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUsIFN1YnNw
YWNlQWNjZXNzPgogICAgIHN0YXRpYyBDb21wbGV0ZVN1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYg
dm0pCiAgICAgewotICAgICAgICByZXR1cm4gJnZtLmRlc3RydWN0aWJsZU9iamVjdFNwYWNlOwor
ICAgICAgICByZXR1cm4gJnZtLmRlc3RydWN0aWJsZU9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAg
ICAgUm9vdChWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQpAQCAtMzU0LDcgKzM1NCw3IEBA
IHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vic3BhY2VBY2Nlc3M+
CiAgICAgc3RhdGljIENvbXBsZXRlU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7
Ci0gICAgICAgIHJldHVybiAmdm0uY2VsbFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLmNlbGxT
cGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBTaW1wbGVPYmplY3QqIGNyZWF0ZShWTSYgdm0s
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCkBAIC00MjYsNyArNDI2LDcgQEAgcHVibGlj
OgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlLCBTdWJzcGFjZUFjY2Vzcz4KICAgICBz
dGF0aWMgQ29tcGxldGVTdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKLSAgICAg
ICAgcmV0dXJuICZ2bS5jZWxsU3BhY2U7CisgICAgICAgIHJldHVybiAmdm0uY2VsbFNwYWNlKCk7
CiAgICAgfQogCiAgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiB2bSwg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCkBAIC01MDgs
NyArNTA4LDcgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlLCBTdWJz
cGFjZUFjY2Vzcz4KICAgICBzdGF0aWMgQ29tcGxldGVTdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0m
IHZtKQogICAgIHsKLSAgICAgICAgcmV0dXJuICZ2bS5jZWxsU3BhY2U7CisgICAgICAgIHJldHVy
biAmdm0uY2VsbFNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRl
U3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBw
cm90b3R5cGUpCkBAIC01OTAsNyArNTkwLDcgQEAgSUdOT1JFX1dBUk5JTkdTX0VORAogICAgIHRl
bXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlLCBTdWJzcGFjZUFjY2Vzcz4KICAgICBzdGF0aWMgQ29t
cGxldGVTdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKLSAgICAgICAgcmV0dXJu
ICZ2bS5jZWxsU3BhY2U7CisgICAgICAgIHJldHVybiAmdm0uY2VsbFNwYWNlKCk7CiAgICAgfQog
CiAgICAgc3RhdGljIFJ1bnRpbWVBcnJheSogY3JlYXRlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQpAQCAtNzcyLDcgKzc3Miw3IEBAIHB1YmxpYzoK
ICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vic3BhY2VBY2Nlc3M+CiAgICAgc3Rh
dGljIENvbXBsZXRlU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7Ci0gICAgICAg
IHJldHVybiAmdm0uY2VsbFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLmNlbGxTcGFjZSgpOwog
ICAgIH0KIAogICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQpAQCAtODcyLDcg
Kzg3Miw3IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vic3Bh
Y2VBY2Nlc3M+CiAgICAgc3RhdGljIENvbXBsZXRlU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2
bSkKICAgICB7Ci0gICAgICAgIHJldHVybiAmdm0uY2VsbFNwYWNlOworICAgICAgICByZXR1cm4g
JnZtLmNlbGxTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0
cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJv
dG90eXBlKQpAQCAtODk3LDcgKzg5Nyw3IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBDZWxsVHlwZSwgU3Vic3BhY2VBY2Nlc3M+CiAgICAgc3RhdGljIENvbXBsZXRlU3Vic3BhY2Uq
IHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7Ci0gICAgICAgIHJldHVybiAmdm0uY2VsbFNwYWNl
OworICAgICAgICByZXR1cm4gJnZtLmNlbGxTcGFjZSgpOwogICAgIH0KIAogICAgIE9iamVjdERv
aW5nU2lkZUVmZmVjdFB1dFdpdGhvdXRDb3JyZWN0U2xvdFN0YXR1cyhWTSYgdm0sIFN0cnVjdHVy
ZSogc3RydWN0dXJlKQpAQCAtOTQ4LDcgKzk0OCw3IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBDZWxsVHlwZSwgU3Vic3BhY2VBY2Nlc3M+CiAgICAgc3RhdGljIENvbXBsZXRlU3Vi
c3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7Ci0gICAgICAgIHJldHVybiAmdm0uY2Vs
bFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLmNlbGxTcGFjZSgpOwogICAgIH0KIAogICAgIHN0
YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQpAQCAtMTU4NSw3ICsxNTg1LDcgQEAgcHVi
bGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlLCBTdWJzcGFjZUFjY2Vzcz4KICAg
ICBzdGF0aWMgQ29tcGxldGVTdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKLSAg
ICAgICAgcmV0dXJuICZ2bS5jZWxsU3BhY2U7CisgICAgICAgIHJldHVybiAmdm0uY2VsbFNwYWNl
KCk7CiAgICAgfQogCiAgICAgSlNUZXN0Q3VzdG9tR2V0dGVyU2V0dGVyKFZNJiB2bSwgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUpCkBAIC0xODM4LDcgKzE4MzgsNyBAQCBwdWJsaWM6CiAgICAgdGVtcGxh
dGU8dHlwZW5hbWUgQ2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNzPgogICAgIHN0YXRpYyBDb21wbGV0
ZVN1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewotICAgICAgICByZXR1cm4gJnZt
LmRlc3RydWN0aWJsZU9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLmRlc3RydWN0aWJs
ZU9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAgY2xhc3MgQ2xpZW50IGZpbmFsIDogcHVibGlj
IFdhc206OlN0cmVhbWluZ1BhcnNlckNsaWVudCB7CkBAIC0xOTMzLDcgKzE5MzMsNyBAQCBwdWJs
aWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNzPgogICAg
IHN0YXRpYyBDb21wbGV0ZVN1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewotICAg
ICAgICByZXR1cm4gJnZtLmRlc3RydWN0aWJsZU9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4g
JnZtLmRlc3RydWN0aWJsZU9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAgV2FzbVN0cmVhbWlu
Z0NvbXBpbGVyKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFdhc206OkNvbXBpbGVyTW9k
ZSBjb21waWxlck1vZGUsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTUHJvbWlzZSog
cHJvbWlzZSwgSlNPYmplY3QqIGltcG9ydE9iamVjdCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS90b29scy9KU0RvbGxhclZNLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3Rvb2xzL0pTRG9sbGFyVk0uaAkocmV2aXNpb24gMjg2MDQzKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3Rvb2xzL0pTRG9sbGFyVk0uaAkod29ya2luZyBjb3B5KQpAQCAtNDIsNyArNDIs
NyBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUsIFN1YnNwYWNlQWNj
ZXNzPgogICAgIHN0YXRpYyBDb21wbGV0ZVN1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAg
ICAgewotICAgICAgICByZXR1cm4gJnZtLmNlbGxTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5j
ZWxsU3BhY2UoKTsKICAgICB9CiAgICAgCiAgICAgREVDTEFSRV9FWFBPUlRfSU5GTzsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHkuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5LmgJKHJldmlz
aW9uIDI4NjA0MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1i
bHkuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTYtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTYtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQxLDcgKzQxLDcgQEAgcHVibGljOgogICAgIHN0YXRp
YyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElD
X0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNXZWJBc3NlbWJseSwgQmFzZSk7Ci0gICAg
ICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFp
bk9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIEpTV2ViQXNzZW1ibHkqIGNyZWF0
ZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKik7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUNvbXBpbGVFcnJvclByb3RvdHlwZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5Q29tcGls
ZUVycm9yUHJvdG90eXBlLmgJKHJldmlzaW9uIDI4NjA0MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5Q29tcGlsZUVycm9yUHJvdG90eXBlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMTkgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMjEg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCkBAIC00MSw3ICs0MSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2Uq
IHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NV
QlNQQUNFX1NIQVJBQkxFKFdlYkFzc2VtYmx5Q29tcGlsZUVycm9yUHJvdG90eXBlLCBCYXNlKTsK
LSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZt
LnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgV2ViQXNzZW1ibHlDb21w
aWxlRXJyb3JQcm90b3R5cGUqIGNyZWF0ZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJl
Kik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUV4Y2Vw
dGlvblByb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L2pzL1dlYkFzc2VtYmx5RXhjZXB0aW9uUHJvdG90eXBlLmgJKHJldmlzaW9uIDI4NjA0MykKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5RXhjZXB0aW9uUHJvdG90
eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQxLDcgKzQxLDcgQEAgcHVibGljOgogICAgIHN0YXRp
YyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElD
X0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoV2ViQXNzZW1ibHlFeGNlcHRpb25Qcm90b3R5
cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAg
IHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBXZWJB
c3NlbWJseUV4Y2VwdGlvblByb3RvdHlwZSogY3JlYXRlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBT
dHJ1Y3R1cmUqKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2Vt
Ymx5R2xvYmFsUHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vanMvV2ViQXNzZW1ibHlHbG9iYWxQcm90b3R5cGUuaAkocmV2aXNpb24gMjg2MDQzKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlHbG9iYWxQcm90b3R5
cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDE5LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCkBAIC00MCw3ICs0MCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNv
U3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NF
UlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKFdlYkFzc2VtYmx5R2xvYmFsUHJvdG90eXBlLCBCYXNl
KTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4g
JnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgV2ViQXNzZW1ibHlH
bG9iYWxQcm90b3R5cGUqIGNyZWF0ZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKik7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUluc3RhbmNl
UHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMv
V2ViQXNzZW1ibHlJbnN0YW5jZVByb3RvdHlwZS5oCShyZXZpc2lvbiAyODYwNDMpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUluc3RhbmNlUHJvdG90eXBlLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE2
LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDE2LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCkBAIC00MSw3ICs0MSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNv
U3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NF
UlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKFdlYkFzc2VtYmx5SW5zdGFuY2VQcm90b3R5cGUsIEJh
c2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVy
biAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBXZWJBc3NlbWJs
eUluc3RhbmNlUHJvdG90eXBlKiBjcmVhdGUoVk0mLCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVy
ZSopOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlMaW5r
RXJyb3JQcm90b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9qcy9XZWJBc3NlbWJseUxpbmtFcnJvclByb3RvdHlwZS5oCShyZXZpc2lvbiAyODYwNDMpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUxpbmtFcnJvclByb3Rv
dHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxNi0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAxNi0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDEsNyArNDEsNyBAQCBwdWJsaWM6CiAgICAgc3Rh
dGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFU
SUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShXZWJBc3NlbWJseUxpbmtFcnJvclByb3Rv
dHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAg
ICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIFdl
YkFzc2VtYmx5TGlua0Vycm9yUHJvdG90eXBlKiBjcmVhdGUoVk0mLCBKU0dsb2JhbE9iamVjdCos
IFN0cnVjdHVyZSopOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNz
ZW1ibHlNZW1vcnlQcm90b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9qcy9XZWJBc3NlbWJseU1lbW9yeVByb3RvdHlwZS5oCShyZXZpc2lvbiAyODYwNDMp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseU1lbW9yeVByb3Rv
dHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxNi0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAxNi0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDEsNyArNDEsNyBAQCBwdWJsaWM6CiAgICAgc3Rh
dGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFU
SUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShXZWJBc3NlbWJseU1lbW9yeVByb3RvdHlw
ZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAg
cmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIFdlYkFz
c2VtYmx5TWVtb3J5UHJvdG90eXBlKiBjcmVhdGUoVk0mLCBKU0dsb2JhbE9iamVjdCosIFN0cnVj
dHVyZSopOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlN
b2R1bGVQcm90b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9qcy9XZWJBc3NlbWJseU1vZHVsZVByb3RvdHlwZS5oCShyZXZpc2lvbiAyODYwNDMpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseU1vZHVsZVByb3RvdHlwZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
Ni0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAxNi0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwpAQCAtNDEsNyArNDEsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIElz
b1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNT
RVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShXZWJBc3NlbWJseU1vZHVsZVByb3RvdHlwZSwgQmFz
ZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJu
ICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIFdlYkFzc2VtYmx5
TW9kdWxlUHJvdG90eXBlKiBjcmVhdGUoVk0mLCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSop
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlSdW50aW1l
RXJyb3JQcm90b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9qcy9XZWJBc3NlbWJseVJ1bnRpbWVFcnJvclByb3RvdHlwZS5oCShyZXZpc2lvbiAyODYwNDMp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseVJ1bnRpbWVFcnJv
clByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHly
aWdodCAoQykgMjAxNi0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAxNi0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
CiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDEsNyArNDEsNyBAQCBwdWJsaWM6CiAg
ICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewogICAgICAg
ICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShXZWJBc3NlbWJseVJ1bnRpbWVF
cnJvclByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFj
ZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAg
c3RhdGljIFdlYkFzc2VtYmx5UnVudGltZUVycm9yUHJvdG90eXBlKiBjcmVhdGUoVk0mLCBKU0ds
b2JhbE9iamVjdCosIFN0cnVjdHVyZSopOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vanMvV2ViQXNzZW1ibHlUYWJsZVByb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5VGFibGVQcm90b3R5cGUuaAkocmV2aXNp
b24gMjg2MDQzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlU
YWJsZVByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxNi0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAxNi0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDEsNyArNDEsNyBAQCBwdWJsaWM6
CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewogICAg
ICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShXZWJBc3NlbWJseVRhYmxl
UHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOwor
ICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0
aWMgV2ViQXNzZW1ibHlUYWJsZVByb3RvdHlwZSogY3JlYXRlKFZNJiwgSlNHbG9iYWxPYmplY3Qq
LCBTdHJ1Y3R1cmUqKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFz
c2VtYmx5VGFnUHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vanMvV2ViQXNzZW1ibHlUYWdQcm90b3R5cGUuaAkocmV2aXNpb24gMjg2MDQzKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlUYWdQcm90b3R5cGUuaAko
d29ya2luZyBjb3B5KQpAQCAtNDAsNyArNDAsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIElzb1N1
YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJU
X0lTT19TVUJTUEFDRV9TSEFSQUJMRShXZWJBc3NlbWJseVRhZ1Byb3RvdHlwZSwgQmFzZSk7Ci0g
ICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5w
bGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIFdlYkFzc2VtYmx5VGFnUHJv
dG90eXBlKiBjcmVhdGUoVk0mLCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSopOwpJbmRleDog
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Bc3luY0l0ZXJhdG9yLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Bc3luY0l0ZXJhdG9yLmgJKHJl
dmlzaW9uIDI4NjA0MykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQXN5bmNJ
dGVyYXRvci5oCSh3b3JraW5nIGNvcHkpCkBAIC00OCw3ICs0OCw3IEBAIHB1YmxpYzoKICAgICBz
dGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewog
ICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU0RPTUFzeW5jSXRl
cmF0b3JQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3Bh
Y2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAg
IHN0YXRpYyBKU0RPTUFzeW5jSXRlcmF0b3JQcm90b3R5cGUqIGNyZWF0ZShKU0M6OlZNJiB2bSwg
SlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OlN0cnVjdHVyZSogc3RydWN0
dXJlKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01JdGVyYXRvci5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NSXRlcmF0b3IuaAko
cmV2aXNpb24gMjg2MDQzKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01JdGVy
YXRvci5oCSh3b3JraW5nIGNvcHkpCkBAIC01NSw3ICs1NSw3IEBAIHB1YmxpYzoKICAgICBzdGF0
aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAg
ICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU0RPTUl0ZXJhdG9yUHJv
dG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAg
ICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMg
SlNET01JdGVyYXRvclByb3RvdHlwZSogY3JlYXRlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUpCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0ZpbGVTeXN0ZW1EaXJlY3RvcnlIYW5kbGVJdGVy
YXRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNGaWxl
U3lzdGVtRGlyZWN0b3J5SGFuZGxlSXRlcmF0b3IuY3BwCShyZXZpc2lvbiAyODYwNDMpCisrKyBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0ZpbGVTeXN0ZW1EaXJlY3RvcnlIYW5kbGVJdGVy
YXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU1LDkgKzU1LDkgQEAgSXNvU3Vic3BhY2UqIEpT
RmlsZVN5c3RlbURpcmVjdG9yeUhhbmRsZQogICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAgc3Rh
dGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBK
U0ZpbGVTeXN0ZW1EaXJlY3RvcnlIYW5kbGVJdGVyYXRvcj4gfHwgIUpTRmlsZVN5c3RlbURpcmVj
dG9yeUhhbmRsZUl0ZXJhdG9yOjpuZWVkc0Rlc3RydWN0aW9uKTsKICAgICBpZiBjb25zdGV4cHIg
KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTRmlsZVN5c3Rl
bURpcmVjdG9yeUhhbmRsZUl0ZXJhdG9yPikKLSAgICAgICAgY2xpZW50RGF0YS5zZXRGaWxlU3lz
dGVtRGlyZWN0b3J5SGFuZGxlSXRlcmF0b3JTcGFjZShtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJ
U09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxU
eXBlLCBKU0ZpbGVTeXN0ZW1EaXJlY3RvcnlIYW5kbGVJdGVyYXRvcikpOworICAgICAgICBjbGll
bnREYXRhLnNldEZpbGVTeXN0ZW1EaXJlY3RvcnlIYW5kbGVJdGVyYXRvclNwYWNlKG1ha2VVbmlx
dWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJs
ZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBKU0ZpbGVTeXN0ZW1EaXJlY3RvcnlIYW5kbGVJdGVyYXRv
cikpOwogICAgIGVsc2UKLSAgICAgICAgY2xpZW50RGF0YS5zZXRGaWxlU3lzdGVtRGlyZWN0b3J5
SGFuZGxlSXRlcmF0b3JTcGFjZShtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0Vf
SU5JVCh2bS5oZWFwLCAqdm0uY2VsbEhlYXBDZWxsVHlwZSwgSlNGaWxlU3lzdGVtRGlyZWN0b3J5
SGFuZGxlSXRlcmF0b3IpKTsKKyAgICAgICAgY2xpZW50RGF0YS5zZXRGaWxlU3lzdGVtRGlyZWN0
b3J5SGFuZGxlSXRlcmF0b3JTcGFjZShtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BB
Q0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCksIEpTRmlsZVN5c3RlbURpcmVj
dG9yeUhhbmRsZUl0ZXJhdG9yKSk7CiAgICAgYXV0byogc3BhY2UgPSBjbGllbnREYXRhLmZpbGVT
eXN0ZW1EaXJlY3RvcnlIYW5kbGVJdGVyYXRvclNwYWNlKCk7CiBJR05PUkVfV0FSTklOR1NfQkVH
SU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2lj
YWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9XZWJDb3JlSlND
bGllbnREYXRhLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9X
ZWJDb3JlSlNDbGllbnREYXRhLmNwcAkocmV2aXNpb24gMjg2MDQzKQorKysgU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvV2ViQ29yZUpTQ2xpZW50RGF0YS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTc3LDEyICs3NywxMiBAQCBKU1ZNQ2xpZW50RGF0YTo6SlNWTUNsaWVudERhdGEoVk0mIHZtKQog
ICAgICwgbV9oZWFwQ2VsbFR5cGVGb3JKU0F1ZGlvV29ya2xldEdsb2JhbFNjb3BlKEpTQzo6SXNv
SGVhcENlbGxUeXBlOjpjcmVhdGU8SlNBdWRpb1dvcmtsZXRHbG9iYWxTY29wZT4oKSkKICNlbmRp
ZgogICAgICwgbV9oZWFwQ2VsbFR5cGVGb3JKU0lEQlNlcmlhbGl6YXRpb25HbG9iYWxPYmplY3Qo
SlNDOjpJc29IZWFwQ2VsbFR5cGU6OmNyZWF0ZTxKU0lEQlNlcmlhbGl6YXRpb25HbG9iYWxPYmpl
Y3Q+KCkpCi0gICAgLCBtX2RvbUJ1aWx0aW5Db25zdHJ1Y3RvclNwYWNlIElTT19TVUJTUEFDRV9J
TklUKHZtLmhlYXAsICp2bS5jZWxsSGVhcENlbGxUeXBlLCBKU0RPTUJ1aWx0aW5Db25zdHJ1Y3Rv
ckJhc2UpCi0gICAgLCBtX2RvbUNvbnN0cnVjdG9yU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQodm0u
aGVhcCwgKnZtLmNlbGxIZWFwQ2VsbFR5cGUsIEpTRE9NQ29uc3RydWN0b3JCYXNlKQotICAgICwg
bV9kb21OYW1lc3BhY2VPYmplY3RTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0u
Y2VsbEhlYXBDZWxsVHlwZSwgSlNET01PYmplY3QpCi0gICAgLCBtX2RvbVdpbmRvd1Byb3BlcnRp
ZXNTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uY2VsbEhlYXBDZWxsVHlwZSwg
SlNET01XaW5kb3dQcm9wZXJ0aWVzKQorICAgICwgbV9kb21CdWlsdGluQ29uc3RydWN0b3JTcGFj
ZSBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCksIEpTRE9N
QnVpbHRpbkNvbnN0cnVjdG9yQmFzZSkKKyAgICAsIG1fZG9tQ29uc3RydWN0b3JTcGFjZSBJU09f
U1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCksIEpTRE9NQ29uc3Ry
dWN0b3JCYXNlKQorICAgICwgbV9kb21OYW1lc3BhY2VPYmplY3RTcGFjZSBJU09fU1VCU1BBQ0Vf
SU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCksIEpTRE9NT2JqZWN0KQorICAgICwg
bV9kb21XaW5kb3dQcm9wZXJ0aWVzU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0u
Y2VsbEhlYXBDZWxsVHlwZSgpLCBKU0RPTVdpbmRvd1Byb3BlcnRpZXMpCiAgICAgLCBtX3J1bnRp
bWVBcnJheVNwYWNlIElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICptX3J1bnRpbWVBcnJheUhl
YXBDZWxsVHlwZSwgUnVudGltZUFycmF5KQotICAgICwgbV9ydW50aW1lTWV0aG9kU3BhY2UgSVNP
X1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmNlbGxIZWFwQ2VsbFR5cGUsIFJ1bnRpbWVNZXRo
b2QpIC8vIEhhc2g6MHhmNzBjNGE4NQorICAgICwgbV9ydW50aW1lTWV0aG9kU3BhY2UgSVNPX1NV
QlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBSdW50aW1lTWV0aG9k
KSAvLyBIYXNoOjB4ZjcwYzRhODUKICAgICAsIG1fcnVudGltZU9iamVjdFNwYWNlIElTT19TVUJT
UEFDRV9JTklUKHZtLmhlYXAsICptX3J1bnRpbWVPYmplY3RIZWFwQ2VsbFR5cGUsIEpTQzo6Qmlu
ZGluZ3M6OlJ1bnRpbWVPYmplY3QpCiAgICAgLCBtX3dpbmRvd1Byb3h5U3BhY2UgSVNPX1NVQlNQ
QUNFX0lOSVQodm0uaGVhcCwgKm1fd2luZG93UHJveHlIZWFwQ2VsbFR5cGUsIEpTV2luZG93UHJv
eHkpCiAgICAgLCBtX2lkYlNlcmlhbGl6YXRpb25TcGFjZSBJU09fU1VCU1BBQ0VfSU5JVCh2bS5o
ZWFwLCAqbV9oZWFwQ2VsbFR5cGVGb3JKU0lEQlNlcmlhbGl6YXRpb25HbG9iYWxPYmplY3QsIEpT
SURCU2VyaWFsaXphdGlvbkdsb2JhbE9iamVjdCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCShyZXZpc2lvbiAyODYwNDMp
CisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQko
d29ya2luZyBjb3B5KQpAQCAtNDg1Niw5ICs0ODU2LDkgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50
YXRpb24KICAgICB9IGVsc2UgewogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBzdGF0
aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsICR7
Y2xhc3NOYW1lfT4gfHwgISR7Y2xhc3NOYW1lfTo6bmVlZHNEZXN0cnVjdGlvbik7XG4iKTsKICAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vf
b2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCAke2NsYXNzTmFtZX0+KVxuIik7Ci0gICAg
ICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvciR7aW50
ZXJmYWNlTmFtZX0gPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2
bS5oZWFwLCAqdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLCAke2NsYXNzTmFtZX0p
O1xuIik7CisgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICBzcGFjZXMubV9zdWJz
cGFjZUZvciR7aW50ZXJmYWNlTmFtZX0gPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VC
U1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwg
JHtjbGFzc05hbWV9KTtcbiIpOwogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBlbHNl
XG4iKTsKLSAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIHNwYWNlcy5tX3N1YnNw
YWNlRm9yJHtpbnRlcmZhY2VOYW1lfSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJT
UEFDRV9JTklUKHZtLmhlYXAsICp2bS5jZWxsSGVhcENlbGxUeXBlLCAke2NsYXNzTmFtZX0pO1xu
Iik7CisgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICBzcGFjZXMubV9zdWJzcGFj
ZUZvciR7aW50ZXJmYWNlTmFtZX0gPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BB
Q0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCksICR7Y2xhc3NOYW1lfSk7XG4i
KTsKICAgICB9CiAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgYXV0byogc3BhY2UgPSBzcGFj
ZXMubV9zdWJzcGFjZUZvciR7aW50ZXJmYWNlTmFtZX0uZ2V0KCk7XG4iKTsKICAgICBwdXNoKEBp
bXBsQ29udGVudCwgIklHTk9SRV9XQVJOSU5HU19CRUdJTihcInVucmVhY2hhYmxlLWNvZGVcIilc
biIpOwpAQCAtNjczMSw5ICs2NzMxLDkgQEAgcHVibGljOgogICAgICAgICAgICAgcmV0dXJuIHNw
YWNlOwogICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0
cnVjdGlibGVPYmplY3QsICR7aXRlcmF0b3JOYW1lfT4gfHwgISR7aXRlcmF0b3JOYW1lfTo6bmVl
ZHNEZXN0cnVjdGlvbik7CiAgICAgICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8
SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgJHtpdGVyYXRvck5hbWV9PikKLSAgICAgICAgICAg
IHNwYWNlcy5tX3N1YnNwYWNlRm9yJHtpdGVyYXRvck5hbWV9ID0gbWFrZVVuaXF1ZTxJc29TdWJz
cGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmRlc3RydWN0aWJsZU9iamVjdEhl
YXBDZWxsVHlwZS5nZXQoKSwgJHtpdGVyYXRvck5hbWV9KTsKKyAgICAgICAgICAgIHNwYWNlcy5t
X3N1YnNwYWNlRm9yJHtpdGVyYXRvck5hbWV9ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNP
X1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBl
KCksICR7aXRlcmF0b3JOYW1lfSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHNwYWNlcy5t
X3N1YnNwYWNlRm9yJHtpdGVyYXRvck5hbWV9ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNP
X1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmNlbGxIZWFwQ2VsbFR5cGUsICR7aXRlcmF0b3JO
YW1lfSk7CisgICAgICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvciR7aXRlcmF0b3JOYW1lfSA9
IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNl
bGxIZWFwQ2VsbFR5cGUoKSwgJHtpdGVyYXRvck5hbWV9KTsKICAgICAgICAgYXV0byogc3BhY2Ug
PSBzcGFjZXMubV9zdWJzcGFjZUZvciR7aXRlcmF0b3JOYW1lfS5nZXQoKTsKIElHTk9SRV9XQVJO
SU5HU19CRUdJTihcInVucmVhY2hhYmxlLWNvZGVcIikKIElHTk9SRV9XQVJOSU5HU19CRUdJTihc
InRhdXRvbG9naWNhbC1jb21wYXJlXCIpCkBAIC03NTI5LDcgKzc1MjksNyBAQCBzdWIgR2VuZXJh
dGVQcm90b3R5cGVEZWNsYXJhdGlvbgogICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBzdGF0
aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pXG4iKTsKICAgICBw
dXNoKEAkb3V0cHV0QXJyYXksICIgICAge1xuIik7CiAgICAgcHVzaChAJG91dHB1dEFycmF5LCAi
ICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRSgke3Byb3RvdHlwZUNs
YXNzTmFtZX0sIEJhc2UpO1xuIik7Ci0gICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgICAgICBy
ZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7XG4iKTsKKyAgICBwdXNoKEAkb3V0cHV0QXJyYXks
ICIgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpO1xuIik7CiAgICAgcHVzaChA
JG91dHB1dEFycmF5LCAiICAgIH1cbiIpOwogCiAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAg
IHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6
OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpXG4i
KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU0RPTVdp
bmRvdy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU0RPTVdpbmRvdy5oCShyZXZpc2lvbiAyODYwNDMpCisrKyBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNET01XaW5kb3cuaAkod29ya2luZyBjb3B5KQpAQCAt
ODUsNyArODUsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNw
YWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VC
U1BBQ0VfU0hBUkFCTEUoSlNET01XaW5kb3dQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1
cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RT
cGFjZSgpOwogICAgIH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVy
ZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpT
VmFsdWUgcHJvdG90eXBlKQogICAgIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTRGVkaWNhdGVkV29y
a2VyR2xvYmFsU2NvcGUuaAkocmV2aXNpb24gMjg2MDQzKQorKysgU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUuaAkod29y
a2luZyBjb3B5KQpAQCAtODIsNyArODIsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNv
U3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElD
X0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29w
ZVByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsK
KyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRp
YyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpJ
bmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTRXhwb3NlZFN0
YXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU0V4cG9zZWRTdGFyLmNwcAkocmV2aXNpb24gMjg2MDQzKQorKysgU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTRXhwb3NlZFN0YXIuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC03MSw3ICs3MSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFj
ZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJU
X0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU0V4cG9zZWRTdGFyUHJvdG90eXBlLCBCYXNlKTsKLSAg
ICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBs
YWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVh
dGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC0yMzYsOSArMjM2LDkgQEAgSlND
OjpJc29TdWJzcGFjZSogSlNFeHBvc2VkU3Rhcjo6c3Vic3BhYwogICAgICAgICByZXR1cm4gc3Bh
Y2U7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3Rp
YmxlT2JqZWN0LCBKU0V4cG9zZWRTdGFyPiB8fCAhSlNFeHBvc2VkU3Rhcjo6bmVlZHNEZXN0cnVj
dGlvbik7CiAgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1
Y3RpYmxlT2JqZWN0LCBKU0V4cG9zZWRTdGFyPikKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VG
b3JFeHBvc2VkU3RhciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklU
KHZtLmhlYXAsICp2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUsIEpTRXhwb3NlZFN0
YXIpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvckV4cG9zZWRTdGFyID0gbWFrZVVuaXF1
ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxl
T2JqZWN0SGVhcENlbGxUeXBlKCksIEpTRXhwb3NlZFN0YXIpOwogICAgIGVsc2UKLSAgICAgICAg
c3BhY2VzLm1fc3Vic3BhY2VGb3JFeHBvc2VkU3RhciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+
IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5jZWxsSGVhcENlbGxUeXBlLCBKU0V4cG9z
ZWRTdGFyKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JFeHBvc2VkU3RhciA9IG1ha2VV
bmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFw
Q2VsbFR5cGUoKSwgSlNFeHBvc2VkU3Rhcik7CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9z
dWJzcGFjZUZvckV4cG9zZWRTdGFyLmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJl
YWNoYWJsZS1jb2RlIikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBh
cmUiKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTRXhw
b3NlZFRvV29ya2VyQW5kV2luZG93LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNFeHBvc2VkVG9Xb3JrZXJBbmRXaW5kb3cuY3BwCShy
ZXZpc2lvbiAyODYwNDMpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNFeHBvc2VkVG9Xb3JrZXJBbmRXaW5kb3cuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTIs
NyArMTEyLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFj
ZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQ
QUNFX1NIQVJBQkxFKEpTRXhwb3NlZFRvV29ya2VyQW5kV2luZG93UHJvdG90eXBlLCBCYXNlKTsK
LSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZt
LnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBj
cmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC0yNTIsOSArMjUyLDkgQEAg
SlNDOjpJc29TdWJzcGFjZSogSlNFeHBvc2VkVG9Xb3JrZXJBbmRXaQogICAgICAgICByZXR1cm4g
c3BhY2U7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1
Y3RpYmxlT2JqZWN0LCBKU0V4cG9zZWRUb1dvcmtlckFuZFdpbmRvdz4gfHwgIUpTRXhwb3NlZFRv
V29ya2VyQW5kV2luZG93OjpuZWVkc0Rlc3RydWN0aW9uKTsKICAgICBpZiBjb25zdGV4cHIgKHN0
ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTRXhwb3NlZFRvV29y
a2VyQW5kV2luZG93PikKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JFeHBvc2VkVG9Xb3Jr
ZXJBbmRXaW5kb3cgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2
bS5oZWFwLCAqdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLCBKU0V4cG9zZWRUb1dv
cmtlckFuZFdpbmRvdyk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yRXhwb3NlZFRvV29y
a2VyQW5kV2luZG93ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQo
dm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCksIEpTRXhwb3NlZFRv
V29ya2VyQW5kV2luZG93KTsKICAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9y
RXhwb3NlZFRvV29ya2VyQW5kV2luZG93ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NV
QlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmNlbGxIZWFwQ2VsbFR5cGUsIEpTRXhwb3NlZFRvV29y
a2VyQW5kV2luZG93KTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JFeHBvc2VkVG9Xb3Jr
ZXJBbmRXaW5kb3cgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2
bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCksIEpTRXhwb3NlZFRvV29ya2VyQW5kV2luZG93
KTsKICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yRXhwb3NlZFRvV29ya2Vy
QW5kV2luZG93LmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2Rl
IikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRleDog
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTUGFpbnRXb3JrbGV0R2xv
YmFsU2NvcGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNQYWludFdvcmtsZXRHbG9iYWxTY29wZS5oCShyZXZpc2lvbiAyODYwNDMpCisr
KyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNQYWludFdvcmtsZXRH
bG9iYWxTY29wZS5oCSh3b3JraW5nIGNvcHkpCkBAIC04Miw3ICs4Miw3IEBAIHB1YmxpYzoKICAg
ICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAg
ewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1BhaW50V29y
a2xldEdsb2JhbFNjb3BlUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFp
bk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAg
ICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYg
dm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3Rv
dHlwZSkKICAgICB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUu
aAkocmV2aXNpb24gMjg2MDQzKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTU2VydmljZVdvcmtlckdsb2JhbFNjb3BlLmgJKHdvcmtpbmcgY29weSkKQEAgLTgy
LDcgKzgyLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFj
ZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQ
QUNFX1NIQVJBQkxFKEpTU2VydmljZVdvcmtlckdsb2JhbFNjb3BlUHJvdG90eXBlLCBCYXNlKTsK
LSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZt
LnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBj
cmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNTaGFyZWRXb3JrZXJHbG9iYWxTY29wZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1No
YXJlZFdvcmtlckdsb2JhbFNjb3BlLmgJKHJldmlzaW9uIDI4NjA0MykKKysrIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1NoYXJlZFdvcmtlckdsb2JhbFNjb3BlLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTgyLDcgKzgyLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6
Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNU
QVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTU2hhcmVkV29ya2VyR2xvYmFsU2Nv
cGVQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7
CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KICAgICBzdGF0
aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDRVJl
YWN0aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdENFUmVhY3Rpb25zLmNwcAkocmV2aXNpb24gMjg2MDQzKQorKysgU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENFUmVhY3Rpb25zLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtOTEsNyArOTEsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpT
Qzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAg
U1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0Q0VSZWFjdGlvbnNQcm90
b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAg
ICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KICAgICBzdGF0aWMgSlND
OjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKQEAgLTQz
OCw5ICs0MzgsOSBAQCBKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3RDRVJlYWN0aW9uczo6c3ViCiAg
ICAgICAgIHJldHVybiBzcGFjZTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92
PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdENFUmVhY3Rpb25zPiB8fCAhSlNUZXN0
Q0VSZWFjdGlvbnM6Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjpp
c19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0Q0VSZWFjdGlvbnM+
KQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RDRVJlYWN0aW9ucyA9IG1ha2VVbmlx
dWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5kZXN0cnVjdGli
bGVPYmplY3RIZWFwQ2VsbFR5cGUsIEpTVGVzdENFUmVhY3Rpb25zKTsKKyAgICAgICAgc3BhY2Vz
Lm1fc3Vic3BhY2VGb3JUZXN0Q0VSZWFjdGlvbnMgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJ
U09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5
cGUoKSwgSlNUZXN0Q0VSZWFjdGlvbnMpOwogICAgIGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vi
c3BhY2VGb3JUZXN0Q0VSZWFjdGlvbnMgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VC
U1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uY2VsbEhlYXBDZWxsVHlwZSwgSlNUZXN0Q0VSZWFjdGlv
bnMpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RDRVJlYWN0aW9ucyA9IG1ha2VV
bmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFw
Q2VsbFR5cGUoKSwgSlNUZXN0Q0VSZWFjdGlvbnMpOwogICAgIGF1dG8qIHNwYWNlID0gc3BhY2Vz
Lm1fc3Vic3BhY2VGb3JUZXN0Q0VSZWFjdGlvbnMuZ2V0KCk7CiBJR05PUkVfV0FSTklOR1NfQkVH
SU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2lj
YWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENFUmVhY3Rpb25zU3RyaW5n
aWZpZXIuY3BwCShyZXZpc2lvbiAyODYwNDMpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllci5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTc1LDcgKzc1LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNw
YWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NF
UlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXJQcm90
b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAg
ICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KICAgICBzdGF0aWMgSlND
OjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKQEAgLTI2
NCw5ICsyNjQsOSBAQCBKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3RDRVJlYWN0aW9uc1N0cmluCiAg
ICAgICAgIHJldHVybiBzcGFjZTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92
PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXI+
IHx8ICFKU1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyOjpuZWVkc0Rlc3RydWN0aW9uKTsKICAg
ICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmpl
Y3QsIEpTVGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXI+KQotICAgICAgICBzcGFjZXMubV9zdWJz
cGFjZUZvclRlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFj
ZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBD
ZWxsVHlwZSwgSlNUZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllcik7CisgICAgICAgIHNwYWNlcy5t
X3N1YnNwYWNlRm9yVGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXIgPSBtYWtlVW5pcXVlPElzb1N1
YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RI
ZWFwQ2VsbFR5cGUoKSwgSlNUZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllcik7CiAgICAgZWxzZQot
ICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyID0g
bWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmNl
bGxIZWFwQ2VsbFR5cGUsIEpTVGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXIpOworICAgICAgICBz
cGFjZXMubV9zdWJzcGFjZUZvclRlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyID0gbWFrZVVuaXF1
ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxs
VHlwZSgpLCBKU1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyKTsKICAgICBhdXRvKiBzcGFjZSA9
IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXIuZ2V0KCk7CiBJ
R05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdT
X0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2FsbFRyYWNlci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENhbGxUcmFjZXIu
Y3BwCShyZXZpc2lvbiAyODYwNDMpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0Q2FsbFRyYWNlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk3LDcgKzk3
LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihK
U0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NI
QVJBQkxFKEpTVGVzdENhbGxUcmFjZXJQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4g
JnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFj
ZSgpOwogICAgIH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShK
U0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFs
dWUgcHJvdG90eXBlKQogICAgIHsKQEAgLTUxMyw5ICs1MTMsOSBAQCBKU0M6Oklzb1N1YnNwYWNl
KiBKU1Rlc3RDYWxsVHJhY2VyOjpzdWJzCiAgICAgICAgIHJldHVybiBzcGFjZTsKICAgICBzdGF0
aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpT
VGVzdENhbGxUcmFjZXI+IHx8ICFKU1Rlc3RDYWxsVHJhY2VyOjpuZWVkc0Rlc3RydWN0aW9uKTsK
ICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVP
YmplY3QsIEpTVGVzdENhbGxUcmFjZXI+KQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRl
c3RDYWxsVHJhY2VyID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQo
dm0uaGVhcCwgKnZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSwgSlNUZXN0Q2FsbFRy
YWNlcik7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdENhbGxUcmFjZXIgPSBtYWtl
VW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVj
dGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0Q2FsbFRyYWNlcik7CiAgICAgZWxzZQot
ICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RDYWxsVHJhY2VyID0gbWFrZVVuaXF1ZTxJ
c29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmNlbGxIZWFwQ2VsbFR5
cGUsIEpTVGVzdENhbGxUcmFjZXIpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RD
YWxsVHJhY2VyID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0u
aGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RDYWxsVHJhY2VyKTsKICAgICBhdXRv
KiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdENhbGxUcmFjZXIuZ2V0KCk7CiBJR05P
UkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JF
R0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3IuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3Rvci5jcHAJKHJldmlzaW9uIDI4NjA0MykK
KysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDbGFzc1dp
dGhKU0J1aWx0aW5Db25zdHJ1Y3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY0LDcgKzY0LDcg
QEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6
OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJB
QkxFKEpTVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yUHJvdG90eXBlLCBCYXNlKTsK
LSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZt
LnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBj
cmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC0xNzYsOSArMTc2LDkgQEAg
SlNDOjpJc29TdWJzcGFjZSogSlNUZXN0Q2xhc3NXaXRoSlNCdWlsdAogICAgICAgICByZXR1cm4g
c3BhY2U7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1
Y3RpYmxlT2JqZWN0LCBKU1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3Rvcj4gfHwgIUpT
VGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yOjpuZWVkc0Rlc3RydWN0aW9uKTsKICAg
ICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmpl
Y3QsIEpTVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yPikKLSAgICAgICAgc3BhY2Vz
Lm1fc3Vic3BhY2VGb3JUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3IgPSBtYWtlVW5p
cXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uZGVzdHJ1Y3Rp
YmxlT2JqZWN0SGVhcENlbGxUeXBlLCBKU1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3Rv
cik7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNv
bnN0cnVjdG9yID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0u
aGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCksIEpTVGVzdENsYXNzV2l0
aEpTQnVpbHRpbkNvbnN0cnVjdG9yKTsKICAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNw
YWNlRm9yVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yID0gbWFrZVVuaXF1ZTxJc29T
dWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmNlbGxIZWFwQ2VsbFR5cGUs
IEpTVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yKTsKKyAgICAgICAgc3BhY2VzLm1f
c3Vic3BhY2VGb3JUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3IgPSBtYWtlVW5pcXVl
PElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxU
eXBlKCksIEpTVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yKTsKICAgICBhdXRvKiBz
cGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVj
dG9yLmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKIElH
Tk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRleDogU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENvbmRpdGlvbmFsSW5jbHVk
ZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzLmNwcAkocmV2aXNpb24gMjg2MDQzKQorKysg
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENvbmRpdGlvbmFs
SW5jbHVkZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjcsNyArMTI3LDcgQEAgcHVibGljOgog
ICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKICAg
ICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdENv
bmRpdGlvbmFsSW5jbHVkZXNQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBs
YWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwog
ICAgIH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZN
JiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJv
dG90eXBlKQogICAgIHsKQEAgLTc4OSw5ICs3ODksOSBAQCBKU0M6Oklzb1N1YnNwYWNlKiBKU1Rl
c3RDb25kaXRpb25hbEluY2x1CiAgICAgICAgIHJldHVybiBzcGFjZTsKICAgICBzdGF0aWNfYXNz
ZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdENv
bmRpdGlvbmFsSW5jbHVkZXM+IHx8ICFKU1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzOjpuZWVkc0Rl
c3RydWN0aW9uKTsKICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNE
ZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdENvbmRpdGlvbmFsSW5jbHVkZXM+KQotICAgICAgICBz
cGFjZXMubV9zdWJzcGFjZUZvclRlc3RDb25kaXRpb25hbEluY2x1ZGVzID0gbWFrZVVuaXF1ZTxJ
c29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmRlc3RydWN0aWJsZU9i
amVjdEhlYXBDZWxsVHlwZSwgSlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlcyk7CisgICAgICAgIHNw
YWNlcy5tX3N1YnNwYWNlRm9yVGVzdENvbmRpdGlvbmFsSW5jbHVkZXMgPSBtYWtlVW5pcXVlPElz
b1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmpl
Y3RIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlcyk7CiAgICAgZWxzZQot
ICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RDb25kaXRpb25hbEluY2x1ZGVzID0gbWFr
ZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmNlbGxI
ZWFwQ2VsbFR5cGUsIEpTVGVzdENvbmRpdGlvbmFsSW5jbHVkZXMpOworICAgICAgICBzcGFjZXMu
bV9zdWJzcGFjZUZvclRlc3RDb25kaXRpb25hbEluY2x1ZGVzID0gbWFrZVVuaXF1ZTxJc29TdWJz
cGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBK
U1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzKTsKICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1
YnNwYWNlRm9yVGVzdENvbmRpdGlvbmFsSW5jbHVkZXMuZ2V0KCk7CiBJR05PUkVfV0FSTklOR1Nf
QkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xv
Z2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0Q29uZGl0aW9uYWxseVJlYWRXcml0ZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENvbmRpdGlvbmFsbHlS
ZWFkV3JpdGUuY3BwCShyZXZpc2lvbiAyODYwNDMpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q29uZGl0aW9uYWxseVJlYWRXcml0ZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTk4LDcgKzk4LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1
YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19B
U1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdENvbmRpdGlvbmFsbHlSZWFkV3JpdGVQ
cm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7Cisg
ICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KICAgICBzdGF0aWMg
SlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKQEAg
LTYxMSw5ICs2MTEsOSBAQCBKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3RDb25kaXRpb25hbGx5UmVh
CiAgICAgICAgIHJldHVybiBzcGFjZTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9v
Zl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdENvbmRpdGlvbmFsbHlSZWFkV3Jp
dGU+IHx8ICFKU1Rlc3RDb25kaXRpb25hbGx5UmVhZFdyaXRlOjpuZWVkc0Rlc3RydWN0aW9uKTsK
ICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVP
YmplY3QsIEpTVGVzdENvbmRpdGlvbmFsbHlSZWFkV3JpdGU+KQotICAgICAgICBzcGFjZXMubV9z
dWJzcGFjZUZvclRlc3RDb25kaXRpb25hbGx5UmVhZFdyaXRlID0gbWFrZVVuaXF1ZTxJc29TdWJz
cGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmRlc3RydWN0aWJsZU9iamVjdEhl
YXBDZWxsVHlwZSwgSlNUZXN0Q29uZGl0aW9uYWxseVJlYWRXcml0ZSk7CisgICAgICAgIHNwYWNl
cy5tX3N1YnNwYWNlRm9yVGVzdENvbmRpdGlvbmFsbHlSZWFkV3JpdGUgPSBtYWtlVW5pcXVlPElz
b1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmpl
Y3RIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0Q29uZGl0aW9uYWxseVJlYWRXcml0ZSk7CiAgICAgZWxz
ZQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RDb25kaXRpb25hbGx5UmVhZFdyaXRl
ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZt
LmNlbGxIZWFwQ2VsbFR5cGUsIEpTVGVzdENvbmRpdGlvbmFsbHlSZWFkV3JpdGUpOworICAgICAg
ICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RDb25kaXRpb25hbGx5UmVhZFdyaXRlID0gbWFrZVVu
aXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBD
ZWxsVHlwZSgpLCBKU1Rlc3RDb25kaXRpb25hbGx5UmVhZFdyaXRlKTsKICAgICBhdXRvKiBzcGFj
ZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdENvbmRpdGlvbmFsbHlSZWFkV3JpdGUuZ2V0KCk7
CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5J
TkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RE9NSklULmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RE9NSklULmNwcAko
cmV2aXNpb24gMjg2MDQzKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdERPTUpJVC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ4MSw3ICs0ODEsNyBAQCBw
dWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0m
IHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUo
SlNUZXN0RE9NSklUUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9i
amVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9
CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0s
IEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlw
ZSkKICAgICB7CkBAIC0xMjUyLDkgKzEyNTIsOSBAQCBKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3RE
T01KSVQ6OnN1YnNwYWNlCiAgICAgICAgIHJldHVybiBzcGFjZTsKICAgICBzdGF0aWNfYXNzZXJ0
KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdERPTUpJ
VD4gfHwgIUpTVGVzdERPTUpJVDo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3RleHBy
IChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RET01K
SVQ+KQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RET01KSVQgPSBtYWtlVW5pcXVl
PElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uZGVzdHJ1Y3RpYmxl
T2JqZWN0SGVhcENlbGxUeXBlLCBKU1Rlc3RET01KSVQpOworICAgICAgICBzcGFjZXMubV9zdWJz
cGFjZUZvclRlc3RET01KSVQgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0Vf
SU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0
RE9NSklUKTsKICAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdERPTUpJ
VCA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2
bS5jZWxsSGVhcENlbGxUeXBlLCBKU1Rlc3RET01KSVQpOworICAgICAgICBzcGFjZXMubV9zdWJz
cGFjZUZvclRlc3RET01KSVQgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0Vf
SU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCksIEpTVGVzdERPTUpJVCk7CiAgICAg
YXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RET01KSVQuZ2V0KCk7CiBJR05P
UkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JF
R0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RGVmYXVsdFRvSlNPTi5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERlZmF1bHRUb0pT
T04uY3BwCShyZXZpc2lvbiAyODYwNDMpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0RGVmYXVsdFRvSlNPTi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEy
NCw3ICsxMjQsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNw
YWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VC
U1BBQ0VfU0hBUkFCTEUoSlNUZXN0RGVmYXVsdFRvSlNPTlByb3RvdHlwZSwgQmFzZSk7Ci0gICAg
ICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFp
bk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRl
U3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAtODA4LDkgKzgwOCw5IEBAIEpTQzo6
SXNvU3Vic3BhY2UqIEpTVGVzdERlZmF1bHRUb0pTT046OnMKICAgICAgICAgcmV0dXJuIHNwYWNl
OwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJs
ZU9iamVjdCwgSlNUZXN0RGVmYXVsdFRvSlNPTj4gfHwgIUpTVGVzdERlZmF1bHRUb0pTT046Om5l
ZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlND
OjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0RGVmYXVsdFRvSlNPTj4pCi0gICAgICAgIHNw
YWNlcy5tX3N1YnNwYWNlRm9yVGVzdERlZmF1bHRUb0pTT04gPSBtYWtlVW5pcXVlPElzb1N1YnNw
YWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVh
cENlbGxUeXBlLCBKU1Rlc3REZWZhdWx0VG9KU09OKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3Bh
Y2VGb3JUZXN0RGVmYXVsdFRvSlNPTiA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJT
UEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBK
U1Rlc3REZWZhdWx0VG9KU09OKTsKICAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNl
Rm9yVGVzdERlZmF1bHRUb0pTT04gPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BB
Q0VfSU5JVCh2bS5oZWFwLCAqdm0uY2VsbEhlYXBDZWxsVHlwZSwgSlNUZXN0RGVmYXVsdFRvSlNP
Tik7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdERlZmF1bHRUb0pTT04gPSBtYWtl
VW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVh
cENlbGxUeXBlKCksIEpTVGVzdERlZmF1bHRUb0pTT04pOwogICAgIGF1dG8qIHNwYWNlID0gc3Bh
Y2VzLm1fc3Vic3BhY2VGb3JUZXN0RGVmYXVsdFRvSlNPTi5nZXQoKTsKIElHTk9SRV9XQVJOSU5H
U19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRv
bG9naWNhbC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3REZWZh
dWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWQuY3BwCShyZXZpc2lvbiAyODYwNDMpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RGVmYXVsdFRvSlNPTkZp
bHRlcmVkQnlFeHBvc2VkLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzUsNyArNzUsNyBAQCBwdWJs
aWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZt
KQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNU
ZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkUHJvdG90eXBlLCBCYXNlKTsKLSAgICAg
ICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWlu
T2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVT
dHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
SlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC0yNzAsOSArMjcwLDkgQEAgSlNDOjpJ
c29TdWJzcGFjZSogSlNUZXN0RGVmYXVsdFRvSlNPTkZpbAogICAgICAgICByZXR1cm4gc3BhY2U7
CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxl
T2JqZWN0LCBKU1Rlc3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWQ+IHx8ICFKU1Rlc3RE
ZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWQ6Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlm
IGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwg
SlNUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkPikKLSAgICAgICAgc3BhY2VzLm1f
c3Vic3BhY2VGb3JUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkID0gbWFrZVVuaXF1
ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmRlc3RydWN0aWJs
ZU9iamVjdEhlYXBDZWxsVHlwZSwgSlNUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2Vk
KTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVk
QnlFeHBvc2VkID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0u
aGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCksIEpTVGVzdERlZmF1bHRU
b0pTT05GaWx0ZXJlZEJ5RXhwb3NlZCk7CiAgICAgZWxzZQotICAgICAgICBzcGFjZXMubV9zdWJz
cGFjZUZvclRlc3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWQgPSBtYWtlVW5pcXVlPElz
b1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uY2VsbEhlYXBDZWxsVHlw
ZSwgSlNUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkKTsKKyAgICAgICAgc3BhY2Vz
Lm1fc3Vic3BhY2VGb3JUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkID0gbWFrZVVu
aXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBD
ZWxsVHlwZSgpLCBKU1Rlc3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWQpOwogICAgIGF1
dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVk
QnlFeHBvc2VkLmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2Rl
IikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRleDog
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERlZmF1bHRUb0pT
T05JbmRpcmVjdEluaGVyaXRhbmNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RGVmYXVsdFRvSlNPTkluZGlyZWN0SW5oZXJp
dGFuY2UuY3BwCShyZXZpc2lvbiAyODYwNDMpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0RGVmYXVsdFRvSlNPTkluZGlyZWN0SW5oZXJpdGFuY2UuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC02Miw3ICs2Miw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlND
OjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBT
VEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3REZWZhdWx0VG9KU09OSW5k
aXJlY3RJbmhlcml0YW5jZVByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxh
aW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAg
ICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0m
IHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90
b3R5cGUpCiAgICAgewpAQCAtMTYyLDkgKzE2Miw5IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVz
dERlZmF1bHRUb0pTT05JbmQKICAgICAgICAgcmV0dXJuIHNwYWNlOwogICAgIHN0YXRpY19hc3Nl
cnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0RGVm
YXVsdFRvSlNPTkluZGlyZWN0SW5oZXJpdGFuY2U+IHx8ICFKU1Rlc3REZWZhdWx0VG9KU09OSW5k
aXJlY3RJbmhlcml0YW5jZTo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3RleHByIChz
dGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3REZWZhdWx0
VG9KU09OSW5kaXJlY3RJbmhlcml0YW5jZT4pCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9y
VGVzdERlZmF1bHRUb0pTT05JbmRpcmVjdEluaGVyaXRhbmNlID0gbWFrZVVuaXF1ZTxJc29TdWJz
cGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmRlc3RydWN0aWJsZU9iamVjdEhl
YXBDZWxsVHlwZSwgSlNUZXN0RGVmYXVsdFRvSlNPTkluZGlyZWN0SW5oZXJpdGFuY2UpOworICAg
ICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3REZWZhdWx0VG9KU09OSW5kaXJlY3RJbmhlcml0
YW5jZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAs
IHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3REZWZhdWx0VG9KU09O
SW5kaXJlY3RJbmhlcml0YW5jZSk7CiAgICAgZWxzZQotICAgICAgICBzcGFjZXMubV9zdWJzcGFj
ZUZvclRlc3REZWZhdWx0VG9KU09OSW5kaXJlY3RJbmhlcml0YW5jZSA9IG1ha2VVbmlxdWU8SXNv
U3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5jZWxsSGVhcENlbGxUeXBl
LCBKU1Rlc3REZWZhdWx0VG9KU09OSW5kaXJlY3RJbmhlcml0YW5jZSk7CisgICAgICAgIHNwYWNl
cy5tX3N1YnNwYWNlRm9yVGVzdERlZmF1bHRUb0pTT05JbmRpcmVjdEluaGVyaXRhbmNlID0gbWFr
ZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhl
YXBDZWxsVHlwZSgpLCBKU1Rlc3REZWZhdWx0VG9KU09OSW5kaXJlY3RJbmhlcml0YW5jZSk7CiAg
ICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3REZWZhdWx0VG9KU09OSW5k
aXJlY3RJbmhlcml0YW5jZS5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFi
bGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3REZWZh
dWx0VG9KU09OSW5oZXJpdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERlZmF1bHRUb0pTT05Jbmhlcml0LmNwcAkocmV2aXNp
b24gMjg2MDQzKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdERlZmF1bHRUb0pTT05Jbmhlcml0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtODksNyArODks
NyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpT
Qzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hB
UkFCTEUoSlNUZXN0RGVmYXVsdFRvSlNPTkluaGVyaXRQcm90b3R5cGUsIEJhc2UpOwotICAgICAg
ICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5P
YmplY3RTcGFjZSgpOwogICAgIH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0
cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBK
U0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKQEAgLTI5Miw5ICsyOTIsOSBAQCBKU0M6Oklz
b1N1YnNwYWNlKiBKU1Rlc3REZWZhdWx0VG9KU09OSW5oCiAgICAgICAgIHJldHVybiBzcGFjZTsK
ICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVP
YmplY3QsIEpTVGVzdERlZmF1bHRUb0pTT05Jbmhlcml0PiB8fCAhSlNUZXN0RGVmYXVsdFRvSlNP
TkluaGVyaXQ6Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19i
YXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0RGVmYXVsdFRvSlNPTklu
aGVyaXQ+KQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3REZWZhdWx0VG9KU09OSW5o
ZXJpdCA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAs
ICp2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUsIEpTVGVzdERlZmF1bHRUb0pTT05J
bmhlcml0KTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0RGVmYXVsdFRvSlNPTklu
aGVyaXQgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFw
LCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0RGVmYXVsdFRvSlNP
TkluaGVyaXQpOwogICAgIGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0RGVm
YXVsdFRvSlNPTkluaGVyaXQgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0Vf
SU5JVCh2bS5oZWFwLCAqdm0uY2VsbEhlYXBDZWxsVHlwZSwgSlNUZXN0RGVmYXVsdFRvSlNPTklu
aGVyaXQpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3REZWZhdWx0VG9KU09OSW5o
ZXJpdCA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAs
IHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0RGVmYXVsdFRvSlNPTkluaGVyaXQpOwogICAg
IGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0RGVmYXVsdFRvSlNPTkluaGVy
aXQuZ2V0KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdO
T1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RGVmYXVsdFRvSlNPTkluaGVy
aXRGaW5hbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdERlZmF1bHRUb0pTT05Jbmhlcml0RmluYWwuY3BwCShyZXZpc2lvbiAy
ODYwNDMpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
RGVmYXVsdFRvSlNPTkluaGVyaXRGaW5hbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTkxLDcgKzkx
LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihK
U0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NI
QVJBQkxFKEpTVGVzdERlZmF1bHRUb0pTT05Jbmhlcml0RmluYWxQcm90b3R5cGUsIEJhc2UpOwot
ICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0u
cGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNy
ZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKQEAgLTMzMiw5ICszMzIsOSBAQCBK
U0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3REZWZhdWx0VG9KU09OSW5oCiAgICAgICAgIHJldHVybiBz
cGFjZTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVj
dGlibGVPYmplY3QsIEpTVGVzdERlZmF1bHRUb0pTT05Jbmhlcml0RmluYWw+IHx8ICFKU1Rlc3RE
ZWZhdWx0VG9KU09OSW5oZXJpdEZpbmFsOjpuZWVkc0Rlc3RydWN0aW9uKTsKICAgICBpZiBjb25z
dGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVz
dERlZmF1bHRUb0pTT05Jbmhlcml0RmluYWw+KQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZv
clRlc3REZWZhdWx0VG9KU09OSW5oZXJpdEZpbmFsID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4g
SVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxs
VHlwZSwgSlNUZXN0RGVmYXVsdFRvSlNPTkluaGVyaXRGaW5hbCk7CisgICAgICAgIHNwYWNlcy5t
X3N1YnNwYWNlRm9yVGVzdERlZmF1bHRUb0pTT05Jbmhlcml0RmluYWwgPSBtYWtlVW5pcXVlPElz
b1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmpl
Y3RIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0RGVmYXVsdFRvSlNPTkluaGVyaXRGaW5hbCk7CiAgICAg
ZWxzZQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3REZWZhdWx0VG9KU09OSW5oZXJp
dEZpbmFsID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVh
cCwgKnZtLmNlbGxIZWFwQ2VsbFR5cGUsIEpTVGVzdERlZmF1bHRUb0pTT05Jbmhlcml0RmluYWwp
OworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3REZWZhdWx0VG9KU09OSW5oZXJpdEZp
bmFsID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwg
dm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3REZWZhdWx0VG9KU09OSW5oZXJpdEZpbmFsKTsK
ICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdERlZmF1bHRUb0pTT05J
bmhlcml0RmluYWwuZ2V0KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNv
ZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RGVsZWdhdGVU
b1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0
aWNBdHRyaWJ1dGUuY3BwCShyZXZpc2lvbiAyODYwNDMpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJp
YnV0ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcwLDcgKzcwLDcgQEAgcHVibGljOgogICAgIHN0
YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAg
ICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdERlbGVnYXRl
VG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGVQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1
cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RT
cGFjZSgpOwogICAgIH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVy
ZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpT
VmFsdWUgcHJvdG90eXBlKQogICAgIHsKQEAgLTI0Niw5ICsyNDYsOSBAQCBKU0M6Oklzb1N1YnNw
YWNlKiBKU1Rlc3REZWxlZ2F0ZVRvU2hhcmVkCiAgICAgICAgIHJldHVybiBzcGFjZTsKICAgICBz
dGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3Qs
IEpTVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGU+IHx8ICFKU1Rlc3REZWxl
Z2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlOjpuZWVkc0Rlc3RydWN0aW9uKTsKICAgICBp
ZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3Qs
IEpTVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGU+KQotICAgICAgICBzcGFj
ZXMubV9zdWJzcGFjZUZvclRlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlID0g
bWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmRl
c3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSwgSlNUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRo
ZXRpY0F0dHJpYnV0ZSk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdERlbGVnYXRl
VG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGUgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09f
U1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUo
KSwgSlNUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZSk7CiAgICAgZWxzZQot
ICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGlj
QXR0cmlidXRlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0u
aGVhcCwgKnZtLmNlbGxIZWFwQ2VsbFR5cGUsIEpTVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0
aWNBdHRyaWJ1dGUpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3REZWxlZ2F0ZVRv
U2hhcmVkU3ludGhldGljQXR0cmlidXRlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NV
QlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3REZWxlZ2F0
ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlKTsKICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5t
X3N1YnNwYWNlRm9yVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGUuZ2V0KCk7
CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5J
TkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RG9tYWluU2VjdXJpdHkuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3REb21h
aW5TZWN1cml0eS5jcHAJKHJldmlzaW9uIDI4NjA0MykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3REb21haW5TZWN1cml0eS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTgwLDcgKzgwLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNl
KiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRf
SVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdERvbWFpblNlY3VyaXR5UHJvdG90eXBlLCBCYXNl
KTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4g
JnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJl
KiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC0zMjAsOSArMzIwLDkg
QEAgSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0RG9tYWluU2VjdXJpdHk6OgogICAgICAgICByZXR1
cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVz
dHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3REb21haW5TZWN1cml0eT4gfHwgIUpTVGVzdERvbWFpblNl
Y3VyaXR5OjpuZWVkc0Rlc3RydWN0aW9uKTsKICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFz
ZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdERvbWFpblNlY3VyaXR5PikK
LSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0RG9tYWluU2VjdXJpdHkgPSBtYWtlVW5p
cXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uZGVzdHJ1Y3Rp
YmxlT2JqZWN0SGVhcENlbGxUeXBlLCBKU1Rlc3REb21haW5TZWN1cml0eSk7CisgICAgICAgIHNw
YWNlcy5tX3N1YnNwYWNlRm9yVGVzdERvbWFpblNlY3VyaXR5ID0gbWFrZVVuaXF1ZTxJc29TdWJz
cGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVh
cENlbGxUeXBlKCksIEpTVGVzdERvbWFpblNlY3VyaXR5KTsKICAgICBlbHNlCi0gICAgICAgIHNw
YWNlcy5tX3N1YnNwYWNlRm9yVGVzdERvbWFpblNlY3VyaXR5ID0gbWFrZVVuaXF1ZTxJc29TdWJz
cGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmNlbGxIZWFwQ2VsbFR5cGUsIEpT
VGVzdERvbWFpblNlY3VyaXR5KTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0RG9t
YWluU2VjdXJpdHkgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2
bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCksIEpTVGVzdERvbWFpblNlY3VyaXR5KTsKICAg
ICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdERvbWFpblNlY3VyaXR5Lmdl
dCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKIElHTk9SRV9X
QVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRleDogU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEVuYWJsZWRCeVNldHRpbmcuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RFbmFibGVkQnlTZXR0aW5nLmNwcAkocmV2aXNpb24gMjg2MDQzKQorKysgU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEVuYWJsZWRCeVNldHRpbmcuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC05Miw3ICs5Miw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJ
c29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFU
SUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3RFbmFibGVkQnlTZXR0aW5nUHJv
dG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAg
ICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpT
Qzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC00
NTksOSArNDU5LDkgQEAgSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0RW5hYmxlZEJ5U2V0dGluZwog
ICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2Zf
djxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RFbmFibGVkQnlTZXR0aW5nPiB8fCAh
SlNUZXN0RW5hYmxlZEJ5U2V0dGluZzo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3Rl
eHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RF
bmFibGVkQnlTZXR0aW5nPikKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0RW5hYmxl
ZEJ5U2V0dGluZyA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZt
LmhlYXAsICp2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUsIEpTVGVzdEVuYWJsZWRC
eVNldHRpbmcpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RFbmFibGVkQnlTZXR0
aW5nID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwg
dm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCksIEpTVGVzdEVuYWJsZWRCeVNldHRp
bmcpOwogICAgIGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0RW5hYmxlZEJ5
U2V0dGluZyA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhl
YXAsICp2bS5jZWxsSGVhcENlbGxUeXBlLCBKU1Rlc3RFbmFibGVkQnlTZXR0aW5nKTsKKyAgICAg
ICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0RW5hYmxlZEJ5U2V0dGluZyA9IG1ha2VVbmlxdWU8
SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5
cGUoKSwgSlNUZXN0RW5hYmxlZEJ5U2V0dGluZyk7CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMu
bV9zdWJzcGFjZUZvclRlc3RFbmFibGVkQnlTZXR0aW5nLmdldCgpOwogSUdOT1JFX1dBUk5JTkdT
X0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9s
b2dpY2FsLWNvbXBhcmUiKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdEVuYWJsZWRGb3JDb250ZXh0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RW5hYmxlZEZvckNvbnRleHQu
Y3BwCShyZXZpc2lvbiAyODYwNDMpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0RW5hYmxlZEZvckNvbnRleHQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02
Niw3ICs2Niw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3Bh
Y2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJT
UEFDRV9TSEFSQUJMRShKU1Rlc3RFbmFibGVkRm9yQ29udGV4dFByb3RvdHlwZSwgQmFzZSk7Ci0g
ICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5w
bGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3Jl
YXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAtMTg2LDkgKzE4Niw5IEBAIEpT
Qzo6SXNvU3Vic3BhY2UqIEpTVGVzdEVuYWJsZWRGb3JDb250ZXgKICAgICAgICAgcmV0dXJuIHNw
YWNlOwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0
aWJsZU9iamVjdCwgSlNUZXN0RW5hYmxlZEZvckNvbnRleHQ+IHx8ICFKU1Rlc3RFbmFibGVkRm9y
Q29udGV4dDo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jh
c2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RFbmFibGVkRm9yQ29udGV4
dD4pCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEVuYWJsZWRGb3JDb250ZXh0ID0g
bWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmRl
c3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSwgSlNUZXN0RW5hYmxlZEZvckNvbnRleHQpOwor
ICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RFbmFibGVkRm9yQ29udGV4dCA9IG1ha2VV
bmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0
aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RFbmFibGVkRm9yQ29udGV4dCk7CiAgICAg
ZWxzZQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RFbmFibGVkRm9yQ29udGV4dCA9
IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5j
ZWxsSGVhcENlbGxUeXBlLCBKU1Rlc3RFbmFibGVkRm9yQ29udGV4dCk7CisgICAgICAgIHNwYWNl
cy5tX3N1YnNwYWNlRm9yVGVzdEVuYWJsZWRGb3JDb250ZXh0ID0gbWFrZVVuaXF1ZTxJc29TdWJz
cGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBK
U1Rlc3RFbmFibGVkRm9yQ29udGV4dCk7CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJz
cGFjZUZvclRlc3RFbmFibGVkRm9yQ29udGV4dC5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJ
TigidW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNh
bC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RFdmVudENvbnN0cnVjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRDb25zdHJ1Y3Rvci5jcHAJKHJl
dmlzaW9uIDI4NjA0MykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RFdmVudENvbnN0cnVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQ3LDcgKzE0
Nyw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3Io
SlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9T
SEFSQUJMRShKU1Rlc3RFdmVudENvbnN0cnVjdG9yUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAg
cmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2Jq
ZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1
Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlND
OjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC0zMjEsOSArMzIxLDkgQEAgSlNDOjpJc29T
dWJzcGFjZSogSlNUZXN0RXZlbnRDb25zdHJ1Y3RvcgogICAgICAgICByZXR1cm4gc3BhY2U7CiAg
ICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2Jq
ZWN0LCBKU1Rlc3RFdmVudENvbnN0cnVjdG9yPiB8fCAhSlNUZXN0RXZlbnRDb25zdHJ1Y3Rvcjo6
bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxK
U0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RFdmVudENvbnN0cnVjdG9yPikKLSAgICAg
ICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0RXZlbnRDb25zdHJ1Y3RvciA9IG1ha2VVbmlxdWU8
SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5kZXN0cnVjdGlibGVP
YmplY3RIZWFwQ2VsbFR5cGUsIEpTVGVzdEV2ZW50Q29uc3RydWN0b3IpOworICAgICAgICBzcGFj
ZXMubV9zdWJzcGFjZUZvclRlc3RFdmVudENvbnN0cnVjdG9yID0gbWFrZVVuaXF1ZTxJc29TdWJz
cGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVh
cENlbGxUeXBlKCksIEpTVGVzdEV2ZW50Q29uc3RydWN0b3IpOwogICAgIGVsc2UKLSAgICAgICAg
c3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0RXZlbnRDb25zdHJ1Y3RvciA9IG1ha2VVbmlxdWU8SXNv
U3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5jZWxsSGVhcENlbGxUeXBl
LCBKU1Rlc3RFdmVudENvbnN0cnVjdG9yKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JU
ZXN0RXZlbnRDb25zdHJ1Y3RvciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFD
RV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0RXZlbnRDb25zdHJ1
Y3Rvcik7CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RFdmVudENv
bnN0cnVjdG9yLmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2Rl
IikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRleDog
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50VGFyZ2V0
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0RXZlbnRUYXJnZXQuY3BwCShyZXZpc2lvbiAyODYwNDMpCisrKyBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRUYXJnZXQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC03Myw3ICs3Myw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29T
dWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNf
QVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3RFdmVudFRhcmdldFByb3RvdHlwZSwg
QmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0
dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVj
dHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAtMjYyLDkgKzI2
Miw5IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdEV2ZW50VGFyZ2V0OjpzdWIKICAgICAgICAg
cmV0dXJuIHNwYWNlOwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpK
U0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0RXZlbnRUYXJnZXQ+IHx8ICFKU1Rlc3RFdmVudFRh
cmdldDo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vf
b2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RFdmVudFRhcmdldD4pCi0gICAg
ICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEV2ZW50VGFyZ2V0ID0gbWFrZVVuaXF1ZTxJc29T
dWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmRlc3RydWN0aWJsZU9iamVj
dEhlYXBDZWxsVHlwZSwgSlNUZXN0RXZlbnRUYXJnZXQpOworICAgICAgICBzcGFjZXMubV9zdWJz
cGFjZUZvclRlc3RFdmVudFRhcmdldCA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJT
UEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBK
U1Rlc3RFdmVudFRhcmdldCk7CiAgICAgZWxzZQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZv
clRlc3RFdmVudFRhcmdldCA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9J
TklUKHZtLmhlYXAsICp2bS5jZWxsSGVhcENlbGxUeXBlLCBKU1Rlc3RFdmVudFRhcmdldCk7Cisg
ICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEV2ZW50VGFyZ2V0ID0gbWFrZVVuaXF1ZTxJ
c29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlw
ZSgpLCBKU1Rlc3RFdmVudFRhcmdldCk7CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJz
cGFjZUZvclRlc3RFdmVudFRhcmdldC5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5y
ZWFjaGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21w
YXJlIikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RFeGNlcHRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RFeGNlcHRpb24uY3BwCShyZXZpc2lvbiAyODYwNDMpCisrKyBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXhjZXB0aW9uLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNjYsNyArNjYsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpT
Qzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAg
U1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0RXhjZXB0aW9uUHJvdG90
eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAg
ICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6
U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC0xODcs
OSArMTg3LDkgQEAgSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0RXhjZXB0aW9uOjpzdWJzcAogICAg
ICAgICByZXR1cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxK
U0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RFeGNlcHRpb24+IHx8ICFKU1Rlc3RFeGNl
cHRpb246Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNl
X29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0RXhjZXB0aW9uPikKLSAgICAg
ICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0RXhjZXB0aW9uID0gbWFrZVVuaXF1ZTxJc29TdWJz
cGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmRlc3RydWN0aWJsZU9iamVjdEhl
YXBDZWxsVHlwZSwgSlNUZXN0RXhjZXB0aW9uKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VG
b3JUZXN0RXhjZXB0aW9uID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lO
SVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCksIEpTVGVzdEV4
Y2VwdGlvbik7CiAgICAgZWxzZQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RFeGNl
cHRpb24gPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFw
LCAqdm0uY2VsbEhlYXBDZWxsVHlwZSwgSlNUZXN0RXhjZXB0aW9uKTsKKyAgICAgICAgc3BhY2Vz
Lm1fc3Vic3BhY2VGb3JUZXN0RXhjZXB0aW9uID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNP
X1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RFeGNl
cHRpb24pOwogICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0RXhjZXB0
aW9uLmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKIElH
Tk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRleDogU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEdlbmVyYXRlQWRkT3BhcXVl
Um9vdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdEdlbmVyYXRlQWRkT3BhcXVlUm9vdC5jcHAJKHJldmlzaW9uIDI4NjA0MykK
KysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RHZW5lcmF0
ZUFkZE9wYXF1ZVJvb3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02Niw3ICs2Niw3IEBAIHB1Ymxp
YzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0p
CiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rl
c3RHZW5lcmF0ZUFkZE9wYXF1ZVJvb3RQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4g
JnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFj
ZSgpOwogICAgIH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShK
U0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFs
dWUgcHJvdG90eXBlKQogICAgIHsKQEAgLTE4Nyw5ICsxODcsOSBAQCBKU0M6Oklzb1N1YnNwYWNl
KiBKU1Rlc3RHZW5lcmF0ZUFkZE9wYXF1CiAgICAgICAgIHJldHVybiBzcGFjZTsKICAgICBzdGF0
aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpT
VGVzdEdlbmVyYXRlQWRkT3BhcXVlUm9vdD4gfHwgIUpTVGVzdEdlbmVyYXRlQWRkT3BhcXVlUm9v
dDo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2Zf
djxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RHZW5lcmF0ZUFkZE9wYXF1ZVJvb3Q+
KQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RHZW5lcmF0ZUFkZE9wYXF1ZVJvb3Qg
PSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0u
ZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLCBKU1Rlc3RHZW5lcmF0ZUFkZE9wYXF1ZVJv
b3QpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RHZW5lcmF0ZUFkZE9wYXF1ZVJv
b3QgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2
bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0R2VuZXJhdGVBZGRPcGFx
dWVSb290KTsKICAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEdlbmVy
YXRlQWRkT3BhcXVlUm9vdCA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9J
TklUKHZtLmhlYXAsICp2bS5jZWxsSGVhcENlbGxUeXBlLCBKU1Rlc3RHZW5lcmF0ZUFkZE9wYXF1
ZVJvb3QpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RHZW5lcmF0ZUFkZE9wYXF1
ZVJvb3QgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFw
LCB2bS5jZWxsSGVhcENlbGxUeXBlKCksIEpTVGVzdEdlbmVyYXRlQWRkT3BhcXVlUm9vdCk7CiAg
ICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RHZW5lcmF0ZUFkZE9wYXF1
ZVJvb3QuZ2V0KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQog
SUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2VuZXJhdGVJc1JlYWNo
YWJsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGUuY3BwCShyZXZpc2lvbiAyODYwNDMpCisr
KyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2VuZXJhdGVJ
c1JlYWNoYWJsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY2LDcgKzY2LDcgQEAgcHVibGljOgog
ICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKICAg
ICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdEdl
bmVyYXRlSXNSZWFjaGFibGVQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBs
YWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwog
ICAgIH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZN
JiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJv
dG90eXBlKQogICAgIHsKQEAgLTE5Nyw5ICsxOTcsOSBAQCBKU0M6Oklzb1N1YnNwYWNlKiBKU1Rl
c3RHZW5lcmF0ZUlzUmVhY2hhCiAgICAgICAgIHJldHVybiBzcGFjZTsKICAgICBzdGF0aWNfYXNz
ZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdEdl
bmVyYXRlSXNSZWFjaGFibGU+IHx8ICFKU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlOjpuZWVkc0Rl
c3RydWN0aW9uKTsKICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNE
ZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGU+KQotICAgICAgICBz
cGFjZXMubV9zdWJzcGFjZUZvclRlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlID0gbWFrZVVuaXF1ZTxJ
c29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmRlc3RydWN0aWJsZU9i
amVjdEhlYXBDZWxsVHlwZSwgSlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZSk7CisgICAgICAgIHNw
YWNlcy5tX3N1YnNwYWNlRm9yVGVzdEdlbmVyYXRlSXNSZWFjaGFibGUgPSBtYWtlVW5pcXVlPElz
b1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmpl
Y3RIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZSk7CiAgICAgZWxzZQot
ICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlID0gbWFr
ZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmNlbGxI
ZWFwQ2VsbFR5cGUsIEpTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGUpOworICAgICAgICBzcGFjZXMu
bV9zdWJzcGFjZUZvclRlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlID0gbWFrZVVuaXF1ZTxJc29TdWJz
cGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBK
U1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlKTsKICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1
YnNwYWNlRm9yVGVzdEdlbmVyYXRlSXNSZWFjaGFibGUuZ2V0KCk7CiBJR05PUkVfV0FSTklOR1Nf
QkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xv
Z2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0R2xvYmFsT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEdsb2JhbE9iamVjdC5oCShyZXZpc2lvbiAy
ODYwNDMpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
R2xvYmFsT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTk4LDcgKzk4LDcgQEAgcHVibGljOgog
ICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKICAg
ICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdEds
b2JhbE9iamVjdFByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmpl
Y3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQog
ICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBK
U0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUp
CiAgICAgewpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbmRleGVkU2V0dGVyTm9JZGVu
dGlmaWVyLmNwcAkocmV2aXNpb24gMjg2MDQzKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXIuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC02NSw3ICs2NSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29T
dWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNf
QVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3RJbmRleGVkU2V0dGVyTm9JZGVudGlm
aWVyUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNl
OworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3Rh
dGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7
CkBAIC0yNzYsOSArMjc2LDkgQEAgSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0SW5kZXhlZFNldHRl
ck5vSQogICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jh
c2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RJbmRleGVkU2V0dGVyTm9J
ZGVudGlmaWVyPiB8fCAhSlNUZXN0SW5kZXhlZFNldHRlck5vSWRlbnRpZmllcjo6bmVlZHNEZXN0
cnVjdGlvbik7CiAgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVz
dHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyPikKLSAgICAg
ICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0SW5kZXhlZFNldHRlck5vSWRlbnRpZmllciA9IG1h
a2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5kZXN0
cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUsIEpTVGVzdEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZp
ZXIpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RJbmRleGVkU2V0dGVyTm9JZGVu
dGlmaWVyID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVh
cCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCksIEpTVGVzdEluZGV4ZWRTZXR0
ZXJOb0lkZW50aWZpZXIpOwogICAgIGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JU
ZXN0SW5kZXhlZFNldHRlck5vSWRlbnRpZmllciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElT
T19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5jZWxsSGVhcENlbGxUeXBlLCBKU1Rlc3RJbmRl
eGVkU2V0dGVyTm9JZGVudGlmaWVyKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0
SW5kZXhlZFNldHRlck5vSWRlbnRpZmllciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19T
VUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0SW5kZXhl
ZFNldHRlck5vSWRlbnRpZmllcik7CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFj
ZUZvclRlc3RJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyLmdldCgpOwogSUdOT1JFX1dBUk5JTkdT
X0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9s
b2dpY2FsLWNvbXBhcmUiKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEluZGV4
ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5jcHAJKHJldmlzaW9uIDI4NjA0MykKKysrIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbmRleGVkU2V0dGVyVGhy
b3dpbmdFeGNlcHRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NSw3ICs2NSw3IEBAIHB1Ymxp
YzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0p
CiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rl
c3RJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb25Qcm90b3R5cGUsIEJhc2UpOwotICAgICAg
ICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5P
YmplY3RTcGFjZSgpOwogICAgIH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0
cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBK
U0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKQEAgLTI3Niw5ICsyNzYsOSBAQCBKU0M6Oklz
b1N1YnNwYWNlKiBKU1Rlc3RJbmRleGVkU2V0dGVyVGhyCiAgICAgICAgIHJldHVybiBzcGFjZTsK
ICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVP
YmplY3QsIEpTVGVzdEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbj4gfHwgIUpTVGVzdElu
ZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbjo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgaWYg
Y29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBK
U1Rlc3RJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24+KQotICAgICAgICBzcGFjZXMubV9z
dWJzcGFjZUZvclRlc3RJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24gPSBtYWtlVW5pcXVl
PElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uZGVzdHJ1Y3RpYmxl
T2JqZWN0SGVhcENlbGxUeXBlLCBKU1Rlc3RJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24p
OworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RJbmRleGVkU2V0dGVyVGhyb3dpbmdF
eGNlcHRpb24gPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5o
ZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0SW5kZXhlZFNl
dHRlclRocm93aW5nRXhjZXB0aW9uKTsKICAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNw
YWNlRm9yVGVzdEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbiA9IG1ha2VVbmlxdWU8SXNv
U3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5jZWxsSGVhcENlbGxUeXBl
LCBKU1Rlc3RJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24pOworICAgICAgICBzcGFjZXMu
bV9zdWJzcGFjZUZvclRlc3RJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24gPSBtYWtlVW5p
cXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENl
bGxUeXBlKCksIEpTVGVzdEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbik7CiAgICAgYXV0
byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RJbmRleGVkU2V0dGVyVGhyb3dpbmdF
eGNlcHRpb24uZ2V0KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUi
KQogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW5kZXhlZFNldHRl
cldpdGhJZGVudGlmaWVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyLmNwcAko
cmV2aXNpb24gMjg2MDQzKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTczLDcgKzczLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBz
dWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNP
X1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllclByb3Rv
dHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAg
ICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6
OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAtMzA4
LDkgKzMwOCw5IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdEluZGV4ZWRTZXR0ZXJXaXQKICAg
ICAgICAgcmV0dXJuIHNwYWNlOwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8
SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0SW5kZXhlZFNldHRlcldpdGhJZGVudGlm
aWVyPiB8fCAhSlNUZXN0SW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyOjpuZWVkc0Rlc3RydWN0
aW9uKTsKICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVj
dGlibGVPYmplY3QsIEpTVGVzdEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllcj4pCi0gICAgICAg
IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllciA9IG1h
a2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5kZXN0
cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUsIEpTVGVzdEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRp
Zmllcik7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEluZGV4ZWRTZXR0ZXJXaXRo
SWRlbnRpZmllciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZt
LmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RJbmRleGVk
U2V0dGVyV2l0aElkZW50aWZpZXIpOwogICAgIGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vic3Bh
Y2VGb3JUZXN0SW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyID0gbWFrZVVuaXF1ZTxJc29TdWJz
cGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmNlbGxIZWFwQ2VsbFR5cGUsIEpT
VGVzdEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllcik7CisgICAgICAgIHNwYWNlcy5tX3N1YnNw
YWNlRm9yVGVzdEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllciA9IG1ha2VVbmlxdWU8SXNvU3Vi
c3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwg
SlNUZXN0SW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyKTsKICAgICBhdXRvKiBzcGFjZSA9IHNw
YWNlcy5tX3N1YnNwYWNlRm9yVGVzdEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllci5nZXQoKTsK
IElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklO
R1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2UuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2Uu
Y3BwCShyZXZpc2lvbiAyODYwNDMpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTgxLDcgKzE4
MSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3Io
SlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9T
SEFSQUJMRShKU1Rlc3RJbnRlcmZhY2VQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4g
JnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFj
ZSgpOwogICAgIH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShK
U0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFs
dWUgcHJvdG90eXBlKQogICAgIHsKQEAgLTExMDQsOSArMTEwNCw5IEBAIHB1YmxpYzoKICAgICAg
ICAgICAgIHJldHVybiBzcGFjZTsKICAgICAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vf
b2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBUZXN0SW50ZXJmYWNlSXRlcmF0b3I+IHx8
ICFUZXN0SW50ZXJmYWNlSXRlcmF0b3I6Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAgICAgICBpZiBj
b25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIFRl
c3RJbnRlcmZhY2VJdGVyYXRvcj4pCi0gICAgICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRl
c3RJbnRlcmZhY2VJdGVyYXRvciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFD
RV9JTklUKHZtLmhlYXAsICp2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuZ2V0KCks
IFRlc3RJbnRlcmZhY2VJdGVyYXRvcik7CisgICAgICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZv
clRlc3RJbnRlcmZhY2VJdGVyYXRvciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJT
UEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBU
ZXN0SW50ZXJmYWNlSXRlcmF0b3IpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBzcGFjZXMu
bV9zdWJzcGFjZUZvclRlc3RJbnRlcmZhY2VJdGVyYXRvciA9IG1ha2VVbmlxdWU8SXNvU3Vic3Bh
Y2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5jZWxsSGVhcENlbGxUeXBlLCBUZXN0
SW50ZXJmYWNlSXRlcmF0b3IpOworICAgICAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0
SW50ZXJmYWNlSXRlcmF0b3IgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0Vf
SU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCksIFRlc3RJbnRlcmZhY2VJdGVyYXRv
cik7CiAgICAgICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0SW50ZXJm
YWNlSXRlcmF0b3IuZ2V0KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNv
ZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkBAIC0x
MTk2LDkgKzExOTYsOSBAQCBKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3RJbnRlcmZhY2U6OnN1YnNw
CiAgICAgICAgIHJldHVybiBzcGFjZTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9v
Zl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdEludGVyZmFjZT4gfHwgIUpTVGVz
dEludGVyZmFjZTo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3RleHByIChzdGQ6Omlz
X2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RJbnRlcmZhY2U+KQot
ICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RJbnRlcmZhY2UgPSBtYWtlVW5pcXVlPElz
b1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uZGVzdHJ1Y3RpYmxlT2Jq
ZWN0SGVhcENlbGxUeXBlLCBKU1Rlc3RJbnRlcmZhY2UpOworICAgICAgICBzcGFjZXMubV9zdWJz
cGFjZUZvclRlc3RJbnRlcmZhY2UgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BB
Q0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwgSlNU
ZXN0SW50ZXJmYWNlKTsKICAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVz
dEludGVyZmFjZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZt
LmhlYXAsICp2bS5jZWxsSGVhcENlbGxUeXBlLCBKU1Rlc3RJbnRlcmZhY2UpOworICAgICAgICBz
cGFjZXMubV9zdWJzcGFjZUZvclRlc3RJbnRlcmZhY2UgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNl
PiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCksIEpTVGVz
dEludGVyZmFjZSk7CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RJ
bnRlcmZhY2UuZ2V0KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUi
KQogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlTGVh
ZGluZ1VuZGVyc2NvcmUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2VMZWFkaW5nVW5kZXJzY29yZS5jcHAJKHJl
dmlzaW9uIDI4NjA0MykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RJbnRlcmZhY2VMZWFkaW5nVW5kZXJzY29yZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTY2LDcgKzY2LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJz
cGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NV
QlNQQUNFX1NIQVJBQkxFKEpTVGVzdEludGVyZmFjZUxlYWRpbmdVbmRlcnNjb3JlUHJvdG90eXBl
LCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICBy
ZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3Ry
dWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC0xODcsOSAr
MTg3LDkgQEAgSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0SW50ZXJmYWNlTGVhZGluZwogICAgICAg
ICByZXR1cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6
OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RJbnRlcmZhY2VMZWFkaW5nVW5kZXJzY29yZT4g
fHwgIUpTVGVzdEludGVyZmFjZUxlYWRpbmdVbmRlcnNjb3JlOjpuZWVkc0Rlc3RydWN0aW9uKTsK
ICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVP
YmplY3QsIEpTVGVzdEludGVyZmFjZUxlYWRpbmdVbmRlcnNjb3JlPikKLSAgICAgICAgc3BhY2Vz
Lm1fc3Vic3BhY2VGb3JUZXN0SW50ZXJmYWNlTGVhZGluZ1VuZGVyc2NvcmUgPSBtYWtlVW5pcXVl
PElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uZGVzdHJ1Y3RpYmxl
T2JqZWN0SGVhcENlbGxUeXBlLCBKU1Rlc3RJbnRlcmZhY2VMZWFkaW5nVW5kZXJzY29yZSk7Cisg
ICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEludGVyZmFjZUxlYWRpbmdVbmRlcnNjb3Jl
ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0u
ZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCksIEpTVGVzdEludGVyZmFjZUxlYWRpbmdV
bmRlcnNjb3JlKTsKICAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdElu
dGVyZmFjZUxlYWRpbmdVbmRlcnNjb3JlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NV
QlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmNlbGxIZWFwQ2VsbFR5cGUsIEpTVGVzdEludGVyZmFj
ZUxlYWRpbmdVbmRlcnNjb3JlKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0SW50
ZXJmYWNlTGVhZGluZ1VuZGVyc2NvcmUgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VC
U1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCksIEpTVGVzdEludGVyZmFj
ZUxlYWRpbmdVbmRlcnNjb3JlKTsKICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNl
Rm9yVGVzdEludGVyZmFjZUxlYWRpbmdVbmRlcnNjb3JlLmdldCgpOwogSUdOT1JFX1dBUk5JTkdT
X0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9s
b2dpY2FsLWNvbXBhcmUiKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdEl0ZXJhYmxlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SXRlcmFibGUuY3BwCShyZXZpc2lvbiAyODYw
NDMpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SXRl
cmFibGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NSw3ICs3NSw3IEBAIHB1YmxpYzoKICAgICBz
dGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewog
ICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3RJdGVyYWJs
ZVByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsK
KyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRp
YyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpA
QCAtMjAxLDkgKzIwMSw5IEBAIHB1YmxpYzoKICAgICAgICAgICAgIHJldHVybiBzcGFjZTsKICAg
ICAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxl
T2JqZWN0LCBUZXN0SXRlcmFibGVJdGVyYXRvcj4gfHwgIVRlc3RJdGVyYWJsZUl0ZXJhdG9yOjpu
ZWVkc0Rlc3RydWN0aW9uKTsKICAgICAgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2Zf
djxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBUZXN0SXRlcmFibGVJdGVyYXRvcj4pCi0gICAg
ICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RJdGVyYWJsZUl0ZXJhdG9yID0gbWFrZVVu
aXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmRlc3RydWN0
aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5nZXQoKSwgVGVzdEl0ZXJhYmxlSXRlcmF0b3IpOworICAg
ICAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0SXRlcmFibGVJdGVyYXRvciA9IG1ha2VV
bmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0
aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBUZXN0SXRlcmFibGVJdGVyYXRvcik7CiAgICAgICAg
IGVsc2UKLSAgICAgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEl0ZXJhYmxlSXRlcmF0
b3IgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAq
dm0uY2VsbEhlYXBDZWxsVHlwZSwgVGVzdEl0ZXJhYmxlSXRlcmF0b3IpOworICAgICAgICAgICAg
c3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0SXRlcmFibGVJdGVyYXRvciA9IG1ha2VVbmlxdWU8SXNv
U3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUo
KSwgVGVzdEl0ZXJhYmxlSXRlcmF0b3IpOwogICAgICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5t
X3N1YnNwYWNlRm9yVGVzdEl0ZXJhYmxlSXRlcmF0b3IuZ2V0KCk7CiBJR05PUkVfV0FSTklOR1Nf
QkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xv
Z2ljYWwtY29tcGFyZSIpCkBAIC0yOTMsOSArMjkzLDkgQEAgSlNDOjpJc29TdWJzcGFjZSogSlNU
ZXN0SXRlcmFibGU6OnN1YnNwYQogICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fz
c2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RJ
dGVyYWJsZT4gfHwgIUpTVGVzdEl0ZXJhYmxlOjpuZWVkc0Rlc3RydWN0aW9uKTsKICAgICBpZiBj
b25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpT
VGVzdEl0ZXJhYmxlPikKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0SXRlcmFibGUg
PSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0u
ZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLCBKU1Rlc3RJdGVyYWJsZSk7CisgICAgICAg
IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEl0ZXJhYmxlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFj
ZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENl
bGxUeXBlKCksIEpTVGVzdEl0ZXJhYmxlKTsKICAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1
YnNwYWNlRm9yVGVzdEl0ZXJhYmxlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQ
QUNFX0lOSVQodm0uaGVhcCwgKnZtLmNlbGxIZWFwQ2VsbFR5cGUsIEpTVGVzdEl0ZXJhYmxlKTsK
KyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0SXRlcmFibGUgPSBtYWtlVW5pcXVlPElz
b1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBl
KCksIEpTVGVzdEl0ZXJhYmxlKTsKICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNl
Rm9yVGVzdEl0ZXJhYmxlLmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJs
ZS1jb2RlIikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJ
bmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEpTQnVp
bHRpbkNvbnN0cnVjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3IuY3BwCShyZXZpc2lv
biAyODYwNDMpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0SlNCdWlsdGluQ29uc3RydWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02OSw3ICs2OSw3
IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlND
OjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFS
QUJMRShKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvclByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAg
IHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9i
amVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3Ry
dWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpT
Qzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAtMjMwLDkgKzIzMCw5IEBAIEpTQzo6SXNv
U3Vic3BhY2UqIEpTVGVzdEpTQnVpbHRpbkNvbnN0cnUKICAgICAgICAgcmV0dXJuIHNwYWNlOwog
ICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9i
amVjdCwgSlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3I+IHx8ICFKU1Rlc3RKU0J1aWx0aW5Db25z
dHJ1Y3Rvcjo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jh
c2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1
Y3Rvcj4pCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEpTQnVpbHRpbkNvbnN0cnVj
dG9yID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwg
KnZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSwgSlNUZXN0SlNCdWlsdGluQ29uc3Ry
dWN0b3IpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RKU0J1aWx0aW5Db25zdHJ1
Y3RvciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAs
IHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RKU0J1aWx0aW5Db25z
dHJ1Y3Rvcik7CiAgICAgZWxzZQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RKU0J1
aWx0aW5Db25zdHJ1Y3RvciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9J
TklUKHZtLmhlYXAsICp2bS5jZWxsSGVhcENlbGxUeXBlLCBKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1
Y3Rvcik7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEpTQnVpbHRpbkNvbnN0cnVj
dG9yID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwg
dm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rvcik7CiAgICAg
YXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rv
ci5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJR05P
UkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RMZWdhY3lGYWN0b3J5RnVuY3Rp
b24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb24uY3BwCShyZXZpc2lvbiAyODYwNDMpCisr
KyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TGVnYWN5RmFj
dG9yeUZ1bmN0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjcsNyArNjcsNyBAQCBwdWJsaWM6
CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQog
ICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0
TGVnYWN5RmFjdG9yeUZ1bmN0aW9uUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2
bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2Uo
KTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlND
OjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVl
IHByb3RvdHlwZSkKICAgICB7CkBAIC0yMzAsOSArMjMwLDkgQEAgSlNDOjpJc29TdWJzcGFjZSog
SlNUZXN0TGVnYWN5RmFjdG9yeUZ1bgogICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAgc3RhdGlj
X2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rl
c3RMZWdhY3lGYWN0b3J5RnVuY3Rpb24+IHx8ICFKU1Rlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb246
Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8
SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uPikK
LSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uID0g
bWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmRl
c3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSwgSlNUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9u
KTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9u
ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0u
ZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCksIEpTVGVzdExlZ2FjeUZhY3RvcnlGdW5j
dGlvbik7CiAgICAgZWxzZQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RMZWdhY3lG
YWN0b3J5RnVuY3Rpb24gPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5J
VCh2bS5oZWFwLCAqdm0uY2VsbEhlYXBDZWxsVHlwZSwgSlNUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0
aW9uKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0
aW9uID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwg
dm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb24pOwogICAg
IGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0
aW9uLmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKIElH
Tk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRleDogU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdExlZ2FjeU5vSW50ZXJmYWNl
T2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0TGVnYWN5Tm9JbnRlcmZhY2VPYmplY3QuY3BwCShyZXZpc2lvbiAyODYw
NDMpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TGVn
YWN5Tm9JbnRlcmZhY2VPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04NSw3ICs4NSw3IEBA
IHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpW
TSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJM
RShKU1Rlc3RMZWdhY3lOb0ludGVyZmFjZU9iamVjdFByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAg
IHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9i
amVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3Ry
dWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpT
Qzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAtMzM1LDkgKzMzNSw5IEBAIEpTQzo6SXNv
U3Vic3BhY2UqIEpTVGVzdExlZ2FjeU5vSW50ZXJmYWMKICAgICAgICAgcmV0dXJuIHNwYWNlOwog
ICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9i
amVjdCwgSlNUZXN0TGVnYWN5Tm9JbnRlcmZhY2VPYmplY3Q+IHx8ICFKU1Rlc3RMZWdhY3lOb0lu
dGVyZmFjZU9iamVjdDo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3RleHByIChzdGQ6
OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RMZWdhY3lOb0lu
dGVyZmFjZU9iamVjdD4pCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdExlZ2FjeU5v
SW50ZXJmYWNlT2JqZWN0ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lO
SVQodm0uaGVhcCwgKnZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSwgSlNUZXN0TGVn
YWN5Tm9JbnRlcmZhY2VPYmplY3QpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RM
ZWdhY3lOb0ludGVyZmFjZU9iamVjdCA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJT
UEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBK
U1Rlc3RMZWdhY3lOb0ludGVyZmFjZU9iamVjdCk7CiAgICAgZWxzZQotICAgICAgICBzcGFjZXMu
bV9zdWJzcGFjZUZvclRlc3RMZWdhY3lOb0ludGVyZmFjZU9iamVjdCA9IG1ha2VVbmlxdWU8SXNv
U3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5jZWxsSGVhcENlbGxUeXBl
LCBKU1Rlc3RMZWdhY3lOb0ludGVyZmFjZU9iamVjdCk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNw
YWNlRm9yVGVzdExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFj
ZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU1Rl
c3RMZWdhY3lOb0ludGVyZmFjZU9iamVjdCk7CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9z
dWJzcGFjZUZvclRlc3RMZWdhY3lOb0ludGVyZmFjZU9iamVjdC5nZXQoKTsKIElHTk9SRV9XQVJO
SU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRh
dXRvbG9naWNhbC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TGVnYWN5T3Zl
cnJpZGVCdWlsdElucy5jcHAJKHJldmlzaW9uIDI4NjA0MykKKysrIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNzMsNyArNzMsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6
SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RB
VElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0TGVnYWN5T3ZlcnJpZGVCdWls
dEluc1Byb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFj
ZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0
YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAg
ewpAQCAtMjQ5LDkgKzI0OSw5IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdExlZ2FjeU92ZXJy
aWRlQnUKICAgICAgICAgcmV0dXJuIHNwYWNlOwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19i
YXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0TGVnYWN5T3ZlcnJpZGVC
dWlsdElucz4gfHwgIUpTVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM6Om5lZWRzRGVzdHJ1Y3Rp
b24pOwogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0
aWJsZU9iamVjdCwgSlNUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdElucz4pCi0gICAgICAgIHNwYWNl
cy5tX3N1YnNwYWNlRm9yVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMgPSBtYWtlVW5pcXVlPElz
b1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uZGVzdHJ1Y3RpYmxlT2Jq
ZWN0SGVhcENlbGxUeXBlLCBKU1Rlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zKTsKKyAgICAgICAg
c3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdElucyA9IG1ha2VVbmlx
dWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJs
ZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zKTsKICAg
ICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdExlZ2FjeU92ZXJyaWRlQnVp
bHRJbnMgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFw
LCAqdm0uY2VsbEhlYXBDZWxsVHlwZSwgSlNUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdElucyk7Cisg
ICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMgPSBt
YWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxs
SGVhcENlbGxUeXBlKCksIEpTVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMpOwogICAgIGF1dG8q
IHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdElucy5n
ZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVf
V0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RNYXBMaWtlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TWFwTGlr
ZS5jcHAJKHJldmlzaW9uIDI4NjA0MykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RNYXBMaWtlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODIsNyArODIs
NyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpT
Qzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hB
UkFCTEUoSlNUZXN0TWFwTGlrZVByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0u
cGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7
CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6
Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBw
cm90b3R5cGUpCiAgICAgewpAQCAtMzY2LDkgKzM2Niw5IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpT
VGVzdE1hcExpa2U6OnN1YnNwYWMKICAgICAgICAgcmV0dXJuIHNwYWNlOwogICAgIHN0YXRpY19h
c3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0
TWFwTGlrZT4gfHwgIUpTVGVzdE1hcExpa2U6Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNv
bnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNU
ZXN0TWFwTGlrZT4pCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE1hcExpa2UgPSBt
YWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uZGVz
dHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLCBKU1Rlc3RNYXBMaWtlKTsKKyAgICAgICAgc3Bh
Y2VzLm1fc3Vic3BhY2VGb3JUZXN0TWFwTGlrZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElT
T19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlw
ZSgpLCBKU1Rlc3RNYXBMaWtlKTsKICAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNl
Rm9yVGVzdE1hcExpa2UgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5J
VCh2bS5oZWFwLCAqdm0uY2VsbEhlYXBDZWxsVHlwZSwgSlNUZXN0TWFwTGlrZSk7CisgICAgICAg
IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE1hcExpa2UgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNl
PiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCksIEpTVGVz
dE1hcExpa2UpOwogICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TWFw
TGlrZS5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJ
R05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RNYXBMaWtlV2l0aE92ZXJy
aWRkZW5PcGVyYXRpb25zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TWFwTGlrZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9ucy5j
cHAJKHJldmlzaW9uIDI4NjA0MykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RNYXBMaWtlV2l0aE92ZXJyaWRkZW5PcGVyYXRpb25zLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtODYsNyArODYsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vi
c3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FT
U0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0TWFwTGlrZVdpdGhPdmVycmlkZGVuT3Bl
cmF0aW9uc1Byb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RT
cGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAg
IHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6
OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAg
ICAgewpAQCAtMzgwLDkgKzM4MCw5IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdE1hcExpa2VX
aXRoT3ZlcnIKICAgICAgICAgcmV0dXJuIHNwYWNlOwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjpp
c19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0TWFwTGlrZVdpdGhP
dmVycmlkZGVuT3BlcmF0aW9ucz4gfHwgIUpTVGVzdE1hcExpa2VXaXRoT3ZlcnJpZGRlbk9wZXJh
dGlvbnM6Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNl
X29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0TWFwTGlrZVdpdGhPdmVycmlk
ZGVuT3BlcmF0aW9ucz4pCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE1hcExpa2VX
aXRoT3ZlcnJpZGRlbk9wZXJhdGlvbnMgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VC
U1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLCBK
U1Rlc3RNYXBMaWtlV2l0aE92ZXJyaWRkZW5PcGVyYXRpb25zKTsKKyAgICAgICAgc3BhY2VzLm1f
c3Vic3BhY2VGb3JUZXN0TWFwTGlrZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9ucyA9IG1ha2VVbmlx
dWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJs
ZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RNYXBMaWtlV2l0aE92ZXJyaWRkZW5PcGVyYXRp
b25zKTsKICAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE1hcExpa2VX
aXRoT3ZlcnJpZGRlbk9wZXJhdGlvbnMgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VC
U1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uY2VsbEhlYXBDZWxsVHlwZSwgSlNUZXN0TWFwTGlrZVdp
dGhPdmVycmlkZGVuT3BlcmF0aW9ucyk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVz
dE1hcExpa2VXaXRoT3ZlcnJpZGRlbk9wZXJhdGlvbnMgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNl
PiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCksIEpTVGVz
dE1hcExpa2VXaXRoT3ZlcnJpZGRlbk9wZXJhdGlvbnMpOwogICAgIGF1dG8qIHNwYWNlID0gc3Bh
Y2VzLm1fc3Vic3BhY2VGb3JUZXN0TWFwTGlrZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9ucy5nZXQo
KTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVfV0FS
TklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJOb0lk
ZW50aWZpZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXIuY3BwCShy
ZXZpc2lvbiAyODYwNDMpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNjYsNyArNjYsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3Bh
Y2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VS
VF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyTm9JZGVu
dGlmaWVyUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNw
YWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAg
c3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAg
ICB7CkBAIC0zNDQsOSArMzQ0LDkgQEAgSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0TmFtZWRBbmRJ
bmRleGVkUwogICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6Omlz
X2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3ROYW1lZEFuZEluZGV4
ZWRTZXR0ZXJOb0lkZW50aWZpZXI+IHx8ICFKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJOb0lk
ZW50aWZpZXI6Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19i
YXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0TmFtZWRBbmRJbmRleGVk
U2V0dGVyTm9JZGVudGlmaWVyPikKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFt
ZWRBbmRJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4g
SVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxs
VHlwZSwgSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyKTsKKyAgICAgICAg
c3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVy
ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0u
ZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCksIEpTVGVzdE5hbWVkQW5kSW5kZXhlZFNl
dHRlck5vSWRlbnRpZmllcik7CiAgICAgZWxzZQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZv
clRlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXIgPSBtYWtlVW5pcXVlPElzb1N1
YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uY2VsbEhlYXBDZWxsVHlwZSwg
SlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyKTsKKyAgICAgICAgc3BhY2Vz
Lm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyID0gbWFr
ZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhl
YXBDZWxsVHlwZSgpLCBKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXIpOwog
ICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRBbmRJbmRleGVk
U2V0dGVyTm9JZGVudGlmaWVyLmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNo
YWJsZS1jb2RlIikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUi
KQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5h
bWVkQW5kSW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRBbmRJbmRl
eGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24uY3BwCShyZXZpc2lvbiAyODYwNDMpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRBbmRJbmRleGVk
U2V0dGVyVGhyb3dpbmdFeGNlcHRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02Niw3ICs2Niw3
IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlND
OjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFS
QUJMRShKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvblByb3RvdHlw
ZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAg
cmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0
cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAtMzQ0LDkg
KzM0NCw5IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdE5hbWVkQW5kSW5kZXhlZFMKICAgICAg
ICAgcmV0dXJuIHNwYWNlOwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlND
OjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyVGhyb3dp
bmdFeGNlcHRpb24+IHx8ICFKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2Vw
dGlvbjo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vf
b2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0
ZXJUaHJvd2luZ0V4Y2VwdGlvbj4pCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5h
bWVkQW5kSW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uID0gbWFrZVVuaXF1ZTxJc29TdWJz
cGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmRlc3RydWN0aWJsZU9iamVjdEhl
YXBDZWxsVHlwZSwgSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24p
OworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJU
aHJvd2luZ0V4Y2VwdGlvbiA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9J
TklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RO
YW1lZEFuZEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbik7CiAgICAgZWxzZQotICAgICAg
ICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4
Y2VwdGlvbiA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhl
YXAsICp2bS5jZWxsSGVhcENlbGxUeXBlLCBKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJUaHJv
d2luZ0V4Y2VwdGlvbik7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkQW5k
SW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4g
SVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RO
YW1lZEFuZEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbik7CiAgICAgYXV0byogc3BhY2Ug
PSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4
Y2VwdGlvbi5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIp
CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEFuZEluZGV4
ZWRTZXR0ZXJXaXRoSWRlbnRpZmllci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlcldpdGhJ
ZGVudGlmaWVyLmNwcAkocmV2aXNpb24gMjg2MDQzKQorKysgU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlcldpdGhJZGVudGlm
aWVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzUsNyArNzUsNyBAQCBwdWJsaWM6CiAgICAgc3Rh
dGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAg
ICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0TmFtZWRBbmRJ
bmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXJQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1
cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RT
cGFjZSgpOwogICAgIH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVy
ZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpT
VmFsdWUgcHJvdG90eXBlKQogICAgIHsKQEAgLTQwMSw5ICs0MDEsOSBAQCBKU0M6Oklzb1N1YnNw
YWNlKiBKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTCiAgICAgICAgIHJldHVybiBzcGFjZTsKICAgICBz
dGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3Qs
IEpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyPiB8fCAhSlNUZXN0TmFt
ZWRBbmRJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXI6Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAg
IGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVj
dCwgSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXI+KQotICAgICAgICBz
cGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmll
ciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2
bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUsIEpTVGVzdE5hbWVkQW5kSW5kZXhlZFNl
dHRlcldpdGhJZGVudGlmaWVyKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFt
ZWRBbmRJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXIgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNl
PiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2Vs
bFR5cGUoKSwgSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXIpOwogICAg
IGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRBbmRJbmRleGVkU2V0
dGVyV2l0aElkZW50aWZpZXIgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0Vf
SU5JVCh2bS5oZWFwLCAqdm0uY2VsbEhlYXBDZWxsVHlwZSwgSlNUZXN0TmFtZWRBbmRJbmRleGVk
U2V0dGVyV2l0aElkZW50aWZpZXIpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RO
YW1lZEFuZEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllciA9IG1ha2VVbmlxdWU8SXNvU3Vic3Bh
Y2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNU
ZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXIpOwogICAgIGF1dG8qIHNwYWNl
ID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0aElkZW50
aWZpZXIuZ2V0KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQog
SUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyTm9J
ZGVudGlmaWVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyTm9JZGVudGlmaWVyLmNwcAkocmV2aXNpb24g
Mjg2MDQzKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dE5hbWVkRGVsZXRlck5vSWRlbnRpZmllci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY1LDcgKzY1
LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihK
U0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NI
QVJBQkxFKEpTVGVzdE5hbWVkRGVsZXRlck5vSWRlbnRpZmllclByb3RvdHlwZSwgQmFzZSk7Ci0g
ICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5w
bGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3Jl
YXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAtMjQ2LDkgKzI0Niw5IEBAIEpT
Qzo6SXNvU3Vic3BhY2UqIEpTVGVzdE5hbWVkRGVsZXRlck5vSWQKICAgICAgICAgcmV0dXJuIHNw
YWNlOwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0
aWJsZU9iamVjdCwgSlNUZXN0TmFtZWREZWxldGVyTm9JZGVudGlmaWVyPiB8fCAhSlNUZXN0TmFt
ZWREZWxldGVyTm9JZGVudGlmaWVyOjpuZWVkc0Rlc3RydWN0aW9uKTsKICAgICBpZiBjb25zdGV4
cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdE5h
bWVkRGVsZXRlck5vSWRlbnRpZmllcj4pCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVz
dE5hbWVkRGVsZXRlck5vSWRlbnRpZmllciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19T
VUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUs
IEpTVGVzdE5hbWVkRGVsZXRlck5vSWRlbnRpZmllcik7CisgICAgICAgIHNwYWNlcy5tX3N1YnNw
YWNlRm9yVGVzdE5hbWVkRGVsZXRlck5vSWRlbnRpZmllciA9IG1ha2VVbmlxdWU8SXNvU3Vic3Bh
Y2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBD
ZWxsVHlwZSgpLCBKU1Rlc3ROYW1lZERlbGV0ZXJOb0lkZW50aWZpZXIpOwogICAgIGVsc2UKLSAg
ICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWREZWxldGVyTm9JZGVudGlmaWVyID0g
bWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmNl
bGxIZWFwQ2VsbFR5cGUsIEpTVGVzdE5hbWVkRGVsZXRlck5vSWRlbnRpZmllcik7CisgICAgICAg
IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkRGVsZXRlck5vSWRlbnRpZmllciA9IG1ha2VV
bmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFw
Q2VsbFR5cGUoKSwgSlNUZXN0TmFtZWREZWxldGVyTm9JZGVudGlmaWVyKTsKICAgICBhdXRvKiBz
cGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkRGVsZXRlck5vSWRlbnRpZmllci5n
ZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVf
V0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJUaHJvd2luZ0V4
Y2VwdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlclRocm93aW5nRXhjZXB0aW9uLmNwcAkocmV2aXNp
b24gMjg2MDQzKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdE5hbWVkRGVsZXRlclRocm93aW5nRXhjZXB0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NjUsNyArNjUsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNw
YWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VC
U1BBQ0VfU0hBUkFCTEUoSlNUZXN0TmFtZWREZWxldGVyVGhyb3dpbmdFeGNlcHRpb25Qcm90b3R5
cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAg
IHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KICAgICBzdGF0aWMgSlNDOjpT
dHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKQEAgLTI0Niw5
ICsyNDYsOSBAQCBKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3ROYW1lZERlbGV0ZXJUaHJvCiAgICAg
ICAgIHJldHVybiBzcGFjZTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpT
Qzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdE5hbWVkRGVsZXRlclRocm93aW5nRXhjZXB0
aW9uPiB8fCAhSlNUZXN0TmFtZWREZWxldGVyVGhyb3dpbmdFeGNlcHRpb246Om5lZWRzRGVzdHJ1
Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3Ry
dWN0aWJsZU9iamVjdCwgSlNUZXN0TmFtZWREZWxldGVyVGhyb3dpbmdFeGNlcHRpb24+KQotICAg
ICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZERlbGV0ZXJUaHJvd2luZ0V4Y2VwdGlv
biA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2
bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUsIEpTVGVzdE5hbWVkRGVsZXRlclRocm93
aW5nRXhjZXB0aW9uKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWREZWxl
dGVyVGhyb3dpbmdFeGNlcHRpb24gPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BB
Q0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwgSlNU
ZXN0TmFtZWREZWxldGVyVGhyb3dpbmdFeGNlcHRpb24pOwogICAgIGVsc2UKLSAgICAgICAgc3Bh
Y2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWREZWxldGVyVGhyb3dpbmdFeGNlcHRpb24gPSBtYWtl
VW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uY2VsbEhl
YXBDZWxsVHlwZSwgSlNUZXN0TmFtZWREZWxldGVyVGhyb3dpbmdFeGNlcHRpb24pOworICAgICAg
ICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZERlbGV0ZXJUaHJvd2luZ0V4Y2VwdGlvbiA9
IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNl
bGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0TmFtZWREZWxldGVyVGhyb3dpbmdFeGNlcHRpb24pOwog
ICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWREZWxldGVyVGhy
b3dpbmdFeGNlcHRpb24uZ2V0KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxl
LWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRE
ZWxldGVyV2l0aElkZW50aWZpZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllci5j
cHAJKHJldmlzaW9uIDI4NjA0MykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTcyLDcgKzcyLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNl
KiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRf
SVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdE5hbWVkRGVsZXRlcldpdGhJZGVudGlmaWVyUHJv
dG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAg
ICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpT
Qzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC0y
NzAsOSArMjcwLDkgQEAgSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0TmFtZWREZWxldGVyV2l0aAog
ICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2Zf
djxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRp
Zmllcj4gfHwgIUpTVGVzdE5hbWVkRGVsZXRlcldpdGhJZGVudGlmaWVyOjpuZWVkc0Rlc3RydWN0
aW9uKTsKICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVj
dGlibGVPYmplY3QsIEpTVGVzdE5hbWVkRGVsZXRlcldpdGhJZGVudGlmaWVyPikKLSAgICAgICAg
c3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWREZWxldGVyV2l0aElkZW50aWZpZXIgPSBtYWtl
VW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uZGVzdHJ1
Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLCBKU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRpZmll
cik7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkRGVsZXRlcldpdGhJZGVu
dGlmaWVyID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVh
cCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCksIEpTVGVzdE5hbWVkRGVsZXRl
cldpdGhJZGVudGlmaWVyKTsKICAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9y
VGVzdE5hbWVkRGVsZXRlcldpdGhJZGVudGlmaWVyID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4g
SVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmNlbGxIZWFwQ2VsbFR5cGUsIEpTVGVzdE5h
bWVkRGVsZXRlcldpdGhJZGVudGlmaWVyKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JU
ZXN0TmFtZWREZWxldGVyV2l0aElkZW50aWZpZXIgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJ
U09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCksIEpTVGVzdE5h
bWVkRGVsZXRlcldpdGhJZGVudGlmaWVyKTsKICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1
YnNwYWNlRm9yVGVzdE5hbWVkRGVsZXRlcldpdGhJZGVudGlmaWVyLmdldCgpOwogSUdOT1JFX1dB
Uk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigi
dGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlcldpdGhJbmRleGVkR2V0dGVyLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
TmFtZWREZWxldGVyV2l0aEluZGV4ZWRHZXR0ZXIuY3BwCShyZXZpc2lvbiAyODYwNDMpCisrKyBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVy
V2l0aEluZGV4ZWRHZXR0ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02Niw3ICs2Niw3IEBAIHB1
YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYg
dm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShK
U1Rlc3ROYW1lZERlbGV0ZXJXaXRoSW5kZXhlZEdldHRlclByb3RvdHlwZSwgQmFzZSk7Ci0gICAg
ICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFp
bk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRl
U3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAtMjYyLDkgKzI2Miw5IEBAIEpTQzo6
SXNvU3Vic3BhY2UqIEpTVGVzdE5hbWVkRGVsZXRlcldpdGgKICAgICAgICAgcmV0dXJuIHNwYWNl
OwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJs
ZU9iamVjdCwgSlNUZXN0TmFtZWREZWxldGVyV2l0aEluZGV4ZWRHZXR0ZXI+IHx8ICFKU1Rlc3RO
YW1lZERlbGV0ZXJXaXRoSW5kZXhlZEdldHRlcjo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgaWYg
Y29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBK
U1Rlc3ROYW1lZERlbGV0ZXJXaXRoSW5kZXhlZEdldHRlcj4pCi0gICAgICAgIHNwYWNlcy5tX3N1
YnNwYWNlRm9yVGVzdE5hbWVkRGVsZXRlcldpdGhJbmRleGVkR2V0dGVyID0gbWFrZVVuaXF1ZTxJ
c29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmRlc3RydWN0aWJsZU9i
amVjdEhlYXBDZWxsVHlwZSwgSlNUZXN0TmFtZWREZWxldGVyV2l0aEluZGV4ZWRHZXR0ZXIpOwor
ICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZERlbGV0ZXJXaXRoSW5kZXhlZEdl
dHRlciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAs
IHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3ROYW1lZERlbGV0ZXJX
aXRoSW5kZXhlZEdldHRlcik7CiAgICAgZWxzZQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZv
clRlc3ROYW1lZERlbGV0ZXJXaXRoSW5kZXhlZEdldHRlciA9IG1ha2VVbmlxdWU8SXNvU3Vic3Bh
Y2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5jZWxsSGVhcENlbGxUeXBlLCBKU1Rl
c3ROYW1lZERlbGV0ZXJXaXRoSW5kZXhlZEdldHRlcik7CisgICAgICAgIHNwYWNlcy5tX3N1YnNw
YWNlRm9yVGVzdE5hbWVkRGVsZXRlcldpdGhJbmRleGVkR2V0dGVyID0gbWFrZVVuaXF1ZTxJc29T
dWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgp
LCBKU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSW5kZXhlZEdldHRlcik7CiAgICAgYXV0byogc3BhY2Ug
PSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZERlbGV0ZXJXaXRoSW5kZXhlZEdldHRlci5n
ZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVf
V0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEdldHRlckNhbGxXaXRoLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0TmFtZWRHZXR0ZXJDYWxsV2l0aC5jcHAJKHJldmlzaW9uIDI4NjA0MykKKysrIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEdldHRlckNhbGxX
aXRoLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjUsNyArNjUsNyBAQCBwdWJsaWM6CiAgICAgc3Rh
dGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAg
ICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0TmFtZWRHZXR0
ZXJDYWxsV2l0aFByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmpl
Y3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQog
ICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBK
U0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUp
CiAgICAgewpAQCAtMjIwLDkgKzIyMCw5IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdE5hbWVk
R2V0dGVyQ2FsbFcKICAgICAgICAgcmV0dXJuIHNwYWNlOwogICAgIHN0YXRpY19hc3NlcnQoc3Rk
Ojppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0TmFtZWRHZXR0
ZXJDYWxsV2l0aD4gfHwgIUpTVGVzdE5hbWVkR2V0dGVyQ2FsbFdpdGg6Om5lZWRzRGVzdHJ1Y3Rp
b24pOwogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0
aWJsZU9iamVjdCwgSlNUZXN0TmFtZWRHZXR0ZXJDYWxsV2l0aD4pCi0gICAgICAgIHNwYWNlcy5t
X3N1YnNwYWNlRm9yVGVzdE5hbWVkR2V0dGVyQ2FsbFdpdGggPSBtYWtlVW5pcXVlPElzb1N1YnNw
YWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVh
cENlbGxUeXBlLCBKU1Rlc3ROYW1lZEdldHRlckNhbGxXaXRoKTsKKyAgICAgICAgc3BhY2VzLm1f
c3Vic3BhY2VGb3JUZXN0TmFtZWRHZXR0ZXJDYWxsV2l0aCA9IG1ha2VVbmlxdWU8SXNvU3Vic3Bh
Y2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBD
ZWxsVHlwZSgpLCBKU1Rlc3ROYW1lZEdldHRlckNhbGxXaXRoKTsKICAgICBlbHNlCi0gICAgICAg
IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkR2V0dGVyQ2FsbFdpdGggPSBtYWtlVW5pcXVl
PElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uY2VsbEhlYXBDZWxs
VHlwZSwgSlNUZXN0TmFtZWRHZXR0ZXJDYWxsV2l0aCk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNw
YWNlRm9yVGVzdE5hbWVkR2V0dGVyQ2FsbFdpdGggPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJ
U09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCksIEpTVGVzdE5h
bWVkR2V0dGVyQ2FsbFdpdGgpOwogICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VG
b3JUZXN0TmFtZWRHZXR0ZXJDYWxsV2l0aC5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigi
dW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1j
b21wYXJlIikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3ROYW1lZEdldHRlck5vSWRlbnRpZmllci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkR2V0dGVyTm9JZGVudGlm
aWVyLmNwcAkocmV2aXNpb24gMjg2MDQzKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkR2V0dGVyTm9JZGVudGlmaWVyLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNjUsNyArNjUsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3Bh
Y2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VS
VF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0TmFtZWRHZXR0ZXJOb0lkZW50aWZpZXJQcm90
b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAg
ICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KICAgICBzdGF0aWMgSlND
OjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKQEAgLTIy
MCw5ICsyMjAsOSBAQCBKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3ROYW1lZEdldHRlck5vSWRlCiAg
ICAgICAgIHJldHVybiBzcGFjZTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92
PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdE5hbWVkR2V0dGVyTm9JZGVudGlmaWVy
PiB8fCAhSlNUZXN0TmFtZWRHZXR0ZXJOb0lkZW50aWZpZXI6Om5lZWRzRGVzdHJ1Y3Rpb24pOwog
ICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9i
amVjdCwgSlNUZXN0TmFtZWRHZXR0ZXJOb0lkZW50aWZpZXI+KQotICAgICAgICBzcGFjZXMubV9z
dWJzcGFjZUZvclRlc3ROYW1lZEdldHRlck5vSWRlbnRpZmllciA9IG1ha2VVbmlxdWU8SXNvU3Vi
c3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5kZXN0cnVjdGlibGVPYmplY3RI
ZWFwQ2VsbFR5cGUsIEpTVGVzdE5hbWVkR2V0dGVyTm9JZGVudGlmaWVyKTsKKyAgICAgICAgc3Bh
Y2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRHZXR0ZXJOb0lkZW50aWZpZXIgPSBtYWtlVW5pcXVl
PElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVP
YmplY3RIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0TmFtZWRHZXR0ZXJOb0lkZW50aWZpZXIpOwogICAg
IGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRHZXR0ZXJOb0lkZW50
aWZpZXIgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFw
LCAqdm0uY2VsbEhlYXBDZWxsVHlwZSwgSlNUZXN0TmFtZWRHZXR0ZXJOb0lkZW50aWZpZXIpOwor
ICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZEdldHRlck5vSWRlbnRpZmllciA9
IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNl
bGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0TmFtZWRHZXR0ZXJOb0lkZW50aWZpZXIpOwogICAgIGF1
dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRHZXR0ZXJOb0lkZW50aWZp
ZXIuZ2V0KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdO
T1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRHZXR0ZXJXaXRoSWRl
bnRpZmllci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE5hbWVkR2V0dGVyV2l0aElkZW50aWZpZXIuY3BwCShyZXZpc2lvbiAy
ODYwNDMpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
TmFtZWRHZXR0ZXJXaXRoSWRlbnRpZmllci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcwLDcgKzcw
LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihK
U0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NI
QVJBQkxFKEpTVGVzdE5hbWVkR2V0dGVyV2l0aElkZW50aWZpZXJQcm90b3R5cGUsIEJhc2UpOwot
ICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0u
cGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNy
ZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKQEAgLTI0Niw5ICsyNDYsOSBAQCBK
U0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3ROYW1lZEdldHRlcldpdGhJCiAgICAgICAgIHJldHVybiBz
cGFjZTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVj
dGlibGVPYmplY3QsIEpTVGVzdE5hbWVkR2V0dGVyV2l0aElkZW50aWZpZXI+IHx8ICFKU1Rlc3RO
YW1lZEdldHRlcldpdGhJZGVudGlmaWVyOjpuZWVkc0Rlc3RydWN0aW9uKTsKICAgICBpZiBjb25z
dGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVz
dE5hbWVkR2V0dGVyV2l0aElkZW50aWZpZXI+KQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZv
clRlc3ROYW1lZEdldHRlcldpdGhJZGVudGlmaWVyID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4g
SVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxs
VHlwZSwgSlNUZXN0TmFtZWRHZXR0ZXJXaXRoSWRlbnRpZmllcik7CisgICAgICAgIHNwYWNlcy5t
X3N1YnNwYWNlRm9yVGVzdE5hbWVkR2V0dGVyV2l0aElkZW50aWZpZXIgPSBtYWtlVW5pcXVlPElz
b1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmpl
Y3RIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0TmFtZWRHZXR0ZXJXaXRoSWRlbnRpZmllcik7CiAgICAg
ZWxzZQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZEdldHRlcldpdGhJZGVu
dGlmaWVyID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVh
cCwgKnZtLmNlbGxIZWFwQ2VsbFR5cGUsIEpTVGVzdE5hbWVkR2V0dGVyV2l0aElkZW50aWZpZXIp
OworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZEdldHRlcldpdGhJZGVudGlm
aWVyID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwg
dm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3ROYW1lZEdldHRlcldpdGhJZGVudGlmaWVyKTsK
ICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkR2V0dGVyV2l0
aElkZW50aWZpZXIuZ2V0KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNv
ZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0
ZXJOb0lkZW50aWZpZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlck5vSWRlbnRpZmllci5jcHAJKHJldmlz
aW9uIDI4NjA0MykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3ROYW1lZFNldHRlck5vSWRlbnRpZmllci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY1LDcg
KzY1LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZv
cihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNF
X1NIQVJBQkxFKEpTVGVzdE5hbWVkU2V0dGVyTm9JZGVudGlmaWVyUHJvdG90eXBlLCBCYXNlKTsK
LSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZt
LnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBj
cmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC0zMDAsOSArMzAwLDkgQEAg
SlNDOjpJc29TdWJzcGFjZSogSlNUZXN0TmFtZWRTZXR0ZXJOb0lkZQogICAgICAgICByZXR1cm4g
c3BhY2U7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1
Y3RpYmxlT2JqZWN0LCBKU1Rlc3ROYW1lZFNldHRlck5vSWRlbnRpZmllcj4gfHwgIUpTVGVzdE5h
bWVkU2V0dGVyTm9JZGVudGlmaWVyOjpuZWVkc0Rlc3RydWN0aW9uKTsKICAgICBpZiBjb25zdGV4
cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdE5h
bWVkU2V0dGVyTm9JZGVudGlmaWVyPikKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0
TmFtZWRTZXR0ZXJOb0lkZW50aWZpZXIgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VC
U1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLCBK
U1Rlc3ROYW1lZFNldHRlck5vSWRlbnRpZmllcik7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNl
Rm9yVGVzdE5hbWVkU2V0dGVyTm9JZGVudGlmaWVyID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4g
SVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxU
eXBlKCksIEpTVGVzdE5hbWVkU2V0dGVyTm9JZGVudGlmaWVyKTsKICAgICBlbHNlCi0gICAgICAg
IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkU2V0dGVyTm9JZGVudGlmaWVyID0gbWFrZVVu
aXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmNlbGxIZWFw
Q2VsbFR5cGUsIEpTVGVzdE5hbWVkU2V0dGVyTm9JZGVudGlmaWVyKTsKKyAgICAgICAgc3BhY2Vz
Lm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRTZXR0ZXJOb0lkZW50aWZpZXIgPSBtYWtlVW5pcXVlPElz
b1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBl
KCksIEpTVGVzdE5hbWVkU2V0dGVyTm9JZGVudGlmaWVyKTsKICAgICBhdXRvKiBzcGFjZSA9IHNw
YWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkU2V0dGVyTm9JZGVudGlmaWVyLmdldCgpOwogSUdO
T1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKIElHTk9SRV9XQVJOSU5HU19C
RUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24uY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3ROYW1lZFNldHRlclRocm93aW5nRXhjZXB0aW9uLmNwcAkocmV2aXNpb24gMjg2MDQzKQor
KysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0
dGVyVGhyb3dpbmdFeGNlcHRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NSw3ICs2NSw3IEBA
IHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpW
TSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJM
RShKU1Rlc3ROYW1lZFNldHRlclRocm93aW5nRXhjZXB0aW9uUHJvdG90eXBlLCBCYXNlKTsKLSAg
ICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBs
YWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVh
dGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC0zMDAsOSArMzAwLDkgQEAgSlND
OjpJc29TdWJzcGFjZSogSlNUZXN0TmFtZWRTZXR0ZXJUaHJvdwogICAgICAgICByZXR1cm4gc3Bh
Y2U7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3Rp
YmxlT2JqZWN0LCBKU1Rlc3ROYW1lZFNldHRlclRocm93aW5nRXhjZXB0aW9uPiB8fCAhSlNUZXN0
TmFtZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbjo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgaWYg
Y29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBK
U1Rlc3ROYW1lZFNldHRlclRocm93aW5nRXhjZXB0aW9uPikKLSAgICAgICAgc3BhY2VzLm1fc3Vi
c3BhY2VGb3JUZXN0TmFtZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbiA9IG1ha2VVbmlxdWU8SXNv
U3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5kZXN0cnVjdGlibGVPYmpl
Y3RIZWFwQ2VsbFR5cGUsIEpTVGVzdE5hbWVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24pOworICAg
ICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZFNldHRlclRocm93aW5nRXhjZXB0aW9u
ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0u
ZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCksIEpTVGVzdE5hbWVkU2V0dGVyVGhyb3dp
bmdFeGNlcHRpb24pOwogICAgIGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0
TmFtZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbiA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElT
T19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5jZWxsSGVhcENlbGxUeXBlLCBKU1Rlc3ROYW1l
ZFNldHRlclRocm93aW5nRXhjZXB0aW9uKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JU
ZXN0TmFtZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbiA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+
IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0
TmFtZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbik7CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMu
bV9zdWJzcGFjZUZvclRlc3ROYW1lZFNldHRlclRocm93aW5nRXhjZXB0aW9uLmdldCgpOwogSUdO
T1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKIElHTk9SRV9XQVJOSU5HU19C
RUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aElkZW50aWZpZXIuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3ROYW1lZFNldHRlcldpdGhJZGVudGlmaWVyLmNwcAkocmV2aXNpb24gMjg2MDQzKQorKysgU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0
aElkZW50aWZpZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03Miw3ICs3Miw3IEBAIHB1YmxpYzoK
ICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAg
ICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3RO
YW1lZFNldHRlcldpdGhJZGVudGlmaWVyUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJu
ICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3Bh
Y2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUo
SlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1Zh
bHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC0zMzEsOSArMzMxLDkgQEAgSlNDOjpJc29TdWJzcGFj
ZSogSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSQogICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAgc3Rh
dGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBK
U1Rlc3ROYW1lZFNldHRlcldpdGhJZGVudGlmaWVyPiB8fCAhSlNUZXN0TmFtZWRTZXR0ZXJXaXRo
SWRlbnRpZmllcjo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3RleHByIChzdGQ6Omlz
X2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3ROYW1lZFNldHRlcldp
dGhJZGVudGlmaWVyPikKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRTZXR0
ZXJXaXRoSWRlbnRpZmllciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9J
TklUKHZtLmhlYXAsICp2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUsIEpTVGVzdE5h
bWVkU2V0dGVyV2l0aElkZW50aWZpZXIpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRl
c3ROYW1lZFNldHRlcldpdGhJZGVudGlmaWVyID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNP
X1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBl
KCksIEpTVGVzdE5hbWVkU2V0dGVyV2l0aElkZW50aWZpZXIpOwogICAgIGVsc2UKLSAgICAgICAg
c3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmllciA9IG1ha2VV
bmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5jZWxsSGVh
cENlbGxUeXBlLCBKU1Rlc3ROYW1lZFNldHRlcldpdGhJZGVudGlmaWVyKTsKKyAgICAgICAgc3Bh
Y2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmllciA9IG1ha2VVbmlx
dWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2Vs
bFR5cGUoKSwgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmllcik7CiAgICAgYXV0byogc3Bh
Y2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZFNldHRlcldpdGhJZGVudGlmaWVyLmdl
dCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKIElHTk9SRV9X
QVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRleDogU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRH
ZXR0ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyLmNwcAkocmV2aXNpb24g
Mjg2MDQzKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NSw3
ICs3NSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VG
b3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFD
RV9TSEFSQUJMRShKU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyUHJvdG90eXBlLCBC
YXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1
cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0
dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC0zNzgsOSArMzc4
LDkgQEAgSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSQogICAgICAgICBy
ZXR1cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpT
RGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyPiB8
fCAhSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlcjo6bmVlZHNEZXN0cnVjdGlvbik7
CiAgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxl
T2JqZWN0LCBKU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyPikKLSAgICAgICAgc3Bh
Y2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlciA9IG1ha2VV
bmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5kZXN0cnVj
dGlibGVPYmplY3RIZWFwQ2VsbFR5cGUsIEpTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0
ZXIpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZFNldHRlcldpdGhJbmRl
eGVkR2V0dGVyID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0u
aGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCksIEpTVGVzdE5hbWVkU2V0
dGVyV2l0aEluZGV4ZWRHZXR0ZXIpOwogICAgIGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vic3Bh
Y2VGb3JUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlciA9IG1ha2VVbmlxdWU8SXNvU3Vi
c3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5jZWxsSGVhcENlbGxUeXBlLCBK
U1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vi
c3BhY2VGb3JUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlciA9IG1ha2VVbmlxdWU8SXNv
U3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUo
KSwgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlcik7CiAgICAgYXV0byogc3BhY2Ug
PSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyLmdl
dCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKIElHTk9SRV9X
QVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRleDogU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRH
ZXR0ZXJBbmRTZXR0ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQW5kU2V0
dGVyLmNwcAkocmV2aXNpb24gMjg2MDQzKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0ZXIu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NSw3ICs3NSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMg
SlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAgICAg
ICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3ROYW1lZFNldHRlcldp
dGhJbmRleGVkR2V0dGVyQW5kU2V0dGVyUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJu
ICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3Bh
Y2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUo
SlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1Zh
bHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC00MjgsOSArNDI4LDkgQEAgSlNDOjpJc29TdWJzcGFj
ZSogSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSQogICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAgc3Rh
dGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBK
U1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQW5kU2V0dGVyPiB8fCAhSlNUZXN0TmFt
ZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlckFuZFNldHRlcjo6bmVlZHNEZXN0cnVjdGlvbik7CiAg
ICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2Jq
ZWN0LCBKU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQW5kU2V0dGVyPikKLSAgICAg
ICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlckFu
ZFNldHRlciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhl
YXAsICp2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUsIEpTVGVzdE5hbWVkU2V0dGVy
V2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0ZXIpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZv
clRlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQW5kU2V0dGVyID0gbWFrZVVuaXF1ZTxJ
c29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2Jq
ZWN0SGVhcENlbGxUeXBlKCksIEpTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRT
ZXR0ZXIpOwogICAgIGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRT
ZXR0ZXJXaXRoSW5kZXhlZEdldHRlckFuZFNldHRlciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+
IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5jZWxsSGVhcENlbGxUeXBlLCBKU1Rlc3RO
YW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQW5kU2V0dGVyKTsKKyAgICAgICAgc3BhY2VzLm1f
c3Vic3BhY2VGb3JUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlckFuZFNldHRlciA9IG1h
a2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxI
ZWFwQ2VsbFR5cGUoKSwgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlckFuZFNldHRl
cik7CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZFNldHRl
cldpdGhJbmRleGVkR2V0dGVyQW5kU2V0dGVyLmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lO
KCJ1bnJlYWNoYWJsZS1jb2RlIikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2Fs
LWNvbXBhcmUiKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1l
ZFNldHRlcldpdGhMZWdhY3lPdmVycmlkZUJ1aWx0SW5zLmNwcAkocmV2aXNpb24gMjg2MDQzKQor
KysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0
dGVyV2l0aExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NSw3
ICs2NSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VG
b3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFD
RV9TSEFSQUJMRShKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lPdmVycmlkZUJ1aWx0SW5zUHJv
dG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAg
ICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpT
Qzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC0y
NzcsOSArMjc3LDkgQEAgSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTAog
ICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2Zf
djxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lP
dmVycmlkZUJ1aWx0SW5zPiB8fCAhSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5T3ZlcnJpZGVC
dWlsdEluczo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jh
c2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3ROYW1lZFNldHRlcldpdGhM
ZWdhY3lPdmVycmlkZUJ1aWx0SW5zPikKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0
TmFtZWRTZXR0ZXJXaXRoTGVnYWN5T3ZlcnJpZGVCdWlsdElucyA9IG1ha2VVbmlxdWU8SXNvU3Vi
c3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5kZXN0cnVjdGlibGVPYmplY3RI
ZWFwQ2VsbFR5cGUsIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMp
OworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lP
dmVycmlkZUJ1aWx0SW5zID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lO
SVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCksIEpTVGVzdE5h
bWVkU2V0dGVyV2l0aExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMpOwogICAgIGVsc2UKLSAgICAgICAg
c3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5T3ZlcnJpZGVCdWls
dElucyA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAs
ICp2bS5jZWxsSGVhcENlbGxUeXBlLCBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lPdmVycmlk
ZUJ1aWx0SW5zKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRTZXR0ZXJX
aXRoTGVnYWN5T3ZlcnJpZGVCdWlsdElucyA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19T
VUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0TmFtZWRT
ZXR0ZXJXaXRoTGVnYWN5T3ZlcnJpZGVCdWlsdElucyk7CiAgICAgYXV0byogc3BhY2UgPSBzcGFj
ZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lPdmVycmlkZUJ1aWx0SW5z
LmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKIElHTk9S
RV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRleDogU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2Fj
eVVuZm9yZ2VhYmxlUHJvcGVydGllcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9y
Z2VhYmxlUHJvcGVydGllcy5jcHAJKHJldmlzaW9uIDI4NjA0MykKKysrIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZv
cmdlYWJsZVByb3BlcnRpZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NCw3ICs3NCw3IEBAIHB1
YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYg
dm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShK
U1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNQcm90b3R5cGUs
IEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJl
dHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1
Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKQEAgLTM2MSw5ICsz
NjEsOSBAQCBKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3ROYW1lZFNldHRlcldpdGhMCiAgICAgICAg
IHJldHVybiBzcGFjZTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6
SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2Vh
YmxlUHJvcGVydGllcz4gfHwgIUpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxl
UHJvcGVydGllczo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3RleHByIChzdGQ6Omlz
X2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3ROYW1lZFNldHRlcldp
dGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXM+KQotICAgICAgICBzcGFjZXMubV9zdWJzcGFj
ZUZvclRlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXMgPSBtYWtl
VW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uZGVzdHJ1
Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLCBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZv
cmdlYWJsZVByb3BlcnRpZXMpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1l
ZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXMgPSBtYWtlVW5pcXVlPElzb1N1
YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RI
ZWFwQ2VsbFR5cGUoKSwgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9w
ZXJ0aWVzKTsKICAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVk
U2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllcyA9IG1ha2VVbmlxdWU8SXNvU3Vi
c3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5jZWxsSGVhcENlbGxUeXBlLCBK
U1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXMpOworICAgICAg
ICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJs
ZVByb3BlcnRpZXMgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2
bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCksIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2Fj
eVVuZm9yZ2VhYmxlUHJvcGVydGllcyk7CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJz
cGFjZUZvclRlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXMuZ2V0
KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dB
Uk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5m
b3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdElucy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVk
U2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVp
bHRJbnMuY3BwCShyZXZpc2lvbiAyODYwNDMpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9w
ZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdElucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc0
LDcgKzc0LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFj
ZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQ
QUNFX1NIQVJBQkxFKEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVy
dGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnNQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICBy
ZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmpl
Y3RTcGFjZSgpOwogICAgIH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVj
dHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6
OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKQEAgLTMzOCw5ICszMzgsOSBAQCBKU0M6Oklzb1N1
YnNwYWNlKiBKU1Rlc3ROYW1lZFNldHRlcldpdGhMCiAgICAgICAgIHJldHVybiBzcGFjZTsKICAg
ICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmpl
Y3QsIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExl
Z2FjeU92ZXJyaWRlQnVpbHRJbnM+IHx8ICFKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZv
cmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zOjpuZWVkc0Rlc3RydWN0
aW9uKTsKICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVj
dGlibGVPYmplY3QsIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVy
dGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM+KQotICAgICAgICBzcGFjZXMubV9zdWJzcGFj
ZUZvclRlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdh
Y3lPdmVycmlkZUJ1aWx0SW5zID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNF
X0lOSVQodm0uaGVhcCwgKnZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSwgSlNUZXN0
TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJp
ZGVCdWlsdElucyk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkU2V0dGVy
V2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMg
PSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5k
ZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVn
YWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdElucyk7CiAgICAg
ZWxzZQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZFNldHRlcldpdGhMZWdh
Y3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zID0gbWFrZVVu
aXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmNlbGxIZWFw
Q2VsbFR5cGUsIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGll
c0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZv
clRlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lP
dmVycmlkZUJ1aWx0SW5zID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lO
SVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3ROYW1lZFNldHRlcldpdGhM
ZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zKTsKICAg
ICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkU2V0dGVyV2l0aExl
Z2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMuZ2V0KCk7
CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5J
TkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZXNwYWNlT2JqZWN0LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFt
ZXNwYWNlT2JqZWN0LmNwcAkocmV2aXNpb24gMjg2MDQzKQorKysgU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVzcGFjZU9iamVjdC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTI4MCw5ICsyODAsOSBAQCBKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3ROYW1lc3Bh
Y2VPYmplY3Q6CiAgICAgICAgIHJldHVybiBzcGFjZTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6
aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdE5hbWVzcGFjZU9i
amVjdD4gfHwgIUpTVGVzdE5hbWVzcGFjZU9iamVjdDo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAg
aWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0
LCBKU1Rlc3ROYW1lc3BhY2VPYmplY3Q+KQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRl
c3ROYW1lc3BhY2VPYmplY3QgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0Vf
SU5JVCh2bS5oZWFwLCAqdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLCBKU1Rlc3RO
YW1lc3BhY2VPYmplY3QpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lc3Bh
Y2VPYmplY3QgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5o
ZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0TmFtZXNwYWNl
T2JqZWN0KTsKICAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVz
cGFjZU9iamVjdCA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZt
LmhlYXAsICp2bS5jZWxsSGVhcENlbGxUeXBlLCBKU1Rlc3ROYW1lc3BhY2VPYmplY3QpOworICAg
ICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lc3BhY2VPYmplY3QgPSBtYWtlVW5pcXVl
PElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxU
eXBlKCksIEpTVGVzdE5hbWVzcGFjZU9iamVjdCk7CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMu
bV9zdWJzcGFjZUZvclRlc3ROYW1lc3BhY2VPYmplY3QuZ2V0KCk7CiBJR05PUkVfV0FSTklOR1Nf
QkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xv
Z2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0Tm9kZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5vZGUuY3BwCShyZXZpc2lvbiAyODYwNDMpCisrKyBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Tm9kZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTk1LDcgKzk1LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklz
b1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJ
Q19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdE5vZGVQcm90b3R5cGUsIEJhc2Up
OwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAm
dm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUq
IGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKQEAgLTQwNSw5ICs0MDUsOSBA
QCBwdWJsaWM6CiAgICAgICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAgICAgIHN0YXRpY19hc3Nl
cnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgVGVzdE5vZGVJ
dGVyYXRvcj4gfHwgIVRlc3ROb2RlSXRlcmF0b3I6Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAgICAg
ICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmpl
Y3QsIFRlc3ROb2RlSXRlcmF0b3I+KQotICAgICAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JU
ZXN0Tm9kZUl0ZXJhdG9yID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lO
SVQodm0uaGVhcCwgKnZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5nZXQoKSwgVGVz
dE5vZGVJdGVyYXRvcik7CisgICAgICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROb2Rl
SXRlcmF0b3IgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5o
ZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwgVGVzdE5vZGVJdGVyYXRv
cik7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5v
ZGVJdGVyYXRvciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZt
LmhlYXAsICp2bS5jZWxsSGVhcENlbGxUeXBlLCBUZXN0Tm9kZUl0ZXJhdG9yKTsKKyAgICAgICAg
ICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5vZGVJdGVyYXRvciA9IG1ha2VVbmlxdWU8SXNv
U3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUo
KSwgVGVzdE5vZGVJdGVyYXRvcik7CiAgICAgICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vi
c3BhY2VGb3JUZXN0Tm9kZUl0ZXJhdG9yLmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1
bnJlYWNoYWJsZS1jb2RlIikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNv
bXBhcmUiKQpAQCAtNDk3LDkgKzQ5Nyw5IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdE5vZGU6
OnN1YnNwYWNlRm8KICAgICAgICAgcmV0dXJuIHNwYWNlOwogICAgIHN0YXRpY19hc3NlcnQoc3Rk
Ojppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0Tm9kZT4gfHwg
IUpTVGVzdE5vZGU6Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjpp
c19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0Tm9kZT4pCi0gICAg
ICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5vZGUgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNl
PiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENl
bGxUeXBlLCBKU1Rlc3ROb2RlKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0Tm9k
ZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZt
LmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3ROb2RlKTsKICAgICBlbHNl
Ci0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5vZGUgPSBtYWtlVW5pcXVlPElzb1N1
YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uY2VsbEhlYXBDZWxsVHlwZSwg
SlNUZXN0Tm9kZSk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5vZGUgPSBtYWtl
VW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVh
cENlbGxUeXBlKCksIEpTVGVzdE5vZGUpOwogICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vi
c3BhY2VGb3JUZXN0Tm9kZS5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFi
bGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmou
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RPYmouY3BwCShyZXZpc2lvbiAyODYwNDMpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTg2
Niw3ICsxODY2LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJz
cGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NV
QlNQQUNFX1NIQVJBQkxFKEpTVGVzdE9ialByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVy
biAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNw
YWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJl
KEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNW
YWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAtOTAwNiw5ICs5MDA2LDkgQEAgSlNDOjpJc29TdWJz
cGFjZSogSlNUZXN0T2JqOjpzdWJzcGFjZUZvcgogICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAg
c3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0
LCBKU1Rlc3RPYmo+IHx8ICFKU1Rlc3RPYmo6Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNv
bnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNU
ZXN0T2JqPikKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0T2JqID0gbWFrZVVuaXF1
ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmRlc3RydWN0aWJs
ZU9iamVjdEhlYXBDZWxsVHlwZSwgSlNUZXN0T2JqKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3Bh
Y2VGb3JUZXN0T2JqID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQo
dm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCksIEpTVGVzdE9iaik7
CiAgICAgZWxzZQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RPYmogPSBtYWtlVW5p
cXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uY2VsbEhlYXBD
ZWxsVHlwZSwgSlNUZXN0T2JqKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0T2Jq
ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0u
Y2VsbEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RPYmopOwogICAgIGF1dG8qIHNwYWNlID0gc3BhY2Vz
Lm1fc3Vic3BhY2VGb3JUZXN0T2JqLmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJl
YWNoYWJsZS1jb2RlIikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBh
cmUiKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dE9wZXJhdGlvbkNvbmRpdGlvbmFsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3BlcmF0aW9uQ29uZGl0aW9uYWwuY3BwCShy
ZXZpc2lvbiAyODYwNDMpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0T3BlcmF0aW9uQ29uZGl0aW9uYWwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04MSw3
ICs4MSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VG
b3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFD
RV9TSEFSQUJMRShKU1Rlc3RPcGVyYXRpb25Db25kaXRpb25hbFByb3RvdHlwZSwgQmFzZSk7Ci0g
ICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5w
bGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3Jl
YXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAtMjM0LDkgKzIzNCw5IEBAIEpT
Qzo6SXNvU3Vic3BhY2UqIEpTVGVzdE9wZXJhdGlvbkNvbmRpdGkKICAgICAgICAgcmV0dXJuIHNw
YWNlOwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0
aWJsZU9iamVjdCwgSlNUZXN0T3BlcmF0aW9uQ29uZGl0aW9uYWw+IHx8ICFKU1Rlc3RPcGVyYXRp
b25Db25kaXRpb25hbDo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3RleHByIChzdGQ6
OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RPcGVyYXRpb25D
b25kaXRpb25hbD4pCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE9wZXJhdGlvbkNv
bmRpdGlvbmFsID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0u
aGVhcCwgKnZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSwgSlNUZXN0T3BlcmF0aW9u
Q29uZGl0aW9uYWwpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RPcGVyYXRpb25D
b25kaXRpb25hbCA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZt
LmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RPcGVyYXRp
b25Db25kaXRpb25hbCk7CiAgICAgZWxzZQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRl
c3RPcGVyYXRpb25Db25kaXRpb25hbCA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJT
UEFDRV9JTklUKHZtLmhlYXAsICp2bS5jZWxsSGVhcENlbGxUeXBlLCBKU1Rlc3RPcGVyYXRpb25D
b25kaXRpb25hbCk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE9wZXJhdGlvbkNv
bmRpdGlvbmFsID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0u
aGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RPcGVyYXRpb25Db25kaXRpb25hbCk7
CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RPcGVyYXRpb25Db25k
aXRpb25hbC5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIp
CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVybG9hZGVkQ29u
c3RydWN0b3JzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5jcHAJKHJldmlzaW9uIDI4
NjA0MykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RP
dmVybG9hZGVkQ29uc3RydWN0b3JzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjksNyArNjksNyBA
QCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6
Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFC
TEUoSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1Byb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAg
IHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9i
amVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3Ry
dWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpT
Qzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAtMjk1LDkgKzI5NSw5IEBAIEpTQzo6SXNv
U3Vic3BhY2UqIEpTVGVzdE92ZXJsb2FkZWRDb25zdHIKICAgICAgICAgcmV0dXJuIHNwYWNlOwog
ICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9i
amVjdCwgSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycz4gfHwgIUpTVGVzdE92ZXJsb2FkZWRD
b25zdHJ1Y3RvcnM6Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjpp
c19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0T3ZlcmxvYWRlZENv
bnN0cnVjdG9ycz4pCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE92ZXJsb2FkZWRD
b25zdHJ1Y3RvcnMgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2
bS5oZWFwLCAqdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLCBKU1Rlc3RPdmVybG9h
ZGVkQ29uc3RydWN0b3JzKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0T3Zlcmxv
YWRlZENvbnN0cnVjdG9ycyA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9J
TklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RP
dmVybG9hZGVkQ29uc3RydWN0b3JzKTsKICAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNw
YWNlRm9yVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNl
PiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uY2VsbEhlYXBDZWxsVHlwZSwgSlNUZXN0
T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVz
dE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VC
U1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCksIEpTVGVzdE92ZXJsb2Fk
ZWRDb25zdHJ1Y3RvcnMpOwogICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JU
ZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigi
dW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1j
b21wYXJlIikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzV2l0aFNlcXVlbmNlLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcmxvYWRl
ZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5jZS5jcHAJKHJldmlzaW9uIDI4NjA0MykKKysrIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVybG9hZGVkQ29uc3Ry
dWN0b3JzV2l0aFNlcXVlbmNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjgsNyArNjgsNyBAQCBw
dWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0m
IHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUo
SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5jZVByb3RvdHlwZSwgQmFzZSk7
Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2
bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSog
Y3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAtMjM4LDkgKzIzOCw5IEBA
IEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdE92ZXJsb2FkZWRDb25zdHIKICAgICAgICAgcmV0dXJu
IHNwYWNlOwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3Ry
dWN0aWJsZU9iamVjdCwgSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5jZT4g
fHwgIUpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2U6Om5lZWRzRGVzdHJ1
Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3Ry
dWN0aWJsZU9iamVjdCwgSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5jZT4p
Ci0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNX
aXRoU2VxdWVuY2UgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2
bS5oZWFwLCAqdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLCBKU1Rlc3RPdmVybG9h
ZGVkQ29uc3RydWN0b3JzV2l0aFNlcXVlbmNlKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VG
b3JUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5jZSA9IG1ha2VVbmlxdWU8SXNv
U3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVj
dEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzV2l0aFNlcXVlbmNl
KTsKICAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE92ZXJsb2FkZWRD
b25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2UgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VC
U1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uY2VsbEhlYXBDZWxsVHlwZSwgSlNUZXN0T3ZlcmxvYWRl
ZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5jZSk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9y
VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2UgPSBtYWtlVW5pcXVlPElzb1N1
YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCks
IEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2UpOwogICAgIGF1dG8qIHNw
YWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dpdGhT
ZXF1ZW5jZS5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIp
CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RQbHVnaW5JbnRlcmZh
Y2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RQbHVnaW5JbnRlcmZhY2UuY3BwCShyZXZpc2lvbiAyODYwNDMpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0UGx1Z2luSW50ZXJmYWNl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjQsNyArNjQsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGlj
IEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAg
ICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0UGx1Z2luSW50ZXJm
YWNlUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNl
OworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3Rh
dGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7
CkBAIC0yNDQsOSArMjQ0LDkgQEAgSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0UGx1Z2luSW50ZXJm
YWNlOgogICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jh
c2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RQbHVnaW5JbnRlcmZhY2U+
IHx8ICFKU1Rlc3RQbHVnaW5JbnRlcmZhY2U6Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNv
bnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNU
ZXN0UGx1Z2luSW50ZXJmYWNlPikKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0UGx1
Z2luSW50ZXJmYWNlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQo
dm0uaGVhcCwgKnZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSwgSlNUZXN0UGx1Z2lu
SW50ZXJmYWNlKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0UGx1Z2luSW50ZXJm
YWNlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwg
dm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCksIEpTVGVzdFBsdWdpbkludGVyZmFj
ZSk7CiAgICAgZWxzZQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RQbHVnaW5JbnRl
cmZhY2UgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFw
LCAqdm0uY2VsbEhlYXBDZWxsVHlwZSwgSlNUZXN0UGx1Z2luSW50ZXJmYWNlKTsKKyAgICAgICAg
c3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0UGx1Z2luSW50ZXJmYWNlID0gbWFrZVVuaXF1ZTxJc29T
dWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgp
LCBKU1Rlc3RQbHVnaW5JbnRlcmZhY2UpOwogICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vi
c3BhY2VGb3JUZXN0UGx1Z2luSW50ZXJmYWNlLmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lO
KCJ1bnJlYWNoYWJsZS1jb2RlIikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2Fs
LWNvbXBhcmUiKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFByb21pc2VSZWplY3Rpb25FdmVu
dC5jcHAJKHJldmlzaW9uIDI4NjA0MykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xNDgsNyArMTQ4LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNl
KiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRf
SVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudFByb3RvdHlw
ZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAg
cmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0
cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAtMzAxLDkg
KzMwMSw5IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdFByb21pc2VSZWplY3Rpb24KICAgICAg
ICAgcmV0dXJuIHNwYWNlOwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlND
OjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50PiB8fCAh
SlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50OjpuZWVkc0Rlc3RydWN0aW9uKTsKICAgICBpZiBj
b25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpT
VGVzdFByb21pc2VSZWplY3Rpb25FdmVudD4pCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9y
VGVzdFByb21pc2VSZWplY3Rpb25FdmVudCA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19T
VUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUs
IEpTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudCk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNl
Rm9yVGVzdFByb21pc2VSZWplY3Rpb25FdmVudCA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElT
T19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlw
ZSgpLCBKU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQpOwogICAgIGVsc2UKLSAgICAgICAgc3Bh
Y2VzLm1fc3Vic3BhY2VGb3JUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50ID0gbWFrZVVuaXF1ZTxJ
c29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmNlbGxIZWFwQ2VsbFR5
cGUsIEpTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudCk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNw
YWNlRm9yVGVzdFByb21pc2VSZWplY3Rpb25FdmVudCA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+
IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0
UHJvbWlzZVJlamVjdGlvbkV2ZW50KTsKICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNw
YWNlRm9yVGVzdFByb21pc2VSZWplY3Rpb25FdmVudC5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19C
RUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9n
aWNhbC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RSZWFkT25seU1hcExpa2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RSZWFkT25seU1hcExpa2UuY3BwCShy
ZXZpc2lvbiAyODYwNDMpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0UmVhZE9ubHlNYXBMaWtlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzksNyArNzks
NyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpT
Qzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hB
UkFCTEUoSlNUZXN0UmVhZE9ubHlNYXBMaWtlUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0
dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0
U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1
cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpK
U1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC0zMDUsOSArMzA1LDkgQEAgSlNDOjpJc29TdWJz
cGFjZSogSlNUZXN0UmVhZE9ubHlNYXBMaWtlOgogICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAg
c3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0
LCBKU1Rlc3RSZWFkT25seU1hcExpa2U+IHx8ICFKU1Rlc3RSZWFkT25seU1hcExpa2U6Om5lZWRz
RGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpK
U0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0UmVhZE9ubHlNYXBMaWtlPikKLSAgICAgICAgc3Bh
Y2VzLm1fc3Vic3BhY2VGb3JUZXN0UmVhZE9ubHlNYXBMaWtlID0gbWFrZVVuaXF1ZTxJc29TdWJz
cGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmRlc3RydWN0aWJsZU9iamVjdEhl
YXBDZWxsVHlwZSwgSlNUZXN0UmVhZE9ubHlNYXBMaWtlKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vi
c3BhY2VGb3JUZXN0UmVhZE9ubHlNYXBMaWtlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNP
X1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBl
KCksIEpTVGVzdFJlYWRPbmx5TWFwTGlrZSk7CiAgICAgZWxzZQotICAgICAgICBzcGFjZXMubV9z
dWJzcGFjZUZvclRlc3RSZWFkT25seU1hcExpa2UgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJ
U09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uY2VsbEhlYXBDZWxsVHlwZSwgSlNUZXN0UmVh
ZE9ubHlNYXBMaWtlKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0UmVhZE9ubHlN
YXBMaWtlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVh
cCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RSZWFkT25seU1hcExpa2UpOwogICAgIGF1
dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0UmVhZE9ubHlNYXBMaWtlLmdldCgp
OwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKIElHTk9SRV9XQVJO
SU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRleDogU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFJlYWRPbmx5U2V0TGlrZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFJl
YWRPbmx5U2V0TGlrZS5jcHAJKHJldmlzaW9uIDI4NjA0MykKKysrIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RSZWFkT25seVNldExpa2UuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC03OCw3ICs3OCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJz
cGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNT
RVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3RSZWFkT25seVNldExpa2VQcm90b3R5cGUs
IEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJl
dHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1
Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKQEAgLTI4NCw5ICsy
ODQsOSBAQCBKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3RSZWFkT25seVNldExpa2U6CiAgICAgICAg
IHJldHVybiBzcGFjZTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6
SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdFJlYWRPbmx5U2V0TGlrZT4gfHwgIUpTVGVzdFJl
YWRPbmx5U2V0TGlrZTo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3RleHByIChzdGQ6
OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RSZWFkT25seVNl
dExpa2U+KQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RSZWFkT25seVNldExpa2Ug
PSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0u
ZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLCBKU1Rlc3RSZWFkT25seVNldExpa2UpOwor
ICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RSZWFkT25seVNldExpa2UgPSBtYWtlVW5p
cXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGli
bGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0UmVhZE9ubHlTZXRMaWtlKTsKICAgICBlbHNl
Ci0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFJlYWRPbmx5U2V0TGlrZSA9IG1ha2VV
bmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5jZWxsSGVh
cENlbGxUeXBlLCBKU1Rlc3RSZWFkT25seVNldExpa2UpOworICAgICAgICBzcGFjZXMubV9zdWJz
cGFjZUZvclRlc3RSZWFkT25seVNldExpa2UgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09f
U1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCksIEpTVGVzdFJlYWRP
bmx5U2V0TGlrZSk7CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RS
ZWFkT25seVNldExpa2UuZ2V0KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxl
LWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0UmVwb3J0
RXh0cmFNZW1vcnlDb3N0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0UmVwb3J0RXh0cmFNZW1vcnlDb3N0LmNwcAkocmV2aXNp
b24gMjg2MDQzKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdFJlcG9ydEV4dHJhTWVtb3J5Q29zdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYzLDcgKzYz
LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihK
U0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NI
QVJBQkxFKEpTVGVzdFJlcG9ydEV4dHJhTWVtb3J5Q29zdFByb3RvdHlwZSwgQmFzZSk7Ci0gICAg
ICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFp
bk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRl
U3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAtMTcxLDkgKzE3MSw5IEBAIEpTQzo6
SXNvU3Vic3BhY2UqIEpTVGVzdFJlcG9ydEV4dHJhTWVtb3IKICAgICAgICAgcmV0dXJuIHNwYWNl
OwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJs
ZU9iamVjdCwgSlNUZXN0UmVwb3J0RXh0cmFNZW1vcnlDb3N0PiB8fCAhSlNUZXN0UmVwb3J0RXh0
cmFNZW1vcnlDb3N0OjpuZWVkc0Rlc3RydWN0aW9uKTsKICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6
aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdFJlcG9ydEV4dHJh
TWVtb3J5Q29zdD4pCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFJlcG9ydEV4dHJh
TWVtb3J5Q29zdCA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZt
LmhlYXAsICp2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUsIEpTVGVzdFJlcG9ydEV4
dHJhTWVtb3J5Q29zdCk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFJlcG9ydEV4
dHJhTWVtb3J5Q29zdCA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklU
KHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RSZXBv
cnRFeHRyYU1lbW9yeUNvc3QpOwogICAgIGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VG
b3JUZXN0UmVwb3J0RXh0cmFNZW1vcnlDb3N0ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNP
X1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmNlbGxIZWFwQ2VsbFR5cGUsIEpTVGVzdFJlcG9y
dEV4dHJhTWVtb3J5Q29zdCk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFJlcG9y
dEV4dHJhTWVtb3J5Q29zdCA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9J
TklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0UmVwb3J0RXh0cmFNZW1v
cnlDb3N0KTsKICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFJlcG9y
dEV4dHJhTWVtb3J5Q29zdC5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFi
bGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJp
YWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJ
bnRlcmZhY2UuY3BwCShyZXZpc2lvbiAyODYwNDMpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtODksNyArODksNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpT
Qzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAg
U1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0U2VyaWFsaXplZFNjcmlw
dFZhbHVlSW50ZXJmYWNlUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFp
bk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAg
ICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYg
dm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3Rv
dHlwZSkKICAgICB7CkBAIC0zNDksOSArMzQ5LDkgQEAgSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0
U2VyaWFsaXplZFNjcmlwdAogICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fzc2Vy
dChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RTZXJp
YWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2U+IHx8ICFKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFs
dWVJbnRlcmZhY2U6Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjpp
c19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0U2VyaWFsaXplZFNj
cmlwdFZhbHVlSW50ZXJmYWNlPikKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0U2Vy
aWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNP
X1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlw
ZSwgSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlKTsKKyAgICAgICAgc3BhY2Vz
Lm1fc3Vic3BhY2VGb3JUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlID0gbWFrZVVu
aXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3Rp
YmxlT2JqZWN0SGVhcENlbGxUeXBlKCksIEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVy
ZmFjZSk7CiAgICAgZWxzZQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RTZXJpYWxp
emVkU2NyaXB0VmFsdWVJbnRlcmZhY2UgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VC
U1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uY2VsbEhlYXBDZWxsVHlwZSwgSlNUZXN0U2VyaWFsaXpl
ZFNjcmlwdFZhbHVlSW50ZXJmYWNlKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0
U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4g
SVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RT
ZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UpOwogICAgIGF1dG8qIHNwYWNlID0gc3BhY2Vz
Lm1fc3Vic3BhY2VGb3JUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmdldCgpOwog
SUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKIElHTk9SRV9XQVJOSU5H
U19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNldExpa2UuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXRMaWtlLmNwcAko
cmV2aXNpb24gMjg2MDQzKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdFNldExpa2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04MSw3ICs4MSw3IEBAIHB1
YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYg
dm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShK
U1Rlc3RTZXRMaWtlUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9i
amVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9
CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0s
IEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlw
ZSkKICAgICB7CkBAIC0zNDIsOSArMzQyLDkgQEAgSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0U2V0
TGlrZTo6c3Vic3BhYwogICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fzc2VydChz
dGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RTZXRMaWtl
PiB8fCAhSlNUZXN0U2V0TGlrZTo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3RleHBy
IChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RTZXRM
aWtlPikKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0U2V0TGlrZSA9IG1ha2VVbmlx
dWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5kZXN0cnVjdGli
bGVPYmplY3RIZWFwQ2VsbFR5cGUsIEpTVGVzdFNldExpa2UpOworICAgICAgICBzcGFjZXMubV9z
dWJzcGFjZUZvclRlc3RTZXRMaWtlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQ
QUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCksIEpT
VGVzdFNldExpa2UpOwogICAgIGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0
U2V0TGlrZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhl
YXAsICp2bS5jZWxsSGVhcENlbGxUeXBlLCBKU1Rlc3RTZXRMaWtlKTsKKyAgICAgICAgc3BhY2Vz
Lm1fc3Vic3BhY2VGb3JUZXN0U2V0TGlrZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19T
VUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0U2V0TGlr
ZSk7CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RTZXRMaWtlLmdl
dCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKIElHTk9SRV9X
QVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRleDogU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNldExpa2VXaXRoT3ZlcnJpZGRlbk9w
ZXJhdGlvbnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RTZXRMaWtlV2l0aE92ZXJyaWRkZW5PcGVyYXRpb25zLmNwcAkocmV2
aXNpb24gMjg2MDQzKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdFNldExpa2VXaXRoT3ZlcnJpZGRlbk9wZXJhdGlvbnMuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC04NSw3ICs4NSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSog
c3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lT
T19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3RTZXRMaWtlV2l0aE92ZXJyaWRkZW5PcGVyYXRpb25z
UHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOwor
ICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGlj
IEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBA
IC0zNTQsOSArMzU0LDkgQEAgSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0U2V0TGlrZVdpdGhPdmVy
cgogICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vf
b2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RTZXRMaWtlV2l0aE92ZXJyaWRk
ZW5PcGVyYXRpb25zPiB8fCAhSlNUZXN0U2V0TGlrZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9uczo6
bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxK
U0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RTZXRMaWtlV2l0aE92ZXJyaWRkZW5PcGVy
YXRpb25zPikKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0U2V0TGlrZVdpdGhPdmVy
cmlkZGVuT3BlcmF0aW9ucyA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9J
TklUKHZtLmhlYXAsICp2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUsIEpTVGVzdFNl
dExpa2VXaXRoT3ZlcnJpZGRlbk9wZXJhdGlvbnMpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFj
ZUZvclRlc3RTZXRMaWtlV2l0aE92ZXJyaWRkZW5PcGVyYXRpb25zID0gbWFrZVVuaXF1ZTxJc29T
dWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0
SGVhcENlbGxUeXBlKCksIEpTVGVzdFNldExpa2VXaXRoT3ZlcnJpZGRlbk9wZXJhdGlvbnMpOwog
ICAgIGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0U2V0TGlrZVdpdGhPdmVy
cmlkZGVuT3BlcmF0aW9ucyA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9J
TklUKHZtLmhlYXAsICp2bS5jZWxsSGVhcENlbGxUeXBlLCBKU1Rlc3RTZXRMaWtlV2l0aE92ZXJy
aWRkZW5PcGVyYXRpb25zKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0U2V0TGlr
ZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9ucyA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19T
VUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0U2V0TGlr
ZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9ucyk7CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9z
dWJzcGFjZUZvclRlc3RTZXRMaWtlV2l0aE92ZXJyaWRkZW5PcGVyYXRpb25zLmdldCgpOwogSUdO
T1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKIElHTk9SRV9XQVJOSU5HU19C
RUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXIu
Y3BwCShyZXZpc2lvbiAyODYwNDMpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02OSw3ICs2
OSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3Io
SlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9T
SEFSQUJMRShKU1Rlc3RTdHJpbmdpZmllclByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVy
biAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNw
YWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJl
KEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNW
YWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAtMTkyLDkgKzE5Miw5IEBAIEpTQzo6SXNvU3Vic3Bh
Y2UqIEpTVGVzdFN0cmluZ2lmaWVyOjpzdWIKICAgICAgICAgcmV0dXJuIHNwYWNlOwogICAgIHN0
YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwg
SlNUZXN0U3RyaW5naWZpZXI+IHx8ICFKU1Rlc3RTdHJpbmdpZmllcjo6bmVlZHNEZXN0cnVjdGlv
bik7CiAgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3Rp
YmxlT2JqZWN0LCBKU1Rlc3RTdHJpbmdpZmllcj4pCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNl
Rm9yVGVzdFN0cmluZ2lmaWVyID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNF
X0lOSVQodm0uaGVhcCwgKnZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSwgSlNUZXN0
U3RyaW5naWZpZXIpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RTdHJpbmdpZmll
ciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZt
LmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RTdHJpbmdpZmllcik7CiAg
ICAgZWxzZQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RTdHJpbmdpZmllciA9IG1h
a2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5jZWxs
SGVhcENlbGxUeXBlLCBKU1Rlc3RTdHJpbmdpZmllcik7CisgICAgICAgIHNwYWNlcy5tX3N1YnNw
YWNlRm9yVGVzdFN0cmluZ2lmaWVyID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQ
QUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RTdHJpbmdpZmll
cik7CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RTdHJpbmdpZmll
ci5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJR05P
UkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllckFub255bW91
c09wZXJhdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyQW5vbnltb3VzT3BlcmF0aW9uLmNwcAkocmV2
aXNpb24gMjg2MDQzKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdFN0cmluZ2lmaWVyQW5vbnltb3VzT3BlcmF0aW9uLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNjksNyArNjksNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1
YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09f
U1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0U3RyaW5naWZpZXJBbm9ueW1vdXNPcGVyYXRpb25Qcm90
b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAg
ICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KICAgICBzdGF0aWMgSlND
OjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKQEAgLTE5
Miw5ICsxOTIsOSBAQCBKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3RTdHJpbmdpZmllckFub255CiAg
ICAgICAgIHJldHVybiBzcGFjZTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92
PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdFN0cmluZ2lmaWVyQW5vbnltb3VzT3Bl
cmF0aW9uPiB8fCAhSlNUZXN0U3RyaW5naWZpZXJBbm9ueW1vdXNPcGVyYXRpb246Om5lZWRzRGVz
dHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rl
c3RydWN0aWJsZU9iamVjdCwgSlNUZXN0U3RyaW5naWZpZXJBbm9ueW1vdXNPcGVyYXRpb24+KQot
ICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RTdHJpbmdpZmllckFub255bW91c09wZXJh
dGlvbiA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAs
ICp2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUsIEpTVGVzdFN0cmluZ2lmaWVyQW5v
bnltb3VzT3BlcmF0aW9uKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0U3RyaW5n
aWZpZXJBbm9ueW1vdXNPcGVyYXRpb24gPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VC
U1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwg
SlNUZXN0U3RyaW5naWZpZXJBbm9ueW1vdXNPcGVyYXRpb24pOwogICAgIGVsc2UKLSAgICAgICAg
c3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0U3RyaW5naWZpZXJBbm9ueW1vdXNPcGVyYXRpb24gPSBt
YWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uY2Vs
bEhlYXBDZWxsVHlwZSwgSlNUZXN0U3RyaW5naWZpZXJBbm9ueW1vdXNPcGVyYXRpb24pOworICAg
ICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RTdHJpbmdpZmllckFub255bW91c09wZXJhdGlv
biA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZt
LmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0U3RyaW5naWZpZXJBbm9ueW1vdXNPcGVyYXRpb24p
OwogICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0U3RyaW5naWZpZXJB
bm9ueW1vdXNPcGVyYXRpb24uZ2V0KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hh
YmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIp
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3Ry
aW5naWZpZXJOYW1lZE9wZXJhdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyTmFtZWRPcGVyYXRpb24u
Y3BwCShyZXZpc2lvbiAyODYwNDMpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJOYW1lZE9wZXJhdGlvbi5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTcwLDcgKzcwLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNl
KiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRf
SVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdFN0cmluZ2lmaWVyTmFtZWRPcGVyYXRpb25Qcm90
b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAg
ICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KICAgICBzdGF0aWMgSlND
OjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKQEAgLTIw
OSw5ICsyMDksOSBAQCBKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3RTdHJpbmdpZmllck5hbWVkCiAg
ICAgICAgIHJldHVybiBzcGFjZTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92
PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdFN0cmluZ2lmaWVyTmFtZWRPcGVyYXRp
b24+IHx8ICFKU1Rlc3RTdHJpbmdpZmllck5hbWVkT3BlcmF0aW9uOjpuZWVkc0Rlc3RydWN0aW9u
KTsKICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGli
bGVPYmplY3QsIEpTVGVzdFN0cmluZ2lmaWVyTmFtZWRPcGVyYXRpb24+KQotICAgICAgICBzcGFj
ZXMubV9zdWJzcGFjZUZvclRlc3RTdHJpbmdpZmllck5hbWVkT3BlcmF0aW9uID0gbWFrZVVuaXF1
ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmRlc3RydWN0aWJs
ZU9iamVjdEhlYXBDZWxsVHlwZSwgSlNUZXN0U3RyaW5naWZpZXJOYW1lZE9wZXJhdGlvbik7Cisg
ICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFN0cmluZ2lmaWVyTmFtZWRPcGVyYXRpb24g
PSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5k
ZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0U3RyaW5naWZpZXJOYW1lZE9w
ZXJhdGlvbik7CiAgICAgZWxzZQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RTdHJp
bmdpZmllck5hbWVkT3BlcmF0aW9uID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQ
QUNFX0lOSVQodm0uaGVhcCwgKnZtLmNlbGxIZWFwQ2VsbFR5cGUsIEpTVGVzdFN0cmluZ2lmaWVy
TmFtZWRPcGVyYXRpb24pOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RTdHJpbmdp
Zmllck5hbWVkT3BlcmF0aW9uID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNF
X0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RTdHJpbmdpZmllck5h
bWVkT3BlcmF0aW9uKTsKICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVz
dFN0cmluZ2lmaWVyTmFtZWRPcGVyYXRpb24uZ2V0KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4o
InVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwt
Y29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25JbXBsZW1lbnRlZEFzLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZp
ZXJPcGVyYXRpb25JbXBsZW1lbnRlZEFzLmNwcAkocmV2aXNpb24gMjg2MDQzKQorKysgU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyT3BlcmF0
aW9uSW1wbGVtZW50ZWRBcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcwLDcgKzcwLDcgQEAgcHVi
bGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2
bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpT
VGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uSW1wbGVtZW50ZWRBc1Byb3RvdHlwZSwgQmFzZSk7Ci0g
ICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5w
bGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3Jl
YXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAtMjA5LDkgKzIwOSw5IEBAIEpT
Qzo6SXNvU3Vic3BhY2UqIEpTVGVzdFN0cmluZ2lmaWVyT3BlcmEKICAgICAgICAgcmV0dXJuIHNw
YWNlOwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0
aWJsZU9iamVjdCwgSlNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25JbXBsZW1lbnRlZEFzPiB8fCAh
SlNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25JbXBsZW1lbnRlZEFzOjpuZWVkc0Rlc3RydWN0aW9u
KTsKICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGli
bGVPYmplY3QsIEpTVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uSW1wbGVtZW50ZWRBcz4pCi0gICAg
ICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uSW1wbGVtZW50
ZWRBcyA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAs
ICp2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUsIEpTVGVzdFN0cmluZ2lmaWVyT3Bl
cmF0aW9uSW1wbGVtZW50ZWRBcyk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFN0
cmluZ2lmaWVyT3BlcmF0aW9uSW1wbGVtZW50ZWRBcyA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+
IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxs
VHlwZSgpLCBKU1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbkltcGxlbWVudGVkQXMpOwogICAgIGVs
c2UKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25J
bXBsZW1lbnRlZEFzID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQo
dm0uaGVhcCwgKnZtLmNlbGxIZWFwQ2VsbFR5cGUsIEpTVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9u
SW1wbGVtZW50ZWRBcyk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFN0cmluZ2lm
aWVyT3BlcmF0aW9uSW1wbGVtZW50ZWRBcyA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19T
VUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0U3RyaW5n
aWZpZXJPcGVyYXRpb25JbXBsZW1lbnRlZEFzKTsKICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5t
X3N1YnNwYWNlRm9yVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uSW1wbGVtZW50ZWRBcy5nZXQoKTsK
IElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklO
R1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbk5hbWVkVG9T
dHJpbmcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbk5hbWVkVG9TdHJpbmcuY3BwCShyZXZp
c2lvbiAyODYwNDMpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25OYW1lZFRvU3RyaW5nLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNjksNyArNjksNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2Uq
IHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9J
U09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25OYW1lZFRvU3Ry
aW5nUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNl
OworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3Rh
dGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7
CkBAIC0xOTIsOSArMTkyLDkgQEAgSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0U3RyaW5naWZpZXJP
cGVyYQogICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jh
c2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RTdHJpbmdpZmllck9wZXJh
dGlvbk5hbWVkVG9TdHJpbmc+IHx8ICFKU1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbk5hbWVkVG9T
dHJpbmc6Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNl
X29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0U3RyaW5naWZpZXJPcGVyYXRp
b25OYW1lZFRvU3RyaW5nPikKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0U3RyaW5n
aWZpZXJPcGVyYXRpb25OYW1lZFRvU3RyaW5nID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNP
X1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlw
ZSwgSlNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25OYW1lZFRvU3RyaW5nKTsKKyAgICAgICAgc3Bh
Y2VzLm1fc3Vic3BhY2VGb3JUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25OYW1lZFRvU3RyaW5nID0g
bWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVz
dHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCksIEpTVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9u
TmFtZWRUb1N0cmluZyk7CiAgICAgZWxzZQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRl
c3RTdHJpbmdpZmllck9wZXJhdGlvbk5hbWVkVG9TdHJpbmcgPSBtYWtlVW5pcXVlPElzb1N1YnNw
YWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uY2VsbEhlYXBDZWxsVHlwZSwgSlNU
ZXN0U3RyaW5naWZpZXJPcGVyYXRpb25OYW1lZFRvU3RyaW5nKTsKKyAgICAgICAgc3BhY2VzLm1f
c3Vic3BhY2VGb3JUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25OYW1lZFRvU3RyaW5nID0gbWFrZVVu
aXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBD
ZWxsVHlwZSgpLCBKU1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbk5hbWVkVG9TdHJpbmcpOwogICAg
IGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0U3RyaW5naWZpZXJPcGVyYXRp
b25OYW1lZFRvU3RyaW5nLmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJs
ZS1jb2RlIikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJ
bmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmlu
Z2lmaWVyUmVhZE9ubHlBdHRyaWJ1dGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllclJlYWRPbmx5QXR0cmli
dXRlLmNwcAkocmV2aXNpb24gMjg2MDQzKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyUmVhZE9ubHlBdHRyaWJ1dGUuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC03MSw3ICs3MSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29T
dWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNf
QVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3RTdHJpbmdpZmllclJlYWRPbmx5QXR0
cmlidXRlUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNw
YWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAg
c3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAg
ICB7CkBAIC0yMDgsOSArMjA4LDkgQEAgSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0U3RyaW5naWZp
ZXJSZWFkTwogICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6Omlz
X2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RTdHJpbmdpZmllclJl
YWRPbmx5QXR0cmlidXRlPiB8fCAhSlNUZXN0U3RyaW5naWZpZXJSZWFkT25seUF0dHJpYnV0ZTo6
bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxK
U0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RTdHJpbmdpZmllclJlYWRPbmx5QXR0cmli
dXRlPikKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0U3RyaW5naWZpZXJSZWFkT25s
eUF0dHJpYnV0ZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZt
LmhlYXAsICp2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUsIEpTVGVzdFN0cmluZ2lm
aWVyUmVhZE9ubHlBdHRyaWJ1dGUpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RT
dHJpbmdpZmllclJlYWRPbmx5QXR0cmlidXRlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNP
X1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBl
KCksIEpTVGVzdFN0cmluZ2lmaWVyUmVhZE9ubHlBdHRyaWJ1dGUpOwogICAgIGVsc2UKLSAgICAg
ICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0U3RyaW5naWZpZXJSZWFkT25seUF0dHJpYnV0ZSA9
IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5j
ZWxsSGVhcENlbGxUeXBlLCBKU1Rlc3RTdHJpbmdpZmllclJlYWRPbmx5QXR0cmlidXRlKTsKKyAg
ICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0U3RyaW5naWZpZXJSZWFkT25seUF0dHJpYnV0
ZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZt
LmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0U3RyaW5naWZpZXJSZWFkT25seUF0dHJpYnV0ZSk7
CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RTdHJpbmdpZmllclJl
YWRPbmx5QXR0cmlidXRlLmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJs
ZS1jb2RlIikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJ
bmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmlu
Z2lmaWVyUmVhZFdyaXRlQXR0cmlidXRlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJSZWFkV3JpdGVBdHRy
aWJ1dGUuY3BwCShyZXZpc2lvbiAyODYwNDMpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJSZWFkV3JpdGVBdHRyaWJ1dGUuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC03Miw3ICs3Miw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJ
c29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFU
SUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3RTdHJpbmdpZmllclJlYWRXcml0
ZUF0dHJpYnV0ZVByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmpl
Y3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQog
ICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBK
U0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUp
CiAgICAgewpAQCAtMjI3LDkgKzIyNyw5IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdFN0cmlu
Z2lmaWVyUmVhZFcKICAgICAgICAgcmV0dXJuIHNwYWNlOwogICAgIHN0YXRpY19hc3NlcnQoc3Rk
Ojppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0U3RyaW5naWZp
ZXJSZWFkV3JpdGVBdHRyaWJ1dGU+IHx8ICFKU1Rlc3RTdHJpbmdpZmllclJlYWRXcml0ZUF0dHJp
YnV0ZTo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vf
b2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RTdHJpbmdpZmllclJlYWRXcml0
ZUF0dHJpYnV0ZT4pCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFN0cmluZ2lmaWVy
UmVhZFdyaXRlQXR0cmlidXRlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNF
X0lOSVQodm0uaGVhcCwgKnZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSwgSlNUZXN0
U3RyaW5naWZpZXJSZWFkV3JpdGVBdHRyaWJ1dGUpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFj
ZUZvclRlc3RTdHJpbmdpZmllclJlYWRXcml0ZUF0dHJpYnV0ZSA9IG1ha2VVbmlxdWU8SXNvU3Vi
c3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhl
YXBDZWxsVHlwZSgpLCBKU1Rlc3RTdHJpbmdpZmllclJlYWRXcml0ZUF0dHJpYnV0ZSk7CiAgICAg
ZWxzZQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RTdHJpbmdpZmllclJlYWRXcml0
ZUF0dHJpYnV0ZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZt
LmhlYXAsICp2bS5jZWxsSGVhcENlbGxUeXBlLCBKU1Rlc3RTdHJpbmdpZmllclJlYWRXcml0ZUF0
dHJpYnV0ZSk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFN0cmluZ2lmaWVyUmVh
ZFdyaXRlQXR0cmlidXRlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lO
SVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RTdHJpbmdpZmllclJlYWRX
cml0ZUF0dHJpYnV0ZSk7CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRl
c3RTdHJpbmdpZmllclJlYWRXcml0ZUF0dHJpYnV0ZS5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19C
RUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9n
aWNhbC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RUeXBlZGVmcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFR5cGVkZWZzLmNwcAkocmV2aXNpb24gMjg2MDQz
KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFR5cGVk
ZWZzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE2LDcgKzExNiw3IEBAIHB1YmxpYzoKICAgICBz
dGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewog
ICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3RUeXBlZGVm
c1Byb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsK
KyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRp
YyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpA
QCAtNzc4LDkgKzc3OCw5IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdFR5cGVkZWZzOjpzdWJz
cGEKICAgICAgICAgcmV0dXJuIHNwYWNlOwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNl
X29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0VHlwZWRlZnM+IHx8ICFKU1Rl
c3RUeXBlZGVmczo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3RleHByIChzdGQ6Omlz
X2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RUeXBlZGVmcz4pCi0g
ICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFR5cGVkZWZzID0gbWFrZVVuaXF1ZTxJc29T
dWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmRlc3RydWN0aWJsZU9iamVj
dEhlYXBDZWxsVHlwZSwgSlNUZXN0VHlwZWRlZnMpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFj
ZUZvclRlc3RUeXBlZGVmcyA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9J
TklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RU
eXBlZGVmcyk7CiAgICAgZWxzZQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RUeXBl
ZGVmcyA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAs
ICp2bS5jZWxsSGVhcENlbGxUeXBlLCBKU1Rlc3RUeXBlZGVmcyk7CisgICAgICAgIHNwYWNlcy5t
X3N1YnNwYWNlRm9yVGVzdFR5cGVkZWZzID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NV
QlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RUeXBlZGVm
cyk7CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RUeXBlZGVmcy5n
ZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVf
V0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1dvcmtlckdsb2JhbFNjb3BlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTV29ya2Vy
R2xvYmFsU2NvcGUuaAkocmV2aXNpb24gMjg2MDQzKQorKysgU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTV29ya2VyR2xvYmFsU2NvcGUuaAkod29ya2luZyBjb3B5KQpA
QCAtODUsNyArODUsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1
YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09f
U1VCU1BBQ0VfU0hBUkFCTEUoSlNXb3JrZXJHbG9iYWxTY29wZVByb3RvdHlwZSwgQmFzZSk7Ci0g
ICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5w
bGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3Jl
YXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpJbmRleDogU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTV29ya2xldEdsb2JhbFNjb3BlLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTV29ya2xldEds
b2JhbFNjb3BlLmgJKHJldmlzaW9uIDI4NjA0MykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1dvcmtsZXRHbG9iYWxTY29wZS5oCSh3b3JraW5nIGNvcHkpCkBA
IC04NSw3ICs4NSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vi
c3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19T
VUJTUEFDRV9TSEFSQUJMRShKU1dvcmtsZXRHbG9iYWxTY29wZVByb3RvdHlwZSwgQmFzZSk7Ci0g
ICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5w
bGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3Jl
YXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpJbmRleDogU291cmNlL1dlYkNvcmUv
YnJpZGdlL29iamMvb2JqY19ydW50aW1lLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2JyaWRnZS9vYmpjL29iamNfcnVudGltZS5tbQkocmV2aXNpb24gMjg2MDQzKQorKysgU291cmNl
L1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19ydW50aW1lLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0z
MzUsNyArMzM1LDcgQEAgYm9vbCBPYmpjRmFsbGJhY2tPYmplY3RJbXA6OnRvQm9vbGVhbihKUwog
SlNDOjpJc29TdWJzcGFjZSogT2JqY0ZhbGxiYWNrT2JqZWN0SW1wOjpzdWJzcGFjZUZvckltcGwo
SlNDOjpWTSYgdm0pCiB7CiAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEpTQzo6SXNvU3Vic3Bh
Y2VQZXJWTT4gcGVyVk0oW10gKEpTQzo6Vk0mIHZtKSB7Ci0gICAgICAgIHJldHVybiBJU09fU1VC
U1BBQ0VfUEFSQU1FVEVSUygqdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLCBPYmpj
RmFsbGJhY2tPYmplY3RJbXApOworICAgICAgICByZXR1cm4gSVNPX1NVQlNQQUNFX1BBUkFNRVRF
UlModm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCksIE9iamNGYWxsYmFja09iamVj
dEltcCk7CiAgICAgfSk7CiAgICAgcmV0dXJuICZwZXJWTS5nZXQoKS5mb3JWTSh2bSk7CiB9Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck9yV29ya2xldFNjcmlwdENvbnRyb2xs
ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck9yV29ya2xl
dFNjcmlwdENvbnRyb2xsZXIuaAkocmV2aXNpb24gMjg2MDQzKQorKysgU291cmNlL1dlYkNvcmUv
d29ya2Vycy9Xb3JrZXJPcldvcmtsZXRTY3JpcHRDb250cm9sbGVyLmgJKHdvcmtpbmcgY29weSkK
QEAgLTM4LDYgKzM4LDcgQEAKIG5hbWVzcGFjZSBKU0MgewogY2xhc3MgRXhjZXB0aW9uOwogY2xh
c3MgSlNHbG9iYWxPYmplY3Q7CitjbGFzcyBKU01vZHVsZVJlY29yZDsKIGNsYXNzIFZNOwogfQog
CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9Nb2RlbEVsZW1lbnRDb250cm9s
bGVyQ29jb2EubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2Ev
TW9kZWxFbGVtZW50Q29udHJvbGxlckNvY29hLm1tCShyZXZpc2lvbiAyODYwNDMpCisrKyBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9Nb2RlbEVsZW1lbnRDb250cm9sbGVyQ29jb2EubW0J
KHdvcmtpbmcgY29weSkKQEAgLTIzNSwxMSArMjM1LDExIEBAIHZvaWQgTW9kZWxFbGVtZW50Q29u
dHJvbGxlcjo6aGFuZGxlTW91c2UKIAogc3RhdGljIGJvb2wgcHJldmlld0hhc0NhbWVyYVN1cHBv
cnQoQVNWSW5saW5lUHJldmlldyAqcHJldmlldykKIHsKLSNpZiBFTkFCTEUoQVJLSVRfSU5MSU5F
X1BSRVZJRVdfQ0FNRVJBX1RSQU5TRk9STSkKLSAgICByZXR1cm4gW3ByZXZpZXcgcmVzcG9uZHNU
b1NlbGVjdG9yOkBzZWxlY3RvcihnZXRDYW1lcmFUcmFuc2Zvcm06KV07Ci0jZWxzZQorLy8jaWYg
RU5BQkxFKEFSS0lUX0lOTElORV9QUkVWSUVXX0NBTUVSQV9UUkFOU0ZPUk0pCisvLyAgICByZXR1
cm4gW3ByZXZpZXcgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihnZXRDYW1lcmFUcmFuc2Zv
cm06KV07CisvLyNlbHNlCiAgICAgcmV0dXJuIGZhbHNlOwotI2VuZGlmCisvLyNlbmRpZgogfQog
CiB2b2lkIE1vZGVsRWxlbWVudENvbnRyb2xsZXI6OmdldENhbWVyYUZvck1vZGVsRWxlbWVudChN
b2RlbElkZW50aWZpZXIgbW9kZWxJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4
cGVjdGVkPFdlYkNvcmU6OkhUTUxNb2RlbEVsZW1lbnRDYW1lcmEsIFdlYkNvcmU6OlJlc291cmNl
RXJyb3I+KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKQEAgLTI1MywyOCArMjUzLDI4IEBAIHZvaWQg
TW9kZWxFbGVtZW50Q29udHJvbGxlcjo6Z2V0Q2FtZXJhRm8KICAgICAgICAgcmV0dXJuOwogICAg
IH0KIAotI2lmIEVOQUJMRShBUktJVF9JTkxJTkVfUFJFVklFV19DQU1FUkFfVFJBTlNGT1JNKQot
ICAgIFtwcmV2aWV3IGdldENhbWVyYVRyYW5zZm9ybTptYWtlQmxvY2tQdHIoW3dlYWtUaGlzID0g
V2Vha1B0ciB7ICp0aGlzIH0sIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlcildIChzaW1kX2Zsb2F0MyBjYW1lcmFUcmFuc2Zvcm0sIE5TRXJyb3IgKmVycm9yKSBt
dXRhYmxlIHsKLSAgICAgICAgaWYgKGVycm9yKSB7Ci0gICAgICAgICAgICBjYWxsT25NYWluUnVu
TG9vcChbd2Vha1RoaXMgPSBXVEZNb3ZlKHdlYWtUaGlzKSwgY29tcGxldGlvbkhhbmRsZXIgPSBX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgZXJyb3IgPSBXZWJDb3JlOjpSZXNvdXJjZUVycm9y
IHsgV2ViQ29yZTo6UmVzb3VyY2VFcnJvcjo6VHlwZTo6R2VuZXJhbCB9XSAoKSBtdXRhYmxlIHsK
LSAgICAgICAgICAgICAgICBpZiAod2Vha1RoaXMpCi0gICAgICAgICAgICAgICAgICAgIGNvbXBs
ZXRpb25IYW5kbGVyKG1ha2VVbmV4cGVjdGVkKGVycm9yKSk7Ci0gICAgICAgICAgICB9KTsKLSAg
ICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIGNhbGxPbk1haW5SdW5Mb29w
KFtjYW1lcmFUcmFuc2Zvcm0sIHdlYWtUaGlzID0gV1RGTW92ZSh3ZWFrVGhpcyksIGNvbXBsZXRp
b25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildICgpIG11dGFibGUgewotICAg
ICAgICAgICAgaWYgKHdlYWtUaGlzKQotICAgICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVy
KFdlYkNvcmU6OkhUTUxNb2RlbEVsZW1lbnRDYW1lcmEgeyBjYW1lcmFUcmFuc2Zvcm0ueCwgY2Ft
ZXJhVHJhbnNmb3JtLnksIGNhbWVyYVRyYW5zZm9ybS56IH0pOwotICAgICAgICB9KTsKLSAgICB9
KS5nZXQoKV07Ci0jZWxzZQorLy8jaWYgRU5BQkxFKEFSS0lUX0lOTElORV9QUkVWSUVXX0NBTUVS
QV9UUkFOU0ZPUk0pCisvLyAgICBbcHJldmlldyBnZXRDYW1lcmFUcmFuc2Zvcm06bWFrZUJsb2Nr
UHRyKFt3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9LCBjb21wbGV0aW9uSGFuZGxlciA9IFdU
Rk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoc2ltZF9mbG9hdDMgY2FtZXJhVHJhbnNmb3JtLCBO
U0Vycm9yICplcnJvcikgbXV0YWJsZSB7CisvLyAgICAgICAgaWYgKGVycm9yKSB7CisvLyAgICAg
ICAgICAgIGNhbGxPbk1haW5SdW5Mb29wKFt3ZWFrVGhpcyA9IFdURk1vdmUod2Vha1RoaXMpLCBj
b21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBlcnJvciA9IFdl
YkNvcmU6OlJlc291cmNlRXJyb3IgeyBXZWJDb3JlOjpSZXNvdXJjZUVycm9yOjpUeXBlOjpHZW5l
cmFsIH1dICgpIG11dGFibGUgeworLy8gICAgICAgICAgICAgICAgaWYgKHdlYWtUaGlzKQorLy8g
ICAgICAgICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKG1ha2VVbmV4cGVjdGVkKGVycm9y
KSk7CisvLyAgICAgICAgICAgIH0pOworLy8gICAgICAgICAgICByZXR1cm47CisvLyAgICAgICAg
fQorLy8KKy8vICAgICAgICBjYWxsT25NYWluUnVuTG9vcChbY2FtZXJhVHJhbnNmb3JtLCB3ZWFr
VGhpcyA9IFdURk1vdmUod2Vha1RoaXMpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpXSAoKSBtdXRhYmxlIHsKKy8vICAgICAgICAgICAgaWYgKHdlYWtUaGlz
KQorLy8gICAgICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV2ViQ29yZTo6SFRNTE1vZGVs
RWxlbWVudENhbWVyYSB7IGNhbWVyYVRyYW5zZm9ybS54LCBjYW1lcmFUcmFuc2Zvcm0ueSwgY2Ft
ZXJhVHJhbnNmb3JtLnogfSk7CisvLyAgICAgICAgfSk7CisvLyAgICB9KS5nZXQoKV07CisvLyNl
bHNlCiAgICAgY2FsbE9uTWFpblJ1bkxvb3AoW3dlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH0s
IGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIGVycm9yID0g
V2ViQ29yZTo6UmVzb3VyY2VFcnJvciB7IFdlYkNvcmU6OlJlc291cmNlRXJyb3I6OlR5cGU6Okdl
bmVyYWwgfV0gKCkgbXV0YWJsZSB7CiAgICAgICAgIGlmICh3ZWFrVGhpcykKICAgICAgICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKG1ha2VVbmV4cGVjdGVkKGVycm9yKSk7CiAgICAgfSk7CiAgICAg
cmV0dXJuOwotI2VuZGlmCisvLyNlbmRpZgogfQogCiB2b2lkIE1vZGVsRWxlbWVudENvbnRyb2xs
ZXI6OnNldENhbWVyYUZvck1vZGVsRWxlbWVudChNb2RlbElkZW50aWZpZXIgbW9kZWxJZGVudGlm
aWVyLCBXZWJDb3JlOjpIVE1MTW9kZWxFbGVtZW50Q2FtZXJhIGNhbWVyYSwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKQEAgLTI4OCwxNyArMjg4LDE3
IEBAIHZvaWQgTW9kZWxFbGVtZW50Q29udHJvbGxlcjo6c2V0Q2FtZXJhRm8KICAgICAgICAgcmV0
dXJuOwogICAgIH0KIAotI2lmIEVOQUJMRShBUktJVF9JTkxJTkVfUFJFVklFV19DQU1FUkFfVFJB
TlNGT1JNKQotICAgIFtwcmV2aWV3IHNldENhbWVyYVRyYW5zZm9ybTpzaW1kX21ha2VfZmxvYXQz
KGNhbWVyYS5waXRjaCwgY2FtZXJhLnlhdywgY2FtZXJhLnNjYWxlKV07Ci0jZW5kaWYKKy8vI2lm
IEVOQUJMRShBUktJVF9JTkxJTkVfUFJFVklFV19DQU1FUkFfVFJBTlNGT1JNKQorLy8gICAgW3By
ZXZpZXcgc2V0Q2FtZXJhVHJhbnNmb3JtOnNpbWRfbWFrZV9mbG9hdDMoY2FtZXJhLnBpdGNoLCBj
YW1lcmEueWF3LCBjYW1lcmEuc2NhbGUpXTsKKy8vI2VuZGlmCiAKICAgICBjYWxsT25NYWluUnVu
TG9vcChbd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfSwgY29tcGxldGlvbkhhbmRsZXIgPSBX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKCkgbXV0YWJsZSB7CiAgICAgICAgIGlmICh3ZWFr
VGhpcykKLSNpZiBFTkFCTEUoQVJLSVRfSU5MSU5FX1BSRVZJRVdfQ0FNRVJBX1RSQU5TRk9STSkK
LSAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHRydWUpOwotI2Vsc2UKKy8vI2lmIEVOQUJM
RShBUktJVF9JTkxJTkVfUFJFVklFV19DQU1FUkFfVFJBTlNGT1JNKQorLy8gICAgICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcih0cnVlKTsKKy8vI2Vsc2UKICAgICAgICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyKGZhbHNlKTsKLSNlbmRpZgorLy8jZW5kaWYKICAgICB9KTsKIH0KIAo=
</data>
<flag name="commit-queue"
          id="469969"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>444861</attachid>
            <date>2021-11-19 15:10:24 -0800</date>
            <delta_ts>2021-11-20 02:07:10 -0800</delta_ts>
            <desc>work in progress.</desc>
            <filename>bug-233240c.patch</filename>
            <type>text/plain</type>
            <size>379857</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDI4NjA4MSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpA
QCAtNzYzLDYgKzc2Myw4IEBAIHNldChKYXZhU2NyaXB0Q29yZV9QUklWQVRFX0ZSQU1FV09SS19I
RUEKICAgICBoZWFwL0luY3JlbWVudGFsU3dlZXBlci5oCiAgICAgaGVhcC9Jc29DZWxsU2V0LmgK
ICAgICBoZWFwL0lzb0hlYXBDZWxsVHlwZS5oCisgICAgaGVhcC9Jc29JbmxpbmVkSGVhcENlbGxU
eXBlLmgKKyAgICBoZWFwL0lzb0lubGluZWRIZWFwQ2VsbFR5cGVJbmxpbmVzLmgKICAgICBoZWFw
L0lzb1N1YnNwYWNlLmgKICAgICBoZWFwL0lzb1N1YnNwYWNlSW5saW5lcy5oCiAgICAgaGVhcC9J
c29TdWJzcGFjZVBlclZNLmgKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCShyZXZpc2lvbiAyODYw
ODEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MTQyOSw3ICsxNDI5LDcgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBl
LCBTdWJzcGFjZUFjY2Vzcz4KICAgICBzdGF0aWMgQ29tcGxldGVTdWJzcGFjZSogc3Vic3BhY2VG
b3IoVk0mIHZtKQogICAgIHsKLSAgICAgICAgcmV0dXJuICZ2bS5kZXN0cnVjdGlibGVPYmplY3RT
cGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5kZXN0cnVjdGlibGVPYmplY3RTcGFjZSgpOwogICAg
IH0KIAogICAgIEpTQ01lbW9yeUZvb3RwcmludChWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJl
KQpAQCAtMTc2Miw3ICsxNzYyLDcgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENl
bGxUeXBlLCBTdWJzcGFjZUFjY2Vzcz4KICAgICBzdGF0aWMgQ29tcGxldGVTdWJzcGFjZSogc3Vi
c3BhY2VGb3IoVk0mIHZtKQogICAgIHsKLSAgICAgICAgcmV0dXJuICZ2bS5kZXN0cnVjdGlibGVP
YmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5kZXN0cnVjdGlibGVPYmplY3RTcGFjZSgp
OwogICAgIH0KIAogICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYgdm0s
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDI4NjA4MSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3
b3JraW5nIGNvcHkpCkBAIC0xOTU5LDcgKzE5NTksNyBAQAogCQlFM0M2OTRCMzIzMDI2ODc3MDA2
RkJFNDIgLyogV2FzbU9TUkVudHJ5RGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRTNDNjk0QjEyMzAyNjg3MzAwNkZCRTQyIC8qIFdhc21PU1JFbnRy
eURhdGEuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQlFM0M3M0E5MTI1QkZBNzNCMDBFRkUzMDMgLyogV2FzbVN0cmVhbWluZ1BsYW4uaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzQzczQTkwMjVCRkE3MzQw
MEVGRTMwMyAvKiBXYXNtU3RyZWFtaW5nUGxhbi5oICovOyB9OwogCQlFM0M3OUNBQjFEQjlBNERD
MDBEMUVDQTQgLyogRE9NSklURWZmZWN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBFM0M3OUNBQTFEQjlBNEQ2MDBEMUVDQTQgLyogRE9NSklURWZmZWN0
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJRTND
OEVENDMyM0ExREJDQjAwMTMxOTU4IC8qIElzb0lubGluZWRIZWFwQ2VsbFR5cGUuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzQzhFRDQyMjNBMURCQzUw
MDEzMTk1OCAvKiBJc29JbmxpbmVkSGVhcENlbGxUeXBlLmggKi87IH07CisJCUUzQzhFRDQzMjNB
MURCQ0IwMDEzMTk1OCAvKiBJc29JbmxpbmVkSGVhcENlbGxUeXBlLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFM0M4RUQ0MjIzQTFEQkM1MDAxMzE5NTgg
LyogSXNvSW5saW5lZEhlYXBDZWxsVHlwZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCUUzQ0EzQTRFMjUyN0FCMkYwMDQ4MDJCRiAvKiBKSVRPcGVy
YXRpb25MaXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBFM0NBM0E0QzI1MjdBQjJGMDA0ODAyQkYgLyogSklUT3BlcmF0aW9uTGlzdC5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUzRDIzOUM5MUI4MjlD
MUMwMEJCRUY2NyAvKiBKU01vZHVsZUVudmlyb25tZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFM0QyMzlDNzFCODI5QzFDMDBCQkVGNjcgLyogSlNN
b2R1bGVFbnZpcm9ubWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCUUzRDM1MTVGMjQxQjg5RDcwMDhEQzE2RSAvKiBNYXJrZWRKU1ZhbHVlUmVm
QXJyYXkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUz
RDM1MTVEMjQxQjg5Q0UwMDhEQzE2RSAvKiBNYXJrZWRKU1ZhbHVlUmVmQXJyYXkuaCAqLzsgfTsK
QEAgLTIwNDEsNiArMjA0MSw3IEBACiAJCUZFNjNERDU0MUVBOUI2MUUwMDEwM0E2OSAvKiBQcmlu
dGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTYz
REQ1MzFFQTlCNjBFMDAxMDNBNjkgLyogUHJpbnRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUZFNjQ4NzJFMjE0MUQwNDgwMEFCMEQzRSAvKiBP
cGNvZGVJbmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBGRTY0ODcyRDIxNDFEMDQ4MDBBQjBEM0UgLyogT3Bjb2RlSW5saW5lcy5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUZFNjQ5MTM3MUQ3OEYw
MUQwMEE2OTRENCAvKiBFeGNlcHRpb25TY29wZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRkU2NDkxMzYxRDc4RjAxMzAwQTY5NEQ0IC8qIEV4Y2VwdGlv
blNjb3BlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
KwkJRkU2NUIxNTEyNzQ4NjAxRjAwREI1QjE2IC8qIElzb0lubGluZWRIZWFwQ2VsbFR5cGVJbmxp
bmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTY1
QjE1MDI3NDg2MDFGMDBEQjVCMTYgLyogSXNvSW5saW5lZEhlYXBDZWxsVHlwZUlubGluZXMuaCAq
LzsgfTsKIAkJRkU2OEM2MzcxQjkwREUwNDAwNDJCQ0IzIC8qIE1hY3JvQXNzZW1ibGVyUHJpbnRl
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkU2OEM2
MzYxQjkwREREOTAwNDJCQ0IzIC8qIE1hY3JvQXNzZW1ibGVyUHJpbnRlci5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUZFNkY1NkRFMUU2NEVBRDYw
MEQxNzgwMSAvKiBWTVRyYXBzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBGRTZGNTZERDFFNjRFOTIwMDBEMTc4MDEgLyogVk1UcmFwcy5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUZFNzQ5N0U2MjA5MDAx
QjEwMDAzNTY1QiAvKiBKU0NQdHJUYWcuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEZFNzQ5N0U1MjA5MDAxQjAwMDAzNTY1QiAvKiBKU0NQdHJUYWcuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtNTQ5OSw2
ICs1NTAwLDcgQEAKIAkJRkU2NDg3MkQyMTQxRDA0ODAwQUIwRDNFIC8qIE9wY29kZUlubGluZXMu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gT3Bjb2RlSW5saW5lcy5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRTY0OTEzNjFENzhGMDEzMDBBNjk0RDQgLyogRXhj
ZXB0aW9uU2NvcGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRXhjZXB0aW9u
U2NvcGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkU2NDkxMzgxRDc4RjNBMzAw
QTY5NEQ0IC8qIEV4Y2VwdGlvblNjb3BlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEV4Y2VwdGlvblNjb3BlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJRkU2NUIxNTAyNzQ4NjAxRjAwREI1QjE2IC8qIElzb0lubGluZWRIZWFwQ2VsbFR5cGVJbmxp
bmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IElzb0lubGluZWRIZWFwQ2Vs
bFR5cGVJbmxpbmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFNjhDNjM1MUI5
MERERDkwMDQyQkNCMyAvKiBNYWNyb0Fzc2VtYmxlclByaW50ZXIuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWFjcm9Bc3NlbWJsZXJQcmludGVyLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkU2OEM2MzYxQjkwREREOTAwNDJCQ0IzIC8qIE1hY3Jv
QXNzZW1ibGVyUHJpbnRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNYWNy
b0Fzc2VtYmxlclByaW50ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkU2RjU2
REMxRTY0RTkyMDAwRDE3ODAxIC8qIFZNVHJhcHMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gVk1UcmFwcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBA
IC02NjA2LDYgKzY2MDgsNyBAQAogCQkJCUUzQzhFRDQxMjNBMURCQzQwMDEzMTk1OCAvKiBJc29I
ZWFwQ2VsbFR5cGUuY3BwICovLAogCQkJCUUzQkYxQkFEMjM4QUFFRDEwMDNBMUMyQiAvKiBJc29I
ZWFwQ2VsbFR5cGUuaCAqLywKIAkJCQlFM0M4RUQ0MjIzQTFEQkM1MDAxMzE5NTggLyogSXNvSW5s
aW5lZEhlYXBDZWxsVHlwZS5oICovLAorCQkJCUZFNjVCMTUwMjc0ODYwMUYwMERCNUIxNiAvKiBJ
c29JbmxpbmVkSGVhcENlbGxUeXBlSW5saW5lcy5oICovLAogCQkJCTBGRENFMTJDMUZBRkI0REUw
MDZGMzkwMSAvKiBJc29TdWJzcGFjZS5jcHAgKi8sCiAJCQkJMEZEQ0UxMkIxRkFGQjRERTAwNkYz
OTAxIC8qIElzb1N1YnNwYWNlLmggKi8sCiAJCQkJMEZEMkZEOTIyMEI1MkJEQzAwRjA5NDQxIC8q
IElzb1N1YnNwYWNlSW5saW5lcy5oICovLApAQCAtMTA0MTMsNiArMTA0MTYsNyBAQAogCQkJCUUz
M0Y1MDgxMUI4NDI5QTQwMDQxMzg1NiAvKiBKU0ludGVybmFsUHJvbWlzZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJRTMzRjUwNzkxQjg0MjI1NzAwNDEzODU2IC8qIEpTSW50ZXJuYWxQcm9taXNlQ29u
c3RydWN0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUUzM0Y1MDg3MUI4NDQ5RUYwMDQxMzg1NiAv
KiBKU0ludGVybmFsUHJvbWlzZUNvbnN0cnVjdG9yLmx1dC5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
RkU2NUIxNTEyNzQ4NjAxRjAwREI1QjE2IC8qIElzb0lubGluZWRIZWFwQ2VsbFR5cGVJbmxpbmVz
LmggaW4gSGVhZGVycyAqLywKIAkJCQlFMzNGNTA3NTFCODQyMUMwMDA0MTM4NTYgLyogSlNJbnRl
cm5hbFByb21pc2VQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1MDNGQTFFMTg4RTBG
QjAwMDExMEYxNCAvKiBKU0phdmFTY3JpcHRDYWxsRnJhbWVQcm90b3R5cGUuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUJDMThDNDE2MEUxNkY1Q0QwMEIzNDQ2MCAvKiBKU0xleGljYWxFbnZpcm9ubWVu
dC5oIGluIEhlYWRlcnMgKi8sCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
QWNjZXNzQ2FzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0FjY2Vzc0Nhc2UuY3BwCShyZXZpc2lvbiAyODYwODEpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIyNzcsNyAr
MjI3Nyw3IEBAIHZvaWQgQWNjZXNzQ2FzZTo6Z2VuZXJhdGVJbXBsKEFjY2Vzc0dlbmUKICAgICAg
ICAgICAgIHNpemVfdCBuZXdTaXplID0gbmV3U3RydWN0dXJlKCktPm91dE9mTGluZUNhcGFjaXR5
KCkgKiBzaXplb2YoSlNWYWx1ZSk7CiAKICAgICAgICAgICAgIGlmIChhbGxvY2F0aW5nSW5saW5l
KSB7Ci0gICAgICAgICAgICAgICAgQWxsb2NhdG9yIGFsbG9jYXRvciA9IHZtLmpzVmFsdWVHaWdh
Y2FnZUF1eGlsaWFyeVNwYWNlLmFsbG9jYXRvckZvcihuZXdTaXplLCBBbGxvY2F0b3JGb3JNb2Rl
OjpBbGxvY2F0b3JJZkV4aXN0cyk7CisgICAgICAgICAgICAgICAgQWxsb2NhdG9yIGFsbG9jYXRv
ciA9IHZtLmpzVmFsdWVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlKCkuYWxsb2NhdG9yRm9yKG5ld1Np
emUsIEFsbG9jYXRvckZvck1vZGU6OkFsbG9jYXRvcklmRXhpc3RzKTsKIAogICAgICAgICAgICAg
ICAgIGppdC5lbWl0QWxsb2NhdGUoc2NyYXRjaEdQUiwgSklUQWxsb2NhdG9yOjpjb25zdGFudChh
bGxvY2F0b3IpLCBzY3JhdGNoR1BSMiwgc2NyYXRjaEdQUjMsIHNsb3dQYXRoKTsKICAgICAgICAg
ICAgICAgICBqaXQuYWRkUHRyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKG5ld1NpemUgKyBz
aXplb2YoSW5kZXhpbmdIZWFkZXIpKSwgc2NyYXRjaEdQUik7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvREZHRXhpdFByb2ZpbGUuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvREZHRXhpdFByb2ZpbGUuaAkocmV2aXNpb24gMjg2MDgx
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0RGR0V4aXRQcm9maWxlLmgJKHdv
cmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDExLTIw
MTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEx
LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCkBAIC0zNCw3ICszNCwxMSBAQAogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+
CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCi1uYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERG
RyB7CituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgVW5saW5rZWRDb2RlQmxvY2s7CisKK25hbWVz
cGFjZSBERkcgewogCiBjbGFzcyBGcmVxdWVudEV4aXRTaXRlIHsKIHB1YmxpYzoKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FdmFsQ29kZUJsb2NrLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0V2YWxDb2RlQmxvY2suaAkocmV2aXNp
b24gMjg2MDgxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0V2YWxDb2RlQmxv
Y2suaAkod29ya2luZyBjb3B5KQpAQCAtNDEsNyArNDEsNyBAQCBwdWJsaWM6CiAgICAgdGVtcGxh
dGU8dHlwZW5hbWUsIFN1YnNwYWNlQWNjZXNzPgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vi
c3BhY2VGb3IoVk0mIHZtKQogICAgIHsKLSAgICAgICAgcmV0dXJuICZ2bS5jb2RlQmxvY2tTcGFj
ZS5zcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5jb2RlQmxvY2tTcGFjZSgpLnNwYWNlOwogICAg
IH0KIAogICAgIHN0YXRpYyBFdmFsQ29kZUJsb2NrKiBjcmVhdGUoVk0mIHZtLCBDb3B5UGFyc2Vk
QmxvY2tUYWcsIEV2YWxDb2RlQmxvY2smIG90aGVyKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0V4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2UuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdl
LmNwcAkocmV2aXNpb24gMjg2MDgxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0V4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04MSw3ICs4
MSw3IEBAIHZvaWQgRXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZTo6dmlzaXRDaGkKICAgICAgICAg
dmlzaXRvci5hcHBlbmRVbmJhcnJpZXJlZChjb2RlQmxvY2spOwogICAgIAogICAgIGlmICghdmlz
aXRvci5pc01hcmtlZChjb2RlQmxvY2spKQotICAgICAgICB2bS5leGVjdXRhYmxlVG9Db2RlQmxv
Y2tFZGdlc1dpdGhGaW5hbGl6ZXJzLmFkZChlZGdlKTsKKyAgICAgICAgdm0uZXhlY3V0YWJsZVRv
Q29kZUJsb2NrRWRnZXNXaXRoRmluYWxpemVycygpLmFkZChlZGdlKTsKICAgICAKICAgICBpZiAo
SklUQ29kZTo6aXNPcHRpbWl6aW5nSklUKGNvZGVCbG9jay0+aml0VHlwZSgpKSkgewogICAgICAg
ICAvLyBJZiB3ZSBqZXR0aXNvbiBvdXJzZWx2ZXMgd2UnbGwgaW5zdGFsbCBvdXIgYWx0ZXJuYXRp
dmUsIHNvIG1ha2Ugc3VyZSB0aGF0IGl0CkBAIC0xMTQsNyArMTE0LDcgQEAgdm9pZCBFeGVjdXRh
YmxlVG9Db2RlQmxvY2tFZGdlOjp2aXNpdENoaQogICAgIC8vIG5vdCB5ZXQgbWFya2VkIGJlY2F1
c2UgaXQgd2Vha2x5IGRlcGVuZHMgb24gYSBzdHJ1Y3R1cmUgdGhhdCB3ZSBkaWQgbm90IHlldCBt
YXJrLCB0aGVuIHdlCiAgICAgLy8gd2lsbCBrZWVwIGZpeHBvaW50aW5nIHVudGlsIHRoZSBlbmQu
CiAgICAgdmlzaXRvci5hcHBlbmRVbmJhcnJpZXJlZChjb2RlQmxvY2stPmdsb2JhbE9iamVjdCgp
KTsKLSAgICB2bS5leGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlc1dpdGhDb25zdHJhaW50cy5hZGQo
ZWRnZSk7CisgICAgdm0uZXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZXNXaXRoQ29uc3RyYWludHMo
KS5hZGQoZWRnZSk7CiAgICAgZWRnZS0+cnVuQ29uc3RyYWludChsb2NrZXIsIHZtLCB2aXNpdG9y
KTsKIH0KIApAQCAtMTQzLDggKzE0Myw4IEBAIHZvaWQgRXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRn
ZTo6ZmluYWxpemUKICAgICAgICAgbV9jb2RlQmxvY2suY2xlYXIoKTsKICAgICB9CiAgICAgCi0g
ICAgdm0uZXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZXNXaXRoRmluYWxpemVycy5yZW1vdmUodGhp
cyk7Ci0gICAgdm0uZXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZXNXaXRoQ29uc3RyYWludHMucmVt
b3ZlKHRoaXMpOworICAgIHZtLmV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2VzV2l0aEZpbmFsaXpl
cnMoKS5yZW1vdmUodGhpcyk7CisgICAgdm0uZXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZXNXaXRo
Q29uc3RyYWludHMoKS5yZW1vdmUodGhpcyk7CiB9CiAKIGlubGluZSB2b2lkIEV4ZWN1dGFibGVU
b0NvZGVCbG9ja0VkZ2U6OmFjdGl2YXRlKCkKQEAgLTIwMSw3ICsyMDEsNyBAQCB2b2lkIEV4ZWN1
dGFibGVUb0NvZGVCbG9ja0VkZ2U6OnJ1bkNvbnN0CiAgICAgY29kZUJsb2NrLT5kZXRlcm1pbmVM
aXZlbmVzcyhsb2NrZXIsIHZpc2l0b3IpOwogCiAgICAgaWYgKHZpc2l0b3IuaXNNYXJrZWQoY29k
ZUJsb2NrKSkKLSAgICAgICAgdm0uZXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZXNXaXRoQ29uc3Ry
YWludHMucmVtb3ZlKHRoaXMpOworICAgICAgICB2bS5leGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdl
c1dpdGhDb25zdHJhaW50cygpLnJlbW92ZSh0aGlzKTsKIH0KIAogdGVtcGxhdGUgdm9pZCBFeGVj
dXRhYmxlVG9Db2RlQmxvY2tFZGdlOjpydW5Db25zdHJhaW50KGNvbnN0IENvbmN1cnJlbnRKU0xv
Y2tlciYsIFZNJiwgQWJzdHJhY3RTbG90VmlzaXRvciYpOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0V4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2UuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRn
ZS5oCShyZXZpc2lvbiAyODYwODEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
RXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00Myw3ICs0Myw3
IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vic3BhY2VBY2Nl
c3M+CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewot
ICAgICAgICByZXR1cm4gJnZtLmV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2VTcGFjZTsKKyAgICAg
ICAgcmV0dXJuICZ2bS5leGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlU3BhY2UoKTsKICAgICB9CiAK
ICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mLCBKU0dsb2JhbE9iamVj
dCosIEpTVmFsdWUgcHJvdG90eXBlKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9GdW5jdGlvbkNvZGVCbG9jay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9GdW5jdGlvbkNvZGVCbG9jay5oCShyZXZpc2lvbiAyODYwODEpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRnVuY3Rpb25Db2RlQmxvY2suaAkod29ya2lu
ZyBjb3B5KQpAQCAtNDIsNyArNDIsNyBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUs
IFN1YnNwYWNlQWNjZXNzPgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0m
IHZtKQogICAgIHsKLSAgICAgICAgcmV0dXJuICZ2bS5jb2RlQmxvY2tTcGFjZS5zcGFjZTsKKyAg
ICAgICAgcmV0dXJuICZ2bS5jb2RlQmxvY2tTcGFjZSgpLnNwYWNlOwogICAgIH0KIAogICAgIHN0
YXRpYyBGdW5jdGlvbkNvZGVCbG9jayogY3JlYXRlKFZNJiB2bSwgQ29weVBhcnNlZEJsb2NrVGFn
LCBGdW5jdGlvbkNvZGVCbG9jayYgb3RoZXIpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvTW9kdWxlUHJvZ3JhbUNvZGVCbG9jay5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Nb2R1bGVQcm9ncmFtQ29kZUJsb2NrLmgJKHJldmlzaW9u
IDI4NjA4MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Nb2R1bGVQcm9ncmFt
Q29kZUJsb2NrLmgJKHdvcmtpbmcgY29weSkKQEAgLTQyLDcgKzQyLDcgQEAgcHVibGljOgogICAg
IHRlbXBsYXRlPHR5cGVuYW1lLCBTdWJzcGFjZUFjY2Vzcz4KICAgICBzdGF0aWMgSXNvU3Vic3Bh
Y2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7Ci0gICAgICAgIHJldHVybiAmdm0uY29kZUJs
b2NrU3BhY2Uuc3BhY2U7CisgICAgICAgIHJldHVybiAmdm0uY29kZUJsb2NrU3BhY2UoKS5zcGFj
ZTsKICAgICB9CiAKICAgICBzdGF0aWMgTW9kdWxlUHJvZ3JhbUNvZGVCbG9jayogY3JlYXRlKFZN
JiB2bSwgQ29weVBhcnNlZEJsb2NrVGFnLCBNb2R1bGVQcm9ncmFtQ29kZUJsb2NrJiBvdGhlcikK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qcm9ncmFtQ29kZUJsb2NrLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Byb2dyYW1Db2Rl
QmxvY2suaAkocmV2aXNpb24gMjg2MDgxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1Byb2dyYW1Db2RlQmxvY2suaAkod29ya2luZyBjb3B5KQpAQCAtNDIsNyArNDIsNyBAQCBw
dWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUsIFN1YnNwYWNlQWNjZXNzPgogICAgIHN0YXRp
YyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKLSAgICAgICAgcmV0dXJu
ICZ2bS5jb2RlQmxvY2tTcGFjZS5zcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5jb2RlQmxvY2tT
cGFjZSgpLnNwYWNlOwogICAgIH0KIAogICAgIHN0YXRpYyBQcm9ncmFtQ29kZUJsb2NrKiBjcmVh
dGUoVk0mIHZtLCBDb3B5UGFyc2VkQmxvY2tUYWcsIFByb2dyYW1Db2RlQmxvY2smIG90aGVyKQpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVj
dXRhYmxlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuY3BwCShyZXZpc2lvbiAyODYwODEpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0yNTEsNyArMjUxLDcgQEAgVW5saW5rZWRGdW5jdGlvbkNvZGVC
bG9jayogVW5saW5rZWRGdW5jdAogICAgICAgICBtX3VubGlua2VkQ29kZUJsb2NrRm9yQ29uc3Ry
dWN0LnNldCh2bSwgdGhpcywgcmVzdWx0KTsKICAgICAgICAgYnJlYWs7CiAgICAgfQotICAgIHZt
LnVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlU3BhY2Uuc2V0LmFkZCh0aGlzKTsKKyAgICB2bS51
bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZVNwYWNlKCkuc2V0LmFkZCh0aGlzKTsKICAgICByZXR1
cm4gcmVzdWx0OwogfQogCkBAIC0zMTAsNyArMzEwLDcgQEAgdm9pZCBVbmxpbmtlZEZ1bmN0aW9u
RXhlY3V0YWJsZTo6ZmluYWxpegogICAgICAgICBjbGVhcklmRGVhZChtX3VubGlua2VkQ29kZUJs
b2NrRm9yQ2FsbCk7CiAgICAgICAgIGNsZWFySWZEZWFkKG1fdW5saW5rZWRDb2RlQmxvY2tGb3JD
b25zdHJ1Y3QpOwogICAgICAgICBpZiAoaXNDbGVhcmVkICYmICFpc1N0aWxsVmFsaWQpCi0gICAg
ICAgICAgICB2bS51bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZVNwYWNlLnNldC5yZW1vdmUodGhp
cyk7CisgICAgICAgICAgICB2bS51bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZVNwYWNlKCkuc2V0
LnJlbW92ZSh0aGlzKTsKICAgICB9CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5oCShy
ZXZpc2lvbiAyODYwODEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5r
ZWRGdW5jdGlvbkV4ZWN1dGFibGUuaAkod29ya2luZyBjb3B5KQpAQCAtNDIsMTMgKzQyLDE0IEBA
CiAKIG5hbWVzcGFjZSBKU0MgewogCitjbGFzcyBDYWNoZWRGdW5jdGlvbkV4ZWN1dGFibGU7CiBj
bGFzcyBEZWNvZGVyOwotY2xhc3MgRnVuY3Rpb25NZXRhZGF0YU5vZGU7CiBjbGFzcyBGdW5jdGlv
bkV4ZWN1dGFibGU7CitjbGFzcyBGdW5jdGlvbk1ldGFkYXRhTm9kZTsKIGNsYXNzIFBhcnNlckVy
cm9yOworY2xhc3MgU2NyaXB0RXhlY3V0YWJsZTsKIGNsYXNzIFNvdXJjZVByb3ZpZGVyOwogY2xh
c3MgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jazsKLWNsYXNzIENhY2hlZEZ1bmN0aW9uRXhlY3V0
YWJsZTsKIAogZW51bSBVbmxpbmtlZEZ1bmN0aW9uS2luZCB7CiAgICAgVW5saW5rZWROb3JtYWxG
dW5jdGlvbiwKQEAgLTY3LDcgKzY4LDcgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1l
IENlbGxUeXBlLCBTdWJzcGFjZUFjY2Vzcz4KICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNw
YWNlRm9yKFZNJiB2bSkKICAgICB7Ci0gICAgICAgIHJldHVybiAmdm0udW5saW5rZWRGdW5jdGlv
bkV4ZWN1dGFibGVTcGFjZS5zcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS51bmxpbmtlZEZ1bmN0
aW9uRXhlY3V0YWJsZVNwYWNlKCkuc3BhY2U7CiAgICAgfQogCiAgICAgc3RhdGljIFVubGlua2Vk
RnVuY3Rpb25FeGVjdXRhYmxlKiBjcmVhdGUoVk0mIHZtLCBjb25zdCBTb3VyY2VDb2RlJiBzb3Vy
Y2UsIEZ1bmN0aW9uTWV0YWRhdGFOb2RlKiBub2RlLCBVbmxpbmtlZEZ1bmN0aW9uS2luZCB1bmxp
bmtlZEZ1bmN0aW9uS2luZCwgQ29uc3RydWN0QWJpbGl0eSBjb25zdHJ1Y3RBYmlsaXR5LCBKU1Bh
cnNlclNjcmlwdE1vZGUgc2NyaXB0TW9kZSwgUmVmUHRyPFREWkVudmlyb25tZW50TGluaz4gcGFy
ZW50U2NvcGVURFpWYXJpYWJsZXMsIHN0ZDo6b3B0aW9uYWw8UHJpdmF0ZU5hbWVFbnZpcm9ubWVu
dD4gcGFyZW50UHJpdmF0ZU5hbWVFbnZpcm9ubWVudCwgRGVyaXZlZENvbnRleHRUeXBlIGRlcml2
ZWRDb250ZXh0VHlwZSwgTmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIgbmVlZHNDbGFzc0ZpZWxk
SW5pdGlhbGl6ZXIsIFByaXZhdGVCcmFuZFJlcXVpcmVtZW50IHByaXZhdGVCcmFuZFJlcXVpcmVt
ZW50LCBib29sIGlzQnVpbHRpbkRlZmF1bHRDbGFzc0NvbnN0cnVjdG9yID0gZmFsc2UpCkBAIC0x
MzEsNyArMTMyLDcgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgbV91bmxpbmtlZENvZGVCbG9j
a0ZvckNhbGwuY2xlYXIoKTsKICAgICAgICAgbV91bmxpbmtlZENvZGVCbG9ja0ZvckNvbnN0cnVj
dC5jbGVhcigpOwotICAgICAgICB2bS51bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZVNwYWNlLnNl
dC5yZW1vdmUodGhpcyk7CisgICAgICAgIHZtLnVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlU3Bh
Y2UoKS5zZXQucmVtb3ZlKHRoaXMpOwogICAgIH0KIAogICAgIHZvaWQgcmVjb3JkUGFyc2UoQ29k
ZUZlYXR1cmVzIGZlYXR1cmVzLCBMZXhpY2FsU2NvcGVGZWF0dXJlcyBsZXhpY2FsU2NvcGVGZWF0
dXJlcywgYm9vbCBoYXNDYXB0dXJlZFZhcmlhYmxlcykKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCShyZXZpc2lvbiAyODYwODEpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTIwLDcgKzEyMCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRBbGxv
Y2F0ZVJhd09iamUKIAogICAgIFZNJiB2bSA9IHRoaXMtPnZtKCk7CiAgICAgaWYgKHNpemUpIHsK
LSAgICAgICAgaWYgKEFsbG9jYXRvciBhbGxvY2F0b3IgPSB2bS5qc1ZhbHVlR2lnYWNhZ2VBdXhp
bGlhcnlTcGFjZS5hbGxvY2F0b3JGb3JOb25WaXJ0dWFsKHNpemUsIEFsbG9jYXRvckZvck1vZGU6
OkFsbG9jYXRvcklmRXhpc3RzKSkgeworICAgICAgICBpZiAoQWxsb2NhdG9yIGFsbG9jYXRvciA9
IHZtLmpzVmFsdWVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlKCkuYWxsb2NhdG9yRm9yTm9uVmlydHVh
bChzaXplLCBBbGxvY2F0b3JGb3JNb2RlOjpBbGxvY2F0b3JJZkV4aXN0cykpIHsKICAgICAgICAg
ICAgIG1faml0LmVtaXRBbGxvY2F0ZShzdG9yYWdlR1BSLCBKSVRBbGxvY2F0b3I6OmNvbnN0YW50
KGFsbG9jYXRvciksIHNjcmF0Y2hHUFIsIHNjcmF0Y2gyR1BSLCBzbG93Q2FzZXMpOwogICAgICAg
ICAgICAgCiAgICAgICAgICAgICBtX2ppdC5hZGRQdHIoCkBAIC0xMDczOCw3ICsxMDczOCw3IEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVBbGxvY2F0ZVByb3AKICAgICAKICAgICBzaXpl
X3Qgc2l6ZSA9IGluaXRpYWxPdXRPZkxpbmVDYXBhY2l0eSAqIHNpemVvZihKU1ZhbHVlKTsKIAot
ICAgIEFsbG9jYXRvciBhbGxvY2F0b3IgPSB2bSgpLmpzVmFsdWVHaWdhY2FnZUF1eGlsaWFyeVNw
YWNlLmFsbG9jYXRvckZvck5vblZpcnR1YWwoc2l6ZSwgQWxsb2NhdG9yRm9yTW9kZTo6QWxsb2Nh
dG9ySWZFeGlzdHMpOworICAgIEFsbG9jYXRvciBhbGxvY2F0b3IgPSB2bSgpLmpzVmFsdWVHaWdh
Y2FnZUF1eGlsaWFyeVNwYWNlKCkuYWxsb2NhdG9yRm9yTm9uVmlydHVhbChzaXplLCBBbGxvY2F0
b3JGb3JNb2RlOjpBbGxvY2F0b3JJZkV4aXN0cyk7CiAKICAgICBpZiAoIWFsbG9jYXRvciB8fCBu
b2RlLT50cmFuc2l0aW9uKCktPnByZXZpb3VzLT5jb3VsZEhhdmVJbmRleGluZ0hlYWRlcigpKSB7
CiAgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGJhc2UodGhpcywgbm9kZS0+Y2hpbGQxKCkp
OwpAQCAtMTA3ODIsNyArMTA3ODIsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlUmVh
bGxvY2F0ZVByCiAgICAgc2l6ZV90IG5ld1NpemUgPSBvbGRTaXplICogb3V0T2ZMaW5lR3Jvd3Ro
RmFjdG9yOwogICAgIEFTU0VSVChuZXdTaXplID09IG5vZGUtPnRyYW5zaXRpb24oKS0+bmV4dC0+
b3V0T2ZMaW5lQ2FwYWNpdHkoKSAqIHNpemVvZihKU1ZhbHVlKSk7CiAgICAgCi0gICAgQWxsb2Nh
dG9yIGFsbG9jYXRvciA9IHZtKCkuanNWYWx1ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UuYWxsb2Nh
dG9yRm9yTm9uVmlydHVhbChuZXdTaXplLCBBbGxvY2F0b3JGb3JNb2RlOjpBbGxvY2F0b3JJZkV4
aXN0cyk7CisgICAgQWxsb2NhdG9yIGFsbG9jYXRvciA9IHZtKCkuanNWYWx1ZUdpZ2FjYWdlQXV4
aWxpYXJ5U3BhY2UoKS5hbGxvY2F0b3JGb3JOb25WaXJ0dWFsKG5ld1NpemUsIEFsbG9jYXRvckZv
ck1vZGU6OkFsbG9jYXRvcklmRXhpc3RzKTsKIAogICAgIGlmICghYWxsb2NhdG9yIHx8IG5vZGUt
PnRyYW5zaXRpb24oKS0+cHJldmlvdXMtPmNvdWxkSGF2ZUluZGV4aW5nSGVhZGVyKCkpIHsKICAg
ICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYmFzZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CkBA
IC0xMTQ5OSw3ICsxMTQ5OSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXROZXdUeXBlZEFy
cmF5V2kKICAgICAgICAgbV9qaXQuYW5kMzIoVHJ1c3RlZEltbTMyKH43KSwgc2NyYXRjaEdQUik7
CiAgICAgfQogICAgIG1faml0LmVtaXRBbGxvY2F0ZVZhcmlhYmxlU2l6ZWQoCi0gICAgICAgIHN0
b3JhZ2VHUFIsIHZtKCkucHJpbWl0aXZlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZSwgc2NyYXRjaEdQ
Uiwgc2NyYXRjaEdQUiwKKyAgICAgICAgc3RvcmFnZUdQUiwgdm0oKS5wcmltaXRpdmVHaWdhY2Fn
ZUF1eGlsaWFyeVNwYWNlKCksIHNjcmF0Y2hHUFIsIHNjcmF0Y2hHUFIsCiAgICAgICAgIHNjcmF0
Y2hHUFIyLCBzbG93Q2FzZXMpOwogICAgIAogICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIGRvbmUg
PSBtX2ppdC5icmFuY2hUZXN0MzIoTWFjcm9Bc3NlbWJsZXI6Olplcm8sIHNpemVHUFIpOwpAQCAt
MTM3MDAsNyArMTM3MDAsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0QWxsb2NhdGVCdXR0
ZXJmCiAgICAgZGlkTm90T3ZlcmZsb3cubGluaygmbV9qaXQpOwogI2VuZGlmCiAgICAgbV9qaXQu
ZW1pdEFsbG9jYXRlVmFyaWFibGVTaXplZCgKLSAgICAgICAgc3RvcmFnZVJlc3VsdEdQUiwgdm0o
KS5qc1ZhbHVlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZSwgc2NyYXRjaDIsIHNjcmF0Y2gxLCBzY3Jh
dGNoMywgc2xvd0Nhc2VzKTsKKyAgICAgICAgc3RvcmFnZVJlc3VsdEdQUiwgdm0oKS5qc1ZhbHVl
R2lnYWNhZ2VBdXhpbGlhcnlTcGFjZSgpLCBzY3JhdGNoMiwgc2NyYXRjaDEsIHNjcmF0Y2gzLCBz
bG93Q2FzZXMpOwogICAgIG1faml0LmFkZFB0cihUcnVzdGVkSW1tMzIoc2l6ZW9mKEluZGV4aW5n
SGVhZGVyKSksIHN0b3JhZ2VSZXN1bHRHUFIpOwogCiAgICAgbV9qaXQuc3RvcmUzMihzaXplR1BS
LCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzdG9yYWdlUmVzdWx0R1BSLCBCdXR0ZXJmbHk6Om9m
ZnNldE9mUHVibGljTGVuZ3RoKCkpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwv
RlRMTG93ZXJERkdUb0IzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAJKHJldmlzaW9uIDI4NjA4MSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODMw
MCw3ICs4MzAwLDcgQEAgSUdOT1JFX0NMQU5HX1dBUk5JTkdTX0VORAogICAgICAgICAgICAgICAg
IG1fb3V0LmNvbnN0SW50UHRyKH5zdGF0aWNfY2FzdDxpbnRwdHJfdD4oNykpKTsKICAgICAgICAg
fQogCi0gICAgICAgIExWYWx1ZSBhbGxvY2F0b3IgPSBhbGxvY2F0b3JGb3JTaXplKHZtKCkucHJp
bWl0aXZlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZSwgYnl0ZVNpemUsIHNsb3dDYXNlKTsKKyAgICAg
ICAgTFZhbHVlIGFsbG9jYXRvciA9IGFsbG9jYXRvckZvclNpemUodm0oKS5wcmltaXRpdmVHaWdh
Y2FnZUF1eGlsaWFyeVNwYWNlKCksIGJ5dGVTaXplLCBzbG93Q2FzZSk7CiAgICAgICAgIExWYWx1
ZSBzdG9yYWdlID0gYWxsb2NhdGVIZWFwQ2VsbChhbGxvY2F0b3IsIHNsb3dDYXNlKTsKIAogICAg
ICAgICBzcGxhdFdvcmRzKApAQCAtMTM5MjEsNyArMTM5MjEsNyBAQCBJR05PUkVfQ0xBTkdfV0FS
TklOR1NfRU5ECiAgICAgICAgICAgICAgICAgVmFsdWVGcm9tQmxvY2sgbm9CdXR0ZXJmbHkgPSBt
X291dC5hbmNob3IobV9vdXQuaW50UHRyWmVybyk7CiAgICAgICAgICAgICAgICAgCiAgICAgICAg
ICAgICAgICAgTFZhbHVlIHN0YXJ0T2ZTdG9yYWdlID0gYWxsb2NhdGVIZWFwQ2VsbCgKLSAgICAg
ICAgICAgICAgICAgICAgYWxsb2NhdG9yRm9yU2l6ZSh2bSgpLmpzVmFsdWVHaWdhY2FnZUF1eGls
aWFyeVNwYWNlLCBidXR0ZXJmbHlTaXplLCBzbG93UGF0aCksCisgICAgICAgICAgICAgICAgICAg
IGFsbG9jYXRvckZvclNpemUodm0oKS5qc1ZhbHVlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZSgpLCBi
dXR0ZXJmbHlTaXplLCBzbG93UGF0aCksCiAgICAgICAgICAgICAgICAgICAgIHNsb3dQYXRoKTsK
IAogICAgICAgICAgICAgICAgIExWYWx1ZSBmYXN0QnV0dGVyZmx5VmFsdWUgPSBtX291dC5hZGQo
CkBAIC0xNTAxNiw3ICsxNTAxNiw3IEBAIElHTk9SRV9DTEFOR19XQVJOSU5HU19FTkQKICAgICAg
ICAgTEJhc2ljQmxvY2sgbGFzdE5leHQgPSBtX291dC5pbnNlcnROZXdCbG9ja3NCZWZvcmUoc2xv
d1BhdGgpOwogCiAgICAgICAgIHNpemVfdCBzaXplSW5CeXRlcyA9IHNpemVJblZhbHVlcyAqIHNp
emVvZihKU1ZhbHVlKTsKLSAgICAgICAgQWxsb2NhdG9yIGFsbG9jYXRvciA9IHZtKCkuanNWYWx1
ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UuYWxsb2NhdG9yRm9yTm9uVmlydHVhbChzaXplSW5CeXRl
cywgQWxsb2NhdG9yRm9yTW9kZTo6QWxsb2NhdG9ySWZFeGlzdHMpOworICAgICAgICBBbGxvY2F0
b3IgYWxsb2NhdG9yID0gdm0oKS5qc1ZhbHVlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZSgpLmFsbG9j
YXRvckZvck5vblZpcnR1YWwoc2l6ZUluQnl0ZXMsIEFsbG9jYXRvckZvck1vZGU6OkFsbG9jYXRv
cklmRXhpc3RzKTsKICAgICAgICAgTFZhbHVlIHN0YXJ0T2ZTdG9yYWdlID0gYWxsb2NhdGVIZWFw
Q2VsbCgKICAgICAgICAgICAgIG1fb3V0LmNvbnN0SW50UHRyKGFsbG9jYXRvci5sb2NhbEFsbG9j
YXRvcigpKSwgc2xvd1BhdGgpOwogICAgICAgICBWYWx1ZUZyb21CbG9jayBmYXN0QnV0dGVyZmx5
ID0gbV9vdXQuYW5jaG9yKApAQCAtMTcwMzgsNyArMTcwMzgsNyBAQCBJR05PUkVfQ0xBTkdfV0FS
TklOR1NfRU5ECiAgICAgICAgIExWYWx1ZSBidXR0ZXJmbHlTaXplID0gbV9vdXQuYWRkKAogICAg
ICAgICAgICAgcGF5bG9hZFNpemUsIG1fb3V0LmNvbnN0SW50UHRyKHNpemVvZihJbmRleGluZ0hl
YWRlcikpKTsKIAotICAgICAgICBMVmFsdWUgYWxsb2NhdG9yID0gYWxsb2NhdG9yRm9yU2l6ZSh2
bSgpLmpzVmFsdWVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlLCBidXR0ZXJmbHlTaXplLCBmYWlsQ2Fz
ZSk7CisgICAgICAgIExWYWx1ZSBhbGxvY2F0b3IgPSBhbGxvY2F0b3JGb3JTaXplKHZtKCkuanNW
YWx1ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UoKSwgYnV0dGVyZmx5U2l6ZSwgZmFpbENhc2UpOwog
ICAgICAgICBMVmFsdWUgc3RhcnRPZlN0b3JhZ2UgPSBhbGxvY2F0ZUhlYXBDZWxsKGFsbG9jYXRv
ciwgZmFpbENhc2UpOwogCiAgICAgICAgIExWYWx1ZSBidXR0ZXJmbHkgPSBtX291dC5hZGQoc3Rh
cnRPZlN0b3JhZ2UsIG1fb3V0LmNvbnN0SW50UHRyKHNpemVvZihJbmRleGluZ0hlYWRlcikpKTsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9nZW5lcmF0b3IvRFNMLnJiCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9nZW5lcmF0b3IvRFNMLnJiCShyZXZpc2lvbiAyODYw
ODEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZ2VuZXJhdG9yL0RTTC5yYgkod29ya2luZyBj
b3B5KQpAQCAtMSw0ICsxLDQgQEAKLSMgQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyMgQ29weXJpZ2h0IChDKSAyMDE4LTIwMjEgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogIwogIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICMgbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xNDcs
NiArMTQ3LDggQEAgbW9kdWxlIERTTAogCiBuYW1lc3BhY2UgSlNDIHsKIAorY2xhc3MgQmFzaWNC
bG9ja0xvY2F0aW9uOworCiB2b2lkIGR1bXBCeXRlY29kZShCeXRlY29kZUR1bXBlckJhc2UqIGR1
bXBlciwgSW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCwgY29uc3QgSW5zdHJ1Y3Rpb24qKTsKIAog
I2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L0NvZGVCbG9ja1NldC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L0NvZGVCbG9ja1NldC5oCShyZXZpc2lvbiAyODYwODEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9Db2RlQmxvY2tTZXQuaAkod29ya2luZyBjb3B5KQpAQCAtNjYsOCArNjYsNiBAQCBw
dWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4gdm9pZCBpdGVyYXRlKGNvbnN0
IEZ1bmN0b3ImKTsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPiB2b2lkIGl0ZXJhdGUo
Y29uc3QgQWJzdHJhY3RMb2NrZXImLCBjb25zdCBGdW5jdG9yJik7CiAKLSAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBGdW5jdG9yPiB2b2lkIGl0ZXJhdGVWaWFTdWJzcGFjZXMoVk0mLCBjb25zdCBGdW5j
dG9yJik7Ci0gICAgCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4gdm9pZCBpdGVyYXRl
Q3VycmVudGx5RXhlY3V0aW5nKGNvbnN0IEZ1bmN0b3ImKTsKICAgICAKICAgICB2b2lkIGR1bXAo
UHJpbnRTdHJlYW0mKSBjb25zdDsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0Nv
ZGVCbG9ja1NldElubGluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9Db2RlQmxvY2tTZXRJbmxpbmVzLmgJKHJldmlzaW9uIDI4NjA4MSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL0NvZGVCbG9ja1NldElubGluZXMuaAkod29ya2luZyBjb3B5KQpA
QCAtNjAsMTggKzYwLDYgQEAgdm9pZCBDb2RlQmxvY2tTZXQ6Oml0ZXJhdGUoY29uc3QgQWJzdHJh
YwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPgotdm9pZCBDb2RlQmxvY2tTZXQ6Oml0
ZXJhdGVWaWFTdWJzcGFjZXMoVk0mIHZtLCBjb25zdCBGdW5jdG9yJiBmdW5jdG9yKQotewotICAg
IHZtLmZvckVhY2hDb2RlQmxvY2tTcGFjZSgKLSAgICAgICAgWyZdIChhdXRvJiBzcGFjZUFuZFNl
dCkgewotICAgICAgICAgICAgc3BhY2VBbmRTZXQuc3BhY2UuZm9yRWFjaExpdmVDZWxsKAotICAg
ICAgICAgICAgICAgIFsmXSAoSGVhcENlbGwqIGNlbGwsIEhlYXBDZWxsOjpLaW5kKSB7Ci0gICAg
ICAgICAgICAgICAgICAgIGZ1bmN0b3IoanNDYXN0PENvZGVCbG9jayo+KHN0YXRpY19jYXN0PEpT
Q2VsbCo+KGNlbGwpKSk7Ci0gICAgICAgICAgICAgICAgfSk7Ci0gICAgICAgIH0pOwotfQotCi10
ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPgogdm9pZCBDb2RlQmxvY2tTZXQ6Oml0ZXJhdGVDdXJy
ZW50bHlFeGVjdXRpbmcoY29uc3QgRnVuY3RvciYgZnVuY3RvcikKIHsKICAgICBMb2NrZXIgbG9j
a2VyIHsgbV9sb2NrIH07CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcAkocmV2
aXNpb24gMjg2MDgxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTIxLDEzICsyMSwyMCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2lu
Y2x1ZGUgIkhlYXAuaCIKIAorI2luY2x1ZGUgIkJpZ0ludE9iamVjdC5oIgorI2luY2x1ZGUgIkJv
b2xlYW5PYmplY3QuaCIKKyNpbmNsdWRlICJCcmFuZGVkU3RydWN0dXJlLmgiCiAjaW5jbHVkZSAi
QnVpbHRpbkV4ZWN1dGFibGVzLmgiCisjaW5jbHVkZSAiQ2xvbmVkQXJndW1lbnRzLmgiCiAjaW5j
bHVkZSAiQ29kZUJsb2NrLmgiCiAjaW5jbHVkZSAiQ29kZUJsb2NrU2V0SW5saW5lcy5oIgogI2lu
Y2x1ZGUgIkNvbGxlY3RpbmdTY29wZS5oIgogI2luY2x1ZGUgIkNvbnNlcnZhdGl2ZVJvb3RzLmgi
CisjaW5jbHVkZSAiRGF0ZUluc3RhbmNlLmgiCisjaW5jbHVkZSAiRGVidWdnZXJTY29wZS5oIgog
I2luY2x1ZGUgIkVkZW5HQ0FjdGl2aXR5Q2FsbGJhY2suaCIKICNpbmNsdWRlICJFeGNlcHRpb24u
aCIKKyNpbmNsdWRlICJGYXN0TWFsbG9jQWxpZ25lZE1lbW9yeUFsbG9jYXRvci5oIgogI2luY2x1
ZGUgIkZ1bGxHQ0FjdGl2aXR5Q2FsbGJhY2suaCIKICNpbmNsdWRlICJGdW5jdGlvbkV4ZWN1dGFi
bGVJbmxpbmVzLmgiCiAjaW5jbHVkZSAiR0NBY3Rpdml0eUNhbGxiYWNrLmgiCkBAIC0zNSw2ICs0
Miw3IEBACiAjaW5jbHVkZSAiR0NJbmNvbWluZ1JlZkNvdW50ZWRTZXRJbmxpbmVzLmgiCiAjaW5j
bHVkZSAiR0NTZWdtZW50ZWRBcnJheUlubGluZXMuaCIKICNpbmNsdWRlICJHQ1R5cGVNYXAuaCIK
KyNpbmNsdWRlICJHZXR0ZXJTZXR0ZXIuaCIKICNpbmNsdWRlICJIYXNPd25Qcm9wZXJ0eUNhY2hl
LmgiCiAjaW5jbHVkZSAiSGVhcEhlbHBlclBvb2wuaCIKICNpbmNsdWRlICJIZWFwSXRlcmF0aW9u
U2NvcGUuaCIKQEAgLTQzLDM3ICs1MSwxMTggQEAKICNpbmNsdWRlICJIZWFwVmVyaWZpZXIuaCIK
ICNpbmNsdWRlICJJbmNyZW1lbnRhbFN3ZWVwZXIuaCIKICNpbmNsdWRlICJJbnRlcnByZXRlci5o
IgorI2luY2x1ZGUgIkludGxDb2xsYXRvci5oIgorI2luY2x1ZGUgIkludGxEYXRlVGltZUZvcm1h
dC5oIgorI2luY2x1ZGUgIkludGxEaXNwbGF5TmFtZXMuaCIKKyNpbmNsdWRlICJJbnRsTGlzdEZv
cm1hdC5oIgorI2luY2x1ZGUgIkludGxMb2NhbGUuaCIKKyNpbmNsdWRlICJJbnRsTnVtYmVyRm9y
bWF0LmgiCisjaW5jbHVkZSAiSW50bFBsdXJhbFJ1bGVzLmgiCisjaW5jbHVkZSAiSW50bFJlbGF0
aXZlVGltZUZvcm1hdC5oIgorI2luY2x1ZGUgIkludGxTZWdtZW50SXRlcmF0b3IuaCIKKyNpbmNs
dWRlICJJbnRsU2VnbWVudGVyLmgiCisjaW5jbHVkZSAiSW50bFNlZ21lbnRzLmgiCiAjaW5jbHVk
ZSAiSXNvQ2VsbFNldElubGluZXMuaCIKKyNpbmNsdWRlICJJc29JbmxpbmVkSGVhcENlbGxUeXBl
SW5saW5lcy5oIgogI2luY2x1ZGUgIkpJVFN0dWJSb3V0aW5lU2V0LmgiCiAjaW5jbHVkZSAiSklU
V29ya2xpc3RJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNBUElHbG9iYWxPYmplY3QuaCIKKyNpbmNs
dWRlICJKU0FQSVZhbHVlV3JhcHBlci5oIgorI2luY2x1ZGUgIkpTQVBJV3JhcHBlck9iamVjdC5o
IgorI2luY2x1ZGUgIkpTQXJyYXkuaCIKKyNpbmNsdWRlICJKU0FycmF5QnVmZmVyLmgiCisjaW5j
bHVkZSAiSlNBcnJheUl0ZXJhdG9yLmgiCisjaW5jbHVkZSAiSlNBc3luY0dlbmVyYXRvci5oIgor
I2luY2x1ZGUgIkpTQmlnSW50LmgiCisjaW5jbHVkZSAiSlNCb3VuZEZ1bmN0aW9uLmgiCisjaW5j
bHVkZSAiSlNDYWxsYmFja0NvbnN0cnVjdG9yLmgiCisjaW5jbHVkZSAiSlNDYWxsYmFja0Z1bmN0
aW9uLmgiCisjaW5jbHVkZSAiSlNDYWxsYmFja09iamVjdC5oIgorI2luY2x1ZGUgIkpTQ2FsbGVl
LmgiCisjaW5jbHVkZSAiSlNDdXN0b21HZXR0ZXJGdW5jdGlvbi5oIgorI2luY2x1ZGUgIkpTQ3Vz
dG9tU2V0dGVyRnVuY3Rpb24uaCIKKyNpbmNsdWRlICJKU0RhdGFWaWV3LmgiCiAjaW5jbHVkZSAi
SlNGaW5hbGl6YXRpb25SZWdpc3RyeS5oIgorI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKKyNpbmNs
dWRlICJKU0dsb2JhbExleGljYWxFbnZpcm9ubWVudC5oIgorI2luY2x1ZGUgIkpTR2xvYmFsT2Jq
ZWN0LmgiCisjaW5jbHVkZSAiSlNJbmplY3RlZFNjcmlwdEhvc3QuaCIKKyNpbmNsdWRlICJKU0ph
dmFTY3JpcHRDYWxsRnJhbWUuaCIKKyNpbmNsdWRlICJKU01hcC5oIgorI2luY2x1ZGUgIkpTTWFw
SXRlcmF0b3IuaCIKKyNpbmNsdWRlICJKU01vZHVsZU5hbWVzcGFjZU9iamVjdC5oIgorI2luY2x1
ZGUgIkpTTW9kdWxlUmVjb3JkLmgiCisjaW5jbHVkZSAiSlNOYXRpdmVTdGRGdW5jdGlvbi5oIgor
I2luY2x1ZGUgIkpTUHJvbWlzZS5oIgorI2luY2x1ZGUgIkpTUHJvcGVydHlOYW1lRW51bWVyYXRv
ci5oIgorI2luY2x1ZGUgIkpTUHJveHkuaCIKKyNpbmNsdWRlICJKU1NjcmlwdEZldGNoUGFyYW1l
dGVycy5oIgorI2luY2x1ZGUgIkpTU2NyaXB0RmV0Y2hlci5oIgorI2luY2x1ZGUgIkpTU2V0Lmgi
CisjaW5jbHVkZSAiSlNTZXRJdGVyYXRvci5oIgorI2luY2x1ZGUgIkpTU291cmNlQ29kZS5oIgor
I2luY2x1ZGUgIkpTU3RyaW5nLmgiCisjaW5jbHVkZSAiSlNTdHJpbmdJdGVyYXRvci5oIgorI2lu
Y2x1ZGUgIkpTVGVtcGxhdGVPYmplY3REZXNjcmlwdG9yLmgiCisjaW5jbHVkZSAiSlNUb1dhc21J
Q0NhbGxlZS5oIgorI2luY2x1ZGUgIkpTVHlwZWRBcnJheXMuaCIKICNpbmNsdWRlICJKU1ZpcnR1
YWxNYWNoaW5lSW50ZXJuYWwuaCIKICNpbmNsdWRlICJKU1dlYWtNYXAuaCIKICNpbmNsdWRlICJK
U1dlYWtPYmplY3RSZWYuaCIKICNpbmNsdWRlICJKU1dlYWtTZXQuaCIKICNpbmNsdWRlICJKU1dl
YkFzc2VtYmx5Q29kZUJsb2NrLmgiCisjaW5jbHVkZSAiSlNXZWJBc3NlbWJseUV4Y2VwdGlvbi5o
IgorI2luY2x1ZGUgIkpTV2ViQXNzZW1ibHlHbG9iYWwuaCIKKyNpbmNsdWRlICJKU1dlYkFzc2Vt
Ymx5SW5zdGFuY2UuaCIKKyNpbmNsdWRlICJKU1dlYkFzc2VtYmx5TWVtb3J5LmgiCisjaW5jbHVk
ZSAiSlNXZWJBc3NlbWJseU1vZHVsZS5oIgorI2luY2x1ZGUgIkpTV2ViQXNzZW1ibHlUYWJsZS5o
IgorI2luY2x1ZGUgIkpTV2ViQXNzZW1ibHlUYWcuaCIKKyNpbmNsdWRlICJKU1dpdGhTY29wZS5o
IgogI2luY2x1ZGUgIk1hY2hpbmVTdGFja01hcmtlci5oIgogI2luY2x1ZGUgIk1hcmtTdGFja01l
cmdpbmdDb25zdHJhaW50LmgiCiAjaW5jbHVkZSAiTWFya2VkSlNWYWx1ZVJlZkFycmF5LmgiCiAj
aW5jbHVkZSAiTWFya2VkU3BhY2VJbmxpbmVzLmgiCiAjaW5jbHVkZSAiTWFya2luZ0NvbnN0cmFp
bnRTZXQuaCIKKyNpbmNsdWRlICJOYXRpdmVFeGVjdXRhYmxlLmgiCiAjaW5jbHVkZSAiUHJldmVu
dENvbGxlY3Rpb25TY29wZS5oIgorI2luY2x1ZGUgIlByb2dyYW1FeGVjdXRhYmxlLmgiCisjaW5j
bHVkZSAiUHJvcGVydHlUYWJsZS5oIgorI2luY2x1ZGUgIlByb3h5UmV2b2tlLmgiCisjaW5jbHVk
ZSAiUmVnRXhwT2JqZWN0LmgiCiAjaW5jbHVkZSAiU2FtcGxpbmdQcm9maWxlci5oIgorI2luY2x1
ZGUgIlNjb3BlZEFyZ3VtZW50cy5oIgogI2luY2x1ZGUgIlNoYWRvd0NoaWNrZW4uaCIKKyNpbmNs
dWRlICJTaGFkb3dSZWFsbU9iamVjdC5oIgogI2luY2x1ZGUgIlNwYWNlVGltZU11dGF0b3JTY2hl
ZHVsZXIuaCIKICNpbmNsdWRlICJTdG9jaGFzdGljU3BhY2VUaW1lTXV0YXRvclNjaGVkdWxlci5o
IgogI2luY2x1ZGUgIlN0b3BJZk5lY2Vzc2FyeVRpbWVyLmgiCisjaW5jbHVkZSAiU3RyaWN0RXZh
bEFjdGl2YXRpb24uaCIKKyNpbmNsdWRlICJTdHJpbmdPYmplY3QuaCIKKyNpbmNsdWRlICJTdHJ1
Y3R1cmVDaGFpbi5oIgogI2luY2x1ZGUgIlN1YnNwYWNlSW5saW5lcy5oIgogI2luY2x1ZGUgIlN1
cGVyU2FtcGxlci5oIgogI2luY2x1ZGUgIlN3ZWVwaW5nU2NvcGUuaCIKKyNpbmNsdWRlICJTeW1i
b2xPYmplY3QuaCIKICNpbmNsdWRlICJTeW1ib2xUYWJsZUlubGluZXMuaCIKICNpbmNsdWRlICJT
eW5jaHJvbm91c1N0b3BUaGVXb3JsZE11dGF0b3JTY2hlZHVsZXIuaCIKKyNpbmNsdWRlICJUZW1w
b3JhbENhbGVuZGFyLmgiCisjaW5jbHVkZSAiVGVtcG9yYWxEdXJhdGlvbi5oIgorI2luY2x1ZGUg
IlRlbXBvcmFsSW5zdGFudC5oIgorI2luY2x1ZGUgIlRlbXBvcmFsUGxhaW5UaW1lLmgiCisjaW5j
bHVkZSAiVGVtcG9yYWxUaW1lWm9uZS5oIgogI2luY2x1ZGUgIlR5cGVQcm9maWxlci5oIgogI2lu
Y2x1ZGUgIlR5cGVQcm9maWxlckxvZy5oIgorI2luY2x1ZGUgIlVubGlua2VkRnVuY3Rpb25Db2Rl
QmxvY2suaCIKKyNpbmNsdWRlICJVbmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2suaCIKKyNp
bmNsdWRlICJVbmxpbmtlZFByb2dyYW1Db2RlQmxvY2suaCIKICNpbmNsdWRlICJWTS5oIgogI2lu
Y2x1ZGUgIlZlcmlmaWVyU2xvdFZpc2l0b3JJbmxpbmVzLmgiCiAjaW5jbHVkZSAiV2Vha01hcElt
cGxJbmxpbmVzLmgiCiAjaW5jbHVkZSAiV2Vha1NldElubGluZXMuaCIKKyNpbmNsdWRlICJXZWJB
c3NlbWJseUZ1bmN0aW9uLmgiCisjaW5jbHVkZSAiV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQuaCIK
KyNpbmNsdWRlICJXZWJBc3NlbWJseVdyYXBwZXJGdW5jdGlvbi5oIgogI2luY2x1ZGUgPGFsZ29y
aXRobT4KICNpbmNsdWRlIDx3dGYvQ3J5cHRvZ3JhcGhpY2FsbHlSYW5kb21OdW1iZXIuaD4KICNp
bmNsdWRlIDx3dGYvTGlzdER1bXAuaD4KQEAgLTkwLDcgKzE3OSwxMyBAQAogI2luY2x1ZGUgPHd0
Zi9zcGkvY29jb2Evb2JqY1NQSS5oPgogI2VuZGlmCiAKKyNpZiBKU0NfT0JKQ19BUElfRU5BQkxF
RAorI2luY2x1ZGUgIk9iakNDYWxsYmFja0Z1bmN0aW9uLmgiCisjZW5kaWYKKwogI2lmZGVmIEpT
Q19HTElCX0FQSV9FTkFCTEVECisjaW5jbHVkZSAiSlNBUElXcmFwcGVyR2xvYmFsT2JqZWN0Lmgi
CisjaW5jbHVkZSAiSlNDQ2FsbGJhY2tGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTQ0dMaWJXcmFw
cGVyT2JqZWN0LmgiCiAjZW5kaWYKIApAQCAtMjg2LDYgKzM4MSwxMTQgQEAgSGVhcDo6SGVhcChW
TSYgdm0sIEhlYXBUeXBlIGhlYXBUeXBlKQogICAgICwgbV9oZWxwZXJDbGllbnQoJmhlYXBIZWxw
ZXJQb29sKCkpCiAgICAgLCBtX3RocmVhZExvY2soQm94PExvY2s+OjpjcmVhdGUoKSkKICAgICAs
IG1fdGhyZWFkQ29uZGl0aW9uKEF1dG9tYXRpY1RocmVhZENvbmRpdGlvbjo6Y3JlYXRlKCkpCisK
KyAgICAvLyBtbGFtIEhlYXBDZWxsVHlwZXMKKyAgICAsIGF1eGlsaWFyeUhlYXBDZWxsVHlwZShD
ZWxsQXR0cmlidXRlcyhEb2VzTm90TmVlZERlc3RydWN0aW9uLCBIZWFwQ2VsbDo6QXV4aWxpYXJ5
KSkKKyAgICAsIGltbXV0YWJsZUJ1dHRlcmZseUhlYXBDZWxsVHlwZShDZWxsQXR0cmlidXRlcyhE
b2VzTm90TmVlZERlc3RydWN0aW9uLCBIZWFwQ2VsbDo6SlNDZWxsV2l0aEluZGV4aW5nSGVhZGVy
KSkKKyAgICAsIGNlbGxIZWFwQ2VsbFR5cGUoQ2VsbEF0dHJpYnV0ZXMoRG9lc05vdE5lZWREZXN0
cnVjdGlvbiwgSGVhcENlbGw6OkpTQ2VsbCkpCisgICAgLCBkZXN0cnVjdGlibGVDZWxsSGVhcENl
bGxUeXBlKENlbGxBdHRyaWJ1dGVzKE5lZWRzRGVzdHJ1Y3Rpb24sIEhlYXBDZWxsOjpKU0NlbGwp
KQorICAgICwgYXBpR2xvYmFsT2JqZWN0SGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6QXJn
czxKU0FQSUdsb2JhbE9iamVjdD4oKSkKKyAgICAsIGNhbGxiYWNrQ29uc3RydWN0b3JIZWFwQ2Vs
bFR5cGUoSXNvSGVhcENlbGxUeXBlOjpBcmdzPEpTQ2FsbGJhY2tDb25zdHJ1Y3Rvcj4oKSkKKyAg
ICAsIGNhbGxiYWNrR2xvYmFsT2JqZWN0SGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6QXJn
czxKU0NhbGxiYWNrT2JqZWN0PEpTR2xvYmFsT2JqZWN0Pj4oKSkKKyAgICAsIGNhbGxiYWNrT2Jq
ZWN0SGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6QXJnczxKU0NhbGxiYWNrT2JqZWN0PEpT
Tm9uRmluYWxPYmplY3Q+PigpKQorICAgICwgY3VzdG9tR2V0dGVyRnVuY3Rpb25IZWFwQ2VsbFR5
cGUoSXNvSGVhcENlbGxUeXBlOjpBcmdzPEpTQ3VzdG9tR2V0dGVyRnVuY3Rpb24+KCkpCisgICAg
LCBjdXN0b21TZXR0ZXJGdW5jdGlvbkhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OkFyZ3M8
SlNDdXN0b21TZXR0ZXJGdW5jdGlvbj4oKSkKKyAgICAsIGRhdGVJbnN0YW5jZUhlYXBDZWxsVHlw
ZShJc29IZWFwQ2VsbFR5cGU6OkFyZ3M8RGF0ZUluc3RhbmNlPigpKQorICAgICwgZXJyb3JJbnN0
YW5jZUhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OkFyZ3M8RXJyb3JJbnN0YW5jZT4oKSkK
KyAgICAsIGZpbmFsaXphdGlvblJlZ2lzdHJ5Q2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpBcmdz
PEpTRmluYWxpemF0aW9uUmVnaXN0cnk+KCkpCisgICAgLCBnbG9iYWxMZXhpY2FsRW52aXJvbm1l
bnRIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpBcmdzPEpTR2xvYmFsTGV4aWNhbEVudmly
b25tZW50PigpKQorICAgICwgZ2xvYmFsT2JqZWN0SGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlw
ZTo6QXJnczxKU0dsb2JhbE9iamVjdD4oKSkKKyAgICAsIGluamVjdGVkU2NyaXB0SG9zdFNwYWNl
SGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6QXJnczxJbnNwZWN0b3I6OkpTSW5qZWN0ZWRT
Y3JpcHRIb3N0PigpKQorICAgICwgamF2YVNjcmlwdENhbGxGcmFtZUhlYXBDZWxsVHlwZShJc29I
ZWFwQ2VsbFR5cGU6OkFyZ3M8SW5zcGVjdG9yOjpKU0phdmFTY3JpcHRDYWxsRnJhbWU+KCkpCisg
ICAgLCBqc01vZHVsZVJlY29yZEhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OkFyZ3M8SlNN
b2R1bGVSZWNvcmQ+KCkpCisgICAgLCBtb2R1bGVOYW1lc3BhY2VPYmplY3RIZWFwQ2VsbFR5cGUo
SXNvSGVhcENlbGxUeXBlOjpBcmdzPEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0PigpKQorICAgICwg
bmF0aXZlU3RkRnVuY3Rpb25IZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpBcmdzPEpTTmF0
aXZlU3RkRnVuY3Rpb24+KCkpCisgICAgLCB3ZWFrTWFwSGVhcENlbGxUeXBlKElzb0hlYXBDZWxs
VHlwZTo6QXJnczxKU1dlYWtNYXA+KCkpCisgICAgLCB3ZWFrU2V0SGVhcENlbGxUeXBlKElzb0hl
YXBDZWxsVHlwZTo6QXJnczxKU1dlYWtTZXQ+KCkpCisjaWYgSlNDX09CSkNfQVBJX0VOQUJMRUQK
KyAgICAsIGFwaVdyYXBwZXJPYmplY3RIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpBcmdz
PEpTQ2FsbGJhY2tPYmplY3Q8SlNBUElXcmFwcGVyT2JqZWN0Pj4oKSkKKyAgICAsIG9iakNDYWxs
YmFja0Z1bmN0aW9uSGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6QXJnczxPYmpDQ2FsbGJh
Y2tGdW5jdGlvbj4oKSkKKyNlbmRpZgorI2lmZGVmIEpTQ19HTElCX0FQSV9FTkFCTEVECisgICAg
LCBhcGlXcmFwcGVyT2JqZWN0SGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6QXJnczxKU0Nh
bGxiYWNrT2JqZWN0PEpTQVBJV3JhcHBlck9iamVjdD4+KCkpCisgICAgLCBjYWxsYmFja0FQSVdy
YXBwZXJHbG9iYWxPYmplY3RIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpBcmdzPEpTQ2Fs
bGJhY2tPYmplY3Q8SlNBUElXcmFwcGVyR2xvYmFsT2JqZWN0Pj4oKSkKKyAgICAsIGpzY0NhbGxi
YWNrRnVuY3Rpb25IZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpBcmdzPEpTQ0NhbGxiYWNr
RnVuY3Rpb24+KCkpCisjZW5kaWYKKyAgICAsIGludGxDb2xsYXRvckhlYXBDZWxsVHlwZShJc29I
ZWFwQ2VsbFR5cGU6OkFyZ3M8SW50bENvbGxhdG9yPigpKQorICAgICwgaW50bERhdGVUaW1lRm9y
bWF0SGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6QXJnczxJbnRsRGF0ZVRpbWVGb3JtYXQ+
KCkpCisgICAgLCBpbnRsRGlzcGxheU5hbWVzSGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6
QXJnczxJbnRsRGlzcGxheU5hbWVzPigpKQorICAgICwgaW50bExpc3RGb3JtYXRIZWFwQ2VsbFR5
cGUoSXNvSGVhcENlbGxUeXBlOjpBcmdzPEludGxMaXN0Rm9ybWF0PigpKQorICAgICwgaW50bExv
Y2FsZUhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OkFyZ3M8SW50bExvY2FsZT4oKSkKKyAg
ICAsIGludGxOdW1iZXJGb3JtYXRIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpBcmdzPElu
dGxOdW1iZXJGb3JtYXQ+KCkpCisgICAgLCBpbnRsUGx1cmFsUnVsZXNIZWFwQ2VsbFR5cGUoSXNv
SGVhcENlbGxUeXBlOjpBcmdzPEludGxQbHVyYWxSdWxlcz4oKSkKKyAgICAsIGludGxSZWxhdGl2
ZVRpbWVGb3JtYXRIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpBcmdzPEludGxSZWxhdGl2
ZVRpbWVGb3JtYXQ+KCkpCisgICAgLCBpbnRsU2VnbWVudEl0ZXJhdG9ySGVhcENlbGxUeXBlKElz
b0hlYXBDZWxsVHlwZTo6QXJnczxJbnRsU2VnbWVudEl0ZXJhdG9yPigpKQorICAgICwgaW50bFNl
Z21lbnRlckhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OkFyZ3M8SW50bFNlZ21lbnRlcj4o
KSkKKyAgICAsIGludGxTZWdtZW50c0hlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OkFyZ3M8
SW50bFNlZ21lbnRzPigpKQorI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKKyAgICAsIHdlYkFzc2Vt
Ymx5Q29kZUJsb2NrSGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6QXJnczxKU1dlYkFzc2Vt
Ymx5Q29kZUJsb2NrPigpKQorICAgICwgd2ViQXNzZW1ibHlFeGNlcHRpb25IZWFwQ2VsbFR5cGUo
SXNvSGVhcENlbGxUeXBlOjpBcmdzPEpTV2ViQXNzZW1ibHlFeGNlcHRpb24+KCkpCisgICAgLCB3
ZWJBc3NlbWJseUZ1bmN0aW9uSGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6QXJnczxXZWJB
c3NlbWJseUZ1bmN0aW9uPigpKQorICAgICwgd2ViQXNzZW1ibHlHbG9iYWxIZWFwQ2VsbFR5cGUo
SXNvSGVhcENlbGxUeXBlOjpBcmdzPEpTV2ViQXNzZW1ibHlHbG9iYWw+KCkpCisgICAgLCB3ZWJB
c3NlbWJseUluc3RhbmNlSGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6QXJnczxKU1dlYkFz
c2VtYmx5SW5zdGFuY2U+KCkpCisgICAgLCB3ZWJBc3NlbWJseU1lbW9yeUhlYXBDZWxsVHlwZShJ
c29IZWFwQ2VsbFR5cGU6OkFyZ3M8SlNXZWJBc3NlbWJseU1lbW9yeT4oKSkKKyAgICAsIHdlYkFz
c2VtYmx5TW9kdWxlSGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6QXJnczxKU1dlYkFzc2Vt
Ymx5TW9kdWxlPigpKQorICAgICwgd2ViQXNzZW1ibHlNb2R1bGVSZWNvcmRIZWFwQ2VsbFR5cGUo
SXNvSGVhcENlbGxUeXBlOjpBcmdzPFdlYkFzc2VtYmx5TW9kdWxlUmVjb3JkPigpKQorICAgICwg
d2ViQXNzZW1ibHlUYWJsZUhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OkFyZ3M8SlNXZWJB
c3NlbWJseVRhYmxlPigpKQorICAgICwgd2ViQXNzZW1ibHlUYWdIZWFwQ2VsbFR5cGUoSXNvSGVh
cENlbGxUeXBlOjpBcmdzPEpTV2ViQXNzZW1ibHlUYWc+KCkpCisjZW5kaWYKKworICAgIC8vIG1s
YW0gQWxpZ25lZE1lbW9yeUFsbG9jYXRvcnMKKyAgICAsIGZhc3RNYWxsb2NBbGxvY2F0b3IobWFr
ZVVuaXF1ZTxGYXN0TWFsbG9jQWxpZ25lZE1lbW9yeUFsbG9jYXRvcj4oKSkKKyAgICAsIHByaW1p
dGl2ZUdpZ2FjYWdlQWxsb2NhdG9yKG1ha2VVbmlxdWU8R2lnYWNhZ2VBbGlnbmVkTWVtb3J5QWxs
b2NhdG9yPihHaWdhY2FnZTo6UHJpbWl0aXZlKSkKKyAgICAsIGpzVmFsdWVHaWdhY2FnZUFsbG9j
YXRvcihtYWtlVW5pcXVlPEdpZ2FjYWdlQWxpZ25lZE1lbW9yeUFsbG9jYXRvcj4oR2lnYWNhZ2U6
OkpTVmFsdWUpKQorCisgICAgLy8gbWxhbSBTdWJzcGFjZXMKKyAgICAsIHByaW1pdGl2ZUdpZ2Fj
YWdlQXV4aWxpYXJ5U3BhY2UoIlByaW1pdGl2ZSBHaWdhY2FnZSBBdXhpbGlhcnkiLCAqdGhpcywg
YXV4aWxpYXJ5SGVhcENlbGxUeXBlLCBwcmltaXRpdmVHaWdhY2FnZUFsbG9jYXRvci5nZXQoKSkg
Ly8gSGFzaDoweDNlN2NkNzYyCisgICAgLCBqc1ZhbHVlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZSgi
SlNWYWx1ZSBHaWdhY2FnZSBBdXhpbGlhcnkiLCAqdGhpcywgYXV4aWxpYXJ5SGVhcENlbGxUeXBl
LCBqc1ZhbHVlR2lnYWNhZ2VBbGxvY2F0b3IuZ2V0KCkpIC8vIEhhc2g6MHgyNDFlOTQ2CisgICAg
LCBpbW11dGFibGVCdXR0ZXJmbHlKU1ZhbHVlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZSgiSW1tdXRh
YmxlQnV0dGVyZmx5IEdpZ2FjYWdlIEpTQ2VsbFdpdGhJbmRleGluZ0hlYWRlciIsICp0aGlzLCBp
bW11dGFibGVCdXR0ZXJmbHlIZWFwQ2VsbFR5cGUsIGpzVmFsdWVHaWdhY2FnZUFsbG9jYXRvci5n
ZXQoKSkgLy8gSGFzaDoweDdhOTQ1MzAwCisgICAgLCBjZWxsU3BhY2UoIkpTQ2VsbCIsICp0aGlz
LCBjZWxsSGVhcENlbGxUeXBlLCBmYXN0TWFsbG9jQWxsb2NhdG9yLmdldCgpKSAvLyBIYXNoOjB4
YWRmYjVhNzkKKyAgICAsIHZhcmlhYmxlU2l6ZWRDZWxsU3BhY2UoIlZhcmlhYmxlIFNpemVkIEpT
Q2VsbCIsICp0aGlzLCBjZWxsSGVhcENlbGxUeXBlLCBmYXN0TWFsbG9jQWxsb2NhdG9yLmdldCgp
KSAvLyBIYXNoOjB4YmNkNzY5Y2MKKyAgICAsIGRlc3RydWN0aWJsZU9iamVjdFNwYWNlKCJKU0Rl
c3RydWN0aWJsZU9iamVjdCIsICp0aGlzLCBkZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUs
IGZhc3RNYWxsb2NBbGxvY2F0b3IuZ2V0KCkpIC8vIEhhc2g6MHg0ZjVlZDdhOQorICAgICwgYXJy
YXlTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVCgqdGhpcywgY2VsbEhlYXBDZWxsVHlwZSwgSlNBcnJh
eSkKKyAgICAsIGJpZ0ludFNwYWNlIElTT19TVUJTUEFDRV9JTklUKCp0aGlzLCBjZWxsSGVhcENl
bGxUeXBlLCBKU0JpZ0ludCkKKyAgICAsIGNhbGxlZVNwYWNlIElTT19TVUJTUEFDRV9JTklUKCp0
aGlzLCBjZWxsSGVhcENlbGxUeXBlLCBKU0NhbGxlZSkKKyAgICAsIGNsb25lZEFyZ3VtZW50c1Nw
YWNlIElTT19TVUJTUEFDRV9JTklUKCp0aGlzLCBjZWxsSGVhcENlbGxUeXBlLCBDbG9uZWRBcmd1
bWVudHMpCisgICAgLCBjdXN0b21HZXR0ZXJTZXR0ZXJTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVCgq
dGhpcywgY2VsbEhlYXBDZWxsVHlwZSwgQ3VzdG9tR2V0dGVyU2V0dGVyKQorICAgICwgZGF0ZUlu
c3RhbmNlU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoKnRoaXMsIGRhdGVJbnN0YW5jZUhlYXBDZWxs
VHlwZSwgRGF0ZUluc3RhbmNlKQorICAgICwgZG9tQXR0cmlidXRlR2V0dGVyU2V0dGVyU3BhY2Ug
SVNPX1NVQlNQQUNFX0lOSVQoKnRoaXMsIGNlbGxIZWFwQ2VsbFR5cGUsIERPTUF0dHJpYnV0ZUdl
dHRlclNldHRlcikKKyAgICAsIGV4Y2VwdGlvblNwYWNlIElTT19TVUJTUEFDRV9JTklUKCp0aGlz
LCBkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlLCBFeGNlcHRpb24pCisgICAgLCBleGVjdXRh
YmxlVG9Db2RlQmxvY2tFZGdlU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoKnRoaXMsIGNlbGxIZWFw
Q2VsbFR5cGUsIEV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2UpIC8vIEhhc2g6MHg3YjczMGIyMAor
ICAgICwgZnVuY3Rpb25TcGFjZSBJU09fU1VCU1BBQ0VfSU5JVCgqdGhpcywgY2VsbEhlYXBDZWxs
VHlwZSwgSlNGdW5jdGlvbikgLy8gSGFzaDoweDgwMGZjYTcyCisgICAgLCBnZXR0ZXJTZXR0ZXJT
cGFjZSBJU09fU1VCU1BBQ0VfSU5JVCgqdGhpcywgY2VsbEhlYXBDZWxsVHlwZSwgR2V0dGVyU2V0
dGVyKQorICAgICwgZ2xvYmFsTGV4aWNhbEVudmlyb25tZW50U3BhY2UgSVNPX1NVQlNQQUNFX0lO
SVQoKnRoaXMsIGdsb2JhbExleGljYWxFbnZpcm9ubWVudEhlYXBDZWxsVHlwZSwgSlNHbG9iYWxM
ZXhpY2FsRW52aXJvbm1lbnQpCisgICAgLCBpbnRlcm5hbEZ1bmN0aW9uU3BhY2UgSVNPX1NVQlNQ
QUNFX0lOSVQoKnRoaXMsIGNlbGxIZWFwQ2VsbFR5cGUsIEludGVybmFsRnVuY3Rpb24pIC8vIEhh
c2g6MHhmODQ1YzQ2NAorICAgICwganNQcm94eVNwYWNlIElTT19TVUJTUEFDRV9JTklUKCp0aGlz
LCBjZWxsSGVhcENlbGxUeXBlLCBKU1Byb3h5KQorICAgICwgbmF0aXZlRXhlY3V0YWJsZVNwYWNl
IElTT19TVUJTUEFDRV9JTklUKCp0aGlzLCBkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlLCBO
YXRpdmVFeGVjdXRhYmxlKSAvLyBIYXNoOjB4Njc1NjdmOTUKKyAgICAsIG51bWJlck9iamVjdFNw
YWNlIElTT19TVUJTUEFDRV9JTklUKCp0aGlzLCBjZWxsSGVhcENlbGxUeXBlLCBOdW1iZXJPYmpl
Y3QpCisgICAgLCBwbGFpbk9iamVjdFNwYWNlIElTT19TVUJTUEFDRV9JTklUKCp0aGlzLCBjZWxs
SGVhcENlbGxUeXBlLCBKU05vbkZpbmFsT2JqZWN0KSAvLyBNYWlubHkgdXNlZCBmb3IgcHJvdG90
eXBlcy4KKyAgICAsIHByb21pc2VTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVCgqdGhpcywgY2VsbEhl
YXBDZWxsVHlwZSwgSlNQcm9taXNlKQorICAgICwgcHJvcGVydHlOYW1lRW51bWVyYXRvclNwYWNl
IElTT19TVUJTUEFDRV9JTklUKCp0aGlzLCBjZWxsSGVhcENlbGxUeXBlLCBKU1Byb3BlcnR5TmFt
ZUVudW1lcmF0b3IpCisgICAgLCBwcm9wZXJ0eVRhYmxlU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQo
KnRoaXMsIGRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUsIFByb3BlcnR5VGFibGUpIC8vIEhh
c2g6MHhjNmJjOWYxMgorICAgICwgcmVnRXhwU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoKnRoaXMs
IGRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUsIFJlZ0V4cCkKKyAgICAsIHJlZ0V4cE9iamVj
dFNwYWNlIElTT19TVUJTUEFDRV9JTklUKCp0aGlzLCBjZWxsSGVhcENlbGxUeXBlLCBSZWdFeHBP
YmplY3QpCisgICAgLCByb3BlU3RyaW5nU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoKnRoaXMsIHN0
cmluZ0hlYXBDZWxsVHlwZSwgSlNSb3BlU3RyaW5nKQorICAgICwgc2NvcGVkQXJndW1lbnRzU3Bh
Y2UgSVNPX1NVQlNQQUNFX0lOSVQoKnRoaXMsIGNlbGxIZWFwQ2VsbFR5cGUsIFNjb3BlZEFyZ3Vt
ZW50cykKKyAgICAsIHNwYXJzZUFycmF5VmFsdWVNYXBTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVCgq
dGhpcywgZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZSwgU3BhcnNlQXJyYXlWYWx1ZU1hcCkK
KyAgICAsIHN0cmluZ1NwYWNlIElTT19TVUJTUEFDRV9JTklUKCp0aGlzLCBzdHJpbmdIZWFwQ2Vs
bFR5cGUsIEpTU3RyaW5nKSAvLyBIYXNoOjB4OTBjZjc1OGYKKyAgICAsIHN0cmluZ09iamVjdFNw
YWNlIElTT19TVUJTUEFDRV9JTklUKCp0aGlzLCBjZWxsSGVhcENlbGxUeXBlLCBTdHJpbmdPYmpl
Y3QpCisgICAgLCBzdHJ1Y3R1cmVDaGFpblNwYWNlIElTT19TVUJTUEFDRV9JTklUKCp0aGlzLCBj
ZWxsSGVhcENlbGxUeXBlLCBTdHJ1Y3R1cmVDaGFpbikKKyAgICAsIHN0cnVjdHVyZVJhcmVEYXRh
U3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoKnRoaXMsIGRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5
cGUsIFN0cnVjdHVyZVJhcmVEYXRhKSAvLyBIYXNoOjB4YWNhNGU2MmQKKyAgICAsIHN0cnVjdHVy
ZVNwYWNlIElTT19TVUJTUEFDRV9JTklUKCp0aGlzLCBkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxU
eXBlLCBTdHJ1Y3R1cmUpIC8vIEhhc2g6MHgxZjFiY2RjYQorICAgICwgYnJhbmRlZFN0cnVjdHVy
ZVNwYWNlIElTT19TVUJTUEFDRV9JTklUKCp0aGlzLCBkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxU
eXBlLCBCcmFuZGVkU3RydWN0dXJlKQorICAgICwgc3ltYm9sVGFibGVTcGFjZSBJU09fU1VCU1BB
Q0VfSU5JVCgqdGhpcywgZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZSwgU3ltYm9sVGFibGUp
IC8vIEhhc2g6MHhjNTIxNWFmZAorICAgICwgZXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZXNXaXRo
Q29uc3RyYWludHMoZXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZVNwYWNlKQorICAgICwgZXhlY3V0
YWJsZVRvQ29kZUJsb2NrRWRnZXNXaXRoRmluYWxpemVycyhleGVjdXRhYmxlVG9Db2RlQmxvY2tF
ZGdlU3BhY2UpCisgICAgLCBjb2RlQmxvY2tTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVCgqdGhpcywg
ZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZSwgQ29kZUJsb2NrKSAvLyBIYXNoOjB4NzdlNjZl
YzkKKyAgICAsIGZ1bmN0aW9uRXhlY3V0YWJsZVNwYWNlIElTT19TVUJTUEFDRV9JTklUKCp0aGlz
LCBkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlLCBGdW5jdGlvbkV4ZWN1dGFibGUpIC8vIEhh
c2g6MHg1ZDE1OGYzCisgICAgLCBwcm9ncmFtRXhlY3V0YWJsZVNwYWNlIElTT19TVUJTUEFDRV9J
TklUKCp0aGlzLCBkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlLCBQcm9ncmFtRXhlY3V0YWJs
ZSkgLy8gSGFzaDoweDUyN2M3N2U3CisgICAgLCB1bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZVNw
YWNlIElTT19TVUJTUEFDRV9JTklUKCp0aGlzLCBkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBl
LCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSkgLy8gSGFzaDoweGY2YjgyOGQ5CisKIHsKICAg
ICBtX3dvcmxkU3RhdGUuc3RvcmUoMCk7CiAKQEAgLTU3OSwzMSArNzgyLDMxIEBAIHZvaWQgSGVh
cDo6ZmluYWxpemVVbmNvbmRpdGlvbmFsRmluYWxpemUKIHsKICAgICBWTSYgdm0gPSB0aGlzLT52
bSgpOwogICAgIHZtLmJ1aWx0aW5FeGVjdXRhYmxlcygpLT5maW5hbGl6ZVVuY29uZGl0aW9uYWxs
eSgpOwotICAgIGZpbmFsaXplTWFya2VkVW5jb25kaXRpb25hbEZpbmFsaXplcnM8RnVuY3Rpb25F
eGVjdXRhYmxlPih2bS5mdW5jdGlvbkV4ZWN1dGFibGVTcGFjZS5zcGFjZSk7Ci0gICAgZmluYWxp
emVNYXJrZWRVbmNvbmRpdGlvbmFsRmluYWxpemVyczxTeW1ib2xUYWJsZT4odm0uc3ltYm9sVGFi
bGVTcGFjZSk7Ci0gICAgZmluYWxpemVNYXJrZWRVbmNvbmRpdGlvbmFsRmluYWxpemVyczxFeGVj
dXRhYmxlVG9Db2RlQmxvY2tFZGdlPih2bS5leGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlc1dpdGhG
aW5hbGl6ZXJzKTsgLy8gV2UgcnVuIHRoaXMgYmVmb3JlIENvZGVCbG9jaydzIHVuY29uZGl0aW9u
YWwgZmluYWxpemVyIHNpbmNlIENvZGVCbG9jayBsb29rcyBhdCB0aGUgb3duZXIgZXhlY3V0YWJs
ZSdzIGluc3RhbGxlZCBDb2RlQmxvY2sgaW4gaXRzIGZpbmFsaXplVW5jb25kaXRpb25hbGx5Lgot
ICAgIHZtLmZvckVhY2hDb2RlQmxvY2tTcGFjZSgKKyAgICBmaW5hbGl6ZU1hcmtlZFVuY29uZGl0
aW9uYWxGaW5hbGl6ZXJzPEZ1bmN0aW9uRXhlY3V0YWJsZT4oZnVuY3Rpb25FeGVjdXRhYmxlU3Bh
Y2Uuc3BhY2UpOworICAgIGZpbmFsaXplTWFya2VkVW5jb25kaXRpb25hbEZpbmFsaXplcnM8U3lt
Ym9sVGFibGU+KHN5bWJvbFRhYmxlU3BhY2UpOworICAgIGZpbmFsaXplTWFya2VkVW5jb25kaXRp
b25hbEZpbmFsaXplcnM8RXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZT4oZXhlY3V0YWJsZVRvQ29k
ZUJsb2NrRWRnZXNXaXRoRmluYWxpemVycyk7IC8vIFdlIHJ1biB0aGlzIGJlZm9yZSBDb2RlQmxv
Y2sncyB1bmNvbmRpdGlvbmFsIGZpbmFsaXplciBzaW5jZSBDb2RlQmxvY2sgbG9va3MgYXQgdGhl
IG93bmVyIGV4ZWN1dGFibGUncyBpbnN0YWxsZWQgQ29kZUJsb2NrIGluIGl0cyBmaW5hbGl6ZVVu
Y29uZGl0aW9uYWxseS4KKyAgICBmb3JFYWNoQ29kZUJsb2NrU3BhY2UoCiAgICAgICAgIFsmXSAo
YXV0byYgc3BhY2UpIHsKICAgICAgICAgICAgIHRoaXMtPmZpbmFsaXplTWFya2VkVW5jb25kaXRp
b25hbEZpbmFsaXplcnM8Q29kZUJsb2NrPihzcGFjZS5zZXQpOwogICAgICAgICB9KTsKLSAgICBm
aW5hbGl6ZU1hcmtlZFVuY29uZGl0aW9uYWxGaW5hbGl6ZXJzPFN0cnVjdHVyZVJhcmVEYXRhPih2
bS5zdHJ1Y3R1cmVSYXJlRGF0YVNwYWNlKTsKLSAgICBmaW5hbGl6ZU1hcmtlZFVuY29uZGl0aW9u
YWxGaW5hbGl6ZXJzPFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlPih2bS51bmxpbmtlZEZ1bmN0
aW9uRXhlY3V0YWJsZVNwYWNlLnNldCk7Ci0gICAgaWYgKHZtLm1fd2Vha1NldFNwYWNlKQotICAg
ICAgICBmaW5hbGl6ZU1hcmtlZFVuY29uZGl0aW9uYWxGaW5hbGl6ZXJzPEpTV2Vha1NldD4oKnZt
Lm1fd2Vha1NldFNwYWNlKTsKLSAgICBpZiAodm0ubV93ZWFrTWFwU3BhY2UpCi0gICAgICAgIGZp
bmFsaXplTWFya2VkVW5jb25kaXRpb25hbEZpbmFsaXplcnM8SlNXZWFrTWFwPigqdm0ubV93ZWFr
TWFwU3BhY2UpOwotICAgIGlmICh2bS5tX3dlYWtPYmplY3RSZWZTcGFjZSkKLSAgICAgICAgZmlu
YWxpemVNYXJrZWRVbmNvbmRpdGlvbmFsRmluYWxpemVyczxKU1dlYWtPYmplY3RSZWY+KCp2bS5t
X3dlYWtPYmplY3RSZWZTcGFjZSk7Ci0gICAgaWYgKHZtLm1fZXJyb3JJbnN0YW5jZVNwYWNlKQot
ICAgICAgICBmaW5hbGl6ZU1hcmtlZFVuY29uZGl0aW9uYWxGaW5hbGl6ZXJzPEVycm9ySW5zdGFu
Y2U+KCp2bS5tX2Vycm9ySW5zdGFuY2VTcGFjZSk7CisgICAgZmluYWxpemVNYXJrZWRVbmNvbmRp
dGlvbmFsRmluYWxpemVyczxTdHJ1Y3R1cmVSYXJlRGF0YT4oc3RydWN0dXJlUmFyZURhdGFTcGFj
ZSk7CisgICAgZmluYWxpemVNYXJrZWRVbmNvbmRpdGlvbmFsRmluYWxpemVyczxVbmxpbmtlZEZ1
bmN0aW9uRXhlY3V0YWJsZT4odW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGVTcGFjZS5zZXQpOwor
ICAgIGlmIChtX3dlYWtTZXRTcGFjZSkKKyAgICAgICAgZmluYWxpemVNYXJrZWRVbmNvbmRpdGlv
bmFsRmluYWxpemVyczxKU1dlYWtTZXQ+KCptX3dlYWtTZXRTcGFjZSk7CisgICAgaWYgKG1fd2Vh
a01hcFNwYWNlKQorICAgICAgICBmaW5hbGl6ZU1hcmtlZFVuY29uZGl0aW9uYWxGaW5hbGl6ZXJz
PEpTV2Vha01hcD4oKm1fd2Vha01hcFNwYWNlKTsKKyAgICBpZiAobV93ZWFrT2JqZWN0UmVmU3Bh
Y2UpCisgICAgICAgIGZpbmFsaXplTWFya2VkVW5jb25kaXRpb25hbEZpbmFsaXplcnM8SlNXZWFr
T2JqZWN0UmVmPigqbV93ZWFrT2JqZWN0UmVmU3BhY2UpOworICAgIGlmIChtX2Vycm9ySW5zdGFu
Y2VTcGFjZSkKKyAgICAgICAgZmluYWxpemVNYXJrZWRVbmNvbmRpdGlvbmFsRmluYWxpemVyczxF
cnJvckluc3RhbmNlPigqbV9lcnJvckluc3RhbmNlU3BhY2UpOwogCiAgICAgLy8gRmluYWxpemF0
aW9uUmVnaXN0cmllcyBjdXJyZW50bHkgcmVseSBvbiBzZXJpYWwgZmluYWxpemF0aW9uIGJlY2F1
c2UgdGhleSBjYW4gcG9zdCB0YXNrcyB0byB0aGUgZGVmZXJyZWRXb3JrVGltZXIsIHdoaWNoIG5v
cm1hbGx5IGV4cGVjdHMgdGFza3MgdG8gb25seSBiZSBwb3N0ZWQgYnkgdGhlIEFQSSBsb2NrIGhv
bGRlci4KLSAgICBpZiAodm0ubV9maW5hbGl6YXRpb25SZWdpc3RyeVNwYWNlKQotICAgICAgICBm
aW5hbGl6ZU1hcmtlZFVuY29uZGl0aW9uYWxGaW5hbGl6ZXJzPEpTRmluYWxpemF0aW9uUmVnaXN0
cnk+KCp2bS5tX2ZpbmFsaXphdGlvblJlZ2lzdHJ5U3BhY2UpOworICAgIGlmIChtX2ZpbmFsaXph
dGlvblJlZ2lzdHJ5U3BhY2UpCisgICAgICAgIGZpbmFsaXplTWFya2VkVW5jb25kaXRpb25hbEZp
bmFsaXplcnM8SlNGaW5hbGl6YXRpb25SZWdpc3RyeT4oKm1fZmluYWxpemF0aW9uUmVnaXN0cnlT
cGFjZSk7CiAKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCi0gICAgaWYgKHZtLm1fd2ViQXNzZW1i
bHlDb2RlQmxvY2tTcGFjZSkKLSAgICAgICAgZmluYWxpemVNYXJrZWRVbmNvbmRpdGlvbmFsRmlu
YWxpemVyczxKU1dlYkFzc2VtYmx5Q29kZUJsb2NrPigqdm0ubV93ZWJBc3NlbWJseUNvZGVCbG9j
a1NwYWNlKTsKKyAgICBpZiAobV93ZWJBc3NlbWJseUNvZGVCbG9ja1NwYWNlKQorICAgICAgICBm
aW5hbGl6ZU1hcmtlZFVuY29uZGl0aW9uYWxGaW5hbGl6ZXJzPEpTV2ViQXNzZW1ibHlDb2RlQmxv
Y2s+KCptX3dlYkFzc2VtYmx5Q29kZUJsb2NrU3BhY2UpOwogI2VuZGlmCiB9CiAKQEAgLTkwNSw3
ICsxMTA4LDcgQEAgdm9pZCBIZWFwOjpkZWxldGVBbGxDb2RlQmxvY2tzKERlbGV0ZUFsbAogCiAg
ICAgY29tcGxldGVBbGxKSVRQbGFucygpOwogCi0gICAgdm0uZm9yRWFjaFNjcmlwdEV4ZWN1dGFi
bGVTcGFjZSgKKyAgICBmb3JFYWNoU2NyaXB0RXhlY3V0YWJsZVNwYWNlKAogICAgICAgICBbJl0g
KGF1dG8mIHNwYWNlQW5kU2V0KSB7CiAgICAgICAgICAgICBIZWFwSXRlcmF0aW9uU2NvcGUgaGVh
cEl0ZXJhdGlvblNjb3BlKCp0aGlzKTsKICAgICAgICAgICAgIGF1dG8mIHNldCA9IHNwYWNlQW5k
U2V0LnNldDsKQEAgLTkyNCw4ICsxMTI3LDggQEAgdm9pZCBIZWFwOjpkZWxldGVBbGxDb2RlQmxv
Y2tzKERlbGV0ZUFsbAogICAgICAgICAvLyBwb2ludHMgaW50byBhIENvZGVCbG9jayB0aGF0IGNv
dWxkIGJlIGRlYWQuIFRoZSBJQyB3aWxsIHN0aWxsIHN1Y2NlZWQgYmVjYXVzZQogICAgICAgICAv
LyBpdCB1c2VzIGEgY2FsbGVlIGNoZWNrLCBidXQgdGhlbiBpdCB3aWxsIGNhbGwgaW50byBkZWFk
IGNvZGUuCiAgICAgICAgIEhlYXBJdGVyYXRpb25TY29wZSBoZWFwSXRlcmF0aW9uU2NvcGUoKnRo
aXMpOwotICAgICAgICBpZiAodm0ubV93ZWJBc3NlbWJseUNvZGVCbG9ja1NwYWNlKSB7Ci0gICAg
ICAgICAgICB2bS5tX3dlYkFzc2VtYmx5Q29kZUJsb2NrU3BhY2UtPmZvckVhY2hMaXZlQ2VsbChb
Jl0gKEhlYXBDZWxsKiBjZWxsLCBIZWFwQ2VsbDo6S2luZCBraW5kKSB7CisgICAgICAgIGlmICht
X3dlYkFzc2VtYmx5Q29kZUJsb2NrU3BhY2UpIHsKKyAgICAgICAgICAgIG1fd2ViQXNzZW1ibHlD
b2RlQmxvY2tTcGFjZS0+Zm9yRWFjaExpdmVDZWxsKFsmXSAoSGVhcENlbGwqIGNlbGwsIEhlYXBD
ZWxsOjpLaW5kIGtpbmQpIHsKICAgICAgICAgICAgICAgICBBU1NFUlRfVU5VU0VEKGtpbmQsIGtp
bmQgPT0gSGVhcENlbGw6OkpTQ2VsbCk7CiAgICAgICAgICAgICAgICAgSlNXZWJBc3NlbWJseUNv
ZGVCbG9jayogY29kZUJsb2NrID0gc3RhdGljX2Nhc3Q8SlNXZWJBc3NlbWJseUNvZGVCbG9jayo+
KGNlbGwpOwogICAgICAgICAgICAgICAgIGNvZGVCbG9jay0+Y2xlYXJKU0NhbGxJQ3Modm0pOwpA
QCAtOTQ2LDcgKzExNDksNyBAQCB2b2lkIEhlYXA6OmRlbGV0ZUFsbFVubGlua2VkQ29kZUJsb2Nr
cyhECiAgICAgUkVMRUFTRV9BU1NFUlQoIW1fY29sbGVjdGlvblNjb3BlKTsKIAogICAgIEhlYXBJ
dGVyYXRpb25TY29wZSBoZWFwSXRlcmF0aW9uU2NvcGUoKnRoaXMpOwotICAgIHZtLnVubGlua2Vk
RnVuY3Rpb25FeGVjdXRhYmxlU3BhY2Uuc2V0LmZvckVhY2hMaXZlQ2VsbCgKKyAgICB1bmxpbmtl
ZEZ1bmN0aW9uRXhlY3V0YWJsZVNwYWNlLnNldC5mb3JFYWNoTGl2ZUNlbGwoCiAgICAgICAgIFsm
XSAoSGVhcENlbGwqIGNlbGwsIEhlYXBDZWxsOjpLaW5kKSB7CiAgICAgICAgICAgICBVbmxpbmtl
ZEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSA9IHN0YXRpY19jYXN0PFVubGlua2VkRnVu
Y3Rpb25FeGVjdXRhYmxlKj4oY2VsbCk7CiAgICAgICAgICAgICBleGVjdXRhYmxlLT5jbGVhckNv
ZGUodm0pOwpAQCAtOTU1LDEwICsxMTU4LDEwIEBAIHZvaWQgSGVhcDo6ZGVsZXRlQWxsVW5saW5r
ZWRDb2RlQmxvY2tzKEQKIAogdm9pZCBIZWFwOjpkZWxldGVVbm1hcmtlZENvbXBpbGVkQ29kZSgp
CiB7Ci0gICAgdm0oKS5mb3JFYWNoU2NyaXB0RXhlY3V0YWJsZVNwYWNlKFtdIChhdXRvJiBzcGFj
ZSkgeyBzcGFjZS5zcGFjZS5zd2VlcCgpOyB9KTsKKyAgICBmb3JFYWNoU2NyaXB0RXhlY3V0YWJs
ZVNwYWNlKFtdIChhdXRvJiBzcGFjZSkgeyBzcGFjZS5zcGFjZS5zd2VlcDMoKTsgfSk7CiAgICAg
Ly8gU3dlZXBpbmcgbXVzdCBvY2N1ciBiZWZvcmUgZGVsZXRpbmcgc3R1YnMsIG90aGVyd2lzZSB0
aGUgc3R1YnMgbWlnaHQgc3RpbGwgdGhpbmsgdGhleSdyZSBhbGl2ZSBhcyB0aGV5IGdldCBkZWxl
dGVkLgogICAgIC8vIEFuZCBDb2RlQmxvY2sgZGVzdHJ1Y3RvciBpcyBhc3N1bWluZyB0aGF0IENv
ZGVCbG9jayBnZXRzIGRlc3Ryb3llZCBiZWZvcmUgVW5saW5rZWRDb2RlQmxvY2sgZ2V0cyBkZXN0
cm95ZWQuCi0gICAgdm0oKS5mb3JFYWNoQ29kZUJsb2NrU3BhY2UoW10gKGF1dG8mIHNwYWNlKSB7
IHNwYWNlLnNwYWNlLnN3ZWVwKCk7IH0pOworICAgIGZvckVhY2hDb2RlQmxvY2tTcGFjZShbXSAo
YXV0byYgc3BhY2UpIHsgc3BhY2Uuc3BhY2Uuc3dlZXAzKCk7IH0pOwogICAgIG1faml0U3R1YlJv
dXRpbmVzLT5kZWxldGVVbm1hcmtlZEpldHRpc29uZWRTdHViUm91dGluZXMoKTsKIH0KIApAQCAt
MjEwMyw4ICsyMzA2LDggQEAgdm9pZCBIZWFwOjpzd2VlcEluRmluYWxpemUoKQogICAgIG1fb2Jq
ZWN0U3BhY2Uuc3dlZXBQcmVjaXNlQWxsb2NhdGlvbnMoKTsKICNpZiBFTkFCTEUoV0VCQVNTRU1C
TFkpCiAgICAgLy8gV2UgaG9sZCBvbnRvIGEgbG90IG9mIG1lbW9yeSwgc28gaXQgbWFrZXMgYSBs
b3Qgb2Ygc2Vuc2UgdG8gYmUgc3dlcHQgZWFnZXJseS4KLSAgICBpZiAodm0oKS5tX3dlYkFzc2Vt
Ymx5TWVtb3J5U3BhY2UpCi0gICAgICAgIHZtKCkubV93ZWJBc3NlbWJseU1lbW9yeVNwYWNlLT5z
d2VlcCgpOworICAgIGlmIChtX3dlYkFzc2VtYmx5TWVtb3J5U3BhY2UpCisgICAgICAgIG1fd2Vi
QXNzZW1ibHlNZW1vcnlTcGFjZS0+c3dlZXAzKCk7CiAjZW5kaWYKIH0KIApAQCAtMjgwNSw3ICsz
MDA4LDcgQEAgdm9pZCBIZWFwOjphZGRDb3JlQ29uc3RyYWludHMoKQogICAgICAgICAiTyIsICJP
dXRwdXQiLAogICAgICAgICBNQUtFX01BUktJTkdfQ09OU1RSQUlOVF9FWEVDVVRPUl9QQUlSKChb
XSAoYXV0byYgdmlzaXRvcikgewogICAgICAgICAgICAgdXNpbmcgVmlzaXRvciA9IGRlY2x0eXBl
KHZpc2l0b3IpOwotICAgICAgICAgICAgVk0mIHZtID0gdmlzaXRvci52bSgpOworICAgICAgICAg
ICAgSGVhcCogaGVhcCA9IHZpc2l0b3IuaGVhcCgpOwogCiAgICAgICAgICAgICAvLyBUaGUgYHZp
c2l0b3IyYCBhcmd1bWVudCBpcyBzdHJhbmdlbHkgbmFtZWQgYmVjYXVzZSB0aGUgV2luQ2Fpcm8g
cG9ydAogICAgICAgICAgICAgLy8gZ2V0cyBjb25mdXNlZCAgYW5kIHRoaW5rcyB3ZSdyZSB0cnlp
bmcgdG8gY2FwdHVyZSB0aGUgb3V0ZXIgdmlzaXRvcgpAQCAtMjgyNCwxMSArMzAyNywxMSBAQCB2
b2lkIEhlYXA6OmFkZENvcmVDb25zdHJhaW50cygpCiAKICAgICAgICAgICAgIHsKICAgICAgICAg
ICAgICAgICBTZXRSb290TWFya1JlYXNvblNjb3BlIHJvb3RTY29wZSh2aXNpdG9yLCBSb290TWFy
a1JlYXNvbjo6RXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZXMpOwotICAgICAgICAgICAgICAgIGFk
ZCh2bS5leGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlc1dpdGhDb25zdHJhaW50cyk7CisgICAgICAg
ICAgICAgICAgYWRkKGhlYXAtPmV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2VzV2l0aENvbnN0cmFp
bnRzKTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmICh2bS5tX3dlYWtNYXBTcGFjZSkg
eworICAgICAgICAgICAgaWYgKGhlYXAtPm1fd2Vha01hcFNwYWNlKSB7CiAgICAgICAgICAgICAg
ICAgU2V0Um9vdE1hcmtSZWFzb25TY29wZSByb290U2NvcGUodmlzaXRvciwgUm9vdE1hcmtSZWFz
b246OldlYWtNYXBTcGFjZSk7Ci0gICAgICAgICAgICAgICAgYWRkKCp2bS5tX3dlYWtNYXBTcGFj
ZSk7CisgICAgICAgICAgICAgICAgYWRkKCpoZWFwLT5tX3dlYWtNYXBTcGFjZSk7CiAgICAgICAg
ICAgICB9CiAgICAgICAgIH0pKSwKICAgICAgICAgQ29uc3RyYWludFZvbGF0aWxpdHk6OkdyZXll
ZEJ5TWFya2luZywKQEAgLTMwNjIsNCArMzI2NSwxMzUgQEAgdm9pZCBIZWFwOjp2ZXJpZnlHQygp
CiAgICAgbV92ZXJpZmllclNsb3RWaXNpdG9yID0gbnVsbHB0cjsKIH0KIAorI2RlZmluZSBEWU5B
TUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1cobmFtZSwgaGVhcENlbGxUeXBlLCB0
eXBlKSBcCisgICAgSXNvU3Vic3BhY2UqIEhlYXA6Om5hbWUjI1Nsb3coKSBcCisgICAgeyBcCisg
ICAgICAgIEFTU0VSVCghbV8jI25hbWUpOyBcCisgICAgICAgIGF1dG8gc3BhY2UgPSBtYWtlVW5p
cXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCgqdGhpcywgaGVhcENlbGxUeXBlLCB0
eXBlKTsgXAorICAgICAgICBXVEY6OnN0b3JlU3RvcmVGZW5jZSgpOyBcCisgICAgICAgIG1fIyNu
YW1lID0gV1RGTW92ZShzcGFjZSk7IFwKKyAgICAgICAgcmV0dXJuIG1fIyNuYW1lLmdldCgpOyBc
CisgICAgfQorCisKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhhcGlH
bG9iYWxPYmplY3RTcGFjZSwgYXBpR2xvYmFsT2JqZWN0SGVhcENlbGxUeXBlLCBKU0FQSUdsb2Jh
bE9iamVjdCkKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhhcGlWYWx1
ZVdyYXBwZXJTcGFjZSwgY2VsbEhlYXBDZWxsVHlwZSwgSlNBUElWYWx1ZVdyYXBwZXIpCitEWU5B
TUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coYXJyYXlCdWZmZXJTcGFjZSwgY2Vs
bEhlYXBDZWxsVHlwZSwgSlNBcnJheUJ1ZmZlcikKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklO
RV9NRU1CRVJfU0xPVyhhcnJheUl0ZXJhdG9yU3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUsIEpTQXJy
YXlJdGVyYXRvcikKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhhc3lu
Y0dlbmVyYXRvclNwYWNlLCBjZWxsSGVhcENlbGxUeXBlLCBKU0FzeW5jR2VuZXJhdG9yKQorRFlO
QU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGJpZ0ludDY0QXJyYXlTcGFjZSwg
Y2VsbEhlYXBDZWxsVHlwZSwgSlNCaWdJbnQ2NEFycmF5KQorRFlOQU1JQ19JU09fU1VCU1BBQ0Vf
REVGSU5FX01FTUJFUl9TTE9XKGJpZ0ludE9iamVjdFNwYWNlLCBjZWxsSGVhcENlbGxUeXBlLCBC
aWdJbnRPYmplY3QpCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coYmln
VWludDY0QXJyYXlTcGFjZSwgY2VsbEhlYXBDZWxsVHlwZSwgSlNCaWdVaW50NjRBcnJheSkKK0RZ
TkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhib29sZWFuT2JqZWN0U3BhY2Us
IGNlbGxIZWFwQ2VsbFR5cGUsIEJvb2xlYW5PYmplY3QpCitEWU5BTUlDX0lTT19TVUJTUEFDRV9E
RUZJTkVfTUVNQkVSX1NMT1coYm91bmRGdW5jdGlvblNwYWNlLCBjZWxsSGVhcENlbGxUeXBlLCBK
U0JvdW5kRnVuY3Rpb24pIC8vIEhhc2g6MHhkNzkxNmQ0MQorRFlOQU1JQ19JU09fU1VCU1BBQ0Vf
REVGSU5FX01FTUJFUl9TTE9XKGNhbGxiYWNrQ29uc3RydWN0b3JTcGFjZSwgY2FsbGJhY2tDb25z
dHJ1Y3RvckhlYXBDZWxsVHlwZSwgSlNDYWxsYmFja0NvbnN0cnVjdG9yKQorRFlOQU1JQ19JU09f
U1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGNhbGxiYWNrR2xvYmFsT2JqZWN0U3BhY2UsIGNh
bGxiYWNrR2xvYmFsT2JqZWN0SGVhcENlbGxUeXBlLCBKU0NhbGxiYWNrT2JqZWN0PEpTR2xvYmFs
T2JqZWN0PikKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhjYWxsYmFj
a0Z1bmN0aW9uU3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUsIEpTQ2FsbGJhY2tGdW5jdGlvbikgLy8g
SGFzaDoweGU3NjQ4ZWJjCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1co
Y2FsbGJhY2tPYmplY3RTcGFjZSwgY2FsbGJhY2tPYmplY3RIZWFwQ2VsbFR5cGUsIEpTQ2FsbGJh
Y2tPYmplY3Q8SlNOb25GaW5hbE9iamVjdD4pCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVf
TUVNQkVSX1NMT1coY3VzdG9tR2V0dGVyRnVuY3Rpb25TcGFjZSwgY3VzdG9tR2V0dGVyRnVuY3Rp
b25IZWFwQ2VsbFR5cGUsIEpTQ3VzdG9tR2V0dGVyRnVuY3Rpb24pCitEWU5BTUlDX0lTT19TVUJT
UEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coY3VzdG9tU2V0dGVyRnVuY3Rpb25TcGFjZSwgY3VzdG9t
U2V0dGVyRnVuY3Rpb25IZWFwQ2VsbFR5cGUsIEpTQ3VzdG9tU2V0dGVyRnVuY3Rpb24pCitEWU5B
TUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coZGF0YVZpZXdTcGFjZSwgY2VsbEhl
YXBDZWxsVHlwZSwgSlNEYXRhVmlldykKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1C
RVJfU0xPVyhkZWJ1Z2dlclNjb3BlU3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUsIERlYnVnZ2VyU2Nv
cGUpCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coZXJyb3JJbnN0YW5j
ZVNwYWNlLCBlcnJvckluc3RhbmNlSGVhcENlbGxUeXBlLCBFcnJvckluc3RhbmNlKSAvLyBIYXNo
OjB4M2Y0MGQ0YQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGZsb2F0
MzJBcnJheVNwYWNlLCBjZWxsSGVhcENlbGxUeXBlLCBKU0Zsb2F0MzJBcnJheSkKK0RZTkFNSUNf
SVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhmbG9hdDY0QXJyYXlTcGFjZSwgY2VsbEhl
YXBDZWxsVHlwZSwgSlNGbG9hdDY0QXJyYXkpCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVf
TUVNQkVSX1NMT1coZnVuY3Rpb25SYXJlRGF0YVNwYWNlLCBkZXN0cnVjdGlibGVDZWxsSGVhcENl
bGxUeXBlLCBGdW5jdGlvblJhcmVEYXRhKQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01F
TUJFUl9TTE9XKGdlbmVyYXRvclNwYWNlLCBjZWxsSGVhcENlbGxUeXBlLCBKU0dlbmVyYXRvcikK
K0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhnbG9iYWxPYmplY3RTcGFj
ZSwgZ2xvYmFsT2JqZWN0SGVhcENlbGxUeXBlLCBKU0dsb2JhbE9iamVjdCkKK0RZTkFNSUNfSVNP
X1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhpbmplY3RlZFNjcmlwdEhvc3RTcGFjZSwgaW5q
ZWN0ZWRTY3JpcHRIb3N0U3BhY2VIZWFwQ2VsbFR5cGUsIEluc3BlY3Rvcjo6SlNJbmplY3RlZFNj
cmlwdEhvc3QpCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coaW50OEFy
cmF5U3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUsIEpTSW50OEFycmF5KQorRFlOQU1JQ19JU09fU1VC
U1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGludDE2QXJyYXlTcGFjZSwgY2VsbEhlYXBDZWxsVHlw
ZSwgSlNJbnQxNkFycmF5KQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9X
KGludDMyQXJyYXlTcGFjZSwgY2VsbEhlYXBDZWxsVHlwZSwgSlNJbnQzMkFycmF5KQorRFlOQU1J
Q19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGphdmFTY3JpcHRDYWxsRnJhbWVTcGFj
ZSwgamF2YVNjcmlwdENhbGxGcmFtZUhlYXBDZWxsVHlwZSwgSW5zcGVjdG9yOjpKU0phdmFTY3Jp
cHRDYWxsRnJhbWUpCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coanNN
b2R1bGVSZWNvcmRTcGFjZSwganNNb2R1bGVSZWNvcmRIZWFwQ2VsbFR5cGUsIEpTTW9kdWxlUmVj
b3JkKQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKG1hcEJ1Y2tldFNw
YWNlLCBjZWxsSGVhcENlbGxUeXBlLCBKU01hcDo6QnVja2V0VHlwZSkKK0RZTkFNSUNfSVNPX1NV
QlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhtYXBJdGVyYXRvclNwYWNlLCBjZWxsSGVhcENlbGxU
eXBlLCBKU01hcEl0ZXJhdG9yKQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9T
TE9XKG1hcFNwYWNlLCBjZWxsSGVhcENlbGxUeXBlLCBKU01hcCkKK0RZTkFNSUNfSVNPX1NVQlNQ
QUNFX0RFRklORV9NRU1CRVJfU0xPVyhtb2R1bGVOYW1lc3BhY2VPYmplY3RTcGFjZSwgbW9kdWxl
TmFtZXNwYWNlT2JqZWN0SGVhcENlbGxUeXBlLCBKU01vZHVsZU5hbWVzcGFjZU9iamVjdCkKK0RZ
TkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhuYXRpdmVTdGRGdW5jdGlvblNw
YWNlLCBuYXRpdmVTdGRGdW5jdGlvbkhlYXBDZWxsVHlwZSwgSlNOYXRpdmVTdGRGdW5jdGlvbikg
Ly8gSGFzaDoweDcwZWQ2MWU0CitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NM
T1cocHJveHlPYmplY3RTcGFjZSwgY2VsbEhlYXBDZWxsVHlwZSwgUHJveHlPYmplY3QpCitEWU5B
TUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1cocHJveHlSZXZva2VTcGFjZSwgY2Vs
bEhlYXBDZWxsVHlwZSwgUHJveHlSZXZva2UpIC8vIEhhc2g6MHhiNTA2YTkzOQorRFlOQU1JQ19J
U09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHNjb3BlZEFyZ3VtZW50c1RhYmxlU3BhY2Us
IGRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUsIFNjb3BlZEFyZ3VtZW50c1RhYmxlKQorRFlO
QU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHNjcmlwdEZldGNoUGFyYW1ldGVy
c1NwYWNlLCBkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlLCBKU1NjcmlwdEZldGNoUGFyYW1l
dGVycykKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhzY3JpcHRGZXRj
aGVyU3BhY2UsIGRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUsIEpTU2NyaXB0RmV0Y2hlcikK
K0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhzZXRCdWNrZXRTcGFjZSwg
Y2VsbEhlYXBDZWxsVHlwZSwgSlNTZXQ6OkJ1Y2tldFR5cGUpCitEWU5BTUlDX0lTT19TVUJTUEFD
RV9ERUZJTkVfTUVNQkVSX1NMT1coc2V0SXRlcmF0b3JTcGFjZSwgY2VsbEhlYXBDZWxsVHlwZSwg
SlNTZXRJdGVyYXRvcikKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhz
ZXRTcGFjZSwgY2VsbEhlYXBDZWxsVHlwZSwgSlNTZXQpCitEWU5BTUlDX0lTT19TVUJTUEFDRV9E
RUZJTkVfTUVNQkVSX1NMT1coc2hhZG93UmVhbG1TcGFjZSwgY2VsbEhlYXBDZWxsVHlwZSwgU2hh
ZG93UmVhbG1PYmplY3QpCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1co
c3RyaWN0RXZhbEFjdGl2YXRpb25TcGFjZSwgY2VsbEhlYXBDZWxsVHlwZSwgU3RyaWN0RXZhbEFj
dGl2YXRpb24pCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coc3RyaW5n
SXRlcmF0b3JTcGFjZSwgY2VsbEhlYXBDZWxsVHlwZSwgSlNTdHJpbmdJdGVyYXRvcikKK0RZTkFN
SUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhzb3VyY2VDb2RlU3BhY2UsIGRlc3Ry
dWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUsIEpTU291cmNlQ29kZSkKK0RZTkFNSUNfSVNPX1NVQlNQ
QUNFX0RFRklORV9NRU1CRVJfU0xPVyhzeW1ib2xTcGFjZSwgZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBD
ZWxsVHlwZSwgU3ltYm9sKQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9X
KHN5bWJvbE9iamVjdFNwYWNlLCBjZWxsSGVhcENlbGxUeXBlLCBTeW1ib2xPYmplY3QpCitEWU5B
TUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1codGVtcGxhdGVPYmplY3REZXNjcmlw
dG9yU3BhY2UsIGRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUsIEpTVGVtcGxhdGVPYmplY3RE
ZXNjcmlwdG9yKQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHRlbXBv
cmFsQ2FsZW5kYXJTcGFjZSwgY2VsbEhlYXBDZWxsVHlwZSwgVGVtcG9yYWxDYWxlbmRhcikKK0RZ
TkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh0ZW1wb3JhbER1cmF0aW9uU3Bh
Y2UsIGNlbGxIZWFwQ2VsbFR5cGUsIFRlbXBvcmFsRHVyYXRpb24pCitEWU5BTUlDX0lTT19TVUJT
UEFDRV9ERUZJTkVfTUVNQkVSX1NMT1codGVtcG9yYWxJbnN0YW50U3BhY2UsIGNlbGxIZWFwQ2Vs
bFR5cGUsIFRlbXBvcmFsSW5zdGFudCkKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1C
RVJfU0xPVyh0ZW1wb3JhbFBsYWluVGltZVNwYWNlLCBjZWxsSGVhcENlbGxUeXBlLCBUZW1wb3Jh
bFBsYWluVGltZSkKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh0ZW1w
b3JhbFRpbWVab25lU3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUsIFRlbXBvcmFsVGltZVpvbmUpCitE
WU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1codWludDhBcnJheVNwYWNlLCBj
ZWxsSGVhcENlbGxUeXBlLCBKU1VpbnQ4QXJyYXkpCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJ
TkVfTUVNQkVSX1NMT1codWludDhDbGFtcGVkQXJyYXlTcGFjZSwgY2VsbEhlYXBDZWxsVHlwZSwg
SlNVaW50OENsYW1wZWRBcnJheSkKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJf
U0xPVyh1aW50MTZBcnJheVNwYWNlLCBjZWxsSGVhcENlbGxUeXBlLCBKU1VpbnQxNkFycmF5KQor
RFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHVpbnQzMkFycmF5U3BhY2Us
IGNlbGxIZWFwQ2VsbFR5cGUsIEpTVWludDMyQXJyYXkpCitEWU5BTUlDX0lTT19TVUJTUEFDRV9E
RUZJTkVfTUVNQkVSX1NMT1codW5saW5rZWRFdmFsQ29kZUJsb2NrU3BhY2UsIGRlc3RydWN0aWJs
ZUNlbGxIZWFwQ2VsbFR5cGUsIFVubGlua2VkRXZhbENvZGVCbG9jaykKK0RZTkFNSUNfSVNPX1NV
QlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh1bmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrU3BhY2Us
IGRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUsIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sp
CitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1codW5saW5rZWRNb2R1bGVQ
cm9ncmFtQ29kZUJsb2NrU3BhY2UsIGRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUsIFVubGlu
a2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jaykKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9N
RU1CRVJfU0xPVyh1bmxpbmtlZFByb2dyYW1Db2RlQmxvY2tTcGFjZSwgZGVzdHJ1Y3RpYmxlQ2Vs
bEhlYXBDZWxsVHlwZSwgVW5saW5rZWRQcm9ncmFtQ29kZUJsb2NrKQorRFlOQU1JQ19JU09fU1VC
U1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHdlYWtNYXBTcGFjZSwgd2Vha01hcEhlYXBDZWxsVHlw
ZSwgSlNXZWFrTWFwKSAvLyBIYXNoOjB4NjYyYjEyYTMKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RF
RklORV9NRU1CRVJfU0xPVyh3ZWFrU2V0U3BhY2UsIHdlYWtTZXRIZWFwQ2VsbFR5cGUsIEpTV2Vh
a1NldCkgLy8gSGFzaDoweDRjNzgxYjMwCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVN
QkVSX1NMT1cod2Vha09iamVjdFJlZlNwYWNlLCBjZWxsSGVhcENlbGxUeXBlLCBKU1dlYWtPYmpl
Y3RSZWYpIC8vIEhhc2g6MHg4ZWM2OGYxZgorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01F
TUJFUl9TTE9XKHdpdGhTY29wZVNwYWNlLCBjZWxsSGVhcENlbGxUeXBlLCBKU1dpdGhTY29wZSkK
K0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhmaW5hbGl6YXRpb25SZWdp
c3RyeVNwYWNlLCBmaW5hbGl6YXRpb25SZWdpc3RyeUNlbGxUeXBlLCBKU0ZpbmFsaXphdGlvblJl
Z2lzdHJ5KQorI2lmIEpTQ19PQkpDX0FQSV9FTkFCTEVECitEWU5BTUlDX0lTT19TVUJTUEFDRV9E
RUZJTkVfTUVNQkVSX1NMT1coYXBpV3JhcHBlck9iamVjdFNwYWNlLCBhcGlXcmFwcGVyT2JqZWN0
SGVhcENlbGxUeXBlLCBKU0NhbGxiYWNrT2JqZWN0PEpTQVBJV3JhcHBlck9iamVjdD4pCitEWU5B
TUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1cob2JqQ0NhbGxiYWNrRnVuY3Rpb25T
cGFjZSwgb2JqQ0NhbGxiYWNrRnVuY3Rpb25IZWFwQ2VsbFR5cGUsIE9iakNDYWxsYmFja0Z1bmN0
aW9uKSAvLyBIYXNoOjB4MTBmNjEwYjgKKyNlbmRpZgorI2lmZGVmIEpTQ19HTElCX0FQSV9FTkFC
TEVECitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coYXBpV3JhcHBlck9i
amVjdFNwYWNlLCBhcGlXcmFwcGVyT2JqZWN0SGVhcENlbGxUeXBlLCBKU0NhbGxiYWNrT2JqZWN0
PEpTQVBJV3JhcHBlck9iamVjdD4pCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVS
X1NMT1coanNjQ2FsbGJhY2tGdW5jdGlvblNwYWNlLCBqc2NDYWxsYmFja0Z1bmN0aW9uSGVhcENl
bGxUeXBlLCBKU0NDYWxsYmFja0Z1bmN0aW9uKQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5F
X01FTUJFUl9TTE9XKGNhbGxiYWNrQVBJV3JhcHBlckdsb2JhbE9iamVjdFNwYWNlLCBjYWxsYmFj
a0FQSVdyYXBwZXJHbG9iYWxPYmplY3RIZWFwQ2VsbFR5cGUsIEpTQ2FsbGJhY2tPYmplY3Q8SlNB
UElXcmFwcGVyR2xvYmFsT2JqZWN0PikKKyNlbmRpZgorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVG
SU5FX01FTUJFUl9TTE9XKGludGxDb2xsYXRvclNwYWNlLCBpbnRsQ29sbGF0b3JIZWFwQ2VsbFR5
cGUsIEludGxDb2xsYXRvcikKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xP
VyhpbnRsRGF0ZVRpbWVGb3JtYXRTcGFjZSwgaW50bERhdGVUaW1lRm9ybWF0SGVhcENlbGxUeXBl
LCBJbnRsRGF0ZVRpbWVGb3JtYXQpCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVS
X1NMT1coaW50bERpc3BsYXlOYW1lc1NwYWNlLCBpbnRsRGlzcGxheU5hbWVzSGVhcENlbGxUeXBl
LCBJbnRsRGlzcGxheU5hbWVzKQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9T
TE9XKGludGxMaXN0Rm9ybWF0U3BhY2UsIGludGxMaXN0Rm9ybWF0SGVhcENlbGxUeXBlLCBJbnRs
TGlzdEZvcm1hdCkKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhpbnRs
TG9jYWxlU3BhY2UsIGludGxMb2NhbGVIZWFwQ2VsbFR5cGUsIEludGxMb2NhbGUpCitEWU5BTUlD
X0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coaW50bE51bWJlckZvcm1hdFNwYWNlLCBp
bnRsTnVtYmVyRm9ybWF0SGVhcENlbGxUeXBlLCBJbnRsTnVtYmVyRm9ybWF0KQorRFlOQU1JQ19J
U09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGludGxQbHVyYWxSdWxlc1NwYWNlLCBpbnRs
UGx1cmFsUnVsZXNIZWFwQ2VsbFR5cGUsIEludGxQbHVyYWxSdWxlcykKK0RZTkFNSUNfSVNPX1NV
QlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhpbnRsUmVsYXRpdmVUaW1lRm9ybWF0U3BhY2UsIGlu
dGxSZWxhdGl2ZVRpbWVGb3JtYXRIZWFwQ2VsbFR5cGUsIEludGxSZWxhdGl2ZVRpbWVGb3JtYXQp
CitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coaW50bFNlZ21lbnRJdGVy
YXRvclNwYWNlLCBpbnRsU2VnbWVudEl0ZXJhdG9ySGVhcENlbGxUeXBlLCBJbnRsU2VnbWVudEl0
ZXJhdG9yKQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGludGxTZWdt
ZW50ZXJTcGFjZSwgaW50bFNlZ21lbnRlckhlYXBDZWxsVHlwZSwgSW50bFNlZ21lbnRlcikKK0RZ
TkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhpbnRsU2VnbWVudHNTcGFjZSwg
aW50bFNlZ21lbnRzSGVhcENlbGxUeXBlLCBJbnRsU2VnbWVudHMpCisjaWYgRU5BQkxFKFdFQkFT
U0VNQkxZKQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGpzVG9XYXNt
SUNDYWxsZWVTcGFjZSwgY2VsbEhlYXBDZWxsVHlwZSwgSlNUb1dhc21JQ0NhbGxlZSkKK0RZTkFN
SUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh3ZWJBc3NlbWJseUNvZGVCbG9ja1Nw
YWNlLCB3ZWJBc3NlbWJseUNvZGVCbG9ja0hlYXBDZWxsVHlwZSwgSlNXZWJBc3NlbWJseUNvZGVC
bG9jaykgLy8gSGFzaDoweDlhZDk5NWNkCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVN
QkVSX1NMT1cod2ViQXNzZW1ibHlFeGNlcHRpb25TcGFjZSwgd2ViQXNzZW1ibHlFeGNlcHRpb25I
ZWFwQ2VsbFR5cGUsIEpTV2ViQXNzZW1ibHlFeGNlcHRpb24pCitEWU5BTUlDX0lTT19TVUJTUEFD
RV9ERUZJTkVfTUVNQkVSX1NMT1cod2ViQXNzZW1ibHlGdW5jdGlvblNwYWNlLCB3ZWJBc3NlbWJs
eUZ1bmN0aW9uSGVhcENlbGxUeXBlLCBXZWJBc3NlbWJseUZ1bmN0aW9uKSAvLyBIYXNoOjB4OGI3
YzMyZGIKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh3ZWJBc3NlbWJs
eUdsb2JhbFNwYWNlLCB3ZWJBc3NlbWJseUdsb2JhbEhlYXBDZWxsVHlwZSwgSlNXZWJBc3NlbWJs
eUdsb2JhbCkKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh3ZWJBc3Nl
bWJseUluc3RhbmNlU3BhY2UsIHdlYkFzc2VtYmx5SW5zdGFuY2VIZWFwQ2VsbFR5cGUsIEpTV2Vi
QXNzZW1ibHlJbnN0YW5jZSkKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xP
Vyh3ZWJBc3NlbWJseU1lbW9yeVNwYWNlLCB3ZWJBc3NlbWJseU1lbW9yeUhlYXBDZWxsVHlwZSwg
SlNXZWJBc3NlbWJseU1lbW9yeSkKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJf
U0xPVyh3ZWJBc3NlbWJseU1vZHVsZVNwYWNlLCB3ZWJBc3NlbWJseU1vZHVsZUhlYXBDZWxsVHlw
ZSwgSlNXZWJBc3NlbWJseU1vZHVsZSkKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1C
RVJfU0xPVyh3ZWJBc3NlbWJseU1vZHVsZVJlY29yZFNwYWNlLCB3ZWJBc3NlbWJseU1vZHVsZVJl
Y29yZEhlYXBDZWxsVHlwZSwgV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQpCitEWU5BTUlDX0lTT19T
VUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1cod2ViQXNzZW1ibHlUYWJsZVNwYWNlLCB3ZWJBc3Nl
bWJseVRhYmxlSGVhcENlbGxUeXBlLCBKU1dlYkFzc2VtYmx5VGFibGUpCitEWU5BTUlDX0lTT19T
VUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1cod2ViQXNzZW1ibHlUYWdTcGFjZSwgd2ViQXNzZW1i
bHlUYWdIZWFwQ2VsbFR5cGUsIEpTV2ViQXNzZW1ibHlUYWcpCitEWU5BTUlDX0lTT19TVUJTUEFD
RV9ERUZJTkVfTUVNQkVSX1NMT1cod2ViQXNzZW1ibHlXcmFwcGVyRnVuY3Rpb25TcGFjZSwgY2Vs
bEhlYXBDZWxsVHlwZSwgV2ViQXNzZW1ibHlXcmFwcGVyRnVuY3Rpb24pIC8vIEhhc2g6MHhkNGE1
ZmYwMQorI2VuZGlmCisKKyN1bmRlZiBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVS
X1NMT1cKKworI2RlZmluZSBEWU5BTUlDX1NQQUNFX0FORF9TRVRfREVGSU5FX01FTUJFUl9TTE9X
KG5hbWUsIGhlYXBDZWxsVHlwZSwgdHlwZSkgXAorICAgIElzb1N1YnNwYWNlKiBIZWFwOjpuYW1l
IyNTbG93KCkgXAorICAgIHsgXAorICAgICAgICBBU1NFUlQoIW1fIyNuYW1lKTsgXAorICAgICAg
ICBhdXRvIHNwYWNlID0gbWFrZVVuaXF1ZTxTcGFjZUFuZFNldD4gSVNPX1NVQlNQQUNFX0lOSVQo
KnRoaXMsIGhlYXBDZWxsVHlwZSwgdHlwZSk7IFwKKyAgICAgICAgV1RGOjpzdG9yZVN0b3JlRmVu
Y2UoKTsgXAorICAgICAgICBtXyMjbmFtZSA9IFdURk1vdmUoc3BhY2UpOyBcCisgICAgICAgIHJl
dHVybiAmbV8jI25hbWUtPnNwYWNlOyBcCisgICAgfQorCitEWU5BTUlDX1NQQUNFX0FORF9TRVRf
REVGSU5FX01FTUJFUl9TTE9XKGV2YWxFeGVjdXRhYmxlU3BhY2UsIGRlc3RydWN0aWJsZUNlbGxI
ZWFwQ2VsbFR5cGUsIEV2YWxFeGVjdXRhYmxlKSAvLyBIYXNoOjB4OTU4ZTNlOWQKK0RZTkFNSUNf
U1BBQ0VfQU5EX1NFVF9ERUZJTkVfTUVNQkVSX1NMT1cobW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGVT
cGFjZSwgZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZSwgTW9kdWxlUHJvZ3JhbUV4ZWN1dGFi
bGUpIC8vIEhhc2g6MHg2NTA2ZmEzYworCisjdW5kZWYgRFlOQU1JQ19TUEFDRV9BTkRfU0VUX0RF
RklORV9NRU1CRVJfU0xPVworCiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL0hlYXAuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9IZWFwLmgJKHJldmlzaW9uIDI4NjA4MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL0hlYXAuaAkod29ya2luZyBjb3B5KQpAQCAtMjUsNiArMjUsNyBAQAogI2luY2x1ZGUg
IkNlbGxTdGF0ZS5oIgogI2luY2x1ZGUgIkNvbGxlY3Rpb25TY29wZS5oIgogI2luY2x1ZGUgIkNv
bGxlY3RvclBoYXNlLmgiCisjaW5jbHVkZSAiQ29tcGxldGVTdWJzcGFjZS5oIgogI2luY2x1ZGUg
IkRlbGV0ZUFsbENvZGVFZmZvcnQuaCIKICNpbmNsdWRlICJHQ0NvbmR1Y3Rvci5oIgogI2luY2x1
ZGUgIkdDSW5jb21pbmdSZWZDb3VudGVkU2V0LmgiCkBAIC0zMyw2ICszNCwxMSBAQAogI2luY2x1
ZGUgIkhhbmRsZVNldC5oIgogI2luY2x1ZGUgIkhlYXBGaW5hbGl6ZXJDYWxsYmFjay5oIgogI2lu
Y2x1ZGUgIkhlYXBPYnNlcnZlci5oIgorI2luY2x1ZGUgIklzb0NlbGxTZXQuaCIKKyNpbmNsdWRl
ICJJc29IZWFwQ2VsbFR5cGUuaCIKKyNpbmNsdWRlICJJc29JbmxpbmVkSGVhcENlbGxUeXBlLmgi
CisjaW5jbHVkZSAiSXNvU3Vic3BhY2UuaCIKKyNpbmNsdWRlICJKU0Rlc3RydWN0aWJsZU9iamVj
dEhlYXBDZWxsVHlwZS5oIgogI2luY2x1ZGUgIk1hcmtlZEJsb2NrLmgiCiAjaW5jbHVkZSAiTWFy
a2VkU3BhY2UuaCIKICNpbmNsdWRlICJNdXRhdG9yU3RhdGUuaCIKQEAgLTU4LDkgKzY0LDExIEBA
IGNsYXNzIENvbGxlY3RpbmdTY29wZTsKIGNsYXNzIENvbnNlcnZhdGl2ZVJvb3RzOwogY2xhc3Mg
R0NEZWZlcnJhbENvbnRleHQ7CiBjbGFzcyBFZGVuR0NBY3Rpdml0eUNhbGxiYWNrOworY2xhc3Mg
RmFzdE1hbGxvY0FsaWduZWRNZW1vcnlBbGxvY2F0b3I7CiBjbGFzcyBGdWxsR0NBY3Rpdml0eUNh
bGxiYWNrOwogY2xhc3MgR0NBY3Rpdml0eUNhbGxiYWNrOwogY2xhc3MgR0NBd2FyZUpJVFN0dWJS
b3V0aW5lOworY2xhc3MgR2lnYWNhZ2VBbGlnbmVkTWVtb3J5QWxsb2NhdG9yOwogY2xhc3MgSGVh
cDsKIGNsYXNzIEhlYXBQcm9maWxlcjsKIGNsYXNzIEhlYXBWZXJpZmllcjsKQEAgLTY5LDggKzc3
LDkgQEAgY2xhc3MgSklUU3R1YlJvdXRpbmU7CiBjbGFzcyBKSVRTdHViUm91dGluZVNldDsKIGNs
YXNzIEpTQ2VsbDsKIGNsYXNzIEpTSW1tdXRhYmxlQnV0dGVyZmx5OworY2xhc3MgSlNTdHJpbmc7
CiBjbGFzcyBKU1ZhbHVlOwotY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOworLy9jbGFzcyBM
TEludE9mZnNldHNFeHRyYWN0b3I7IC8vIG1sYW0KIGNsYXNzIE1hY2hpbmVUaHJlYWRzOwogY2xh
c3MgTWFya1N0YWNrQXJyYXk7CiBjbGFzcyBNYXJrU3RhY2tNZXJnaW5nQ29uc3RyYWludDsKQEAg
LTcyOSw2ICs3MzgsMzE4IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX3BhcmFsbGVsTWFya2Vyc1No
b3VsZEV4aXQgeyBmYWxzZSB9OwogICAgIExvY2sgbV9jb2xsZWN0Q29udGludW91c2x5TG9jazsK
ICAgICBDb25kaXRpb24gbV9jb2xsZWN0Q29udGludW91c2x5Q29uZGl0aW9uOworCitwdWJsaWM6
CisgICAgLy8gSGVhcENlbGxUeXBlcworICAgIEhlYXBDZWxsVHlwZSBhdXhpbGlhcnlIZWFwQ2Vs
bFR5cGU7CisgICAgSGVhcENlbGxUeXBlIGltbXV0YWJsZUJ1dHRlcmZseUhlYXBDZWxsVHlwZTsK
KyAgICBIZWFwQ2VsbFR5cGUgY2VsbEhlYXBDZWxsVHlwZTsKKyAgICBIZWFwQ2VsbFR5cGUgZGVz
dHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZTsKKyAgICBJc29IZWFwQ2VsbFR5cGUgYXBpR2xvYmFs
T2JqZWN0SGVhcENlbGxUeXBlOworICAgIElzb0hlYXBDZWxsVHlwZSBjYWxsYmFja0NvbnN0cnVj
dG9ySGVhcENlbGxUeXBlOworICAgIElzb0hlYXBDZWxsVHlwZSBjYWxsYmFja0dsb2JhbE9iamVj
dEhlYXBDZWxsVHlwZTsKKyAgICBJc29IZWFwQ2VsbFR5cGUgY2FsbGJhY2tPYmplY3RIZWFwQ2Vs
bFR5cGU7CisgICAgSXNvSGVhcENlbGxUeXBlIGN1c3RvbUdldHRlckZ1bmN0aW9uSGVhcENlbGxU
eXBlOworICAgIElzb0hlYXBDZWxsVHlwZSBjdXN0b21TZXR0ZXJGdW5jdGlvbkhlYXBDZWxsVHlw
ZTsKKyAgICBJc29IZWFwQ2VsbFR5cGUgZGF0ZUluc3RhbmNlSGVhcENlbGxUeXBlOworICAgIElz
b0hlYXBDZWxsVHlwZSBlcnJvckluc3RhbmNlSGVhcENlbGxUeXBlOworICAgIElzb0hlYXBDZWxs
VHlwZSBmaW5hbGl6YXRpb25SZWdpc3RyeUNlbGxUeXBlOworICAgIElzb0hlYXBDZWxsVHlwZSBn
bG9iYWxMZXhpY2FsRW52aXJvbm1lbnRIZWFwQ2VsbFR5cGU7CisgICAgSXNvSGVhcENlbGxUeXBl
IGdsb2JhbE9iamVjdEhlYXBDZWxsVHlwZTsKKyAgICBJc29IZWFwQ2VsbFR5cGUgaW5qZWN0ZWRT
Y3JpcHRIb3N0U3BhY2VIZWFwQ2VsbFR5cGU7CisgICAgSXNvSGVhcENlbGxUeXBlIGphdmFTY3Jp
cHRDYWxsRnJhbWVIZWFwQ2VsbFR5cGU7CisgICAgSXNvSGVhcENlbGxUeXBlIGpzTW9kdWxlUmVj
b3JkSGVhcENlbGxUeXBlOworICAgIElzb0hlYXBDZWxsVHlwZSBtb2R1bGVOYW1lc3BhY2VPYmpl
Y3RIZWFwQ2VsbFR5cGU7CisgICAgSXNvSGVhcENlbGxUeXBlIG5hdGl2ZVN0ZEZ1bmN0aW9uSGVh
cENlbGxUeXBlOworICAgIElzb0lubGluZWRIZWFwQ2VsbFR5cGU8SlNTdHJpbmc+IHN0cmluZ0hl
YXBDZWxsVHlwZTsKKyAgICBJc29IZWFwQ2VsbFR5cGUgd2Vha01hcEhlYXBDZWxsVHlwZTsKKyAg
ICBJc29IZWFwQ2VsbFR5cGUgd2Vha1NldEhlYXBDZWxsVHlwZTsKKyAgICBKU0Rlc3RydWN0aWJs
ZU9iamVjdEhlYXBDZWxsVHlwZSBkZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGU7CisjaWYg
SlNDX09CSkNfQVBJX0VOQUJMRUQKKyAgICBJc29IZWFwQ2VsbFR5cGUgYXBpV3JhcHBlck9iamVj
dEhlYXBDZWxsVHlwZTsKKyAgICBJc29IZWFwQ2VsbFR5cGUgb2JqQ0NhbGxiYWNrRnVuY3Rpb25I
ZWFwQ2VsbFR5cGU7CisjZW5kaWYKKyNpZmRlZiBKU0NfR0xJQl9BUElfRU5BQkxFRAorICAgIElz
b0hlYXBDZWxsVHlwZSBhcGlXcmFwcGVyT2JqZWN0SGVhcENlbGxUeXBlOworICAgIElzb0hlYXBD
ZWxsVHlwZSBjYWxsYmFja0FQSVdyYXBwZXJHbG9iYWxPYmplY3RIZWFwQ2VsbFR5cGU7CisgICAg
SXNvSGVhcENlbGxUeXBlIGpzY0NhbGxiYWNrRnVuY3Rpb25IZWFwQ2VsbFR5cGU7CisjZW5kaWYK
KyAgICBJc29IZWFwQ2VsbFR5cGUgaW50bENvbGxhdG9ySGVhcENlbGxUeXBlOworICAgIElzb0hl
YXBDZWxsVHlwZSBpbnRsRGF0ZVRpbWVGb3JtYXRIZWFwQ2VsbFR5cGU7CisgICAgSXNvSGVhcENl
bGxUeXBlIGludGxEaXNwbGF5TmFtZXNIZWFwQ2VsbFR5cGU7CisgICAgSXNvSGVhcENlbGxUeXBl
IGludGxMaXN0Rm9ybWF0SGVhcENlbGxUeXBlOworICAgIElzb0hlYXBDZWxsVHlwZSBpbnRsTG9j
YWxlSGVhcENlbGxUeXBlOworICAgIElzb0hlYXBDZWxsVHlwZSBpbnRsTnVtYmVyRm9ybWF0SGVh
cENlbGxUeXBlOworICAgIElzb0hlYXBDZWxsVHlwZSBpbnRsUGx1cmFsUnVsZXNIZWFwQ2VsbFR5
cGU7CisgICAgSXNvSGVhcENlbGxUeXBlIGludGxSZWxhdGl2ZVRpbWVGb3JtYXRIZWFwQ2VsbFR5
cGU7CisgICAgSXNvSGVhcENlbGxUeXBlIGludGxTZWdtZW50SXRlcmF0b3JIZWFwQ2VsbFR5cGU7
CisgICAgSXNvSGVhcENlbGxUeXBlIGludGxTZWdtZW50ZXJIZWFwQ2VsbFR5cGU7CisgICAgSXNv
SGVhcENlbGxUeXBlIGludGxTZWdtZW50c0hlYXBDZWxsVHlwZTsKKyNpZiBFTkFCTEUoV0VCQVNT
RU1CTFkpCisgICAgSXNvSGVhcENlbGxUeXBlIHdlYkFzc2VtYmx5Q29kZUJsb2NrSGVhcENlbGxU
eXBlOworICAgIElzb0hlYXBDZWxsVHlwZSB3ZWJBc3NlbWJseUV4Y2VwdGlvbkhlYXBDZWxsVHlw
ZTsKKyAgICBJc29IZWFwQ2VsbFR5cGUgd2ViQXNzZW1ibHlGdW5jdGlvbkhlYXBDZWxsVHlwZTsK
KyAgICBJc29IZWFwQ2VsbFR5cGUgd2ViQXNzZW1ibHlHbG9iYWxIZWFwQ2VsbFR5cGU7CisgICAg
SXNvSGVhcENlbGxUeXBlIHdlYkFzc2VtYmx5SW5zdGFuY2VIZWFwQ2VsbFR5cGU7CisgICAgSXNv
SGVhcENlbGxUeXBlIHdlYkFzc2VtYmx5TWVtb3J5SGVhcENlbGxUeXBlOworICAgIElzb0hlYXBD
ZWxsVHlwZSB3ZWJBc3NlbWJseU1vZHVsZUhlYXBDZWxsVHlwZTsKKyAgICBJc29IZWFwQ2VsbFR5
cGUgd2ViQXNzZW1ibHlNb2R1bGVSZWNvcmRIZWFwQ2VsbFR5cGU7CisgICAgSXNvSGVhcENlbGxU
eXBlIHdlYkFzc2VtYmx5VGFibGVIZWFwQ2VsbFR5cGU7CisgICAgSXNvSGVhcENlbGxUeXBlIHdl
YkFzc2VtYmx5VGFnSGVhcENlbGxUeXBlOworI2VuZGlmCisKKyAgICAvLyBBbGlnbmVkTWVtb3J5
QWxsb2NhdG9ycworICAgIHN0ZDo6dW5pcXVlX3B0cjxGYXN0TWFsbG9jQWxpZ25lZE1lbW9yeUFs
bG9jYXRvcj4gZmFzdE1hbGxvY0FsbG9jYXRvcjsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8R2lnYWNh
Z2VBbGlnbmVkTWVtb3J5QWxsb2NhdG9yPiBwcmltaXRpdmVHaWdhY2FnZUFsbG9jYXRvcjsKKyAg
ICBzdGQ6OnVuaXF1ZV9wdHI8R2lnYWNhZ2VBbGlnbmVkTWVtb3J5QWxsb2NhdG9yPiBqc1ZhbHVl
R2lnYWNhZ2VBbGxvY2F0b3I7CisKKyAgICAvLyBTdWJzcGFjZXMKKyAgICBDb21wbGV0ZVN1YnNw
YWNlIHByaW1pdGl2ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2U7IC8vIFR5cGVkIGFycmF5cywgc3Ry
aW5ncywgYml0dmVjdG9ycywgZXRjIGdvIGhlcmUuCisgICAgQ29tcGxldGVTdWJzcGFjZSBqc1Zh
bHVlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZTsgLy8gQnV0dGVyZmxpZXMsIGFycmF5cyBvZiBKU1Zh
bHVlcywgZXRjIGdvIGhlcmUuCisgICAgQ29tcGxldGVTdWJzcGFjZSBpbW11dGFibGVCdXR0ZXJm
bHlKU1ZhbHVlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZTsgLy8gSlNJbW11dGFibGVCdXR0ZXJmbHkg
Z29lcyBoZXJlLgorCisgICAgLy8gV2UgbWFrZSBjcm9zcy1jdXR0aW5nIGFzc3VtcHRpb25zIGFi
b3V0IHR5cGVkIGFycmF5cyBiZWluZyBpbiB0aGUgcHJpbWl0aXZlIEdpZ2FjYWdlIGFuZCBidXR0
ZXJmbGllcworICAgIC8vIGJlaW5nIGluIHRoZSBKU1ZhbHVlIGdpZ2FjYWdlLiBGb3Igc29tZSB0
eXBlcywgaXQncyBzdXBlciBvYnZpb3VzIHdoZXJlIHRoZXkgc2hvdWxkIGdvLCBhbmQgc28gd2UK
KyAgICAvLyBjYW4gaGFyZGNvZGUgdGhhdCBmYWN0LiBCdXQgc29tZXRpbWVzIGl0J3Mgbm90IGNs
ZWFyLCBzbyB3ZSBhYnN0cmFjdCBpdCBieSBoYXZpbmcgYSBHaWdhY2FnZTo6S2luZAorICAgIC8v
IGNvbnN0YW50IHNvbWV3aGVyZS4KKyAgICAvLyBGSVhNRTogTWF5YmUgaXQgd291bGQgYmUgYmV0
dGVyIGlmIGV2ZXJ5b25lIGFic3RyYWN0ZWQgdGhpcz8KKyAgICAvLyBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc1MjQ4CisgICAgQUxXQVlTX0lOTElORSBDb21wbGV0
ZVN1YnNwYWNlJiBnaWdhY2FnZUF1eGlsaWFyeVNwYWNlKEdpZ2FjYWdlOjpLaW5kIGtpbmQpCisg
ICAgeworICAgICAgICBzd2l0Y2ggKGtpbmQpIHsKKyAgICAgICAgY2FzZSBHaWdhY2FnZTo6UHJp
bWl0aXZlOgorICAgICAgICAgICAgcmV0dXJuIHByaW1pdGl2ZUdpZ2FjYWdlQXV4aWxpYXJ5U3Bh
Y2U7CisgICAgICAgIGNhc2UgR2lnYWNhZ2U6OkpTVmFsdWU6CisgICAgICAgICAgICByZXR1cm4g
anNWYWx1ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2U7CisgICAgICAgIGNhc2UgR2lnYWNhZ2U6Ok51
bWJlck9mS2luZHM6CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBSRUxF
QVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gcHJpbWl0aXZlR2lnYWNh
Z2VBdXhpbGlhcnlTcGFjZTsKKyAgICB9CisgICAgCisgICAgLy8gV2hlbmV2ZXIgcG9zc2libGUs
IHVzZSBzdWJzcGFjZUZvcjxDZWxsVHlwZT4odm0pIHRvIGdldCBvbmUgb2YgdGhlc2Ugc3Vic3Bh
Y2VzLgorICAgIENvbXBsZXRlU3Vic3BhY2UgY2VsbFNwYWNlOworICAgIENvbXBsZXRlU3Vic3Bh
Y2UgdmFyaWFibGVTaXplZENlbGxTcGFjZTsgLy8gRklYTUU6IFRoaXMgc3BhY2UgaXMgcHJvYmxl
bWF0aWMgYmVjYXVzZSB3ZSBoYXZlIHRoaW5ncyBpbiBoZXJlIGxpa2UgRGlyZWN0QXJndW1lbnRz
IGFuZCBTY29wZWRBcmd1bWVudHM7IHRob3NlIHNob3VsZCBiZSBzcGxpdCBpbnRvIEpTVmFsdWVP
T0IgY2VsbHMgYW5kIEpTVmFsdWVTdHJpY3QgYXV4aWxpYXJpZXMuIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODI4NTgKKyAgICBDb21wbGV0ZVN1YnNwYWNlIGRlc3Ry
dWN0aWJsZU9iamVjdFNwYWNlOworCisgICAgSXNvU3Vic3BhY2UgYXJyYXlTcGFjZTsKKyAgICBJ
c29TdWJzcGFjZSBiaWdJbnRTcGFjZTsKKyAgICBJc29TdWJzcGFjZSBjYWxsZWVTcGFjZTsKKyAg
ICBJc29TdWJzcGFjZSBjbG9uZWRBcmd1bWVudHNTcGFjZTsKKyAgICBJc29TdWJzcGFjZSBjdXN0
b21HZXR0ZXJTZXR0ZXJTcGFjZTsKKyAgICBJc29TdWJzcGFjZSBkYXRlSW5zdGFuY2VTcGFjZTsK
KyAgICBJc29TdWJzcGFjZSBkb21BdHRyaWJ1dGVHZXR0ZXJTZXR0ZXJTcGFjZTsKKyAgICBJc29T
dWJzcGFjZSBleGNlcHRpb25TcGFjZTsKKyAgICBJc29TdWJzcGFjZSBleGVjdXRhYmxlVG9Db2Rl
QmxvY2tFZGdlU3BhY2U7CisgICAgSXNvU3Vic3BhY2UgZnVuY3Rpb25TcGFjZTsKKyAgICBJc29T
dWJzcGFjZSBnZXR0ZXJTZXR0ZXJTcGFjZTsKKyAgICBJc29TdWJzcGFjZSBnbG9iYWxMZXhpY2Fs
RW52aXJvbm1lbnRTcGFjZTsKKyAgICBJc29TdWJzcGFjZSBpbnRlcm5hbEZ1bmN0aW9uU3BhY2U7
CisgICAgSXNvU3Vic3BhY2UganNQcm94eVNwYWNlOworICAgIElzb1N1YnNwYWNlIG5hdGl2ZUV4
ZWN1dGFibGVTcGFjZTsKKyAgICBJc29TdWJzcGFjZSBudW1iZXJPYmplY3RTcGFjZTsKKyAgICBJ
c29TdWJzcGFjZSBwbGFpbk9iamVjdFNwYWNlOworICAgIElzb1N1YnNwYWNlIHByb21pc2VTcGFj
ZTsKKyAgICBJc29TdWJzcGFjZSBwcm9wZXJ0eU5hbWVFbnVtZXJhdG9yU3BhY2U7CisgICAgSXNv
U3Vic3BhY2UgcHJvcGVydHlUYWJsZVNwYWNlOworICAgIElzb1N1YnNwYWNlIHJlZ0V4cFNwYWNl
OworICAgIElzb1N1YnNwYWNlIHJlZ0V4cE9iamVjdFNwYWNlOworICAgIElzb1N1YnNwYWNlIHJv
cGVTdHJpbmdTcGFjZTsKKyAgICBJc29TdWJzcGFjZSBzY29wZWRBcmd1bWVudHNTcGFjZTsKKyAg
ICBJc29TdWJzcGFjZSBzcGFyc2VBcnJheVZhbHVlTWFwU3BhY2U7CisgICAgSXNvU3Vic3BhY2Ug
c3RyaW5nU3BhY2U7CisgICAgSXNvU3Vic3BhY2Ugc3RyaW5nT2JqZWN0U3BhY2U7CisgICAgSXNv
U3Vic3BhY2Ugc3RydWN0dXJlQ2hhaW5TcGFjZTsKKyAgICBJc29TdWJzcGFjZSBzdHJ1Y3R1cmVS
YXJlRGF0YVNwYWNlOworICAgIElzb1N1YnNwYWNlIHN0cnVjdHVyZVNwYWNlOworICAgIElzb1N1
YnNwYWNlIGJyYW5kZWRTdHJ1Y3R1cmVTcGFjZTsKKyAgICBJc29TdWJzcGFjZSBzeW1ib2xUYWJs
ZVNwYWNlOworCisjZGVmaW5lIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIobmFt
ZSkgXAorICAgIHRlbXBsYXRlPFN1YnNwYWNlQWNjZXNzIG1vZGU+IFwKKyAgICBJc29TdWJzcGFj
ZSogbmFtZSgpIFwKKyAgICB7IFwKKyAgICAgICAgaWYgKG1fIyNuYW1lIHx8IG1vZGUgPT0gU3Vi
c3BhY2VBY2Nlc3M6OkNvbmN1cnJlbnRseSkgXAorICAgICAgICAgICAgcmV0dXJuIG1fIyNuYW1l
LmdldCgpOyBcCisgICAgICAgIHJldHVybiBuYW1lIyNTbG93KCk7IFwKKyAgICB9IFwKKyAgICBK
U19FWFBPUlRfUFJJVkFURSBJc29TdWJzcGFjZSogbmFtZSMjU2xvdygpOyBcCisgICAgc3RkOjp1
bmlxdWVfcHRyPElzb1N1YnNwYWNlPiBtXyMjbmFtZTsKKworCisjaWYgSlNDX09CSkNfQVBJX0VO
QUJMRUQKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKGFwaVdyYXBwZXJP
YmplY3RTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKG9iakND
YWxsYmFja0Z1bmN0aW9uU3BhY2UpCisjZW5kaWYKKyNpZmRlZiBKU0NfR0xJQl9BUElfRU5BQkxF
RAorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoYXBpV3JhcHBlck9iamVj
dFNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoanNjQ2FsbGJh
Y2tGdW5jdGlvblNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIo
Y2FsbGJhY2tBUElXcmFwcGVyR2xvYmFsT2JqZWN0U3BhY2UpCisjZW5kaWYKKyAgICBEWU5BTUlD
X0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKGFwaUdsb2JhbE9iamVjdFNwYWNlKQorICAgIERZ
TkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoYXBpVmFsdWVXcmFwcGVyU3BhY2UpCisg
ICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihhcnJheUJ1ZmZlclNwYWNlKQor
ICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoYXJyYXlJdGVyYXRvclNwYWNl
KQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoYXN5bmNHZW5lcmF0b3JT
cGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKGJpZ0ludDY0QXJy
YXlTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKGJpZ0ludE9i
amVjdFNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoYmlnVWlu
dDY0QXJyYXlTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKGJv
b2xlYW5PYmplY3RTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVS
KGJvdW5kRnVuY3Rpb25TcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVN
QkVSKGNhbGxiYWNrQ29uc3RydWN0b3JTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9E
RUZJTkVfTUVNQkVSKGNhbGxiYWNrR2xvYmFsT2JqZWN0U3BhY2UpCisgICAgRFlOQU1JQ19JU09f
U1VCU1BBQ0VfREVGSU5FX01FTUJFUihjYWxsYmFja0Z1bmN0aW9uU3BhY2UpCisgICAgRFlOQU1J
Q19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihjYWxsYmFja09iamVjdFNwYWNlKQorICAgIERZ
TkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoY3VzdG9tR2V0dGVyRnVuY3Rpb25TcGFj
ZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKGN1c3RvbVNldHRlckZ1
bmN0aW9uU3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihkYXRh
Vmlld1NwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoZGVidWdn
ZXJTY29wZVNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoZXJy
b3JJbnN0YW5jZVNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIo
ZmxvYXQzMkFycmF5U3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJF
UihmbG9hdDY0QXJyYXlTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVN
QkVSKGZ1bmN0aW9uUmFyZURhdGFTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJ
TkVfTUVNQkVSKGdlbmVyYXRvclNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklO
RV9NRU1CRVIoZ2xvYmFsT2JqZWN0U3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVG
SU5FX01FTUJFUihpbmplY3RlZFNjcmlwdEhvc3RTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJT
UEFDRV9ERUZJTkVfTUVNQkVSKGludDhBcnJheVNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQ
QUNFX0RFRklORV9NRU1CRVIoaW50MTZBcnJheVNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQ
QUNFX0RFRklORV9NRU1CRVIoaW50MzJBcnJheVNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQ
QUNFX0RFRklORV9NRU1CRVIoamF2YVNjcmlwdENhbGxGcmFtZVNwYWNlKQorICAgIERZTkFNSUNf
SVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoanNNb2R1bGVSZWNvcmRTcGFjZSkKKyAgICBEWU5B
TUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKG1hcEJ1Y2tldFNwYWNlKQorICAgIERZTkFN
SUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIobWFwSXRlcmF0b3JTcGFjZSkKKyAgICBEWU5B
TUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKG1hcFNwYWNlKQorICAgIERZTkFNSUNfSVNP
X1NVQlNQQUNFX0RFRklORV9NRU1CRVIobW9kdWxlTmFtZXNwYWNlT2JqZWN0U3BhY2UpCisgICAg
RFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihuYXRpdmVTdGRGdW5jdGlvblNwYWNl
KQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIocHJveHlPYmplY3RTcGFj
ZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKHByb3h5UmV2b2tlU3Bh
Y2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihzY29wZWRBcmd1bWVu
dHNUYWJsZVNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoc2Ny
aXB0RmV0Y2hQYXJhbWV0ZXJzU3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5F
X01FTUJFUihzY3JpcHRGZXRjaGVyU3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVG
SU5FX01FTUJFUihzZXRCdWNrZXRTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJ
TkVfTUVNQkVSKHNldEl0ZXJhdG9yU3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVG
SU5FX01FTUJFUihzZXRTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVN
QkVSKHNoYWRvd1JlYWxtU3BhY2UpOworICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9N
RU1CRVIoc3RyaWN0RXZhbEFjdGl2YXRpb25TcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFD
RV9ERUZJTkVfTUVNQkVSKHN0cmluZ0l0ZXJhdG9yU3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VC
U1BBQ0VfREVGSU5FX01FTUJFUihzb3VyY2VDb2RlU3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VC
U1BBQ0VfREVGSU5FX01FTUJFUihzeW1ib2xTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFD
RV9ERUZJTkVfTUVNQkVSKHN5bWJvbE9iamVjdFNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQ
QUNFX0RFRklORV9NRU1CRVIodGVtcGxhdGVPYmplY3REZXNjcmlwdG9yU3BhY2UpCisgICAgRFlO
QU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUih0ZW1wb3JhbENhbGVuZGFyU3BhY2UpCisg
ICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUih0ZW1wb3JhbER1cmF0aW9uU3Bh
Y2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUih0ZW1wb3JhbEluc3Rh
bnRTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKHRlbXBvcmFs
UGxhaW5UaW1lU3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUih0
ZW1wb3JhbFRpbWVab25lU3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01F
TUJFUih1aW50OEFycmF5U3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01F
TUJFUih1aW50OENsYW1wZWRBcnJheVNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RF
RklORV9NRU1CRVIodWludDE2QXJyYXlTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9E
RUZJTkVfTUVNQkVSKHVpbnQzMkFycmF5U3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0Vf
REVGSU5FX01FTUJFUih1bmxpbmtlZEV2YWxDb2RlQmxvY2tTcGFjZSkKKyAgICBEWU5BTUlDX0lT
T19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKHVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2tTcGFjZSkK
KyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKHVubGlua2VkTW9kdWxlUHJv
Z3JhbUNvZGVCbG9ja1NwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1C
RVIodW5saW5rZWRQcm9ncmFtQ29kZUJsb2NrU3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BB
Q0VfREVGSU5FX01FTUJFUihmaW5hbGl6YXRpb25SZWdpc3RyeVNwYWNlKQorICAgIERZTkFNSUNf
SVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIod2Vha09iamVjdFJlZlNwYWNlKQorICAgIERZTkFN
SUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIod2Vha1NldFNwYWNlKQorICAgIERZTkFNSUNf
SVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIod2Vha01hcFNwYWNlKQorICAgIERZTkFNSUNfSVNP
X1NVQlNQQUNFX0RFRklORV9NRU1CRVIod2l0aFNjb3BlU3BhY2UpCisgICAgRFlOQU1JQ19JU09f
U1VCU1BBQ0VfREVGSU5FX01FTUJFUihpbnRsQ29sbGF0b3JTcGFjZSkKKyAgICBEWU5BTUlDX0lT
T19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKGludGxEYXRlVGltZUZvcm1hdFNwYWNlKQorICAgIERZ
TkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoaW50bERpc3BsYXlOYW1lc1NwYWNlKQor
ICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoaW50bExpc3RGb3JtYXRTcGFj
ZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKGludGxMb2NhbGVTcGFj
ZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKGludGxOdW1iZXJGb3Jt
YXRTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKGludGxQbHVy
YWxSdWxlc1NwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoaW50
bFJlbGF0aXZlVGltZUZvcm1hdFNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklO
RV9NRU1CRVIoaW50bFNlZ21lbnRJdGVyYXRvclNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQ
QUNFX0RFRklORV9NRU1CRVIoaW50bFNlZ21lbnRlclNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NV
QlNQQUNFX0RFRklORV9NRU1CRVIoaW50bFNlZ21lbnRzU3BhY2UpCisjaWYgRU5BQkxFKFdFQkFT
U0VNQkxZKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoanNUb1dhc21J
Q0NhbGxlZVNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIod2Vi
QXNzZW1ibHlDb2RlQmxvY2tTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVf
TUVNQkVSKHdlYkFzc2VtYmx5RXhjZXB0aW9uU3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BB
Q0VfREVGSU5FX01FTUJFUih3ZWJBc3NlbWJseUZ1bmN0aW9uU3BhY2UpCisgICAgRFlOQU1JQ19J
U09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUih3ZWJBc3NlbWJseUdsb2JhbFNwYWNlKQorICAgIERZ
TkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIod2ViQXNzZW1ibHlJbnN0YW5jZVNwYWNl
KQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIod2ViQXNzZW1ibHlNZW1v
cnlTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKHdlYkFzc2Vt
Ymx5TW9kdWxlU3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUih3
ZWJBc3NlbWJseU1vZHVsZVJlY29yZFNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RF
RklORV9NRU1CRVIod2ViQXNzZW1ibHlUYWJsZVNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQ
QUNFX0RFRklORV9NRU1CRVIod2ViQXNzZW1ibHlUYWdTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19T
VUJTUEFDRV9ERUZJTkVfTUVNQkVSKHdlYkFzc2VtYmx5V3JhcHBlckZ1bmN0aW9uU3BhY2UpCisj
ZW5kaWYKKworI3VuZGVmIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIKKyAgICAK
KyAgICBJc29DZWxsU2V0IGV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2VzV2l0aENvbnN0cmFpbnRz
OworICAgIElzb0NlbGxTZXQgZXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZXNXaXRoRmluYWxpemVy
czsKKworI2RlZmluZSBEWU5BTUlDX1NQQUNFX0FORF9TRVRfREVGSU5FX01FTUJFUihuYW1lKSBc
CisgICAgdGVtcGxhdGU8U3Vic3BhY2VBY2Nlc3MgbW9kZT4gXAorICAgIElzb1N1YnNwYWNlKiBu
YW1lKCkgXAorICAgIHsgXAorICAgICAgICBpZiAoYXV0byogc3BhY2VBbmRTZXQgPSBtXyMjbmFt
ZS5nZXQoKSkgXAorICAgICAgICAgICAgcmV0dXJuICZzcGFjZUFuZFNldC0+c3BhY2U7IFwKKyAg
ICAgICAgaWYgKG1vZGUgPT0gU3Vic3BhY2VBY2Nlc3M6OkNvbmN1cnJlbnRseSkgXAorICAgICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7IFwKKyAgICAgICAgcmV0dXJuIG5hbWUjI1Nsb3coKTsgXAor
ICAgIH0gXAorICAgIElzb1N1YnNwYWNlKiBuYW1lIyNTbG93KCk7IFwKKyAgICBzdGQ6OnVuaXF1
ZV9wdHI8U3BhY2VBbmRTZXQ+IG1fIyNuYW1lOworICAgIAorICAgIHN0cnVjdCBTcGFjZUFuZFNl
dCB7CisgICAgICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKKworICAgICAgICBJ
c29TdWJzcGFjZSBzcGFjZTsKKyAgICAgICAgSXNvQ2VsbFNldCBzZXQ7CisgICAgICAgIAorICAg
ICAgICB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBBcmd1bWVudHM+CisgICAgICAgIFNwYWNlQW5kU2V0
KEFyZ3VtZW50cyYmLi4uIGFyZ3VtZW50cykKKyAgICAgICAgICAgIDogc3BhY2Uoc3RkOjpmb3J3
YXJkPEFyZ3VtZW50cz4oYXJndW1lbnRzKS4uLikKKyAgICAgICAgICAgICwgc2V0KHNwYWNlKQor
ICAgICAgICB7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHN0YXRpYyBJc29DZWxsU2V0
JiBzZXRGb3IoU3Vic3BhY2UmIHNwYWNlKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4g
KmJpdHdpc2VfY2FzdDxJc29DZWxsU2V0Kj4oCisgICAgICAgICAgICAgICAgYml0d2lzZV9jYXN0
PGNoYXIqPigmc3BhY2UpIC0KKyAgICAgICAgICAgICAgICBPQkpFQ1RfT0ZGU0VUT0YoU3BhY2VB
bmRTZXQsIHNwYWNlKSArCisgICAgICAgICAgICAgICAgT0JKRUNUX09GRlNFVE9GKFNwYWNlQW5k
U2V0LCBzZXQpKTsKKyAgICAgICAgfQorICAgIH07CisgICAgCisgICAgU3BhY2VBbmRTZXQgY29k
ZUJsb2NrU3BhY2U7CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jPgorICAgIHZvaWQgZm9y
RWFjaENvZGVCbG9ja1NwYWNlKGNvbnN0IEZ1bmMmIGZ1bmMpCisgICAgeworICAgICAgICAvLyBU
aGlzIHNob3VsZCBub3QgaW5jbHVkZSB3ZWJBc3NlbWJseUNvZGVCbG9ja1NwYWNlIGJlY2F1c2Ug
dGhpcyBpcyBhYm91dCBzdWJzY2xhc3NlcyBvZgorICAgICAgICAvLyBKU0M6OkNvZGVCbG9jay4K
KyAgICAgICAgZnVuYyhjb2RlQmxvY2tTcGFjZSk7CisgICAgfQorCisgICAgRFlOQU1JQ19TUEFD
RV9BTkRfU0VUX0RFRklORV9NRU1CRVIoZXZhbEV4ZWN1dGFibGVTcGFjZSkKKyAgICBEWU5BTUlD
X1NQQUNFX0FORF9TRVRfREVGSU5FX01FTUJFUihtb2R1bGVQcm9ncmFtRXhlY3V0YWJsZVNwYWNl
KQorICAgIFNwYWNlQW5kU2V0IGZ1bmN0aW9uRXhlY3V0YWJsZVNwYWNlOworICAgIFNwYWNlQW5k
U2V0IHByb2dyYW1FeGVjdXRhYmxlU3BhY2U7CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5j
PgorICAgIHZvaWQgZm9yRWFjaFNjcmlwdEV4ZWN1dGFibGVTcGFjZShjb25zdCBGdW5jJiBmdW5j
KQorICAgIHsKKyAgICAgICAgaWYgKG1fZXZhbEV4ZWN1dGFibGVTcGFjZSkKKyAgICAgICAgICAg
IGZ1bmMoKm1fZXZhbEV4ZWN1dGFibGVTcGFjZSk7CisgICAgICAgIGZ1bmMoZnVuY3Rpb25FeGVj
dXRhYmxlU3BhY2UpOworICAgICAgICBpZiAobV9tb2R1bGVQcm9ncmFtRXhlY3V0YWJsZVNwYWNl
KQorICAgICAgICAgICAgZnVuYygqbV9tb2R1bGVQcm9ncmFtRXhlY3V0YWJsZVNwYWNlKTsKKyAg
ICAgICAgZnVuYyhwcm9ncmFtRXhlY3V0YWJsZVNwYWNlKTsKKyAgICB9CisKKyAgICBTcGFjZUFu
ZFNldCB1bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZVNwYWNlOworCisjdW5kZWYgRFlOQU1JQ19T
UEFDRV9BTkRfU0VUX0RFRklORV9NRU1CRVIKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSXNvSGVhcENlbGxUeXBlLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSXNvSGVhcENlbGxUeXBlLmgJKHJldmlz
aW9uIDI4NjA4MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lzb0hlYXBDZWxsVHlw
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw2ICszOCwyMiBAQCBwdWJsaWM6CiAgICAgSlNfRVhQ
T1JUX1BSSVZBVEUgSXNvSGVhcENlbGxUeXBlKERlc3RydWN0aW9uTW9kZSwgRGVzdHJveUZ1bmN0
aW9uUHRyKTsKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlPgorICAgIHN0cnVjdCBB
cmdzIHsKKyAgICAgICAgQXJncygpCisgICAgICAgICAgICA6IG1vZGUoQ2VsbFR5cGU6Om5lZWRz
RGVzdHJ1Y3Rpb24gPyBOZWVkc0Rlc3RydWN0aW9uIDogRG9lc05vdE5lZWREZXN0cnVjdGlvbikK
KyAgICAgICAgICAgICwgZnVuY3Rpb25QdHIoJkNlbGxUeXBlOjpkZXN0cm95KQorICAgICAgICB7
IH0KKworICAgICAgICBEZXN0cnVjdGlvbk1vZGUgbW9kZTsKKyAgICAgICAgRGVzdHJveUZ1bmN0
aW9uUHRyIGZ1bmN0aW9uUHRyOworICAgIH07CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxs
VHlwZT4KKyAgICBJc29IZWFwQ2VsbFR5cGUoQXJnczxDZWxsVHlwZT4mJiBhcmdzKQorICAgICAg
ICA6IElzb0hlYXBDZWxsVHlwZShhcmdzLm1vZGUsIGFyZ3MuZnVuY3Rpb25QdHIpCisgICAgeyB9
CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZT4KICAgICBzdGF0aWMgc3RkOjp1bmlx
dWVfcHRyPElzb0hlYXBDZWxsVHlwZT4gY3JlYXRlKCkKICAgICB7CiAgICAgICAgIHJldHVybiBt
YWtlVW5pcXVlPElzb0hlYXBDZWxsVHlwZT4oQ2VsbFR5cGU6Om5lZWRzRGVzdHJ1Y3Rpb24gPyBO
ZWVkc0Rlc3RydWN0aW9uIDogRG9lc05vdE5lZWREZXN0cnVjdGlvbiwgJkNlbGxUeXBlOjpkZXN0
cm95KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lzb0lubGluZWRIZWFwQ2Vs
bFR5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Jc29Jbmxp
bmVkSGVhcENlbGxUeXBlLmgJKHJldmlzaW9uIDI4NjA4MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL0lzb0lubGluZWRIZWFwQ2VsbFR5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzIs
MjggKzMyLDI3IEBAIG5hbWVzcGFjZSBKU0MgewogdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGU+
CiBjbGFzcyBJc29JbmxpbmVkSGVhcENlbGxUeXBlIGZpbmFsIDogcHVibGljIEhlYXBDZWxsVHlw
ZSB7CiBwdWJsaWM6Ci0gICAgSXNvSW5saW5lZEhlYXBDZWxsVHlwZSgpCi0gICAgICAgIDogSGVh
cENlbGxUeXBlKENlbGxBdHRyaWJ1dGVzKENlbGxUeXBlOjpuZWVkc0Rlc3RydWN0aW9uID8gTmVl
ZHNEZXN0cnVjdGlvbiA6IERvZXNOb3ROZWVkRGVzdHJ1Y3Rpb24sIEhlYXBDZWxsOjpKU0NlbGwp
KQotICAgIHsKLSAgICB9CisgICAgSXNvSW5saW5lZEhlYXBDZWxsVHlwZSgpOworLy8gICAgICAg
IDogSGVhcENlbGxUeXBlKENlbGxBdHRyaWJ1dGVzKENlbGxUeXBlOjpuZWVkc0Rlc3RydWN0aW9u
ID8gTmVlZHNEZXN0cnVjdGlvbiA6IERvZXNOb3ROZWVkRGVzdHJ1Y3Rpb24sIEhlYXBDZWxsOjpK
U0NlbGwpKQorLy8gICAgeworLy8gICAgfQogCiAgICAgc3RydWN0IERlc3Ryb3lGdW5jIHsKLSAg
ICAgICAgQUxXQVlTX0lOTElORSB2b2lkIG9wZXJhdG9yKCkoVk0mLCBKU0NlbGwqIGNlbGwpIGNv
bnN0Ci0gICAgICAgIHsKLSAgICAgICAgICAgIENlbGxUeXBlOjpkZXN0cm95KGNlbGwpOwotICAg
ICAgICB9CisgICAgICAgIEFMV0FZU19JTkxJTkUgdm9pZCBvcGVyYXRvcigpKFZNJiwgSlNDZWxs
KiBjZWxsKSBjb25zdDsKKy8vICAgICAgICB7CisvLyAgICAgICAgICAgIENlbGxUeXBlOjpkZXN0
cm95KGNlbGwpOworLy8gICAgICAgIH0KICAgICB9OwogCi0gICAgdm9pZCBmaW5pc2hTd2VlcChN
YXJrZWRCbG9jazo6SGFuZGxlJiBoYW5kbGUsIEZyZWVMaXN0KiBmcmVlTGlzdCkgY29uc3QgZmlu
YWwKLSAgICB7Ci0gICAgICAgIGhhbmRsZS5maW5pc2hTd2VlcEtub3dpbmdIZWFwQ2VsbFR5cGUo
ZnJlZUxpc3QsIERlc3Ryb3lGdW5jKCkpOwotICAgIH0KKyAgICB2b2lkIGZpbmlzaFN3ZWVwKE1h
cmtlZEJsb2NrOjpIYW5kbGUmIGhhbmRsZSwgRnJlZUxpc3QqIGZyZWVMaXN0KSBjb25zdCBmaW5h
bDsKKy8vICAgIHsKKy8vICAgICAgICBoYW5kbGUuZmluaXNoU3dlZXBLbm93aW5nSGVhcENlbGxU
eXBlKGZyZWVMaXN0LCBEZXN0cm95RnVuYygpKTsKKy8vICAgIH0KIAotICAgIHZvaWQgZGVzdHJv
eShWTSYsIEpTQ2VsbCogY2VsbCkgY29uc3QgZmluYWwKLSAgICB7Ci0gICAgICAgIENlbGxUeXBl
OjpkZXN0cm95KGNlbGwpOwotICAgIH0KKyAgICB2b2lkIGRlc3Ryb3koVk0mLCBKU0NlbGwqIGNl
bGwpIGNvbnN0IGZpbmFsOworLy8gICAgeworLy8gICAgICAgIENlbGxUeXBlOjpkZXN0cm95KGNl
bGwpOworLy8gICAgfQogfTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCi0KSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL0lzb0lubGluZWRIZWFwQ2VsbFR5cGVJbmxpbmVzLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSXNvSW5saW5lZEhlYXBDZWxsVHlw
ZUlubGluZXMuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9J
c29JbmxpbmVkSGVhcENlbGxUeXBlSW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEs
NTggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IK
KyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJh
Z21hIG9uY2UKKworI2luY2x1ZGUgIklzb0lubGluZWRIZWFwQ2VsbFR5cGUuaCIKKworI2luY2x1
ZGUgIk1hcmtlZEJsb2NrLmgiCisKK25hbWVzcGFjZSBKU0MgeworCit0ZW1wbGF0ZTx0eXBlbmFt
ZSBDZWxsVHlwZT4KK2lubGluZSBJc29JbmxpbmVkSGVhcENlbGxUeXBlPENlbGxUeXBlPjo6SXNv
SW5saW5lZEhlYXBDZWxsVHlwZSgpCisgICAgOiBIZWFwQ2VsbFR5cGUoQ2VsbEF0dHJpYnV0ZXMo
Q2VsbFR5cGU6Om5lZWRzRGVzdHJ1Y3Rpb24gPyBOZWVkc0Rlc3RydWN0aW9uIDogRG9lc05vdE5l
ZWREZXN0cnVjdGlvbiwgSGVhcENlbGw6OkpTQ2VsbCkpCit7Cit9CisKK3RlbXBsYXRlPHR5cGVu
YW1lIENlbGxUeXBlPgorQUxXQVlTX0lOTElORSB2b2lkIElzb0lubGluZWRIZWFwQ2VsbFR5cGU8
Q2VsbFR5cGU+OjpEZXN0cm95RnVuYzo6b3BlcmF0b3IoKShWTSYsIEpTQ2VsbCogY2VsbCkgY29u
c3QKK3sKKyAgICBDZWxsVHlwZTo6ZGVzdHJveShjZWxsKTsKK30KKwordGVtcGxhdGU8dHlwZW5h
bWUgQ2VsbFR5cGU+CitpbmxpbmUgdm9pZCBJc29JbmxpbmVkSGVhcENlbGxUeXBlPENlbGxUeXBl
Pjo6ZmluaXNoU3dlZXAoTWFya2VkQmxvY2s6OkhhbmRsZSYgaGFuZGxlLCBGcmVlTGlzdCogZnJl
ZUxpc3QpIGNvbnN0Cit7CisgICAgaGFuZGxlLmZpbmlzaFN3ZWVwS25vd2luZ0hlYXBDZWxsVHlw
ZShmcmVlTGlzdCwgRGVzdHJveUZ1bmMoKSk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIENlbGxU
eXBlPgoraW5saW5lIHZvaWQgSXNvSW5saW5lZEhlYXBDZWxsVHlwZTxDZWxsVHlwZT46OmRlc3Ry
b3koVk0mLCBKU0NlbGwqIGNlbGwpIGNvbnN0Cit7CisgICAgQ2VsbFR5cGU6OmRlc3Ryb3koY2Vs
bCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvSXNvU3Vic3BhY2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9Jc29TdWJzcGFjZS5oCShyZXZpc2lvbiAyODYwODEpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9Jc29TdWJzcGFjZS5oCSh3b3JraW5nIGNvcHkpCkBAIC01NCw3ICs1NCw3IEBA
IHB1YmxpYzoKICAgICB2b2lkKiB0cnlBbGxvY2F0ZUZyb21Mb3dlclRpZXIoKTsKICAgICB2b2lk
IGRlc3Ryb3lMb3dlclRpZXJGcmVlTGlzdCgpOwogCi0gICAgdm9pZCBzd2VlcCgpOworICAgIHZv
aWQgc3dlZXAzKCk7CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jPiB2b2lkIGZvckVhY2hM
b3dlclRpZXJGcmVlTGlzdGVkUHJlY2lzZUFsbG9jYXRpb24oY29uc3QgRnVuYyYpOwogCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Jc29TdWJzcGFjZUlubGluZXMuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Jc29TdWJzcGFjZUlubGluZXMuaAko
cmV2aXNpb24gMjg2MDgxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSXNvU3Vic3Bh
Y2VJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDcgKzQ0LDcgQEAgaW5saW5lIHZvaWQg
SXNvU3Vic3BhY2U6OmNsZWFySXNvQ2VsbFNldAogICAgICAgICB9KTsKIH0KIAotaW5saW5lIHZv
aWQgSXNvU3Vic3BhY2U6OnN3ZWVwKCkKK2lubGluZSB2b2lkIElzb1N1YnNwYWNlOjpzd2VlcDMo
KQogewogICAgIFN1YnNwYWNlOjpzd2VlcEJsb2NrcygpOwogICAgIC8vIFdlIHN3ZWVwIHByZWNp
c2UtYWxsb2NhdGlvbnMgZWFnZXJseSwgYnV0IHdlIGRvIG5vdCBmcmVlIGl0IGltbWVkaWF0ZWx5
LgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2tJbmxpbmVzLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2tJbmxp
bmVzLmgJKHJldmlzaW9uIDI4NjA4MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01h
cmtlZEJsb2NrSW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxNi0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAxNi0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjEzLDcgKzIxMyw3IEBAIGlu
bGluZSBib29sIE1hcmtlZEJsb2NrOjpIYW5kbGU6OmFyZU1hcmsKIC8vIHN3ZWVwTW9kZSA9PSBT
d2VlcFRvRnJlZUxpc3QKIC8vIHNjcmliYmxlTW9kZSA9PSBEb250U2NyaWJibGUKIC8vIG5ld2x5
QWxsb2NhdGVkTW9kZSA9PSBEb2VzTm90SGF2ZU5ld2x5QWxsb2NhdGVkCi0vLyBkZXN0cnVjdGlv
bk1vZGUgIT0gQmxvY2tIYXNEZXN0cmljdG9yc0FuZENvbGxlY3RvcklzUnVubmluZworLy8gZGVz
dHJ1Y3Rpb25Nb2RlICE9IEJsb2NrSGFzRGVzdHJ1Y3RvcnNBbmRDb2xsZWN0b3JJc1J1bm5pbmcK
IC8vCiAvLyBlbXB0eU1vZGUgPSBJc0VtcHR5CiAvLyAgICAgZGVzdHJ1Y3Rpb25Nb2RlID0gRG9l
c05vdE5lZWREZXN0cnVjdGlvbgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9KU0luamVjdGVkU2NyaXB0SG9zdFByb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNJbmplY3RlZFNjcmlwdEhvc3RQcm90b3R5cGUuaAko
cmV2aXNpb24gMjg2MDgxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0lu
amVjdGVkU2NyaXB0SG9zdFByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00MCw3ICs0MCw3
IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlND
OjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFS
QUJMRShKU0luamVjdGVkU2NyaXB0SG9zdFByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVy
biAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNw
YWNlKCk7CiAgICAgfQogCiAgICAgREVDTEFSRV9JTkZPOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9KU0phdmFTY3JpcHRDYWxsRnJhbWVQcm90b3R5cGUuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTSmF2YVNjcmlwdENhbGxG
cmFtZVByb3RvdHlwZS5oCShyZXZpc2lvbiAyODYwODEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL0pTSmF2YVNjcmlwdENhbGxGcmFtZVByb3RvdHlwZS5oCSh3b3JraW5nIGNv
cHkpCkBAIC00MCw3ICs0MCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFj
ZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJU
X0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU0phdmFTY3JpcHRDYWxsRnJhbWVQcm90b3R5cGUsIEJh
c2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVy
biAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIERFQ0xBUkVfSU5GTzsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9DYWxsRnJhbWUuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvQ2FsbEZyYW1lLmgJKHJl
dmlzaW9uIDI4NjA4MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9DYWxs
RnJhbWUuaAkod29ya2luZyBjb3B5KQpAQCAtMzgsNiArMzgsNyBAQCBuYW1lc3BhY2UgSlNDICB7
CiAgICAgY2xhc3MgSlNDYWxsZWU7CiAgICAgY2xhc3MgSlNTY29wZTsKICAgICBjbGFzcyBTb3Vy
Y2VPcmlnaW47CisgICAgY2xhc3MgVmlydHVhbFJlZ2lzdGVyOwogCiAgICAgc3RydWN0IEluc3Ry
dWN0aW9uOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guaAkocmV2aXNpb24g
Mjg2MDgxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDExLTIwMjAgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExLTIwMjEg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCkBAIC0zMSw2ICszMSw3IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCitjbGFzcyBDYWxs
TGlua0luZm87CiBjbGFzcyBTdHJ1Y3R1cmVTdHViSW5mbzsKIAogZW51bSBjbGFzcyBHZXRCeUtp
bmQgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQWdncmVnYXRlRXJyb3JQ
cm90b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9B
Z2dyZWdhdGVFcnJvclByb3RvdHlwZS5oCShyZXZpc2lvbiAyODYwODEpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9BZ2dyZWdhdGVFcnJvclByb3RvdHlwZS5oCSh3b3JraW5nIGNv
cHkpCkBAIC00NCw3ICs0NCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1
YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQ
QUNFX1NIQVJBQkxFKEFnZ3JlZ2F0ZUVycm9yUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0
dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0
U3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUo
Vk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5SXRlcmF0b3JQcm90b3R5
cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUl0
ZXJhdG9yUHJvdG90eXBlLmgJKHJldmlzaW9uIDI4NjA4MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0FycmF5SXRlcmF0b3JQcm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAt
MzgsNyArMzgsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZv
cihWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFS
QUJMRShBcnJheUl0ZXJhdG9yUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5w
bGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsK
ICAgICB9CiAKICAgICBzdGF0aWMgQXJyYXlJdGVyYXRvclByb3RvdHlwZSogY3JlYXRlKFZNJiB2
bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bc3luY0Zyb21TeW5jSXRlcmF0b3JQ
cm90b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9B
c3luY0Zyb21TeW5jSXRlcmF0b3JQcm90b3R5cGUuaAkocmV2aXNpb24gMjg2MDgxKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXN5bmNGcm9tU3luY0l0ZXJhdG9yUHJvdG90eXBl
LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAy
MDE3LTIwMTkgT2xla3NhbmRyIFNrYWNoa292IDxnc2thY2hrb3ZAZ21haWwuY29tPi4KKyAqIENv
cHlyaWdodCAoQykgMjAyMSBBcHBsZSwgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zNyw3ICszOCw3IEBAIHB1YmxpYzoKICAgICBz
dGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAgIFNU
QVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEFzeW5jRnJvbVN5bmNJdGVyYXRvclBy
b3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAg
ICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAgREVDTEFS
RV9JTkZPOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXN5bmNGdW5jdGlv
blByb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0FzeW5jRnVuY3Rpb25Qcm90b3R5cGUuaAkocmV2aXNpb24gMjg2MDgxKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQXN5bmNGdW5jdGlvblByb3RvdHlwZS5oCSh3b3JraW5nIGNv
cHkpCkBAIC0zOCw3ICszOCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1
YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQ
QUNFX1NIQVJBQkxFKEFzeW5jRnVuY3Rpb25Qcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1
cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RT
cGFjZSgpOwogICAgIH0KIAogICAgIERFQ0xBUkVfSU5GTzsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0FzeW5jR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bc3luY0dlbmVyYXRvckZ1bmN0
aW9uUHJvdG90eXBlLmgJKHJldmlzaW9uIDI4NjA4MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0FzeW5jR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuaAkod29ya2luZyBjb3B5
KQpAQCAtMzgsNyArMzgsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJz
cGFjZUZvcihWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFD
RV9TSEFSQUJMRShBc3luY0dlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLCBCYXNlKTsKLSAgICAg
ICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWlu
T2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBERUNMQVJFX0lORk87CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Bc3luY0dlbmVyYXRvclByb3RvdHlwZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FzeW5jR2VuZXJhdG9yUHJvdG90
eXBlLmgJKHJldmlzaW9uIDI4NjA4MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0FzeW5jR2VuZXJhdG9yUHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQxLDcgKzQxLDcg
QEAgcHVibGljOgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQog
ICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoQXN5bmNH
ZW5lcmF0b3JQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0
U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAog
ICAgIHN0YXRpYyBBc3luY0dlbmVyYXRvclByb3RvdHlwZSogY3JlYXRlKFZNJiB2bSwgSlNHbG9i
YWxPYmplY3QqLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0FzeW5jSXRlcmF0b3JQcm90b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bc3luY0l0ZXJhdG9yUHJvdG90eXBlLmgJKHJldmlz
aW9uIDI4NjA4MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FzeW5jSXRlcmF0
b3JQcm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzksNyArMzksNyBAQCBwdWJsaWM6CiAg
ICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewogICAgICAg
ICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShBc3luY0l0ZXJhdG9yUHJvdG90
eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAg
ICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgQXN5
bmNJdGVyYXRvclByb3RvdHlwZSogY3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9BdG9taWNzT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQXRvbWljc09iamVjdC5oCShyZXZpc2lvbiAyODYwODEpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BdG9taWNzT2JqZWN0LmgJKHdvcmtpbmcgY29weSkK
QEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMTcgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMjEgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CkBAIC0zNyw3ICszNyw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNw
YWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNF
X1NIQVJBQkxFKEF0b21pY3NPYmplY3QsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWlu
T2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAg
IH0KICAgICAKICAgICBzdGF0aWMgQXRvbWljc09iamVjdCogY3JlYXRlKFZNJiwgSlNHbG9iYWxP
YmplY3QqLCBTdHJ1Y3R1cmUqKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0JpZ0ludFByb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0JpZ0ludFByb3RvdHlwZS5oCShyZXZpc2lvbiAyODYwODEpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9CaWdJbnRQcm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAt
MzksNyArMzksNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZv
cihWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFS
QUJMRShCaWdJbnRQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2Jq
ZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0K
IAogICAgIHN0YXRpYyBCaWdJbnRQcm90b3R5cGUqIGNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlKQpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQnJhbmRlZFN0cnVjdHVyZS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0JyYW5kZWRTdHJ1Y3R1cmUuaAkocmV2aXNpb24g
Mjg2MDgxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQnJhbmRlZFN0cnVjdHVy
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00Nyw3ICs0Nyw3IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vic3BhY2VBY2Nlc3M+CiAgICAgc3RhdGljIElzb1N1YnNw
YWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewotICAgICAgICByZXR1cm4gJnZtLmJyYW5k
ZWRTdHJ1Y3R1cmVTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5icmFuZGVkU3RydWN0dXJlU3Bh
Y2UoKTsKICAgICB9CiAKICAgICBBTFdBWVNfSU5MSU5FIGJvb2wgY2hlY2tCcmFuZChTeW1ib2wq
IGJyYW5kKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQnV0dGVyZmx5SW5s
aW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0J1dHRl
cmZseUlubGluZXMuaAkocmV2aXNpb24gMjg2MDgxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQnV0dGVyZmx5SW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC03Nyw3ICs3Nyw3
IEBAIEFMV0FZU19JTkxJTkUgdW5zaWduZWQgQnV0dGVyZmx5OjpvcHRpbWEKIGlubGluZSBCdXR0
ZXJmbHkqIEJ1dHRlcmZseTo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZChWTSYgdm0sIEpTT2JqZWN0
Kiwgc2l6ZV90IHByZUNhcGFjaXR5LCBzaXplX3QgcHJvcGVydHlDYXBhY2l0eSwgYm9vbCBoYXNJ
bmRleGluZ0hlYWRlciwgc2l6ZV90IGluZGV4aW5nUGF5bG9hZFNpemVJbkJ5dGVzLCBHQ0RlZmVy
cmFsQ29udGV4dCogZGVmZXJyYWxDb250ZXh0KQogewogICAgIHNpemVfdCBzaXplID0gdG90YWxT
aXplKHByZUNhcGFjaXR5LCBwcm9wZXJ0eUNhcGFjaXR5LCBoYXNJbmRleGluZ0hlYWRlciwgaW5k
ZXhpbmdQYXlsb2FkU2l6ZUluQnl0ZXMpOwotICAgIHZvaWQqIGJhc2UgPSB2bS5qc1ZhbHVlR2ln
YWNhZ2VBdXhpbGlhcnlTcGFjZS5hbGxvY2F0ZU5vblZpcnR1YWwodm0sIHNpemUsIGRlZmVycmFs
Q29udGV4dCwgQWxsb2NhdGlvbkZhaWx1cmVNb2RlOjpSZXR1cm5OdWxsKTsKKyAgICB2b2lkKiBi
YXNlID0gdm0uanNWYWx1ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UoKS5hbGxvY2F0ZU5vblZpcnR1
YWwodm0sIHNpemUsIGRlZmVycmFsQ29udGV4dCwgQWxsb2NhdGlvbkZhaWx1cmVNb2RlOjpSZXR1
cm5OdWxsKTsKICAgICBpZiAoVU5MSUtFTFkoIWJhc2UpKQogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKIApAQCAtODksNyArODksNyBAQCBpbmxpbmUgQnV0dGVyZmx5KiBCdXR0ZXJmbHk6OnRyeUNy
ZWF0ZVVuCiBpbmxpbmUgQnV0dGVyZmx5KiBCdXR0ZXJmbHk6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQo
Vk0mIHZtLCBKU09iamVjdCosIHNpemVfdCBwcmVDYXBhY2l0eSwgc2l6ZV90IHByb3BlcnR5Q2Fw
YWNpdHksIGJvb2wgaGFzSW5kZXhpbmdIZWFkZXIsIHNpemVfdCBpbmRleGluZ1BheWxvYWRTaXpl
SW5CeXRlcykKIHsKICAgICBzaXplX3Qgc2l6ZSA9IHRvdGFsU2l6ZShwcmVDYXBhY2l0eSwgcHJv
cGVydHlDYXBhY2l0eSwgaGFzSW5kZXhpbmdIZWFkZXIsIGluZGV4aW5nUGF5bG9hZFNpemVJbkJ5
dGVzKTsKLSAgICB2b2lkKiBiYXNlID0gdm0uanNWYWx1ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2Uu
YWxsb2NhdGVOb25WaXJ0dWFsKHZtLCBzaXplLCBudWxscHRyLCBBbGxvY2F0aW9uRmFpbHVyZU1v
ZGU6OkFzc2VydCk7CisgICAgdm9pZCogYmFzZSA9IHZtLmpzVmFsdWVHaWdhY2FnZUF1eGlsaWFy
eVNwYWNlKCkuYWxsb2NhdGVOb25WaXJ0dWFsKHZtLCBzaXplLCBudWxscHRyLCBBbGxvY2F0aW9u
RmFpbHVyZU1vZGU6OkFzc2VydCk7CiAgICAgQnV0dGVyZmx5KiByZXN1bHQgPSBmcm9tQmFzZShi
YXNlLCBwcmVDYXBhY2l0eSwgcHJvcGVydHlDYXBhY2l0eSk7CiAKICAgICByZXR1cm4gcmVzdWx0
OwpAQCAtOTgsNyArOTgsNyBAQCBpbmxpbmUgQnV0dGVyZmx5KiBCdXR0ZXJmbHk6OmNyZWF0ZVVu
aW5pCiBpbmxpbmUgQnV0dGVyZmx5KiBCdXR0ZXJmbHk6OnRyeUNyZWF0ZShWTSYgdm0sIEpTT2Jq
ZWN0Kiwgc2l6ZV90IHByZUNhcGFjaXR5LCBzaXplX3QgcHJvcGVydHlDYXBhY2l0eSwgYm9vbCBo
YXNJbmRleGluZ0hlYWRlciwgY29uc3QgSW5kZXhpbmdIZWFkZXImIGluZGV4aW5nSGVhZGVyLCBz
aXplX3QgaW5kZXhpbmdQYXlsb2FkU2l6ZUluQnl0ZXMpCiB7CiAgICAgc2l6ZV90IHNpemUgPSB0
b3RhbFNpemUocHJlQ2FwYWNpdHksIHByb3BlcnR5Q2FwYWNpdHksIGhhc0luZGV4aW5nSGVhZGVy
LCBpbmRleGluZ1BheWxvYWRTaXplSW5CeXRlcyk7Ci0gICAgdm9pZCogYmFzZSA9IHZtLmpzVmFs
dWVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlLmFsbG9jYXRlTm9uVmlydHVhbCh2bSwgc2l6ZSwgbnVs
bHB0ciwgQWxsb2NhdGlvbkZhaWx1cmVNb2RlOjpSZXR1cm5OdWxsKTsKKyAgICB2b2lkKiBiYXNl
ID0gdm0uanNWYWx1ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UoKS5hbGxvY2F0ZU5vblZpcnR1YWwo
dm0sIHNpemUsIG51bGxwdHIsIEFsbG9jYXRpb25GYWlsdXJlTW9kZTo6UmV0dXJuTnVsbCk7CiAg
ICAgaWYgKCFiYXNlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBCdXR0ZXJmbHkqIHJl
c3VsdCA9IGZyb21CYXNlKGJhc2UsIHByZUNhcGFjaXR5LCBwcm9wZXJ0eUNhcGFjaXR5KTsKQEAg
LTE3NCw3ICsxNzQsNyBAQCBpbmxpbmUgQnV0dGVyZmx5KiBCdXR0ZXJmbHk6Omdyb3dBcnJheVJp
CiAgICAgdm9pZCogdGhlQmFzZSA9IGJhc2UoMCwgcHJvcGVydHlDYXBhY2l0eSk7CiAgICAgc2l6
ZV90IG9sZFNpemUgPSB0b3RhbFNpemUoMCwgcHJvcGVydHlDYXBhY2l0eSwgaGFkSW5kZXhpbmdI
ZWFkZXIsIG9sZEluZGV4aW5nUGF5bG9hZFNpemVJbkJ5dGVzKTsKICAgICBzaXplX3QgbmV3U2l6
ZSA9IHRvdGFsU2l6ZSgwLCBwcm9wZXJ0eUNhcGFjaXR5LCB0cnVlLCBuZXdJbmRleGluZ1BheWxv
YWRTaXplSW5CeXRlcyk7Ci0gICAgdm9pZCogbmV3QmFzZSA9IHZtLmpzVmFsdWVHaWdhY2FnZUF1
eGlsaWFyeVNwYWNlLmFsbG9jYXRlTm9uVmlydHVhbCh2bSwgbmV3U2l6ZSwgbnVsbHB0ciwgQWxs
b2NhdGlvbkZhaWx1cmVNb2RlOjpSZXR1cm5OdWxsKTsKKyAgICB2b2lkKiBuZXdCYXNlID0gdm0u
anNWYWx1ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UoKS5hbGxvY2F0ZU5vblZpcnR1YWwodm0sIG5l
d1NpemUsIG51bGxwdHIsIEFsbG9jYXRpb25GYWlsdXJlTW9kZTo6UmV0dXJuTnVsbCk7CiAgICAg
aWYgKCFuZXdCYXNlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAvLyBGSVhNRTogVGhp
cyBwcm9iYWJseSBzaG91bGRuJ3QgYmUgYSBtZW1jcHkuCkBAIC0yMTEsMTMgKzIxMSwxMyBAQCBp
bmxpbmUgQnV0dGVyZmx5KiBCdXR0ZXJmbHk6OnJlYWxsb2NBcnJhCiAgICAgLy8gT2JqZWN0cyB3
aXRoIG5vIHByb3BlcnRpZXMgYXJlIGNvbW1vbiBpbiBhcnJheXMsIGFuZCB3ZSBhcmUgZm9jdXNp
bmcgb24gdmVyeSBsYXJnZSBhcnJheSBjcmFmdGVkIGJ5IHJlcGVhdGluZyBBcnJheSNwdXNoLCBz
by4uLiB0aGF0J3MgZmluZSEKICAgICBib29sIGNhblJlYWxsb2MgPSAhcHJvcGVydHlDYXBhY2l0
eSAmJiAhdm0uaGVhcC5tdXRhdG9yU2hvdWxkQmVGZW5jZWQoKSAmJiBiaXR3aXNlX2Nhc3Q8SGVh
cENlbGwqPih0aGVCYXNlKS0+aXNQcmVjaXNlQWxsb2NhdGlvbigpOwogICAgIGlmIChjYW5SZWFs
bG9jKSB7Ci0gICAgICAgIHZvaWQqIG5ld0Jhc2UgPSB2bS5qc1ZhbHVlR2lnYWNhZ2VBdXhpbGlh
cnlTcGFjZS5yZWFsbG9jYXRlUHJlY2lzZUFsbG9jYXRpb25Ob25WaXJ0dWFsKHZtLCBiaXR3aXNl
X2Nhc3Q8SGVhcENlbGwqPih0aGVCYXNlKSwgbmV3U2l6ZSwgJmRlZmVycmFsQ29udGV4dCwgQWxs
b2NhdGlvbkZhaWx1cmVNb2RlOjpSZXR1cm5OdWxsKTsKKyAgICAgICAgdm9pZCogbmV3QmFzZSA9
IHZtLmpzVmFsdWVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlKCkucmVhbGxvY2F0ZVByZWNpc2VBbGxv
Y2F0aW9uTm9uVmlydHVhbCh2bSwgYml0d2lzZV9jYXN0PEhlYXBDZWxsKj4odGhlQmFzZSksIG5l
d1NpemUsICZkZWZlcnJhbENvbnRleHQsIEFsbG9jYXRpb25GYWlsdXJlTW9kZTo6UmV0dXJuTnVs
bCk7CiAgICAgICAgIGlmICghbmV3QmFzZSkKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwog
ICAgICAgICByZXR1cm4gZnJvbUJhc2UobmV3QmFzZSwgMCwgcHJvcGVydHlDYXBhY2l0eSk7CiAg
ICAgfQogCi0gICAgdm9pZCogbmV3QmFzZSA9IHZtLmpzVmFsdWVHaWdhY2FnZUF1eGlsaWFyeVNw
YWNlLmFsbG9jYXRlTm9uVmlydHVhbCh2bSwgbmV3U2l6ZSwgJmRlZmVycmFsQ29udGV4dCwgQWxs
b2NhdGlvbkZhaWx1cmVNb2RlOjpSZXR1cm5OdWxsKTsKKyAgICB2b2lkKiBuZXdCYXNlID0gdm0u
anNWYWx1ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UoKS5hbGxvY2F0ZU5vblZpcnR1YWwodm0sIG5l
d1NpemUsICZkZWZlcnJhbENvbnRleHQsIEFsbG9jYXRpb25GYWlsdXJlTW9kZTo6UmV0dXJuTnVs
bCk7CiAgICAgaWYgKCFuZXdCYXNlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBnY1Nh
ZmVNZW1jcHkoc3RhdGljX2Nhc3Q8SlNWYWx1ZSo+KG5ld0Jhc2UpLCBzdGF0aWNfY2FzdDxKU1Zh
bHVlKj4odGhlQmFzZSksIG9sZFNpemUpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQ2FjaGVkVHlwZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9DYWNoZWRUeXBlcy5oCShyZXZpc2lvbiAyODYwODEpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9DYWNoZWRUeXBlcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEs
NSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOC0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxOC0yMDIxIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzksNiAr
MzksNyBAQCBjbGFzcyBDYWNoZWRCeXRlY29kZTsKIGNsYXNzIFNvdXJjZUNvZGVLZXk7CiBjbGFz
cyBVbmxpbmtlZENvZGVCbG9jazsKIGNsYXNzIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2s7Citj
bGFzcyBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTsKIAogZW51bSBjbGFzcyBTb3VyY2VDb2Rl
VHlwZTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2xvbmVkQXJndW1l
bnRzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2xvbmVk
QXJndW1lbnRzLmgJKHJldmlzaW9uIDI4NjA4MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0Nsb25lZEFyZ3VtZW50cy5oCSh3b3JraW5nIGNvcHkpCkBAIC00Niw3ICs0Niw3IEBA
IHB1YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAg
ICB7CiAgICAgICAgIHN0YXRpY19hc3NlcnQoIUNlbGxUeXBlOjpuZWVkc0Rlc3RydWN0aW9uLCAi
Iik7Ci0gICAgICAgIHJldHVybiAmdm0uY2xvbmVkQXJndW1lbnRzU3BhY2U7CisgICAgICAgIHJl
dHVybiAmdm0uY2xvbmVkQXJndW1lbnRzU3BhY2UoKTsKICAgICB9CiAgICAgCiBwcml2YXRlOgpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29uc29sZU9iamVjdC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbnNvbGVPYmplY3QuaAko
cmV2aXNpb24gMjg2MDgxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29uc29s
ZU9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw3ICszNyw3IEBAIHB1YmxpYzoKICAgICBz
dGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAgIFNU
QVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKENvbnNvbGVPYmplY3QsIEJhc2UpOwot
ICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0u
cGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBDb25zb2xlT2JqZWN0KiBj
cmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0N1c3RvbUdldHRl
clNldHRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0N1
c3RvbUdldHRlclNldHRlci5oCShyZXZpc2lvbiAyODYwODEpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9DdXN0b21HZXR0ZXJTZXR0ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNDMs
NyArNDMsNyBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUsIFN1YnNw
YWNlQWNjZXNzPgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQog
ICAgIHsKLSAgICAgICAgcmV0dXJuICZ2bS5jdXN0b21HZXR0ZXJTZXR0ZXJTcGFjZTsKKyAgICAg
ICAgcmV0dXJuICZ2bS5jdXN0b21HZXR0ZXJTZXR0ZXJTcGFjZSgpOwogICAgIH0KIAogICAgIHN0
YXRpYyBDdXN0b21HZXR0ZXJTZXR0ZXIqIGNyZWF0ZShWTSYgdm0sIEN1c3RvbUdldHRlciBjdXN0
b21HZXR0ZXIsIEN1c3RvbVNldHRlciBjdXN0b21TZXR0ZXIpCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9ET01BdHRyaWJ1dGVHZXR0ZXJTZXR0ZXIuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9ET01BdHRyaWJ1dGVHZXR0ZXJTZXR0ZXIu
aAkocmV2aXNpb24gMjg2MDgxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRE9N
QXR0cmlidXRlR2V0dGVyU2V0dGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTQzLDcgKzQzLDcgQEAg
cHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlLCBTdWJzcGFjZUFjY2Vzcz4K
ICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7Ci0gICAg
ICAgIHJldHVybiAmdm0uZG9tQXR0cmlidXRlR2V0dGVyU2V0dGVyU3BhY2U7CisgICAgICAgIHJl
dHVybiAmdm0uZG9tQXR0cmlidXRlR2V0dGVyU2V0dGVyU3BhY2UoKTsKICAgICB9CiAKICAgICBz
dGF0aWMgRE9NQXR0cmlidXRlR2V0dGVyU2V0dGVyKiBjcmVhdGUoVk0mIHZtLCBDdXN0b21HZXR0
ZXIgY3VzdG9tR2V0dGVyLCBDdXN0b21TZXR0ZXIgY3VzdG9tU2V0dGVyLCBET01BdHRyaWJ1dGVB
bm5vdGF0aW9uIGRvbUF0dHJpYnV0ZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0RhdGVJbnN0YW5jZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0RhdGVJbnN0YW5jZS5oCShyZXZpc2lvbiAyODYwODEpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9EYXRlSW5zdGFuY2UuaAkod29ya2luZyBjb3B5KQpAQCAtMzcsNyAr
MzcsNyBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUsIFN1YnNwYWNl
QWNjZXNzIG1vZGU+CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0p
CiAgICAgewotICAgICAgICByZXR1cm4gJnZtLmRhdGVJbnN0YW5jZVNwYWNlOworICAgICAgICBy
ZXR1cm4gJnZtLmRhdGVJbnN0YW5jZVNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIERhdGVJ
bnN0YW5jZSogY3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGRvdWJsZSBkYXRl
KQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZVByb3RvdHlwZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVQcm90b3R5cGUu
aAkocmV2aXNpb24gMjg2MDgxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0
ZVByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw3ICszNSw3IEBAIHB1YmxpYzoKICAg
ICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAg
IFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKERhdGVQcm90b3R5cGUsIEJhc2Up
OwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAm
dm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBEYXRlUHJvdG90eXBl
KiBjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RpcmVjdEFy
Z3VtZW50cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Rp
cmVjdEFyZ3VtZW50cy5oCShyZXZpc2lvbiAyODYwODEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9EaXJlY3RBcmd1bWVudHMuaAkod29ya2luZyBjb3B5KQpAQCAtNTAsNyArNTAs
NyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIENvbXBsZXRlU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZN
JiB2bSkKICAgICB7CiAgICAgICAgIHN0YXRpY19hc3NlcnQoIUNlbGxUeXBlOjpuZWVkc0Rlc3Ry
dWN0aW9uLCAiIik7Ci0gICAgICAgIHJldHVybiAmdm0udmFyaWFibGVTaXplZENlbGxTcGFjZTsK
KyAgICAgICAgcmV0dXJuICZ2bS52YXJpYWJsZVNpemVkQ2VsbFNwYWNlKCk7CiAgICAgfQogCiAg
ICAgLy8gQ3JlYXRlcyBhbiBhcmd1bWVudHMgb2JqZWN0IGJ1dCBsZWF2ZXMgaXQgdW5pbml0aWFs
aXplZC4gVGhpcyBpcyBkYW5nZXJvdXMgaWYgd2UgR0MgcmlnaHQKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yUHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JQcm90b3R5cGUuaAkocmV2aXNpb24gMjg2MDgx
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JQcm90b3R5cGUuaAkod29y
a2luZyBjb3B5KQpAQCAtNDUsNyArNDUsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIElzb1N1YnNw
YWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lT
T19TVUJTUEFDRV9TSEFSQUJMRShFcnJvclByb3RvdHlwZUJhc2UsIEJhc2UpOwotICAgICAgICBy
ZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmpl
Y3RTcGFjZSgpOwogICAgIH0KIAogICAgIERFQ0xBUkVfSU5GTzsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvbi5oCShyZXZpc2lvbiAyODYwODEpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNlcHRpb24uaAkod29ya2luZyBjb3B5KQpAQCAt
NDAsNyArNDAsNyBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUsIFN1
YnNwYWNlQWNjZXNzIG1vZGU+CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihW
TSYgdm0pCiAgICAgewotICAgICAgICByZXR1cm4gJnZtLmV4Y2VwdGlvblNwYWNlOworICAgICAg
ICByZXR1cm4gJnZtLmV4Y2VwdGlvblNwYWNlKCk7CiAgICAgfQogCiAgICAgZW51bSBTdGFja0Nh
cHR1cmVBY3Rpb24gewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRmluYWxp
emF0aW9uUmVnaXN0cnlQcm90b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9GaW5hbGl6YXRpb25SZWdpc3RyeVByb3RvdHlwZS5oCShyZXZpc2lvbiAy
ODYwODEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GaW5hbGl6YXRpb25SZWdp
c3RyeVByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw3ICszNyw3IEBAIHB1YmxpYzoK
ICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAg
ICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEZpbmFsaXphdGlvblJlZ2lz
dHJ5UHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNl
OworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBz
dGF0aWMgRmluYWxpemF0aW9uUmVnaXN0cnlQcm90b3R5cGUqIGNyZWF0ZShWTSYgdm0sIEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlKQpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25FeGVjdXRhYmxlLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25FeGVjdXRhYmxlLmgJ
KHJldmlzaW9uIDI4NjA4MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0
aW9uRXhlY3V0YWJsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00Niw3ICs0Niw3IEBAIHB1YmxpYzoK
ICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vic3BhY2VBY2Nlc3M+CiAgICAgc3Rh
dGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewotICAgICAgICByZXR1
cm4gJnZtLmZ1bmN0aW9uRXhlY3V0YWJsZVNwYWNlLnNwYWNlOworICAgICAgICByZXR1cm4gJnZt
LmZ1bmN0aW9uRXhlY3V0YWJsZVNwYWNlKCkuc3BhY2U7CiAgICAgfQogCiAgICAgc3RhdGljIEZ1
bmN0aW9uRXhlY3V0YWJsZSogY3JlYXRlKFZNJiB2bSwgU2NyaXB0RXhlY3V0YWJsZSogdG9wTGV2
ZWxFeGVjdXRhYmxlLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIFVubGlua2VkRnVuY3Rpb25F
eGVjdXRhYmxlKiB1bmxpbmtlZEV4ZWN1dGFibGUsIEludHJpbnNpYyBpbnRyaW5zaWMsIGJvb2wg
aXNJbnNpZGVPcmRpbmFyeUZ1bmN0aW9uKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5oCShyZXZp
c2lvbiAyODYwODEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JG
dW5jdGlvblByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00MCw3ICs0MCw3IEBAIHB1Ymxp
YzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAg
ICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEdlbmVyYXRvckZ1bmN0
aW9uUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNl
OworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBz
dGF0aWMgR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUqIGNyZWF0ZShWTSYgdm0sIFN0cnVjdHVy
ZSogc3RydWN0dXJlKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJh
dG9yUHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvR2VuZXJhdG9yUHJvdG90eXBlLmgJKHJldmlzaW9uIDI4NjA4MSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvclByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBA
IC00MSw3ICs0MSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNl
Rm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NI
QVJBQkxFKEdlbmVyYXRvclByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxh
aW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAg
ICAgfQogCiAgICAgc3RhdGljIEdlbmVyYXRvclByb3RvdHlwZSogY3JlYXRlKFZNJiB2bSwgSlNH
bG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0dldHRlclNldHRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0dldHRlclNldHRlci5oCShyZXZpc2lvbiAyODYwODEpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZXR0ZXJTZXR0ZXIuaAkod29ya2luZyBjb3B5
KQpAQCAtNTksNyArNTksNyBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5
cGUsIFN1YnNwYWNlQWNjZXNzPgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3Io
Vk0mIHZtKQogICAgIHsKLSAgICAgICAgcmV0dXJuICZ2bS5nZXR0ZXJTZXR0ZXJTcGFjZTsKKyAg
ICAgICAgcmV0dXJuICZ2bS5nZXR0ZXJTZXR0ZXJTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRp
YyBHZXR0ZXJTZXR0ZXIqIGNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEpTT2JqZWN0KiBnZXR0ZXIsIEpTT2JqZWN0KiBzZXR0ZXIpCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9IYXNoTWFwSW1wbC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0hhc2hNYXBJbXBsLmgJKHJldmlzaW9uIDI4NjA4MSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0hhc2hNYXBJbXBsLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTIxMyw3ICsyMTMsNyBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBhdXRvIHNjb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgICAgIHNpemVfdCBhbGxvY2F0aW9uU2l6
ZSA9IEhhc2hNYXBCdWZmZXI6OmFsbG9jYXRpb25TaXplKGNhcGFjaXR5KTsKLSAgICAgICAgdm9p
ZCogZGF0YSA9IHZtLmpzVmFsdWVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlLmFsbG9jYXRlTm9uVmly
dHVhbCh2bSwgYWxsb2NhdGlvblNpemUsIG51bGxwdHIsIEFsbG9jYXRpb25GYWlsdXJlTW9kZTo6
UmV0dXJuTnVsbCk7CisgICAgICAgIHZvaWQqIGRhdGEgPSB2bS5qc1ZhbHVlR2lnYWNhZ2VBdXhp
bGlhcnlTcGFjZSgpLmFsbG9jYXRlTm9uVmlydHVhbCh2bSwgYWxsb2NhdGlvblNpemUsIG51bGxw
dHIsIEFsbG9jYXRpb25GYWlsdXJlTW9kZTo6UmV0dXJuTnVsbCk7CiAgICAgICAgIGlmICghZGF0
YSkgewogICAgICAgICAgICAgdGhyb3dPdXRPZk1lbW9yeUVycm9yKGdsb2JhbE9iamVjdCwgc2Nv
cGUpOwogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9JbnRlcm5hbEZ1bmN0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50ZXJuYWxGdW5jdGlvbi5oCShyZXZpc2lvbiAyODYwODEp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRlcm5hbEZ1bmN0aW9uLmgJKHdv
cmtpbmcgY29weSkKQEAgLTQxLDcgKzQxLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJc29TdWJz
cGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAgICAgc3RhdGljX2Fzc2VydChz
aXplb2YoQ2VsbFR5cGUpID09IHNpemVvZihJbnRlcm5hbEZ1bmN0aW9uKSwgIkludGVybmFsRnVu
Y3Rpb24gc3ViY2xhc3NlcyB0aGF0IGFkZCBmaWVsZHMgbmVlZCB0byBvdmVycmlkZSBzdWJzcGFj
ZUZvcjw+KCkiKTsKLSAgICAgICAgcmV0dXJuICZ2bS5pbnRlcm5hbEZ1bmN0aW9uU3BhY2U7Cisg
ICAgICAgIHJldHVybiAmdm0uaW50ZXJuYWxGdW5jdGlvblNwYWNlKCk7CiAgICAgfQogCiAgICAg
REVDTEFSRV9FWFBPUlRfSU5GTzsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0ludGxDb2xsYXRvclByb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0ludGxDb2xsYXRvclByb3RvdHlwZS5oCShyZXZpc2lvbiAyODYwODEpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsQ29sbGF0b3JQcm90b3R5cGUuaAko
d29ya2luZyBjb3B5KQpAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTUg
QW5keSBWYW5XYWdvbmVyIChhbmR5QHZhbndhZ29uZXIuZmFtaWx5KQotICogQ29weXJpZ2h0IChD
KSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAxOS0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwpAQCAtMzksNyArMzksNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIElz
b1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNT
RVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShJbnRsQ29sbGF0b3JQcm90b3R5cGUsIEJhc2UpOwot
ICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0u
cGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBJbnRsQ29sbGF0b3JQcm90
b3R5cGUqIGNyZWF0ZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKik7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGF0ZVRp
bWVGb3JtYXRQcm90b3R5cGUuaAkocmV2aXNpb24gMjg2MDgxKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTEsNiArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDE1IEFuZHkgVmFuV2Fn
b25lciAoYW5keUB2YW53YWdvbmVyLmZhbWlseSkKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTktMjAyMSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTM5LDcgKzM5LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSog
c3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VC
U1BBQ0VfU0hBUkFCTEUoSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlLCBCYXNlKTsKLSAgICAg
ICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWlu
T2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgSW50bERhdGVUaW1lRm9ybWF0UHJv
dG90eXBlKiBjcmVhdGUoVk0mLCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSopOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERpc3BsYXlOYW1lc1Byb3RvdHlwZS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEaXNwbGF5
TmFtZXNQcm90b3R5cGUuaAkocmV2aXNpb24gMjg2MDgxKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSW50bERpc3BsYXlOYW1lc1Byb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAtMjAyMSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM4
LDcgKzM4LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3Io
Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFC
TEUoSW50bERpc3BsYXlOYW1lc1Byb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0u
cGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7
CiAgICAgfQogCiAgICAgc3RhdGljIEludGxEaXNwbGF5TmFtZXNQcm90b3R5cGUqIGNyZWF0ZShW
TSYsIFN0cnVjdHVyZSopOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50
bExpc3RGb3JtYXRQcm90b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9JbnRsTGlzdEZvcm1hdFByb3RvdHlwZS5oCShyZXZpc2lvbiAyODYwODEpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTGlzdEZvcm1hdFByb3RvdHlwZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAy
MCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAt
MjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTM4LDcgKzM4LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJc29TdWJz
cGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9J
U09fU1VCU1BBQ0VfU0hBUkFCTEUoSW50bExpc3RGb3JtYXRQcm90b3R5cGUsIEJhc2UpOwotICAg
ICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxh
aW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBJbnRsTGlzdEZvcm1hdFByb3Rv
dHlwZSogY3JlYXRlKFZNJiwgU3RydWN0dXJlKik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9JbnRsTG9jYWxlUHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bExvY2FsZVByb3RvdHlwZS5oCShyZXZpc2lvbiAyODYw
ODEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTG9jYWxlUHJvdG90eXBl
LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAy
MDIwIFNvbnkgSW50ZXJhY3RpdmUgRW50ZXJ0YWlubWVudCBJbmMuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCkBAIC0zOCw3ICszOSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vi
c3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRf
SVNPX1NVQlNQQUNFX1NIQVJBQkxFKEludGxMb2NhbGVQcm90b3R5cGUsIEJhc2UpOwotICAgICAg
ICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5P
YmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBJbnRsTG9jYWxlUHJvdG90eXBlKiBj
cmVhdGUoVk0mLCBTdHJ1Y3R1cmUqKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0ludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlLmgJKHJldmlzaW9u
IDI4NjA4MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3Jt
YXRQcm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiBDb3B5
cmlnaHQgKEMpIDIwMTUgQW5keSBWYW5XYWdvbmVyIChhbmR5QHZhbndhZ29uZXIuZmFtaWx5KQot
ICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAxOS0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzksNyArMzksNyBAQCBwdWJsaWM6
CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewogICAg
ICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShJbnRsTnVtYmVyRm9ybWF0
UHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOwor
ICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0
aWMgSW50bE51bWJlckZvcm1hdFByb3RvdHlwZSogY3JlYXRlKFZNJiwgSlNHbG9iYWxPYmplY3Qq
LCBTdHJ1Y3R1cmUqKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxP
YmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRs
T2JqZWN0LmgJKHJldmlzaW9uIDI4NjA4MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0ludGxPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiBD
b3B5cmlnaHQgKEMpIDIwMTUgQW5keSBWYW5XYWdvbmVyIChhbmR5QHZhbndhZ29uZXIuZmFtaWx5
KQotICogQ29weXJpZ2h0IChDKSAyMDE5LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE5LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDIwIFNvbnkgSW50ZXJhY3RpdmUgRW50ZXJ0YWlu
bWVudCBJbmMuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC03Niw3ICs3Niw3IEBAIHB1YmxpYzoKICAg
ICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAg
IFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEludGxPYmplY3QsIEJhc2UpOwot
ICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0u
cGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBJbnRsT2JqZWN0KiBjcmVh
dGUoVk0mLCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSopOwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSW50bFBsdXJhbFJ1bGVzUHJvdG90eXBlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFBsdXJhbFJ1bGVzUHJvdG90eXBl
LmgJKHJldmlzaW9uIDI4NjA4MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lu
dGxQbHVyYWxSdWxlc1Byb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNiBAQAog
LyoKICAqIENvcHlyaWdodCAoQykgMjAxOCBBbmR5IFZhbldhZ29uZXIgKGFuZHlAdmFud2Fnb25l
ci5mYW1pbHkpCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE5LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zOSw3ICszOSw3
IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkK
ICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEludGxQ
bHVyYWxSdWxlc1Byb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmpl
Y3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQog
CiAgICAgc3RhdGljIEludGxQbHVyYWxSdWxlc1Byb3RvdHlwZSogY3JlYXRlKFZNJiwgSlNHbG9i
YWxPYmplY3QqLCBTdHJ1Y3R1cmUqKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0ludGxSZWxhdGl2ZVRpbWVGb3JtYXRQcm90b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsUmVsYXRpdmVUaW1lRm9ybWF0UHJvdG90eXBl
LmgJKHJldmlzaW9uIDI4NjA4MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lu
dGxSZWxhdGl2ZVRpbWVGb3JtYXRQcm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsx
LDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMjAgU29ueSBJbnRlcmFjdGl2ZSBFbnRlcnRh
aW5tZW50IEluYy4KKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM4LDcgKzM5LDcg
QEAgcHVibGljOgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQog
ICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSW50bFJl
bGF0aXZlVGltZUZvcm1hdFByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxh
aW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAg
ICAgfQogCiAgICAgc3RhdGljIEludGxSZWxhdGl2ZVRpbWVGb3JtYXRQcm90b3R5cGUqIGNyZWF0
ZShWTSYsIFN0cnVjdHVyZSopOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SW50bFNlZ21lbnRJdGVyYXRvclByb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0ludGxTZWdtZW50SXRlcmF0b3JQcm90b3R5cGUuaAkocmV2aXNp
b24gMjg2MDgxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFNlZ21lbnRJ
dGVyYXRvclByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMjAtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM4LDcgKzM4LDcgQEAgcHVibGljOgog
ICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAg
ICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSW50bFNlZ21lbnRJdGVyYXRv
clByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsK
KyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAgc3Rh
dGljIEludGxTZWdtZW50SXRlcmF0b3JQcm90b3R5cGUqIGNyZWF0ZShWTSYsIFN0cnVjdHVyZSop
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFNlZ21lbnRlclByb3Rv
dHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxT
ZWdtZW50ZXJQcm90b3R5cGUuaAkocmV2aXNpb24gMjg2MDgxKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSW50bFNlZ21lbnRlclByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAtMjAyMSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM4
LDcgKzM4LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3Io
Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFC
TEUoSW50bFNlZ21lbnRlclByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxh
aW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAg
ICAgfQogCiAgICAgc3RhdGljIEludGxTZWdtZW50ZXJQcm90b3R5cGUqIGNyZWF0ZShWTSYsIFN0
cnVjdHVyZSopOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFNlZ21l
bnRzUHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSW50bFNlZ21lbnRzUHJvdG90eXBlLmgJKHJldmlzaW9uIDI4NjA4MSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxTZWdtZW50c1Byb3RvdHlwZS5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAtMjAyMSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
QEAgLTM4LDcgKzM4LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3Bh
Y2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0Vf
U0hBUkFCTEUoSW50bFNlZ21lbnRzUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2
bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2Uo
KTsKICAgICB9CiAKICAgICBzdGF0aWMgSW50bFNlZ21lbnRzUHJvdG90eXBlKiBjcmVhdGUoVk0m
LCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSopOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSXRlcmF0b3JQcm90b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9JdGVyYXRvclByb3RvdHlwZS5oCShyZXZpc2lvbiAyODYwODEp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JdGVyYXRvclByb3RvdHlwZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC0zOSw3ICszOSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vi
c3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRf
SVNPX1NVQlNQQUNFX1NIQVJBQkxFKEl0ZXJhdG9yUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAg
cmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2Jq
ZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgSXRlcmF0b3JQcm90b3R5cGUqIGNyZWF0
ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0
dXJlKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5jcHAJKHJl
dmlzaW9uIDI4NjA4MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXku
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Niw3ICs1Niw3IEBAIEpTQXJyYXkqIEpTQXJyYXk6OnRy
eUNyZWF0ZVVuaW5pdGlhbGl6ZWQKICAgICAgICAgICAgIHx8IGhhc0NvbnRpZ3VvdXMoaW5kZXhp
bmdUeXBlKSk7CiAKICAgICAgICAgdW5zaWduZWQgdmVjdG9yTGVuZ3RoID0gQnV0dGVyZmx5Ojpv
cHRpbWFsQ29udGlndW91c1ZlY3Rvckxlbmd0aChzdHJ1Y3R1cmUsIGluaXRpYWxMZW5ndGgpOwot
ICAgICAgICB2b2lkKiB0ZW1wID0gdm0uanNWYWx1ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UuYWxs
b2NhdGVOb25WaXJ0dWFsKAorICAgICAgICB2b2lkKiB0ZW1wID0gdm0uanNWYWx1ZUdpZ2FjYWdl
QXV4aWxpYXJ5U3BhY2UoKS5hbGxvY2F0ZU5vblZpcnR1YWwoCiAgICAgICAgICAgICB2bSwKICAg
ICAgICAgICAgIEJ1dHRlcmZseTo6dG90YWxTaXplKDAsIG91dE9mTGluZVN0b3JhZ2UsIHRydWUs
IHZlY3Rvckxlbmd0aCAqIHNpemVvZihFbmNvZGVkSlNWYWx1ZSkpLAogICAgICAgICAgICAgZGVm
ZXJyYWxDb250ZXh0LCBBbGxvY2F0aW9uRmFpbHVyZU1vZGU6OlJldHVybk51bGwpOwpAQCAtNzgs
NyArNzgsNyBAQCBKU0FycmF5KiBKU0FycmF5Ojp0cnlDcmVhdGVVbmluaXRpYWxpemVkCiAgICAg
ICAgICAgICB8fCBpbmRleGluZ1R5cGUgPT0gQXJyYXlXaXRoQXJyYXlTdG9yYWdlKTsKICAgICAg
ICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBpbmRleEJpYXMgPSAwOwogICAgICAgICB1bnNp
Z25lZCB2ZWN0b3JMZW5ndGggPSBBcnJheVN0b3JhZ2U6Om9wdGltYWxWZWN0b3JMZW5ndGgoaW5k
ZXhCaWFzLCBzdHJ1Y3R1cmUsIGluaXRpYWxMZW5ndGgpOwotICAgICAgICB2b2lkKiB0ZW1wID0g
dm0uanNWYWx1ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UuYWxsb2NhdGVOb25WaXJ0dWFsKAorICAg
ICAgICB2b2lkKiB0ZW1wID0gdm0uanNWYWx1ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UoKS5hbGxv
Y2F0ZU5vblZpcnR1YWwoCiAgICAgICAgICAgICB2bSwKICAgICAgICAgICAgIEJ1dHRlcmZseTo6
dG90YWxTaXplKGluZGV4Qmlhcywgb3V0T2ZMaW5lU3RvcmFnZSwgdHJ1ZSwgQXJyYXlTdG9yYWdl
OjpzaXplRm9yKHZlY3Rvckxlbmd0aCkpLAogICAgICAgICAgICAgZGVmZXJyYWxDb250ZXh0LCBB
bGxvY2F0aW9uRmFpbHVyZU1vZGU6OlJldHVybk51bGwpOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNBcnJheS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTQXJyYXkuaAkocmV2aXNpb24gMjg2MDgxKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5oCSh3b3JraW5nIGNvcHkpCkBAIC01MSw3ICs1MSw3
IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vic3BhY2VBY2Nl
c3M+CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewot
ICAgICAgICByZXR1cm4gJnZtLmFycmF5U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0uYXJyYXlT
cGFjZSgpOwogICAgIH0KICAgICAgICAgCiBwcm90ZWN0ZWQ6CkBAIC0yNDQsNyArMjQ0LDcgQEAg
aW5saW5lIEpTQXJyYXkqIEpTQXJyYXk6OnRyeUNyZWF0ZShWTSYgdgogICAgICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAKICAgICAgICAgdW5zaWduZWQgdmVjdG9yTGVuZ3RoID0gQnV0dGVyZmx5
OjpvcHRpbWFsQ29udGlndW91c1ZlY3Rvckxlbmd0aChzdHJ1Y3R1cmUsIHZlY3Rvckxlbmd0aEhp
bnQpOwotICAgICAgICB2b2lkKiB0ZW1wID0gdm0uanNWYWx1ZUdpZ2FjYWdlQXV4aWxpYXJ5U3Bh
Y2UuYWxsb2NhdGVOb25WaXJ0dWFsKAorICAgICAgICB2b2lkKiB0ZW1wID0gdm0uanNWYWx1ZUdp
Z2FjYWdlQXV4aWxpYXJ5U3BhY2UoKS5hbGxvY2F0ZU5vblZpcnR1YWwoCiAgICAgICAgICAgICB2
bSwKICAgICAgICAgICAgIEJ1dHRlcmZseTo6dG90YWxTaXplKDAsIG91dE9mTGluZVN0b3JhZ2Us
IHRydWUsIHZlY3Rvckxlbmd0aCAqIHNpemVvZihFbmNvZGVkSlNWYWx1ZSkpLAogICAgICAgICAg
ICAgbnVsbHB0ciwgQWxsb2NhdGlvbkZhaWx1cmVNb2RlOjpSZXR1cm5OdWxsKTsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJQcm90b3R5cGUuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyUHJv
dG90eXBlLmgJKHJldmlzaW9uIDI4NjA4MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQXJyYXlCdWZmZXJQcm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUg
QEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zNyw3ICsz
Nyw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2
bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpT
QXJyYXlCdWZmZXJQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2Jq
ZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0K
IAogICAgIHN0YXRpYyBKU0FycmF5QnVmZmVyUHJvdG90eXBlKiBjcmVhdGUoVk0mLCBKU0dsb2Jh
bE9iamVjdCosIFN0cnVjdHVyZSosIEFycmF5QnVmZmVyU2hhcmluZ01vZGUgPSBBcnJheUJ1ZmZl
clNoYXJpbmdNb2RlOjpEZWZhdWx0KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQXJyYXlCdWZmZXJWaWV3LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyVmlldy5jcHAJKHJldmlzaW9uIDI4NjA4MSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNjQsNyArNjQsNyBAQCBKU0FycmF5QnVmZmVyVmlldzo6Q29uc3RydWN0
aW9uQ29udGV4dDo6CiAgICAgICAgIC8vIEF0dGVtcHQgR0MgYWxsb2NhdGlvbi4KICAgICAgICAg
dm9pZCogdGVtcDsKICAgICAgICAgc2l6ZV90IHNpemUgPSBzaXplT2YobGVuZ3RoLCBlbGVtZW50
U2l6ZSk7Ci0gICAgICAgIHRlbXAgPSB2bS5wcmltaXRpdmVHaWdhY2FnZUF1eGlsaWFyeVNwYWNl
LmFsbG9jYXRlTm9uVmlydHVhbCh2bSwgc2l6ZSwgbnVsbHB0ciwgQWxsb2NhdGlvbkZhaWx1cmVN
b2RlOjpSZXR1cm5OdWxsKTsKKyAgICAgICAgdGVtcCA9IHZtLnByaW1pdGl2ZUdpZ2FjYWdlQXV4
aWxpYXJ5U3BhY2UoKS5hbGxvY2F0ZU5vblZpcnR1YWwodm0sIHNpemUsIG51bGxwdHIsIEFsbG9j
YXRpb25GYWlsdXJlTW9kZTo6UmV0dXJuTnVsbCk7CiAgICAgICAgIGlmICghdGVtcCkKICAgICAg
ICAgICAgIHJldHVybjsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNC
aWdJbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
QmlnSW50LmNwcAkocmV2aXNpb24gMjg2MDgxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNCaWdJbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTcsNyArMTE3LDcgQEAgaW5s
aW5lIEpTQmlnSW50KiBKU0JpZ0ludDo6Y3JlYXRlV2l0aExlbgogICAgIH0KIAogICAgIEFTU0VS
VChsZW5ndGggPD0gbWF4TGVuZ3RoKTsKLSAgICB2b2lkKiBkYXRhID0gdm0ucHJpbWl0aXZlR2ln
YWNhZ2VBdXhpbGlhcnlTcGFjZS5hbGxvY2F0ZU5vblZpcnR1YWwodm0sIGxlbmd0aCAqIHNpemVv
ZihEaWdpdCksIG51bGxwdHIsIEFsbG9jYXRpb25GYWlsdXJlTW9kZTo6UmV0dXJuTnVsbCk7Cisg
ICAgdm9pZCogZGF0YSA9IHZtLnByaW1pdGl2ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UoKS5hbGxv
Y2F0ZU5vblZpcnR1YWwodm0sIGxlbmd0aCAqIHNpemVvZihEaWdpdCksIG51bGxwdHIsIEFsbG9j
YXRpb25GYWlsdXJlTW9kZTo6UmV0dXJuTnVsbCk7CiAgICAgaWYgKFVOTElLRUxZKCFkYXRhKSkg
ewogICAgICAgICBpZiAobnVsbE9yR2xvYmFsT2JqZWN0Rm9yT09NKSB7CiAgICAgICAgICAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0JpZ0ludC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTQmlnSW50LmgJKHJldmlzaW9uIDI4NjA4MSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQmlnSW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTU2LDcg
KzU2LDcgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlLCBTdWJzcGFj
ZUFjY2Vzcz4KICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAg
ICB7Ci0gICAgICAgIHJldHVybiAmdm0uYmlnSW50U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0u
YmlnSW50U3BhY2UoKTsKICAgICB9CiAKICAgICBlbnVtIGNsYXNzIEluaXRpYWxpemF0aW9uVHlw
ZSB7IE5vbmUsIFdpdGhaZXJvIH07CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0NhbGxlZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTQ2FsbGVlLmgJKHJldmlzaW9uIDI4NjA4MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTQ2FsbGVlLmgJKHdvcmtpbmcgY29weSkKQEAgLTUwLDcgKzUwLDcgQEAgcHVibGlj
OgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlLCBTdWJzcGFjZUFjY2Vzcz4KICAgICBz
dGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7Ci0gICAgICAgIHJl
dHVybiAmdm0uY2FsbGVlU3BhY2U7CisgICAgICAgIHJldHVybiAmdm0uY2FsbGVlU3BhY2UoKTsK
ICAgICB9CiAKICAgICBzdGF0aWMgSlNDYWxsZWUqIGNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIEpTU2NvcGUqIHNjb3BlKQpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNEYXRhVmlld1Byb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0YVZpZXdQcm90b3R5cGUuaAkocmV2aXNpb24g
Mjg2MDgxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRhVmlld1Byb3Rv
dHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxMy0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAxMy0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzgsNyArMzgsNyBAQCBwdWJsaWM6CiAgICAgc3Rh
dGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFU
SUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU0RhdGFWaWV3UHJvdG90eXBlLCBCYXNl
KTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4g
JnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgSlNEYXRhVmlld1By
b3RvdHlwZSogY3JlYXRlKFZNJiwgU3RydWN0dXJlKik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oCShyZXZpc2lvbiAyODYwODEpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTY2
LDcgKzY2LDcgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlLCBTdWJz
cGFjZUFjY2Vzcz4KICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkK
ICAgICB7Ci0gICAgICAgIHJldHVybiAmdm0uZnVuY3Rpb25TcGFjZTsKKyAgICAgICAgcmV0dXJu
ICZ2bS5mdW5jdGlvblNwYWNlKCk7CiAgICAgfQogICAgIAogICAgIHR5cGVkZWYgSlNDYWxsZWUg
QmFzZTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVk
QXJyYXlWaWV3UHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b3R5cGUuaAkocmV2aXNpb24gMjg2
MDgxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJh
eVZpZXdQcm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDEzLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zOCw3ICszOCw3IEBAIHB1YmxpYzoKICAg
ICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAg
IFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTR2VuZXJpY1R5cGVkQXJyYXlW
aWV3UHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNl
OworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBz
dGF0aWMgSlNHZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b3R5cGUqIGNyZWF0ZSgKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsTGV4aWNhbEVudmlyb25tZW50LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxMZXhp
Y2FsRW52aXJvbm1lbnQuaAkocmV2aXNpb24gMjg2MDgxKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNHbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQuaAkod29ya2luZyBjb3B5KQpA
QCAtMzgsNyArMzgsNyBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUs
IFN1YnNwYWNlQWNjZXNzIG1vZGU+CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZv
cihWTSYgdm0pCiAgICAgewotICAgICAgICByZXR1cm4gJnZtLmdsb2JhbExleGljYWxFbnZpcm9u
bWVudFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLmdsb2JhbExleGljYWxFbnZpcm9ubWVudFNw
YWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIEpTR2xvYmFsTGV4aWNhbEVudmlyb25tZW50KiBj
cmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNTY29wZSogcGFyZW50U2NvcGUp
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ltbXV0YWJsZUJ1dHRlcmZs
eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTSW1tdXRh
YmxlQnV0dGVyZmx5LmgJKHJldmlzaW9uIDI4NjA4MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTSW1tdXRhYmxlQnV0dGVyZmx5LmgJKHdvcmtpbmcgY29weSkKQEAgLTE1Myw3
ICsxNTMsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIENvbXBsZXRlU3Vic3BhY2UqIHN1YnNwYWNl
Rm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAgIC8vIFdlIGFsbG9jYXRlIG91dCBvZiB0aGUgSlNW
YWx1ZSBnaWdhY2FnZSBhcyBvdGhlciBjb2RlIGV4cGVjdHMgYWxsIGJ1dHRlcmZsaWVzIHRvIGxp
dmUgdGhlcmUuCi0gICAgICAgIHJldHVybiAmdm0uaW1tdXRhYmxlQnV0dGVyZmx5SlNWYWx1ZUdp
Z2FjYWdlQXV4aWxpYXJ5U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0uaW1tdXRhYmxlQnV0dGVy
Zmx5SlNWYWx1ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UoKTsKICAgICB9CiAKICAgICAvLyBPbmx5
IGNhbGwgdGhpcyBpZiB5b3UganVzdCBhbGxvY2F0ZWQgdGhpcyBidXR0ZXJmbHkuCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xleGljYWxFbnZpcm9ubWVudC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTGV4aWNhbEVudmlyb25t
ZW50LmgJKHJldmlzaW9uIDI4NjA4MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTTGV4aWNhbEVudmlyb25tZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDcgKzQ0LDcgQEAg
cHVibGljOgogICAgIHN0YXRpYyBDb21wbGV0ZVN1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0p
CiAgICAgewogICAgICAgICBzdGF0aWNfYXNzZXJ0KCFDZWxsVHlwZTo6bmVlZHNEZXN0cnVjdGlv
biwgIiIpOwotICAgICAgICByZXR1cm4gJnZtLnZhcmlhYmxlU2l6ZWRDZWxsU3BhY2U7CisgICAg
ICAgIHJldHVybiAmdm0udmFyaWFibGVTaXplZENlbGxTcGFjZSgpOwogICAgIH0KIAogICAgIHVz
aW5nIEJhc2UgPSBKU1N5bWJvbFRhYmxlT2JqZWN0OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNNb2R1bGVMb2FkZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU01vZHVsZUxvYWRlci5oCShyZXZpc2lvbiAyODYwODEpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZUxvYWRlci5oCSh3b3JraW5nIGNv
cHkpCkBAIC00NCw3ICs0NCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1
YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQ
QUNFX1NIQVJBQkxFKEpTTW9kdWxlTG9hZGVyLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5w
bGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsK
ICAgICB9CiAKICAgICBlbnVtIFN0YXR1cyB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU09OT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNPTk9iamVjdC5oCShyZXZpc2lvbiAyODYwODEpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU09OT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTM4LDcgKzM4
LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZt
KQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNP
Tk9iamVjdCwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAg
ICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGlj
IEpTT05PYmplY3QqIGNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3RJbmxpbmVzLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3RJbmxpbmVzLmgJKHJl
dmlzaW9uIDI4NjA4MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0
SW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC00MSw3ICs0MSw3IEBAIHRlbXBsYXRlPHR5cGVu
YW1lIENlbGxUeXBlLCBTdWJzcGFjZUFjY2UKIENvbXBsZXRlU3Vic3BhY2UqIEpTRmluYWxPYmpl
Y3Q6OnN1YnNwYWNlRm9yKFZNJiB2bSkKIHsKICAgICBzdGF0aWNfYXNzZXJ0KCFDZWxsVHlwZTo6
bmVlZHNEZXN0cnVjdGlvbik7Ci0gICAgcmV0dXJuICZ2bS5jZWxsU3BhY2U7CisgICAgcmV0dXJu
ICZ2bS5jZWxsU3BhY2UoKTsKIH0KIAogLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1j
cmVhdGVsaXN0ZnJvbWFycmF5bGlrZQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNQcm9taXNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNQcm9taXNlLmgJKHJldmlzaW9uIDI4NjA4MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTUHJvbWlzZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw3ICszNyw3IEBAIHB1
YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vic3BhY2VBY2Nlc3MgbW9k
ZT4KICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7Ci0g
ICAgICAgIHJldHVybiAmdm0ucHJvbWlzZVNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnByb21p
c2VTcGFjZSgpOwogICAgIH0KIAogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBKU1Byb21p
c2UqIGNyZWF0ZShWTSYsIFN0cnVjdHVyZSopOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNQcm9taXNlUHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9taXNlUHJvdG90eXBlLmgJKHJldmlzaW9uIDI4NjA4MSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZVByb3RvdHlwZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMy0y
MDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAx
My0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpAQCAtMzgsNyArMzgsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIElzb1N1
YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJU
X0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Byb21pc2VQcm90b3R5cGUsIEJhc2UpOwotICAgICAg
ICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5P
YmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBKU1Byb21pc2VQcm90b3R5cGUqIGNy
ZWF0ZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKik7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUVudW1lcmF0b3IuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lRW51bWVy
YXRvci5jcHAJKHJldmlzaW9uIDI4NjA4MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTUHJvcGVydHlOYW1lRW51bWVyYXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM4LDcg
KzM4LDcgQEAgSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yKiBKU1Byb3BlcnR5TmFtZQogICAgIHVu
c2lnbmVkIHByb3BlcnR5TmFtZXNCdWZmZXJTaXplSW5CeXRlcyA9IENoZWNrZWQ8dW5zaWduZWQ+
KHByb3BlcnR5TmFtZXNTaXplKSAqIHNpemVvZihXcml0ZUJhcnJpZXI8SlNTdHJpbmc+KTsKICAg
ICBXcml0ZUJhcnJpZXI8SlNTdHJpbmc+KiBwcm9wZXJ0eU5hbWVzQnVmZmVyID0gbnVsbHB0cjsK
ICAgICBpZiAocHJvcGVydHlOYW1lc0J1ZmZlclNpemVJbkJ5dGVzKSB7Ci0gICAgICAgIHByb3Bl
cnR5TmFtZXNCdWZmZXIgPSBzdGF0aWNfY2FzdDxXcml0ZUJhcnJpZXI8SlNTdHJpbmc+Kj4odm0u
anNWYWx1ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UuYWxsb2NhdGVOb25WaXJ0dWFsKHZtLCBwcm9w
ZXJ0eU5hbWVzQnVmZmVyU2l6ZUluQnl0ZXMsIG51bGxwdHIsIEFsbG9jYXRpb25GYWlsdXJlTW9k
ZTo6QXNzZXJ0KSk7CisgICAgICAgIHByb3BlcnR5TmFtZXNCdWZmZXIgPSBzdGF0aWNfY2FzdDxX
cml0ZUJhcnJpZXI8SlNTdHJpbmc+Kj4odm0uanNWYWx1ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2Uo
KS5hbGxvY2F0ZU5vblZpcnR1YWwodm0sIHByb3BlcnR5TmFtZXNCdWZmZXJTaXplSW5CeXRlcywg
bnVsbHB0ciwgQWxsb2NhdGlvbkZhaWx1cmVNb2RlOjpBc3NlcnQpKTsKICAgICAgICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IHByb3BlcnR5TmFtZXNTaXplOyArK2kpCiAgICAgICAgICAgICBw
cm9wZXJ0eU5hbWVzQnVmZmVyW2ldLmNsZWFyKCk7CiAgICAgfQpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9y
LmgJKHJldmlzaW9uIDI4NjA4MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
UHJvcGVydHlOYW1lRW51bWVyYXRvci5oCSh3b3JraW5nIGNvcHkpCkBAIC01MSw3ICs1MSw3IEBA
IHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vic3BhY2VBY2Nlc3Mg
bW9kZT4KICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7
Ci0gICAgICAgIHJldHVybiAmdm0ucHJvcGVydHlOYW1lRW51bWVyYXRvclNwYWNlOworICAgICAg
ICByZXR1cm4gJnZtLnByb3BlcnR5TmFtZUVudW1lcmF0b3JTcGFjZSgpOwogICAgIH0KIAogICAg
IHN0YXRpYyBKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3IqIGNyZWF0ZShWTSYsIFN0cnVjdHVyZSos
IHVpbnQzMl90LCB1aW50MzJfdCwgUHJvcGVydHlOYW1lQXJyYXkmJik7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm94eS5oCShyZXZpc2lvbiAyODYwODEpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTM4
LDcgKzM4LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3Io
Vk0mIHZtKQogICAgIHsKICAgICAgICAgc3RhdGljX2Fzc2VydChzaXplb2YoQ2VsbFR5cGUpID09
IHNpemVvZihKU1Byb3h5KSk7Ci0gICAgICAgIHJldHVybiAmdm0uanNQcm94eVNwYWNlOworICAg
ICAgICByZXR1cm4gJnZtLmpzUHJveHlTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBKU1By
b3h5KiBjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNPYmplY3QqIHRhcmdl
dCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuaAkocmV2aXNp
b24gMjg2MDgxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuaAko
d29ya2luZyBjb3B5KQpAQCAtMTExLDcgKzExMSw3IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSwgU3Vic3BhY2VBY2Nlc3M+CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFj
ZUZvcihWTSYgdm0pCiAgICAgewotICAgICAgICByZXR1cm4gJnZtLnN0cmluZ1NwYWNlOworICAg
ICAgICByZXR1cm4gJnZtLnN0cmluZ1NwYWNlKCk7CiAgICAgfQogICAgIAogICAgIC8vIFdlIGVt
cGxveSBvdmVyZmxvdyBjaGVja3MgaW4gbWFueSBwbGFjZXMgd2l0aCB0aGUgYXNzdW1wdGlvbiB0
aGF0IE1heExlbmd0aApAQCAtMjcwLDcgKzI3MCw3IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSwgU3Vic3BhY2VBY2Nlc3M+CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFj
ZUZvcihWTSYgdm0pCiAgICAgewotICAgICAgICByZXR1cm4gJnZtLnJvcGVTdHJpbmdTcGFjZTsK
KyAgICAgICAgcmV0dXJuICZ2bS5yb3BlU3RyaW5nU3BhY2UoKTsKICAgICB9CiAKICAgICAvLyBX
ZSB1c2UgbG93ZXIgM2JpdHMgb2YgZmliZXIwIGZvciBmbGFncy4gVGhlc2UgYml0cyBhcmUgdXNh
YmxlIGR1ZSB0byBhbGlnbm1lbnQsIGFuZCBpdCBpcyBPSyBldmVuIGluIDMyYml0IGFyY2hpdGVj
dHVyZS4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZWRBcnJheVZp
ZXdQcm90b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlLmgJKHJldmlzaW9uIDI4NjA4MSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZWRBcnJheVZpZXdQcm90b3R5cGUuaAkod29y
a2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMjEg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCkBAIC0zNyw3ICszNyw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2Uq
IHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NV
QlNQQUNFX1NIQVJBQkxFKEpTVHlwZWRBcnJheVZpZXdQcm90b3R5cGUsIEJhc2UpOwotICAgICAg
ICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5P
YmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBKU1R5cGVkQXJyYXlWaWV3UHJvdG90
eXBlKiBjcmVhdGUoVk0mLCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSopOwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFwSXRlcmF0b3JQcm90b3R5cGUuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXBJdGVyYXRvclByb3RvdHlw
ZS5oCShyZXZpc2lvbiAyODYwODEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9N
YXBJdGVyYXRvclByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw3ICszNyw3IEBAIHB1
YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7
CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKE1hcEl0ZXJhdG9y
UHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOwor
ICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0
aWMgTWFwSXRlcmF0b3JQcm90b3R5cGUqIGNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlKQpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvTWFwUHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvTWFwUHJvdG90eXBlLmgJKHJldmlzaW9uIDI4NjA4MSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hcFByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC0zNyw3ICszNyw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNw
YWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNF
X1NIQVJBQkxFKE1hcFByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5P
YmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAg
fQogCiAgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6
OlN0cnVjdHVyZUZsYWdzIHwgSGFzU3RhdGljUHJvcGVydHlUYWJsZTsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL01hdGhPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXRoT2JqZWN0LmgJKHJldmlzaW9uIDI4NjA4MSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hdGhPYmplY3QuaAkod29ya2luZyBjb3B5
KQpAQCAtMzIsNyArMzIsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJz
cGFjZUZvcihWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFD
RV9TSEFSQUJMRShNYXRoT2JqZWN0LCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9i
amVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9
CiAKICAgICBzdGF0aWMgTWF0aE9iamVjdCogY3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9OYXRpdmVFcnJvclByb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUVycm9yUHJvdG90eXBlLmgJKHJldmlz
aW9uIDI4NjA4MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUVycm9y
UHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM0LDcgKzM0LDcgQEAgcHVibGljOgogICAg
IHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAgICAg
U1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoTmF0aXZlRXJyb3JQcm90b3R5cGUs
IEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJl
dHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBTdHJ1Y3R1
cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IEpTVmFsdWUgcHJvdG90eXBlKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
TmF0aXZlRXhlY3V0YWJsZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL05hdGl2ZUV4ZWN1dGFibGUuaAkocmV2aXNpb24gMjg2MDgxKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRXhlY3V0YWJsZS5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOS0yMDE5IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOS0yMDIxIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpA
QCAtNDMsNyArNDMsNyBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUs
IFN1YnNwYWNlQWNjZXNzPgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0m
IHZtKQogICAgIHsKLSAgICAgICAgcmV0dXJuICZ2bS5uYXRpdmVFeGVjdXRhYmxlU3BhY2U7Cisg
ICAgICAgIHJldHVybiAmdm0ubmF0aXZlRXhlY3V0YWJsZVNwYWNlKCk7CiAgICAgfQogCiAgICAg
Q29kZUJsb2NrSGFzaCBoYXNoRm9yKENvZGVTcGVjaWFsaXphdGlvbktpbmQpIGNvbnN0OwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVyT2JqZWN0LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVyT2JqZWN0LmgJKHJldmlz
aW9uIDI4NjA4MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWJlck9iamVj
dC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw3ICszNSw3IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSwgU3Vic3BhY2VBY2Nlc3MgbW9kZT4KICAgICBzdGF0aWMgSXNvU3Vic3BhY2Uq
IHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7Ci0gICAgICAgIHJldHVybiAmdm0ubnVtYmVyT2Jq
ZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ubnVtYmVyT2JqZWN0U3BhY2UoKTsKICAgICB9
CiAKICAgICBzdGF0aWMgTnVtYmVyT2JqZWN0KiBjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdFByb3Rv
dHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVj
dFByb3RvdHlwZS5oCShyZXZpc2lvbiAyODYwODEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9PYmplY3RQcm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMSw2ICsxLDYgQEAK
IC8qCiAgKiAgQ29weXJpZ2h0IChDKSAxOTk5LTIwMDAgSGFycmkgUG9ydGVuIChwb3J0ZW5Aa2Rl
Lm9yZykKLSAqICBDb3B5cmlnaHQgKEMpIDIwMDgtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiAgQ29weXJpZ2h0IChDKSAyMDA4LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91
IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJt
cyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwpAQCAtMzMsNyArMzMsNyBAQCBwdWJs
aWM6CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewog
ICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShPYmplY3RQcm90b3R5
cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAg
IHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBPYmpl
Y3RQcm90b3R5cGUqIGNyZWF0ZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKik7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9ncmFtRXhlY3V0YWJsZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb2dyYW1FeGVjdXRh
YmxlLmgJKHJldmlzaW9uIDI4NjA4MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1Byb2dyYW1FeGVjdXRhYmxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTMwLDYgKzMwLDggQEAKIAog
bmFtZXNwYWNlIEpTQyB7CiAKK2NsYXNzIFVubGlua2VkUHJvZ3JhbUNvZGVCbG9jazsKKwogY2xh
c3MgUHJvZ3JhbUV4ZWN1dGFibGUgZmluYWwgOiBwdWJsaWMgR2xvYmFsRXhlY3V0YWJsZSB7CiAg
ICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKIHB1YmxpYzoKQEAgLTM5LDcg
KzQxLDcgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlLCBTdWJzcGFj
ZUFjY2Vzcz4KICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAg
ICB7Ci0gICAgICAgIHJldHVybiAmdm0ucHJvZ3JhbUV4ZWN1dGFibGVTcGFjZS5zcGFjZTsKKyAg
ICAgICAgcmV0dXJuICZ2bS5wcm9ncmFtRXhlY3V0YWJsZVNwYWNlKCkuc3BhY2U7CiAgICAgfQog
CiAgICAgc3RhdGljIFByb2dyYW1FeGVjdXRhYmxlKiBjcmVhdGUoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgY29uc3QgU291cmNlQ29kZSYgc291cmNlKQpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlUYWJsZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5VGFibGUuaAkocmV2aXNpb24gMjg2MDgxKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlUYWJsZS5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xMjksNyArMTI5LDcgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1l
IENlbGxUeXBlLCBTdWJzcGFjZUFjY2Vzcz4KICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNw
YWNlRm9yKFZNJiB2bSkKICAgICB7Ci0gICAgICAgIHJldHVybiAmdm0ucHJvcGVydHlUYWJsZVNw
YWNlOworICAgICAgICByZXR1cm4gJnZtLnByb3BlcnR5VGFibGVTcGFjZSgpOwogICAgIH0KIAog
ICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBuZWVkc0Rlc3RydWN0aW9uID0gdHJ1ZTsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZmxlY3RPYmplY3QuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWZsZWN0T2JqZWN0LmgJKHJldmlz
aW9uIDI4NjA4MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZmxlY3RPYmpl
Y3QuaAkod29ya2luZyBjb3B5KQpAQCAtMzgsNyArMzgsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGlj
IElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNf
QVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShSZWZsZWN0T2JqZWN0LCBCYXNlKTsKLSAgICAg
ICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWlu
T2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgUmVmbGVjdE9iamVjdCogY3JlYXRl
KFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHAuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHAuaAkocmV2aXNpb24g
Mjg2MDgxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwLmgJKHdvcmtp
bmcgY29weSkKQEAgLTQ5LDcgKzQ5LDcgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1l
IENlbGxUeXBlLCBTdWJzcGFjZUFjY2VzcyBtb2RlPgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSog
c3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKLSAgICAgICAgcmV0dXJuICZ2bS5yZWdFeHBTcGFj
ZTsKKyAgICAgICAgcmV0dXJuICZ2bS5yZWdFeHBTcGFjZSgpOwogICAgIH0KIAogICAgIEpTX0VY
UE9SVF9QUklWQVRFIHN0YXRpYyBSZWdFeHAqIGNyZWF0ZShWTSYsIGNvbnN0IFN0cmluZyYgcGF0
dGVybiwgT3B0aW9uU2V0PFlhcnI6OkZsYWdzPik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9SZWdFeHBPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9SZWdFeHBPYmplY3QuaAkocmV2aXNpb24gMjg2MDgxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAg
LTM2LDcgKzM2LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VG
b3IoVk0mIHZtKQogICAgIHsKICAgICAgICAgc3RhdGljX2Fzc2VydCghQ2VsbFR5cGU6Om5lZWRz
RGVzdHJ1Y3Rpb24sICIiKTsKLSAgICAgICAgcmV0dXJuICZ2bS5yZWdFeHBPYmplY3RTcGFjZTsK
KyAgICAgICAgcmV0dXJuICZ2bS5yZWdFeHBPYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIHN0
YXRpYyBjb25zdGV4cHIgdWludHB0cl90IGxhc3RJbmRleElzTm90V3JpdGFibGVGbGFnID0gMGIw
MTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cFByb3RvdHlwZS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cFByb3Rv
dHlwZS5oCShyZXZpc2lvbiAyODYwODEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9SZWdFeHBQcm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzQsNyArMzQsNyBAQCBwdWJs
aWM6CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewog
ICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShSZWdFeHBQcm90b3R5
cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAg
IHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBSZWdF
eHBQcm90b3R5cGUqIGNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IFN0cnVjdHVyZSogc3RydWN0dXJlKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvUmVnRXhwU3RyaW5nSXRlcmF0b3JQcm90b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBTdHJpbmdJdGVyYXRvclByb3RvdHlwZS5oCShy
ZXZpc2lvbiAyODYwODEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBT
dHJpbmdJdGVyYXRvclByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw3ICszOSw3IEBA
IHB1YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAg
ICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKFJlZ0V4cFN0
cmluZ0l0ZXJhdG9yUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9i
amVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9
CiAKICAgICBzdGF0aWMgUmVnRXhwU3RyaW5nSXRlcmF0b3JQcm90b3R5cGUqIGNyZWF0ZShWTSYg
dm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlKQpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2NvcGVkQXJndW1lbnRzLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TY29wZWRBcmd1bWVu
dHMuY3BwCShyZXZpc2lvbiAyODYwODEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9TY29wZWRBcmd1bWVudHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NSw3ICs1NSw3IEBAIFNj
b3BlZEFyZ3VtZW50cyogU2NvcGVkQXJndW1lbnRzOjpjcmVhdGUKICAgICBXcml0ZUJhcnJpZXI8
VW5rbm93bj4qIHN0b3JhZ2UgPSBudWxscHRyOwogICAgIGlmICh0b3RhbExlbmd0aCA+IHRhYmxl
LT5sZW5ndGgoKSkgewogICAgICAgICBDaGVja2VkPHVuc2lnbmVkPiBvdmVyZmxvd0xlbmd0aCA9
IHRvdGFsTGVuZ3RoIC0gdGFibGUtPmxlbmd0aCgpOwotICAgICAgICBzdG9yYWdlID0gc3RhdGlj
X2Nhc3Q8V3JpdGVCYXJyaWVyPFVua25vd24+Kj4odm0uanNWYWx1ZUdpZ2FjYWdlQXV4aWxpYXJ5
U3BhY2UuYWxsb2NhdGVOb25WaXJ0dWFsKHZtLCBvdmVyZmxvd0xlbmd0aCAqIHNpemVvZihXcml0
ZUJhcnJpZXI8VW5rbm93bj4pLCBudWxscHRyLCBBbGxvY2F0aW9uRmFpbHVyZU1vZGU6OkFzc2Vy
dCkpOworICAgICAgICBzdG9yYWdlID0gc3RhdGljX2Nhc3Q8V3JpdGVCYXJyaWVyPFVua25vd24+
Kj4odm0uanNWYWx1ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UoKS5hbGxvY2F0ZU5vblZpcnR1YWwo
dm0sIG92ZXJmbG93TGVuZ3RoICogc2l6ZW9mKFdyaXRlQmFycmllcjxVbmtub3duPiksIG51bGxw
dHIsIEFsbG9jYXRpb25GYWlsdXJlTW9kZTo6QXNzZXJ0KSk7CiAgICAgfQogCiAgICAgU2NvcGVk
QXJndW1lbnRzKiByZXN1bHQgPSBuZXcgKApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvU2NvcGVkQXJndW1lbnRzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvU2NvcGVkQXJndW1lbnRzLmgJKHJldmlzaW9uIDI4NjA4MSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Njb3BlZEFyZ3VtZW50cy5oCSh3b3JraW5nIGNvcHkp
CkBAIC00Nyw3ICs0Nyw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNw
YWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAgIHN0YXRpY19hc3NlcnQoIUNlbGxUeXBlOjpu
ZWVkc0Rlc3RydWN0aW9uLCAiIik7Ci0gICAgICAgIHJldHVybiAmdm0uc2NvcGVkQXJndW1lbnRz
U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0uc2NvcGVkQXJndW1lbnRzU3BhY2UoKTsKICAgICB9
CiAKICAgICAvLyBDcmVhdGVzIGFuIGFyZ3VtZW50cyBvYmplY3QgYnV0IGxlYXZlcyBpdCB1bmlu
aXRpYWxpemVkLiBUaGlzIGlzIGRhbmdlcm91cyBpZiB3ZSBHQyByaWdodApJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2V0SXRlcmF0b3JQcm90b3R5cGUuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TZXRJdGVyYXRvclByb3RvdHlwZS5o
CShyZXZpc2lvbiAyODYwODEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TZXRJ
dGVyYXRvclByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw3ICszNyw3IEBAIHB1Ymxp
YzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAg
ICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKFNldEl0ZXJhdG9yUHJv
dG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAg
ICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMg
U2V0SXRlcmF0b3JQcm90b3R5cGUqIGNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvU2V0UHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU2V0UHJvdG90eXBlLmgJKHJldmlzaW9uIDI4NjA4MSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NldFByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBA
IC0zNyw3ICszNyw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNl
Rm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NI
QVJBQkxFKFNldFByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmpl
Y3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQog
CiAgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0
cnVjdHVyZUZsYWdzIHwgSGFzU3RhdGljUHJvcGVydHlUYWJsZTsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1NoYWRvd1JlYWxtUHJvdG90eXBlLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2hhZG93UmVhbG1Qcm90b3R5cGUuaAkocmV2
aXNpb24gMjg2MDgxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2hhZG93UmVh
bG1Qcm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzksNyArMzksNyBAQCBwdWJsaWM6CiAg
ICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewogICAgICAg
ICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShTaGFkb3dSZWFsbVByb3RvdHlw
ZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAg
cmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIFNoYWRv
d1JlYWxtUHJvdG90eXBlKiBjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NwYXJzZUFycmF5VmFsdWVNYXAuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TcGFyc2VBcnJheVZh
bHVlTWFwLmgJKHJldmlzaW9uIDI4NjA4MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1NwYXJzZUFycmF5VmFsdWVNYXAuaAkod29ya2luZyBjb3B5KQpAQCAtMTEwLDcgKzExMCw3
IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vic3BhY2VBY2Nl
c3M+CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewot
ICAgICAgICByZXR1cm4gJnZtLnNwYXJzZUFycmF5VmFsdWVNYXBTcGFjZTsKKyAgICAgICAgcmV0
dXJuICZ2bS5zcGFyc2VBcnJheVZhbHVlTWFwU3BhY2UoKTsKICAgICB9CiAgICAgCiAgICAgc3Rh
dGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBKU1Zh
bHVlIHByb3RvdHlwZSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJp
bmdJdGVyYXRvclByb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1N0cmluZ0l0ZXJhdG9yUHJvdG90eXBlLmgJKHJldmlzaW9uIDI4NjA4MSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ0l0ZXJhdG9yUHJvdG90eXBlLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTM5LDcgKzM5LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJc29T
dWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VS
VF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoU3RyaW5nSXRlcmF0b3JQcm90b3R5cGUsIEJhc2UpOwot
ICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0u
cGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBTdHJpbmdJdGVyYXRvclBy
b3RvdHlwZSogY3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
dHJpbmdPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9TdHJpbmdPYmplY3QuaAkocmV2aXNpb24gMjg2MDgxKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvU3RyaW5nT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTMzLDcgKzMzLDcg
QEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lLCBTdWJzcGFjZUFjY2VzcyBtb2RlPgog
ICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKLSAgICAg
ICAgcmV0dXJuICZ2bS5zdHJpbmdPYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5zdHJp
bmdPYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBTdHJpbmdPYmplY3QqIGNyZWF0
ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvU3RydWN0dXJlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvU3RydWN0dXJlLmgJKHJldmlzaW9uIDI4NjA4MSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjgsNyAr
MTI4LDcgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlLCBTdWJzcGFj
ZUFjY2Vzcz4KICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAg
ICB7Ci0gICAgICAgIHJldHVybiAmdm0uc3RydWN0dXJlU3BhY2U7CisgICAgICAgIHJldHVybiAm
dm0uc3RydWN0dXJlU3BhY2UoKTsKICAgICB9CiAKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0
aWMgYm9vbCBpc1ZhbGlkUHJvdG90eXBlKEpTVmFsdWUpOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlQ2hhaW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUNoYWluLmNwcAkocmV2aXNpb24gMjg2MDgx
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlQ2hhaW4uY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC00OCw3ICs0OCw3IEBAIFN0cnVjdHVyZUNoYWluKiBTdHJ1Y3R1cmVD
aGFpbjo6Y3JlYXRlKFYKICAgICAgICAgKytzaXplOwogICAgICsrc2l6ZTsgLy8gU2VudGluZWwg
bnVsbHB0ci4KICAgICBzaXplX3QgYnl0ZXMgPSBDaGVja2VkPHNpemVfdD4oc2l6ZSkgKiBzaXpl
b2YoU3RydWN0dXJlSUQpOwotICAgIFN0cnVjdHVyZUlEKiB2ZWN0b3IgPSBzdGF0aWNfY2FzdDxT
dHJ1Y3R1cmVJRCo+KHZtLmpzVmFsdWVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlLmFsbG9jYXRlTm9u
VmlydHVhbCh2bSwgYnl0ZXMsIG51bGxwdHIsIEFsbG9jYXRpb25GYWlsdXJlTW9kZTo6QXNzZXJ0
KSk7CisgICAgU3RydWN0dXJlSUQqIHZlY3RvciA9IHN0YXRpY19jYXN0PFN0cnVjdHVyZUlEKj4o
dm0uanNWYWx1ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UoKS5hbGxvY2F0ZU5vblZpcnR1YWwodm0s
IGJ5dGVzLCBudWxscHRyLCBBbGxvY2F0aW9uRmFpbHVyZU1vZGU6OkFzc2VydCkpOwogICAgIG1l
bXNldCh2ZWN0b3IsIDAsIGJ5dGVzKTsKICAgICBTdHJ1Y3R1cmVDaGFpbiogY2hhaW4gPSBuZXcg
KE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxTdHJ1Y3R1cmVDaGFpbj4odm0pKSBTdHJ1Y3R1cmVDaGFp
bih2bSwgdm0uc3RydWN0dXJlQ2hhaW5TdHJ1Y3R1cmUuZ2V0KCksIHZlY3Rvcik7CiAgICAgY2hh
aW4tPmZpbmlzaENyZWF0aW9uKHZtLCBoZWFkKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1N0cnVjdHVyZUNoYWluLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlQ2hhaW4uaAkocmV2aXNpb24gMjg2MDgxKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlQ2hhaW4uaAkod29ya2luZyBjb3B5
KQpAQCAtNDYsNyArNDYsNyBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5
cGUsIFN1YnNwYWNlQWNjZXNzPgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3Io
Vk0mIHZtKQogICAgIHsKLSAgICAgICAgcmV0dXJuICZ2bS5zdHJ1Y3R1cmVDaGFpblNwYWNlOwor
ICAgICAgICByZXR1cm4gJnZtLnN0cnVjdHVyZUNoYWluU3BhY2UoKTsKICAgICB9CiAKICAgICBz
dGF0aWMgU3RydWN0dXJlQ2hhaW4qIGNyZWF0ZShWTSYsIEpTT2JqZWN0Kik7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVSYXJlRGF0YS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZVJhcmVEYXRhLmgJKHJl
dmlzaW9uIDI4NjA4MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVy
ZVJhcmVEYXRhLmgJKHdvcmtpbmcgY29weSkKQEAgLTY2LDcgKzY2LDcgQEAgcHVibGljOgogICAg
IHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlLCBTdWJzcGFjZUFjY2Vzcz4KICAgICBzdGF0aWMg
SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7Ci0gICAgICAgIHJldHVybiAm
dm0uc3RydWN0dXJlUmFyZURhdGFTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5zdHJ1Y3R1cmVS
YXJlRGF0YVNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIFN0cnVjdHVyZVJhcmVEYXRhKiBj
cmVhdGUoVk0mLCBTdHJ1Y3R1cmUqKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1N5bWJvbFByb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1N5bWJvbFByb3RvdHlwZS5oCShyZXZpc2lvbiAyODYwODEpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xQcm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpA
QCAtNDEsNyArNDEsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFj
ZUZvcihWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9T
SEFSQUJMRShTeW1ib2xQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWlu
T2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAg
IH0KIAogICAgIHN0YXRpYyBTeW1ib2xQcm90b3R5cGUqIGNyZWF0ZShWTSYgdm0sIEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlKQpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sVGFibGUuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xUYWJsZS5oCShyZXZpc2lvbiAyODYwODEp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xUYWJsZS5oCSh3b3JraW5n
IGNvcHkpCkBAIC00NTYsNyArNDU2LDcgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1l
IENlbGxUeXBlLCBTdWJzcGFjZUFjY2Vzcz4KICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNw
YWNlRm9yKFZNJiB2bSkKICAgICB7Ci0gICAgICAgIHJldHVybiAmdm0uc3ltYm9sVGFibGVTcGFj
ZTsKKyAgICAgICAgcmV0dXJuICZ2bS5zeW1ib2xUYWJsZVNwYWNlKCk7CiAgICAgfQogCiAgICAg
c3RhdGljIFN5bWJvbFRhYmxlKiBjcmVhdGUoVk0mIHZtKQpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxDYWxlbmRhclByb3RvdHlwZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsQ2FsZW5kYXJQcm90b3R5cGUu
aAkocmV2aXNpb24gMjg2MDgxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVt
cG9yYWxDYWxlbmRhclByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw3ICszOCw3IEBA
IHB1YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAg
ICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKFRlbXBvcmFs
Q2FsZW5kYXJQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0
U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAog
ICAgIHN0YXRpYyBUZW1wb3JhbENhbGVuZGFyUHJvdG90eXBlKiBjcmVhdGUoVk0mLCBKU0dsb2Jh
bE9iamVjdCosIFN0cnVjdHVyZSopOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvVGVtcG9yYWxEdXJhdGlvblByb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsRHVyYXRpb25Qcm90b3R5cGUuaAkocmV2aXNpb24g
Mjg2MDgxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxEdXJhdGlv
blByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHly
aWdodCAoQykgMjAyMSBTb255IEludGVyYWN0aXZlIEVudGVydGFpbm1lbnQgSW5jLgorICogQ29w
eXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzgsNyArMzksNyBAQCBwdWJsaWM6CiAgICAgc3Rh
dGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFU
SUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShUZW1wb3JhbER1cmF0aW9uUHJvdG90eXBl
LCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICBy
ZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgVGVtcG9y
YWxEdXJhdGlvblByb3RvdHlwZSogY3JlYXRlKFZNJiwgU3RydWN0dXJlKik7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbEluc3RhbnRQcm90b3R5cGUuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbEluc3RhbnRQ
cm90b3R5cGUuaAkocmV2aXNpb24gMjg2MDgxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvVGVtcG9yYWxJbnN0YW50UHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSAr
MSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDIxIElnYWxpYSBTLkwuCisgKiBDb3B5cmln
aHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCkBAIC0zOCw3ICszOSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMg
SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19B
U1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKFRlbXBvcmFsSW5zdGFudFByb3RvdHlwZSwgQmFz
ZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJu
ICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIFRlbXBvcmFsSW5z
dGFudFByb3RvdHlwZSogY3JlYXRlKFZNJiwgU3RydWN0dXJlKik7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbE5vdy5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsTm93LmgJKHJldmlzaW9uIDI4NjA4MSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsTm93LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTEsNSArMSw2IEBACiAvKgogICogIENvcHlyaWdodCAoQykgMjAyMSBJZ2FsaWEsIFMu
TC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqICBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0
d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiAgbW9kaWZ5IGl0IHVuZGVy
IHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwpAQCAtMzIsNyArMzMs
NyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0p
CiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShUZW1w
b3JhbE5vdywgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAg
ICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGlj
IFRlbXBvcmFsTm93KiBjcmVhdGUoVk0mLCBTdHJ1Y3R1cmUqKTsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxPYmplY3QuaAkocmV2aXNpb24gMjg2MDgx
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxPYmplY3QuaAkod29y
a2luZyBjb3B5KQpAQCAtMSw2ICsxLDcgQEAKIC8qCiAgKiAgQ29weXJpZ2h0IChDKSAyMDIxIEln
YWxpYSwgUy5MLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogIENvcHlyaWdodCAoQykgMjAyMSBT
b255IEludGVyYWN0aXZlIEVudGVydGFpbm1lbnQgSW5jLgorICogIENvcHlyaWdodCAoQykgMjAy
MSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogIFRoaXMgbGlicmFyeSBp
cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqICBtb2Rp
ZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCkBA
IC02NCw3ICs2NSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNl
Rm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NI
QVJBQkxFKFRlbXBvcmFsT2JqZWN0LCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9i
amVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9
CiAKICAgICBzdGF0aWMgVGVtcG9yYWxPYmplY3QqIGNyZWF0ZShWTSYsIFN0cnVjdHVyZSopOwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxQbGFpblRpbWVQcm90
b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1w
b3JhbFBsYWluVGltZVByb3RvdHlwZS5oCShyZXZpc2lvbiAyODYwODEpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbFBsYWluVGltZVByb3RvdHlwZS5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJ
bmMuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zOCw3ICszOCw3IEBAIHB1Ymxp
YzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAg
ICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKFRlbXBvcmFsUGxhaW5U
aW1lUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNl
OworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBz
dGF0aWMgVGVtcG9yYWxQbGFpblRpbWVQcm90b3R5cGUqIGNyZWF0ZShWTSYsIEpTR2xvYmFsT2Jq
ZWN0KiwgU3RydWN0dXJlKik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9U
ZW1wb3JhbFRpbWVab25lUHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxUaW1lWm9uZVByb3RvdHlwZS5oCShyZXZpc2lvbiAyODYw
ODEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbFRpbWVab25lUHJv
dG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM4LDcgKzM4LDcgQEAgcHVibGljOgogICAgIHN0
YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAgICAgU1RB
VElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoVGVtcG9yYWxUaW1lWm9uZVByb3RvdHlw
ZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAg
cmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIFRlbXBv
cmFsVGltZVpvbmVQcm90b3R5cGUqIGNyZWF0ZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0
dXJlKik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCShyZXZpc2lvbiAy
ODYwODEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTMyLDIxICszMiwxNSBAQAogI2luY2x1ZGUgIkFjY2Vzc0Nhc2UuaCIKICNpbmNs
dWRlICJBZ2dyZWdhdGVFcnJvci5oIgogI2luY2x1ZGUgIkFyZ0xpc3QuaCIKLSNpbmNsdWRlICJC
aWdJbnRPYmplY3QuaCIKLSNpbmNsdWRlICJCb29sZWFuT2JqZWN0LmgiCi0jaW5jbHVkZSAiQnJh
bmRlZFN0cnVjdHVyZS5oIgogI2luY2x1ZGUgIkJ1aWx0aW5FeGVjdXRhYmxlcy5oIgogI2luY2x1
ZGUgIkJ5dGVjb2RlSW50cmluc2ljUmVnaXN0cnkuaCIKICNpbmNsdWRlICJDaGVja3BvaW50T1NS
RXhpdFNpZGVTdGF0ZS5oIgotI2luY2x1ZGUgIkNsb25lZEFyZ3VtZW50cy5oIgogI2luY2x1ZGUg
IkNvZGVCbG9jay5oIgogI2luY2x1ZGUgIkNvZGVDYWNoZS5oIgogI2luY2x1ZGUgIkNvbW1vbklk
ZW50aWZpZXJzLmgiCiAjaW5jbHVkZSAiQ29udHJvbEZsb3dQcm9maWxlci5oIgogI2luY2x1ZGUg
IkN1c3RvbUdldHRlclNldHRlci5oIgogI2luY2x1ZGUgIkRPTUF0dHJpYnV0ZUdldHRlclNldHRl
ci5oIgotI2luY2x1ZGUgIkRhdGVJbnN0YW5jZS5oIgotI2luY2x1ZGUgIkRlYnVnZ2VyU2NvcGUu
aCIKICNpbmNsdWRlICJEZWZlcnJlZFdvcmtUaW1lci5oIgogI2luY2x1ZGUgIkRpc2Fzc2VtYmxl
ci5oIgogI2luY2x1ZGUgIkRvdWJsZVByZWRpY3Rpb25GdXp6ZXJBZ2VudC5oIgpAQCAtNTUsNyAr
NDksNiBAQAogI2luY2x1ZGUgIkV4Y2VwdGlvbi5oIgogI2luY2x1ZGUgIkV4ZWN1dGFibGVUb0Nv
ZGVCbG9ja0VkZ2UuaCIKICNpbmNsdWRlICJGVExUaHVua3MuaCIKLSNpbmNsdWRlICJGYXN0TWFs
bG9jQWxpZ25lZE1lbW9yeUFsbG9jYXRvci5oIgogI2luY2x1ZGUgIkZpbGVCYXNlZEZ1enplckFn
ZW50LmgiCiAjaW5jbHVkZSAiRnVuY3Rpb25Db2RlQmxvY2suaCIKICNpbmNsdWRlICJGdW5jdGlv
bkV4ZWN1dGFibGUuaCIKQEAgLTY2LDc3ICs1OSwyNSBAQAogI2luY2x1ZGUgIkhlYXBQcm9maWxl
ci5oIgogI2luY2x1ZGUgIkludGVycHJldGVyLmgiCiAjaW5jbHVkZSAiSW50bENhY2hlLmgiCi0j
aW5jbHVkZSAiSW50bENvbGxhdG9yLmgiCi0jaW5jbHVkZSAiSW50bERhdGVUaW1lRm9ybWF0Lmgi
Ci0jaW5jbHVkZSAiSW50bERpc3BsYXlOYW1lcy5oIgotI2luY2x1ZGUgIkludGxMaXN0Rm9ybWF0
LmgiCi0jaW5jbHVkZSAiSW50bExvY2FsZS5oIgotI2luY2x1ZGUgIkludGxOdW1iZXJGb3JtYXQu
aCIKLSNpbmNsdWRlICJJbnRsUGx1cmFsUnVsZXMuaCIKLSNpbmNsdWRlICJJbnRsUmVsYXRpdmVU
aW1lRm9ybWF0LmgiCi0jaW5jbHVkZSAiSW50bFNlZ21lbnRJdGVyYXRvci5oIgotI2luY2x1ZGUg
IkludGxTZWdtZW50ZXIuaCIKLSNpbmNsdWRlICJJbnRsU2VnbWVudHMuaCIKLSNpbmNsdWRlICJJ
c29IZWFwQ2VsbFR5cGUuaCIKLSNpbmNsdWRlICJJc29JbmxpbmVkSGVhcENlbGxUeXBlLmgiCiAj
aW5jbHVkZSAiSklUQ29kZS5oIgogI2luY2x1ZGUgIkpJVE9wZXJhdGlvbkxpc3QuaCIKICNpbmNs
dWRlICJKSVRTaXplU3RhdGlzdGljcy5oIgogI2luY2x1ZGUgIkpJVFRodW5rcy5oIgogI2luY2x1
ZGUgIkpJVFdvcmtsaXN0LmgiCi0jaW5jbHVkZSAiSlNBUElHbG9iYWxPYmplY3QuaCIKICNpbmNs
dWRlICJKU0FQSVZhbHVlV3JhcHBlci5oIgotI2luY2x1ZGUgIkpTQVBJV3JhcHBlck9iamVjdC5o
IgotI2luY2x1ZGUgIkpTQXJyYXkuaCIKLSNpbmNsdWRlICJKU0FycmF5QnVmZmVyLmgiCi0jaW5j
bHVkZSAiSlNBcnJheUl0ZXJhdG9yLmgiCi0jaW5jbHVkZSAiSlNBc3luY0dlbmVyYXRvci5oIgog
I2luY2x1ZGUgIkpTQmlnSW50LmgiCi0jaW5jbHVkZSAiSlNCb3VuZEZ1bmN0aW9uLmgiCi0jaW5j
bHVkZSAiSlNDYWxsYmFja0NvbnN0cnVjdG9yLmgiCi0jaW5jbHVkZSAiSlNDYWxsYmFja0Z1bmN0
aW9uLmgiCi0jaW5jbHVkZSAiSlNDYWxsYmFja09iamVjdC5oIgotI2luY2x1ZGUgIkpTQ2FsbGVl
LmgiCi0jaW5jbHVkZSAiSlNDdXN0b21HZXR0ZXJGdW5jdGlvbi5oIgotI2luY2x1ZGUgIkpTQ3Vz
dG9tU2V0dGVyRnVuY3Rpb24uaCIKLSNpbmNsdWRlICJKU0Rlc3RydWN0aWJsZU9iamVjdEhlYXBD
ZWxsVHlwZS5oIgotI2luY2x1ZGUgIkpTRmluYWxpemF0aW9uUmVnaXN0cnkuaCIKLSNpbmNsdWRl
ICJKU0Z1bmN0aW9uLmgiCi0jaW5jbHVkZSAiSlNHbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQuaCIK
ICNpbmNsdWRlICJKU0dsb2JhbE9iamVjdC5oIgogI2luY2x1ZGUgIkpTSW1tdXRhYmxlQnV0dGVy
Zmx5LmgiCi0jaW5jbHVkZSAiSlNJbmplY3RlZFNjcmlwdEhvc3QuaCIKLSNpbmNsdWRlICJKU0ph
dmFTY3JpcHRDYWxsRnJhbWUuaCIKICNpbmNsdWRlICJKU0xvY2suaCIKICNpbmNsdWRlICJKU01h
cC5oIgotI2luY2x1ZGUgIkpTTWFwSXRlcmF0b3IuaCIKLSNpbmNsdWRlICJKU01vZHVsZU5hbWVz
cGFjZU9iamVjdC5oIgotI2luY2x1ZGUgIkpTTW9kdWxlUmVjb3JkLmgiCi0jaW5jbHVkZSAiSlNO
YXRpdmVTdGRGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTUHJvbWlzZS5oIgogI2luY2x1ZGUgIkpT
UHJvcGVydHlOYW1lRW51bWVyYXRvci5oIgotI2luY2x1ZGUgIkpTUHJveHkuaCIKICNpbmNsdWRl
ICJKU1NjcmlwdEZldGNoUGFyYW1ldGVycy5oIgogI2luY2x1ZGUgIkpTU2NyaXB0RmV0Y2hlci5o
IgogI2luY2x1ZGUgIkpTU2V0LmgiCi0jaW5jbHVkZSAiSlNTZXRJdGVyYXRvci5oIgogI2luY2x1
ZGUgIkpTU291cmNlQ29kZS5oIgotI2luY2x1ZGUgIkpTU3RyaW5nSXRlcmF0b3IuaCIKICNpbmNs
dWRlICJKU1RlbXBsYXRlT2JqZWN0RGVzY3JpcHRvci5oIgotI2luY2x1ZGUgIkpTVG9XYXNtSUND
YWxsZWUuaCIKLSNpbmNsdWRlICJKU1R5cGVkQXJyYXlzLmgiCi0jaW5jbHVkZSAiSlNXZWFrTWFw
LmgiCi0jaW5jbHVkZSAiSlNXZWFrT2JqZWN0UmVmLmgiCi0jaW5jbHVkZSAiSlNXZWFrU2V0Lmgi
CiAjaW5jbHVkZSAiSlNXZWJBc3NlbWJseUNvZGVCbG9jay5oIgotI2luY2x1ZGUgIkpTV2ViQXNz
ZW1ibHlFeGNlcHRpb24uaCIKLSNpbmNsdWRlICJKU1dlYkFzc2VtYmx5R2xvYmFsLmgiCi0jaW5j
bHVkZSAiSlNXZWJBc3NlbWJseUluc3RhbmNlLmgiCi0jaW5jbHVkZSAiSlNXZWJBc3NlbWJseU1l
bW9yeS5oIgotI2luY2x1ZGUgIkpTV2ViQXNzZW1ibHlNb2R1bGUuaCIKLSNpbmNsdWRlICJKU1dl
YkFzc2VtYmx5VGFibGUuaCIKLSNpbmNsdWRlICJKU1dlYkFzc2VtYmx5VGFnLmgiCi0jaW5jbHVk
ZSAiSlNXaXRoU2NvcGUuaCIKICNpbmNsdWRlICJMTEludERhdGEuaCIKICNpbmNsdWRlICJMTElu
dEV4Y2VwdGlvbnMuaCIKICNpbmNsdWRlICJNYXJrZWRCbG9ja0lubGluZXMuaCIKQEAgLTE1MSwy
NyArOTIsMTYgQEAKICNpbmNsdWRlICJQcm9ncmFtQ29kZUJsb2NrLmgiCiAjaW5jbHVkZSAiUHJv
Z3JhbUV4ZWN1dGFibGUuaCIKICNpbmNsdWRlICJQcm9wZXJ0eVRhYmxlLmgiCi0jaW5jbHVkZSAi
UHJveHlSZXZva2UuaCIKICNpbmNsdWRlICJSYW5kb21pemluZ0Z1enplckFnZW50LmgiCiAjaW5j
bHVkZSAiUmVnRXhwQ2FjaGUuaCIKLSNpbmNsdWRlICJSZWdFeHBPYmplY3QuaCIKICNpbmNsdWRl
ICJTYW1wbGluZ1Byb2ZpbGVyLmgiCiAjaW5jbHVkZSAiU2NvcGVkQXJndW1lbnRzLmgiCiAjaW5j
bHVkZSAiU2hhZG93Q2hpY2tlbi5oIgotI2luY2x1ZGUgIlNoYWRvd1JlYWxtT2JqZWN0LmgiCiAj
aW5jbHVkZSAiU2ltcGxlVHlwZWRBcnJheUNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJTb3VyY2VQ
cm92aWRlckNhY2hlLmgiCi0jaW5jbHVkZSAiU3RyaWN0RXZhbEFjdGl2YXRpb24uaCIKLSNpbmNs
dWRlICJTdHJpbmdPYmplY3QuaCIKICNpbmNsdWRlICJTdHJvbmdJbmxpbmVzLmgiCiAjaW5jbHVk
ZSAiU3RydWN0dXJlQ2hhaW4uaCIKICNpbmNsdWRlICJTdHJ1Y3R1cmVJbmxpbmVzLmgiCi0jaW5j
bHVkZSAiU3ltYm9sT2JqZWN0LmgiCi0jaW5jbHVkZSAiVGVtcG9yYWxDYWxlbmRhci5oIgotI2lu
Y2x1ZGUgIlRlbXBvcmFsRHVyYXRpb24uaCIKLSNpbmNsdWRlICJUZW1wb3JhbEluc3RhbnQuaCIK
LSNpbmNsdWRlICJUZW1wb3JhbFBsYWluVGltZS5oIgotI2luY2x1ZGUgIlRlbXBvcmFsVGltZVpv
bmUuaCIKICNpbmNsdWRlICJUZXN0UnVubmVyVXRpbHMuaCIKICNpbmNsdWRlICJUaHVua0dlbmVy
YXRvcnMuaCIKICNpbmNsdWRlICJUeXBlUHJvZmlsZXIuaCIKQEAgLTE4Myw5ICsxMTMsNiBAQAog
I2luY2x1ZGUgIldhc21Xb3JrbGlzdC5oIgogI2luY2x1ZGUgIldhdGNoZG9nLmgiCiAjaW5jbHVk
ZSAiV2Vha0dDTWFwSW5saW5lcy5oIgotI2luY2x1ZGUgIldlYkFzc2VtYmx5RnVuY3Rpb24uaCIK
LSNpbmNsdWRlICJXZWJBc3NlbWJseU1vZHVsZVJlY29yZC5oIgotI2luY2x1ZGUgIldlYkFzc2Vt
Ymx5V3JhcHBlckZ1bmN0aW9uLmgiCiAjaW5jbHVkZSAiV2lkZW5pbmdOdW1iZXJQcmVkaWN0aW9u
RnV6emVyQWdlbnQuaCIKICNpbmNsdWRlIDx3dGYvUHJvY2Vzc0lELmg+CiAjaW5jbHVkZSA8d3Rm
L1JlYWRXcml0ZUxvY2suaD4KQEAgLTE5NSw3ICsxMjIsNiBAQAogI2luY2x1ZGUgPHd0Zi90ZXh0
L0F0b21TdHJpbmdUYWJsZS5oPgogCiAjaWYgRU5BQkxFKENfTE9PUCkKLSNpbmNsdWRlICJDTG9v
cFN0YWNrLmgiCiAjaW5jbHVkZSAiQ0xvb3BTdGFja0lubGluZXMuaCIKICNlbmRpZgogCkBAIC0y
MDcsMTUgKzEzMyw2IEBACiAjaW5jbHVkZSAiUmVnRXhwLmgiCiAjZW5kaWYKIAotI2lmIEpTQ19P
QkpDX0FQSV9FTkFCTEVECi0jaW5jbHVkZSAiT2JqQ0NhbGxiYWNrRnVuY3Rpb24uaCIKLSNlbmRp
ZgotCi0jaWZkZWYgSlNDX0dMSUJfQVBJX0VOQUJMRUQKLSNpbmNsdWRlICJKU0FQSVdyYXBwZXJH
bG9iYWxPYmplY3QuaCIKLSNpbmNsdWRlICJKU0NDYWxsYmFja0Z1bmN0aW9uLmgiCi0jZW5kaWYK
LQogbmFtZXNwYWNlIEpTQyB7CiAKIEF0b21pYzx1bnNpZ25lZD4gVk06OnNfbnVtYmVyT2ZJRHM7
CkBAIC0yOTEsMTA5ICsyMDgsNiBAQCBWTTo6Vk0oVk1UeXBlIHZtVHlwZSwgSGVhcFR5cGUgaGVh
cFR5cGUsCiAgICAgLCBtX3JhbmRvbShPcHRpb25zOjpzZWVkT2ZWTVJhbmRvbUZvckZ1enplcigp
ID8gT3B0aW9uczo6c2VlZE9mVk1SYW5kb21Gb3JGdXp6ZXIoKSA6IGNyeXB0b2dyYXBoaWNhbGx5
UmFuZG9tTnVtYmVyKCkpCiAgICAgLCBtX2ludGVncml0eVJhbmRvbSgqdGhpcykKICAgICAsIGhl
YXAoKnRoaXMsIGhlYXBUeXBlKQotICAgICwgZmFzdE1hbGxvY0FsbG9jYXRvcihtYWtlVW5pcXVl
PEZhc3RNYWxsb2NBbGlnbmVkTWVtb3J5QWxsb2NhdG9yPigpKQotICAgICwgcHJpbWl0aXZlR2ln
YWNhZ2VBbGxvY2F0b3IobWFrZVVuaXF1ZTxHaWdhY2FnZUFsaWduZWRNZW1vcnlBbGxvY2F0b3I+
KEdpZ2FjYWdlOjpQcmltaXRpdmUpKQotICAgICwganNWYWx1ZUdpZ2FjYWdlQWxsb2NhdG9yKG1h
a2VVbmlxdWU8R2lnYWNhZ2VBbGlnbmVkTWVtb3J5QWxsb2NhdG9yPihHaWdhY2FnZTo6SlNWYWx1
ZSkpCi0gICAgLCBhdXhpbGlhcnlIZWFwQ2VsbFR5cGUobWFrZVVuaXF1ZTxIZWFwQ2VsbFR5cGU+
KENlbGxBdHRyaWJ1dGVzKERvZXNOb3ROZWVkRGVzdHJ1Y3Rpb24sIEhlYXBDZWxsOjpBdXhpbGlh
cnkpKSkKLSAgICAsIGltbXV0YWJsZUJ1dHRlcmZseUhlYXBDZWxsVHlwZShtYWtlVW5pcXVlPEhl
YXBDZWxsVHlwZT4oQ2VsbEF0dHJpYnV0ZXMoRG9lc05vdE5lZWREZXN0cnVjdGlvbiwgSGVhcENl
bGw6OkpTQ2VsbFdpdGhJbmRleGluZ0hlYWRlcikpKQotICAgICwgY2VsbEhlYXBDZWxsVHlwZSht
YWtlVW5pcXVlPEhlYXBDZWxsVHlwZT4oQ2VsbEF0dHJpYnV0ZXMoRG9lc05vdE5lZWREZXN0cnVj
dGlvbiwgSGVhcENlbGw6OkpTQ2VsbCkpKQotICAgICwgZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxs
VHlwZShtYWtlVW5pcXVlPEhlYXBDZWxsVHlwZT4oQ2VsbEF0dHJpYnV0ZXMoTmVlZHNEZXN0cnVj
dGlvbiwgSGVhcENlbGw6OkpTQ2VsbCkpKQotICAgICwgYXBpR2xvYmFsT2JqZWN0SGVhcENlbGxU
eXBlKElzb0hlYXBDZWxsVHlwZTo6Y3JlYXRlPEpTQVBJR2xvYmFsT2JqZWN0PigpKQotICAgICwg
Y2FsbGJhY2tDb25zdHJ1Y3RvckhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OmNyZWF0ZTxK
U0NhbGxiYWNrQ29uc3RydWN0b3I+KCkpCi0gICAgLCBjYWxsYmFja0dsb2JhbE9iamVjdEhlYXBD
ZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OmNyZWF0ZTxKU0NhbGxiYWNrT2JqZWN0PEpTR2xvYmFs
T2JqZWN0Pj4oKSkKLSAgICAsIGNhbGxiYWNrT2JqZWN0SGVhcENlbGxUeXBlKElzb0hlYXBDZWxs
VHlwZTo6Y3JlYXRlPEpTQ2FsbGJhY2tPYmplY3Q8SlNOb25GaW5hbE9iamVjdD4+KCkpCi0gICAg
LCBjdXN0b21HZXR0ZXJGdW5jdGlvbkhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OmNyZWF0
ZTxKU0N1c3RvbUdldHRlckZ1bmN0aW9uPigpKQotICAgICwgY3VzdG9tU2V0dGVyRnVuY3Rpb25I
ZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpjcmVhdGU8SlNDdXN0b21TZXR0ZXJGdW5jdGlv
bj4oKSkKLSAgICAsIGRhdGVJbnN0YW5jZUhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OmNy
ZWF0ZTxEYXRlSW5zdGFuY2U+KCkpCi0gICAgLCBlcnJvckluc3RhbmNlSGVhcENlbGxUeXBlKElz
b0hlYXBDZWxsVHlwZTo6Y3JlYXRlPEVycm9ySW5zdGFuY2U+KCkpCi0gICAgLCBmaW5hbGl6YXRp
b25SZWdpc3RyeUNlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6Y3JlYXRlPEpTRmluYWxpemF0aW9u
UmVnaXN0cnk+KCkpCi0gICAgLCBnbG9iYWxMZXhpY2FsRW52aXJvbm1lbnRIZWFwQ2VsbFR5cGUo
SXNvSGVhcENlbGxUeXBlOjpjcmVhdGU8SlNHbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQ+KCkpCi0g
ICAgLCBnbG9iYWxPYmplY3RIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpjcmVhdGU8SlNH
bG9iYWxPYmplY3Q+KCkpCi0gICAgLCBpbmplY3RlZFNjcmlwdEhvc3RTcGFjZUhlYXBDZWxsVHlw
ZShJc29IZWFwQ2VsbFR5cGU6OmNyZWF0ZTxJbnNwZWN0b3I6OkpTSW5qZWN0ZWRTY3JpcHRIb3N0
PigpKQotICAgICwgamF2YVNjcmlwdENhbGxGcmFtZUhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5
cGU6OmNyZWF0ZTxJbnNwZWN0b3I6OkpTSmF2YVNjcmlwdENhbGxGcmFtZT4oKSkKLSAgICAsIGpz
TW9kdWxlUmVjb3JkSGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6Y3JlYXRlPEpTTW9kdWxl
UmVjb3JkPigpKQotICAgICwgbW9kdWxlTmFtZXNwYWNlT2JqZWN0SGVhcENlbGxUeXBlKElzb0hl
YXBDZWxsVHlwZTo6Y3JlYXRlPEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0PigpKQotICAgICwgbmF0
aXZlU3RkRnVuY3Rpb25IZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpjcmVhdGU8SlNOYXRp
dmVTdGRGdW5jdGlvbj4oKSkKLSAgICAsIHN0cmluZ0hlYXBDZWxsVHlwZShtYWtlVW5pcXVlPElz
b0lubGluZWRIZWFwQ2VsbFR5cGU8SlNTdHJpbmc+PigpKQotICAgICwgd2Vha01hcEhlYXBDZWxs
VHlwZShJc29IZWFwQ2VsbFR5cGU6OmNyZWF0ZTxKU1dlYWtNYXA+KCkpCi0gICAgLCB3ZWFrU2V0
SGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6Y3JlYXRlPEpTV2Vha1NldD4oKSkKLSAgICAs
IGRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZShtYWtlVW5pcXVlPEpTRGVzdHJ1Y3RpYmxl
T2JqZWN0SGVhcENlbGxUeXBlPigpKQotI2lmIEpTQ19PQkpDX0FQSV9FTkFCTEVECi0gICAgLCBh
cGlXcmFwcGVyT2JqZWN0SGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6Y3JlYXRlPEpTQ2Fs
bGJhY2tPYmplY3Q8SlNBUElXcmFwcGVyT2JqZWN0Pj4oKSkKLSAgICAsIG9iakNDYWxsYmFja0Z1
bmN0aW9uSGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6Y3JlYXRlPE9iakNDYWxsYmFja0Z1
bmN0aW9uPigpKQotI2VuZGlmCi0jaWZkZWYgSlNDX0dMSUJfQVBJX0VOQUJMRUQKLSAgICAsIGFw
aVdyYXBwZXJPYmplY3RIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpjcmVhdGU8SlNDYWxs
YmFja09iamVjdDxKU0FQSVdyYXBwZXJPYmplY3Q+PigpKQotICAgICwgY2FsbGJhY2tBUElXcmFw
cGVyR2xvYmFsT2JqZWN0SGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6Y3JlYXRlPEpTQ2Fs
bGJhY2tPYmplY3Q8SlNBUElXcmFwcGVyR2xvYmFsT2JqZWN0Pj4oKSkKLSAgICAsIGpzY0NhbGxi
YWNrRnVuY3Rpb25IZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpjcmVhdGU8SlNDQ2FsbGJh
Y2tGdW5jdGlvbj4oKSkKLSNlbmRpZgotICAgICwgaW50bENvbGxhdG9ySGVhcENlbGxUeXBlKElz
b0hlYXBDZWxsVHlwZTo6Y3JlYXRlPEludGxDb2xsYXRvcj4oKSkKLSAgICAsIGludGxEYXRlVGlt
ZUZvcm1hdEhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OmNyZWF0ZTxJbnRsRGF0ZVRpbWVG
b3JtYXQ+KCkpCi0gICAgLCBpbnRsRGlzcGxheU5hbWVzSGVhcENlbGxUeXBlKElzb0hlYXBDZWxs
VHlwZTo6Y3JlYXRlPEludGxEaXNwbGF5TmFtZXM+KCkpCi0gICAgLCBpbnRsTGlzdEZvcm1hdEhl
YXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OmNyZWF0ZTxJbnRsTGlzdEZvcm1hdD4oKSkKLSAg
ICAsIGludGxMb2NhbGVIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpjcmVhdGU8SW50bExv
Y2FsZT4oKSkKLSAgICAsIGludGxOdW1iZXJGb3JtYXRIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxU
eXBlOjpjcmVhdGU8SW50bE51bWJlckZvcm1hdD4oKSkKLSAgICAsIGludGxQbHVyYWxSdWxlc0hl
YXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OmNyZWF0ZTxJbnRsUGx1cmFsUnVsZXM+KCkpCi0g
ICAgLCBpbnRsUmVsYXRpdmVUaW1lRm9ybWF0SGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6
Y3JlYXRlPEludGxSZWxhdGl2ZVRpbWVGb3JtYXQ+KCkpCi0gICAgLCBpbnRsU2VnbWVudEl0ZXJh
dG9ySGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6Y3JlYXRlPEludGxTZWdtZW50SXRlcmF0
b3I+KCkpCi0gICAgLCBpbnRsU2VnbWVudGVySGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6
Y3JlYXRlPEludGxTZWdtZW50ZXI+KCkpCi0gICAgLCBpbnRsU2VnbWVudHNIZWFwQ2VsbFR5cGUo
SXNvSGVhcENlbGxUeXBlOjpjcmVhdGU8SW50bFNlZ21lbnRzPigpKQotI2lmIEVOQUJMRShXRUJB
U1NFTUJMWSkKLSAgICAsIHdlYkFzc2VtYmx5Q29kZUJsb2NrSGVhcENlbGxUeXBlKElzb0hlYXBD
ZWxsVHlwZTo6Y3JlYXRlPEpTV2ViQXNzZW1ibHlDb2RlQmxvY2s+KCkpCi0gICAgLCB3ZWJBc3Nl
bWJseUV4Y2VwdGlvbkhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OmNyZWF0ZTxKU1dlYkFz
c2VtYmx5RXhjZXB0aW9uPigpKQotICAgICwgd2ViQXNzZW1ibHlGdW5jdGlvbkhlYXBDZWxsVHlw
ZShJc29IZWFwQ2VsbFR5cGU6OmNyZWF0ZTxXZWJBc3NlbWJseUZ1bmN0aW9uPigpKQotICAgICwg
d2ViQXNzZW1ibHlHbG9iYWxIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpjcmVhdGU8SlNX
ZWJBc3NlbWJseUdsb2JhbD4oKSkKLSAgICAsIHdlYkFzc2VtYmx5SW5zdGFuY2VIZWFwQ2VsbFR5
cGUoSXNvSGVhcENlbGxUeXBlOjpjcmVhdGU8SlNXZWJBc3NlbWJseUluc3RhbmNlPigpKQotICAg
ICwgd2ViQXNzZW1ibHlNZW1vcnlIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpjcmVhdGU8
SlNXZWJBc3NlbWJseU1lbW9yeT4oKSkKLSAgICAsIHdlYkFzc2VtYmx5TW9kdWxlSGVhcENlbGxU
eXBlKElzb0hlYXBDZWxsVHlwZTo6Y3JlYXRlPEpTV2ViQXNzZW1ibHlNb2R1bGU+KCkpCi0gICAg
LCB3ZWJBc3NlbWJseU1vZHVsZVJlY29yZEhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OmNy
ZWF0ZTxXZWJBc3NlbWJseU1vZHVsZVJlY29yZD4oKSkKLSAgICAsIHdlYkFzc2VtYmx5VGFibGVI
ZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpjcmVhdGU8SlNXZWJBc3NlbWJseVRhYmxlPigp
KQotICAgICwgd2ViQXNzZW1ibHlUYWdIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpjcmVh
dGU8SlNXZWJBc3NlbWJseVRhZz4oKSkKLSNlbmRpZgotICAgICwgcHJpbWl0aXZlR2lnYWNhZ2VB
dXhpbGlhcnlTcGFjZSgiUHJpbWl0aXZlIEdpZ2FjYWdlIEF1eGlsaWFyeSIsIGhlYXAsICphdXhp
bGlhcnlIZWFwQ2VsbFR5cGUsIHByaW1pdGl2ZUdpZ2FjYWdlQWxsb2NhdG9yLmdldCgpKSAvLyBI
YXNoOjB4M2U3Y2Q3NjIKLSAgICAsIGpzVmFsdWVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlKCJKU1Zh
bHVlIEdpZ2FjYWdlIEF1eGlsaWFyeSIsIGhlYXAsICphdXhpbGlhcnlIZWFwQ2VsbFR5cGUsIGpz
VmFsdWVHaWdhY2FnZUFsbG9jYXRvci5nZXQoKSkgLy8gSGFzaDoweDI0MWU5NDYKLSAgICAsIGlt
bXV0YWJsZUJ1dHRlcmZseUpTVmFsdWVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlKCJJbW11dGFibGVC
dXR0ZXJmbHkgR2lnYWNhZ2UgSlNDZWxsV2l0aEluZGV4aW5nSGVhZGVyIiwgaGVhcCwgKmltbXV0
YWJsZUJ1dHRlcmZseUhlYXBDZWxsVHlwZSwganNWYWx1ZUdpZ2FjYWdlQWxsb2NhdG9yLmdldCgp
KSAvLyBIYXNoOjB4N2E5NDUzMDAKLSAgICAsIGNlbGxTcGFjZSgiSlNDZWxsIiwgaGVhcCwgKmNl
bGxIZWFwQ2VsbFR5cGUsIGZhc3RNYWxsb2NBbGxvY2F0b3IuZ2V0KCkpIC8vIEhhc2g6MHhhZGZi
NWE3OQotICAgICwgdmFyaWFibGVTaXplZENlbGxTcGFjZSgiVmFyaWFibGUgU2l6ZWQgSlNDZWxs
IiwgaGVhcCwgKmNlbGxIZWFwQ2VsbFR5cGUsIGZhc3RNYWxsb2NBbGxvY2F0b3IuZ2V0KCkpIC8v
IEhhc2g6MHhiY2Q3NjljYwotICAgICwgZGVzdHJ1Y3RpYmxlT2JqZWN0U3BhY2UoIkpTRGVzdHJ1
Y3RpYmxlT2JqZWN0IiwgaGVhcCwgKmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSwgZmFz
dE1hbGxvY0FsbG9jYXRvci5nZXQoKSkgLy8gSGFzaDoweDRmNWVkN2E5Ci0gICAgLCBhcnJheVNw
YWNlIElTT19TVUJTUEFDRV9JTklUKGhlYXAsICpjZWxsSGVhcENlbGxUeXBlLCBKU0FycmF5KQot
ICAgICwgYmlnSW50U3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoaGVhcCwgKmNlbGxIZWFwQ2VsbFR5
cGUsIEpTQmlnSW50KQotICAgICwgY2FsbGVlU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoaGVhcCwg
KmNlbGxIZWFwQ2VsbFR5cGUsIEpTQ2FsbGVlKQotICAgICwgY2xvbmVkQXJndW1lbnRzU3BhY2Ug
SVNPX1NVQlNQQUNFX0lOSVQoaGVhcCwgKmNlbGxIZWFwQ2VsbFR5cGUsIENsb25lZEFyZ3VtZW50
cykKLSAgICAsIGN1c3RvbUdldHRlclNldHRlclNwYWNlIElTT19TVUJTUEFDRV9JTklUKGhlYXAs
ICpjZWxsSGVhcENlbGxUeXBlLCBDdXN0b21HZXR0ZXJTZXR0ZXIpCi0gICAgLCBkYXRlSW5zdGFu
Y2VTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVChoZWFwLCAqZGF0ZUluc3RhbmNlSGVhcENlbGxUeXBl
LCBEYXRlSW5zdGFuY2UpCi0gICAgLCBkb21BdHRyaWJ1dGVHZXR0ZXJTZXR0ZXJTcGFjZSBJU09f
U1VCU1BBQ0VfSU5JVChoZWFwLCAqY2VsbEhlYXBDZWxsVHlwZSwgRE9NQXR0cmlidXRlR2V0dGVy
U2V0dGVyKQotICAgICwgZXhjZXB0aW9uU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoaGVhcCwgKmRl
c3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUsIEV4Y2VwdGlvbikKLSAgICAsIGV4ZWN1dGFibGVU
b0NvZGVCbG9ja0VkZ2VTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVChoZWFwLCAqY2VsbEhlYXBDZWxs
VHlwZSwgRXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZSkgLy8gSGFzaDoweDdiNzMwYjIwCi0gICAg
LCBmdW5jdGlvblNwYWNlIElTT19TVUJTUEFDRV9JTklUKGhlYXAsICpjZWxsSGVhcENlbGxUeXBl
LCBKU0Z1bmN0aW9uKSAvLyBIYXNoOjB4ODAwZmNhNzIKLSAgICAsIGdldHRlclNldHRlclNwYWNl
IElTT19TVUJTUEFDRV9JTklUKGhlYXAsICpjZWxsSGVhcENlbGxUeXBlLCBHZXR0ZXJTZXR0ZXIp
Ci0gICAgLCBnbG9iYWxMZXhpY2FsRW52aXJvbm1lbnRTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVCho
ZWFwLCAqZ2xvYmFsTGV4aWNhbEVudmlyb25tZW50SGVhcENlbGxUeXBlLCBKU0dsb2JhbExleGlj
YWxFbnZpcm9ubWVudCkKLSAgICAsIGludGVybmFsRnVuY3Rpb25TcGFjZSBJU09fU1VCU1BBQ0Vf
SU5JVChoZWFwLCAqY2VsbEhlYXBDZWxsVHlwZSwgSW50ZXJuYWxGdW5jdGlvbikgLy8gSGFzaDow
eGY4NDVjNDY0Ci0gICAgLCBqc1Byb3h5U3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoaGVhcCwgKmNl
bGxIZWFwQ2VsbFR5cGUsIEpTUHJveHkpCi0gICAgLCBuYXRpdmVFeGVjdXRhYmxlU3BhY2UgSVNP
X1NVQlNQQUNFX0lOSVQoaGVhcCwgKmRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUsIE5hdGl2
ZUV4ZWN1dGFibGUpIC8vIEhhc2g6MHg2NzU2N2Y5NQotICAgICwgbnVtYmVyT2JqZWN0U3BhY2Ug
SVNPX1NVQlNQQUNFX0lOSVQoaGVhcCwgKmNlbGxIZWFwQ2VsbFR5cGUsIE51bWJlck9iamVjdCkK
LSAgICAsIHBsYWluT2JqZWN0U3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoaGVhcCwgKmNlbGxIZWFw
Q2VsbFR5cGUsIEpTTm9uRmluYWxPYmplY3QpIC8vIE1haW5seSB1c2VkIGZvciBwcm90b3R5cGVz
LgotICAgICwgcHJvbWlzZVNwYWNlIElTT19TVUJTUEFDRV9JTklUKGhlYXAsICpjZWxsSGVhcENl
bGxUeXBlLCBKU1Byb21pc2UpCi0gICAgLCBwcm9wZXJ0eU5hbWVFbnVtZXJhdG9yU3BhY2UgSVNP
X1NVQlNQQUNFX0lOSVQoaGVhcCwgKmNlbGxIZWFwQ2VsbFR5cGUsIEpTUHJvcGVydHlOYW1lRW51
bWVyYXRvcikKLSAgICAsIHByb3BlcnR5VGFibGVTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVChoZWFw
LCAqZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZSwgUHJvcGVydHlUYWJsZSkgLy8gSGFzaDow
eGM2YmM5ZjEyCi0gICAgLCByZWdFeHBTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVChoZWFwLCAqZGVz
dHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZSwgUmVnRXhwKQotICAgICwgcmVnRXhwT2JqZWN0U3Bh
Y2UgSVNPX1NVQlNQQUNFX0lOSVQoaGVhcCwgKmNlbGxIZWFwQ2VsbFR5cGUsIFJlZ0V4cE9iamVj
dCkKLSAgICAsIHJvcGVTdHJpbmdTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVChoZWFwLCAqc3RyaW5n
SGVhcENlbGxUeXBlLCBKU1JvcGVTdHJpbmcpCi0gICAgLCBzY29wZWRBcmd1bWVudHNTcGFjZSBJ
U09fU1VCU1BBQ0VfSU5JVChoZWFwLCAqY2VsbEhlYXBDZWxsVHlwZSwgU2NvcGVkQXJndW1lbnRz
KQotICAgICwgc3BhcnNlQXJyYXlWYWx1ZU1hcFNwYWNlIElTT19TVUJTUEFDRV9JTklUKGhlYXAs
ICpkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlLCBTcGFyc2VBcnJheVZhbHVlTWFwKQotICAg
ICwgc3RyaW5nU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoaGVhcCwgKnN0cmluZ0hlYXBDZWxsVHlw
ZSwgSlNTdHJpbmcpIC8vIEhhc2g6MHg5MGNmNzU4ZgotICAgICwgc3RyaW5nT2JqZWN0U3BhY2Ug
SVNPX1NVQlNQQUNFX0lOSVQoaGVhcCwgKmNlbGxIZWFwQ2VsbFR5cGUsIFN0cmluZ09iamVjdCkK
LSAgICAsIHN0cnVjdHVyZUNoYWluU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoaGVhcCwgKmNlbGxI
ZWFwQ2VsbFR5cGUsIFN0cnVjdHVyZUNoYWluKQotICAgICwgc3RydWN0dXJlUmFyZURhdGFTcGFj
ZSBJU09fU1VCU1BBQ0VfSU5JVChoZWFwLCAqZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZSwg
U3RydWN0dXJlUmFyZURhdGEpIC8vIEhhc2g6MHhhY2E0ZTYyZAotICAgICwgc3RydWN0dXJlU3Bh
Y2UgSVNPX1NVQlNQQUNFX0lOSVQoaGVhcCwgKmRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUs
IFN0cnVjdHVyZSkgLy8gSGFzaDoweDFmMWJjZGNhCi0gICAgLCBicmFuZGVkU3RydWN0dXJlU3Bh
Y2UgSVNPX1NVQlNQQUNFX0lOSVQoaGVhcCwgKmRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUs
IEJyYW5kZWRTdHJ1Y3R1cmUpCi0gICAgLCBzeW1ib2xUYWJsZVNwYWNlIElTT19TVUJTUEFDRV9J
TklUKGhlYXAsICpkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlLCBTeW1ib2xUYWJsZSkgLy8g
SGFzaDoweGM1MjE1YWZkCi0gICAgLCBleGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlc1dpdGhDb25z
dHJhaW50cyhleGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlU3BhY2UpCi0gICAgLCBleGVjdXRhYmxl
VG9Db2RlQmxvY2tFZGdlc1dpdGhGaW5hbGl6ZXJzKGV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2VT
cGFjZSkKLSAgICAsIGNvZGVCbG9ja1NwYWNlIElTT19TVUJTUEFDRV9JTklUKGhlYXAsICpkZXN0
cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlLCBDb2RlQmxvY2spIC8vIEhhc2g6MHg3N2U2NmVjOQot
ICAgICwgZnVuY3Rpb25FeGVjdXRhYmxlU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoaGVhcCwgKmRl
c3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUsIEZ1bmN0aW9uRXhlY3V0YWJsZSkgLy8gSGFzaDow
eDVkMTU4ZjMKLSAgICAsIHByb2dyYW1FeGVjdXRhYmxlU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQo
aGVhcCwgKmRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUsIFByb2dyYW1FeGVjdXRhYmxlKSAv
LyBIYXNoOjB4NTI3Yzc3ZTcKLSAgICAsIHVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlU3BhY2Ug
SVNPX1NVQlNQQUNFX0lOSVQoaGVhcCwgKmRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUsIFVu
bGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKSAvLyBIYXNoOjB4ZjZiODI4ZDkKICAgICAsIHZtVHlw
ZSh2bVR5cGUpCiAgICAgLCBjbGllbnREYXRhKG51bGxwdHIpCiAgICAgLCB0b3BFbnRyeUZyYW1l
KG51bGxwdHIpCkBAIC0xNTcyLDEzNyArMTM4Niw2IEBAIHZvaWQgVk06OmVuc3VyZVNoYWRvd0No
aWNrZW4oKQogICAgIG1fc2hhZG93Q2hpY2tlbiA9IG1ha2VVbmlxdWU8U2hhZG93Q2hpY2tlbj4o
KTsKIH0KIAotI2RlZmluZSBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1co
bmFtZSwgaGVhcENlbGxUeXBlLCB0eXBlKSBcCi0gICAgSXNvU3Vic3BhY2UqIFZNOjpuYW1lIyNT
bG93KCkgXAotICAgIHsgXAotICAgICAgICBBU1NFUlQoIW1fIyNuYW1lKTsgXAotICAgICAgICBh
dXRvIHNwYWNlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQoaGVh
cCwgaGVhcENlbGxUeXBlLCB0eXBlKTsgXAotICAgICAgICBXVEY6OnN0b3JlU3RvcmVGZW5jZSgp
OyBcCi0gICAgICAgIG1fIyNuYW1lID0gV1RGTW92ZShzcGFjZSk7IFwKLSAgICAgICAgcmV0dXJu
IG1fIyNuYW1lLmdldCgpOyBcCi0gICAgfQotCi0KLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklO
RV9NRU1CRVJfU0xPVyhhcGlHbG9iYWxPYmplY3RTcGFjZSwgKmFwaUdsb2JhbE9iamVjdEhlYXBD
ZWxsVHlwZSwgSlNBUElHbG9iYWxPYmplY3QpCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVf
TUVNQkVSX1NMT1coYXBpVmFsdWVXcmFwcGVyU3BhY2UsICpjZWxsSGVhcENlbGxUeXBlLCBKU0FQ
SVZhbHVlV3JhcHBlcikKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhh
cnJheUJ1ZmZlclNwYWNlLCAqY2VsbEhlYXBDZWxsVHlwZSwgSlNBcnJheUJ1ZmZlcikKLURZTkFN
SUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhhcnJheUl0ZXJhdG9yU3BhY2UsICpj
ZWxsSGVhcENlbGxUeXBlLCBKU0FycmF5SXRlcmF0b3IpCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9E
RUZJTkVfTUVNQkVSX1NMT1coYXN5bmNHZW5lcmF0b3JTcGFjZSwgKmNlbGxIZWFwQ2VsbFR5cGUs
IEpTQXN5bmNHZW5lcmF0b3IpCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NM
T1coYmlnSW50NjRBcnJheVNwYWNlLCAqY2VsbEhlYXBDZWxsVHlwZSwgSlNCaWdJbnQ2NEFycmF5
KQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGJpZ0ludE9iamVjdFNw
YWNlLCAqY2VsbEhlYXBDZWxsVHlwZSwgQmlnSW50T2JqZWN0KQotRFlOQU1JQ19JU09fU1VCU1BB
Q0VfREVGSU5FX01FTUJFUl9TTE9XKGJpZ1VpbnQ2NEFycmF5U3BhY2UsICpjZWxsSGVhcENlbGxU
eXBlLCBKU0JpZ1VpbnQ2NEFycmF5KQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJF
Ul9TTE9XKGJvb2xlYW5PYmplY3RTcGFjZSwgKmNlbGxIZWFwQ2VsbFR5cGUsIEJvb2xlYW5PYmpl
Y3QpCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coYm91bmRGdW5jdGlv
blNwYWNlLCAqY2VsbEhlYXBDZWxsVHlwZSwgSlNCb3VuZEZ1bmN0aW9uKSAvLyBIYXNoOjB4ZDc5
MTZkNDEKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhjYWxsYmFja0Nv
bnN0cnVjdG9yU3BhY2UsICpjYWxsYmFja0NvbnN0cnVjdG9ySGVhcENlbGxUeXBlLCBKU0NhbGxi
YWNrQ29uc3RydWN0b3IpCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1co
Y2FsbGJhY2tHbG9iYWxPYmplY3RTcGFjZSwgKmNhbGxiYWNrR2xvYmFsT2JqZWN0SGVhcENlbGxU
eXBlLCBKU0NhbGxiYWNrT2JqZWN0PEpTR2xvYmFsT2JqZWN0PikKLURZTkFNSUNfSVNPX1NVQlNQ
QUNFX0RFRklORV9NRU1CRVJfU0xPVyhjYWxsYmFja0Z1bmN0aW9uU3BhY2UsICpjZWxsSGVhcENl
bGxUeXBlLCBKU0NhbGxiYWNrRnVuY3Rpb24pIC8vIEhhc2g6MHhlNzY0OGViYwotRFlOQU1JQ19J
U09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGNhbGxiYWNrT2JqZWN0U3BhY2UsICpjYWxs
YmFja09iamVjdEhlYXBDZWxsVHlwZSwgSlNDYWxsYmFja09iamVjdDxKU05vbkZpbmFsT2JqZWN0
PikKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhjdXN0b21HZXR0ZXJG
dW5jdGlvblNwYWNlLCAqY3VzdG9tR2V0dGVyRnVuY3Rpb25IZWFwQ2VsbFR5cGUsIEpTQ3VzdG9t
R2V0dGVyRnVuY3Rpb24pCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1co
Y3VzdG9tU2V0dGVyRnVuY3Rpb25TcGFjZSwgKmN1c3RvbVNldHRlckZ1bmN0aW9uSGVhcENlbGxU
eXBlLCBKU0N1c3RvbVNldHRlckZ1bmN0aW9uKQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5F
X01FTUJFUl9TTE9XKGRhdGFWaWV3U3BhY2UsICpjZWxsSGVhcENlbGxUeXBlLCBKU0RhdGFWaWV3
KQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGRlYnVnZ2VyU2NvcGVT
cGFjZSwgKmNlbGxIZWFwQ2VsbFR5cGUsIERlYnVnZ2VyU2NvcGUpCi1EWU5BTUlDX0lTT19TVUJT
UEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coZXJyb3JJbnN0YW5jZVNwYWNlLCAqZXJyb3JJbnN0YW5j
ZUhlYXBDZWxsVHlwZSwgRXJyb3JJbnN0YW5jZSkgLy8gSGFzaDoweDNmNDBkNGEKLURZTkFNSUNf
SVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhmbG9hdDMyQXJyYXlTcGFjZSwgKmNlbGxI
ZWFwQ2VsbFR5cGUsIEpTRmxvYXQzMkFycmF5KQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5F
X01FTUJFUl9TTE9XKGZsb2F0NjRBcnJheVNwYWNlLCAqY2VsbEhlYXBDZWxsVHlwZSwgSlNGbG9h
dDY0QXJyYXkpCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coZnVuY3Rp
b25SYXJlRGF0YVNwYWNlLCAqZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZSwgRnVuY3Rpb25S
YXJlRGF0YSkKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhnZW5lcmF0
b3JTcGFjZSwgKmNlbGxIZWFwQ2VsbFR5cGUsIEpTR2VuZXJhdG9yKQotRFlOQU1JQ19JU09fU1VC
U1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGdsb2JhbE9iamVjdFNwYWNlLCAqZ2xvYmFsT2JqZWN0
SGVhcENlbGxUeXBlLCBKU0dsb2JhbE9iamVjdCkKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklO
RV9NRU1CRVJfU0xPVyhpbmplY3RlZFNjcmlwdEhvc3RTcGFjZSwgKmluamVjdGVkU2NyaXB0SG9z
dFNwYWNlSGVhcENlbGxUeXBlLCBJbnNwZWN0b3I6OkpTSW5qZWN0ZWRTY3JpcHRIb3N0KQotRFlO
QU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGludDhBcnJheVNwYWNlLCAqY2Vs
bEhlYXBDZWxsVHlwZSwgSlNJbnQ4QXJyYXkpCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVf
TUVNQkVSX1NMT1coaW50MTZBcnJheVNwYWNlLCAqY2VsbEhlYXBDZWxsVHlwZSwgSlNJbnQxNkFy
cmF5KQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGludDMyQXJyYXlT
cGFjZSwgKmNlbGxIZWFwQ2VsbFR5cGUsIEpTSW50MzJBcnJheSkKLURZTkFNSUNfSVNPX1NVQlNQ
QUNFX0RFRklORV9NRU1CRVJfU0xPVyhqYXZhU2NyaXB0Q2FsbEZyYW1lU3BhY2UsICpqYXZhU2Ny
aXB0Q2FsbEZyYW1lSGVhcENlbGxUeXBlLCBJbnNwZWN0b3I6OkpTSmF2YVNjcmlwdENhbGxGcmFt
ZSkKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhqc01vZHVsZVJlY29y
ZFNwYWNlLCAqanNNb2R1bGVSZWNvcmRIZWFwQ2VsbFR5cGUsIEpTTW9kdWxlUmVjb3JkKQotRFlO
QU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKG1hcEJ1Y2tldFNwYWNlLCAqY2Vs
bEhlYXBDZWxsVHlwZSwgSlNNYXA6OkJ1Y2tldFR5cGUpCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9E
RUZJTkVfTUVNQkVSX1NMT1cobWFwSXRlcmF0b3JTcGFjZSwgKmNlbGxIZWFwQ2VsbFR5cGUsIEpT
TWFwSXRlcmF0b3IpCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1cobWFw
U3BhY2UsICpjZWxsSGVhcENlbGxUeXBlLCBKU01hcCkKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RF
RklORV9NRU1CRVJfU0xPVyhtb2R1bGVOYW1lc3BhY2VPYmplY3RTcGFjZSwgKm1vZHVsZU5hbWVz
cGFjZU9iamVjdEhlYXBDZWxsVHlwZSwgSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QpCi1EWU5BTUlD
X0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1cobmF0aXZlU3RkRnVuY3Rpb25TcGFjZSwg
Km5hdGl2ZVN0ZEZ1bmN0aW9uSGVhcENlbGxUeXBlLCBKU05hdGl2ZVN0ZEZ1bmN0aW9uKSAvLyBI
YXNoOjB4NzBlZDYxZTQKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhw
cm94eU9iamVjdFNwYWNlLCAqY2VsbEhlYXBDZWxsVHlwZSwgUHJveHlPYmplY3QpCi1EWU5BTUlD
X0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1cocHJveHlSZXZva2VTcGFjZSwgKmNlbGxI
ZWFwQ2VsbFR5cGUsIFByb3h5UmV2b2tlKSAvLyBIYXNoOjB4YjUwNmE5MzkKLURZTkFNSUNfSVNP
X1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhzY29wZWRBcmd1bWVudHNUYWJsZVNwYWNlLCAq
ZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZSwgU2NvcGVkQXJndW1lbnRzVGFibGUpCi1EWU5B
TUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coc2NyaXB0RmV0Y2hQYXJhbWV0ZXJz
U3BhY2UsICpkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlLCBKU1NjcmlwdEZldGNoUGFyYW1l
dGVycykKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhzY3JpcHRGZXRj
aGVyU3BhY2UsICpkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlLCBKU1NjcmlwdEZldGNoZXIp
Ci1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coc2V0QnVja2V0U3BhY2Us
ICpjZWxsSGVhcENlbGxUeXBlLCBKU1NldDo6QnVja2V0VHlwZSkKLURZTkFNSUNfSVNPX1NVQlNQ
QUNFX0RFRklORV9NRU1CRVJfU0xPVyhzZXRJdGVyYXRvclNwYWNlLCAqY2VsbEhlYXBDZWxsVHlw
ZSwgSlNTZXRJdGVyYXRvcikKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xP
VyhzZXRTcGFjZSwgKmNlbGxIZWFwQ2VsbFR5cGUsIEpTU2V0KQotRFlOQU1JQ19JU09fU1VCU1BB
Q0VfREVGSU5FX01FTUJFUl9TTE9XKHNoYWRvd1JlYWxtU3BhY2UsICpjZWxsSGVhcENlbGxUeXBl
LCBTaGFkb3dSZWFsbU9iamVjdCkKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJf
U0xPVyhzdHJpY3RFdmFsQWN0aXZhdGlvblNwYWNlLCAqY2VsbEhlYXBDZWxsVHlwZSwgU3RyaWN0
RXZhbEFjdGl2YXRpb24pCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1co
c3RyaW5nSXRlcmF0b3JTcGFjZSwgKmNlbGxIZWFwQ2VsbFR5cGUsIEpTU3RyaW5nSXRlcmF0b3Ip
Ci1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coc291cmNlQ29kZVNwYWNl
LCAqZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZSwgSlNTb3VyY2VDb2RlKQotRFlOQU1JQ19J
U09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHN5bWJvbFNwYWNlLCAqZGVzdHJ1Y3RpYmxl
Q2VsbEhlYXBDZWxsVHlwZSwgU3ltYm9sKQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01F
TUJFUl9TTE9XKHN5bWJvbE9iamVjdFNwYWNlLCAqY2VsbEhlYXBDZWxsVHlwZSwgU3ltYm9sT2Jq
ZWN0KQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHRlbXBsYXRlT2Jq
ZWN0RGVzY3JpcHRvclNwYWNlLCAqZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZSwgSlNUZW1w
bGF0ZU9iamVjdERlc2NyaXB0b3IpCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVS
X1NMT1codGVtcG9yYWxDYWxlbmRhclNwYWNlLCAqY2VsbEhlYXBDZWxsVHlwZSwgVGVtcG9yYWxD
YWxlbmRhcikKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh0ZW1wb3Jh
bER1cmF0aW9uU3BhY2UsICpjZWxsSGVhcENlbGxUeXBlLCBUZW1wb3JhbER1cmF0aW9uKQotRFlO
QU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHRlbXBvcmFsSW5zdGFudFNwYWNl
LCAqY2VsbEhlYXBDZWxsVHlwZSwgVGVtcG9yYWxJbnN0YW50KQotRFlOQU1JQ19JU09fU1VCU1BB
Q0VfREVGSU5FX01FTUJFUl9TTE9XKHRlbXBvcmFsUGxhaW5UaW1lU3BhY2UsICpjZWxsSGVhcENl
bGxUeXBlLCBUZW1wb3JhbFBsYWluVGltZSkKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9N
RU1CRVJfU0xPVyh0ZW1wb3JhbFRpbWVab25lU3BhY2UsICpjZWxsSGVhcENlbGxUeXBlLCBUZW1w
b3JhbFRpbWVab25lKQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHVp
bnQ4QXJyYXlTcGFjZSwgKmNlbGxIZWFwQ2VsbFR5cGUsIEpTVWludDhBcnJheSkKLURZTkFNSUNf
SVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh1aW50OENsYW1wZWRBcnJheVNwYWNlLCAq
Y2VsbEhlYXBDZWxsVHlwZSwgSlNVaW50OENsYW1wZWRBcnJheSkKLURZTkFNSUNfSVNPX1NVQlNQ
QUNFX0RFRklORV9NRU1CRVJfU0xPVyh1aW50MTZBcnJheVNwYWNlLCAqY2VsbEhlYXBDZWxsVHlw
ZSwgSlNVaW50MTZBcnJheSkKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xP
Vyh1aW50MzJBcnJheVNwYWNlLCAqY2VsbEhlYXBDZWxsVHlwZSwgSlNVaW50MzJBcnJheSkKLURZ
TkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh1bmxpbmtlZEV2YWxDb2RlQmxv
Y2tTcGFjZSwgKmRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUsIFVubGlua2VkRXZhbENvZGVC
bG9jaykKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh1bmxpbmtlZEZ1
bmN0aW9uQ29kZUJsb2NrU3BhY2UsICpkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlLCBVbmxp
bmtlZEZ1bmN0aW9uQ29kZUJsb2NrKQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJF
Ul9TTE9XKHVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9ja1NwYWNlLCAqZGVzdHJ1Y3RpYmxl
Q2VsbEhlYXBDZWxsVHlwZSwgVW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKQotRFlOQU1J
Q19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHVubGlua2VkUHJvZ3JhbUNvZGVCbG9j
a1NwYWNlLCAqZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZSwgVW5saW5rZWRQcm9ncmFtQ29k
ZUJsb2NrKQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHdlYWtNYXBT
cGFjZSwgKndlYWtNYXBIZWFwQ2VsbFR5cGUsIEpTV2Vha01hcCkgLy8gSGFzaDoweDY2MmIxMmEz
Ci1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1cod2Vha1NldFNwYWNlLCAq
d2Vha1NldEhlYXBDZWxsVHlwZSwgSlNXZWFrU2V0KSAvLyBIYXNoOjB4NGM3ODFiMzAKLURZTkFN
SUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh3ZWFrT2JqZWN0UmVmU3BhY2UsICpj
ZWxsSGVhcENlbGxUeXBlLCBKU1dlYWtPYmplY3RSZWYpIC8vIEhhc2g6MHg4ZWM2OGYxZgotRFlO
QU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHdpdGhTY29wZVNwYWNlLCAqY2Vs
bEhlYXBDZWxsVHlwZSwgSlNXaXRoU2NvcGUpCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVf
TUVNQkVSX1NMT1coZmluYWxpemF0aW9uUmVnaXN0cnlTcGFjZSwgKmZpbmFsaXphdGlvblJlZ2lz
dHJ5Q2VsbFR5cGUsIEpTRmluYWxpemF0aW9uUmVnaXN0cnkpCi0jaWYgSlNDX09CSkNfQVBJX0VO
QUJMRUQKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhhcGlXcmFwcGVy
T2JqZWN0U3BhY2UsICphcGlXcmFwcGVyT2JqZWN0SGVhcENlbGxUeXBlLCBKU0NhbGxiYWNrT2Jq
ZWN0PEpTQVBJV3JhcHBlck9iamVjdD4pCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVN
QkVSX1NMT1cob2JqQ0NhbGxiYWNrRnVuY3Rpb25TcGFjZSwgKm9iakNDYWxsYmFja0Z1bmN0aW9u
SGVhcENlbGxUeXBlLCBPYmpDQ2FsbGJhY2tGdW5jdGlvbikgLy8gSGFzaDoweDEwZjYxMGI4Ci0j
ZW5kaWYKLSNpZmRlZiBKU0NfR0xJQl9BUElfRU5BQkxFRAotRFlOQU1JQ19JU09fU1VCU1BBQ0Vf
REVGSU5FX01FTUJFUl9TTE9XKGFwaVdyYXBwZXJPYmplY3RTcGFjZSwgKmFwaVdyYXBwZXJPYmpl
Y3RIZWFwQ2VsbFR5cGUsIEpTQ2FsbGJhY2tPYmplY3Q8SlNBUElXcmFwcGVyT2JqZWN0PikKLURZ
TkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhqc2NDYWxsYmFja0Z1bmN0aW9u
U3BhY2UsICpqc2NDYWxsYmFja0Z1bmN0aW9uSGVhcENlbGxUeXBlLCBKU0NDYWxsYmFja0Z1bmN0
aW9uKQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGNhbGxiYWNrQVBJ
V3JhcHBlckdsb2JhbE9iamVjdFNwYWNlLCAqY2FsbGJhY2tBUElXcmFwcGVyR2xvYmFsT2JqZWN0
SGVhcENlbGxUeXBlLCBKU0NhbGxiYWNrT2JqZWN0PEpTQVBJV3JhcHBlckdsb2JhbE9iamVjdD4p
Ci0jZW5kaWYKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhpbnRsQ29s
bGF0b3JTcGFjZSwgKmludGxDb2xsYXRvckhlYXBDZWxsVHlwZSwgSW50bENvbGxhdG9yKQotRFlO
QU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGludGxEYXRlVGltZUZvcm1hdFNw
YWNlLCAqaW50bERhdGVUaW1lRm9ybWF0SGVhcENlbGxUeXBlLCBJbnRsRGF0ZVRpbWVGb3JtYXQp
Ci1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coaW50bERpc3BsYXlOYW1l
c1NwYWNlLCAqaW50bERpc3BsYXlOYW1lc0hlYXBDZWxsVHlwZSwgSW50bERpc3BsYXlOYW1lcykK
LURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhpbnRsTGlzdEZvcm1hdFNw
YWNlLCAqaW50bExpc3RGb3JtYXRIZWFwQ2VsbFR5cGUsIEludGxMaXN0Rm9ybWF0KQotRFlOQU1J
Q19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGludGxMb2NhbGVTcGFjZSwgKmludGxM
b2NhbGVIZWFwQ2VsbFR5cGUsIEludGxMb2NhbGUpCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJ
TkVfTUVNQkVSX1NMT1coaW50bE51bWJlckZvcm1hdFNwYWNlLCAqaW50bE51bWJlckZvcm1hdEhl
YXBDZWxsVHlwZSwgSW50bE51bWJlckZvcm1hdCkKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklO
RV9NRU1CRVJfU0xPVyhpbnRsUGx1cmFsUnVsZXNTcGFjZSwgKmludGxQbHVyYWxSdWxlc0hlYXBD
ZWxsVHlwZSwgSW50bFBsdXJhbFJ1bGVzKQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01F
TUJFUl9TTE9XKGludGxSZWxhdGl2ZVRpbWVGb3JtYXRTcGFjZSwgKmludGxSZWxhdGl2ZVRpbWVG
b3JtYXRIZWFwQ2VsbFR5cGUsIEludGxSZWxhdGl2ZVRpbWVGb3JtYXQpCi1EWU5BTUlDX0lTT19T
VUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coaW50bFNlZ21lbnRJdGVyYXRvclNwYWNlLCAqaW50
bFNlZ21lbnRJdGVyYXRvckhlYXBDZWxsVHlwZSwgSW50bFNlZ21lbnRJdGVyYXRvcikKLURZTkFN
SUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhpbnRsU2VnbWVudGVyU3BhY2UsICpp
bnRsU2VnbWVudGVySGVhcENlbGxUeXBlLCBJbnRsU2VnbWVudGVyKQotRFlOQU1JQ19JU09fU1VC
U1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGludGxTZWdtZW50c1NwYWNlLCAqaW50bFNlZ21lbnRz
SGVhcENlbGxUeXBlLCBJbnRsU2VnbWVudHMpCi0jaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQotRFlO
QU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGpzVG9XYXNtSUNDYWxsZWVTcGFj
ZSwgKmNlbGxIZWFwQ2VsbFR5cGUsIEpTVG9XYXNtSUNDYWxsZWUpCi1EWU5BTUlDX0lTT19TVUJT
UEFDRV9ERUZJTkVfTUVNQkVSX1NMT1cod2ViQXNzZW1ibHlDb2RlQmxvY2tTcGFjZSwgKndlYkFz
c2VtYmx5Q29kZUJsb2NrSGVhcENlbGxUeXBlLCBKU1dlYkFzc2VtYmx5Q29kZUJsb2NrKSAvLyBI
YXNoOjB4OWFkOTk1Y2QKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh3
ZWJBc3NlbWJseUV4Y2VwdGlvblNwYWNlLCAqd2ViQXNzZW1ibHlFeGNlcHRpb25IZWFwQ2VsbFR5
cGUsIEpTV2ViQXNzZW1ibHlFeGNlcHRpb24pCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVf
TUVNQkVSX1NMT1cod2ViQXNzZW1ibHlGdW5jdGlvblNwYWNlLCAqd2ViQXNzZW1ibHlGdW5jdGlv
bkhlYXBDZWxsVHlwZSwgV2ViQXNzZW1ibHlGdW5jdGlvbikgLy8gSGFzaDoweDhiN2MzMmRiCi1E
WU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1cod2ViQXNzZW1ibHlHbG9iYWxT
cGFjZSwgKndlYkFzc2VtYmx5R2xvYmFsSGVhcENlbGxUeXBlLCBKU1dlYkFzc2VtYmx5R2xvYmFs
KQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHdlYkFzc2VtYmx5SW5z
dGFuY2VTcGFjZSwgKndlYkFzc2VtYmx5SW5zdGFuY2VIZWFwQ2VsbFR5cGUsIEpTV2ViQXNzZW1i
bHlJbnN0YW5jZSkKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh3ZWJB
c3NlbWJseU1lbW9yeVNwYWNlLCAqd2ViQXNzZW1ibHlNZW1vcnlIZWFwQ2VsbFR5cGUsIEpTV2Vi
QXNzZW1ibHlNZW1vcnkpCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1co
d2ViQXNzZW1ibHlNb2R1bGVTcGFjZSwgKndlYkFzc2VtYmx5TW9kdWxlSGVhcENlbGxUeXBlLCBK
U1dlYkFzc2VtYmx5TW9kdWxlKQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9T
TE9XKHdlYkFzc2VtYmx5TW9kdWxlUmVjb3JkU3BhY2UsICp3ZWJBc3NlbWJseU1vZHVsZVJlY29y
ZEhlYXBDZWxsVHlwZSwgV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQpCi1EWU5BTUlDX0lTT19TVUJT
UEFDRV9ERUZJTkVfTUVNQkVSX1NMT1cod2ViQXNzZW1ibHlUYWJsZVNwYWNlLCAqd2ViQXNzZW1i
bHlUYWJsZUhlYXBDZWxsVHlwZSwgSlNXZWJBc3NlbWJseVRhYmxlKQotRFlOQU1JQ19JU09fU1VC
U1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHdlYkFzc2VtYmx5VGFnU3BhY2UsICp3ZWJBc3NlbWJs
eVRhZ0hlYXBDZWxsVHlwZSwgSlNXZWJBc3NlbWJseVRhZykKLURZTkFNSUNfSVNPX1NVQlNQQUNF
X0RFRklORV9NRU1CRVJfU0xPVyh3ZWJBc3NlbWJseVdyYXBwZXJGdW5jdGlvblNwYWNlLCAqY2Vs
bEhlYXBDZWxsVHlwZSwgV2ViQXNzZW1ibHlXcmFwcGVyRnVuY3Rpb24pIC8vIEhhc2g6MHhkNGE1
ZmYwMQotI2VuZGlmCi0KLSN1bmRlZiBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVS
X1NMT1cKLQotI2RlZmluZSBEWU5BTUlDX1NQQUNFX0FORF9TRVRfREVGSU5FX01FTUJFUl9TTE9X
KG5hbWUsIGhlYXBDZWxsVHlwZSwgdHlwZSkgXAotICAgIElzb1N1YnNwYWNlKiBWTTo6bmFtZSMj
U2xvdygpIFwKLSAgICB7IFwKLSAgICAgICAgQVNTRVJUKCFtXyMjbmFtZSk7IFwKLSAgICAgICAg
YXV0byBzcGFjZSA9IG1ha2VVbmlxdWU8U3BhY2VBbmRTZXQ+IElTT19TVUJTUEFDRV9JTklUKGhl
YXAsIGhlYXBDZWxsVHlwZSwgdHlwZSk7IFwKLSAgICAgICAgV1RGOjpzdG9yZVN0b3JlRmVuY2Uo
KTsgXAotICAgICAgICBtXyMjbmFtZSA9IFdURk1vdmUoc3BhY2UpOyBcCi0gICAgICAgIHJldHVy
biAmbV8jI25hbWUtPnNwYWNlOyBcCi0gICAgfQotCi1EWU5BTUlDX1NQQUNFX0FORF9TRVRfREVG
SU5FX01FTUJFUl9TTE9XKGV2YWxFeGVjdXRhYmxlU3BhY2UsICpkZXN0cnVjdGlibGVDZWxsSGVh
cENlbGxUeXBlLCBFdmFsRXhlY3V0YWJsZSkgLy8gSGFzaDoweDk1OGUzZTlkCi1EWU5BTUlDX1NQ
QUNFX0FORF9TRVRfREVGSU5FX01FTUJFUl9TTE9XKG1vZHVsZVByb2dyYW1FeGVjdXRhYmxlU3Bh
Y2UsICpkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlLCBNb2R1bGVQcm9ncmFtRXhlY3V0YWJs
ZSkgLy8gSGFzaDoweDY1MDZmYTNjCi0KLSN1bmRlZiBEWU5BTUlDX1NQQUNFX0FORF9TRVRfREVG
SU5FX01FTUJFUl9TTE9XCi0KIEpTQ2VsbCogVk06OnNlbnRpbmVsU2V0QnVja2V0U2xvdygpCiB7
CiAgICAgQVNTRVJUKCFtX3NlbnRpbmVsU2V0QnVja2V0KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1ZNLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvVk0uaAkocmV2aXNpb24gMjg2MDgxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvVk0uaAkod29ya2luZyBjb3B5KQpAQCAtMzEsNyArMzEsNiBAQAogI2luY2x1ZGUg
IkNhbGxEYXRhLmgiCiAjaW5jbHVkZSAiQ2FsbGVlQml0cy5oIgogI2luY2x1ZGUgIkNvZGVTcGVj
aWFsaXphdGlvbktpbmQuaCIKLSNpbmNsdWRlICJDb21wbGV0ZVN1YnNwYWNlLmgiCiAjaW5jbHVk
ZSAiQ29uY3VycmVudEpTTG9jay5oIgogI2luY2x1ZGUgIkRGR0RvZXNHQ0NoZWNrLmgiCiAjaW5j
bHVkZSAiRGVsZXRlQWxsQ29kZUVmZm9ydC5oIgpAQCAtNDIsOCArNDEsNiBAQAogI2luY2x1ZGUg
IkhlYXAuaCIKICNpbmNsdWRlICJJbnRlZ3JpdHkuaCIKICNpbmNsdWRlICJJbnRyaW5zaWMuaCIK
LSNpbmNsdWRlICJJc29DZWxsU2V0LmgiCi0jaW5jbHVkZSAiSXNvU3Vic3BhY2UuaCIKICNpbmNs
dWRlICJKU0NKU1ZhbHVlLmgiCiAjaW5jbHVkZSAiSlNEYXRlTWF0aC5oIgogI2luY2x1ZGUgIkpT
TG9jay5oIgpAQCAtNTgsNyArNTUsNyBAQAogI2luY2x1ZGUgIlRodW5rR2VuZXJhdG9yLmgiCiAj
aW5jbHVkZSAiVk1UcmFwcy5oIgogI2luY2x1ZGUgIldhc21Db250ZXh0LmgiCi0jaW5jbHVkZSAi
V2F0Y2hwb2ludC5oIgorLy8jaW5jbHVkZSAiV2F0Y2hwb2ludC5oIiAvLyBtbGFtCiAjaW5jbHVk
ZSA8d3RmL0J1bXBQb2ludGVyQWxsb2NhdG9yLmg+CiAjaW5jbHVkZSA8d3RmL0NoZWNrZWRBcml0
aG1ldGljLmg+CiAjaW5jbHVkZSA8d3RmL0RhdGVNYXRoLmg+CkBAIC0xMDMsMTEgKzEwMCwxMSBA
QCB1c2luZyBXVEY6OlNpbXBsZVN0YXRzOwogCiBuYW1lc3BhY2UgSlNDIHsKIAotY2xhc3MgQmFz
aWNCbG9ja0xvY2F0aW9uOworLy9jbGFzcyBCYXNpY0Jsb2NrTG9jYXRpb247IC8vIG1sYW0KIGNs
YXNzIEJ1aWx0aW5FeGVjdXRhYmxlczsKIGNsYXNzIEJ5dGVjb2RlSW50cmluc2ljUmVnaXN0cnk7
CiBjbGFzcyBDYWxsRnJhbWU7Ci1jbGFzcyBDYWxsTGlua0luZm87CisvL2NsYXNzIENhbGxMaW5r
SW5mbzsgLy8gbWxhbQogZW51bSBjbGFzcyBDYWxsTW9kZTsKIHN0cnVjdCBDaGVja3BvaW50T1NS
RXhpdFNpZGVTdGF0ZTsKIGNsYXNzIENvZGVCbG9jazsKQEAgLTExNiwxMDEgKzExMyw5NiBAQCBj
bGFzcyBDb21tb25JZGVudGlmaWVyczsKIGNsYXNzIENvbXBhY3RURFpFbnZpcm9ubWVudE1hcDsK
IGNsYXNzIENvbnNlcnZhdGl2ZVJvb3RzOwogY2xhc3MgQ29udHJvbEZsb3dQcm9maWxlcjsKLWNs
YXNzIEN1c3RvbUdldHRlclNldHRlcjsKLWNsYXNzIERPTUF0dHJpYnV0ZUdldHRlclNldHRlcjsK
LWNsYXNzIERhdGVJbnN0YW5jZTsKLWNsYXNzIEVycm9ySW5zdGFuY2U7CisvL2NsYXNzIEN1c3Rv
bUdldHRlclNldHRlcjsgLy8gbWxhbQorLy9jbGFzcyBET01BdHRyaWJ1dGVHZXR0ZXJTZXR0ZXI7
IC8vIG1sYW0KKy8vY2xhc3MgRGF0ZUluc3RhbmNlOyAvLyBtbGFtCisvL2NsYXNzIEVycm9ySW5z
dGFuY2U7IC8vIG1sYW0KIGNsYXNzIEV4Y2VwdGlvbjsKIGNsYXNzIEV4Y2VwdGlvblNjb3BlOwot
Y2xhc3MgRmFzdE1hbGxvY0FsaWduZWRNZW1vcnlBbGxvY2F0b3I7Ci1jbGFzcyBHaWdhY2FnZUFs
aWduZWRNZW1vcnlBbGxvY2F0b3I7Ci1jbGFzcyBIYW5kbGVTdGFjazsKKy8vY2xhc3MgSGFuZGxl
U3RhY2s7IC8vIG1sYW0KIGNsYXNzIEhhc093blByb3BlcnR5Q2FjaGU7CiBjbGFzcyBIZWFwQW5h
bHl6ZXI7CiBjbGFzcyBIZWFwUHJvZmlsZXI7Ci1jbGFzcyBJZGVudGlmaWVyOworLy9jbGFzcyBJ
ZGVudGlmaWVyOyAvLyBtbGFtCiBjbGFzcyBJbnRlcnByZXRlcjsKIGNsYXNzIEludGxDYWNoZTsK
LWNsYXNzIEludGxDb2xsYXRvcjsKLWNsYXNzIEludGxEYXRlVGltZUZvcm1hdDsKLWNsYXNzIElu
dGxEaXNwbGF5TmFtZXM7Ci1jbGFzcyBJbnRsTGlzdEZvcm1hdDsKLWNsYXNzIEludGxMb2NhbGU7
Ci1jbGFzcyBJbnRsTnVtYmVyRm9ybWF0OwotY2xhc3MgSW50bFBsdXJhbFJ1bGVzOwotY2xhc3Mg
SW50bFJlbGF0aXZlVGltZUZvcm1hdDsKLWNsYXNzIEludGxTZWdtZW50SXRlcmF0b3I7Ci1jbGFz
cyBJbnRsU2VnbWVudGVyOwotY2xhc3MgSW50bFNlZ21lbnRzOwotY2xhc3MgSlNBUElHbG9iYWxP
YmplY3Q7Ci1jbGFzcyBKU0FQSVdyYXBwZXJHbG9iYWxPYmplY3Q7Ci1jbGFzcyBKU0FQSVdyYXBw
ZXJPYmplY3Q7Ci1jbGFzcyBKU0NDYWxsYmFja0Z1bmN0aW9uOwotY2xhc3MgSlNDYWxsYmFja0Nv
bnN0cnVjdG9yOworLy9jbGFzcyBJbnRsQ29sbGF0b3I7IC8vIG1sYW0KKy8vY2xhc3MgSW50bERh
dGVUaW1lRm9ybWF0OyAvLyBtbGFtCisvL2NsYXNzIEludGxEaXNwbGF5TmFtZXM7IC8vIG1sYW0K
Ky8vY2xhc3MgSW50bExpc3RGb3JtYXQ7IC8vIG1sYW0KKy8vY2xhc3MgSW50bExvY2FsZTsgLy8g
bWxhbQorLy9jbGFzcyBJbnRsTnVtYmVyRm9ybWF0OyAvLyBtbGFtCisvL2NsYXNzIEludGxQbHVy
YWxSdWxlczsgLy8gbWxhbQorLy9jbGFzcyBJbnRsUmVsYXRpdmVUaW1lRm9ybWF0OyAvLyBtbGFt
CisvL2NsYXNzIEludGxTZWdtZW50SXRlcmF0b3I7IC8vIG1sYW0KKy8vY2xhc3MgSW50bFNlZ21l
bnRlcjsgLy8gbWxhbQorLy9jbGFzcyBJbnRsU2VnbWVudHM7IC8vIG1sYW0KKy8vY2xhc3MgSlNB
UElHbG9iYWxPYmplY3Q7IC8vIG1sYW0KKy8vY2xhc3MgSlNBUElXcmFwcGVyR2xvYmFsT2JqZWN0
OyAvLyBtbGFtCisvL2NsYXNzIEpTQVBJV3JhcHBlck9iamVjdDsgLy8gbWxhbQorLy9jbGFzcyBK
U0NDYWxsYmFja0Z1bmN0aW9uOyAvLyBtbGFtCisvL2NsYXNzIEpTQ2FsbGJhY2tDb25zdHJ1Y3Rv
cjsgLy8gbWxhbQogY2xhc3MgSlNEZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGU7CiBjbGFz
cyBKU0dsb2JhbE9iamVjdDsKLWNsYXNzIEpTR2xvYmFsTGV4aWNhbEVudmlyb25tZW50OwotY2xh
c3MgSlNNb2R1bGVOYW1lc3BhY2VPYmplY3Q7Ci1jbGFzcyBKU01vZHVsZVJlY29yZDsKLWNsYXNz
IEpTTmF0aXZlU3RkRnVuY3Rpb247Ci1jbGFzcyBKU05vbkZpbmFsT2JqZWN0OworLy9jbGFzcyBK
U0dsb2JhbExleGljYWxFbnZpcm9ubWVudDsgLy8gbWxhbQorLy9jbGFzcyBKU01vZHVsZU5hbWVz
cGFjZU9iamVjdDsgLy8gbWxhbQorLy9jbGFzcyBKU01vZHVsZVJlY29yZDsgLy8gbWxhbQorLy9j
bGFzcyBKU05hdGl2ZVN0ZEZ1bmN0aW9uOyAvLyBtbGFtCisvL2NsYXNzIEpTTm9uRmluYWxPYmpl
Y3Q7IC8vIG1sYW0KIGNsYXNzIEpTT2JqZWN0OwogY2xhc3MgSlNQcm9taXNlOwogY2xhc3MgSlNQ
cm9wZXJ0eU5hbWVFbnVtZXJhdG9yOwotY2xhc3MgSlNSdW5Mb29wVGltZXI7Ci1jbGFzcyBKU1dl
YWtNYXA7Ci1jbGFzcyBKU1dlYWtTZXQ7Ci1jbGFzcyBKU1dlYkFzc2VtYmx5Q29kZUJsb2NrOwot
Y2xhc3MgSlNXZWJBc3NlbWJseUdsb2JhbDsKLWNsYXNzIEpTV2ViQXNzZW1ibHlJbnN0YW5jZTsK
LWNsYXNzIEpTV2ViQXNzZW1ibHlNZW1vcnk7Ci1jbGFzcyBKU1dlYkFzc2VtYmx5TW9kdWxlOwot
Y2xhc3MgSlNXZWJBc3NlbWJseVRhYmxlOworLy9jbGFzcyBKU1J1bkxvb3BUaW1lcjsgLy8gbWxh
bQorLy9jbGFzcyBKU1dlYWtNYXA7IC8vIG1sYW0KKy8vY2xhc3MgSlNXZWFrU2V0OyAvLyBtbGFt
CisvL2NsYXNzIEpTV2ViQXNzZW1ibHlDb2RlQmxvY2s7IC8vIG1sYW0KKy8vY2xhc3MgSlNXZWJB
c3NlbWJseUdsb2JhbDsgLy8gbWxhbQorLy9jbGFzcyBKU1dlYkFzc2VtYmx5SW5zdGFuY2U7IC8v
IG1sYW0KKy8vY2xhc3MgSlNXZWJBc3NlbWJseU1lbW9yeTsgLy8gbWxhbQorLy9jbGFzcyBKU1dl
YkFzc2VtYmx5TW9kdWxlOyAvLyBtbGFtCisvL2NsYXNzIEpTV2ViQXNzZW1ibHlUYWJsZTsgLy8g
bWxhbQogY2xhc3MgSklUU2l6ZVN0YXRpc3RpY3M7CiBjbGFzcyBKSVRUaHVua3M7Ci1jbGFzcyBM
TEludE9mZnNldHNFeHRyYWN0b3I7CisvL2NsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKIGNs
YXNzIE5hdGl2ZUV4ZWN1dGFibGU7Ci1jbGFzcyBPYmpDQ2FsbGJhY2tGdW5jdGlvbjsKKy8vY2xh
c3MgT2JqQ0NhbGxiYWNrRnVuY3Rpb247IC8vIG1sYW0KIGNsYXNzIERlZmVycmVkV29ya1RpbWVy
OwogY2xhc3MgUmVnRXhwOwogY2xhc3MgUmVnRXhwQ2FjaGU7CiBjbGFzcyBSZWdpc3RlcjsKLWNs
YXNzIFJlZ2lzdGVyQXRPZmZzZXRMaXN0OworLy9jbGFzcyBSZWdpc3RlckF0T2Zmc2V0TGlzdDsg
Ly8gbWxhbQogI2lmIEVOQUJMRShTQU1QTElOR19QUk9GSUxFUikKIGNsYXNzIFNhbXBsaW5nUHJv
ZmlsZXI7CiAjZW5kaWYKIGNsYXNzIFNoYWRvd0NoaWNrZW47CiBjbGFzcyBTaGFyZWRKSVRTdHVi
U2V0OwotY2xhc3MgU2NyaXB0RXhlY3V0YWJsZTsKKy8vY2xhc3MgU2NyaXB0RXhlY3V0YWJsZTsg
Ly8gbWxhbQogY2xhc3MgU291cmNlUHJvdmlkZXI7CiBjbGFzcyBTb3VyY2VQcm92aWRlckNhY2hl
OwotY2xhc3MgU3RhY2tGcmFtZTsKKy8vY2xhc3MgU3RhY2tGcmFtZTsgLy8gbWxhbQogY2xhc3Mg
U3RydWN0dXJlOwotI2lmIEVOQUJMRShSRUdFWFBfVFJBQ0lORykKLWNsYXNzIFJlZ0V4cDsKLSNl
bmRpZgogY2xhc3MgU3ltYm9sOwotY2xhc3MgVGVtcG9yYWxEdXJhdGlvbjsKLWNsYXNzIFRlbXBv
cmFsSW5zdGFudDsKKy8vY2xhc3MgVGVtcG9yYWxEdXJhdGlvbjsgLy8gbWxhbQorLy9jbGFzcyBU
ZW1wb3JhbEluc3RhbnQ7IC8vIG1sYW0KIGNsYXNzIFR5cGVkQXJyYXlDb250cm9sbGVyOwotY2xh
c3MgVW5saW5rZWRDb2RlQmxvY2s7Ci1jbGFzcyBVbmxpbmtlZEV2YWxDb2RlQmxvY2s7Ci1jbGFz
cyBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTsKLWNsYXNzIFVubGlua2VkUHJvZ3JhbUNvZGVC
bG9jazsKLWNsYXNzIFVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jazsKLWNsYXNzIFZpcnR1
YWxSZWdpc3RlcjsKKy8vY2xhc3MgVW5saW5rZWRDb2RlQmxvY2s7IC8vIG1sYW0KKy8vY2xhc3Mg
VW5saW5rZWRFdmFsQ29kZUJsb2NrOyAvLyBtbGFtCisvL2NsYXNzIFVubGlua2VkRnVuY3Rpb25F
eGVjdXRhYmxlOyAvLyBtbGFtCisvL2NsYXNzIFVubGlua2VkUHJvZ3JhbUNvZGVCbG9jazsgLy8g
bWxhbQorLy9jbGFzcyBVbmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2s7IC8vIG1sYW0KKy8v
Y2xhc3MgVmlydHVhbFJlZ2lzdGVyOyAvLyBtbGFtCiBjbGFzcyBWTUVudHJ5U2NvcGU7Ci1jbGFz
cyBUZW1wb3JhbENhbGVuZGFyOwotY2xhc3MgVGVtcG9yYWxQbGFpblRpbWU7Ci1jbGFzcyBUZW1w
b3JhbFRpbWVab25lOwotY2xhc3MgVG9wTGV2ZWxHbG9iYWxPYmplY3RTY29wZTsKKy8vY2xhc3Mg
VGVtcG9yYWxDYWxlbmRhcjsgLy8gbWxhbQorLy9jbGFzcyBUZW1wb3JhbFBsYWluVGltZTsgLy8g
bWxhbQorLy9jbGFzcyBUZW1wb3JhbFRpbWVab25lOyAvLyBtbGFtCisvL2NsYXNzIFRvcExldmVs
R2xvYmFsT2JqZWN0U2NvcGU7IC8vIG1sYW0KIGNsYXNzIFR5cGVQcm9maWxlcjsKIGNsYXNzIFR5
cGVQcm9maWxlckxvZzsKIGNsYXNzIFdhdGNoZG9nOwotY2xhc3MgV2F0Y2hwb2ludDsKKy8vY2xh
c3MgV2F0Y2hwb2ludDsgLy8gbWxhbQogY2xhc3MgV2F0Y2hwb2ludFNldDsKLWNsYXNzIFdlYkFz
c2VtYmx5RnVuY3Rpb247Ci1jbGFzcyBXZWJBc3NlbWJseU1vZHVsZVJlY29yZDsKKy8vY2xhc3Mg
V2ViQXNzZW1ibHlGdW5jdGlvbjsgLy8gbWxhbQorLy9jbGFzcyBXZWJBc3NlbWJseU1vZHVsZVJl
Y29yZDsgLy8gbWxhbQogCiAjaWYgRU5BQkxFKERGR19KSVQpICYmIEFTU0VSVF9FTkFCTEVECiAj
ZGVmaW5lIEVOQUJMRV9ERkdfRE9FU19HQ19WQUxJREFUSU9OIDEKQEAgLTIyMCw5ICsyMTIsNyBA
QCBjbGFzcyBXZWJBc3NlbWJseU1vZHVsZVJlY29yZDsKIAogY29uc3RleHByIGJvb2wgdmFsaWRh
dGVERkdEb2VzR0MgPSBFTkFCTEVfREZHX0RPRVNfR0NfVkFMSURBVElPTjsKIAotY2xhc3MgSXNv
SGVhcENlbGxUeXBlOwotdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGU+IGNsYXNzIElzb0lubGlu
ZWRIZWFwQ2VsbFR5cGU7Ci10ZW1wbGF0ZTx0eXBlbmFtZSBQYXJlbnQ+IGNsYXNzIEpTQ2FsbGJh
Y2tPYmplY3Q7CisvL3RlbXBsYXRlPHR5cGVuYW1lIFBhcmVudD4gY2xhc3MgSlNDYWxsYmFja09i
amVjdDsgLy8gbWxhbQogCiAjaWYgRU5BQkxFKEZUTF9KSVQpCiBuYW1lc3BhY2UgRlRMIHsKQEAg
LTIzNSwxNCArMjI1LDE0IEBAIGNsYXNzIERhdGFiYXNlOwogbmFtZXNwYWNlIERPTUpJVCB7CiBj
bGFzcyBTaWduYXR1cmU7CiB9Ci1uYW1lc3BhY2UgWWFyciB7Ci1jbGFzcyBNYXRjaGluZ0NvbnRl
eHRIb2xkZXI7Ci19CisvL25hbWVzcGFjZSBZYXJyIHsKKy8vY2xhc3MgTWF0Y2hpbmdDb250ZXh0
SG9sZGVyOyAvLyBtbGFtCisvL30KIAogc3RydWN0IEVudHJ5RnJhbWU7Ci1zdHJ1Y3QgSGFzaFRh
YmxlOworLy9zdHJ1Y3QgSGFzaFRhYmxlOyAvLyBtbGFtCiBzdHJ1Y3QgSW5zdHJ1Y3Rpb247Ci1z
dHJ1Y3QgVmFsdWVQcm9maWxlOworLy9zdHJ1Y3QgVmFsdWVQcm9maWxlOyAvLyBtbGFtCiAKIGNs
YXNzIFF1ZXVlZFRhc2sgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFF1ZXVlZFRhc2spOwpA
QCAtMjYxLDggKzI1MSw2IEBAIHByaXZhdGU6CiAgICAgUmVmPE1pY3JvdGFzaz4gbV9taWNyb3Rh
c2s7CiB9OwogCi1jbGFzcyBDb25zZXJ2YXRpdmVSb290czsKLQogREVDTEFSRV9BTExPQ0FUT1Jf
V0lUSF9IRUFQX0lERU5USUZJRVIoVk0pOwogCiAjaWYgQ09NUElMRVIoTVNWQykKQEAgLTQxMywx
NDUgKzQwMSw1OCBAQCBwcml2YXRlOgogCiBwdWJsaWM6CiAgICAgSGVhcCBoZWFwOwotICAgIAot
ICAgIHN0ZDo6dW5pcXVlX3B0cjxGYXN0TWFsbG9jQWxpZ25lZE1lbW9yeUFsbG9jYXRvcj4gZmFz
dE1hbGxvY0FsbG9jYXRvcjsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8R2lnYWNhZ2VBbGlnbmVkTWVt
b3J5QWxsb2NhdG9yPiBwcmltaXRpdmVHaWdhY2FnZUFsbG9jYXRvcjsKLSAgICBzdGQ6OnVuaXF1
ZV9wdHI8R2lnYWNhZ2VBbGlnbmVkTWVtb3J5QWxsb2NhdG9yPiBqc1ZhbHVlR2lnYWNhZ2VBbGxv
Y2F0b3I7Ci0KLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SGVhcENlbGxUeXBlPiBhdXhpbGlhcnlIZWFw
Q2VsbFR5cGU7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPEhlYXBDZWxsVHlwZT4gaW1tdXRhYmxlQnV0
dGVyZmx5SGVhcENlbGxUeXBlOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxIZWFwQ2VsbFR5cGU+IGNl
bGxIZWFwQ2VsbFR5cGU7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPEhlYXBDZWxsVHlwZT4gZGVzdHJ1
Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SXNvSGVhcENlbGxU
eXBlPiBhcGlHbG9iYWxPYmplY3RIZWFwQ2VsbFR5cGU7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPElz
b0hlYXBDZWxsVHlwZT4gY2FsbGJhY2tDb25zdHJ1Y3RvckhlYXBDZWxsVHlwZTsKLSAgICBzdGQ6
OnVuaXF1ZV9wdHI8SXNvSGVhcENlbGxUeXBlPiBjYWxsYmFja0dsb2JhbE9iamVjdEhlYXBDZWxs
VHlwZTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SXNvSGVhcENlbGxUeXBlPiBjYWxsYmFja09iamVj
dEhlYXBDZWxsVHlwZTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SXNvSGVhcENlbGxUeXBlPiBjdXN0
b21HZXR0ZXJGdW5jdGlvbkhlYXBDZWxsVHlwZTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SXNvSGVh
cENlbGxUeXBlPiBjdXN0b21TZXR0ZXJGdW5jdGlvbkhlYXBDZWxsVHlwZTsKLSAgICBzdGQ6OnVu
aXF1ZV9wdHI8SXNvSGVhcENlbGxUeXBlPiBkYXRlSW5zdGFuY2VIZWFwQ2VsbFR5cGU7Ci0gICAg
c3RkOjp1bmlxdWVfcHRyPElzb0hlYXBDZWxsVHlwZT4gZXJyb3JJbnN0YW5jZUhlYXBDZWxsVHlw
ZTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SXNvSGVhcENlbGxUeXBlPiBmaW5hbGl6YXRpb25SZWdp
c3RyeUNlbGxUeXBlOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxJc29IZWFwQ2VsbFR5cGU+IGdsb2Jh
bExleGljYWxFbnZpcm9ubWVudEhlYXBDZWxsVHlwZTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SXNv
SGVhcENlbGxUeXBlPiBnbG9iYWxPYmplY3RIZWFwQ2VsbFR5cGU7Ci0gICAgc3RkOjp1bmlxdWVf
cHRyPElzb0hlYXBDZWxsVHlwZT4gaW5qZWN0ZWRTY3JpcHRIb3N0U3BhY2VIZWFwQ2VsbFR5cGU7
Ci0gICAgc3RkOjp1bmlxdWVfcHRyPElzb0hlYXBDZWxsVHlwZT4gamF2YVNjcmlwdENhbGxGcmFt
ZUhlYXBDZWxsVHlwZTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SXNvSGVhcENlbGxUeXBlPiBqc01v
ZHVsZVJlY29yZEhlYXBDZWxsVHlwZTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SXNvSGVhcENlbGxU
eXBlPiBtb2R1bGVOYW1lc3BhY2VPYmplY3RIZWFwQ2VsbFR5cGU7Ci0gICAgc3RkOjp1bmlxdWVf
cHRyPElzb0hlYXBDZWxsVHlwZT4gbmF0aXZlU3RkRnVuY3Rpb25IZWFwQ2VsbFR5cGU7Ci0gICAg
c3RkOjp1bmlxdWVfcHRyPElzb0lubGluZWRIZWFwQ2VsbFR5cGU8SlNTdHJpbmc+PiBzdHJpbmdI
ZWFwQ2VsbFR5cGU7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPElzb0hlYXBDZWxsVHlwZT4gd2Vha01h
cEhlYXBDZWxsVHlwZTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SXNvSGVhcENlbGxUeXBlPiB3ZWFr
U2V0SGVhcENlbGxUeXBlOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxKU0Rlc3RydWN0aWJsZU9iamVj
dEhlYXBDZWxsVHlwZT4gZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlOwotI2lmIEpTQ19P
QkpDX0FQSV9FTkFCTEVECi0gICAgc3RkOjp1bmlxdWVfcHRyPElzb0hlYXBDZWxsVHlwZT4gYXBp
V3JhcHBlck9iamVjdEhlYXBDZWxsVHlwZTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SXNvSGVhcENl
bGxUeXBlPiBvYmpDQ2FsbGJhY2tGdW5jdGlvbkhlYXBDZWxsVHlwZTsKLSNlbmRpZgotI2lmZGVm
IEpTQ19HTElCX0FQSV9FTkFCTEVECi0gICAgc3RkOjp1bmlxdWVfcHRyPElzb0hlYXBDZWxsVHlw
ZT4gYXBpV3JhcHBlck9iamVjdEhlYXBDZWxsVHlwZTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SXNv
SGVhcENlbGxUeXBlPiBjYWxsYmFja0FQSVdyYXBwZXJHbG9iYWxPYmplY3RIZWFwQ2VsbFR5cGU7
Ci0gICAgc3RkOjp1bmlxdWVfcHRyPElzb0hlYXBDZWxsVHlwZT4ganNjQ2FsbGJhY2tGdW5jdGlv
bkhlYXBDZWxsVHlwZTsKLSNlbmRpZgotICAgIHN0ZDo6dW5pcXVlX3B0cjxJc29IZWFwQ2VsbFR5
cGU+IGludGxDb2xsYXRvckhlYXBDZWxsVHlwZTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SXNvSGVh
cENlbGxUeXBlPiBpbnRsRGF0ZVRpbWVGb3JtYXRIZWFwQ2VsbFR5cGU7Ci0gICAgc3RkOjp1bmlx
dWVfcHRyPElzb0hlYXBDZWxsVHlwZT4gaW50bERpc3BsYXlOYW1lc0hlYXBDZWxsVHlwZTsKLSAg
ICBzdGQ6OnVuaXF1ZV9wdHI8SXNvSGVhcENlbGxUeXBlPiBpbnRsTGlzdEZvcm1hdEhlYXBDZWxs
VHlwZTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SXNvSGVhcENlbGxUeXBlPiBpbnRsTG9jYWxlSGVh
cENlbGxUeXBlOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxJc29IZWFwQ2VsbFR5cGU+IGludGxOdW1i
ZXJGb3JtYXRIZWFwQ2VsbFR5cGU7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPElzb0hlYXBDZWxsVHlw
ZT4gaW50bFBsdXJhbFJ1bGVzSGVhcENlbGxUeXBlOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxJc29I
ZWFwQ2VsbFR5cGU+IGludGxSZWxhdGl2ZVRpbWVGb3JtYXRIZWFwQ2VsbFR5cGU7Ci0gICAgc3Rk
Ojp1bmlxdWVfcHRyPElzb0hlYXBDZWxsVHlwZT4gaW50bFNlZ21lbnRJdGVyYXRvckhlYXBDZWxs
VHlwZTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SXNvSGVhcENlbGxUeXBlPiBpbnRsU2VnbWVudGVy
SGVhcENlbGxUeXBlOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxJc29IZWFwQ2VsbFR5cGU+IGludGxT
ZWdtZW50c0hlYXBDZWxsVHlwZTsKLSNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCi0gICAgc3RkOjp1
bmlxdWVfcHRyPElzb0hlYXBDZWxsVHlwZT4gd2ViQXNzZW1ibHlDb2RlQmxvY2tIZWFwQ2VsbFR5
cGU7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPElzb0hlYXBDZWxsVHlwZT4gd2ViQXNzZW1ibHlFeGNl
cHRpb25IZWFwQ2VsbFR5cGU7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPElzb0hlYXBDZWxsVHlwZT4g
d2ViQXNzZW1ibHlGdW5jdGlvbkhlYXBDZWxsVHlwZTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SXNv
SGVhcENlbGxUeXBlPiB3ZWJBc3NlbWJseUdsb2JhbEhlYXBDZWxsVHlwZTsKLSAgICBzdGQ6OnVu
aXF1ZV9wdHI8SXNvSGVhcENlbGxUeXBlPiB3ZWJBc3NlbWJseUluc3RhbmNlSGVhcENlbGxUeXBl
OwotICAgIHN0ZDo6dW5pcXVlX3B0cjxJc29IZWFwQ2VsbFR5cGU+IHdlYkFzc2VtYmx5TWVtb3J5
SGVhcENlbGxUeXBlOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxJc29IZWFwQ2VsbFR5cGU+IHdlYkFz
c2VtYmx5TW9kdWxlSGVhcENlbGxUeXBlOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxJc29IZWFwQ2Vs
bFR5cGU+IHdlYkFzc2VtYmx5TW9kdWxlUmVjb3JkSGVhcENlbGxUeXBlOwotICAgIHN0ZDo6dW5p
cXVlX3B0cjxJc29IZWFwQ2VsbFR5cGU+IHdlYkFzc2VtYmx5VGFibGVIZWFwQ2VsbFR5cGU7Ci0g
ICAgc3RkOjp1bmlxdWVfcHRyPElzb0hlYXBDZWxsVHlwZT4gd2ViQXNzZW1ibHlUYWdIZWFwQ2Vs
bFR5cGU7Ci0jZW5kaWYKKworICAgIGNvbnN0IEhlYXBDZWxsVHlwZSYgY2VsbEhlYXBDZWxsVHlw
ZSgpIHsgcmV0dXJuIGhlYXAuY2VsbEhlYXBDZWxsVHlwZTsgfQorICAgIGNvbnN0IEpTRGVzdHJ1
Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlJiBkZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUo
KSB7IHJldHVybiBoZWFwLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZTsgfTsKIAogI2lm
IEVOQUJMRShKSVQpCiAgICAgc3RkOjp1bmlxdWVfcHRyPEpJVFNpemVTdGF0aXN0aWNzPiBqaXRT
aXplU3RhdGlzdGljczsKICNlbmRpZgogICAgIAotICAgIENvbXBsZXRlU3Vic3BhY2UgcHJpbWl0
aXZlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZTsgLy8gVHlwZWQgYXJyYXlzLCBzdHJpbmdzLCBiaXR2
ZWN0b3JzLCBldGMgZ28gaGVyZS4KLSAgICBDb21wbGV0ZVN1YnNwYWNlIGpzVmFsdWVHaWdhY2Fn
ZUF1eGlsaWFyeVNwYWNlOyAvLyBCdXR0ZXJmbGllcywgYXJyYXlzIG9mIEpTVmFsdWVzLCBldGMg
Z28gaGVyZS4KLSAgICBDb21wbGV0ZVN1YnNwYWNlIGltbXV0YWJsZUJ1dHRlcmZseUpTVmFsdWVH
aWdhY2FnZUF1eGlsaWFyeVNwYWNlOyAvLyBKU0ltbXV0YWJsZUJ1dHRlcmZseSBnb2VzIGhlcmUu
Ci0KLSAgICAvLyBXZSBtYWtlIGNyb3NzLWN1dHRpbmcgYXNzdW1wdGlvbnMgYWJvdXQgdHlwZWQg
YXJyYXlzIGJlaW5nIGluIHRoZSBwcmltaXRpdmUgR2lnYWNhZ2UgYW5kIGJ1dHRlcmZsaWVzCi0g
ICAgLy8gYmVpbmcgaW4gdGhlIEpTVmFsdWUgZ2lnYWNhZ2UuIEZvciBzb21lIHR5cGVzLCBpdCdz
IHN1cGVyIG9idmlvdXMgd2hlcmUgdGhleSBzaG91bGQgZ28sIGFuZCBzbyB3ZQotICAgIC8vIGNh
biBoYXJkY29kZSB0aGF0IGZhY3QuIEJ1dCBzb21ldGltZXMgaXQncyBub3QgY2xlYXIsIHNvIHdl
IGFic3RyYWN0IGl0IGJ5IGhhdmluZyBhIEdpZ2FjYWdlOjpLaW5kCi0gICAgLy8gY29uc3RhbnQg
c29tZXdoZXJlLgotICAgIC8vIEZJWE1FOiBNYXliZSBpdCB3b3VsZCBiZSBiZXR0ZXIgaWYgZXZl
cnlvbmUgYWJzdHJhY3RlZCB0aGlzPwotICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNzUyNDgKLSAgICBBTFdBWVNfSU5MSU5FIENvbXBsZXRlU3Vic3BhY2Um
IGdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UoR2lnYWNhZ2U6OktpbmQga2luZCkKLSAgICB7Ci0gICAg
ICAgIHN3aXRjaCAoa2luZCkgewotICAgICAgICBjYXNlIEdpZ2FjYWdlOjpQcmltaXRpdmU6Ci0g
ICAgICAgICAgICByZXR1cm4gcHJpbWl0aXZlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZTsKLSAgICAg
ICAgY2FzZSBHaWdhY2FnZTo6SlNWYWx1ZToKLSAgICAgICAgICAgIHJldHVybiBqc1ZhbHVlR2ln
YWNhZ2VBdXhpbGlhcnlTcGFjZTsKLSAgICAgICAgY2FzZSBHaWdhY2FnZTo6TnVtYmVyT2ZLaW5k
czoKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJU
X05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVybiBwcmltaXRpdmVHaWdhY2FnZUF1eGlsaWFy
eVNwYWNlOwotICAgIH0KLSAgICAKLSAgICAvLyBXaGVuZXZlciBwb3NzaWJsZSwgdXNlIHN1YnNw
YWNlRm9yPENlbGxUeXBlPih2bSkgdG8gZ2V0IG9uZSBvZiB0aGVzZSBzdWJzcGFjZXMuCi0gICAg
Q29tcGxldGVTdWJzcGFjZSBjZWxsU3BhY2U7Ci0gICAgQ29tcGxldGVTdWJzcGFjZSB2YXJpYWJs
ZVNpemVkQ2VsbFNwYWNlOyAvLyBGSVhNRTogVGhpcyBzcGFjZSBpcyBwcm9ibGVtYXRpYyBiZWNh
dXNlIHdlIGhhdmUgdGhpbmdzIGluIGhlcmUgbGlrZSBEaXJlY3RBcmd1bWVudHMgYW5kIFNjb3Bl
ZEFyZ3VtZW50czsgdGhvc2Ugc2hvdWxkIGJlIHNwbGl0IGludG8gSlNWYWx1ZU9PQiBjZWxscyBh
bmQgSlNWYWx1ZVN0cmljdCBhdXhpbGlhcmllcy4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE4Mjg1OAotICAgIENvbXBsZXRlU3Vic3BhY2UgZGVzdHJ1Y3RpYmxlT2Jq
ZWN0U3BhY2U7Ci0gICAgCi0gICAgSXNvU3Vic3BhY2UgYXJyYXlTcGFjZTsKLSAgICBJc29TdWJz
cGFjZSBiaWdJbnRTcGFjZTsKLSAgICBJc29TdWJzcGFjZSBjYWxsZWVTcGFjZTsKLSAgICBJc29T
dWJzcGFjZSBjbG9uZWRBcmd1bWVudHNTcGFjZTsKLSAgICBJc29TdWJzcGFjZSBjdXN0b21HZXR0
ZXJTZXR0ZXJTcGFjZTsKLSAgICBJc29TdWJzcGFjZSBkYXRlSW5zdGFuY2VTcGFjZTsKLSAgICBJ
c29TdWJzcGFjZSBkb21BdHRyaWJ1dGVHZXR0ZXJTZXR0ZXJTcGFjZTsKLSAgICBJc29TdWJzcGFj
ZSBleGNlcHRpb25TcGFjZTsKLSAgICBJc29TdWJzcGFjZSBleGVjdXRhYmxlVG9Db2RlQmxvY2tF
ZGdlU3BhY2U7Ci0gICAgSXNvU3Vic3BhY2UgZnVuY3Rpb25TcGFjZTsKLSAgICBJc29TdWJzcGFj
ZSBnZXR0ZXJTZXR0ZXJTcGFjZTsKLSAgICBJc29TdWJzcGFjZSBnbG9iYWxMZXhpY2FsRW52aXJv
bm1lbnRTcGFjZTsKLSAgICBJc29TdWJzcGFjZSBpbnRlcm5hbEZ1bmN0aW9uU3BhY2U7Ci0gICAg
SXNvU3Vic3BhY2UganNQcm94eVNwYWNlOwotICAgIElzb1N1YnNwYWNlIG5hdGl2ZUV4ZWN1dGFi
bGVTcGFjZTsKLSAgICBJc29TdWJzcGFjZSBudW1iZXJPYmplY3RTcGFjZTsKLSAgICBJc29TdWJz
cGFjZSBwbGFpbk9iamVjdFNwYWNlOwotICAgIElzb1N1YnNwYWNlIHByb21pc2VTcGFjZTsKLSAg
ICBJc29TdWJzcGFjZSBwcm9wZXJ0eU5hbWVFbnVtZXJhdG9yU3BhY2U7Ci0gICAgSXNvU3Vic3Bh
Y2UgcHJvcGVydHlUYWJsZVNwYWNlOwotICAgIElzb1N1YnNwYWNlIHJlZ0V4cFNwYWNlOwotICAg
IElzb1N1YnNwYWNlIHJlZ0V4cE9iamVjdFNwYWNlOwotICAgIElzb1N1YnNwYWNlIHJvcGVTdHJp
bmdTcGFjZTsKLSAgICBJc29TdWJzcGFjZSBzY29wZWRBcmd1bWVudHNTcGFjZTsKLSAgICBJc29T
dWJzcGFjZSBzcGFyc2VBcnJheVZhbHVlTWFwU3BhY2U7Ci0gICAgSXNvU3Vic3BhY2Ugc3RyaW5n
U3BhY2U7Ci0gICAgSXNvU3Vic3BhY2Ugc3RyaW5nT2JqZWN0U3BhY2U7Ci0gICAgSXNvU3Vic3Bh
Y2Ugc3RydWN0dXJlQ2hhaW5TcGFjZTsKLSAgICBJc29TdWJzcGFjZSBzdHJ1Y3R1cmVSYXJlRGF0
YVNwYWNlOwotICAgIElzb1N1YnNwYWNlIHN0cnVjdHVyZVNwYWNlOwotICAgIElzb1N1YnNwYWNl
IGJyYW5kZWRTdHJ1Y3R1cmVTcGFjZTsKLSAgICBJc29TdWJzcGFjZSBzeW1ib2xUYWJsZVNwYWNl
OworICAgIEFMV0FZU19JTkxJTkUgQ29tcGxldGVTdWJzcGFjZSYgcHJpbWl0aXZlR2lnYWNhZ2VB
dXhpbGlhcnlTcGFjZSgpIHsgcmV0dXJuIGhlYXAucHJpbWl0aXZlR2lnYWNhZ2VBdXhpbGlhcnlT
cGFjZTsgfQorICAgIEFMV0FZU19JTkxJTkUgQ29tcGxldGVTdWJzcGFjZSYganNWYWx1ZUdpZ2Fj
YWdlQXV4aWxpYXJ5U3BhY2UoKSB7IHJldHVybiBoZWFwLmpzVmFsdWVHaWdhY2FnZUF1eGlsaWFy
eVNwYWNlOyB9CisgICAgQUxXQVlTX0lOTElORSBDb21wbGV0ZVN1YnNwYWNlJiBpbW11dGFibGVC
dXR0ZXJmbHlKU1ZhbHVlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZSgpIHsgcmV0dXJuIGhlYXAuaW1t
dXRhYmxlQnV0dGVyZmx5SlNWYWx1ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2U7IH0KKyAgICBBTFdB
WVNfSU5MSU5FIENvbXBsZXRlU3Vic3BhY2UmIGdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UoR2lnYWNh
Z2U6OktpbmQga2luZCkgeyByZXR1cm4gaGVhcC5naWdhY2FnZUF1eGlsaWFyeVNwYWNlKGtpbmQp
OyB9CisgICAgQUxXQVlTX0lOTElORSBDb21wbGV0ZVN1YnNwYWNlJiBjZWxsU3BhY2UoKSB7IHJl
dHVybiBoZWFwLmNlbGxTcGFjZTsgfQorICAgIEFMV0FZU19JTkxJTkUgQ29tcGxldGVTdWJzcGFj
ZSYgdmFyaWFibGVTaXplZENlbGxTcGFjZSgpIHsgcmV0dXJuIGhlYXAudmFyaWFibGVTaXplZENl
bGxTcGFjZTsgfQorICAgIEFMV0FZU19JTkxJTkUgQ29tcGxldGVTdWJzcGFjZSYgZGVzdHJ1Y3Rp
YmxlT2JqZWN0U3BhY2UoKSB7IHJldHVybiBoZWFwLmRlc3RydWN0aWJsZU9iamVjdFNwYWNlOyB9
CisKKyAgICBBTFdBWVNfSU5MSU5FIElzb1N1YnNwYWNlJiBhcnJheVNwYWNlKCkgeyByZXR1cm4g
aGVhcC5hcnJheVNwYWNlOyB9CisgICAgQUxXQVlTX0lOTElORSBJc29TdWJzcGFjZSYgYmlnSW50
U3BhY2UoKSB7IHJldHVybiBoZWFwLmJpZ0ludFNwYWNlOyB9CisgICAgQUxXQVlTX0lOTElORSBJ
c29TdWJzcGFjZSYgY2FsbGVlU3BhY2UoKSB7IHJldHVybiBoZWFwLmNhbGxlZVNwYWNlOyB9Cisg
ICAgQUxXQVlTX0lOTElORSBJc29TdWJzcGFjZSYgY2xvbmVkQXJndW1lbnRzU3BhY2UoKSB7IHJl
dHVybiBoZWFwLmNsb25lZEFyZ3VtZW50c1NwYWNlOyB9CisgICAgQUxXQVlTX0lOTElORSBJc29T
dWJzcGFjZSYgY3VzdG9tR2V0dGVyU2V0dGVyU3BhY2UoKSB7IHJldHVybiBoZWFwLmN1c3RvbUdl
dHRlclNldHRlclNwYWNlOyB9CisgICAgQUxXQVlTX0lOTElORSBJc29TdWJzcGFjZSYgZGF0ZUlu
c3RhbmNlU3BhY2UoKSB7IHJldHVybiBoZWFwLmRhdGVJbnN0YW5jZVNwYWNlOyB9CisgICAgQUxX
QVlTX0lOTElORSBJc29TdWJzcGFjZSYgZG9tQXR0cmlidXRlR2V0dGVyU2V0dGVyU3BhY2UoKSB7
IHJldHVybiBoZWFwLmRvbUF0dHJpYnV0ZUdldHRlclNldHRlclNwYWNlOyB9CisgICAgQUxXQVlT
X0lOTElORSBJc29TdWJzcGFjZSYgZXhjZXB0aW9uU3BhY2UoKSB7IHJldHVybiBoZWFwLmV4Y2Vw
dGlvblNwYWNlOyB9CisgICAgQUxXQVlTX0lOTElORSBJc29TdWJzcGFjZSYgZXhlY3V0YWJsZVRv
Q29kZUJsb2NrRWRnZVNwYWNlKCkgeyByZXR1cm4gaGVhcC5leGVjdXRhYmxlVG9Db2RlQmxvY2tF
ZGdlU3BhY2U7IH0KKyAgICBBTFdBWVNfSU5MSU5FIElzb1N1YnNwYWNlJiBmdW5jdGlvblNwYWNl
KCkgeyByZXR1cm4gaGVhcC5mdW5jdGlvblNwYWNlOyB9CisgICAgQUxXQVlTX0lOTElORSBJc29T
dWJzcGFjZSYgZ2V0dGVyU2V0dGVyU3BhY2UoKSB7IHJldHVybiBoZWFwLmdldHRlclNldHRlclNw
YWNlOyB9CisgICAgQUxXQVlTX0lOTElORSBJc29TdWJzcGFjZSYgZ2xvYmFsTGV4aWNhbEVudmly
b25tZW50U3BhY2UoKSB7IHJldHVybiBoZWFwLmdsb2JhbExleGljYWxFbnZpcm9ubWVudFNwYWNl
OyB9CisgICAgQUxXQVlTX0lOTElORSBJc29TdWJzcGFjZSYgaW50ZXJuYWxGdW5jdGlvblNwYWNl
KCkgeyByZXR1cm4gaGVhcC5pbnRlcm5hbEZ1bmN0aW9uU3BhY2U7IH0KKyAgICBBTFdBWVNfSU5M
SU5FIElzb1N1YnNwYWNlJiBqc1Byb3h5U3BhY2UoKSB7IHJldHVybiBoZWFwLmpzUHJveHlTcGFj
ZTsgfQorICAgIEFMV0FZU19JTkxJTkUgSXNvU3Vic3BhY2UmIG5hdGl2ZUV4ZWN1dGFibGVTcGFj
ZSgpIHsgcmV0dXJuIGhlYXAubmF0aXZlRXhlY3V0YWJsZVNwYWNlOyB9CisgICAgQUxXQVlTX0lO
TElORSBJc29TdWJzcGFjZSYgbnVtYmVyT2JqZWN0U3BhY2UoKSB7IHJldHVybiBoZWFwLm51bWJl
ck9iamVjdFNwYWNlOyB9CisgICAgQUxXQVlTX0lOTElORSBJc29TdWJzcGFjZSYgcGxhaW5PYmpl
Y3RTcGFjZSgpIHsgcmV0dXJuIGhlYXAucGxhaW5PYmplY3RTcGFjZTsgfQorICAgIEFMV0FZU19J
TkxJTkUgSXNvU3Vic3BhY2UmIHByb21pc2VTcGFjZSgpIHsgcmV0dXJuIGhlYXAucHJvbWlzZVNw
YWNlOyB9CisgICAgQUxXQVlTX0lOTElORSBJc29TdWJzcGFjZSYgcHJvcGVydHlOYW1lRW51bWVy
YXRvclNwYWNlKCkgeyByZXR1cm4gaGVhcC5wcm9wZXJ0eU5hbWVFbnVtZXJhdG9yU3BhY2U7IH0K
KyAgICBBTFdBWVNfSU5MSU5FIElzb1N1YnNwYWNlJiBwcm9wZXJ0eVRhYmxlU3BhY2UoKSB7IHJl
dHVybiBoZWFwLnByb3BlcnR5VGFibGVTcGFjZTsgfQorICAgIEFMV0FZU19JTkxJTkUgSXNvU3Vi
c3BhY2UmIHJlZ0V4cFNwYWNlKCkgeyByZXR1cm4gaGVhcC5yZWdFeHBTcGFjZTsgfQorICAgIEFM
V0FZU19JTkxJTkUgSXNvU3Vic3BhY2UmIHJlZ0V4cE9iamVjdFNwYWNlKCkgeyByZXR1cm4gaGVh
cC5yZWdFeHBPYmplY3RTcGFjZTsgfQorICAgIEFMV0FZU19JTkxJTkUgSXNvU3Vic3BhY2UmIHJv
cGVTdHJpbmdTcGFjZSgpIHsgcmV0dXJuIGhlYXAucm9wZVN0cmluZ1NwYWNlOyB9CisgICAgQUxX
QVlTX0lOTElORSBJc29TdWJzcGFjZSYgc2NvcGVkQXJndW1lbnRzU3BhY2UoKSB7IHJldHVybiBo
ZWFwLnNjb3BlZEFyZ3VtZW50c1NwYWNlOyB9CisgICAgQUxXQVlTX0lOTElORSBJc29TdWJzcGFj
ZSYgc3BhcnNlQXJyYXlWYWx1ZU1hcFNwYWNlKCkgeyByZXR1cm4gaGVhcC5zcGFyc2VBcnJheVZh
bHVlTWFwU3BhY2U7IH0KKyAgICBBTFdBWVNfSU5MSU5FIElzb1N1YnNwYWNlJiBzdHJpbmdTcGFj
ZSgpIHsgcmV0dXJuIGhlYXAuc3RyaW5nU3BhY2U7IH0KKyAgICBBTFdBWVNfSU5MSU5FIElzb1N1
YnNwYWNlJiBzdHJpbmdPYmplY3RTcGFjZSgpIHsgcmV0dXJuIGhlYXAuc3RyaW5nT2JqZWN0U3Bh
Y2U7IH0KKyAgICBBTFdBWVNfSU5MSU5FIElzb1N1YnNwYWNlJiBzdHJ1Y3R1cmVDaGFpblNwYWNl
KCkgeyByZXR1cm4gaGVhcC5zdHJ1Y3R1cmVDaGFpblNwYWNlOyB9CisgICAgQUxXQVlTX0lOTElO
RSBJc29TdWJzcGFjZSYgc3RydWN0dXJlUmFyZURhdGFTcGFjZSgpIHsgcmV0dXJuIGhlYXAuc3Ry
dWN0dXJlUmFyZURhdGFTcGFjZTsgfQorICAgIEFMV0FZU19JTkxJTkUgSXNvU3Vic3BhY2UmIHN0
cnVjdHVyZVNwYWNlKCkgeyByZXR1cm4gaGVhcC5zdHJ1Y3R1cmVTcGFjZTsgfQorICAgIEFMV0FZ
U19JTkxJTkUgSXNvU3Vic3BhY2UmIGJyYW5kZWRTdHJ1Y3R1cmVTcGFjZSgpIHsgcmV0dXJuIGhl
YXAuYnJhbmRlZFN0cnVjdHVyZVNwYWNlOyB9CisgICAgQUxXQVlTX0lOTElORSBJc29TdWJzcGFj
ZSYgc3ltYm9sVGFibGVTcGFjZSgpIHsgcmV0dXJuIGhlYXAuc3ltYm9sVGFibGVTcGFjZTsgfQog
CiAjZGVmaW5lIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIobmFtZSkgXAogICAg
IHRlbXBsYXRlPFN1YnNwYWNlQWNjZXNzIG1vZGU+IFwKLSAgICBJc29TdWJzcGFjZSogbmFtZSgp
IFwKLSAgICB7IFwKLSAgICAgICAgaWYgKG1fIyNuYW1lIHx8IG1vZGUgPT0gU3Vic3BhY2VBY2Nl
c3M6OkNvbmN1cnJlbnRseSkgXAotICAgICAgICAgICAgcmV0dXJuIG1fIyNuYW1lLmdldCgpOyBc
Ci0gICAgICAgIHJldHVybiBuYW1lIyNTbG93KCk7IFwKLSAgICB9IFwKLSAgICBKU19FWFBPUlRf
UFJJVkFURSBJc29TdWJzcGFjZSogbmFtZSMjU2xvdygpOyBcCi0gICAgc3RkOjp1bmlxdWVfcHRy
PElzb1N1YnNwYWNlPiBtXyMjbmFtZTsKLQorICAgIEFMV0FZU19JTkxJTkUgSXNvU3Vic3BhY2Uq
IG5hbWUoKSB7IHJldHVybiBoZWFwLm5hbWU8bW9kZT4oKTsgfQogCiAjaWYgSlNDX09CSkNfQVBJ
X0VOQUJMRUQKICAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKGFwaVdyYXBw
ZXJPYmplY3RTcGFjZSkKQEAgLTY1Nyw3NCArNTU4LDIzIEBAIHB1YmxpYzoKICNlbmRpZgogCiAj
dW5kZWYgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUgotICAgIAotICAgIElzb0Nl
bGxTZXQgZXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZXNXaXRoQ29uc3RyYWludHM7Ci0gICAgSXNv
Q2VsbFNldCBleGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlc1dpdGhGaW5hbGl6ZXJzOworCisgICAg
QUxXQVlTX0lOTElORSBJc29DZWxsU2V0JiBleGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlc1dpdGhD
b25zdHJhaW50cygpIHsgcmV0dXJuIGhlYXAuZXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZXNXaXRo
Q29uc3RyYWludHM7IH0KKyAgICBBTFdBWVNfSU5MSU5FIElzb0NlbGxTZXQmIGV4ZWN1dGFibGVU
b0NvZGVCbG9ja0VkZ2VzV2l0aEZpbmFsaXplcnMoKSB7IHJldHVybiBoZWFwLmV4ZWN1dGFibGVU
b0NvZGVCbG9ja0VkZ2VzV2l0aEZpbmFsaXplcnM7IH0KIAogI2RlZmluZSBEWU5BTUlDX1NQQUNF
X0FORF9TRVRfREVGSU5FX01FTUJFUihuYW1lKSBcCiAgICAgdGVtcGxhdGU8U3Vic3BhY2VBY2Nl
c3MgbW9kZT4gXAotICAgIElzb1N1YnNwYWNlKiBuYW1lKCkgXAotICAgIHsgXAotICAgICAgICBp
ZiAoYXV0byogc3BhY2VBbmRTZXQgPSBtXyMjbmFtZS5nZXQoKSkgXAotICAgICAgICAgICAgcmV0
dXJuICZzcGFjZUFuZFNldC0+c3BhY2U7IFwKLSAgICAgICAgaWYgKG1vZGUgPT0gU3Vic3BhY2VB
Y2Nlc3M6OkNvbmN1cnJlbnRseSkgXAotICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7IFwKLSAg
ICAgICAgcmV0dXJuIG5hbWUjI1Nsb3coKTsgXAotICAgIH0gXAotICAgIElzb1N1YnNwYWNlKiBu
YW1lIyNTbG93KCk7IFwKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8U3BhY2VBbmRTZXQ+IG1fIyNuYW1l
OwotICAgIAotICAgIHN0cnVjdCBTcGFjZUFuZFNldCB7Ci0gICAgICAgIFdURl9NQUtFX1NUUlVD
VF9GQVNUX0FMTE9DQVRFRDsKLQotICAgICAgICBJc29TdWJzcGFjZSBzcGFjZTsKLSAgICAgICAg
SXNvQ2VsbFNldCBzZXQ7Ci0gICAgICAgIAotICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBB
cmd1bWVudHM+Ci0gICAgICAgIFNwYWNlQW5kU2V0KEFyZ3VtZW50cyYmLi4uIGFyZ3VtZW50cykK
LSAgICAgICAgICAgIDogc3BhY2Uoc3RkOjpmb3J3YXJkPEFyZ3VtZW50cz4oYXJndW1lbnRzKS4u
LikKLSAgICAgICAgICAgICwgc2V0KHNwYWNlKQotICAgICAgICB7Ci0gICAgICAgIH0KLSAgICAg
ICAgCi0gICAgICAgIHN0YXRpYyBJc29DZWxsU2V0JiBzZXRGb3IoU3Vic3BhY2UmIHNwYWNlKQot
ICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gKmJpdHdpc2VfY2FzdDxJc29DZWxsU2V0Kj4o
Ci0gICAgICAgICAgICAgICAgYml0d2lzZV9jYXN0PGNoYXIqPigmc3BhY2UpIC0KLSAgICAgICAg
ICAgICAgICBPQkpFQ1RfT0ZGU0VUT0YoU3BhY2VBbmRTZXQsIHNwYWNlKSArCi0gICAgICAgICAg
ICAgICAgT0JKRUNUX09GRlNFVE9GKFNwYWNlQW5kU2V0LCBzZXQpKTsKLSAgICAgICAgfQotICAg
IH07Ci0gICAgCi0gICAgU3BhY2VBbmRTZXQgY29kZUJsb2NrU3BhY2U7CisgICAgQUxXQVlTX0lO
TElORSBJc29TdWJzcGFjZSogbmFtZSgpIHsgcmV0dXJuIGhlYXAubmFtZTxtb2RlPigpOyB9CiAK
LSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jPgotICAgIHZvaWQgZm9yRWFjaENvZGVCbG9ja1Nw
YWNlKGNvbnN0IEZ1bmMmIGZ1bmMpCi0gICAgewotICAgICAgICAvLyBUaGlzIHNob3VsZCBub3Qg
aW5jbHVkZSB3ZWJBc3NlbWJseUNvZGVCbG9ja1NwYWNlIGJlY2F1c2UgdGhpcyBpcyBhYm91dCBz
dWJzY2xhc3NlcyBvZgotICAgICAgICAvLyBKU0M6OkNvZGVCbG9jay4KLSAgICAgICAgZnVuYyhj
b2RlQmxvY2tTcGFjZSk7Ci0gICAgfQorICAgIHVzaW5nIFNwYWNlQW5kU2V0ID0gSGVhcDo6U3Bh
Y2VBbmRTZXQ7CisgICAgQUxXQVlTX0lOTElORSBTcGFjZUFuZFNldCYgY29kZUJsb2NrU3BhY2Uo
KSB7IHJldHVybiBoZWFwLmNvZGVCbG9ja1NwYWNlOyB9CiAKICAgICBEWU5BTUlDX1NQQUNFX0FO
RF9TRVRfREVGSU5FX01FTUJFUihldmFsRXhlY3V0YWJsZVNwYWNlKQogICAgIERZTkFNSUNfU1BB
Q0VfQU5EX1NFVF9ERUZJTkVfTUVNQkVSKG1vZHVsZVByb2dyYW1FeGVjdXRhYmxlU3BhY2UpCi0g
ICAgU3BhY2VBbmRTZXQgZnVuY3Rpb25FeGVjdXRhYmxlU3BhY2U7Ci0gICAgU3BhY2VBbmRTZXQg
cHJvZ3JhbUV4ZWN1dGFibGVTcGFjZTsKLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmM+Ci0g
ICAgdm9pZCBmb3JFYWNoU2NyaXB0RXhlY3V0YWJsZVNwYWNlKGNvbnN0IEZ1bmMmIGZ1bmMpCi0g
ICAgewotICAgICAgICBpZiAobV9ldmFsRXhlY3V0YWJsZVNwYWNlKQotICAgICAgICAgICAgZnVu
YygqbV9ldmFsRXhlY3V0YWJsZVNwYWNlKTsKLSAgICAgICAgZnVuYyhmdW5jdGlvbkV4ZWN1dGFi
bGVTcGFjZSk7Ci0gICAgICAgIGlmIChtX21vZHVsZVByb2dyYW1FeGVjdXRhYmxlU3BhY2UpCi0g
ICAgICAgICAgICBmdW5jKCptX21vZHVsZVByb2dyYW1FeGVjdXRhYmxlU3BhY2UpOwotICAgICAg
ICBmdW5jKHByb2dyYW1FeGVjdXRhYmxlU3BhY2UpOwotICAgIH0KLQotICAgIFNwYWNlQW5kU2V0
IHVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlU3BhY2U7CiAKLSN1bmRlZiBEWU5BTUlDX1NQQUNF
X0FORF9TRVRfREVGSU5FX01FTUJFUgorICAgIEFMV0FZU19JTkxJTkUgU3BhY2VBbmRTZXQmIGZ1
bmN0aW9uRXhlY3V0YWJsZVNwYWNlKCkgeyByZXR1cm4gaGVhcC5mdW5jdGlvbkV4ZWN1dGFibGVT
cGFjZTsgfQorICAgIEFMV0FZU19JTkxJTkUgU3BhY2VBbmRTZXQmIHByb2dyYW1FeGVjdXRhYmxl
U3BhY2UoKSB7IHJldHVybiBoZWFwLnByb2dyYW1FeGVjdXRhYmxlU3BhY2U7IH0KKyAgICBBTFdB
WVNfSU5MSU5FIFNwYWNlQW5kU2V0JiB1bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZVNwYWNlKCkg
eyByZXR1cm4gaGVhcC51bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZVNwYWNlOyB9CiAKICAgICBW
TVR5cGUgdm1UeXBlOwogICAgIENsaWVudERhdGEqIGNsaWVudERhdGE7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFrTWFwUHJvdG90eXBlLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha01hcFByb3RvdHlwZS5oCShyZXZpc2lv
biAyODYwODEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFrTWFwUHJvdG90
eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQxLDcgKzQxLDcgQEAgcHVibGljOgogICAgIHN0YXRp
YyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElD
X0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoV2Vha01hcFByb3RvdHlwZSwgQmFzZSk7Ci0g
ICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5w
bGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIFdlYWtNYXBQcm90b3R5cGUq
IGNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSog
c3RydWN0dXJlKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha09iamVj
dFJlZlByb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1dlYWtPYmplY3RSZWZQcm90b3R5cGUuaAkocmV2aXNpb24gMjg2MDgxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha09iamVjdFJlZlByb3RvdHlwZS5oCSh3b3JraW5n
IGNvcHkpCkBAIC0zNyw3ICszNyw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2Uq
IHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NV
QlNQQUNFX1NIQVJBQkxFKFdlYWtPYmplY3RSZWZQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICBy
ZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmpl
Y3RTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBXZWFrT2JqZWN0UmVmUHJvdG90eXBlKiBj
cmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dlYWtTZXRQcm90
b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFr
U2V0UHJvdG90eXBlLmgJKHJldmlzaW9uIDI4NjA4MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1dlYWtTZXRQcm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtNDEsNyArNDEs
NyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0p
CiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShXZWFr
U2V0UHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNl
OworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBz
dGF0aWMgV2Vha1NldFByb3RvdHlwZSogY3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvdG9vbHMvSlNEb2xsYXJWTS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3Rvb2xzL0pTRG9sbGFyVk0uY3BwCShyZXZpc2lvbiAyODYwODEpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvdG9vbHMvSlNEb2xsYXJWTS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEz
Myw3ICsxMzMsNyBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUsIFN1
YnNwYWNlQWNjZXNzPgogICAgIHN0YXRpYyBDb21wbGV0ZVN1YnNwYWNlKiBzdWJzcGFjZUZvcihW
TSYgdm0pCiAgICAgewotICAgICAgICByZXR1cm4gJnZtLmNlbGxTcGFjZTsKKyAgICAgICAgcmV0
dXJuICZ2bS5jZWxsU3BhY2UoKTsKICAgICB9CiAKICAgICBKU0RvbGxhclZNQ2FsbEZyYW1lKFZN
JiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCkBAIC0yMjMsNyArMjIzLDcgQEAgcHVibGljOgog
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlLCBTdWJzcGFjZUFjY2Vzcz4KICAgICBzdGF0
aWMgQ29tcGxldGVTdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKLSAgICAgICAg
cmV0dXJuICZ2bS5jZWxsU3BhY2U7CisgICAgICAgIHJldHVybiAmdm0uY2VsbFNwYWNlKCk7CiAg
ICAgfQogCiAgICAgUm9vdCogcm9vdCgpIGNvbnN0IHsgcmV0dXJuIG1fcm9vdC5nZXQoKTsgfQpA
QCAtMjg3LDcgKzI4Nyw3IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlw
ZSwgU3Vic3BhY2VBY2Nlc3M+CiAgICAgc3RhdGljIENvbXBsZXRlU3Vic3BhY2UqIHN1YnNwYWNl
Rm9yKFZNJiB2bSkKICAgICB7Ci0gICAgICAgIHJldHVybiAmdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0
U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0U3BhY2UoKTsKICAg
ICB9CiAKICAgICBSb290KFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCkBAIC0zNTQsNyAr
MzU0LDcgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlLCBTdWJzcGFj
ZUFjY2Vzcz4KICAgICBzdGF0aWMgQ29tcGxldGVTdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZt
KQogICAgIHsKLSAgICAgICAgcmV0dXJuICZ2bS5jZWxsU3BhY2U7CisgICAgICAgIHJldHVybiAm
dm0uY2VsbFNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIFNpbXBsZU9iamVjdCogY3JlYXRl
KFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKQEAgLTQyNiw3ICs0MjYsNyBA
QCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNz
PgogICAgIHN0YXRpYyBDb21wbGV0ZVN1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAg
ewotICAgICAgICByZXR1cm4gJnZtLmNlbGxTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5jZWxs
U3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUo
Vk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkK
QEAgLTUwOCw3ICs1MDgsNyBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5
cGUsIFN1YnNwYWNlQWNjZXNzPgogICAgIHN0YXRpYyBDb21wbGV0ZVN1YnNwYWNlKiBzdWJzcGFj
ZUZvcihWTSYgdm0pCiAgICAgewotICAgICAgICByZXR1cm4gJnZtLmNlbGxTcGFjZTsKKyAgICAg
ICAgcmV0dXJuICZ2bS5jZWxsU3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgU3RydWN0dXJl
KiBjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBK
U1ZhbHVlIHByb3RvdHlwZSkKQEAgLTU5MCw3ICs1OTAsNyBAQCBJR05PUkVfV0FSTklOR1NfRU5E
CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNzPgogICAgIHN0
YXRpYyBDb21wbGV0ZVN1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewotICAgICAg
ICByZXR1cm4gJnZtLmNlbGxTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5jZWxsU3BhY2UoKTsK
ICAgICB9CiAKICAgICBzdGF0aWMgUnVudGltZUFycmF5KiBjcmVhdGUoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCkBAIC03NzIsNyArNzcyLDcgQEAg
cHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlLCBTdWJzcGFjZUFjY2Vzcz4K
ICAgICBzdGF0aWMgQ29tcGxldGVTdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsK
LSAgICAgICAgcmV0dXJuICZ2bS5jZWxsU3BhY2U7CisgICAgICAgIHJldHVybiAmdm0uY2VsbFNw
YWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZN
JiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCkBA
IC04NzIsNyArODcyLDcgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBl
LCBTdWJzcGFjZUFjY2Vzcz4KICAgICBzdGF0aWMgQ29tcGxldGVTdWJzcGFjZSogc3Vic3BhY2VG
b3IoVk0mIHZtKQogICAgIHsKLSAgICAgICAgcmV0dXJuICZ2bS5jZWxsU3BhY2U7CisgICAgICAg
IHJldHVybiAmdm0uY2VsbFNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIFN0cnVjdHVyZSog
Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNW
YWx1ZSBwcm90b3R5cGUpCkBAIC04OTcsNyArODk3LDcgQEAgcHVibGljOgogICAgIHRlbXBsYXRl
PHR5cGVuYW1lIENlbGxUeXBlLCBTdWJzcGFjZUFjY2Vzcz4KICAgICBzdGF0aWMgQ29tcGxldGVT
dWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKLSAgICAgICAgcmV0dXJuICZ2bS5j
ZWxsU3BhY2U7CisgICAgICAgIHJldHVybiAmdm0uY2VsbFNwYWNlKCk7CiAgICAgfQogCiAgICAg
T2JqZWN0RG9pbmdTaWRlRWZmZWN0UHV0V2l0aG91dENvcnJlY3RTbG90U3RhdHVzKFZNJiB2bSwg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUpCkBAIC05NDgsNyArOTQ4LDcgQEAgcHVibGljOgogICAgIHRl
bXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlLCBTdWJzcGFjZUFjY2Vzcz4KICAgICBzdGF0aWMgQ29t
cGxldGVTdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKLSAgICAgICAgcmV0dXJu
ICZ2bS5jZWxsU3BhY2U7CisgICAgICAgIHJldHVybiAmdm0uY2VsbFNwYWNlKCk7CiAgICAgfQog
CiAgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCkBAIC0xNTg1LDcgKzE1ODUs
NyBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUsIFN1YnNwYWNlQWNj
ZXNzPgogICAgIHN0YXRpYyBDb21wbGV0ZVN1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAg
ICAgewotICAgICAgICByZXR1cm4gJnZtLmNlbGxTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5j
ZWxsU3BhY2UoKTsKICAgICB9CiAKICAgICBKU1Rlc3RDdXN0b21HZXR0ZXJTZXR0ZXIoVk0mIHZt
LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKQEAgLTE4MzgsNyArMTgzOCw3IEBAIHB1YmxpYzoKICAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vic3BhY2VBY2Nlc3M+CiAgICAgc3RhdGlj
IENvbXBsZXRlU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7Ci0gICAgICAgIHJl
dHVybiAmdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0uZGVz
dHJ1Y3RpYmxlT2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBjbGFzcyBDbGllbnQgZmluYWwg
OiBwdWJsaWMgV2FzbTo6U3RyZWFtaW5nUGFyc2VyQ2xpZW50IHsKQEAgLTE5MzMsNyArMTkzMyw3
IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vic3BhY2VBY2Nl
c3M+CiAgICAgc3RhdGljIENvbXBsZXRlU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAg
ICB7Ci0gICAgICAgIHJldHVybiAmdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0U3BhY2U7CisgICAgICAg
IHJldHVybiAmdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBXYXNt
U3RyZWFtaW5nQ29tcGlsZXIoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgV2FzbTo6Q29t
cGlsZXJNb2RlIGNvbXBpbGVyTW9kZSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNQ
cm9taXNlKiBwcm9taXNlLCBKU09iamVjdCogaW1wb3J0T2JqZWN0KQpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3Rvb2xzL0pTRG9sbGFyVk0uaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvdG9vbHMvSlNEb2xsYXJWTS5oCShyZXZpc2lvbiAyODYwODEpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvSlNEb2xsYXJWTS5oCSh3b3JraW5nIGNvcHkpCkBAIC00
Miw3ICs0Miw3IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vi
c3BhY2VBY2Nlc3M+CiAgICAgc3RhdGljIENvbXBsZXRlU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZN
JiB2bSkKICAgICB7Ci0gICAgICAgIHJldHVybiAmdm0uY2VsbFNwYWNlOworICAgICAgICByZXR1
cm4gJnZtLmNlbGxTcGFjZSgpOwogICAgIH0KICAgICAKICAgICBERUNMQVJFX0VYUE9SVF9JTkZP
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHku
aAkocmV2aXNpb24gMjg2MDgxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNX
ZWJBc3NlbWJseS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHly
aWdodCAoQykgMjAxNi0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAxNi0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
CiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDEsNyArNDEsNyBAQCBwdWJsaWM6CiAg
ICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewogICAgICAg
ICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1dlYkFzc2VtYmx5LCBCYXNl
KTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4g
JnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgSlNXZWJBc3NlbWJs
eSogY3JlYXRlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqKTsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5Q29tcGlsZUVycm9yUHJvdG90eXBl
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1i
bHlDb21waWxlRXJyb3JQcm90b3R5cGUuaAkocmV2aXNpb24gMjg2MDgxKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlDb21waWxlRXJyb3JQcm90b3R5cGUuaAko
d29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYt
MjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTYtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTQxLDcgKzQxLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJc29T
dWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VS
VF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoV2ViQXNzZW1ibHlDb21waWxlRXJyb3JQcm90b3R5cGUs
IEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJl
dHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBXZWJBc3Nl
bWJseUNvbXBpbGVFcnJvclByb3RvdHlwZSogY3JlYXRlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBT
dHJ1Y3R1cmUqKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2Vt
Ymx5RXhjZXB0aW9uUHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vanMvV2ViQXNzZW1ibHlFeGNlcHRpb25Qcm90b3R5cGUuaAkocmV2aXNpb24gMjg2
MDgxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlFeGNlcHRp
b25Qcm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtNDEsNyArNDEsNyBAQCBwdWJsaWM6CiAg
ICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewogICAgICAg
ICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShXZWJBc3NlbWJseUV4Y2VwdGlv
blByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsK
KyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAgc3Rh
dGljIFdlYkFzc2VtYmx5RXhjZXB0aW9uUHJvdG90eXBlKiBjcmVhdGUoVk0mLCBKU0dsb2JhbE9i
amVjdCosIFN0cnVjdHVyZSopOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMv
V2ViQXNzZW1ibHlHbG9iYWxQcm90b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUdsb2JhbFByb3RvdHlwZS5oCShyZXZpc2lvbiAy
ODYwODEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUdsb2Jh
bFByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHly
aWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMTktMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQwLDcgKzQwLDcgQEAgcHVibGljOgogICAgIHN0
YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAgICAgU1RB
VElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoV2ViQXNzZW1ibHlHbG9iYWxQcm90b3R5
cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAg
IHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBXZWJB
c3NlbWJseUdsb2JhbFByb3RvdHlwZSogY3JlYXRlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1
Y3R1cmUqKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5
SW5zdGFuY2VQcm90b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9qcy9XZWJBc3NlbWJseUluc3RhbmNlUHJvdG90eXBlLmgJKHJldmlzaW9uIDI4NjA4MSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5SW5zdGFuY2VQcm90
b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTYtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMTYtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQxLDcgKzQxLDcgQEAgcHVibGljOgogICAgIHN0
YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAgICAgU1RB
VElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoV2ViQXNzZW1ibHlJbnN0YW5jZVByb3Rv
dHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAg
ICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIFdl
YkFzc2VtYmx5SW5zdGFuY2VQcm90b3R5cGUqIGNyZWF0ZShWTSYsIEpTR2xvYmFsT2JqZWN0Kiwg
U3RydWN0dXJlKik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3Nl
bWJseUxpbmtFcnJvclByb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TGlua0Vycm9yUHJvdG90eXBlLmgJKHJldmlzaW9uIDI4
NjA4MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TGlua0Vy
cm9yUHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDE2LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDE2LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00MSw3ICs0MSw3IEBAIHB1YmxpYzoK
ICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAg
ICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKFdlYkFzc2VtYmx5TGlua0Vy
cm9yUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNl
OworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBz
dGF0aWMgV2ViQXNzZW1ibHlMaW5rRXJyb3JQcm90b3R5cGUqIGNyZWF0ZShWTSYsIEpTR2xvYmFs
T2JqZWN0KiwgU3RydWN0dXJlKik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9q
cy9XZWJBc3NlbWJseU1lbW9yeVByb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TWVtb3J5UHJvdG90eXBlLmgJKHJldmlzaW9u
IDI4NjA4MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TWVt
b3J5UHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDE2LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDE2LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00MSw3ICs0MSw3IEBAIHB1YmxpYzoK
ICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAg
ICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKFdlYkFzc2VtYmx5TWVtb3J5
UHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOwor
ICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0
aWMgV2ViQXNzZW1ibHlNZW1vcnlQcm90b3R5cGUqIGNyZWF0ZShWTSYsIEpTR2xvYmFsT2JqZWN0
KiwgU3RydWN0dXJlKik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJB
c3NlbWJseU1vZHVsZVByb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TW9kdWxlUHJvdG90eXBlLmgJKHJldmlzaW9uIDI4NjA4
MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TW9kdWxlUHJv
dG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDE2LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDE2LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00MSw3ICs0MSw3IEBAIHB1YmxpYzoKICAgICBz
dGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAgIFNU
QVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKFdlYkFzc2VtYmx5TW9kdWxlUHJvdG90
eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAg
ICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgV2Vi
QXNzZW1ibHlNb2R1bGVQcm90b3R5cGUqIGNyZWF0ZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgU3Ry
dWN0dXJlKik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJs
eVJ1bnRpbWVFcnJvclByb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5UnVudGltZUVycm9yUHJvdG90eXBlLmgJKHJldmlzaW9u
IDI4NjA4MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5UnVu
dGltZUVycm9yUHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgot
ICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00MSw3ICs0MSw3IEBAIHB1
YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7
CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKFdlYkFzc2VtYmx5
UnVudGltZUVycm9yUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9i
amVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9
CiAKICAgICBzdGF0aWMgV2ViQXNzZW1ibHlSdW50aW1lRXJyb3JQcm90b3R5cGUqIGNyZWF0ZShW
TSYsIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseVRhYmxlUHJvdG90eXBlLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlUYWJsZVByb3RvdHlwZS5o
CShyZXZpc2lvbiAyODYwODEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJB
c3NlbWJseVRhYmxlUHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAv
KgotICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00MSw3ICs0MSw3IEBA
IHB1YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAg
ICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKFdlYkFzc2Vt
Ymx5VGFibGVQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0
U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAog
ICAgIHN0YXRpYyBXZWJBc3NlbWJseVRhYmxlUHJvdG90eXBlKiBjcmVhdGUoVk0mLCBKU0dsb2Jh
bE9iamVjdCosIFN0cnVjdHVyZSopOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
anMvV2ViQXNzZW1ibHlUYWdQcm90b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseVRhZ1Byb3RvdHlwZS5oCShyZXZpc2lvbiAyODYw
ODEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseVRhZ1Byb3Rv
dHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00MCw3ICs0MCw3IEBAIHB1YmxpYzoKICAgICBzdGF0
aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJ
Q19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKFdlYkFzc2VtYmx5VGFnUHJvdG90eXBlLCBC
YXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1
cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgV2ViQXNzZW1i
bHlUYWdQcm90b3R5cGUqIGNyZWF0ZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKik7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUFzeW5jSXRlcmF0b3IuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUFzeW5jSXRlcmF0
b3IuaAkocmV2aXNpb24gMjg2MDgxKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNE
T01Bc3luY0l0ZXJhdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDcgKzQ4LDcgQEAgcHVibGlj
OgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkK
ICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTRE9N
QXN5bmNJdGVyYXRvclByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5P
YmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAg
fQogCiAgICAgc3RhdGljIEpTRE9NQXN5bmNJdGVyYXRvclByb3RvdHlwZSogY3JlYXRlKEpTQzo6
Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6U3RydWN0dXJl
KiBzdHJ1Y3R1cmUpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUl0ZXJh
dG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01JdGVy
YXRvci5oCShyZXZpc2lvbiAyODYwODEpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0RPTUl0ZXJhdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTU1LDcgKzU1LDcgQEAgcHVibGljOgog
ICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKICAg
ICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTRE9NSXRl
cmF0b3JQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3Bh
Y2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAg
IHN0YXRpYyBKU0RPTUl0ZXJhdG9yUHJvdG90eXBlKiBjcmVhdGUoSlNDOjpWTSYgdm0sIEpTQzo6
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRmlsZVN5c3RlbURpcmVjdG9yeUhh
bmRsZUl0ZXJhdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0ZpbGVTeXN0ZW1EaXJlY3RvcnlIYW5kbGVJdGVyYXRvci5jcHAJKHJldmlzaW9uIDI4NjA4
MSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRmlsZVN5c3RlbURpcmVjdG9yeUhh
bmRsZUl0ZXJhdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTUsOSArNTUsOSBAQCBJc29TdWJz
cGFjZSogSlNGaWxlU3lzdGVtRGlyZWN0b3J5SGFuZGxlCiAgICAgICAgIHJldHVybiBzcGFjZTsK
ICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVP
YmplY3QsIEpTRmlsZVN5c3RlbURpcmVjdG9yeUhhbmRsZUl0ZXJhdG9yPiB8fCAhSlNGaWxlU3lz
dGVtRGlyZWN0b3J5SGFuZGxlSXRlcmF0b3I6Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNv
bnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNG
aWxlU3lzdGVtRGlyZWN0b3J5SGFuZGxlSXRlcmF0b3I+KQotICAgICAgICBjbGllbnREYXRhLnNl
dEZpbGVTeXN0ZW1EaXJlY3RvcnlIYW5kbGVJdGVyYXRvclNwYWNlKG1ha2VVbmlxdWU8SXNvU3Vi
c3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5kZXN0cnVjdGlibGVPYmplY3RI
ZWFwQ2VsbFR5cGUsIEpTRmlsZVN5c3RlbURpcmVjdG9yeUhhbmRsZUl0ZXJhdG9yKSk7CisgICAg
ICAgIGNsaWVudERhdGEuc2V0RmlsZVN5c3RlbURpcmVjdG9yeUhhbmRsZUl0ZXJhdG9yU3BhY2Uo
bWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVz
dHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCksIEpTRmlsZVN5c3RlbURpcmVjdG9yeUhhbmRs
ZUl0ZXJhdG9yKSk7CiAgICAgZWxzZQotICAgICAgICBjbGllbnREYXRhLnNldEZpbGVTeXN0ZW1E
aXJlY3RvcnlIYW5kbGVJdGVyYXRvclNwYWNlKG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19T
VUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5jZWxsSGVhcENlbGxUeXBlLCBKU0ZpbGVTeXN0ZW1E
aXJlY3RvcnlIYW5kbGVJdGVyYXRvcikpOworICAgICAgICBjbGllbnREYXRhLnNldEZpbGVTeXN0
ZW1EaXJlY3RvcnlIYW5kbGVJdGVyYXRvclNwYWNlKG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElT
T19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNGaWxlU3lz
dGVtRGlyZWN0b3J5SGFuZGxlSXRlcmF0b3IpKTsKICAgICBhdXRvKiBzcGFjZSA9IGNsaWVudERh
dGEuZmlsZVN5c3RlbURpcmVjdG9yeUhhbmRsZUl0ZXJhdG9yU3BhY2UoKTsKIElHTk9SRV9XQVJO
SU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRh
dXRvbG9naWNhbC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dl
YkNvcmVKU0NsaWVudERhdGEuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL1dlYkNvcmVKU0NsaWVudERhdGEuY3BwCShyZXZpc2lvbiAyODYwODEpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9XZWJDb3JlSlNDbGllbnREYXRhLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNzcsMTIgKzc3LDEyIEBAIEpTVk1DbGllbnREYXRhOjpKU1ZNQ2xpZW50RGF0YShW
TSYgdm0pCiAgICAgLCBtX2hlYXBDZWxsVHlwZUZvckpTQXVkaW9Xb3JrbGV0R2xvYmFsU2NvcGUo
SlNDOjpJc29IZWFwQ2VsbFR5cGU6OmNyZWF0ZTxKU0F1ZGlvV29ya2xldEdsb2JhbFNjb3BlPigp
KQogI2VuZGlmCiAgICAgLCBtX2hlYXBDZWxsVHlwZUZvckpTSURCU2VyaWFsaXphdGlvbkdsb2Jh
bE9iamVjdChKU0M6Oklzb0hlYXBDZWxsVHlwZTo6Y3JlYXRlPEpTSURCU2VyaWFsaXphdGlvbkds
b2JhbE9iamVjdD4oKSkKLSAgICAsIG1fZG9tQnVpbHRpbkNvbnN0cnVjdG9yU3BhY2UgSVNPX1NV
QlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmNlbGxIZWFwQ2VsbFR5cGUsIEpTRE9NQnVpbHRpbkNv
bnN0cnVjdG9yQmFzZSkKLSAgICAsIG1fZG9tQ29uc3RydWN0b3JTcGFjZSBJU09fU1VCU1BBQ0Vf
SU5JVCh2bS5oZWFwLCAqdm0uY2VsbEhlYXBDZWxsVHlwZSwgSlNET01Db25zdHJ1Y3RvckJhc2Up
Ci0gICAgLCBtX2RvbU5hbWVzcGFjZU9iamVjdFNwYWNlIElTT19TVUJTUEFDRV9JTklUKHZtLmhl
YXAsICp2bS5jZWxsSGVhcENlbGxUeXBlLCBKU0RPTU9iamVjdCkKLSAgICAsIG1fZG9tV2luZG93
UHJvcGVydGllc1NwYWNlIElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5jZWxsSGVhcENl
bGxUeXBlLCBKU0RPTVdpbmRvd1Byb3BlcnRpZXMpCisgICAgLCBtX2RvbUJ1aWx0aW5Db25zdHJ1
Y3RvclNwYWNlIElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUo
KSwgSlNET01CdWlsdGluQ29uc3RydWN0b3JCYXNlKQorICAgICwgbV9kb21Db25zdHJ1Y3RvclNw
YWNlIElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNE
T01Db25zdHJ1Y3RvckJhc2UpCisgICAgLCBtX2RvbU5hbWVzcGFjZU9iamVjdFNwYWNlIElTT19T
VUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNET01PYmplY3Qp
CisgICAgLCBtX2RvbVdpbmRvd1Byb3BlcnRpZXNTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVCh2bS5o
ZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCksIEpTRE9NV2luZG93UHJvcGVydGllcykKICAgICAs
IG1fcnVudGltZUFycmF5U3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKm1fcnVudGlt
ZUFycmF5SGVhcENlbGxUeXBlLCBSdW50aW1lQXJyYXkpCi0gICAgLCBtX3J1bnRpbWVNZXRob2RT
cGFjZSBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uY2VsbEhlYXBDZWxsVHlwZSwgUnVu
dGltZU1ldGhvZCkgLy8gSGFzaDoweGY3MGM0YTg1CisgICAgLCBtX3J1bnRpbWVNZXRob2RTcGFj
ZSBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCksIFJ1bnRp
bWVNZXRob2QpIC8vIEhhc2g6MHhmNzBjNGE4NQogICAgICwgbV9ydW50aW1lT2JqZWN0U3BhY2Ug
SVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKm1fcnVudGltZU9iamVjdEhlYXBDZWxsVHlwZSwg
SlNDOjpCaW5kaW5nczo6UnVudGltZU9iamVjdCkKICAgICAsIG1fd2luZG93UHJveHlTcGFjZSBJ
U09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqbV93aW5kb3dQcm94eUhlYXBDZWxsVHlwZSwgSlNX
aW5kb3dQcm94eSkKICAgICAsIG1faWRiU2VyaWFsaXphdGlvblNwYWNlIElTT19TVUJTUEFDRV9J
TklUKHZtLmhlYXAsICptX2hlYXBDZWxsVHlwZUZvckpTSURCU2VyaWFsaXphdGlvbkdsb2JhbE9i
amVjdCwgSlNJREJTZXJpYWxpemF0aW9uR2xvYmFsT2JqZWN0KQpJbmRleDogU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0JKHJldmlzaW9u
IDI4NjA4MSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRv
ckpTLnBtCSh3b3JraW5nIGNvcHkpCkBAIC00ODU2LDkgKzQ4NTYsOSBAQCBzdWIgR2VuZXJhdGVJ
bXBsZW1lbnRhdGlvbgogICAgIH0gZWxzZSB7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAi
ICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9i
amVjdCwgJHtjbGFzc05hbWV9PiB8fCAhJHtjbGFzc05hbWV9OjpuZWVkc0Rlc3RydWN0aW9uKTtc
biIpOwogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBpZiBjb25zdGV4cHIgKHN0ZDo6
aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsICR7Y2xhc3NOYW1lfT4pXG4i
KTsKLSAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNl
Rm9yJHtpbnRlcmZhY2VOYW1lfSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFD
RV9JTklUKHZtLmhlYXAsICp2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUsICR7Y2xh
c3NOYW1lfSk7XG4iKTsKKyAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIHNwYWNl
cy5tX3N1YnNwYWNlRm9yJHtpbnRlcmZhY2VOYW1lfSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+
IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxs
VHlwZSgpLCAke2NsYXNzTmFtZX0pO1xuIik7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAi
ICAgIGVsc2VcbiIpOwotICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgc3BhY2Vz
Lm1fc3Vic3BhY2VGb3Ike2ludGVyZmFjZU5hbWV9ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4g
SVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmNlbGxIZWFwQ2VsbFR5cGUsICR7Y2xhc3NO
YW1lfSk7XG4iKTsKKyAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIHNwYWNlcy5t
X3N1YnNwYWNlRm9yJHtpbnRlcmZhY2VOYW1lfSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElT
T19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgJHtjbGFzc05h
bWV9KTtcbiIpOwogICAgIH0KICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBhdXRvKiBzcGFj
ZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yJHtpbnRlcmZhY2VOYW1lfS5nZXQoKTtcbiIpOwogICAg
IHB1c2goQGltcGxDb250ZW50LCAiSUdOT1JFX1dBUk5JTkdTX0JFR0lOKFwidW5yZWFjaGFibGUt
Y29kZVwiKVxuIik7CkBAIC02NzMxLDkgKzY3MzEsOSBAQCBwdWJsaWM6CiAgICAgICAgICAgICBy
ZXR1cm4gc3BhY2U7CiAgICAgICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlND
OjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgJHtpdGVyYXRvck5hbWV9PiB8fCAhJHtpdGVyYXRvck5h
bWV9OjpuZWVkc0Rlc3RydWN0aW9uKTsKICAgICAgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jh
c2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCAke2l0ZXJhdG9yTmFtZX0+KQotICAg
ICAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3Ike2l0ZXJhdG9yTmFtZX0gPSBtYWtlVW5pcXVl
PElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uZGVzdHJ1Y3RpYmxl
T2JqZWN0SGVhcENlbGxUeXBlLmdldCgpLCAke2l0ZXJhdG9yTmFtZX0pOworICAgICAgICAgICAg
c3BhY2VzLm1fc3Vic3BhY2VGb3Ike2l0ZXJhdG9yTmFtZX0gPSBtYWtlVW5pcXVlPElzb1N1YnNw
YWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFw
Q2VsbFR5cGUoKSwgJHtpdGVyYXRvck5hbWV9KTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAg
c3BhY2VzLm1fc3Vic3BhY2VGb3Ike2l0ZXJhdG9yTmFtZX0gPSBtYWtlVW5pcXVlPElzb1N1YnNw
YWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uY2VsbEhlYXBDZWxsVHlwZSwgJHtp
dGVyYXRvck5hbWV9KTsKKyAgICAgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yJHtpdGVyYXRv
ck5hbWV9ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVh
cCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCAke2l0ZXJhdG9yTmFtZX0pOwogICAgICAgICBhdXRv
KiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yJHtpdGVyYXRvck5hbWV9LmdldCgpOwogSUdO
T1JFX1dBUk5JTkdTX0JFR0lOKFwidW5yZWFjaGFibGUtY29kZVwiKQogSUdOT1JFX1dBUk5JTkdT
X0JFR0lOKFwidGF1dG9sb2dpY2FsLWNvbXBhcmVcIikKQEAgLTc1MjksNyArNzUyOSw3IEBAIHN1
YiBHZW5lcmF0ZVByb3RvdHlwZURlY2xhcmF0aW9uCiAgICAgcHVzaChAJG91dHB1dEFycmF5LCAi
ICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSlcbiIp
OwogICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICB7XG4iKTsKICAgICBwdXNoKEAkb3V0cHV0
QXJyYXksICIgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKCR7cHJv
dG90eXBlQ2xhc3NOYW1lfSwgQmFzZSk7XG4iKTsKLSAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIg
ICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTtcbiIpOworICAgIHB1c2goQCRvdXRw
dXRBcnJheSwgIiAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7XG4iKTsKICAg
ICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgfVxuIik7CiAKICAgICBwdXNoKEAkb3V0cHV0QXJy
YXksICIgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYg
dm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3Rv
dHlwZSlcbiIpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTRE9NV2luZG93LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTRE9NV2luZG93LmgJKHJldmlzaW9uIDI4NjA4MSkKKysrIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU0RPTVdpbmRvdy5oCSh3b3JraW5nIGNv
cHkpCkBAIC04NSw3ICs4NSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFj
ZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJU
X0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU0RPTVdpbmRvd1Byb3RvdHlwZSwgQmFzZSk7Ci0gICAg
ICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFp
bk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRl
U3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpJbmRleDogU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNEZWRp
Y2F0ZWRXb3JrZXJHbG9iYWxTY29wZS5oCShyZXZpc2lvbiAyODYwODEpCisrKyBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29w
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC04Miw3ICs4Miw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMg
SlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAgICAg
ICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU0RlZGljYXRlZFdvcmtlckds
b2JhbFNjb3BlUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVj
dFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAg
ICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpT
Qzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkK
ICAgICB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNF
eHBvc2VkU3Rhci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTRXhwb3NlZFN0YXIuY3BwCShyZXZpc2lvbiAyODYwODEpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNFeHBvc2VkU3Rhci5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTcxLDcgKzcxLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklz
b1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJ
Q19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTRXhwb3NlZFN0YXJQcm90b3R5cGUsIEJh
c2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVy
biAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1
cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKQEAgLTIzNiw5ICsyMzYs
OSBAQCBKU0M6Oklzb1N1YnNwYWNlKiBKU0V4cG9zZWRTdGFyOjpzdWJzcGFjCiAgICAgICAgIHJl
dHVybiBzcGFjZTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNE
ZXN0cnVjdGlibGVPYmplY3QsIEpTRXhwb3NlZFN0YXI+IHx8ICFKU0V4cG9zZWRTdGFyOjpuZWVk
c0Rlc3RydWN0aW9uKTsKICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6
SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTRXhwb3NlZFN0YXI+KQotICAgICAgICBzcGFjZXMubV9z
dWJzcGFjZUZvckV4cG9zZWRTdGFyID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQ
QUNFX0lOSVQodm0uaGVhcCwgKnZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSwgSlNF
eHBvc2VkU3Rhcik7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yRXhwb3NlZFN0YXIgPSBt
YWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0
cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwgSlNFeHBvc2VkU3Rhcik7CiAgICAgZWxzZQot
ICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvckV4cG9zZWRTdGFyID0gbWFrZVVuaXF1ZTxJc29T
dWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmNlbGxIZWFwQ2VsbFR5cGUs
IEpTRXhwb3NlZFN0YXIpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvckV4cG9zZWRTdGFy
ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0u
Y2VsbEhlYXBDZWxsVHlwZSgpLCBKU0V4cG9zZWRTdGFyKTsKICAgICBhdXRvKiBzcGFjZSA9IHNw
YWNlcy5tX3N1YnNwYWNlRm9yRXhwb3NlZFN0YXIuZ2V0KCk7CiBJR05PUkVfV0FSTklOR1NfQkVH
SU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2lj
YWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNFeHBvc2VkVG9Xb3JrZXJBbmRXaW5kb3cuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU0V4cG9zZWRUb1dvcmtlckFuZFdpbmRv
dy5jcHAJKHJldmlzaW9uIDI4NjA4MSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU0V4cG9zZWRUb1dvcmtlckFuZFdpbmRvdy5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTExMiw3ICsxMTIsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2Uq
IHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9J
U09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNFeHBvc2VkVG9Xb3JrZXJBbmRXaW5kb3dQcm90b3R5cGUs
IEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJl
dHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1
Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKQEAgLTI1Miw5ICsy
NTIsOSBAQCBKU0M6Oklzb1N1YnNwYWNlKiBKU0V4cG9zZWRUb1dvcmtlckFuZFdpCiAgICAgICAg
IHJldHVybiBzcGFjZTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6
SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTRXhwb3NlZFRvV29ya2VyQW5kV2luZG93PiB8fCAhSlNF
eHBvc2VkVG9Xb3JrZXJBbmRXaW5kb3c6Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0
ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNFeHBv
c2VkVG9Xb3JrZXJBbmRXaW5kb3c+KQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvckV4cG9z
ZWRUb1dvcmtlckFuZFdpbmRvdyA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFD
RV9JTklUKHZtLmhlYXAsICp2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUsIEpTRXhw
b3NlZFRvV29ya2VyQW5kV2luZG93KTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JFeHBv
c2VkVG9Xb3JrZXJBbmRXaW5kb3cgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BB
Q0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwgSlNF
eHBvc2VkVG9Xb3JrZXJBbmRXaW5kb3cpOwogICAgIGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vi
c3BhY2VGb3JFeHBvc2VkVG9Xb3JrZXJBbmRXaW5kb3cgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNl
PiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uY2VsbEhlYXBDZWxsVHlwZSwgSlNFeHBv
c2VkVG9Xb3JrZXJBbmRXaW5kb3cpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvckV4cG9z
ZWRUb1dvcmtlckFuZFdpbmRvdyA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFD
RV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNFeHBvc2VkVG9Xb3JrZXJB
bmRXaW5kb3cpOwogICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JFeHBvc2Vk
VG9Xb3JrZXJBbmRXaW5kb3cuZ2V0KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hh
YmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIp
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNQYWludFdv
cmtsZXRHbG9iYWxTY29wZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmgJKHJldmlzaW9uIDI4
NjA4MSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1BhaW50
V29ya2xldEdsb2JhbFNjb3BlLmgJKHdvcmtpbmcgY29weSkKQEAgLTgyLDcgKzgyLDcgQEAgcHVi
bGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2
bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpT
UGFpbnRXb3JrbGV0R2xvYmFsU2NvcGVQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4g
JnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFj
ZSgpOwogICAgIH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShK
U0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFs
dWUgcHJvdG90eXBlKQogICAgIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1NlcnZpY2VXb3JrZXJHbG9i
YWxTY29wZS5oCShyZXZpc2lvbiAyODYwODEpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUuaAkod29ya2luZyBjb3B5
KQpAQCAtODIsNyArODIsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2Uq
IHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9J
U09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGVQcm90b3R5cGUs
IEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJl
dHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1
Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1NoYXJlZFdvcmtlckdsb2JhbFNj
b3BlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTU2hhcmVkV29ya2VyR2xvYmFsU2NvcGUuaAkocmV2aXNpb24gMjg2MDgxKQorKysgU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTU2hhcmVkV29ya2VyR2xvYmFs
U2NvcGUuaAkod29ya2luZyBjb3B5KQpAQCAtODIsNyArODIsNyBAQCBwdWJsaWM6CiAgICAgc3Rh
dGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAg
ICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNTaGFyZWRXb3JrZXJH
bG9iYWxTY29wZVByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmpl
Y3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQog
ICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBK
U0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUp
CiAgICAgewpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdENFUmVhY3Rpb25zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q0VSZWFjdGlvbnMuY3BwCShyZXZpc2lvbiAyODYwODEp
CisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q0VSZWFj
dGlvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05MSw3ICs5MSw3IEBAIHB1YmxpYzoKICAgICBz
dGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewog
ICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3RDRVJlYWN0
aW9uc1Byb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFj
ZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0
YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAg
ewpAQCAtNDM4LDkgKzQzOCw5IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdENFUmVhY3Rpb25z
OjpzdWIKICAgICAgICAgcmV0dXJuIHNwYWNlOwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19i
YXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0Q0VSZWFjdGlvbnM+IHx8
ICFKU1Rlc3RDRVJlYWN0aW9uczo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3RleHBy
IChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RDRVJl
YWN0aW9ucz4pCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdENFUmVhY3Rpb25zID0g
bWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmRl
c3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSwgSlNUZXN0Q0VSZWFjdGlvbnMpOworICAgICAg
ICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RDRVJlYWN0aW9ucyA9IG1ha2VVbmlxdWU8SXNvU3Vi
c3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhl
YXBDZWxsVHlwZSgpLCBKU1Rlc3RDRVJlYWN0aW9ucyk7CiAgICAgZWxzZQotICAgICAgICBzcGFj
ZXMubV9zdWJzcGFjZUZvclRlc3RDRVJlYWN0aW9ucyA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+
IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5jZWxsSGVhcENlbGxUeXBlLCBKU1Rlc3RD
RVJlYWN0aW9ucyk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdENFUmVhY3Rpb25z
ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0u
Y2VsbEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RDRVJlYWN0aW9ucyk7CiAgICAgYXV0byogc3BhY2Ug
PSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RDRVJlYWN0aW9ucy5nZXQoKTsKIElHTk9SRV9XQVJO
SU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRh
dXRvbG9naWNhbC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q0VSZWFjdGlv
bnNTdHJpbmdpZmllci5jcHAJKHJldmlzaW9uIDI4NjA4MSkKKysrIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNzUsNyArNzUsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6
SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RB
VElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0Q0VSZWFjdGlvbnNTdHJpbmdp
ZmllclByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFj
ZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0
YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAg
ewpAQCAtMjY0LDkgKzI2NCw5IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdENFUmVhY3Rpb25z
U3RyaW4KICAgICAgICAgcmV0dXJuIHNwYWNlOwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19i
YXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0Q0VSZWFjdGlvbnNTdHJp
bmdpZmllcj4gfHwgIUpTVGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXI6Om5lZWRzRGVzdHJ1Y3Rp
b24pOwogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0
aWJsZU9iamVjdCwgSlNUZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllcj4pCi0gICAgICAgIHNwYWNl
cy5tX3N1YnNwYWNlRm9yVGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXIgPSBtYWtlVW5pcXVlPElz
b1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uZGVzdHJ1Y3RpYmxlT2Jq
ZWN0SGVhcENlbGxUeXBlLCBKU1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyKTsKKyAgICAgICAg
c3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllciA9IG1ha2VVbmlx
dWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJs
ZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyKTsKICAg
ICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdENFUmVhY3Rpb25zU3RyaW5n
aWZpZXIgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFw
LCAqdm0uY2VsbEhlYXBDZWxsVHlwZSwgSlNUZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllcik7Cisg
ICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXIgPSBt
YWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxs
SGVhcENlbGxUeXBlKCksIEpTVGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXIpOwogICAgIGF1dG8q
IHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllci5n
ZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVf
V0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDYWxsVHJhY2VyLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2Fs
bFRyYWNlci5jcHAJKHJldmlzaW9uIDI4NjA4MSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDYWxsVHJhY2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
OTcsNyArOTcsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNw
YWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VC
U1BBQ0VfU0hBUkFCTEUoSlNUZXN0Q2FsbFRyYWNlclByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAg
IHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9i
amVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3Ry
dWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpT
Qzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAtNTEzLDkgKzUxMyw5IEBAIEpTQzo6SXNv
U3Vic3BhY2UqIEpTVGVzdENhbGxUcmFjZXI6OnN1YnMKICAgICAgICAgcmV0dXJuIHNwYWNlOwog
ICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9i
amVjdCwgSlNUZXN0Q2FsbFRyYWNlcj4gfHwgIUpTVGVzdENhbGxUcmFjZXI6Om5lZWRzRGVzdHJ1
Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3Ry
dWN0aWJsZU9iamVjdCwgSlNUZXN0Q2FsbFRyYWNlcj4pCi0gICAgICAgIHNwYWNlcy5tX3N1YnNw
YWNlRm9yVGVzdENhbGxUcmFjZXIgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BB
Q0VfSU5JVCh2bS5oZWFwLCAqdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLCBKU1Rl
c3RDYWxsVHJhY2VyKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0Q2FsbFRyYWNl
ciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZt
LmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RDYWxsVHJhY2VyKTsKICAg
ICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdENhbGxUcmFjZXIgPSBtYWtl
VW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uY2VsbEhl
YXBDZWxsVHlwZSwgSlNUZXN0Q2FsbFRyYWNlcik7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNl
Rm9yVGVzdENhbGxUcmFjZXIgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0Vf
SU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCksIEpTVGVzdENhbGxUcmFjZXIpOwog
ICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0Q2FsbFRyYWNlci5nZXQo
KTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVfV0FS
TklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1
Y3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yLmNwcAkocmV2aXNpb24g
Mjg2MDgxKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjQs
NyArNjQsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNl
Rm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BB
Q0VfU0hBUkFCTEUoSlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3JQcm90b3R5cGUs
IEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJl
dHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1
Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKQEAgLTE3Niw5ICsx
NzYsOSBAQCBKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3RDbGFzc1dpdGhKU0J1aWx0CiAgICAgICAg
IHJldHVybiBzcGFjZTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6
SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9y
PiB8fCAhSlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3I6Om5lZWRzRGVzdHJ1Y3Rp
b24pOwogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0
aWJsZU9iamVjdCwgSlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3I+KQotICAgICAg
ICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3RvciA9
IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5k
ZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUsIEpTVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNv
bnN0cnVjdG9yKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0Q2xhc3NXaXRoSlNC
dWlsdGluQ29uc3RydWN0b3IgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0Vf
SU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0
Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3IpOwogICAgIGVsc2UKLSAgICAgICAgc3BhY2Vz
Lm1fc3Vic3BhY2VGb3JUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3IgPSBtYWtlVW5p
cXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uY2VsbEhlYXBD
ZWxsVHlwZSwgSlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3IpOworICAgICAgICBz
cGFjZXMubV9zdWJzcGFjZUZvclRlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3RvciA9IG1h
a2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxI
ZWFwQ2VsbFR5cGUoKSwgSlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3IpOwogICAg
IGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0Q2xhc3NXaXRoSlNCdWlsdGlu
Q29uc3RydWN0b3IuZ2V0KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNv
ZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q29uZGl0aW9u
YWxJbmNsdWRlcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdENvbmRpdGlvbmFsSW5jbHVkZXMuY3BwCShyZXZpc2lvbiAyODYw
ODEpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q29u
ZGl0aW9uYWxJbmNsdWRlcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyNyw3ICsxMjcsNyBAQCBw
dWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0m
IHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUo
SlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlc1Byb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVy
biAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNw
YWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJl
KEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNW
YWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAtNzg5LDkgKzc4OSw5IEBAIEpTQzo6SXNvU3Vic3Bh
Y2UqIEpTVGVzdENvbmRpdGlvbmFsSW5jbHUKICAgICAgICAgcmV0dXJuIHNwYWNlOwogICAgIHN0
YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwg
SlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlcz4gfHwgIUpTVGVzdENvbmRpdGlvbmFsSW5jbHVkZXM6
Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8
SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlcz4pCi0g
ICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdENvbmRpdGlvbmFsSW5jbHVkZXMgPSBtYWtl
VW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uZGVzdHJ1
Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLCBKU1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzKTsKKyAg
ICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0Q29uZGl0aW9uYWxJbmNsdWRlcyA9IG1ha2VV
bmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0
aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzKTsKICAg
ICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdENvbmRpdGlvbmFsSW5jbHVk
ZXMgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAq
dm0uY2VsbEhlYXBDZWxsVHlwZSwgSlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlcyk7CisgICAgICAg
IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdENvbmRpdGlvbmFsSW5jbHVkZXMgPSBtYWtlVW5pcXVl
PElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxU
eXBlKCksIEpTVGVzdENvbmRpdGlvbmFsSW5jbHVkZXMpOwogICAgIGF1dG8qIHNwYWNlID0gc3Bh
Y2VzLm1fc3Vic3BhY2VGb3JUZXN0Q29uZGl0aW9uYWxJbmNsdWRlcy5nZXQoKTsKIElHTk9SRV9X
QVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4o
InRhdXRvbG9naWNhbC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RDb25kaXRpb25hbGx5UmVhZFdyaXRlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q29uZGl0
aW9uYWxseVJlYWRXcml0ZS5jcHAJKHJldmlzaW9uIDI4NjA4MSkKKysrIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDb25kaXRpb25hbGx5UmVhZFdyaXRlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtOTgsNyArOTgsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpT
Qzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAg
U1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0Q29uZGl0aW9uYWxseVJl
YWRXcml0ZVByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RT
cGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAg
IHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6
OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAg
ICAgewpAQCAtNjExLDkgKzYxMSw5IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdENvbmRpdGlv
bmFsbHlSZWEKICAgICAgICAgcmV0dXJuIHNwYWNlOwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjpp
c19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0Q29uZGl0aW9uYWxs
eVJlYWRXcml0ZT4gfHwgIUpTVGVzdENvbmRpdGlvbmFsbHlSZWFkV3JpdGU6Om5lZWRzRGVzdHJ1
Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3Ry
dWN0aWJsZU9iamVjdCwgSlNUZXN0Q29uZGl0aW9uYWxseVJlYWRXcml0ZT4pCi0gICAgICAgIHNw
YWNlcy5tX3N1YnNwYWNlRm9yVGVzdENvbmRpdGlvbmFsbHlSZWFkV3JpdGUgPSBtYWtlVW5pcXVl
PElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uZGVzdHJ1Y3RpYmxl
T2JqZWN0SGVhcENlbGxUeXBlLCBKU1Rlc3RDb25kaXRpb25hbGx5UmVhZFdyaXRlKTsKKyAgICAg
ICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0Q29uZGl0aW9uYWxseVJlYWRXcml0ZSA9IG1ha2VV
bmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0
aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RDb25kaXRpb25hbGx5UmVhZFdyaXRlKTsK
ICAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdENvbmRpdGlvbmFsbHlS
ZWFkV3JpdGUgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5o
ZWFwLCAqdm0uY2VsbEhlYXBDZWxsVHlwZSwgSlNUZXN0Q29uZGl0aW9uYWxseVJlYWRXcml0ZSk7
CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdENvbmRpdGlvbmFsbHlSZWFkV3JpdGUg
PSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5j
ZWxsSGVhcENlbGxUeXBlKCksIEpTVGVzdENvbmRpdGlvbmFsbHlSZWFkV3JpdGUpOwogICAgIGF1
dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0Q29uZGl0aW9uYWxseVJlYWRXcml0
ZS5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJR05P
UkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RET01KSVQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RET01K
SVQuY3BwCShyZXZpc2lvbiAyODYwODEpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0RE9NSklULmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDgxLDcgKzQ4
MSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3Io
SlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9T
SEFSQUJMRShKU1Rlc3RET01KSVRQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZt
LnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgp
OwogICAgIH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6
OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUg
cHJvdG90eXBlKQogICAgIHsKQEAgLTEyNTIsOSArMTI1Miw5IEBAIEpTQzo6SXNvU3Vic3BhY2Uq
IEpTVGVzdERPTUpJVDo6c3Vic3BhY2UKICAgICAgICAgcmV0dXJuIHNwYWNlOwogICAgIHN0YXRp
Y19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNU
ZXN0RE9NSklUPiB8fCAhSlNUZXN0RE9NSklUOjpuZWVkc0Rlc3RydWN0aW9uKTsKICAgICBpZiBj
b25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpT
VGVzdERPTUpJVD4pCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdERPTUpJVCA9IG1h
a2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5kZXN0
cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUsIEpTVGVzdERPTUpJVCk7CisgICAgICAgIHNwYWNl
cy5tX3N1YnNwYWNlRm9yVGVzdERPTUpJVCA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19T
VUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgp
LCBKU1Rlc3RET01KSVQpOwogICAgIGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JU
ZXN0RE9NSklUID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0u
aGVhcCwgKnZtLmNlbGxIZWFwQ2VsbFR5cGUsIEpTVGVzdERPTUpJVCk7CisgICAgICAgIHNwYWNl
cy5tX3N1YnNwYWNlRm9yVGVzdERPTUpJVCA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19T
VUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0RE9NSklU
KTsKICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdERPTUpJVC5nZXQo
KTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVfV0FS
TklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3REZWZhdWx0VG9KU09OLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RGVm
YXVsdFRvSlNPTi5jcHAJKHJldmlzaW9uIDI4NjA4MSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3REZWZhdWx0VG9KU09OLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTI0LDcgKzEyNCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFj
ZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJU
X0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3REZWZhdWx0VG9KU09OUHJvdG90eXBlLCBCYXNl
KTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4g
JnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJl
KiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC04MDgsOSArODA4LDkg
QEAgSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0RGVmYXVsdFRvSlNPTjo6cwogICAgICAgICByZXR1
cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVz
dHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3REZWZhdWx0VG9KU09OPiB8fCAhSlNUZXN0RGVmYXVsdFRv
SlNPTjo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vf
b2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3REZWZhdWx0VG9KU09OPikKLSAg
ICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0RGVmYXVsdFRvSlNPTiA9IG1ha2VVbmlxdWU8
SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5kZXN0cnVjdGlibGVP
YmplY3RIZWFwQ2VsbFR5cGUsIEpTVGVzdERlZmF1bHRUb0pTT04pOworICAgICAgICBzcGFjZXMu
bV9zdWJzcGFjZUZvclRlc3REZWZhdWx0VG9KU09OID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4g
SVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxU
eXBlKCksIEpTVGVzdERlZmF1bHRUb0pTT04pOwogICAgIGVsc2UKLSAgICAgICAgc3BhY2VzLm1f
c3Vic3BhY2VGb3JUZXN0RGVmYXVsdFRvSlNPTiA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElT
T19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5jZWxsSGVhcENlbGxUeXBlLCBKU1Rlc3REZWZh
dWx0VG9KU09OKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0RGVmYXVsdFRvSlNP
TiA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZt
LmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0RGVmYXVsdFRvSlNPTik7CiAgICAgYXV0byogc3Bh
Y2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3REZWZhdWx0VG9KU09OLmdldCgpOwogSUdOT1JF
X1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKIElHTk9SRV9XQVJOSU5HU19CRUdJ
TigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZC5jcHAJKHJldmlzaW9uIDI4NjA4MSkK
KysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3REZWZhdWx0
VG9KU09ORmlsdGVyZWRCeUV4cG9zZWQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NSw3ICs3NSw3
IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlND
OjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFS
QUJMRShKU1Rlc3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWRQcm90b3R5cGUsIEJhc2Up
OwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAm
dm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUq
IGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKQEAgLTI3MCw5ICsyNzAsOSBA
QCBKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3REZWZhdWx0VG9KU09ORmlsCiAgICAgICAgIHJldHVy
biBzcGFjZTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0
cnVjdGlibGVPYmplY3QsIEpTVGVzdERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZD4gfHwg
IUpTVGVzdERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZDo6bmVlZHNEZXN0cnVjdGlvbik7
CiAgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxl
T2JqZWN0LCBKU1Rlc3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWQ+KQotICAgICAgICBz
cGFjZXMubV9zdWJzcGFjZUZvclRlc3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWQgPSBt
YWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uZGVz
dHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLCBKU1Rlc3REZWZhdWx0VG9KU09ORmlsdGVyZWRC
eUV4cG9zZWQpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3REZWZhdWx0VG9KU09O
RmlsdGVyZWRCeUV4cG9zZWQgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0Vf
SU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0
RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkKTsKICAgICBlbHNlCi0gICAgICAgIHNwYWNl
cy5tX3N1YnNwYWNlRm9yVGVzdERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZCA9IG1ha2VV
bmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5jZWxsSGVh
cENlbGxUeXBlLCBKU1Rlc3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWQpOworICAgICAg
ICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWQg
PSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5j
ZWxsSGVhcENlbGxUeXBlKCksIEpTVGVzdERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZCk7
CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3REZWZhdWx0VG9KU09O
RmlsdGVyZWRCeUV4cG9zZWQuZ2V0KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hh
YmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIp
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RGVm
YXVsdFRvSlNPTkluZGlyZWN0SW5oZXJpdGFuY2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3REZWZhdWx0VG9KU09OSW5kaXJl
Y3RJbmhlcml0YW5jZS5jcHAJKHJldmlzaW9uIDI4NjA4MSkKKysrIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3REZWZhdWx0VG9KU09OSW5kaXJlY3RJbmhlcml0
YW5jZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYyLDcgKzYyLDcgQEAgcHVibGljOgogICAgIHN0
YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAg
ICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdERlZmF1bHRU
b0pTT05JbmRpcmVjdEluaGVyaXRhbmNlUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJu
ICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3Bh
Y2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUo
SlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1Zh
bHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC0xNjIsOSArMTYyLDkgQEAgSlNDOjpJc29TdWJzcGFj
ZSogSlNUZXN0RGVmYXVsdFRvSlNPTkluZAogICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAgc3Rh
dGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBK
U1Rlc3REZWZhdWx0VG9KU09OSW5kaXJlY3RJbmhlcml0YW5jZT4gfHwgIUpTVGVzdERlZmF1bHRU
b0pTT05JbmRpcmVjdEluaGVyaXRhbmNlOjpuZWVkc0Rlc3RydWN0aW9uKTsKICAgICBpZiBjb25z
dGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVz
dERlZmF1bHRUb0pTT05JbmRpcmVjdEluaGVyaXRhbmNlPikKLSAgICAgICAgc3BhY2VzLm1fc3Vi
c3BhY2VGb3JUZXN0RGVmYXVsdFRvSlNPTkluZGlyZWN0SW5oZXJpdGFuY2UgPSBtYWtlVW5pcXVl
PElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uZGVzdHJ1Y3RpYmxl
T2JqZWN0SGVhcENlbGxUeXBlLCBKU1Rlc3REZWZhdWx0VG9KU09OSW5kaXJlY3RJbmhlcml0YW5j
ZSk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdERlZmF1bHRUb0pTT05JbmRpcmVj
dEluaGVyaXRhbmNlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQo
dm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCksIEpTVGVzdERlZmF1
bHRUb0pTT05JbmRpcmVjdEluaGVyaXRhbmNlKTsKICAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5t
X3N1YnNwYWNlRm9yVGVzdERlZmF1bHRUb0pTT05JbmRpcmVjdEluaGVyaXRhbmNlID0gbWFrZVVu
aXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmNlbGxIZWFw
Q2VsbFR5cGUsIEpTVGVzdERlZmF1bHRUb0pTT05JbmRpcmVjdEluaGVyaXRhbmNlKTsKKyAgICAg
ICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0RGVmYXVsdFRvSlNPTkluZGlyZWN0SW5oZXJpdGFu
Y2UgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2
bS5jZWxsSGVhcENlbGxUeXBlKCksIEpTVGVzdERlZmF1bHRUb0pTT05JbmRpcmVjdEluaGVyaXRh
bmNlKTsKICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdERlZmF1bHRU
b0pTT05JbmRpcmVjdEluaGVyaXRhbmNlLmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1
bnJlYWNoYWJsZS1jb2RlIikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNv
bXBhcmUiKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdERlZmF1bHRUb0pTT05Jbmhlcml0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RGVmYXVsdFRvSlNPTkluaGVyaXQuY3Bw
CShyZXZpc2lvbiAyODYwODEpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0RGVmYXVsdFRvSlNPTkluaGVyaXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04
OSw3ICs4OSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3Bh
Y2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJT
UEFDRV9TSEFSQUJMRShKU1Rlc3REZWZhdWx0VG9KU09OSW5oZXJpdFByb3RvdHlwZSwgQmFzZSk7
Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2
bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSog
Y3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAtMjkyLDkgKzI5Miw5IEBA
IEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdERlZmF1bHRUb0pTT05JbmgKICAgICAgICAgcmV0dXJu
IHNwYWNlOwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3Ry
dWN0aWJsZU9iamVjdCwgSlNUZXN0RGVmYXVsdFRvSlNPTkluaGVyaXQ+IHx8ICFKU1Rlc3REZWZh
dWx0VG9KU09OSW5oZXJpdDo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3RleHByIChz
dGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3REZWZhdWx0
VG9KU09OSW5oZXJpdD4pCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdERlZmF1bHRU
b0pTT05Jbmhlcml0ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQo
dm0uaGVhcCwgKnZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSwgSlNUZXN0RGVmYXVs
dFRvSlNPTkluaGVyaXQpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3REZWZhdWx0
VG9KU09OSW5oZXJpdCA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklU
KHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3REZWZh
dWx0VG9KU09OSW5oZXJpdCk7CiAgICAgZWxzZQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZv
clRlc3REZWZhdWx0VG9KU09OSW5oZXJpdCA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19T
VUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5jZWxsSGVhcENlbGxUeXBlLCBKU1Rlc3REZWZhdWx0
VG9KU09OSW5oZXJpdCk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdERlZmF1bHRU
b0pTT05Jbmhlcml0ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQo
dm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3REZWZhdWx0VG9KU09OSW5oZXJp
dCk7CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3REZWZhdWx0VG9K
U09OSW5oZXJpdC5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29k
ZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3REZWZhdWx0VG9K
U09OSW5oZXJpdEZpbmFsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RGVmYXVsdFRvSlNPTkluaGVyaXRGaW5hbC5jcHAJKHJl
dmlzaW9uIDI4NjA4MSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3REZWZhdWx0VG9KU09OSW5oZXJpdEZpbmFsLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
OTEsNyArOTEsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNw
YWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VC
U1BBQ0VfU0hBUkFCTEUoSlNUZXN0RGVmYXVsdFRvSlNPTkluaGVyaXRGaW5hbFByb3RvdHlwZSwg
QmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0
dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVj
dHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAtMzMyLDkgKzMz
Miw5IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdERlZmF1bHRUb0pTT05JbmgKICAgICAgICAg
cmV0dXJuIHNwYWNlOwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpK
U0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0RGVmYXVsdFRvSlNPTkluaGVyaXRGaW5hbD4gfHwg
IUpTVGVzdERlZmF1bHRUb0pTT05Jbmhlcml0RmluYWw6Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAg
IGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVj
dCwgSlNUZXN0RGVmYXVsdFRvSlNPTkluaGVyaXRGaW5hbD4pCi0gICAgICAgIHNwYWNlcy5tX3N1
YnNwYWNlRm9yVGVzdERlZmF1bHRUb0pTT05Jbmhlcml0RmluYWwgPSBtYWtlVW5pcXVlPElzb1N1
YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0
SGVhcENlbGxUeXBlLCBKU1Rlc3REZWZhdWx0VG9KU09OSW5oZXJpdEZpbmFsKTsKKyAgICAgICAg
c3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0RGVmYXVsdFRvSlNPTkluaGVyaXRGaW5hbCA9IG1ha2VV
bmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0
aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3REZWZhdWx0VG9KU09OSW5oZXJpdEZpbmFs
KTsKICAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdERlZmF1bHRUb0pT
T05Jbmhlcml0RmluYWwgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5J
VCh2bS5oZWFwLCAqdm0uY2VsbEhlYXBDZWxsVHlwZSwgSlNUZXN0RGVmYXVsdFRvSlNPTkluaGVy
aXRGaW5hbCk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdERlZmF1bHRUb0pTT05J
bmhlcml0RmluYWwgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2
bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCksIEpTVGVzdERlZmF1bHRUb0pTT05Jbmhlcml0
RmluYWwpOwogICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0RGVmYXVs
dFRvSlNPTkluaGVyaXRGaW5hbC5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFj
aGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJl
IikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RE
ZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RGVsZWdhdGVUb1NoYXJl
ZFN5bnRoZXRpY0F0dHJpYnV0ZS5jcHAJKHJldmlzaW9uIDI4NjA4MSkKKysrIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhl
dGljQXR0cmlidXRlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzAsNyArNzAsNyBAQCBwdWJsaWM6
CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQog
ICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0
RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZVByb3RvdHlwZSwgQmFzZSk7Ci0gICAg
ICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFp
bk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRl
U3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAtMjQ2LDkgKzI0Niw5IEBAIEpTQzo6
SXNvU3Vic3BhY2UqIEpTVGVzdERlbGVnYXRlVG9TaGFyZWQKICAgICAgICAgcmV0dXJuIHNwYWNl
OwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJs
ZU9iamVjdCwgSlNUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZT4gfHwgIUpT
VGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGU6Om5lZWRzRGVzdHJ1Y3Rpb24p
OwogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJs
ZU9iamVjdCwgSlNUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZT4pCi0gICAg
ICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRy
aWJ1dGUgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFw
LCAqdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLCBKU1Rlc3REZWxlZ2F0ZVRvU2hh
cmVkU3ludGhldGljQXR0cmlidXRlKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0
RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3Bh
Y2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBD
ZWxsVHlwZSgpLCBKU1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlKTsKICAg
ICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdERlbGVnYXRlVG9TaGFyZWRT
eW50aGV0aWNBdHRyaWJ1dGUgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0Vf
SU5JVCh2bS5oZWFwLCAqdm0uY2VsbEhlYXBDZWxsVHlwZSwgSlNUZXN0RGVsZWdhdGVUb1NoYXJl
ZFN5bnRoZXRpY0F0dHJpYnV0ZSk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdERl
bGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGUgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNl
PiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCksIEpTVGVz
dERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGUpOwogICAgIGF1dG8qIHNwYWNlID0g
c3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0
ZS5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJR05P
UkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3REb21haW5TZWN1cml0eS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdERvbWFpblNlY3VyaXR5LmNwcAkocmV2aXNpb24gMjg2MDgxKQorKysgU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERvbWFpblNlY3VyaXR5LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtODAsNyArODAsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNv
U3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElD
X0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0RG9tYWluU2VjdXJpdHlQcm90b3R5
cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAg
IHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KICAgICBzdGF0aWMgSlNDOjpT
dHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKQEAgLTMyMCw5
ICszMjAsOSBAQCBKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3REb21haW5TZWN1cml0eTo6CiAgICAg
ICAgIHJldHVybiBzcGFjZTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpT
Qzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdERvbWFpblNlY3VyaXR5PiB8fCAhSlNUZXN0
RG9tYWluU2VjdXJpdHk6Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhwciAoc3Rk
Ojppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0RG9tYWluU2Vj
dXJpdHk+KQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3REb21haW5TZWN1cml0eSA9
IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5k
ZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUsIEpTVGVzdERvbWFpblNlY3VyaXR5KTsKKyAg
ICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0RG9tYWluU2VjdXJpdHkgPSBtYWtlVW5pcXVl
PElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVP
YmplY3RIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0RG9tYWluU2VjdXJpdHkpOwogICAgIGVsc2UKLSAg
ICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0RG9tYWluU2VjdXJpdHkgPSBtYWtlVW5pcXVl
PElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uY2VsbEhlYXBDZWxs
VHlwZSwgSlNUZXN0RG9tYWluU2VjdXJpdHkpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZv
clRlc3REb21haW5TZWN1cml0eSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFD
RV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0RG9tYWluU2VjdXJp
dHkpOwogICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0RG9tYWluU2Vj
dXJpdHkuZ2V0KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQog
SUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RW5hYmxlZEJ5U2V0dGlu
Zy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdEVuYWJsZWRCeVNldHRpbmcuY3BwCShyZXZpc2lvbiAyODYwODEpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RW5hYmxlZEJ5U2V0dGlu
Zy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTkyLDcgKzkyLDcgQEAgcHVibGljOgogICAgIHN0YXRp
YyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAg
ICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdEVuYWJsZWRCeVNl
dHRpbmdQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3Bh
Y2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KICAgICBz
dGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAg
IHsKQEAgLTQ1OSw5ICs0NTksOSBAQCBKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3RFbmFibGVkQnlT
ZXR0aW5nCiAgICAgICAgIHJldHVybiBzcGFjZTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNf
YmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdEVuYWJsZWRCeVNldHRp
bmc+IHx8ICFKU1Rlc3RFbmFibGVkQnlTZXR0aW5nOjpuZWVkc0Rlc3RydWN0aW9uKTsKICAgICBp
ZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3Qs
IEpTVGVzdEVuYWJsZWRCeVNldHRpbmc+KQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRl
c3RFbmFibGVkQnlTZXR0aW5nID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNF
X0lOSVQodm0uaGVhcCwgKnZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSwgSlNUZXN0
RW5hYmxlZEJ5U2V0dGluZyk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEVuYWJs
ZWRCeVNldHRpbmcgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2
bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0RW5hYmxl
ZEJ5U2V0dGluZyk7CiAgICAgZWxzZQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RF
bmFibGVkQnlTZXR0aW5nID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lO
SVQodm0uaGVhcCwgKnZtLmNlbGxIZWFwQ2VsbFR5cGUsIEpTVGVzdEVuYWJsZWRCeVNldHRpbmcp
OworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RFbmFibGVkQnlTZXR0aW5nID0gbWFr
ZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhl
YXBDZWxsVHlwZSgpLCBKU1Rlc3RFbmFibGVkQnlTZXR0aW5nKTsKICAgICBhdXRvKiBzcGFjZSA9
IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEVuYWJsZWRCeVNldHRpbmcuZ2V0KCk7CiBJR05PUkVf
V0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lO
KCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0RW5hYmxlZEZvckNvbnRleHQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFbmFibGVkRm9y
Q29udGV4dC5jcHAJKHJldmlzaW9uIDI4NjA4MSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFbmFibGVkRm9yQ29udGV4dC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTY2LDcgKzY2LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNl
KiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRf
SVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdEVuYWJsZWRGb3JDb250ZXh0UHJvdG90eXBlLCBC
YXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1
cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0
dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC0xODYsOSArMTg2
LDkgQEAgSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0RW5hYmxlZEZvckNvbnRleAogICAgICAgICBy
ZXR1cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpT
RGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RFbmFibGVkRm9yQ29udGV4dD4gfHwgIUpTVGVzdEVu
YWJsZWRGb3JDb250ZXh0OjpuZWVkc0Rlc3RydWN0aW9uKTsKICAgICBpZiBjb25zdGV4cHIgKHN0
ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdEVuYWJsZWRG
b3JDb250ZXh0PikKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0RW5hYmxlZEZvckNv
bnRleHQgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFw
LCAqdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLCBKU1Rlc3RFbmFibGVkRm9yQ29u
dGV4dCk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEVuYWJsZWRGb3JDb250ZXh0
ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0u
ZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCksIEpTVGVzdEVuYWJsZWRGb3JDb250ZXh0
KTsKICAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEVuYWJsZWRGb3JD
b250ZXh0ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVh
cCwgKnZtLmNlbGxIZWFwQ2VsbFR5cGUsIEpTVGVzdEVuYWJsZWRGb3JDb250ZXh0KTsKKyAgICAg
ICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0RW5hYmxlZEZvckNvbnRleHQgPSBtYWtlVW5pcXVl
PElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxU
eXBlKCksIEpTVGVzdEVuYWJsZWRGb3JDb250ZXh0KTsKICAgICBhdXRvKiBzcGFjZSA9IHNwYWNl
cy5tX3N1YnNwYWNlRm9yVGVzdEVuYWJsZWRGb3JDb250ZXh0LmdldCgpOwogSUdOT1JFX1dBUk5J
TkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1
dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdEV2ZW50Q29uc3RydWN0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudENvbnN0cnVjdG9y
LmNwcAkocmV2aXNpb24gMjg2MDgxKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdEV2ZW50Q29uc3RydWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
NDcsNyArMTQ3LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJz
cGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NV
QlNQQUNFX1NIQVJBQkxFKEpTVGVzdEV2ZW50Q29uc3RydWN0b3JQcm90b3R5cGUsIEJhc2UpOwot
ICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0u
cGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNy
ZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKQEAgLTMyMSw5ICszMjEsOSBAQCBK
U0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3RFdmVudENvbnN0cnVjdG9yCiAgICAgICAgIHJldHVybiBz
cGFjZTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVj
dGlibGVPYmplY3QsIEpTVGVzdEV2ZW50Q29uc3RydWN0b3I+IHx8ICFKU1Rlc3RFdmVudENvbnN0
cnVjdG9yOjpuZWVkc0Rlc3RydWN0aW9uKTsKICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFz
ZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdEV2ZW50Q29uc3RydWN0b3I+
KQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RFdmVudENvbnN0cnVjdG9yID0gbWFr
ZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmRlc3Ry
dWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSwgSlNUZXN0RXZlbnRDb25zdHJ1Y3Rvcik7CisgICAg
ICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEV2ZW50Q29uc3RydWN0b3IgPSBtYWtlVW5pcXVl
PElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVP
YmplY3RIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0RXZlbnRDb25zdHJ1Y3Rvcik7CiAgICAgZWxzZQot
ICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RFdmVudENvbnN0cnVjdG9yID0gbWFrZVVu
aXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmNlbGxIZWFw
Q2VsbFR5cGUsIEpTVGVzdEV2ZW50Q29uc3RydWN0b3IpOworICAgICAgICBzcGFjZXMubV9zdWJz
cGFjZUZvclRlc3RFdmVudENvbnN0cnVjdG9yID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNP
X1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RFdmVu
dENvbnN0cnVjdG9yKTsKICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVz
dEV2ZW50Q29uc3RydWN0b3IuZ2V0KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hh
YmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIp
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZl
bnRUYXJnZXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RFdmVudFRhcmdldC5jcHAJKHJldmlzaW9uIDI4NjA4MSkKKysrIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudFRhcmdldC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTczLDcgKzczLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBK
U0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAg
IFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdEV2ZW50VGFyZ2V0UHJv
dG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAg
ICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpT
Qzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC0y
NjIsOSArMjYyLDkgQEAgSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0RXZlbnRUYXJnZXQ6OnN1Ygog
ICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2Zf
djxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RFdmVudFRhcmdldD4gfHwgIUpTVGVz
dEV2ZW50VGFyZ2V0OjpuZWVkc0Rlc3RydWN0aW9uKTsKICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6
aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdEV2ZW50VGFyZ2V0
PikKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0RXZlbnRUYXJnZXQgPSBtYWtlVW5p
cXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uZGVzdHJ1Y3Rp
YmxlT2JqZWN0SGVhcENlbGxUeXBlLCBKU1Rlc3RFdmVudFRhcmdldCk7CisgICAgICAgIHNwYWNl
cy5tX3N1YnNwYWNlRm9yVGVzdEV2ZW50VGFyZ2V0ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4g
SVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxU
eXBlKCksIEpTVGVzdEV2ZW50VGFyZ2V0KTsKICAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1
YnNwYWNlRm9yVGVzdEV2ZW50VGFyZ2V0ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NV
QlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmNlbGxIZWFwQ2VsbFR5cGUsIEpTVGVzdEV2ZW50VGFy
Z2V0KTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0RXZlbnRUYXJnZXQgPSBtYWtl
VW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVh
cENlbGxUeXBlKCksIEpTVGVzdEV2ZW50VGFyZ2V0KTsKICAgICBhdXRvKiBzcGFjZSA9IHNwYWNl
cy5tX3N1YnNwYWNlRm9yVGVzdEV2ZW50VGFyZ2V0LmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JF
R0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dp
Y2FsLWNvbXBhcmUiKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdEV4Y2VwdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV4Y2VwdGlvbi5jcHAJKHJldmlzaW9uIDI4NjA4
MSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFeGNl
cHRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02Niw3ICs2Niw3IEBAIHB1YmxpYzoKICAgICBz
dGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewog
ICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3RFeGNlcHRp
b25Qcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7
CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KICAgICBzdGF0
aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsK
QEAgLTE4Nyw5ICsxODcsOSBAQCBKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3RFeGNlcHRpb246OnN1
YnNwCiAgICAgICAgIHJldHVybiBzcGFjZTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFz
ZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdEV4Y2VwdGlvbj4gfHwgIUpT
VGVzdEV4Y2VwdGlvbjo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3RleHByIChzdGQ6
OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RFeGNlcHRpb24+
KQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RFeGNlcHRpb24gPSBtYWtlVW5pcXVl
PElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uZGVzdHJ1Y3RpYmxl
T2JqZWN0SGVhcENlbGxUeXBlLCBKU1Rlc3RFeGNlcHRpb24pOworICAgICAgICBzcGFjZXMubV9z
dWJzcGFjZUZvclRlc3RFeGNlcHRpb24gPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VC
U1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwg
SlNUZXN0RXhjZXB0aW9uKTsKICAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9y
VGVzdEV4Y2VwdGlvbiA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklU
KHZtLmhlYXAsICp2bS5jZWxsSGVhcENlbGxUeXBlLCBKU1Rlc3RFeGNlcHRpb24pOworICAgICAg
ICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RFeGNlcHRpb24gPSBtYWtlVW5pcXVlPElzb1N1YnNw
YWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCksIEpT
VGVzdEV4Y2VwdGlvbik7CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRl
c3RFeGNlcHRpb24uZ2V0KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNv
ZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2VuZXJhdGVB
ZGRPcGFxdWVSb290LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2VuZXJhdGVBZGRPcGFxdWVSb290LmNwcAkocmV2aXNpb24g
Mjg2MDgxKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dEdlbmVyYXRlQWRkT3BhcXVlUm9vdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY2LDcgKzY2LDcg
QEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6
OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJB
QkxFKEpTVGVzdEdlbmVyYXRlQWRkT3BhcXVlUm9vdFByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAg
IHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9i
amVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3Ry
dWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpT
Qzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAtMTg3LDkgKzE4Nyw5IEBAIEpTQzo6SXNv
U3Vic3BhY2UqIEpTVGVzdEdlbmVyYXRlQWRkT3BhcXUKICAgICAgICAgcmV0dXJuIHNwYWNlOwog
ICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9i
amVjdCwgSlNUZXN0R2VuZXJhdGVBZGRPcGFxdWVSb290PiB8fCAhSlNUZXN0R2VuZXJhdGVBZGRP
cGFxdWVSb290OjpuZWVkc0Rlc3RydWN0aW9uKTsKICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNf
YmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdEdlbmVyYXRlQWRkT3Bh
cXVlUm9vdD4pCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEdlbmVyYXRlQWRkT3Bh
cXVlUm9vdCA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhl
YXAsICp2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUsIEpTVGVzdEdlbmVyYXRlQWRk
T3BhcXVlUm9vdCk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEdlbmVyYXRlQWRk
T3BhcXVlUm9vdCA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZt
LmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RHZW5lcmF0
ZUFkZE9wYXF1ZVJvb3QpOwogICAgIGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JU
ZXN0R2VuZXJhdGVBZGRPcGFxdWVSb290ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NV
QlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmNlbGxIZWFwQ2VsbFR5cGUsIEpTVGVzdEdlbmVyYXRl
QWRkT3BhcXVlUm9vdCk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEdlbmVyYXRl
QWRkT3BhcXVlUm9vdCA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklU
KHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0R2VuZXJhdGVBZGRPcGFxdWVS
b290KTsKICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEdlbmVyYXRl
QWRkT3BhcXVlUm9vdC5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUt
Y29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RHZW5lcmF0
ZUlzUmVhY2hhYmxlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZS5jcHAJKHJldmlzaW9uIDI4
NjA4MSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RH
ZW5lcmF0ZUlzUmVhY2hhYmxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjYsNyArNjYsNyBAQCBw
dWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0m
IHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUo
SlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZVByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVy
biAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNw
YWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJl
KEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNW
YWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAtMTk3LDkgKzE5Nyw5IEBAIEpTQzo6SXNvU3Vic3Bh
Y2UqIEpTVGVzdEdlbmVyYXRlSXNSZWFjaGEKICAgICAgICAgcmV0dXJuIHNwYWNlOwogICAgIHN0
YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwg
SlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZT4gfHwgIUpTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGU6
Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8
SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZT4pCi0g
ICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEdlbmVyYXRlSXNSZWFjaGFibGUgPSBtYWtl
VW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uZGVzdHJ1
Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLCBKU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlKTsKKyAg
ICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZSA9IG1ha2VV
bmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0
aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlKTsKICAg
ICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEdlbmVyYXRlSXNSZWFjaGFi
bGUgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAq
dm0uY2VsbEhlYXBDZWxsVHlwZSwgSlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZSk7CisgICAgICAg
IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEdlbmVyYXRlSXNSZWFjaGFibGUgPSBtYWtlVW5pcXVl
PElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxU
eXBlKCksIEpTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGUpOwogICAgIGF1dG8qIHNwYWNlID0gc3Bh
Y2VzLm1fc3Vic3BhY2VGb3JUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZS5nZXQoKTsKIElHTk9SRV9X
QVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4o
InRhdXRvbG9naWNhbC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RHbG9iYWxPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2xvYmFsT2JqZWN0LmgJKHJl
dmlzaW9uIDI4NjA4MSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RHbG9iYWxPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtOTgsNyArOTgsNyBAQCBw
dWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0m
IHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUo
SlNUZXN0R2xvYmFsT2JqZWN0UHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5w
bGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsK
ICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpW
TSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHBy
b3RvdHlwZSkKICAgICB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0SW5kZXhlZFNldHRlck5vSWRlbnRpZmllci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEluZGV4ZWRTZXR0
ZXJOb0lkZW50aWZpZXIuY3BwCShyZXZpc2lvbiAyODYwODEpCisrKyBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW5kZXhlZFNldHRlck5vSWRlbnRpZmllci5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTY1LDcgKzY1LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBK
U0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAg
IFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdEluZGV4ZWRTZXR0ZXJO
b0lkZW50aWZpZXJQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2Jq
ZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0K
ICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwg
SlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBl
KQogICAgIHsKQEAgLTI3Niw5ICsyNzYsOSBAQCBKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3RJbmRl
eGVkU2V0dGVyTm9JCiAgICAgICAgIHJldHVybiBzcGFjZTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0
ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdEluZGV4ZWRT
ZXR0ZXJOb0lkZW50aWZpZXI+IHx8ICFKU1Rlc3RJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyOjpu
ZWVkc0Rlc3RydWN0aW9uKTsKICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpT
Qzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXI+
KQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RJbmRleGVkU2V0dGVyTm9JZGVudGlm
aWVyID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwg
KnZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSwgSlNUZXN0SW5kZXhlZFNldHRlck5v
SWRlbnRpZmllcik7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEluZGV4ZWRTZXR0
ZXJOb0lkZW50aWZpZXIgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5J
VCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0SW5k
ZXhlZFNldHRlck5vSWRlbnRpZmllcik7CiAgICAgZWxzZQotICAgICAgICBzcGFjZXMubV9zdWJz
cGFjZUZvclRlc3RJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyID0gbWFrZVVuaXF1ZTxJc29TdWJz
cGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmNlbGxIZWFwQ2VsbFR5cGUsIEpT
VGVzdEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXIpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFj
ZUZvclRlc3RJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFj
ZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU1Rl
c3RJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyKTsKICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5t
X3N1YnNwYWNlRm9yVGVzdEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXIuZ2V0KCk7CiBJR05PUkVf
V0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lO
KCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0SW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uLmNwcAkocmV2aXNpb24gMjg2MDgxKQor
KysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEluZGV4ZWRT
ZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY1LDcgKzY1LDcg
QEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6
OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJB
QkxFKEpTVGVzdEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvblByb3RvdHlwZSwgQmFzZSk7
Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2
bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSog
Y3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAtMjc2LDkgKzI3Niw5IEBA
IEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdEluZGV4ZWRTZXR0ZXJUaHIKICAgICAgICAgcmV0dXJu
IHNwYWNlOwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3Ry
dWN0aWJsZU9iamVjdCwgSlNUZXN0SW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uPiB8fCAh
SlNUZXN0SW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uOjpuZWVkc0Rlc3RydWN0aW9uKTsK
ICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVP
YmplY3QsIEpTVGVzdEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbj4pCi0gICAgICAgIHNw
YWNlcy5tX3N1YnNwYWNlRm9yVGVzdEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbiA9IG1h
a2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5kZXN0
cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUsIEpTVGVzdEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4
Y2VwdGlvbik7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEluZGV4ZWRTZXR0ZXJU
aHJvd2luZ0V4Y2VwdGlvbiA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9J
TklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RJ
bmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24pOwogICAgIGVsc2UKLSAgICAgICAgc3BhY2Vz
Lm1fc3Vic3BhY2VGb3JUZXN0SW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uID0gbWFrZVVu
aXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmNlbGxIZWFw
Q2VsbFR5cGUsIEpTVGVzdEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbik7CisgICAgICAg
IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbiA9
IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNl
bGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0SW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uKTsK
ICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEluZGV4ZWRTZXR0ZXJU
aHJvd2luZ0V4Y2VwdGlvbi5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFi
bGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbmRl
eGVkU2V0dGVyV2l0aElkZW50aWZpZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbmRleGVkU2V0dGVyV2l0aElkZW50aWZp
ZXIuY3BwCShyZXZpc2lvbiAyODYwODEpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0SW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNzMsNyArNzMsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vi
c3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FT
U0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0SW5kZXhlZFNldHRlcldpdGhJZGVudGlm
aWVyUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNl
OworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3Rh
dGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7
CkBAIC0zMDgsOSArMzA4LDkgQEAgSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0SW5kZXhlZFNldHRl
cldpdAogICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jh
c2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RJbmRleGVkU2V0dGVyV2l0
aElkZW50aWZpZXI+IHx8ICFKU1Rlc3RJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXI6Om5lZWRz
RGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpK
U0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0SW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyPikK
LSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0SW5kZXhlZFNldHRlcldpdGhJZGVudGlm
aWVyID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwg
KnZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSwgSlNUZXN0SW5kZXhlZFNldHRlcldp
dGhJZGVudGlmaWVyKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0SW5kZXhlZFNl
dHRlcldpdGhJZGVudGlmaWVyID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNF
X0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCksIEpTVGVz
dEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllcik7CiAgICAgZWxzZQotICAgICAgICBzcGFjZXMu
bV9zdWJzcGFjZUZvclRlc3RJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXIgPSBtYWtlVW5pcXVl
PElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uY2VsbEhlYXBDZWxs
VHlwZSwgSlNUZXN0SW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyKTsKKyAgICAgICAgc3BhY2Vz
Lm1fc3Vic3BhY2VGb3JUZXN0SW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyID0gbWFrZVVuaXF1
ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxs
VHlwZSgpLCBKU1Rlc3RJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXIpOwogICAgIGF1dG8qIHNw
YWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0SW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVy
LmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKIElHTk9S
RV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRleDogU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdElu
dGVyZmFjZS5jcHAJKHJldmlzaW9uIDI4NjA4MSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
ODEsNyArMTgxLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJz
cGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NV
QlNQQUNFX1NIQVJBQkxFKEpTVGVzdEludGVyZmFjZVByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAg
IHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9i
amVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3Ry
dWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpT
Qzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAtMTEwNCw5ICsxMTA0LDkgQEAgcHVibGlj
OgogICAgICAgICAgICAgcmV0dXJuIHNwYWNlOwogICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6
aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIFRlc3RJbnRlcmZhY2VJdGVy
YXRvcj4gfHwgIVRlc3RJbnRlcmZhY2VJdGVyYXRvcjo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAg
ICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9i
amVjdCwgVGVzdEludGVyZmFjZUl0ZXJhdG9yPikKLSAgICAgICAgICAgIHNwYWNlcy5tX3N1YnNw
YWNlRm9yVGVzdEludGVyZmFjZUl0ZXJhdG9yID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNP
X1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlw
ZS5nZXQoKSwgVGVzdEludGVyZmFjZUl0ZXJhdG9yKTsKKyAgICAgICAgICAgIHNwYWNlcy5tX3N1
YnNwYWNlRm9yVGVzdEludGVyZmFjZUl0ZXJhdG9yID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4g
SVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxU
eXBlKCksIFRlc3RJbnRlcmZhY2VJdGVyYXRvcik7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAg
IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEludGVyZmFjZUl0ZXJhdG9yID0gbWFrZVVuaXF1ZTxJ
c29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmNlbGxIZWFwQ2VsbFR5
cGUsIFRlc3RJbnRlcmZhY2VJdGVyYXRvcik7CisgICAgICAgICAgICBzcGFjZXMubV9zdWJzcGFj
ZUZvclRlc3RJbnRlcmZhY2VJdGVyYXRvciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19T
VUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgVGVzdEludGVyZmFj
ZUl0ZXJhdG9yKTsKICAgICAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRl
c3RJbnRlcmZhY2VJdGVyYXRvci5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFj
aGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJl
IikKQEAgLTExOTYsOSArMTE5Niw5IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdEludGVyZmFj
ZTo6c3Vic3AKICAgICAgICAgcmV0dXJuIHNwYWNlOwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjpp
c19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0SW50ZXJmYWNlPiB8
fCAhSlNUZXN0SW50ZXJmYWNlOjpuZWVkc0Rlc3RydWN0aW9uKTsKICAgICBpZiBjb25zdGV4cHIg
KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdEludGVy
ZmFjZT4pCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEludGVyZmFjZSA9IG1ha2VV
bmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5kZXN0cnVj
dGlibGVPYmplY3RIZWFwQ2VsbFR5cGUsIEpTVGVzdEludGVyZmFjZSk7CisgICAgICAgIHNwYWNl
cy5tX3N1YnNwYWNlRm9yVGVzdEludGVyZmFjZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElT
T19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlw
ZSgpLCBKU1Rlc3RJbnRlcmZhY2UpOwogICAgIGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vic3Bh
Y2VGb3JUZXN0SW50ZXJmYWNlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNF
X0lOSVQodm0uaGVhcCwgKnZtLmNlbGxIZWFwQ2VsbFR5cGUsIEpTVGVzdEludGVyZmFjZSk7Cisg
ICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEludGVyZmFjZSA9IG1ha2VVbmlxdWU8SXNv
U3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUo
KSwgSlNUZXN0SW50ZXJmYWNlKTsKICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNl
Rm9yVGVzdEludGVyZmFjZS5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFi
bGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRl
cmZhY2VMZWFkaW5nVW5kZXJzY29yZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZUxlYWRpbmdVbmRlcnNjb3Jl
LmNwcAkocmV2aXNpb24gMjg2MDgxKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZUxlYWRpbmdVbmRlcnNjb3JlLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNjYsNyArNjYsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3Bh
Y2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VS
VF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0SW50ZXJmYWNlTGVhZGluZ1VuZGVyc2NvcmVQ
cm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7Cisg
ICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KICAgICBzdGF0aWMg
SlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKQEAg
LTE4Nyw5ICsxODcsOSBAQCBKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3RJbnRlcmZhY2VMZWFkaW5n
CiAgICAgICAgIHJldHVybiBzcGFjZTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9v
Zl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdEludGVyZmFjZUxlYWRpbmdVbmRl
cnNjb3JlPiB8fCAhSlNUZXN0SW50ZXJmYWNlTGVhZGluZ1VuZGVyc2NvcmU6Om5lZWRzRGVzdHJ1
Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3Ry
dWN0aWJsZU9iamVjdCwgSlNUZXN0SW50ZXJmYWNlTGVhZGluZ1VuZGVyc2NvcmU+KQotICAgICAg
ICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RJbnRlcmZhY2VMZWFkaW5nVW5kZXJzY29yZSA9IG1h
a2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5kZXN0
cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUsIEpTVGVzdEludGVyZmFjZUxlYWRpbmdVbmRlcnNj
b3JlKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0SW50ZXJmYWNlTGVhZGluZ1Vu
ZGVyc2NvcmUgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5o
ZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0SW50ZXJmYWNl
TGVhZGluZ1VuZGVyc2NvcmUpOwogICAgIGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VG
b3JUZXN0SW50ZXJmYWNlTGVhZGluZ1VuZGVyc2NvcmUgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNl
PiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uY2VsbEhlYXBDZWxsVHlwZSwgSlNUZXN0
SW50ZXJmYWNlTGVhZGluZ1VuZGVyc2NvcmUpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZv
clRlc3RJbnRlcmZhY2VMZWFkaW5nVW5kZXJzY29yZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+
IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0
SW50ZXJmYWNlTGVhZGluZ1VuZGVyc2NvcmUpOwogICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1f
c3Vic3BhY2VGb3JUZXN0SW50ZXJmYWNlTGVhZGluZ1VuZGVyc2NvcmUuZ2V0KCk7CiBJR05PUkVf
V0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lO
KCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0SXRlcmFibGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJdGVyYWJsZS5jcHAJKHJldmlz
aW9uIDI4NjA4MSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RJdGVyYWJsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc1LDcgKzc1LDcgQEAgcHVibGlj
OgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkK
ICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVz
dEl0ZXJhYmxlUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVj
dFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAg
ICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpT
Qzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkK
ICAgICB7CkBAIC0yMDEsOSArMjAxLDkgQEAgcHVibGljOgogICAgICAgICAgICAgcmV0dXJuIHNw
YWNlOwogICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0
cnVjdGlibGVPYmplY3QsIFRlc3RJdGVyYWJsZUl0ZXJhdG9yPiB8fCAhVGVzdEl0ZXJhYmxlSXRl
cmF0b3I6Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAgICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNf
YmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIFRlc3RJdGVyYWJsZUl0ZXJhdG9y
PikKLSAgICAgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEl0ZXJhYmxlSXRlcmF0b3Ig
PSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0u
ZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmdldCgpLCBUZXN0SXRlcmFibGVJdGVyYXRv
cik7CisgICAgICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RJdGVyYWJsZUl0ZXJhdG9y
ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0u
ZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCksIFRlc3RJdGVyYWJsZUl0ZXJhdG9yKTsK
ICAgICAgICAgZWxzZQotICAgICAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0SXRlcmFi
bGVJdGVyYXRvciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZt
LmhlYXAsICp2bS5jZWxsSGVhcENlbGxUeXBlLCBUZXN0SXRlcmFibGVJdGVyYXRvcik7CisgICAg
ICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RJdGVyYWJsZUl0ZXJhdG9yID0gbWFrZVVu
aXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBD
ZWxsVHlwZSgpLCBUZXN0SXRlcmFibGVJdGVyYXRvcik7CiAgICAgICAgIGF1dG8qIHNwYWNlID0g
c3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0SXRlcmFibGVJdGVyYXRvci5nZXQoKTsKIElHTk9SRV9X
QVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4o
InRhdXRvbG9naWNhbC1jb21wYXJlIikKQEAgLTI5Myw5ICsyOTMsOSBAQCBKU0M6Oklzb1N1YnNw
YWNlKiBKU1Rlc3RJdGVyYWJsZTo6c3Vic3BhCiAgICAgICAgIHJldHVybiBzcGFjZTsKICAgICBz
dGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3Qs
IEpTVGVzdEl0ZXJhYmxlPiB8fCAhSlNUZXN0SXRlcmFibGU6Om5lZWRzRGVzdHJ1Y3Rpb24pOwog
ICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9i
amVjdCwgSlNUZXN0SXRlcmFibGU+KQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RJ
dGVyYWJsZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhl
YXAsICp2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUsIEpTVGVzdEl0ZXJhYmxlKTsK
KyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0SXRlcmFibGUgPSBtYWtlVW5pcXVlPElz
b1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmpl
Y3RIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0SXRlcmFibGUpOwogICAgIGVsc2UKLSAgICAgICAgc3Bh
Y2VzLm1fc3Vic3BhY2VGb3JUZXN0SXRlcmFibGUgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJ
U09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uY2VsbEhlYXBDZWxsVHlwZSwgSlNUZXN0SXRl
cmFibGUpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RJdGVyYWJsZSA9IG1ha2VV
bmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFw
Q2VsbFR5cGUoKSwgSlNUZXN0SXRlcmFibGUpOwogICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1f
c3Vic3BhY2VGb3JUZXN0SXRlcmFibGUuZ2V0KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVu
cmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29t
cGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0SlNCdWlsdGluQ29uc3RydWN0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rvci5jcHAJ
KHJldmlzaW9uIDI4NjA4MSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY5
LDcgKzY5LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFj
ZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQ
QUNFX1NIQVJBQkxFKEpTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yUHJvdG90eXBlLCBCYXNlKTsK
LSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZt
LnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBj
cmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC0yMzAsOSArMjMwLDkgQEAg
SlNDOjpJc29TdWJzcGFjZSogSlNUZXN0SlNCdWlsdGluQ29uc3RydQogICAgICAgICByZXR1cm4g
c3BhY2U7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1
Y3RpYmxlT2JqZWN0LCBKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rvcj4gfHwgIUpTVGVzdEpTQnVp
bHRpbkNvbnN0cnVjdG9yOjpuZWVkc0Rlc3RydWN0aW9uKTsKICAgICBpZiBjb25zdGV4cHIgKHN0
ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdEpTQnVpbHRp
bkNvbnN0cnVjdG9yPikKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0SlNCdWlsdGlu
Q29uc3RydWN0b3IgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2
bS5oZWFwLCAqdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLCBKU1Rlc3RKU0J1aWx0
aW5Db25zdHJ1Y3Rvcik7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEpTQnVpbHRp
bkNvbnN0cnVjdG9yID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQo
dm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCksIEpTVGVzdEpTQnVp
bHRpbkNvbnN0cnVjdG9yKTsKICAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9y
VGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NV
QlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmNlbGxIZWFwQ2VsbFR5cGUsIEpTVGVzdEpTQnVpbHRp
bkNvbnN0cnVjdG9yKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0SlNCdWlsdGlu
Q29uc3RydWN0b3IgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2
bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCksIEpTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9y
KTsKICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEpTQnVpbHRpbkNv
bnN0cnVjdG9yLmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2Rl
IikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRleDog
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdExlZ2FjeUZhY3Rv
cnlGdW5jdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlvbi5jcHAJKHJldmlzaW9uIDI4
NjA4MSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RM
ZWdhY3lGYWN0b3J5RnVuY3Rpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02Nyw3ICs2Nyw3IEBA
IHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpW
TSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJM
RShKU1Rlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb25Qcm90b3R5cGUsIEJhc2UpOwotICAgICAgICBy
ZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmpl
Y3RTcGFjZSgpOwogICAgIH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVj
dHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6
OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKQEAgLTIzMCw5ICsyMzAsOSBAQCBKU0M6Oklzb1N1
YnNwYWNlKiBKU1Rlc3RMZWdhY3lGYWN0b3J5RnVuCiAgICAgICAgIHJldHVybiBzcGFjZTsKICAg
ICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmpl
Y3QsIEpTVGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlvbj4gfHwgIUpTVGVzdExlZ2FjeUZhY3RvcnlG
dW5jdGlvbjo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jh
c2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RMZWdhY3lGYWN0b3J5RnVu
Y3Rpb24+KQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RMZWdhY3lGYWN0b3J5RnVu
Y3Rpb24gPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFw
LCAqdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLCBKU1Rlc3RMZWdhY3lGYWN0b3J5
RnVuY3Rpb24pOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RMZWdhY3lGYWN0b3J5
RnVuY3Rpb24gPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5o
ZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0TGVnYWN5RmFj
dG9yeUZ1bmN0aW9uKTsKICAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVz
dExlZ2FjeUZhY3RvcnlGdW5jdGlvbiA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJT
UEFDRV9JTklUKHZtLmhlYXAsICp2bS5jZWxsSGVhcENlbGxUeXBlLCBKU1Rlc3RMZWdhY3lGYWN0
b3J5RnVuY3Rpb24pOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RMZWdhY3lGYWN0
b3J5RnVuY3Rpb24gPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2
bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCksIEpTVGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlv
bik7CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RMZWdhY3lGYWN0
b3J5RnVuY3Rpb24uZ2V0KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNv
ZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TGVnYWN5Tm9J
bnRlcmZhY2VPYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RMZWdhY3lOb0ludGVyZmFjZU9iamVjdC5jcHAJKHJldmlz
aW9uIDI4NjA4MSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RMZWdhY3lOb0ludGVyZmFjZU9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg1LDcg
Kzg1LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZv
cihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNF
X1NIQVJBQkxFKEpTVGVzdExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0UHJvdG90eXBlLCBCYXNlKTsK
LSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZt
LnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBj
cmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC0zMzUsOSArMzM1LDkgQEAg
SlNDOjpJc29TdWJzcGFjZSogSlNUZXN0TGVnYWN5Tm9JbnRlcmZhYwogICAgICAgICByZXR1cm4g
c3BhY2U7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1
Y3RpYmxlT2JqZWN0LCBKU1Rlc3RMZWdhY3lOb0ludGVyZmFjZU9iamVjdD4gfHwgIUpTVGVzdExl
Z2FjeU5vSW50ZXJmYWNlT2JqZWN0OjpuZWVkc0Rlc3RydWN0aW9uKTsKICAgICBpZiBjb25zdGV4
cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdExl
Z2FjeU5vSW50ZXJmYWNlT2JqZWN0PikKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0
TGVnYWN5Tm9JbnRlcmZhY2VPYmplY3QgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VC
U1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLCBK
U1Rlc3RMZWdhY3lOb0ludGVyZmFjZU9iamVjdCk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNl
Rm9yVGVzdExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4g
SVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxU
eXBlKCksIEpTVGVzdExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0KTsKICAgICBlbHNlCi0gICAgICAg
IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0ID0gbWFrZVVu
aXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmNlbGxIZWFw
Q2VsbFR5cGUsIEpTVGVzdExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0KTsKKyAgICAgICAgc3BhY2Vz
Lm1fc3Vic3BhY2VGb3JUZXN0TGVnYWN5Tm9JbnRlcmZhY2VPYmplY3QgPSBtYWtlVW5pcXVlPElz
b1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBl
KCksIEpTVGVzdExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0KTsKICAgICBhdXRvKiBzcGFjZSA9IHNw
YWNlcy5tX3N1YnNwYWNlRm9yVGVzdExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0LmdldCgpOwogSUdO
T1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKIElHTk9SRV9XQVJOSU5HU19C
RUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RM
ZWdhY3lPdmVycmlkZUJ1aWx0SW5zLmNwcAkocmV2aXNpb24gMjg2MDgxKQorKysgU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJ
bnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03Myw3ICs3Myw3IEBAIHB1YmxpYzoKICAgICBzdGF0
aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAg
ICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3RMZWdhY3lPdmVy
cmlkZUJ1aWx0SW5zUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9i
amVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9
CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0s
IEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlw
ZSkKICAgICB7CkBAIC0yNDksOSArMjQ5LDkgQEAgSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0TGVn
YWN5T3ZlcnJpZGVCdQogICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fzc2VydChz
dGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RMZWdhY3lP
dmVycmlkZUJ1aWx0SW5zPiB8fCAhSlNUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdEluczo6bmVlZHNE
ZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpT
RGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zPikKLSAgICAg
ICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdElucyA9IG1ha2VV
bmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5kZXN0cnVj
dGlibGVPYmplY3RIZWFwQ2VsbFR5cGUsIEpTVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMpOwor
ICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zID0g
bWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVz
dHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCksIEpTVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJ
bnMpOwogICAgIGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TGVnYWN5T3Zl
cnJpZGVCdWlsdElucyA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklU
KHZtLmhlYXAsICp2bS5jZWxsSGVhcENlbGxUeXBlLCBKU1Rlc3RMZWdhY3lPdmVycmlkZUJ1aWx0
SW5zKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TGVnYWN5T3ZlcnJpZGVCdWls
dElucyA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAs
IHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdElucyk7CiAg
ICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RMZWdhY3lPdmVycmlkZUJ1
aWx0SW5zLmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikK
IElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRleDogU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE1hcExpa2UuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RNYXBMaWtlLmNwcAkocmV2aXNpb24gMjg2MDgxKQorKysgU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE1hcExpa2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04
Miw3ICs4Miw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3Bh
Y2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJT
UEFDRV9TSEFSQUJMRShKU1Rlc3RNYXBMaWtlUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0
dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0
U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1
cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpK
U1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC0zNjYsOSArMzY2LDkgQEAgSlNDOjpJc29TdWJz
cGFjZSogSlNUZXN0TWFwTGlrZTo6c3Vic3BhYwogICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAg
c3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0
LCBKU1Rlc3RNYXBMaWtlPiB8fCAhSlNUZXN0TWFwTGlrZTo6bmVlZHNEZXN0cnVjdGlvbik7CiAg
ICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2Jq
ZWN0LCBKU1Rlc3RNYXBMaWtlPikKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TWFw
TGlrZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAs
ICp2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUsIEpTVGVzdE1hcExpa2UpOworICAg
ICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RNYXBMaWtlID0gbWFrZVVuaXF1ZTxJc29TdWJz
cGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVh
cENlbGxUeXBlKCksIEpTVGVzdE1hcExpa2UpOwogICAgIGVsc2UKLSAgICAgICAgc3BhY2VzLm1f
c3Vic3BhY2VGb3JUZXN0TWFwTGlrZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJT
UEFDRV9JTklUKHZtLmhlYXAsICp2bS5jZWxsSGVhcENlbGxUeXBlLCBKU1Rlc3RNYXBMaWtlKTsK
KyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TWFwTGlrZSA9IG1ha2VVbmlxdWU8SXNv
U3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUo
KSwgSlNUZXN0TWFwTGlrZSk7CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZv
clRlc3RNYXBMaWtlLmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1j
b2RlIikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRl
eDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE1hcExpa2VX
aXRoT3ZlcnJpZGRlbk9wZXJhdGlvbnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RNYXBMaWtlV2l0aE92ZXJyaWRkZW5PcGVy
YXRpb25zLmNwcAkocmV2aXNpb24gMjg2MDgxKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdE1hcExpa2VXaXRoT3ZlcnJpZGRlbk9wZXJhdGlvbnMuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC04Niw3ICs4Niw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlND
OjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBT
VEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3RNYXBMaWtlV2l0aE92ZXJy
aWRkZW5PcGVyYXRpb25zUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFp
bk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAg
ICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYg
dm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3Rv
dHlwZSkKICAgICB7CkBAIC0zODAsOSArMzgwLDkgQEAgSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0
TWFwTGlrZVdpdGhPdmVycgogICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fzc2Vy
dChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RNYXBM
aWtlV2l0aE92ZXJyaWRkZW5PcGVyYXRpb25zPiB8fCAhSlNUZXN0TWFwTGlrZVdpdGhPdmVycmlk
ZGVuT3BlcmF0aW9uczo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3RleHByIChzdGQ6
OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RNYXBMaWtlV2l0
aE92ZXJyaWRkZW5PcGVyYXRpb25zPikKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0
TWFwTGlrZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9ucyA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+
IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2Vs
bFR5cGUsIEpTVGVzdE1hcExpa2VXaXRoT3ZlcnJpZGRlbk9wZXJhdGlvbnMpOworICAgICAgICBz
cGFjZXMubV9zdWJzcGFjZUZvclRlc3RNYXBMaWtlV2l0aE92ZXJyaWRkZW5PcGVyYXRpb25zID0g
bWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVz
dHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCksIEpTVGVzdE1hcExpa2VXaXRoT3ZlcnJpZGRl
bk9wZXJhdGlvbnMpOwogICAgIGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0
TWFwTGlrZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9ucyA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+
IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5jZWxsSGVhcENlbGxUeXBlLCBKU1Rlc3RN
YXBMaWtlV2l0aE92ZXJyaWRkZW5PcGVyYXRpb25zKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3Bh
Y2VGb3JUZXN0TWFwTGlrZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9ucyA9IG1ha2VVbmlxdWU8SXNv
U3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUo
KSwgSlNUZXN0TWFwTGlrZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9ucyk7CiAgICAgYXV0byogc3Bh
Y2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RNYXBMaWtlV2l0aE92ZXJyaWRkZW5PcGVyYXRp
b25zLmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKIElH
Tk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRleDogU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQW5kSW5kZXhlZFNl
dHRlck5vSWRlbnRpZmllci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlck5vSWRlbnRpZmll
ci5jcHAJKHJldmlzaW9uIDI4NjA4MSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXIuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC02Niw3ICs2Niw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJ
c29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFU
SUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0
ZXJOb0lkZW50aWZpZXJQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWlu
T2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAg
IH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2
bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90
eXBlKQogICAgIHsKQEAgLTM0NCw5ICszNDQsOSBAQCBKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3RO
YW1lZEFuZEluZGV4ZWRTCiAgICAgICAgIHJldHVybiBzcGFjZTsKICAgICBzdGF0aWNfYXNzZXJ0
KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdE5hbWVk
QW5kSW5kZXhlZFNldHRlck5vSWRlbnRpZmllcj4gfHwgIUpTVGVzdE5hbWVkQW5kSW5kZXhlZFNl
dHRlck5vSWRlbnRpZmllcjo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3RleHByIChz
dGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3ROYW1lZEFu
ZEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXI+KQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZv
clRlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXIgPSBtYWtlVW5pcXVlPElzb1N1
YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0
SGVhcENlbGxUeXBlLCBKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXIpOwor
ICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJOb0lk
ZW50aWZpZXIgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5o
ZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0TmFtZWRBbmRJ
bmRleGVkU2V0dGVyTm9JZGVudGlmaWVyKTsKICAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1
YnNwYWNlRm9yVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlck5vSWRlbnRpZmllciA9IG1ha2VVbmlx
dWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5jZWxsSGVhcENl
bGxUeXBlLCBKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXIpOworICAgICAg
ICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZp
ZXIgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2
bS5jZWxsSGVhcENlbGxUeXBlKCksIEpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlck5vSWRlbnRp
Zmllcik7CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZEFu
ZEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXIuZ2V0KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4o
InVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwt
Y29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24uY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1l
ZEFuZEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5jcHAJKHJldmlzaW9uIDI4NjA4MSkK
KysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEFu
ZEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY2
LDcgKzY2LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFj
ZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQ
QUNFX1NIQVJBQkxFKEpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9u
UHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOwor
ICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGlj
IEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBA
IC0zNDQsOSArMzQ0LDkgQEAgSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0TmFtZWRBbmRJbmRleGVk
UwogICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vf
b2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0
ZXJUaHJvd2luZ0V4Y2VwdGlvbj4gfHwgIUpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlclRocm93
aW5nRXhjZXB0aW9uOjpuZWVkc0Rlc3RydWN0aW9uKTsKICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6
aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdE5hbWVkQW5kSW5k
ZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uPikKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VG
b3JUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24gPSBtYWtlVW5pcXVl
PElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uZGVzdHJ1Y3RpYmxl
T2JqZWN0SGVhcENlbGxUeXBlLCBKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4
Y2VwdGlvbik7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkQW5kSW5kZXhl
ZFNldHRlclRocm93aW5nRXhjZXB0aW9uID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NV
QlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCks
IEpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uKTsKICAgICBlbHNl
Ci0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlclRo
cm93aW5nRXhjZXB0aW9uID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lO
SVQodm0uaGVhcCwgKnZtLmNlbGxIZWFwQ2VsbFR5cGUsIEpTVGVzdE5hbWVkQW5kSW5kZXhlZFNl
dHRlclRocm93aW5nRXhjZXB0aW9uKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0
TmFtZWRBbmRJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24gPSBtYWtlVW5pcXVlPElzb1N1
YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCks
IEpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uKTsKICAgICBhdXRv
KiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlclRo
cm93aW5nRXhjZXB0aW9uLmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJs
ZS1jb2RlIikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJ
bmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVk
QW5kSW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0
dGVyV2l0aElkZW50aWZpZXIuY3BwCShyZXZpc2lvbiAyODYwODEpCisrKyBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0
aElkZW50aWZpZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NSw3ICs3NSw3IEBAIHB1YmxpYzoK
ICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAg
ICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3RO
YW1lZEFuZEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllclByb3RvdHlwZSwgQmFzZSk7Ci0gICAg
ICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFp
bk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRl
U3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAtNDAxLDkgKzQwMSw5IEBAIEpTQzo6
SXNvU3Vic3BhY2UqIEpTVGVzdE5hbWVkQW5kSW5kZXhlZFMKICAgICAgICAgcmV0dXJuIHNwYWNl
OwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJs
ZU9iamVjdCwgSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXI+IHx8ICFK
U1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllcjo6bmVlZHNEZXN0cnVjdGlv
bik7CiAgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3Rp
YmxlT2JqZWN0LCBKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllcj4pCi0g
ICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlcldpdGhJ
ZGVudGlmaWVyID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0u
aGVhcCwgKnZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSwgSlNUZXN0TmFtZWRBbmRJ
bmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXIpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZv
clRlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllciA9IG1ha2VVbmlxdWU8SXNv
U3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVj
dEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmll
cik7CiAgICAgZWxzZQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZEFuZElu
ZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19T
VUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5jZWxsSGVhcENlbGxUeXBlLCBKU1Rlc3ROYW1lZEFu
ZEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllcik7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNl
Rm9yVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyID0gbWFrZVVuaXF1ZTxJ
c29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlw
ZSgpLCBKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllcik7CiAgICAgYXV0
byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJX
aXRoSWRlbnRpZmllci5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUt
Y29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERl
bGV0ZXJOb0lkZW50aWZpZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJOb0lkZW50aWZpZXIuY3BwCShy
ZXZpc2lvbiAyODYwODEpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0TmFtZWREZWxldGVyTm9JZGVudGlmaWVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NjUsNyArNjUsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNw
YWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VC
U1BBQ0VfU0hBUkFCTEUoSlNUZXN0TmFtZWREZWxldGVyTm9JZGVudGlmaWVyUHJvdG90eXBlLCBC
YXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1
cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0
dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC0yNDYsOSArMjQ2
LDkgQEAgSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0TmFtZWREZWxldGVyTm9JZAogICAgICAgICBy
ZXR1cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpT
RGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3ROYW1lZERlbGV0ZXJOb0lkZW50aWZpZXI+IHx8ICFK
U1Rlc3ROYW1lZERlbGV0ZXJOb0lkZW50aWZpZXI6Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlm
IGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwg
SlNUZXN0TmFtZWREZWxldGVyTm9JZGVudGlmaWVyPikKLSAgICAgICAgc3BhY2VzLm1fc3Vic3Bh
Y2VGb3JUZXN0TmFtZWREZWxldGVyTm9JZGVudGlmaWVyID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFj
ZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBD
ZWxsVHlwZSwgSlNUZXN0TmFtZWREZWxldGVyTm9JZGVudGlmaWVyKTsKKyAgICAgICAgc3BhY2Vz
Lm1fc3Vic3BhY2VGb3JUZXN0TmFtZWREZWxldGVyTm9JZGVudGlmaWVyID0gbWFrZVVuaXF1ZTxJ
c29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2Jq
ZWN0SGVhcENlbGxUeXBlKCksIEpTVGVzdE5hbWVkRGVsZXRlck5vSWRlbnRpZmllcik7CiAgICAg
ZWxzZQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZERlbGV0ZXJOb0lkZW50
aWZpZXIgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFw
LCAqdm0uY2VsbEhlYXBDZWxsVHlwZSwgSlNUZXN0TmFtZWREZWxldGVyTm9JZGVudGlmaWVyKTsK
KyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWREZWxldGVyTm9JZGVudGlmaWVy
ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0u
Y2VsbEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3ROYW1lZERlbGV0ZXJOb0lkZW50aWZpZXIpOwogICAg
IGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWREZWxldGVyTm9JZGVu
dGlmaWVyLmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikK
IElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRleDogU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlclRo
cm93aW5nRXhjZXB0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyVGhyb3dpbmdFeGNlcHRpb24uY3Bw
CShyZXZpc2lvbiAyODYwODEpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0TmFtZWREZWxldGVyVGhyb3dpbmdFeGNlcHRpb24uY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC02NSw3ICs2NSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFj
ZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJU
X0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3ROYW1lZERlbGV0ZXJUaHJvd2luZ0V4Y2VwdGlv
blByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsK
KyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRp
YyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpA
QCAtMjQ2LDkgKzI0Niw5IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdE5hbWVkRGVsZXRlclRo
cm8KICAgICAgICAgcmV0dXJuIHNwYWNlOwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNl
X29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0TmFtZWREZWxldGVyVGhyb3dp
bmdFeGNlcHRpb24+IHx8ICFKU1Rlc3ROYW1lZERlbGV0ZXJUaHJvd2luZ0V4Y2VwdGlvbjo6bmVl
ZHNEZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6
OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3ROYW1lZERlbGV0ZXJUaHJvd2luZ0V4Y2VwdGlv
bj4pCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkRGVsZXRlclRocm93aW5n
RXhjZXB0aW9uID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0u
aGVhcCwgKnZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSwgSlNUZXN0TmFtZWREZWxl
dGVyVGhyb3dpbmdFeGNlcHRpb24pOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RO
YW1lZERlbGV0ZXJUaHJvd2luZ0V4Y2VwdGlvbiA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElT
T19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlw
ZSgpLCBKU1Rlc3ROYW1lZERlbGV0ZXJUaHJvd2luZ0V4Y2VwdGlvbik7CiAgICAgZWxzZQotICAg
ICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZERlbGV0ZXJUaHJvd2luZ0V4Y2VwdGlv
biA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2
bS5jZWxsSGVhcENlbGxUeXBlLCBKU1Rlc3ROYW1lZERlbGV0ZXJUaHJvd2luZ0V4Y2VwdGlvbik7
CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkRGVsZXRlclRocm93aW5nRXhj
ZXB0aW9uID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVh
cCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3ROYW1lZERlbGV0ZXJUaHJvd2luZ0V4Y2Vw
dGlvbik7CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZERl
bGV0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5y
ZWFjaGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21w
YXJlIikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlcldpdGhJZGVu
dGlmaWVyLmNwcAkocmV2aXNpb24gMjg2MDgxKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlcldpdGhJZGVudGlmaWVyLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNzIsNyArNzIsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNv
U3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElD
X0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0TmFtZWREZWxldGVyV2l0aElkZW50
aWZpZXJQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3Bh
Y2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KICAgICBz
dGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAg
IHsKQEAgLTI3MCw5ICsyNzAsOSBAQCBKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3ROYW1lZERlbGV0
ZXJXaXRoCiAgICAgICAgIHJldHVybiBzcGFjZTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNf
YmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdE5hbWVkRGVsZXRlcldp
dGhJZGVudGlmaWVyPiB8fCAhSlNUZXN0TmFtZWREZWxldGVyV2l0aElkZW50aWZpZXI6Om5lZWRz
RGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpK
U0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0TmFtZWREZWxldGVyV2l0aElkZW50aWZpZXI+KQot
ICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRpZmll
ciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2
bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUsIEpTVGVzdE5hbWVkRGVsZXRlcldpdGhJ
ZGVudGlmaWVyKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWREZWxldGVy
V2l0aElkZW50aWZpZXIgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5J
VCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0TmFt
ZWREZWxldGVyV2l0aElkZW50aWZpZXIpOwogICAgIGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vi
c3BhY2VGb3JUZXN0TmFtZWREZWxldGVyV2l0aElkZW50aWZpZXIgPSBtYWtlVW5pcXVlPElzb1N1
YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uY2VsbEhlYXBDZWxsVHlwZSwg
SlNUZXN0TmFtZWREZWxldGVyV2l0aElkZW50aWZpZXIpOworICAgICAgICBzcGFjZXMubV9zdWJz
cGFjZUZvclRlc3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllciA9IG1ha2VVbmlxdWU8SXNvU3Vi
c3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwg
SlNUZXN0TmFtZWREZWxldGVyV2l0aElkZW50aWZpZXIpOwogICAgIGF1dG8qIHNwYWNlID0gc3Bh
Y2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWREZWxldGVyV2l0aElkZW50aWZpZXIuZ2V0KCk7CiBJ
R05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdT
X0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyV2l0aEluZGV4ZWRHZXR0ZXIu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSW5kZXhlZEdldHRlci5jcHAJKHJldmlzaW9uIDI4NjA4
MSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1l
ZERlbGV0ZXJXaXRoSW5kZXhlZEdldHRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY2LDcgKzY2
LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihK
U0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NI
QVJBQkxFKEpTVGVzdE5hbWVkRGVsZXRlcldpdGhJbmRleGVkR2V0dGVyUHJvdG90eXBlLCBCYXNl
KTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4g
JnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJl
KiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC0yNjIsOSArMjYyLDkg
QEAgSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0TmFtZWREZWxldGVyV2l0aAogICAgICAgICByZXR1
cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVz
dHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSW5kZXhlZEdldHRlcj4gfHwg
IUpTVGVzdE5hbWVkRGVsZXRlcldpdGhJbmRleGVkR2V0dGVyOjpuZWVkc0Rlc3RydWN0aW9uKTsK
ICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVP
YmplY3QsIEpTVGVzdE5hbWVkRGVsZXRlcldpdGhJbmRleGVkR2V0dGVyPikKLSAgICAgICAgc3Bh
Y2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWREZWxldGVyV2l0aEluZGV4ZWRHZXR0ZXIgPSBtYWtl
VW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uZGVzdHJ1
Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLCBKU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSW5kZXhlZEdl
dHRlcik7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkRGVsZXRlcldpdGhJ
bmRleGVkR2V0dGVyID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQo
dm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCksIEpTVGVzdE5hbWVk
RGVsZXRlcldpdGhJbmRleGVkR2V0dGVyKTsKICAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1
YnNwYWNlRm9yVGVzdE5hbWVkRGVsZXRlcldpdGhJbmRleGVkR2V0dGVyID0gbWFrZVVuaXF1ZTxJ
c29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmNlbGxIZWFwQ2VsbFR5
cGUsIEpTVGVzdE5hbWVkRGVsZXRlcldpdGhJbmRleGVkR2V0dGVyKTsKKyAgICAgICAgc3BhY2Vz
Lm1fc3Vic3BhY2VGb3JUZXN0TmFtZWREZWxldGVyV2l0aEluZGV4ZWRHZXR0ZXIgPSBtYWtlVW5p
cXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENl
bGxUeXBlKCksIEpTVGVzdE5hbWVkRGVsZXRlcldpdGhJbmRleGVkR2V0dGVyKTsKICAgICBhdXRv
KiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkRGVsZXRlcldpdGhJbmRleGVk
R2V0dGVyLmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikK
IElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRleDogU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkR2V0dGVyQ2Fs
bFdpdGguY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3ROYW1lZEdldHRlckNhbGxXaXRoLmNwcAkocmV2aXNpb24gMjg2MDgxKQor
KysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkR2V0
dGVyQ2FsbFdpdGguY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NSw3ICs2NSw3IEBAIHB1YmxpYzoK
ICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAg
ICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3RO
YW1lZEdldHRlckNhbGxXaXRoUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5w
bGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsK
ICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpW
TSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHBy
b3RvdHlwZSkKICAgICB7CkBAIC0yMjAsOSArMjIwLDkgQEAgSlNDOjpJc29TdWJzcGFjZSogSlNU
ZXN0TmFtZWRHZXR0ZXJDYWxsVwogICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fz
c2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RO
YW1lZEdldHRlckNhbGxXaXRoPiB8fCAhSlNUZXN0TmFtZWRHZXR0ZXJDYWxsV2l0aDo6bmVlZHNE
ZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpT
RGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3ROYW1lZEdldHRlckNhbGxXaXRoPikKLSAgICAgICAg
c3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRHZXR0ZXJDYWxsV2l0aCA9IG1ha2VVbmlxdWU8
SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5kZXN0cnVjdGlibGVP
YmplY3RIZWFwQ2VsbFR5cGUsIEpTVGVzdE5hbWVkR2V0dGVyQ2FsbFdpdGgpOworICAgICAgICBz
cGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZEdldHRlckNhbGxXaXRoID0gbWFrZVVuaXF1ZTxJ
c29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2Jq
ZWN0SGVhcENlbGxUeXBlKCksIEpTVGVzdE5hbWVkR2V0dGVyQ2FsbFdpdGgpOwogICAgIGVsc2UK
LSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRHZXR0ZXJDYWxsV2l0aCA9IG1h
a2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5jZWxs
SGVhcENlbGxUeXBlLCBKU1Rlc3ROYW1lZEdldHRlckNhbGxXaXRoKTsKKyAgICAgICAgc3BhY2Vz
Lm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRHZXR0ZXJDYWxsV2l0aCA9IG1ha2VVbmlxdWU8SXNvU3Vi
c3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwg
SlNUZXN0TmFtZWRHZXR0ZXJDYWxsV2l0aCk7CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9z
dWJzcGFjZUZvclRlc3ROYW1lZEdldHRlckNhbGxXaXRoLmdldCgpOwogSUdOT1JFX1dBUk5JTkdT
X0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9s
b2dpY2FsLWNvbXBhcmUiKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdE5hbWVkR2V0dGVyTm9JZGVudGlmaWVyLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRHZXR0ZXJO
b0lkZW50aWZpZXIuY3BwCShyZXZpc2lvbiAyODYwODEpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRHZXR0ZXJOb0lkZW50aWZpZXIuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC02NSw3ICs2NSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJ
c29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFU
SUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3ROYW1lZEdldHRlck5vSWRlbnRp
ZmllclByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFj
ZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0
YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAg
ewpAQCAtMjIwLDkgKzIyMCw5IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdE5hbWVkR2V0dGVy
Tm9JZGUKICAgICAgICAgcmV0dXJuIHNwYWNlOwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19i
YXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0TmFtZWRHZXR0ZXJOb0lk
ZW50aWZpZXI+IHx8ICFKU1Rlc3ROYW1lZEdldHRlck5vSWRlbnRpZmllcjo6bmVlZHNEZXN0cnVj
dGlvbik7CiAgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1
Y3RpYmxlT2JqZWN0LCBKU1Rlc3ROYW1lZEdldHRlck5vSWRlbnRpZmllcj4pCi0gICAgICAgIHNw
YWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkR2V0dGVyTm9JZGVudGlmaWVyID0gbWFrZVVuaXF1
ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmRlc3RydWN0aWJs
ZU9iamVjdEhlYXBDZWxsVHlwZSwgSlNUZXN0TmFtZWRHZXR0ZXJOb0lkZW50aWZpZXIpOworICAg
ICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZEdldHRlck5vSWRlbnRpZmllciA9IG1h
a2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3Ry
dWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3ROYW1lZEdldHRlck5vSWRlbnRpZmll
cik7CiAgICAgZWxzZQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZEdldHRl
ck5vSWRlbnRpZmllciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklU
KHZtLmhlYXAsICp2bS5jZWxsSGVhcENlbGxUeXBlLCBKU1Rlc3ROYW1lZEdldHRlck5vSWRlbnRp
Zmllcik7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkR2V0dGVyTm9JZGVu
dGlmaWVyID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVh
cCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3ROYW1lZEdldHRlck5vSWRlbnRpZmllcik7
CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZEdldHRlck5v
SWRlbnRpZmllci5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29k
ZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEdldHRl
cldpdGhJZGVudGlmaWVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRHZXR0ZXJXaXRoSWRlbnRpZmllci5jcHAJKHJl
dmlzaW9uIDI4NjA4MSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3ROYW1lZEdldHRlcldpdGhJZGVudGlmaWVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NzAsNyArNzAsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNw
YWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VC
U1BBQ0VfU0hBUkFCTEUoSlNUZXN0TmFtZWRHZXR0ZXJXaXRoSWRlbnRpZmllclByb3RvdHlwZSwg
QmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0
dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVj
dHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAtMjQ2LDkgKzI0
Niw5IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdE5hbWVkR2V0dGVyV2l0aEkKICAgICAgICAg
cmV0dXJuIHNwYWNlOwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpK
U0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0TmFtZWRHZXR0ZXJXaXRoSWRlbnRpZmllcj4gfHwg
IUpTVGVzdE5hbWVkR2V0dGVyV2l0aElkZW50aWZpZXI6Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAg
IGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVj
dCwgSlNUZXN0TmFtZWRHZXR0ZXJXaXRoSWRlbnRpZmllcj4pCi0gICAgICAgIHNwYWNlcy5tX3N1
YnNwYWNlRm9yVGVzdE5hbWVkR2V0dGVyV2l0aElkZW50aWZpZXIgPSBtYWtlVW5pcXVlPElzb1N1
YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0
SGVhcENlbGxUeXBlLCBKU1Rlc3ROYW1lZEdldHRlcldpdGhJZGVudGlmaWVyKTsKKyAgICAgICAg
c3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRHZXR0ZXJXaXRoSWRlbnRpZmllciA9IG1ha2VV
bmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0
aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3ROYW1lZEdldHRlcldpdGhJZGVudGlmaWVy
KTsKICAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkR2V0dGVy
V2l0aElkZW50aWZpZXIgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5J
VCh2bS5oZWFwLCAqdm0uY2VsbEhlYXBDZWxsVHlwZSwgSlNUZXN0TmFtZWRHZXR0ZXJXaXRoSWRl
bnRpZmllcik7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkR2V0dGVyV2l0
aElkZW50aWZpZXIgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2
bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCksIEpTVGVzdE5hbWVkR2V0dGVyV2l0aElkZW50
aWZpZXIpOwogICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRH
ZXR0ZXJXaXRoSWRlbnRpZmllci5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFj
aGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJl
IikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RO
YW1lZFNldHRlck5vSWRlbnRpZmllci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyTm9JZGVudGlmaWVyLmNw
cAkocmV2aXNpb24gMjg2MDgxKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyTm9JZGVudGlmaWVyLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNjUsNyArNjUsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1
YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09f
U1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0TmFtZWRTZXR0ZXJOb0lkZW50aWZpZXJQcm90b3R5cGUs
IEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJl
dHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1
Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKQEAgLTMwMCw5ICsz
MDAsOSBAQCBKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3ROYW1lZFNldHRlck5vSWRlCiAgICAgICAg
IHJldHVybiBzcGFjZTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6
SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdE5hbWVkU2V0dGVyTm9JZGVudGlmaWVyPiB8fCAh
SlNUZXN0TmFtZWRTZXR0ZXJOb0lkZW50aWZpZXI6Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlm
IGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwg
SlNUZXN0TmFtZWRTZXR0ZXJOb0lkZW50aWZpZXI+KQotICAgICAgICBzcGFjZXMubV9zdWJzcGFj
ZUZvclRlc3ROYW1lZFNldHRlck5vSWRlbnRpZmllciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+
IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2Vs
bFR5cGUsIEpTVGVzdE5hbWVkU2V0dGVyTm9JZGVudGlmaWVyKTsKKyAgICAgICAgc3BhY2VzLm1f
c3Vic3BhY2VGb3JUZXN0TmFtZWRTZXR0ZXJOb0lkZW50aWZpZXIgPSBtYWtlVW5pcXVlPElzb1N1
YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RI
ZWFwQ2VsbFR5cGUoKSwgSlNUZXN0TmFtZWRTZXR0ZXJOb0lkZW50aWZpZXIpOwogICAgIGVsc2UK
LSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRTZXR0ZXJOb0lkZW50aWZpZXIg
PSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0u
Y2VsbEhlYXBDZWxsVHlwZSwgSlNUZXN0TmFtZWRTZXR0ZXJOb0lkZW50aWZpZXIpOworICAgICAg
ICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZFNldHRlck5vSWRlbnRpZmllciA9IG1ha2VV
bmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFw
Q2VsbFR5cGUoKSwgSlNUZXN0TmFtZWRTZXR0ZXJOb0lkZW50aWZpZXIpOwogICAgIGF1dG8qIHNw
YWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRTZXR0ZXJOb0lkZW50aWZpZXIuZ2V0
KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dB
Uk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJUaHJvd2luZ0V4Y2Vw
dGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24uY3BwCShyZXZpc2lvbiAy
ODYwODEpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
TmFtZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY1LDcg
KzY1LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZv
cihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNF
X1NIQVJBQkxFKEpTVGVzdE5hbWVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb25Qcm90b3R5cGUsIEJh
c2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVy
biAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1
cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKQEAgLTMwMCw5ICszMDAs
OSBAQCBKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3ROYW1lZFNldHRlclRocm93CiAgICAgICAgIHJl
dHVybiBzcGFjZTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNE
ZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdE5hbWVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24+IHx8
ICFKU1Rlc3ROYW1lZFNldHRlclRocm93aW5nRXhjZXB0aW9uOjpuZWVkc0Rlc3RydWN0aW9uKTsK
ICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVP
YmplY3QsIEpTVGVzdE5hbWVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24+KQotICAgICAgICBzcGFj
ZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZFNldHRlclRocm93aW5nRXhjZXB0aW9uID0gbWFrZVVu
aXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmRlc3RydWN0
aWJsZU9iamVjdEhlYXBDZWxsVHlwZSwgSlNUZXN0TmFtZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlv
bik7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkU2V0dGVyVGhyb3dpbmdF
eGNlcHRpb24gPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5o
ZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0TmFtZWRTZXR0
ZXJUaHJvd2luZ0V4Y2VwdGlvbik7CiAgICAgZWxzZQotICAgICAgICBzcGFjZXMubV9zdWJzcGFj
ZUZvclRlc3ROYW1lZFNldHRlclRocm93aW5nRXhjZXB0aW9uID0gbWFrZVVuaXF1ZTxJc29TdWJz
cGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmNlbGxIZWFwQ2VsbFR5cGUsIEpT
VGVzdE5hbWVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24pOworICAgICAgICBzcGFjZXMubV9zdWJz
cGFjZUZvclRlc3ROYW1lZFNldHRlclRocm93aW5nRXhjZXB0aW9uID0gbWFrZVVuaXF1ZTxJc29T
dWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgp
LCBKU1Rlc3ROYW1lZFNldHRlclRocm93aW5nRXhjZXB0aW9uKTsKICAgICBhdXRvKiBzcGFjZSA9
IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24uZ2V0
KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dB
Uk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmll
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aElkZW50aWZpZXIuY3BwCShyZXZpc2lvbiAyODYwODEp
CisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRT
ZXR0ZXJXaXRoSWRlbnRpZmllci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcyLDcgKzcyLDcgQEAg
cHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZN
JiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxF
KEpTVGVzdE5hbWVkU2V0dGVyV2l0aElkZW50aWZpZXJQcm90b3R5cGUsIEJhc2UpOwotICAgICAg
ICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5P
YmplY3RTcGFjZSgpOwogICAgIH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0
cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBK
U0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKQEAgLTMzMSw5ICszMzEsOSBAQCBKU0M6Oklz
b1N1YnNwYWNlKiBKU1Rlc3ROYW1lZFNldHRlcldpdGhJCiAgICAgICAgIHJldHVybiBzcGFjZTsK
ICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVP
YmplY3QsIEpTVGVzdE5hbWVkU2V0dGVyV2l0aElkZW50aWZpZXI+IHx8ICFKU1Rlc3ROYW1lZFNl
dHRlcldpdGhJZGVudGlmaWVyOjpuZWVkc0Rlc3RydWN0aW9uKTsKICAgICBpZiBjb25zdGV4cHIg
KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdE5hbWVk
U2V0dGVyV2l0aElkZW50aWZpZXI+KQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RO
YW1lZFNldHRlcldpdGhJZGVudGlmaWVyID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NV
QlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSwg
SlNUZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmllcik7CisgICAgICAgIHNwYWNlcy5tX3N1YnNw
YWNlRm9yVGVzdE5hbWVkU2V0dGVyV2l0aElkZW50aWZpZXIgPSBtYWtlVW5pcXVlPElzb1N1YnNw
YWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFw
Q2VsbFR5cGUoKSwgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmllcik7CiAgICAgZWxzZQot
ICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZFNldHRlcldpdGhJZGVudGlmaWVy
ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZt
LmNlbGxIZWFwQ2VsbFR5cGUsIEpTVGVzdE5hbWVkU2V0dGVyV2l0aElkZW50aWZpZXIpOworICAg
ICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZFNldHRlcldpdGhJZGVudGlmaWVyID0g
bWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2Vs
bEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3ROYW1lZFNldHRlcldpdGhJZGVudGlmaWVyKTsKICAgICBh
dXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkU2V0dGVyV2l0aElkZW50
aWZpZXIuZ2V0KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQog
SUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRo
SW5kZXhlZEdldHRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXIuY3BwCShy
ZXZpc2lvbiAyODYwODEpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTc1LDcgKzc1LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBz
dWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNP
X1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJQcm90
b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAg
ICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KICAgICBzdGF0aWMgSlND
OjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKQEAgLTM3
OCw5ICszNzgsOSBAQCBKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3ROYW1lZFNldHRlcldpdGhJCiAg
ICAgICAgIHJldHVybiBzcGFjZTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92
PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRH
ZXR0ZXI+IHx8ICFKU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyOjpuZWVkc0Rlc3Ry
dWN0aW9uKTsKICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0
cnVjdGlibGVPYmplY3QsIEpTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXI+KQotICAg
ICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVy
ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZt
LmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSwgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5k
ZXhlZEdldHRlcik7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkU2V0dGVy
V2l0aEluZGV4ZWRHZXR0ZXIgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0Vf
SU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0
TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlcik7CiAgICAgZWxzZQotICAgICAgICBzcGFjZXMu
bV9zdWJzcGFjZUZvclRlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyID0gbWFrZVVuaXF1
ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmNlbGxIZWFwQ2Vs
bFR5cGUsIEpTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXIpOworICAgICAgICBzcGFj
ZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyID0gbWFrZVVu
aXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBD
ZWxsVHlwZSgpLCBKU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyKTsKICAgICBhdXRv
KiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRH
ZXR0ZXIuZ2V0KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQog
SUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRo
SW5kZXhlZEdldHRlckFuZFNldHRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0
ZXJBbmRTZXR0ZXIuY3BwCShyZXZpc2lvbiAyODYwODEpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlckFu
ZFNldHRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc1LDcgKzc1LDcgQEAgcHVibGljOgogICAg
IHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7
CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdE5hbWVk
U2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0ZXJQcm90b3R5cGUsIEJhc2UpOwotICAgICAg
ICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5P
YmplY3RTcGFjZSgpOwogICAgIH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0
cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBK
U0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKQEAgLTQyOCw5ICs0MjgsOSBAQCBKU0M6Oklz
b1N1YnNwYWNlKiBKU1Rlc3ROYW1lZFNldHRlcldpdGhJCiAgICAgICAgIHJldHVybiBzcGFjZTsK
ICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVP
YmplY3QsIEpTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0ZXI+IHx8ICFK
U1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQW5kU2V0dGVyOjpuZWVkc0Rlc3RydWN0
aW9uKTsKICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVj
dGlibGVPYmplY3QsIEpTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0ZXI+
KQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZFNldHRlcldpdGhJbmRleGVk
R2V0dGVyQW5kU2V0dGVyID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lO
SVQodm0uaGVhcCwgKnZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSwgSlNUZXN0TmFt
ZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlckFuZFNldHRlcik7CisgICAgICAgIHNwYWNlcy5tX3N1
YnNwYWNlRm9yVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0ZXIgPSBtYWtl
VW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVj
dGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdl
dHRlckFuZFNldHRlcik7CiAgICAgZWxzZQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRl
c3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQW5kU2V0dGVyID0gbWFrZVVuaXF1ZTxJc29T
dWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmNlbGxIZWFwQ2VsbFR5cGUs
IEpTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0ZXIpOworICAgICAgICBz
cGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQW5kU2V0
dGVyID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwg
dm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVy
QW5kU2V0dGVyKTsKICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5h
bWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0ZXIuZ2V0KCk7CiBJR05PUkVfV0FSTklO
R1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0
b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5T3ZlcnJpZGVCdWlsdElucy5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMuY3BwCShyZXZpc2lvbiAy
ODYwODEpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
TmFtZWRTZXR0ZXJXaXRoTGVnYWN5T3ZlcnJpZGVCdWlsdElucy5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTY1LDcgKzY1LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBz
dWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNP
X1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeU92ZXJyaWRlQnVp
bHRJbnNQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3Bh
Y2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KICAgICBz
dGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAg
IHsKQEAgLTI3Nyw5ICsyNzcsOSBAQCBKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3ROYW1lZFNldHRl
cldpdGhMCiAgICAgICAgIHJldHVybiBzcGFjZTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNf
YmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdE5hbWVkU2V0dGVyV2l0
aExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM+IHx8ICFKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lP
dmVycmlkZUJ1aWx0SW5zOjpuZWVkc0Rlc3RydWN0aW9uKTsKICAgICBpZiBjb25zdGV4cHIgKHN0
ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdE5hbWVkU2V0
dGVyV2l0aExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM+KQotICAgICAgICBzcGFjZXMubV9zdWJzcGFj
ZUZvclRlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lPdmVycmlkZUJ1aWx0SW5zID0gbWFrZVVuaXF1
ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmRlc3RydWN0aWJs
ZU9iamVjdEhlYXBDZWxsVHlwZSwgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5T3ZlcnJpZGVC
dWlsdElucyk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkU2V0dGVyV2l0
aExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VC
U1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwg
SlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5T3ZlcnJpZGVCdWlsdElucyk7CiAgICAgZWxzZQot
ICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lPdmVy
cmlkZUJ1aWx0SW5zID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQo
dm0uaGVhcCwgKnZtLmNlbGxIZWFwQ2VsbFR5cGUsIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2Fj
eU92ZXJyaWRlQnVpbHRJbnMpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1l
ZFNldHRlcldpdGhMZWdhY3lPdmVycmlkZUJ1aWx0SW5zID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFj
ZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU1Rl
c3ROYW1lZFNldHRlcldpdGhMZWdhY3lPdmVycmlkZUJ1aWx0SW5zKTsKICAgICBhdXRvKiBzcGFj
ZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeU92ZXJyaWRl
QnVpbHRJbnMuZ2V0KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUi
KQogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJX
aXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVn
YWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzLmNwcAkocmV2aXNpb24gMjg2MDgxKQorKysgU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aExl
Z2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc0LDcgKzc0
LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihK
U0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NI
QVJBQkxFKEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc1By
b3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAg
ICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBK
U0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAt
MzYxLDkgKzM2MSw5IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdE5hbWVkU2V0dGVyV2l0aEwK
ICAgICAgICAgcmV0dXJuIHNwYWNlOwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29m
X3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5
VW5mb3JnZWFibGVQcm9wZXJ0aWVzPiB8fCAhSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5m
b3JnZWFibGVQcm9wZXJ0aWVzOjpuZWVkc0Rlc3RydWN0aW9uKTsKICAgICBpZiBjb25zdGV4cHIg
KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdE5hbWVk
U2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllcz4pCi0gICAgICAgIHNwYWNlcy5t
X3N1YnNwYWNlRm9yVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGll
cyA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2
bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUsIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExl
Z2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllcyk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9y
VGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllcyA9IG1ha2VVbmlx
dWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJs
ZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdl
YWJsZVByb3BlcnRpZXMpOwogICAgIGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JU
ZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzID0gbWFrZVVuaXF1
ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmNlbGxIZWFwQ2Vs
bFR5cGUsIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllcyk7
CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVu
Zm9yZ2VhYmxlUHJvcGVydGllcyA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFD
RV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0TmFtZWRTZXR0ZXJX
aXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzKTsKICAgICBhdXRvKiBzcGFjZSA9IHNwYWNl
cy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVy
dGllcy5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJ
R05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhM
ZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3Zl
cnJpZGVCdWlsdElucy5jcHAJKHJldmlzaW9uIDI4NjA4MSkKKysrIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdl
YWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNzQsNyArNzQsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2Uq
IHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9J
U09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFi
bGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdEluc1Byb3RvdHlwZSwgQmFzZSk7Ci0g
ICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5w
bGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3Jl
YXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAtMzM4LDkgKzMzOCw5IEBAIEpT
Qzo6SXNvU3Vic3BhY2UqIEpTVGVzdE5hbWVkU2V0dGVyV2l0aEwKICAgICAgICAgcmV0dXJuIHNw
YWNlOwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0
aWJsZU9iamVjdCwgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0
aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdElucz4gfHwgIUpTVGVzdE5hbWVkU2V0dGVyV2l0aExl
Z2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM6Om5lZWRz
RGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpK
U0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFi
bGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdElucz4pCi0gICAgICAgIHNwYWNlcy5t
X3N1YnNwYWNlRm9yVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGll
c0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09f
U1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBl
LCBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdh
Y3lPdmVycmlkZUJ1aWx0SW5zKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFt
ZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVC
dWlsdElucyA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhl
YXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3ROYW1lZFNldHRl
cldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5z
KTsKICAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkU2V0dGVy
V2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMg
PSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0u
Y2VsbEhlYXBDZWxsVHlwZSwgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQ
cm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdElucyk7CisgICAgICAgIHNwYWNlcy5tX3N1
YnNwYWNlRm9yVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0Fu
ZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VC
U1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCksIEpTVGVzdE5hbWVkU2V0
dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJ
bnMpOwogICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRTZXR0
ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdElu
cy5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJR05P
UkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lc3BhY2VPYmplY3QuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3ROYW1lc3BhY2VPYmplY3QuY3BwCShyZXZpc2lvbiAyODYwODEpCisrKyBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZXNwYWNlT2JqZWN0LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjgwLDkgKzI4MCw5IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVz
dE5hbWVzcGFjZU9iamVjdDoKICAgICAgICAgcmV0dXJuIHNwYWNlOwogICAgIHN0YXRpY19hc3Nl
cnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0TmFt
ZXNwYWNlT2JqZWN0PiB8fCAhSlNUZXN0TmFtZXNwYWNlT2JqZWN0OjpuZWVkc0Rlc3RydWN0aW9u
KTsKICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGli
bGVPYmplY3QsIEpTVGVzdE5hbWVzcGFjZU9iamVjdD4pCi0gICAgICAgIHNwYWNlcy5tX3N1YnNw
YWNlRm9yVGVzdE5hbWVzcGFjZU9iamVjdCA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19T
VUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUs
IEpTVGVzdE5hbWVzcGFjZU9iamVjdCk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVz
dE5hbWVzcGFjZU9iamVjdCA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9J
TklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RO
YW1lc3BhY2VPYmplY3QpOwogICAgIGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JU
ZXN0TmFtZXNwYWNlT2JqZWN0ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNF
X0lOSVQodm0uaGVhcCwgKnZtLmNlbGxIZWFwQ2VsbFR5cGUsIEpTVGVzdE5hbWVzcGFjZU9iamVj
dCk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVzcGFjZU9iamVjdCA9IG1h
a2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxI
ZWFwQ2VsbFR5cGUoKSwgSlNUZXN0TmFtZXNwYWNlT2JqZWN0KTsKICAgICBhdXRvKiBzcGFjZSA9
IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVzcGFjZU9iamVjdC5nZXQoKTsKIElHTk9SRV9X
QVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4o
InRhdXRvbG9naWNhbC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3ROb2RlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Tm9kZS5jcHAJKHJldmlzaW9uIDI4NjA4
MSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROb2Rl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTUsNyArOTUsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGlj
IEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAg
ICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0Tm9kZVByb3RvdHlw
ZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAg
cmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0
cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAtNDA1LDkg
KzQwNSw5IEBAIHB1YmxpYzoKICAgICAgICAgICAgIHJldHVybiBzcGFjZTsKICAgICAgICAgc3Rh
dGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBU
ZXN0Tm9kZUl0ZXJhdG9yPiB8fCAhVGVzdE5vZGVJdGVyYXRvcjo6bmVlZHNEZXN0cnVjdGlvbik7
CiAgICAgICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0
aWJsZU9iamVjdCwgVGVzdE5vZGVJdGVyYXRvcj4pCi0gICAgICAgICAgICBzcGFjZXMubV9zdWJz
cGFjZUZvclRlc3ROb2RlSXRlcmF0b3IgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VC
U1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmdl
dCgpLCBUZXN0Tm9kZUl0ZXJhdG9yKTsKKyAgICAgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9y
VGVzdE5vZGVJdGVyYXRvciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9J
TklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBUZXN0Tm9k
ZUl0ZXJhdG9yKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VG
b3JUZXN0Tm9kZUl0ZXJhdG9yID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNF
X0lOSVQodm0uaGVhcCwgKnZtLmNlbGxIZWFwQ2VsbFR5cGUsIFRlc3ROb2RlSXRlcmF0b3IpOwor
ICAgICAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0Tm9kZUl0ZXJhdG9yID0gbWFrZVVu
aXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBD
ZWxsVHlwZSgpLCBUZXN0Tm9kZUl0ZXJhdG9yKTsKICAgICAgICAgYXV0byogc3BhY2UgPSBzcGFj
ZXMubV9zdWJzcGFjZUZvclRlc3ROb2RlSXRlcmF0b3IuZ2V0KCk7CiBJR05PUkVfV0FSTklOR1Nf
QkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xv
Z2ljYWwtY29tcGFyZSIpCkBAIC00OTcsOSArNDk3LDkgQEAgSlNDOjpJc29TdWJzcGFjZSogSlNU
ZXN0Tm9kZTo6c3Vic3BhY2VGbwogICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fz
c2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RO
b2RlPiB8fCAhSlNUZXN0Tm9kZTo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3RleHBy
IChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3ROb2Rl
PikKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0Tm9kZSA9IG1ha2VVbmlxdWU8SXNv
U3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5kZXN0cnVjdGlibGVPYmpl
Y3RIZWFwQ2VsbFR5cGUsIEpTVGVzdE5vZGUpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZv
clRlc3ROb2RlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0u
aGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCksIEpTVGVzdE5vZGUpOwog
ICAgIGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0Tm9kZSA9IG1ha2VVbmlx
dWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5jZWxsSGVhcENl
bGxUeXBlLCBKU1Rlc3ROb2RlKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0Tm9k
ZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZt
LmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0Tm9kZSk7CiAgICAgYXV0byogc3BhY2UgPSBzcGFj
ZXMubV9zdWJzcGFjZUZvclRlc3ROb2RlLmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1
bnJlYWNoYWJsZS1jb2RlIikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNv
bXBhcmUiKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdE9iai5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAJKHJldmlzaW9uIDI4NjA4MSkKKysrIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xODY2LDcgKzE4NjYsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3Bh
Y2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VS
VF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0T2JqUHJvdG90eXBlLCBCYXNlKTsKLSAgICAg
ICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWlu
T2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVT
dHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
SlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC05MDA2LDkgKzkwMDYsOSBAQCBKU0M6
Oklzb1N1YnNwYWNlKiBKU1Rlc3RPYmo6OnN1YnNwYWNlRm9yCiAgICAgICAgIHJldHVybiBzcGFj
ZTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGli
bGVPYmplY3QsIEpTVGVzdE9iaj4gfHwgIUpTVGVzdE9iajo6bmVlZHNEZXN0cnVjdGlvbik7CiAg
ICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2Jq
ZWN0LCBKU1Rlc3RPYmo+KQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RPYmogPSBt
YWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uZGVz
dHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLCBKU1Rlc3RPYmopOworICAgICAgICBzcGFjZXMu
bV9zdWJzcGFjZUZvclRlc3RPYmogPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BB
Q0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwgSlNU
ZXN0T2JqKTsKICAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE9iaiA9
IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5j
ZWxsSGVhcENlbGxUeXBlLCBKU1Rlc3RPYmopOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZv
clRlc3RPYmogPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5o
ZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCksIEpTVGVzdE9iaik7CiAgICAgYXV0byogc3BhY2Ug
PSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RPYmouZ2V0KCk7CiBJR05PUkVfV0FSTklOR1NfQkVH
SU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2lj
YWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0T3BlcmF0aW9uQ29uZGl0aW9uYWwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPcGVyYXRpb25Db25kaXRpb25h
bC5jcHAJKHJldmlzaW9uIDI4NjA4MSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RPcGVyYXRpb25Db25kaXRpb25hbC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTgxLDcgKzgxLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBz
dWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNP
X1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdE9wZXJhdGlvbkNvbmRpdGlvbmFsUHJvdG90eXBlLCBC
YXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1
cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0
dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC0yMzQsOSArMjM0
LDkgQEAgSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0T3BlcmF0aW9uQ29uZGl0aQogICAgICAgICBy
ZXR1cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpT
RGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RPcGVyYXRpb25Db25kaXRpb25hbD4gfHwgIUpTVGVz
dE9wZXJhdGlvbkNvbmRpdGlvbmFsOjpuZWVkc0Rlc3RydWN0aW9uKTsKICAgICBpZiBjb25zdGV4
cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdE9w
ZXJhdGlvbkNvbmRpdGlvbmFsPikKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0T3Bl
cmF0aW9uQ29uZGl0aW9uYWwgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0Vf
SU5JVCh2bS5oZWFwLCAqdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLCBKU1Rlc3RP
cGVyYXRpb25Db25kaXRpb25hbCk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE9w
ZXJhdGlvbkNvbmRpdGlvbmFsID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNF
X0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCksIEpTVGVz
dE9wZXJhdGlvbkNvbmRpdGlvbmFsKTsKICAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNw
YWNlRm9yVGVzdE9wZXJhdGlvbkNvbmRpdGlvbmFsID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4g
SVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmNlbGxIZWFwQ2VsbFR5cGUsIEpTVGVzdE9w
ZXJhdGlvbkNvbmRpdGlvbmFsKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0T3Bl
cmF0aW9uQ29uZGl0aW9uYWwgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0Vf
SU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCksIEpTVGVzdE9wZXJhdGlvbkNvbmRp
dGlvbmFsKTsKICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE9wZXJh
dGlvbkNvbmRpdGlvbmFsLmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJs
ZS1jb2RlIikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJ
bmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJs
b2FkZWRDb25zdHJ1Y3RvcnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmNwcAkocmV2
aXNpb24gMjg2MDgxKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02OSw3
ICs2OSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VG
b3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFD
RV9TSEFSQUJMRShKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzUHJvdG90eXBlLCBCYXNlKTsK
LSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZt
LnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBj
cmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC0yOTUsOSArMjk1LDkgQEAg
SlNDOjpJc29TdWJzcGFjZSogSlNUZXN0T3ZlcmxvYWRlZENvbnN0cgogICAgICAgICByZXR1cm4g
c3BhY2U7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1
Y3RpYmxlT2JqZWN0LCBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzPiB8fCAhSlNUZXN0T3Zl
cmxvYWRlZENvbnN0cnVjdG9yczo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3RleHBy
IChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RPdmVy
bG9hZGVkQ29uc3RydWN0b3JzPikKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0T3Zl
cmxvYWRlZENvbnN0cnVjdG9ycyA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFD
RV9JTklUKHZtLmhlYXAsICp2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUsIEpTVGVz
dE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRl
c3RPdmVybG9hZGVkQ29uc3RydWN0b3JzID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NV
QlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCks
IEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMpOwogICAgIGVsc2UKLSAgICAgICAgc3BhY2Vz
Lm1fc3Vic3BhY2VGb3JUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyA9IG1ha2VVbmlxdWU8SXNv
U3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5jZWxsSGVhcENlbGxUeXBl
LCBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3Bh
Y2VGb3JUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+
IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0
T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyk7CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJz
cGFjZUZvclRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmdldCgpOwogSUdOT1JFX1dBUk5JTkdT
X0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9s
b2dpY2FsLWNvbXBhcmUiKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2UuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RP
dmVybG9hZGVkQ29uc3RydWN0b3JzV2l0aFNlcXVlbmNlLmNwcAkocmV2aXNpb24gMjg2MDgxKQor
KysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJsb2Fk
ZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02OCw3ICs2
OCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3Io
SlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9T
SEFSQUJMRShKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzV2l0aFNlcXVlbmNlUHJvdG90eXBl
LCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICBy
ZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3Ry
dWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC0yMzgsOSAr
MjM4LDkgQEAgSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0T3ZlcmxvYWRlZENvbnN0cgogICAgICAg
ICByZXR1cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6
OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzV2l0aFNl
cXVlbmNlPiB8fCAhSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5jZTo6bmVl
ZHNEZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6
OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzV2l0aFNl
cXVlbmNlPikKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0T3ZlcmxvYWRlZENvbnN0
cnVjdG9yc1dpdGhTZXF1ZW5jZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFD
RV9JTklUKHZtLmhlYXAsICp2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUsIEpTVGVz
dE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2UpOworICAgICAgICBzcGFjZXMubV9z
dWJzcGFjZUZvclRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzV2l0aFNlcXVlbmNlID0gbWFrZVVu
aXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3Rp
YmxlT2JqZWN0SGVhcENlbGxUeXBlKCksIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRo
U2VxdWVuY2UpOwogICAgIGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0T3Zl
cmxvYWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5jZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+
IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5jZWxsSGVhcENlbGxUeXBlLCBKU1Rlc3RP
dmVybG9hZGVkQ29uc3RydWN0b3JzV2l0aFNlcXVlbmNlKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vi
c3BhY2VGb3JUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5jZSA9IG1ha2VVbmlx
dWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2Vs
bFR5cGUoKSwgSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5jZSk7CiAgICAg
YXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RPdmVybG9hZGVkQ29uc3RydWN0
b3JzV2l0aFNlcXVlbmNlLmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJs
ZS1jb2RlIikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJ
bmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFBsdWdp
bkludGVyZmFjZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdFBsdWdpbkludGVyZmFjZS5jcHAJKHJldmlzaW9uIDI4NjA4MSkK
KysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RQbHVnaW5J
bnRlcmZhY2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NCw3ICs2NCw3IEBAIHB1YmxpYzoKICAg
ICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAg
ewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3RQbHVn
aW5JbnRlcmZhY2VQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2Jq
ZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0K
ICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwg
SlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBl
KQogICAgIHsKQEAgLTI0NCw5ICsyNDQsOSBAQCBKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3RQbHVn
aW5JbnRlcmZhY2U6CiAgICAgICAgIHJldHVybiBzcGFjZTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0
ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdFBsdWdpbklu
dGVyZmFjZT4gfHwgIUpTVGVzdFBsdWdpbkludGVyZmFjZTo6bmVlZHNEZXN0cnVjdGlvbik7CiAg
ICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2Jq
ZWN0LCBKU1Rlc3RQbHVnaW5JbnRlcmZhY2U+KQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZv
clRlc3RQbHVnaW5JbnRlcmZhY2UgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BB
Q0VfSU5JVCh2bS5oZWFwLCAqdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLCBKU1Rl
c3RQbHVnaW5JbnRlcmZhY2UpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RQbHVn
aW5JbnRlcmZhY2UgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2
bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0UGx1Z2lu
SW50ZXJmYWNlKTsKICAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFBs
dWdpbkludGVyZmFjZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklU
KHZtLmhlYXAsICp2bS5jZWxsSGVhcENlbGxUeXBlLCBKU1Rlc3RQbHVnaW5JbnRlcmZhY2UpOwor
ICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RQbHVnaW5JbnRlcmZhY2UgPSBtYWtlVW5p
cXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENl
bGxUeXBlKCksIEpTVGVzdFBsdWdpbkludGVyZmFjZSk7CiAgICAgYXV0byogc3BhY2UgPSBzcGFj
ZXMubV9zdWJzcGFjZUZvclRlc3RQbHVnaW5JbnRlcmZhY2UuZ2V0KCk7CiBJR05PUkVfV0FSTklO
R1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0
b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0UHJvbWlzZVJlamVj
dGlvbkV2ZW50LmNwcAkocmV2aXNpb24gMjg2MDgxKQorKysgU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTE0OCw3ICsxNDgsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNv
U3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElD
X0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50
UHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOwor
ICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGlj
IEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBA
IC0zMDEsOSArMzAxLDkgQEAgSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0UHJvbWlzZVJlamVjdGlv
bgogICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vf
b2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZl
bnQ+IHx8ICFKU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQ6Om5lZWRzRGVzdHJ1Y3Rpb24pOwog
ICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9i
amVjdCwgSlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50PikKLSAgICAgICAgc3BhY2VzLm1fc3Vi
c3BhY2VGb3JUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFj
ZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBD
ZWxsVHlwZSwgSlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50KTsKKyAgICAgICAgc3BhY2VzLm1f
c3Vic3BhY2VGb3JUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50ID0gbWFrZVVuaXF1ZTxJc29TdWJz
cGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVh
cENlbGxUeXBlKCksIEpTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudCk7CiAgICAgZWxzZQotICAg
ICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQgPSBtYWtl
VW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uY2VsbEhl
YXBDZWxsVHlwZSwgSlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50KTsKKyAgICAgICAgc3BhY2Vz
Lm1fc3Vic3BhY2VGb3JUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50ID0gbWFrZVVuaXF1ZTxJc29T
dWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgp
LCBKU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQpOwogICAgIGF1dG8qIHNwYWNlID0gc3BhY2Vz
Lm1fc3Vic3BhY2VGb3JUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50LmdldCgpOwogSUdOT1JFX1dB
Uk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigi
dGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdFJlYWRPbmx5TWFwTGlrZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFJlYWRPbmx5TWFwTGlr
ZS5jcHAJKHJldmlzaW9uIDI4NjA4MSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RSZWFkT25seU1hcExpa2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03
OSw3ICs3OSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3Bh
Y2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJT
UEFDRV9TSEFSQUJMRShKU1Rlc3RSZWFkT25seU1hcExpa2VQcm90b3R5cGUsIEJhc2UpOwotICAg
ICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxh
aW5PYmplY3RTcGFjZSgpOwogICAgIH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0
ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKQEAgLTMwNSw5ICszMDUsOSBAQCBKU0M6
Oklzb1N1YnNwYWNlKiBKU1Rlc3RSZWFkT25seU1hcExpa2U6CiAgICAgICAgIHJldHVybiBzcGFj
ZTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGli
bGVPYmplY3QsIEpTVGVzdFJlYWRPbmx5TWFwTGlrZT4gfHwgIUpTVGVzdFJlYWRPbmx5TWFwTGlr
ZTo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2Zf
djxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RSZWFkT25seU1hcExpa2U+KQotICAg
ICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RSZWFkT25seU1hcExpa2UgPSBtYWtlVW5pcXVl
PElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uZGVzdHJ1Y3RpYmxl
T2JqZWN0SGVhcENlbGxUeXBlLCBKU1Rlc3RSZWFkT25seU1hcExpa2UpOworICAgICAgICBzcGFj
ZXMubV9zdWJzcGFjZUZvclRlc3RSZWFkT25seU1hcExpa2UgPSBtYWtlVW5pcXVlPElzb1N1YnNw
YWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFw
Q2VsbFR5cGUoKSwgSlNUZXN0UmVhZE9ubHlNYXBMaWtlKTsKICAgICBlbHNlCi0gICAgICAgIHNw
YWNlcy5tX3N1YnNwYWNlRm9yVGVzdFJlYWRPbmx5TWFwTGlrZSA9IG1ha2VVbmlxdWU8SXNvU3Vi
c3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5jZWxsSGVhcENlbGxUeXBlLCBK
U1Rlc3RSZWFkT25seU1hcExpa2UpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RS
ZWFkT25seU1hcExpa2UgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5J
VCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCksIEpTVGVzdFJlYWRPbmx5TWFwTGlrZSk7
CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RSZWFkT25seU1hcExp
a2UuZ2V0KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdO
T1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0UmVhZE9ubHlTZXRMaWtlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0UmVhZE9ubHlTZXRMaWtlLmNwcAkocmV2aXNpb24gMjg2MDgxKQorKysgU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFJlYWRPbmx5U2V0TGlrZS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTc4LDcgKzc4LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6
Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNU
QVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdFJlYWRPbmx5U2V0TGlrZVBy
b3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAg
ICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBK
U0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAt
Mjg0LDkgKzI4NCw5IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdFJlYWRPbmx5U2V0TGlrZToK
ICAgICAgICAgcmV0dXJuIHNwYWNlOwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29m
X3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0UmVhZE9ubHlTZXRMaWtlPiB8fCAh
SlNUZXN0UmVhZE9ubHlTZXRMaWtlOjpuZWVkc0Rlc3RydWN0aW9uKTsKICAgICBpZiBjb25zdGV4
cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdFJl
YWRPbmx5U2V0TGlrZT4pCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFJlYWRPbmx5
U2V0TGlrZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhl
YXAsICp2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUsIEpTVGVzdFJlYWRPbmx5U2V0
TGlrZSk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFJlYWRPbmx5U2V0TGlrZSA9
IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRl
c3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RSZWFkT25seVNldExpa2UpOwog
ICAgIGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0UmVhZE9ubHlTZXRMaWtl
ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZt
LmNlbGxIZWFwQ2VsbFR5cGUsIEpTVGVzdFJlYWRPbmx5U2V0TGlrZSk7CisgICAgICAgIHNwYWNl
cy5tX3N1YnNwYWNlRm9yVGVzdFJlYWRPbmx5U2V0TGlrZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3Bh
Y2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNU
ZXN0UmVhZE9ubHlTZXRMaWtlKTsKICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNl
Rm9yVGVzdFJlYWRPbmx5U2V0TGlrZS5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5y
ZWFjaGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21w
YXJlIikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RSZXBvcnRFeHRyYU1lbW9yeUNvc3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RSZXBvcnRFeHRyYU1lbW9yeUNvc3QuY3Bw
CShyZXZpc2lvbiAyODYwODEpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0UmVwb3J0RXh0cmFNZW1vcnlDb3N0LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NjMsNyArNjMsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNw
YWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VC
U1BBQ0VfU0hBUkFCTEUoSlNUZXN0UmVwb3J0RXh0cmFNZW1vcnlDb3N0UHJvdG90eXBlLCBCYXNl
KTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4g
JnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJl
KiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC0xNzEsOSArMTcxLDkg
QEAgSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0UmVwb3J0RXh0cmFNZW1vcgogICAgICAgICByZXR1
cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVz
dHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RSZXBvcnRFeHRyYU1lbW9yeUNvc3Q+IHx8ICFKU1Rlc3RS
ZXBvcnRFeHRyYU1lbW9yeUNvc3Q6Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhw
ciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0UmVw
b3J0RXh0cmFNZW1vcnlDb3N0PikKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0UmVw
b3J0RXh0cmFNZW1vcnlDb3N0ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNF
X0lOSVQodm0uaGVhcCwgKnZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSwgSlNUZXN0
UmVwb3J0RXh0cmFNZW1vcnlDb3N0KTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0
UmVwb3J0RXh0cmFNZW1vcnlDb3N0ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQ
QUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCksIEpT
VGVzdFJlcG9ydEV4dHJhTWVtb3J5Q29zdCk7CiAgICAgZWxzZQotICAgICAgICBzcGFjZXMubV9z
dWJzcGFjZUZvclRlc3RSZXBvcnRFeHRyYU1lbW9yeUNvc3QgPSBtYWtlVW5pcXVlPElzb1N1YnNw
YWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uY2VsbEhlYXBDZWxsVHlwZSwgSlNU
ZXN0UmVwb3J0RXh0cmFNZW1vcnlDb3N0KTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JU
ZXN0UmVwb3J0RXh0cmFNZW1vcnlDb3N0ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NV
QlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RSZXBvcnRF
eHRyYU1lbW9yeUNvc3QpOwogICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JU
ZXN0UmVwb3J0RXh0cmFNZW1vcnlDb3N0LmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1
bnJlYWNoYWJsZS1jb2RlIikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNv
bXBhcmUiKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZUludGVyZmFjZS5jcHAJKHJldmlzaW9uIDI4NjA4MSkKKysrIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRl
cmZhY2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04OSw3ICs4OSw3IEBAIHB1YmxpYzoKICAgICBz
dGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewog
ICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3RTZXJpYWxp
emVkU2NyaXB0VmFsdWVJbnRlcmZhY2VQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4g
JnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFj
ZSgpOwogICAgIH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShK
U0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFs
dWUgcHJvdG90eXBlKQogICAgIHsKQEAgLTM0OSw5ICszNDksOSBAQCBKU0M6Oklzb1N1YnNwYWNl
KiBKU1Rlc3RTZXJpYWxpemVkU2NyaXB0CiAgICAgICAgIHJldHVybiBzcGFjZTsKICAgICBzdGF0
aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpT
VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZT4gfHwgIUpTVGVzdFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZUludGVyZmFjZTo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3RleHBy
IChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RTZXJp
YWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2U+KQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZv
clRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UgPSBtYWtlVW5pcXVlPElzb1N1YnNw
YWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVh
cENlbGxUeXBlLCBKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UpOworICAgICAg
ICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2Ug
PSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5k
ZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZh
bHVlSW50ZXJmYWNlKTsKICAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVz
dFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+
IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5jZWxsSGVhcENlbGxUeXBlLCBKU1Rlc3RT
ZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFj
ZUZvclRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UgPSBtYWtlVW5pcXVlPElzb1N1
YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCks
IEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSk7CiAgICAgYXV0byogc3BhY2Ug
PSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2Uu
Z2V0KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JF
X1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2V0TGlrZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNldExp
a2UuY3BwCShyZXZpc2lvbiAyODYwODEpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0U2V0TGlrZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgxLDcgKzgx
LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihK
U0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NI
QVJBQkxFKEpTVGVzdFNldExpa2VQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZt
LnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgp
OwogICAgIH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6
OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUg
cHJvdG90eXBlKQogICAgIHsKQEAgLTM0Miw5ICszNDIsOSBAQCBKU0M6Oklzb1N1YnNwYWNlKiBK
U1Rlc3RTZXRMaWtlOjpzdWJzcGFjCiAgICAgICAgIHJldHVybiBzcGFjZTsKICAgICBzdGF0aWNf
YXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVz
dFNldExpa2U+IHx8ICFKU1Rlc3RTZXRMaWtlOjpuZWVkc0Rlc3RydWN0aW9uKTsKICAgICBpZiBj
b25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpT
VGVzdFNldExpa2U+KQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RTZXRMaWtlID0g
bWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmRl
c3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSwgSlNUZXN0U2V0TGlrZSk7CisgICAgICAgIHNw
YWNlcy5tX3N1YnNwYWNlRm9yVGVzdFNldExpa2UgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJ
U09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5
cGUoKSwgSlNUZXN0U2V0TGlrZSk7CiAgICAgZWxzZQotICAgICAgICBzcGFjZXMubV9zdWJzcGFj
ZUZvclRlc3RTZXRMaWtlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lO
SVQodm0uaGVhcCwgKnZtLmNlbGxIZWFwQ2VsbFR5cGUsIEpTVGVzdFNldExpa2UpOworICAgICAg
ICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RTZXRMaWtlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFj
ZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU1Rl
c3RTZXRMaWtlKTsKICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFNl
dExpa2UuZ2V0KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQog
SUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2V0TGlrZVdpdGhPdmVy
cmlkZGVuT3BlcmF0aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNldExpa2VXaXRoT3ZlcnJpZGRlbk9wZXJhdGlvbnMu
Y3BwCShyZXZpc2lvbiAyODYwODEpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0U2V0TGlrZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9ucy5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTg1LDcgKzg1LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1
YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19B
U1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdFNldExpa2VXaXRoT3ZlcnJpZGRlbk9w
ZXJhdGlvbnNQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0
U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KICAg
ICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlND
OjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQog
ICAgIHsKQEAgLTM1NCw5ICszNTQsOSBAQCBKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3RTZXRMaWtl
V2l0aE92ZXJyCiAgICAgICAgIHJldHVybiBzcGFjZTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6
aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdFNldExpa2VXaXRo
T3ZlcnJpZGRlbk9wZXJhdGlvbnM+IHx8ICFKU1Rlc3RTZXRMaWtlV2l0aE92ZXJyaWRkZW5PcGVy
YXRpb25zOjpuZWVkc0Rlc3RydWN0aW9uKTsKICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFz
ZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdFNldExpa2VXaXRoT3ZlcnJp
ZGRlbk9wZXJhdGlvbnM+KQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RTZXRMaWtl
V2l0aE92ZXJyaWRkZW5PcGVyYXRpb25zID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NV
QlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSwg
SlNUZXN0U2V0TGlrZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9ucyk7CisgICAgICAgIHNwYWNlcy5t
X3N1YnNwYWNlRm9yVGVzdFNldExpa2VXaXRoT3ZlcnJpZGRlbk9wZXJhdGlvbnMgPSBtYWtlVW5p
cXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGli
bGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0U2V0TGlrZVdpdGhPdmVycmlkZGVuT3BlcmF0
aW9ucyk7CiAgICAgZWxzZQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RTZXRMaWtl
V2l0aE92ZXJyaWRkZW5PcGVyYXRpb25zID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NV
QlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmNlbGxIZWFwQ2VsbFR5cGUsIEpTVGVzdFNldExpa2VX
aXRoT3ZlcnJpZGRlbk9wZXJhdGlvbnMpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRl
c3RTZXRMaWtlV2l0aE92ZXJyaWRkZW5PcGVyYXRpb25zID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFj
ZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU1Rl
c3RTZXRMaWtlV2l0aE92ZXJyaWRkZW5PcGVyYXRpb25zKTsKICAgICBhdXRvKiBzcGFjZSA9IHNw
YWNlcy5tX3N1YnNwYWNlRm9yVGVzdFNldExpa2VXaXRoT3ZlcnJpZGRlbk9wZXJhdGlvbnMuZ2V0
KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dB
Uk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXIuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJp
bmdpZmllci5jcHAJKHJldmlzaW9uIDI4NjA4MSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTY5LDcgKzY5LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJz
cGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NV
QlNQQUNFX1NIQVJBQkxFKEpTVGVzdFN0cmluZ2lmaWVyUHJvdG90eXBlLCBCYXNlKTsKLSAgICAg
ICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWlu
T2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVT
dHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
SlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC0xOTIsOSArMTkyLDkgQEAgSlNDOjpJ
c29TdWJzcGFjZSogSlNUZXN0U3RyaW5naWZpZXI6OnN1YgogICAgICAgICByZXR1cm4gc3BhY2U7
CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxl
T2JqZWN0LCBKU1Rlc3RTdHJpbmdpZmllcj4gfHwgIUpTVGVzdFN0cmluZ2lmaWVyOjpuZWVkc0Rl
c3RydWN0aW9uKTsKICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNE
ZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdFN0cmluZ2lmaWVyPikKLSAgICAgICAgc3BhY2VzLm1f
c3Vic3BhY2VGb3JUZXN0U3RyaW5naWZpZXIgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09f
U1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBl
LCBKU1Rlc3RTdHJpbmdpZmllcik7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFN0
cmluZ2lmaWVyID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0u
aGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCksIEpTVGVzdFN0cmluZ2lm
aWVyKTsKICAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFN0cmluZ2lm
aWVyID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwg
KnZtLmNlbGxIZWFwQ2VsbFR5cGUsIEpTVGVzdFN0cmluZ2lmaWVyKTsKKyAgICAgICAgc3BhY2Vz
Lm1fc3Vic3BhY2VGb3JUZXN0U3RyaW5naWZpZXIgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJ
U09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCksIEpTVGVzdFN0
cmluZ2lmaWVyKTsKICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFN0
cmluZ2lmaWVyLmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2Rl
IikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRleDog
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVy
QW5vbnltb3VzT3BlcmF0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJBbm9ueW1vdXNPcGVyYXRpb24u
Y3BwCShyZXZpc2lvbiAyODYwODEpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJBbm9ueW1vdXNPcGVyYXRpb24uY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC02OSw3ICs2OSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJz
cGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNT
RVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3RTdHJpbmdpZmllckFub255bW91c09wZXJh
dGlvblByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFj
ZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0
YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAg
ewpAQCAtMTkyLDkgKzE5Miw5IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdFN0cmluZ2lmaWVy
QW5vbnkKICAgICAgICAgcmV0dXJuIHNwYWNlOwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19i
YXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0U3RyaW5naWZpZXJBbm9u
eW1vdXNPcGVyYXRpb24+IHx8ICFKU1Rlc3RTdHJpbmdpZmllckFub255bW91c09wZXJhdGlvbjo6
bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxK
U0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RTdHJpbmdpZmllckFub255bW91c09wZXJh
dGlvbj4pCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFN0cmluZ2lmaWVyQW5vbnlt
b3VzT3BlcmF0aW9uID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQo
dm0uaGVhcCwgKnZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSwgSlNUZXN0U3RyaW5n
aWZpZXJBbm9ueW1vdXNPcGVyYXRpb24pOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRl
c3RTdHJpbmdpZmllckFub255bW91c09wZXJhdGlvbiA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+
IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxs
VHlwZSgpLCBKU1Rlc3RTdHJpbmdpZmllckFub255bW91c09wZXJhdGlvbik7CiAgICAgZWxzZQot
ICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RTdHJpbmdpZmllckFub255bW91c09wZXJh
dGlvbiA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAs
ICp2bS5jZWxsSGVhcENlbGxUeXBlLCBKU1Rlc3RTdHJpbmdpZmllckFub255bW91c09wZXJhdGlv
bik7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFN0cmluZ2lmaWVyQW5vbnltb3Vz
T3BlcmF0aW9uID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0u
aGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RTdHJpbmdpZmllckFub255bW91c09w
ZXJhdGlvbik7CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RTdHJp
bmdpZmllckFub255bW91c09wZXJhdGlvbi5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigi
dW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1j
b21wYXJlIikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RTdHJpbmdpZmllck5hbWVkT3BlcmF0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJOYW1lZE9w
ZXJhdGlvbi5jcHAJKHJldmlzaW9uIDI4NjA4MSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllck5hbWVkT3BlcmF0aW9uLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNzAsNyArNzAsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNv
U3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElD
X0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0U3RyaW5naWZpZXJOYW1lZE9wZXJh
dGlvblByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFj
ZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0
YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAg
ewpAQCAtMjA5LDkgKzIwOSw5IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdFN0cmluZ2lmaWVy
TmFtZWQKICAgICAgICAgcmV0dXJuIHNwYWNlOwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19i
YXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0U3RyaW5naWZpZXJOYW1l
ZE9wZXJhdGlvbj4gfHwgIUpTVGVzdFN0cmluZ2lmaWVyTmFtZWRPcGVyYXRpb246Om5lZWRzRGVz
dHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rl
c3RydWN0aWJsZU9iamVjdCwgSlNUZXN0U3RyaW5naWZpZXJOYW1lZE9wZXJhdGlvbj4pCi0gICAg
ICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFN0cmluZ2lmaWVyTmFtZWRPcGVyYXRpb24gPSBt
YWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uZGVz
dHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLCBKU1Rlc3RTdHJpbmdpZmllck5hbWVkT3BlcmF0
aW9uKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0U3RyaW5naWZpZXJOYW1lZE9w
ZXJhdGlvbiA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhl
YXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RTdHJpbmdpZmll
ck5hbWVkT3BlcmF0aW9uKTsKICAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9y
VGVzdFN0cmluZ2lmaWVyTmFtZWRPcGVyYXRpb24gPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJ
U09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uY2VsbEhlYXBDZWxsVHlwZSwgSlNUZXN0U3Ry
aW5naWZpZXJOYW1lZE9wZXJhdGlvbik7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVz
dFN0cmluZ2lmaWVyTmFtZWRPcGVyYXRpb24gPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09f
U1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCksIEpTVGVzdFN0cmlu
Z2lmaWVyTmFtZWRPcGVyYXRpb24pOwogICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3Bh
Y2VGb3JUZXN0U3RyaW5naWZpZXJOYW1lZE9wZXJhdGlvbi5nZXQoKTsKIElHTk9SRV9XQVJOSU5H
U19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRv
bG9naWNhbC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbkltcGxlbWVudGVkQXMuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RT
dHJpbmdpZmllck9wZXJhdGlvbkltcGxlbWVudGVkQXMuY3BwCShyZXZpc2lvbiAyODYwODEpCisr
KyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZp
ZXJPcGVyYXRpb25JbXBsZW1lbnRlZEFzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzAsNyArNzAs
NyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpT
Qzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hB
UkFCTEUoSlNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25JbXBsZW1lbnRlZEFzUHJvdG90eXBlLCBC
YXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1
cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0
dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC0yMDksOSArMjA5
LDkgQEAgSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0U3RyaW5naWZpZXJPcGVyYQogICAgICAgICBy
ZXR1cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpT
RGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbkltcGxlbWVudGVk
QXM+IHx8ICFKU1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbkltcGxlbWVudGVkQXM6Om5lZWRzRGVz
dHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rl
c3RydWN0aWJsZU9iamVjdCwgSlNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25JbXBsZW1lbnRlZEFz
PikKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25J
bXBsZW1lbnRlZEFzID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQo
dm0uaGVhcCwgKnZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSwgSlNUZXN0U3RyaW5n
aWZpZXJPcGVyYXRpb25JbXBsZW1lbnRlZEFzKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VG
b3JUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25JbXBsZW1lbnRlZEFzID0gbWFrZVVuaXF1ZTxJc29T
dWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0
SGVhcENlbGxUeXBlKCksIEpTVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uSW1wbGVtZW50ZWRBcyk7
CiAgICAgZWxzZQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RTdHJpbmdpZmllck9w
ZXJhdGlvbkltcGxlbWVudGVkQXMgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BB
Q0VfSU5JVCh2bS5oZWFwLCAqdm0uY2VsbEhlYXBDZWxsVHlwZSwgSlNUZXN0U3RyaW5naWZpZXJP
cGVyYXRpb25JbXBsZW1lbnRlZEFzKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0
U3RyaW5naWZpZXJPcGVyYXRpb25JbXBsZW1lbnRlZEFzID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFj
ZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU1Rl
c3RTdHJpbmdpZmllck9wZXJhdGlvbkltcGxlbWVudGVkQXMpOwogICAgIGF1dG8qIHNwYWNlID0g
c3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25JbXBsZW1lbnRlZEFz
LmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKIElHTk9S
RV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRleDogU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9u
TmFtZWRUb1N0cmluZy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uTmFtZWRUb1N0cmluZy5j
cHAJKHJldmlzaW9uIDI4NjA4MSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbk5hbWVkVG9TdHJpbmcuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC02OSw3ICs2OSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29T
dWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNf
QVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbk5h
bWVkVG9TdHJpbmdQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2Jq
ZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0K
ICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwg
SlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBl
KQogICAgIHsKQEAgLTE5Miw5ICsxOTIsOSBAQCBKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3RTdHJp
bmdpZmllck9wZXJhCiAgICAgICAgIHJldHVybiBzcGFjZTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0
ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdFN0cmluZ2lm
aWVyT3BlcmF0aW9uTmFtZWRUb1N0cmluZz4gfHwgIUpTVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9u
TmFtZWRUb1N0cmluZzo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3RleHByIChzdGQ6
OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RTdHJpbmdpZmll
ck9wZXJhdGlvbk5hbWVkVG9TdHJpbmc+KQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRl
c3RTdHJpbmdpZmllck9wZXJhdGlvbk5hbWVkVG9TdHJpbmcgPSBtYWtlVW5pcXVlPElzb1N1YnNw
YWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVh
cENlbGxUeXBlLCBKU1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbk5hbWVkVG9TdHJpbmcpOworICAg
ICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RTdHJpbmdpZmllck9wZXJhdGlvbk5hbWVkVG9T
dHJpbmcgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFw
LCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0U3RyaW5naWZpZXJP
cGVyYXRpb25OYW1lZFRvU3RyaW5nKTsKICAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNw
YWNlRm9yVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uTmFtZWRUb1N0cmluZyA9IG1ha2VVbmlxdWU8
SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5jZWxsSGVhcENlbGxU
eXBlLCBKU1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbk5hbWVkVG9TdHJpbmcpOworICAgICAgICBz
cGFjZXMubV9zdWJzcGFjZUZvclRlc3RTdHJpbmdpZmllck9wZXJhdGlvbk5hbWVkVG9TdHJpbmcg
PSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5j
ZWxsSGVhcENlbGxUeXBlKCksIEpTVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uTmFtZWRUb1N0cmlu
Zyk7CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RTdHJpbmdpZmll
ck9wZXJhdGlvbk5hbWVkVG9TdHJpbmcuZ2V0KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVu
cmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29t
cGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0U3RyaW5naWZpZXJSZWFkT25seUF0dHJpYnV0ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyUmVhZE9u
bHlBdHRyaWJ1dGUuY3BwCShyZXZpc2lvbiAyODYwODEpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJSZWFkT25seUF0dHJpYnV0ZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTcxLDcgKzcxLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBK
U0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAg
IFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdFN0cmluZ2lmaWVyUmVh
ZE9ubHlBdHRyaWJ1dGVQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWlu
T2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAg
IH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2
bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90
eXBlKQogICAgIHsKQEAgLTIwOCw5ICsyMDgsOSBAQCBKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3RT
dHJpbmdpZmllclJlYWRPCiAgICAgICAgIHJldHVybiBzcGFjZTsKICAgICBzdGF0aWNfYXNzZXJ0
KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdFN0cmlu
Z2lmaWVyUmVhZE9ubHlBdHRyaWJ1dGU+IHx8ICFKU1Rlc3RTdHJpbmdpZmllclJlYWRPbmx5QXR0
cmlidXRlOjpuZWVkc0Rlc3RydWN0aW9uKTsKICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFz
ZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdFN0cmluZ2lmaWVyUmVhZE9u
bHlBdHRyaWJ1dGU+KQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RTdHJpbmdpZmll
clJlYWRPbmx5QXR0cmlidXRlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNF
X0lOSVQodm0uaGVhcCwgKnZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSwgSlNUZXN0
U3RyaW5naWZpZXJSZWFkT25seUF0dHJpYnV0ZSk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNl
Rm9yVGVzdFN0cmluZ2lmaWVyUmVhZE9ubHlBdHRyaWJ1dGUgPSBtYWtlVW5pcXVlPElzb1N1YnNw
YWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFw
Q2VsbFR5cGUoKSwgSlNUZXN0U3RyaW5naWZpZXJSZWFkT25seUF0dHJpYnV0ZSk7CiAgICAgZWxz
ZQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RTdHJpbmdpZmllclJlYWRPbmx5QXR0
cmlidXRlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVh
cCwgKnZtLmNlbGxIZWFwQ2VsbFR5cGUsIEpTVGVzdFN0cmluZ2lmaWVyUmVhZE9ubHlBdHRyaWJ1
dGUpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RTdHJpbmdpZmllclJlYWRPbmx5
QXR0cmlidXRlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0u
aGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RTdHJpbmdpZmllclJlYWRPbmx5QXR0
cmlidXRlKTsKICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFN0cmlu
Z2lmaWVyUmVhZE9ubHlBdHRyaWJ1dGUuZ2V0KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVu
cmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29t
cGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0U3RyaW5naWZpZXJSZWFkV3JpdGVBdHRyaWJ1dGUuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllclJlYWRX
cml0ZUF0dHJpYnV0ZS5jcHAJKHJldmlzaW9uIDI4NjA4MSkKKysrIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllclJlYWRXcml0ZUF0dHJpYnV0
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcyLDcgKzcyLDcgQEAgcHVibGljOgogICAgIHN0YXRp
YyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAg
ICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdFN0cmluZ2lmaWVy
UmVhZFdyaXRlQXR0cmlidXRlUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5w
bGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsK
ICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpW
TSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHBy
b3RvdHlwZSkKICAgICB7CkBAIC0yMjcsOSArMjI3LDkgQEAgSlNDOjpJc29TdWJzcGFjZSogSlNU
ZXN0U3RyaW5naWZpZXJSZWFkVwogICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fz
c2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RT
dHJpbmdpZmllclJlYWRXcml0ZUF0dHJpYnV0ZT4gfHwgIUpTVGVzdFN0cmluZ2lmaWVyUmVhZFdy
aXRlQXR0cmlidXRlOjpuZWVkc0Rlc3RydWN0aW9uKTsKICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6
aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdFN0cmluZ2lmaWVy
UmVhZFdyaXRlQXR0cmlidXRlPikKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0U3Ry
aW5naWZpZXJSZWFkV3JpdGVBdHRyaWJ1dGUgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09f
U1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBl
LCBKU1Rlc3RTdHJpbmdpZmllclJlYWRXcml0ZUF0dHJpYnV0ZSk7CisgICAgICAgIHNwYWNlcy5t
X3N1YnNwYWNlRm9yVGVzdFN0cmluZ2lmaWVyUmVhZFdyaXRlQXR0cmlidXRlID0gbWFrZVVuaXF1
ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxl
T2JqZWN0SGVhcENlbGxUeXBlKCksIEpTVGVzdFN0cmluZ2lmaWVyUmVhZFdyaXRlQXR0cmlidXRl
KTsKICAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFN0cmluZ2lmaWVy
UmVhZFdyaXRlQXR0cmlidXRlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNF
X0lOSVQodm0uaGVhcCwgKnZtLmNlbGxIZWFwQ2VsbFR5cGUsIEpTVGVzdFN0cmluZ2lmaWVyUmVh
ZFdyaXRlQXR0cmlidXRlKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0U3RyaW5n
aWZpZXJSZWFkV3JpdGVBdHRyaWJ1dGUgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VC
U1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCksIEpTVGVzdFN0cmluZ2lm
aWVyUmVhZFdyaXRlQXR0cmlidXRlKTsKICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNw
YWNlRm9yVGVzdFN0cmluZ2lmaWVyUmVhZFdyaXRlQXR0cmlidXRlLmdldCgpOwogSUdOT1JFX1dB
Uk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigi
dGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdFR5cGVkZWZzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0VHlwZWRlZnMuY3BwCShyZXZpc2lv
biAyODYwODEpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0VHlwZWRlZnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTYsNyArMTE2LDcgQEAgcHVibGlj
OgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkK
ICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVz
dFR5cGVkZWZzUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVj
dFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAg
ICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpT
Qzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkK
ICAgICB7CkBAIC03NzgsOSArNzc4LDkgQEAgSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0VHlwZWRl
ZnM6OnN1YnNwYQogICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6
OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RUeXBlZGVmcz4g
fHwgIUpTVGVzdFR5cGVkZWZzOjpuZWVkc0Rlc3RydWN0aW9uKTsKICAgICBpZiBjb25zdGV4cHIg
KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdFR5cGVk
ZWZzPikKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0VHlwZWRlZnMgPSBtYWtlVW5p
cXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uZGVzdHJ1Y3Rp
YmxlT2JqZWN0SGVhcENlbGxUeXBlLCBKU1Rlc3RUeXBlZGVmcyk7CisgICAgICAgIHNwYWNlcy5t
X3N1YnNwYWNlRm9yVGVzdFR5cGVkZWZzID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NV
QlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCks
IEpTVGVzdFR5cGVkZWZzKTsKICAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9y
VGVzdFR5cGVkZWZzID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQo
dm0uaGVhcCwgKnZtLmNlbGxIZWFwQ2VsbFR5cGUsIEpTVGVzdFR5cGVkZWZzKTsKKyAgICAgICAg
c3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0VHlwZWRlZnMgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNl
PiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCksIEpTVGVz
dFR5cGVkZWZzKTsKICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFR5
cGVkZWZzLmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikK
IElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRleDogU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTV29ya2VyR2xvYmFsU2NvcGUu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNXb3JrZXJHbG9iYWxTY29wZS5oCShyZXZpc2lvbiAyODYwODEpCisrKyBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNXb3JrZXJHbG9iYWxTY29wZS5oCSh3b3JraW5n
IGNvcHkpCkBAIC04NSw3ICs4NSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJz
cGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNT
RVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1dvcmtlckdsb2JhbFNjb3BlUHJvdG90eXBlLCBC
YXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1
cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0
dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNXb3JrbGV0R2xvYmFsU2NvcGUuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNX
b3JrbGV0R2xvYmFsU2NvcGUuaAkocmV2aXNpb24gMjg2MDgxKQorKysgU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTV29ya2xldEdsb2JhbFNjb3BlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTg1LDcgKzg1LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNw
YWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NF
UlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTV29ya2xldEdsb2JhbFNjb3BlUHJvdG90eXBlLCBC
YXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1
cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0
dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX3J1bnRpbWUubW0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19ydW50aW1lLm1tCShyZXZpc2lvbiAyODYwODEpCisr
KyBTb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX3J1bnRpbWUubW0JKHdvcmtpbmcgY29w
eSkKQEAgLTMzNSw3ICszMzUsNyBAQCBib29sIE9iamNGYWxsYmFja09iamVjdEltcDo6dG9Cb29s
ZWFuKEpTCiBKU0M6Oklzb1N1YnNwYWNlKiBPYmpjRmFsbGJhY2tPYmplY3RJbXA6OnN1YnNwYWNl
Rm9ySW1wbChKU0M6OlZNJiB2bSkKIHsKICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SlNDOjpJ
c29TdWJzcGFjZVBlclZNPiBwZXJWTShbXSAoSlNDOjpWTSYgdm0pIHsKLSAgICAgICAgcmV0dXJu
IElTT19TVUJTUEFDRV9QQVJBTUVURVJTKCp2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5
cGUsIE9iamNGYWxsYmFja09iamVjdEltcCk7CisgICAgICAgIHJldHVybiBJU09fU1VCU1BBQ0Vf
UEFSQU1FVEVSUyh2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwgT2JqY0ZhbGxi
YWNrT2JqZWN0SW1wKTsKICAgICB9KTsKICAgICByZXR1cm4gJnBlclZNLmdldCgpLmZvclZNKHZt
KTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyT3JXb3JrbGV0U2NyaXB0
Q29udHJvbGxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2Vy
T3JXb3JrbGV0U2NyaXB0Q29udHJvbGxlci5oCShyZXZpc2lvbiAyODYwODEpCisrKyBTb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL1dvcmtlck9yV29ya2xldFNjcmlwdENvbnRyb2xsZXIuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMzgsNiArMzgsNyBAQAogbmFtZXNwYWNlIEpTQyB7CiBjbGFzcyBFeGNlcHRp
b247CiBjbGFzcyBKU0dsb2JhbE9iamVjdDsKK2NsYXNzIEpTTW9kdWxlUmVjb3JkOwogY2xhc3Mg
Vk07CiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>444890</attachid>
            <date>2021-11-20 02:07:10 -0800</date>
            <delta_ts>2021-11-20 02:38:58 -0800</delta_ts>
            <desc>work in progress.</desc>
            <filename>bug-233240e.patch</filename>
            <type>text/plain</type>
            <size>396867</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDI4NjA4MSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpA
QCAtNzYzLDYgKzc2Myw4IEBAIHNldChKYXZhU2NyaXB0Q29yZV9QUklWQVRFX0ZSQU1FV09SS19I
RUEKICAgICBoZWFwL0luY3JlbWVudGFsU3dlZXBlci5oCiAgICAgaGVhcC9Jc29DZWxsU2V0LmgK
ICAgICBoZWFwL0lzb0hlYXBDZWxsVHlwZS5oCisgICAgaGVhcC9Jc29JbmxpbmVkSGVhcENlbGxU
eXBlLmgKKyAgICBoZWFwL0lzb0lubGluZWRIZWFwQ2VsbFR5cGVJbmxpbmVzLmgKICAgICBoZWFw
L0lzb1N1YnNwYWNlLmgKICAgICBoZWFwL0lzb1N1YnNwYWNlSW5saW5lcy5oCiAgICAgaGVhcC9J
c29TdWJzcGFjZVBlclZNLmgKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCShyZXZpc2lvbiAyODYw
ODEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MTQyOSw3ICsxNDI5LDcgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBl
LCBTdWJzcGFjZUFjY2Vzcz4KICAgICBzdGF0aWMgQ29tcGxldGVTdWJzcGFjZSogc3Vic3BhY2VG
b3IoVk0mIHZtKQogICAgIHsKLSAgICAgICAgcmV0dXJuICZ2bS5kZXN0cnVjdGlibGVPYmplY3RT
cGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5kZXN0cnVjdGlibGVPYmplY3RTcGFjZSgpOwogICAg
IH0KIAogICAgIEpTQ01lbW9yeUZvb3RwcmludChWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJl
KQpAQCAtMTc2Miw3ICsxNzYyLDcgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENl
bGxUeXBlLCBTdWJzcGFjZUFjY2Vzcz4KICAgICBzdGF0aWMgQ29tcGxldGVTdWJzcGFjZSogc3Vi
c3BhY2VGb3IoVk0mIHZtKQogICAgIHsKLSAgICAgICAgcmV0dXJuICZ2bS5kZXN0cnVjdGlibGVP
YmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5kZXN0cnVjdGlibGVPYmplY3RTcGFjZSgp
OwogICAgIH0KIAogICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYgdm0s
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDI4NjA4MSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3
b3JraW5nIGNvcHkpCkBAIC0xOTU5LDcgKzE5NTksNyBAQAogCQlFM0M2OTRCMzIzMDI2ODc3MDA2
RkJFNDIgLyogV2FzbU9TUkVudHJ5RGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRTNDNjk0QjEyMzAyNjg3MzAwNkZCRTQyIC8qIFdhc21PU1JFbnRy
eURhdGEuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQlFM0M3M0E5MTI1QkZBNzNCMDBFRkUzMDMgLyogV2FzbVN0cmVhbWluZ1BsYW4uaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzQzczQTkwMjVCRkE3MzQw
MEVGRTMwMyAvKiBXYXNtU3RyZWFtaW5nUGxhbi5oICovOyB9OwogCQlFM0M3OUNBQjFEQjlBNERD
MDBEMUVDQTQgLyogRE9NSklURWZmZWN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBFM0M3OUNBQTFEQjlBNEQ2MDBEMUVDQTQgLyogRE9NSklURWZmZWN0
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJRTND
OEVENDMyM0ExREJDQjAwMTMxOTU4IC8qIElzb0lubGluZWRIZWFwQ2VsbFR5cGUuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzQzhFRDQyMjNBMURCQzUw
MDEzMTk1OCAvKiBJc29JbmxpbmVkSGVhcENlbGxUeXBlLmggKi87IH07CisJCUUzQzhFRDQzMjNB
MURCQ0IwMDEzMTk1OCAvKiBJc29JbmxpbmVkSGVhcENlbGxUeXBlLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFM0M4RUQ0MjIzQTFEQkM1MDAxMzE5NTgg
LyogSXNvSW5saW5lZEhlYXBDZWxsVHlwZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCUUzQ0EzQTRFMjUyN0FCMkYwMDQ4MDJCRiAvKiBKSVRPcGVy
YXRpb25MaXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBFM0NBM0E0QzI1MjdBQjJGMDA0ODAyQkYgLyogSklUT3BlcmF0aW9uTGlzdC5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUzRDIzOUM5MUI4MjlD
MUMwMEJCRUY2NyAvKiBKU01vZHVsZUVudmlyb25tZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFM0QyMzlDNzFCODI5QzFDMDBCQkVGNjcgLyogSlNN
b2R1bGVFbnZpcm9ubWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCUUzRDM1MTVGMjQxQjg5RDcwMDhEQzE2RSAvKiBNYXJrZWRKU1ZhbHVlUmVm
QXJyYXkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUz
RDM1MTVEMjQxQjg5Q0UwMDhEQzE2RSAvKiBNYXJrZWRKU1ZhbHVlUmVmQXJyYXkuaCAqLzsgfTsK
QEAgLTIwNDEsNiArMjA0MSw3IEBACiAJCUZFNjNERDU0MUVBOUI2MUUwMDEwM0E2OSAvKiBQcmlu
dGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTYz
REQ1MzFFQTlCNjBFMDAxMDNBNjkgLyogUHJpbnRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUZFNjQ4NzJFMjE0MUQwNDgwMEFCMEQzRSAvKiBP
cGNvZGVJbmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBGRTY0ODcyRDIxNDFEMDQ4MDBBQjBEM0UgLyogT3Bjb2RlSW5saW5lcy5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUZFNjQ5MTM3MUQ3OEYw
MUQwMEE2OTRENCAvKiBFeGNlcHRpb25TY29wZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRkU2NDkxMzYxRDc4RjAxMzAwQTY5NEQ0IC8qIEV4Y2VwdGlv
blNjb3BlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
KwkJRkU2NUIxNTEyNzQ4NjAxRjAwREI1QjE2IC8qIElzb0lubGluZWRIZWFwQ2VsbFR5cGVJbmxp
bmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTY1
QjE1MDI3NDg2MDFGMDBEQjVCMTYgLyogSXNvSW5saW5lZEhlYXBDZWxsVHlwZUlubGluZXMuaCAq
LzsgfTsKIAkJRkU2OEM2MzcxQjkwREUwNDAwNDJCQ0IzIC8qIE1hY3JvQXNzZW1ibGVyUHJpbnRl
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkU2OEM2
MzYxQjkwREREOTAwNDJCQ0IzIC8qIE1hY3JvQXNzZW1ibGVyUHJpbnRlci5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUZFNkY1NkRFMUU2NEVBRDYw
MEQxNzgwMSAvKiBWTVRyYXBzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBGRTZGNTZERDFFNjRFOTIwMDBEMTc4MDEgLyogVk1UcmFwcy5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUZFNzQ5N0U2MjA5MDAx
QjEwMDAzNTY1QiAvKiBKU0NQdHJUYWcuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEZFNzQ5N0U1MjA5MDAxQjAwMDAzNTY1QiAvKiBKU0NQdHJUYWcuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtNTQ5OSw2
ICs1NTAwLDcgQEAKIAkJRkU2NDg3MkQyMTQxRDA0ODAwQUIwRDNFIC8qIE9wY29kZUlubGluZXMu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gT3Bjb2RlSW5saW5lcy5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRTY0OTEzNjFENzhGMDEzMDBBNjk0RDQgLyogRXhj
ZXB0aW9uU2NvcGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRXhjZXB0aW9u
U2NvcGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkU2NDkxMzgxRDc4RjNBMzAw
QTY5NEQ0IC8qIEV4Y2VwdGlvblNjb3BlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEV4Y2VwdGlvblNjb3BlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJRkU2NUIxNTAyNzQ4NjAxRjAwREI1QjE2IC8qIElzb0lubGluZWRIZWFwQ2VsbFR5cGVJbmxp
bmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IElzb0lubGluZWRIZWFwQ2Vs
bFR5cGVJbmxpbmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFNjhDNjM1MUI5
MERERDkwMDQyQkNCMyAvKiBNYWNyb0Fzc2VtYmxlclByaW50ZXIuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWFjcm9Bc3NlbWJsZXJQcmludGVyLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkU2OEM2MzYxQjkwREREOTAwNDJCQ0IzIC8qIE1hY3Jv
QXNzZW1ibGVyUHJpbnRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNYWNy
b0Fzc2VtYmxlclByaW50ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkU2RjU2
REMxRTY0RTkyMDAwRDE3ODAxIC8qIFZNVHJhcHMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gVk1UcmFwcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBA
IC02NjA2LDYgKzY2MDgsNyBAQAogCQkJCUUzQzhFRDQxMjNBMURCQzQwMDEzMTk1OCAvKiBJc29I
ZWFwQ2VsbFR5cGUuY3BwICovLAogCQkJCUUzQkYxQkFEMjM4QUFFRDEwMDNBMUMyQiAvKiBJc29I
ZWFwQ2VsbFR5cGUuaCAqLywKIAkJCQlFM0M4RUQ0MjIzQTFEQkM1MDAxMzE5NTggLyogSXNvSW5s
aW5lZEhlYXBDZWxsVHlwZS5oICovLAorCQkJCUZFNjVCMTUwMjc0ODYwMUYwMERCNUIxNiAvKiBJ
c29JbmxpbmVkSGVhcENlbGxUeXBlSW5saW5lcy5oICovLAogCQkJCTBGRENFMTJDMUZBRkI0REUw
MDZGMzkwMSAvKiBJc29TdWJzcGFjZS5jcHAgKi8sCiAJCQkJMEZEQ0UxMkIxRkFGQjRERTAwNkYz
OTAxIC8qIElzb1N1YnNwYWNlLmggKi8sCiAJCQkJMEZEMkZEOTIyMEI1MkJEQzAwRjA5NDQxIC8q
IElzb1N1YnNwYWNlSW5saW5lcy5oICovLApAQCAtMTA0MTMsNiArMTA0MTYsNyBAQAogCQkJCUUz
M0Y1MDgxMUI4NDI5QTQwMDQxMzg1NiAvKiBKU0ludGVybmFsUHJvbWlzZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJRTMzRjUwNzkxQjg0MjI1NzAwNDEzODU2IC8qIEpTSW50ZXJuYWxQcm9taXNlQ29u
c3RydWN0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUUzM0Y1MDg3MUI4NDQ5RUYwMDQxMzg1NiAv
KiBKU0ludGVybmFsUHJvbWlzZUNvbnN0cnVjdG9yLmx1dC5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
RkU2NUIxNTEyNzQ4NjAxRjAwREI1QjE2IC8qIElzb0lubGluZWRIZWFwQ2VsbFR5cGVJbmxpbmVz
LmggaW4gSGVhZGVycyAqLywKIAkJCQlFMzNGNTA3NTFCODQyMUMwMDA0MTM4NTYgLyogSlNJbnRl
cm5hbFByb21pc2VQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1MDNGQTFFMTg4RTBG
QjAwMDExMEYxNCAvKiBKU0phdmFTY3JpcHRDYWxsRnJhbWVQcm90b3R5cGUuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUJDMThDNDE2MEUxNkY1Q0QwMEIzNDQ2MCAvKiBKU0xleGljYWxFbnZpcm9ubWVu
dC5oIGluIEhlYWRlcnMgKi8sCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
QWNjZXNzQ2FzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0FjY2Vzc0Nhc2UuY3BwCShyZXZpc2lvbiAyODYwODEpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIyNzcsNyAr
MjI3Nyw3IEBAIHZvaWQgQWNjZXNzQ2FzZTo6Z2VuZXJhdGVJbXBsKEFjY2Vzc0dlbmUKICAgICAg
ICAgICAgIHNpemVfdCBuZXdTaXplID0gbmV3U3RydWN0dXJlKCktPm91dE9mTGluZUNhcGFjaXR5
KCkgKiBzaXplb2YoSlNWYWx1ZSk7CiAKICAgICAgICAgICAgIGlmIChhbGxvY2F0aW5nSW5saW5l
KSB7Ci0gICAgICAgICAgICAgICAgQWxsb2NhdG9yIGFsbG9jYXRvciA9IHZtLmpzVmFsdWVHaWdh
Y2FnZUF1eGlsaWFyeVNwYWNlLmFsbG9jYXRvckZvcihuZXdTaXplLCBBbGxvY2F0b3JGb3JNb2Rl
OjpBbGxvY2F0b3JJZkV4aXN0cyk7CisgICAgICAgICAgICAgICAgQWxsb2NhdG9yIGFsbG9jYXRv
ciA9IHZtLmpzVmFsdWVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlKCkuYWxsb2NhdG9yRm9yKG5ld1Np
emUsIEFsbG9jYXRvckZvck1vZGU6OkFsbG9jYXRvcklmRXhpc3RzKTsKIAogICAgICAgICAgICAg
ICAgIGppdC5lbWl0QWxsb2NhdGUoc2NyYXRjaEdQUiwgSklUQWxsb2NhdG9yOjpjb25zdGFudChh
bGxvY2F0b3IpLCBzY3JhdGNoR1BSMiwgc2NyYXRjaEdQUjMsIHNsb3dQYXRoKTsKICAgICAgICAg
ICAgICAgICBqaXQuYWRkUHRyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKG5ld1NpemUgKyBz
aXplb2YoSW5kZXhpbmdIZWFkZXIpKSwgc2NyYXRjaEdQUik7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvREZHRXhpdFByb2ZpbGUuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvREZHRXhpdFByb2ZpbGUuaAkocmV2aXNpb24gMjg2MDgx
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0RGR0V4aXRQcm9maWxlLmgJKHdv
cmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDExLTIw
MTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEx
LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCkBAIC0zNCw3ICszNCwxMSBAQAogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+
CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCi1uYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERG
RyB7CituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgVW5saW5rZWRDb2RlQmxvY2s7CisKK25hbWVz
cGFjZSBERkcgewogCiBjbGFzcyBGcmVxdWVudEV4aXRTaXRlIHsKIHB1YmxpYzoKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FdmFsQ29kZUJsb2NrLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0V2YWxDb2RlQmxvY2suaAkocmV2aXNp
b24gMjg2MDgxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0V2YWxDb2RlQmxv
Y2suaAkod29ya2luZyBjb3B5KQpAQCAtNDEsNyArNDEsNyBAQCBwdWJsaWM6CiAgICAgdGVtcGxh
dGU8dHlwZW5hbWUsIFN1YnNwYWNlQWNjZXNzPgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vi
c3BhY2VGb3IoVk0mIHZtKQogICAgIHsKLSAgICAgICAgcmV0dXJuICZ2bS5jb2RlQmxvY2tTcGFj
ZS5zcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5jb2RlQmxvY2tTcGFjZSgpLnNwYWNlOwogICAg
IH0KIAogICAgIHN0YXRpYyBFdmFsQ29kZUJsb2NrKiBjcmVhdGUoVk0mIHZtLCBDb3B5UGFyc2Vk
QmxvY2tUYWcsIEV2YWxDb2RlQmxvY2smIG90aGVyKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0V4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2UuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdl
LmNwcAkocmV2aXNpb24gMjg2MDgxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0V4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04MSw3ICs4
MSw3IEBAIHZvaWQgRXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZTo6dmlzaXRDaGkKICAgICAgICAg
dmlzaXRvci5hcHBlbmRVbmJhcnJpZXJlZChjb2RlQmxvY2spOwogICAgIAogICAgIGlmICghdmlz
aXRvci5pc01hcmtlZChjb2RlQmxvY2spKQotICAgICAgICB2bS5leGVjdXRhYmxlVG9Db2RlQmxv
Y2tFZGdlc1dpdGhGaW5hbGl6ZXJzLmFkZChlZGdlKTsKKyAgICAgICAgdm0uZXhlY3V0YWJsZVRv
Q29kZUJsb2NrRWRnZXNXaXRoRmluYWxpemVycygpLmFkZChlZGdlKTsKICAgICAKICAgICBpZiAo
SklUQ29kZTo6aXNPcHRpbWl6aW5nSklUKGNvZGVCbG9jay0+aml0VHlwZSgpKSkgewogICAgICAg
ICAvLyBJZiB3ZSBqZXR0aXNvbiBvdXJzZWx2ZXMgd2UnbGwgaW5zdGFsbCBvdXIgYWx0ZXJuYXRp
dmUsIHNvIG1ha2Ugc3VyZSB0aGF0IGl0CkBAIC0xMTQsNyArMTE0LDcgQEAgdm9pZCBFeGVjdXRh
YmxlVG9Db2RlQmxvY2tFZGdlOjp2aXNpdENoaQogICAgIC8vIG5vdCB5ZXQgbWFya2VkIGJlY2F1
c2UgaXQgd2Vha2x5IGRlcGVuZHMgb24gYSBzdHJ1Y3R1cmUgdGhhdCB3ZSBkaWQgbm90IHlldCBt
YXJrLCB0aGVuIHdlCiAgICAgLy8gd2lsbCBrZWVwIGZpeHBvaW50aW5nIHVudGlsIHRoZSBlbmQu
CiAgICAgdmlzaXRvci5hcHBlbmRVbmJhcnJpZXJlZChjb2RlQmxvY2stPmdsb2JhbE9iamVjdCgp
KTsKLSAgICB2bS5leGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlc1dpdGhDb25zdHJhaW50cy5hZGQo
ZWRnZSk7CisgICAgdm0uZXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZXNXaXRoQ29uc3RyYWludHMo
KS5hZGQoZWRnZSk7CiAgICAgZWRnZS0+cnVuQ29uc3RyYWludChsb2NrZXIsIHZtLCB2aXNpdG9y
KTsKIH0KIApAQCAtMTQzLDggKzE0Myw4IEBAIHZvaWQgRXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRn
ZTo6ZmluYWxpemUKICAgICAgICAgbV9jb2RlQmxvY2suY2xlYXIoKTsKICAgICB9CiAgICAgCi0g
ICAgdm0uZXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZXNXaXRoRmluYWxpemVycy5yZW1vdmUodGhp
cyk7Ci0gICAgdm0uZXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZXNXaXRoQ29uc3RyYWludHMucmVt
b3ZlKHRoaXMpOworICAgIHZtLmV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2VzV2l0aEZpbmFsaXpl
cnMoKS5yZW1vdmUodGhpcyk7CisgICAgdm0uZXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZXNXaXRo
Q29uc3RyYWludHMoKS5yZW1vdmUodGhpcyk7CiB9CiAKIGlubGluZSB2b2lkIEV4ZWN1dGFibGVU
b0NvZGVCbG9ja0VkZ2U6OmFjdGl2YXRlKCkKQEAgLTIwMSw3ICsyMDEsNyBAQCB2b2lkIEV4ZWN1
dGFibGVUb0NvZGVCbG9ja0VkZ2U6OnJ1bkNvbnN0CiAgICAgY29kZUJsb2NrLT5kZXRlcm1pbmVM
aXZlbmVzcyhsb2NrZXIsIHZpc2l0b3IpOwogCiAgICAgaWYgKHZpc2l0b3IuaXNNYXJrZWQoY29k
ZUJsb2NrKSkKLSAgICAgICAgdm0uZXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZXNXaXRoQ29uc3Ry
YWludHMucmVtb3ZlKHRoaXMpOworICAgICAgICB2bS5leGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdl
c1dpdGhDb25zdHJhaW50cygpLnJlbW92ZSh0aGlzKTsKIH0KIAogdGVtcGxhdGUgdm9pZCBFeGVj
dXRhYmxlVG9Db2RlQmxvY2tFZGdlOjpydW5Db25zdHJhaW50KGNvbnN0IENvbmN1cnJlbnRKU0xv
Y2tlciYsIFZNJiwgQWJzdHJhY3RTbG90VmlzaXRvciYpOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0V4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2UuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRn
ZS5oCShyZXZpc2lvbiAyODYwODEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
RXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00Myw3ICs0Myw3
IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vic3BhY2VBY2Nl
c3M+CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewot
ICAgICAgICByZXR1cm4gJnZtLmV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2VTcGFjZTsKKyAgICAg
ICAgcmV0dXJuICZ2bS5leGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlU3BhY2UoKTsKICAgICB9CiAK
ICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mLCBKU0dsb2JhbE9iamVj
dCosIEpTVmFsdWUgcHJvdG90eXBlKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9GdW5jdGlvbkNvZGVCbG9jay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9GdW5jdGlvbkNvZGVCbG9jay5oCShyZXZpc2lvbiAyODYwODEpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRnVuY3Rpb25Db2RlQmxvY2suaAkod29ya2lu
ZyBjb3B5KQpAQCAtNDIsNyArNDIsNyBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUs
IFN1YnNwYWNlQWNjZXNzPgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0m
IHZtKQogICAgIHsKLSAgICAgICAgcmV0dXJuICZ2bS5jb2RlQmxvY2tTcGFjZS5zcGFjZTsKKyAg
ICAgICAgcmV0dXJuICZ2bS5jb2RlQmxvY2tTcGFjZSgpLnNwYWNlOwogICAgIH0KIAogICAgIHN0
YXRpYyBGdW5jdGlvbkNvZGVCbG9jayogY3JlYXRlKFZNJiB2bSwgQ29weVBhcnNlZEJsb2NrVGFn
LCBGdW5jdGlvbkNvZGVCbG9jayYgb3RoZXIpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvTW9kdWxlUHJvZ3JhbUNvZGVCbG9jay5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Nb2R1bGVQcm9ncmFtQ29kZUJsb2NrLmgJKHJldmlzaW9u
IDI4NjA4MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Nb2R1bGVQcm9ncmFt
Q29kZUJsb2NrLmgJKHdvcmtpbmcgY29weSkKQEAgLTQyLDcgKzQyLDcgQEAgcHVibGljOgogICAg
IHRlbXBsYXRlPHR5cGVuYW1lLCBTdWJzcGFjZUFjY2Vzcz4KICAgICBzdGF0aWMgSXNvU3Vic3Bh
Y2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7Ci0gICAgICAgIHJldHVybiAmdm0uY29kZUJs
b2NrU3BhY2Uuc3BhY2U7CisgICAgICAgIHJldHVybiAmdm0uY29kZUJsb2NrU3BhY2UoKS5zcGFj
ZTsKICAgICB9CiAKICAgICBzdGF0aWMgTW9kdWxlUHJvZ3JhbUNvZGVCbG9jayogY3JlYXRlKFZN
JiB2bSwgQ29weVBhcnNlZEJsb2NrVGFnLCBNb2R1bGVQcm9ncmFtQ29kZUJsb2NrJiBvdGhlcikK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qcm9ncmFtQ29kZUJsb2NrLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Byb2dyYW1Db2Rl
QmxvY2suaAkocmV2aXNpb24gMjg2MDgxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1Byb2dyYW1Db2RlQmxvY2suaAkod29ya2luZyBjb3B5KQpAQCAtNDIsNyArNDIsNyBAQCBw
dWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUsIFN1YnNwYWNlQWNjZXNzPgogICAgIHN0YXRp
YyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKLSAgICAgICAgcmV0dXJu
ICZ2bS5jb2RlQmxvY2tTcGFjZS5zcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5jb2RlQmxvY2tT
cGFjZSgpLnNwYWNlOwogICAgIH0KIAogICAgIHN0YXRpYyBQcm9ncmFtQ29kZUJsb2NrKiBjcmVh
dGUoVk0mIHZtLCBDb3B5UGFyc2VkQmxvY2tUYWcsIFByb2dyYW1Db2RlQmxvY2smIG90aGVyKQpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVj
dXRhYmxlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuY3BwCShyZXZpc2lvbiAyODYwODEpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0yNTEsNyArMjUxLDcgQEAgVW5saW5rZWRGdW5jdGlvbkNvZGVC
bG9jayogVW5saW5rZWRGdW5jdAogICAgICAgICBtX3VubGlua2VkQ29kZUJsb2NrRm9yQ29uc3Ry
dWN0LnNldCh2bSwgdGhpcywgcmVzdWx0KTsKICAgICAgICAgYnJlYWs7CiAgICAgfQotICAgIHZt
LnVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlU3BhY2Uuc2V0LmFkZCh0aGlzKTsKKyAgICB2bS51
bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZVNwYWNlKCkuc2V0LmFkZCh0aGlzKTsKICAgICByZXR1
cm4gcmVzdWx0OwogfQogCkBAIC0zMTAsNyArMzEwLDcgQEAgdm9pZCBVbmxpbmtlZEZ1bmN0aW9u
RXhlY3V0YWJsZTo6ZmluYWxpegogICAgICAgICBjbGVhcklmRGVhZChtX3VubGlua2VkQ29kZUJs
b2NrRm9yQ2FsbCk7CiAgICAgICAgIGNsZWFySWZEZWFkKG1fdW5saW5rZWRDb2RlQmxvY2tGb3JD
b25zdHJ1Y3QpOwogICAgICAgICBpZiAoaXNDbGVhcmVkICYmICFpc1N0aWxsVmFsaWQpCi0gICAg
ICAgICAgICB2bS51bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZVNwYWNlLnNldC5yZW1vdmUodGhp
cyk7CisgICAgICAgICAgICB2bS51bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZVNwYWNlKCkuc2V0
LnJlbW92ZSh0aGlzKTsKICAgICB9CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5oCShy
ZXZpc2lvbiAyODYwODEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5r
ZWRGdW5jdGlvbkV4ZWN1dGFibGUuaAkod29ya2luZyBjb3B5KQpAQCAtNDIsMTMgKzQyLDE0IEBA
CiAKIG5hbWVzcGFjZSBKU0MgewogCitjbGFzcyBDYWNoZWRGdW5jdGlvbkV4ZWN1dGFibGU7CiBj
bGFzcyBEZWNvZGVyOwotY2xhc3MgRnVuY3Rpb25NZXRhZGF0YU5vZGU7CiBjbGFzcyBGdW5jdGlv
bkV4ZWN1dGFibGU7CitjbGFzcyBGdW5jdGlvbk1ldGFkYXRhTm9kZTsKIGNsYXNzIFBhcnNlckVy
cm9yOworY2xhc3MgU2NyaXB0RXhlY3V0YWJsZTsKIGNsYXNzIFNvdXJjZVByb3ZpZGVyOwogY2xh
c3MgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jazsKLWNsYXNzIENhY2hlZEZ1bmN0aW9uRXhlY3V0
YWJsZTsKIAogZW51bSBVbmxpbmtlZEZ1bmN0aW9uS2luZCB7CiAgICAgVW5saW5rZWROb3JtYWxG
dW5jdGlvbiwKQEAgLTY3LDcgKzY4LDcgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1l
IENlbGxUeXBlLCBTdWJzcGFjZUFjY2Vzcz4KICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNw
YWNlRm9yKFZNJiB2bSkKICAgICB7Ci0gICAgICAgIHJldHVybiAmdm0udW5saW5rZWRGdW5jdGlv
bkV4ZWN1dGFibGVTcGFjZS5zcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS51bmxpbmtlZEZ1bmN0
aW9uRXhlY3V0YWJsZVNwYWNlKCkuc3BhY2U7CiAgICAgfQogCiAgICAgc3RhdGljIFVubGlua2Vk
RnVuY3Rpb25FeGVjdXRhYmxlKiBjcmVhdGUoVk0mIHZtLCBjb25zdCBTb3VyY2VDb2RlJiBzb3Vy
Y2UsIEZ1bmN0aW9uTWV0YWRhdGFOb2RlKiBub2RlLCBVbmxpbmtlZEZ1bmN0aW9uS2luZCB1bmxp
bmtlZEZ1bmN0aW9uS2luZCwgQ29uc3RydWN0QWJpbGl0eSBjb25zdHJ1Y3RBYmlsaXR5LCBKU1Bh
cnNlclNjcmlwdE1vZGUgc2NyaXB0TW9kZSwgUmVmUHRyPFREWkVudmlyb25tZW50TGluaz4gcGFy
ZW50U2NvcGVURFpWYXJpYWJsZXMsIHN0ZDo6b3B0aW9uYWw8UHJpdmF0ZU5hbWVFbnZpcm9ubWVu
dD4gcGFyZW50UHJpdmF0ZU5hbWVFbnZpcm9ubWVudCwgRGVyaXZlZENvbnRleHRUeXBlIGRlcml2
ZWRDb250ZXh0VHlwZSwgTmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIgbmVlZHNDbGFzc0ZpZWxk
SW5pdGlhbGl6ZXIsIFByaXZhdGVCcmFuZFJlcXVpcmVtZW50IHByaXZhdGVCcmFuZFJlcXVpcmVt
ZW50LCBib29sIGlzQnVpbHRpbkRlZmF1bHRDbGFzc0NvbnN0cnVjdG9yID0gZmFsc2UpCkBAIC0x
MzEsNyArMTMyLDcgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgbV91bmxpbmtlZENvZGVCbG9j
a0ZvckNhbGwuY2xlYXIoKTsKICAgICAgICAgbV91bmxpbmtlZENvZGVCbG9ja0ZvckNvbnN0cnVj
dC5jbGVhcigpOwotICAgICAgICB2bS51bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZVNwYWNlLnNl
dC5yZW1vdmUodGhpcyk7CisgICAgICAgIHZtLnVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlU3Bh
Y2UoKS5zZXQucmVtb3ZlKHRoaXMpOwogICAgIH0KIAogICAgIHZvaWQgcmVjb3JkUGFyc2UoQ29k
ZUZlYXR1cmVzIGZlYXR1cmVzLCBMZXhpY2FsU2NvcGVGZWF0dXJlcyBsZXhpY2FsU2NvcGVGZWF0
dXJlcywgYm9vbCBoYXNDYXB0dXJlZFZhcmlhYmxlcykKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCShyZXZpc2lvbiAyODYwODEpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTIwLDcgKzEyMCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRBbGxv
Y2F0ZVJhd09iamUKIAogICAgIFZNJiB2bSA9IHRoaXMtPnZtKCk7CiAgICAgaWYgKHNpemUpIHsK
LSAgICAgICAgaWYgKEFsbG9jYXRvciBhbGxvY2F0b3IgPSB2bS5qc1ZhbHVlR2lnYWNhZ2VBdXhp
bGlhcnlTcGFjZS5hbGxvY2F0b3JGb3JOb25WaXJ0dWFsKHNpemUsIEFsbG9jYXRvckZvck1vZGU6
OkFsbG9jYXRvcklmRXhpc3RzKSkgeworICAgICAgICBpZiAoQWxsb2NhdG9yIGFsbG9jYXRvciA9
IHZtLmpzVmFsdWVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlKCkuYWxsb2NhdG9yRm9yTm9uVmlydHVh
bChzaXplLCBBbGxvY2F0b3JGb3JNb2RlOjpBbGxvY2F0b3JJZkV4aXN0cykpIHsKICAgICAgICAg
ICAgIG1faml0LmVtaXRBbGxvY2F0ZShzdG9yYWdlR1BSLCBKSVRBbGxvY2F0b3I6OmNvbnN0YW50
KGFsbG9jYXRvciksIHNjcmF0Y2hHUFIsIHNjcmF0Y2gyR1BSLCBzbG93Q2FzZXMpOwogICAgICAg
ICAgICAgCiAgICAgICAgICAgICBtX2ppdC5hZGRQdHIoCkBAIC0xMDczOCw3ICsxMDczOCw3IEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVBbGxvY2F0ZVByb3AKICAgICAKICAgICBzaXpl
X3Qgc2l6ZSA9IGluaXRpYWxPdXRPZkxpbmVDYXBhY2l0eSAqIHNpemVvZihKU1ZhbHVlKTsKIAot
ICAgIEFsbG9jYXRvciBhbGxvY2F0b3IgPSB2bSgpLmpzVmFsdWVHaWdhY2FnZUF1eGlsaWFyeVNw
YWNlLmFsbG9jYXRvckZvck5vblZpcnR1YWwoc2l6ZSwgQWxsb2NhdG9yRm9yTW9kZTo6QWxsb2Nh
dG9ySWZFeGlzdHMpOworICAgIEFsbG9jYXRvciBhbGxvY2F0b3IgPSB2bSgpLmpzVmFsdWVHaWdh
Y2FnZUF1eGlsaWFyeVNwYWNlKCkuYWxsb2NhdG9yRm9yTm9uVmlydHVhbChzaXplLCBBbGxvY2F0
b3JGb3JNb2RlOjpBbGxvY2F0b3JJZkV4aXN0cyk7CiAKICAgICBpZiAoIWFsbG9jYXRvciB8fCBu
b2RlLT50cmFuc2l0aW9uKCktPnByZXZpb3VzLT5jb3VsZEhhdmVJbmRleGluZ0hlYWRlcigpKSB7
CiAgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGJhc2UodGhpcywgbm9kZS0+Y2hpbGQxKCkp
OwpAQCAtMTA3ODIsNyArMTA3ODIsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlUmVh
bGxvY2F0ZVByCiAgICAgc2l6ZV90IG5ld1NpemUgPSBvbGRTaXplICogb3V0T2ZMaW5lR3Jvd3Ro
RmFjdG9yOwogICAgIEFTU0VSVChuZXdTaXplID09IG5vZGUtPnRyYW5zaXRpb24oKS0+bmV4dC0+
b3V0T2ZMaW5lQ2FwYWNpdHkoKSAqIHNpemVvZihKU1ZhbHVlKSk7CiAgICAgCi0gICAgQWxsb2Nh
dG9yIGFsbG9jYXRvciA9IHZtKCkuanNWYWx1ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UuYWxsb2Nh
dG9yRm9yTm9uVmlydHVhbChuZXdTaXplLCBBbGxvY2F0b3JGb3JNb2RlOjpBbGxvY2F0b3JJZkV4
aXN0cyk7CisgICAgQWxsb2NhdG9yIGFsbG9jYXRvciA9IHZtKCkuanNWYWx1ZUdpZ2FjYWdlQXV4
aWxpYXJ5U3BhY2UoKS5hbGxvY2F0b3JGb3JOb25WaXJ0dWFsKG5ld1NpemUsIEFsbG9jYXRvckZv
ck1vZGU6OkFsbG9jYXRvcklmRXhpc3RzKTsKIAogICAgIGlmICghYWxsb2NhdG9yIHx8IG5vZGUt
PnRyYW5zaXRpb24oKS0+cHJldmlvdXMtPmNvdWxkSGF2ZUluZGV4aW5nSGVhZGVyKCkpIHsKICAg
ICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYmFzZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CkBA
IC0xMTQ5OSw3ICsxMTQ5OSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXROZXdUeXBlZEFy
cmF5V2kKICAgICAgICAgbV9qaXQuYW5kMzIoVHJ1c3RlZEltbTMyKH43KSwgc2NyYXRjaEdQUik7
CiAgICAgfQogICAgIG1faml0LmVtaXRBbGxvY2F0ZVZhcmlhYmxlU2l6ZWQoCi0gICAgICAgIHN0
b3JhZ2VHUFIsIHZtKCkucHJpbWl0aXZlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZSwgc2NyYXRjaEdQ
Uiwgc2NyYXRjaEdQUiwKKyAgICAgICAgc3RvcmFnZUdQUiwgdm0oKS5wcmltaXRpdmVHaWdhY2Fn
ZUF1eGlsaWFyeVNwYWNlKCksIHNjcmF0Y2hHUFIsIHNjcmF0Y2hHUFIsCiAgICAgICAgIHNjcmF0
Y2hHUFIyLCBzbG93Q2FzZXMpOwogICAgIAogICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIGRvbmUg
PSBtX2ppdC5icmFuY2hUZXN0MzIoTWFjcm9Bc3NlbWJsZXI6Olplcm8sIHNpemVHUFIpOwpAQCAt
MTM3MDAsNyArMTM3MDAsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0QWxsb2NhdGVCdXR0
ZXJmCiAgICAgZGlkTm90T3ZlcmZsb3cubGluaygmbV9qaXQpOwogI2VuZGlmCiAgICAgbV9qaXQu
ZW1pdEFsbG9jYXRlVmFyaWFibGVTaXplZCgKLSAgICAgICAgc3RvcmFnZVJlc3VsdEdQUiwgdm0o
KS5qc1ZhbHVlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZSwgc2NyYXRjaDIsIHNjcmF0Y2gxLCBzY3Jh
dGNoMywgc2xvd0Nhc2VzKTsKKyAgICAgICAgc3RvcmFnZVJlc3VsdEdQUiwgdm0oKS5qc1ZhbHVl
R2lnYWNhZ2VBdXhpbGlhcnlTcGFjZSgpLCBzY3JhdGNoMiwgc2NyYXRjaDEsIHNjcmF0Y2gzLCBz
bG93Q2FzZXMpOwogICAgIG1faml0LmFkZFB0cihUcnVzdGVkSW1tMzIoc2l6ZW9mKEluZGV4aW5n
SGVhZGVyKSksIHN0b3JhZ2VSZXN1bHRHUFIpOwogCiAgICAgbV9qaXQuc3RvcmUzMihzaXplR1BS
LCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzdG9yYWdlUmVzdWx0R1BSLCBCdXR0ZXJmbHk6Om9m
ZnNldE9mUHVibGljTGVuZ3RoKCkpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwv
RlRMTG93ZXJERkdUb0IzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAJKHJldmlzaW9uIDI4NjA4MSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODMw
MCw3ICs4MzAwLDcgQEAgSUdOT1JFX0NMQU5HX1dBUk5JTkdTX0VORAogICAgICAgICAgICAgICAg
IG1fb3V0LmNvbnN0SW50UHRyKH5zdGF0aWNfY2FzdDxpbnRwdHJfdD4oNykpKTsKICAgICAgICAg
fQogCi0gICAgICAgIExWYWx1ZSBhbGxvY2F0b3IgPSBhbGxvY2F0b3JGb3JTaXplKHZtKCkucHJp
bWl0aXZlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZSwgYnl0ZVNpemUsIHNsb3dDYXNlKTsKKyAgICAg
ICAgTFZhbHVlIGFsbG9jYXRvciA9IGFsbG9jYXRvckZvclNpemUodm0oKS5wcmltaXRpdmVHaWdh
Y2FnZUF1eGlsaWFyeVNwYWNlKCksIGJ5dGVTaXplLCBzbG93Q2FzZSk7CiAgICAgICAgIExWYWx1
ZSBzdG9yYWdlID0gYWxsb2NhdGVIZWFwQ2VsbChhbGxvY2F0b3IsIHNsb3dDYXNlKTsKIAogICAg
ICAgICBzcGxhdFdvcmRzKApAQCAtMTM5MjEsNyArMTM5MjEsNyBAQCBJR05PUkVfQ0xBTkdfV0FS
TklOR1NfRU5ECiAgICAgICAgICAgICAgICAgVmFsdWVGcm9tQmxvY2sgbm9CdXR0ZXJmbHkgPSBt
X291dC5hbmNob3IobV9vdXQuaW50UHRyWmVybyk7CiAgICAgICAgICAgICAgICAgCiAgICAgICAg
ICAgICAgICAgTFZhbHVlIHN0YXJ0T2ZTdG9yYWdlID0gYWxsb2NhdGVIZWFwQ2VsbCgKLSAgICAg
ICAgICAgICAgICAgICAgYWxsb2NhdG9yRm9yU2l6ZSh2bSgpLmpzVmFsdWVHaWdhY2FnZUF1eGls
aWFyeVNwYWNlLCBidXR0ZXJmbHlTaXplLCBzbG93UGF0aCksCisgICAgICAgICAgICAgICAgICAg
IGFsbG9jYXRvckZvclNpemUodm0oKS5qc1ZhbHVlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZSgpLCBi
dXR0ZXJmbHlTaXplLCBzbG93UGF0aCksCiAgICAgICAgICAgICAgICAgICAgIHNsb3dQYXRoKTsK
IAogICAgICAgICAgICAgICAgIExWYWx1ZSBmYXN0QnV0dGVyZmx5VmFsdWUgPSBtX291dC5hZGQo
CkBAIC0xNTAxNiw3ICsxNTAxNiw3IEBAIElHTk9SRV9DTEFOR19XQVJOSU5HU19FTkQKICAgICAg
ICAgTEJhc2ljQmxvY2sgbGFzdE5leHQgPSBtX291dC5pbnNlcnROZXdCbG9ja3NCZWZvcmUoc2xv
d1BhdGgpOwogCiAgICAgICAgIHNpemVfdCBzaXplSW5CeXRlcyA9IHNpemVJblZhbHVlcyAqIHNp
emVvZihKU1ZhbHVlKTsKLSAgICAgICAgQWxsb2NhdG9yIGFsbG9jYXRvciA9IHZtKCkuanNWYWx1
ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UuYWxsb2NhdG9yRm9yTm9uVmlydHVhbChzaXplSW5CeXRl
cywgQWxsb2NhdG9yRm9yTW9kZTo6QWxsb2NhdG9ySWZFeGlzdHMpOworICAgICAgICBBbGxvY2F0
b3IgYWxsb2NhdG9yID0gdm0oKS5qc1ZhbHVlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZSgpLmFsbG9j
YXRvckZvck5vblZpcnR1YWwoc2l6ZUluQnl0ZXMsIEFsbG9jYXRvckZvck1vZGU6OkFsbG9jYXRv
cklmRXhpc3RzKTsKICAgICAgICAgTFZhbHVlIHN0YXJ0T2ZTdG9yYWdlID0gYWxsb2NhdGVIZWFw
Q2VsbCgKICAgICAgICAgICAgIG1fb3V0LmNvbnN0SW50UHRyKGFsbG9jYXRvci5sb2NhbEFsbG9j
YXRvcigpKSwgc2xvd1BhdGgpOwogICAgICAgICBWYWx1ZUZyb21CbG9jayBmYXN0QnV0dGVyZmx5
ID0gbV9vdXQuYW5jaG9yKApAQCAtMTcwMzgsNyArMTcwMzgsNyBAQCBJR05PUkVfQ0xBTkdfV0FS
TklOR1NfRU5ECiAgICAgICAgIExWYWx1ZSBidXR0ZXJmbHlTaXplID0gbV9vdXQuYWRkKAogICAg
ICAgICAgICAgcGF5bG9hZFNpemUsIG1fb3V0LmNvbnN0SW50UHRyKHNpemVvZihJbmRleGluZ0hl
YWRlcikpKTsKIAotICAgICAgICBMVmFsdWUgYWxsb2NhdG9yID0gYWxsb2NhdG9yRm9yU2l6ZSh2
bSgpLmpzVmFsdWVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlLCBidXR0ZXJmbHlTaXplLCBmYWlsQ2Fz
ZSk7CisgICAgICAgIExWYWx1ZSBhbGxvY2F0b3IgPSBhbGxvY2F0b3JGb3JTaXplKHZtKCkuanNW
YWx1ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UoKSwgYnV0dGVyZmx5U2l6ZSwgZmFpbENhc2UpOwog
ICAgICAgICBMVmFsdWUgc3RhcnRPZlN0b3JhZ2UgPSBhbGxvY2F0ZUhlYXBDZWxsKGFsbG9jYXRv
ciwgZmFpbENhc2UpOwogCiAgICAgICAgIExWYWx1ZSBidXR0ZXJmbHkgPSBtX291dC5hZGQoc3Rh
cnRPZlN0b3JhZ2UsIG1fb3V0LmNvbnN0SW50UHRyKHNpemVvZihJbmRleGluZ0hlYWRlcikpKTsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9nZW5lcmF0b3IvRFNMLnJiCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9nZW5lcmF0b3IvRFNMLnJiCShyZXZpc2lvbiAyODYw
ODEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZ2VuZXJhdG9yL0RTTC5yYgkod29ya2luZyBj
b3B5KQpAQCAtMSw0ICsxLDQgQEAKLSMgQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyMgQ29weXJpZ2h0IChDKSAyMDE4LTIwMjEgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogIwogIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICMgbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xNDcs
NiArMTQ3LDggQEAgbW9kdWxlIERTTAogCiBuYW1lc3BhY2UgSlNDIHsKIAorY2xhc3MgQmFzaWNC
bG9ja0xvY2F0aW9uOworCiB2b2lkIGR1bXBCeXRlY29kZShCeXRlY29kZUR1bXBlckJhc2UqIGR1
bXBlciwgSW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCwgY29uc3QgSW5zdHJ1Y3Rpb24qKTsKIAog
I2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L0NvZGVCbG9ja1NldC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L0NvZGVCbG9ja1NldC5oCShyZXZpc2lvbiAyODYwODEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9Db2RlQmxvY2tTZXQuaAkod29ya2luZyBjb3B5KQpAQCAtNjYsOCArNjYsNiBAQCBw
dWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4gdm9pZCBpdGVyYXRlKGNvbnN0
IEZ1bmN0b3ImKTsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPiB2b2lkIGl0ZXJhdGUo
Y29uc3QgQWJzdHJhY3RMb2NrZXImLCBjb25zdCBGdW5jdG9yJik7CiAKLSAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBGdW5jdG9yPiB2b2lkIGl0ZXJhdGVWaWFTdWJzcGFjZXMoVk0mLCBjb25zdCBGdW5j
dG9yJik7Ci0gICAgCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4gdm9pZCBpdGVyYXRl
Q3VycmVudGx5RXhlY3V0aW5nKGNvbnN0IEZ1bmN0b3ImKTsKICAgICAKICAgICB2b2lkIGR1bXAo
UHJpbnRTdHJlYW0mKSBjb25zdDsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0Nv
ZGVCbG9ja1NldElubGluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9Db2RlQmxvY2tTZXRJbmxpbmVzLmgJKHJldmlzaW9uIDI4NjA4MSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL0NvZGVCbG9ja1NldElubGluZXMuaAkod29ya2luZyBjb3B5KQpA
QCAtNjAsMTggKzYwLDYgQEAgdm9pZCBDb2RlQmxvY2tTZXQ6Oml0ZXJhdGUoY29uc3QgQWJzdHJh
YwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPgotdm9pZCBDb2RlQmxvY2tTZXQ6Oml0
ZXJhdGVWaWFTdWJzcGFjZXMoVk0mIHZtLCBjb25zdCBGdW5jdG9yJiBmdW5jdG9yKQotewotICAg
IHZtLmZvckVhY2hDb2RlQmxvY2tTcGFjZSgKLSAgICAgICAgWyZdIChhdXRvJiBzcGFjZUFuZFNl
dCkgewotICAgICAgICAgICAgc3BhY2VBbmRTZXQuc3BhY2UuZm9yRWFjaExpdmVDZWxsKAotICAg
ICAgICAgICAgICAgIFsmXSAoSGVhcENlbGwqIGNlbGwsIEhlYXBDZWxsOjpLaW5kKSB7Ci0gICAg
ICAgICAgICAgICAgICAgIGZ1bmN0b3IoanNDYXN0PENvZGVCbG9jayo+KHN0YXRpY19jYXN0PEpT
Q2VsbCo+KGNlbGwpKSk7Ci0gICAgICAgICAgICAgICAgfSk7Ci0gICAgICAgIH0pOwotfQotCi10
ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPgogdm9pZCBDb2RlQmxvY2tTZXQ6Oml0ZXJhdGVDdXJy
ZW50bHlFeGVjdXRpbmcoY29uc3QgRnVuY3RvciYgZnVuY3RvcikKIHsKICAgICBMb2NrZXIgbG9j
a2VyIHsgbV9sb2NrIH07CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcAkocmV2
aXNpb24gMjg2MDgxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTIxLDEzICsyMSwyMCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2lu
Y2x1ZGUgIkhlYXAuaCIKIAorI2luY2x1ZGUgIkJpZ0ludE9iamVjdC5oIgorI2luY2x1ZGUgIkJv
b2xlYW5PYmplY3QuaCIKKyNpbmNsdWRlICJCcmFuZGVkU3RydWN0dXJlLmgiCiAjaW5jbHVkZSAi
QnVpbHRpbkV4ZWN1dGFibGVzLmgiCisjaW5jbHVkZSAiQ2xvbmVkQXJndW1lbnRzLmgiCiAjaW5j
bHVkZSAiQ29kZUJsb2NrLmgiCiAjaW5jbHVkZSAiQ29kZUJsb2NrU2V0SW5saW5lcy5oIgogI2lu
Y2x1ZGUgIkNvbGxlY3RpbmdTY29wZS5oIgogI2luY2x1ZGUgIkNvbnNlcnZhdGl2ZVJvb3RzLmgi
CisjaW5jbHVkZSAiRGF0ZUluc3RhbmNlLmgiCisjaW5jbHVkZSAiRGVidWdnZXJTY29wZS5oIgog
I2luY2x1ZGUgIkVkZW5HQ0FjdGl2aXR5Q2FsbGJhY2suaCIKICNpbmNsdWRlICJFeGNlcHRpb24u
aCIKKyNpbmNsdWRlICJGYXN0TWFsbG9jQWxpZ25lZE1lbW9yeUFsbG9jYXRvci5oIgogI2luY2x1
ZGUgIkZ1bGxHQ0FjdGl2aXR5Q2FsbGJhY2suaCIKICNpbmNsdWRlICJGdW5jdGlvbkV4ZWN1dGFi
bGVJbmxpbmVzLmgiCiAjaW5jbHVkZSAiR0NBY3Rpdml0eUNhbGxiYWNrLmgiCkBAIC0zNSw2ICs0
Miw3IEBACiAjaW5jbHVkZSAiR0NJbmNvbWluZ1JlZkNvdW50ZWRTZXRJbmxpbmVzLmgiCiAjaW5j
bHVkZSAiR0NTZWdtZW50ZWRBcnJheUlubGluZXMuaCIKICNpbmNsdWRlICJHQ1R5cGVNYXAuaCIK
KyNpbmNsdWRlICJHZXR0ZXJTZXR0ZXIuaCIKICNpbmNsdWRlICJIYXNPd25Qcm9wZXJ0eUNhY2hl
LmgiCiAjaW5jbHVkZSAiSGVhcEhlbHBlclBvb2wuaCIKICNpbmNsdWRlICJIZWFwSXRlcmF0aW9u
U2NvcGUuaCIKQEAgLTQzLDM3ICs1MSwxMTggQEAKICNpbmNsdWRlICJIZWFwVmVyaWZpZXIuaCIK
ICNpbmNsdWRlICJJbmNyZW1lbnRhbFN3ZWVwZXIuaCIKICNpbmNsdWRlICJJbnRlcnByZXRlci5o
IgorI2luY2x1ZGUgIkludGxDb2xsYXRvci5oIgorI2luY2x1ZGUgIkludGxEYXRlVGltZUZvcm1h
dC5oIgorI2luY2x1ZGUgIkludGxEaXNwbGF5TmFtZXMuaCIKKyNpbmNsdWRlICJJbnRsTGlzdEZv
cm1hdC5oIgorI2luY2x1ZGUgIkludGxMb2NhbGUuaCIKKyNpbmNsdWRlICJJbnRsTnVtYmVyRm9y
bWF0LmgiCisjaW5jbHVkZSAiSW50bFBsdXJhbFJ1bGVzLmgiCisjaW5jbHVkZSAiSW50bFJlbGF0
aXZlVGltZUZvcm1hdC5oIgorI2luY2x1ZGUgIkludGxTZWdtZW50SXRlcmF0b3IuaCIKKyNpbmNs
dWRlICJJbnRsU2VnbWVudGVyLmgiCisjaW5jbHVkZSAiSW50bFNlZ21lbnRzLmgiCiAjaW5jbHVk
ZSAiSXNvQ2VsbFNldElubGluZXMuaCIKKyNpbmNsdWRlICJJc29JbmxpbmVkSGVhcENlbGxUeXBl
SW5saW5lcy5oIgogI2luY2x1ZGUgIkpJVFN0dWJSb3V0aW5lU2V0LmgiCiAjaW5jbHVkZSAiSklU
V29ya2xpc3RJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNBUElHbG9iYWxPYmplY3QuaCIKKyNpbmNs
dWRlICJKU0FQSVZhbHVlV3JhcHBlci5oIgorI2luY2x1ZGUgIkpTQVBJV3JhcHBlck9iamVjdC5o
IgorI2luY2x1ZGUgIkpTQXJyYXkuaCIKKyNpbmNsdWRlICJKU0FycmF5QnVmZmVyLmgiCisjaW5j
bHVkZSAiSlNBcnJheUl0ZXJhdG9yLmgiCisjaW5jbHVkZSAiSlNBc3luY0dlbmVyYXRvci5oIgor
I2luY2x1ZGUgIkpTQmlnSW50LmgiCisjaW5jbHVkZSAiSlNCb3VuZEZ1bmN0aW9uLmgiCisjaW5j
bHVkZSAiSlNDYWxsYmFja0NvbnN0cnVjdG9yLmgiCisjaW5jbHVkZSAiSlNDYWxsYmFja0Z1bmN0
aW9uLmgiCisjaW5jbHVkZSAiSlNDYWxsYmFja09iamVjdC5oIgorI2luY2x1ZGUgIkpTQ2FsbGVl
LmgiCisjaW5jbHVkZSAiSlNDdXN0b21HZXR0ZXJGdW5jdGlvbi5oIgorI2luY2x1ZGUgIkpTQ3Vz
dG9tU2V0dGVyRnVuY3Rpb24uaCIKKyNpbmNsdWRlICJKU0RhdGFWaWV3LmgiCiAjaW5jbHVkZSAi
SlNGaW5hbGl6YXRpb25SZWdpc3RyeS5oIgorI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKKyNpbmNs
dWRlICJKU0dsb2JhbExleGljYWxFbnZpcm9ubWVudC5oIgorI2luY2x1ZGUgIkpTR2xvYmFsT2Jq
ZWN0LmgiCisjaW5jbHVkZSAiSlNJbmplY3RlZFNjcmlwdEhvc3QuaCIKKyNpbmNsdWRlICJKU0ph
dmFTY3JpcHRDYWxsRnJhbWUuaCIKKyNpbmNsdWRlICJKU01hcC5oIgorI2luY2x1ZGUgIkpTTWFw
SXRlcmF0b3IuaCIKKyNpbmNsdWRlICJKU01vZHVsZU5hbWVzcGFjZU9iamVjdC5oIgorI2luY2x1
ZGUgIkpTTW9kdWxlUmVjb3JkLmgiCisjaW5jbHVkZSAiSlNOYXRpdmVTdGRGdW5jdGlvbi5oIgor
I2luY2x1ZGUgIkpTUHJvbWlzZS5oIgorI2luY2x1ZGUgIkpTUHJvcGVydHlOYW1lRW51bWVyYXRv
ci5oIgorI2luY2x1ZGUgIkpTUHJveHkuaCIKKyNpbmNsdWRlICJKU1NjcmlwdEZldGNoUGFyYW1l
dGVycy5oIgorI2luY2x1ZGUgIkpTU2NyaXB0RmV0Y2hlci5oIgorI2luY2x1ZGUgIkpTU2V0Lmgi
CisjaW5jbHVkZSAiSlNTZXRJdGVyYXRvci5oIgorI2luY2x1ZGUgIkpTU291cmNlQ29kZS5oIgor
I2luY2x1ZGUgIkpTU3RyaW5nLmgiCisjaW5jbHVkZSAiSlNTdHJpbmdJdGVyYXRvci5oIgorI2lu
Y2x1ZGUgIkpTVGVtcGxhdGVPYmplY3REZXNjcmlwdG9yLmgiCisjaW5jbHVkZSAiSlNUb1dhc21J
Q0NhbGxlZS5oIgorI2luY2x1ZGUgIkpTVHlwZWRBcnJheXMuaCIKICNpbmNsdWRlICJKU1ZpcnR1
YWxNYWNoaW5lSW50ZXJuYWwuaCIKICNpbmNsdWRlICJKU1dlYWtNYXAuaCIKICNpbmNsdWRlICJK
U1dlYWtPYmplY3RSZWYuaCIKICNpbmNsdWRlICJKU1dlYWtTZXQuaCIKICNpbmNsdWRlICJKU1dl
YkFzc2VtYmx5Q29kZUJsb2NrLmgiCisjaW5jbHVkZSAiSlNXZWJBc3NlbWJseUV4Y2VwdGlvbi5o
IgorI2luY2x1ZGUgIkpTV2ViQXNzZW1ibHlHbG9iYWwuaCIKKyNpbmNsdWRlICJKU1dlYkFzc2Vt
Ymx5SW5zdGFuY2UuaCIKKyNpbmNsdWRlICJKU1dlYkFzc2VtYmx5TWVtb3J5LmgiCisjaW5jbHVk
ZSAiSlNXZWJBc3NlbWJseU1vZHVsZS5oIgorI2luY2x1ZGUgIkpTV2ViQXNzZW1ibHlUYWJsZS5o
IgorI2luY2x1ZGUgIkpTV2ViQXNzZW1ibHlUYWcuaCIKKyNpbmNsdWRlICJKU1dpdGhTY29wZS5o
IgogI2luY2x1ZGUgIk1hY2hpbmVTdGFja01hcmtlci5oIgogI2luY2x1ZGUgIk1hcmtTdGFja01l
cmdpbmdDb25zdHJhaW50LmgiCiAjaW5jbHVkZSAiTWFya2VkSlNWYWx1ZVJlZkFycmF5LmgiCiAj
aW5jbHVkZSAiTWFya2VkU3BhY2VJbmxpbmVzLmgiCiAjaW5jbHVkZSAiTWFya2luZ0NvbnN0cmFp
bnRTZXQuaCIKKyNpbmNsdWRlICJOYXRpdmVFeGVjdXRhYmxlLmgiCiAjaW5jbHVkZSAiUHJldmVu
dENvbGxlY3Rpb25TY29wZS5oIgorI2luY2x1ZGUgIlByb2dyYW1FeGVjdXRhYmxlLmgiCisjaW5j
bHVkZSAiUHJvcGVydHlUYWJsZS5oIgorI2luY2x1ZGUgIlByb3h5UmV2b2tlLmgiCisjaW5jbHVk
ZSAiUmVnRXhwT2JqZWN0LmgiCiAjaW5jbHVkZSAiU2FtcGxpbmdQcm9maWxlci5oIgorI2luY2x1
ZGUgIlNjb3BlZEFyZ3VtZW50cy5oIgogI2luY2x1ZGUgIlNoYWRvd0NoaWNrZW4uaCIKKyNpbmNs
dWRlICJTaGFkb3dSZWFsbU9iamVjdC5oIgogI2luY2x1ZGUgIlNwYWNlVGltZU11dGF0b3JTY2hl
ZHVsZXIuaCIKICNpbmNsdWRlICJTdG9jaGFzdGljU3BhY2VUaW1lTXV0YXRvclNjaGVkdWxlci5o
IgogI2luY2x1ZGUgIlN0b3BJZk5lY2Vzc2FyeVRpbWVyLmgiCisjaW5jbHVkZSAiU3RyaWN0RXZh
bEFjdGl2YXRpb24uaCIKKyNpbmNsdWRlICJTdHJpbmdPYmplY3QuaCIKKyNpbmNsdWRlICJTdHJ1
Y3R1cmVDaGFpbi5oIgogI2luY2x1ZGUgIlN1YnNwYWNlSW5saW5lcy5oIgogI2luY2x1ZGUgIlN1
cGVyU2FtcGxlci5oIgogI2luY2x1ZGUgIlN3ZWVwaW5nU2NvcGUuaCIKKyNpbmNsdWRlICJTeW1i
b2xPYmplY3QuaCIKICNpbmNsdWRlICJTeW1ib2xUYWJsZUlubGluZXMuaCIKICNpbmNsdWRlICJT
eW5jaHJvbm91c1N0b3BUaGVXb3JsZE11dGF0b3JTY2hlZHVsZXIuaCIKKyNpbmNsdWRlICJUZW1w
b3JhbENhbGVuZGFyLmgiCisjaW5jbHVkZSAiVGVtcG9yYWxEdXJhdGlvbi5oIgorI2luY2x1ZGUg
IlRlbXBvcmFsSW5zdGFudC5oIgorI2luY2x1ZGUgIlRlbXBvcmFsUGxhaW5UaW1lLmgiCisjaW5j
bHVkZSAiVGVtcG9yYWxUaW1lWm9uZS5oIgogI2luY2x1ZGUgIlR5cGVQcm9maWxlci5oIgogI2lu
Y2x1ZGUgIlR5cGVQcm9maWxlckxvZy5oIgorI2luY2x1ZGUgIlVubGlua2VkRnVuY3Rpb25Db2Rl
QmxvY2suaCIKKyNpbmNsdWRlICJVbmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2suaCIKKyNp
bmNsdWRlICJVbmxpbmtlZFByb2dyYW1Db2RlQmxvY2suaCIKICNpbmNsdWRlICJWTS5oIgogI2lu
Y2x1ZGUgIlZlcmlmaWVyU2xvdFZpc2l0b3JJbmxpbmVzLmgiCiAjaW5jbHVkZSAiV2Vha01hcElt
cGxJbmxpbmVzLmgiCiAjaW5jbHVkZSAiV2Vha1NldElubGluZXMuaCIKKyNpbmNsdWRlICJXZWJB
c3NlbWJseUZ1bmN0aW9uLmgiCisjaW5jbHVkZSAiV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQuaCIK
KyNpbmNsdWRlICJXZWJBc3NlbWJseVdyYXBwZXJGdW5jdGlvbi5oIgogI2luY2x1ZGUgPGFsZ29y
aXRobT4KICNpbmNsdWRlIDx3dGYvQ3J5cHRvZ3JhcGhpY2FsbHlSYW5kb21OdW1iZXIuaD4KICNp
bmNsdWRlIDx3dGYvTGlzdER1bXAuaD4KQEAgLTkwLDcgKzE3OSwxMyBAQAogI2luY2x1ZGUgPHd0
Zi9zcGkvY29jb2Evb2JqY1NQSS5oPgogI2VuZGlmCiAKKyNpZiBKU0NfT0JKQ19BUElfRU5BQkxF
RAorI2luY2x1ZGUgIk9iakNDYWxsYmFja0Z1bmN0aW9uLmgiCisjZW5kaWYKKwogI2lmZGVmIEpT
Q19HTElCX0FQSV9FTkFCTEVECisjaW5jbHVkZSAiSlNBUElXcmFwcGVyR2xvYmFsT2JqZWN0Lmgi
CisjaW5jbHVkZSAiSlNDQ2FsbGJhY2tGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTQ0dMaWJXcmFw
cGVyT2JqZWN0LmgiCiAjZW5kaWYKIApAQCAtMjg2LDYgKzM4MSwxMTQgQEAgSGVhcDo6SGVhcChW
TSYgdm0sIEhlYXBUeXBlIGhlYXBUeXBlKQogICAgICwgbV9oZWxwZXJDbGllbnQoJmhlYXBIZWxw
ZXJQb29sKCkpCiAgICAgLCBtX3RocmVhZExvY2soQm94PExvY2s+OjpjcmVhdGUoKSkKICAgICAs
IG1fdGhyZWFkQ29uZGl0aW9uKEF1dG9tYXRpY1RocmVhZENvbmRpdGlvbjo6Y3JlYXRlKCkpCisK
KyAgICAvLyBIZWFwQ2VsbFR5cGVzCisgICAgLCBhdXhpbGlhcnlIZWFwQ2VsbFR5cGUoQ2VsbEF0
dHJpYnV0ZXMoRG9lc05vdE5lZWREZXN0cnVjdGlvbiwgSGVhcENlbGw6OkF1eGlsaWFyeSkpCisg
ICAgLCBpbW11dGFibGVCdXR0ZXJmbHlIZWFwQ2VsbFR5cGUoQ2VsbEF0dHJpYnV0ZXMoRG9lc05v
dE5lZWREZXN0cnVjdGlvbiwgSGVhcENlbGw6OkpTQ2VsbFdpdGhJbmRleGluZ0hlYWRlcikpCisg
ICAgLCBjZWxsSGVhcENlbGxUeXBlKENlbGxBdHRyaWJ1dGVzKERvZXNOb3ROZWVkRGVzdHJ1Y3Rp
b24sIEhlYXBDZWxsOjpKU0NlbGwpKQorICAgICwgZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlw
ZShDZWxsQXR0cmlidXRlcyhOZWVkc0Rlc3RydWN0aW9uLCBIZWFwQ2VsbDo6SlNDZWxsKSkKKy8v
ICAgICwgYXBpR2xvYmFsT2JqZWN0SGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6QXJnczxK
U0FQSUdsb2JhbE9iamVjdD4oKSkKKy8vICAgICwgY2FsbGJhY2tDb25zdHJ1Y3RvckhlYXBDZWxs
VHlwZShJc29IZWFwQ2VsbFR5cGU6OkFyZ3M8SlNDYWxsYmFja0NvbnN0cnVjdG9yPigpKQorLy8g
ICAgLCBjYWxsYmFja0dsb2JhbE9iamVjdEhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OkFy
Z3M8SlNDYWxsYmFja09iamVjdDxKU0dsb2JhbE9iamVjdD4+KCkpCisvLyAgICAsIGNhbGxiYWNr
T2JqZWN0SGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6QXJnczxKU0NhbGxiYWNrT2JqZWN0
PEpTTm9uRmluYWxPYmplY3Q+PigpKQorLy8gICAgLCBjdXN0b21HZXR0ZXJGdW5jdGlvbkhlYXBD
ZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OkFyZ3M8SlNDdXN0b21HZXR0ZXJGdW5jdGlvbj4oKSkK
Ky8vICAgICwgY3VzdG9tU2V0dGVyRnVuY3Rpb25IZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBl
OjpBcmdzPEpTQ3VzdG9tU2V0dGVyRnVuY3Rpb24+KCkpCisvLyAgICAsIGRhdGVJbnN0YW5jZUhl
YXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OkFyZ3M8RGF0ZUluc3RhbmNlPigpKQorLy8gICAg
LCBlcnJvckluc3RhbmNlSGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6QXJnczxFcnJvcklu
c3RhbmNlPigpKQorLy8gICAgLCBmaW5hbGl6YXRpb25SZWdpc3RyeUNlbGxUeXBlKElzb0hlYXBD
ZWxsVHlwZTo6QXJnczxKU0ZpbmFsaXphdGlvblJlZ2lzdHJ5PigpKQorLy8gICAgLCBnbG9iYWxM
ZXhpY2FsRW52aXJvbm1lbnRIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpBcmdzPEpTR2xv
YmFsTGV4aWNhbEVudmlyb25tZW50PigpKQorLy8gICAgLCBnbG9iYWxPYmplY3RIZWFwQ2VsbFR5
cGUoSXNvSGVhcENlbGxUeXBlOjpBcmdzPEpTR2xvYmFsT2JqZWN0PigpKQorLy8gICAgLCBpbmpl
Y3RlZFNjcmlwdEhvc3RTcGFjZUhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OkFyZ3M8SW5z
cGVjdG9yOjpKU0luamVjdGVkU2NyaXB0SG9zdD4oKSkKKy8vICAgICwgamF2YVNjcmlwdENhbGxG
cmFtZUhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OkFyZ3M8SW5zcGVjdG9yOjpKU0phdmFT
Y3JpcHRDYWxsRnJhbWU+KCkpCisvLyAgICAsIGpzTW9kdWxlUmVjb3JkSGVhcENlbGxUeXBlKElz
b0hlYXBDZWxsVHlwZTo6QXJnczxKU01vZHVsZVJlY29yZD4oKSkKKy8vICAgICwgbW9kdWxlTmFt
ZXNwYWNlT2JqZWN0SGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6QXJnczxKU01vZHVsZU5h
bWVzcGFjZU9iamVjdD4oKSkKKy8vICAgICwgbmF0aXZlU3RkRnVuY3Rpb25IZWFwQ2VsbFR5cGUo
SXNvSGVhcENlbGxUeXBlOjpBcmdzPEpTTmF0aXZlU3RkRnVuY3Rpb24+KCkpCisvLyAgICAsIHdl
YWtNYXBIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpBcmdzPEpTV2Vha01hcD4oKSkKKy8v
ICAgICwgd2Vha1NldEhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OkFyZ3M8SlNXZWFrU2V0
PigpKQorI2lmIEpTQ19PQkpDX0FQSV9FTkFCTEVECisvLyAgICAsIGFwaVdyYXBwZXJPYmplY3RI
ZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpBcmdzPEpTQ2FsbGJhY2tPYmplY3Q8SlNBUElX
cmFwcGVyT2JqZWN0Pj4oKSkKKy8vICAgICwgb2JqQ0NhbGxiYWNrRnVuY3Rpb25IZWFwQ2VsbFR5
cGUoSXNvSGVhcENlbGxUeXBlOjpBcmdzPE9iakNDYWxsYmFja0Z1bmN0aW9uPigpKQorI2VuZGlm
CisjaWZkZWYgSlNDX0dMSUJfQVBJX0VOQUJMRUQKKy8vICAgICwgYXBpV3JhcHBlck9iamVjdEhl
YXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OkFyZ3M8SlNDYWxsYmFja09iamVjdDxKU0FQSVdy
YXBwZXJPYmplY3Q+PigpKQorLy8gICAgLCBjYWxsYmFja0FQSVdyYXBwZXJHbG9iYWxPYmplY3RI
ZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpBcmdzPEpTQ2FsbGJhY2tPYmplY3Q8SlNBUElX
cmFwcGVyR2xvYmFsT2JqZWN0Pj4oKSkKKy8vICAgICwganNjQ2FsbGJhY2tGdW5jdGlvbkhlYXBD
ZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OkFyZ3M8SlNDQ2FsbGJhY2tGdW5jdGlvbj4oKSkKKyNl
bmRpZgorLy8gICAgLCBpbnRsQ29sbGF0b3JIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpB
cmdzPEludGxDb2xsYXRvcj4oKSkKKy8vICAgICwgaW50bERhdGVUaW1lRm9ybWF0SGVhcENlbGxU
eXBlKElzb0hlYXBDZWxsVHlwZTo6QXJnczxJbnRsRGF0ZVRpbWVGb3JtYXQ+KCkpCisvLyAgICAs
IGludGxEaXNwbGF5TmFtZXNIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpBcmdzPEludGxE
aXNwbGF5TmFtZXM+KCkpCisvLyAgICAsIGludGxMaXN0Rm9ybWF0SGVhcENlbGxUeXBlKElzb0hl
YXBDZWxsVHlwZTo6QXJnczxJbnRsTGlzdEZvcm1hdD4oKSkKKy8vICAgICwgaW50bExvY2FsZUhl
YXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OkFyZ3M8SW50bExvY2FsZT4oKSkKKy8vICAgICwg
aW50bE51bWJlckZvcm1hdEhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OkFyZ3M8SW50bE51
bWJlckZvcm1hdD4oKSkKKy8vICAgICwgaW50bFBsdXJhbFJ1bGVzSGVhcENlbGxUeXBlKElzb0hl
YXBDZWxsVHlwZTo6QXJnczxJbnRsUGx1cmFsUnVsZXM+KCkpCisvLyAgICAsIGludGxSZWxhdGl2
ZVRpbWVGb3JtYXRIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpBcmdzPEludGxSZWxhdGl2
ZVRpbWVGb3JtYXQ+KCkpCisvLyAgICAsIGludGxTZWdtZW50SXRlcmF0b3JIZWFwQ2VsbFR5cGUo
SXNvSGVhcENlbGxUeXBlOjpBcmdzPEludGxTZWdtZW50SXRlcmF0b3I+KCkpCisvLyAgICAsIGlu
dGxTZWdtZW50ZXJIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpBcmdzPEludGxTZWdtZW50
ZXI+KCkpCisvLyAgICAsIGludGxTZWdtZW50c0hlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6
OkFyZ3M8SW50bFNlZ21lbnRzPigpKQorI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKKy8vICAgICwg
d2ViQXNzZW1ibHlDb2RlQmxvY2tIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpBcmdzPEpT
V2ViQXNzZW1ibHlDb2RlQmxvY2s+KCkpCisvLyAgICAsIHdlYkFzc2VtYmx5RXhjZXB0aW9uSGVh
cENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6QXJnczxKU1dlYkFzc2VtYmx5RXhjZXB0aW9uPigp
KQorLy8gICAgLCB3ZWJBc3NlbWJseUZ1bmN0aW9uSGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlw
ZTo6QXJnczxXZWJBc3NlbWJseUZ1bmN0aW9uPigpKQorLy8gICAgLCB3ZWJBc3NlbWJseUdsb2Jh
bEhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OkFyZ3M8SlNXZWJBc3NlbWJseUdsb2JhbD4o
KSkKKy8vICAgICwgd2ViQXNzZW1ibHlJbnN0YW5jZUhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5
cGU6OkFyZ3M8SlNXZWJBc3NlbWJseUluc3RhbmNlPigpKQorLy8gICAgLCB3ZWJBc3NlbWJseU1l
bW9yeUhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OkFyZ3M8SlNXZWJBc3NlbWJseU1lbW9y
eT4oKSkKKy8vICAgICwgd2ViQXNzZW1ibHlNb2R1bGVIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxU
eXBlOjpBcmdzPEpTV2ViQXNzZW1ibHlNb2R1bGU+KCkpCisvLyAgICAsIHdlYkFzc2VtYmx5TW9k
dWxlUmVjb3JkSGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6QXJnczxXZWJBc3NlbWJseU1v
ZHVsZVJlY29yZD4oKSkKKy8vICAgICwgd2ViQXNzZW1ibHlUYWJsZUhlYXBDZWxsVHlwZShJc29I
ZWFwQ2VsbFR5cGU6OkFyZ3M8SlNXZWJBc3NlbWJseVRhYmxlPigpKQorLy8gICAgLCB3ZWJBc3Nl
bWJseVRhZ0hlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OkFyZ3M8SlNXZWJBc3NlbWJseVRh
Zz4oKSkKKyNlbmRpZgorCisgICAgLy8gQWxpZ25lZE1lbW9yeUFsbG9jYXRvcnMKKyAgICAsIGZh
c3RNYWxsb2NBbGxvY2F0b3IobWFrZVVuaXF1ZTxGYXN0TWFsbG9jQWxpZ25lZE1lbW9yeUFsbG9j
YXRvcj4oKSkKKyAgICAsIHByaW1pdGl2ZUdpZ2FjYWdlQWxsb2NhdG9yKG1ha2VVbmlxdWU8R2ln
YWNhZ2VBbGlnbmVkTWVtb3J5QWxsb2NhdG9yPihHaWdhY2FnZTo6UHJpbWl0aXZlKSkKKyAgICAs
IGpzVmFsdWVHaWdhY2FnZUFsbG9jYXRvcihtYWtlVW5pcXVlPEdpZ2FjYWdlQWxpZ25lZE1lbW9y
eUFsbG9jYXRvcj4oR2lnYWNhZ2U6OkpTVmFsdWUpKQorCisgICAgLy8gU3Vic3BhY2VzCisgICAg
LCBwcmltaXRpdmVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlKCJQcmltaXRpdmUgR2lnYWNhZ2UgQXV4
aWxpYXJ5IiwgKnRoaXMsIGF1eGlsaWFyeUhlYXBDZWxsVHlwZSwgcHJpbWl0aXZlR2lnYWNhZ2VB
bGxvY2F0b3IuZ2V0KCkpIC8vIEhhc2g6MHgzZTdjZDc2MgorICAgICwganNWYWx1ZUdpZ2FjYWdl
QXV4aWxpYXJ5U3BhY2UoIkpTVmFsdWUgR2lnYWNhZ2UgQXV4aWxpYXJ5IiwgKnRoaXMsIGF1eGls
aWFyeUhlYXBDZWxsVHlwZSwganNWYWx1ZUdpZ2FjYWdlQWxsb2NhdG9yLmdldCgpKSAvLyBIYXNo
OjB4MjQxZTk0NgorICAgICwgaW1tdXRhYmxlQnV0dGVyZmx5SlNWYWx1ZUdpZ2FjYWdlQXV4aWxp
YXJ5U3BhY2UoIkltbXV0YWJsZUJ1dHRlcmZseSBHaWdhY2FnZSBKU0NlbGxXaXRoSW5kZXhpbmdI
ZWFkZXIiLCAqdGhpcywgaW1tdXRhYmxlQnV0dGVyZmx5SGVhcENlbGxUeXBlLCBqc1ZhbHVlR2ln
YWNhZ2VBbGxvY2F0b3IuZ2V0KCkpIC8vIEhhc2g6MHg3YTk0NTMwMAorICAgICwgY2VsbFNwYWNl
KCJKU0NlbGwiLCAqdGhpcywgY2VsbEhlYXBDZWxsVHlwZSwgZmFzdE1hbGxvY0FsbG9jYXRvci5n
ZXQoKSkgLy8gSGFzaDoweGFkZmI1YTc5CisgICAgLCB2YXJpYWJsZVNpemVkQ2VsbFNwYWNlKCJW
YXJpYWJsZSBTaXplZCBKU0NlbGwiLCAqdGhpcywgY2VsbEhlYXBDZWxsVHlwZSwgZmFzdE1hbGxv
Y0FsbG9jYXRvci5nZXQoKSkgLy8gSGFzaDoweGJjZDc2OWNjCisgICAgLCBkZXN0cnVjdGlibGVP
YmplY3RTcGFjZSgiSlNEZXN0cnVjdGlibGVPYmplY3QiLCAqdGhpcywgZGVzdHJ1Y3RpYmxlT2Jq
ZWN0SGVhcENlbGxUeXBlLCBmYXN0TWFsbG9jQWxsb2NhdG9yLmdldCgpKSAvLyBIYXNoOjB4NGY1
ZWQ3YTkKKyAgICAsIGFycmF5U3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoKnRoaXMsIGNlbGxIZWFw
Q2VsbFR5cGUsIEpTQXJyYXkpCisgICAgLCBiaWdJbnRTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVCgq
dGhpcywgY2VsbEhlYXBDZWxsVHlwZSwgSlNCaWdJbnQpCisgICAgLCBjYWxsZWVTcGFjZSBJU09f
U1VCU1BBQ0VfSU5JVCgqdGhpcywgY2VsbEhlYXBDZWxsVHlwZSwgSlNDYWxsZWUpCisgICAgLCBj
bG9uZWRBcmd1bWVudHNTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVCgqdGhpcywgY2VsbEhlYXBDZWxs
VHlwZSwgQ2xvbmVkQXJndW1lbnRzKQorICAgICwgY3VzdG9tR2V0dGVyU2V0dGVyU3BhY2UgSVNP
X1NVQlNQQUNFX0lOSVQoKnRoaXMsIGNlbGxIZWFwQ2VsbFR5cGUsIEN1c3RvbUdldHRlclNldHRl
cikKKyAgICAsIGRhdGVJbnN0YW5jZVNwYWNlIElTT19TVUJTUEFDRV9JTklUKCp0aGlzLCBkYXRl
SW5zdGFuY2VIZWFwQ2VsbFR5cGUsIERhdGVJbnN0YW5jZSkKKyAgICAsIGRvbUF0dHJpYnV0ZUdl
dHRlclNldHRlclNwYWNlIElTT19TVUJTUEFDRV9JTklUKCp0aGlzLCBjZWxsSGVhcENlbGxUeXBl
LCBET01BdHRyaWJ1dGVHZXR0ZXJTZXR0ZXIpCisgICAgLCBleGNlcHRpb25TcGFjZSBJU09fU1VC
U1BBQ0VfSU5JVCgqdGhpcywgZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZSwgRXhjZXB0aW9u
KQorICAgICwgZXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZVNwYWNlIElTT19TVUJTUEFDRV9JTklU
KCp0aGlzLCBjZWxsSGVhcENlbGxUeXBlLCBFeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlKSAvLyBI
YXNoOjB4N2I3MzBiMjAKKyAgICAsIGZ1bmN0aW9uU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoKnRo
aXMsIGNlbGxIZWFwQ2VsbFR5cGUsIEpTRnVuY3Rpb24pIC8vIEhhc2g6MHg4MDBmY2E3MgorICAg
ICwgZ2V0dGVyU2V0dGVyU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoKnRoaXMsIGNlbGxIZWFwQ2Vs
bFR5cGUsIEdldHRlclNldHRlcikKKyAgICAsIGdsb2JhbExleGljYWxFbnZpcm9ubWVudFNwYWNl
IElTT19TVUJTUEFDRV9JTklUKCp0aGlzLCBnbG9iYWxMZXhpY2FsRW52aXJvbm1lbnRIZWFwQ2Vs
bFR5cGUsIEpTR2xvYmFsTGV4aWNhbEVudmlyb25tZW50KQorICAgICwgaW50ZXJuYWxGdW5jdGlv
blNwYWNlIElTT19TVUJTUEFDRV9JTklUKCp0aGlzLCBjZWxsSGVhcENlbGxUeXBlLCBJbnRlcm5h
bEZ1bmN0aW9uKSAvLyBIYXNoOjB4Zjg0NWM0NjQKKyAgICAsIGpzUHJveHlTcGFjZSBJU09fU1VC
U1BBQ0VfSU5JVCgqdGhpcywgY2VsbEhlYXBDZWxsVHlwZSwgSlNQcm94eSkKKyAgICAsIG5hdGl2
ZUV4ZWN1dGFibGVTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVCgqdGhpcywgZGVzdHJ1Y3RpYmxlQ2Vs
bEhlYXBDZWxsVHlwZSwgTmF0aXZlRXhlY3V0YWJsZSkgLy8gSGFzaDoweDY3NTY3Zjk1CisgICAg
LCBudW1iZXJPYmplY3RTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVCgqdGhpcywgY2VsbEhlYXBDZWxs
VHlwZSwgTnVtYmVyT2JqZWN0KQorICAgICwgcGxhaW5PYmplY3RTcGFjZSBJU09fU1VCU1BBQ0Vf
SU5JVCgqdGhpcywgY2VsbEhlYXBDZWxsVHlwZSwgSlNOb25GaW5hbE9iamVjdCkgLy8gTWFpbmx5
IHVzZWQgZm9yIHByb3RvdHlwZXMuCisgICAgLCBwcm9taXNlU3BhY2UgSVNPX1NVQlNQQUNFX0lO
SVQoKnRoaXMsIGNlbGxIZWFwQ2VsbFR5cGUsIEpTUHJvbWlzZSkKKyAgICAsIHByb3BlcnR5TmFt
ZUVudW1lcmF0b3JTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVCgqdGhpcywgY2VsbEhlYXBDZWxsVHlw
ZSwgSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yKQorICAgICwgcHJvcGVydHlUYWJsZVNwYWNlIElT
T19TVUJTUEFDRV9JTklUKCp0aGlzLCBkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlLCBQcm9w
ZXJ0eVRhYmxlKSAvLyBIYXNoOjB4YzZiYzlmMTIKKyAgICAsIHJlZ0V4cFNwYWNlIElTT19TVUJT
UEFDRV9JTklUKCp0aGlzLCBkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlLCBSZWdFeHApCisg
ICAgLCByZWdFeHBPYmplY3RTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVCgqdGhpcywgY2VsbEhlYXBD
ZWxsVHlwZSwgUmVnRXhwT2JqZWN0KQorICAgICwgcm9wZVN0cmluZ1NwYWNlIElTT19TVUJTUEFD
RV9JTklUKCp0aGlzLCBzdHJpbmdIZWFwQ2VsbFR5cGUsIEpTUm9wZVN0cmluZykKKyAgICAsIHNj
b3BlZEFyZ3VtZW50c1NwYWNlIElTT19TVUJTUEFDRV9JTklUKCp0aGlzLCBjZWxsSGVhcENlbGxU
eXBlLCBTY29wZWRBcmd1bWVudHMpCisgICAgLCBzcGFyc2VBcnJheVZhbHVlTWFwU3BhY2UgSVNP
X1NVQlNQQUNFX0lOSVQoKnRoaXMsIGRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUsIFNwYXJz
ZUFycmF5VmFsdWVNYXApCisgICAgLCBzdHJpbmdTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVCgqdGhp
cywgc3RyaW5nSGVhcENlbGxUeXBlLCBKU1N0cmluZykgLy8gSGFzaDoweDkwY2Y3NThmCisgICAg
LCBzdHJpbmdPYmplY3RTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVCgqdGhpcywgY2VsbEhlYXBDZWxs
VHlwZSwgU3RyaW5nT2JqZWN0KQorICAgICwgc3RydWN0dXJlQ2hhaW5TcGFjZSBJU09fU1VCU1BB
Q0VfSU5JVCgqdGhpcywgY2VsbEhlYXBDZWxsVHlwZSwgU3RydWN0dXJlQ2hhaW4pCisgICAgLCBz
dHJ1Y3R1cmVSYXJlRGF0YVNwYWNlIElTT19TVUJTUEFDRV9JTklUKCp0aGlzLCBkZXN0cnVjdGli
bGVDZWxsSGVhcENlbGxUeXBlLCBTdHJ1Y3R1cmVSYXJlRGF0YSkgLy8gSGFzaDoweGFjYTRlNjJk
CisgICAgLCBzdHJ1Y3R1cmVTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVCgqdGhpcywgZGVzdHJ1Y3Rp
YmxlQ2VsbEhlYXBDZWxsVHlwZSwgU3RydWN0dXJlKSAvLyBIYXNoOjB4MWYxYmNkY2EKKyAgICAs
IGJyYW5kZWRTdHJ1Y3R1cmVTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVCgqdGhpcywgZGVzdHJ1Y3Rp
YmxlQ2VsbEhlYXBDZWxsVHlwZSwgQnJhbmRlZFN0cnVjdHVyZSkKKyAgICAsIHN5bWJvbFRhYmxl
U3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoKnRoaXMsIGRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5
cGUsIFN5bWJvbFRhYmxlKSAvLyBIYXNoOjB4YzUyMTVhZmQKKyAgICAsIGV4ZWN1dGFibGVUb0Nv
ZGVCbG9ja0VkZ2VzV2l0aENvbnN0cmFpbnRzKGV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2VTcGFj
ZSkKKyAgICAsIGV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2VzV2l0aEZpbmFsaXplcnMoZXhlY3V0
YWJsZVRvQ29kZUJsb2NrRWRnZVNwYWNlKQorICAgICwgY29kZUJsb2NrU3BhY2UgSVNPX1NVQlNQ
QUNFX0lOSVQoKnRoaXMsIGRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUsIENvZGVCbG9jaykg
Ly8gSGFzaDoweDc3ZTY2ZWM5CisgICAgLCBmdW5jdGlvbkV4ZWN1dGFibGVTcGFjZSBJU09fU1VC
U1BBQ0VfSU5JVCgqdGhpcywgZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZSwgRnVuY3Rpb25F
eGVjdXRhYmxlKSAvLyBIYXNoOjB4NWQxNThmMworICAgICwgcHJvZ3JhbUV4ZWN1dGFibGVTcGFj
ZSBJU09fU1VCU1BBQ0VfSU5JVCgqdGhpcywgZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZSwg
UHJvZ3JhbUV4ZWN1dGFibGUpIC8vIEhhc2g6MHg1MjdjNzdlNworICAgICwgdW5saW5rZWRGdW5j
dGlvbkV4ZWN1dGFibGVTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVCgqdGhpcywgZGVzdHJ1Y3RpYmxl
Q2VsbEhlYXBDZWxsVHlwZSwgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUpIC8vIEhhc2g6MHhm
NmI4MjhkOQorCiB7CiAgICAgbV93b3JsZFN0YXRlLnN0b3JlKDApOwogCkBAIC01NzksMzEgKzc4
MiwzMSBAQCB2b2lkIEhlYXA6OmZpbmFsaXplVW5jb25kaXRpb25hbEZpbmFsaXplCiB7CiAgICAg
Vk0mIHZtID0gdGhpcy0+dm0oKTsKICAgICB2bS5idWlsdGluRXhlY3V0YWJsZXMoKS0+ZmluYWxp
emVVbmNvbmRpdGlvbmFsbHkoKTsKLSAgICBmaW5hbGl6ZU1hcmtlZFVuY29uZGl0aW9uYWxGaW5h
bGl6ZXJzPEZ1bmN0aW9uRXhlY3V0YWJsZT4odm0uZnVuY3Rpb25FeGVjdXRhYmxlU3BhY2Uuc3Bh
Y2UpOwotICAgIGZpbmFsaXplTWFya2VkVW5jb25kaXRpb25hbEZpbmFsaXplcnM8U3ltYm9sVGFi
bGU+KHZtLnN5bWJvbFRhYmxlU3BhY2UpOwotICAgIGZpbmFsaXplTWFya2VkVW5jb25kaXRpb25h
bEZpbmFsaXplcnM8RXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZT4odm0uZXhlY3V0YWJsZVRvQ29k
ZUJsb2NrRWRnZXNXaXRoRmluYWxpemVycyk7IC8vIFdlIHJ1biB0aGlzIGJlZm9yZSBDb2RlQmxv
Y2sncyB1bmNvbmRpdGlvbmFsIGZpbmFsaXplciBzaW5jZSBDb2RlQmxvY2sgbG9va3MgYXQgdGhl
IG93bmVyIGV4ZWN1dGFibGUncyBpbnN0YWxsZWQgQ29kZUJsb2NrIGluIGl0cyBmaW5hbGl6ZVVu
Y29uZGl0aW9uYWxseS4KLSAgICB2bS5mb3JFYWNoQ29kZUJsb2NrU3BhY2UoCisgICAgZmluYWxp
emVNYXJrZWRVbmNvbmRpdGlvbmFsRmluYWxpemVyczxGdW5jdGlvbkV4ZWN1dGFibGU+KGZ1bmN0
aW9uRXhlY3V0YWJsZVNwYWNlLnNwYWNlKTsKKyAgICBmaW5hbGl6ZU1hcmtlZFVuY29uZGl0aW9u
YWxGaW5hbGl6ZXJzPFN5bWJvbFRhYmxlPihzeW1ib2xUYWJsZVNwYWNlKTsKKyAgICBmaW5hbGl6
ZU1hcmtlZFVuY29uZGl0aW9uYWxGaW5hbGl6ZXJzPEV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2U+
KGV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2VzV2l0aEZpbmFsaXplcnMpOyAvLyBXZSBydW4gdGhp
cyBiZWZvcmUgQ29kZUJsb2NrJ3MgdW5jb25kaXRpb25hbCBmaW5hbGl6ZXIgc2luY2UgQ29kZUJs
b2NrIGxvb2tzIGF0IHRoZSBvd25lciBleGVjdXRhYmxlJ3MgaW5zdGFsbGVkIENvZGVCbG9jayBp
biBpdHMgZmluYWxpemVVbmNvbmRpdGlvbmFsbHkuCisgICAgZm9yRWFjaENvZGVCbG9ja1NwYWNl
KAogICAgICAgICBbJl0gKGF1dG8mIHNwYWNlKSB7CiAgICAgICAgICAgICB0aGlzLT5maW5hbGl6
ZU1hcmtlZFVuY29uZGl0aW9uYWxGaW5hbGl6ZXJzPENvZGVCbG9jaz4oc3BhY2Uuc2V0KTsKICAg
ICAgICAgfSk7Ci0gICAgZmluYWxpemVNYXJrZWRVbmNvbmRpdGlvbmFsRmluYWxpemVyczxTdHJ1
Y3R1cmVSYXJlRGF0YT4odm0uc3RydWN0dXJlUmFyZURhdGFTcGFjZSk7Ci0gICAgZmluYWxpemVN
YXJrZWRVbmNvbmRpdGlvbmFsRmluYWxpemVyczxVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZT4o
dm0udW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGVTcGFjZS5zZXQpOwotICAgIGlmICh2bS5tX3dl
YWtTZXRTcGFjZSkKLSAgICAgICAgZmluYWxpemVNYXJrZWRVbmNvbmRpdGlvbmFsRmluYWxpemVy
czxKU1dlYWtTZXQ+KCp2bS5tX3dlYWtTZXRTcGFjZSk7Ci0gICAgaWYgKHZtLm1fd2Vha01hcFNw
YWNlKQotICAgICAgICBmaW5hbGl6ZU1hcmtlZFVuY29uZGl0aW9uYWxGaW5hbGl6ZXJzPEpTV2Vh
a01hcD4oKnZtLm1fd2Vha01hcFNwYWNlKTsKLSAgICBpZiAodm0ubV93ZWFrT2JqZWN0UmVmU3Bh
Y2UpCi0gICAgICAgIGZpbmFsaXplTWFya2VkVW5jb25kaXRpb25hbEZpbmFsaXplcnM8SlNXZWFr
T2JqZWN0UmVmPigqdm0ubV93ZWFrT2JqZWN0UmVmU3BhY2UpOwotICAgIGlmICh2bS5tX2Vycm9y
SW5zdGFuY2VTcGFjZSkKLSAgICAgICAgZmluYWxpemVNYXJrZWRVbmNvbmRpdGlvbmFsRmluYWxp
emVyczxFcnJvckluc3RhbmNlPigqdm0ubV9lcnJvckluc3RhbmNlU3BhY2UpOworICAgIGZpbmFs
aXplTWFya2VkVW5jb25kaXRpb25hbEZpbmFsaXplcnM8U3RydWN0dXJlUmFyZURhdGE+KHN0cnVj
dHVyZVJhcmVEYXRhU3BhY2UpOworICAgIGZpbmFsaXplTWFya2VkVW5jb25kaXRpb25hbEZpbmFs
aXplcnM8VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU+KHVubGlua2VkRnVuY3Rpb25FeGVjdXRh
YmxlU3BhY2Uuc2V0KTsKKyAgICBpZiAobV93ZWFrU2V0U3BhY2UpCisgICAgICAgIGZpbmFsaXpl
TWFya2VkVW5jb25kaXRpb25hbEZpbmFsaXplcnM8SlNXZWFrU2V0PigqbV93ZWFrU2V0U3BhY2Up
OworICAgIGlmIChtX3dlYWtNYXBTcGFjZSkKKyAgICAgICAgZmluYWxpemVNYXJrZWRVbmNvbmRp
dGlvbmFsRmluYWxpemVyczxKU1dlYWtNYXA+KCptX3dlYWtNYXBTcGFjZSk7CisgICAgaWYgKG1f
d2Vha09iamVjdFJlZlNwYWNlKQorICAgICAgICBmaW5hbGl6ZU1hcmtlZFVuY29uZGl0aW9uYWxG
aW5hbGl6ZXJzPEpTV2Vha09iamVjdFJlZj4oKm1fd2Vha09iamVjdFJlZlNwYWNlKTsKKyAgICBp
ZiAobV9lcnJvckluc3RhbmNlU3BhY2UpCisgICAgICAgIGZpbmFsaXplTWFya2VkVW5jb25kaXRp
b25hbEZpbmFsaXplcnM8RXJyb3JJbnN0YW5jZT4oKm1fZXJyb3JJbnN0YW5jZVNwYWNlKTsKIAog
ICAgIC8vIEZpbmFsaXphdGlvblJlZ2lzdHJpZXMgY3VycmVudGx5IHJlbHkgb24gc2VyaWFsIGZp
bmFsaXphdGlvbiBiZWNhdXNlIHRoZXkgY2FuIHBvc3QgdGFza3MgdG8gdGhlIGRlZmVycmVkV29y
a1RpbWVyLCB3aGljaCBub3JtYWxseSBleHBlY3RzIHRhc2tzIHRvIG9ubHkgYmUgcG9zdGVkIGJ5
IHRoZSBBUEkgbG9jayBob2xkZXIuCi0gICAgaWYgKHZtLm1fZmluYWxpemF0aW9uUmVnaXN0cnlT
cGFjZSkKLSAgICAgICAgZmluYWxpemVNYXJrZWRVbmNvbmRpdGlvbmFsRmluYWxpemVyczxKU0Zp
bmFsaXphdGlvblJlZ2lzdHJ5Pigqdm0ubV9maW5hbGl6YXRpb25SZWdpc3RyeVNwYWNlKTsKKyAg
ICBpZiAobV9maW5hbGl6YXRpb25SZWdpc3RyeVNwYWNlKQorICAgICAgICBmaW5hbGl6ZU1hcmtl
ZFVuY29uZGl0aW9uYWxGaW5hbGl6ZXJzPEpTRmluYWxpemF0aW9uUmVnaXN0cnk+KCptX2ZpbmFs
aXphdGlvblJlZ2lzdHJ5U3BhY2UpOwogCiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQotICAgIGlm
ICh2bS5tX3dlYkFzc2VtYmx5Q29kZUJsb2NrU3BhY2UpCi0gICAgICAgIGZpbmFsaXplTWFya2Vk
VW5jb25kaXRpb25hbEZpbmFsaXplcnM8SlNXZWJBc3NlbWJseUNvZGVCbG9jaz4oKnZtLm1fd2Vi
QXNzZW1ibHlDb2RlQmxvY2tTcGFjZSk7CisgICAgaWYgKG1fd2ViQXNzZW1ibHlDb2RlQmxvY2tT
cGFjZSkKKyAgICAgICAgZmluYWxpemVNYXJrZWRVbmNvbmRpdGlvbmFsRmluYWxpemVyczxKU1dl
YkFzc2VtYmx5Q29kZUJsb2NrPigqbV93ZWJBc3NlbWJseUNvZGVCbG9ja1NwYWNlKTsKICNlbmRp
ZgogfQogCkBAIC05MDUsNyArMTEwOCw3IEBAIHZvaWQgSGVhcDo6ZGVsZXRlQWxsQ29kZUJsb2Nr
cyhEZWxldGVBbGwKIAogICAgIGNvbXBsZXRlQWxsSklUUGxhbnMoKTsKIAotICAgIHZtLmZvckVh
Y2hTY3JpcHRFeGVjdXRhYmxlU3BhY2UoCisgICAgZm9yRWFjaFNjcmlwdEV4ZWN1dGFibGVTcGFj
ZSgKICAgICAgICAgWyZdIChhdXRvJiBzcGFjZUFuZFNldCkgewogICAgICAgICAgICAgSGVhcEl0
ZXJhdGlvblNjb3BlIGhlYXBJdGVyYXRpb25TY29wZSgqdGhpcyk7CiAgICAgICAgICAgICBhdXRv
JiBzZXQgPSBzcGFjZUFuZFNldC5zZXQ7CkBAIC05MjQsOCArMTEyNyw4IEBAIHZvaWQgSGVhcDo6
ZGVsZXRlQWxsQ29kZUJsb2NrcyhEZWxldGVBbGwKICAgICAgICAgLy8gcG9pbnRzIGludG8gYSBD
b2RlQmxvY2sgdGhhdCBjb3VsZCBiZSBkZWFkLiBUaGUgSUMgd2lsbCBzdGlsbCBzdWNjZWVkIGJl
Y2F1c2UKICAgICAgICAgLy8gaXQgdXNlcyBhIGNhbGxlZSBjaGVjaywgYnV0IHRoZW4gaXQgd2ls
bCBjYWxsIGludG8gZGVhZCBjb2RlLgogICAgICAgICBIZWFwSXRlcmF0aW9uU2NvcGUgaGVhcEl0
ZXJhdGlvblNjb3BlKCp0aGlzKTsKLSAgICAgICAgaWYgKHZtLm1fd2ViQXNzZW1ibHlDb2RlQmxv
Y2tTcGFjZSkgewotICAgICAgICAgICAgdm0ubV93ZWJBc3NlbWJseUNvZGVCbG9ja1NwYWNlLT5m
b3JFYWNoTGl2ZUNlbGwoWyZdIChIZWFwQ2VsbCogY2VsbCwgSGVhcENlbGw6OktpbmQga2luZCkg
eworICAgICAgICBpZiAobV93ZWJBc3NlbWJseUNvZGVCbG9ja1NwYWNlKSB7CisgICAgICAgICAg
ICBtX3dlYkFzc2VtYmx5Q29kZUJsb2NrU3BhY2UtPmZvckVhY2hMaXZlQ2VsbChbJl0gKEhlYXBD
ZWxsKiBjZWxsLCBIZWFwQ2VsbDo6S2luZCBraW5kKSB7CiAgICAgICAgICAgICAgICAgQVNTRVJU
X1VOVVNFRChraW5kLCBraW5kID09IEhlYXBDZWxsOjpKU0NlbGwpOwogICAgICAgICAgICAgICAg
IEpTV2ViQXNzZW1ibHlDb2RlQmxvY2sqIGNvZGVCbG9jayA9IHN0YXRpY19jYXN0PEpTV2ViQXNz
ZW1ibHlDb2RlQmxvY2sqPihjZWxsKTsKICAgICAgICAgICAgICAgICBjb2RlQmxvY2stPmNsZWFy
SlNDYWxsSUNzKHZtKTsKQEAgLTk0Niw3ICsxMTQ5LDcgQEAgdm9pZCBIZWFwOjpkZWxldGVBbGxV
bmxpbmtlZENvZGVCbG9ja3MoRAogICAgIFJFTEVBU0VfQVNTRVJUKCFtX2NvbGxlY3Rpb25TY29w
ZSk7CiAKICAgICBIZWFwSXRlcmF0aW9uU2NvcGUgaGVhcEl0ZXJhdGlvblNjb3BlKCp0aGlzKTsK
LSAgICB2bS51bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZVNwYWNlLnNldC5mb3JFYWNoTGl2ZUNl
bGwoCisgICAgdW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGVTcGFjZS5zZXQuZm9yRWFjaExpdmVD
ZWxsKAogICAgICAgICBbJl0gKEhlYXBDZWxsKiBjZWxsLCBIZWFwQ2VsbDo6S2luZCkgewogICAg
ICAgICAgICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSBzdGF0aWNf
Y2FzdDxVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSo+KGNlbGwpOwogICAgICAgICAgICAgZXhl
Y3V0YWJsZS0+Y2xlYXJDb2RlKHZtKTsKQEAgLTk1NSwxMCArMTE1OCwxMCBAQCB2b2lkIEhlYXA6
OmRlbGV0ZUFsbFVubGlua2VkQ29kZUJsb2NrcyhECiAKIHZvaWQgSGVhcDo6ZGVsZXRlVW5tYXJr
ZWRDb21waWxlZENvZGUoKQogewotICAgIHZtKCkuZm9yRWFjaFNjcmlwdEV4ZWN1dGFibGVTcGFj
ZShbXSAoYXV0byYgc3BhY2UpIHsgc3BhY2Uuc3BhY2Uuc3dlZXAoKTsgfSk7CisgICAgZm9yRWFj
aFNjcmlwdEV4ZWN1dGFibGVTcGFjZShbXSAoYXV0byYgc3BhY2UpIHsgc3BhY2Uuc3BhY2Uuc3dl
ZXAzKCk7IH0pOwogICAgIC8vIFN3ZWVwaW5nIG11c3Qgb2NjdXIgYmVmb3JlIGRlbGV0aW5nIHN0
dWJzLCBvdGhlcndpc2UgdGhlIHN0dWJzIG1pZ2h0IHN0aWxsIHRoaW5rIHRoZXkncmUgYWxpdmUg
YXMgdGhleSBnZXQgZGVsZXRlZC4KICAgICAvLyBBbmQgQ29kZUJsb2NrIGRlc3RydWN0b3IgaXMg
YXNzdW1pbmcgdGhhdCBDb2RlQmxvY2sgZ2V0cyBkZXN0cm95ZWQgYmVmb3JlIFVubGlua2VkQ29k
ZUJsb2NrIGdldHMgZGVzdHJveWVkLgotICAgIHZtKCkuZm9yRWFjaENvZGVCbG9ja1NwYWNlKFtd
IChhdXRvJiBzcGFjZSkgeyBzcGFjZS5zcGFjZS5zd2VlcCgpOyB9KTsKKyAgICBmb3JFYWNoQ29k
ZUJsb2NrU3BhY2UoW10gKGF1dG8mIHNwYWNlKSB7IHNwYWNlLnNwYWNlLnN3ZWVwMygpOyB9KTsK
ICAgICBtX2ppdFN0dWJSb3V0aW5lcy0+ZGVsZXRlVW5tYXJrZWRKZXR0aXNvbmVkU3R1YlJvdXRp
bmVzKCk7CiB9CiAKQEAgLTIxMDMsOCArMjMwNiw4IEBAIHZvaWQgSGVhcDo6c3dlZXBJbkZpbmFs
aXplKCkKICAgICBtX29iamVjdFNwYWNlLnN3ZWVwUHJlY2lzZUFsbG9jYXRpb25zKCk7CiAjaWYg
RU5BQkxFKFdFQkFTU0VNQkxZKQogICAgIC8vIFdlIGhvbGQgb250byBhIGxvdCBvZiBtZW1vcnks
IHNvIGl0IG1ha2VzIGEgbG90IG9mIHNlbnNlIHRvIGJlIHN3ZXB0IGVhZ2VybHkuCi0gICAgaWYg
KHZtKCkubV93ZWJBc3NlbWJseU1lbW9yeVNwYWNlKQotICAgICAgICB2bSgpLm1fd2ViQXNzZW1i
bHlNZW1vcnlTcGFjZS0+c3dlZXAoKTsKKyAgICBpZiAobV93ZWJBc3NlbWJseU1lbW9yeVNwYWNl
KQorICAgICAgICBtX3dlYkFzc2VtYmx5TWVtb3J5U3BhY2UtPnN3ZWVwMygpOwogI2VuZGlmCiB9
CiAKQEAgLTI4MDUsNyArMzAwOCw3IEBAIHZvaWQgSGVhcDo6YWRkQ29yZUNvbnN0cmFpbnRzKCkK
ICAgICAgICAgIk8iLCAiT3V0cHV0IiwKICAgICAgICAgTUFLRV9NQVJLSU5HX0NPTlNUUkFJTlRf
RVhFQ1VUT1JfUEFJUigoW10gKGF1dG8mIHZpc2l0b3IpIHsKICAgICAgICAgICAgIHVzaW5nIFZp
c2l0b3IgPSBkZWNsdHlwZSh2aXNpdG9yKTsKLSAgICAgICAgICAgIFZNJiB2bSA9IHZpc2l0b3Iu
dm0oKTsKKyAgICAgICAgICAgIEhlYXAqIGhlYXAgPSB2aXNpdG9yLmhlYXAoKTsKIAogICAgICAg
ICAgICAgLy8gVGhlIGB2aXNpdG9yMmAgYXJndW1lbnQgaXMgc3RyYW5nZWx5IG5hbWVkIGJlY2F1
c2UgdGhlIFdpbkNhaXJvIHBvcnQKICAgICAgICAgICAgIC8vIGdldHMgY29uZnVzZWQgIGFuZCB0
aGlua3Mgd2UncmUgdHJ5aW5nIHRvIGNhcHR1cmUgdGhlIG91dGVyIHZpc2l0b3IKQEAgLTI4MjQs
MTEgKzMwMjcsMTEgQEAgdm9pZCBIZWFwOjphZGRDb3JlQ29uc3RyYWludHMoKQogCiAgICAgICAg
ICAgICB7CiAgICAgICAgICAgICAgICAgU2V0Um9vdE1hcmtSZWFzb25TY29wZSByb290U2NvcGUo
dmlzaXRvciwgUm9vdE1hcmtSZWFzb246OkV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2VzKTsKLSAg
ICAgICAgICAgICAgICBhZGQodm0uZXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZXNXaXRoQ29uc3Ry
YWludHMpOworICAgICAgICAgICAgICAgIGFkZChoZWFwLT5leGVjdXRhYmxlVG9Db2RlQmxvY2tF
ZGdlc1dpdGhDb25zdHJhaW50cyk7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAodm0u
bV93ZWFrTWFwU3BhY2UpIHsKKyAgICAgICAgICAgIGlmIChoZWFwLT5tX3dlYWtNYXBTcGFjZSkg
ewogICAgICAgICAgICAgICAgIFNldFJvb3RNYXJrUmVhc29uU2NvcGUgcm9vdFNjb3BlKHZpc2l0
b3IsIFJvb3RNYXJrUmVhc29uOjpXZWFrTWFwU3BhY2UpOwotICAgICAgICAgICAgICAgIGFkZCgq
dm0ubV93ZWFrTWFwU3BhY2UpOworICAgICAgICAgICAgICAgIGFkZCgqaGVhcC0+bV93ZWFrTWFw
U3BhY2UpOwogICAgICAgICAgICAgfQogICAgICAgICB9KSksCiAgICAgICAgIENvbnN0cmFpbnRW
b2xhdGlsaXR5OjpHcmV5ZWRCeU1hcmtpbmcsCkBAIC0zMDYyLDQgKzMyNjUsMTM1IEBAIHZvaWQg
SGVhcDo6dmVyaWZ5R0MoKQogICAgIG1fdmVyaWZpZXJTbG90VmlzaXRvciA9IG51bGxwdHI7CiB9
CiAKKyNkZWZpbmUgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKG5hbWUs
IGhlYXBDZWxsVHlwZSwgdHlwZSkgXAorICAgIElzb1N1YnNwYWNlKiBIZWFwOjpuYW1lIyNTbG93
KCkgXAorICAgIHsgXAorICAgICAgICBBU1NFUlQoIW1fIyNuYW1lKTsgXAorICAgICAgICBhdXRv
IHNwYWNlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQoKnRoaXMs
IGhlYXBDZWxsVHlwZSwgdHlwZSk7IFwKKyAgICAgICAgV1RGOjpzdG9yZVN0b3JlRmVuY2UoKTsg
XAorICAgICAgICBtXyMjbmFtZSA9IFdURk1vdmUoc3BhY2UpOyBcCisgICAgICAgIHJldHVybiBt
XyMjbmFtZS5nZXQoKTsgXAorICAgIH0KKworCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVf
TUVNQkVSX1NMT1coYXBpR2xvYmFsT2JqZWN0U3BhY2UsIGFwaUdsb2JhbE9iamVjdEhlYXBDZWxs
VHlwZSwgSlNBUElHbG9iYWxPYmplY3QpCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVN
QkVSX1NMT1coYXBpVmFsdWVXcmFwcGVyU3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUsIEpTQVBJVmFs
dWVXcmFwcGVyKQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGFycmF5
QnVmZmVyU3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUsIEpTQXJyYXlCdWZmZXIpCitEWU5BTUlDX0lT
T19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coYXJyYXlJdGVyYXRvclNwYWNlLCBjZWxsSGVh
cENlbGxUeXBlLCBKU0FycmF5SXRlcmF0b3IpCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVf
TUVNQkVSX1NMT1coYXN5bmNHZW5lcmF0b3JTcGFjZSwgY2VsbEhlYXBDZWxsVHlwZSwgSlNBc3lu
Y0dlbmVyYXRvcikKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhiaWdJ
bnQ2NEFycmF5U3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUsIEpTQmlnSW50NjRBcnJheSkKK0RZTkFN
SUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhiaWdJbnRPYmplY3RTcGFjZSwgY2Vs
bEhlYXBDZWxsVHlwZSwgQmlnSW50T2JqZWN0KQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5F
X01FTUJFUl9TTE9XKGJpZ1VpbnQ2NEFycmF5U3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUsIEpTQmln
VWludDY0QXJyYXkpCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coYm9v
bGVhbk9iamVjdFNwYWNlLCBjZWxsSGVhcENlbGxUeXBlLCBCb29sZWFuT2JqZWN0KQorRFlOQU1J
Q19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGJvdW5kRnVuY3Rpb25TcGFjZSwgY2Vs
bEhlYXBDZWxsVHlwZSwgSlNCb3VuZEZ1bmN0aW9uKSAvLyBIYXNoOjB4ZDc5MTZkNDEKK0RZTkFN
SUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhjYWxsYmFja0NvbnN0cnVjdG9yU3Bh
Y2UsIGNhbGxiYWNrQ29uc3RydWN0b3JIZWFwQ2VsbFR5cGUsIEpTQ2FsbGJhY2tDb25zdHJ1Y3Rv
cikKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhjYWxsYmFja0dsb2Jh
bE9iamVjdFNwYWNlLCBjYWxsYmFja0dsb2JhbE9iamVjdEhlYXBDZWxsVHlwZSwgSlNDYWxsYmFj
a09iamVjdDxKU0dsb2JhbE9iamVjdD4pCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVN
QkVSX1NMT1coY2FsbGJhY2tGdW5jdGlvblNwYWNlLCBjZWxsSGVhcENlbGxUeXBlLCBKU0NhbGxi
YWNrRnVuY3Rpb24pIC8vIEhhc2g6MHhlNzY0OGViYworRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVG
SU5FX01FTUJFUl9TTE9XKGNhbGxiYWNrT2JqZWN0U3BhY2UsIGNhbGxiYWNrT2JqZWN0SGVhcENl
bGxUeXBlLCBKU0NhbGxiYWNrT2JqZWN0PEpTTm9uRmluYWxPYmplY3Q+KQorRFlOQU1JQ19JU09f
U1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGN1c3RvbUdldHRlckZ1bmN0aW9uU3BhY2UsIGN1
c3RvbUdldHRlckZ1bmN0aW9uSGVhcENlbGxUeXBlLCBKU0N1c3RvbUdldHRlckZ1bmN0aW9uKQor
RFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGN1c3RvbVNldHRlckZ1bmN0
aW9uU3BhY2UsIGN1c3RvbVNldHRlckZ1bmN0aW9uSGVhcENlbGxUeXBlLCBKU0N1c3RvbVNldHRl
ckZ1bmN0aW9uKQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGRhdGFW
aWV3U3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUsIEpTRGF0YVZpZXcpCitEWU5BTUlDX0lTT19TVUJT
UEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coZGVidWdnZXJTY29wZVNwYWNlLCBjZWxsSGVhcENlbGxU
eXBlLCBEZWJ1Z2dlclNjb3BlKQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9T
TE9XKGVycm9ySW5zdGFuY2VTcGFjZSwgZXJyb3JJbnN0YW5jZUhlYXBDZWxsVHlwZSwgRXJyb3JJ
bnN0YW5jZSkgLy8gSGFzaDoweDNmNDBkNGEKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9N
RU1CRVJfU0xPVyhmbG9hdDMyQXJyYXlTcGFjZSwgY2VsbEhlYXBDZWxsVHlwZSwgSlNGbG9hdDMy
QXJyYXkpCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coZmxvYXQ2NEFy
cmF5U3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUsIEpTRmxvYXQ2NEFycmF5KQorRFlOQU1JQ19JU09f
U1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGZ1bmN0aW9uUmFyZURhdGFTcGFjZSwgZGVzdHJ1
Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZSwgRnVuY3Rpb25SYXJlRGF0YSkKK0RZTkFNSUNfSVNPX1NV
QlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhnZW5lcmF0b3JTcGFjZSwgY2VsbEhlYXBDZWxsVHlw
ZSwgSlNHZW5lcmF0b3IpCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1co
Z2xvYmFsT2JqZWN0U3BhY2UsIGdsb2JhbE9iamVjdEhlYXBDZWxsVHlwZSwgSlNHbG9iYWxPYmpl
Y3QpCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coaW5qZWN0ZWRTY3Jp
cHRIb3N0U3BhY2UsIGluamVjdGVkU2NyaXB0SG9zdFNwYWNlSGVhcENlbGxUeXBlLCBJbnNwZWN0
b3I6OkpTSW5qZWN0ZWRTY3JpcHRIb3N0KQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01F
TUJFUl9TTE9XKGludDhBcnJheVNwYWNlLCBjZWxsSGVhcENlbGxUeXBlLCBKU0ludDhBcnJheSkK
K0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhpbnQxNkFycmF5U3BhY2Us
IGNlbGxIZWFwQ2VsbFR5cGUsIEpTSW50MTZBcnJheSkKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RF
RklORV9NRU1CRVJfU0xPVyhpbnQzMkFycmF5U3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUsIEpTSW50
MzJBcnJheSkKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhqYXZhU2Ny
aXB0Q2FsbEZyYW1lU3BhY2UsIGphdmFTY3JpcHRDYWxsRnJhbWVIZWFwQ2VsbFR5cGUsIEluc3Bl
Y3Rvcjo6SlNKYXZhU2NyaXB0Q2FsbEZyYW1lKQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5F
X01FTUJFUl9TTE9XKGpzTW9kdWxlUmVjb3JkU3BhY2UsIGpzTW9kdWxlUmVjb3JkSGVhcENlbGxU
eXBlLCBKU01vZHVsZVJlY29yZCkKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJf
U0xPVyhtYXBCdWNrZXRTcGFjZSwgY2VsbEhlYXBDZWxsVHlwZSwgSlNNYXA6OkJ1Y2tldFR5cGUp
CitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1cobWFwSXRlcmF0b3JTcGFj
ZSwgY2VsbEhlYXBDZWxsVHlwZSwgSlNNYXBJdGVyYXRvcikKK0RZTkFNSUNfSVNPX1NVQlNQQUNF
X0RFRklORV9NRU1CRVJfU0xPVyhtYXBTcGFjZSwgY2VsbEhlYXBDZWxsVHlwZSwgSlNNYXApCitE
WU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1cobW9kdWxlTmFtZXNwYWNlT2Jq
ZWN0U3BhY2UsIG1vZHVsZU5hbWVzcGFjZU9iamVjdEhlYXBDZWxsVHlwZSwgSlNNb2R1bGVOYW1l
c3BhY2VPYmplY3QpCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1cobmF0
aXZlU3RkRnVuY3Rpb25TcGFjZSwgbmF0aXZlU3RkRnVuY3Rpb25IZWFwQ2VsbFR5cGUsIEpTTmF0
aXZlU3RkRnVuY3Rpb24pIC8vIEhhc2g6MHg3MGVkNjFlNAorRFlOQU1JQ19JU09fU1VCU1BBQ0Vf
REVGSU5FX01FTUJFUl9TTE9XKHByb3h5T2JqZWN0U3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUsIFBy
b3h5T2JqZWN0KQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHByb3h5
UmV2b2tlU3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUsIFByb3h5UmV2b2tlKSAvLyBIYXNoOjB4YjUw
NmE5MzkKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhzY29wZWRBcmd1
bWVudHNUYWJsZVNwYWNlLCBkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlLCBTY29wZWRBcmd1
bWVudHNUYWJsZSkKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhzY3Jp
cHRGZXRjaFBhcmFtZXRlcnNTcGFjZSwgZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZSwgSlNT
Y3JpcHRGZXRjaFBhcmFtZXRlcnMpCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVS
X1NMT1coc2NyaXB0RmV0Y2hlclNwYWNlLCBkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlLCBK
U1NjcmlwdEZldGNoZXIpCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1co
c2V0QnVja2V0U3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUsIEpTU2V0OjpCdWNrZXRUeXBlKQorRFlO
QU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHNldEl0ZXJhdG9yU3BhY2UsIGNl
bGxIZWFwQ2VsbFR5cGUsIEpTU2V0SXRlcmF0b3IpCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJ
TkVfTUVNQkVSX1NMT1coc2V0U3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUsIEpTU2V0KQorRFlOQU1J
Q19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHNoYWRvd1JlYWxtU3BhY2UsIGNlbGxI
ZWFwQ2VsbFR5cGUsIFNoYWRvd1JlYWxtT2JqZWN0KQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVG
SU5FX01FTUJFUl9TTE9XKHN0cmljdEV2YWxBY3RpdmF0aW9uU3BhY2UsIGNlbGxIZWFwQ2VsbFR5
cGUsIFN0cmljdEV2YWxBY3RpdmF0aW9uKQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01F
TUJFUl9TTE9XKHN0cmluZ0l0ZXJhdG9yU3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUsIEpTU3RyaW5n
SXRlcmF0b3IpCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coc291cmNl
Q29kZVNwYWNlLCBkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlLCBKU1NvdXJjZUNvZGUpCitE
WU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coc3ltYm9sU3BhY2UsIGRlc3Ry
dWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUsIFN5bWJvbCkKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RF
RklORV9NRU1CRVJfU0xPVyhzeW1ib2xPYmplY3RTcGFjZSwgY2VsbEhlYXBDZWxsVHlwZSwgU3lt
Ym9sT2JqZWN0KQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHRlbXBs
YXRlT2JqZWN0RGVzY3JpcHRvclNwYWNlLCBkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlLCBK
U1RlbXBsYXRlT2JqZWN0RGVzY3JpcHRvcikKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9N
RU1CRVJfU0xPVyh0ZW1wb3JhbENhbGVuZGFyU3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUsIFRlbXBv
cmFsQ2FsZW5kYXIpCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1codGVt
cG9yYWxEdXJhdGlvblNwYWNlLCBjZWxsSGVhcENlbGxUeXBlLCBUZW1wb3JhbER1cmF0aW9uKQor
RFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHRlbXBvcmFsSW5zdGFudFNw
YWNlLCBjZWxsSGVhcENlbGxUeXBlLCBUZW1wb3JhbEluc3RhbnQpCitEWU5BTUlDX0lTT19TVUJT
UEFDRV9ERUZJTkVfTUVNQkVSX1NMT1codGVtcG9yYWxQbGFpblRpbWVTcGFjZSwgY2VsbEhlYXBD
ZWxsVHlwZSwgVGVtcG9yYWxQbGFpblRpbWUpCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVf
TUVNQkVSX1NMT1codGVtcG9yYWxUaW1lWm9uZVNwYWNlLCBjZWxsSGVhcENlbGxUeXBlLCBUZW1w
b3JhbFRpbWVab25lKQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHVp
bnQ4QXJyYXlTcGFjZSwgY2VsbEhlYXBDZWxsVHlwZSwgSlNVaW50OEFycmF5KQorRFlOQU1JQ19J
U09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHVpbnQ4Q2xhbXBlZEFycmF5U3BhY2UsIGNl
bGxIZWFwQ2VsbFR5cGUsIEpTVWludDhDbGFtcGVkQXJyYXkpCitEWU5BTUlDX0lTT19TVUJTUEFD
RV9ERUZJTkVfTUVNQkVSX1NMT1codWludDE2QXJyYXlTcGFjZSwgY2VsbEhlYXBDZWxsVHlwZSwg
SlNVaW50MTZBcnJheSkKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh1
aW50MzJBcnJheVNwYWNlLCBjZWxsSGVhcENlbGxUeXBlLCBKU1VpbnQzMkFycmF5KQorRFlOQU1J
Q19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHVubGlua2VkRXZhbENvZGVCbG9ja1Nw
YWNlLCBkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlLCBVbmxpbmtlZEV2YWxDb2RlQmxvY2sp
CitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1codW5saW5rZWRGdW5jdGlv
bkNvZGVCbG9ja1NwYWNlLCBkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlLCBVbmxpbmtlZEZ1
bmN0aW9uQ29kZUJsb2NrKQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9X
KHVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9ja1NwYWNlLCBkZXN0cnVjdGlibGVDZWxsSGVh
cENlbGxUeXBlLCBVbmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2spCitEWU5BTUlDX0lTT19T
VUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1codW5saW5rZWRQcm9ncmFtQ29kZUJsb2NrU3BhY2Us
IGRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUsIFVubGlua2VkUHJvZ3JhbUNvZGVCbG9jaykK
K0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh3ZWFrTWFwU3BhY2UsIHdl
YWtNYXBIZWFwQ2VsbFR5cGUsIEpTV2Vha01hcCkgLy8gSGFzaDoweDY2MmIxMmEzCitEWU5BTUlD
X0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1cod2Vha1NldFNwYWNlLCB3ZWFrU2V0SGVh
cENlbGxUeXBlLCBKU1dlYWtTZXQpIC8vIEhhc2g6MHg0Yzc4MWIzMAorRFlOQU1JQ19JU09fU1VC
U1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHdlYWtPYmplY3RSZWZTcGFjZSwgY2VsbEhlYXBDZWxs
VHlwZSwgSlNXZWFrT2JqZWN0UmVmKSAvLyBIYXNoOjB4OGVjNjhmMWYKK0RZTkFNSUNfSVNPX1NV
QlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh3aXRoU2NvcGVTcGFjZSwgY2VsbEhlYXBDZWxsVHlw
ZSwgSlNXaXRoU2NvcGUpCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1co
ZmluYWxpemF0aW9uUmVnaXN0cnlTcGFjZSwgZmluYWxpemF0aW9uUmVnaXN0cnlDZWxsVHlwZSwg
SlNGaW5hbGl6YXRpb25SZWdpc3RyeSkKKyNpZiBKU0NfT0JKQ19BUElfRU5BQkxFRAorRFlOQU1J
Q19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGFwaVdyYXBwZXJPYmplY3RTcGFjZSwg
YXBpV3JhcHBlck9iamVjdEhlYXBDZWxsVHlwZSwgSlNDYWxsYmFja09iamVjdDxKU0FQSVdyYXBw
ZXJPYmplY3Q+KQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKG9iakND
YWxsYmFja0Z1bmN0aW9uU3BhY2UsIG9iakNDYWxsYmFja0Z1bmN0aW9uSGVhcENlbGxUeXBlLCBP
YmpDQ2FsbGJhY2tGdW5jdGlvbikgLy8gSGFzaDoweDEwZjYxMGI4CisjZW5kaWYKKyNpZmRlZiBK
U0NfR0xJQl9BUElfRU5BQkxFRAorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9T
TE9XKGFwaVdyYXBwZXJPYmplY3RTcGFjZSwgYXBpV3JhcHBlck9iamVjdEhlYXBDZWxsVHlwZSwg
SlNDYWxsYmFja09iamVjdDxKU0FQSVdyYXBwZXJPYmplY3Q+KQorRFlOQU1JQ19JU09fU1VCU1BB
Q0VfREVGSU5FX01FTUJFUl9TTE9XKGpzY0NhbGxiYWNrRnVuY3Rpb25TcGFjZSwganNjQ2FsbGJh
Y2tGdW5jdGlvbkhlYXBDZWxsVHlwZSwgSlNDQ2FsbGJhY2tGdW5jdGlvbikKK0RZTkFNSUNfSVNP
X1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhjYWxsYmFja0FQSVdyYXBwZXJHbG9iYWxPYmpl
Y3RTcGFjZSwgY2FsbGJhY2tBUElXcmFwcGVyR2xvYmFsT2JqZWN0SGVhcENlbGxUeXBlLCBKU0Nh
bGxiYWNrT2JqZWN0PEpTQVBJV3JhcHBlckdsb2JhbE9iamVjdD4pCisjZW5kaWYKK0RZTkFNSUNf
SVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhpbnRsQ29sbGF0b3JTcGFjZSwgaW50bENv
bGxhdG9ySGVhcENlbGxUeXBlLCBJbnRsQ29sbGF0b3IpCitEWU5BTUlDX0lTT19TVUJTUEFDRV9E
RUZJTkVfTUVNQkVSX1NMT1coaW50bERhdGVUaW1lRm9ybWF0U3BhY2UsIGludGxEYXRlVGltZUZv
cm1hdEhlYXBDZWxsVHlwZSwgSW50bERhdGVUaW1lRm9ybWF0KQorRFlOQU1JQ19JU09fU1VCU1BB
Q0VfREVGSU5FX01FTUJFUl9TTE9XKGludGxEaXNwbGF5TmFtZXNTcGFjZSwgaW50bERpc3BsYXlO
YW1lc0hlYXBDZWxsVHlwZSwgSW50bERpc3BsYXlOYW1lcykKK0RZTkFNSUNfSVNPX1NVQlNQQUNF
X0RFRklORV9NRU1CRVJfU0xPVyhpbnRsTGlzdEZvcm1hdFNwYWNlLCBpbnRsTGlzdEZvcm1hdEhl
YXBDZWxsVHlwZSwgSW50bExpc3RGb3JtYXQpCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVf
TUVNQkVSX1NMT1coaW50bExvY2FsZVNwYWNlLCBpbnRsTG9jYWxlSGVhcENlbGxUeXBlLCBJbnRs
TG9jYWxlKQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGludGxOdW1i
ZXJGb3JtYXRTcGFjZSwgaW50bE51bWJlckZvcm1hdEhlYXBDZWxsVHlwZSwgSW50bE51bWJlckZv
cm1hdCkKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhpbnRsUGx1cmFs
UnVsZXNTcGFjZSwgaW50bFBsdXJhbFJ1bGVzSGVhcENlbGxUeXBlLCBJbnRsUGx1cmFsUnVsZXMp
CitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coaW50bFJlbGF0aXZlVGlt
ZUZvcm1hdFNwYWNlLCBpbnRsUmVsYXRpdmVUaW1lRm9ybWF0SGVhcENlbGxUeXBlLCBJbnRsUmVs
YXRpdmVUaW1lRm9ybWF0KQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9X
KGludGxTZWdtZW50SXRlcmF0b3JTcGFjZSwgaW50bFNlZ21lbnRJdGVyYXRvckhlYXBDZWxsVHlw
ZSwgSW50bFNlZ21lbnRJdGVyYXRvcikKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1C
RVJfU0xPVyhpbnRsU2VnbWVudGVyU3BhY2UsIGludGxTZWdtZW50ZXJIZWFwQ2VsbFR5cGUsIElu
dGxTZWdtZW50ZXIpCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coaW50
bFNlZ21lbnRzU3BhY2UsIGludGxTZWdtZW50c0hlYXBDZWxsVHlwZSwgSW50bFNlZ21lbnRzKQor
I2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1C
RVJfU0xPVyhqc1RvV2FzbUlDQ2FsbGVlU3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUsIEpTVG9XYXNt
SUNDYWxsZWUpCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1cod2ViQXNz
ZW1ibHlDb2RlQmxvY2tTcGFjZSwgd2ViQXNzZW1ibHlDb2RlQmxvY2tIZWFwQ2VsbFR5cGUsIEpT
V2ViQXNzZW1ibHlDb2RlQmxvY2spIC8vIEhhc2g6MHg5YWQ5OTVjZAorRFlOQU1JQ19JU09fU1VC
U1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHdlYkFzc2VtYmx5RXhjZXB0aW9uU3BhY2UsIHdlYkFz
c2VtYmx5RXhjZXB0aW9uSGVhcENlbGxUeXBlLCBKU1dlYkFzc2VtYmx5RXhjZXB0aW9uKQorRFlO
QU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHdlYkFzc2VtYmx5RnVuY3Rpb25T
cGFjZSwgd2ViQXNzZW1ibHlGdW5jdGlvbkhlYXBDZWxsVHlwZSwgV2ViQXNzZW1ibHlGdW5jdGlv
bikgLy8gSGFzaDoweDhiN2MzMmRiCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVS
X1NMT1cod2ViQXNzZW1ibHlHbG9iYWxTcGFjZSwgd2ViQXNzZW1ibHlHbG9iYWxIZWFwQ2VsbFR5
cGUsIEpTV2ViQXNzZW1ibHlHbG9iYWwpCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVN
QkVSX1NMT1cod2ViQXNzZW1ibHlJbnN0YW5jZVNwYWNlLCB3ZWJBc3NlbWJseUluc3RhbmNlSGVh
cENlbGxUeXBlLCBKU1dlYkFzc2VtYmx5SW5zdGFuY2UpCitEWU5BTUlDX0lTT19TVUJTUEFDRV9E
RUZJTkVfTUVNQkVSX1NMT1cod2ViQXNzZW1ibHlNZW1vcnlTcGFjZSwgd2ViQXNzZW1ibHlNZW1v
cnlIZWFwQ2VsbFR5cGUsIEpTV2ViQXNzZW1ibHlNZW1vcnkpCitEWU5BTUlDX0lTT19TVUJTUEFD
RV9ERUZJTkVfTUVNQkVSX1NMT1cod2ViQXNzZW1ibHlNb2R1bGVTcGFjZSwgd2ViQXNzZW1ibHlN
b2R1bGVIZWFwQ2VsbFR5cGUsIEpTV2ViQXNzZW1ibHlNb2R1bGUpCitEWU5BTUlDX0lTT19TVUJT
UEFDRV9ERUZJTkVfTUVNQkVSX1NMT1cod2ViQXNzZW1ibHlNb2R1bGVSZWNvcmRTcGFjZSwgd2Vi
QXNzZW1ibHlNb2R1bGVSZWNvcmRIZWFwQ2VsbFR5cGUsIFdlYkFzc2VtYmx5TW9kdWxlUmVjb3Jk
KQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHdlYkFzc2VtYmx5VGFi
bGVTcGFjZSwgd2ViQXNzZW1ibHlUYWJsZUhlYXBDZWxsVHlwZSwgSlNXZWJBc3NlbWJseVRhYmxl
KQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHdlYkFzc2VtYmx5VGFn
U3BhY2UsIHdlYkFzc2VtYmx5VGFnSGVhcENlbGxUeXBlLCBKU1dlYkFzc2VtYmx5VGFnKQorRFlO
QU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHdlYkFzc2VtYmx5V3JhcHBlckZ1
bmN0aW9uU3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUsIFdlYkFzc2VtYmx5V3JhcHBlckZ1bmN0aW9u
KSAvLyBIYXNoOjB4ZDRhNWZmMDEKKyNlbmRpZgorCisjdW5kZWYgRFlOQU1JQ19JU09fU1VCU1BB
Q0VfREVGSU5FX01FTUJFUl9TTE9XCisKKyNkZWZpbmUgRFlOQU1JQ19TUEFDRV9BTkRfU0VUX0RF
RklORV9NRU1CRVJfU0xPVyhuYW1lLCBoZWFwQ2VsbFR5cGUsIHR5cGUpIFwKKyAgICBJc29TdWJz
cGFjZSogSGVhcDo6bmFtZSMjU2xvdygpIFwKKyAgICB7IFwKKyAgICAgICAgQVNTRVJUKCFtXyMj
bmFtZSk7IFwKKyAgICAgICAgYXV0byBzcGFjZSA9IG1ha2VVbmlxdWU8U3BhY2VBbmRTZXQ+IElT
T19TVUJTUEFDRV9JTklUKCp0aGlzLCBoZWFwQ2VsbFR5cGUsIHR5cGUpOyBcCisgICAgICAgIFdU
Rjo6c3RvcmVTdG9yZUZlbmNlKCk7IFwKKyAgICAgICAgbV8jI25hbWUgPSBXVEZNb3ZlKHNwYWNl
KTsgXAorICAgICAgICByZXR1cm4gJm1fIyNuYW1lLT5zcGFjZTsgXAorICAgIH0KKworRFlOQU1J
Q19TUEFDRV9BTkRfU0VUX0RFRklORV9NRU1CRVJfU0xPVyhldmFsRXhlY3V0YWJsZVNwYWNlLCBk
ZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlLCBFdmFsRXhlY3V0YWJsZSkgLy8gSGFzaDoweDk1
OGUzZTlkCitEWU5BTUlDX1NQQUNFX0FORF9TRVRfREVGSU5FX01FTUJFUl9TTE9XKG1vZHVsZVBy
b2dyYW1FeGVjdXRhYmxlU3BhY2UsIGRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUsIE1vZHVs
ZVByb2dyYW1FeGVjdXRhYmxlKSAvLyBIYXNoOjB4NjUwNmZhM2MKKworI3VuZGVmIERZTkFNSUNf
U1BBQ0VfQU5EX1NFVF9ERUZJTkVfTUVNQkVSX1NMT1cKKwogfSAvLyBuYW1lc3BhY2UgSlNDCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oCShyZXZpc2lvbiAyODYwODEpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgJKHdvcmtpbmcgY29weSkKQEAgLTI1LDYgKzI1
LDcgQEAKICNpbmNsdWRlICJDZWxsU3RhdGUuaCIKICNpbmNsdWRlICJDb2xsZWN0aW9uU2NvcGUu
aCIKICNpbmNsdWRlICJDb2xsZWN0b3JQaGFzZS5oIgorI2luY2x1ZGUgIkNvbXBsZXRlU3Vic3Bh
Y2UuaCIKICNpbmNsdWRlICJEZWxldGVBbGxDb2RlRWZmb3J0LmgiCiAjaW5jbHVkZSAiR0NDb25k
dWN0b3IuaCIKICNpbmNsdWRlICJHQ0luY29taW5nUmVmQ291bnRlZFNldC5oIgpAQCAtMzMsNiAr
MzQsMTEgQEAKICNpbmNsdWRlICJIYW5kbGVTZXQuaCIKICNpbmNsdWRlICJIZWFwRmluYWxpemVy
Q2FsbGJhY2suaCIKICNpbmNsdWRlICJIZWFwT2JzZXJ2ZXIuaCIKKyNpbmNsdWRlICJJc29DZWxs
U2V0LmgiCisjaW5jbHVkZSAiSXNvSGVhcENlbGxUeXBlLmgiCisjaW5jbHVkZSAiSXNvSW5saW5l
ZEhlYXBDZWxsVHlwZS5oIgorI2luY2x1ZGUgIklzb1N1YnNwYWNlLmgiCisjaW5jbHVkZSAiSlNE
ZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuaCIKICNpbmNsdWRlICJNYXJrZWRCbG9jay5o
IgogI2luY2x1ZGUgIk1hcmtlZFNwYWNlLmgiCiAjaW5jbHVkZSAiTXV0YXRvclN0YXRlLmgiCkBA
IC01MCwzMiArNTYsNjUgQEAKICNpbmNsdWRlIDx3dGYvUGFyYWxsZWxIZWxwZXJQb29sLmg+CiAj
aW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgogCituYW1lc3BhY2UgSW5zcGVjdG9yIHsKK2NsYXNz
IEpTSW5qZWN0ZWRTY3JpcHRIb3N0OworY2xhc3MgSlNKYXZhU2NyaXB0Q2FsbEZyYW1lOworfQor
CiBuYW1lc3BhY2UgSlNDIHsKIAorY2xhc3MgQmxvY2tEaXJlY3Rvcnk7CiBjbGFzcyBDb2RlQmxv
Y2s7CiBjbGFzcyBDb2RlQmxvY2tTZXQ7CiBjbGFzcyBDb2xsZWN0aW5nU2NvcGU7CiBjbGFzcyBD
b25zZXJ2YXRpdmVSb290czsKLWNsYXNzIEdDRGVmZXJyYWxDb250ZXh0OworY2xhc3MgRGF0ZUlu
c3RhbmNlOwogY2xhc3MgRWRlbkdDQWN0aXZpdHlDYWxsYmFjazsKK2NsYXNzIEVycm9ySW5zdGFu
Y2U7CitjbGFzcyBGYXN0TWFsbG9jQWxpZ25lZE1lbW9yeUFsbG9jYXRvcjsKIGNsYXNzIEZ1bGxH
Q0FjdGl2aXR5Q2FsbGJhY2s7CiBjbGFzcyBHQ0FjdGl2aXR5Q2FsbGJhY2s7CiBjbGFzcyBHQ0F3
YXJlSklUU3R1YlJvdXRpbmU7CitjbGFzcyBHQ0RlZmVycmFsQ29udGV4dDsKK2NsYXNzIEdpZ2Fj
YWdlQWxpZ25lZE1lbW9yeUFsbG9jYXRvcjsKIGNsYXNzIEhlYXA7CiBjbGFzcyBIZWFwUHJvZmls
ZXI7CiBjbGFzcyBIZWFwVmVyaWZpZXI7CiBjbGFzcyBJbmNyZW1lbnRhbFN3ZWVwZXI7CitjbGFz
cyBJbnRsQ29sbGF0b3I7CitjbGFzcyBJbnRsRGF0ZVRpbWVGb3JtYXQ7CitjbGFzcyBJbnRsRGlz
cGxheU5hbWVzOworY2xhc3MgSW50bExpc3RGb3JtYXQ7CitjbGFzcyBJbnRsTG9jYWxlOworY2xh
c3MgSW50bE51bWJlckZvcm1hdDsKK2NsYXNzIEludGxQbHVyYWxSdWxlczsKK2NsYXNzIEludGxS
ZWxhdGl2ZVRpbWVGb3JtYXQ7CitjbGFzcyBJbnRsU2VnbWVudEl0ZXJhdG9yOworY2xhc3MgSW50
bFNlZ21lbnRlcjsKK2NsYXNzIEludGxTZWdtZW50czsKIGNsYXNzIEpJVFN0dWJSb3V0aW5lOwog
Y2xhc3MgSklUU3R1YlJvdXRpbmVTZXQ7CitjbGFzcyBKU0FQSUdsb2JhbE9iamVjdDsKK2NsYXNz
IEpTQ2FsbGJhY2tDb25zdHJ1Y3RvcjsKIGNsYXNzIEpTQ2VsbDsKK2NsYXNzIEpTQ3VzdG9tR2V0
dGVyRnVuY3Rpb247CitjbGFzcyBKU0N1c3RvbVNldHRlckZ1bmN0aW9uOworY2xhc3MgSlNGaW5h
bGl6YXRpb25SZWdpc3RyeTsKK2NsYXNzIEpTR2xvYmFsTGV4aWNhbEVudmlyb25tZW50OworY2xh
c3MgSlNHbG9iYWxPYmplY3Q7CiBjbGFzcyBKU0ltbXV0YWJsZUJ1dHRlcmZseTsKK2NsYXNzIEpT
TW9kdWxlTmFtZXNwYWNlT2JqZWN0OworY2xhc3MgSlNNb2R1bGVSZWNvcmQ7CitjbGFzcyBKU05h
dGl2ZVN0ZEZ1bmN0aW9uOworY2xhc3MgSlNOb25GaW5hbE9iamVjdDsKK2NsYXNzIEpTU3RyaW5n
OwogY2xhc3MgSlNWYWx1ZTsKLWNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKK2NsYXNzIEpT
V2Vha01hcDsKK2NsYXNzIEpTV2Vha1NldDsKIGNsYXNzIE1hY2hpbmVUaHJlYWRzOwogY2xhc3Mg
TWFya1N0YWNrQXJyYXk7CiBjbGFzcyBNYXJrU3RhY2tNZXJnaW5nQ29uc3RyYWludDsKIGNsYXNz
IE1hcmtlZEpTVmFsdWVSZWZBcnJheTsKLWNsYXNzIEJsb2NrRGlyZWN0b3J5OwogY2xhc3MgTWFy
a2VkQXJndW1lbnRCdWZmZXJCYXNlOwogY2xhc3MgTWFya2luZ0NvbnN0cmFpbnQ7CiBjbGFzcyBN
YXJraW5nQ29uc3RyYWludFNldDsKQEAgLTkwLDcgKzEyOSwzMCBAQCBjbGFzcyBWZXJpZmllclNs
b3RWaXNpdG9yOwogY2xhc3MgV2Vha0dDSGFzaFRhYmxlOwogc3RydWN0IEN1cnJlbnRUaHJlYWRT
dGF0ZTsKIAordGVtcGxhdGUgPGNsYXNzIFBhcmVudD4gY2xhc3MgSlNDYWxsYmFja09iamVjdDsK
KworI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKK2NsYXNzIEpTV2ViQXNzZW1ibHlDb2RlQmxvY2s7
CitjbGFzcyBKU1dlYkFzc2VtYmx5RXhjZXB0aW9uOworY2xhc3MgSlNXZWJBc3NlbWJseUdsb2Jh
bDsKK2NsYXNzIEpTV2ViQXNzZW1ibHlJbnN0YW5jZTsKK2NsYXNzIEpTV2ViQXNzZW1ibHlNZW1v
cnk7CitjbGFzcyBKU1dlYkFzc2VtYmx5TW9kdWxlOworY2xhc3MgSlNXZWJBc3NlbWJseVRhYmxl
OworY2xhc3MgSlNXZWJBc3NlbWJseVRhZzsKK2NsYXNzIFdlYkFzc2VtYmx5RnVuY3Rpb247Citj
bGFzcyBXZWJBc3NlbWJseU1vZHVsZVJlY29yZDsKKyNlbmRpZgorCisjaWYgSlNDX09CSkNfQVBJ
X0VOQUJMRUQKK2NsYXNzIEpTQVBJV3JhcHBlck9iamVjdDsKK2NsYXNzIE9iakNDYWxsYmFja0Z1
bmN0aW9uOworI2VuZGlmCisKICNpZmRlZiBKU0NfR0xJQl9BUElfRU5BQkxFRAorY2xhc3MgSlNB
UElXcmFwcGVyR2xvYmFsT2JqZWN0OworY2xhc3MgSlNBUElXcmFwcGVyT2JqZWN0OworY2xhc3Mg
SlNDQ2FsbGJhY2tGdW5jdGlvbjsKIGNsYXNzIEpTQ0dMaWJXcmFwcGVyT2JqZWN0OwogI2VuZGlm
CiAKQEAgLTcyOSw2ICs3OTEsMzE4IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX3BhcmFsbGVsTWFy
a2Vyc1Nob3VsZEV4aXQgeyBmYWxzZSB9OwogICAgIExvY2sgbV9jb2xsZWN0Q29udGludW91c2x5
TG9jazsKICAgICBDb25kaXRpb24gbV9jb2xsZWN0Q29udGludW91c2x5Q29uZGl0aW9uOworCitw
dWJsaWM6CisgICAgLy8gSGVhcENlbGxUeXBlcworICAgIEhlYXBDZWxsVHlwZSBhdXhpbGlhcnlI
ZWFwQ2VsbFR5cGU7CisgICAgSGVhcENlbGxUeXBlIGltbXV0YWJsZUJ1dHRlcmZseUhlYXBDZWxs
VHlwZTsKKyAgICBIZWFwQ2VsbFR5cGUgY2VsbEhlYXBDZWxsVHlwZTsKKyAgICBIZWFwQ2VsbFR5
cGUgZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZTsKKyAgICBJc29IZWFwQ2VsbFR5cGU8SlNB
UElHbG9iYWxPYmplY3Q+IGFwaUdsb2JhbE9iamVjdEhlYXBDZWxsVHlwZTsKKyAgICBJc29IZWFw
Q2VsbFR5cGU8SlNDYWxsYmFja0NvbnN0cnVjdG9yPiBjYWxsYmFja0NvbnN0cnVjdG9ySGVhcENl
bGxUeXBlOworICAgIElzb0hlYXBDZWxsVHlwZTxKU0NhbGxiYWNrT2JqZWN0PEpTR2xvYmFsT2Jq
ZWN0Pj4gY2FsbGJhY2tHbG9iYWxPYmplY3RIZWFwQ2VsbFR5cGU7CisgICAgSXNvSGVhcENlbGxU
eXBlPEpTQ2FsbGJhY2tPYmplY3Q8SlNOb25GaW5hbE9iamVjdD4+IGNhbGxiYWNrT2JqZWN0SGVh
cENlbGxUeXBlOworICAgIElzb0hlYXBDZWxsVHlwZTxKU0N1c3RvbUdldHRlckZ1bmN0aW9uPiBj
dXN0b21HZXR0ZXJGdW5jdGlvbkhlYXBDZWxsVHlwZTsKKyAgICBJc29IZWFwQ2VsbFR5cGU8SlND
dXN0b21TZXR0ZXJGdW5jdGlvbj4gY3VzdG9tU2V0dGVyRnVuY3Rpb25IZWFwQ2VsbFR5cGU7Cisg
ICAgSXNvSGVhcENlbGxUeXBlPERhdGVJbnN0YW5jZT4gZGF0ZUluc3RhbmNlSGVhcENlbGxUeXBl
OworICAgIElzb0hlYXBDZWxsVHlwZTxFcnJvckluc3RhbmNlPiBlcnJvckluc3RhbmNlSGVhcENl
bGxUeXBlOworICAgIElzb0hlYXBDZWxsVHlwZTxKU0ZpbmFsaXphdGlvblJlZ2lzdHJ5PiBmaW5h
bGl6YXRpb25SZWdpc3RyeUNlbGxUeXBlOworICAgIElzb0hlYXBDZWxsVHlwZTxKU0dsb2JhbExl
eGljYWxFbnZpcm9ubWVudD4gZ2xvYmFsTGV4aWNhbEVudmlyb25tZW50SGVhcENlbGxUeXBlOwor
ICAgIElzb0hlYXBDZWxsVHlwZTxKU0dsb2JhbE9iamVjdD4gZ2xvYmFsT2JqZWN0SGVhcENlbGxU
eXBlOworICAgIElzb0hlYXBDZWxsVHlwZTxJbnNwZWN0b3I6OkpTSW5qZWN0ZWRTY3JpcHRIb3N0
PiBpbmplY3RlZFNjcmlwdEhvc3RTcGFjZUhlYXBDZWxsVHlwZTsKKyAgICBJc29IZWFwQ2VsbFR5
cGU8SW5zcGVjdG9yOjpKU0phdmFTY3JpcHRDYWxsRnJhbWU+IGphdmFTY3JpcHRDYWxsRnJhbWVI
ZWFwQ2VsbFR5cGU7CisgICAgSXNvSGVhcENlbGxUeXBlPEpTTW9kdWxlUmVjb3JkPiBqc01vZHVs
ZVJlY29yZEhlYXBDZWxsVHlwZTsKKyAgICBJc29IZWFwQ2VsbFR5cGU8SlNNb2R1bGVOYW1lc3Bh
Y2VPYmplY3Q+IG1vZHVsZU5hbWVzcGFjZU9iamVjdEhlYXBDZWxsVHlwZTsKKyAgICBJc29IZWFw
Q2VsbFR5cGU8SlNOYXRpdmVTdGRGdW5jdGlvbj4gbmF0aXZlU3RkRnVuY3Rpb25IZWFwQ2VsbFR5
cGU7CisgICAgSXNvSW5saW5lZEhlYXBDZWxsVHlwZTxKU1N0cmluZz4gc3RyaW5nSGVhcENlbGxU
eXBlOworICAgIElzb0hlYXBDZWxsVHlwZTxKU1dlYWtNYXA+IHdlYWtNYXBIZWFwQ2VsbFR5cGU7
CisgICAgSXNvSGVhcENlbGxUeXBlPEpTV2Vha1NldD4gd2Vha1NldEhlYXBDZWxsVHlwZTsKKyAg
ICBKU0Rlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSBkZXN0cnVjdGlibGVPYmplY3RIZWFw
Q2VsbFR5cGU7CisjaWYgSlNDX09CSkNfQVBJX0VOQUJMRUQKKyAgICBJc29IZWFwQ2VsbFR5cGU8
SlNDYWxsYmFja09iamVjdDxKU0FQSVdyYXBwZXJPYmplY3Q+PiBhcGlXcmFwcGVyT2JqZWN0SGVh
cENlbGxUeXBlOworICAgIElzb0hlYXBDZWxsVHlwZTxPYmpDQ2FsbGJhY2tGdW5jdGlvbj4gb2Jq
Q0NhbGxiYWNrRnVuY3Rpb25IZWFwQ2VsbFR5cGU7CisjZW5kaWYKKyNpZmRlZiBKU0NfR0xJQl9B
UElfRU5BQkxFRAorICAgIElzb0hlYXBDZWxsVHlwZTxKU0NhbGxiYWNrT2JqZWN0PEpTQVBJV3Jh
cHBlck9iamVjdD4+IGFwaVdyYXBwZXJPYmplY3RIZWFwQ2VsbFR5cGU7CisgICAgSXNvSGVhcENl
bGxUeXBlPEpTQ2FsbGJhY2tPYmplY3Q8SlNBUElXcmFwcGVyR2xvYmFsT2JqZWN0Pj4gY2FsbGJh
Y2tBUElXcmFwcGVyR2xvYmFsT2JqZWN0SGVhcENlbGxUeXBlOworICAgIElzb0hlYXBDZWxsVHlw
ZTxKU0NDYWxsYmFja0Z1bmN0aW9uPiBqc2NDYWxsYmFja0Z1bmN0aW9uSGVhcENlbGxUeXBlOwor
I2VuZGlmCisgICAgSXNvSGVhcENlbGxUeXBlPEludGxDb2xsYXRvcj4gaW50bENvbGxhdG9ySGVh
cENlbGxUeXBlOworICAgIElzb0hlYXBDZWxsVHlwZTxJbnRsRGF0ZVRpbWVGb3JtYXQ+IGludGxE
YXRlVGltZUZvcm1hdEhlYXBDZWxsVHlwZTsKKyAgICBJc29IZWFwQ2VsbFR5cGU8SW50bERpc3Bs
YXlOYW1lcz4gaW50bERpc3BsYXlOYW1lc0hlYXBDZWxsVHlwZTsKKyAgICBJc29IZWFwQ2VsbFR5
cGU8SW50bExpc3RGb3JtYXQ+IGludGxMaXN0Rm9ybWF0SGVhcENlbGxUeXBlOworICAgIElzb0hl
YXBDZWxsVHlwZTxJbnRsTG9jYWxlPiBpbnRsTG9jYWxlSGVhcENlbGxUeXBlOworICAgIElzb0hl
YXBDZWxsVHlwZTxJbnRsTnVtYmVyRm9ybWF0PiBpbnRsTnVtYmVyRm9ybWF0SGVhcENlbGxUeXBl
OworICAgIElzb0hlYXBDZWxsVHlwZTxJbnRsUGx1cmFsUnVsZXM+IGludGxQbHVyYWxSdWxlc0hl
YXBDZWxsVHlwZTsKKyAgICBJc29IZWFwQ2VsbFR5cGU8SW50bFJlbGF0aXZlVGltZUZvcm1hdD4g
aW50bFJlbGF0aXZlVGltZUZvcm1hdEhlYXBDZWxsVHlwZTsKKyAgICBJc29IZWFwQ2VsbFR5cGU8
SW50bFNlZ21lbnRJdGVyYXRvcj4gaW50bFNlZ21lbnRJdGVyYXRvckhlYXBDZWxsVHlwZTsKKyAg
ICBJc29IZWFwQ2VsbFR5cGU8SW50bFNlZ21lbnRlcj4gaW50bFNlZ21lbnRlckhlYXBDZWxsVHlw
ZTsKKyAgICBJc29IZWFwQ2VsbFR5cGU8SW50bFNlZ21lbnRzPiBpbnRsU2VnbWVudHNIZWFwQ2Vs
bFR5cGU7CisjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQorICAgIElzb0hlYXBDZWxsVHlwZTxKU1dl
YkFzc2VtYmx5Q29kZUJsb2NrPiB3ZWJBc3NlbWJseUNvZGVCbG9ja0hlYXBDZWxsVHlwZTsKKyAg
ICBJc29IZWFwQ2VsbFR5cGU8SlNXZWJBc3NlbWJseUV4Y2VwdGlvbj4gd2ViQXNzZW1ibHlFeGNl
cHRpb25IZWFwQ2VsbFR5cGU7CisgICAgSXNvSGVhcENlbGxUeXBlPFdlYkFzc2VtYmx5RnVuY3Rp
b24+IHdlYkFzc2VtYmx5RnVuY3Rpb25IZWFwQ2VsbFR5cGU7CisgICAgSXNvSGVhcENlbGxUeXBl
PEpTV2ViQXNzZW1ibHlHbG9iYWw+IHdlYkFzc2VtYmx5R2xvYmFsSGVhcENlbGxUeXBlOworICAg
IElzb0hlYXBDZWxsVHlwZTxKU1dlYkFzc2VtYmx5SW5zdGFuY2U+IHdlYkFzc2VtYmx5SW5zdGFu
Y2VIZWFwQ2VsbFR5cGU7CisgICAgSXNvSGVhcENlbGxUeXBlPEpTV2ViQXNzZW1ibHlNZW1vcnk+
IHdlYkFzc2VtYmx5TWVtb3J5SGVhcENlbGxUeXBlOworICAgIElzb0hlYXBDZWxsVHlwZTxKU1dl
YkFzc2VtYmx5TW9kdWxlPiB3ZWJBc3NlbWJseU1vZHVsZUhlYXBDZWxsVHlwZTsKKyAgICBJc29I
ZWFwQ2VsbFR5cGU8V2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQ+IHdlYkFzc2VtYmx5TW9kdWxlUmVj
b3JkSGVhcENlbGxUeXBlOworICAgIElzb0hlYXBDZWxsVHlwZTxKU1dlYkFzc2VtYmx5VGFibGU+
IHdlYkFzc2VtYmx5VGFibGVIZWFwQ2VsbFR5cGU7CisgICAgSXNvSGVhcENlbGxUeXBlPEpTV2Vi
QXNzZW1ibHlUYWc+IHdlYkFzc2VtYmx5VGFnSGVhcENlbGxUeXBlOworI2VuZGlmCisKKyAgICAv
LyBBbGlnbmVkTWVtb3J5QWxsb2NhdG9ycworICAgIHN0ZDo6dW5pcXVlX3B0cjxGYXN0TWFsbG9j
QWxpZ25lZE1lbW9yeUFsbG9jYXRvcj4gZmFzdE1hbGxvY0FsbG9jYXRvcjsKKyAgICBzdGQ6OnVu
aXF1ZV9wdHI8R2lnYWNhZ2VBbGlnbmVkTWVtb3J5QWxsb2NhdG9yPiBwcmltaXRpdmVHaWdhY2Fn
ZUFsbG9jYXRvcjsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8R2lnYWNhZ2VBbGlnbmVkTWVtb3J5QWxs
b2NhdG9yPiBqc1ZhbHVlR2lnYWNhZ2VBbGxvY2F0b3I7CisKKyAgICAvLyBTdWJzcGFjZXMKKyAg
ICBDb21wbGV0ZVN1YnNwYWNlIHByaW1pdGl2ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2U7IC8vIFR5
cGVkIGFycmF5cywgc3RyaW5ncywgYml0dmVjdG9ycywgZXRjIGdvIGhlcmUuCisgICAgQ29tcGxl
dGVTdWJzcGFjZSBqc1ZhbHVlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZTsgLy8gQnV0dGVyZmxpZXMs
IGFycmF5cyBvZiBKU1ZhbHVlcywgZXRjIGdvIGhlcmUuCisgICAgQ29tcGxldGVTdWJzcGFjZSBp
bW11dGFibGVCdXR0ZXJmbHlKU1ZhbHVlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZTsgLy8gSlNJbW11
dGFibGVCdXR0ZXJmbHkgZ29lcyBoZXJlLgorCisgICAgLy8gV2UgbWFrZSBjcm9zcy1jdXR0aW5n
IGFzc3VtcHRpb25zIGFib3V0IHR5cGVkIGFycmF5cyBiZWluZyBpbiB0aGUgcHJpbWl0aXZlIEdp
Z2FjYWdlIGFuZCBidXR0ZXJmbGllcworICAgIC8vIGJlaW5nIGluIHRoZSBKU1ZhbHVlIGdpZ2Fj
YWdlLiBGb3Igc29tZSB0eXBlcywgaXQncyBzdXBlciBvYnZpb3VzIHdoZXJlIHRoZXkgc2hvdWxk
IGdvLCBhbmQgc28gd2UKKyAgICAvLyBjYW4gaGFyZGNvZGUgdGhhdCBmYWN0LiBCdXQgc29tZXRp
bWVzIGl0J3Mgbm90IGNsZWFyLCBzbyB3ZSBhYnN0cmFjdCBpdCBieSBoYXZpbmcgYSBHaWdhY2Fn
ZTo6S2luZAorICAgIC8vIGNvbnN0YW50IHNvbWV3aGVyZS4KKyAgICAvLyBGSVhNRTogTWF5YmUg
aXQgd291bGQgYmUgYmV0dGVyIGlmIGV2ZXJ5b25lIGFic3RyYWN0ZWQgdGhpcz8KKyAgICAvLyBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc1MjQ4CisgICAgQUxXQVlT
X0lOTElORSBDb21wbGV0ZVN1YnNwYWNlJiBnaWdhY2FnZUF1eGlsaWFyeVNwYWNlKEdpZ2FjYWdl
OjpLaW5kIGtpbmQpCisgICAgeworICAgICAgICBzd2l0Y2ggKGtpbmQpIHsKKyAgICAgICAgY2Fz
ZSBHaWdhY2FnZTo6UHJpbWl0aXZlOgorICAgICAgICAgICAgcmV0dXJuIHByaW1pdGl2ZUdpZ2Fj
YWdlQXV4aWxpYXJ5U3BhY2U7CisgICAgICAgIGNhc2UgR2lnYWNhZ2U6OkpTVmFsdWU6CisgICAg
ICAgICAgICByZXR1cm4ganNWYWx1ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2U7CisgICAgICAgIGNh
c2UgR2lnYWNhZ2U6Ok51bWJlck9mS2luZHM6CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
fQorICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4g
cHJpbWl0aXZlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZTsKKyAgICB9CisgICAgCisgICAgLy8gV2hl
bmV2ZXIgcG9zc2libGUsIHVzZSBzdWJzcGFjZUZvcjxDZWxsVHlwZT4odm0pIHRvIGdldCBvbmUg
b2YgdGhlc2Ugc3Vic3BhY2VzLgorICAgIENvbXBsZXRlU3Vic3BhY2UgY2VsbFNwYWNlOworICAg
IENvbXBsZXRlU3Vic3BhY2UgdmFyaWFibGVTaXplZENlbGxTcGFjZTsgLy8gRklYTUU6IFRoaXMg
c3BhY2UgaXMgcHJvYmxlbWF0aWMgYmVjYXVzZSB3ZSBoYXZlIHRoaW5ncyBpbiBoZXJlIGxpa2Ug
RGlyZWN0QXJndW1lbnRzIGFuZCBTY29wZWRBcmd1bWVudHM7IHRob3NlIHNob3VsZCBiZSBzcGxp
dCBpbnRvIEpTVmFsdWVPT0IgY2VsbHMgYW5kIEpTVmFsdWVTdHJpY3QgYXV4aWxpYXJpZXMuIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODI4NTgKKyAgICBDb21wbGV0
ZVN1YnNwYWNlIGRlc3RydWN0aWJsZU9iamVjdFNwYWNlOworCisgICAgSXNvU3Vic3BhY2UgYXJy
YXlTcGFjZTsKKyAgICBJc29TdWJzcGFjZSBiaWdJbnRTcGFjZTsKKyAgICBJc29TdWJzcGFjZSBj
YWxsZWVTcGFjZTsKKyAgICBJc29TdWJzcGFjZSBjbG9uZWRBcmd1bWVudHNTcGFjZTsKKyAgICBJ
c29TdWJzcGFjZSBjdXN0b21HZXR0ZXJTZXR0ZXJTcGFjZTsKKyAgICBJc29TdWJzcGFjZSBkYXRl
SW5zdGFuY2VTcGFjZTsKKyAgICBJc29TdWJzcGFjZSBkb21BdHRyaWJ1dGVHZXR0ZXJTZXR0ZXJT
cGFjZTsKKyAgICBJc29TdWJzcGFjZSBleGNlcHRpb25TcGFjZTsKKyAgICBJc29TdWJzcGFjZSBl
eGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlU3BhY2U7CisgICAgSXNvU3Vic3BhY2UgZnVuY3Rpb25T
cGFjZTsKKyAgICBJc29TdWJzcGFjZSBnZXR0ZXJTZXR0ZXJTcGFjZTsKKyAgICBJc29TdWJzcGFj
ZSBnbG9iYWxMZXhpY2FsRW52aXJvbm1lbnRTcGFjZTsKKyAgICBJc29TdWJzcGFjZSBpbnRlcm5h
bEZ1bmN0aW9uU3BhY2U7CisgICAgSXNvU3Vic3BhY2UganNQcm94eVNwYWNlOworICAgIElzb1N1
YnNwYWNlIG5hdGl2ZUV4ZWN1dGFibGVTcGFjZTsKKyAgICBJc29TdWJzcGFjZSBudW1iZXJPYmpl
Y3RTcGFjZTsKKyAgICBJc29TdWJzcGFjZSBwbGFpbk9iamVjdFNwYWNlOworICAgIElzb1N1YnNw
YWNlIHByb21pc2VTcGFjZTsKKyAgICBJc29TdWJzcGFjZSBwcm9wZXJ0eU5hbWVFbnVtZXJhdG9y
U3BhY2U7CisgICAgSXNvU3Vic3BhY2UgcHJvcGVydHlUYWJsZVNwYWNlOworICAgIElzb1N1YnNw
YWNlIHJlZ0V4cFNwYWNlOworICAgIElzb1N1YnNwYWNlIHJlZ0V4cE9iamVjdFNwYWNlOworICAg
IElzb1N1YnNwYWNlIHJvcGVTdHJpbmdTcGFjZTsKKyAgICBJc29TdWJzcGFjZSBzY29wZWRBcmd1
bWVudHNTcGFjZTsKKyAgICBJc29TdWJzcGFjZSBzcGFyc2VBcnJheVZhbHVlTWFwU3BhY2U7Cisg
ICAgSXNvU3Vic3BhY2Ugc3RyaW5nU3BhY2U7CisgICAgSXNvU3Vic3BhY2Ugc3RyaW5nT2JqZWN0
U3BhY2U7CisgICAgSXNvU3Vic3BhY2Ugc3RydWN0dXJlQ2hhaW5TcGFjZTsKKyAgICBJc29TdWJz
cGFjZSBzdHJ1Y3R1cmVSYXJlRGF0YVNwYWNlOworICAgIElzb1N1YnNwYWNlIHN0cnVjdHVyZVNw
YWNlOworICAgIElzb1N1YnNwYWNlIGJyYW5kZWRTdHJ1Y3R1cmVTcGFjZTsKKyAgICBJc29TdWJz
cGFjZSBzeW1ib2xUYWJsZVNwYWNlOworCisjZGVmaW5lIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RF
RklORV9NRU1CRVIobmFtZSkgXAorICAgIHRlbXBsYXRlPFN1YnNwYWNlQWNjZXNzIG1vZGU+IFwK
KyAgICBJc29TdWJzcGFjZSogbmFtZSgpIFwKKyAgICB7IFwKKyAgICAgICAgaWYgKG1fIyNuYW1l
IHx8IG1vZGUgPT0gU3Vic3BhY2VBY2Nlc3M6OkNvbmN1cnJlbnRseSkgXAorICAgICAgICAgICAg
cmV0dXJuIG1fIyNuYW1lLmdldCgpOyBcCisgICAgICAgIHJldHVybiBuYW1lIyNTbG93KCk7IFwK
KyAgICB9IFwKKyAgICBKU19FWFBPUlRfUFJJVkFURSBJc29TdWJzcGFjZSogbmFtZSMjU2xvdygp
OyBcCisgICAgc3RkOjp1bmlxdWVfcHRyPElzb1N1YnNwYWNlPiBtXyMjbmFtZTsKKworCisjaWYg
SlNDX09CSkNfQVBJX0VOQUJMRUQKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVN
QkVSKGFwaVdyYXBwZXJPYmplY3RTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJ
TkVfTUVNQkVSKG9iakNDYWxsYmFja0Z1bmN0aW9uU3BhY2UpCisjZW5kaWYKKyNpZmRlZiBKU0Nf
R0xJQl9BUElfRU5BQkxFRAorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIo
YXBpV3JhcHBlck9iamVjdFNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9N
RU1CRVIoanNjQ2FsbGJhY2tGdW5jdGlvblNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNF
X0RFRklORV9NRU1CRVIoY2FsbGJhY2tBUElXcmFwcGVyR2xvYmFsT2JqZWN0U3BhY2UpCisjZW5k
aWYKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKGFwaUdsb2JhbE9iamVj
dFNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoYXBpVmFsdWVX
cmFwcGVyU3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihhcnJh
eUJ1ZmZlclNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoYXJy
YXlJdGVyYXRvclNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIo
YXN5bmNHZW5lcmF0b3JTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVN
QkVSKGJpZ0ludDY0QXJyYXlTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVf
TUVNQkVSKGJpZ0ludE9iamVjdFNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklO
RV9NRU1CRVIoYmlnVWludDY0QXJyYXlTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9E
RUZJTkVfTUVNQkVSKGJvb2xlYW5PYmplY3RTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFD
RV9ERUZJTkVfTUVNQkVSKGJvdW5kRnVuY3Rpb25TcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJT
UEFDRV9ERUZJTkVfTUVNQkVSKGNhbGxiYWNrQ29uc3RydWN0b3JTcGFjZSkKKyAgICBEWU5BTUlD
X0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKGNhbGxiYWNrR2xvYmFsT2JqZWN0U3BhY2UpCisg
ICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihjYWxsYmFja0Z1bmN0aW9uU3Bh
Y2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihjYWxsYmFja09iamVj
dFNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoY3VzdG9tR2V0
dGVyRnVuY3Rpb25TcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVS
KGN1c3RvbVNldHRlckZ1bmN0aW9uU3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVG
SU5FX01FTUJFUihkYXRhVmlld1NwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklO
RV9NRU1CRVIoZGVidWdnZXJTY29wZVNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RF
RklORV9NRU1CRVIoZXJyb3JJbnN0YW5jZVNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNF
X0RFRklORV9NRU1CRVIoZmxvYXQzMkFycmF5U3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BB
Q0VfREVGSU5FX01FTUJFUihmbG9hdDY0QXJyYXlTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJT
UEFDRV9ERUZJTkVfTUVNQkVSKGZ1bmN0aW9uUmFyZURhdGFTcGFjZSkKKyAgICBEWU5BTUlDX0lT
T19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKGdlbmVyYXRvclNwYWNlKQorICAgIERZTkFNSUNfSVNP
X1NVQlNQQUNFX0RFRklORV9NRU1CRVIoZ2xvYmFsT2JqZWN0U3BhY2UpCisgICAgRFlOQU1JQ19J
U09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihpbmplY3RlZFNjcmlwdEhvc3RTcGFjZSkKKyAgICBE
WU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKGludDhBcnJheVNwYWNlKQorICAgIERZ
TkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoaW50MTZBcnJheVNwYWNlKQorICAgIERZ
TkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoaW50MzJBcnJheVNwYWNlKQorICAgIERZ
TkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoamF2YVNjcmlwdENhbGxGcmFtZVNwYWNl
KQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoanNNb2R1bGVSZWNvcmRT
cGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKG1hcEJ1Y2tldFNw
YWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIobWFwSXRlcmF0b3JT
cGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKG1hcFNwYWNlKQor
ICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIobW9kdWxlTmFtZXNwYWNlT2Jq
ZWN0U3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihuYXRpdmVT
dGRGdW5jdGlvblNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIo
cHJveHlPYmplY3RTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVS
KHByb3h5UmV2b2tlU3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJF
UihzY29wZWRBcmd1bWVudHNUYWJsZVNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RF
RklORV9NRU1CRVIoc2NyaXB0RmV0Y2hQYXJhbWV0ZXJzU3BhY2UpCisgICAgRFlOQU1JQ19JU09f
U1VCU1BBQ0VfREVGSU5FX01FTUJFUihzY3JpcHRGZXRjaGVyU3BhY2UpCisgICAgRFlOQU1JQ19J
U09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihzZXRCdWNrZXRTcGFjZSkKKyAgICBEWU5BTUlDX0lT
T19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKHNldEl0ZXJhdG9yU3BhY2UpCisgICAgRFlOQU1JQ19J
U09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihzZXRTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJT
UEFDRV9ERUZJTkVfTUVNQkVSKHNoYWRvd1JlYWxtU3BhY2UpOworICAgIERZTkFNSUNfSVNPX1NV
QlNQQUNFX0RFRklORV9NRU1CRVIoc3RyaWN0RXZhbEFjdGl2YXRpb25TcGFjZSkKKyAgICBEWU5B
TUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKHN0cmluZ0l0ZXJhdG9yU3BhY2UpCisgICAg
RFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihzb3VyY2VDb2RlU3BhY2UpCisgICAg
RFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihzeW1ib2xTcGFjZSkKKyAgICBEWU5B
TUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKHN5bWJvbE9iamVjdFNwYWNlKQorICAgIERZ
TkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIodGVtcGxhdGVPYmplY3REZXNjcmlwdG9y
U3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUih0ZW1wb3JhbENh
bGVuZGFyU3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUih0ZW1w
b3JhbER1cmF0aW9uU3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJF
Uih0ZW1wb3JhbEluc3RhbnRTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVf
TUVNQkVSKHRlbXBvcmFsUGxhaW5UaW1lU3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0Vf
REVGSU5FX01FTUJFUih0ZW1wb3JhbFRpbWVab25lU3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VC
U1BBQ0VfREVGSU5FX01FTUJFUih1aW50OEFycmF5U3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VC
U1BBQ0VfREVGSU5FX01FTUJFUih1aW50OENsYW1wZWRBcnJheVNwYWNlKQorICAgIERZTkFNSUNf
SVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIodWludDE2QXJyYXlTcGFjZSkKKyAgICBEWU5BTUlD
X0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKHVpbnQzMkFycmF5U3BhY2UpCisgICAgRFlOQU1J
Q19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUih1bmxpbmtlZEV2YWxDb2RlQmxvY2tTcGFjZSkK
KyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKHVubGlua2VkRnVuY3Rpb25D
b2RlQmxvY2tTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKHVu
bGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9ja1NwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQ
QUNFX0RFRklORV9NRU1CRVIodW5saW5rZWRQcm9ncmFtQ29kZUJsb2NrU3BhY2UpCisgICAgRFlO
QU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihmaW5hbGl6YXRpb25SZWdpc3RyeVNwYWNl
KQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIod2Vha09iamVjdFJlZlNw
YWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIod2Vha1NldFNwYWNl
KQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIod2Vha01hcFNwYWNlKQor
ICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIod2l0aFNjb3BlU3BhY2UpCisg
ICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihpbnRsQ29sbGF0b3JTcGFjZSkK
KyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKGludGxEYXRlVGltZUZvcm1h
dFNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoaW50bERpc3Bs
YXlOYW1lc1NwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoaW50
bExpc3RGb3JtYXRTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVS
KGludGxMb2NhbGVTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVS
KGludGxOdW1iZXJGb3JtYXRTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVf
TUVNQkVSKGludGxQbHVyYWxSdWxlc1NwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RF
RklORV9NRU1CRVIoaW50bFJlbGF0aXZlVGltZUZvcm1hdFNwYWNlKQorICAgIERZTkFNSUNfSVNP
X1NVQlNQQUNFX0RFRklORV9NRU1CRVIoaW50bFNlZ21lbnRJdGVyYXRvclNwYWNlKQorICAgIERZ
TkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoaW50bFNlZ21lbnRlclNwYWNlKQorICAg
IERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoaW50bFNlZ21lbnRzU3BhY2UpCisj
aWYgRU5BQkxFKFdFQkFTU0VNQkxZKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9N
RU1CRVIoanNUb1dhc21JQ0NhbGxlZVNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RF
RklORV9NRU1CRVIod2ViQXNzZW1ibHlDb2RlQmxvY2tTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19T
VUJTUEFDRV9ERUZJTkVfTUVNQkVSKHdlYkFzc2VtYmx5RXhjZXB0aW9uU3BhY2UpCisgICAgRFlO
QU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUih3ZWJBc3NlbWJseUZ1bmN0aW9uU3BhY2Up
CisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUih3ZWJBc3NlbWJseUdsb2Jh
bFNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIod2ViQXNzZW1i
bHlJbnN0YW5jZVNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIo
d2ViQXNzZW1ibHlNZW1vcnlTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVf
TUVNQkVSKHdlYkFzc2VtYmx5TW9kdWxlU3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0Vf
REVGSU5FX01FTUJFUih3ZWJBc3NlbWJseU1vZHVsZVJlY29yZFNwYWNlKQorICAgIERZTkFNSUNf
SVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIod2ViQXNzZW1ibHlUYWJsZVNwYWNlKQorICAgIERZ
TkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIod2ViQXNzZW1ibHlUYWdTcGFjZSkKKyAg
ICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKHdlYkFzc2VtYmx5V3JhcHBlckZ1
bmN0aW9uU3BhY2UpCisjZW5kaWYKKworI3VuZGVmIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklO
RV9NRU1CRVIKKyAgICAKKyAgICBJc29DZWxsU2V0IGV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2Vz
V2l0aENvbnN0cmFpbnRzOworICAgIElzb0NlbGxTZXQgZXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRn
ZXNXaXRoRmluYWxpemVyczsKKworI2RlZmluZSBEWU5BTUlDX1NQQUNFX0FORF9TRVRfREVGSU5F
X01FTUJFUihuYW1lKSBcCisgICAgdGVtcGxhdGU8U3Vic3BhY2VBY2Nlc3MgbW9kZT4gXAorICAg
IElzb1N1YnNwYWNlKiBuYW1lKCkgXAorICAgIHsgXAorICAgICAgICBpZiAoYXV0byogc3BhY2VB
bmRTZXQgPSBtXyMjbmFtZS5nZXQoKSkgXAorICAgICAgICAgICAgcmV0dXJuICZzcGFjZUFuZFNl
dC0+c3BhY2U7IFwKKyAgICAgICAgaWYgKG1vZGUgPT0gU3Vic3BhY2VBY2Nlc3M6OkNvbmN1cnJl
bnRseSkgXAorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7IFwKKyAgICAgICAgcmV0dXJuIG5h
bWUjI1Nsb3coKTsgXAorICAgIH0gXAorICAgIElzb1N1YnNwYWNlKiBuYW1lIyNTbG93KCk7IFwK
KyAgICBzdGQ6OnVuaXF1ZV9wdHI8U3BhY2VBbmRTZXQ+IG1fIyNuYW1lOworICAgIAorICAgIHN0
cnVjdCBTcGFjZUFuZFNldCB7CisgICAgICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRF
RDsKKworICAgICAgICBJc29TdWJzcGFjZSBzcGFjZTsKKyAgICAgICAgSXNvQ2VsbFNldCBzZXQ7
CisgICAgICAgIAorICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBBcmd1bWVudHM+CisgICAg
ICAgIFNwYWNlQW5kU2V0KEFyZ3VtZW50cyYmLi4uIGFyZ3VtZW50cykKKyAgICAgICAgICAgIDog
c3BhY2Uoc3RkOjpmb3J3YXJkPEFyZ3VtZW50cz4oYXJndW1lbnRzKS4uLikKKyAgICAgICAgICAg
ICwgc2V0KHNwYWNlKQorICAgICAgICB7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHN0
YXRpYyBJc29DZWxsU2V0JiBzZXRGb3IoU3Vic3BhY2UmIHNwYWNlKQorICAgICAgICB7CisgICAg
ICAgICAgICByZXR1cm4gKmJpdHdpc2VfY2FzdDxJc29DZWxsU2V0Kj4oCisgICAgICAgICAgICAg
ICAgYml0d2lzZV9jYXN0PGNoYXIqPigmc3BhY2UpIC0KKyAgICAgICAgICAgICAgICBPQkpFQ1Rf
T0ZGU0VUT0YoU3BhY2VBbmRTZXQsIHNwYWNlKSArCisgICAgICAgICAgICAgICAgT0JKRUNUX09G
RlNFVE9GKFNwYWNlQW5kU2V0LCBzZXQpKTsKKyAgICAgICAgfQorICAgIH07CisgICAgCisgICAg
U3BhY2VBbmRTZXQgY29kZUJsb2NrU3BhY2U7CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5j
PgorICAgIHZvaWQgZm9yRWFjaENvZGVCbG9ja1NwYWNlKGNvbnN0IEZ1bmMmIGZ1bmMpCisgICAg
eworICAgICAgICAvLyBUaGlzIHNob3VsZCBub3QgaW5jbHVkZSB3ZWJBc3NlbWJseUNvZGVCbG9j
a1NwYWNlIGJlY2F1c2UgdGhpcyBpcyBhYm91dCBzdWJzY2xhc3NlcyBvZgorICAgICAgICAvLyBK
U0M6OkNvZGVCbG9jay4KKyAgICAgICAgZnVuYyhjb2RlQmxvY2tTcGFjZSk7CisgICAgfQorCisg
ICAgRFlOQU1JQ19TUEFDRV9BTkRfU0VUX0RFRklORV9NRU1CRVIoZXZhbEV4ZWN1dGFibGVTcGFj
ZSkKKyAgICBEWU5BTUlDX1NQQUNFX0FORF9TRVRfREVGSU5FX01FTUJFUihtb2R1bGVQcm9ncmFt
RXhlY3V0YWJsZVNwYWNlKQorICAgIFNwYWNlQW5kU2V0IGZ1bmN0aW9uRXhlY3V0YWJsZVNwYWNl
OworICAgIFNwYWNlQW5kU2V0IHByb2dyYW1FeGVjdXRhYmxlU3BhY2U7CisKKyAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBGdW5jPgorICAgIHZvaWQgZm9yRWFjaFNjcmlwdEV4ZWN1dGFibGVTcGFjZShj
b25zdCBGdW5jJiBmdW5jKQorICAgIHsKKyAgICAgICAgaWYgKG1fZXZhbEV4ZWN1dGFibGVTcGFj
ZSkKKyAgICAgICAgICAgIGZ1bmMoKm1fZXZhbEV4ZWN1dGFibGVTcGFjZSk7CisgICAgICAgIGZ1
bmMoZnVuY3Rpb25FeGVjdXRhYmxlU3BhY2UpOworICAgICAgICBpZiAobV9tb2R1bGVQcm9ncmFt
RXhlY3V0YWJsZVNwYWNlKQorICAgICAgICAgICAgZnVuYygqbV9tb2R1bGVQcm9ncmFtRXhlY3V0
YWJsZVNwYWNlKTsKKyAgICAgICAgZnVuYyhwcm9ncmFtRXhlY3V0YWJsZVNwYWNlKTsKKyAgICB9
CisKKyAgICBTcGFjZUFuZFNldCB1bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZVNwYWNlOworCisj
dW5kZWYgRFlOQU1JQ19TUEFDRV9BTkRfU0VUX0RFRklORV9NRU1CRVIKIH07CiAKIH0gLy8gbmFt
ZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSXNvSGVhcENlbGxU
eXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Jc29IZWFw
Q2VsbFR5cGUuY3BwCShyZXZpc2lvbiAyODYwODEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9Jc29IZWFwQ2VsbFR5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMSwyMiArMzEsNDkg
QEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLUlzb0hlYXBDZWxsVHlwZTo6SXNvSGVhcENlbGxUeXBl
KERlc3RydWN0aW9uTW9kZSBkZXN0cnVjdGlvbk1vZGUsIERlc3Ryb3lGdW5jdGlvblB0ciBkZXN0
cm95RnVuY3Rpb24pCi0gICAgOiBIZWFwQ2VsbFR5cGUoQ2VsbEF0dHJpYnV0ZXMoZGVzdHJ1Y3Rp
b25Nb2RlLCBIZWFwQ2VsbDo6SlNDZWxsKSkKLSAgICAsIG1fZGVzdHJveShkZXN0cm95RnVuY3Rp
b24pCi17Ci19Ci0KLUlzb0hlYXBDZWxsVHlwZTo6fklzb0hlYXBDZWxsVHlwZSgpID0gZGVmYXVs
dDsKKy8vSXNvSGVhcENlbGxUeXBlOjpJc29IZWFwQ2VsbFR5cGUoRGVzdHJ1Y3Rpb25Nb2RlIGRl
c3RydWN0aW9uTW9kZSwgRGVzdHJveUZ1bmN0aW9uUHRyIGRlc3Ryb3lGdW5jdGlvbikKKy8vICAg
IDogSGVhcENlbGxUeXBlKENlbGxBdHRyaWJ1dGVzKGRlc3RydWN0aW9uTW9kZSwgSGVhcENlbGw6
OkpTQ2VsbCkpCisvLyAgICAsIG1fZGVzdHJveShkZXN0cm95RnVuY3Rpb24pCisvL3sKKy8vfQor
Ly8KKy8vSXNvSGVhcENlbGxUeXBlOjp+SXNvSGVhcENlbGxUeXBlKCkgPSBkZWZhdWx0OworLy8K
Ky8vdm9pZCBJc29IZWFwQ2VsbFR5cGU6OmZpbmlzaFN3ZWVwKE1hcmtlZEJsb2NrOjpIYW5kbGUm
IGhhbmRsZSwgRnJlZUxpc3QqIGZyZWVMaXN0KSBjb25zdAorLy97CisvLyAgICBoYW5kbGUuZmlu
aXNoU3dlZXBLbm93aW5nSGVhcENlbGxUeXBlKGZyZWVMaXN0LCAqdGhpcyk7CisvL30KKy8vCisv
L3ZvaWQgSXNvSGVhcENlbGxUeXBlOjpkZXN0cm95KFZNJiwgSlNDZWxsKiBjZWxsKSBjb25zdAor
Ly97CisvLyAgICBtX2Rlc3Ryb3koY2VsbCk7CisvL30KIAotdm9pZCBJc29IZWFwQ2VsbFR5cGU6
OmZpbmlzaFN3ZWVwKE1hcmtlZEJsb2NrOjpIYW5kbGUmIGhhbmRsZSwgRnJlZUxpc3QqIGZyZWVM
aXN0KSBjb25zdAordm9pZCBJc29IZWFwQ2VsbFR5cGVCYXNlOjpmaW5pc2hTd2VlcChNYXJrZWRC
bG9jazo6SGFuZGxlJiBoYW5kbGUsIEZyZWVMaXN0KiBmcmVlTGlzdCkgY29uc3QKIHsKLSAgICBo
YW5kbGUuZmluaXNoU3dlZXBLbm93aW5nSGVhcENlbGxUeXBlKGZyZWVMaXN0LCAqdGhpcyk7Ci19
CisgICAgLy8gZmluaXNoU3dlZXBLbm93aW5nSGVhcENlbGxUeXBlKCkgbWF5IGNhbGwgZGVzdHJv
eSBpbiBhIGxvb3AsIGFuZCB3ZSBkb24ndAorICAgIC8vIHdhbnQgdG8gZG8gYSB2aXJ0dWFsIGZ1
bmN0aW9uIHRvIGRvIHRoZSBkZXN0cm95IGluIHRoYXQgbG9vcC4gSW5zdGVhZCwKKyAgICAvLyB3
ZSBjYWxsIHRoZSB2aXJ0dWFsIGZ1bmN0aW9uIGRlc3Ryb3lGdW5jdGlvblB0cigpIG9ubHkgb25j
ZSB0byBmZXRjaCB0aGUKKyAgICAvLyBEZXN0cm95RnVuY3Rpb25QdHIsIGFuZCB1c2UgdGhpcyBJ
bnZva2VyIGNsYXNzIHRvIGNhY2hlIHRoZSByZXR1cm5lZAorICAgIC8vIERlc3Ryb3lGdW5jdGlv
blB0ci4gZmluaXNoU3dlZXBLbm93aW5nSGVhcENlbGxUeXBlKCkgY2FuIHRoZW4gaW52b2tlCisg
ICAgLy8gZGVzdHJveSB2aWEgSW52b2tlcidzIGNhY2hlZCBEZXN0cm95RnVuY3Rpb25QdHIuCisg
ICAgY2xhc3MgSW52b2tlciB7CisgICAgcHVibGljOgorICAgICAgICBJbnZva2VyKERlc3Ryb3lG
dW5jdGlvblB0ciBkZXN0cm95RnVuY3Rpb25QdHIpCisgICAgICAgICAgICA6IG1fZGVzdHJveShk
ZXN0cm95RnVuY3Rpb25QdHIpCisgICAgICAgIHsgfQorCisgICAgICAgIEFMV0FZU19JTkxJTkUg
dm9pZCBvcGVyYXRvcigpKFZNJiwgSlNDZWxsKiBjZWxsKSBjb25zdAorICAgICAgICB7CisgICAg
ICAgICAgICBtX2Rlc3Ryb3koY2VsbCk7CisgICAgICAgIH0KKworICAgIHByaXZhdGU6CisgICAg
ICAgIERlc3Ryb3lGdW5jdGlvblB0ciBtX2Rlc3Ryb3k7CisgICAgfTsKIAotdm9pZCBJc29IZWFw
Q2VsbFR5cGU6OmRlc3Ryb3koVk0mLCBKU0NlbGwqIGNlbGwpIGNvbnN0Ci17Ci0gICAgbV9kZXN0
cm95KGNlbGwpOworICAgIEludm9rZXIgaW52b2tlcihkZXN0cm95RnVuY3Rpb25QdHIoKSk7Cisg
ICAgaGFuZGxlLmZpbmlzaFN3ZWVwS25vd2luZ0hlYXBDZWxsVHlwZShmcmVlTGlzdCwgaW52b2tl
cik7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvSXNvSGVhcENlbGxUeXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvSXNvSGVhcENlbGxUeXBlLmgJKHJldmlzaW9uIDI4NjA4MSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL0lzb0hlYXBDZWxsVHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0y
OSwzMCArMjksNzYgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLWNsYXNzIElzb0hlYXBDZWxsVHlw
ZSBmaW5hbCA6IHB1YmxpYyBIZWFwQ2VsbFR5cGUgeworLy9jbGFzcyBJc29IZWFwQ2VsbFR5cGUg
ZmluYWwgOiBwdWJsaWMgSGVhcENlbGxUeXBlIHsKKy8vcHVibGljOgorLy8gICAgdXNpbmcgRGVz
dHJveUZ1bmN0aW9uUHRyID0gdm9pZCAoKikoSlNDZWxsKik7CisvLworLy8gICAgSlNfRVhQT1JU
X1BSSVZBVEUgfklzb0hlYXBDZWxsVHlwZSgpOworLy8KKy8vICAgIEpTX0VYUE9SVF9QUklWQVRF
IElzb0hlYXBDZWxsVHlwZShEZXN0cnVjdGlvbk1vZGUsIERlc3Ryb3lGdW5jdGlvblB0cik7Cisv
LworLy8gICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGU+CisvLyAgICBzdHJ1Y3QgQXJncyB7
CisvLyAgICAgICAgQXJncygpCisvLyAgICAgICAgICAgIDogbW9kZShDZWxsVHlwZTo6bmVlZHNE
ZXN0cnVjdGlvbiA/IE5lZWRzRGVzdHJ1Y3Rpb24gOiBEb2VzTm90TmVlZERlc3RydWN0aW9uKQor
Ly8gICAgICAgICAgICAsIGZ1bmN0aW9uUHRyKCZDZWxsVHlwZTo6ZGVzdHJveSkKKy8vICAgICAg
ICB7IH0KKy8vCisvLyAgICAgICAgRGVzdHJ1Y3Rpb25Nb2RlIG1vZGU7CisvLyAgICAgICAgRGVz
dHJveUZ1bmN0aW9uUHRyIGZ1bmN0aW9uUHRyOworLy8gICAgfTsKKy8vCisvLyAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBDZWxsVHlwZT4KKy8vICAgIElzb0hlYXBDZWxsVHlwZShBcmdzPENlbGxUeXBl
PiYmIGFyZ3MpCisvLyAgICAgICAgOiBJc29IZWFwQ2VsbFR5cGUoYXJncy5tb2RlLCBhcmdzLmZ1
bmN0aW9uUHRyKQorLy8gICAgeyB9CisvLworLy8gICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBm
aW5pc2hTd2VlcChNYXJrZWRCbG9jazo6SGFuZGxlJiwgRnJlZUxpc3QqKSBjb25zdCBmaW5hbDsK
Ky8vICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgZGVzdHJveShWTSYsIEpTQ2VsbCopIGNvbnN0
IGZpbmFsOworLy8KKy8vICAgIEFMV0FZU19JTkxJTkUgdm9pZCBvcGVyYXRvcigpKFZNJiwgSlND
ZWxsKiBjZWxsKSBjb25zdAorLy8gICAgeworLy8gICAgICAgIG1fZGVzdHJveShjZWxsKTsKKy8v
ICAgIH0KKy8vCisvL3ByaXZhdGU6CisvLyAgICBEZXN0cm95RnVuY3Rpb25QdHIgV1RGX1ZUQkxf
RlVOQ1BUUl9QVFJBVVRIX1NUUigiSXNvSGVhcENlbGxUeXBlLmRlc3Ryb3kiKSBtX2Rlc3Ryb3k7
CisvL307CisKKy8vIFRoZSByZWFzb24gd2UgbmVlZCBhbiBJc29IZWFwQ2VsbFR5cGVCYXNlIGlz
IGp1c3Qgc28gYWxsIElzb0hlYXBDZWxsVHlwZQorLy8gc3BlY2lhbGl6YXRpb25zIGNhbiBzaGFy
ZSB0aGUgc2FtZSBmaW5pc2hTd2VlcCgpLiBmaW5pc2hTd2VlcCgpIG5lZWRzIHRvIGNhbGwKKy8v
IE1hcmtlZEJsb2NrOjpIYW5kbGU6OmZpbmlzaFN3ZWVwS25vd2luZ0hlYXBDZWxsVHlwZSgpLCB3
aGljaCBpcyBhIHJlbGF0aXZlbHkKKy8vIGxhcmdlIHRlbXBsYXRlIGZ1bmN0aW9uLiBXZSBkb24n
dCB3YW50IHRvIGluc3RhbnRpYXRlIGEgc3BlY2lhbGl6YXRpb24gb2YKKy8vIGZpbmlzaFN3ZWVw
S25vd2luZ0hlYXBDZWxsVHlwZSgpIGZvciBlYWNoIElzb0hlYXBDZWxsVHlwZSBjZWxsIHR5cGUu
CitjbGFzcyBJc29IZWFwQ2VsbFR5cGVCYXNlIDogcHVibGljIEhlYXBDZWxsVHlwZSB7CiBwdWJs
aWM6CiAgICAgdXNpbmcgRGVzdHJveUZ1bmN0aW9uUHRyID0gdm9pZCAoKikoSlNDZWxsKik7CiAK
LSAgICBKU19FWFBPUlRfUFJJVkFURSB+SXNvSGVhcENlbGxUeXBlKCk7CisgICAgQUxXQVlTX0lO
TElORSBJc29IZWFwQ2VsbFR5cGVCYXNlKENlbGxBdHRyaWJ1dGVzIGF0dHJpYnV0ZXMpCisgICAg
ICAgIDogSGVhcENlbGxUeXBlKGF0dHJpYnV0ZXMpCisgICAgeyB9CiAKLSAgICBKU19FWFBPUlRf
UFJJVkFURSBJc29IZWFwQ2VsbFR5cGUoRGVzdHJ1Y3Rpb25Nb2RlLCBEZXN0cm95RnVuY3Rpb25Q
dHIpOworICAgIHZvaWQgZmluaXNoU3dlZXAoTWFya2VkQmxvY2s6OkhhbmRsZSYgaGFuZGxlLCBG
cmVlTGlzdCogZnJlZUxpc3QpIGNvbnN0IGZpbmFsOwogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUg
Q2VsbFR5cGU+Ci0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxJc29IZWFwQ2VsbFR5cGU+IGNy
ZWF0ZSgpCi0gICAgewotICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxJc29IZWFwQ2VsbFR5cGU+
KENlbGxUeXBlOjpuZWVkc0Rlc3RydWN0aW9uID8gTmVlZHNEZXN0cnVjdGlvbiA6IERvZXNOb3RO
ZWVkRGVzdHJ1Y3Rpb24sICZDZWxsVHlwZTo6ZGVzdHJveSk7Ci0gICAgfQorICAgIHZpcnR1YWwg
RGVzdHJveUZ1bmN0aW9uUHRyIGRlc3Ryb3lGdW5jdGlvblB0cigpIGNvbnN0ID0gMDsKK307CiAK
LSAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIGZpbmlzaFN3ZWVwKE1hcmtlZEJsb2NrOjpIYW5k
bGUmLCBGcmVlTGlzdCopIGNvbnN0IGZpbmFsOwotICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQg
ZGVzdHJveShWTSYsIEpTQ2VsbCopIGNvbnN0IGZpbmFsOwordGVtcGxhdGU8dHlwZW5hbWUgQ2Vs
bFR5cGU+CitjbGFzcyBJc29IZWFwQ2VsbFR5cGUgZmluYWwgOiBwdWJsaWMgSXNvSGVhcENlbGxU
eXBlQmFzZSB7CitwdWJsaWM6CisgICAgSXNvSGVhcENlbGxUeXBlKCkKKyAgICAgICAgOiBJc29I
ZWFwQ2VsbFR5cGVCYXNlKENlbGxBdHRyaWJ1dGVzKENlbGxUeXBlOjpuZWVkc0Rlc3RydWN0aW9u
ID8gTmVlZHNEZXN0cnVjdGlvbiA6IERvZXNOb3ROZWVkRGVzdHJ1Y3Rpb24sIEhlYXBDZWxsOjpK
U0NlbGwpKQorICAgIHsgfQogCi0gICAgQUxXQVlTX0lOTElORSB2b2lkIG9wZXJhdG9yKCkoVk0m
LCBKU0NlbGwqIGNlbGwpIGNvbnN0CisgICAgdm9pZCBkZXN0cm95KFZNJiwgSlNDZWxsKiBjZWxs
KSBjb25zdCBmaW5hbAogICAgIHsKLSAgICAgICAgbV9kZXN0cm95KGNlbGwpOworICAgICAgICBD
ZWxsVHlwZTo6ZGVzdHJveShjZWxsKTsKICAgICB9CiAKLXByaXZhdGU6Ci0gICAgRGVzdHJveUZ1
bmN0aW9uUHRyIFdURl9WVEJMX0ZVTkNQVFJfUFRSQVVUSF9TVFIoIklzb0hlYXBDZWxsVHlwZS5k
ZXN0cm95IikgbV9kZXN0cm95OworICAgIERlc3Ryb3lGdW5jdGlvblB0ciBkZXN0cm95RnVuY3Rp
b25QdHIoKSBjb25zdCBmaW5hbAorICAgIHsKKyAgICAgICAgcmV0dXJuICZDZWxsVHlwZTo6ZGVz
dHJveTsKKyAgICB9CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL0lzb0lubGluZWRIZWFwQ2VsbFR5cGUuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Jc29JbmxpbmVkSGVhcENlbGxUeXBlLmgJKHJldmlz
aW9uIDI4NjA4MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lzb0lubGluZWRIZWFw
Q2VsbFR5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzIsMjggKzMyLDEzIEBAIG5hbWVzcGFjZSBK
U0MgewogdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGU+CiBjbGFzcyBJc29JbmxpbmVkSGVhcENl
bGxUeXBlIGZpbmFsIDogcHVibGljIEhlYXBDZWxsVHlwZSB7CiBwdWJsaWM6Ci0gICAgSXNvSW5s
aW5lZEhlYXBDZWxsVHlwZSgpCi0gICAgICAgIDogSGVhcENlbGxUeXBlKENlbGxBdHRyaWJ1dGVz
KENlbGxUeXBlOjpuZWVkc0Rlc3RydWN0aW9uID8gTmVlZHNEZXN0cnVjdGlvbiA6IERvZXNOb3RO
ZWVkRGVzdHJ1Y3Rpb24sIEhlYXBDZWxsOjpKU0NlbGwpKQotICAgIHsKLSAgICB9Ci0KKyAgICBJ
c29JbmxpbmVkSGVhcENlbGxUeXBlKCk7CiAgICAgc3RydWN0IERlc3Ryb3lGdW5jIHsKLSAgICAg
ICAgQUxXQVlTX0lOTElORSB2b2lkIG9wZXJhdG9yKCkoVk0mLCBKU0NlbGwqIGNlbGwpIGNvbnN0
Ci0gICAgICAgIHsKLSAgICAgICAgICAgIENlbGxUeXBlOjpkZXN0cm95KGNlbGwpOwotICAgICAg
ICB9CisgICAgICAgIEFMV0FZU19JTkxJTkUgdm9pZCBvcGVyYXRvcigpKFZNJiwgSlNDZWxsKiBj
ZWxsKSBjb25zdDsKICAgICB9OwogCi0gICAgdm9pZCBmaW5pc2hTd2VlcChNYXJrZWRCbG9jazo6
SGFuZGxlJiBoYW5kbGUsIEZyZWVMaXN0KiBmcmVlTGlzdCkgY29uc3QgZmluYWwKLSAgICB7Ci0g
ICAgICAgIGhhbmRsZS5maW5pc2hTd2VlcEtub3dpbmdIZWFwQ2VsbFR5cGUoZnJlZUxpc3QsIERl
c3Ryb3lGdW5jKCkpOwotICAgIH0KLQotICAgIHZvaWQgZGVzdHJveShWTSYsIEpTQ2VsbCogY2Vs
bCkgY29uc3QgZmluYWwKLSAgICB7Ci0gICAgICAgIENlbGxUeXBlOjpkZXN0cm95KGNlbGwpOwot
ICAgIH0KKyAgICB2b2lkIGZpbmlzaFN3ZWVwKE1hcmtlZEJsb2NrOjpIYW5kbGUmIGhhbmRsZSwg
RnJlZUxpc3QqIGZyZWVMaXN0KSBjb25zdCBmaW5hbDsKKyAgICB2b2lkIGRlc3Ryb3koVk0mLCBK
U0NlbGwqIGNlbGwpIGNvbnN0IGZpbmFsOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCi0KSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lzb0lubGluZWRIZWFwQ2VsbFR5cGVJbmxp
bmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSXNvSW5saW5l
ZEhlYXBDZWxsVHlwZUlubGluZXMuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9Jc29JbmxpbmVkSGVhcENlbGxUeXBlSW5saW5lcy5oCSh3b3JraW5nIGNvcHkp
CkBAIC0wLDAgKzEsNTggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIklzb0lubGluZWRIZWFwQ2VsbFR5cGUu
aCIKKworI2luY2x1ZGUgIk1hcmtlZEJsb2NrLmgiCisKK25hbWVzcGFjZSBKU0MgeworCit0ZW1w
bGF0ZTx0eXBlbmFtZSBDZWxsVHlwZT4KK2lubGluZSBJc29JbmxpbmVkSGVhcENlbGxUeXBlPENl
bGxUeXBlPjo6SXNvSW5saW5lZEhlYXBDZWxsVHlwZSgpCisgICAgOiBIZWFwQ2VsbFR5cGUoQ2Vs
bEF0dHJpYnV0ZXMoQ2VsbFR5cGU6Om5lZWRzRGVzdHJ1Y3Rpb24gPyBOZWVkc0Rlc3RydWN0aW9u
IDogRG9lc05vdE5lZWREZXN0cnVjdGlvbiwgSGVhcENlbGw6OkpTQ2VsbCkpCit7Cit9CisKK3Rl
bXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlPgorQUxXQVlTX0lOTElORSB2b2lkIElzb0lubGluZWRI
ZWFwQ2VsbFR5cGU8Q2VsbFR5cGU+OjpEZXN0cm95RnVuYzo6b3BlcmF0b3IoKShWTSYsIEpTQ2Vs
bCogY2VsbCkgY29uc3QKK3sKKyAgICBDZWxsVHlwZTo6ZGVzdHJveShjZWxsKTsKK30KKwordGVt
cGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGU+CitpbmxpbmUgdm9pZCBJc29JbmxpbmVkSGVhcENlbGxU
eXBlPENlbGxUeXBlPjo6ZmluaXNoU3dlZXAoTWFya2VkQmxvY2s6OkhhbmRsZSYgaGFuZGxlLCBG
cmVlTGlzdCogZnJlZUxpc3QpIGNvbnN0Cit7CisgICAgaGFuZGxlLmZpbmlzaFN3ZWVwS25vd2lu
Z0hlYXBDZWxsVHlwZShmcmVlTGlzdCwgRGVzdHJveUZ1bmMoKSk7Cit9CisKK3RlbXBsYXRlPHR5
cGVuYW1lIENlbGxUeXBlPgoraW5saW5lIHZvaWQgSXNvSW5saW5lZEhlYXBDZWxsVHlwZTxDZWxs
VHlwZT46OmRlc3Ryb3koVk0mLCBKU0NlbGwqIGNlbGwpIGNvbnN0Cit7CisgICAgQ2VsbFR5cGU6
OmRlc3Ryb3koY2VsbCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvSXNvU3Vic3BhY2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9Jc29TdWJzcGFjZS5oCShyZXZpc2lvbiAyODYwODEpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Jc29TdWJzcGFjZS5oCSh3b3JraW5nIGNvcHkpCkBAIC01
NCw3ICs1NCw3IEBAIHB1YmxpYzoKICAgICB2b2lkKiB0cnlBbGxvY2F0ZUZyb21Mb3dlclRpZXIo
KTsKICAgICB2b2lkIGRlc3Ryb3lMb3dlclRpZXJGcmVlTGlzdCgpOwogCi0gICAgdm9pZCBzd2Vl
cCgpOworICAgIHZvaWQgc3dlZXAzKCk7CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jPiB2
b2lkIGZvckVhY2hMb3dlclRpZXJGcmVlTGlzdGVkUHJlY2lzZUFsbG9jYXRpb24oY29uc3QgRnVu
YyYpOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Jc29TdWJzcGFjZUlubGlu
ZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Jc29TdWJzcGFj
ZUlubGluZXMuaAkocmV2aXNpb24gMjg2MDgxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvSXNvU3Vic3BhY2VJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDcgKzQ0LDcgQEAg
aW5saW5lIHZvaWQgSXNvU3Vic3BhY2U6OmNsZWFySXNvQ2VsbFNldAogICAgICAgICB9KTsKIH0K
IAotaW5saW5lIHZvaWQgSXNvU3Vic3BhY2U6OnN3ZWVwKCkKK2lubGluZSB2b2lkIElzb1N1YnNw
YWNlOjpzd2VlcDMoKQogewogICAgIFN1YnNwYWNlOjpzd2VlcEJsb2NrcygpOwogICAgIC8vIFdl
IHN3ZWVwIHByZWNpc2UtYWxsb2NhdGlvbnMgZWFnZXJseSwgYnV0IHdlIGRvIG5vdCBmcmVlIGl0
IGltbWVkaWF0ZWx5LgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxv
Y2tJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFy
a2VkQmxvY2tJbmxpbmVzLmgJKHJldmlzaW9uIDI4NjA4MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL01hcmtlZEJsb2NrSW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEs
NSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNi0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNi0yMDIxIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjEzLDcg
KzIxMyw3IEBAIGlubGluZSBib29sIE1hcmtlZEJsb2NrOjpIYW5kbGU6OmFyZU1hcmsKIC8vIHN3
ZWVwTW9kZSA9PSBTd2VlcFRvRnJlZUxpc3QKIC8vIHNjcmliYmxlTW9kZSA9PSBEb250U2NyaWJi
bGUKIC8vIG5ld2x5QWxsb2NhdGVkTW9kZSA9PSBEb2VzTm90SGF2ZU5ld2x5QWxsb2NhdGVkCi0v
LyBkZXN0cnVjdGlvbk1vZGUgIT0gQmxvY2tIYXNEZXN0cmljdG9yc0FuZENvbGxlY3RvcklzUnVu
bmluZworLy8gZGVzdHJ1Y3Rpb25Nb2RlICE9IEJsb2NrSGFzRGVzdHJ1Y3RvcnNBbmRDb2xsZWN0
b3JJc1J1bm5pbmcKIC8vCiAvLyBlbXB0eU1vZGUgPSBJc0VtcHR5CiAvLyAgICAgZGVzdHJ1Y3Rp
b25Nb2RlID0gRG9lc05vdE5lZWREZXN0cnVjdGlvbgpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9KU0luamVjdGVkU2NyaXB0SG9zdFByb3RvdHlwZS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNJbmplY3RlZFNjcmlwdEhvc3RQ
cm90b3R5cGUuaAkocmV2aXNpb24gMjg2MDgxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9KU0luamVjdGVkU2NyaXB0SG9zdFByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBA
IC00MCw3ICs0MCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vi
c3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19T
VUJTUEFDRV9TSEFSQUJMRShKU0luamVjdGVkU2NyaXB0SG9zdFByb3RvdHlwZSwgQmFzZSk7Ci0g
ICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5w
bGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAgREVDTEFSRV9JTkZPOwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0phdmFTY3JpcHRDYWxsRnJhbWVQcm90b3R5
cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTSmF2
YVNjcmlwdENhbGxGcmFtZVByb3RvdHlwZS5oCShyZXZpc2lvbiAyODYwODEpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTSmF2YVNjcmlwdENhbGxGcmFtZVByb3RvdHlwZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC00MCw3ICs0MCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlND
OjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBT
VEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU0phdmFTY3JpcHRDYWxsRnJhbWVQ
cm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7Cisg
ICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIERFQ0xB
UkVfSU5GTzsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9DYWxsRnJh
bWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvQ2Fs
bEZyYW1lLmgJKHJldmlzaW9uIDI4NjA4MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRl
cnByZXRlci9DYWxsRnJhbWUuaAkod29ya2luZyBjb3B5KQpAQCAtMzgsNiArMzgsNyBAQCBuYW1l
c3BhY2UgSlNDICB7CiAgICAgY2xhc3MgSlNDYWxsZWU7CiAgICAgY2xhc3MgSlNTY29wZTsKICAg
ICBjbGFzcyBTb3VyY2VPcmlnaW47CisgICAgY2xhc3MgVmlydHVhbFJlZ2lzdGVyOwogCiAgICAg
c3RydWN0IEluc3RydWN0aW9uOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1Jl
cGF0Y2guaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2gu
aAkocmV2aXNpb24gMjg2MDgxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNo
LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAy
MDExLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDExLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCkBAIC0zMSw2ICszMSw3IEBACiAKIG5hbWVzcGFjZSBKU0Mgewog
CitjbGFzcyBDYWxsTGlua0luZm87CiBjbGFzcyBTdHJ1Y3R1cmVTdHViSW5mbzsKIAogZW51bSBj
bGFzcyBHZXRCeUtpbmQgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQWdn
cmVnYXRlRXJyb3JQcm90b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9BZ2dyZWdhdGVFcnJvclByb3RvdHlwZS5oCShyZXZpc2lvbiAyODYwODEpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BZ2dyZWdhdGVFcnJvclByb3RvdHlwZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC00NCw3ICs0NCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNv
U3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NF
UlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEFnZ3JlZ2F0ZUVycm9yUHJvdG90eXBlLCBCYXNlKTsK
LSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZt
LnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVh
dGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVl
IHByb3RvdHlwZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5SXRl
cmF0b3JQcm90b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9BcnJheUl0ZXJhdG9yUHJvdG90eXBlLmgJKHJldmlzaW9uIDI4NjA4MSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5SXRlcmF0b3JQcm90b3R5cGUuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMzgsNyArMzgsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIElzb1N1YnNwYWNl
KiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19T
VUJTUEFDRV9TSEFSQUJMRShBcnJheUl0ZXJhdG9yUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAg
cmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2Jq
ZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgQXJyYXlJdGVyYXRvclByb3RvdHlwZSog
Y3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bc3luY0Zyb21T
eW5jSXRlcmF0b3JQcm90b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Bc3luY0Zyb21TeW5jSXRlcmF0b3JQcm90b3R5cGUuaAkocmV2aXNpb24gMjg2
MDgxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXN5bmNGcm9tU3luY0l0ZXJh
dG9yUHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw2IEBACiAvKgogICogQ29w
eXJpZ2h0IChDKSAyMDE3LTIwMTkgT2xla3NhbmRyIFNrYWNoa292IDxnc2thY2hrb3ZAZ21haWwu
Y29tPi4KKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSwgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zNyw3ICszOCw3IEBAIHB1
YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7
CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEFzeW5jRnJvbVN5
bmNJdGVyYXRvclByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmpl
Y3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQog
CiAgICAgREVDTEFSRV9JTkZPOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
QXN5bmNGdW5jdGlvblByb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0FzeW5jRnVuY3Rpb25Qcm90b3R5cGUuaAkocmV2aXNpb24gMjg2MDgxKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXN5bmNGdW5jdGlvblByb3RvdHlwZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC0zOCw3ICszOCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNv
U3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NF
UlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEFzeW5jRnVuY3Rpb25Qcm90b3R5cGUsIEJhc2UpOwot
ICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0u
cGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIERFQ0xBUkVfSU5GTzsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FzeW5jR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5
cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bc3luY0dl
bmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmgJKHJldmlzaW9uIDI4NjA4MSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0FzeW5jR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuaAko
d29ya2luZyBjb3B5KQpAQCAtMzgsNyArMzgsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIElzb1N1
YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJU
X0lTT19TVUJTUEFDRV9TSEFSQUJMRShBc3luY0dlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLCBC
YXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1
cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBERUNMQVJFX0lORk87Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bc3luY0dlbmVyYXRvclByb3RvdHlw
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FzeW5jR2Vu
ZXJhdG9yUHJvdG90eXBlLmgJKHJldmlzaW9uIDI4NjA4MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0FzeW5jR2VuZXJhdG9yUHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAg
LTQxLDcgKzQxLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VG
b3IoVk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hB
UkFCTEUoQXN5bmNHZW5lcmF0b3JQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZt
LnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgp
OwogICAgIH0KIAogICAgIHN0YXRpYyBBc3luY0dlbmVyYXRvclByb3RvdHlwZSogY3JlYXRlKFZN
JiB2bSwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FzeW5jSXRlcmF0b3JQcm90b3R5cGUuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bc3luY0l0ZXJhdG9yUHJvdG90
eXBlLmgJKHJldmlzaW9uIDI4NjA4MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0FzeW5jSXRlcmF0b3JQcm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzksNyArMzksNyBA
QCBwdWJsaWM6CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAg
ICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShBc3luY0l0
ZXJhdG9yUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNw
YWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAg
ICBzdGF0aWMgQXN5bmNJdGVyYXRvclByb3RvdHlwZSogY3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9BdG9taWNzT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXRvbWljc09iamVjdC5oCShyZXZpc2lvbiAyODYw
ODEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BdG9taWNzT2JqZWN0LmgJKHdv
cmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE2LTIw
MTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE2
LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCkBAIC0zNyw3ICszNyw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vi
c3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRf
SVNPX1NVQlNQQUNFX1NIQVJBQkxFKEF0b21pY3NPYmplY3QsIEJhc2UpOwotICAgICAgICByZXR1
cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RT
cGFjZSgpOwogICAgIH0KICAgICAKICAgICBzdGF0aWMgQXRvbWljc09iamVjdCogY3JlYXRlKFZN
JiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0JpZ0ludFByb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0JpZ0ludFByb3RvdHlwZS5oCShyZXZpc2lvbiAyODYwODEpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9CaWdJbnRQcm90b3R5cGUuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMzksNyArMzksNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIElzb1N1YnNwYWNl
KiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19T
VUJTUEFDRV9TSEFSQUJMRShCaWdJbnRQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4g
JnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFj
ZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBCaWdJbnRQcm90b3R5cGUqIGNyZWF0ZShWTSYgdm0s
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlKQpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQnJhbmRlZFN0cnVjdHVyZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0JyYW5kZWRTdHJ1Y3R1cmUu
aAkocmV2aXNpb24gMjg2MDgxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQnJh
bmRlZFN0cnVjdHVyZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00Nyw3ICs0Nyw3IEBAIHB1YmxpYzoK
ICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vic3BhY2VBY2Nlc3M+CiAgICAgc3Rh
dGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewotICAgICAgICByZXR1
cm4gJnZtLmJyYW5kZWRTdHJ1Y3R1cmVTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5icmFuZGVk
U3RydWN0dXJlU3BhY2UoKTsKICAgICB9CiAKICAgICBBTFdBWVNfSU5MSU5FIGJvb2wgY2hlY2tC
cmFuZChTeW1ib2wqIGJyYW5kKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
QnV0dGVyZmx5SW5saW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0J1dHRlcmZseUlubGluZXMuaAkocmV2aXNpb24gMjg2MDgxKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQnV0dGVyZmx5SW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBA
IC03Nyw3ICs3Nyw3IEBAIEFMV0FZU19JTkxJTkUgdW5zaWduZWQgQnV0dGVyZmx5OjpvcHRpbWEK
IGlubGluZSBCdXR0ZXJmbHkqIEJ1dHRlcmZseTo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZChWTSYg
dm0sIEpTT2JqZWN0Kiwgc2l6ZV90IHByZUNhcGFjaXR5LCBzaXplX3QgcHJvcGVydHlDYXBhY2l0
eSwgYm9vbCBoYXNJbmRleGluZ0hlYWRlciwgc2l6ZV90IGluZGV4aW5nUGF5bG9hZFNpemVJbkJ5
dGVzLCBHQ0RlZmVycmFsQ29udGV4dCogZGVmZXJyYWxDb250ZXh0KQogewogICAgIHNpemVfdCBz
aXplID0gdG90YWxTaXplKHByZUNhcGFjaXR5LCBwcm9wZXJ0eUNhcGFjaXR5LCBoYXNJbmRleGlu
Z0hlYWRlciwgaW5kZXhpbmdQYXlsb2FkU2l6ZUluQnl0ZXMpOwotICAgIHZvaWQqIGJhc2UgPSB2
bS5qc1ZhbHVlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZS5hbGxvY2F0ZU5vblZpcnR1YWwodm0sIHNp
emUsIGRlZmVycmFsQ29udGV4dCwgQWxsb2NhdGlvbkZhaWx1cmVNb2RlOjpSZXR1cm5OdWxsKTsK
KyAgICB2b2lkKiBiYXNlID0gdm0uanNWYWx1ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UoKS5hbGxv
Y2F0ZU5vblZpcnR1YWwodm0sIHNpemUsIGRlZmVycmFsQ29udGV4dCwgQWxsb2NhdGlvbkZhaWx1
cmVNb2RlOjpSZXR1cm5OdWxsKTsKICAgICBpZiAoVU5MSUtFTFkoIWJhc2UpKQogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKIApAQCAtODksNyArODksNyBAQCBpbmxpbmUgQnV0dGVyZmx5KiBCdXR0
ZXJmbHk6OnRyeUNyZWF0ZVVuCiBpbmxpbmUgQnV0dGVyZmx5KiBCdXR0ZXJmbHk6OmNyZWF0ZVVu
aW5pdGlhbGl6ZWQoVk0mIHZtLCBKU09iamVjdCosIHNpemVfdCBwcmVDYXBhY2l0eSwgc2l6ZV90
IHByb3BlcnR5Q2FwYWNpdHksIGJvb2wgaGFzSW5kZXhpbmdIZWFkZXIsIHNpemVfdCBpbmRleGlu
Z1BheWxvYWRTaXplSW5CeXRlcykKIHsKICAgICBzaXplX3Qgc2l6ZSA9IHRvdGFsU2l6ZShwcmVD
YXBhY2l0eSwgcHJvcGVydHlDYXBhY2l0eSwgaGFzSW5kZXhpbmdIZWFkZXIsIGluZGV4aW5nUGF5
bG9hZFNpemVJbkJ5dGVzKTsKLSAgICB2b2lkKiBiYXNlID0gdm0uanNWYWx1ZUdpZ2FjYWdlQXV4
aWxpYXJ5U3BhY2UuYWxsb2NhdGVOb25WaXJ0dWFsKHZtLCBzaXplLCBudWxscHRyLCBBbGxvY2F0
aW9uRmFpbHVyZU1vZGU6OkFzc2VydCk7CisgICAgdm9pZCogYmFzZSA9IHZtLmpzVmFsdWVHaWdh
Y2FnZUF1eGlsaWFyeVNwYWNlKCkuYWxsb2NhdGVOb25WaXJ0dWFsKHZtLCBzaXplLCBudWxscHRy
LCBBbGxvY2F0aW9uRmFpbHVyZU1vZGU6OkFzc2VydCk7CiAgICAgQnV0dGVyZmx5KiByZXN1bHQg
PSBmcm9tQmFzZShiYXNlLCBwcmVDYXBhY2l0eSwgcHJvcGVydHlDYXBhY2l0eSk7CiAKICAgICBy
ZXR1cm4gcmVzdWx0OwpAQCAtOTgsNyArOTgsNyBAQCBpbmxpbmUgQnV0dGVyZmx5KiBCdXR0ZXJm
bHk6OmNyZWF0ZVVuaW5pCiBpbmxpbmUgQnV0dGVyZmx5KiBCdXR0ZXJmbHk6OnRyeUNyZWF0ZShW
TSYgdm0sIEpTT2JqZWN0Kiwgc2l6ZV90IHByZUNhcGFjaXR5LCBzaXplX3QgcHJvcGVydHlDYXBh
Y2l0eSwgYm9vbCBoYXNJbmRleGluZ0hlYWRlciwgY29uc3QgSW5kZXhpbmdIZWFkZXImIGluZGV4
aW5nSGVhZGVyLCBzaXplX3QgaW5kZXhpbmdQYXlsb2FkU2l6ZUluQnl0ZXMpCiB7CiAgICAgc2l6
ZV90IHNpemUgPSB0b3RhbFNpemUocHJlQ2FwYWNpdHksIHByb3BlcnR5Q2FwYWNpdHksIGhhc0lu
ZGV4aW5nSGVhZGVyLCBpbmRleGluZ1BheWxvYWRTaXplSW5CeXRlcyk7Ci0gICAgdm9pZCogYmFz
ZSA9IHZtLmpzVmFsdWVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlLmFsbG9jYXRlTm9uVmlydHVhbCh2
bSwgc2l6ZSwgbnVsbHB0ciwgQWxsb2NhdGlvbkZhaWx1cmVNb2RlOjpSZXR1cm5OdWxsKTsKKyAg
ICB2b2lkKiBiYXNlID0gdm0uanNWYWx1ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UoKS5hbGxvY2F0
ZU5vblZpcnR1YWwodm0sIHNpemUsIG51bGxwdHIsIEFsbG9jYXRpb25GYWlsdXJlTW9kZTo6UmV0
dXJuTnVsbCk7CiAgICAgaWYgKCFiYXNlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBC
dXR0ZXJmbHkqIHJlc3VsdCA9IGZyb21CYXNlKGJhc2UsIHByZUNhcGFjaXR5LCBwcm9wZXJ0eUNh
cGFjaXR5KTsKQEAgLTE3NCw3ICsxNzQsNyBAQCBpbmxpbmUgQnV0dGVyZmx5KiBCdXR0ZXJmbHk6
Omdyb3dBcnJheVJpCiAgICAgdm9pZCogdGhlQmFzZSA9IGJhc2UoMCwgcHJvcGVydHlDYXBhY2l0
eSk7CiAgICAgc2l6ZV90IG9sZFNpemUgPSB0b3RhbFNpemUoMCwgcHJvcGVydHlDYXBhY2l0eSwg
aGFkSW5kZXhpbmdIZWFkZXIsIG9sZEluZGV4aW5nUGF5bG9hZFNpemVJbkJ5dGVzKTsKICAgICBz
aXplX3QgbmV3U2l6ZSA9IHRvdGFsU2l6ZSgwLCBwcm9wZXJ0eUNhcGFjaXR5LCB0cnVlLCBuZXdJ
bmRleGluZ1BheWxvYWRTaXplSW5CeXRlcyk7Ci0gICAgdm9pZCogbmV3QmFzZSA9IHZtLmpzVmFs
dWVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlLmFsbG9jYXRlTm9uVmlydHVhbCh2bSwgbmV3U2l6ZSwg
bnVsbHB0ciwgQWxsb2NhdGlvbkZhaWx1cmVNb2RlOjpSZXR1cm5OdWxsKTsKKyAgICB2b2lkKiBu
ZXdCYXNlID0gdm0uanNWYWx1ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UoKS5hbGxvY2F0ZU5vblZp
cnR1YWwodm0sIG5ld1NpemUsIG51bGxwdHIsIEFsbG9jYXRpb25GYWlsdXJlTW9kZTo6UmV0dXJu
TnVsbCk7CiAgICAgaWYgKCFuZXdCYXNlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAv
LyBGSVhNRTogVGhpcyBwcm9iYWJseSBzaG91bGRuJ3QgYmUgYSBtZW1jcHkuCkBAIC0yMTEsMTMg
KzIxMSwxMyBAQCBpbmxpbmUgQnV0dGVyZmx5KiBCdXR0ZXJmbHk6OnJlYWxsb2NBcnJhCiAgICAg
Ly8gT2JqZWN0cyB3aXRoIG5vIHByb3BlcnRpZXMgYXJlIGNvbW1vbiBpbiBhcnJheXMsIGFuZCB3
ZSBhcmUgZm9jdXNpbmcgb24gdmVyeSBsYXJnZSBhcnJheSBjcmFmdGVkIGJ5IHJlcGVhdGluZyBB
cnJheSNwdXNoLCBzby4uLiB0aGF0J3MgZmluZSEKICAgICBib29sIGNhblJlYWxsb2MgPSAhcHJv
cGVydHlDYXBhY2l0eSAmJiAhdm0uaGVhcC5tdXRhdG9yU2hvdWxkQmVGZW5jZWQoKSAmJiBiaXR3
aXNlX2Nhc3Q8SGVhcENlbGwqPih0aGVCYXNlKS0+aXNQcmVjaXNlQWxsb2NhdGlvbigpOwogICAg
IGlmIChjYW5SZWFsbG9jKSB7Ci0gICAgICAgIHZvaWQqIG5ld0Jhc2UgPSB2bS5qc1ZhbHVlR2ln
YWNhZ2VBdXhpbGlhcnlTcGFjZS5yZWFsbG9jYXRlUHJlY2lzZUFsbG9jYXRpb25Ob25WaXJ0dWFs
KHZtLCBiaXR3aXNlX2Nhc3Q8SGVhcENlbGwqPih0aGVCYXNlKSwgbmV3U2l6ZSwgJmRlZmVycmFs
Q29udGV4dCwgQWxsb2NhdGlvbkZhaWx1cmVNb2RlOjpSZXR1cm5OdWxsKTsKKyAgICAgICAgdm9p
ZCogbmV3QmFzZSA9IHZtLmpzVmFsdWVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlKCkucmVhbGxvY2F0
ZVByZWNpc2VBbGxvY2F0aW9uTm9uVmlydHVhbCh2bSwgYml0d2lzZV9jYXN0PEhlYXBDZWxsKj4o
dGhlQmFzZSksIG5ld1NpemUsICZkZWZlcnJhbENvbnRleHQsIEFsbG9jYXRpb25GYWlsdXJlTW9k
ZTo6UmV0dXJuTnVsbCk7CiAgICAgICAgIGlmICghbmV3QmFzZSkKICAgICAgICAgICAgIHJldHVy
biBudWxscHRyOwogICAgICAgICByZXR1cm4gZnJvbUJhc2UobmV3QmFzZSwgMCwgcHJvcGVydHlD
YXBhY2l0eSk7CiAgICAgfQogCi0gICAgdm9pZCogbmV3QmFzZSA9IHZtLmpzVmFsdWVHaWdhY2Fn
ZUF1eGlsaWFyeVNwYWNlLmFsbG9jYXRlTm9uVmlydHVhbCh2bSwgbmV3U2l6ZSwgJmRlZmVycmFs
Q29udGV4dCwgQWxsb2NhdGlvbkZhaWx1cmVNb2RlOjpSZXR1cm5OdWxsKTsKKyAgICB2b2lkKiBu
ZXdCYXNlID0gdm0uanNWYWx1ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UoKS5hbGxvY2F0ZU5vblZp
cnR1YWwodm0sIG5ld1NpemUsICZkZWZlcnJhbENvbnRleHQsIEFsbG9jYXRpb25GYWlsdXJlTW9k
ZTo6UmV0dXJuTnVsbCk7CiAgICAgaWYgKCFuZXdCYXNlKQogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKICAgICBnY1NhZmVNZW1jcHkoc3RhdGljX2Nhc3Q8SlNWYWx1ZSo+KG5ld0Jhc2UpLCBzdGF0
aWNfY2FzdDxKU1ZhbHVlKj4odGhlQmFzZSksIG9sZFNpemUpOwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQ2FjaGVkVHlwZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9DYWNoZWRUeXBlcy5oCShyZXZpc2lvbiAyODYwODEpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWNoZWRUeXBlcy5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOC0yMDE5IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxOC0yMDIxIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwpAQCAtMzksNiArMzksNyBAQCBjbGFzcyBDYWNoZWRCeXRlY29kZTsKIGNsYXNzIFNvdXJjZUNv
ZGVLZXk7CiBjbGFzcyBVbmxpbmtlZENvZGVCbG9jazsKIGNsYXNzIFVubGlua2VkRnVuY3Rpb25D
b2RlQmxvY2s7CitjbGFzcyBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTsKIAogZW51bSBjbGFz
cyBTb3VyY2VDb2RlVHlwZTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Q2xvbmVkQXJndW1lbnRzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQ2xvbmVkQXJndW1lbnRzLmgJKHJldmlzaW9uIDI4NjA4MSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0Nsb25lZEFyZ3VtZW50cy5oCSh3b3JraW5nIGNvcHkpCkBAIC00
Niw3ICs0Niw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9y
KFZNJiB2bSkKICAgICB7CiAgICAgICAgIHN0YXRpY19hc3NlcnQoIUNlbGxUeXBlOjpuZWVkc0Rl
c3RydWN0aW9uLCAiIik7Ci0gICAgICAgIHJldHVybiAmdm0uY2xvbmVkQXJndW1lbnRzU3BhY2U7
CisgICAgICAgIHJldHVybiAmdm0uY2xvbmVkQXJndW1lbnRzU3BhY2UoKTsKICAgICB9CiAgICAg
CiBwcml2YXRlOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29uc29sZU9i
amVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbnNv
bGVPYmplY3QuaAkocmV2aXNpb24gMjg2MDgxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQ29uc29sZU9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw3ICszNyw3IEBAIHB1
YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7
CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKENvbnNvbGVPYmpl
Y3QsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAg
IHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBDb25z
b2xlT2JqZWN0KiBjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0N1c3RvbUdldHRlclNldHRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0N1c3RvbUdldHRlclNldHRlci5oCShyZXZpc2lvbiAyODYwODEpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DdXN0b21HZXR0ZXJTZXR0ZXIuaAkod29ya2luZyBj
b3B5KQpAQCAtNDMsNyArNDMsNyBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2Vs
bFR5cGUsIFN1YnNwYWNlQWNjZXNzPgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VG
b3IoVk0mIHZtKQogICAgIHsKLSAgICAgICAgcmV0dXJuICZ2bS5jdXN0b21HZXR0ZXJTZXR0ZXJT
cGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5jdXN0b21HZXR0ZXJTZXR0ZXJTcGFjZSgpOwogICAg
IH0KIAogICAgIHN0YXRpYyBDdXN0b21HZXR0ZXJTZXR0ZXIqIGNyZWF0ZShWTSYgdm0sIEN1c3Rv
bUdldHRlciBjdXN0b21HZXR0ZXIsIEN1c3RvbVNldHRlciBjdXN0b21TZXR0ZXIpCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9ET01BdHRyaWJ1dGVHZXR0ZXJTZXR0ZXIuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9ET01BdHRyaWJ1dGVH
ZXR0ZXJTZXR0ZXIuaAkocmV2aXNpb24gMjg2MDgxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvRE9NQXR0cmlidXRlR2V0dGVyU2V0dGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTQz
LDcgKzQzLDcgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlLCBTdWJz
cGFjZUFjY2Vzcz4KICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkK
ICAgICB7Ci0gICAgICAgIHJldHVybiAmdm0uZG9tQXR0cmlidXRlR2V0dGVyU2V0dGVyU3BhY2U7
CisgICAgICAgIHJldHVybiAmdm0uZG9tQXR0cmlidXRlR2V0dGVyU2V0dGVyU3BhY2UoKTsKICAg
ICB9CiAKICAgICBzdGF0aWMgRE9NQXR0cmlidXRlR2V0dGVyU2V0dGVyKiBjcmVhdGUoVk0mIHZt
LCBDdXN0b21HZXR0ZXIgY3VzdG9tR2V0dGVyLCBDdXN0b21TZXR0ZXIgY3VzdG9tU2V0dGVyLCBE
T01BdHRyaWJ1dGVBbm5vdGF0aW9uIGRvbUF0dHJpYnV0ZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0RhdGVJbnN0YW5jZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0RhdGVJbnN0YW5jZS5oCShyZXZpc2lvbiAyODYwODEpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlSW5zdGFuY2UuaAkod29ya2luZyBjb3B5
KQpAQCAtMzcsNyArMzcsNyBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5
cGUsIFN1YnNwYWNlQWNjZXNzIG1vZGU+CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFj
ZUZvcihWTSYgdm0pCiAgICAgewotICAgICAgICByZXR1cm4gJnZtLmRhdGVJbnN0YW5jZVNwYWNl
OworICAgICAgICByZXR1cm4gJnZtLmRhdGVJbnN0YW5jZVNwYWNlKCk7CiAgICAgfQogCiAgICAg
c3RhdGljIERhdGVJbnN0YW5jZSogY3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUs
IGRvdWJsZSBkYXRlKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZVBy
b3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Rh
dGVQcm90b3R5cGUuaAkocmV2aXNpb24gMjg2MDgxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvRGF0ZVByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw3ICszNSw3IEBA
IHB1YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAg
ICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKERhdGVQcm90
b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAg
ICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBE
YXRlUHJvdG90eXBlKiBjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0RpcmVjdEFyZ3VtZW50cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0RpcmVjdEFyZ3VtZW50cy5oCShyZXZpc2lvbiAyODYwODEpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9EaXJlY3RBcmd1bWVudHMuaAkod29ya2luZyBjb3B5KQpA
QCAtNTAsNyArNTAsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIENvbXBsZXRlU3Vic3BhY2UqIHN1
YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAgIHN0YXRpY19hc3NlcnQoIUNlbGxUeXBl
OjpuZWVkc0Rlc3RydWN0aW9uLCAiIik7Ci0gICAgICAgIHJldHVybiAmdm0udmFyaWFibGVTaXpl
ZENlbGxTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS52YXJpYWJsZVNpemVkQ2VsbFNwYWNlKCk7
CiAgICAgfQogCiAgICAgLy8gQ3JlYXRlcyBhbiBhcmd1bWVudHMgb2JqZWN0IGJ1dCBsZWF2ZXMg
aXQgdW5pbml0aWFsaXplZC4gVGhpcyBpcyBkYW5nZXJvdXMgaWYgd2UgR0MgcmlnaHQKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yUHJvdG90eXBlLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JQcm90b3R5cGUuaAkocmV2
aXNpb24gMjg2MDgxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JQcm90
b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtNDUsNyArNDUsNyBAQCBwdWJsaWM6CiAgICAgc3Rh
dGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFU
SUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShFcnJvclByb3RvdHlwZUJhc2UsIEJhc2Up
OwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAm
dm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIERFQ0xBUkVfSU5GTzsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvbi5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvbi5oCShyZXZpc2lvbiAyODYw
ODEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNlcHRpb24uaAkod29ya2lu
ZyBjb3B5KQpAQCAtNDAsNyArNDAsNyBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUg
Q2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNzIG1vZGU+CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBz
dWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewotICAgICAgICByZXR1cm4gJnZtLmV4Y2VwdGlvblNw
YWNlOworICAgICAgICByZXR1cm4gJnZtLmV4Y2VwdGlvblNwYWNlKCk7CiAgICAgfQogCiAgICAg
ZW51bSBTdGFja0NhcHR1cmVBY3Rpb24gewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvRXhjZXB0aW9uU2NvcGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0V4Y2VwdGlvblNjb3BlLmNwcAkocmV2aXNpb24gMjg2MDgxKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9uU2NvcGUuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNi0yMDE3IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNi0yMDIxIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRmluYWxpemF0aW9uUmVn
aXN0cnlQcm90b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9GaW5hbGl6YXRpb25SZWdpc3RyeVByb3RvdHlwZS5oCShyZXZpc2lvbiAyODYwODEpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GaW5hbGl6YXRpb25SZWdpc3RyeVByb3Rv
dHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw3ICszNyw3IEBAIHB1YmxpYzoKICAgICBzdGF0
aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJ
Q19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEZpbmFsaXphdGlvblJlZ2lzdHJ5UHJvdG90
eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAg
ICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgRmlu
YWxpemF0aW9uUmVnaXN0cnlQcm90b3R5cGUqIGNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlKQpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25FeGVjdXRhYmxlLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25FeGVjdXRhYmxlLmgJKHJldmlzaW9u
IDI4NjA4MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uRXhlY3V0
YWJsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00Niw3ICs0Niw3IEBAIHB1YmxpYzoKICAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vic3BhY2VBY2Nlc3M+CiAgICAgc3RhdGljIElzb1N1
YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewotICAgICAgICByZXR1cm4gJnZtLmZ1
bmN0aW9uRXhlY3V0YWJsZVNwYWNlLnNwYWNlOworICAgICAgICByZXR1cm4gJnZtLmZ1bmN0aW9u
RXhlY3V0YWJsZVNwYWNlKCkuc3BhY2U7CiAgICAgfQogCiAgICAgc3RhdGljIEZ1bmN0aW9uRXhl
Y3V0YWJsZSogY3JlYXRlKFZNJiB2bSwgU2NyaXB0RXhlY3V0YWJsZSogdG9wTGV2ZWxFeGVjdXRh
YmxlLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxl
KiB1bmxpbmtlZEV4ZWN1dGFibGUsIEludHJpbnNpYyBpbnRyaW5zaWMsIGJvb2wgaXNJbnNpZGVP
cmRpbmFyeUZ1bmN0aW9uKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2Vu
ZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9HZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5oCShyZXZpc2lvbiAyODYw
ODEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JGdW5jdGlvblBy
b3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00MCw3ICs0MCw3IEBAIHB1YmxpYzoKICAgICBz
dGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAgIFNU
QVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90
eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAg
ICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgR2Vu
ZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUqIGNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0
dXJlKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yUHJvdG90
eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJh
dG9yUHJvdG90eXBlLmgJKHJldmlzaW9uIDI4NjA4MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0dlbmVyYXRvclByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00MSw3ICs0
MSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2
bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEdl
bmVyYXRvclByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RT
cGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAg
ICAgc3RhdGljIEdlbmVyYXRvclByb3RvdHlwZSogY3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmpl
Y3QqLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0dldHRlclNldHRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0dldHRlclNldHRlci5oCShyZXZpc2lvbiAyODYwODEpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9HZXR0ZXJTZXR0ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNTks
NyArNTksNyBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUsIFN1YnNw
YWNlQWNjZXNzPgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQog
ICAgIHsKLSAgICAgICAgcmV0dXJuICZ2bS5nZXR0ZXJTZXR0ZXJTcGFjZTsKKyAgICAgICAgcmV0
dXJuICZ2bS5nZXR0ZXJTZXR0ZXJTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBHZXR0ZXJT
ZXR0ZXIqIGNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTT2Jq
ZWN0KiBnZXR0ZXIsIEpTT2JqZWN0KiBzZXR0ZXIpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9IYXNoTWFwSW1wbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0hhc2hNYXBJbXBsLmgJKHJldmlzaW9uIDI4NjA4MSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0hhc2hNYXBJbXBsLmgJKHdvcmtpbmcgY29weSkKQEAgLTIx
Myw3ICsyMTMsNyBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBhdXRvIHNjb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CiAgICAgICAgIHNpemVfdCBhbGxvY2F0aW9uU2l6ZSA9IEhhc2hN
YXBCdWZmZXI6OmFsbG9jYXRpb25TaXplKGNhcGFjaXR5KTsKLSAgICAgICAgdm9pZCogZGF0YSA9
IHZtLmpzVmFsdWVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlLmFsbG9jYXRlTm9uVmlydHVhbCh2bSwg
YWxsb2NhdGlvblNpemUsIG51bGxwdHIsIEFsbG9jYXRpb25GYWlsdXJlTW9kZTo6UmV0dXJuTnVs
bCk7CisgICAgICAgIHZvaWQqIGRhdGEgPSB2bS5qc1ZhbHVlR2lnYWNhZ2VBdXhpbGlhcnlTcGFj
ZSgpLmFsbG9jYXRlTm9uVmlydHVhbCh2bSwgYWxsb2NhdGlvblNpemUsIG51bGxwdHIsIEFsbG9j
YXRpb25GYWlsdXJlTW9kZTo6UmV0dXJuTnVsbCk7CiAgICAgICAgIGlmICghZGF0YSkgewogICAg
ICAgICAgICAgdGhyb3dPdXRPZk1lbW9yeUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUpOwogICAg
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9JbnRlcm5hbEZ1bmN0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSW50ZXJuYWxGdW5jdGlvbi5oCShyZXZpc2lvbiAyODYwODEpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRlcm5hbEZ1bmN0aW9uLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTQxLDcgKzQxLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vi
c3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAgICAgc3RhdGljX2Fzc2VydChzaXplb2YoQ2Vs
bFR5cGUpID09IHNpemVvZihJbnRlcm5hbEZ1bmN0aW9uKSwgIkludGVybmFsRnVuY3Rpb24gc3Vi
Y2xhc3NlcyB0aGF0IGFkZCBmaWVsZHMgbmVlZCB0byBvdmVycmlkZSBzdWJzcGFjZUZvcjw+KCki
KTsKLSAgICAgICAgcmV0dXJuICZ2bS5pbnRlcm5hbEZ1bmN0aW9uU3BhY2U7CisgICAgICAgIHJl
dHVybiAmdm0uaW50ZXJuYWxGdW5jdGlvblNwYWNlKCk7CiAgICAgfQogCiAgICAgREVDTEFSRV9F
WFBPUlRfSU5GTzsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxDb2xs
YXRvclByb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0ludGxDb2xsYXRvclByb3RvdHlwZS5oCShyZXZpc2lvbiAyODYwODEpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsQ29sbGF0b3JQcm90b3R5cGUuaAkod29ya2luZyBj
b3B5KQpAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQW5keSBWYW5X
YWdvbmVyIChhbmR5QHZhbndhZ29uZXIuZmFtaWx5KQotICogQ29weXJpZ2h0IChDKSAyMDE5IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxOS0yMDIx
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtMzksNyArMzksNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIElzb1N1YnNwYWNl
KiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19T
VUJTUEFDRV9TSEFSQUJMRShJbnRsQ29sbGF0b3JQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICBy
ZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmpl
Y3RTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBJbnRsQ29sbGF0b3JQcm90b3R5cGUqIGNy
ZWF0ZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKik7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXRQ
cm90b3R5cGUuaAkocmV2aXNpb24gMjg2MDgxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEs
NiArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDE1IEFuZHkgVmFuV2Fnb25lciAoYW5k
eUB2YW53YWdvbmVyLmZhbWlseSkKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTktMjAyMSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAg
LTM5LDcgKzM5LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VG
b3IoVk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hB
UkFCTEUoSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJu
ICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3Bh
Y2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlKiBj
cmVhdGUoVk0mLCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSopOwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERpc3BsYXlOYW1lc1Byb3RvdHlwZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEaXNwbGF5TmFtZXNQcm90
b3R5cGUuaAkocmV2aXNpb24gMjg2MDgxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSW50bERpc3BsYXlOYW1lc1Byb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEs
NSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM4LDcgKzM4LDcg
QEAgcHVibGljOgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQog
ICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSW50bERp
c3BsYXlOYW1lc1Byb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmpl
Y3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQog
CiAgICAgc3RhdGljIEludGxEaXNwbGF5TmFtZXNQcm90b3R5cGUqIGNyZWF0ZShWTSYsIFN0cnVj
dHVyZSopOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bExpc3RGb3Jt
YXRQcm90b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9JbnRsTGlzdEZvcm1hdFByb3RvdHlwZS5oCShyZXZpc2lvbiAyODYwODEpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTGlzdEZvcm1hdFByb3RvdHlwZS5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAtMjAyMSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKQEAgLTM4LDcgKzM4LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vi
c3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BB
Q0VfU0hBUkFCTEUoSW50bExpc3RGb3JtYXRQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1
cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RT
cGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBJbnRsTGlzdEZvcm1hdFByb3RvdHlwZSogY3Jl
YXRlKFZNJiwgU3RydWN0dXJlKik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9JbnRsTG9jYWxlUHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSW50bExvY2FsZVByb3RvdHlwZS5oCShyZXZpc2lvbiAyODYwODEpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTG9jYWxlUHJvdG90eXBlLmgJKHdvcmtp
bmcgY29weSkKQEAgLTEsNSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDIwIFNvbnkg
SW50ZXJhY3RpdmUgRW50ZXJ0YWlubWVudCBJbmMuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCkBAIC0zOCw3ICszOSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1
YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQ
QUNFX1NIQVJBQkxFKEludGxMb2NhbGVQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4g
JnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFj
ZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBJbnRsTG9jYWxlUHJvdG90eXBlKiBjcmVhdGUoVk0m
LCBTdHJ1Y3R1cmUqKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxO
dW1iZXJGb3JtYXRQcm90b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlLmgJKHJldmlzaW9uIDI4NjA4MSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXRQcm90b3R5
cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMp
IDIwMTUgQW5keSBWYW5XYWdvbmVyIChhbmR5QHZhbndhZ29uZXIuZmFtaWx5KQotICogQ29weXJp
Z2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAxOS0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzksNyArMzksNyBAQCBwdWJsaWM6CiAgICAgc3Rh
dGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFU
SUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBl
LCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICBy
ZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgSW50bE51
bWJlckZvcm1hdFByb3RvdHlwZSogY3JlYXRlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1
cmUqKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxPYmplY3QuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsT2JqZWN0LmgJ
KHJldmlzaW9uIDI4NjA4MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxP
YmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQg
KEMpIDIwMTUgQW5keSBWYW5XYWdvbmVyIChhbmR5QHZhbndhZ29uZXIuZmFtaWx5KQotICogQ29w
eXJpZ2h0IChDKSAyMDE5LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDE5LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICogQ29weXJpZ2h0IChDKSAyMDIwIFNvbnkgSW50ZXJhY3RpdmUgRW50ZXJ0YWlubWVudCBJbmMu
CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CkBAIC03Niw3ICs3Niw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMg
SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19B
U1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEludGxPYmplY3QsIEJhc2UpOwotICAgICAgICBy
ZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmpl
Y3RTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBJbnRsT2JqZWN0KiBjcmVhdGUoVk0mLCBK
U0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSopOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSW50bFBsdXJhbFJ1bGVzUHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFBsdXJhbFJ1bGVzUHJvdG90eXBlLmgJKHJldmlz
aW9uIDI4NjA4MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxQbHVyYWxS
dWxlc1Byb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNiBAQAogLyoKICAqIENv
cHlyaWdodCAoQykgMjAxOCBBbmR5IFZhbldhZ29uZXIgKGFuZHlAdmFud2Fnb25lci5mYW1pbHkp
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDE5LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zOSw3ICszOSw3IEBAIHB1Ymxp
YzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAg
ICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEludGxQbHVyYWxSdWxl
c1Byb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsK
KyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAgc3Rh
dGljIEludGxQbHVyYWxSdWxlc1Byb3RvdHlwZSogY3JlYXRlKFZNJiwgSlNHbG9iYWxPYmplY3Qq
LCBTdHJ1Y3R1cmUqKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxS
ZWxhdGl2ZVRpbWVGb3JtYXRQcm90b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9JbnRsUmVsYXRpdmVUaW1lRm9ybWF0UHJvdG90eXBlLmgJKHJldmlz
aW9uIDI4NjA4MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxSZWxhdGl2
ZVRpbWVGb3JtYXRQcm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDYgQEAKIC8q
CiAgKiBDb3B5cmlnaHQgKEMpIDIwMjAgU29ueSBJbnRlcmFjdGl2ZSBFbnRlcnRhaW5tZW50IElu
Yy4KKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM4LDcgKzM5LDcgQEAgcHVibGlj
OgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAg
ICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSW50bFJlbGF0aXZlVGlt
ZUZvcm1hdFByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RT
cGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAg
ICAgc3RhdGljIEludGxSZWxhdGl2ZVRpbWVGb3JtYXRQcm90b3R5cGUqIGNyZWF0ZShWTSYsIFN0
cnVjdHVyZSopOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFNlZ21l
bnRJdGVyYXRvclByb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0ludGxTZWdtZW50SXRlcmF0b3JQcm90b3R5cGUuaAkocmV2aXNpb24gMjg2MDgx
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFNlZ21lbnRJdGVyYXRvclBy
b3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMjAtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM4LDcgKzM4LDcgQEAgcHVibGljOgogICAgIHN0YXRp
YyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElD
X0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSW50bFNlZ21lbnRJdGVyYXRvclByb3RvdHlw
ZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAg
cmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIEludGxT
ZWdtZW50SXRlcmF0b3JQcm90b3R5cGUqIGNyZWF0ZShWTSYsIFN0cnVjdHVyZSopOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFNlZ21lbnRlclByb3RvdHlwZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxTZWdtZW50ZXJQ
cm90b3R5cGUuaAkocmV2aXNpb24gMjg2MDgxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSW50bFNlZ21lbnRlclByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEs
NSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM4LDcgKzM4LDcg
QEAgcHVibGljOgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQog
ICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSW50bFNl
Z21lbnRlclByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RT
cGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAg
ICAgc3RhdGljIEludGxTZWdtZW50ZXJQcm90b3R5cGUqIGNyZWF0ZShWTSYsIFN0cnVjdHVyZSop
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFNlZ21lbnRzUHJvdG90
eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFNl
Z21lbnRzUHJvdG90eXBlLmgJKHJldmlzaW9uIDI4NjA4MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0ludGxTZWdtZW50c1Byb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAtMjAyMSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM4LDcg
KzM4LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0m
IHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUo
SW50bFNlZ21lbnRzUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9i
amVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9
CiAKICAgICBzdGF0aWMgSW50bFNlZ21lbnRzUHJvdG90eXBlKiBjcmVhdGUoVk0mLCBKU0dsb2Jh
bE9iamVjdCosIFN0cnVjdHVyZSopOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSXRlcmF0b3JQcm90b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9JdGVyYXRvclByb3RvdHlwZS5oCShyZXZpc2lvbiAyODYwODEpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JdGVyYXRvclByb3RvdHlwZS5oCSh3b3JraW5nIGNv
cHkpCkBAIC0zOSw3ICszOSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1
YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQ
QUNFX1NIQVJBQkxFKEl0ZXJhdG9yUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2
bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2Uo
KTsKICAgICB9CiAKICAgICBzdGF0aWMgSXRlcmF0b3JQcm90b3R5cGUqIGNyZWF0ZShWTSYgdm0s
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlKQpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5jcHAJKHJldmlzaW9uIDI4
NjA4MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC01Niw3ICs1Niw3IEBAIEpTQXJyYXkqIEpTQXJyYXk6OnRyeUNyZWF0ZVVu
aW5pdGlhbGl6ZWQKICAgICAgICAgICAgIHx8IGhhc0NvbnRpZ3VvdXMoaW5kZXhpbmdUeXBlKSk7
CiAKICAgICAgICAgdW5zaWduZWQgdmVjdG9yTGVuZ3RoID0gQnV0dGVyZmx5OjpvcHRpbWFsQ29u
dGlndW91c1ZlY3Rvckxlbmd0aChzdHJ1Y3R1cmUsIGluaXRpYWxMZW5ndGgpOwotICAgICAgICB2
b2lkKiB0ZW1wID0gdm0uanNWYWx1ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UuYWxsb2NhdGVOb25W
aXJ0dWFsKAorICAgICAgICB2b2lkKiB0ZW1wID0gdm0uanNWYWx1ZUdpZ2FjYWdlQXV4aWxpYXJ5
U3BhY2UoKS5hbGxvY2F0ZU5vblZpcnR1YWwoCiAgICAgICAgICAgICB2bSwKICAgICAgICAgICAg
IEJ1dHRlcmZseTo6dG90YWxTaXplKDAsIG91dE9mTGluZVN0b3JhZ2UsIHRydWUsIHZlY3Rvckxl
bmd0aCAqIHNpemVvZihFbmNvZGVkSlNWYWx1ZSkpLAogICAgICAgICAgICAgZGVmZXJyYWxDb250
ZXh0LCBBbGxvY2F0aW9uRmFpbHVyZU1vZGU6OlJldHVybk51bGwpOwpAQCAtNzgsNyArNzgsNyBA
QCBKU0FycmF5KiBKU0FycmF5Ojp0cnlDcmVhdGVVbmluaXRpYWxpemVkCiAgICAgICAgICAgICB8
fCBpbmRleGluZ1R5cGUgPT0gQXJyYXlXaXRoQXJyYXlTdG9yYWdlKTsKICAgICAgICAgc3RhdGlj
IGNvbnN0ZXhwciB1bnNpZ25lZCBpbmRleEJpYXMgPSAwOwogICAgICAgICB1bnNpZ25lZCB2ZWN0
b3JMZW5ndGggPSBBcnJheVN0b3JhZ2U6Om9wdGltYWxWZWN0b3JMZW5ndGgoaW5kZXhCaWFzLCBz
dHJ1Y3R1cmUsIGluaXRpYWxMZW5ndGgpOwotICAgICAgICB2b2lkKiB0ZW1wID0gdm0uanNWYWx1
ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UuYWxsb2NhdGVOb25WaXJ0dWFsKAorICAgICAgICB2b2lk
KiB0ZW1wID0gdm0uanNWYWx1ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UoKS5hbGxvY2F0ZU5vblZp
cnR1YWwoCiAgICAgICAgICAgICB2bSwKICAgICAgICAgICAgIEJ1dHRlcmZseTo6dG90YWxTaXpl
KGluZGV4Qmlhcywgb3V0T2ZMaW5lU3RvcmFnZSwgdHJ1ZSwgQXJyYXlTdG9yYWdlOjpzaXplRm9y
KHZlY3Rvckxlbmd0aCkpLAogICAgICAgICAgICAgZGVmZXJyYWxDb250ZXh0LCBBbGxvY2F0aW9u
RmFpbHVyZU1vZGU6OlJldHVybk51bGwpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNBcnJheS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQXJyYXkuaAkocmV2aXNpb24gMjg2MDgxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNBcnJheS5oCSh3b3JraW5nIGNvcHkpCkBAIC01MSw3ICs1MSw3IEBAIHB1Ymxp
YzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vic3BhY2VBY2Nlc3M+CiAgICAg
c3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewotICAgICAgICBy
ZXR1cm4gJnZtLmFycmF5U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0uYXJyYXlTcGFjZSgpOwog
ICAgIH0KICAgICAgICAgCiBwcm90ZWN0ZWQ6CkBAIC0yNDQsNyArMjQ0LDcgQEAgaW5saW5lIEpT
QXJyYXkqIEpTQXJyYXk6OnRyeUNyZWF0ZShWTSYgdgogICAgICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAKICAgICAgICAgdW5zaWduZWQgdmVjdG9yTGVuZ3RoID0gQnV0dGVyZmx5OjpvcHRpbWFs
Q29udGlndW91c1ZlY3Rvckxlbmd0aChzdHJ1Y3R1cmUsIHZlY3Rvckxlbmd0aEhpbnQpOwotICAg
ICAgICB2b2lkKiB0ZW1wID0gdm0uanNWYWx1ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UuYWxsb2Nh
dGVOb25WaXJ0dWFsKAorICAgICAgICB2b2lkKiB0ZW1wID0gdm0uanNWYWx1ZUdpZ2FjYWdlQXV4
aWxpYXJ5U3BhY2UoKS5hbGxvY2F0ZU5vblZpcnR1YWwoCiAgICAgICAgICAgICB2bSwKICAgICAg
ICAgICAgIEJ1dHRlcmZseTo6dG90YWxTaXplKDAsIG91dE9mTGluZVN0b3JhZ2UsIHRydWUsIHZl
Y3Rvckxlbmd0aCAqIHNpemVvZihFbmNvZGVkSlNWYWx1ZSkpLAogICAgICAgICAgICAgbnVsbHB0
ciwgQWxsb2NhdGlvbkZhaWx1cmVNb2RlOjpSZXR1cm5OdWxsKTsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJQcm90b3R5cGUuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyUHJvdG90eXBlLmgJ
KHJldmlzaW9uIDI4NjA4MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJy
YXlCdWZmZXJQcm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zNyw3ICszNyw3IEBAIHB1
YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7
CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTQXJyYXlCdWZm
ZXJQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7
CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIHN0
YXRpYyBKU0FycmF5QnVmZmVyUHJvdG90eXBlKiBjcmVhdGUoVk0mLCBKU0dsb2JhbE9iamVjdCos
IFN0cnVjdHVyZSosIEFycmF5QnVmZmVyU2hhcmluZ01vZGUgPSBBcnJheUJ1ZmZlclNoYXJpbmdN
b2RlOjpEZWZhdWx0KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJy
YXlCdWZmZXJWaWV3LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0FycmF5QnVmZmVyVmlldy5jcHAJKHJldmlzaW9uIDI4NjA4MSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNjQsNyArNjQsNyBAQCBKU0FycmF5QnVmZmVyVmlldzo6Q29uc3RydWN0aW9uQ29udGV4
dDo6CiAgICAgICAgIC8vIEF0dGVtcHQgR0MgYWxsb2NhdGlvbi4KICAgICAgICAgdm9pZCogdGVt
cDsKICAgICAgICAgc2l6ZV90IHNpemUgPSBzaXplT2YobGVuZ3RoLCBlbGVtZW50U2l6ZSk7Ci0g
ICAgICAgIHRlbXAgPSB2bS5wcmltaXRpdmVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlLmFsbG9jYXRl
Tm9uVmlydHVhbCh2bSwgc2l6ZSwgbnVsbHB0ciwgQWxsb2NhdGlvbkZhaWx1cmVNb2RlOjpSZXR1
cm5OdWxsKTsKKyAgICAgICAgdGVtcCA9IHZtLnByaW1pdGl2ZUdpZ2FjYWdlQXV4aWxpYXJ5U3Bh
Y2UoKS5hbGxvY2F0ZU5vblZpcnR1YWwodm0sIHNpemUsIG51bGxwdHIsIEFsbG9jYXRpb25GYWls
dXJlTW9kZTo6UmV0dXJuTnVsbCk7CiAgICAgICAgIGlmICghdGVtcCkKICAgICAgICAgICAgIHJl
dHVybjsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCaWdJbnQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQmlnSW50LmNw
cAkocmV2aXNpb24gMjg2MDgxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNC
aWdJbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTcsNyArMTE3LDcgQEAgaW5saW5lIEpTQmln
SW50KiBKU0JpZ0ludDo6Y3JlYXRlV2l0aExlbgogICAgIH0KIAogICAgIEFTU0VSVChsZW5ndGgg
PD0gbWF4TGVuZ3RoKTsKLSAgICB2b2lkKiBkYXRhID0gdm0ucHJpbWl0aXZlR2lnYWNhZ2VBdXhp
bGlhcnlTcGFjZS5hbGxvY2F0ZU5vblZpcnR1YWwodm0sIGxlbmd0aCAqIHNpemVvZihEaWdpdCks
IG51bGxwdHIsIEFsbG9jYXRpb25GYWlsdXJlTW9kZTo6UmV0dXJuTnVsbCk7CisgICAgdm9pZCog
ZGF0YSA9IHZtLnByaW1pdGl2ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UoKS5hbGxvY2F0ZU5vblZp
cnR1YWwodm0sIGxlbmd0aCAqIHNpemVvZihEaWdpdCksIG51bGxwdHIsIEFsbG9jYXRpb25GYWls
dXJlTW9kZTo6UmV0dXJuTnVsbCk7CiAgICAgaWYgKFVOTElLRUxZKCFkYXRhKSkgewogICAgICAg
ICBpZiAobnVsbE9yR2xvYmFsT2JqZWN0Rm9yT09NKSB7CiAgICAgICAgICAgICBhdXRvIHNjb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0JpZ0ludC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTQmlnSW50LmgJKHJldmlzaW9uIDI4NjA4MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTQmlnSW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTU2LDcgKzU2LDcgQEAg
cHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlLCBTdWJzcGFjZUFjY2Vzcz4K
ICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7Ci0gICAg
ICAgIHJldHVybiAmdm0uYmlnSW50U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0uYmlnSW50U3Bh
Y2UoKTsKICAgICB9CiAKICAgICBlbnVtIGNsYXNzIEluaXRpYWxpemF0aW9uVHlwZSB7IE5vbmUs
IFdpdGhaZXJvIH07CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NhbGxl
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2FsbGVl
LmgJKHJldmlzaW9uIDI4NjA4MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
Q2FsbGVlLmgJKHdvcmtpbmcgY29weSkKQEAgLTUwLDcgKzUwLDcgQEAgcHVibGljOgogICAgIHRl
bXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlLCBTdWJzcGFjZUFjY2Vzcz4KICAgICBzdGF0aWMgSXNv
U3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7Ci0gICAgICAgIHJldHVybiAmdm0u
Y2FsbGVlU3BhY2U7CisgICAgICAgIHJldHVybiAmdm0uY2FsbGVlU3BhY2UoKTsKICAgICB9CiAK
ICAgICBzdGF0aWMgSlNDYWxsZWUqIGNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEpTU2NvcGUqIHNjb3BlKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNEYXRhVmlld1Byb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTRGF0YVZpZXdQcm90b3R5cGUuaAkocmV2aXNpb24gMjg2MDgxKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRhVmlld1Byb3RvdHlwZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMy0y
MDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAx
My0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpAQCAtMzgsNyArMzgsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIElzb1N1
YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJU
X0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU0RhdGFWaWV3UHJvdG90eXBlLCBCYXNlKTsKLSAgICAg
ICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWlu
T2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgSlNEYXRhVmlld1Byb3RvdHlwZSog
Y3JlYXRlKFZNJiwgU3RydWN0dXJlKik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0Z1bmN0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNGdW5jdGlvbi5oCShyZXZpc2lvbiAyODYwODEpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTY2LDcgKzY2LDcg
QEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlLCBTdWJzcGFjZUFjY2Vz
cz4KICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7Ci0g
ICAgICAgIHJldHVybiAmdm0uZnVuY3Rpb25TcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5mdW5j
dGlvblNwYWNlKCk7CiAgICAgfQogICAgIAogICAgIHR5cGVkZWYgSlNDYWxsZWUgQmFzZTsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3
UHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNHZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b3R5cGUuaAkocmV2aXNpb24gMjg2MDgxKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdQcm90
b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDEzLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCkBAIC0zOCw3ICszOCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMg
SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19B
U1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG90
eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAg
ICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgSlNH
ZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b3R5cGUqIGNyZWF0ZSgKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsTGV4aWNhbEVudmlyb25tZW50LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxMZXhpY2FsRW52aXJv
bm1lbnQuaAkocmV2aXNpb24gMjg2MDgxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNHbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzgsNyAr
MzgsNyBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUsIFN1YnNwYWNl
QWNjZXNzIG1vZGU+CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0p
CiAgICAgewotICAgICAgICByZXR1cm4gJnZtLmdsb2JhbExleGljYWxFbnZpcm9ubWVudFNwYWNl
OworICAgICAgICByZXR1cm4gJnZtLmdsb2JhbExleGljYWxFbnZpcm9ubWVudFNwYWNlKCk7CiAg
ICAgfQogCiAgICAgc3RhdGljIEpTR2xvYmFsTGV4aWNhbEVudmlyb25tZW50KiBjcmVhdGUoVk0m
IHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNTY29wZSogcGFyZW50U2NvcGUpCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ltbXV0YWJsZUJ1dHRlcmZseS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTSW1tdXRhYmxlQnV0dGVy
Zmx5LmgJKHJldmlzaW9uIDI4NjA4MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTSW1tdXRhYmxlQnV0dGVyZmx5LmgJKHdvcmtpbmcgY29weSkKQEAgLTE1Myw3ICsxNTMsNyBA
QCBwdWJsaWM6CiAgICAgc3RhdGljIENvbXBsZXRlU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2
bSkKICAgICB7CiAgICAgICAgIC8vIFdlIGFsbG9jYXRlIG91dCBvZiB0aGUgSlNWYWx1ZSBnaWdh
Y2FnZSBhcyBvdGhlciBjb2RlIGV4cGVjdHMgYWxsIGJ1dHRlcmZsaWVzIHRvIGxpdmUgdGhlcmUu
Ci0gICAgICAgIHJldHVybiAmdm0uaW1tdXRhYmxlQnV0dGVyZmx5SlNWYWx1ZUdpZ2FjYWdlQXV4
aWxpYXJ5U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0uaW1tdXRhYmxlQnV0dGVyZmx5SlNWYWx1
ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UoKTsKICAgICB9CiAKICAgICAvLyBPbmx5IGNhbGwgdGhp
cyBpZiB5b3UganVzdCBhbGxvY2F0ZWQgdGhpcyBidXR0ZXJmbHkuCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0xleGljYWxFbnZpcm9ubWVudC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTGV4aWNhbEVudmlyb25tZW50LmgJKHJl
dmlzaW9uIDI4NjA4MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTGV4aWNh
bEVudmlyb25tZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDcgKzQ0LDcgQEAgcHVibGljOgog
ICAgIHN0YXRpYyBDb21wbGV0ZVN1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewog
ICAgICAgICBzdGF0aWNfYXNzZXJ0KCFDZWxsVHlwZTo6bmVlZHNEZXN0cnVjdGlvbiwgIiIpOwot
ICAgICAgICByZXR1cm4gJnZtLnZhcmlhYmxlU2l6ZWRDZWxsU3BhY2U7CisgICAgICAgIHJldHVy
biAmdm0udmFyaWFibGVTaXplZENlbGxTcGFjZSgpOwogICAgIH0KIAogICAgIHVzaW5nIEJhc2Ug
PSBKU1N5bWJvbFRhYmxlT2JqZWN0OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNNb2R1bGVMb2FkZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU01vZHVsZUxvYWRlci5oCShyZXZpc2lvbiAyODYwODEpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZUxvYWRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC00
NCw3ICs0NCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9y
KFZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJB
QkxFKEpTTW9kdWxlTG9hZGVyLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVj
dFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAK
ICAgICBlbnVtIFN0YXR1cyB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U09OT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNPTk9iamVjdC5oCShyZXZpc2lvbiAyODYwODEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU09OT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTM4LDcgKzM4LDcgQEAgcHVi
bGljOgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsK
ICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNPTk9iamVjdCwg
QmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0
dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIEpTT05PYmpl
Y3QqIGNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3RJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3RJbmxpbmVzLmgJKHJldmlzaW9uIDI4
NjA4MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0SW5saW5lcy5o
CSh3b3JraW5nIGNvcHkpCkBAIC00MSw3ICs0MSw3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxU
eXBlLCBTdWJzcGFjZUFjY2UKIENvbXBsZXRlU3Vic3BhY2UqIEpTRmluYWxPYmplY3Q6OnN1YnNw
YWNlRm9yKFZNJiB2bSkKIHsKICAgICBzdGF0aWNfYXNzZXJ0KCFDZWxsVHlwZTo6bmVlZHNEZXN0
cnVjdGlvbik7Ci0gICAgcmV0dXJuICZ2bS5jZWxsU3BhY2U7CisgICAgcmV0dXJuICZ2bS5jZWxs
U3BhY2UoKTsKIH0KIAogLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1jcmVhdGVsaXN0
ZnJvbWFycmF5bGlrZQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9t
aXNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9t
aXNlLmgJKHJldmlzaW9uIDI4NjA4MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTUHJvbWlzZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw3ICszNyw3IEBAIHB1YmxpYzoKICAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vic3BhY2VBY2Nlc3MgbW9kZT4KICAgICBz
dGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7Ci0gICAgICAgIHJl
dHVybiAmdm0ucHJvbWlzZVNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnByb21pc2VTcGFjZSgp
OwogICAgIH0KIAogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBKU1Byb21pc2UqIGNyZWF0
ZShWTSYsIFN0cnVjdHVyZSopOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNQcm9taXNlUHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNQcm9taXNlUHJvdG90eXBlLmgJKHJldmlzaW9uIDI4NjA4MSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZVByb3RvdHlwZS5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE5IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDIxIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwpAQCAtMzgsNyArMzgsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBz
dWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJT
UEFDRV9TSEFSQUJMRShKU1Byb21pc2VQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4g
JnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFj
ZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBKU1Byb21pc2VQcm90b3R5cGUqIGNyZWF0ZShWTSYs
IEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUVudW1lcmF0b3IuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lRW51bWVyYXRvci5jcHAJ
KHJldmlzaW9uIDI4NjA4MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJv
cGVydHlOYW1lRW51bWVyYXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM4LDcgKzM4LDcgQEAg
SlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yKiBKU1Byb3BlcnR5TmFtZQogICAgIHVuc2lnbmVkIHBy
b3BlcnR5TmFtZXNCdWZmZXJTaXplSW5CeXRlcyA9IENoZWNrZWQ8dW5zaWduZWQ+KHByb3BlcnR5
TmFtZXNTaXplKSAqIHNpemVvZihXcml0ZUJhcnJpZXI8SlNTdHJpbmc+KTsKICAgICBXcml0ZUJh
cnJpZXI8SlNTdHJpbmc+KiBwcm9wZXJ0eU5hbWVzQnVmZmVyID0gbnVsbHB0cjsKICAgICBpZiAo
cHJvcGVydHlOYW1lc0J1ZmZlclNpemVJbkJ5dGVzKSB7Ci0gICAgICAgIHByb3BlcnR5TmFtZXNC
dWZmZXIgPSBzdGF0aWNfY2FzdDxXcml0ZUJhcnJpZXI8SlNTdHJpbmc+Kj4odm0uanNWYWx1ZUdp
Z2FjYWdlQXV4aWxpYXJ5U3BhY2UuYWxsb2NhdGVOb25WaXJ0dWFsKHZtLCBwcm9wZXJ0eU5hbWVz
QnVmZmVyU2l6ZUluQnl0ZXMsIG51bGxwdHIsIEFsbG9jYXRpb25GYWlsdXJlTW9kZTo6QXNzZXJ0
KSk7CisgICAgICAgIHByb3BlcnR5TmFtZXNCdWZmZXIgPSBzdGF0aWNfY2FzdDxXcml0ZUJhcnJp
ZXI8SlNTdHJpbmc+Kj4odm0uanNWYWx1ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UoKS5hbGxvY2F0
ZU5vblZpcnR1YWwodm0sIHByb3BlcnR5TmFtZXNCdWZmZXJTaXplSW5CeXRlcywgbnVsbHB0ciwg
QWxsb2NhdGlvbkZhaWx1cmVNb2RlOjpBc3NlcnQpKTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IHByb3BlcnR5TmFtZXNTaXplOyArK2kpCiAgICAgICAgICAgICBwcm9wZXJ0eU5h
bWVzQnVmZmVyW2ldLmNsZWFyKCk7CiAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yLmgJKHJldmlz
aW9uIDI4NjA4MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlO
YW1lRW51bWVyYXRvci5oCSh3b3JraW5nIGNvcHkpCkBAIC01MSw3ICs1MSw3IEBAIHB1YmxpYzoK
ICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vic3BhY2VBY2Nlc3MgbW9kZT4KICAg
ICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7Ci0gICAgICAg
IHJldHVybiAmdm0ucHJvcGVydHlOYW1lRW51bWVyYXRvclNwYWNlOworICAgICAgICByZXR1cm4g
JnZtLnByb3BlcnR5TmFtZUVudW1lcmF0b3JTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBK
U1Byb3BlcnR5TmFtZUVudW1lcmF0b3IqIGNyZWF0ZShWTSYsIFN0cnVjdHVyZSosIHVpbnQzMl90
LCB1aW50MzJfdCwgUHJvcGVydHlOYW1lQXJyYXkmJik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU1Byb3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNQcm94eS5oCShyZXZpc2lvbiAyODYwODEpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU1Byb3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTM4LDcgKzM4LDcg
QEAgcHVibGljOgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQog
ICAgIHsKICAgICAgICAgc3RhdGljX2Fzc2VydChzaXplb2YoQ2VsbFR5cGUpID09IHNpemVvZihK
U1Byb3h5KSk7Ci0gICAgICAgIHJldHVybiAmdm0uanNQcm94eVNwYWNlOworICAgICAgICByZXR1
cm4gJnZtLmpzUHJveHlTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBKU1Byb3h5KiBjcmVh
dGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNPYmplY3QqIHRhcmdldCkKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuaAkocmV2aXNpb24gMjg2MDgx
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuaAkod29ya2luZyBj
b3B5KQpAQCAtMTExLDcgKzExMSw3IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSwg
U3Vic3BhY2VBY2Nlc3M+CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYg
dm0pCiAgICAgewotICAgICAgICByZXR1cm4gJnZtLnN0cmluZ1NwYWNlOworICAgICAgICByZXR1
cm4gJnZtLnN0cmluZ1NwYWNlKCk7CiAgICAgfQogICAgIAogICAgIC8vIFdlIGVtcGxveSBvdmVy
ZmxvdyBjaGVja3MgaW4gbWFueSBwbGFjZXMgd2l0aCB0aGUgYXNzdW1wdGlvbiB0aGF0IE1heExl
bmd0aApAQCAtMjcwLDcgKzI3MCw3IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSwg
U3Vic3BhY2VBY2Nlc3M+CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYg
dm0pCiAgICAgewotICAgICAgICByZXR1cm4gJnZtLnJvcGVTdHJpbmdTcGFjZTsKKyAgICAgICAg
cmV0dXJuICZ2bS5yb3BlU3RyaW5nU3BhY2UoKTsKICAgICB9CiAKICAgICAvLyBXZSB1c2UgbG93
ZXIgM2JpdHMgb2YgZmliZXIwIGZvciBmbGFncy4gVGhlc2UgYml0cyBhcmUgdXNhYmxlIGR1ZSB0
byBhbGlnbm1lbnQsIGFuZCBpdCBpcyBPSyBldmVuIGluIDMyYml0IGFyY2hpdGVjdHVyZS4KSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZWRBcnJheVZpZXdQcm90b3R5
cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGVk
QXJyYXlWaWV3UHJvdG90eXBlLmgJKHJldmlzaW9uIDI4NjA4MSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTVHlwZWRBcnJheVZpZXdQcm90b3R5cGUuaAkod29ya2luZyBjb3B5
KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMjEgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC0zNyw3ICszNyw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNl
Rm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NI
QVJBQkxFKEpTVHlwZWRBcnJheVZpZXdQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4g
JnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFj
ZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBKU1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlKiBjcmVh
dGUoVk0mLCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSopOwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvTWFwSXRlcmF0b3JQcm90b3R5cGUuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXBJdGVyYXRvclByb3RvdHlwZS5oCShyZXZp
c2lvbiAyODYwODEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXBJdGVyYXRv
clByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw3ICszNyw3IEBAIHB1YmxpYzoKICAg
ICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAg
IFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKE1hcEl0ZXJhdG9yUHJvdG90eXBl
LCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICBy
ZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgTWFwSXRl
cmF0b3JQcm90b3R5cGUqIGNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIFN0cnVjdHVyZSogc3RydWN0dXJlKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvTWFwUHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvTWFwUHJvdG90eXBlLmgJKHJldmlzaW9uIDI4NjA4MSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL01hcFByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw3
ICszNyw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZN
JiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxF
KE1hcFByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFj
ZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAg
c3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVy
ZUZsYWdzIHwgSGFzU3RhdGljUHJvcGVydHlUYWJsZTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL01hdGhPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9NYXRoT2JqZWN0LmgJKHJldmlzaW9uIDI4NjA4MSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL01hdGhPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtMzIs
NyArMzIsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihW
TSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJM
RShNYXRoT2JqZWN0LCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNl
OworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBz
dGF0aWMgTWF0aE9iamVjdCogY3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9OYXRpdmVFcnJvclByb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUVycm9yUHJvdG90eXBlLmgJKHJldmlzaW9uIDI4NjA4
MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUVycm9yUHJvdG90eXBl
LmgJKHdvcmtpbmcgY29weSkKQEAgLTM0LDcgKzM0LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJ
c29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FT
U0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoTmF0aXZlRXJyb3JQcm90b3R5cGUsIEJhc2UpOwot
ICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0u
cGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0
ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUg
cHJvdG90eXBlKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRXhl
Y3V0YWJsZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05h
dGl2ZUV4ZWN1dGFibGUuaAkocmV2aXNpb24gMjg2MDgxKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvTmF0aXZlRXhlY3V0YWJsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEs
NSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOS0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOS0yMDIxIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDMsNyAr
NDMsNyBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUsIFN1YnNwYWNl
QWNjZXNzPgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAg
IHsKLSAgICAgICAgcmV0dXJuICZ2bS5uYXRpdmVFeGVjdXRhYmxlU3BhY2U7CisgICAgICAgIHJl
dHVybiAmdm0ubmF0aXZlRXhlY3V0YWJsZVNwYWNlKCk7CiAgICAgfQogCiAgICAgQ29kZUJsb2Nr
SGFzaCBoYXNoRm9yKENvZGVTcGVjaWFsaXphdGlvbktpbmQpIGNvbnN0OwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVyT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVyT2JqZWN0LmgJKHJldmlzaW9uIDI4NjA4
MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWJlck9iamVjdC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zNSw3ICszNSw3IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSwgU3Vic3BhY2VBY2Nlc3MgbW9kZT4KICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNl
Rm9yKFZNJiB2bSkKICAgICB7Ci0gICAgICAgIHJldHVybiAmdm0ubnVtYmVyT2JqZWN0U3BhY2U7
CisgICAgICAgIHJldHVybiAmdm0ubnVtYmVyT2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBz
dGF0aWMgTnVtYmVyT2JqZWN0KiBjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdFByb3RvdHlwZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdFByb3RvdHlw
ZS5oCShyZXZpc2lvbiAyODYwODEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9P
YmplY3RQcm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiAg
Q29weXJpZ2h0IChDKSAxOTk5LTIwMDAgSGFycmkgUG9ydGVuIChwb3J0ZW5Aa2RlLm9yZykKLSAq
ICBDb3B5cmlnaHQgKEMpIDIwMDgtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiAgQ29weXJpZ2h0IChDKSAyMDA4LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKICAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRp
c3RyaWJ1dGUgaXQgYW5kL29yCiAgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUg
R05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwpAQCAtMzMsNyArMzMsNyBAQCBwdWJsaWM6CiAgICAg
c3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewogICAgICAgICBT
VEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShPYmplY3RQcm90b3R5cGUsIEJhc2Up
OwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAm
dm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBPYmplY3RQcm90b3R5
cGUqIGNyZWF0ZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKik7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9ncmFtRXhlY3V0YWJsZS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb2dyYW1FeGVjdXRhYmxlLmgJKHJl
dmlzaW9uIDI4NjA4MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb2dyYW1F
eGVjdXRhYmxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTMwLDYgKzMwLDggQEAKIAogbmFtZXNwYWNl
IEpTQyB7CiAKK2NsYXNzIFVubGlua2VkUHJvZ3JhbUNvZGVCbG9jazsKKwogY2xhc3MgUHJvZ3Jh
bUV4ZWN1dGFibGUgZmluYWwgOiBwdWJsaWMgR2xvYmFsRXhlY3V0YWJsZSB7CiAgICAgZnJpZW5k
IGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKIHB1YmxpYzoKQEAgLTM5LDcgKzQxLDcgQEAg
cHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlLCBTdWJzcGFjZUFjY2Vzcz4K
ICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7Ci0gICAg
ICAgIHJldHVybiAmdm0ucHJvZ3JhbUV4ZWN1dGFibGVTcGFjZS5zcGFjZTsKKyAgICAgICAgcmV0
dXJuICZ2bS5wcm9ncmFtRXhlY3V0YWJsZVNwYWNlKCkuc3BhY2U7CiAgICAgfQogCiAgICAgc3Rh
dGljIFByb2dyYW1FeGVjdXRhYmxlKiBjcmVhdGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgY29uc3QgU291cmNlQ29kZSYgc291cmNlKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvUHJvcGVydHlUYWJsZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1Byb3BlcnR5VGFibGUuaAkocmV2aXNpb24gMjg2MDgxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlUYWJsZS5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xMjksNyArMTI5LDcgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBl
LCBTdWJzcGFjZUFjY2Vzcz4KICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZN
JiB2bSkKICAgICB7Ci0gICAgICAgIHJldHVybiAmdm0ucHJvcGVydHlUYWJsZVNwYWNlOworICAg
ICAgICByZXR1cm4gJnZtLnByb3BlcnR5VGFibGVTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRp
YyBjb25zdGV4cHIgYm9vbCBuZWVkc0Rlc3RydWN0aW9uID0gdHJ1ZTsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZmxlY3RPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWZsZWN0T2JqZWN0LmgJKHJldmlzaW9uIDI4NjA4
MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZmxlY3RPYmplY3QuaAkod29y
a2luZyBjb3B5KQpAQCAtMzgsNyArMzgsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIElzb1N1YnNw
YWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lT
T19TVUJTUEFDRV9TSEFSQUJMRShSZWZsZWN0T2JqZWN0LCBCYXNlKTsKLSAgICAgICAgcmV0dXJu
ICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3Bh
Y2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgUmVmbGVjdE9iamVjdCogY3JlYXRlKFZNJiB2bSwg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHAuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHAuaAkocmV2aXNpb24gMjg2MDgxKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwLmgJKHdvcmtpbmcgY29weSkK
QEAgLTQ5LDcgKzQ5LDcgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBl
LCBTdWJzcGFjZUFjY2VzcyBtb2RlPgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VG
b3IoVk0mIHZtKQogICAgIHsKLSAgICAgICAgcmV0dXJuICZ2bS5yZWdFeHBTcGFjZTsKKyAgICAg
ICAgcmV0dXJuICZ2bS5yZWdFeHBTcGFjZSgpOwogICAgIH0KIAogICAgIEpTX0VYUE9SVF9QUklW
QVRFIHN0YXRpYyBSZWdFeHAqIGNyZWF0ZShWTSYsIGNvbnN0IFN0cmluZyYgcGF0dGVybiwgT3B0
aW9uU2V0PFlhcnI6OkZsYWdzPik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9SZWdFeHBPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9SZWdFeHBPYmplY3QuaAkocmV2aXNpb24gMjg2MDgxKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvUmVnRXhwT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTM2LDcgKzM2
LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZt
KQogICAgIHsKICAgICAgICAgc3RhdGljX2Fzc2VydCghQ2VsbFR5cGU6Om5lZWRzRGVzdHJ1Y3Rp
b24sICIiKTsKLSAgICAgICAgcmV0dXJuICZ2bS5yZWdFeHBPYmplY3RTcGFjZTsKKyAgICAgICAg
cmV0dXJuICZ2bS5yZWdFeHBPYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBjb25z
dGV4cHIgdWludHB0cl90IGxhc3RJbmRleElzTm90V3JpdGFibGVGbGFnID0gMGIwMTsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cFByb3RvdHlwZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cFByb3RvdHlwZS5oCShy
ZXZpc2lvbiAyODYwODEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBQ
cm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzQsNyArMzQsNyBAQCBwdWJsaWM6CiAgICAg
c3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewogICAgICAgICBT
VEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShSZWdFeHBQcm90b3R5cGUsIEJhc2Up
OwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAm
dm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBSZWdFeHBQcm90b3R5
cGUqIGNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVy
ZSogc3RydWN0dXJlKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhw
U3RyaW5nSXRlcmF0b3JQcm90b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9SZWdFeHBTdHJpbmdJdGVyYXRvclByb3RvdHlwZS5oCShyZXZpc2lvbiAy
ODYwODEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBTdHJpbmdJdGVy
YXRvclByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw3ICszOSw3IEBAIHB1YmxpYzoK
ICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAg
ICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKFJlZ0V4cFN0cmluZ0l0ZXJh
dG9yUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNl
OworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBz
dGF0aWMgUmVnRXhwU3RyaW5nSXRlcmF0b3JQcm90b3R5cGUqIGNyZWF0ZShWTSYgdm0sIEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlKQpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2NvcGVkQXJndW1lbnRzLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TY29wZWRBcmd1bWVudHMuY3BwCShy
ZXZpc2lvbiAyODYwODEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TY29wZWRB
cmd1bWVudHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NSw3ICs1NSw3IEBAIFNjb3BlZEFyZ3Vt
ZW50cyogU2NvcGVkQXJndW1lbnRzOjpjcmVhdGUKICAgICBXcml0ZUJhcnJpZXI8VW5rbm93bj4q
IHN0b3JhZ2UgPSBudWxscHRyOwogICAgIGlmICh0b3RhbExlbmd0aCA+IHRhYmxlLT5sZW5ndGgo
KSkgewogICAgICAgICBDaGVja2VkPHVuc2lnbmVkPiBvdmVyZmxvd0xlbmd0aCA9IHRvdGFsTGVu
Z3RoIC0gdGFibGUtPmxlbmd0aCgpOwotICAgICAgICBzdG9yYWdlID0gc3RhdGljX2Nhc3Q8V3Jp
dGVCYXJyaWVyPFVua25vd24+Kj4odm0uanNWYWx1ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UuYWxs
b2NhdGVOb25WaXJ0dWFsKHZtLCBvdmVyZmxvd0xlbmd0aCAqIHNpemVvZihXcml0ZUJhcnJpZXI8
VW5rbm93bj4pLCBudWxscHRyLCBBbGxvY2F0aW9uRmFpbHVyZU1vZGU6OkFzc2VydCkpOworICAg
ICAgICBzdG9yYWdlID0gc3RhdGljX2Nhc3Q8V3JpdGVCYXJyaWVyPFVua25vd24+Kj4odm0uanNW
YWx1ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UoKS5hbGxvY2F0ZU5vblZpcnR1YWwodm0sIG92ZXJm
bG93TGVuZ3RoICogc2l6ZW9mKFdyaXRlQmFycmllcjxVbmtub3duPiksIG51bGxwdHIsIEFsbG9j
YXRpb25GYWlsdXJlTW9kZTo6QXNzZXJ0KSk7CiAgICAgfQogCiAgICAgU2NvcGVkQXJndW1lbnRz
KiByZXN1bHQgPSBuZXcgKApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2Nv
cGVkQXJndW1lbnRzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU2NvcGVkQXJndW1lbnRzLmgJKHJldmlzaW9uIDI4NjA4MSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1Njb3BlZEFyZ3VtZW50cy5oCSh3b3JraW5nIGNvcHkpCkBAIC00Nyw3
ICs0Nyw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZN
JiB2bSkKICAgICB7CiAgICAgICAgIHN0YXRpY19hc3NlcnQoIUNlbGxUeXBlOjpuZWVkc0Rlc3Ry
dWN0aW9uLCAiIik7Ci0gICAgICAgIHJldHVybiAmdm0uc2NvcGVkQXJndW1lbnRzU3BhY2U7Cisg
ICAgICAgIHJldHVybiAmdm0uc2NvcGVkQXJndW1lbnRzU3BhY2UoKTsKICAgICB9CiAKICAgICAv
LyBDcmVhdGVzIGFuIGFyZ3VtZW50cyBvYmplY3QgYnV0IGxlYXZlcyBpdCB1bmluaXRpYWxpemVk
LiBUaGlzIGlzIGRhbmdlcm91cyBpZiB3ZSBHQyByaWdodApJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU2V0SXRlcmF0b3JQcm90b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TZXRJdGVyYXRvclByb3RvdHlwZS5oCShyZXZpc2lv
biAyODYwODEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TZXRJdGVyYXRvclBy
b3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw3ICszNyw3IEBAIHB1YmxpYzoKICAgICBz
dGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAgIFNU
QVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKFNldEl0ZXJhdG9yUHJvdG90eXBlLCBC
YXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1
cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgU2V0SXRlcmF0
b3JQcm90b3R5cGUqIGNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IFN0cnVjdHVyZSogc3RydWN0dXJlKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU2V0UHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvU2V0UHJvdG90eXBlLmgJKHJldmlzaW9uIDI4NjA4MSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1NldFByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw3ICsz
Nyw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2
bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKFNl
dFByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsK
KyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAgc3Rh
dGljIGNvbnN0ZXhwciB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZs
YWdzIHwgSGFzU3RhdGljUHJvcGVydHlUYWJsZTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1NoYWRvd1JlYWxtUHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvU2hhZG93UmVhbG1Qcm90b3R5cGUuaAkocmV2aXNpb24gMjg2
MDgxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2hhZG93UmVhbG1Qcm90b3R5
cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzksNyArMzksNyBAQCBwdWJsaWM6CiAgICAgc3RhdGlj
IElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNf
QVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShTaGFkb3dSZWFsbVByb3RvdHlwZSwgQmFzZSk7
Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2
bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIFNoYWRvd1JlYWxtUHJv
dG90eXBlKiBjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NwYXJzZUFycmF5VmFsdWVNYXAuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TcGFyc2VBcnJheVZhbHVlTWFwLmgJ
KHJldmlzaW9uIDI4NjA4MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NwYXJz
ZUFycmF5VmFsdWVNYXAuaAkod29ya2luZyBjb3B5KQpAQCAtMTEwLDcgKzExMCw3IEBAIHB1Ymxp
YzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vic3BhY2VBY2Nlc3M+CiAgICAg
c3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewotICAgICAgICBy
ZXR1cm4gJnZtLnNwYXJzZUFycmF5VmFsdWVNYXBTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5z
cGFyc2VBcnJheVZhbHVlTWFwU3BhY2UoKTsKICAgICB9CiAgICAgCiAgICAgc3RhdGljIFN0cnVj
dHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlIHByb3Rv
dHlwZSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdJdGVyYXRv
clByb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1N0cmluZ0l0ZXJhdG9yUHJvdG90eXBlLmgJKHJldmlzaW9uIDI4NjA4MSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ0l0ZXJhdG9yUHJvdG90eXBlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTM5LDcgKzM5LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSog
c3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VC
U1BBQ0VfU0hBUkFCTEUoU3RyaW5nSXRlcmF0b3JQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICBy
ZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmpl
Y3RTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBTdHJpbmdJdGVyYXRvclByb3RvdHlwZSog
Y3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdPYmpl
Y3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdP
YmplY3QuaAkocmV2aXNpb24gMjg2MDgxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU3RyaW5nT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTMzLDcgKzMzLDcgQEAgcHVibGlj
OgogICAgIHRlbXBsYXRlPHR5cGVuYW1lLCBTdWJzcGFjZUFjY2VzcyBtb2RlPgogICAgIHN0YXRp
YyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKLSAgICAgICAgcmV0dXJu
ICZ2bS5zdHJpbmdPYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5zdHJpbmdPYmplY3RT
cGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBTdHJpbmdPYmplY3QqIGNyZWF0ZShWTSYgdm0s
IFN0cnVjdHVyZSogc3RydWN0dXJlKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU3RydWN0dXJlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU3RydWN0dXJlLmgJKHJldmlzaW9uIDI4NjA4MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1N0cnVjdHVyZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjgsNyArMTI4LDcgQEAg
cHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlLCBTdWJzcGFjZUFjY2Vzcz4K
ICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7Ci0gICAg
ICAgIHJldHVybiAmdm0uc3RydWN0dXJlU3BhY2U7CisgICAgICAgIHJldHVybiAmdm0uc3RydWN0
dXJlU3BhY2UoKTsKICAgICB9CiAKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBp
c1ZhbGlkUHJvdG90eXBlKEpTVmFsdWUpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvU3RydWN0dXJlQ2hhaW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1N0cnVjdHVyZUNoYWluLmNwcAkocmV2aXNpb24gMjg2MDgxKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlQ2hhaW4uY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC00OCw3ICs0OCw3IEBAIFN0cnVjdHVyZUNoYWluKiBTdHJ1Y3R1cmVDaGFpbjo6Y3Jl
YXRlKFYKICAgICAgICAgKytzaXplOwogICAgICsrc2l6ZTsgLy8gU2VudGluZWwgbnVsbHB0ci4K
ICAgICBzaXplX3QgYnl0ZXMgPSBDaGVja2VkPHNpemVfdD4oc2l6ZSkgKiBzaXplb2YoU3RydWN0
dXJlSUQpOwotICAgIFN0cnVjdHVyZUlEKiB2ZWN0b3IgPSBzdGF0aWNfY2FzdDxTdHJ1Y3R1cmVJ
RCo+KHZtLmpzVmFsdWVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlLmFsbG9jYXRlTm9uVmlydHVhbCh2
bSwgYnl0ZXMsIG51bGxwdHIsIEFsbG9jYXRpb25GYWlsdXJlTW9kZTo6QXNzZXJ0KSk7CisgICAg
U3RydWN0dXJlSUQqIHZlY3RvciA9IHN0YXRpY19jYXN0PFN0cnVjdHVyZUlEKj4odm0uanNWYWx1
ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UoKS5hbGxvY2F0ZU5vblZpcnR1YWwodm0sIGJ5dGVzLCBu
dWxscHRyLCBBbGxvY2F0aW9uRmFpbHVyZU1vZGU6OkFzc2VydCkpOwogICAgIG1lbXNldCh2ZWN0
b3IsIDAsIGJ5dGVzKTsKICAgICBTdHJ1Y3R1cmVDaGFpbiogY2hhaW4gPSBuZXcgKE5vdE51bGws
IGFsbG9jYXRlQ2VsbDxTdHJ1Y3R1cmVDaGFpbj4odm0pKSBTdHJ1Y3R1cmVDaGFpbih2bSwgdm0u
c3RydWN0dXJlQ2hhaW5TdHJ1Y3R1cmUuZ2V0KCksIHZlY3Rvcik7CiAgICAgY2hhaW4tPmZpbmlz
aENyZWF0aW9uKHZtLCBoZWFkKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1N0cnVjdHVyZUNoYWluLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvU3RydWN0dXJlQ2hhaW4uaAkocmV2aXNpb24gMjg2MDgxKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlQ2hhaW4uaAkod29ya2luZyBjb3B5KQpAQCAtNDYs
NyArNDYsNyBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUsIFN1YnNw
YWNlQWNjZXNzPgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQog
ICAgIHsKLSAgICAgICAgcmV0dXJuICZ2bS5zdHJ1Y3R1cmVDaGFpblNwYWNlOworICAgICAgICBy
ZXR1cm4gJnZtLnN0cnVjdHVyZUNoYWluU3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgU3Ry
dWN0dXJlQ2hhaW4qIGNyZWF0ZShWTSYsIEpTT2JqZWN0Kik7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVSYXJlRGF0YS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZVJhcmVEYXRhLmgJKHJldmlzaW9uIDI4
NjA4MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZVJhcmVEYXRh
LmgJKHdvcmtpbmcgY29weSkKQEAgLTY2LDcgKzY2LDcgQEAgcHVibGljOgogICAgIHRlbXBsYXRl
PHR5cGVuYW1lIENlbGxUeXBlLCBTdWJzcGFjZUFjY2Vzcz4KICAgICBzdGF0aWMgSXNvU3Vic3Bh
Y2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7Ci0gICAgICAgIHJldHVybiAmdm0uc3RydWN0
dXJlUmFyZURhdGFTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5zdHJ1Y3R1cmVSYXJlRGF0YVNw
YWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIFN0cnVjdHVyZVJhcmVEYXRhKiBjcmVhdGUoVk0m
LCBTdHJ1Y3R1cmUqKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJv
bFByb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1N5bWJvbFByb3RvdHlwZS5oCShyZXZpc2lvbiAyODYwODEpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TeW1ib2xQcm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtNDEsNyAr
NDEsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYg
dm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShT
eW1ib2xQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3Bh
Y2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAg
IHN0YXRpYyBTeW1ib2xQcm90b3R5cGUqIGNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlKQpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU3ltYm9sVGFibGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9TeW1ib2xUYWJsZS5oCShyZXZpc2lvbiAyODYwODEpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xUYWJsZS5oCSh3b3JraW5nIGNvcHkpCkBA
IC00NTYsNyArNDU2LDcgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBl
LCBTdWJzcGFjZUFjY2Vzcz4KICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZN
JiB2bSkKICAgICB7Ci0gICAgICAgIHJldHVybiAmdm0uc3ltYm9sVGFibGVTcGFjZTsKKyAgICAg
ICAgcmV0dXJuICZ2bS5zeW1ib2xUYWJsZVNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIFN5
bWJvbFRhYmxlKiBjcmVhdGUoVk0mIHZtKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvVGVtcG9yYWxDYWxlbmRhclByb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsQ2FsZW5kYXJQcm90b3R5cGUuaAkocmV2aXNp
b24gMjg2MDgxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxDYWxl
bmRhclByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw3ICszOCw3IEBAIHB1YmxpYzoK
ICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAg
ICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKFRlbXBvcmFsQ2FsZW5kYXJQ
cm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7Cisg
ICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRp
YyBUZW1wb3JhbENhbGVuZGFyUHJvdG90eXBlKiBjcmVhdGUoVk0mLCBKU0dsb2JhbE9iamVjdCos
IFN0cnVjdHVyZSopOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9y
YWxEdXJhdGlvblByb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1RlbXBvcmFsRHVyYXRpb25Qcm90b3R5cGUuaAkocmV2aXNpb24gMjg2MDgxKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxEdXJhdGlvblByb3RvdHlw
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykg
MjAyMSBTb255IEludGVyYWN0aXZlIEVudGVydGFpbm1lbnQgSW5jLgorICogQ29weXJpZ2h0IChD
KSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpAQCAtMzgsNyArMzksNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIElzb1N1
YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJU
X0lTT19TVUJTUEFDRV9TSEFSQUJMRShUZW1wb3JhbER1cmF0aW9uUHJvdG90eXBlLCBCYXNlKTsK
LSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZt
LnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgVGVtcG9yYWxEdXJhdGlv
blByb3RvdHlwZSogY3JlYXRlKFZNJiwgU3RydWN0dXJlKik7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9UZW1wb3JhbEluc3RhbnRQcm90b3R5cGUuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbEluc3RhbnRQcm90b3R5cGUu
aAkocmV2aXNpb24gMjg2MDgxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVt
cG9yYWxJbnN0YW50UHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw2IEBACiAv
KgogICogQ29weXJpZ2h0IChDKSAyMDIxIElnYWxpYSBTLkwuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCkBAIC0zOCw3ICszOSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vic3Bh
Y2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNP
X1NVQlNQQUNFX1NIQVJBQkxFKFRlbXBvcmFsSW5zdGFudFByb3RvdHlwZSwgQmFzZSk7Ci0gICAg
ICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFp
bk9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIFRlbXBvcmFsSW5zdGFudFByb3Rv
dHlwZSogY3JlYXRlKFZNJiwgU3RydWN0dXJlKik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9UZW1wb3JhbE5vdy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1RlbXBvcmFsTm93LmgJKHJldmlzaW9uIDI4NjA4MSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsTm93LmgJKHdvcmtpbmcgY29weSkKQEAgLTEs
NSArMSw2IEBACiAvKgogICogIENvcHlyaWdodCAoQykgMjAyMSBJZ2FsaWEsIFMuTC4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqICBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91
IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJt
cyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwpAQCAtMzIsNyArMzMsNyBAQCBwdWJs
aWM6CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewog
ICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShUZW1wb3JhbE5vdywg
QmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0
dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIFRlbXBvcmFs
Tm93KiBjcmVhdGUoVk0mLCBTdHJ1Y3R1cmUqKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1RlbXBvcmFsT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxPYmplY3QuaAkocmV2aXNpb24gMjg2MDgxKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxPYmplY3QuaAkod29ya2luZyBjb3B5
KQpAQCAtMSw2ICsxLDcgQEAKIC8qCiAgKiAgQ29weXJpZ2h0IChDKSAyMDIxIElnYWxpYSwgUy5M
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogIENvcHlyaWdodCAoQykgMjAyMSBTb255IEludGVy
YWN0aXZlIEVudGVydGFpbm1lbnQgSW5jLgorICogIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNv
ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqICBtb2RpZnkgaXQgdW5k
ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCkBAIC02NCw3ICs2
NSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2
bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKFRl
bXBvcmFsT2JqZWN0LCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNl
OworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBz
dGF0aWMgVGVtcG9yYWxPYmplY3QqIGNyZWF0ZShWTSYsIFN0cnVjdHVyZSopOwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxQbGFpblRpbWVQcm90b3R5cGUuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbFBsYWlu
VGltZVByb3RvdHlwZS5oCShyZXZpc2lvbiAyODYwODEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9UZW1wb3JhbFBsYWluVGltZVByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zOCw3ICszOCw3IEBAIHB1YmxpYzoKICAgICBz
dGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAgIFNU
QVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKFRlbXBvcmFsUGxhaW5UaW1lUHJvdG90
eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAg
ICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgVGVt
cG9yYWxQbGFpblRpbWVQcm90b3R5cGUqIGNyZWF0ZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgU3Ry
dWN0dXJlKik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbFRp
bWVab25lUHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvVGVtcG9yYWxUaW1lWm9uZVByb3RvdHlwZS5oCShyZXZpc2lvbiAyODYwODEpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbFRpbWVab25lUHJvdG90eXBlLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTM4LDcgKzM4LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJc29T
dWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VS
VF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoVGVtcG9yYWxUaW1lWm9uZVByb3RvdHlwZSwgQmFzZSk7
Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2
bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIFRlbXBvcmFsVGltZVpv
bmVQcm90b3R5cGUqIGNyZWF0ZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKik7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UaHJvd1Njb3BlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UaHJvd1Njb3BlLmNwcAkocmV2
aXNpb24gMjg2MDgxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGhyb3dTY29w
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChD
KSAyMDE2LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDE2LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiRXhjZXB0
aW9uLmgiCiAjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKICNpbmNsdWRlICJWTS5oIgor
I2luY2x1ZGUgPHd0Zi9TdGFja1RyYWNlLmg+CiAKIG5hbWVzcGFjZSBKU0MgewogICAgIApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAkocmV2aXNpb24gMjg2MDgxKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0z
MiwyMSArMzIsMTUgQEAKICNpbmNsdWRlICJBY2Nlc3NDYXNlLmgiCiAjaW5jbHVkZSAiQWdncmVn
YXRlRXJyb3IuaCIKICNpbmNsdWRlICJBcmdMaXN0LmgiCi0jaW5jbHVkZSAiQmlnSW50T2JqZWN0
LmgiCi0jaW5jbHVkZSAiQm9vbGVhbk9iamVjdC5oIgotI2luY2x1ZGUgIkJyYW5kZWRTdHJ1Y3R1
cmUuaCIKICNpbmNsdWRlICJCdWlsdGluRXhlY3V0YWJsZXMuaCIKICNpbmNsdWRlICJCeXRlY29k
ZUludHJpbnNpY1JlZ2lzdHJ5LmgiCiAjaW5jbHVkZSAiQ2hlY2twb2ludE9TUkV4aXRTaWRlU3Rh
dGUuaCIKLSNpbmNsdWRlICJDbG9uZWRBcmd1bWVudHMuaCIKICNpbmNsdWRlICJDb2RlQmxvY2su
aCIKICNpbmNsdWRlICJDb2RlQ2FjaGUuaCIKICNpbmNsdWRlICJDb21tb25JZGVudGlmaWVycy5o
IgogI2luY2x1ZGUgIkNvbnRyb2xGbG93UHJvZmlsZXIuaCIKICNpbmNsdWRlICJDdXN0b21HZXR0
ZXJTZXR0ZXIuaCIKICNpbmNsdWRlICJET01BdHRyaWJ1dGVHZXR0ZXJTZXR0ZXIuaCIKLSNpbmNs
dWRlICJEYXRlSW5zdGFuY2UuaCIKLSNpbmNsdWRlICJEZWJ1Z2dlclNjb3BlLmgiCiAjaW5jbHVk
ZSAiRGVmZXJyZWRXb3JrVGltZXIuaCIKICNpbmNsdWRlICJEaXNhc3NlbWJsZXIuaCIKICNpbmNs
dWRlICJEb3VibGVQcmVkaWN0aW9uRnV6emVyQWdlbnQuaCIKQEAgLTU1LDcgKzQ5LDYgQEAKICNp
bmNsdWRlICJFeGNlcHRpb24uaCIKICNpbmNsdWRlICJFeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdl
LmgiCiAjaW5jbHVkZSAiRlRMVGh1bmtzLmgiCi0jaW5jbHVkZSAiRmFzdE1hbGxvY0FsaWduZWRN
ZW1vcnlBbGxvY2F0b3IuaCIKICNpbmNsdWRlICJGaWxlQmFzZWRGdXp6ZXJBZ2VudC5oIgogI2lu
Y2x1ZGUgIkZ1bmN0aW9uQ29kZUJsb2NrLmgiCiAjaW5jbHVkZSAiRnVuY3Rpb25FeGVjdXRhYmxl
LmgiCkBAIC02Niw3NyArNTksMjUgQEAKICNpbmNsdWRlICJIZWFwUHJvZmlsZXIuaCIKICNpbmNs
dWRlICJJbnRlcnByZXRlci5oIgogI2luY2x1ZGUgIkludGxDYWNoZS5oIgotI2luY2x1ZGUgIklu
dGxDb2xsYXRvci5oIgotI2luY2x1ZGUgIkludGxEYXRlVGltZUZvcm1hdC5oIgotI2luY2x1ZGUg
IkludGxEaXNwbGF5TmFtZXMuaCIKLSNpbmNsdWRlICJJbnRsTGlzdEZvcm1hdC5oIgotI2luY2x1
ZGUgIkludGxMb2NhbGUuaCIKLSNpbmNsdWRlICJJbnRsTnVtYmVyRm9ybWF0LmgiCi0jaW5jbHVk
ZSAiSW50bFBsdXJhbFJ1bGVzLmgiCi0jaW5jbHVkZSAiSW50bFJlbGF0aXZlVGltZUZvcm1hdC5o
IgotI2luY2x1ZGUgIkludGxTZWdtZW50SXRlcmF0b3IuaCIKLSNpbmNsdWRlICJJbnRsU2VnbWVu
dGVyLmgiCi0jaW5jbHVkZSAiSW50bFNlZ21lbnRzLmgiCi0jaW5jbHVkZSAiSXNvSGVhcENlbGxU
eXBlLmgiCi0jaW5jbHVkZSAiSXNvSW5saW5lZEhlYXBDZWxsVHlwZS5oIgogI2luY2x1ZGUgIkpJ
VENvZGUuaCIKICNpbmNsdWRlICJKSVRPcGVyYXRpb25MaXN0LmgiCiAjaW5jbHVkZSAiSklUU2l6
ZVN0YXRpc3RpY3MuaCIKICNpbmNsdWRlICJKSVRUaHVua3MuaCIKICNpbmNsdWRlICJKSVRXb3Jr
bGlzdC5oIgotI2luY2x1ZGUgIkpTQVBJR2xvYmFsT2JqZWN0LmgiCiAjaW5jbHVkZSAiSlNBUElW
YWx1ZVdyYXBwZXIuaCIKLSNpbmNsdWRlICJKU0FQSVdyYXBwZXJPYmplY3QuaCIKLSNpbmNsdWRl
ICJKU0FycmF5LmgiCi0jaW5jbHVkZSAiSlNBcnJheUJ1ZmZlci5oIgotI2luY2x1ZGUgIkpTQXJy
YXlJdGVyYXRvci5oIgotI2luY2x1ZGUgIkpTQXN5bmNHZW5lcmF0b3IuaCIKICNpbmNsdWRlICJK
U0JpZ0ludC5oIgotI2luY2x1ZGUgIkpTQm91bmRGdW5jdGlvbi5oIgotI2luY2x1ZGUgIkpTQ2Fs
bGJhY2tDb25zdHJ1Y3Rvci5oIgotI2luY2x1ZGUgIkpTQ2FsbGJhY2tGdW5jdGlvbi5oIgotI2lu
Y2x1ZGUgIkpTQ2FsbGJhY2tPYmplY3QuaCIKLSNpbmNsdWRlICJKU0NhbGxlZS5oIgotI2luY2x1
ZGUgIkpTQ3VzdG9tR2V0dGVyRnVuY3Rpb24uaCIKLSNpbmNsdWRlICJKU0N1c3RvbVNldHRlckZ1
bmN0aW9uLmgiCi0jaW5jbHVkZSAiSlNEZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuaCIK
LSNpbmNsdWRlICJKU0ZpbmFsaXphdGlvblJlZ2lzdHJ5LmgiCi0jaW5jbHVkZSAiSlNGdW5jdGlv
bi5oIgotI2luY2x1ZGUgIkpTR2xvYmFsTGV4aWNhbEVudmlyb25tZW50LmgiCiAjaW5jbHVkZSAi
SlNHbG9iYWxPYmplY3QuaCIKICNpbmNsdWRlICJKU0ltbXV0YWJsZUJ1dHRlcmZseS5oIgotI2lu
Y2x1ZGUgIkpTSW5qZWN0ZWRTY3JpcHRIb3N0LmgiCi0jaW5jbHVkZSAiSlNKYXZhU2NyaXB0Q2Fs
bEZyYW1lLmgiCiAjaW5jbHVkZSAiSlNMb2NrLmgiCiAjaW5jbHVkZSAiSlNNYXAuaCIKLSNpbmNs
dWRlICJKU01hcEl0ZXJhdG9yLmgiCi0jaW5jbHVkZSAiSlNNb2R1bGVOYW1lc3BhY2VPYmplY3Qu
aCIKLSNpbmNsdWRlICJKU01vZHVsZVJlY29yZC5oIgotI2luY2x1ZGUgIkpTTmF0aXZlU3RkRnVu
Y3Rpb24uaCIKICNpbmNsdWRlICJKU1Byb21pc2UuaCIKICNpbmNsdWRlICJKU1Byb3BlcnR5TmFt
ZUVudW1lcmF0b3IuaCIKLSNpbmNsdWRlICJKU1Byb3h5LmgiCiAjaW5jbHVkZSAiSlNTY3JpcHRG
ZXRjaFBhcmFtZXRlcnMuaCIKICNpbmNsdWRlICJKU1NjcmlwdEZldGNoZXIuaCIKICNpbmNsdWRl
ICJKU1NldC5oIgotI2luY2x1ZGUgIkpTU2V0SXRlcmF0b3IuaCIKICNpbmNsdWRlICJKU1NvdXJj
ZUNvZGUuaCIKLSNpbmNsdWRlICJKU1N0cmluZ0l0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiSlNUZW1w
bGF0ZU9iamVjdERlc2NyaXB0b3IuaCIKLSNpbmNsdWRlICJKU1RvV2FzbUlDQ2FsbGVlLmgiCi0j
aW5jbHVkZSAiSlNUeXBlZEFycmF5cy5oIgotI2luY2x1ZGUgIkpTV2Vha01hcC5oIgotI2luY2x1
ZGUgIkpTV2Vha09iamVjdFJlZi5oIgotI2luY2x1ZGUgIkpTV2Vha1NldC5oIgogI2luY2x1ZGUg
IkpTV2ViQXNzZW1ibHlDb2RlQmxvY2suaCIKLSNpbmNsdWRlICJKU1dlYkFzc2VtYmx5RXhjZXB0
aW9uLmgiCi0jaW5jbHVkZSAiSlNXZWJBc3NlbWJseUdsb2JhbC5oIgotI2luY2x1ZGUgIkpTV2Vi
QXNzZW1ibHlJbnN0YW5jZS5oIgotI2luY2x1ZGUgIkpTV2ViQXNzZW1ibHlNZW1vcnkuaCIKLSNp
bmNsdWRlICJKU1dlYkFzc2VtYmx5TW9kdWxlLmgiCi0jaW5jbHVkZSAiSlNXZWJBc3NlbWJseVRh
YmxlLmgiCi0jaW5jbHVkZSAiSlNXZWJBc3NlbWJseVRhZy5oIgotI2luY2x1ZGUgIkpTV2l0aFNj
b3BlLmgiCiAjaW5jbHVkZSAiTExJbnREYXRhLmgiCiAjaW5jbHVkZSAiTExJbnRFeGNlcHRpb25z
LmgiCiAjaW5jbHVkZSAiTWFya2VkQmxvY2tJbmxpbmVzLmgiCkBAIC0xNTEsMjcgKzkyLDE2IEBA
CiAjaW5jbHVkZSAiUHJvZ3JhbUNvZGVCbG9jay5oIgogI2luY2x1ZGUgIlByb2dyYW1FeGVjdXRh
YmxlLmgiCiAjaW5jbHVkZSAiUHJvcGVydHlUYWJsZS5oIgotI2luY2x1ZGUgIlByb3h5UmV2b2tl
LmgiCiAjaW5jbHVkZSAiUmFuZG9taXppbmdGdXp6ZXJBZ2VudC5oIgogI2luY2x1ZGUgIlJlZ0V4
cENhY2hlLmgiCi0jaW5jbHVkZSAiUmVnRXhwT2JqZWN0LmgiCiAjaW5jbHVkZSAiU2FtcGxpbmdQ
cm9maWxlci5oIgogI2luY2x1ZGUgIlNjb3BlZEFyZ3VtZW50cy5oIgogI2luY2x1ZGUgIlNoYWRv
d0NoaWNrZW4uaCIKLSNpbmNsdWRlICJTaGFkb3dSZWFsbU9iamVjdC5oIgogI2luY2x1ZGUgIlNp
bXBsZVR5cGVkQXJyYXlDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiU291cmNlUHJvdmlkZXJDYWNo
ZS5oIgotI2luY2x1ZGUgIlN0cmljdEV2YWxBY3RpdmF0aW9uLmgiCi0jaW5jbHVkZSAiU3RyaW5n
T2JqZWN0LmgiCiAjaW5jbHVkZSAiU3Ryb25nSW5saW5lcy5oIgogI2luY2x1ZGUgIlN0cnVjdHVy
ZUNoYWluLmgiCiAjaW5jbHVkZSAiU3RydWN0dXJlSW5saW5lcy5oIgotI2luY2x1ZGUgIlN5bWJv
bE9iamVjdC5oIgotI2luY2x1ZGUgIlRlbXBvcmFsQ2FsZW5kYXIuaCIKLSNpbmNsdWRlICJUZW1w
b3JhbER1cmF0aW9uLmgiCi0jaW5jbHVkZSAiVGVtcG9yYWxJbnN0YW50LmgiCi0jaW5jbHVkZSAi
VGVtcG9yYWxQbGFpblRpbWUuaCIKLSNpbmNsdWRlICJUZW1wb3JhbFRpbWVab25lLmgiCiAjaW5j
bHVkZSAiVGVzdFJ1bm5lclV0aWxzLmgiCiAjaW5jbHVkZSAiVGh1bmtHZW5lcmF0b3JzLmgiCiAj
aW5jbHVkZSAiVHlwZVByb2ZpbGVyLmgiCkBAIC0xODMsMTkgKzExMywxNiBAQAogI2luY2x1ZGUg
Ildhc21Xb3JrbGlzdC5oIgogI2luY2x1ZGUgIldhdGNoZG9nLmgiCiAjaW5jbHVkZSAiV2Vha0dD
TWFwSW5saW5lcy5oIgotI2luY2x1ZGUgIldlYkFzc2VtYmx5RnVuY3Rpb24uaCIKLSNpbmNsdWRl
ICJXZWJBc3NlbWJseU1vZHVsZVJlY29yZC5oIgotI2luY2x1ZGUgIldlYkFzc2VtYmx5V3JhcHBl
ckZ1bmN0aW9uLmgiCiAjaW5jbHVkZSAiV2lkZW5pbmdOdW1iZXJQcmVkaWN0aW9uRnV6emVyQWdl
bnQuaCIKICNpbmNsdWRlIDx3dGYvUHJvY2Vzc0lELmg+CiAjaW5jbHVkZSA8d3RmL1JlYWRXcml0
ZUxvY2suaD4KICNpbmNsdWRlIDx3dGYvU2ltcGxlU3RhdHMuaD4KKyNpbmNsdWRlIDx3dGYvU3Rh
Y2tUcmFjZS5oPgogI2luY2x1ZGUgPHd0Zi9TdHJpbmdQcmludFN0cmVhbS5oPgogI2luY2x1ZGUg
PHd0Zi9UaHJlYWRpbmcuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9BdG9tU3RyaW5nVGFibGUuaD4K
IAogI2lmIEVOQUJMRShDX0xPT1ApCi0jaW5jbHVkZSAiQ0xvb3BTdGFjay5oIgogI2luY2x1ZGUg
IkNMb29wU3RhY2tJbmxpbmVzLmgiCiAjZW5kaWYKIApAQCAtMjA3LDE1ICsxMzQsNiBAQAogI2lu
Y2x1ZGUgIlJlZ0V4cC5oIgogI2VuZGlmCiAKLSNpZiBKU0NfT0JKQ19BUElfRU5BQkxFRAotI2lu
Y2x1ZGUgIk9iakNDYWxsYmFja0Z1bmN0aW9uLmgiCi0jZW5kaWYKLQotI2lmZGVmIEpTQ19HTElC
X0FQSV9FTkFCTEVECi0jaW5jbHVkZSAiSlNBUElXcmFwcGVyR2xvYmFsT2JqZWN0LmgiCi0jaW5j
bHVkZSAiSlNDQ2FsbGJhY2tGdW5jdGlvbi5oIgotI2VuZGlmCi0KIG5hbWVzcGFjZSBKU0Mgewog
CiBBdG9taWM8dW5zaWduZWQ+IFZNOjpzX251bWJlck9mSURzOwpAQCAtMjkxLDEwOSArMjA5LDYg
QEAgVk06OlZNKFZNVHlwZSB2bVR5cGUsIEhlYXBUeXBlIGhlYXBUeXBlLAogICAgICwgbV9yYW5k
b20oT3B0aW9uczo6c2VlZE9mVk1SYW5kb21Gb3JGdXp6ZXIoKSA/IE9wdGlvbnM6OnNlZWRPZlZN
UmFuZG9tRm9yRnV6emVyKCkgOiBjcnlwdG9ncmFwaGljYWxseVJhbmRvbU51bWJlcigpKQogICAg
ICwgbV9pbnRlZ3JpdHlSYW5kb20oKnRoaXMpCiAgICAgLCBoZWFwKCp0aGlzLCBoZWFwVHlwZSkK
LSAgICAsIGZhc3RNYWxsb2NBbGxvY2F0b3IobWFrZVVuaXF1ZTxGYXN0TWFsbG9jQWxpZ25lZE1l
bW9yeUFsbG9jYXRvcj4oKSkKLSAgICAsIHByaW1pdGl2ZUdpZ2FjYWdlQWxsb2NhdG9yKG1ha2VV
bmlxdWU8R2lnYWNhZ2VBbGlnbmVkTWVtb3J5QWxsb2NhdG9yPihHaWdhY2FnZTo6UHJpbWl0aXZl
KSkKLSAgICAsIGpzVmFsdWVHaWdhY2FnZUFsbG9jYXRvcihtYWtlVW5pcXVlPEdpZ2FjYWdlQWxp
Z25lZE1lbW9yeUFsbG9jYXRvcj4oR2lnYWNhZ2U6OkpTVmFsdWUpKQotICAgICwgYXV4aWxpYXJ5
SGVhcENlbGxUeXBlKG1ha2VVbmlxdWU8SGVhcENlbGxUeXBlPihDZWxsQXR0cmlidXRlcyhEb2Vz
Tm90TmVlZERlc3RydWN0aW9uLCBIZWFwQ2VsbDo6QXV4aWxpYXJ5KSkpCi0gICAgLCBpbW11dGFi
bGVCdXR0ZXJmbHlIZWFwQ2VsbFR5cGUobWFrZVVuaXF1ZTxIZWFwQ2VsbFR5cGU+KENlbGxBdHRy
aWJ1dGVzKERvZXNOb3ROZWVkRGVzdHJ1Y3Rpb24sIEhlYXBDZWxsOjpKU0NlbGxXaXRoSW5kZXhp
bmdIZWFkZXIpKSkKLSAgICAsIGNlbGxIZWFwQ2VsbFR5cGUobWFrZVVuaXF1ZTxIZWFwQ2VsbFR5
cGU+KENlbGxBdHRyaWJ1dGVzKERvZXNOb3ROZWVkRGVzdHJ1Y3Rpb24sIEhlYXBDZWxsOjpKU0Nl
bGwpKSkKLSAgICAsIGRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUobWFrZVVuaXF1ZTxIZWFw
Q2VsbFR5cGU+KENlbGxBdHRyaWJ1dGVzKE5lZWRzRGVzdHJ1Y3Rpb24sIEhlYXBDZWxsOjpKU0Nl
bGwpKSkKLSAgICAsIGFwaUdsb2JhbE9iamVjdEhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6
OmNyZWF0ZTxKU0FQSUdsb2JhbE9iamVjdD4oKSkKLSAgICAsIGNhbGxiYWNrQ29uc3RydWN0b3JI
ZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpjcmVhdGU8SlNDYWxsYmFja0NvbnN0cnVjdG9y
PigpKQotICAgICwgY2FsbGJhY2tHbG9iYWxPYmplY3RIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxU
eXBlOjpjcmVhdGU8SlNDYWxsYmFja09iamVjdDxKU0dsb2JhbE9iamVjdD4+KCkpCi0gICAgLCBj
YWxsYmFja09iamVjdEhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OmNyZWF0ZTxKU0NhbGxi
YWNrT2JqZWN0PEpTTm9uRmluYWxPYmplY3Q+PigpKQotICAgICwgY3VzdG9tR2V0dGVyRnVuY3Rp
b25IZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpjcmVhdGU8SlNDdXN0b21HZXR0ZXJGdW5j
dGlvbj4oKSkKLSAgICAsIGN1c3RvbVNldHRlckZ1bmN0aW9uSGVhcENlbGxUeXBlKElzb0hlYXBD
ZWxsVHlwZTo6Y3JlYXRlPEpTQ3VzdG9tU2V0dGVyRnVuY3Rpb24+KCkpCi0gICAgLCBkYXRlSW5z
dGFuY2VIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpjcmVhdGU8RGF0ZUluc3RhbmNlPigp
KQotICAgICwgZXJyb3JJbnN0YW5jZUhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OmNyZWF0
ZTxFcnJvckluc3RhbmNlPigpKQotICAgICwgZmluYWxpemF0aW9uUmVnaXN0cnlDZWxsVHlwZShJ
c29IZWFwQ2VsbFR5cGU6OmNyZWF0ZTxKU0ZpbmFsaXphdGlvblJlZ2lzdHJ5PigpKQotICAgICwg
Z2xvYmFsTGV4aWNhbEVudmlyb25tZW50SGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6Y3Jl
YXRlPEpTR2xvYmFsTGV4aWNhbEVudmlyb25tZW50PigpKQotICAgICwgZ2xvYmFsT2JqZWN0SGVh
cENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6Y3JlYXRlPEpTR2xvYmFsT2JqZWN0PigpKQotICAg
ICwgaW5qZWN0ZWRTY3JpcHRIb3N0U3BhY2VIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpj
cmVhdGU8SW5zcGVjdG9yOjpKU0luamVjdGVkU2NyaXB0SG9zdD4oKSkKLSAgICAsIGphdmFTY3Jp
cHRDYWxsRnJhbWVIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpjcmVhdGU8SW5zcGVjdG9y
OjpKU0phdmFTY3JpcHRDYWxsRnJhbWU+KCkpCi0gICAgLCBqc01vZHVsZVJlY29yZEhlYXBDZWxs
VHlwZShJc29IZWFwQ2VsbFR5cGU6OmNyZWF0ZTxKU01vZHVsZVJlY29yZD4oKSkKLSAgICAsIG1v
ZHVsZU5hbWVzcGFjZU9iamVjdEhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OmNyZWF0ZTxK
U01vZHVsZU5hbWVzcGFjZU9iamVjdD4oKSkKLSAgICAsIG5hdGl2ZVN0ZEZ1bmN0aW9uSGVhcENl
bGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6Y3JlYXRlPEpTTmF0aXZlU3RkRnVuY3Rpb24+KCkpCi0g
ICAgLCBzdHJpbmdIZWFwQ2VsbFR5cGUobWFrZVVuaXF1ZTxJc29JbmxpbmVkSGVhcENlbGxUeXBl
PEpTU3RyaW5nPj4oKSkKLSAgICAsIHdlYWtNYXBIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBl
OjpjcmVhdGU8SlNXZWFrTWFwPigpKQotICAgICwgd2Vha1NldEhlYXBDZWxsVHlwZShJc29IZWFw
Q2VsbFR5cGU6OmNyZWF0ZTxKU1dlYWtTZXQ+KCkpCi0gICAgLCBkZXN0cnVjdGlibGVPYmplY3RI
ZWFwQ2VsbFR5cGUobWFrZVVuaXF1ZTxKU0Rlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZT4o
KSkKLSNpZiBKU0NfT0JKQ19BUElfRU5BQkxFRAotICAgICwgYXBpV3JhcHBlck9iamVjdEhlYXBD
ZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OmNyZWF0ZTxKU0NhbGxiYWNrT2JqZWN0PEpTQVBJV3Jh
cHBlck9iamVjdD4+KCkpCi0gICAgLCBvYmpDQ2FsbGJhY2tGdW5jdGlvbkhlYXBDZWxsVHlwZShJ
c29IZWFwQ2VsbFR5cGU6OmNyZWF0ZTxPYmpDQ2FsbGJhY2tGdW5jdGlvbj4oKSkKLSNlbmRpZgot
I2lmZGVmIEpTQ19HTElCX0FQSV9FTkFCTEVECi0gICAgLCBhcGlXcmFwcGVyT2JqZWN0SGVhcENl
bGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6Y3JlYXRlPEpTQ2FsbGJhY2tPYmplY3Q8SlNBUElXcmFw
cGVyT2JqZWN0Pj4oKSkKLSAgICAsIGNhbGxiYWNrQVBJV3JhcHBlckdsb2JhbE9iamVjdEhlYXBD
ZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OmNyZWF0ZTxKU0NhbGxiYWNrT2JqZWN0PEpTQVBJV3Jh
cHBlckdsb2JhbE9iamVjdD4+KCkpCi0gICAgLCBqc2NDYWxsYmFja0Z1bmN0aW9uSGVhcENlbGxU
eXBlKElzb0hlYXBDZWxsVHlwZTo6Y3JlYXRlPEpTQ0NhbGxiYWNrRnVuY3Rpb24+KCkpCi0jZW5k
aWYKLSAgICAsIGludGxDb2xsYXRvckhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OmNyZWF0
ZTxJbnRsQ29sbGF0b3I+KCkpCi0gICAgLCBpbnRsRGF0ZVRpbWVGb3JtYXRIZWFwQ2VsbFR5cGUo
SXNvSGVhcENlbGxUeXBlOjpjcmVhdGU8SW50bERhdGVUaW1lRm9ybWF0PigpKQotICAgICwgaW50
bERpc3BsYXlOYW1lc0hlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OmNyZWF0ZTxJbnRsRGlz
cGxheU5hbWVzPigpKQotICAgICwgaW50bExpc3RGb3JtYXRIZWFwQ2VsbFR5cGUoSXNvSGVhcENl
bGxUeXBlOjpjcmVhdGU8SW50bExpc3RGb3JtYXQ+KCkpCi0gICAgLCBpbnRsTG9jYWxlSGVhcENl
bGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6Y3JlYXRlPEludGxMb2NhbGU+KCkpCi0gICAgLCBpbnRs
TnVtYmVyRm9ybWF0SGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6Y3JlYXRlPEludGxOdW1i
ZXJGb3JtYXQ+KCkpCi0gICAgLCBpbnRsUGx1cmFsUnVsZXNIZWFwQ2VsbFR5cGUoSXNvSGVhcENl
bGxUeXBlOjpjcmVhdGU8SW50bFBsdXJhbFJ1bGVzPigpKQotICAgICwgaW50bFJlbGF0aXZlVGlt
ZUZvcm1hdEhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OmNyZWF0ZTxJbnRsUmVsYXRpdmVU
aW1lRm9ybWF0PigpKQotICAgICwgaW50bFNlZ21lbnRJdGVyYXRvckhlYXBDZWxsVHlwZShJc29I
ZWFwQ2VsbFR5cGU6OmNyZWF0ZTxJbnRsU2VnbWVudEl0ZXJhdG9yPigpKQotICAgICwgaW50bFNl
Z21lbnRlckhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OmNyZWF0ZTxJbnRsU2VnbWVudGVy
PigpKQotICAgICwgaW50bFNlZ21lbnRzSGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6Y3Jl
YXRlPEludGxTZWdtZW50cz4oKSkKLSNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCi0gICAgLCB3ZWJB
c3NlbWJseUNvZGVCbG9ja0hlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OmNyZWF0ZTxKU1dl
YkFzc2VtYmx5Q29kZUJsb2NrPigpKQotICAgICwgd2ViQXNzZW1ibHlFeGNlcHRpb25IZWFwQ2Vs
bFR5cGUoSXNvSGVhcENlbGxUeXBlOjpjcmVhdGU8SlNXZWJBc3NlbWJseUV4Y2VwdGlvbj4oKSkK
LSAgICAsIHdlYkFzc2VtYmx5RnVuY3Rpb25IZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpj
cmVhdGU8V2ViQXNzZW1ibHlGdW5jdGlvbj4oKSkKLSAgICAsIHdlYkFzc2VtYmx5R2xvYmFsSGVh
cENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6Y3JlYXRlPEpTV2ViQXNzZW1ibHlHbG9iYWw+KCkp
Ci0gICAgLCB3ZWJBc3NlbWJseUluc3RhbmNlSGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6
Y3JlYXRlPEpTV2ViQXNzZW1ibHlJbnN0YW5jZT4oKSkKLSAgICAsIHdlYkFzc2VtYmx5TWVtb3J5
SGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6Y3JlYXRlPEpTV2ViQXNzZW1ibHlNZW1vcnk+
KCkpCi0gICAgLCB3ZWJBc3NlbWJseU1vZHVsZUhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6
OmNyZWF0ZTxKU1dlYkFzc2VtYmx5TW9kdWxlPigpKQotICAgICwgd2ViQXNzZW1ibHlNb2R1bGVS
ZWNvcmRIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpjcmVhdGU8V2ViQXNzZW1ibHlNb2R1
bGVSZWNvcmQ+KCkpCi0gICAgLCB3ZWJBc3NlbWJseVRhYmxlSGVhcENlbGxUeXBlKElzb0hlYXBD
ZWxsVHlwZTo6Y3JlYXRlPEpTV2ViQXNzZW1ibHlUYWJsZT4oKSkKLSAgICAsIHdlYkFzc2VtYmx5
VGFnSGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6Y3JlYXRlPEpTV2ViQXNzZW1ibHlUYWc+
KCkpCi0jZW5kaWYKLSAgICAsIHByaW1pdGl2ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UoIlByaW1p
dGl2ZSBHaWdhY2FnZSBBdXhpbGlhcnkiLCBoZWFwLCAqYXV4aWxpYXJ5SGVhcENlbGxUeXBlLCBw
cmltaXRpdmVHaWdhY2FnZUFsbG9jYXRvci5nZXQoKSkgLy8gSGFzaDoweDNlN2NkNzYyCi0gICAg
LCBqc1ZhbHVlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZSgiSlNWYWx1ZSBHaWdhY2FnZSBBdXhpbGlh
cnkiLCBoZWFwLCAqYXV4aWxpYXJ5SGVhcENlbGxUeXBlLCBqc1ZhbHVlR2lnYWNhZ2VBbGxvY2F0
b3IuZ2V0KCkpIC8vIEhhc2g6MHgyNDFlOTQ2Ci0gICAgLCBpbW11dGFibGVCdXR0ZXJmbHlKU1Zh
bHVlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZSgiSW1tdXRhYmxlQnV0dGVyZmx5IEdpZ2FjYWdlIEpT
Q2VsbFdpdGhJbmRleGluZ0hlYWRlciIsIGhlYXAsICppbW11dGFibGVCdXR0ZXJmbHlIZWFwQ2Vs
bFR5cGUsIGpzVmFsdWVHaWdhY2FnZUFsbG9jYXRvci5nZXQoKSkgLy8gSGFzaDoweDdhOTQ1MzAw
Ci0gICAgLCBjZWxsU3BhY2UoIkpTQ2VsbCIsIGhlYXAsICpjZWxsSGVhcENlbGxUeXBlLCBmYXN0
TWFsbG9jQWxsb2NhdG9yLmdldCgpKSAvLyBIYXNoOjB4YWRmYjVhNzkKLSAgICAsIHZhcmlhYmxl
U2l6ZWRDZWxsU3BhY2UoIlZhcmlhYmxlIFNpemVkIEpTQ2VsbCIsIGhlYXAsICpjZWxsSGVhcENl
bGxUeXBlLCBmYXN0TWFsbG9jQWxsb2NhdG9yLmdldCgpKSAvLyBIYXNoOjB4YmNkNzY5Y2MKLSAg
ICAsIGRlc3RydWN0aWJsZU9iamVjdFNwYWNlKCJKU0Rlc3RydWN0aWJsZU9iamVjdCIsIGhlYXAs
ICpkZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUsIGZhc3RNYWxsb2NBbGxvY2F0b3IuZ2V0
KCkpIC8vIEhhc2g6MHg0ZjVlZDdhOQotICAgICwgYXJyYXlTcGFjZSBJU09fU1VCU1BBQ0VfSU5J
VChoZWFwLCAqY2VsbEhlYXBDZWxsVHlwZSwgSlNBcnJheSkKLSAgICAsIGJpZ0ludFNwYWNlIElT
T19TVUJTUEFDRV9JTklUKGhlYXAsICpjZWxsSGVhcENlbGxUeXBlLCBKU0JpZ0ludCkKLSAgICAs
IGNhbGxlZVNwYWNlIElTT19TVUJTUEFDRV9JTklUKGhlYXAsICpjZWxsSGVhcENlbGxUeXBlLCBK
U0NhbGxlZSkKLSAgICAsIGNsb25lZEFyZ3VtZW50c1NwYWNlIElTT19TVUJTUEFDRV9JTklUKGhl
YXAsICpjZWxsSGVhcENlbGxUeXBlLCBDbG9uZWRBcmd1bWVudHMpCi0gICAgLCBjdXN0b21HZXR0
ZXJTZXR0ZXJTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVChoZWFwLCAqY2VsbEhlYXBDZWxsVHlwZSwg
Q3VzdG9tR2V0dGVyU2V0dGVyKQotICAgICwgZGF0ZUluc3RhbmNlU3BhY2UgSVNPX1NVQlNQQUNF
X0lOSVQoaGVhcCwgKmRhdGVJbnN0YW5jZUhlYXBDZWxsVHlwZSwgRGF0ZUluc3RhbmNlKQotICAg
ICwgZG9tQXR0cmlidXRlR2V0dGVyU2V0dGVyU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoaGVhcCwg
KmNlbGxIZWFwQ2VsbFR5cGUsIERPTUF0dHJpYnV0ZUdldHRlclNldHRlcikKLSAgICAsIGV4Y2Vw
dGlvblNwYWNlIElTT19TVUJTUEFDRV9JTklUKGhlYXAsICpkZXN0cnVjdGlibGVDZWxsSGVhcENl
bGxUeXBlLCBFeGNlcHRpb24pCi0gICAgLCBleGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlU3BhY2Ug
SVNPX1NVQlNQQUNFX0lOSVQoaGVhcCwgKmNlbGxIZWFwQ2VsbFR5cGUsIEV4ZWN1dGFibGVUb0Nv
ZGVCbG9ja0VkZ2UpIC8vIEhhc2g6MHg3YjczMGIyMAotICAgICwgZnVuY3Rpb25TcGFjZSBJU09f
U1VCU1BBQ0VfSU5JVChoZWFwLCAqY2VsbEhlYXBDZWxsVHlwZSwgSlNGdW5jdGlvbikgLy8gSGFz
aDoweDgwMGZjYTcyCi0gICAgLCBnZXR0ZXJTZXR0ZXJTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVCho
ZWFwLCAqY2VsbEhlYXBDZWxsVHlwZSwgR2V0dGVyU2V0dGVyKQotICAgICwgZ2xvYmFsTGV4aWNh
bEVudmlyb25tZW50U3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoaGVhcCwgKmdsb2JhbExleGljYWxF
bnZpcm9ubWVudEhlYXBDZWxsVHlwZSwgSlNHbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQpCi0gICAg
LCBpbnRlcm5hbEZ1bmN0aW9uU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoaGVhcCwgKmNlbGxIZWFw
Q2VsbFR5cGUsIEludGVybmFsRnVuY3Rpb24pIC8vIEhhc2g6MHhmODQ1YzQ2NAotICAgICwganNQ
cm94eVNwYWNlIElTT19TVUJTUEFDRV9JTklUKGhlYXAsICpjZWxsSGVhcENlbGxUeXBlLCBKU1By
b3h5KQotICAgICwgbmF0aXZlRXhlY3V0YWJsZVNwYWNlIElTT19TVUJTUEFDRV9JTklUKGhlYXAs
ICpkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlLCBOYXRpdmVFeGVjdXRhYmxlKSAvLyBIYXNo
OjB4Njc1NjdmOTUKLSAgICAsIG51bWJlck9iamVjdFNwYWNlIElTT19TVUJTUEFDRV9JTklUKGhl
YXAsICpjZWxsSGVhcENlbGxUeXBlLCBOdW1iZXJPYmplY3QpCi0gICAgLCBwbGFpbk9iamVjdFNw
YWNlIElTT19TVUJTUEFDRV9JTklUKGhlYXAsICpjZWxsSGVhcENlbGxUeXBlLCBKU05vbkZpbmFs
T2JqZWN0KSAvLyBNYWlubHkgdXNlZCBmb3IgcHJvdG90eXBlcy4KLSAgICAsIHByb21pc2VTcGFj
ZSBJU09fU1VCU1BBQ0VfSU5JVChoZWFwLCAqY2VsbEhlYXBDZWxsVHlwZSwgSlNQcm9taXNlKQot
ICAgICwgcHJvcGVydHlOYW1lRW51bWVyYXRvclNwYWNlIElTT19TVUJTUEFDRV9JTklUKGhlYXAs
ICpjZWxsSGVhcENlbGxUeXBlLCBKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3IpCi0gICAgLCBwcm9w
ZXJ0eVRhYmxlU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoaGVhcCwgKmRlc3RydWN0aWJsZUNlbGxI
ZWFwQ2VsbFR5cGUsIFByb3BlcnR5VGFibGUpIC8vIEhhc2g6MHhjNmJjOWYxMgotICAgICwgcmVn
RXhwU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoaGVhcCwgKmRlc3RydWN0aWJsZUNlbGxIZWFwQ2Vs
bFR5cGUsIFJlZ0V4cCkKLSAgICAsIHJlZ0V4cE9iamVjdFNwYWNlIElTT19TVUJTUEFDRV9JTklU
KGhlYXAsICpjZWxsSGVhcENlbGxUeXBlLCBSZWdFeHBPYmplY3QpCi0gICAgLCByb3BlU3RyaW5n
U3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoaGVhcCwgKnN0cmluZ0hlYXBDZWxsVHlwZSwgSlNSb3Bl
U3RyaW5nKQotICAgICwgc2NvcGVkQXJndW1lbnRzU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoaGVh
cCwgKmNlbGxIZWFwQ2VsbFR5cGUsIFNjb3BlZEFyZ3VtZW50cykKLSAgICAsIHNwYXJzZUFycmF5
VmFsdWVNYXBTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVChoZWFwLCAqZGVzdHJ1Y3RpYmxlQ2VsbEhl
YXBDZWxsVHlwZSwgU3BhcnNlQXJyYXlWYWx1ZU1hcCkKLSAgICAsIHN0cmluZ1NwYWNlIElTT19T
VUJTUEFDRV9JTklUKGhlYXAsICpzdHJpbmdIZWFwQ2VsbFR5cGUsIEpTU3RyaW5nKSAvLyBIYXNo
OjB4OTBjZjc1OGYKLSAgICAsIHN0cmluZ09iamVjdFNwYWNlIElTT19TVUJTUEFDRV9JTklUKGhl
YXAsICpjZWxsSGVhcENlbGxUeXBlLCBTdHJpbmdPYmplY3QpCi0gICAgLCBzdHJ1Y3R1cmVDaGFp
blNwYWNlIElTT19TVUJTUEFDRV9JTklUKGhlYXAsICpjZWxsSGVhcENlbGxUeXBlLCBTdHJ1Y3R1
cmVDaGFpbikKLSAgICAsIHN0cnVjdHVyZVJhcmVEYXRhU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQo
aGVhcCwgKmRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUsIFN0cnVjdHVyZVJhcmVEYXRhKSAv
LyBIYXNoOjB4YWNhNGU2MmQKLSAgICAsIHN0cnVjdHVyZVNwYWNlIElTT19TVUJTUEFDRV9JTklU
KGhlYXAsICpkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlLCBTdHJ1Y3R1cmUpIC8vIEhhc2g6
MHgxZjFiY2RjYQotICAgICwgYnJhbmRlZFN0cnVjdHVyZVNwYWNlIElTT19TVUJTUEFDRV9JTklU
KGhlYXAsICpkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlLCBCcmFuZGVkU3RydWN0dXJlKQot
ICAgICwgc3ltYm9sVGFibGVTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVChoZWFwLCAqZGVzdHJ1Y3Rp
YmxlQ2VsbEhlYXBDZWxsVHlwZSwgU3ltYm9sVGFibGUpIC8vIEhhc2g6MHhjNTIxNWFmZAotICAg
ICwgZXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZXNXaXRoQ29uc3RyYWludHMoZXhlY3V0YWJsZVRv
Q29kZUJsb2NrRWRnZVNwYWNlKQotICAgICwgZXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZXNXaXRo
RmluYWxpemVycyhleGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlU3BhY2UpCi0gICAgLCBjb2RlQmxv
Y2tTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVChoZWFwLCAqZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxs
VHlwZSwgQ29kZUJsb2NrKSAvLyBIYXNoOjB4NzdlNjZlYzkKLSAgICAsIGZ1bmN0aW9uRXhlY3V0
YWJsZVNwYWNlIElTT19TVUJTUEFDRV9JTklUKGhlYXAsICpkZXN0cnVjdGlibGVDZWxsSGVhcENl
bGxUeXBlLCBGdW5jdGlvbkV4ZWN1dGFibGUpIC8vIEhhc2g6MHg1ZDE1OGYzCi0gICAgLCBwcm9n
cmFtRXhlY3V0YWJsZVNwYWNlIElTT19TVUJTUEFDRV9JTklUKGhlYXAsICpkZXN0cnVjdGlibGVD
ZWxsSGVhcENlbGxUeXBlLCBQcm9ncmFtRXhlY3V0YWJsZSkgLy8gSGFzaDoweDUyN2M3N2U3Ci0g
ICAgLCB1bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZVNwYWNlIElTT19TVUJTUEFDRV9JTklUKGhl
YXAsICpkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlLCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0
YWJsZSkgLy8gSGFzaDoweGY2YjgyOGQ5CiAgICAgLCB2bVR5cGUodm1UeXBlKQogICAgICwgY2xp
ZW50RGF0YShudWxscHRyKQogICAgICwgdG9wRW50cnlGcmFtZShudWxscHRyKQpAQCAtMTU3Miwx
MzcgKzEzODcsNiBAQCB2b2lkIFZNOjplbnN1cmVTaGFkb3dDaGlja2VuKCkKICAgICBtX3NoYWRv
d0NoaWNrZW4gPSBtYWtlVW5pcXVlPFNoYWRvd0NoaWNrZW4+KCk7CiB9CiAKLSNkZWZpbmUgRFlO
QU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKG5hbWUsIGhlYXBDZWxsVHlwZSwg
dHlwZSkgXAotICAgIElzb1N1YnNwYWNlKiBWTTo6bmFtZSMjU2xvdygpIFwKLSAgICB7IFwKLSAg
ICAgICAgQVNTRVJUKCFtXyMjbmFtZSk7IFwKLSAgICAgICAgYXV0byBzcGFjZSA9IG1ha2VVbmlx
dWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKGhlYXAsIGhlYXBDZWxsVHlwZSwgdHlw
ZSk7IFwKLSAgICAgICAgV1RGOjpzdG9yZVN0b3JlRmVuY2UoKTsgXAotICAgICAgICBtXyMjbmFt
ZSA9IFdURk1vdmUoc3BhY2UpOyBcCi0gICAgICAgIHJldHVybiBtXyMjbmFtZS5nZXQoKTsgXAot
ICAgIH0KLQotCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coYXBpR2xv
YmFsT2JqZWN0U3BhY2UsICphcGlHbG9iYWxPYmplY3RIZWFwQ2VsbFR5cGUsIEpTQVBJR2xvYmFs
T2JqZWN0KQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGFwaVZhbHVl
V3JhcHBlclNwYWNlLCAqY2VsbEhlYXBDZWxsVHlwZSwgSlNBUElWYWx1ZVdyYXBwZXIpCi1EWU5B
TUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coYXJyYXlCdWZmZXJTcGFjZSwgKmNl
bGxIZWFwQ2VsbFR5cGUsIEpTQXJyYXlCdWZmZXIpCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJ
TkVfTUVNQkVSX1NMT1coYXJyYXlJdGVyYXRvclNwYWNlLCAqY2VsbEhlYXBDZWxsVHlwZSwgSlNB
cnJheUl0ZXJhdG9yKQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGFz
eW5jR2VuZXJhdG9yU3BhY2UsICpjZWxsSGVhcENlbGxUeXBlLCBKU0FzeW5jR2VuZXJhdG9yKQot
RFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGJpZ0ludDY0QXJyYXlTcGFj
ZSwgKmNlbGxIZWFwQ2VsbFR5cGUsIEpTQmlnSW50NjRBcnJheSkKLURZTkFNSUNfSVNPX1NVQlNQ
QUNFX0RFRklORV9NRU1CRVJfU0xPVyhiaWdJbnRPYmplY3RTcGFjZSwgKmNlbGxIZWFwQ2VsbFR5
cGUsIEJpZ0ludE9iamVjdCkKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xP
VyhiaWdVaW50NjRBcnJheVNwYWNlLCAqY2VsbEhlYXBDZWxsVHlwZSwgSlNCaWdVaW50NjRBcnJh
eSkKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhib29sZWFuT2JqZWN0
U3BhY2UsICpjZWxsSGVhcENlbGxUeXBlLCBCb29sZWFuT2JqZWN0KQotRFlOQU1JQ19JU09fU1VC
U1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGJvdW5kRnVuY3Rpb25TcGFjZSwgKmNlbGxIZWFwQ2Vs
bFR5cGUsIEpTQm91bmRGdW5jdGlvbikgLy8gSGFzaDoweGQ3OTE2ZDQxCi1EWU5BTUlDX0lTT19T
VUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coY2FsbGJhY2tDb25zdHJ1Y3RvclNwYWNlLCAqY2Fs
bGJhY2tDb25zdHJ1Y3RvckhlYXBDZWxsVHlwZSwgSlNDYWxsYmFja0NvbnN0cnVjdG9yKQotRFlO
QU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGNhbGxiYWNrR2xvYmFsT2JqZWN0
U3BhY2UsICpjYWxsYmFja0dsb2JhbE9iamVjdEhlYXBDZWxsVHlwZSwgSlNDYWxsYmFja09iamVj
dDxKU0dsb2JhbE9iamVjdD4pCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NM
T1coY2FsbGJhY2tGdW5jdGlvblNwYWNlLCAqY2VsbEhlYXBDZWxsVHlwZSwgSlNDYWxsYmFja0Z1
bmN0aW9uKSAvLyBIYXNoOjB4ZTc2NDhlYmMKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9N
RU1CRVJfU0xPVyhjYWxsYmFja09iamVjdFNwYWNlLCAqY2FsbGJhY2tPYmplY3RIZWFwQ2VsbFR5
cGUsIEpTQ2FsbGJhY2tPYmplY3Q8SlNOb25GaW5hbE9iamVjdD4pCi1EWU5BTUlDX0lTT19TVUJT
UEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coY3VzdG9tR2V0dGVyRnVuY3Rpb25TcGFjZSwgKmN1c3Rv
bUdldHRlckZ1bmN0aW9uSGVhcENlbGxUeXBlLCBKU0N1c3RvbUdldHRlckZ1bmN0aW9uKQotRFlO
QU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGN1c3RvbVNldHRlckZ1bmN0aW9u
U3BhY2UsICpjdXN0b21TZXR0ZXJGdW5jdGlvbkhlYXBDZWxsVHlwZSwgSlNDdXN0b21TZXR0ZXJG
dW5jdGlvbikKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhkYXRhVmll
d1NwYWNlLCAqY2VsbEhlYXBDZWxsVHlwZSwgSlNEYXRhVmlldykKLURZTkFNSUNfSVNPX1NVQlNQ
QUNFX0RFRklORV9NRU1CRVJfU0xPVyhkZWJ1Z2dlclNjb3BlU3BhY2UsICpjZWxsSGVhcENlbGxU
eXBlLCBEZWJ1Z2dlclNjb3BlKQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9T
TE9XKGVycm9ySW5zdGFuY2VTcGFjZSwgKmVycm9ySW5zdGFuY2VIZWFwQ2VsbFR5cGUsIEVycm9y
SW5zdGFuY2UpIC8vIEhhc2g6MHgzZjQwZDRhCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVf
TUVNQkVSX1NMT1coZmxvYXQzMkFycmF5U3BhY2UsICpjZWxsSGVhcENlbGxUeXBlLCBKU0Zsb2F0
MzJBcnJheSkKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhmbG9hdDY0
QXJyYXlTcGFjZSwgKmNlbGxIZWFwQ2VsbFR5cGUsIEpTRmxvYXQ2NEFycmF5KQotRFlOQU1JQ19J
U09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGZ1bmN0aW9uUmFyZURhdGFTcGFjZSwgKmRl
c3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUsIEZ1bmN0aW9uUmFyZURhdGEpCi1EWU5BTUlDX0lT
T19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coZ2VuZXJhdG9yU3BhY2UsICpjZWxsSGVhcENl
bGxUeXBlLCBKU0dlbmVyYXRvcikKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJf
U0xPVyhnbG9iYWxPYmplY3RTcGFjZSwgKmdsb2JhbE9iamVjdEhlYXBDZWxsVHlwZSwgSlNHbG9i
YWxPYmplY3QpCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coaW5qZWN0
ZWRTY3JpcHRIb3N0U3BhY2UsICppbmplY3RlZFNjcmlwdEhvc3RTcGFjZUhlYXBDZWxsVHlwZSwg
SW5zcGVjdG9yOjpKU0luamVjdGVkU2NyaXB0SG9zdCkKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RF
RklORV9NRU1CRVJfU0xPVyhpbnQ4QXJyYXlTcGFjZSwgKmNlbGxIZWFwQ2VsbFR5cGUsIEpTSW50
OEFycmF5KQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGludDE2QXJy
YXlTcGFjZSwgKmNlbGxIZWFwQ2VsbFR5cGUsIEpTSW50MTZBcnJheSkKLURZTkFNSUNfSVNPX1NV
QlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhpbnQzMkFycmF5U3BhY2UsICpjZWxsSGVhcENlbGxU
eXBlLCBKU0ludDMyQXJyYXkpCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NM
T1coamF2YVNjcmlwdENhbGxGcmFtZVNwYWNlLCAqamF2YVNjcmlwdENhbGxGcmFtZUhlYXBDZWxs
VHlwZSwgSW5zcGVjdG9yOjpKU0phdmFTY3JpcHRDYWxsRnJhbWUpCi1EWU5BTUlDX0lTT19TVUJT
UEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coanNNb2R1bGVSZWNvcmRTcGFjZSwgKmpzTW9kdWxlUmVj
b3JkSGVhcENlbGxUeXBlLCBKU01vZHVsZVJlY29yZCkKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RF
RklORV9NRU1CRVJfU0xPVyhtYXBCdWNrZXRTcGFjZSwgKmNlbGxIZWFwQ2VsbFR5cGUsIEpTTWFw
OjpCdWNrZXRUeXBlKQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKG1h
cEl0ZXJhdG9yU3BhY2UsICpjZWxsSGVhcENlbGxUeXBlLCBKU01hcEl0ZXJhdG9yKQotRFlOQU1J
Q19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKG1hcFNwYWNlLCAqY2VsbEhlYXBDZWxs
VHlwZSwgSlNNYXApCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1cobW9k
dWxlTmFtZXNwYWNlT2JqZWN0U3BhY2UsICptb2R1bGVOYW1lc3BhY2VPYmplY3RIZWFwQ2VsbFR5
cGUsIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0KQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5F
X01FTUJFUl9TTE9XKG5hdGl2ZVN0ZEZ1bmN0aW9uU3BhY2UsICpuYXRpdmVTdGRGdW5jdGlvbkhl
YXBDZWxsVHlwZSwgSlNOYXRpdmVTdGRGdW5jdGlvbikgLy8gSGFzaDoweDcwZWQ2MWU0Ci1EWU5B
TUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1cocHJveHlPYmplY3RTcGFjZSwgKmNl
bGxIZWFwQ2VsbFR5cGUsIFByb3h5T2JqZWN0KQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5F
X01FTUJFUl9TTE9XKHByb3h5UmV2b2tlU3BhY2UsICpjZWxsSGVhcENlbGxUeXBlLCBQcm94eVJl
dm9rZSkgLy8gSGFzaDoweGI1MDZhOTM5Ci1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVN
QkVSX1NMT1coc2NvcGVkQXJndW1lbnRzVGFibGVTcGFjZSwgKmRlc3RydWN0aWJsZUNlbGxIZWFw
Q2VsbFR5cGUsIFNjb3BlZEFyZ3VtZW50c1RhYmxlKQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVG
SU5FX01FTUJFUl9TTE9XKHNjcmlwdEZldGNoUGFyYW1ldGVyc1NwYWNlLCAqZGVzdHJ1Y3RpYmxl
Q2VsbEhlYXBDZWxsVHlwZSwgSlNTY3JpcHRGZXRjaFBhcmFtZXRlcnMpCi1EWU5BTUlDX0lTT19T
VUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coc2NyaXB0RmV0Y2hlclNwYWNlLCAqZGVzdHJ1Y3Rp
YmxlQ2VsbEhlYXBDZWxsVHlwZSwgSlNTY3JpcHRGZXRjaGVyKQotRFlOQU1JQ19JU09fU1VCU1BB
Q0VfREVGSU5FX01FTUJFUl9TTE9XKHNldEJ1Y2tldFNwYWNlLCAqY2VsbEhlYXBDZWxsVHlwZSwg
SlNTZXQ6OkJ1Y2tldFR5cGUpCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NM
T1coc2V0SXRlcmF0b3JTcGFjZSwgKmNlbGxIZWFwQ2VsbFR5cGUsIEpTU2V0SXRlcmF0b3IpCi1E
WU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coc2V0U3BhY2UsICpjZWxsSGVh
cENlbGxUeXBlLCBKU1NldCkKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xP
VyhzaGFkb3dSZWFsbVNwYWNlLCAqY2VsbEhlYXBDZWxsVHlwZSwgU2hhZG93UmVhbG1PYmplY3Qp
Ci1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coc3RyaWN0RXZhbEFjdGl2
YXRpb25TcGFjZSwgKmNlbGxIZWFwQ2VsbFR5cGUsIFN0cmljdEV2YWxBY3RpdmF0aW9uKQotRFlO
QU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHN0cmluZ0l0ZXJhdG9yU3BhY2Us
ICpjZWxsSGVhcENlbGxUeXBlLCBKU1N0cmluZ0l0ZXJhdG9yKQotRFlOQU1JQ19JU09fU1VCU1BB
Q0VfREVGSU5FX01FTUJFUl9TTE9XKHNvdXJjZUNvZGVTcGFjZSwgKmRlc3RydWN0aWJsZUNlbGxI
ZWFwQ2VsbFR5cGUsIEpTU291cmNlQ29kZSkKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9N
RU1CRVJfU0xPVyhzeW1ib2xTcGFjZSwgKmRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUsIFN5
bWJvbCkKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhzeW1ib2xPYmpl
Y3RTcGFjZSwgKmNlbGxIZWFwQ2VsbFR5cGUsIFN5bWJvbE9iamVjdCkKLURZTkFNSUNfSVNPX1NV
QlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh0ZW1wbGF0ZU9iamVjdERlc2NyaXB0b3JTcGFjZSwg
KmRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUsIEpTVGVtcGxhdGVPYmplY3REZXNjcmlwdG9y
KQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHRlbXBvcmFsQ2FsZW5k
YXJTcGFjZSwgKmNlbGxIZWFwQ2VsbFR5cGUsIFRlbXBvcmFsQ2FsZW5kYXIpCi1EWU5BTUlDX0lT
T19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1codGVtcG9yYWxEdXJhdGlvblNwYWNlLCAqY2Vs
bEhlYXBDZWxsVHlwZSwgVGVtcG9yYWxEdXJhdGlvbikKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RF
RklORV9NRU1CRVJfU0xPVyh0ZW1wb3JhbEluc3RhbnRTcGFjZSwgKmNlbGxIZWFwQ2VsbFR5cGUs
IFRlbXBvcmFsSW5zdGFudCkKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xP
Vyh0ZW1wb3JhbFBsYWluVGltZVNwYWNlLCAqY2VsbEhlYXBDZWxsVHlwZSwgVGVtcG9yYWxQbGFp
blRpbWUpCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1codGVtcG9yYWxU
aW1lWm9uZVNwYWNlLCAqY2VsbEhlYXBDZWxsVHlwZSwgVGVtcG9yYWxUaW1lWm9uZSkKLURZTkFN
SUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh1aW50OEFycmF5U3BhY2UsICpjZWxs
SGVhcENlbGxUeXBlLCBKU1VpbnQ4QXJyYXkpCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVf
TUVNQkVSX1NMT1codWludDhDbGFtcGVkQXJyYXlTcGFjZSwgKmNlbGxIZWFwQ2VsbFR5cGUsIEpT
VWludDhDbGFtcGVkQXJyYXkpCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NM
T1codWludDE2QXJyYXlTcGFjZSwgKmNlbGxIZWFwQ2VsbFR5cGUsIEpTVWludDE2QXJyYXkpCi1E
WU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1codWludDMyQXJyYXlTcGFjZSwg
KmNlbGxIZWFwQ2VsbFR5cGUsIEpTVWludDMyQXJyYXkpCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9E
RUZJTkVfTUVNQkVSX1NMT1codW5saW5rZWRFdmFsQ29kZUJsb2NrU3BhY2UsICpkZXN0cnVjdGli
bGVDZWxsSGVhcENlbGxUeXBlLCBVbmxpbmtlZEV2YWxDb2RlQmxvY2spCi1EWU5BTUlDX0lTT19T
VUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1codW5saW5rZWRGdW5jdGlvbkNvZGVCbG9ja1NwYWNl
LCAqZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZSwgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9j
aykKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh1bmxpbmtlZE1vZHVs
ZVByb2dyYW1Db2RlQmxvY2tTcGFjZSwgKmRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUsIFVu
bGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jaykKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklO
RV9NRU1CRVJfU0xPVyh1bmxpbmtlZFByb2dyYW1Db2RlQmxvY2tTcGFjZSwgKmRlc3RydWN0aWJs
ZUNlbGxIZWFwQ2VsbFR5cGUsIFVubGlua2VkUHJvZ3JhbUNvZGVCbG9jaykKLURZTkFNSUNfSVNP
X1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh3ZWFrTWFwU3BhY2UsICp3ZWFrTWFwSGVhcENl
bGxUeXBlLCBKU1dlYWtNYXApIC8vIEhhc2g6MHg2NjJiMTJhMwotRFlOQU1JQ19JU09fU1VCU1BB
Q0VfREVGSU5FX01FTUJFUl9TTE9XKHdlYWtTZXRTcGFjZSwgKndlYWtTZXRIZWFwQ2VsbFR5cGUs
IEpTV2Vha1NldCkgLy8gSGFzaDoweDRjNzgxYjMwCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJ
TkVfTUVNQkVSX1NMT1cod2Vha09iamVjdFJlZlNwYWNlLCAqY2VsbEhlYXBDZWxsVHlwZSwgSlNX
ZWFrT2JqZWN0UmVmKSAvLyBIYXNoOjB4OGVjNjhmMWYKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RF
RklORV9NRU1CRVJfU0xPVyh3aXRoU2NvcGVTcGFjZSwgKmNlbGxIZWFwQ2VsbFR5cGUsIEpTV2l0
aFNjb3BlKQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGZpbmFsaXph
dGlvblJlZ2lzdHJ5U3BhY2UsICpmaW5hbGl6YXRpb25SZWdpc3RyeUNlbGxUeXBlLCBKU0ZpbmFs
aXphdGlvblJlZ2lzdHJ5KQotI2lmIEpTQ19PQkpDX0FQSV9FTkFCTEVECi1EWU5BTUlDX0lTT19T
VUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coYXBpV3JhcHBlck9iamVjdFNwYWNlLCAqYXBpV3Jh
cHBlck9iamVjdEhlYXBDZWxsVHlwZSwgSlNDYWxsYmFja09iamVjdDxKU0FQSVdyYXBwZXJPYmpl
Y3Q+KQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKG9iakNDYWxsYmFj
a0Z1bmN0aW9uU3BhY2UsICpvYmpDQ2FsbGJhY2tGdW5jdGlvbkhlYXBDZWxsVHlwZSwgT2JqQ0Nh
bGxiYWNrRnVuY3Rpb24pIC8vIEhhc2g6MHgxMGY2MTBiOAotI2VuZGlmCi0jaWZkZWYgSlNDX0dM
SUJfQVBJX0VOQUJMRUQKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhh
cGlXcmFwcGVyT2JqZWN0U3BhY2UsICphcGlXcmFwcGVyT2JqZWN0SGVhcENlbGxUeXBlLCBKU0Nh
bGxiYWNrT2JqZWN0PEpTQVBJV3JhcHBlck9iamVjdD4pCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9E
RUZJTkVfTUVNQkVSX1NMT1coanNjQ2FsbGJhY2tGdW5jdGlvblNwYWNlLCAqanNjQ2FsbGJhY2tG
dW5jdGlvbkhlYXBDZWxsVHlwZSwgSlNDQ2FsbGJhY2tGdW5jdGlvbikKLURZTkFNSUNfSVNPX1NV
QlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhjYWxsYmFja0FQSVdyYXBwZXJHbG9iYWxPYmplY3RT
cGFjZSwgKmNhbGxiYWNrQVBJV3JhcHBlckdsb2JhbE9iamVjdEhlYXBDZWxsVHlwZSwgSlNDYWxs
YmFja09iamVjdDxKU0FQSVdyYXBwZXJHbG9iYWxPYmplY3Q+KQotI2VuZGlmCi1EWU5BTUlDX0lT
T19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coaW50bENvbGxhdG9yU3BhY2UsICppbnRsQ29s
bGF0b3JIZWFwQ2VsbFR5cGUsIEludGxDb2xsYXRvcikKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RF
RklORV9NRU1CRVJfU0xPVyhpbnRsRGF0ZVRpbWVGb3JtYXRTcGFjZSwgKmludGxEYXRlVGltZUZv
cm1hdEhlYXBDZWxsVHlwZSwgSW50bERhdGVUaW1lRm9ybWF0KQotRFlOQU1JQ19JU09fU1VCU1BB
Q0VfREVGSU5FX01FTUJFUl9TTE9XKGludGxEaXNwbGF5TmFtZXNTcGFjZSwgKmludGxEaXNwbGF5
TmFtZXNIZWFwQ2VsbFR5cGUsIEludGxEaXNwbGF5TmFtZXMpCi1EWU5BTUlDX0lTT19TVUJTUEFD
RV9ERUZJTkVfTUVNQkVSX1NMT1coaW50bExpc3RGb3JtYXRTcGFjZSwgKmludGxMaXN0Rm9ybWF0
SGVhcENlbGxUeXBlLCBJbnRsTGlzdEZvcm1hdCkKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklO
RV9NRU1CRVJfU0xPVyhpbnRsTG9jYWxlU3BhY2UsICppbnRsTG9jYWxlSGVhcENlbGxUeXBlLCBJ
bnRsTG9jYWxlKQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGludGxO
dW1iZXJGb3JtYXRTcGFjZSwgKmludGxOdW1iZXJGb3JtYXRIZWFwQ2VsbFR5cGUsIEludGxOdW1i
ZXJGb3JtYXQpCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coaW50bFBs
dXJhbFJ1bGVzU3BhY2UsICppbnRsUGx1cmFsUnVsZXNIZWFwQ2VsbFR5cGUsIEludGxQbHVyYWxS
dWxlcykKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhpbnRsUmVsYXRp
dmVUaW1lRm9ybWF0U3BhY2UsICppbnRsUmVsYXRpdmVUaW1lRm9ybWF0SGVhcENlbGxUeXBlLCBJ
bnRsUmVsYXRpdmVUaW1lRm9ybWF0KQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJF
Ul9TTE9XKGludGxTZWdtZW50SXRlcmF0b3JTcGFjZSwgKmludGxTZWdtZW50SXRlcmF0b3JIZWFw
Q2VsbFR5cGUsIEludGxTZWdtZW50SXRlcmF0b3IpCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJ
TkVfTUVNQkVSX1NMT1coaW50bFNlZ21lbnRlclNwYWNlLCAqaW50bFNlZ21lbnRlckhlYXBDZWxs
VHlwZSwgSW50bFNlZ21lbnRlcikKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJf
U0xPVyhpbnRsU2VnbWVudHNTcGFjZSwgKmludGxTZWdtZW50c0hlYXBDZWxsVHlwZSwgSW50bFNl
Z21lbnRzKQotI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RF
RklORV9NRU1CRVJfU0xPVyhqc1RvV2FzbUlDQ2FsbGVlU3BhY2UsICpjZWxsSGVhcENlbGxUeXBl
LCBKU1RvV2FzbUlDQ2FsbGVlKQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9T
TE9XKHdlYkFzc2VtYmx5Q29kZUJsb2NrU3BhY2UsICp3ZWJBc3NlbWJseUNvZGVCbG9ja0hlYXBD
ZWxsVHlwZSwgSlNXZWJBc3NlbWJseUNvZGVCbG9jaykgLy8gSGFzaDoweDlhZDk5NWNkCi1EWU5B
TUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1cod2ViQXNzZW1ibHlFeGNlcHRpb25T
cGFjZSwgKndlYkFzc2VtYmx5RXhjZXB0aW9uSGVhcENlbGxUeXBlLCBKU1dlYkFzc2VtYmx5RXhj
ZXB0aW9uKQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHdlYkFzc2Vt
Ymx5RnVuY3Rpb25TcGFjZSwgKndlYkFzc2VtYmx5RnVuY3Rpb25IZWFwQ2VsbFR5cGUsIFdlYkFz
c2VtYmx5RnVuY3Rpb24pIC8vIEhhc2g6MHg4YjdjMzJkYgotRFlOQU1JQ19JU09fU1VCU1BBQ0Vf
REVGSU5FX01FTUJFUl9TTE9XKHdlYkFzc2VtYmx5R2xvYmFsU3BhY2UsICp3ZWJBc3NlbWJseUds
b2JhbEhlYXBDZWxsVHlwZSwgSlNXZWJBc3NlbWJseUdsb2JhbCkKLURZTkFNSUNfSVNPX1NVQlNQ
QUNFX0RFRklORV9NRU1CRVJfU0xPVyh3ZWJBc3NlbWJseUluc3RhbmNlU3BhY2UsICp3ZWJBc3Nl
bWJseUluc3RhbmNlSGVhcENlbGxUeXBlLCBKU1dlYkFzc2VtYmx5SW5zdGFuY2UpCi1EWU5BTUlD
X0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1cod2ViQXNzZW1ibHlNZW1vcnlTcGFjZSwg
KndlYkFzc2VtYmx5TWVtb3J5SGVhcENlbGxUeXBlLCBKU1dlYkFzc2VtYmx5TWVtb3J5KQotRFlO
QU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHdlYkFzc2VtYmx5TW9kdWxlU3Bh
Y2UsICp3ZWJBc3NlbWJseU1vZHVsZUhlYXBDZWxsVHlwZSwgSlNXZWJBc3NlbWJseU1vZHVsZSkK
LURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh3ZWJBc3NlbWJseU1vZHVs
ZVJlY29yZFNwYWNlLCAqd2ViQXNzZW1ibHlNb2R1bGVSZWNvcmRIZWFwQ2VsbFR5cGUsIFdlYkFz
c2VtYmx5TW9kdWxlUmVjb3JkKQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9T
TE9XKHdlYkFzc2VtYmx5VGFibGVTcGFjZSwgKndlYkFzc2VtYmx5VGFibGVIZWFwQ2VsbFR5cGUs
IEpTV2ViQXNzZW1ibHlUYWJsZSkKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJf
U0xPVyh3ZWJBc3NlbWJseVRhZ1NwYWNlLCAqd2ViQXNzZW1ibHlUYWdIZWFwQ2VsbFR5cGUsIEpT
V2ViQXNzZW1ibHlUYWcpCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1co
d2ViQXNzZW1ibHlXcmFwcGVyRnVuY3Rpb25TcGFjZSwgKmNlbGxIZWFwQ2VsbFR5cGUsIFdlYkFz
c2VtYmx5V3JhcHBlckZ1bmN0aW9uKSAvLyBIYXNoOjB4ZDRhNWZmMDEKLSNlbmRpZgotCi0jdW5k
ZWYgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XCi0KLSNkZWZpbmUgRFlO
QU1JQ19TUEFDRV9BTkRfU0VUX0RFRklORV9NRU1CRVJfU0xPVyhuYW1lLCBoZWFwQ2VsbFR5cGUs
IHR5cGUpIFwKLSAgICBJc29TdWJzcGFjZSogVk06Om5hbWUjI1Nsb3coKSBcCi0gICAgeyBcCi0g
ICAgICAgIEFTU0VSVCghbV8jI25hbWUpOyBcCi0gICAgICAgIGF1dG8gc3BhY2UgPSBtYWtlVW5p
cXVlPFNwYWNlQW5kU2V0PiBJU09fU1VCU1BBQ0VfSU5JVChoZWFwLCBoZWFwQ2VsbFR5cGUsIHR5
cGUpOyBcCi0gICAgICAgIFdURjo6c3RvcmVTdG9yZUZlbmNlKCk7IFwKLSAgICAgICAgbV8jI25h
bWUgPSBXVEZNb3ZlKHNwYWNlKTsgXAotICAgICAgICByZXR1cm4gJm1fIyNuYW1lLT5zcGFjZTsg
XAotICAgIH0KLQotRFlOQU1JQ19TUEFDRV9BTkRfU0VUX0RFRklORV9NRU1CRVJfU0xPVyhldmFs
RXhlY3V0YWJsZVNwYWNlLCAqZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZSwgRXZhbEV4ZWN1
dGFibGUpIC8vIEhhc2g6MHg5NThlM2U5ZAotRFlOQU1JQ19TUEFDRV9BTkRfU0VUX0RFRklORV9N
RU1CRVJfU0xPVyhtb2R1bGVQcm9ncmFtRXhlY3V0YWJsZVNwYWNlLCAqZGVzdHJ1Y3RpYmxlQ2Vs
bEhlYXBDZWxsVHlwZSwgTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUpIC8vIEhhc2g6MHg2NTA2ZmEz
YwotCi0jdW5kZWYgRFlOQU1JQ19TUEFDRV9BTkRfU0VUX0RFRklORV9NRU1CRVJfU0xPVwotCiBK
U0NlbGwqIFZNOjpzZW50aW5lbFNldEJ1Y2tldFNsb3coKQogewogICAgIEFTU0VSVCghbV9zZW50
aW5lbFNldEJ1Y2tldCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgJKHJldmlz
aW9uIDI4NjA4MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgJKHdvcmtp
bmcgY29weSkKQEAgLTI4LDI4ICsyOCwyMyBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUg
IkNhbGxEYXRhLmgiCiAjaW5jbHVkZSAiQ2FsbGVlQml0cy5oIgogI2luY2x1ZGUgIkNvZGVTcGVj
aWFsaXphdGlvbktpbmQuaCIKLSNpbmNsdWRlICJDb21wbGV0ZVN1YnNwYWNlLmgiCiAjaW5jbHVk
ZSAiQ29uY3VycmVudEpTTG9jay5oIgogI2luY2x1ZGUgIkRGR0RvZXNHQ0NoZWNrLmgiCiAjaW5j
bHVkZSAiRGVsZXRlQWxsQ29kZUVmZm9ydC5oIgotI2luY2x1ZGUgIkRpc2FsbG93Vk1FbnRyeS5o
IgogI2luY2x1ZGUgIkV4Y2VwdGlvbkV2ZW50TG9jYXRpb24uaCIKICNpbmNsdWRlICJGdW5jdGlv
bkhhc0V4ZWN1dGVkQ2FjaGUuaCIKLSNpbmNsdWRlICJGdXp6ZXJBZ2VudC5oIgogI2luY2x1ZGUg
IkhlYXAuaCIKICNpbmNsdWRlICJJbnRlZ3JpdHkuaCIKICNpbmNsdWRlICJJbnRyaW5zaWMuaCIK
LSNpbmNsdWRlICJJc29DZWxsU2V0LmgiCi0jaW5jbHVkZSAiSXNvU3Vic3BhY2UuaCIKICNpbmNs
dWRlICJKU0NKU1ZhbHVlLmgiCiAjaW5jbHVkZSAiSlNEYXRlTWF0aC5oIgogI2luY2x1ZGUgIkpT
TG9jay5oIgogI2luY2x1ZGUgIkpTT05BdG9tU3RyaW5nQ2FjaGUuaCIKICNpbmNsdWRlICJNYWNy
b0Fzc2VtYmxlckNvZGVSZWYuaCIKICNpbmNsdWRlICJNaWNyb3Rhc2suaCIKKyNpbmNsdWRlICJO
YXRpdmVGdW5jdGlvbi5oIgogI2luY2x1ZGUgIk51bWVyaWNTdHJpbmdzLmgiCiAjaW5jbHVkZSAi
U21hbGxTdHJpbmdzLmgiCiAjaW5jbHVkZSAiU3Ryb25nLmgiCkBAIC01OCwxMCArNTMsOCBAQAog
I2luY2x1ZGUgIlRodW5rR2VuZXJhdG9yLmgiCiAjaW5jbHVkZSAiVk1UcmFwcy5oIgogI2luY2x1
ZGUgIldhc21Db250ZXh0LmgiCi0jaW5jbHVkZSAiV2F0Y2hwb2ludC5oIgogI2luY2x1ZGUgPHd0
Zi9CdW1wUG9pbnRlckFsbG9jYXRvci5oPgogI2luY2x1ZGUgPHd0Zi9DaGVja2VkQXJpdGhtZXRp
Yy5oPgotI2luY2x1ZGUgPHd0Zi9EYXRlTWF0aC5oPgogI2luY2x1ZGUgPHd0Zi9EZXF1ZS5oPgog
I2luY2x1ZGUgPHd0Zi9Eb3VibHlMaW5rZWRMaXN0Lmg+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQu
aD4KQEAgLTY5LDExICs2Miw5IEBACiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRl
IDx3dGYvSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9TZXRGb3JTY29wZS5oPgotI2luY2x1ZGUg
PHd0Zi9TdGFja0JvdW5kcy5oPgogI2luY2x1ZGUgPHd0Zi9TdGFja1BvaW50ZXIuaD4KICNpbmNs
dWRlIDx3dGYvU3RvcHdhdGNoLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVk
Lmg+Ci0jaW5jbHVkZSA8d3RmL1RocmVhZFNwZWNpZmljLmg+CiAjaW5jbHVkZSA8d3RmL1VuaXF1
ZUFycmF5Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3ltYm9sUmVnaXN0cnkuaD4KICNpbmNsdWRl
IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KQEAgLTgxLDEwICs3Miw2IEBACiAjaW5jbHVkZSA8d3Rm
L0xpc3RIYXNoU2V0Lmg+CiAjZW5kaWYKIAotI2lmIEVOQUJMRShFWENFUFRJT05fU0NPUEVfVkVS
SUZJQ0FUSU9OKQotI2luY2x1ZGUgPHd0Zi9TdGFja1RyYWNlLmg+Ci0jZW5kaWYKLQogLy8gRW5h
YmxlIHRoZSBPYmplY3RpdmUtQyBBUEkgZm9yIHBsYXRmb3JtcyB3aXRoIGEgbW9kZXJuIHJ1bnRp
bWUuIFRoaXMgaGFzIHRvIG1hdGNoIGV4YWN0bHkgd2hhdCB3ZQogLy8gaGF2ZSBpbiBKU0Jhc2Uu
aC4KICNpZiAhZGVmaW5lZChKU0NfT0JKQ19BUElfRU5BQkxFRCkKQEAgLTk4LDE2ICs4NSwxNyBA
QAogbmFtZXNwYWNlIFdURiB7CiBjbGFzcyBSdW5Mb29wOwogY2xhc3MgU2ltcGxlU3RhdHM7Citj
bGFzcyBTdGFja1RyYWNlOwogfSAvLyBuYW1lc3BhY2UgV1RGCiB1c2luZyBXVEY6OlNpbXBsZVN0
YXRzOwordXNpbmcgV1RGOjpTdGFja1RyYWNlOwogCiBuYW1lc3BhY2UgSlNDIHsKIAotY2xhc3Mg
QmFzaWNCbG9ja0xvY2F0aW9uOworY2xhc3MgQXJnTGlzdDsKIGNsYXNzIEJ1aWx0aW5FeGVjdXRh
YmxlczsKIGNsYXNzIEJ5dGVjb2RlSW50cmluc2ljUmVnaXN0cnk7CiBjbGFzcyBDYWxsRnJhbWU7
Ci1jbGFzcyBDYWxsTGlua0luZm87CiBlbnVtIGNsYXNzIENhbGxNb2RlOwogc3RydWN0IENoZWNr
cG9pbnRPU1JFeGl0U2lkZVN0YXRlOwogY2xhc3MgQ29kZUJsb2NrOwpAQCAtMTE2LDEwMSArMTA0
LDQxIEBAIGNsYXNzIENvbW1vbklkZW50aWZpZXJzOwogY2xhc3MgQ29tcGFjdFREWkVudmlyb25t
ZW50TWFwOwogY2xhc3MgQ29uc2VydmF0aXZlUm9vdHM7CiBjbGFzcyBDb250cm9sRmxvd1Byb2Zp
bGVyOwotY2xhc3MgQ3VzdG9tR2V0dGVyU2V0dGVyOwotY2xhc3MgRE9NQXR0cmlidXRlR2V0dGVy
U2V0dGVyOwotY2xhc3MgRGF0ZUluc3RhbmNlOwotY2xhc3MgRXJyb3JJbnN0YW5jZTsKIGNsYXNz
IEV4Y2VwdGlvbjsKIGNsYXNzIEV4Y2VwdGlvblNjb3BlOwotY2xhc3MgRmFzdE1hbGxvY0FsaWdu
ZWRNZW1vcnlBbGxvY2F0b3I7Ci1jbGFzcyBHaWdhY2FnZUFsaWduZWRNZW1vcnlBbGxvY2F0b3I7
Ci1jbGFzcyBIYW5kbGVTdGFjazsKK2NsYXNzIEZ1enplckFnZW50OwogY2xhc3MgSGFzT3duUHJv
cGVydHlDYWNoZTsKIGNsYXNzIEhlYXBBbmFseXplcjsKIGNsYXNzIEhlYXBQcm9maWxlcjsKLWNs
YXNzIElkZW50aWZpZXI7CiBjbGFzcyBJbnRlcnByZXRlcjsKIGNsYXNzIEludGxDYWNoZTsKLWNs
YXNzIEludGxDb2xsYXRvcjsKLWNsYXNzIEludGxEYXRlVGltZUZvcm1hdDsKLWNsYXNzIEludGxE
aXNwbGF5TmFtZXM7Ci1jbGFzcyBJbnRsTGlzdEZvcm1hdDsKLWNsYXNzIEludGxMb2NhbGU7Ci1j
bGFzcyBJbnRsTnVtYmVyRm9ybWF0OwotY2xhc3MgSW50bFBsdXJhbFJ1bGVzOwotY2xhc3MgSW50
bFJlbGF0aXZlVGltZUZvcm1hdDsKLWNsYXNzIEludGxTZWdtZW50SXRlcmF0b3I7Ci1jbGFzcyBJ
bnRsU2VnbWVudGVyOwotY2xhc3MgSW50bFNlZ21lbnRzOwotY2xhc3MgSlNBUElHbG9iYWxPYmpl
Y3Q7Ci1jbGFzcyBKU0FQSVdyYXBwZXJHbG9iYWxPYmplY3Q7Ci1jbGFzcyBKU0FQSVdyYXBwZXJP
YmplY3Q7Ci1jbGFzcyBKU0NDYWxsYmFja0Z1bmN0aW9uOwotY2xhc3MgSlNDYWxsYmFja0NvbnN0
cnVjdG9yOwogY2xhc3MgSlNEZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGU7CiBjbGFzcyBK
U0dsb2JhbE9iamVjdDsKLWNsYXNzIEpTR2xvYmFsTGV4aWNhbEVudmlyb25tZW50OwotY2xhc3Mg
SlNNb2R1bGVOYW1lc3BhY2VPYmplY3Q7Ci1jbGFzcyBKU01vZHVsZVJlY29yZDsKLWNsYXNzIEpT
TmF0aXZlU3RkRnVuY3Rpb247Ci1jbGFzcyBKU05vbkZpbmFsT2JqZWN0OwogY2xhc3MgSlNPYmpl
Y3Q7CiBjbGFzcyBKU1Byb21pc2U7CiBjbGFzcyBKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3I7Ci1j
bGFzcyBKU1J1bkxvb3BUaW1lcjsKLWNsYXNzIEpTV2Vha01hcDsKLWNsYXNzIEpTV2Vha1NldDsK
LWNsYXNzIEpTV2ViQXNzZW1ibHlDb2RlQmxvY2s7Ci1jbGFzcyBKU1dlYkFzc2VtYmx5R2xvYmFs
OwotY2xhc3MgSlNXZWJBc3NlbWJseUluc3RhbmNlOwotY2xhc3MgSlNXZWJBc3NlbWJseU1lbW9y
eTsKLWNsYXNzIEpTV2ViQXNzZW1ibHlNb2R1bGU7Ci1jbGFzcyBKU1dlYkFzc2VtYmx5VGFibGU7
CiBjbGFzcyBKSVRTaXplU3RhdGlzdGljczsKIGNsYXNzIEpJVFRodW5rczsKLWNsYXNzIExMSW50
T2Zmc2V0c0V4dHJhY3RvcjsKIGNsYXNzIE5hdGl2ZUV4ZWN1dGFibGU7Ci1jbGFzcyBPYmpDQ2Fs
bGJhY2tGdW5jdGlvbjsKIGNsYXNzIERlZmVycmVkV29ya1RpbWVyOwogY2xhc3MgUmVnRXhwOwog
Y2xhc3MgUmVnRXhwQ2FjaGU7CiBjbGFzcyBSZWdpc3RlcjsKLWNsYXNzIFJlZ2lzdGVyQXRPZmZz
ZXRMaXN0OwogI2lmIEVOQUJMRShTQU1QTElOR19QUk9GSUxFUikKIGNsYXNzIFNhbXBsaW5nUHJv
ZmlsZXI7CiAjZW5kaWYKIGNsYXNzIFNoYWRvd0NoaWNrZW47CiBjbGFzcyBTaGFyZWRKSVRTdHVi
U2V0OwotY2xhc3MgU2NyaXB0RXhlY3V0YWJsZTsKIGNsYXNzIFNvdXJjZVByb3ZpZGVyOwogY2xh
c3MgU291cmNlUHJvdmlkZXJDYWNoZTsKLWNsYXNzIFN0YWNrRnJhbWU7CiBjbGFzcyBTdHJ1Y3R1
cmU7Ci0jaWYgRU5BQkxFKFJFR0VYUF9UUkFDSU5HKQotY2xhc3MgUmVnRXhwOwotI2VuZGlmCiBj
bGFzcyBTeW1ib2w7Ci1jbGFzcyBUZW1wb3JhbER1cmF0aW9uOwotY2xhc3MgVGVtcG9yYWxJbnN0
YW50OwogY2xhc3MgVHlwZWRBcnJheUNvbnRyb2xsZXI7Ci1jbGFzcyBVbmxpbmtlZENvZGVCbG9j
azsKLWNsYXNzIFVubGlua2VkRXZhbENvZGVCbG9jazsKLWNsYXNzIFVubGlua2VkRnVuY3Rpb25F
eGVjdXRhYmxlOwotY2xhc3MgVW5saW5rZWRQcm9ncmFtQ29kZUJsb2NrOwotY2xhc3MgVW5saW5r
ZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrOwotY2xhc3MgVmlydHVhbFJlZ2lzdGVyOwogY2xhc3Mg
Vk1FbnRyeVNjb3BlOwotY2xhc3MgVGVtcG9yYWxDYWxlbmRhcjsKLWNsYXNzIFRlbXBvcmFsUGxh
aW5UaW1lOwotY2xhc3MgVGVtcG9yYWxUaW1lWm9uZTsKLWNsYXNzIFRvcExldmVsR2xvYmFsT2Jq
ZWN0U2NvcGU7CiBjbGFzcyBUeXBlUHJvZmlsZXI7CiBjbGFzcyBUeXBlUHJvZmlsZXJMb2c7CiBj
bGFzcyBXYXRjaGRvZzsKLWNsYXNzIFdhdGNocG9pbnQ7CiBjbGFzcyBXYXRjaHBvaW50U2V0Owot
Y2xhc3MgV2ViQXNzZW1ibHlGdW5jdGlvbjsKLWNsYXNzIFdlYkFzc2VtYmx5TW9kdWxlUmVjb3Jk
OwogCiAjaWYgRU5BQkxFKERGR19KSVQpICYmIEFTU0VSVF9FTkFCTEVECiAjZGVmaW5lIEVOQUJM
RV9ERkdfRE9FU19HQ19WQUxJREFUSU9OIDEKQEAgLTIyMCwxMCArMTQ4LDYgQEAgY2xhc3MgV2Vi
QXNzZW1ibHlNb2R1bGVSZWNvcmQ7CiAKIGNvbnN0ZXhwciBib29sIHZhbGlkYXRlREZHRG9lc0dD
ID0gRU5BQkxFX0RGR19ET0VTX0dDX1ZBTElEQVRJT047CiAKLWNsYXNzIElzb0hlYXBDZWxsVHlw
ZTsKLXRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlPiBjbGFzcyBJc29JbmxpbmVkSGVhcENlbGxU
eXBlOwotdGVtcGxhdGU8dHlwZW5hbWUgUGFyZW50PiBjbGFzcyBKU0NhbGxiYWNrT2JqZWN0Owot
CiAjaWYgRU5BQkxFKEZUTF9KSVQpCiBuYW1lc3BhY2UgRlRMIHsKIGNsYXNzIFRodW5rczsKQEAg
LTIzNSwxNCArMTU5LDkgQEAgY2xhc3MgRGF0YWJhc2U7CiBuYW1lc3BhY2UgRE9NSklUIHsKIGNs
YXNzIFNpZ25hdHVyZTsKIH0KLW5hbWVzcGFjZSBZYXJyIHsKLWNsYXNzIE1hdGNoaW5nQ29udGV4
dEhvbGRlcjsKLX0KIAogc3RydWN0IEVudHJ5RnJhbWU7Ci1zdHJ1Y3QgSGFzaFRhYmxlOwogc3Ry
dWN0IEluc3RydWN0aW9uOwotc3RydWN0IFZhbHVlUHJvZmlsZTsKIAogY2xhc3MgUXVldWVkVGFz
ayB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoUXVldWVkVGFzayk7CkBAIC0yNjEsOCArMTgw
LDYgQEAgcHJpdmF0ZToKICAgICBSZWY8TWljcm90YXNrPiBtX21pY3JvdGFzazsKIH07CiAKLWNs
YXNzIENvbnNlcnZhdGl2ZVJvb3RzOwotCiBERUNMQVJFX0FMTE9DQVRPUl9XSVRIX0hFQVBfSURF
TlRJRklFUihWTSk7CiAKICNpZiBDT01QSUxFUihNU1ZDKQpAQCAtMzU3LDExICsyNzQsNyBAQCBw
dWJsaWM6CiAjZW5kaWYKIAogICAgIEZ1enplckFnZW50KiBmdXp6ZXJBZ2VudCgpIGNvbnN0IHsg
cmV0dXJuIG1fZnV6emVyQWdlbnQuZ2V0KCk7IH0KLSAgICB2b2lkIHNldEZ1enplckFnZW50KHN0
ZDo6dW5pcXVlX3B0cjxGdXp6ZXJBZ2VudD4mJiBmdXp6ZXJBZ2VudCkKLSAgICB7Ci0gICAgICAg
IFJFTEVBU0VfQVNTRVJUX1dJVEhfTUVTU0FHRSghbV9mdXp6ZXJBZ2VudCwgIk9ubHkgb25lIEZ1
enplckFnZW50IGNhbiBiZSBzcGVjaWZpZWQgYXQgYSB0aW1lLiIpOwotICAgICAgICBtX2Z1enpl
ckFnZW50ID0gV1RGTW92ZShmdXp6ZXJBZ2VudCk7Ci0gICAgfQorICAgIHZvaWQgc2V0RnV6emVy
QWdlbnQoc3RkOjp1bmlxdWVfcHRyPEZ1enplckFnZW50PiYmIGZ1enplckFnZW50KTsKIAogICAg
IHN0YXRpYyB1bnNpZ25lZCBudW1iZXJPZklEcygpIHsgcmV0dXJuIHNfbnVtYmVyT2ZJRHMubG9h
ZCgpOyB9CiAgICAgdW5zaWduZWQgaWQoKSBjb25zdCB7IHJldHVybiBtX2lkOyB9CkBAIC00MTMs
MTQ1ICszMjYsNTggQEAgcHJpdmF0ZToKIAogcHVibGljOgogICAgIEhlYXAgaGVhcDsKLSAgICAK
LSAgICBzdGQ6OnVuaXF1ZV9wdHI8RmFzdE1hbGxvY0FsaWduZWRNZW1vcnlBbGxvY2F0b3I+IGZh
c3RNYWxsb2NBbGxvY2F0b3I7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPEdpZ2FjYWdlQWxpZ25lZE1l
bW9yeUFsbG9jYXRvcj4gcHJpbWl0aXZlR2lnYWNhZ2VBbGxvY2F0b3I7Ci0gICAgc3RkOjp1bmlx
dWVfcHRyPEdpZ2FjYWdlQWxpZ25lZE1lbW9yeUFsbG9jYXRvcj4ganNWYWx1ZUdpZ2FjYWdlQWxs
b2NhdG9yOwotCi0gICAgc3RkOjp1bmlxdWVfcHRyPEhlYXBDZWxsVHlwZT4gYXV4aWxpYXJ5SGVh
cENlbGxUeXBlOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxIZWFwQ2VsbFR5cGU+IGltbXV0YWJsZUJ1
dHRlcmZseUhlYXBDZWxsVHlwZTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SGVhcENlbGxUeXBlPiBj
ZWxsSGVhcENlbGxUeXBlOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxIZWFwQ2VsbFR5cGU+IGRlc3Ry
dWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGU7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPElzb0hlYXBDZWxs
VHlwZT4gYXBpR2xvYmFsT2JqZWN0SGVhcENlbGxUeXBlOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxJ
c29IZWFwQ2VsbFR5cGU+IGNhbGxiYWNrQ29uc3RydWN0b3JIZWFwQ2VsbFR5cGU7Ci0gICAgc3Rk
Ojp1bmlxdWVfcHRyPElzb0hlYXBDZWxsVHlwZT4gY2FsbGJhY2tHbG9iYWxPYmplY3RIZWFwQ2Vs
bFR5cGU7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPElzb0hlYXBDZWxsVHlwZT4gY2FsbGJhY2tPYmpl
Y3RIZWFwQ2VsbFR5cGU7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPElzb0hlYXBDZWxsVHlwZT4gY3Vz
dG9tR2V0dGVyRnVuY3Rpb25IZWFwQ2VsbFR5cGU7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPElzb0hl
YXBDZWxsVHlwZT4gY3VzdG9tU2V0dGVyRnVuY3Rpb25IZWFwQ2VsbFR5cGU7Ci0gICAgc3RkOjp1
bmlxdWVfcHRyPElzb0hlYXBDZWxsVHlwZT4gZGF0ZUluc3RhbmNlSGVhcENlbGxUeXBlOwotICAg
IHN0ZDo6dW5pcXVlX3B0cjxJc29IZWFwQ2VsbFR5cGU+IGVycm9ySW5zdGFuY2VIZWFwQ2VsbFR5
cGU7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPElzb0hlYXBDZWxsVHlwZT4gZmluYWxpemF0aW9uUmVn
aXN0cnlDZWxsVHlwZTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SXNvSGVhcENlbGxUeXBlPiBnbG9i
YWxMZXhpY2FsRW52aXJvbm1lbnRIZWFwQ2VsbFR5cGU7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPElz
b0hlYXBDZWxsVHlwZT4gZ2xvYmFsT2JqZWN0SGVhcENlbGxUeXBlOwotICAgIHN0ZDo6dW5pcXVl
X3B0cjxJc29IZWFwQ2VsbFR5cGU+IGluamVjdGVkU2NyaXB0SG9zdFNwYWNlSGVhcENlbGxUeXBl
OwotICAgIHN0ZDo6dW5pcXVlX3B0cjxJc29IZWFwQ2VsbFR5cGU+IGphdmFTY3JpcHRDYWxsRnJh
bWVIZWFwQ2VsbFR5cGU7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPElzb0hlYXBDZWxsVHlwZT4ganNN
b2R1bGVSZWNvcmRIZWFwQ2VsbFR5cGU7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPElzb0hlYXBDZWxs
VHlwZT4gbW9kdWxlTmFtZXNwYWNlT2JqZWN0SGVhcENlbGxUeXBlOwotICAgIHN0ZDo6dW5pcXVl
X3B0cjxJc29IZWFwQ2VsbFR5cGU+IG5hdGl2ZVN0ZEZ1bmN0aW9uSGVhcENlbGxUeXBlOwotICAg
IHN0ZDo6dW5pcXVlX3B0cjxJc29JbmxpbmVkSGVhcENlbGxUeXBlPEpTU3RyaW5nPj4gc3RyaW5n
SGVhcENlbGxUeXBlOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxJc29IZWFwQ2VsbFR5cGU+IHdlYWtN
YXBIZWFwQ2VsbFR5cGU7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPElzb0hlYXBDZWxsVHlwZT4gd2Vh
a1NldEhlYXBDZWxsVHlwZTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SlNEZXN0cnVjdGlibGVPYmpl
Y3RIZWFwQ2VsbFR5cGU+IGRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZTsKLSNpZiBKU0Nf
T0JKQ19BUElfRU5BQkxFRAotICAgIHN0ZDo6dW5pcXVlX3B0cjxJc29IZWFwQ2VsbFR5cGU+IGFw
aVdyYXBwZXJPYmplY3RIZWFwQ2VsbFR5cGU7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPElzb0hlYXBD
ZWxsVHlwZT4gb2JqQ0NhbGxiYWNrRnVuY3Rpb25IZWFwQ2VsbFR5cGU7Ci0jZW5kaWYKLSNpZmRl
ZiBKU0NfR0xJQl9BUElfRU5BQkxFRAotICAgIHN0ZDo6dW5pcXVlX3B0cjxJc29IZWFwQ2VsbFR5
cGU+IGFwaVdyYXBwZXJPYmplY3RIZWFwQ2VsbFR5cGU7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPElz
b0hlYXBDZWxsVHlwZT4gY2FsbGJhY2tBUElXcmFwcGVyR2xvYmFsT2JqZWN0SGVhcENlbGxUeXBl
OwotICAgIHN0ZDo6dW5pcXVlX3B0cjxJc29IZWFwQ2VsbFR5cGU+IGpzY0NhbGxiYWNrRnVuY3Rp
b25IZWFwQ2VsbFR5cGU7Ci0jZW5kaWYKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SXNvSGVhcENlbGxU
eXBlPiBpbnRsQ29sbGF0b3JIZWFwQ2VsbFR5cGU7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPElzb0hl
YXBDZWxsVHlwZT4gaW50bERhdGVUaW1lRm9ybWF0SGVhcENlbGxUeXBlOwotICAgIHN0ZDo6dW5p
cXVlX3B0cjxJc29IZWFwQ2VsbFR5cGU+IGludGxEaXNwbGF5TmFtZXNIZWFwQ2VsbFR5cGU7Ci0g
ICAgc3RkOjp1bmlxdWVfcHRyPElzb0hlYXBDZWxsVHlwZT4gaW50bExpc3RGb3JtYXRIZWFwQ2Vs
bFR5cGU7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPElzb0hlYXBDZWxsVHlwZT4gaW50bExvY2FsZUhl
YXBDZWxsVHlwZTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SXNvSGVhcENlbGxUeXBlPiBpbnRsTnVt
YmVyRm9ybWF0SGVhcENlbGxUeXBlOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxJc29IZWFwQ2VsbFR5
cGU+IGludGxQbHVyYWxSdWxlc0hlYXBDZWxsVHlwZTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SXNv
SGVhcENlbGxUeXBlPiBpbnRsUmVsYXRpdmVUaW1lRm9ybWF0SGVhcENlbGxUeXBlOwotICAgIHN0
ZDo6dW5pcXVlX3B0cjxJc29IZWFwQ2VsbFR5cGU+IGludGxTZWdtZW50SXRlcmF0b3JIZWFwQ2Vs
bFR5cGU7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPElzb0hlYXBDZWxsVHlwZT4gaW50bFNlZ21lbnRl
ckhlYXBDZWxsVHlwZTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SXNvSGVhcENlbGxUeXBlPiBpbnRs
U2VnbWVudHNIZWFwQ2VsbFR5cGU7Ci0jaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQotICAgIHN0ZDo6
dW5pcXVlX3B0cjxJc29IZWFwQ2VsbFR5cGU+IHdlYkFzc2VtYmx5Q29kZUJsb2NrSGVhcENlbGxU
eXBlOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxJc29IZWFwQ2VsbFR5cGU+IHdlYkFzc2VtYmx5RXhj
ZXB0aW9uSGVhcENlbGxUeXBlOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxJc29IZWFwQ2VsbFR5cGU+
IHdlYkFzc2VtYmx5RnVuY3Rpb25IZWFwQ2VsbFR5cGU7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPElz
b0hlYXBDZWxsVHlwZT4gd2ViQXNzZW1ibHlHbG9iYWxIZWFwQ2VsbFR5cGU7Ci0gICAgc3RkOjp1
bmlxdWVfcHRyPElzb0hlYXBDZWxsVHlwZT4gd2ViQXNzZW1ibHlJbnN0YW5jZUhlYXBDZWxsVHlw
ZTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SXNvSGVhcENlbGxUeXBlPiB3ZWJBc3NlbWJseU1lbW9y
eUhlYXBDZWxsVHlwZTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SXNvSGVhcENlbGxUeXBlPiB3ZWJB
c3NlbWJseU1vZHVsZUhlYXBDZWxsVHlwZTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SXNvSGVhcENl
bGxUeXBlPiB3ZWJBc3NlbWJseU1vZHVsZVJlY29yZEhlYXBDZWxsVHlwZTsKLSAgICBzdGQ6OnVu
aXF1ZV9wdHI8SXNvSGVhcENlbGxUeXBlPiB3ZWJBc3NlbWJseVRhYmxlSGVhcENlbGxUeXBlOwot
ICAgIHN0ZDo6dW5pcXVlX3B0cjxJc29IZWFwQ2VsbFR5cGU+IHdlYkFzc2VtYmx5VGFnSGVhcENl
bGxUeXBlOwotI2VuZGlmCisKKyAgICBjb25zdCBIZWFwQ2VsbFR5cGUmIGNlbGxIZWFwQ2VsbFR5
cGUoKSB7IHJldHVybiBoZWFwLmNlbGxIZWFwQ2VsbFR5cGU7IH0KKyAgICBjb25zdCBKU0Rlc3Ry
dWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSYgZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBl
KCkgeyByZXR1cm4gaGVhcC5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGU7IH07CiAKICNp
ZiBFTkFCTEUoSklUKQogICAgIHN0ZDo6dW5pcXVlX3B0cjxKSVRTaXplU3RhdGlzdGljcz4gaml0
U2l6ZVN0YXRpc3RpY3M7CiAjZW5kaWYKICAgICAKLSAgICBDb21wbGV0ZVN1YnNwYWNlIHByaW1p
dGl2ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2U7IC8vIFR5cGVkIGFycmF5cywgc3RyaW5ncywgYml0
dmVjdG9ycywgZXRjIGdvIGhlcmUuCi0gICAgQ29tcGxldGVTdWJzcGFjZSBqc1ZhbHVlR2lnYWNh
Z2VBdXhpbGlhcnlTcGFjZTsgLy8gQnV0dGVyZmxpZXMsIGFycmF5cyBvZiBKU1ZhbHVlcywgZXRj
IGdvIGhlcmUuCi0gICAgQ29tcGxldGVTdWJzcGFjZSBpbW11dGFibGVCdXR0ZXJmbHlKU1ZhbHVl
R2lnYWNhZ2VBdXhpbGlhcnlTcGFjZTsgLy8gSlNJbW11dGFibGVCdXR0ZXJmbHkgZ29lcyBoZXJl
LgotCi0gICAgLy8gV2UgbWFrZSBjcm9zcy1jdXR0aW5nIGFzc3VtcHRpb25zIGFib3V0IHR5cGVk
IGFycmF5cyBiZWluZyBpbiB0aGUgcHJpbWl0aXZlIEdpZ2FjYWdlIGFuZCBidXR0ZXJmbGllcwot
ICAgIC8vIGJlaW5nIGluIHRoZSBKU1ZhbHVlIGdpZ2FjYWdlLiBGb3Igc29tZSB0eXBlcywgaXQn
cyBzdXBlciBvYnZpb3VzIHdoZXJlIHRoZXkgc2hvdWxkIGdvLCBhbmQgc28gd2UKLSAgICAvLyBj
YW4gaGFyZGNvZGUgdGhhdCBmYWN0LiBCdXQgc29tZXRpbWVzIGl0J3Mgbm90IGNsZWFyLCBzbyB3
ZSBhYnN0cmFjdCBpdCBieSBoYXZpbmcgYSBHaWdhY2FnZTo6S2luZAotICAgIC8vIGNvbnN0YW50
IHNvbWV3aGVyZS4KLSAgICAvLyBGSVhNRTogTWF5YmUgaXQgd291bGQgYmUgYmV0dGVyIGlmIGV2
ZXJ5b25lIGFic3RyYWN0ZWQgdGhpcz8KLSAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTc1MjQ4Ci0gICAgQUxXQVlTX0lOTElORSBDb21wbGV0ZVN1YnNwYWNl
JiBnaWdhY2FnZUF1eGlsaWFyeVNwYWNlKEdpZ2FjYWdlOjpLaW5kIGtpbmQpCi0gICAgewotICAg
ICAgICBzd2l0Y2ggKGtpbmQpIHsKLSAgICAgICAgY2FzZSBHaWdhY2FnZTo6UHJpbWl0aXZlOgot
ICAgICAgICAgICAgcmV0dXJuIHByaW1pdGl2ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2U7Ci0gICAg
ICAgIGNhc2UgR2lnYWNhZ2U6OkpTVmFsdWU6Ci0gICAgICAgICAgICByZXR1cm4ganNWYWx1ZUdp
Z2FjYWdlQXV4aWxpYXJ5U3BhY2U7Ci0gICAgICAgIGNhc2UgR2lnYWNhZ2U6Ok51bWJlck9mS2lu
ZHM6Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBSRUxFQVNFX0FTU0VS
VF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm4gcHJpbWl0aXZlR2lnYWNhZ2VBdXhpbGlh
cnlTcGFjZTsKLSAgICB9Ci0gICAgCi0gICAgLy8gV2hlbmV2ZXIgcG9zc2libGUsIHVzZSBzdWJz
cGFjZUZvcjxDZWxsVHlwZT4odm0pIHRvIGdldCBvbmUgb2YgdGhlc2Ugc3Vic3BhY2VzLgotICAg
IENvbXBsZXRlU3Vic3BhY2UgY2VsbFNwYWNlOwotICAgIENvbXBsZXRlU3Vic3BhY2UgdmFyaWFi
bGVTaXplZENlbGxTcGFjZTsgLy8gRklYTUU6IFRoaXMgc3BhY2UgaXMgcHJvYmxlbWF0aWMgYmVj
YXVzZSB3ZSBoYXZlIHRoaW5ncyBpbiBoZXJlIGxpa2UgRGlyZWN0QXJndW1lbnRzIGFuZCBTY29w
ZWRBcmd1bWVudHM7IHRob3NlIHNob3VsZCBiZSBzcGxpdCBpbnRvIEpTVmFsdWVPT0IgY2VsbHMg
YW5kIEpTVmFsdWVTdHJpY3QgYXV4aWxpYXJpZXMuIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xODI4NTgKLSAgICBDb21wbGV0ZVN1YnNwYWNlIGRlc3RydWN0aWJsZU9i
amVjdFNwYWNlOwotICAgIAotICAgIElzb1N1YnNwYWNlIGFycmF5U3BhY2U7Ci0gICAgSXNvU3Vi
c3BhY2UgYmlnSW50U3BhY2U7Ci0gICAgSXNvU3Vic3BhY2UgY2FsbGVlU3BhY2U7Ci0gICAgSXNv
U3Vic3BhY2UgY2xvbmVkQXJndW1lbnRzU3BhY2U7Ci0gICAgSXNvU3Vic3BhY2UgY3VzdG9tR2V0
dGVyU2V0dGVyU3BhY2U7Ci0gICAgSXNvU3Vic3BhY2UgZGF0ZUluc3RhbmNlU3BhY2U7Ci0gICAg
SXNvU3Vic3BhY2UgZG9tQXR0cmlidXRlR2V0dGVyU2V0dGVyU3BhY2U7Ci0gICAgSXNvU3Vic3Bh
Y2UgZXhjZXB0aW9uU3BhY2U7Ci0gICAgSXNvU3Vic3BhY2UgZXhlY3V0YWJsZVRvQ29kZUJsb2Nr
RWRnZVNwYWNlOwotICAgIElzb1N1YnNwYWNlIGZ1bmN0aW9uU3BhY2U7Ci0gICAgSXNvU3Vic3Bh
Y2UgZ2V0dGVyU2V0dGVyU3BhY2U7Ci0gICAgSXNvU3Vic3BhY2UgZ2xvYmFsTGV4aWNhbEVudmly
b25tZW50U3BhY2U7Ci0gICAgSXNvU3Vic3BhY2UgaW50ZXJuYWxGdW5jdGlvblNwYWNlOwotICAg
IElzb1N1YnNwYWNlIGpzUHJveHlTcGFjZTsKLSAgICBJc29TdWJzcGFjZSBuYXRpdmVFeGVjdXRh
YmxlU3BhY2U7Ci0gICAgSXNvU3Vic3BhY2UgbnVtYmVyT2JqZWN0U3BhY2U7Ci0gICAgSXNvU3Vi
c3BhY2UgcGxhaW5PYmplY3RTcGFjZTsKLSAgICBJc29TdWJzcGFjZSBwcm9taXNlU3BhY2U7Ci0g
ICAgSXNvU3Vic3BhY2UgcHJvcGVydHlOYW1lRW51bWVyYXRvclNwYWNlOwotICAgIElzb1N1YnNw
YWNlIHByb3BlcnR5VGFibGVTcGFjZTsKLSAgICBJc29TdWJzcGFjZSByZWdFeHBTcGFjZTsKLSAg
ICBJc29TdWJzcGFjZSByZWdFeHBPYmplY3RTcGFjZTsKLSAgICBJc29TdWJzcGFjZSByb3BlU3Ry
aW5nU3BhY2U7Ci0gICAgSXNvU3Vic3BhY2Ugc2NvcGVkQXJndW1lbnRzU3BhY2U7Ci0gICAgSXNv
U3Vic3BhY2Ugc3BhcnNlQXJyYXlWYWx1ZU1hcFNwYWNlOwotICAgIElzb1N1YnNwYWNlIHN0cmlu
Z1NwYWNlOwotICAgIElzb1N1YnNwYWNlIHN0cmluZ09iamVjdFNwYWNlOwotICAgIElzb1N1YnNw
YWNlIHN0cnVjdHVyZUNoYWluU3BhY2U7Ci0gICAgSXNvU3Vic3BhY2Ugc3RydWN0dXJlUmFyZURh
dGFTcGFjZTsKLSAgICBJc29TdWJzcGFjZSBzdHJ1Y3R1cmVTcGFjZTsKLSAgICBJc29TdWJzcGFj
ZSBicmFuZGVkU3RydWN0dXJlU3BhY2U7Ci0gICAgSXNvU3Vic3BhY2Ugc3ltYm9sVGFibGVTcGFj
ZTsKKyAgICBBTFdBWVNfSU5MSU5FIENvbXBsZXRlU3Vic3BhY2UmIHByaW1pdGl2ZUdpZ2FjYWdl
QXV4aWxpYXJ5U3BhY2UoKSB7IHJldHVybiBoZWFwLnByaW1pdGl2ZUdpZ2FjYWdlQXV4aWxpYXJ5
U3BhY2U7IH0KKyAgICBBTFdBWVNfSU5MSU5FIENvbXBsZXRlU3Vic3BhY2UmIGpzVmFsdWVHaWdh
Y2FnZUF1eGlsaWFyeVNwYWNlKCkgeyByZXR1cm4gaGVhcC5qc1ZhbHVlR2lnYWNhZ2VBdXhpbGlh
cnlTcGFjZTsgfQorICAgIEFMV0FZU19JTkxJTkUgQ29tcGxldGVTdWJzcGFjZSYgaW1tdXRhYmxl
QnV0dGVyZmx5SlNWYWx1ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UoKSB7IHJldHVybiBoZWFwLmlt
bXV0YWJsZUJ1dHRlcmZseUpTVmFsdWVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlOyB9CisgICAgQUxX
QVlTX0lOTElORSBDb21wbGV0ZVN1YnNwYWNlJiBnaWdhY2FnZUF1eGlsaWFyeVNwYWNlKEdpZ2Fj
YWdlOjpLaW5kIGtpbmQpIHsgcmV0dXJuIGhlYXAuZ2lnYWNhZ2VBdXhpbGlhcnlTcGFjZShraW5k
KTsgfQorICAgIEFMV0FZU19JTkxJTkUgQ29tcGxldGVTdWJzcGFjZSYgY2VsbFNwYWNlKCkgeyBy
ZXR1cm4gaGVhcC5jZWxsU3BhY2U7IH0KKyAgICBBTFdBWVNfSU5MSU5FIENvbXBsZXRlU3Vic3Bh
Y2UmIHZhcmlhYmxlU2l6ZWRDZWxsU3BhY2UoKSB7IHJldHVybiBoZWFwLnZhcmlhYmxlU2l6ZWRD
ZWxsU3BhY2U7IH0KKyAgICBBTFdBWVNfSU5MSU5FIENvbXBsZXRlU3Vic3BhY2UmIGRlc3RydWN0
aWJsZU9iamVjdFNwYWNlKCkgeyByZXR1cm4gaGVhcC5kZXN0cnVjdGlibGVPYmplY3RTcGFjZTsg
fQorCisgICAgQUxXQVlTX0lOTElORSBJc29TdWJzcGFjZSYgYXJyYXlTcGFjZSgpIHsgcmV0dXJu
IGhlYXAuYXJyYXlTcGFjZTsgfQorICAgIEFMV0FZU19JTkxJTkUgSXNvU3Vic3BhY2UmIGJpZ0lu
dFNwYWNlKCkgeyByZXR1cm4gaGVhcC5iaWdJbnRTcGFjZTsgfQorICAgIEFMV0FZU19JTkxJTkUg
SXNvU3Vic3BhY2UmIGNhbGxlZVNwYWNlKCkgeyByZXR1cm4gaGVhcC5jYWxsZWVTcGFjZTsgfQor
ICAgIEFMV0FZU19JTkxJTkUgSXNvU3Vic3BhY2UmIGNsb25lZEFyZ3VtZW50c1NwYWNlKCkgeyBy
ZXR1cm4gaGVhcC5jbG9uZWRBcmd1bWVudHNTcGFjZTsgfQorICAgIEFMV0FZU19JTkxJTkUgSXNv
U3Vic3BhY2UmIGN1c3RvbUdldHRlclNldHRlclNwYWNlKCkgeyByZXR1cm4gaGVhcC5jdXN0b21H
ZXR0ZXJTZXR0ZXJTcGFjZTsgfQorICAgIEFMV0FZU19JTkxJTkUgSXNvU3Vic3BhY2UmIGRhdGVJ
bnN0YW5jZVNwYWNlKCkgeyByZXR1cm4gaGVhcC5kYXRlSW5zdGFuY2VTcGFjZTsgfQorICAgIEFM
V0FZU19JTkxJTkUgSXNvU3Vic3BhY2UmIGRvbUF0dHJpYnV0ZUdldHRlclNldHRlclNwYWNlKCkg
eyByZXR1cm4gaGVhcC5kb21BdHRyaWJ1dGVHZXR0ZXJTZXR0ZXJTcGFjZTsgfQorICAgIEFMV0FZ
U19JTkxJTkUgSXNvU3Vic3BhY2UmIGV4Y2VwdGlvblNwYWNlKCkgeyByZXR1cm4gaGVhcC5leGNl
cHRpb25TcGFjZTsgfQorICAgIEFMV0FZU19JTkxJTkUgSXNvU3Vic3BhY2UmIGV4ZWN1dGFibGVU
b0NvZGVCbG9ja0VkZ2VTcGFjZSgpIHsgcmV0dXJuIGhlYXAuZXhlY3V0YWJsZVRvQ29kZUJsb2Nr
RWRnZVNwYWNlOyB9CisgICAgQUxXQVlTX0lOTElORSBJc29TdWJzcGFjZSYgZnVuY3Rpb25TcGFj
ZSgpIHsgcmV0dXJuIGhlYXAuZnVuY3Rpb25TcGFjZTsgfQorICAgIEFMV0FZU19JTkxJTkUgSXNv
U3Vic3BhY2UmIGdldHRlclNldHRlclNwYWNlKCkgeyByZXR1cm4gaGVhcC5nZXR0ZXJTZXR0ZXJT
cGFjZTsgfQorICAgIEFMV0FZU19JTkxJTkUgSXNvU3Vic3BhY2UmIGdsb2JhbExleGljYWxFbnZp
cm9ubWVudFNwYWNlKCkgeyByZXR1cm4gaGVhcC5nbG9iYWxMZXhpY2FsRW52aXJvbm1lbnRTcGFj
ZTsgfQorICAgIEFMV0FZU19JTkxJTkUgSXNvU3Vic3BhY2UmIGludGVybmFsRnVuY3Rpb25TcGFj
ZSgpIHsgcmV0dXJuIGhlYXAuaW50ZXJuYWxGdW5jdGlvblNwYWNlOyB9CisgICAgQUxXQVlTX0lO
TElORSBJc29TdWJzcGFjZSYganNQcm94eVNwYWNlKCkgeyByZXR1cm4gaGVhcC5qc1Byb3h5U3Bh
Y2U7IH0KKyAgICBBTFdBWVNfSU5MSU5FIElzb1N1YnNwYWNlJiBuYXRpdmVFeGVjdXRhYmxlU3Bh
Y2UoKSB7IHJldHVybiBoZWFwLm5hdGl2ZUV4ZWN1dGFibGVTcGFjZTsgfQorICAgIEFMV0FZU19J
TkxJTkUgSXNvU3Vic3BhY2UmIG51bWJlck9iamVjdFNwYWNlKCkgeyByZXR1cm4gaGVhcC5udW1i
ZXJPYmplY3RTcGFjZTsgfQorICAgIEFMV0FZU19JTkxJTkUgSXNvU3Vic3BhY2UmIHBsYWluT2Jq
ZWN0U3BhY2UoKSB7IHJldHVybiBoZWFwLnBsYWluT2JqZWN0U3BhY2U7IH0KKyAgICBBTFdBWVNf
SU5MSU5FIElzb1N1YnNwYWNlJiBwcm9taXNlU3BhY2UoKSB7IHJldHVybiBoZWFwLnByb21pc2VT
cGFjZTsgfQorICAgIEFMV0FZU19JTkxJTkUgSXNvU3Vic3BhY2UmIHByb3BlcnR5TmFtZUVudW1l
cmF0b3JTcGFjZSgpIHsgcmV0dXJuIGhlYXAucHJvcGVydHlOYW1lRW51bWVyYXRvclNwYWNlOyB9
CisgICAgQUxXQVlTX0lOTElORSBJc29TdWJzcGFjZSYgcHJvcGVydHlUYWJsZVNwYWNlKCkgeyBy
ZXR1cm4gaGVhcC5wcm9wZXJ0eVRhYmxlU3BhY2U7IH0KKyAgICBBTFdBWVNfSU5MSU5FIElzb1N1
YnNwYWNlJiByZWdFeHBTcGFjZSgpIHsgcmV0dXJuIGhlYXAucmVnRXhwU3BhY2U7IH0KKyAgICBB
TFdBWVNfSU5MSU5FIElzb1N1YnNwYWNlJiByZWdFeHBPYmplY3RTcGFjZSgpIHsgcmV0dXJuIGhl
YXAucmVnRXhwT2JqZWN0U3BhY2U7IH0KKyAgICBBTFdBWVNfSU5MSU5FIElzb1N1YnNwYWNlJiBy
b3BlU3RyaW5nU3BhY2UoKSB7IHJldHVybiBoZWFwLnJvcGVTdHJpbmdTcGFjZTsgfQorICAgIEFM
V0FZU19JTkxJTkUgSXNvU3Vic3BhY2UmIHNjb3BlZEFyZ3VtZW50c1NwYWNlKCkgeyByZXR1cm4g
aGVhcC5zY29wZWRBcmd1bWVudHNTcGFjZTsgfQorICAgIEFMV0FZU19JTkxJTkUgSXNvU3Vic3Bh
Y2UmIHNwYXJzZUFycmF5VmFsdWVNYXBTcGFjZSgpIHsgcmV0dXJuIGhlYXAuc3BhcnNlQXJyYXlW
YWx1ZU1hcFNwYWNlOyB9CisgICAgQUxXQVlTX0lOTElORSBJc29TdWJzcGFjZSYgc3RyaW5nU3Bh
Y2UoKSB7IHJldHVybiBoZWFwLnN0cmluZ1NwYWNlOyB9CisgICAgQUxXQVlTX0lOTElORSBJc29T
dWJzcGFjZSYgc3RyaW5nT2JqZWN0U3BhY2UoKSB7IHJldHVybiBoZWFwLnN0cmluZ09iamVjdFNw
YWNlOyB9CisgICAgQUxXQVlTX0lOTElORSBJc29TdWJzcGFjZSYgc3RydWN0dXJlQ2hhaW5TcGFj
ZSgpIHsgcmV0dXJuIGhlYXAuc3RydWN0dXJlQ2hhaW5TcGFjZTsgfQorICAgIEFMV0FZU19JTkxJ
TkUgSXNvU3Vic3BhY2UmIHN0cnVjdHVyZVJhcmVEYXRhU3BhY2UoKSB7IHJldHVybiBoZWFwLnN0
cnVjdHVyZVJhcmVEYXRhU3BhY2U7IH0KKyAgICBBTFdBWVNfSU5MSU5FIElzb1N1YnNwYWNlJiBz
dHJ1Y3R1cmVTcGFjZSgpIHsgcmV0dXJuIGhlYXAuc3RydWN0dXJlU3BhY2U7IH0KKyAgICBBTFdB
WVNfSU5MSU5FIElzb1N1YnNwYWNlJiBicmFuZGVkU3RydWN0dXJlU3BhY2UoKSB7IHJldHVybiBo
ZWFwLmJyYW5kZWRTdHJ1Y3R1cmVTcGFjZTsgfQorICAgIEFMV0FZU19JTkxJTkUgSXNvU3Vic3Bh
Y2UmIHN5bWJvbFRhYmxlU3BhY2UoKSB7IHJldHVybiBoZWFwLnN5bWJvbFRhYmxlU3BhY2U7IH0K
IAogI2RlZmluZSBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKG5hbWUpIFwKICAg
ICB0ZW1wbGF0ZTxTdWJzcGFjZUFjY2VzcyBtb2RlPiBcCi0gICAgSXNvU3Vic3BhY2UqIG5hbWUo
KSBcCi0gICAgeyBcCi0gICAgICAgIGlmIChtXyMjbmFtZSB8fCBtb2RlID09IFN1YnNwYWNlQWNj
ZXNzOjpDb25jdXJyZW50bHkpIFwKLSAgICAgICAgICAgIHJldHVybiBtXyMjbmFtZS5nZXQoKTsg
XAotICAgICAgICByZXR1cm4gbmFtZSMjU2xvdygpOyBcCi0gICAgfSBcCi0gICAgSlNfRVhQT1JU
X1BSSVZBVEUgSXNvU3Vic3BhY2UqIG5hbWUjI1Nsb3coKTsgXAotICAgIHN0ZDo6dW5pcXVlX3B0
cjxJc29TdWJzcGFjZT4gbV8jI25hbWU7Ci0KKyAgICBBTFdBWVNfSU5MSU5FIElzb1N1YnNwYWNl
KiBuYW1lKCkgeyByZXR1cm4gaGVhcC5uYW1lPG1vZGU+KCk7IH0KIAogI2lmIEpTQ19PQkpDX0FQ
SV9FTkFCTEVECiAgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihhcGlXcmFw
cGVyT2JqZWN0U3BhY2UpCkBAIC02NTcsNzQgKzQ4MywyMyBAQCBwdWJsaWM6CiAjZW5kaWYKIAog
I3VuZGVmIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIKLSAgICAKLSAgICBJc29D
ZWxsU2V0IGV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2VzV2l0aENvbnN0cmFpbnRzOwotICAgIElz
b0NlbGxTZXQgZXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZXNXaXRoRmluYWxpemVyczsKKworICAg
IEFMV0FZU19JTkxJTkUgSXNvQ2VsbFNldCYgZXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZXNXaXRo
Q29uc3RyYWludHMoKSB7IHJldHVybiBoZWFwLmV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2VzV2l0
aENvbnN0cmFpbnRzOyB9CisgICAgQUxXQVlTX0lOTElORSBJc29DZWxsU2V0JiBleGVjdXRhYmxl
VG9Db2RlQmxvY2tFZGdlc1dpdGhGaW5hbGl6ZXJzKCkgeyByZXR1cm4gaGVhcC5leGVjdXRhYmxl
VG9Db2RlQmxvY2tFZGdlc1dpdGhGaW5hbGl6ZXJzOyB9CiAKICNkZWZpbmUgRFlOQU1JQ19TUEFD
RV9BTkRfU0VUX0RFRklORV9NRU1CRVIobmFtZSkgXAogICAgIHRlbXBsYXRlPFN1YnNwYWNlQWNj
ZXNzIG1vZGU+IFwKLSAgICBJc29TdWJzcGFjZSogbmFtZSgpIFwKLSAgICB7IFwKLSAgICAgICAg
aWYgKGF1dG8qIHNwYWNlQW5kU2V0ID0gbV8jI25hbWUuZ2V0KCkpIFwKLSAgICAgICAgICAgIHJl
dHVybiAmc3BhY2VBbmRTZXQtPnNwYWNlOyBcCi0gICAgICAgIGlmIChtb2RlID09IFN1YnNwYWNl
QWNjZXNzOjpDb25jdXJyZW50bHkpIFwKLSAgICAgICAgICAgIHJldHVybiBudWxscHRyOyBcCi0g
ICAgICAgIHJldHVybiBuYW1lIyNTbG93KCk7IFwKLSAgICB9IFwKLSAgICBJc29TdWJzcGFjZSog
bmFtZSMjU2xvdygpOyBcCi0gICAgc3RkOjp1bmlxdWVfcHRyPFNwYWNlQW5kU2V0PiBtXyMjbmFt
ZTsKLSAgICAKLSAgICBzdHJ1Y3QgU3BhY2VBbmRTZXQgewotICAgICAgICBXVEZfTUFLRV9TVFJV
Q1RfRkFTVF9BTExPQ0FURUQ7CisgICAgQUxXQVlTX0lOTElORSBJc29TdWJzcGFjZSogbmFtZSgp
IHsgcmV0dXJuIGhlYXAubmFtZTxtb2RlPigpOyB9CiAKLSAgICAgICAgSXNvU3Vic3BhY2Ugc3Bh
Y2U7Ci0gICAgICAgIElzb0NlbGxTZXQgc2V0OwotICAgICAgICAKLSAgICAgICAgdGVtcGxhdGU8
dHlwZW5hbWUuLi4gQXJndW1lbnRzPgotICAgICAgICBTcGFjZUFuZFNldChBcmd1bWVudHMmJi4u
LiBhcmd1bWVudHMpCi0gICAgICAgICAgICA6IHNwYWNlKHN0ZDo6Zm9yd2FyZDxBcmd1bWVudHM+
KGFyZ3VtZW50cykuLi4pCi0gICAgICAgICAgICAsIHNldChzcGFjZSkKLSAgICAgICAgewotICAg
ICAgICB9Ci0gICAgICAgIAotICAgICAgICBzdGF0aWMgSXNvQ2VsbFNldCYgc2V0Rm9yKFN1YnNw
YWNlJiBzcGFjZSkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuICpiaXR3aXNlX2Nhc3Q8
SXNvQ2VsbFNldCo+KAotICAgICAgICAgICAgICAgIGJpdHdpc2VfY2FzdDxjaGFyKj4oJnNwYWNl
KSAtCi0gICAgICAgICAgICAgICAgT0JKRUNUX09GRlNFVE9GKFNwYWNlQW5kU2V0LCBzcGFjZSkg
KwotICAgICAgICAgICAgICAgIE9CSkVDVF9PRkZTRVRPRihTcGFjZUFuZFNldCwgc2V0KSk7Ci0g
ICAgICAgIH0KLSAgICB9OwotICAgIAotICAgIFNwYWNlQW5kU2V0IGNvZGVCbG9ja1NwYWNlOwot
Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuYz4KLSAgICB2b2lkIGZvckVhY2hDb2RlQmxvY2tT
cGFjZShjb25zdCBGdW5jJiBmdW5jKQotICAgIHsKLSAgICAgICAgLy8gVGhpcyBzaG91bGQgbm90
IGluY2x1ZGUgd2ViQXNzZW1ibHlDb2RlQmxvY2tTcGFjZSBiZWNhdXNlIHRoaXMgaXMgYWJvdXQg
c3Vic2NsYXNzZXMgb2YKLSAgICAgICAgLy8gSlNDOjpDb2RlQmxvY2suCi0gICAgICAgIGZ1bmMo
Y29kZUJsb2NrU3BhY2UpOwotICAgIH0KKyAgICB1c2luZyBTcGFjZUFuZFNldCA9IEhlYXA6OlNw
YWNlQW5kU2V0OworICAgIEFMV0FZU19JTkxJTkUgU3BhY2VBbmRTZXQmIGNvZGVCbG9ja1NwYWNl
KCkgeyByZXR1cm4gaGVhcC5jb2RlQmxvY2tTcGFjZTsgfQogCiAgICAgRFlOQU1JQ19TUEFDRV9B
TkRfU0VUX0RFRklORV9NRU1CRVIoZXZhbEV4ZWN1dGFibGVTcGFjZSkKICAgICBEWU5BTUlDX1NQ
QUNFX0FORF9TRVRfREVGSU5FX01FTUJFUihtb2R1bGVQcm9ncmFtRXhlY3V0YWJsZVNwYWNlKQot
ICAgIFNwYWNlQW5kU2V0IGZ1bmN0aW9uRXhlY3V0YWJsZVNwYWNlOwotICAgIFNwYWNlQW5kU2V0
IHByb2dyYW1FeGVjdXRhYmxlU3BhY2U7Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jPgot
ICAgIHZvaWQgZm9yRWFjaFNjcmlwdEV4ZWN1dGFibGVTcGFjZShjb25zdCBGdW5jJiBmdW5jKQot
ICAgIHsKLSAgICAgICAgaWYgKG1fZXZhbEV4ZWN1dGFibGVTcGFjZSkKLSAgICAgICAgICAgIGZ1
bmMoKm1fZXZhbEV4ZWN1dGFibGVTcGFjZSk7Ci0gICAgICAgIGZ1bmMoZnVuY3Rpb25FeGVjdXRh
YmxlU3BhY2UpOwotICAgICAgICBpZiAobV9tb2R1bGVQcm9ncmFtRXhlY3V0YWJsZVNwYWNlKQot
ICAgICAgICAgICAgZnVuYygqbV9tb2R1bGVQcm9ncmFtRXhlY3V0YWJsZVNwYWNlKTsKLSAgICAg
ICAgZnVuYyhwcm9ncmFtRXhlY3V0YWJsZVNwYWNlKTsKLSAgICB9Ci0KLSAgICBTcGFjZUFuZFNl
dCB1bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZVNwYWNlOwogCi0jdW5kZWYgRFlOQU1JQ19TUEFD
RV9BTkRfU0VUX0RFRklORV9NRU1CRVIKKyAgICBBTFdBWVNfSU5MSU5FIFNwYWNlQW5kU2V0JiBm
dW5jdGlvbkV4ZWN1dGFibGVTcGFjZSgpIHsgcmV0dXJuIGhlYXAuZnVuY3Rpb25FeGVjdXRhYmxl
U3BhY2U7IH0KKyAgICBBTFdBWVNfSU5MSU5FIFNwYWNlQW5kU2V0JiBwcm9ncmFtRXhlY3V0YWJs
ZVNwYWNlKCkgeyByZXR1cm4gaGVhcC5wcm9ncmFtRXhlY3V0YWJsZVNwYWNlOyB9CisgICAgQUxX
QVlTX0lOTElORSBTcGFjZUFuZFNldCYgdW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGVTcGFjZSgp
IHsgcmV0dXJuIGhlYXAudW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGVTcGFjZTsgfQogCiAgICAg
Vk1UeXBlIHZtVHlwZTsKICAgICBDbGllbnREYXRhKiBjbGllbnREYXRhOwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk1JbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk1JbmxpbmVzLmgJKHJldmlzaW9uIDI4NjA4MSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNSW5saW5lcy5oCSh3b3JraW5nIGNvcHkp
CkBAIC0yNiw2ICsyNiw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkVudHJ5RnJhbWUu
aCIKKyNpbmNsdWRlICJGdXp6ZXJBZ2VudC5oIgogI2luY2x1ZGUgIlByb2ZpbGVyRGF0YWJhc2Uu
aCIKICNpbmNsdWRlICJWTS5oIgogI2luY2x1ZGUgIldhdGNoZG9nLmgiCkBAIC05MCw0ICs5MSwx
MCBAQCBpbmxpbmUgQ2FsbEZyYW1lKiBWTTo6dG9wSlNDYWxsRnJhbWUoKSBjCiAgICAgcmV0dXJu
IGZyYW1lOwogfQogCitpbmxpbmUgdm9pZCBWTTo6c2V0RnV6emVyQWdlbnQoc3RkOjp1bmlxdWVf
cHRyPEZ1enplckFnZW50PiYmIGZ1enplckFnZW50KQoreworICAgIFJFTEVBU0VfQVNTRVJUX1dJ
VEhfTUVTU0FHRSghbV9mdXp6ZXJBZ2VudCwgIk9ubHkgb25lIEZ1enplckFnZW50IGNhbiBiZSBz
cGVjaWZpZWQgYXQgYSB0aW1lLiIpOworICAgIG1fZnV6emVyQWdlbnQgPSBXVEZNb3ZlKGZ1enpl
ckFnZW50KTsKK30KKwogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9XZWFrTWFwUHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha01hcFByb3RvdHlwZS5oCShyZXZpc2lvbiAyODYwODEp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFrTWFwUHJvdG90eXBlLmgJKHdv
cmtpbmcgY29weSkKQEAgLTQxLDcgKzQxLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJc29TdWJz
cGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9J
U09fU1VCU1BBQ0VfU0hBUkFCTEUoV2Vha01hcFByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJl
dHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVj
dFNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIFdlYWtNYXBQcm90b3R5cGUqIGNyZWF0ZShW
TSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJl
KQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha09iamVjdFJlZlByb3Rv
dHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dlYWtP
YmplY3RSZWZQcm90b3R5cGUuaAkocmV2aXNpb24gMjg2MDgxKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvV2Vha09iamVjdFJlZlByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBA
IC0zNyw3ICszNyw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNl
Rm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NI
QVJBQkxFKFdlYWtPYmplY3RSZWZQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZt
LnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgp
OwogICAgIH0KIAogICAgIHN0YXRpYyBXZWFrT2JqZWN0UmVmUHJvdG90eXBlKiBjcmVhdGUoVk0m
IHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dlYWtTZXRQcm90b3R5cGUuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFrU2V0UHJvdG90
eXBlLmgJKHJldmlzaW9uIDI4NjA4MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1dlYWtTZXRQcm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtNDEsNyArNDEsNyBAQCBwdWJs
aWM6CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewog
ICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShXZWFrU2V0UHJvdG90
eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAg
ICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgV2Vh
a1NldFByb3RvdHlwZSogY3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9v
bHMvSlNEb2xsYXJWTS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3Rv
b2xzL0pTRG9sbGFyVk0uY3BwCShyZXZpc2lvbiAyODYwODEpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvdG9vbHMvSlNEb2xsYXJWTS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzMyw3ICsxMzMs
NyBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUsIFN1YnNwYWNlQWNj
ZXNzPgogICAgIHN0YXRpYyBDb21wbGV0ZVN1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAg
ICAgewotICAgICAgICByZXR1cm4gJnZtLmNlbGxTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5j
ZWxsU3BhY2UoKTsKICAgICB9CiAKICAgICBKU0RvbGxhclZNQ2FsbEZyYW1lKFZNJiB2bSwgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUpCkBAIC0yMjMsNyArMjIzLDcgQEAgcHVibGljOgogICAgIHRlbXBs
YXRlPHR5cGVuYW1lIENlbGxUeXBlLCBTdWJzcGFjZUFjY2Vzcz4KICAgICBzdGF0aWMgQ29tcGxl
dGVTdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKLSAgICAgICAgcmV0dXJuICZ2
bS5jZWxsU3BhY2U7CisgICAgICAgIHJldHVybiAmdm0uY2VsbFNwYWNlKCk7CiAgICAgfQogCiAg
ICAgUm9vdCogcm9vdCgpIGNvbnN0IHsgcmV0dXJuIG1fcm9vdC5nZXQoKTsgfQpAQCAtMjg3LDcg
KzI4Nyw3IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vic3Bh
Y2VBY2Nlc3M+CiAgICAgc3RhdGljIENvbXBsZXRlU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2
bSkKICAgICB7Ci0gICAgICAgIHJldHVybiAmdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0U3BhY2U7Cisg
ICAgICAgIHJldHVybiAmdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAg
ICBSb290KFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCkBAIC0zNTQsNyArMzU0LDcgQEAg
cHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlLCBTdWJzcGFjZUFjY2Vzcz4K
ICAgICBzdGF0aWMgQ29tcGxldGVTdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsK
LSAgICAgICAgcmV0dXJuICZ2bS5jZWxsU3BhY2U7CisgICAgICAgIHJldHVybiAmdm0uY2VsbFNw
YWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIFNpbXBsZU9iamVjdCogY3JlYXRlKFZNJiB2bSwg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKQEAgLTQyNiw3ICs0MjYsNyBAQCBwdWJsaWM6
CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNzPgogICAgIHN0
YXRpYyBDb21wbGV0ZVN1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewotICAgICAg
ICByZXR1cm4gJnZtLmNlbGxTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5jZWxsU3BhY2UoKTsK
ICAgICB9CiAKICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKQEAgLTUwOCw3
ICs1MDgsNyBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUsIFN1YnNw
YWNlQWNjZXNzPgogICAgIHN0YXRpYyBDb21wbGV0ZVN1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYg
dm0pCiAgICAgewotICAgICAgICByZXR1cm4gJnZtLmNlbGxTcGFjZTsKKyAgICAgICAgcmV0dXJu
ICZ2bS5jZWxsU3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVT
dHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHBy
b3RvdHlwZSkKQEAgLTU5MCw3ICs1OTAsNyBAQCBJR05PUkVfV0FSTklOR1NfRU5ECiAgICAgdGVt
cGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNzPgogICAgIHN0YXRpYyBDb21w
bGV0ZVN1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewotICAgICAgICByZXR1cm4g
JnZtLmNlbGxTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5jZWxsU3BhY2UoKTsKICAgICB9CiAK
ICAgICBzdGF0aWMgUnVudGltZUFycmF5KiBjcmVhdGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCkBAIC03NzIsNyArNzcyLDcgQEAgcHVibGljOgog
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlLCBTdWJzcGFjZUFjY2Vzcz4KICAgICBzdGF0
aWMgQ29tcGxldGVTdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKLSAgICAgICAg
cmV0dXJuICZ2bS5jZWxsU3BhY2U7CisgICAgICAgIHJldHVybiAmdm0uY2VsbFNwYWNlKCk7CiAg
ICAgfQogCiAgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCkBAIC04NzIsNyAr
ODcyLDcgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlLCBTdWJzcGFj
ZUFjY2Vzcz4KICAgICBzdGF0aWMgQ29tcGxldGVTdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZt
KQogICAgIHsKLSAgICAgICAgcmV0dXJuICZ2bS5jZWxsU3BhY2U7CisgICAgICAgIHJldHVybiAm
dm0uY2VsbFNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3Ry
dWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90
b3R5cGUpCkBAIC04OTcsNyArODk3LDcgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1l
IENlbGxUeXBlLCBTdWJzcGFjZUFjY2Vzcz4KICAgICBzdGF0aWMgQ29tcGxldGVTdWJzcGFjZSog
c3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKLSAgICAgICAgcmV0dXJuICZ2bS5jZWxsU3BhY2U7
CisgICAgICAgIHJldHVybiAmdm0uY2VsbFNwYWNlKCk7CiAgICAgfQogCiAgICAgT2JqZWN0RG9p
bmdTaWRlRWZmZWN0UHV0V2l0aG91dENvcnJlY3RTbG90U3RhdHVzKFZNJiB2bSwgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUpCkBAIC05NDgsNyArOTQ4LDcgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5
cGVuYW1lIENlbGxUeXBlLCBTdWJzcGFjZUFjY2Vzcz4KICAgICBzdGF0aWMgQ29tcGxldGVTdWJz
cGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKLSAgICAgICAgcmV0dXJuICZ2bS5jZWxs
U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0uY2VsbFNwYWNlKCk7CiAgICAgfQogCiAgICAgc3Rh
dGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCkBAIC0xNTg1LDcgKzE1ODUsNyBAQCBwdWJs
aWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNzPgogICAg
IHN0YXRpYyBDb21wbGV0ZVN1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewotICAg
ICAgICByZXR1cm4gJnZtLmNlbGxTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5jZWxsU3BhY2Uo
KTsKICAgICB9CiAKICAgICBKU1Rlc3RDdXN0b21HZXR0ZXJTZXR0ZXIoVk0mIHZtLCBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSkKQEAgLTE4MzgsNyArMTgzOCw3IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vic3BhY2VBY2Nlc3M+CiAgICAgc3RhdGljIENvbXBsZXRl
U3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7Ci0gICAgICAgIHJldHVybiAmdm0u
ZGVzdHJ1Y3RpYmxlT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0uZGVzdHJ1Y3RpYmxl
T2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBjbGFzcyBDbGllbnQgZmluYWwgOiBwdWJsaWMg
V2FzbTo6U3RyZWFtaW5nUGFyc2VyQ2xpZW50IHsKQEAgLTE5MzMsNyArMTkzMyw3IEBAIHB1Ymxp
YzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vic3BhY2VBY2Nlc3M+CiAgICAg
c3RhdGljIENvbXBsZXRlU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7Ci0gICAg
ICAgIHJldHVybiAmdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAm
dm0uZGVzdHJ1Y3RpYmxlT2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBXYXNtU3RyZWFtaW5n
Q29tcGlsZXIoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgV2FzbTo6Q29tcGlsZXJNb2Rl
IGNvbXBpbGVyTW9kZSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNQcm9taXNlKiBw
cm9taXNlLCBKU09iamVjdCogaW1wb3J0T2JqZWN0KQpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3Rvb2xzL0pTRG9sbGFyVk0uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvdG9vbHMvSlNEb2xsYXJWTS5oCShyZXZpc2lvbiAyODYwODEpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvdG9vbHMvSlNEb2xsYXJWTS5oCSh3b3JraW5nIGNvcHkpCkBAIC00Miw3ICs0Miw3
IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vic3BhY2VBY2Nl
c3M+CiAgICAgc3RhdGljIENvbXBsZXRlU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAg
ICB7Ci0gICAgICAgIHJldHVybiAmdm0uY2VsbFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLmNl
bGxTcGFjZSgpOwogICAgIH0KICAgICAKICAgICBERUNMQVJFX0VYUE9SVF9JTkZPOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHkuaAkocmV2aXNp
b24gMjg2MDgxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJs
eS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxNi0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAxNi0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDEsNyArNDEsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGlj
IElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNf
QVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1dlYkFzc2VtYmx5LCBCYXNlKTsKLSAgICAg
ICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWlu
T2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgSlNXZWJBc3NlbWJseSogY3JlYXRl
KFZNJiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5Q29tcGlsZUVycm9yUHJvdG90eXBlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlDb21waWxl
RXJyb3JQcm90b3R5cGUuaAkocmV2aXNpb24gMjg2MDgxKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vanMvV2ViQXNzZW1ibHlDb21waWxlRXJyb3JQcm90b3R5cGUuaAkod29ya2luZyBj
b3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAxOSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAyMSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTQxLDcgKzQxLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSog
c3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VC
U1BBQ0VfU0hBUkFCTEUoV2ViQXNzZW1ibHlDb21waWxlRXJyb3JQcm90b3R5cGUsIEJhc2UpOwot
ICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0u
cGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBXZWJBc3NlbWJseUNvbXBp
bGVFcnJvclByb3RvdHlwZSogY3JlYXRlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUq
KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5RXhjZXB0
aW9uUHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
anMvV2ViQXNzZW1ibHlFeGNlcHRpb25Qcm90b3R5cGUuaAkocmV2aXNpb24gMjg2MDgxKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlFeGNlcHRpb25Qcm90b3R5
cGUuaAkod29ya2luZyBjb3B5KQpAQCAtNDEsNyArNDEsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGlj
IElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNf
QVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShXZWJBc3NlbWJseUV4Y2VwdGlvblByb3RvdHlw
ZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAg
cmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIFdlYkFz
c2VtYmx5RXhjZXB0aW9uUHJvdG90eXBlKiBjcmVhdGUoVk0mLCBKU0dsb2JhbE9iamVjdCosIFN0
cnVjdHVyZSopOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1i
bHlHbG9iYWxQcm90b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9qcy9XZWJBc3NlbWJseUdsb2JhbFByb3RvdHlwZS5oCShyZXZpc2lvbiAyODYwODEpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUdsb2JhbFByb3RvdHlw
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTktMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTQwLDcgKzQwLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJc29T
dWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VS
VF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoV2ViQXNzZW1ibHlHbG9iYWxQcm90b3R5cGUsIEJhc2Up
OwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAm
dm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBXZWJBc3NlbWJseUds
b2JhbFByb3RvdHlwZSogY3JlYXRlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqKTsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5SW5zdGFuY2VQ
cm90b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9X
ZWJBc3NlbWJseUluc3RhbmNlUHJvdG90eXBlLmgJKHJldmlzaW9uIDI4NjA4MSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5SW5zdGFuY2VQcm90b3R5cGUuaAko
d29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYt
MjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTYtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTQxLDcgKzQxLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJc29T
dWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VS
VF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoV2ViQXNzZW1ibHlJbnN0YW5jZVByb3RvdHlwZSwgQmFz
ZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJu
ICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIFdlYkFzc2VtYmx5
SW5zdGFuY2VQcm90b3R5cGUqIGNyZWF0ZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJl
Kik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUxpbmtF
cnJvclByb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L2pzL1dlYkFzc2VtYmx5TGlua0Vycm9yUHJvdG90eXBlLmgJKHJldmlzaW9uIDI4NjA4MSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TGlua0Vycm9yUHJvdG90
eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChD
KSAyMDE2LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDE2LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00MSw3ICs0MSw3IEBAIHB1YmxpYzoKICAgICBzdGF0
aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJ
Q19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKFdlYkFzc2VtYmx5TGlua0Vycm9yUHJvdG90
eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAg
ICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgV2Vi
QXNzZW1ibHlMaW5rRXJyb3JQcm90b3R5cGUqIGNyZWF0ZShWTSYsIEpTR2xvYmFsT2JqZWN0Kiwg
U3RydWN0dXJlKik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3Nl
bWJseU1lbW9yeVByb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL2pzL1dlYkFzc2VtYmx5TWVtb3J5UHJvdG90eXBlLmgJKHJldmlzaW9uIDI4NjA4MSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TWVtb3J5UHJvdG90
eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChD
KSAyMDE2LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDE2LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00MSw3ICs0MSw3IEBAIHB1YmxpYzoKICAgICBzdGF0
aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJ
Q19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKFdlYkFzc2VtYmx5TWVtb3J5UHJvdG90eXBl
LCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICBy
ZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgV2ViQXNz
ZW1ibHlNZW1vcnlQcm90b3R5cGUqIGNyZWF0ZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0
dXJlKik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseU1v
ZHVsZVByb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L2pzL1dlYkFzc2VtYmx5TW9kdWxlUHJvdG90eXBlLmgJKHJldmlzaW9uIDI4NjA4MSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TW9kdWxlUHJvdG90eXBlLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE2
LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDE2LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCkBAIC00MSw3ICs0MSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNv
U3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NF
UlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKFdlYkFzc2VtYmx5TW9kdWxlUHJvdG90eXBlLCBCYXNl
KTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4g
JnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgV2ViQXNzZW1ibHlN
b2R1bGVQcm90b3R5cGUqIGNyZWF0ZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKik7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseVJ1bnRpbWVF
cnJvclByb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L2pzL1dlYkFzc2VtYmx5UnVudGltZUVycm9yUHJvdG90eXBlLmgJKHJldmlzaW9uIDI4NjA4MSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5UnVudGltZUVycm9y
UHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDE2LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDE2LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00MSw3ICs0MSw3IEBAIHB1YmxpYzoKICAg
ICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAg
IFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKFdlYkFzc2VtYmx5UnVudGltZUVy
cm9yUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNl
OworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBz
dGF0aWMgV2ViQXNzZW1ibHlSdW50aW1lRXJyb3JQcm90b3R5cGUqIGNyZWF0ZShWTSYsIEpTR2xv
YmFsT2JqZWN0KiwgU3RydWN0dXJlKik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9qcy9XZWJBc3NlbWJseVRhYmxlUHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlUYWJsZVByb3RvdHlwZS5oCShyZXZpc2lv
biAyODYwODEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseVRh
YmxlUHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDE2LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDE2LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00MSw3ICs0MSw3IEBAIHB1YmxpYzoK
ICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAg
ICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKFdlYkFzc2VtYmx5VGFibGVQ
cm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7Cisg
ICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRp
YyBXZWJBc3NlbWJseVRhYmxlUHJvdG90eXBlKiBjcmVhdGUoVk0mLCBKU0dsb2JhbE9iamVjdCos
IFN0cnVjdHVyZSopOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNz
ZW1ibHlUYWdQcm90b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9qcy9XZWJBc3NlbWJseVRhZ1Byb3RvdHlwZS5oCShyZXZpc2lvbiAyODYwODEpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseVRhZ1Byb3RvdHlwZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC00MCw3ICs0MCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vi
c3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRf
SVNPX1NVQlNQQUNFX1NIQVJBQkxFKFdlYkFzc2VtYmx5VGFnUHJvdG90eXBlLCBCYXNlKTsKLSAg
ICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBs
YWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgV2ViQXNzZW1ibHlUYWdQcm90
b3R5cGUqIGNyZWF0ZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKik7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUFzeW5jSXRlcmF0b3IuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUFzeW5jSXRlcmF0b3IuaAkocmV2
aXNpb24gMjg2MDgxKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Bc3luY0l0
ZXJhdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDcgKzQ4LDcgQEAgcHVibGljOgogICAgIHN0
YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAg
ICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTRE9NQXN5bmNJdGVy
YXRvclByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFj
ZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAg
c3RhdGljIEpTRE9NQXN5bmNJdGVyYXRvclByb3RvdHlwZSogY3JlYXRlKEpTQzo6Vk0mIHZtLCBK
U0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1
cmUpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUl0ZXJhdG9yLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01JdGVyYXRvci5oCShy
ZXZpc2lvbiAyODYwODEpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUl0ZXJh
dG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTU1LDcgKzU1LDcgQEAgcHVibGljOgogICAgIHN0YXRp
YyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAg
ICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTRE9NSXRlcmF0b3JQcm90
b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAg
ICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBK
U0RPTUl0ZXJhdG9yUHJvdG90eXBlKiBjcmVhdGUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRmlsZVN5c3RlbURpcmVjdG9yeUhhbmRsZUl0ZXJh
dG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0ZpbGVT
eXN0ZW1EaXJlY3RvcnlIYW5kbGVJdGVyYXRvci5jcHAJKHJldmlzaW9uIDI4NjA4MSkKKysrIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRmlsZVN5c3RlbURpcmVjdG9yeUhhbmRsZUl0ZXJh
dG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTUsOSArNTUsOSBAQCBJc29TdWJzcGFjZSogSlNG
aWxlU3lzdGVtRGlyZWN0b3J5SGFuZGxlCiAgICAgICAgIHJldHVybiBzcGFjZTsKICAgICBzdGF0
aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpT
RmlsZVN5c3RlbURpcmVjdG9yeUhhbmRsZUl0ZXJhdG9yPiB8fCAhSlNGaWxlU3lzdGVtRGlyZWN0
b3J5SGFuZGxlSXRlcmF0b3I6Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhwciAo
c3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNGaWxlU3lzdGVt
RGlyZWN0b3J5SGFuZGxlSXRlcmF0b3I+KQotICAgICAgICBjbGllbnREYXRhLnNldEZpbGVTeXN0
ZW1EaXJlY3RvcnlIYW5kbGVJdGVyYXRvclNwYWNlKG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElT
T19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5
cGUsIEpTRmlsZVN5c3RlbURpcmVjdG9yeUhhbmRsZUl0ZXJhdG9yKSk7CisgICAgICAgIGNsaWVu
dERhdGEuc2V0RmlsZVN5c3RlbURpcmVjdG9yeUhhbmRsZUl0ZXJhdG9yU3BhY2UobWFrZVVuaXF1
ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxl
T2JqZWN0SGVhcENlbGxUeXBlKCksIEpTRmlsZVN5c3RlbURpcmVjdG9yeUhhbmRsZUl0ZXJhdG9y
KSk7CiAgICAgZWxzZQotICAgICAgICBjbGllbnREYXRhLnNldEZpbGVTeXN0ZW1EaXJlY3RvcnlI
YW5kbGVJdGVyYXRvclNwYWNlKG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9J
TklUKHZtLmhlYXAsICp2bS5jZWxsSGVhcENlbGxUeXBlLCBKU0ZpbGVTeXN0ZW1EaXJlY3RvcnlI
YW5kbGVJdGVyYXRvcikpOworICAgICAgICBjbGllbnREYXRhLnNldEZpbGVTeXN0ZW1EaXJlY3Rv
cnlIYW5kbGVJdGVyYXRvclNwYWNlKG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFD
RV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNGaWxlU3lzdGVtRGlyZWN0
b3J5SGFuZGxlSXRlcmF0b3IpKTsKICAgICBhdXRvKiBzcGFjZSA9IGNsaWVudERhdGEuZmlsZVN5
c3RlbURpcmVjdG9yeUhhbmRsZUl0ZXJhdG9yU3BhY2UoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJ
TigidW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNh
bC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dlYkNvcmVKU0Ns
aWVudERhdGEuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dl
YkNvcmVKU0NsaWVudERhdGEuY3BwCShyZXZpc2lvbiAyODYwODEpCisrKyBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9XZWJDb3JlSlNDbGllbnREYXRhLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzgsNiArMzgsNyBAQAogI2luY2x1ZGUgIkpTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuaCIKICNp
bmNsdWRlICJKU1JlbW90ZURPTVdpbmRvdy5oIgogI2luY2x1ZGUgIkpTU2VydmljZVdvcmtlckds
b2JhbFNjb3BlLmgiCisjaW5jbHVkZSAiSlNTaGFyZWRXb3JrZXJHbG9iYWxTY29wZS5oIgogI2lu
Y2x1ZGUgIkpTV2luZG93UHJveHkuaCIKICNpbmNsdWRlICJKU1dvcmtlckdsb2JhbFNjb3BlLmgi
CiAjaW5jbHVkZSAiSlNXb3JrbGV0R2xvYmFsU2NvcGUuaCIKQEAgLTU5LDMzICs2MCwzNCBAQCB1
c2luZyBuYW1lc3BhY2UgSlNDOwogSlNWTUNsaWVudERhdGE6OkpTVk1DbGllbnREYXRhKFZNJiB2
bSkKICAgICA6IG1fYnVpbHRpbkZ1bmN0aW9ucyh2bSkKICAgICAsIG1fYnVpbHRpbk5hbWVzKHZt
KQotICAgICwgbV9ydW50aW1lQXJyYXlIZWFwQ2VsbFR5cGUoSlNDOjpJc29IZWFwQ2VsbFR5cGU6
OmNyZWF0ZTxSdW50aW1lQXJyYXk+KCkpCi0gICAgLCBtX3J1bnRpbWVPYmplY3RIZWFwQ2VsbFR5
cGUoSlNDOjpJc29IZWFwQ2VsbFR5cGU6OmNyZWF0ZTxKU0M6OkJpbmRpbmdzOjpSdW50aW1lT2Jq
ZWN0PigpKQotICAgICwgbV93aW5kb3dQcm94eUhlYXBDZWxsVHlwZShKU0M6Oklzb0hlYXBDZWxs
VHlwZTo6Y3JlYXRlPEpTV2luZG93UHJveHk+KCkpCi0gICAgLCBtX2hlYXBDZWxsVHlwZUZvckpT
RE9NV2luZG93KEpTQzo6SXNvSGVhcENlbGxUeXBlOjpjcmVhdGU8SlNET01XaW5kb3c+KCkpCi0g
ICAgLCBtX2hlYXBDZWxsVHlwZUZvckpTRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUoSlNDOjpJ
c29IZWFwQ2VsbFR5cGU6OmNyZWF0ZTxKU0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlPigpKQot
ICAgICwgbV9oZWFwQ2VsbFR5cGVGb3JKU1JlbW90ZURPTVdpbmRvdyhKU0M6Oklzb0hlYXBDZWxs
VHlwZTo6Y3JlYXRlPEpTUmVtb3RlRE9NV2luZG93PigpKQotICAgICwgbV9oZWFwQ2VsbFR5cGVG
b3JKU1dvcmtlckdsb2JhbFNjb3BlKEpTQzo6SXNvSGVhcENlbGxUeXBlOjpjcmVhdGU8SlNXb3Jr
ZXJHbG9iYWxTY29wZT4oKSkKKy8vICAgICwgbV9ydW50aW1lQXJyYXlIZWFwQ2VsbFR5cGUoSlND
OjpJc29IZWFwQ2VsbFR5cGU6OkFyZ3M8UnVudGltZUFycmF5PigpKQorLy8gICAgLCBtX3J1bnRp
bWVPYmplY3RIZWFwQ2VsbFR5cGUoSlNDOjpJc29IZWFwQ2VsbFR5cGU6OkFyZ3M8SlNDOjpCaW5k
aW5nczo6UnVudGltZU9iamVjdD4oKSkKKy8vICAgICwgbV93aW5kb3dQcm94eUhlYXBDZWxsVHlw
ZShKU0M6Oklzb0hlYXBDZWxsVHlwZTo6QXJnczxKU1dpbmRvd1Byb3h5PigpKQorLy8gICAgLCBt
X2hlYXBDZWxsVHlwZUZvckpTRE9NV2luZG93KEpTQzo6SXNvSGVhcENlbGxUeXBlOjpBcmdzPEpT
RE9NV2luZG93PigpKQorLy8gICAgLCBtX2hlYXBDZWxsVHlwZUZvckpTRGVkaWNhdGVkV29ya2Vy
R2xvYmFsU2NvcGUoSlNDOjpJc29IZWFwQ2VsbFR5cGU6OkFyZ3M8SlNEZWRpY2F0ZWRXb3JrZXJH
bG9iYWxTY29wZT4oKSkKKy8vICAgICwgbV9oZWFwQ2VsbFR5cGVGb3JKU1JlbW90ZURPTVdpbmRv
dyhKU0M6Oklzb0hlYXBDZWxsVHlwZTo6QXJnczxKU1JlbW90ZURPTVdpbmRvdz4oKSkKKy8vICAg
ICwgbV9oZWFwQ2VsbFR5cGVGb3JKU1dvcmtlckdsb2JhbFNjb3BlKEpTQzo6SXNvSGVhcENlbGxU
eXBlOjpBcmdzPEpTV29ya2VyR2xvYmFsU2NvcGU+KCkpCisvLyAgICAsIG1faGVhcENlbGxUeXBl
Rm9ySlNTaGFyZWRXb3JrZXJHbG9iYWxTY29wZShKU0M6Oklzb0hlYXBDZWxsVHlwZTo6QXJnczxK
U1NoYXJlZFdvcmtlckdsb2JhbFNjb3BlPigpKQogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikK
LSAgICAsIG1faGVhcENlbGxUeXBlRm9ySlNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUoSlNDOjpJ
c29IZWFwQ2VsbFR5cGU6OmNyZWF0ZTxKU1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZT4oKSkKKy8v
ICAgICwgbV9oZWFwQ2VsbFR5cGVGb3JKU1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZShKU0M6Oklz
b0hlYXBDZWxsVHlwZTo6QXJnczxKU1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZT4oKSkKICNlbmRp
ZgotICAgICwgbV9oZWFwQ2VsbFR5cGVGb3JKU1dvcmtsZXRHbG9iYWxTY29wZShKU0M6Oklzb0hl
YXBDZWxsVHlwZTo6Y3JlYXRlPEpTV29ya2xldEdsb2JhbFNjb3BlPigpKQorLy8gICAgLCBtX2hl
YXBDZWxsVHlwZUZvckpTV29ya2xldEdsb2JhbFNjb3BlKEpTQzo6SXNvSGVhcENlbGxUeXBlOjpB
cmdzPEpTV29ya2xldEdsb2JhbFNjb3BlPigpKQogI2lmIEVOQUJMRShDU1NfUEFJTlRJTkdfQVBJ
KQotICAgICwgbV9oZWFwQ2VsbFR5cGVGb3JKU1BhaW50V29ya2xldEdsb2JhbFNjb3BlKEpTQzo6
SXNvSGVhcENlbGxUeXBlOjpjcmVhdGU8SlNQYWludFdvcmtsZXRHbG9iYWxTY29wZT4oKSkKKy8v
ICAgICwgbV9oZWFwQ2VsbFR5cGVGb3JKU1BhaW50V29ya2xldEdsb2JhbFNjb3BlKEpTQzo6SXNv
SGVhcENlbGxUeXBlOjpBcmdzPEpTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGU+KCkpCiAjZW5kaWYK
ICNpZiBFTkFCTEUoV0VCX0FVRElPKQotICAgICwgbV9oZWFwQ2VsbFR5cGVGb3JKU0F1ZGlvV29y
a2xldEdsb2JhbFNjb3BlKEpTQzo6SXNvSGVhcENlbGxUeXBlOjpjcmVhdGU8SlNBdWRpb1dvcmts
ZXRHbG9iYWxTY29wZT4oKSkKKy8vICAgICwgbV9oZWFwQ2VsbFR5cGVGb3JKU0F1ZGlvV29ya2xl
dEdsb2JhbFNjb3BlKEpTQzo6SXNvSGVhcENlbGxUeXBlOjpBcmdzPEpTQXVkaW9Xb3JrbGV0R2xv
YmFsU2NvcGU+KCkpCiAjZW5kaWYKLSAgICAsIG1faGVhcENlbGxUeXBlRm9ySlNJREJTZXJpYWxp
emF0aW9uR2xvYmFsT2JqZWN0KEpTQzo6SXNvSGVhcENlbGxUeXBlOjpjcmVhdGU8SlNJREJTZXJp
YWxpemF0aW9uR2xvYmFsT2JqZWN0PigpKQotICAgICwgbV9kb21CdWlsdGluQ29uc3RydWN0b3JT
cGFjZSBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uY2VsbEhlYXBDZWxsVHlwZSwgSlNE
T01CdWlsdGluQ29uc3RydWN0b3JCYXNlKQotICAgICwgbV9kb21Db25zdHJ1Y3RvclNwYWNlIElT
T19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5jZWxsSGVhcENlbGxUeXBlLCBKU0RPTUNvbnN0
cnVjdG9yQmFzZSkKLSAgICAsIG1fZG9tTmFtZXNwYWNlT2JqZWN0U3BhY2UgSVNPX1NVQlNQQUNF
X0lOSVQodm0uaGVhcCwgKnZtLmNlbGxIZWFwQ2VsbFR5cGUsIEpTRE9NT2JqZWN0KQotICAgICwg
bV9kb21XaW5kb3dQcm9wZXJ0aWVzU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZt
LmNlbGxIZWFwQ2VsbFR5cGUsIEpTRE9NV2luZG93UHJvcGVydGllcykKLSAgICAsIG1fcnVudGlt
ZUFycmF5U3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKm1fcnVudGltZUFycmF5SGVh
cENlbGxUeXBlLCBSdW50aW1lQXJyYXkpCi0gICAgLCBtX3J1bnRpbWVNZXRob2RTcGFjZSBJU09f
U1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uY2VsbEhlYXBDZWxsVHlwZSwgUnVudGltZU1ldGhv
ZCkgLy8gSGFzaDoweGY3MGM0YTg1Ci0gICAgLCBtX3J1bnRpbWVPYmplY3RTcGFjZSBJU09fU1VC
U1BBQ0VfSU5JVCh2bS5oZWFwLCAqbV9ydW50aW1lT2JqZWN0SGVhcENlbGxUeXBlLCBKU0M6OkJp
bmRpbmdzOjpSdW50aW1lT2JqZWN0KQotICAgICwgbV93aW5kb3dQcm94eVNwYWNlIElTT19TVUJT
UEFDRV9JTklUKHZtLmhlYXAsICptX3dpbmRvd1Byb3h5SGVhcENlbGxUeXBlLCBKU1dpbmRvd1By
b3h5KQotICAgICwgbV9pZGJTZXJpYWxpemF0aW9uU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQodm0u
aGVhcCwgKm1faGVhcENlbGxUeXBlRm9ySlNJREJTZXJpYWxpemF0aW9uR2xvYmFsT2JqZWN0LCBK
U0lEQlNlcmlhbGl6YXRpb25HbG9iYWxPYmplY3QpCisvLyAgICAsIG1faGVhcENlbGxUeXBlRm9y
SlNJREJTZXJpYWxpemF0aW9uR2xvYmFsT2JqZWN0KEpTQzo6SXNvSGVhcENlbGxUeXBlOjpBcmdz
PEpTSURCU2VyaWFsaXphdGlvbkdsb2JhbE9iamVjdD4oKSkKKyAgICAsIG1fZG9tQnVpbHRpbkNv
bnN0cnVjdG9yU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxs
VHlwZSgpLCBKU0RPTUJ1aWx0aW5Db25zdHJ1Y3RvckJhc2UpCisgICAgLCBtX2RvbUNvbnN0cnVj
dG9yU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgp
LCBKU0RPTUNvbnN0cnVjdG9yQmFzZSkKKyAgICAsIG1fZG9tTmFtZXNwYWNlT2JqZWN0U3BhY2Ug
SVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU0RPTU9i
amVjdCkKKyAgICAsIG1fZG9tV2luZG93UHJvcGVydGllc1NwYWNlIElTT19TVUJTUEFDRV9JTklU
KHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNET01XaW5kb3dQcm9wZXJ0aWVzKQor
ICAgICwgbV9ydW50aW1lQXJyYXlTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCBtX3J1
bnRpbWVBcnJheUhlYXBDZWxsVHlwZSwgUnVudGltZUFycmF5KQorICAgICwgbV9ydW50aW1lTWV0
aG9kU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgp
LCBSdW50aW1lTWV0aG9kKSAvLyBIYXNoOjB4ZjcwYzRhODUKKyAgICAsIG1fcnVudGltZU9iamVj
dFNwYWNlIElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIG1fcnVudGltZU9iamVjdEhlYXBDZWxs
VHlwZSwgSlNDOjpCaW5kaW5nczo6UnVudGltZU9iamVjdCkKKyAgICAsIG1fd2luZG93UHJveHlT
cGFjZSBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCBtX3dpbmRvd1Byb3h5SGVhcENlbGxUeXBl
LCBKU1dpbmRvd1Byb3h5KQorICAgICwgbV9pZGJTZXJpYWxpemF0aW9uU3BhY2UgSVNPX1NVQlNQ
QUNFX0lOSVQodm0uaGVhcCwgbV9oZWFwQ2VsbFR5cGVGb3JKU0lEQlNlcmlhbGl6YXRpb25HbG9i
YWxPYmplY3QsIEpTSURCU2VyaWFsaXphdGlvbkdsb2JhbE9iamVjdCkKICAgICAsIG1fc3Vic3Bh
Y2VzKG1ha2VVbmlxdWU8RE9NSXNvU3Vic3BhY2VzPigpKQogewogfQpJbmRleDogU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvV2ViQ29yZUpTQ2xpZW50RGF0YS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dlYkNvcmVKU0NsaWVudERhdGEuaAkocmV2aXNpb24g
Mjg2MDgxKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV2ViQ29yZUpTQ2xpZW50RGF0
YS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNiBAQAogLyoKICAqICBDb3B5cmlnaHQgKEMp
IDE5OTktMjAwMSBIYXJyaSBQb3J0ZW4gKHBvcnRlbkBrZGUub3JnKQotICogIENvcHlyaWdodCAo
QykgMjAwMy0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqICBDb3B5cmln
aHQgKEMpIDIwMDMtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiAgQ29w
eXJpZ2h0IChDKSAyMDA3IFNhbXVlbCBXZWluaWcgPHNhbUB3ZWJraXQub3JnPgogICogIENvcHly
aWdodCAoQykgMjAwOSBHb29nbGUsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCkBAIC0y
OCw5ICsyOCwzMyBAQAogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL1Jl
ZlB0ci5oPgogCituYW1lc3BhY2UgSlNDIHsKK25hbWVzcGFjZSBCaW5kaW5ncyB7CitjbGFzcyBS
dW50aW1lT2JqZWN0OworfSB9CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRE9NSXNv
U3Vic3BhY2VzOworY2xhc3MgSlNET01XaW5kb3c7CitjbGFzcyBKU0RlZGljYXRlZFdvcmtlckds
b2JhbFNjb3BlOworY2xhc3MgSlNJREJTZXJpYWxpemF0aW9uR2xvYmFsT2JqZWN0OworY2xhc3Mg
SlNSZW1vdGVET01XaW5kb3c7CitjbGFzcyBKU1NoYXJlZFdvcmtlckdsb2JhbFNjb3BlOworY2xh
c3MgSlNXaW5kb3dQcm94eTsKK2NsYXNzIEpTV29ya2VyR2xvYmFsU2NvcGU7CitjbGFzcyBKU1dv
cmtsZXRHbG9iYWxTY29wZTsKK2NsYXNzIFJ1bnRpbWVBcnJheTsKKworI2lmIEVOQUJMRShTRVJW
SUNFX1dPUktFUikKK2NsYXNzIEpTU2VydmljZVdvcmtlckdsb2JhbFNjb3BlOworI2VuZGlmCisj
aWYgRU5BQkxFKENTU19QQUlOVElOR19BUEkpCitjbGFzcyBKU1BhaW50V29ya2xldEdsb2JhbFNj
b3BlOworI2VuZGlmCisjaWYgRU5BQkxFKFdFQl9BVURJTykKK2NsYXNzIEpTQXVkaW9Xb3JrbGV0
R2xvYmFsU2NvcGU7CisjZW5kaWYKIAogY2xhc3MgSlNWTUNsaWVudERhdGEgOiBwdWJsaWMgSlND
OjpWTTo6Q2xpZW50RGF0YSB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoSlNWTUNsaWVudERh
dGEpOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKQEAgLTkyLDI2ICsxMTYsMjYgQEAgcHJpdmF0
ZToKICAgICBKU0J1aWx0aW5GdW5jdGlvbnMgbV9idWlsdGluRnVuY3Rpb25zOwogICAgIFdlYkNv
cmVCdWlsdGluTmFtZXMgbV9idWlsdGluTmFtZXM7CiAKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SlND
OjpIZWFwQ2VsbFR5cGU+IG1fcnVudGltZUFycmF5SGVhcENlbGxUeXBlOwotICAgIHN0ZDo6dW5p
cXVlX3B0cjxKU0M6OkhlYXBDZWxsVHlwZT4gbV9ydW50aW1lT2JqZWN0SGVhcENlbGxUeXBlOwot
ICAgIHN0ZDo6dW5pcXVlX3B0cjxKU0M6OkhlYXBDZWxsVHlwZT4gbV93aW5kb3dQcm94eUhlYXBD
ZWxsVHlwZTsKKyAgICBKU0M6Oklzb0hlYXBDZWxsVHlwZTxSdW50aW1lQXJyYXk+IG1fcnVudGlt
ZUFycmF5SGVhcENlbGxUeXBlOworICAgIEpTQzo6SXNvSGVhcENlbGxUeXBlPEpTQzo6QmluZGlu
Z3M6OlJ1bnRpbWVPYmplY3Q+IG1fcnVudGltZU9iamVjdEhlYXBDZWxsVHlwZTsKKyAgICBKU0M6
Oklzb0hlYXBDZWxsVHlwZTxKU1dpbmRvd1Byb3h5PiBtX3dpbmRvd1Byb3h5SGVhcENlbGxUeXBl
OwogcHVibGljOgotICAgIHN0ZDo6dW5pcXVlX3B0cjxKU0M6OkhlYXBDZWxsVHlwZT4gbV9oZWFw
Q2VsbFR5cGVGb3JKU0RPTVdpbmRvdzsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SlNDOjpIZWFwQ2Vs
bFR5cGU+IG1faGVhcENlbGxUeXBlRm9ySlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZTsKLSAg
ICBzdGQ6OnVuaXF1ZV9wdHI8SlNDOjpIZWFwQ2VsbFR5cGU+IG1faGVhcENlbGxUeXBlRm9ySlNS
ZW1vdGVET01XaW5kb3c7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPEpTQzo6SGVhcENlbGxUeXBlPiBt
X2hlYXBDZWxsVHlwZUZvckpTV29ya2VyR2xvYmFsU2NvcGU7Ci0gICAgc3RkOjp1bmlxdWVfcHRy
PEpTQzo6SGVhcENlbGxUeXBlPiBtX2hlYXBDZWxsVHlwZUZvckpTU2hhcmVkV29ya2VyR2xvYmFs
U2NvcGU7CisgICAgSlNDOjpJc29IZWFwQ2VsbFR5cGU8SlNET01XaW5kb3c+IG1faGVhcENlbGxU
eXBlRm9ySlNET01XaW5kb3c7CisgICAgSlNDOjpJc29IZWFwQ2VsbFR5cGU8SlNEZWRpY2F0ZWRX
b3JrZXJHbG9iYWxTY29wZT4gbV9oZWFwQ2VsbFR5cGVGb3JKU0RlZGljYXRlZFdvcmtlckdsb2Jh
bFNjb3BlOworICAgIEpTQzo6SXNvSGVhcENlbGxUeXBlPEpTUmVtb3RlRE9NV2luZG93PiBtX2hl
YXBDZWxsVHlwZUZvckpTUmVtb3RlRE9NV2luZG93OworICAgIEpTQzo6SXNvSGVhcENlbGxUeXBl
PEpTV29ya2VyR2xvYmFsU2NvcGU+IG1faGVhcENlbGxUeXBlRm9ySlNXb3JrZXJHbG9iYWxTY29w
ZTsKKyAgICBKU0M6Oklzb0hlYXBDZWxsVHlwZTxKU1NoYXJlZFdvcmtlckdsb2JhbFNjb3BlPiBt
X2hlYXBDZWxsVHlwZUZvckpTU2hhcmVkV29ya2VyR2xvYmFsU2NvcGU7CiAjaWYgRU5BQkxFKFNF
UlZJQ0VfV09SS0VSKQotICAgIHN0ZDo6dW5pcXVlX3B0cjxKU0M6OkhlYXBDZWxsVHlwZT4gbV9o
ZWFwQ2VsbFR5cGVGb3JKU1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZTsKKyAgICBKU0M6Oklzb0hl
YXBDZWxsVHlwZTxKU1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZT4gbV9oZWFwQ2VsbFR5cGVGb3JK
U1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZTsKICNlbmRpZgotICAgIHN0ZDo6dW5pcXVlX3B0cjxK
U0M6OkhlYXBDZWxsVHlwZT4gbV9oZWFwQ2VsbFR5cGVGb3JKU1dvcmtsZXRHbG9iYWxTY29wZTsK
KyAgICBKU0M6Oklzb0hlYXBDZWxsVHlwZTxKU1dvcmtsZXRHbG9iYWxTY29wZT4gbV9oZWFwQ2Vs
bFR5cGVGb3JKU1dvcmtsZXRHbG9iYWxTY29wZTsKICNpZiBFTkFCTEUoQ1NTX1BBSU5USU5HX0FQ
SSkKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SlNDOjpIZWFwQ2VsbFR5cGU+IG1faGVhcENlbGxUeXBl
Rm9ySlNQYWludFdvcmtsZXRHbG9iYWxTY29wZTsKKyAgICBKU0M6Oklzb0hlYXBDZWxsVHlwZTxK
U1BhaW50V29ya2xldEdsb2JhbFNjb3BlPiBtX2hlYXBDZWxsVHlwZUZvckpTUGFpbnRXb3JrbGV0
R2xvYmFsU2NvcGU7CiAjZW5kaWYKICNpZiBFTkFCTEUoV0VCX0FVRElPKQotICAgIHN0ZDo6dW5p
cXVlX3B0cjxKU0M6OkhlYXBDZWxsVHlwZT4gbV9oZWFwQ2VsbFR5cGVGb3JKU0F1ZGlvV29ya2xl
dEdsb2JhbFNjb3BlOworICAgIEpTQzo6SXNvSGVhcENlbGxUeXBlPEpTQXVkaW9Xb3JrbGV0R2xv
YmFsU2NvcGU+IG1faGVhcENlbGxUeXBlRm9ySlNBdWRpb1dvcmtsZXRHbG9iYWxTY29wZTsKICNl
bmRpZgotICAgIHN0ZDo6dW5pcXVlX3B0cjxKU0M6OkhlYXBDZWxsVHlwZT4gbV9oZWFwQ2VsbFR5
cGVGb3JKU0lEQlNlcmlhbGl6YXRpb25HbG9iYWxPYmplY3Q7CisgICAgSlNDOjpJc29IZWFwQ2Vs
bFR5cGU8SlNJREJTZXJpYWxpemF0aW9uR2xvYmFsT2JqZWN0PiBtX2hlYXBDZWxsVHlwZUZvckpT
SURCU2VyaWFsaXphdGlvbkdsb2JhbE9iamVjdDsKIAogcHJpdmF0ZToKICAgICBKU0M6Oklzb1N1
YnNwYWNlIG1fZG9tQnVpbHRpbkNvbnN0cnVjdG9yU3BhY2U7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQkocmV2aXNpb24g
Mjg2MDgxKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9y
SlMucG0JKHdvcmtpbmcgY29weSkKQEAgLTQ4NTIsMTMgKzQ4NTIsMTMgQEAgc3ViIEdlbmVyYXRl
SW1wbGVtZW50YXRpb24KICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBpZiAoYXV0byogc3Bh
Y2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvciR7aW50ZXJmYWNlTmFtZX0uZ2V0KCkpXG4iKTsKICAg
ICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgcmV0dXJuIHNwYWNlO1xuIik7CiAgICAgaWYg
KElzRE9NR2xvYmFsT2JqZWN0KCRpbnRlcmZhY2UpKSB7Ci0gICAgICAgIHB1c2goQGltcGxDb250
ZW50LCAiICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yJHtpbnRlcmZhY2VOYW1lfSA9IG1ha2VVbmlx
dWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICpjbGllbnREYXRhLm1f
aGVhcENlbGxUeXBlRm9yJHtjbGFzc05hbWV9LCAke2NsYXNzTmFtZX0pO1xuIik7CisgICAgICAg
IHB1c2goQGltcGxDb250ZW50LCAiICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yJHtpbnRlcmZhY2VO
YW1lfSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAs
IGNsaWVudERhdGEubV9oZWFwQ2VsbFR5cGVGb3Ike2NsYXNzTmFtZX0sICR7Y2xhc3NOYW1lfSk7
XG4iKTsKICAgICB9IGVsc2UgewogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBzdGF0
aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsICR7
Y2xhc3NOYW1lfT4gfHwgISR7Y2xhc3NOYW1lfTo6bmVlZHNEZXN0cnVjdGlvbik7XG4iKTsKICAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vf
b2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCAke2NsYXNzTmFtZX0+KVxuIik7Ci0gICAg
ICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvciR7aW50
ZXJmYWNlTmFtZX0gPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2
bS5oZWFwLCAqdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLCAke2NsYXNzTmFtZX0p
O1xuIik7CisgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICBzcGFjZXMubV9zdWJz
cGFjZUZvciR7aW50ZXJmYWNlTmFtZX0gPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VC
U1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwg
JHtjbGFzc05hbWV9KTtcbiIpOwogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBlbHNl
XG4iKTsKLSAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIHNwYWNlcy5tX3N1YnNw
YWNlRm9yJHtpbnRlcmZhY2VOYW1lfSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJT
UEFDRV9JTklUKHZtLmhlYXAsICp2bS5jZWxsSGVhcENlbGxUeXBlLCAke2NsYXNzTmFtZX0pO1xu
Iik7CisgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICBzcGFjZXMubV9zdWJzcGFj
ZUZvciR7aW50ZXJmYWNlTmFtZX0gPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BB
Q0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCksICR7Y2xhc3NOYW1lfSk7XG4i
KTsKICAgICB9CiAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgYXV0byogc3BhY2UgPSBzcGFj
ZXMubV9zdWJzcGFjZUZvciR7aW50ZXJmYWNlTmFtZX0uZ2V0KCk7XG4iKTsKICAgICBwdXNoKEBp
bXBsQ29udGVudCwgIklHTk9SRV9XQVJOSU5HU19CRUdJTihcInVucmVhY2hhYmxlLWNvZGVcIilc
biIpOwpAQCAtNjczMSw5ICs2NzMxLDkgQEAgcHVibGljOgogICAgICAgICAgICAgcmV0dXJuIHNw
YWNlOwogICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0
cnVjdGlibGVPYmplY3QsICR7aXRlcmF0b3JOYW1lfT4gfHwgISR7aXRlcmF0b3JOYW1lfTo6bmVl
ZHNEZXN0cnVjdGlvbik7CiAgICAgICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8
SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgJHtpdGVyYXRvck5hbWV9PikKLSAgICAgICAgICAg
IHNwYWNlcy5tX3N1YnNwYWNlRm9yJHtpdGVyYXRvck5hbWV9ID0gbWFrZVVuaXF1ZTxJc29TdWJz
cGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmRlc3RydWN0aWJsZU9iamVjdEhl
YXBDZWxsVHlwZS5nZXQoKSwgJHtpdGVyYXRvck5hbWV9KTsKKyAgICAgICAgICAgIHNwYWNlcy5t
X3N1YnNwYWNlRm9yJHtpdGVyYXRvck5hbWV9ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNP
X1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBl
KCksICR7aXRlcmF0b3JOYW1lfSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHNwYWNlcy5t
X3N1YnNwYWNlRm9yJHtpdGVyYXRvck5hbWV9ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNP
X1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmNlbGxIZWFwQ2VsbFR5cGUsICR7aXRlcmF0b3JO
YW1lfSk7CisgICAgICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvciR7aXRlcmF0b3JOYW1lfSA9
IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNl
bGxIZWFwQ2VsbFR5cGUoKSwgJHtpdGVyYXRvck5hbWV9KTsKICAgICAgICAgYXV0byogc3BhY2Ug
PSBzcGFjZXMubV9zdWJzcGFjZUZvciR7aXRlcmF0b3JOYW1lfS5nZXQoKTsKIElHTk9SRV9XQVJO
SU5HU19CRUdJTihcInVucmVhY2hhYmxlLWNvZGVcIikKIElHTk9SRV9XQVJOSU5HU19CRUdJTihc
InRhdXRvbG9naWNhbC1jb21wYXJlXCIpCkBAIC03NTI5LDcgKzc1MjksNyBAQCBzdWIgR2VuZXJh
dGVQcm90b3R5cGVEZWNsYXJhdGlvbgogICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBzdGF0
aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pXG4iKTsKICAgICBw
dXNoKEAkb3V0cHV0QXJyYXksICIgICAge1xuIik7CiAgICAgcHVzaChAJG91dHB1dEFycmF5LCAi
ICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRSgke3Byb3RvdHlwZUNs
YXNzTmFtZX0sIEJhc2UpO1xuIik7Ci0gICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgICAgICBy
ZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7XG4iKTsKKyAgICBwdXNoKEAkb3V0cHV0QXJyYXks
ICIgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpO1xuIik7CiAgICAgcHVzaChA
JG91dHB1dEFycmF5LCAiICAgIH1cbiIpOwogCiAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAg
IHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6
OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpXG4i
KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU0RPTVdp
bmRvdy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU0RPTVdpbmRvdy5oCShyZXZpc2lvbiAyODYwODEpCisrKyBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNET01XaW5kb3cuaAkod29ya2luZyBjb3B5KQpAQCAt
ODUsNyArODUsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNw
YWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VC
U1BBQ0VfU0hBUkFCTEUoSlNET01XaW5kb3dQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1
cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RT
cGFjZSgpOwogICAgIH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVy
ZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpT
VmFsdWUgcHJvdG90eXBlKQogICAgIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTRGVkaWNhdGVkV29y
a2VyR2xvYmFsU2NvcGUuaAkocmV2aXNpb24gMjg2MDgxKQorKysgU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUuaAkod29y
a2luZyBjb3B5KQpAQCAtODIsNyArODIsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNv
U3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElD
X0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29w
ZVByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsK
KyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRp
YyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpJ
bmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTRXhwb3NlZFN0
YXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU0V4cG9zZWRTdGFyLmNwcAkocmV2aXNpb24gMjg2MDgxKQorKysgU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTRXhwb3NlZFN0YXIuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC03MSw3ICs3MSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFj
ZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJU
X0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU0V4cG9zZWRTdGFyUHJvdG90eXBlLCBCYXNlKTsKLSAg
ICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBs
YWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVh
dGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC0yMzYsOSArMjM2LDkgQEAgSlND
OjpJc29TdWJzcGFjZSogSlNFeHBvc2VkU3Rhcjo6c3Vic3BhYwogICAgICAgICByZXR1cm4gc3Bh
Y2U7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3Rp
YmxlT2JqZWN0LCBKU0V4cG9zZWRTdGFyPiB8fCAhSlNFeHBvc2VkU3Rhcjo6bmVlZHNEZXN0cnVj
dGlvbik7CiAgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1
Y3RpYmxlT2JqZWN0LCBKU0V4cG9zZWRTdGFyPikKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VG
b3JFeHBvc2VkU3RhciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklU
KHZtLmhlYXAsICp2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUsIEpTRXhwb3NlZFN0
YXIpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvckV4cG9zZWRTdGFyID0gbWFrZVVuaXF1
ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxl
T2JqZWN0SGVhcENlbGxUeXBlKCksIEpTRXhwb3NlZFN0YXIpOwogICAgIGVsc2UKLSAgICAgICAg
c3BhY2VzLm1fc3Vic3BhY2VGb3JFeHBvc2VkU3RhciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+
IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5jZWxsSGVhcENlbGxUeXBlLCBKU0V4cG9z
ZWRTdGFyKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JFeHBvc2VkU3RhciA9IG1ha2VV
bmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFw
Q2VsbFR5cGUoKSwgSlNFeHBvc2VkU3Rhcik7CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9z
dWJzcGFjZUZvckV4cG9zZWRTdGFyLmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJl
YWNoYWJsZS1jb2RlIikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBh
cmUiKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTRXhw
b3NlZFRvV29ya2VyQW5kV2luZG93LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNFeHBvc2VkVG9Xb3JrZXJBbmRXaW5kb3cuY3BwCShy
ZXZpc2lvbiAyODYwODEpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNFeHBvc2VkVG9Xb3JrZXJBbmRXaW5kb3cuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTIs
NyArMTEyLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFj
ZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQ
QUNFX1NIQVJBQkxFKEpTRXhwb3NlZFRvV29ya2VyQW5kV2luZG93UHJvdG90eXBlLCBCYXNlKTsK
LSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZt
LnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBj
cmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC0yNTIsOSArMjUyLDkgQEAg
SlNDOjpJc29TdWJzcGFjZSogSlNFeHBvc2VkVG9Xb3JrZXJBbmRXaQogICAgICAgICByZXR1cm4g
c3BhY2U7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1
Y3RpYmxlT2JqZWN0LCBKU0V4cG9zZWRUb1dvcmtlckFuZFdpbmRvdz4gfHwgIUpTRXhwb3NlZFRv
V29ya2VyQW5kV2luZG93OjpuZWVkc0Rlc3RydWN0aW9uKTsKICAgICBpZiBjb25zdGV4cHIgKHN0
ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTRXhwb3NlZFRvV29y
a2VyQW5kV2luZG93PikKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JFeHBvc2VkVG9Xb3Jr
ZXJBbmRXaW5kb3cgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2
bS5oZWFwLCAqdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLCBKU0V4cG9zZWRUb1dv
cmtlckFuZFdpbmRvdyk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yRXhwb3NlZFRvV29y
a2VyQW5kV2luZG93ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQo
dm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCksIEpTRXhwb3NlZFRv
V29ya2VyQW5kV2luZG93KTsKICAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9y
RXhwb3NlZFRvV29ya2VyQW5kV2luZG93ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NV
QlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmNlbGxIZWFwQ2VsbFR5cGUsIEpTRXhwb3NlZFRvV29y
a2VyQW5kV2luZG93KTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JFeHBvc2VkVG9Xb3Jr
ZXJBbmRXaW5kb3cgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2
bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCksIEpTRXhwb3NlZFRvV29ya2VyQW5kV2luZG93
KTsKICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yRXhwb3NlZFRvV29ya2Vy
QW5kV2luZG93LmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2Rl
IikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRleDog
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTUGFpbnRXb3JrbGV0R2xv
YmFsU2NvcGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNQYWludFdvcmtsZXRHbG9iYWxTY29wZS5oCShyZXZpc2lvbiAyODYwODEpCisr
KyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNQYWludFdvcmtsZXRH
bG9iYWxTY29wZS5oCSh3b3JraW5nIGNvcHkpCkBAIC04Miw3ICs4Miw3IEBAIHB1YmxpYzoKICAg
ICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAg
ewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1BhaW50V29y
a2xldEdsb2JhbFNjb3BlUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFp
bk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAg
ICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYg
dm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3Rv
dHlwZSkKICAgICB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUu
aAkocmV2aXNpb24gMjg2MDgxKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTU2VydmljZVdvcmtlckdsb2JhbFNjb3BlLmgJKHdvcmtpbmcgY29weSkKQEAgLTgy
LDcgKzgyLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFj
ZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQ
QUNFX1NIQVJBQkxFKEpTU2VydmljZVdvcmtlckdsb2JhbFNjb3BlUHJvdG90eXBlLCBCYXNlKTsK
LSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZt
LnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBj
cmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNTaGFyZWRXb3JrZXJHbG9iYWxTY29wZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1No
YXJlZFdvcmtlckdsb2JhbFNjb3BlLmgJKHJldmlzaW9uIDI4NjA4MSkKKysrIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1NoYXJlZFdvcmtlckdsb2JhbFNjb3BlLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTgyLDcgKzgyLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6
Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNU
QVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTU2hhcmVkV29ya2VyR2xvYmFsU2Nv
cGVQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7
CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KICAgICBzdGF0
aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDRVJl
YWN0aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdENFUmVhY3Rpb25zLmNwcAkocmV2aXNpb24gMjg2MDgxKQorKysgU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENFUmVhY3Rpb25zLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtOTEsNyArOTEsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpT
Qzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAg
U1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0Q0VSZWFjdGlvbnNQcm90
b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAg
ICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KICAgICBzdGF0aWMgSlND
OjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKQEAgLTQz
OCw5ICs0MzgsOSBAQCBKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3RDRVJlYWN0aW9uczo6c3ViCiAg
ICAgICAgIHJldHVybiBzcGFjZTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92
PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdENFUmVhY3Rpb25zPiB8fCAhSlNUZXN0
Q0VSZWFjdGlvbnM6Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjpp
c19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0Q0VSZWFjdGlvbnM+
KQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RDRVJlYWN0aW9ucyA9IG1ha2VVbmlx
dWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5kZXN0cnVjdGli
bGVPYmplY3RIZWFwQ2VsbFR5cGUsIEpTVGVzdENFUmVhY3Rpb25zKTsKKyAgICAgICAgc3BhY2Vz
Lm1fc3Vic3BhY2VGb3JUZXN0Q0VSZWFjdGlvbnMgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJ
U09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5
cGUoKSwgSlNUZXN0Q0VSZWFjdGlvbnMpOwogICAgIGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vi
c3BhY2VGb3JUZXN0Q0VSZWFjdGlvbnMgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VC
U1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uY2VsbEhlYXBDZWxsVHlwZSwgSlNUZXN0Q0VSZWFjdGlv
bnMpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RDRVJlYWN0aW9ucyA9IG1ha2VV
bmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFw
Q2VsbFR5cGUoKSwgSlNUZXN0Q0VSZWFjdGlvbnMpOwogICAgIGF1dG8qIHNwYWNlID0gc3BhY2Vz
Lm1fc3Vic3BhY2VGb3JUZXN0Q0VSZWFjdGlvbnMuZ2V0KCk7CiBJR05PUkVfV0FSTklOR1NfQkVH
SU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2lj
YWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENFUmVhY3Rpb25zU3RyaW5n
aWZpZXIuY3BwCShyZXZpc2lvbiAyODYwODEpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllci5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTc1LDcgKzc1LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNw
YWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NF
UlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXJQcm90
b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAg
ICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KICAgICBzdGF0aWMgSlND
OjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKQEAgLTI2
NCw5ICsyNjQsOSBAQCBKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3RDRVJlYWN0aW9uc1N0cmluCiAg
ICAgICAgIHJldHVybiBzcGFjZTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92
PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXI+
IHx8ICFKU1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyOjpuZWVkc0Rlc3RydWN0aW9uKTsKICAg
ICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmpl
Y3QsIEpTVGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXI+KQotICAgICAgICBzcGFjZXMubV9zdWJz
cGFjZUZvclRlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFj
ZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBD
ZWxsVHlwZSwgSlNUZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllcik7CisgICAgICAgIHNwYWNlcy5t
X3N1YnNwYWNlRm9yVGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXIgPSBtYWtlVW5pcXVlPElzb1N1
YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RI
ZWFwQ2VsbFR5cGUoKSwgSlNUZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllcik7CiAgICAgZWxzZQot
ICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyID0g
bWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmNl
bGxIZWFwQ2VsbFR5cGUsIEpTVGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXIpOworICAgICAgICBz
cGFjZXMubV9zdWJzcGFjZUZvclRlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyID0gbWFrZVVuaXF1
ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxs
VHlwZSgpLCBKU1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyKTsKICAgICBhdXRvKiBzcGFjZSA9
IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXIuZ2V0KCk7CiBJ
R05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdT
X0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2FsbFRyYWNlci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENhbGxUcmFjZXIu
Y3BwCShyZXZpc2lvbiAyODYwODEpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0Q2FsbFRyYWNlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk3LDcgKzk3
LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihK
U0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NI
QVJBQkxFKEpTVGVzdENhbGxUcmFjZXJQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4g
JnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFj
ZSgpOwogICAgIH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShK
U0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFs
dWUgcHJvdG90eXBlKQogICAgIHsKQEAgLTUxMyw5ICs1MTMsOSBAQCBKU0M6Oklzb1N1YnNwYWNl
KiBKU1Rlc3RDYWxsVHJhY2VyOjpzdWJzCiAgICAgICAgIHJldHVybiBzcGFjZTsKICAgICBzdGF0
aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpT
VGVzdENhbGxUcmFjZXI+IHx8ICFKU1Rlc3RDYWxsVHJhY2VyOjpuZWVkc0Rlc3RydWN0aW9uKTsK
ICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVP
YmplY3QsIEpTVGVzdENhbGxUcmFjZXI+KQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRl
c3RDYWxsVHJhY2VyID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQo
dm0uaGVhcCwgKnZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSwgSlNUZXN0Q2FsbFRy
YWNlcik7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdENhbGxUcmFjZXIgPSBtYWtl
VW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVj
dGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0Q2FsbFRyYWNlcik7CiAgICAgZWxzZQot
ICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RDYWxsVHJhY2VyID0gbWFrZVVuaXF1ZTxJ
c29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmNlbGxIZWFwQ2VsbFR5
cGUsIEpTVGVzdENhbGxUcmFjZXIpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RD
YWxsVHJhY2VyID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0u
aGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RDYWxsVHJhY2VyKTsKICAgICBhdXRv
KiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdENhbGxUcmFjZXIuZ2V0KCk7CiBJR05P
UkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JF
R0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3IuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3Rvci5jcHAJKHJldmlzaW9uIDI4NjA4MSkK
KysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDbGFzc1dp
dGhKU0J1aWx0aW5Db25zdHJ1Y3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY0LDcgKzY0LDcg
QEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6
OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJB
QkxFKEpTVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yUHJvdG90eXBlLCBCYXNlKTsK
LSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZt
LnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBj
cmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC0xNzYsOSArMTc2LDkgQEAg
SlNDOjpJc29TdWJzcGFjZSogSlNUZXN0Q2xhc3NXaXRoSlNCdWlsdAogICAgICAgICByZXR1cm4g
c3BhY2U7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1
Y3RpYmxlT2JqZWN0LCBKU1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3Rvcj4gfHwgIUpT
VGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yOjpuZWVkc0Rlc3RydWN0aW9uKTsKICAg
ICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmpl
Y3QsIEpTVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yPikKLSAgICAgICAgc3BhY2Vz
Lm1fc3Vic3BhY2VGb3JUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3IgPSBtYWtlVW5p
cXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uZGVzdHJ1Y3Rp
YmxlT2JqZWN0SGVhcENlbGxUeXBlLCBKU1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3Rv
cik7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNv
bnN0cnVjdG9yID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0u
aGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCksIEpTVGVzdENsYXNzV2l0
aEpTQnVpbHRpbkNvbnN0cnVjdG9yKTsKICAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNw
YWNlRm9yVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yID0gbWFrZVVuaXF1ZTxJc29T
dWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmNlbGxIZWFwQ2VsbFR5cGUs
IEpTVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yKTsKKyAgICAgICAgc3BhY2VzLm1f
c3Vic3BhY2VGb3JUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3IgPSBtYWtlVW5pcXVl
PElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxU
eXBlKCksIEpTVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yKTsKICAgICBhdXRvKiBz
cGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVj
dG9yLmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKIElH
Tk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRleDogU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENvbmRpdGlvbmFsSW5jbHVk
ZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzLmNwcAkocmV2aXNpb24gMjg2MDgxKQorKysg
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENvbmRpdGlvbmFs
SW5jbHVkZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjcsNyArMTI3LDcgQEAgcHVibGljOgog
ICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKICAg
ICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdENv
bmRpdGlvbmFsSW5jbHVkZXNQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBs
YWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwog
ICAgIH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZN
JiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJv
dG90eXBlKQogICAgIHsKQEAgLTc4OSw5ICs3ODksOSBAQCBKU0M6Oklzb1N1YnNwYWNlKiBKU1Rl
c3RDb25kaXRpb25hbEluY2x1CiAgICAgICAgIHJldHVybiBzcGFjZTsKICAgICBzdGF0aWNfYXNz
ZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdENv
bmRpdGlvbmFsSW5jbHVkZXM+IHx8ICFKU1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzOjpuZWVkc0Rl
c3RydWN0aW9uKTsKICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNE
ZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdENvbmRpdGlvbmFsSW5jbHVkZXM+KQotICAgICAgICBz
cGFjZXMubV9zdWJzcGFjZUZvclRlc3RDb25kaXRpb25hbEluY2x1ZGVzID0gbWFrZVVuaXF1ZTxJ
c29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmRlc3RydWN0aWJsZU9i
amVjdEhlYXBDZWxsVHlwZSwgSlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlcyk7CisgICAgICAgIHNw
YWNlcy5tX3N1YnNwYWNlRm9yVGVzdENvbmRpdGlvbmFsSW5jbHVkZXMgPSBtYWtlVW5pcXVlPElz
b1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmpl
Y3RIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlcyk7CiAgICAgZWxzZQot
ICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RDb25kaXRpb25hbEluY2x1ZGVzID0gbWFr
ZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmNlbGxI
ZWFwQ2VsbFR5cGUsIEpTVGVzdENvbmRpdGlvbmFsSW5jbHVkZXMpOworICAgICAgICBzcGFjZXMu
bV9zdWJzcGFjZUZvclRlc3RDb25kaXRpb25hbEluY2x1ZGVzID0gbWFrZVVuaXF1ZTxJc29TdWJz
cGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBK
U1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzKTsKICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1
YnNwYWNlRm9yVGVzdENvbmRpdGlvbmFsSW5jbHVkZXMuZ2V0KCk7CiBJR05PUkVfV0FSTklOR1Nf
QkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xv
Z2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0Q29uZGl0aW9uYWxseVJlYWRXcml0ZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENvbmRpdGlvbmFsbHlS
ZWFkV3JpdGUuY3BwCShyZXZpc2lvbiAyODYwODEpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q29uZGl0aW9uYWxseVJlYWRXcml0ZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTk4LDcgKzk4LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1
YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19B
U1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdENvbmRpdGlvbmFsbHlSZWFkV3JpdGVQ
cm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7Cisg
ICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KICAgICBzdGF0aWMg
SlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKQEAg
LTYxMSw5ICs2MTEsOSBAQCBKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3RDb25kaXRpb25hbGx5UmVh
CiAgICAgICAgIHJldHVybiBzcGFjZTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9v
Zl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdENvbmRpdGlvbmFsbHlSZWFkV3Jp
dGU+IHx8ICFKU1Rlc3RDb25kaXRpb25hbGx5UmVhZFdyaXRlOjpuZWVkc0Rlc3RydWN0aW9uKTsK
ICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVP
YmplY3QsIEpTVGVzdENvbmRpdGlvbmFsbHlSZWFkV3JpdGU+KQotICAgICAgICBzcGFjZXMubV9z
dWJzcGFjZUZvclRlc3RDb25kaXRpb25hbGx5UmVhZFdyaXRlID0gbWFrZVVuaXF1ZTxJc29TdWJz
cGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmRlc3RydWN0aWJsZU9iamVjdEhl
YXBDZWxsVHlwZSwgSlNUZXN0Q29uZGl0aW9uYWxseVJlYWRXcml0ZSk7CisgICAgICAgIHNwYWNl
cy5tX3N1YnNwYWNlRm9yVGVzdENvbmRpdGlvbmFsbHlSZWFkV3JpdGUgPSBtYWtlVW5pcXVlPElz
b1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmpl
Y3RIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0Q29uZGl0aW9uYWxseVJlYWRXcml0ZSk7CiAgICAgZWxz
ZQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RDb25kaXRpb25hbGx5UmVhZFdyaXRl
ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZt
LmNlbGxIZWFwQ2VsbFR5cGUsIEpTVGVzdENvbmRpdGlvbmFsbHlSZWFkV3JpdGUpOworICAgICAg
ICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RDb25kaXRpb25hbGx5UmVhZFdyaXRlID0gbWFrZVVu
aXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBD
ZWxsVHlwZSgpLCBKU1Rlc3RDb25kaXRpb25hbGx5UmVhZFdyaXRlKTsKICAgICBhdXRvKiBzcGFj
ZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdENvbmRpdGlvbmFsbHlSZWFkV3JpdGUuZ2V0KCk7
CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5J
TkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RE9NSklULmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RE9NSklULmNwcAko
cmV2aXNpb24gMjg2MDgxKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdERPTUpJVC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ4MSw3ICs0ODEsNyBAQCBw
dWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0m
IHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUo
SlNUZXN0RE9NSklUUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9i
amVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9
CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0s
IEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlw
ZSkKICAgICB7CkBAIC0xMjUyLDkgKzEyNTIsOSBAQCBKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3RE
T01KSVQ6OnN1YnNwYWNlCiAgICAgICAgIHJldHVybiBzcGFjZTsKICAgICBzdGF0aWNfYXNzZXJ0
KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdERPTUpJ
VD4gfHwgIUpTVGVzdERPTUpJVDo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3RleHBy
IChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RET01K
SVQ+KQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RET01KSVQgPSBtYWtlVW5pcXVl
PElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uZGVzdHJ1Y3RpYmxl
T2JqZWN0SGVhcENlbGxUeXBlLCBKU1Rlc3RET01KSVQpOworICAgICAgICBzcGFjZXMubV9zdWJz
cGFjZUZvclRlc3RET01KSVQgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0Vf
SU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0
RE9NSklUKTsKICAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdERPTUpJ
VCA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2
bS5jZWxsSGVhcENlbGxUeXBlLCBKU1Rlc3RET01KSVQpOworICAgICAgICBzcGFjZXMubV9zdWJz
cGFjZUZvclRlc3RET01KSVQgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0Vf
SU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCksIEpTVGVzdERPTUpJVCk7CiAgICAg
YXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RET01KSVQuZ2V0KCk7CiBJR05P
UkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JF
R0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RGVmYXVsdFRvSlNPTi5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERlZmF1bHRUb0pT
T04uY3BwCShyZXZpc2lvbiAyODYwODEpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0RGVmYXVsdFRvSlNPTi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEy
NCw3ICsxMjQsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNw
YWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VC
U1BBQ0VfU0hBUkFCTEUoSlNUZXN0RGVmYXVsdFRvSlNPTlByb3RvdHlwZSwgQmFzZSk7Ci0gICAg
ICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFp
bk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRl
U3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAtODA4LDkgKzgwOCw5IEBAIEpTQzo6
SXNvU3Vic3BhY2UqIEpTVGVzdERlZmF1bHRUb0pTT046OnMKICAgICAgICAgcmV0dXJuIHNwYWNl
OwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJs
ZU9iamVjdCwgSlNUZXN0RGVmYXVsdFRvSlNPTj4gfHwgIUpTVGVzdERlZmF1bHRUb0pTT046Om5l
ZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlND
OjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0RGVmYXVsdFRvSlNPTj4pCi0gICAgICAgIHNw
YWNlcy5tX3N1YnNwYWNlRm9yVGVzdERlZmF1bHRUb0pTT04gPSBtYWtlVW5pcXVlPElzb1N1YnNw
YWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVh
cENlbGxUeXBlLCBKU1Rlc3REZWZhdWx0VG9KU09OKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3Bh
Y2VGb3JUZXN0RGVmYXVsdFRvSlNPTiA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJT
UEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBK
U1Rlc3REZWZhdWx0VG9KU09OKTsKICAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNl
Rm9yVGVzdERlZmF1bHRUb0pTT04gPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BB
Q0VfSU5JVCh2bS5oZWFwLCAqdm0uY2VsbEhlYXBDZWxsVHlwZSwgSlNUZXN0RGVmYXVsdFRvSlNP
Tik7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdERlZmF1bHRUb0pTT04gPSBtYWtl
VW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVh
cENlbGxUeXBlKCksIEpTVGVzdERlZmF1bHRUb0pTT04pOwogICAgIGF1dG8qIHNwYWNlID0gc3Bh
Y2VzLm1fc3Vic3BhY2VGb3JUZXN0RGVmYXVsdFRvSlNPTi5nZXQoKTsKIElHTk9SRV9XQVJOSU5H
U19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRv
bG9naWNhbC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3REZWZh
dWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWQuY3BwCShyZXZpc2lvbiAyODYwODEpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RGVmYXVsdFRvSlNPTkZp
bHRlcmVkQnlFeHBvc2VkLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzUsNyArNzUsNyBAQCBwdWJs
aWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZt
KQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNU
ZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkUHJvdG90eXBlLCBCYXNlKTsKLSAgICAg
ICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWlu
T2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVT
dHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
SlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC0yNzAsOSArMjcwLDkgQEAgSlNDOjpJ
c29TdWJzcGFjZSogSlNUZXN0RGVmYXVsdFRvSlNPTkZpbAogICAgICAgICByZXR1cm4gc3BhY2U7
CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxl
T2JqZWN0LCBKU1Rlc3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWQ+IHx8ICFKU1Rlc3RE
ZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWQ6Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlm
IGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwg
SlNUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkPikKLSAgICAgICAgc3BhY2VzLm1f
c3Vic3BhY2VGb3JUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkID0gbWFrZVVuaXF1
ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmRlc3RydWN0aWJs
ZU9iamVjdEhlYXBDZWxsVHlwZSwgSlNUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2Vk
KTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVk
QnlFeHBvc2VkID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0u
aGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCksIEpTVGVzdERlZmF1bHRU
b0pTT05GaWx0ZXJlZEJ5RXhwb3NlZCk7CiAgICAgZWxzZQotICAgICAgICBzcGFjZXMubV9zdWJz
cGFjZUZvclRlc3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWQgPSBtYWtlVW5pcXVlPElz
b1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uY2VsbEhlYXBDZWxsVHlw
ZSwgSlNUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkKTsKKyAgICAgICAgc3BhY2Vz
Lm1fc3Vic3BhY2VGb3JUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkID0gbWFrZVVu
aXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBD
ZWxsVHlwZSgpLCBKU1Rlc3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWQpOwogICAgIGF1
dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVk
QnlFeHBvc2VkLmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2Rl
IikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRleDog
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERlZmF1bHRUb0pT
T05JbmRpcmVjdEluaGVyaXRhbmNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RGVmYXVsdFRvSlNPTkluZGlyZWN0SW5oZXJp
dGFuY2UuY3BwCShyZXZpc2lvbiAyODYwODEpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0RGVmYXVsdFRvSlNPTkluZGlyZWN0SW5oZXJpdGFuY2UuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC02Miw3ICs2Miw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlND
OjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBT
VEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3REZWZhdWx0VG9KU09OSW5k
aXJlY3RJbmhlcml0YW5jZVByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxh
aW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAg
ICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0m
IHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90
b3R5cGUpCiAgICAgewpAQCAtMTYyLDkgKzE2Miw5IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVz
dERlZmF1bHRUb0pTT05JbmQKICAgICAgICAgcmV0dXJuIHNwYWNlOwogICAgIHN0YXRpY19hc3Nl
cnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0RGVm
YXVsdFRvSlNPTkluZGlyZWN0SW5oZXJpdGFuY2U+IHx8ICFKU1Rlc3REZWZhdWx0VG9KU09OSW5k
aXJlY3RJbmhlcml0YW5jZTo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3RleHByIChz
dGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3REZWZhdWx0
VG9KU09OSW5kaXJlY3RJbmhlcml0YW5jZT4pCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9y
VGVzdERlZmF1bHRUb0pTT05JbmRpcmVjdEluaGVyaXRhbmNlID0gbWFrZVVuaXF1ZTxJc29TdWJz
cGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmRlc3RydWN0aWJsZU9iamVjdEhl
YXBDZWxsVHlwZSwgSlNUZXN0RGVmYXVsdFRvSlNPTkluZGlyZWN0SW5oZXJpdGFuY2UpOworICAg
ICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3REZWZhdWx0VG9KU09OSW5kaXJlY3RJbmhlcml0
YW5jZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAs
IHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3REZWZhdWx0VG9KU09O
SW5kaXJlY3RJbmhlcml0YW5jZSk7CiAgICAgZWxzZQotICAgICAgICBzcGFjZXMubV9zdWJzcGFj
ZUZvclRlc3REZWZhdWx0VG9KU09OSW5kaXJlY3RJbmhlcml0YW5jZSA9IG1ha2VVbmlxdWU8SXNv
U3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5jZWxsSGVhcENlbGxUeXBl
LCBKU1Rlc3REZWZhdWx0VG9KU09OSW5kaXJlY3RJbmhlcml0YW5jZSk7CisgICAgICAgIHNwYWNl
cy5tX3N1YnNwYWNlRm9yVGVzdERlZmF1bHRUb0pTT05JbmRpcmVjdEluaGVyaXRhbmNlID0gbWFr
ZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhl
YXBDZWxsVHlwZSgpLCBKU1Rlc3REZWZhdWx0VG9KU09OSW5kaXJlY3RJbmhlcml0YW5jZSk7CiAg
ICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3REZWZhdWx0VG9KU09OSW5k
aXJlY3RJbmhlcml0YW5jZS5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFi
bGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3REZWZh
dWx0VG9KU09OSW5oZXJpdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERlZmF1bHRUb0pTT05Jbmhlcml0LmNwcAkocmV2aXNp
b24gMjg2MDgxKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdERlZmF1bHRUb0pTT05Jbmhlcml0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtODksNyArODks
NyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpT
Qzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hB
UkFCTEUoSlNUZXN0RGVmYXVsdFRvSlNPTkluaGVyaXRQcm90b3R5cGUsIEJhc2UpOwotICAgICAg
ICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5P
YmplY3RTcGFjZSgpOwogICAgIH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0
cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBK
U0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKQEAgLTI5Miw5ICsyOTIsOSBAQCBKU0M6Oklz
b1N1YnNwYWNlKiBKU1Rlc3REZWZhdWx0VG9KU09OSW5oCiAgICAgICAgIHJldHVybiBzcGFjZTsK
ICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVP
YmplY3QsIEpTVGVzdERlZmF1bHRUb0pTT05Jbmhlcml0PiB8fCAhSlNUZXN0RGVmYXVsdFRvSlNP
TkluaGVyaXQ6Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19i
YXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0RGVmYXVsdFRvSlNPTklu
aGVyaXQ+KQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3REZWZhdWx0VG9KU09OSW5o
ZXJpdCA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAs
ICp2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUsIEpTVGVzdERlZmF1bHRUb0pTT05J
bmhlcml0KTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0RGVmYXVsdFRvSlNPTklu
aGVyaXQgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFw
LCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0RGVmYXVsdFRvSlNP
TkluaGVyaXQpOwogICAgIGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0RGVm
YXVsdFRvSlNPTkluaGVyaXQgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0Vf
SU5JVCh2bS5oZWFwLCAqdm0uY2VsbEhlYXBDZWxsVHlwZSwgSlNUZXN0RGVmYXVsdFRvSlNPTklu
aGVyaXQpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3REZWZhdWx0VG9KU09OSW5o
ZXJpdCA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAs
IHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0RGVmYXVsdFRvSlNPTkluaGVyaXQpOwogICAg
IGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0RGVmYXVsdFRvSlNPTkluaGVy
aXQuZ2V0KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdO
T1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RGVmYXVsdFRvSlNPTkluaGVy
aXRGaW5hbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdERlZmF1bHRUb0pTT05Jbmhlcml0RmluYWwuY3BwCShyZXZpc2lvbiAy
ODYwODEpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
RGVmYXVsdFRvSlNPTkluaGVyaXRGaW5hbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTkxLDcgKzkx
LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihK
U0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NI
QVJBQkxFKEpTVGVzdERlZmF1bHRUb0pTT05Jbmhlcml0RmluYWxQcm90b3R5cGUsIEJhc2UpOwot
ICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0u
cGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNy
ZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKQEAgLTMzMiw5ICszMzIsOSBAQCBK
U0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3REZWZhdWx0VG9KU09OSW5oCiAgICAgICAgIHJldHVybiBz
cGFjZTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVj
dGlibGVPYmplY3QsIEpTVGVzdERlZmF1bHRUb0pTT05Jbmhlcml0RmluYWw+IHx8ICFKU1Rlc3RE
ZWZhdWx0VG9KU09OSW5oZXJpdEZpbmFsOjpuZWVkc0Rlc3RydWN0aW9uKTsKICAgICBpZiBjb25z
dGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVz
dERlZmF1bHRUb0pTT05Jbmhlcml0RmluYWw+KQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZv
clRlc3REZWZhdWx0VG9KU09OSW5oZXJpdEZpbmFsID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4g
SVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxs
VHlwZSwgSlNUZXN0RGVmYXVsdFRvSlNPTkluaGVyaXRGaW5hbCk7CisgICAgICAgIHNwYWNlcy5t
X3N1YnNwYWNlRm9yVGVzdERlZmF1bHRUb0pTT05Jbmhlcml0RmluYWwgPSBtYWtlVW5pcXVlPElz
b1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmpl
Y3RIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0RGVmYXVsdFRvSlNPTkluaGVyaXRGaW5hbCk7CiAgICAg
ZWxzZQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3REZWZhdWx0VG9KU09OSW5oZXJp
dEZpbmFsID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVh
cCwgKnZtLmNlbGxIZWFwQ2VsbFR5cGUsIEpTVGVzdERlZmF1bHRUb0pTT05Jbmhlcml0RmluYWwp
OworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3REZWZhdWx0VG9KU09OSW5oZXJpdEZp
bmFsID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwg
dm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3REZWZhdWx0VG9KU09OSW5oZXJpdEZpbmFsKTsK
ICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdERlZmF1bHRUb0pTT05J
bmhlcml0RmluYWwuZ2V0KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNv
ZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RGVsZWdhdGVU
b1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0
aWNBdHRyaWJ1dGUuY3BwCShyZXZpc2lvbiAyODYwODEpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJp
YnV0ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcwLDcgKzcwLDcgQEAgcHVibGljOgogICAgIHN0
YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAg
ICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdERlbGVnYXRl
VG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGVQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1
cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RT
cGFjZSgpOwogICAgIH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVy
ZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpT
VmFsdWUgcHJvdG90eXBlKQogICAgIHsKQEAgLTI0Niw5ICsyNDYsOSBAQCBKU0M6Oklzb1N1YnNw
YWNlKiBKU1Rlc3REZWxlZ2F0ZVRvU2hhcmVkCiAgICAgICAgIHJldHVybiBzcGFjZTsKICAgICBz
dGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3Qs
IEpTVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGU+IHx8ICFKU1Rlc3REZWxl
Z2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlOjpuZWVkc0Rlc3RydWN0aW9uKTsKICAgICBp
ZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3Qs
IEpTVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGU+KQotICAgICAgICBzcGFj
ZXMubV9zdWJzcGFjZUZvclRlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlID0g
bWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmRl
c3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSwgSlNUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRo
ZXRpY0F0dHJpYnV0ZSk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdERlbGVnYXRl
VG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGUgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09f
U1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUo
KSwgSlNUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZSk7CiAgICAgZWxzZQot
ICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGlj
QXR0cmlidXRlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0u
aGVhcCwgKnZtLmNlbGxIZWFwQ2VsbFR5cGUsIEpTVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0
aWNBdHRyaWJ1dGUpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3REZWxlZ2F0ZVRv
U2hhcmVkU3ludGhldGljQXR0cmlidXRlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NV
QlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3REZWxlZ2F0
ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlKTsKICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5t
X3N1YnNwYWNlRm9yVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGUuZ2V0KCk7
CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5J
TkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RG9tYWluU2VjdXJpdHkuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3REb21h
aW5TZWN1cml0eS5jcHAJKHJldmlzaW9uIDI4NjA4MSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3REb21haW5TZWN1cml0eS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTgwLDcgKzgwLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNl
KiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRf
SVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdERvbWFpblNlY3VyaXR5UHJvdG90eXBlLCBCYXNl
KTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4g
JnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJl
KiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC0zMjAsOSArMzIwLDkg
QEAgSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0RG9tYWluU2VjdXJpdHk6OgogICAgICAgICByZXR1
cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVz
dHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3REb21haW5TZWN1cml0eT4gfHwgIUpTVGVzdERvbWFpblNl
Y3VyaXR5OjpuZWVkc0Rlc3RydWN0aW9uKTsKICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFz
ZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdERvbWFpblNlY3VyaXR5PikK
LSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0RG9tYWluU2VjdXJpdHkgPSBtYWtlVW5p
cXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uZGVzdHJ1Y3Rp
YmxlT2JqZWN0SGVhcENlbGxUeXBlLCBKU1Rlc3REb21haW5TZWN1cml0eSk7CisgICAgICAgIHNw
YWNlcy5tX3N1YnNwYWNlRm9yVGVzdERvbWFpblNlY3VyaXR5ID0gbWFrZVVuaXF1ZTxJc29TdWJz
cGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVh
cENlbGxUeXBlKCksIEpTVGVzdERvbWFpblNlY3VyaXR5KTsKICAgICBlbHNlCi0gICAgICAgIHNw
YWNlcy5tX3N1YnNwYWNlRm9yVGVzdERvbWFpblNlY3VyaXR5ID0gbWFrZVVuaXF1ZTxJc29TdWJz
cGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmNlbGxIZWFwQ2VsbFR5cGUsIEpT
VGVzdERvbWFpblNlY3VyaXR5KTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0RG9t
YWluU2VjdXJpdHkgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2
bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCksIEpTVGVzdERvbWFpblNlY3VyaXR5KTsKICAg
ICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdERvbWFpblNlY3VyaXR5Lmdl
dCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKIElHTk9SRV9X
QVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRleDogU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEVuYWJsZWRCeVNldHRpbmcuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RFbmFibGVkQnlTZXR0aW5nLmNwcAkocmV2aXNpb24gMjg2MDgxKQorKysgU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEVuYWJsZWRCeVNldHRpbmcuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC05Miw3ICs5Miw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJ
c29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFU
SUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3RFbmFibGVkQnlTZXR0aW5nUHJv
dG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAg
ICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpT
Qzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC00
NTksOSArNDU5LDkgQEAgSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0RW5hYmxlZEJ5U2V0dGluZwog
ICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2Zf
djxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RFbmFibGVkQnlTZXR0aW5nPiB8fCAh
SlNUZXN0RW5hYmxlZEJ5U2V0dGluZzo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3Rl
eHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RF
bmFibGVkQnlTZXR0aW5nPikKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0RW5hYmxl
ZEJ5U2V0dGluZyA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZt
LmhlYXAsICp2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUsIEpTVGVzdEVuYWJsZWRC
eVNldHRpbmcpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RFbmFibGVkQnlTZXR0
aW5nID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwg
dm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCksIEpTVGVzdEVuYWJsZWRCeVNldHRp
bmcpOwogICAgIGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0RW5hYmxlZEJ5
U2V0dGluZyA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhl
YXAsICp2bS5jZWxsSGVhcENlbGxUeXBlLCBKU1Rlc3RFbmFibGVkQnlTZXR0aW5nKTsKKyAgICAg
ICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0RW5hYmxlZEJ5U2V0dGluZyA9IG1ha2VVbmlxdWU8
SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5
cGUoKSwgSlNUZXN0RW5hYmxlZEJ5U2V0dGluZyk7CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMu
bV9zdWJzcGFjZUZvclRlc3RFbmFibGVkQnlTZXR0aW5nLmdldCgpOwogSUdOT1JFX1dBUk5JTkdT
X0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9s
b2dpY2FsLWNvbXBhcmUiKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdEVuYWJsZWRGb3JDb250ZXh0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RW5hYmxlZEZvckNvbnRleHQu
Y3BwCShyZXZpc2lvbiAyODYwODEpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0RW5hYmxlZEZvckNvbnRleHQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02
Niw3ICs2Niw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3Bh
Y2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJT
UEFDRV9TSEFSQUJMRShKU1Rlc3RFbmFibGVkRm9yQ29udGV4dFByb3RvdHlwZSwgQmFzZSk7Ci0g
ICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5w
bGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3Jl
YXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAtMTg2LDkgKzE4Niw5IEBAIEpT
Qzo6SXNvU3Vic3BhY2UqIEpTVGVzdEVuYWJsZWRGb3JDb250ZXgKICAgICAgICAgcmV0dXJuIHNw
YWNlOwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0
aWJsZU9iamVjdCwgSlNUZXN0RW5hYmxlZEZvckNvbnRleHQ+IHx8ICFKU1Rlc3RFbmFibGVkRm9y
Q29udGV4dDo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jh
c2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RFbmFibGVkRm9yQ29udGV4
dD4pCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEVuYWJsZWRGb3JDb250ZXh0ID0g
bWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmRl
c3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSwgSlNUZXN0RW5hYmxlZEZvckNvbnRleHQpOwor
ICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RFbmFibGVkRm9yQ29udGV4dCA9IG1ha2VV
bmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0
aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RFbmFibGVkRm9yQ29udGV4dCk7CiAgICAg
ZWxzZQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RFbmFibGVkRm9yQ29udGV4dCA9
IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5j
ZWxsSGVhcENlbGxUeXBlLCBKU1Rlc3RFbmFibGVkRm9yQ29udGV4dCk7CisgICAgICAgIHNwYWNl
cy5tX3N1YnNwYWNlRm9yVGVzdEVuYWJsZWRGb3JDb250ZXh0ID0gbWFrZVVuaXF1ZTxJc29TdWJz
cGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBK
U1Rlc3RFbmFibGVkRm9yQ29udGV4dCk7CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJz
cGFjZUZvclRlc3RFbmFibGVkRm9yQ29udGV4dC5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJ
TigidW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNh
bC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RFdmVudENvbnN0cnVjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRDb25zdHJ1Y3Rvci5jcHAJKHJl
dmlzaW9uIDI4NjA4MSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RFdmVudENvbnN0cnVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQ3LDcgKzE0
Nyw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3Io
SlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9T
SEFSQUJMRShKU1Rlc3RFdmVudENvbnN0cnVjdG9yUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAg
cmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2Jq
ZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1
Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlND
OjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC0zMjEsOSArMzIxLDkgQEAgSlNDOjpJc29T
dWJzcGFjZSogSlNUZXN0RXZlbnRDb25zdHJ1Y3RvcgogICAgICAgICByZXR1cm4gc3BhY2U7CiAg
ICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2Jq
ZWN0LCBKU1Rlc3RFdmVudENvbnN0cnVjdG9yPiB8fCAhSlNUZXN0RXZlbnRDb25zdHJ1Y3Rvcjo6
bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxK
U0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RFdmVudENvbnN0cnVjdG9yPikKLSAgICAg
ICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0RXZlbnRDb25zdHJ1Y3RvciA9IG1ha2VVbmlxdWU8
SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5kZXN0cnVjdGlibGVP
YmplY3RIZWFwQ2VsbFR5cGUsIEpTVGVzdEV2ZW50Q29uc3RydWN0b3IpOworICAgICAgICBzcGFj
ZXMubV9zdWJzcGFjZUZvclRlc3RFdmVudENvbnN0cnVjdG9yID0gbWFrZVVuaXF1ZTxJc29TdWJz
cGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVh
cENlbGxUeXBlKCksIEpTVGVzdEV2ZW50Q29uc3RydWN0b3IpOwogICAgIGVsc2UKLSAgICAgICAg
c3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0RXZlbnRDb25zdHJ1Y3RvciA9IG1ha2VVbmlxdWU8SXNv
U3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5jZWxsSGVhcENlbGxUeXBl
LCBKU1Rlc3RFdmVudENvbnN0cnVjdG9yKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JU
ZXN0RXZlbnRDb25zdHJ1Y3RvciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFD
RV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0RXZlbnRDb25zdHJ1
Y3Rvcik7CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RFdmVudENv
bnN0cnVjdG9yLmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2Rl
IikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRleDog
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50VGFyZ2V0
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0RXZlbnRUYXJnZXQuY3BwCShyZXZpc2lvbiAyODYwODEpCisrKyBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRUYXJnZXQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC03Myw3ICs3Myw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29T
dWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNf
QVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3RFdmVudFRhcmdldFByb3RvdHlwZSwg
QmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0
dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVj
dHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAtMjYyLDkgKzI2
Miw5IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdEV2ZW50VGFyZ2V0OjpzdWIKICAgICAgICAg
cmV0dXJuIHNwYWNlOwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpK
U0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0RXZlbnRUYXJnZXQ+IHx8ICFKU1Rlc3RFdmVudFRh
cmdldDo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vf
b2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RFdmVudFRhcmdldD4pCi0gICAg
ICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEV2ZW50VGFyZ2V0ID0gbWFrZVVuaXF1ZTxJc29T
dWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmRlc3RydWN0aWJsZU9iamVj
dEhlYXBDZWxsVHlwZSwgSlNUZXN0RXZlbnRUYXJnZXQpOworICAgICAgICBzcGFjZXMubV9zdWJz
cGFjZUZvclRlc3RFdmVudFRhcmdldCA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJT
UEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBK
U1Rlc3RFdmVudFRhcmdldCk7CiAgICAgZWxzZQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZv
clRlc3RFdmVudFRhcmdldCA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9J
TklUKHZtLmhlYXAsICp2bS5jZWxsSGVhcENlbGxUeXBlLCBKU1Rlc3RFdmVudFRhcmdldCk7Cisg
ICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEV2ZW50VGFyZ2V0ID0gbWFrZVVuaXF1ZTxJ
c29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlw
ZSgpLCBKU1Rlc3RFdmVudFRhcmdldCk7CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJz
cGFjZUZvclRlc3RFdmVudFRhcmdldC5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5y
ZWFjaGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21w
YXJlIikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RFeGNlcHRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RFeGNlcHRpb24uY3BwCShyZXZpc2lvbiAyODYwODEpCisrKyBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXhjZXB0aW9uLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNjYsNyArNjYsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpT
Qzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAg
U1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0RXhjZXB0aW9uUHJvdG90
eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAg
ICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6
U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC0xODcs
OSArMTg3LDkgQEAgSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0RXhjZXB0aW9uOjpzdWJzcAogICAg
ICAgICByZXR1cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxK
U0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RFeGNlcHRpb24+IHx8ICFKU1Rlc3RFeGNl
cHRpb246Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNl
X29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0RXhjZXB0aW9uPikKLSAgICAg
ICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0RXhjZXB0aW9uID0gbWFrZVVuaXF1ZTxJc29TdWJz
cGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmRlc3RydWN0aWJsZU9iamVjdEhl
YXBDZWxsVHlwZSwgSlNUZXN0RXhjZXB0aW9uKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VG
b3JUZXN0RXhjZXB0aW9uID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lO
SVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCksIEpTVGVzdEV4
Y2VwdGlvbik7CiAgICAgZWxzZQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RFeGNl
cHRpb24gPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFw
LCAqdm0uY2VsbEhlYXBDZWxsVHlwZSwgSlNUZXN0RXhjZXB0aW9uKTsKKyAgICAgICAgc3BhY2Vz
Lm1fc3Vic3BhY2VGb3JUZXN0RXhjZXB0aW9uID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNP
X1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RFeGNl
cHRpb24pOwogICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0RXhjZXB0
aW9uLmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKIElH
Tk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRleDogU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEdlbmVyYXRlQWRkT3BhcXVl
Um9vdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdEdlbmVyYXRlQWRkT3BhcXVlUm9vdC5jcHAJKHJldmlzaW9uIDI4NjA4MSkK
KysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RHZW5lcmF0
ZUFkZE9wYXF1ZVJvb3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02Niw3ICs2Niw3IEBAIHB1Ymxp
YzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0p
CiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rl
c3RHZW5lcmF0ZUFkZE9wYXF1ZVJvb3RQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4g
JnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFj
ZSgpOwogICAgIH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShK
U0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFs
dWUgcHJvdG90eXBlKQogICAgIHsKQEAgLTE4Nyw5ICsxODcsOSBAQCBKU0M6Oklzb1N1YnNwYWNl
KiBKU1Rlc3RHZW5lcmF0ZUFkZE9wYXF1CiAgICAgICAgIHJldHVybiBzcGFjZTsKICAgICBzdGF0
aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpT
VGVzdEdlbmVyYXRlQWRkT3BhcXVlUm9vdD4gfHwgIUpTVGVzdEdlbmVyYXRlQWRkT3BhcXVlUm9v
dDo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2Zf
djxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RHZW5lcmF0ZUFkZE9wYXF1ZVJvb3Q+
KQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RHZW5lcmF0ZUFkZE9wYXF1ZVJvb3Qg
PSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0u
ZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLCBKU1Rlc3RHZW5lcmF0ZUFkZE9wYXF1ZVJv
b3QpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RHZW5lcmF0ZUFkZE9wYXF1ZVJv
b3QgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2
bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0R2VuZXJhdGVBZGRPcGFx
dWVSb290KTsKICAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEdlbmVy
YXRlQWRkT3BhcXVlUm9vdCA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9J
TklUKHZtLmhlYXAsICp2bS5jZWxsSGVhcENlbGxUeXBlLCBKU1Rlc3RHZW5lcmF0ZUFkZE9wYXF1
ZVJvb3QpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RHZW5lcmF0ZUFkZE9wYXF1
ZVJvb3QgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFw
LCB2bS5jZWxsSGVhcENlbGxUeXBlKCksIEpTVGVzdEdlbmVyYXRlQWRkT3BhcXVlUm9vdCk7CiAg
ICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RHZW5lcmF0ZUFkZE9wYXF1
ZVJvb3QuZ2V0KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQog
SUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2VuZXJhdGVJc1JlYWNo
YWJsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGUuY3BwCShyZXZpc2lvbiAyODYwODEpCisr
KyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2VuZXJhdGVJ
c1JlYWNoYWJsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY2LDcgKzY2LDcgQEAgcHVibGljOgog
ICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKICAg
ICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdEdl
bmVyYXRlSXNSZWFjaGFibGVQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBs
YWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwog
ICAgIH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZN
JiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJv
dG90eXBlKQogICAgIHsKQEAgLTE5Nyw5ICsxOTcsOSBAQCBKU0M6Oklzb1N1YnNwYWNlKiBKU1Rl
c3RHZW5lcmF0ZUlzUmVhY2hhCiAgICAgICAgIHJldHVybiBzcGFjZTsKICAgICBzdGF0aWNfYXNz
ZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdEdl
bmVyYXRlSXNSZWFjaGFibGU+IHx8ICFKU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlOjpuZWVkc0Rl
c3RydWN0aW9uKTsKICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNE
ZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGU+KQotICAgICAgICBz
cGFjZXMubV9zdWJzcGFjZUZvclRlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlID0gbWFrZVVuaXF1ZTxJ
c29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmRlc3RydWN0aWJsZU9i
amVjdEhlYXBDZWxsVHlwZSwgSlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZSk7CisgICAgICAgIHNw
YWNlcy5tX3N1YnNwYWNlRm9yVGVzdEdlbmVyYXRlSXNSZWFjaGFibGUgPSBtYWtlVW5pcXVlPElz
b1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmpl
Y3RIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZSk7CiAgICAgZWxzZQot
ICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlID0gbWFr
ZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmNlbGxI
ZWFwQ2VsbFR5cGUsIEpTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGUpOworICAgICAgICBzcGFjZXMu
bV9zdWJzcGFjZUZvclRlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlID0gbWFrZVVuaXF1ZTxJc29TdWJz
cGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBK
U1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlKTsKICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1
YnNwYWNlRm9yVGVzdEdlbmVyYXRlSXNSZWFjaGFibGUuZ2V0KCk7CiBJR05PUkVfV0FSTklOR1Nf
QkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xv
Z2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0R2xvYmFsT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEdsb2JhbE9iamVjdC5oCShyZXZpc2lvbiAy
ODYwODEpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
R2xvYmFsT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTk4LDcgKzk4LDcgQEAgcHVibGljOgog
ICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKICAg
ICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdEds
b2JhbE9iamVjdFByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmpl
Y3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQog
ICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBK
U0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUp
CiAgICAgewpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbmRleGVkU2V0dGVyTm9JZGVu
dGlmaWVyLmNwcAkocmV2aXNpb24gMjg2MDgxKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXIuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC02NSw3ICs2NSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29T
dWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNf
QVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3RJbmRleGVkU2V0dGVyTm9JZGVudGlm
aWVyUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNl
OworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3Rh
dGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7
CkBAIC0yNzYsOSArMjc2LDkgQEAgSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0SW5kZXhlZFNldHRl
ck5vSQogICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jh
c2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RJbmRleGVkU2V0dGVyTm9J
ZGVudGlmaWVyPiB8fCAhSlNUZXN0SW5kZXhlZFNldHRlck5vSWRlbnRpZmllcjo6bmVlZHNEZXN0
cnVjdGlvbik7CiAgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVz
dHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyPikKLSAgICAg
ICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0SW5kZXhlZFNldHRlck5vSWRlbnRpZmllciA9IG1h
a2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5kZXN0
cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUsIEpTVGVzdEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZp
ZXIpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RJbmRleGVkU2V0dGVyTm9JZGVu
dGlmaWVyID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVh
cCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCksIEpTVGVzdEluZGV4ZWRTZXR0
ZXJOb0lkZW50aWZpZXIpOwogICAgIGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JU
ZXN0SW5kZXhlZFNldHRlck5vSWRlbnRpZmllciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElT
T19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5jZWxsSGVhcENlbGxUeXBlLCBKU1Rlc3RJbmRl
eGVkU2V0dGVyTm9JZGVudGlmaWVyKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0
SW5kZXhlZFNldHRlck5vSWRlbnRpZmllciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19T
VUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0SW5kZXhl
ZFNldHRlck5vSWRlbnRpZmllcik7CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFj
ZUZvclRlc3RJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyLmdldCgpOwogSUdOT1JFX1dBUk5JTkdT
X0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9s
b2dpY2FsLWNvbXBhcmUiKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEluZGV4
ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5jcHAJKHJldmlzaW9uIDI4NjA4MSkKKysrIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbmRleGVkU2V0dGVyVGhy
b3dpbmdFeGNlcHRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NSw3ICs2NSw3IEBAIHB1Ymxp
YzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0p
CiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rl
c3RJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb25Qcm90b3R5cGUsIEJhc2UpOwotICAgICAg
ICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5P
YmplY3RTcGFjZSgpOwogICAgIH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0
cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBK
U0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKQEAgLTI3Niw5ICsyNzYsOSBAQCBKU0M6Oklz
b1N1YnNwYWNlKiBKU1Rlc3RJbmRleGVkU2V0dGVyVGhyCiAgICAgICAgIHJldHVybiBzcGFjZTsK
ICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVP
YmplY3QsIEpTVGVzdEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbj4gfHwgIUpTVGVzdElu
ZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbjo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgaWYg
Y29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBK
U1Rlc3RJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24+KQotICAgICAgICBzcGFjZXMubV9z
dWJzcGFjZUZvclRlc3RJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24gPSBtYWtlVW5pcXVl
PElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uZGVzdHJ1Y3RpYmxl
T2JqZWN0SGVhcENlbGxUeXBlLCBKU1Rlc3RJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24p
OworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RJbmRleGVkU2V0dGVyVGhyb3dpbmdF
eGNlcHRpb24gPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5o
ZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0SW5kZXhlZFNl
dHRlclRocm93aW5nRXhjZXB0aW9uKTsKICAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNw
YWNlRm9yVGVzdEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbiA9IG1ha2VVbmlxdWU8SXNv
U3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5jZWxsSGVhcENlbGxUeXBl
LCBKU1Rlc3RJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24pOworICAgICAgICBzcGFjZXMu
bV9zdWJzcGFjZUZvclRlc3RJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24gPSBtYWtlVW5p
cXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENl
bGxUeXBlKCksIEpTVGVzdEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbik7CiAgICAgYXV0
byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RJbmRleGVkU2V0dGVyVGhyb3dpbmdF
eGNlcHRpb24uZ2V0KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUi
KQogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW5kZXhlZFNldHRl
cldpdGhJZGVudGlmaWVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyLmNwcAko
cmV2aXNpb24gMjg2MDgxKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTczLDcgKzczLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBz
dWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNP
X1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllclByb3Rv
dHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAg
ICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6
OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAtMzA4
LDkgKzMwOCw5IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdEluZGV4ZWRTZXR0ZXJXaXQKICAg
ICAgICAgcmV0dXJuIHNwYWNlOwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8
SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0SW5kZXhlZFNldHRlcldpdGhJZGVudGlm
aWVyPiB8fCAhSlNUZXN0SW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyOjpuZWVkc0Rlc3RydWN0
aW9uKTsKICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVj
dGlibGVPYmplY3QsIEpTVGVzdEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllcj4pCi0gICAgICAg
IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllciA9IG1h
a2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5kZXN0
cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUsIEpTVGVzdEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRp
Zmllcik7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEluZGV4ZWRTZXR0ZXJXaXRo
SWRlbnRpZmllciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZt
LmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RJbmRleGVk
U2V0dGVyV2l0aElkZW50aWZpZXIpOwogICAgIGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vic3Bh
Y2VGb3JUZXN0SW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyID0gbWFrZVVuaXF1ZTxJc29TdWJz
cGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmNlbGxIZWFwQ2VsbFR5cGUsIEpT
VGVzdEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllcik7CisgICAgICAgIHNwYWNlcy5tX3N1YnNw
YWNlRm9yVGVzdEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllciA9IG1ha2VVbmlxdWU8SXNvU3Vi
c3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwg
SlNUZXN0SW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyKTsKICAgICBhdXRvKiBzcGFjZSA9IHNw
YWNlcy5tX3N1YnNwYWNlRm9yVGVzdEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllci5nZXQoKTsK
IElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklO
R1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2UuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2Uu
Y3BwCShyZXZpc2lvbiAyODYwODEpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTgxLDcgKzE4
MSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3Io
SlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9T
SEFSQUJMRShKU1Rlc3RJbnRlcmZhY2VQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4g
JnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFj
ZSgpOwogICAgIH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShK
U0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFs
dWUgcHJvdG90eXBlKQogICAgIHsKQEAgLTExMDQsOSArMTEwNCw5IEBAIHB1YmxpYzoKICAgICAg
ICAgICAgIHJldHVybiBzcGFjZTsKICAgICAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vf
b2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBUZXN0SW50ZXJmYWNlSXRlcmF0b3I+IHx8
ICFUZXN0SW50ZXJmYWNlSXRlcmF0b3I6Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAgICAgICBpZiBj
b25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIFRl
c3RJbnRlcmZhY2VJdGVyYXRvcj4pCi0gICAgICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRl
c3RJbnRlcmZhY2VJdGVyYXRvciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFD
RV9JTklUKHZtLmhlYXAsICp2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuZ2V0KCks
IFRlc3RJbnRlcmZhY2VJdGVyYXRvcik7CisgICAgICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZv
clRlc3RJbnRlcmZhY2VJdGVyYXRvciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJT
UEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBU
ZXN0SW50ZXJmYWNlSXRlcmF0b3IpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBzcGFjZXMu
bV9zdWJzcGFjZUZvclRlc3RJbnRlcmZhY2VJdGVyYXRvciA9IG1ha2VVbmlxdWU8SXNvU3Vic3Bh
Y2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5jZWxsSGVhcENlbGxUeXBlLCBUZXN0
SW50ZXJmYWNlSXRlcmF0b3IpOworICAgICAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0
SW50ZXJmYWNlSXRlcmF0b3IgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0Vf
SU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCksIFRlc3RJbnRlcmZhY2VJdGVyYXRv
cik7CiAgICAgICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0SW50ZXJm
YWNlSXRlcmF0b3IuZ2V0KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNv
ZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkBAIC0x
MTk2LDkgKzExOTYsOSBAQCBKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3RJbnRlcmZhY2U6OnN1YnNw
CiAgICAgICAgIHJldHVybiBzcGFjZTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9v
Zl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdEludGVyZmFjZT4gfHwgIUpTVGVz
dEludGVyZmFjZTo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3RleHByIChzdGQ6Omlz
X2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RJbnRlcmZhY2U+KQot
ICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RJbnRlcmZhY2UgPSBtYWtlVW5pcXVlPElz
b1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uZGVzdHJ1Y3RpYmxlT2Jq
ZWN0SGVhcENlbGxUeXBlLCBKU1Rlc3RJbnRlcmZhY2UpOworICAgICAgICBzcGFjZXMubV9zdWJz
cGFjZUZvclRlc3RJbnRlcmZhY2UgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BB
Q0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwgSlNU
ZXN0SW50ZXJmYWNlKTsKICAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVz
dEludGVyZmFjZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZt
LmhlYXAsICp2bS5jZWxsSGVhcENlbGxUeXBlLCBKU1Rlc3RJbnRlcmZhY2UpOworICAgICAgICBz
cGFjZXMubV9zdWJzcGFjZUZvclRlc3RJbnRlcmZhY2UgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNl
PiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCksIEpTVGVz
dEludGVyZmFjZSk7CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RJ
bnRlcmZhY2UuZ2V0KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUi
KQogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlTGVh
ZGluZ1VuZGVyc2NvcmUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2VMZWFkaW5nVW5kZXJzY29yZS5jcHAJKHJl
dmlzaW9uIDI4NjA4MSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RJbnRlcmZhY2VMZWFkaW5nVW5kZXJzY29yZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTY2LDcgKzY2LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJz
cGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NV
QlNQQUNFX1NIQVJBQkxFKEpTVGVzdEludGVyZmFjZUxlYWRpbmdVbmRlcnNjb3JlUHJvdG90eXBl
LCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICBy
ZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3Ry
dWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC0xODcsOSAr
MTg3LDkgQEAgSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0SW50ZXJmYWNlTGVhZGluZwogICAgICAg
ICByZXR1cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6
OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RJbnRlcmZhY2VMZWFkaW5nVW5kZXJzY29yZT4g
fHwgIUpTVGVzdEludGVyZmFjZUxlYWRpbmdVbmRlcnNjb3JlOjpuZWVkc0Rlc3RydWN0aW9uKTsK
ICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVP
YmplY3QsIEpTVGVzdEludGVyZmFjZUxlYWRpbmdVbmRlcnNjb3JlPikKLSAgICAgICAgc3BhY2Vz
Lm1fc3Vic3BhY2VGb3JUZXN0SW50ZXJmYWNlTGVhZGluZ1VuZGVyc2NvcmUgPSBtYWtlVW5pcXVl
PElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uZGVzdHJ1Y3RpYmxl
T2JqZWN0SGVhcENlbGxUeXBlLCBKU1Rlc3RJbnRlcmZhY2VMZWFkaW5nVW5kZXJzY29yZSk7Cisg
ICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEludGVyZmFjZUxlYWRpbmdVbmRlcnNjb3Jl
ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0u
ZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCksIEpTVGVzdEludGVyZmFjZUxlYWRpbmdV
bmRlcnNjb3JlKTsKICAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdElu
dGVyZmFjZUxlYWRpbmdVbmRlcnNjb3JlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NV
QlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmNlbGxIZWFwQ2VsbFR5cGUsIEpTVGVzdEludGVyZmFj
ZUxlYWRpbmdVbmRlcnNjb3JlKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0SW50
ZXJmYWNlTGVhZGluZ1VuZGVyc2NvcmUgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VC
U1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCksIEpTVGVzdEludGVyZmFj
ZUxlYWRpbmdVbmRlcnNjb3JlKTsKICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNl
Rm9yVGVzdEludGVyZmFjZUxlYWRpbmdVbmRlcnNjb3JlLmdldCgpOwogSUdOT1JFX1dBUk5JTkdT
X0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9s
b2dpY2FsLWNvbXBhcmUiKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdEl0ZXJhYmxlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SXRlcmFibGUuY3BwCShyZXZpc2lvbiAyODYw
ODEpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SXRl
cmFibGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NSw3ICs3NSw3IEBAIHB1YmxpYzoKICAgICBz
dGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewog
ICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3RJdGVyYWJs
ZVByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsK
KyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRp
YyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpA
QCAtMjAxLDkgKzIwMSw5IEBAIHB1YmxpYzoKICAgICAgICAgICAgIHJldHVybiBzcGFjZTsKICAg
ICAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxl
T2JqZWN0LCBUZXN0SXRlcmFibGVJdGVyYXRvcj4gfHwgIVRlc3RJdGVyYWJsZUl0ZXJhdG9yOjpu
ZWVkc0Rlc3RydWN0aW9uKTsKICAgICAgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2Zf
djxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBUZXN0SXRlcmFibGVJdGVyYXRvcj4pCi0gICAg
ICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RJdGVyYWJsZUl0ZXJhdG9yID0gbWFrZVVu
aXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmRlc3RydWN0
aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5nZXQoKSwgVGVzdEl0ZXJhYmxlSXRlcmF0b3IpOworICAg
ICAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0SXRlcmFibGVJdGVyYXRvciA9IG1ha2VV
bmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0
aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBUZXN0SXRlcmFibGVJdGVyYXRvcik7CiAgICAgICAg
IGVsc2UKLSAgICAgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEl0ZXJhYmxlSXRlcmF0
b3IgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAq
dm0uY2VsbEhlYXBDZWxsVHlwZSwgVGVzdEl0ZXJhYmxlSXRlcmF0b3IpOworICAgICAgICAgICAg
c3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0SXRlcmFibGVJdGVyYXRvciA9IG1ha2VVbmlxdWU8SXNv
U3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUo
KSwgVGVzdEl0ZXJhYmxlSXRlcmF0b3IpOwogICAgICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5t
X3N1YnNwYWNlRm9yVGVzdEl0ZXJhYmxlSXRlcmF0b3IuZ2V0KCk7CiBJR05PUkVfV0FSTklOR1Nf
QkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xv
Z2ljYWwtY29tcGFyZSIpCkBAIC0yOTMsOSArMjkzLDkgQEAgSlNDOjpJc29TdWJzcGFjZSogSlNU
ZXN0SXRlcmFibGU6OnN1YnNwYQogICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fz
c2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RJ
dGVyYWJsZT4gfHwgIUpTVGVzdEl0ZXJhYmxlOjpuZWVkc0Rlc3RydWN0aW9uKTsKICAgICBpZiBj
b25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpT
VGVzdEl0ZXJhYmxlPikKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0SXRlcmFibGUg
PSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0u
ZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLCBKU1Rlc3RJdGVyYWJsZSk7CisgICAgICAg
IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEl0ZXJhYmxlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFj
ZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENl
bGxUeXBlKCksIEpTVGVzdEl0ZXJhYmxlKTsKICAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1
YnNwYWNlRm9yVGVzdEl0ZXJhYmxlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQ
QUNFX0lOSVQodm0uaGVhcCwgKnZtLmNlbGxIZWFwQ2VsbFR5cGUsIEpTVGVzdEl0ZXJhYmxlKTsK
KyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0SXRlcmFibGUgPSBtYWtlVW5pcXVlPElz
b1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBl
KCksIEpTVGVzdEl0ZXJhYmxlKTsKICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNl
Rm9yVGVzdEl0ZXJhYmxlLmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJs
ZS1jb2RlIikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJ
bmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEpTQnVp
bHRpbkNvbnN0cnVjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3IuY3BwCShyZXZpc2lv
biAyODYwODEpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0SlNCdWlsdGluQ29uc3RydWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02OSw3ICs2OSw3
IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlND
OjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFS
QUJMRShKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvclByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAg
IHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9i
amVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3Ry
dWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpT
Qzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAtMjMwLDkgKzIzMCw5IEBAIEpTQzo6SXNv
U3Vic3BhY2UqIEpTVGVzdEpTQnVpbHRpbkNvbnN0cnUKICAgICAgICAgcmV0dXJuIHNwYWNlOwog
ICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9i
amVjdCwgSlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3I+IHx8ICFKU1Rlc3RKU0J1aWx0aW5Db25z
dHJ1Y3Rvcjo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jh
c2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1
Y3Rvcj4pCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEpTQnVpbHRpbkNvbnN0cnVj
dG9yID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwg
KnZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSwgSlNUZXN0SlNCdWlsdGluQ29uc3Ry
dWN0b3IpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RKU0J1aWx0aW5Db25zdHJ1
Y3RvciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAs
IHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RKU0J1aWx0aW5Db25z
dHJ1Y3Rvcik7CiAgICAgZWxzZQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RKU0J1
aWx0aW5Db25zdHJ1Y3RvciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9J
TklUKHZtLmhlYXAsICp2bS5jZWxsSGVhcENlbGxUeXBlLCBKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1
Y3Rvcik7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEpTQnVpbHRpbkNvbnN0cnVj
dG9yID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwg
dm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rvcik7CiAgICAg
YXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rv
ci5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJR05P
UkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RMZWdhY3lGYWN0b3J5RnVuY3Rp
b24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb24uY3BwCShyZXZpc2lvbiAyODYwODEpCisr
KyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TGVnYWN5RmFj
dG9yeUZ1bmN0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjcsNyArNjcsNyBAQCBwdWJsaWM6
CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQog
ICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0
TGVnYWN5RmFjdG9yeUZ1bmN0aW9uUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2
bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2Uo
KTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlND
OjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVl
IHByb3RvdHlwZSkKICAgICB7CkBAIC0yMzAsOSArMjMwLDkgQEAgSlNDOjpJc29TdWJzcGFjZSog
SlNUZXN0TGVnYWN5RmFjdG9yeUZ1bgogICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAgc3RhdGlj
X2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rl
c3RMZWdhY3lGYWN0b3J5RnVuY3Rpb24+IHx8ICFKU1Rlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb246
Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8
SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uPikK
LSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uID0g
bWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmRl
c3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSwgSlNUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9u
KTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9u
ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0u
ZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCksIEpTVGVzdExlZ2FjeUZhY3RvcnlGdW5j
dGlvbik7CiAgICAgZWxzZQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RMZWdhY3lG
YWN0b3J5RnVuY3Rpb24gPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5J
VCh2bS5oZWFwLCAqdm0uY2VsbEhlYXBDZWxsVHlwZSwgSlNUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0
aW9uKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0
aW9uID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwg
dm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb24pOwogICAg
IGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0
aW9uLmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKIElH
Tk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRleDogU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdExlZ2FjeU5vSW50ZXJmYWNl
T2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0TGVnYWN5Tm9JbnRlcmZhY2VPYmplY3QuY3BwCShyZXZpc2lvbiAyODYw
ODEpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TGVn
YWN5Tm9JbnRlcmZhY2VPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04NSw3ICs4NSw3IEBA
IHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpW
TSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJM
RShKU1Rlc3RMZWdhY3lOb0ludGVyZmFjZU9iamVjdFByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAg
IHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9i
amVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3Ry
dWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpT
Qzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAtMzM1LDkgKzMzNSw5IEBAIEpTQzo6SXNv
U3Vic3BhY2UqIEpTVGVzdExlZ2FjeU5vSW50ZXJmYWMKICAgICAgICAgcmV0dXJuIHNwYWNlOwog
ICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9i
amVjdCwgSlNUZXN0TGVnYWN5Tm9JbnRlcmZhY2VPYmplY3Q+IHx8ICFKU1Rlc3RMZWdhY3lOb0lu
dGVyZmFjZU9iamVjdDo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3RleHByIChzdGQ6
OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RMZWdhY3lOb0lu
dGVyZmFjZU9iamVjdD4pCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdExlZ2FjeU5v
SW50ZXJmYWNlT2JqZWN0ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lO
SVQodm0uaGVhcCwgKnZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSwgSlNUZXN0TGVn
YWN5Tm9JbnRlcmZhY2VPYmplY3QpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RM
ZWdhY3lOb0ludGVyZmFjZU9iamVjdCA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJT
UEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBK
U1Rlc3RMZWdhY3lOb0ludGVyZmFjZU9iamVjdCk7CiAgICAgZWxzZQotICAgICAgICBzcGFjZXMu
bV9zdWJzcGFjZUZvclRlc3RMZWdhY3lOb0ludGVyZmFjZU9iamVjdCA9IG1ha2VVbmlxdWU8SXNv
U3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5jZWxsSGVhcENlbGxUeXBl
LCBKU1Rlc3RMZWdhY3lOb0ludGVyZmFjZU9iamVjdCk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNw
YWNlRm9yVGVzdExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFj
ZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU1Rl
c3RMZWdhY3lOb0ludGVyZmFjZU9iamVjdCk7CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9z
dWJzcGFjZUZvclRlc3RMZWdhY3lOb0ludGVyZmFjZU9iamVjdC5nZXQoKTsKIElHTk9SRV9XQVJO
SU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRh
dXRvbG9naWNhbC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TGVnYWN5T3Zl
cnJpZGVCdWlsdElucy5jcHAJKHJldmlzaW9uIDI4NjA4MSkKKysrIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNzMsNyArNzMsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6
SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RB
VElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0TGVnYWN5T3ZlcnJpZGVCdWls
dEluc1Byb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFj
ZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0
YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAg
ewpAQCAtMjQ5LDkgKzI0OSw5IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdExlZ2FjeU92ZXJy
aWRlQnUKICAgICAgICAgcmV0dXJuIHNwYWNlOwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19i
YXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0TGVnYWN5T3ZlcnJpZGVC
dWlsdElucz4gfHwgIUpTVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM6Om5lZWRzRGVzdHJ1Y3Rp
b24pOwogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0
aWJsZU9iamVjdCwgSlNUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdElucz4pCi0gICAgICAgIHNwYWNl
cy5tX3N1YnNwYWNlRm9yVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMgPSBtYWtlVW5pcXVlPElz
b1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uZGVzdHJ1Y3RpYmxlT2Jq
ZWN0SGVhcENlbGxUeXBlLCBKU1Rlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zKTsKKyAgICAgICAg
c3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdElucyA9IG1ha2VVbmlx
dWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJs
ZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zKTsKICAg
ICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdExlZ2FjeU92ZXJyaWRlQnVp
bHRJbnMgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFw
LCAqdm0uY2VsbEhlYXBDZWxsVHlwZSwgSlNUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdElucyk7Cisg
ICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMgPSBt
YWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxs
SGVhcENlbGxUeXBlKCksIEpTVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMpOwogICAgIGF1dG8q
IHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdElucy5n
ZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVf
V0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RNYXBMaWtlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TWFwTGlr
ZS5jcHAJKHJldmlzaW9uIDI4NjA4MSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RNYXBMaWtlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODIsNyArODIs
NyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpT
Qzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hB
UkFCTEUoSlNUZXN0TWFwTGlrZVByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0u
cGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7
CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6
Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBw
cm90b3R5cGUpCiAgICAgewpAQCAtMzY2LDkgKzM2Niw5IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpT
VGVzdE1hcExpa2U6OnN1YnNwYWMKICAgICAgICAgcmV0dXJuIHNwYWNlOwogICAgIHN0YXRpY19h
c3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0
TWFwTGlrZT4gfHwgIUpTVGVzdE1hcExpa2U6Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNv
bnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNU
ZXN0TWFwTGlrZT4pCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE1hcExpa2UgPSBt
YWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uZGVz
dHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLCBKU1Rlc3RNYXBMaWtlKTsKKyAgICAgICAgc3Bh
Y2VzLm1fc3Vic3BhY2VGb3JUZXN0TWFwTGlrZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElT
T19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlw
ZSgpLCBKU1Rlc3RNYXBMaWtlKTsKICAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNl
Rm9yVGVzdE1hcExpa2UgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5J
VCh2bS5oZWFwLCAqdm0uY2VsbEhlYXBDZWxsVHlwZSwgSlNUZXN0TWFwTGlrZSk7CisgICAgICAg
IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE1hcExpa2UgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNl
PiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCksIEpTVGVz
dE1hcExpa2UpOwogICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TWFw
TGlrZS5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJ
R05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RNYXBMaWtlV2l0aE92ZXJy
aWRkZW5PcGVyYXRpb25zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TWFwTGlrZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9ucy5j
cHAJKHJldmlzaW9uIDI4NjA4MSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RNYXBMaWtlV2l0aE92ZXJyaWRkZW5PcGVyYXRpb25zLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtODYsNyArODYsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vi
c3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FT
U0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0TWFwTGlrZVdpdGhPdmVycmlkZGVuT3Bl
cmF0aW9uc1Byb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RT
cGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAg
IHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6
OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAg
ICAgewpAQCAtMzgwLDkgKzM4MCw5IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdE1hcExpa2VX
aXRoT3ZlcnIKICAgICAgICAgcmV0dXJuIHNwYWNlOwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjpp
c19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0TWFwTGlrZVdpdGhP
dmVycmlkZGVuT3BlcmF0aW9ucz4gfHwgIUpTVGVzdE1hcExpa2VXaXRoT3ZlcnJpZGRlbk9wZXJh
dGlvbnM6Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNl
X29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0TWFwTGlrZVdpdGhPdmVycmlk
ZGVuT3BlcmF0aW9ucz4pCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE1hcExpa2VX
aXRoT3ZlcnJpZGRlbk9wZXJhdGlvbnMgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VC
U1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLCBK
U1Rlc3RNYXBMaWtlV2l0aE92ZXJyaWRkZW5PcGVyYXRpb25zKTsKKyAgICAgICAgc3BhY2VzLm1f
c3Vic3BhY2VGb3JUZXN0TWFwTGlrZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9ucyA9IG1ha2VVbmlx
dWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJs
ZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RNYXBMaWtlV2l0aE92ZXJyaWRkZW5PcGVyYXRp
b25zKTsKICAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE1hcExpa2VX
aXRoT3ZlcnJpZGRlbk9wZXJhdGlvbnMgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VC
U1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uY2VsbEhlYXBDZWxsVHlwZSwgSlNUZXN0TWFwTGlrZVdp
dGhPdmVycmlkZGVuT3BlcmF0aW9ucyk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVz
dE1hcExpa2VXaXRoT3ZlcnJpZGRlbk9wZXJhdGlvbnMgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNl
PiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCksIEpTVGVz
dE1hcExpa2VXaXRoT3ZlcnJpZGRlbk9wZXJhdGlvbnMpOwogICAgIGF1dG8qIHNwYWNlID0gc3Bh
Y2VzLm1fc3Vic3BhY2VGb3JUZXN0TWFwTGlrZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9ucy5nZXQo
KTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVfV0FS
TklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJOb0lk
ZW50aWZpZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXIuY3BwCShy
ZXZpc2lvbiAyODYwODEpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNjYsNyArNjYsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3Bh
Y2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VS
VF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyTm9JZGVu
dGlmaWVyUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNw
YWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAg
c3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAg
ICB7CkBAIC0zNDQsOSArMzQ0LDkgQEAgSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0TmFtZWRBbmRJ
bmRleGVkUwogICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6Omlz
X2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3ROYW1lZEFuZEluZGV4
ZWRTZXR0ZXJOb0lkZW50aWZpZXI+IHx8ICFKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJOb0lk
ZW50aWZpZXI6Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19i
YXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0TmFtZWRBbmRJbmRleGVk
U2V0dGVyTm9JZGVudGlmaWVyPikKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFt
ZWRBbmRJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4g
SVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxs
VHlwZSwgSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyKTsKKyAgICAgICAg
c3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVy
ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0u
ZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCksIEpTVGVzdE5hbWVkQW5kSW5kZXhlZFNl
dHRlck5vSWRlbnRpZmllcik7CiAgICAgZWxzZQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZv
clRlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXIgPSBtYWtlVW5pcXVlPElzb1N1
YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uY2VsbEhlYXBDZWxsVHlwZSwg
SlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyKTsKKyAgICAgICAgc3BhY2Vz
Lm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyID0gbWFr
ZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhl
YXBDZWxsVHlwZSgpLCBKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXIpOwog
ICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRBbmRJbmRleGVk
U2V0dGVyTm9JZGVudGlmaWVyLmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNo
YWJsZS1jb2RlIikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUi
KQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5h
bWVkQW5kSW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRBbmRJbmRl
eGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24uY3BwCShyZXZpc2lvbiAyODYwODEpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRBbmRJbmRleGVk
U2V0dGVyVGhyb3dpbmdFeGNlcHRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02Niw3ICs2Niw3
IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlND
OjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFS
QUJMRShKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvblByb3RvdHlw
ZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAg
cmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0
cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAtMzQ0LDkg
KzM0NCw5IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdE5hbWVkQW5kSW5kZXhlZFMKICAgICAg
ICAgcmV0dXJuIHNwYWNlOwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlND
OjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyVGhyb3dp
bmdFeGNlcHRpb24+IHx8ICFKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2Vw
dGlvbjo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vf
b2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0
ZXJUaHJvd2luZ0V4Y2VwdGlvbj4pCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5h
bWVkQW5kSW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uID0gbWFrZVVuaXF1ZTxJc29TdWJz
cGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmRlc3RydWN0aWJsZU9iamVjdEhl
YXBDZWxsVHlwZSwgSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24p
OworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJU
aHJvd2luZ0V4Y2VwdGlvbiA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9J
TklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RO
YW1lZEFuZEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbik7CiAgICAgZWxzZQotICAgICAg
ICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4
Y2VwdGlvbiA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhl
YXAsICp2bS5jZWxsSGVhcENlbGxUeXBlLCBKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJUaHJv
d2luZ0V4Y2VwdGlvbik7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkQW5k
SW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4g
SVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RO
YW1lZEFuZEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbik7CiAgICAgYXV0byogc3BhY2Ug
PSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4
Y2VwdGlvbi5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIp
CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEFuZEluZGV4
ZWRTZXR0ZXJXaXRoSWRlbnRpZmllci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlcldpdGhJ
ZGVudGlmaWVyLmNwcAkocmV2aXNpb24gMjg2MDgxKQorKysgU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlcldpdGhJZGVudGlm
aWVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzUsNyArNzUsNyBAQCBwdWJsaWM6CiAgICAgc3Rh
dGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAg
ICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0TmFtZWRBbmRJ
bmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXJQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1
cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RT
cGFjZSgpOwogICAgIH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVy
ZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpT
VmFsdWUgcHJvdG90eXBlKQogICAgIHsKQEAgLTQwMSw5ICs0MDEsOSBAQCBKU0M6Oklzb1N1YnNw
YWNlKiBKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTCiAgICAgICAgIHJldHVybiBzcGFjZTsKICAgICBz
dGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3Qs
IEpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyPiB8fCAhSlNUZXN0TmFt
ZWRBbmRJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXI6Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAg
IGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVj
dCwgSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXI+KQotICAgICAgICBz
cGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmll
ciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2
bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUsIEpTVGVzdE5hbWVkQW5kSW5kZXhlZFNl
dHRlcldpdGhJZGVudGlmaWVyKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFt
ZWRBbmRJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXIgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNl
PiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2Vs
bFR5cGUoKSwgSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXIpOwogICAg
IGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRBbmRJbmRleGVkU2V0
dGVyV2l0aElkZW50aWZpZXIgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0Vf
SU5JVCh2bS5oZWFwLCAqdm0uY2VsbEhlYXBDZWxsVHlwZSwgSlNUZXN0TmFtZWRBbmRJbmRleGVk
U2V0dGVyV2l0aElkZW50aWZpZXIpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RO
YW1lZEFuZEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllciA9IG1ha2VVbmlxdWU8SXNvU3Vic3Bh
Y2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNU
ZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXIpOwogICAgIGF1dG8qIHNwYWNl
ID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0aElkZW50
aWZpZXIuZ2V0KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQog
SUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyTm9J
ZGVudGlmaWVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyTm9JZGVudGlmaWVyLmNwcAkocmV2aXNpb24g
Mjg2MDgxKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dE5hbWVkRGVsZXRlck5vSWRlbnRpZmllci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY1LDcgKzY1
LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihK
U0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NI
QVJBQkxFKEpTVGVzdE5hbWVkRGVsZXRlck5vSWRlbnRpZmllclByb3RvdHlwZSwgQmFzZSk7Ci0g
ICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5w
bGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3Jl
YXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAtMjQ2LDkgKzI0Niw5IEBAIEpT
Qzo6SXNvU3Vic3BhY2UqIEpTVGVzdE5hbWVkRGVsZXRlck5vSWQKICAgICAgICAgcmV0dXJuIHNw
YWNlOwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0
aWJsZU9iamVjdCwgSlNUZXN0TmFtZWREZWxldGVyTm9JZGVudGlmaWVyPiB8fCAhSlNUZXN0TmFt
ZWREZWxldGVyTm9JZGVudGlmaWVyOjpuZWVkc0Rlc3RydWN0aW9uKTsKICAgICBpZiBjb25zdGV4
cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdE5h
bWVkRGVsZXRlck5vSWRlbnRpZmllcj4pCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVz
dE5hbWVkRGVsZXRlck5vSWRlbnRpZmllciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19T
VUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUs
IEpTVGVzdE5hbWVkRGVsZXRlck5vSWRlbnRpZmllcik7CisgICAgICAgIHNwYWNlcy5tX3N1YnNw
YWNlRm9yVGVzdE5hbWVkRGVsZXRlck5vSWRlbnRpZmllciA9IG1ha2VVbmlxdWU8SXNvU3Vic3Bh
Y2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBD
ZWxsVHlwZSgpLCBKU1Rlc3ROYW1lZERlbGV0ZXJOb0lkZW50aWZpZXIpOwogICAgIGVsc2UKLSAg
ICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWREZWxldGVyTm9JZGVudGlmaWVyID0g
bWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmNl
bGxIZWFwQ2VsbFR5cGUsIEpTVGVzdE5hbWVkRGVsZXRlck5vSWRlbnRpZmllcik7CisgICAgICAg
IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkRGVsZXRlck5vSWRlbnRpZmllciA9IG1ha2VV
bmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFw
Q2VsbFR5cGUoKSwgSlNUZXN0TmFtZWREZWxldGVyTm9JZGVudGlmaWVyKTsKICAgICBhdXRvKiBz
cGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkRGVsZXRlck5vSWRlbnRpZmllci5n
ZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVf
V0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJUaHJvd2luZ0V4
Y2VwdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlclRocm93aW5nRXhjZXB0aW9uLmNwcAkocmV2aXNp
b24gMjg2MDgxKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdE5hbWVkRGVsZXRlclRocm93aW5nRXhjZXB0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NjUsNyArNjUsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNw
YWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VC
U1BBQ0VfU0hBUkFCTEUoSlNUZXN0TmFtZWREZWxldGVyVGhyb3dpbmdFeGNlcHRpb25Qcm90b3R5
cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAg
IHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KICAgICBzdGF0aWMgSlNDOjpT
dHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKQEAgLTI0Niw5
ICsyNDYsOSBAQCBKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3ROYW1lZERlbGV0ZXJUaHJvCiAgICAg
ICAgIHJldHVybiBzcGFjZTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpT
Qzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdE5hbWVkRGVsZXRlclRocm93aW5nRXhjZXB0
aW9uPiB8fCAhSlNUZXN0TmFtZWREZWxldGVyVGhyb3dpbmdFeGNlcHRpb246Om5lZWRzRGVzdHJ1
Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3Ry
dWN0aWJsZU9iamVjdCwgSlNUZXN0TmFtZWREZWxldGVyVGhyb3dpbmdFeGNlcHRpb24+KQotICAg
ICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZERlbGV0ZXJUaHJvd2luZ0V4Y2VwdGlv
biA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2
bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUsIEpTVGVzdE5hbWVkRGVsZXRlclRocm93
aW5nRXhjZXB0aW9uKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWREZWxl
dGVyVGhyb3dpbmdFeGNlcHRpb24gPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BB
Q0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwgSlNU
ZXN0TmFtZWREZWxldGVyVGhyb3dpbmdFeGNlcHRpb24pOwogICAgIGVsc2UKLSAgICAgICAgc3Bh
Y2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWREZWxldGVyVGhyb3dpbmdFeGNlcHRpb24gPSBtYWtl
VW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uY2VsbEhl
YXBDZWxsVHlwZSwgSlNUZXN0TmFtZWREZWxldGVyVGhyb3dpbmdFeGNlcHRpb24pOworICAgICAg
ICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZERlbGV0ZXJUaHJvd2luZ0V4Y2VwdGlvbiA9
IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNl
bGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0TmFtZWREZWxldGVyVGhyb3dpbmdFeGNlcHRpb24pOwog
ICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWREZWxldGVyVGhy
b3dpbmdFeGNlcHRpb24uZ2V0KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxl
LWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRE
ZWxldGVyV2l0aElkZW50aWZpZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllci5j
cHAJKHJldmlzaW9uIDI4NjA4MSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTcyLDcgKzcyLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNl
KiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRf
SVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdE5hbWVkRGVsZXRlcldpdGhJZGVudGlmaWVyUHJv
dG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAg
ICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpT
Qzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC0y
NzAsOSArMjcwLDkgQEAgSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0TmFtZWREZWxldGVyV2l0aAog
ICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2Zf
djxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRp
Zmllcj4gfHwgIUpTVGVzdE5hbWVkRGVsZXRlcldpdGhJZGVudGlmaWVyOjpuZWVkc0Rlc3RydWN0
aW9uKTsKICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVj
dGlibGVPYmplY3QsIEpTVGVzdE5hbWVkRGVsZXRlcldpdGhJZGVudGlmaWVyPikKLSAgICAgICAg
c3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWREZWxldGVyV2l0aElkZW50aWZpZXIgPSBtYWtl
VW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uZGVzdHJ1
Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLCBKU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRpZmll
cik7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkRGVsZXRlcldpdGhJZGVu
dGlmaWVyID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVh
cCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCksIEpTVGVzdE5hbWVkRGVsZXRl
cldpdGhJZGVudGlmaWVyKTsKICAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9y
VGVzdE5hbWVkRGVsZXRlcldpdGhJZGVudGlmaWVyID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4g
SVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmNlbGxIZWFwQ2VsbFR5cGUsIEpTVGVzdE5h
bWVkRGVsZXRlcldpdGhJZGVudGlmaWVyKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JU
ZXN0TmFtZWREZWxldGVyV2l0aElkZW50aWZpZXIgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJ
U09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCksIEpTVGVzdE5h
bWVkRGVsZXRlcldpdGhJZGVudGlmaWVyKTsKICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1
YnNwYWNlRm9yVGVzdE5hbWVkRGVsZXRlcldpdGhJZGVudGlmaWVyLmdldCgpOwogSUdOT1JFX1dB
Uk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigi
dGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlcldpdGhJbmRleGVkR2V0dGVyLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
TmFtZWREZWxldGVyV2l0aEluZGV4ZWRHZXR0ZXIuY3BwCShyZXZpc2lvbiAyODYwODEpCisrKyBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVy
V2l0aEluZGV4ZWRHZXR0ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02Niw3ICs2Niw3IEBAIHB1
YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYg
dm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShK
U1Rlc3ROYW1lZERlbGV0ZXJXaXRoSW5kZXhlZEdldHRlclByb3RvdHlwZSwgQmFzZSk7Ci0gICAg
ICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFp
bk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRl
U3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAtMjYyLDkgKzI2Miw5IEBAIEpTQzo6
SXNvU3Vic3BhY2UqIEpTVGVzdE5hbWVkRGVsZXRlcldpdGgKICAgICAgICAgcmV0dXJuIHNwYWNl
OwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJs
ZU9iamVjdCwgSlNUZXN0TmFtZWREZWxldGVyV2l0aEluZGV4ZWRHZXR0ZXI+IHx8ICFKU1Rlc3RO
YW1lZERlbGV0ZXJXaXRoSW5kZXhlZEdldHRlcjo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgaWYg
Y29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBK
U1Rlc3ROYW1lZERlbGV0ZXJXaXRoSW5kZXhlZEdldHRlcj4pCi0gICAgICAgIHNwYWNlcy5tX3N1
YnNwYWNlRm9yVGVzdE5hbWVkRGVsZXRlcldpdGhJbmRleGVkR2V0dGVyID0gbWFrZVVuaXF1ZTxJ
c29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmRlc3RydWN0aWJsZU9i
amVjdEhlYXBDZWxsVHlwZSwgSlNUZXN0TmFtZWREZWxldGVyV2l0aEluZGV4ZWRHZXR0ZXIpOwor
ICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZERlbGV0ZXJXaXRoSW5kZXhlZEdl
dHRlciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAs
IHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3ROYW1lZERlbGV0ZXJX
aXRoSW5kZXhlZEdldHRlcik7CiAgICAgZWxzZQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZv
clRlc3ROYW1lZERlbGV0ZXJXaXRoSW5kZXhlZEdldHRlciA9IG1ha2VVbmlxdWU8SXNvU3Vic3Bh
Y2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5jZWxsSGVhcENlbGxUeXBlLCBKU1Rl
c3ROYW1lZERlbGV0ZXJXaXRoSW5kZXhlZEdldHRlcik7CisgICAgICAgIHNwYWNlcy5tX3N1YnNw
YWNlRm9yVGVzdE5hbWVkRGVsZXRlcldpdGhJbmRleGVkR2V0dGVyID0gbWFrZVVuaXF1ZTxJc29T
dWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgp
LCBKU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSW5kZXhlZEdldHRlcik7CiAgICAgYXV0byogc3BhY2Ug
PSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZERlbGV0ZXJXaXRoSW5kZXhlZEdldHRlci5n
ZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVf
V0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEdldHRlckNhbGxXaXRoLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0TmFtZWRHZXR0ZXJDYWxsV2l0aC5jcHAJKHJldmlzaW9uIDI4NjA4MSkKKysrIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEdldHRlckNhbGxX
aXRoLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjUsNyArNjUsNyBAQCBwdWJsaWM6CiAgICAgc3Rh
dGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAg
ICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0TmFtZWRHZXR0
ZXJDYWxsV2l0aFByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmpl
Y3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQog
ICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBK
U0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUp
CiAgICAgewpAQCAtMjIwLDkgKzIyMCw5IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdE5hbWVk
R2V0dGVyQ2FsbFcKICAgICAgICAgcmV0dXJuIHNwYWNlOwogICAgIHN0YXRpY19hc3NlcnQoc3Rk
Ojppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0TmFtZWRHZXR0
ZXJDYWxsV2l0aD4gfHwgIUpTVGVzdE5hbWVkR2V0dGVyQ2FsbFdpdGg6Om5lZWRzRGVzdHJ1Y3Rp
b24pOwogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0
aWJsZU9iamVjdCwgSlNUZXN0TmFtZWRHZXR0ZXJDYWxsV2l0aD4pCi0gICAgICAgIHNwYWNlcy5t
X3N1YnNwYWNlRm9yVGVzdE5hbWVkR2V0dGVyQ2FsbFdpdGggPSBtYWtlVW5pcXVlPElzb1N1YnNw
YWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVh
cENlbGxUeXBlLCBKU1Rlc3ROYW1lZEdldHRlckNhbGxXaXRoKTsKKyAgICAgICAgc3BhY2VzLm1f
c3Vic3BhY2VGb3JUZXN0TmFtZWRHZXR0ZXJDYWxsV2l0aCA9IG1ha2VVbmlxdWU8SXNvU3Vic3Bh
Y2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBD
ZWxsVHlwZSgpLCBKU1Rlc3ROYW1lZEdldHRlckNhbGxXaXRoKTsKICAgICBlbHNlCi0gICAgICAg
IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkR2V0dGVyQ2FsbFdpdGggPSBtYWtlVW5pcXVl
PElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uY2VsbEhlYXBDZWxs
VHlwZSwgSlNUZXN0TmFtZWRHZXR0ZXJDYWxsV2l0aCk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNw
YWNlRm9yVGVzdE5hbWVkR2V0dGVyQ2FsbFdpdGggPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJ
U09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCksIEpTVGVzdE5h
bWVkR2V0dGVyQ2FsbFdpdGgpOwogICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VG
b3JUZXN0TmFtZWRHZXR0ZXJDYWxsV2l0aC5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigi
dW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1j
b21wYXJlIikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3ROYW1lZEdldHRlck5vSWRlbnRpZmllci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkR2V0dGVyTm9JZGVudGlm
aWVyLmNwcAkocmV2aXNpb24gMjg2MDgxKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkR2V0dGVyTm9JZGVudGlmaWVyLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNjUsNyArNjUsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3Bh
Y2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VS
VF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0TmFtZWRHZXR0ZXJOb0lkZW50aWZpZXJQcm90
b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAg
ICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KICAgICBzdGF0aWMgSlND
OjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKQEAgLTIy
MCw5ICsyMjAsOSBAQCBKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3ROYW1lZEdldHRlck5vSWRlCiAg
ICAgICAgIHJldHVybiBzcGFjZTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92
PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdE5hbWVkR2V0dGVyTm9JZGVudGlmaWVy
PiB8fCAhSlNUZXN0TmFtZWRHZXR0ZXJOb0lkZW50aWZpZXI6Om5lZWRzRGVzdHJ1Y3Rpb24pOwog
ICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9i
amVjdCwgSlNUZXN0TmFtZWRHZXR0ZXJOb0lkZW50aWZpZXI+KQotICAgICAgICBzcGFjZXMubV9z
dWJzcGFjZUZvclRlc3ROYW1lZEdldHRlck5vSWRlbnRpZmllciA9IG1ha2VVbmlxdWU8SXNvU3Vi
c3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5kZXN0cnVjdGlibGVPYmplY3RI
ZWFwQ2VsbFR5cGUsIEpTVGVzdE5hbWVkR2V0dGVyTm9JZGVudGlmaWVyKTsKKyAgICAgICAgc3Bh
Y2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRHZXR0ZXJOb0lkZW50aWZpZXIgPSBtYWtlVW5pcXVl
PElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVP
YmplY3RIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0TmFtZWRHZXR0ZXJOb0lkZW50aWZpZXIpOwogICAg
IGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRHZXR0ZXJOb0lkZW50
aWZpZXIgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFw
LCAqdm0uY2VsbEhlYXBDZWxsVHlwZSwgSlNUZXN0TmFtZWRHZXR0ZXJOb0lkZW50aWZpZXIpOwor
ICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZEdldHRlck5vSWRlbnRpZmllciA9
IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNl
bGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0TmFtZWRHZXR0ZXJOb0lkZW50aWZpZXIpOwogICAgIGF1
dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRHZXR0ZXJOb0lkZW50aWZp
ZXIuZ2V0KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdO
T1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRHZXR0ZXJXaXRoSWRl
bnRpZmllci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE5hbWVkR2V0dGVyV2l0aElkZW50aWZpZXIuY3BwCShyZXZpc2lvbiAy
ODYwODEpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
TmFtZWRHZXR0ZXJXaXRoSWRlbnRpZmllci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcwLDcgKzcw
LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihK
U0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NI
QVJBQkxFKEpTVGVzdE5hbWVkR2V0dGVyV2l0aElkZW50aWZpZXJQcm90b3R5cGUsIEJhc2UpOwot
ICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0u
cGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNy
ZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKQEAgLTI0Niw5ICsyNDYsOSBAQCBK
U0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3ROYW1lZEdldHRlcldpdGhJCiAgICAgICAgIHJldHVybiBz
cGFjZTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVj
dGlibGVPYmplY3QsIEpTVGVzdE5hbWVkR2V0dGVyV2l0aElkZW50aWZpZXI+IHx8ICFKU1Rlc3RO
YW1lZEdldHRlcldpdGhJZGVudGlmaWVyOjpuZWVkc0Rlc3RydWN0aW9uKTsKICAgICBpZiBjb25z
dGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVz
dE5hbWVkR2V0dGVyV2l0aElkZW50aWZpZXI+KQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZv
clRlc3ROYW1lZEdldHRlcldpdGhJZGVudGlmaWVyID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4g
SVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxs
VHlwZSwgSlNUZXN0TmFtZWRHZXR0ZXJXaXRoSWRlbnRpZmllcik7CisgICAgICAgIHNwYWNlcy5t
X3N1YnNwYWNlRm9yVGVzdE5hbWVkR2V0dGVyV2l0aElkZW50aWZpZXIgPSBtYWtlVW5pcXVlPElz
b1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmpl
Y3RIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0TmFtZWRHZXR0ZXJXaXRoSWRlbnRpZmllcik7CiAgICAg
ZWxzZQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZEdldHRlcldpdGhJZGVu
dGlmaWVyID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVh
cCwgKnZtLmNlbGxIZWFwQ2VsbFR5cGUsIEpTVGVzdE5hbWVkR2V0dGVyV2l0aElkZW50aWZpZXIp
OworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZEdldHRlcldpdGhJZGVudGlm
aWVyID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwg
dm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3ROYW1lZEdldHRlcldpdGhJZGVudGlmaWVyKTsK
ICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkR2V0dGVyV2l0
aElkZW50aWZpZXIuZ2V0KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNv
ZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0
ZXJOb0lkZW50aWZpZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlck5vSWRlbnRpZmllci5jcHAJKHJldmlz
aW9uIDI4NjA4MSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3ROYW1lZFNldHRlck5vSWRlbnRpZmllci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY1LDcg
KzY1LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZv
cihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNF
X1NIQVJBQkxFKEpTVGVzdE5hbWVkU2V0dGVyTm9JZGVudGlmaWVyUHJvdG90eXBlLCBCYXNlKTsK
LSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZt
LnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBj
cmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC0zMDAsOSArMzAwLDkgQEAg
SlNDOjpJc29TdWJzcGFjZSogSlNUZXN0TmFtZWRTZXR0ZXJOb0lkZQogICAgICAgICByZXR1cm4g
c3BhY2U7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1
Y3RpYmxlT2JqZWN0LCBKU1Rlc3ROYW1lZFNldHRlck5vSWRlbnRpZmllcj4gfHwgIUpTVGVzdE5h
bWVkU2V0dGVyTm9JZGVudGlmaWVyOjpuZWVkc0Rlc3RydWN0aW9uKTsKICAgICBpZiBjb25zdGV4
cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdE5h
bWVkU2V0dGVyTm9JZGVudGlmaWVyPikKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0
TmFtZWRTZXR0ZXJOb0lkZW50aWZpZXIgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VC
U1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLCBK
U1Rlc3ROYW1lZFNldHRlck5vSWRlbnRpZmllcik7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNl
Rm9yVGVzdE5hbWVkU2V0dGVyTm9JZGVudGlmaWVyID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4g
SVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxU
eXBlKCksIEpTVGVzdE5hbWVkU2V0dGVyTm9JZGVudGlmaWVyKTsKICAgICBlbHNlCi0gICAgICAg
IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkU2V0dGVyTm9JZGVudGlmaWVyID0gbWFrZVVu
aXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmNlbGxIZWFw
Q2VsbFR5cGUsIEpTVGVzdE5hbWVkU2V0dGVyTm9JZGVudGlmaWVyKTsKKyAgICAgICAgc3BhY2Vz
Lm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRTZXR0ZXJOb0lkZW50aWZpZXIgPSBtYWtlVW5pcXVlPElz
b1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBl
KCksIEpTVGVzdE5hbWVkU2V0dGVyTm9JZGVudGlmaWVyKTsKICAgICBhdXRvKiBzcGFjZSA9IHNw
YWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkU2V0dGVyTm9JZGVudGlmaWVyLmdldCgpOwogSUdO
T1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKIElHTk9SRV9XQVJOSU5HU19C
RUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24uY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3ROYW1lZFNldHRlclRocm93aW5nRXhjZXB0aW9uLmNwcAkocmV2aXNpb24gMjg2MDgxKQor
KysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0
dGVyVGhyb3dpbmdFeGNlcHRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NSw3ICs2NSw3IEBA
IHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpW
TSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJM
RShKU1Rlc3ROYW1lZFNldHRlclRocm93aW5nRXhjZXB0aW9uUHJvdG90eXBlLCBCYXNlKTsKLSAg
ICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBs
YWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVh
dGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC0zMDAsOSArMzAwLDkgQEAgSlND
OjpJc29TdWJzcGFjZSogSlNUZXN0TmFtZWRTZXR0ZXJUaHJvdwogICAgICAgICByZXR1cm4gc3Bh
Y2U7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3Rp
YmxlT2JqZWN0LCBKU1Rlc3ROYW1lZFNldHRlclRocm93aW5nRXhjZXB0aW9uPiB8fCAhSlNUZXN0
TmFtZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbjo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgaWYg
Y29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBK
U1Rlc3ROYW1lZFNldHRlclRocm93aW5nRXhjZXB0aW9uPikKLSAgICAgICAgc3BhY2VzLm1fc3Vi
c3BhY2VGb3JUZXN0TmFtZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbiA9IG1ha2VVbmlxdWU8SXNv
U3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5kZXN0cnVjdGlibGVPYmpl
Y3RIZWFwQ2VsbFR5cGUsIEpTVGVzdE5hbWVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24pOworICAg
ICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZFNldHRlclRocm93aW5nRXhjZXB0aW9u
ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0u
ZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCksIEpTVGVzdE5hbWVkU2V0dGVyVGhyb3dp
bmdFeGNlcHRpb24pOwogICAgIGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0
TmFtZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbiA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElT
T19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5jZWxsSGVhcENlbGxUeXBlLCBKU1Rlc3ROYW1l
ZFNldHRlclRocm93aW5nRXhjZXB0aW9uKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JU
ZXN0TmFtZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbiA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+
IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0
TmFtZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbik7CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMu
bV9zdWJzcGFjZUZvclRlc3ROYW1lZFNldHRlclRocm93aW5nRXhjZXB0aW9uLmdldCgpOwogSUdO
T1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKIElHTk9SRV9XQVJOSU5HU19C
RUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aElkZW50aWZpZXIuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3ROYW1lZFNldHRlcldpdGhJZGVudGlmaWVyLmNwcAkocmV2aXNpb24gMjg2MDgxKQorKysgU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0
aElkZW50aWZpZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03Miw3ICs3Miw3IEBAIHB1YmxpYzoK
ICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAg
ICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3RO
YW1lZFNldHRlcldpdGhJZGVudGlmaWVyUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJu
ICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3Bh
Y2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUo
SlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1Zh
bHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC0zMzEsOSArMzMxLDkgQEAgSlNDOjpJc29TdWJzcGFj
ZSogSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSQogICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAgc3Rh
dGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBK
U1Rlc3ROYW1lZFNldHRlcldpdGhJZGVudGlmaWVyPiB8fCAhSlNUZXN0TmFtZWRTZXR0ZXJXaXRo
SWRlbnRpZmllcjo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3RleHByIChzdGQ6Omlz
X2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3ROYW1lZFNldHRlcldp
dGhJZGVudGlmaWVyPikKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRTZXR0
ZXJXaXRoSWRlbnRpZmllciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9J
TklUKHZtLmhlYXAsICp2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUsIEpTVGVzdE5h
bWVkU2V0dGVyV2l0aElkZW50aWZpZXIpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRl
c3ROYW1lZFNldHRlcldpdGhJZGVudGlmaWVyID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNP
X1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBl
KCksIEpTVGVzdE5hbWVkU2V0dGVyV2l0aElkZW50aWZpZXIpOwogICAgIGVsc2UKLSAgICAgICAg
c3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmllciA9IG1ha2VV
bmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5jZWxsSGVh
cENlbGxUeXBlLCBKU1Rlc3ROYW1lZFNldHRlcldpdGhJZGVudGlmaWVyKTsKKyAgICAgICAgc3Bh
Y2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmllciA9IG1ha2VVbmlx
dWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2Vs
bFR5cGUoKSwgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmllcik7CiAgICAgYXV0byogc3Bh
Y2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZFNldHRlcldpdGhJZGVudGlmaWVyLmdl
dCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKIElHTk9SRV9X
QVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRleDogU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRH
ZXR0ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyLmNwcAkocmV2aXNpb24g
Mjg2MDgxKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NSw3
ICs3NSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VG
b3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFD
RV9TSEFSQUJMRShKU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyUHJvdG90eXBlLCBC
YXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1
cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0
dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC0zNzgsOSArMzc4
LDkgQEAgSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSQogICAgICAgICBy
ZXR1cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpT
RGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyPiB8
fCAhSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlcjo6bmVlZHNEZXN0cnVjdGlvbik7
CiAgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxl
T2JqZWN0LCBKU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyPikKLSAgICAgICAgc3Bh
Y2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlciA9IG1ha2VV
bmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5kZXN0cnVj
dGlibGVPYmplY3RIZWFwQ2VsbFR5cGUsIEpTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0
ZXIpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZFNldHRlcldpdGhJbmRl
eGVkR2V0dGVyID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0u
aGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCksIEpTVGVzdE5hbWVkU2V0
dGVyV2l0aEluZGV4ZWRHZXR0ZXIpOwogICAgIGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vic3Bh
Y2VGb3JUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlciA9IG1ha2VVbmlxdWU8SXNvU3Vi
c3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5jZWxsSGVhcENlbGxUeXBlLCBK
U1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vi
c3BhY2VGb3JUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlciA9IG1ha2VVbmlxdWU8SXNv
U3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUo
KSwgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlcik7CiAgICAgYXV0byogc3BhY2Ug
PSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyLmdl
dCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKIElHTk9SRV9X
QVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRleDogU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRH
ZXR0ZXJBbmRTZXR0ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQW5kU2V0
dGVyLmNwcAkocmV2aXNpb24gMjg2MDgxKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0ZXIu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NSw3ICs3NSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMg
SlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAgICAg
ICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3ROYW1lZFNldHRlcldp
dGhJbmRleGVkR2V0dGVyQW5kU2V0dGVyUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJu
ICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3Bh
Y2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUo
SlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1Zh
bHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC00MjgsOSArNDI4LDkgQEAgSlNDOjpJc29TdWJzcGFj
ZSogSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSQogICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAgc3Rh
dGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBK
U1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQW5kU2V0dGVyPiB8fCAhSlNUZXN0TmFt
ZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlckFuZFNldHRlcjo6bmVlZHNEZXN0cnVjdGlvbik7CiAg
ICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2Jq
ZWN0LCBKU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQW5kU2V0dGVyPikKLSAgICAg
ICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlckFu
ZFNldHRlciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhl
YXAsICp2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUsIEpTVGVzdE5hbWVkU2V0dGVy
V2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0ZXIpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZv
clRlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQW5kU2V0dGVyID0gbWFrZVVuaXF1ZTxJ
c29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2Jq
ZWN0SGVhcENlbGxUeXBlKCksIEpTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRT
ZXR0ZXIpOwogICAgIGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRT
ZXR0ZXJXaXRoSW5kZXhlZEdldHRlckFuZFNldHRlciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+
IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5jZWxsSGVhcENlbGxUeXBlLCBKU1Rlc3RO
YW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQW5kU2V0dGVyKTsKKyAgICAgICAgc3BhY2VzLm1f
c3Vic3BhY2VGb3JUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlckFuZFNldHRlciA9IG1h
a2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxI
ZWFwQ2VsbFR5cGUoKSwgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlckFuZFNldHRl
cik7CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZFNldHRl
cldpdGhJbmRleGVkR2V0dGVyQW5kU2V0dGVyLmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lO
KCJ1bnJlYWNoYWJsZS1jb2RlIikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2Fs
LWNvbXBhcmUiKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1l
ZFNldHRlcldpdGhMZWdhY3lPdmVycmlkZUJ1aWx0SW5zLmNwcAkocmV2aXNpb24gMjg2MDgxKQor
KysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0
dGVyV2l0aExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NSw3
ICs2NSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VG
b3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFD
RV9TSEFSQUJMRShKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lPdmVycmlkZUJ1aWx0SW5zUHJv
dG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAg
ICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpT
Qzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC0y
NzcsOSArMjc3LDkgQEAgSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTAog
ICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2Zf
djxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lP
dmVycmlkZUJ1aWx0SW5zPiB8fCAhSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5T3ZlcnJpZGVC
dWlsdEluczo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jh
c2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3ROYW1lZFNldHRlcldpdGhM
ZWdhY3lPdmVycmlkZUJ1aWx0SW5zPikKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0
TmFtZWRTZXR0ZXJXaXRoTGVnYWN5T3ZlcnJpZGVCdWlsdElucyA9IG1ha2VVbmlxdWU8SXNvU3Vi
c3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5kZXN0cnVjdGlibGVPYmplY3RI
ZWFwQ2VsbFR5cGUsIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMp
OworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lP
dmVycmlkZUJ1aWx0SW5zID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lO
SVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCksIEpTVGVzdE5h
bWVkU2V0dGVyV2l0aExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMpOwogICAgIGVsc2UKLSAgICAgICAg
c3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5T3ZlcnJpZGVCdWls
dElucyA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAs
ICp2bS5jZWxsSGVhcENlbGxUeXBlLCBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lPdmVycmlk
ZUJ1aWx0SW5zKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRTZXR0ZXJX
aXRoTGVnYWN5T3ZlcnJpZGVCdWlsdElucyA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19T
VUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0TmFtZWRT
ZXR0ZXJXaXRoTGVnYWN5T3ZlcnJpZGVCdWlsdElucyk7CiAgICAgYXV0byogc3BhY2UgPSBzcGFj
ZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lPdmVycmlkZUJ1aWx0SW5z
LmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKIElHTk9S
RV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRleDogU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2Fj
eVVuZm9yZ2VhYmxlUHJvcGVydGllcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9y
Z2VhYmxlUHJvcGVydGllcy5jcHAJKHJldmlzaW9uIDI4NjA4MSkKKysrIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZv
cmdlYWJsZVByb3BlcnRpZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NCw3ICs3NCw3IEBAIHB1
YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYg
dm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShK
U1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNQcm90b3R5cGUs
IEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJl
dHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1
Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKQEAgLTM2MSw5ICsz
NjEsOSBAQCBKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3ROYW1lZFNldHRlcldpdGhMCiAgICAgICAg
IHJldHVybiBzcGFjZTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6
SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2Vh
YmxlUHJvcGVydGllcz4gfHwgIUpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxl
UHJvcGVydGllczo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3RleHByIChzdGQ6Omlz
X2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3ROYW1lZFNldHRlcldp
dGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXM+KQotICAgICAgICBzcGFjZXMubV9zdWJzcGFj
ZUZvclRlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXMgPSBtYWtl
VW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uZGVzdHJ1
Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLCBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZv
cmdlYWJsZVByb3BlcnRpZXMpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1l
ZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXMgPSBtYWtlVW5pcXVlPElzb1N1
YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RI
ZWFwQ2VsbFR5cGUoKSwgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9w
ZXJ0aWVzKTsKICAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVk
U2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllcyA9IG1ha2VVbmlxdWU8SXNvU3Vi
c3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5jZWxsSGVhcENlbGxUeXBlLCBK
U1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXMpOworICAgICAg
ICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJs
ZVByb3BlcnRpZXMgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2
bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCksIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2Fj
eVVuZm9yZ2VhYmxlUHJvcGVydGllcyk7CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJz
cGFjZUZvclRlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXMuZ2V0
KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dB
Uk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5m
b3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdElucy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVk
U2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVp
bHRJbnMuY3BwCShyZXZpc2lvbiAyODYwODEpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9w
ZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdElucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc0
LDcgKzc0LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFj
ZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQ
QUNFX1NIQVJBQkxFKEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVy
dGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnNQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICBy
ZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmpl
Y3RTcGFjZSgpOwogICAgIH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVj
dHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6
OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKQEAgLTMzOCw5ICszMzgsOSBAQCBKU0M6Oklzb1N1
YnNwYWNlKiBKU1Rlc3ROYW1lZFNldHRlcldpdGhMCiAgICAgICAgIHJldHVybiBzcGFjZTsKICAg
ICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmpl
Y3QsIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExl
Z2FjeU92ZXJyaWRlQnVpbHRJbnM+IHx8ICFKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZv
cmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zOjpuZWVkc0Rlc3RydWN0
aW9uKTsKICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVj
dGlibGVPYmplY3QsIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVy
dGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM+KQotICAgICAgICBzcGFjZXMubV9zdWJzcGFj
ZUZvclRlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdh
Y3lPdmVycmlkZUJ1aWx0SW5zID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNF
X0lOSVQodm0uaGVhcCwgKnZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSwgSlNUZXN0
TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJp
ZGVCdWlsdElucyk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkU2V0dGVy
V2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMg
PSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5k
ZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVn
YWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdElucyk7CiAgICAg
ZWxzZQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZFNldHRlcldpdGhMZWdh
Y3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zID0gbWFrZVVu
aXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmNlbGxIZWFw
Q2VsbFR5cGUsIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGll
c0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZv
clRlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lP
dmVycmlkZUJ1aWx0SW5zID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lO
SVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3ROYW1lZFNldHRlcldpdGhM
ZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zKTsKICAg
ICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkU2V0dGVyV2l0aExl
Z2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMuZ2V0KCk7
CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5J
TkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZXNwYWNlT2JqZWN0LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFt
ZXNwYWNlT2JqZWN0LmNwcAkocmV2aXNpb24gMjg2MDgxKQorKysgU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVzcGFjZU9iamVjdC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTI4MCw5ICsyODAsOSBAQCBKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3ROYW1lc3Bh
Y2VPYmplY3Q6CiAgICAgICAgIHJldHVybiBzcGFjZTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6
aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdE5hbWVzcGFjZU9i
amVjdD4gfHwgIUpTVGVzdE5hbWVzcGFjZU9iamVjdDo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAg
aWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0
LCBKU1Rlc3ROYW1lc3BhY2VPYmplY3Q+KQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRl
c3ROYW1lc3BhY2VPYmplY3QgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0Vf
SU5JVCh2bS5oZWFwLCAqdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLCBKU1Rlc3RO
YW1lc3BhY2VPYmplY3QpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lc3Bh
Y2VPYmplY3QgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5o
ZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0TmFtZXNwYWNl
T2JqZWN0KTsKICAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVz
cGFjZU9iamVjdCA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZt
LmhlYXAsICp2bS5jZWxsSGVhcENlbGxUeXBlLCBKU1Rlc3ROYW1lc3BhY2VPYmplY3QpOworICAg
ICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lc3BhY2VPYmplY3QgPSBtYWtlVW5pcXVl
PElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxU
eXBlKCksIEpTVGVzdE5hbWVzcGFjZU9iamVjdCk7CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMu
bV9zdWJzcGFjZUZvclRlc3ROYW1lc3BhY2VPYmplY3QuZ2V0KCk7CiBJR05PUkVfV0FSTklOR1Nf
QkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xv
Z2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0Tm9kZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5vZGUuY3BwCShyZXZpc2lvbiAyODYwODEpCisrKyBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Tm9kZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTk1LDcgKzk1LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklz
b1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJ
Q19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdE5vZGVQcm90b3R5cGUsIEJhc2Up
OwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAm
dm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUq
IGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKQEAgLTQwNSw5ICs0MDUsOSBA
QCBwdWJsaWM6CiAgICAgICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAgICAgIHN0YXRpY19hc3Nl
cnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgVGVzdE5vZGVJ
dGVyYXRvcj4gfHwgIVRlc3ROb2RlSXRlcmF0b3I6Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAgICAg
ICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmpl
Y3QsIFRlc3ROb2RlSXRlcmF0b3I+KQotICAgICAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JU
ZXN0Tm9kZUl0ZXJhdG9yID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lO
SVQodm0uaGVhcCwgKnZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5nZXQoKSwgVGVz
dE5vZGVJdGVyYXRvcik7CisgICAgICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROb2Rl
SXRlcmF0b3IgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5o
ZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwgVGVzdE5vZGVJdGVyYXRv
cik7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5v
ZGVJdGVyYXRvciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZt
LmhlYXAsICp2bS5jZWxsSGVhcENlbGxUeXBlLCBUZXN0Tm9kZUl0ZXJhdG9yKTsKKyAgICAgICAg
ICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5vZGVJdGVyYXRvciA9IG1ha2VVbmlxdWU8SXNv
U3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUo
KSwgVGVzdE5vZGVJdGVyYXRvcik7CiAgICAgICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vi
c3BhY2VGb3JUZXN0Tm9kZUl0ZXJhdG9yLmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1
bnJlYWNoYWJsZS1jb2RlIikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNv
bXBhcmUiKQpAQCAtNDk3LDkgKzQ5Nyw5IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdE5vZGU6
OnN1YnNwYWNlRm8KICAgICAgICAgcmV0dXJuIHNwYWNlOwogICAgIHN0YXRpY19hc3NlcnQoc3Rk
Ojppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0Tm9kZT4gfHwg
IUpTVGVzdE5vZGU6Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjpp
c19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0Tm9kZT4pCi0gICAg
ICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5vZGUgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNl
PiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENl
bGxUeXBlLCBKU1Rlc3ROb2RlKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0Tm9k
ZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZt
LmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3ROb2RlKTsKICAgICBlbHNl
Ci0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5vZGUgPSBtYWtlVW5pcXVlPElzb1N1
YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uY2VsbEhlYXBDZWxsVHlwZSwg
SlNUZXN0Tm9kZSk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5vZGUgPSBtYWtl
VW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVh
cENlbGxUeXBlKCksIEpTVGVzdE5vZGUpOwogICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vi
c3BhY2VGb3JUZXN0Tm9kZS5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFi
bGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmou
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RPYmouY3BwCShyZXZpc2lvbiAyODYwODEpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTg2
Niw3ICsxODY2LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJz
cGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NV
QlNQQUNFX1NIQVJBQkxFKEpTVGVzdE9ialByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVy
biAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNw
YWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJl
KEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNW
YWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAtOTAwNiw5ICs5MDA2LDkgQEAgSlNDOjpJc29TdWJz
cGFjZSogSlNUZXN0T2JqOjpzdWJzcGFjZUZvcgogICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAg
c3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0
LCBKU1Rlc3RPYmo+IHx8ICFKU1Rlc3RPYmo6Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNv
bnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNU
ZXN0T2JqPikKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0T2JqID0gbWFrZVVuaXF1
ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmRlc3RydWN0aWJs
ZU9iamVjdEhlYXBDZWxsVHlwZSwgSlNUZXN0T2JqKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3Bh
Y2VGb3JUZXN0T2JqID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQo
dm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCksIEpTVGVzdE9iaik7
CiAgICAgZWxzZQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RPYmogPSBtYWtlVW5p
cXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uY2VsbEhlYXBD
ZWxsVHlwZSwgSlNUZXN0T2JqKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0T2Jq
ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0u
Y2VsbEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RPYmopOwogICAgIGF1dG8qIHNwYWNlID0gc3BhY2Vz
Lm1fc3Vic3BhY2VGb3JUZXN0T2JqLmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJl
YWNoYWJsZS1jb2RlIikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBh
cmUiKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dE9wZXJhdGlvbkNvbmRpdGlvbmFsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3BlcmF0aW9uQ29uZGl0aW9uYWwuY3BwCShy
ZXZpc2lvbiAyODYwODEpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0T3BlcmF0aW9uQ29uZGl0aW9uYWwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04MSw3
ICs4MSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VG
b3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFD
RV9TSEFSQUJMRShKU1Rlc3RPcGVyYXRpb25Db25kaXRpb25hbFByb3RvdHlwZSwgQmFzZSk7Ci0g
ICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5w
bGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3Jl
YXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAtMjM0LDkgKzIzNCw5IEBAIEpT
Qzo6SXNvU3Vic3BhY2UqIEpTVGVzdE9wZXJhdGlvbkNvbmRpdGkKICAgICAgICAgcmV0dXJuIHNw
YWNlOwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0
aWJsZU9iamVjdCwgSlNUZXN0T3BlcmF0aW9uQ29uZGl0aW9uYWw+IHx8ICFKU1Rlc3RPcGVyYXRp
b25Db25kaXRpb25hbDo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3RleHByIChzdGQ6
OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RPcGVyYXRpb25D
b25kaXRpb25hbD4pCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE9wZXJhdGlvbkNv
bmRpdGlvbmFsID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0u
aGVhcCwgKnZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSwgSlNUZXN0T3BlcmF0aW9u
Q29uZGl0aW9uYWwpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RPcGVyYXRpb25D
b25kaXRpb25hbCA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZt
LmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RPcGVyYXRp
b25Db25kaXRpb25hbCk7CiAgICAgZWxzZQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRl
c3RPcGVyYXRpb25Db25kaXRpb25hbCA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJT
UEFDRV9JTklUKHZtLmhlYXAsICp2bS5jZWxsSGVhcENlbGxUeXBlLCBKU1Rlc3RPcGVyYXRpb25D
b25kaXRpb25hbCk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE9wZXJhdGlvbkNv
bmRpdGlvbmFsID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0u
aGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RPcGVyYXRpb25Db25kaXRpb25hbCk7
CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RPcGVyYXRpb25Db25k
aXRpb25hbC5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIp
CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVybG9hZGVkQ29u
c3RydWN0b3JzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5jcHAJKHJldmlzaW9uIDI4
NjA4MSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RP
dmVybG9hZGVkQ29uc3RydWN0b3JzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjksNyArNjksNyBA
QCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6
Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFC
TEUoSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1Byb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAg
IHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9i
amVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3Ry
dWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpT
Qzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAtMjk1LDkgKzI5NSw5IEBAIEpTQzo6SXNv
U3Vic3BhY2UqIEpTVGVzdE92ZXJsb2FkZWRDb25zdHIKICAgICAgICAgcmV0dXJuIHNwYWNlOwog
ICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9i
amVjdCwgSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycz4gfHwgIUpTVGVzdE92ZXJsb2FkZWRD
b25zdHJ1Y3RvcnM6Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjpp
c19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0T3ZlcmxvYWRlZENv
bnN0cnVjdG9ycz4pCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE92ZXJsb2FkZWRD
b25zdHJ1Y3RvcnMgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2
bS5oZWFwLCAqdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLCBKU1Rlc3RPdmVybG9h
ZGVkQ29uc3RydWN0b3JzKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0T3Zlcmxv
YWRlZENvbnN0cnVjdG9ycyA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9J
TklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RP
dmVybG9hZGVkQ29uc3RydWN0b3JzKTsKICAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNw
YWNlRm9yVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNl
PiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uY2VsbEhlYXBDZWxsVHlwZSwgSlNUZXN0
T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVz
dE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VC
U1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCksIEpTVGVzdE92ZXJsb2Fk
ZWRDb25zdHJ1Y3RvcnMpOwogICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JU
ZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigi
dW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1j
b21wYXJlIikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzV2l0aFNlcXVlbmNlLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcmxvYWRl
ZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5jZS5jcHAJKHJldmlzaW9uIDI4NjA4MSkKKysrIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVybG9hZGVkQ29uc3Ry
dWN0b3JzV2l0aFNlcXVlbmNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjgsNyArNjgsNyBAQCBw
dWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0m
IHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUo
SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5jZVByb3RvdHlwZSwgQmFzZSk7
Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2
bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSog
Y3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAtMjM4LDkgKzIzOCw5IEBA
IEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdE92ZXJsb2FkZWRDb25zdHIKICAgICAgICAgcmV0dXJu
IHNwYWNlOwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3Ry
dWN0aWJsZU9iamVjdCwgSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5jZT4g
fHwgIUpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2U6Om5lZWRzRGVzdHJ1
Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3Ry
dWN0aWJsZU9iamVjdCwgSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5jZT4p
Ci0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNX
aXRoU2VxdWVuY2UgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2
bS5oZWFwLCAqdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLCBKU1Rlc3RPdmVybG9h
ZGVkQ29uc3RydWN0b3JzV2l0aFNlcXVlbmNlKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VG
b3JUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5jZSA9IG1ha2VVbmlxdWU8SXNv
U3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVj
dEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzV2l0aFNlcXVlbmNl
KTsKICAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE92ZXJsb2FkZWRD
b25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2UgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VC
U1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uY2VsbEhlYXBDZWxsVHlwZSwgSlNUZXN0T3ZlcmxvYWRl
ZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5jZSk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9y
VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2UgPSBtYWtlVW5pcXVlPElzb1N1
YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCks
IEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2UpOwogICAgIGF1dG8qIHNw
YWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dpdGhT
ZXF1ZW5jZS5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIp
CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RQbHVnaW5JbnRlcmZh
Y2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RQbHVnaW5JbnRlcmZhY2UuY3BwCShyZXZpc2lvbiAyODYwODEpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0UGx1Z2luSW50ZXJmYWNl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjQsNyArNjQsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGlj
IEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAg
ICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0UGx1Z2luSW50ZXJm
YWNlUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNl
OworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3Rh
dGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7
CkBAIC0yNDQsOSArMjQ0LDkgQEAgSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0UGx1Z2luSW50ZXJm
YWNlOgogICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jh
c2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RQbHVnaW5JbnRlcmZhY2U+
IHx8ICFKU1Rlc3RQbHVnaW5JbnRlcmZhY2U6Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNv
bnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNU
ZXN0UGx1Z2luSW50ZXJmYWNlPikKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0UGx1
Z2luSW50ZXJmYWNlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQo
dm0uaGVhcCwgKnZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSwgSlNUZXN0UGx1Z2lu
SW50ZXJmYWNlKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0UGx1Z2luSW50ZXJm
YWNlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwg
dm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCksIEpTVGVzdFBsdWdpbkludGVyZmFj
ZSk7CiAgICAgZWxzZQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RQbHVnaW5JbnRl
cmZhY2UgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFw
LCAqdm0uY2VsbEhlYXBDZWxsVHlwZSwgSlNUZXN0UGx1Z2luSW50ZXJmYWNlKTsKKyAgICAgICAg
c3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0UGx1Z2luSW50ZXJmYWNlID0gbWFrZVVuaXF1ZTxJc29T
dWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgp
LCBKU1Rlc3RQbHVnaW5JbnRlcmZhY2UpOwogICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vi
c3BhY2VGb3JUZXN0UGx1Z2luSW50ZXJmYWNlLmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lO
KCJ1bnJlYWNoYWJsZS1jb2RlIikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2Fs
LWNvbXBhcmUiKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFByb21pc2VSZWplY3Rpb25FdmVu
dC5jcHAJKHJldmlzaW9uIDI4NjA4MSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xNDgsNyArMTQ4LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNl
KiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRf
SVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudFByb3RvdHlw
ZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAg
cmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0
cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAtMzAxLDkg
KzMwMSw5IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdFByb21pc2VSZWplY3Rpb24KICAgICAg
ICAgcmV0dXJuIHNwYWNlOwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlND
OjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50PiB8fCAh
SlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50OjpuZWVkc0Rlc3RydWN0aW9uKTsKICAgICBpZiBj
b25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpT
VGVzdFByb21pc2VSZWplY3Rpb25FdmVudD4pCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9y
VGVzdFByb21pc2VSZWplY3Rpb25FdmVudCA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19T
VUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUs
IEpTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudCk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNl
Rm9yVGVzdFByb21pc2VSZWplY3Rpb25FdmVudCA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElT
T19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlw
ZSgpLCBKU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQpOwogICAgIGVsc2UKLSAgICAgICAgc3Bh
Y2VzLm1fc3Vic3BhY2VGb3JUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50ID0gbWFrZVVuaXF1ZTxJ
c29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmNlbGxIZWFwQ2VsbFR5
cGUsIEpTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudCk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNw
YWNlRm9yVGVzdFByb21pc2VSZWplY3Rpb25FdmVudCA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+
IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0
UHJvbWlzZVJlamVjdGlvbkV2ZW50KTsKICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNw
YWNlRm9yVGVzdFByb21pc2VSZWplY3Rpb25FdmVudC5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19C
RUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9n
aWNhbC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RSZWFkT25seU1hcExpa2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RSZWFkT25seU1hcExpa2UuY3BwCShy
ZXZpc2lvbiAyODYwODEpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0UmVhZE9ubHlNYXBMaWtlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzksNyArNzks
NyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpT
Qzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hB
UkFCTEUoSlNUZXN0UmVhZE9ubHlNYXBMaWtlUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0
dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0
U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1
cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpK
U1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC0zMDUsOSArMzA1LDkgQEAgSlNDOjpJc29TdWJz
cGFjZSogSlNUZXN0UmVhZE9ubHlNYXBMaWtlOgogICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAg
c3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0
LCBKU1Rlc3RSZWFkT25seU1hcExpa2U+IHx8ICFKU1Rlc3RSZWFkT25seU1hcExpa2U6Om5lZWRz
RGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpK
U0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0UmVhZE9ubHlNYXBMaWtlPikKLSAgICAgICAgc3Bh
Y2VzLm1fc3Vic3BhY2VGb3JUZXN0UmVhZE9ubHlNYXBMaWtlID0gbWFrZVVuaXF1ZTxJc29TdWJz
cGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmRlc3RydWN0aWJsZU9iamVjdEhl
YXBDZWxsVHlwZSwgSlNUZXN0UmVhZE9ubHlNYXBMaWtlKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vi
c3BhY2VGb3JUZXN0UmVhZE9ubHlNYXBMaWtlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNP
X1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBl
KCksIEpTVGVzdFJlYWRPbmx5TWFwTGlrZSk7CiAgICAgZWxzZQotICAgICAgICBzcGFjZXMubV9z
dWJzcGFjZUZvclRlc3RSZWFkT25seU1hcExpa2UgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJ
U09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uY2VsbEhlYXBDZWxsVHlwZSwgSlNUZXN0UmVh
ZE9ubHlNYXBMaWtlKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0UmVhZE9ubHlN
YXBMaWtlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVh
cCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RSZWFkT25seU1hcExpa2UpOwogICAgIGF1
dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0UmVhZE9ubHlNYXBMaWtlLmdldCgp
OwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKIElHTk9SRV9XQVJO
SU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRleDogU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFJlYWRPbmx5U2V0TGlrZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFJl
YWRPbmx5U2V0TGlrZS5jcHAJKHJldmlzaW9uIDI4NjA4MSkKKysrIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RSZWFkT25seVNldExpa2UuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC03OCw3ICs3OCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJz
cGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNT
RVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3RSZWFkT25seVNldExpa2VQcm90b3R5cGUs
IEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJl
dHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1
Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKQEAgLTI4NCw5ICsy
ODQsOSBAQCBKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3RSZWFkT25seVNldExpa2U6CiAgICAgICAg
IHJldHVybiBzcGFjZTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6
SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdFJlYWRPbmx5U2V0TGlrZT4gfHwgIUpTVGVzdFJl
YWRPbmx5U2V0TGlrZTo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3RleHByIChzdGQ6
OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RSZWFkT25seVNl
dExpa2U+KQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RSZWFkT25seVNldExpa2Ug
PSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0u
ZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLCBKU1Rlc3RSZWFkT25seVNldExpa2UpOwor
ICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RSZWFkT25seVNldExpa2UgPSBtYWtlVW5p
cXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGli
bGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0UmVhZE9ubHlTZXRMaWtlKTsKICAgICBlbHNl
Ci0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFJlYWRPbmx5U2V0TGlrZSA9IG1ha2VV
bmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5jZWxsSGVh
cENlbGxUeXBlLCBKU1Rlc3RSZWFkT25seVNldExpa2UpOworICAgICAgICBzcGFjZXMubV9zdWJz
cGFjZUZvclRlc3RSZWFkT25seVNldExpa2UgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09f
U1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCksIEpTVGVzdFJlYWRP
bmx5U2V0TGlrZSk7CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RS
ZWFkT25seVNldExpa2UuZ2V0KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxl
LWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0UmVwb3J0
RXh0cmFNZW1vcnlDb3N0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0UmVwb3J0RXh0cmFNZW1vcnlDb3N0LmNwcAkocmV2aXNp
b24gMjg2MDgxKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdFJlcG9ydEV4dHJhTWVtb3J5Q29zdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYzLDcgKzYz
LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihK
U0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NI
QVJBQkxFKEpTVGVzdFJlcG9ydEV4dHJhTWVtb3J5Q29zdFByb3RvdHlwZSwgQmFzZSk7Ci0gICAg
ICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFp
bk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRl
U3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAtMTcxLDkgKzE3MSw5IEBAIEpTQzo6
SXNvU3Vic3BhY2UqIEpTVGVzdFJlcG9ydEV4dHJhTWVtb3IKICAgICAgICAgcmV0dXJuIHNwYWNl
OwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJs
ZU9iamVjdCwgSlNUZXN0UmVwb3J0RXh0cmFNZW1vcnlDb3N0PiB8fCAhSlNUZXN0UmVwb3J0RXh0
cmFNZW1vcnlDb3N0OjpuZWVkc0Rlc3RydWN0aW9uKTsKICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6
aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdFJlcG9ydEV4dHJh
TWVtb3J5Q29zdD4pCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFJlcG9ydEV4dHJh
TWVtb3J5Q29zdCA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZt
LmhlYXAsICp2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUsIEpTVGVzdFJlcG9ydEV4
dHJhTWVtb3J5Q29zdCk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFJlcG9ydEV4
dHJhTWVtb3J5Q29zdCA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklU
KHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RSZXBv
cnRFeHRyYU1lbW9yeUNvc3QpOwogICAgIGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VG
b3JUZXN0UmVwb3J0RXh0cmFNZW1vcnlDb3N0ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNP
X1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmNlbGxIZWFwQ2VsbFR5cGUsIEpTVGVzdFJlcG9y
dEV4dHJhTWVtb3J5Q29zdCk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFJlcG9y
dEV4dHJhTWVtb3J5Q29zdCA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9J
TklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0UmVwb3J0RXh0cmFNZW1v
cnlDb3N0KTsKICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFJlcG9y
dEV4dHJhTWVtb3J5Q29zdC5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFi
bGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJp
YWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJ
bnRlcmZhY2UuY3BwCShyZXZpc2lvbiAyODYwODEpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtODksNyArODksNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpT
Qzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAg
U1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0U2VyaWFsaXplZFNjcmlw
dFZhbHVlSW50ZXJmYWNlUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFp
bk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAg
ICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYg
dm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3Rv
dHlwZSkKICAgICB7CkBAIC0zNDksOSArMzQ5LDkgQEAgSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0
U2VyaWFsaXplZFNjcmlwdAogICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fzc2Vy
dChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RTZXJp
YWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2U+IHx8ICFKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFs
dWVJbnRlcmZhY2U6Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjpp
c19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0U2VyaWFsaXplZFNj
cmlwdFZhbHVlSW50ZXJmYWNlPikKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0U2Vy
aWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNP
X1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlw
ZSwgSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlKTsKKyAgICAgICAgc3BhY2Vz
Lm1fc3Vic3BhY2VGb3JUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlID0gbWFrZVVu
aXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3Rp
YmxlT2JqZWN0SGVhcENlbGxUeXBlKCksIEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVy
ZmFjZSk7CiAgICAgZWxzZQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RTZXJpYWxp
emVkU2NyaXB0VmFsdWVJbnRlcmZhY2UgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VC
U1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uY2VsbEhlYXBDZWxsVHlwZSwgSlNUZXN0U2VyaWFsaXpl
ZFNjcmlwdFZhbHVlSW50ZXJmYWNlKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0
U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4g
SVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RT
ZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UpOwogICAgIGF1dG8qIHNwYWNlID0gc3BhY2Vz
Lm1fc3Vic3BhY2VGb3JUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmdldCgpOwog
SUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKIElHTk9SRV9XQVJOSU5H
U19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNldExpa2UuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXRMaWtlLmNwcAko
cmV2aXNpb24gMjg2MDgxKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdFNldExpa2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04MSw3ICs4MSw3IEBAIHB1
YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYg
dm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShK
U1Rlc3RTZXRMaWtlUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9i
amVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9
CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0s
IEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlw
ZSkKICAgICB7CkBAIC0zNDIsOSArMzQyLDkgQEAgSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0U2V0
TGlrZTo6c3Vic3BhYwogICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fzc2VydChz
dGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RTZXRMaWtl
PiB8fCAhSlNUZXN0U2V0TGlrZTo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3RleHBy
IChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RTZXRM
aWtlPikKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0U2V0TGlrZSA9IG1ha2VVbmlx
dWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5kZXN0cnVjdGli
bGVPYmplY3RIZWFwQ2VsbFR5cGUsIEpTVGVzdFNldExpa2UpOworICAgICAgICBzcGFjZXMubV9z
dWJzcGFjZUZvclRlc3RTZXRMaWtlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQ
QUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCksIEpT
VGVzdFNldExpa2UpOwogICAgIGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0
U2V0TGlrZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhl
YXAsICp2bS5jZWxsSGVhcENlbGxUeXBlLCBKU1Rlc3RTZXRMaWtlKTsKKyAgICAgICAgc3BhY2Vz
Lm1fc3Vic3BhY2VGb3JUZXN0U2V0TGlrZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19T
VUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0U2V0TGlr
ZSk7CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RTZXRMaWtlLmdl
dCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKIElHTk9SRV9X
QVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRleDogU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNldExpa2VXaXRoT3ZlcnJpZGRlbk9w
ZXJhdGlvbnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RTZXRMaWtlV2l0aE92ZXJyaWRkZW5PcGVyYXRpb25zLmNwcAkocmV2
aXNpb24gMjg2MDgxKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdFNldExpa2VXaXRoT3ZlcnJpZGRlbk9wZXJhdGlvbnMuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC04NSw3ICs4NSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSog
c3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lT
T19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3RTZXRMaWtlV2l0aE92ZXJyaWRkZW5PcGVyYXRpb25z
UHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOwor
ICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGlj
IEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBA
IC0zNTQsOSArMzU0LDkgQEAgSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0U2V0TGlrZVdpdGhPdmVy
cgogICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vf
b2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RTZXRMaWtlV2l0aE92ZXJyaWRk
ZW5PcGVyYXRpb25zPiB8fCAhSlNUZXN0U2V0TGlrZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9uczo6
bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxK
U0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RTZXRMaWtlV2l0aE92ZXJyaWRkZW5PcGVy
YXRpb25zPikKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0U2V0TGlrZVdpdGhPdmVy
cmlkZGVuT3BlcmF0aW9ucyA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9J
TklUKHZtLmhlYXAsICp2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUsIEpTVGVzdFNl
dExpa2VXaXRoT3ZlcnJpZGRlbk9wZXJhdGlvbnMpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFj
ZUZvclRlc3RTZXRMaWtlV2l0aE92ZXJyaWRkZW5PcGVyYXRpb25zID0gbWFrZVVuaXF1ZTxJc29T
dWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0
SGVhcENlbGxUeXBlKCksIEpTVGVzdFNldExpa2VXaXRoT3ZlcnJpZGRlbk9wZXJhdGlvbnMpOwog
ICAgIGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0U2V0TGlrZVdpdGhPdmVy
cmlkZGVuT3BlcmF0aW9ucyA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9J
TklUKHZtLmhlYXAsICp2bS5jZWxsSGVhcENlbGxUeXBlLCBKU1Rlc3RTZXRMaWtlV2l0aE92ZXJy
aWRkZW5PcGVyYXRpb25zKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0U2V0TGlr
ZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9ucyA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19T
VUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0U2V0TGlr
ZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9ucyk7CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9z
dWJzcGFjZUZvclRlc3RTZXRMaWtlV2l0aE92ZXJyaWRkZW5PcGVyYXRpb25zLmdldCgpOwogSUdO
T1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKIElHTk9SRV9XQVJOSU5HU19C
RUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXIu
Y3BwCShyZXZpc2lvbiAyODYwODEpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02OSw3ICs2
OSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3Io
SlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9T
SEFSQUJMRShKU1Rlc3RTdHJpbmdpZmllclByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVy
biAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNw
YWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJl
KEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNW
YWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAtMTkyLDkgKzE5Miw5IEBAIEpTQzo6SXNvU3Vic3Bh
Y2UqIEpTVGVzdFN0cmluZ2lmaWVyOjpzdWIKICAgICAgICAgcmV0dXJuIHNwYWNlOwogICAgIHN0
YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwg
SlNUZXN0U3RyaW5naWZpZXI+IHx8ICFKU1Rlc3RTdHJpbmdpZmllcjo6bmVlZHNEZXN0cnVjdGlv
bik7CiAgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3Rp
YmxlT2JqZWN0LCBKU1Rlc3RTdHJpbmdpZmllcj4pCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNl
Rm9yVGVzdFN0cmluZ2lmaWVyID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNF
X0lOSVQodm0uaGVhcCwgKnZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSwgSlNUZXN0
U3RyaW5naWZpZXIpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RTdHJpbmdpZmll
ciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZt
LmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RTdHJpbmdpZmllcik7CiAg
ICAgZWxzZQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RTdHJpbmdpZmllciA9IG1h
a2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5jZWxs
SGVhcENlbGxUeXBlLCBKU1Rlc3RTdHJpbmdpZmllcik7CisgICAgICAgIHNwYWNlcy5tX3N1YnNw
YWNlRm9yVGVzdFN0cmluZ2lmaWVyID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQ
QUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RTdHJpbmdpZmll
cik7CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RTdHJpbmdpZmll
ci5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJR05P
UkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllckFub255bW91
c09wZXJhdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyQW5vbnltb3VzT3BlcmF0aW9uLmNwcAkocmV2
aXNpb24gMjg2MDgxKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdFN0cmluZ2lmaWVyQW5vbnltb3VzT3BlcmF0aW9uLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNjksNyArNjksNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1
YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09f
U1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0U3RyaW5naWZpZXJBbm9ueW1vdXNPcGVyYXRpb25Qcm90
b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAg
ICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KICAgICBzdGF0aWMgSlND
OjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKQEAgLTE5
Miw5ICsxOTIsOSBAQCBKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3RTdHJpbmdpZmllckFub255CiAg
ICAgICAgIHJldHVybiBzcGFjZTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92
PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdFN0cmluZ2lmaWVyQW5vbnltb3VzT3Bl
cmF0aW9uPiB8fCAhSlNUZXN0U3RyaW5naWZpZXJBbm9ueW1vdXNPcGVyYXRpb246Om5lZWRzRGVz
dHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rl
c3RydWN0aWJsZU9iamVjdCwgSlNUZXN0U3RyaW5naWZpZXJBbm9ueW1vdXNPcGVyYXRpb24+KQot
ICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RTdHJpbmdpZmllckFub255bW91c09wZXJh
dGlvbiA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAs
ICp2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUsIEpTVGVzdFN0cmluZ2lmaWVyQW5v
bnltb3VzT3BlcmF0aW9uKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0U3RyaW5n
aWZpZXJBbm9ueW1vdXNPcGVyYXRpb24gPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VC
U1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwg
SlNUZXN0U3RyaW5naWZpZXJBbm9ueW1vdXNPcGVyYXRpb24pOwogICAgIGVsc2UKLSAgICAgICAg
c3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0U3RyaW5naWZpZXJBbm9ueW1vdXNPcGVyYXRpb24gPSBt
YWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uY2Vs
bEhlYXBDZWxsVHlwZSwgSlNUZXN0U3RyaW5naWZpZXJBbm9ueW1vdXNPcGVyYXRpb24pOworICAg
ICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RTdHJpbmdpZmllckFub255bW91c09wZXJhdGlv
biA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZt
LmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0U3RyaW5naWZpZXJBbm9ueW1vdXNPcGVyYXRpb24p
OwogICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0U3RyaW5naWZpZXJB
bm9ueW1vdXNPcGVyYXRpb24uZ2V0KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hh
YmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIp
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3Ry
aW5naWZpZXJOYW1lZE9wZXJhdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyTmFtZWRPcGVyYXRpb24u
Y3BwCShyZXZpc2lvbiAyODYwODEpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJOYW1lZE9wZXJhdGlvbi5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTcwLDcgKzcwLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNl
KiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRf
SVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdFN0cmluZ2lmaWVyTmFtZWRPcGVyYXRpb25Qcm90
b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAg
ICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KICAgICBzdGF0aWMgSlND
OjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKQEAgLTIw
OSw5ICsyMDksOSBAQCBKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3RTdHJpbmdpZmllck5hbWVkCiAg
ICAgICAgIHJldHVybiBzcGFjZTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92
PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdFN0cmluZ2lmaWVyTmFtZWRPcGVyYXRp
b24+IHx8ICFKU1Rlc3RTdHJpbmdpZmllck5hbWVkT3BlcmF0aW9uOjpuZWVkc0Rlc3RydWN0aW9u
KTsKICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGli
bGVPYmplY3QsIEpTVGVzdFN0cmluZ2lmaWVyTmFtZWRPcGVyYXRpb24+KQotICAgICAgICBzcGFj
ZXMubV9zdWJzcGFjZUZvclRlc3RTdHJpbmdpZmllck5hbWVkT3BlcmF0aW9uID0gbWFrZVVuaXF1
ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmRlc3RydWN0aWJs
ZU9iamVjdEhlYXBDZWxsVHlwZSwgSlNUZXN0U3RyaW5naWZpZXJOYW1lZE9wZXJhdGlvbik7Cisg
ICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFN0cmluZ2lmaWVyTmFtZWRPcGVyYXRpb24g
PSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5k
ZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0U3RyaW5naWZpZXJOYW1lZE9w
ZXJhdGlvbik7CiAgICAgZWxzZQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RTdHJp
bmdpZmllck5hbWVkT3BlcmF0aW9uID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQ
QUNFX0lOSVQodm0uaGVhcCwgKnZtLmNlbGxIZWFwQ2VsbFR5cGUsIEpTVGVzdFN0cmluZ2lmaWVy
TmFtZWRPcGVyYXRpb24pOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RTdHJpbmdp
Zmllck5hbWVkT3BlcmF0aW9uID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNF
X0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RTdHJpbmdpZmllck5h
bWVkT3BlcmF0aW9uKTsKICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVz
dFN0cmluZ2lmaWVyTmFtZWRPcGVyYXRpb24uZ2V0KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4o
InVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwt
Y29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25JbXBsZW1lbnRlZEFzLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZp
ZXJPcGVyYXRpb25JbXBsZW1lbnRlZEFzLmNwcAkocmV2aXNpb24gMjg2MDgxKQorKysgU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyT3BlcmF0
aW9uSW1wbGVtZW50ZWRBcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcwLDcgKzcwLDcgQEAgcHVi
bGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2
bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpT
VGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uSW1wbGVtZW50ZWRBc1Byb3RvdHlwZSwgQmFzZSk7Ci0g
ICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5w
bGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3Jl
YXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAtMjA5LDkgKzIwOSw5IEBAIEpT
Qzo6SXNvU3Vic3BhY2UqIEpTVGVzdFN0cmluZ2lmaWVyT3BlcmEKICAgICAgICAgcmV0dXJuIHNw
YWNlOwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0
aWJsZU9iamVjdCwgSlNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25JbXBsZW1lbnRlZEFzPiB8fCAh
SlNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25JbXBsZW1lbnRlZEFzOjpuZWVkc0Rlc3RydWN0aW9u
KTsKICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGli
bGVPYmplY3QsIEpTVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uSW1wbGVtZW50ZWRBcz4pCi0gICAg
ICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uSW1wbGVtZW50
ZWRBcyA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAs
ICp2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUsIEpTVGVzdFN0cmluZ2lmaWVyT3Bl
cmF0aW9uSW1wbGVtZW50ZWRBcyk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFN0
cmluZ2lmaWVyT3BlcmF0aW9uSW1wbGVtZW50ZWRBcyA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+
IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxs
VHlwZSgpLCBKU1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbkltcGxlbWVudGVkQXMpOwogICAgIGVs
c2UKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25J
bXBsZW1lbnRlZEFzID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQo
dm0uaGVhcCwgKnZtLmNlbGxIZWFwQ2VsbFR5cGUsIEpTVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9u
SW1wbGVtZW50ZWRBcyk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFN0cmluZ2lm
aWVyT3BlcmF0aW9uSW1wbGVtZW50ZWRBcyA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19T
VUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0U3RyaW5n
aWZpZXJPcGVyYXRpb25JbXBsZW1lbnRlZEFzKTsKICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5t
X3N1YnNwYWNlRm9yVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uSW1wbGVtZW50ZWRBcy5nZXQoKTsK
IElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklO
R1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbk5hbWVkVG9T
dHJpbmcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbk5hbWVkVG9TdHJpbmcuY3BwCShyZXZp
c2lvbiAyODYwODEpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25OYW1lZFRvU3RyaW5nLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNjksNyArNjksNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2Uq
IHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9J
U09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25OYW1lZFRvU3Ry
aW5nUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNl
OworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3Rh
dGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7
CkBAIC0xOTIsOSArMTkyLDkgQEAgSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0U3RyaW5naWZpZXJP
cGVyYQogICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jh
c2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RTdHJpbmdpZmllck9wZXJh
dGlvbk5hbWVkVG9TdHJpbmc+IHx8ICFKU1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbk5hbWVkVG9T
dHJpbmc6Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNl
X29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0U3RyaW5naWZpZXJPcGVyYXRp
b25OYW1lZFRvU3RyaW5nPikKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0U3RyaW5n
aWZpZXJPcGVyYXRpb25OYW1lZFRvU3RyaW5nID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNP
X1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlw
ZSwgSlNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25OYW1lZFRvU3RyaW5nKTsKKyAgICAgICAgc3Bh
Y2VzLm1fc3Vic3BhY2VGb3JUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25OYW1lZFRvU3RyaW5nID0g
bWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVz
dHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCksIEpTVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9u
TmFtZWRUb1N0cmluZyk7CiAgICAgZWxzZQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRl
c3RTdHJpbmdpZmllck9wZXJhdGlvbk5hbWVkVG9TdHJpbmcgPSBtYWtlVW5pcXVlPElzb1N1YnNw
YWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uY2VsbEhlYXBDZWxsVHlwZSwgSlNU
ZXN0U3RyaW5naWZpZXJPcGVyYXRpb25OYW1lZFRvU3RyaW5nKTsKKyAgICAgICAgc3BhY2VzLm1f
c3Vic3BhY2VGb3JUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25OYW1lZFRvU3RyaW5nID0gbWFrZVVu
aXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBD
ZWxsVHlwZSgpLCBKU1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbk5hbWVkVG9TdHJpbmcpOwogICAg
IGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0U3RyaW5naWZpZXJPcGVyYXRp
b25OYW1lZFRvU3RyaW5nLmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJs
ZS1jb2RlIikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJ
bmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmlu
Z2lmaWVyUmVhZE9ubHlBdHRyaWJ1dGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllclJlYWRPbmx5QXR0cmli
dXRlLmNwcAkocmV2aXNpb24gMjg2MDgxKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyUmVhZE9ubHlBdHRyaWJ1dGUuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC03MSw3ICs3MSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29T
dWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNf
QVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3RTdHJpbmdpZmllclJlYWRPbmx5QXR0
cmlidXRlUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNw
YWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAg
c3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAg
ICB7CkBAIC0yMDgsOSArMjA4LDkgQEAgSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0U3RyaW5naWZp
ZXJSZWFkTwogICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6Omlz
X2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RTdHJpbmdpZmllclJl
YWRPbmx5QXR0cmlidXRlPiB8fCAhSlNUZXN0U3RyaW5naWZpZXJSZWFkT25seUF0dHJpYnV0ZTo6
bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxK
U0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RTdHJpbmdpZmllclJlYWRPbmx5QXR0cmli
dXRlPikKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0U3RyaW5naWZpZXJSZWFkT25s
eUF0dHJpYnV0ZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZt
LmhlYXAsICp2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUsIEpTVGVzdFN0cmluZ2lm
aWVyUmVhZE9ubHlBdHRyaWJ1dGUpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RT
dHJpbmdpZmllclJlYWRPbmx5QXR0cmlidXRlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNP
X1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBl
KCksIEpTVGVzdFN0cmluZ2lmaWVyUmVhZE9ubHlBdHRyaWJ1dGUpOwogICAgIGVsc2UKLSAgICAg
ICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0U3RyaW5naWZpZXJSZWFkT25seUF0dHJpYnV0ZSA9
IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5j
ZWxsSGVhcENlbGxUeXBlLCBKU1Rlc3RTdHJpbmdpZmllclJlYWRPbmx5QXR0cmlidXRlKTsKKyAg
ICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0U3RyaW5naWZpZXJSZWFkT25seUF0dHJpYnV0
ZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZt
LmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0U3RyaW5naWZpZXJSZWFkT25seUF0dHJpYnV0ZSk7
CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RTdHJpbmdpZmllclJl
YWRPbmx5QXR0cmlidXRlLmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJs
ZS1jb2RlIikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJ
bmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmlu
Z2lmaWVyUmVhZFdyaXRlQXR0cmlidXRlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJSZWFkV3JpdGVBdHRy
aWJ1dGUuY3BwCShyZXZpc2lvbiAyODYwODEpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJSZWFkV3JpdGVBdHRyaWJ1dGUuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC03Miw3ICs3Miw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJ
c29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFU
SUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3RTdHJpbmdpZmllclJlYWRXcml0
ZUF0dHJpYnV0ZVByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmpl
Y3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQog
ICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBK
U0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUp
CiAgICAgewpAQCAtMjI3LDkgKzIyNyw5IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdFN0cmlu
Z2lmaWVyUmVhZFcKICAgICAgICAgcmV0dXJuIHNwYWNlOwogICAgIHN0YXRpY19hc3NlcnQoc3Rk
Ojppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0U3RyaW5naWZp
ZXJSZWFkV3JpdGVBdHRyaWJ1dGU+IHx8ICFKU1Rlc3RTdHJpbmdpZmllclJlYWRXcml0ZUF0dHJp
YnV0ZTo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vf
b2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RTdHJpbmdpZmllclJlYWRXcml0
ZUF0dHJpYnV0ZT4pCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFN0cmluZ2lmaWVy
UmVhZFdyaXRlQXR0cmlidXRlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNF
X0lOSVQodm0uaGVhcCwgKnZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSwgSlNUZXN0
U3RyaW5naWZpZXJSZWFkV3JpdGVBdHRyaWJ1dGUpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFj
ZUZvclRlc3RTdHJpbmdpZmllclJlYWRXcml0ZUF0dHJpYnV0ZSA9IG1ha2VVbmlxdWU8SXNvU3Vi
c3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhl
YXBDZWxsVHlwZSgpLCBKU1Rlc3RTdHJpbmdpZmllclJlYWRXcml0ZUF0dHJpYnV0ZSk7CiAgICAg
ZWxzZQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RTdHJpbmdpZmllclJlYWRXcml0
ZUF0dHJpYnV0ZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZt
LmhlYXAsICp2bS5jZWxsSGVhcENlbGxUeXBlLCBKU1Rlc3RTdHJpbmdpZmllclJlYWRXcml0ZUF0
dHJpYnV0ZSk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFN0cmluZ2lmaWVyUmVh
ZFdyaXRlQXR0cmlidXRlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lO
SVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RTdHJpbmdpZmllclJlYWRX
cml0ZUF0dHJpYnV0ZSk7CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRl
c3RTdHJpbmdpZmllclJlYWRXcml0ZUF0dHJpYnV0ZS5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19C
RUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9n
aWNhbC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RUeXBlZGVmcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFR5cGVkZWZzLmNwcAkocmV2aXNpb24gMjg2MDgx
KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFR5cGVk
ZWZzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE2LDcgKzExNiw3IEBAIHB1YmxpYzoKICAgICBz
dGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewog
ICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3RUeXBlZGVm
c1Byb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsK
KyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRp
YyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpA
QCAtNzc4LDkgKzc3OCw5IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdFR5cGVkZWZzOjpzdWJz
cGEKICAgICAgICAgcmV0dXJuIHNwYWNlOwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNl
X29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0VHlwZWRlZnM+IHx8ICFKU1Rl
c3RUeXBlZGVmczo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3RleHByIChzdGQ6Omlz
X2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RUeXBlZGVmcz4pCi0g
ICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFR5cGVkZWZzID0gbWFrZVVuaXF1ZTxJc29T
dWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmRlc3RydWN0aWJsZU9iamVj
dEhlYXBDZWxsVHlwZSwgSlNUZXN0VHlwZWRlZnMpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFj
ZUZvclRlc3RUeXBlZGVmcyA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9J
TklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RU
eXBlZGVmcyk7CiAgICAgZWxzZQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RUeXBl
ZGVmcyA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAs
ICp2bS5jZWxsSGVhcENlbGxUeXBlLCBKU1Rlc3RUeXBlZGVmcyk7CisgICAgICAgIHNwYWNlcy5t
X3N1YnNwYWNlRm9yVGVzdFR5cGVkZWZzID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NV
QlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RUeXBlZGVm
cyk7CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RUeXBlZGVmcy5n
ZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVf
V0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1dvcmtlckdsb2JhbFNjb3BlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTV29ya2Vy
R2xvYmFsU2NvcGUuaAkocmV2aXNpb24gMjg2MDgxKQorKysgU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTV29ya2VyR2xvYmFsU2NvcGUuaAkod29ya2luZyBjb3B5KQpA
QCAtODUsNyArODUsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1
YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09f
U1VCU1BBQ0VfU0hBUkFCTEUoSlNXb3JrZXJHbG9iYWxTY29wZVByb3RvdHlwZSwgQmFzZSk7Ci0g
ICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5w
bGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3Jl
YXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpJbmRleDogU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTV29ya2xldEdsb2JhbFNjb3BlLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTV29ya2xldEds
b2JhbFNjb3BlLmgJKHJldmlzaW9uIDI4NjA4MSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1dvcmtsZXRHbG9iYWxTY29wZS5oCSh3b3JraW5nIGNvcHkpCkBA
IC04NSw3ICs4NSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vi
c3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19T
VUJTUEFDRV9TSEFSQUJMRShKU1dvcmtsZXRHbG9iYWxTY29wZVByb3RvdHlwZSwgQmFzZSk7Ci0g
ICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5w
bGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3Jl
YXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpJbmRleDogU291cmNlL1dlYkNvcmUv
YnJpZGdlL29iamMvb2JqY19ydW50aW1lLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2JyaWRnZS9vYmpjL29iamNfcnVudGltZS5tbQkocmV2aXNpb24gMjg2MDgxKQorKysgU291cmNl
L1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19ydW50aW1lLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0z
MzUsNyArMzM1LDcgQEAgYm9vbCBPYmpjRmFsbGJhY2tPYmplY3RJbXA6OnRvQm9vbGVhbihKUwog
SlNDOjpJc29TdWJzcGFjZSogT2JqY0ZhbGxiYWNrT2JqZWN0SW1wOjpzdWJzcGFjZUZvckltcGwo
SlNDOjpWTSYgdm0pCiB7CiAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEpTQzo6SXNvU3Vic3Bh
Y2VQZXJWTT4gcGVyVk0oW10gKEpTQzo6Vk0mIHZtKSB7Ci0gICAgICAgIHJldHVybiBJU09fU1VC
U1BBQ0VfUEFSQU1FVEVSUygqdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLCBPYmpj
RmFsbGJhY2tPYmplY3RJbXApOworICAgICAgICByZXR1cm4gSVNPX1NVQlNQQUNFX1BBUkFNRVRF
UlModm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCksIE9iamNGYWxsYmFja09iamVj
dEltcCk7CiAgICAgfSk7CiAgICAgcmV0dXJuICZwZXJWTS5nZXQoKS5mb3JWTSh2bSk7CiB9Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck9yV29ya2xldFNjcmlwdENvbnRyb2xs
ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck9yV29ya2xl
dFNjcmlwdENvbnRyb2xsZXIuaAkocmV2aXNpb24gMjg2MDgxKQorKysgU291cmNlL1dlYkNvcmUv
d29ya2Vycy9Xb3JrZXJPcldvcmtsZXRTY3JpcHRDb250cm9sbGVyLmgJKHdvcmtpbmcgY29weSkK
QEAgLTM4LDYgKzM4LDcgQEAKIG5hbWVzcGFjZSBKU0MgewogY2xhc3MgRXhjZXB0aW9uOwogY2xh
c3MgSlNHbG9iYWxPYmplY3Q7CitjbGFzcyBKU01vZHVsZVJlY29yZDsKIGNsYXNzIFZNOwogfQog
CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9Nb2RlbEVsZW1lbnRDb250cm9s
bGVyQ29jb2EubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2Ev
TW9kZWxFbGVtZW50Q29udHJvbGxlckNvY29hLm1tCShyZXZpc2lvbiAyODYwODEpCisrKyBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9Nb2RlbEVsZW1lbnRDb250cm9sbGVyQ29jb2EubW0J
KHdvcmtpbmcgY29weSkKQEAgLTIzMyw2ICsyMzMsMTAgQEAgdm9pZCBNb2RlbEVsZW1lbnRDb250
cm9sbGVyOjpoYW5kbGVNb3VzZQogCiAjaWYgRU5BQkxFKEFSS0lUX0lOTElORV9QUkVWSUVXKQog
CisjdW5kZWYgRU5BQkxFX0FSS0lUX0lOTElORV9QUkVWSUVXX0NBTUVSQV9UUkFOU0ZPUk0gLy8g
bWxhbSBIQUNLCisjdW5kZWYgRU5BQkxFX0FSS0lUX0lOTElORV9QUkVWSUVXX0FOSU1BVElPTlNf
Q09OVFJPTCAvLyBtbGFtIEhBQ0sKKyN1bmRlZiBFTkFCTEVfQVJLSVRfSU5MSU5FX1BSRVZJRVdf
QVVESU9fQ09OVFJPTCAvLyBtbGFtIEhBQ0sKKwogc3RhdGljIGJvb2wgcHJldmlld0hhc0NhbWVy
YVN1cHBvcnQoQVNWSW5saW5lUHJldmlldyAqcHJldmlldykKIHsKICNpZiBFTkFCTEUoQVJLSVRf
SU5MSU5FX1BSRVZJRVdfQ0FNRVJBX1RSQU5TRk9STSkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>444891</attachid>
            <date>2021-11-20 02:38:58 -0800</date>
            <delta_ts>2021-11-20 06:24:06 -0800</delta_ts>
            <desc>work in progress.</desc>
            <filename>bug-233240e.patch</filename>
            <type>text/plain</type>
            <size>396925</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDI4NjA5NSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpA
QCAtNzYzLDYgKzc2Myw4IEBAIHNldChKYXZhU2NyaXB0Q29yZV9QUklWQVRFX0ZSQU1FV09SS19I
RUEKICAgICBoZWFwL0luY3JlbWVudGFsU3dlZXBlci5oCiAgICAgaGVhcC9Jc29DZWxsU2V0LmgK
ICAgICBoZWFwL0lzb0hlYXBDZWxsVHlwZS5oCisgICAgaGVhcC9Jc29JbmxpbmVkSGVhcENlbGxU
eXBlLmgKKyAgICBoZWFwL0lzb0lubGluZWRIZWFwQ2VsbFR5cGVJbmxpbmVzLmgKICAgICBoZWFw
L0lzb1N1YnNwYWNlLmgKICAgICBoZWFwL0lzb1N1YnNwYWNlSW5saW5lcy5oCiAgICAgaGVhcC9J
c29TdWJzcGFjZVBlclZNLmgKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCShyZXZpc2lvbiAyODYw
OTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MTQyOSw3ICsxNDI5LDcgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBl
LCBTdWJzcGFjZUFjY2Vzcz4KICAgICBzdGF0aWMgQ29tcGxldGVTdWJzcGFjZSogc3Vic3BhY2VG
b3IoVk0mIHZtKQogICAgIHsKLSAgICAgICAgcmV0dXJuICZ2bS5kZXN0cnVjdGlibGVPYmplY3RT
cGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5kZXN0cnVjdGlibGVPYmplY3RTcGFjZSgpOwogICAg
IH0KIAogICAgIEpTQ01lbW9yeUZvb3RwcmludChWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJl
KQpAQCAtMTc2Miw3ICsxNzYyLDcgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENl
bGxUeXBlLCBTdWJzcGFjZUFjY2Vzcz4KICAgICBzdGF0aWMgQ29tcGxldGVTdWJzcGFjZSogc3Vi
c3BhY2VGb3IoVk0mIHZtKQogICAgIHsKLSAgICAgICAgcmV0dXJuICZ2bS5kZXN0cnVjdGlibGVP
YmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5kZXN0cnVjdGlibGVPYmplY3RTcGFjZSgp
OwogICAgIH0KIAogICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYgdm0s
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3
b3JraW5nIGNvcHkpCkBAIC0xOTU5LDcgKzE5NTksNyBAQAogCQlFM0M2OTRCMzIzMDI2ODc3MDA2
RkJFNDIgLyogV2FzbU9TUkVudHJ5RGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRTNDNjk0QjEyMzAyNjg3MzAwNkZCRTQyIC8qIFdhc21PU1JFbnRy
eURhdGEuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQlFM0M3M0E5MTI1QkZBNzNCMDBFRkUzMDMgLyogV2FzbVN0cmVhbWluZ1BsYW4uaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzQzczQTkwMjVCRkE3MzQw
MEVGRTMwMyAvKiBXYXNtU3RyZWFtaW5nUGxhbi5oICovOyB9OwogCQlFM0M3OUNBQjFEQjlBNERD
MDBEMUVDQTQgLyogRE9NSklURWZmZWN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBFM0M3OUNBQTFEQjlBNEQ2MDBEMUVDQTQgLyogRE9NSklURWZmZWN0
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJRTND
OEVENDMyM0ExREJDQjAwMTMxOTU4IC8qIElzb0lubGluZWRIZWFwQ2VsbFR5cGUuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzQzhFRDQyMjNBMURCQzUw
MDEzMTk1OCAvKiBJc29JbmxpbmVkSGVhcENlbGxUeXBlLmggKi87IH07CisJCUUzQzhFRDQzMjNB
MURCQ0IwMDEzMTk1OCAvKiBJc29JbmxpbmVkSGVhcENlbGxUeXBlLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFM0M4RUQ0MjIzQTFEQkM1MDAxMzE5NTgg
LyogSXNvSW5saW5lZEhlYXBDZWxsVHlwZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCUUzQ0EzQTRFMjUyN0FCMkYwMDQ4MDJCRiAvKiBKSVRPcGVy
YXRpb25MaXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBFM0NBM0E0QzI1MjdBQjJGMDA0ODAyQkYgLyogSklUT3BlcmF0aW9uTGlzdC5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUzRDIzOUM5MUI4MjlD
MUMwMEJCRUY2NyAvKiBKU01vZHVsZUVudmlyb25tZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFM0QyMzlDNzFCODI5QzFDMDBCQkVGNjcgLyogSlNN
b2R1bGVFbnZpcm9ubWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCUUzRDM1MTVGMjQxQjg5RDcwMDhEQzE2RSAvKiBNYXJrZWRKU1ZhbHVlUmVm
QXJyYXkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUz
RDM1MTVEMjQxQjg5Q0UwMDhEQzE2RSAvKiBNYXJrZWRKU1ZhbHVlUmVmQXJyYXkuaCAqLzsgfTsK
QEAgLTIwNDEsNiArMjA0MSw3IEBACiAJCUZFNjNERDU0MUVBOUI2MUUwMDEwM0E2OSAvKiBQcmlu
dGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTYz
REQ1MzFFQTlCNjBFMDAxMDNBNjkgLyogUHJpbnRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUZFNjQ4NzJFMjE0MUQwNDgwMEFCMEQzRSAvKiBP
cGNvZGVJbmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBGRTY0ODcyRDIxNDFEMDQ4MDBBQjBEM0UgLyogT3Bjb2RlSW5saW5lcy5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUZFNjQ5MTM3MUQ3OEYw
MUQwMEE2OTRENCAvKiBFeGNlcHRpb25TY29wZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRkU2NDkxMzYxRDc4RjAxMzAwQTY5NEQ0IC8qIEV4Y2VwdGlv
blNjb3BlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
KwkJRkU2NUIxNTEyNzQ4NjAxRjAwREI1QjE2IC8qIElzb0lubGluZWRIZWFwQ2VsbFR5cGVJbmxp
bmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTY1
QjE1MDI3NDg2MDFGMDBEQjVCMTYgLyogSXNvSW5saW5lZEhlYXBDZWxsVHlwZUlubGluZXMuaCAq
LzsgfTsKIAkJRkU2OEM2MzcxQjkwREUwNDAwNDJCQ0IzIC8qIE1hY3JvQXNzZW1ibGVyUHJpbnRl
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkU2OEM2
MzYxQjkwREREOTAwNDJCQ0IzIC8qIE1hY3JvQXNzZW1ibGVyUHJpbnRlci5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUZFNkY1NkRFMUU2NEVBRDYw
MEQxNzgwMSAvKiBWTVRyYXBzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBGRTZGNTZERDFFNjRFOTIwMDBEMTc4MDEgLyogVk1UcmFwcy5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUZFNzQ5N0U2MjA5MDAx
QjEwMDAzNTY1QiAvKiBKU0NQdHJUYWcuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEZFNzQ5N0U1MjA5MDAxQjAwMDAzNTY1QiAvKiBKU0NQdHJUYWcuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtNTQ5OSw2
ICs1NTAwLDcgQEAKIAkJRkU2NDg3MkQyMTQxRDA0ODAwQUIwRDNFIC8qIE9wY29kZUlubGluZXMu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gT3Bjb2RlSW5saW5lcy5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRTY0OTEzNjFENzhGMDEzMDBBNjk0RDQgLyogRXhj
ZXB0aW9uU2NvcGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRXhjZXB0aW9u
U2NvcGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkU2NDkxMzgxRDc4RjNBMzAw
QTY5NEQ0IC8qIEV4Y2VwdGlvblNjb3BlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEV4Y2VwdGlvblNjb3BlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJRkU2NUIxNTAyNzQ4NjAxRjAwREI1QjE2IC8qIElzb0lubGluZWRIZWFwQ2VsbFR5cGVJbmxp
bmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IElzb0lubGluZWRIZWFwQ2Vs
bFR5cGVJbmxpbmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFNjhDNjM1MUI5
MERERDkwMDQyQkNCMyAvKiBNYWNyb0Fzc2VtYmxlclByaW50ZXIuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWFjcm9Bc3NlbWJsZXJQcmludGVyLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkU2OEM2MzYxQjkwREREOTAwNDJCQ0IzIC8qIE1hY3Jv
QXNzZW1ibGVyUHJpbnRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNYWNy
b0Fzc2VtYmxlclByaW50ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkU2RjU2
REMxRTY0RTkyMDAwRDE3ODAxIC8qIFZNVHJhcHMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gVk1UcmFwcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBA
IC02NjAzLDYgKzY2MDUsNyBAQAogCQkJCUUzQzhFRDQxMjNBMURCQzQwMDEzMTk1OCAvKiBJc29I
ZWFwQ2VsbFR5cGUuY3BwICovLAogCQkJCUUzQkYxQkFEMjM4QUFFRDEwMDNBMUMyQiAvKiBJc29I
ZWFwQ2VsbFR5cGUuaCAqLywKIAkJCQlFM0M4RUQ0MjIzQTFEQkM1MDAxMzE5NTggLyogSXNvSW5s
aW5lZEhlYXBDZWxsVHlwZS5oICovLAorCQkJCUZFNjVCMTUwMjc0ODYwMUYwMERCNUIxNiAvKiBJ
c29JbmxpbmVkSGVhcENlbGxUeXBlSW5saW5lcy5oICovLAogCQkJCTBGRENFMTJDMUZBRkI0REUw
MDZGMzkwMSAvKiBJc29TdWJzcGFjZS5jcHAgKi8sCiAJCQkJMEZEQ0UxMkIxRkFGQjRERTAwNkYz
OTAxIC8qIElzb1N1YnNwYWNlLmggKi8sCiAJCQkJMEZEMkZEOTIyMEI1MkJEQzAwRjA5NDQxIC8q
IElzb1N1YnNwYWNlSW5saW5lcy5oICovLApAQCAtMTA0MTMsNiArMTA0MTYsNyBAQAogCQkJCUUz
M0Y1MDgxMUI4NDI5QTQwMDQxMzg1NiAvKiBKU0ludGVybmFsUHJvbWlzZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJRTMzRjUwNzkxQjg0MjI1NzAwNDEzODU2IC8qIEpTSW50ZXJuYWxQcm9taXNlQ29u
c3RydWN0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUUzM0Y1MDg3MUI4NDQ5RUYwMDQxMzg1NiAv
KiBKU0ludGVybmFsUHJvbWlzZUNvbnN0cnVjdG9yLmx1dC5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
RkU2NUIxNTEyNzQ4NjAxRjAwREI1QjE2IC8qIElzb0lubGluZWRIZWFwQ2VsbFR5cGVJbmxpbmVz
LmggaW4gSGVhZGVycyAqLywKIAkJCQlFMzNGNTA3NTFCODQyMUMwMDA0MTM4NTYgLyogSlNJbnRl
cm5hbFByb21pc2VQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1MDNGQTFFMTg4RTBG
QjAwMDExMEYxNCAvKiBKU0phdmFTY3JpcHRDYWxsRnJhbWVQcm90b3R5cGUuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUJDMThDNDE2MEUxNkY1Q0QwMEIzNDQ2MCAvKiBKU0xleGljYWxFbnZpcm9ubWVu
dC5oIGluIEhlYWRlcnMgKi8sCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
QWNjZXNzQ2FzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0FjY2Vzc0Nhc2UuY3BwCShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIyNzcsNyAr
MjI3Nyw3IEBAIHZvaWQgQWNjZXNzQ2FzZTo6Z2VuZXJhdGVJbXBsKEFjY2Vzc0dlbmUKICAgICAg
ICAgICAgIHNpemVfdCBuZXdTaXplID0gbmV3U3RydWN0dXJlKCktPm91dE9mTGluZUNhcGFjaXR5
KCkgKiBzaXplb2YoSlNWYWx1ZSk7CiAKICAgICAgICAgICAgIGlmIChhbGxvY2F0aW5nSW5saW5l
KSB7Ci0gICAgICAgICAgICAgICAgQWxsb2NhdG9yIGFsbG9jYXRvciA9IHZtLmpzVmFsdWVHaWdh
Y2FnZUF1eGlsaWFyeVNwYWNlLmFsbG9jYXRvckZvcihuZXdTaXplLCBBbGxvY2F0b3JGb3JNb2Rl
OjpBbGxvY2F0b3JJZkV4aXN0cyk7CisgICAgICAgICAgICAgICAgQWxsb2NhdG9yIGFsbG9jYXRv
ciA9IHZtLmpzVmFsdWVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlKCkuYWxsb2NhdG9yRm9yKG5ld1Np
emUsIEFsbG9jYXRvckZvck1vZGU6OkFsbG9jYXRvcklmRXhpc3RzKTsKIAogICAgICAgICAgICAg
ICAgIGppdC5lbWl0QWxsb2NhdGUoc2NyYXRjaEdQUiwgSklUQWxsb2NhdG9yOjpjb25zdGFudChh
bGxvY2F0b3IpLCBzY3JhdGNoR1BSMiwgc2NyYXRjaEdQUjMsIHNsb3dQYXRoKTsKICAgICAgICAg
ICAgICAgICBqaXQuYWRkUHRyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKG5ld1NpemUgKyBz
aXplb2YoSW5kZXhpbmdIZWFkZXIpKSwgc2NyYXRjaEdQUik7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvREZHRXhpdFByb2ZpbGUuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvREZHRXhpdFByb2ZpbGUuaAkocmV2aXNpb24gMjg2MDk1
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0RGR0V4aXRQcm9maWxlLmgJKHdv
cmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDExLTIw
MTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEx
LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCkBAIC0zNCw3ICszNCwxMSBAQAogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+
CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCi1uYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERG
RyB7CituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgVW5saW5rZWRDb2RlQmxvY2s7CisKK25hbWVz
cGFjZSBERkcgewogCiBjbGFzcyBGcmVxdWVudEV4aXRTaXRlIHsKIHB1YmxpYzoKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FdmFsQ29kZUJsb2NrLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0V2YWxDb2RlQmxvY2suaAkocmV2aXNp
b24gMjg2MDk1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0V2YWxDb2RlQmxv
Y2suaAkod29ya2luZyBjb3B5KQpAQCAtNDEsNyArNDEsNyBAQCBwdWJsaWM6CiAgICAgdGVtcGxh
dGU8dHlwZW5hbWUsIFN1YnNwYWNlQWNjZXNzPgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vi
c3BhY2VGb3IoVk0mIHZtKQogICAgIHsKLSAgICAgICAgcmV0dXJuICZ2bS5jb2RlQmxvY2tTcGFj
ZS5zcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5jb2RlQmxvY2tTcGFjZSgpLnNwYWNlOwogICAg
IH0KIAogICAgIHN0YXRpYyBFdmFsQ29kZUJsb2NrKiBjcmVhdGUoVk0mIHZtLCBDb3B5UGFyc2Vk
QmxvY2tUYWcsIEV2YWxDb2RlQmxvY2smIG90aGVyKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0V4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2UuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdl
LmNwcAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0V4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04MSw3ICs4
MSw3IEBAIHZvaWQgRXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZTo6dmlzaXRDaGkKICAgICAgICAg
dmlzaXRvci5hcHBlbmRVbmJhcnJpZXJlZChjb2RlQmxvY2spOwogICAgIAogICAgIGlmICghdmlz
aXRvci5pc01hcmtlZChjb2RlQmxvY2spKQotICAgICAgICB2bS5leGVjdXRhYmxlVG9Db2RlQmxv
Y2tFZGdlc1dpdGhGaW5hbGl6ZXJzLmFkZChlZGdlKTsKKyAgICAgICAgdm0uZXhlY3V0YWJsZVRv
Q29kZUJsb2NrRWRnZXNXaXRoRmluYWxpemVycygpLmFkZChlZGdlKTsKICAgICAKICAgICBpZiAo
SklUQ29kZTo6aXNPcHRpbWl6aW5nSklUKGNvZGVCbG9jay0+aml0VHlwZSgpKSkgewogICAgICAg
ICAvLyBJZiB3ZSBqZXR0aXNvbiBvdXJzZWx2ZXMgd2UnbGwgaW5zdGFsbCBvdXIgYWx0ZXJuYXRp
dmUsIHNvIG1ha2Ugc3VyZSB0aGF0IGl0CkBAIC0xMTQsNyArMTE0LDcgQEAgdm9pZCBFeGVjdXRh
YmxlVG9Db2RlQmxvY2tFZGdlOjp2aXNpdENoaQogICAgIC8vIG5vdCB5ZXQgbWFya2VkIGJlY2F1
c2UgaXQgd2Vha2x5IGRlcGVuZHMgb24gYSBzdHJ1Y3R1cmUgdGhhdCB3ZSBkaWQgbm90IHlldCBt
YXJrLCB0aGVuIHdlCiAgICAgLy8gd2lsbCBrZWVwIGZpeHBvaW50aW5nIHVudGlsIHRoZSBlbmQu
CiAgICAgdmlzaXRvci5hcHBlbmRVbmJhcnJpZXJlZChjb2RlQmxvY2stPmdsb2JhbE9iamVjdCgp
KTsKLSAgICB2bS5leGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlc1dpdGhDb25zdHJhaW50cy5hZGQo
ZWRnZSk7CisgICAgdm0uZXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZXNXaXRoQ29uc3RyYWludHMo
KS5hZGQoZWRnZSk7CiAgICAgZWRnZS0+cnVuQ29uc3RyYWludChsb2NrZXIsIHZtLCB2aXNpdG9y
KTsKIH0KIApAQCAtMTQzLDggKzE0Myw4IEBAIHZvaWQgRXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRn
ZTo6ZmluYWxpemUKICAgICAgICAgbV9jb2RlQmxvY2suY2xlYXIoKTsKICAgICB9CiAgICAgCi0g
ICAgdm0uZXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZXNXaXRoRmluYWxpemVycy5yZW1vdmUodGhp
cyk7Ci0gICAgdm0uZXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZXNXaXRoQ29uc3RyYWludHMucmVt
b3ZlKHRoaXMpOworICAgIHZtLmV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2VzV2l0aEZpbmFsaXpl
cnMoKS5yZW1vdmUodGhpcyk7CisgICAgdm0uZXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZXNXaXRo
Q29uc3RyYWludHMoKS5yZW1vdmUodGhpcyk7CiB9CiAKIGlubGluZSB2b2lkIEV4ZWN1dGFibGVU
b0NvZGVCbG9ja0VkZ2U6OmFjdGl2YXRlKCkKQEAgLTIwMSw3ICsyMDEsNyBAQCB2b2lkIEV4ZWN1
dGFibGVUb0NvZGVCbG9ja0VkZ2U6OnJ1bkNvbnN0CiAgICAgY29kZUJsb2NrLT5kZXRlcm1pbmVM
aXZlbmVzcyhsb2NrZXIsIHZpc2l0b3IpOwogCiAgICAgaWYgKHZpc2l0b3IuaXNNYXJrZWQoY29k
ZUJsb2NrKSkKLSAgICAgICAgdm0uZXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZXNXaXRoQ29uc3Ry
YWludHMucmVtb3ZlKHRoaXMpOworICAgICAgICB2bS5leGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdl
c1dpdGhDb25zdHJhaW50cygpLnJlbW92ZSh0aGlzKTsKIH0KIAogdGVtcGxhdGUgdm9pZCBFeGVj
dXRhYmxlVG9Db2RlQmxvY2tFZGdlOjpydW5Db25zdHJhaW50KGNvbnN0IENvbmN1cnJlbnRKU0xv
Y2tlciYsIFZNJiwgQWJzdHJhY3RTbG90VmlzaXRvciYpOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0V4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2UuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRn
ZS5oCShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
RXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00Myw3ICs0Myw3
IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vic3BhY2VBY2Nl
c3M+CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewot
ICAgICAgICByZXR1cm4gJnZtLmV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2VTcGFjZTsKKyAgICAg
ICAgcmV0dXJuICZ2bS5leGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlU3BhY2UoKTsKICAgICB9CiAK
ICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mLCBKU0dsb2JhbE9iamVj
dCosIEpTVmFsdWUgcHJvdG90eXBlKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9GdW5jdGlvbkNvZGVCbG9jay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9GdW5jdGlvbkNvZGVCbG9jay5oCShyZXZpc2lvbiAyODYwOTUpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRnVuY3Rpb25Db2RlQmxvY2suaAkod29ya2lu
ZyBjb3B5KQpAQCAtNDIsNyArNDIsNyBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUs
IFN1YnNwYWNlQWNjZXNzPgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0m
IHZtKQogICAgIHsKLSAgICAgICAgcmV0dXJuICZ2bS5jb2RlQmxvY2tTcGFjZS5zcGFjZTsKKyAg
ICAgICAgcmV0dXJuICZ2bS5jb2RlQmxvY2tTcGFjZSgpLnNwYWNlOwogICAgIH0KIAogICAgIHN0
YXRpYyBGdW5jdGlvbkNvZGVCbG9jayogY3JlYXRlKFZNJiB2bSwgQ29weVBhcnNlZEJsb2NrVGFn
LCBGdW5jdGlvbkNvZGVCbG9jayYgb3RoZXIpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvTW9kdWxlUHJvZ3JhbUNvZGVCbG9jay5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Nb2R1bGVQcm9ncmFtQ29kZUJsb2NrLmgJKHJldmlzaW9u
IDI4NjA5NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Nb2R1bGVQcm9ncmFt
Q29kZUJsb2NrLmgJKHdvcmtpbmcgY29weSkKQEAgLTQyLDcgKzQyLDcgQEAgcHVibGljOgogICAg
IHRlbXBsYXRlPHR5cGVuYW1lLCBTdWJzcGFjZUFjY2Vzcz4KICAgICBzdGF0aWMgSXNvU3Vic3Bh
Y2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7Ci0gICAgICAgIHJldHVybiAmdm0uY29kZUJs
b2NrU3BhY2Uuc3BhY2U7CisgICAgICAgIHJldHVybiAmdm0uY29kZUJsb2NrU3BhY2UoKS5zcGFj
ZTsKICAgICB9CiAKICAgICBzdGF0aWMgTW9kdWxlUHJvZ3JhbUNvZGVCbG9jayogY3JlYXRlKFZN
JiB2bSwgQ29weVBhcnNlZEJsb2NrVGFnLCBNb2R1bGVQcm9ncmFtQ29kZUJsb2NrJiBvdGhlcikK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qcm9ncmFtQ29kZUJsb2NrLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Byb2dyYW1Db2Rl
QmxvY2suaAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1Byb2dyYW1Db2RlQmxvY2suaAkod29ya2luZyBjb3B5KQpAQCAtNDIsNyArNDIsNyBAQCBw
dWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUsIFN1YnNwYWNlQWNjZXNzPgogICAgIHN0YXRp
YyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKLSAgICAgICAgcmV0dXJu
ICZ2bS5jb2RlQmxvY2tTcGFjZS5zcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5jb2RlQmxvY2tT
cGFjZSgpLnNwYWNlOwogICAgIH0KIAogICAgIHN0YXRpYyBQcm9ncmFtQ29kZUJsb2NrKiBjcmVh
dGUoVk0mIHZtLCBDb3B5UGFyc2VkQmxvY2tUYWcsIFByb2dyYW1Db2RlQmxvY2smIG90aGVyKQpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1JlcGF0Y2guaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUmVwYXRjaC5oCShyZXZpc2lvbiAy
ODYwOTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUmVwYXRjaC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMS0yMDIw
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMS0y
MDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwpAQCAtMzEsNiArMzEsNyBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAorY2xhc3Mg
Q2FsbExpbmtJbmZvOwogY2xhc3MgU3RydWN0dXJlU3R1YkluZm87CiAKIGVudW0gY2xhc3MgR2V0
QnlLaW5kIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1
bmN0aW9uRXhlY3V0YWJsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmNwcAkocmV2aXNpb24gMjg2MDk1
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVj
dXRhYmxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjUxLDcgKzI1MSw3IEBAIFVubGlua2VkRnVu
Y3Rpb25Db2RlQmxvY2sqIFVubGlua2VkRnVuY3QKICAgICAgICAgbV91bmxpbmtlZENvZGVCbG9j
a0ZvckNvbnN0cnVjdC5zZXQodm0sIHRoaXMsIHJlc3VsdCk7CiAgICAgICAgIGJyZWFrOwogICAg
IH0KLSAgICB2bS51bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZVNwYWNlLnNldC5hZGQodGhpcyk7
CisgICAgdm0udW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGVTcGFjZSgpLnNldC5hZGQodGhpcyk7
CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApAQCAtMzEwLDcgKzMxMCw3IEBAIHZvaWQgVW5saW5r
ZWRGdW5jdGlvbkV4ZWN1dGFibGU6OmZpbmFsaXoKICAgICAgICAgY2xlYXJJZkRlYWQobV91bmxp
bmtlZENvZGVCbG9ja0ZvckNhbGwpOwogICAgICAgICBjbGVhcklmRGVhZChtX3VubGlua2VkQ29k
ZUJsb2NrRm9yQ29uc3RydWN0KTsKICAgICAgICAgaWYgKGlzQ2xlYXJlZCAmJiAhaXNTdGlsbFZh
bGlkKQotICAgICAgICAgICAgdm0udW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGVTcGFjZS5zZXQu
cmVtb3ZlKHRoaXMpOworICAgICAgICAgICAgdm0udW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGVT
cGFjZSgpLnNldC5yZW1vdmUodGhpcyk7CiAgICAgfQogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1
dGFibGUuaAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQyLDEz
ICs0MiwxNCBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAorY2xhc3MgQ2FjaGVkRnVuY3Rpb25FeGVj
dXRhYmxlOwogY2xhc3MgRGVjb2RlcjsKLWNsYXNzIEZ1bmN0aW9uTWV0YWRhdGFOb2RlOwogY2xh
c3MgRnVuY3Rpb25FeGVjdXRhYmxlOworY2xhc3MgRnVuY3Rpb25NZXRhZGF0YU5vZGU7CiBjbGFz
cyBQYXJzZXJFcnJvcjsKK2NsYXNzIFNjcmlwdEV4ZWN1dGFibGU7CiBjbGFzcyBTb3VyY2VQcm92
aWRlcjsKIGNsYXNzIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2s7Ci1jbGFzcyBDYWNoZWRGdW5j
dGlvbkV4ZWN1dGFibGU7CiAKIGVudW0gVW5saW5rZWRGdW5jdGlvbktpbmQgewogICAgIFVubGlu
a2VkTm9ybWFsRnVuY3Rpb24sCkBAIC02Nyw3ICs2OCw3IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vic3BhY2VBY2Nlc3M+CiAgICAgc3RhdGljIElzb1N1YnNw
YWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewotICAgICAgICByZXR1cm4gJnZtLnVubGlu
a2VkRnVuY3Rpb25FeGVjdXRhYmxlU3BhY2Uuc3BhY2U7CisgICAgICAgIHJldHVybiAmdm0udW5s
aW5rZWRGdW5jdGlvbkV4ZWN1dGFibGVTcGFjZSgpLnNwYWNlOwogICAgIH0KIAogICAgIHN0YXRp
YyBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogY3JlYXRlKFZNJiB2bSwgY29uc3QgU291cmNl
Q29kZSYgc291cmNlLCBGdW5jdGlvbk1ldGFkYXRhTm9kZSogbm9kZSwgVW5saW5rZWRGdW5jdGlv
bktpbmQgdW5saW5rZWRGdW5jdGlvbktpbmQsIENvbnN0cnVjdEFiaWxpdHkgY29uc3RydWN0QWJp
bGl0eSwgSlNQYXJzZXJTY3JpcHRNb2RlIHNjcmlwdE1vZGUsIFJlZlB0cjxURFpFbnZpcm9ubWVu
dExpbms+IHBhcmVudFNjb3BlVERaVmFyaWFibGVzLCBzdGQ6Om9wdGlvbmFsPFByaXZhdGVOYW1l
RW52aXJvbm1lbnQ+IHBhcmVudFByaXZhdGVOYW1lRW52aXJvbm1lbnQsIERlcml2ZWRDb250ZXh0
VHlwZSBkZXJpdmVkQ29udGV4dFR5cGUsIE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyIG5lZWRz
Q2xhc3NGaWVsZEluaXRpYWxpemVyLCBQcml2YXRlQnJhbmRSZXF1aXJlbWVudCBwcml2YXRlQnJh
bmRSZXF1aXJlbWVudCwgYm9vbCBpc0J1aWx0aW5EZWZhdWx0Q2xhc3NDb25zdHJ1Y3RvciA9IGZh
bHNlKQpAQCAtMTMxLDcgKzEzMiw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIG1fdW5saW5r
ZWRDb2RlQmxvY2tGb3JDYWxsLmNsZWFyKCk7CiAgICAgICAgIG1fdW5saW5rZWRDb2RlQmxvY2tG
b3JDb25zdHJ1Y3QuY2xlYXIoKTsKLSAgICAgICAgdm0udW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFi
bGVTcGFjZS5zZXQucmVtb3ZlKHRoaXMpOworICAgICAgICB2bS51bmxpbmtlZEZ1bmN0aW9uRXhl
Y3V0YWJsZVNwYWNlKCkuc2V0LnJlbW92ZSh0aGlzKTsKICAgICB9CiAKICAgICB2b2lkIHJlY29y
ZFBhcnNlKENvZGVGZWF0dXJlcyBmZWF0dXJlcywgTGV4aWNhbFNjb3BlRmVhdHVyZXMgbGV4aWNh
bFNjb3BlRmVhdHVyZXMsIGJvb2wgaGFzQ2FwdHVyZWRWYXJpYWJsZXMpCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAkocmV2aXNpb24g
Mjg2MDk1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTEyMCw3ICsxMjAsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklU
OjplbWl0QWxsb2NhdGVSYXdPYmplCiAKICAgICBWTSYgdm0gPSB0aGlzLT52bSgpOwogICAgIGlm
IChzaXplKSB7Ci0gICAgICAgIGlmIChBbGxvY2F0b3IgYWxsb2NhdG9yID0gdm0uanNWYWx1ZUdp
Z2FjYWdlQXV4aWxpYXJ5U3BhY2UuYWxsb2NhdG9yRm9yTm9uVmlydHVhbChzaXplLCBBbGxvY2F0
b3JGb3JNb2RlOjpBbGxvY2F0b3JJZkV4aXN0cykpIHsKKyAgICAgICAgaWYgKEFsbG9jYXRvciBh
bGxvY2F0b3IgPSB2bS5qc1ZhbHVlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZSgpLmFsbG9jYXRvckZv
ck5vblZpcnR1YWwoc2l6ZSwgQWxsb2NhdG9yRm9yTW9kZTo6QWxsb2NhdG9ySWZFeGlzdHMpKSB7
CiAgICAgICAgICAgICBtX2ppdC5lbWl0QWxsb2NhdGUoc3RvcmFnZUdQUiwgSklUQWxsb2NhdG9y
Ojpjb25zdGFudChhbGxvY2F0b3IpLCBzY3JhdGNoR1BSLCBzY3JhdGNoMkdQUiwgc2xvd0Nhc2Vz
KTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgbV9qaXQuYWRkUHRyKApAQCAtMTA3MzgsNyAr
MTA3MzgsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQWxsb2NhdGVQcm9wCiAgICAg
CiAgICAgc2l6ZV90IHNpemUgPSBpbml0aWFsT3V0T2ZMaW5lQ2FwYWNpdHkgKiBzaXplb2YoSlNW
YWx1ZSk7CiAKLSAgICBBbGxvY2F0b3IgYWxsb2NhdG9yID0gdm0oKS5qc1ZhbHVlR2lnYWNhZ2VB
dXhpbGlhcnlTcGFjZS5hbGxvY2F0b3JGb3JOb25WaXJ0dWFsKHNpemUsIEFsbG9jYXRvckZvck1v
ZGU6OkFsbG9jYXRvcklmRXhpc3RzKTsKKyAgICBBbGxvY2F0b3IgYWxsb2NhdG9yID0gdm0oKS5q
c1ZhbHVlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZSgpLmFsbG9jYXRvckZvck5vblZpcnR1YWwoc2l6
ZSwgQWxsb2NhdG9yRm9yTW9kZTo6QWxsb2NhdG9ySWZFeGlzdHMpOwogCiAgICAgaWYgKCFhbGxv
Y2F0b3IgfHwgbm9kZS0+dHJhbnNpdGlvbigpLT5wcmV2aW91cy0+Y291bGRIYXZlSW5kZXhpbmdI
ZWFkZXIoKSkgewogICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUt
PmNoaWxkMSgpKTsKQEAgLTEwNzgyLDcgKzEwNzgyLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZVJlYWxsb2NhdGVQcgogICAgIHNpemVfdCBuZXdTaXplID0gb2xkU2l6ZSAqIG91dE9m
TGluZUdyb3d0aEZhY3RvcjsKICAgICBBU1NFUlQobmV3U2l6ZSA9PSBub2RlLT50cmFuc2l0aW9u
KCktPm5leHQtPm91dE9mTGluZUNhcGFjaXR5KCkgKiBzaXplb2YoSlNWYWx1ZSkpOwogICAgIAot
ICAgIEFsbG9jYXRvciBhbGxvY2F0b3IgPSB2bSgpLmpzVmFsdWVHaWdhY2FnZUF1eGlsaWFyeVNw
YWNlLmFsbG9jYXRvckZvck5vblZpcnR1YWwobmV3U2l6ZSwgQWxsb2NhdG9yRm9yTW9kZTo6QWxs
b2NhdG9ySWZFeGlzdHMpOworICAgIEFsbG9jYXRvciBhbGxvY2F0b3IgPSB2bSgpLmpzVmFsdWVH
aWdhY2FnZUF1eGlsaWFyeVNwYWNlKCkuYWxsb2NhdG9yRm9yTm9uVmlydHVhbChuZXdTaXplLCBB
bGxvY2F0b3JGb3JNb2RlOjpBbGxvY2F0b3JJZkV4aXN0cyk7CiAKICAgICBpZiAoIWFsbG9jYXRv
ciB8fCBub2RlLT50cmFuc2l0aW9uKCktPnByZXZpb3VzLT5jb3VsZEhhdmVJbmRleGluZ0hlYWRl
cigpKSB7CiAgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGJhc2UodGhpcywgbm9kZS0+Y2hp
bGQxKCkpOwpAQCAtMTE0OTksNyArMTE0OTksNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0
TmV3VHlwZWRBcnJheVdpCiAgICAgICAgIG1faml0LmFuZDMyKFRydXN0ZWRJbW0zMih+NyksIHNj
cmF0Y2hHUFIpOwogICAgIH0KICAgICBtX2ppdC5lbWl0QWxsb2NhdGVWYXJpYWJsZVNpemVkKAot
ICAgICAgICBzdG9yYWdlR1BSLCB2bSgpLnByaW1pdGl2ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2Us
IHNjcmF0Y2hHUFIsIHNjcmF0Y2hHUFIsCisgICAgICAgIHN0b3JhZ2VHUFIsIHZtKCkucHJpbWl0
aXZlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZSgpLCBzY3JhdGNoR1BSLCBzY3JhdGNoR1BSLAogICAg
ICAgICBzY3JhdGNoR1BSMiwgc2xvd0Nhc2VzKTsKICAgICAKICAgICBNYWNyb0Fzc2VtYmxlcjo6
SnVtcCBkb25lID0gbV9qaXQuYnJhbmNoVGVzdDMyKE1hY3JvQXNzZW1ibGVyOjpaZXJvLCBzaXpl
R1BSKTsKQEAgLTEzNzAwLDcgKzEzNzAwLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdEFs
bG9jYXRlQnV0dGVyZgogICAgIGRpZE5vdE92ZXJmbG93LmxpbmsoJm1faml0KTsKICNlbmRpZgog
ICAgIG1faml0LmVtaXRBbGxvY2F0ZVZhcmlhYmxlU2l6ZWQoCi0gICAgICAgIHN0b3JhZ2VSZXN1
bHRHUFIsIHZtKCkuanNWYWx1ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UsIHNjcmF0Y2gyLCBzY3Jh
dGNoMSwgc2NyYXRjaDMsIHNsb3dDYXNlcyk7CisgICAgICAgIHN0b3JhZ2VSZXN1bHRHUFIsIHZt
KCkuanNWYWx1ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UoKSwgc2NyYXRjaDIsIHNjcmF0Y2gxLCBz
Y3JhdGNoMywgc2xvd0Nhc2VzKTsKICAgICBtX2ppdC5hZGRQdHIoVHJ1c3RlZEltbTMyKHNpemVv
ZihJbmRleGluZ0hlYWRlcikpLCBzdG9yYWdlUmVzdWx0R1BSKTsKIAogICAgIG1faml0LnN0b3Jl
MzIoc2l6ZUdQUiwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc3RvcmFnZVJlc3VsdEdQUiwgQnV0
dGVyZmx5OjpvZmZzZXRPZlB1YmxpY0xlbmd0aCgpKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCShyZXZpc2lvbiAyODYwOTUpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTgzMDAsNyArODMwMCw3IEBAIElHTk9SRV9DTEFOR19XQVJOSU5HU19FTkQKICAgICAg
ICAgICAgICAgICBtX291dC5jb25zdEludFB0cih+c3RhdGljX2Nhc3Q8aW50cHRyX3Q+KDcpKSk7
CiAgICAgICAgIH0KIAotICAgICAgICBMVmFsdWUgYWxsb2NhdG9yID0gYWxsb2NhdG9yRm9yU2l6
ZSh2bSgpLnByaW1pdGl2ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UsIGJ5dGVTaXplLCBzbG93Q2Fz
ZSk7CisgICAgICAgIExWYWx1ZSBhbGxvY2F0b3IgPSBhbGxvY2F0b3JGb3JTaXplKHZtKCkucHJp
bWl0aXZlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZSgpLCBieXRlU2l6ZSwgc2xvd0Nhc2UpOwogICAg
ICAgICBMVmFsdWUgc3RvcmFnZSA9IGFsbG9jYXRlSGVhcENlbGwoYWxsb2NhdG9yLCBzbG93Q2Fz
ZSk7CiAKICAgICAgICAgc3BsYXRXb3JkcygKQEAgLTEzOTIxLDcgKzEzOTIxLDcgQEAgSUdOT1JF
X0NMQU5HX1dBUk5JTkdTX0VORAogICAgICAgICAgICAgICAgIFZhbHVlRnJvbUJsb2NrIG5vQnV0
dGVyZmx5ID0gbV9vdXQuYW5jaG9yKG1fb3V0LmludFB0clplcm8pOwogICAgICAgICAgICAgICAg
IAogICAgICAgICAgICAgICAgIExWYWx1ZSBzdGFydE9mU3RvcmFnZSA9IGFsbG9jYXRlSGVhcENl
bGwoCi0gICAgICAgICAgICAgICAgICAgIGFsbG9jYXRvckZvclNpemUodm0oKS5qc1ZhbHVlR2ln
YWNhZ2VBdXhpbGlhcnlTcGFjZSwgYnV0dGVyZmx5U2l6ZSwgc2xvd1BhdGgpLAorICAgICAgICAg
ICAgICAgICAgICBhbGxvY2F0b3JGb3JTaXplKHZtKCkuanNWYWx1ZUdpZ2FjYWdlQXV4aWxpYXJ5
U3BhY2UoKSwgYnV0dGVyZmx5U2l6ZSwgc2xvd1BhdGgpLAogICAgICAgICAgICAgICAgICAgICBz
bG93UGF0aCk7CiAKICAgICAgICAgICAgICAgICBMVmFsdWUgZmFzdEJ1dHRlcmZseVZhbHVlID0g
bV9vdXQuYWRkKApAQCAtMTUwMTYsNyArMTUwMTYsNyBAQCBJR05PUkVfQ0xBTkdfV0FSTklOR1Nf
RU5ECiAgICAgICAgIExCYXNpY0Jsb2NrIGxhc3ROZXh0ID0gbV9vdXQuaW5zZXJ0TmV3QmxvY2tz
QmVmb3JlKHNsb3dQYXRoKTsKIAogICAgICAgICBzaXplX3Qgc2l6ZUluQnl0ZXMgPSBzaXplSW5W
YWx1ZXMgKiBzaXplb2YoSlNWYWx1ZSk7Ci0gICAgICAgIEFsbG9jYXRvciBhbGxvY2F0b3IgPSB2
bSgpLmpzVmFsdWVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlLmFsbG9jYXRvckZvck5vblZpcnR1YWwo
c2l6ZUluQnl0ZXMsIEFsbG9jYXRvckZvck1vZGU6OkFsbG9jYXRvcklmRXhpc3RzKTsKKyAgICAg
ICAgQWxsb2NhdG9yIGFsbG9jYXRvciA9IHZtKCkuanNWYWx1ZUdpZ2FjYWdlQXV4aWxpYXJ5U3Bh
Y2UoKS5hbGxvY2F0b3JGb3JOb25WaXJ0dWFsKHNpemVJbkJ5dGVzLCBBbGxvY2F0b3JGb3JNb2Rl
OjpBbGxvY2F0b3JJZkV4aXN0cyk7CiAgICAgICAgIExWYWx1ZSBzdGFydE9mU3RvcmFnZSA9IGFs
bG9jYXRlSGVhcENlbGwoCiAgICAgICAgICAgICBtX291dC5jb25zdEludFB0cihhbGxvY2F0b3Iu
bG9jYWxBbGxvY2F0b3IoKSksIHNsb3dQYXRoKTsKICAgICAgICAgVmFsdWVGcm9tQmxvY2sgZmFz
dEJ1dHRlcmZseSA9IG1fb3V0LmFuY2hvcigKQEAgLTE3MDM4LDcgKzE3MDM4LDcgQEAgSUdOT1JF
X0NMQU5HX1dBUk5JTkdTX0VORAogICAgICAgICBMVmFsdWUgYnV0dGVyZmx5U2l6ZSA9IG1fb3V0
LmFkZCgKICAgICAgICAgICAgIHBheWxvYWRTaXplLCBtX291dC5jb25zdEludFB0cihzaXplb2Yo
SW5kZXhpbmdIZWFkZXIpKSk7CiAKLSAgICAgICAgTFZhbHVlIGFsbG9jYXRvciA9IGFsbG9jYXRv
ckZvclNpemUodm0oKS5qc1ZhbHVlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZSwgYnV0dGVyZmx5U2l6
ZSwgZmFpbENhc2UpOworICAgICAgICBMVmFsdWUgYWxsb2NhdG9yID0gYWxsb2NhdG9yRm9yU2l6
ZSh2bSgpLmpzVmFsdWVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlKCksIGJ1dHRlcmZseVNpemUsIGZh
aWxDYXNlKTsKICAgICAgICAgTFZhbHVlIHN0YXJ0T2ZTdG9yYWdlID0gYWxsb2NhdGVIZWFwQ2Vs
bChhbGxvY2F0b3IsIGZhaWxDYXNlKTsKIAogICAgICAgICBMVmFsdWUgYnV0dGVyZmx5ID0gbV9v
dXQuYWRkKHN0YXJ0T2ZTdG9yYWdlLCBtX291dC5jb25zdEludFB0cihzaXplb2YoSW5kZXhpbmdI
ZWFkZXIpKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZ2VuZXJhdG9yL0RTTC5yYgo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZ2VuZXJhdG9yL0RTTC5yYgkocmV2
aXNpb24gMjg2MDk1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2dlbmVyYXRvci9EU0wucmIJ
KHdvcmtpbmcgY29weSkKQEAgLTEsNCArMSw0IEBACi0jIENvcHlyaWdodCAoQykgMjAxOCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIENvcHlyaWdodCAoQykgMjAxOC0yMDIxIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICMKICMgUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAjIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwpAQCAtMTQ3LDYgKzE0Nyw4IEBAIG1vZHVsZSBEU0wKIAogbmFtZXNwYWNlIEpTQyB7CiAKK2Ns
YXNzIEJhc2ljQmxvY2tMb2NhdGlvbjsKKwogdm9pZCBkdW1wQnl0ZWNvZGUoQnl0ZWNvZGVEdW1w
ZXJCYXNlKiBkdW1wZXIsIEluc3RydWN0aW9uU3RyZWFtOjpPZmZzZXQsIGNvbnN0IEluc3RydWN0
aW9uKik7CiAKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9Db2RlQmxvY2tTZXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9Db2RlQmxvY2tTZXQuaAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvQ29kZUJsb2NrU2V0LmgJKHdvcmtpbmcgY29weSkKQEAgLTY2LDgg
KzY2LDYgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+IHZvaWQgaXRl
cmF0ZShjb25zdCBGdW5jdG9yJik7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4gdm9p
ZCBpdGVyYXRlKGNvbnN0IEFic3RyYWN0TG9ja2VyJiwgY29uc3QgRnVuY3RvciYpOwogCi0gICAg
dGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4gdm9pZCBpdGVyYXRlVmlhU3Vic3BhY2VzKFZNJiwg
Y29uc3QgRnVuY3RvciYpOwotICAgIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+IHZv
aWQgaXRlcmF0ZUN1cnJlbnRseUV4ZWN1dGluZyhjb25zdCBGdW5jdG9yJik7CiAgICAgCiAgICAg
dm9pZCBkdW1wKFByaW50U3RyZWFtJikgY29uc3Q7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9Db2RlQmxvY2tTZXRJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvQ29kZUJsb2NrU2V0SW5saW5lcy5oCShyZXZpc2lvbiAyODYwOTUpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Db2RlQmxvY2tTZXRJbmxpbmVzLmgJKHdvcmtp
bmcgY29weSkKQEAgLTYwLDE4ICs2MCw2IEBAIHZvaWQgQ29kZUJsb2NrU2V0OjppdGVyYXRlKGNv
bnN0IEFic3RyYWMKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4KLXZvaWQgQ29kZUJs
b2NrU2V0OjppdGVyYXRlVmlhU3Vic3BhY2VzKFZNJiB2bSwgY29uc3QgRnVuY3RvciYgZnVuY3Rv
cikKLXsKLSAgICB2bS5mb3JFYWNoQ29kZUJsb2NrU3BhY2UoCi0gICAgICAgIFsmXSAoYXV0byYg
c3BhY2VBbmRTZXQpIHsKLSAgICAgICAgICAgIHNwYWNlQW5kU2V0LnNwYWNlLmZvckVhY2hMaXZl
Q2VsbCgKLSAgICAgICAgICAgICAgICBbJl0gKEhlYXBDZWxsKiBjZWxsLCBIZWFwQ2VsbDo6S2lu
ZCkgewotICAgICAgICAgICAgICAgICAgICBmdW5jdG9yKGpzQ2FzdDxDb2RlQmxvY2sqPihzdGF0
aWNfY2FzdDxKU0NlbGwqPihjZWxsKSkpOwotICAgICAgICAgICAgICAgIH0pOwotICAgICAgICB9
KTsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4KIHZvaWQgQ29kZUJsb2NrU2V0Ojpp
dGVyYXRlQ3VycmVudGx5RXhlY3V0aW5nKGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3IpCiB7CiAgICAg
TG9ja2VyIGxvY2tlciB7IG1fbG9jayB9OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvSGVhcC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVh
cC5jcHAJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hl
YXAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMSwxMyArMjEsMjAgQEAKICNpbmNsdWRlICJjb25m
aWcuaCIKICNpbmNsdWRlICJIZWFwLmgiCiAKKyNpbmNsdWRlICJCaWdJbnRPYmplY3QuaCIKKyNp
bmNsdWRlICJCb29sZWFuT2JqZWN0LmgiCisjaW5jbHVkZSAiQnJhbmRlZFN0cnVjdHVyZS5oIgog
I2luY2x1ZGUgIkJ1aWx0aW5FeGVjdXRhYmxlcy5oIgorI2luY2x1ZGUgIkNsb25lZEFyZ3VtZW50
cy5oIgogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgogI2luY2x1ZGUgIkNvZGVCbG9ja1NldElubGlu
ZXMuaCIKICNpbmNsdWRlICJDb2xsZWN0aW5nU2NvcGUuaCIKICNpbmNsdWRlICJDb25zZXJ2YXRp
dmVSb290cy5oIgorI2luY2x1ZGUgIkRhdGVJbnN0YW5jZS5oIgorI2luY2x1ZGUgIkRlYnVnZ2Vy
U2NvcGUuaCIKICNpbmNsdWRlICJFZGVuR0NBY3Rpdml0eUNhbGxiYWNrLmgiCiAjaW5jbHVkZSAi
RXhjZXB0aW9uLmgiCisjaW5jbHVkZSAiRmFzdE1hbGxvY0FsaWduZWRNZW1vcnlBbGxvY2F0b3Iu
aCIKICNpbmNsdWRlICJGdWxsR0NBY3Rpdml0eUNhbGxiYWNrLmgiCiAjaW5jbHVkZSAiRnVuY3Rp
b25FeGVjdXRhYmxlSW5saW5lcy5oIgogI2luY2x1ZGUgIkdDQWN0aXZpdHlDYWxsYmFjay5oIgpA
QCAtMzUsNiArNDIsNyBAQAogI2luY2x1ZGUgIkdDSW5jb21pbmdSZWZDb3VudGVkU2V0SW5saW5l
cy5oIgogI2luY2x1ZGUgIkdDU2VnbWVudGVkQXJyYXlJbmxpbmVzLmgiCiAjaW5jbHVkZSAiR0NU
eXBlTWFwLmgiCisjaW5jbHVkZSAiR2V0dGVyU2V0dGVyLmgiCiAjaW5jbHVkZSAiSGFzT3duUHJv
cGVydHlDYWNoZS5oIgogI2luY2x1ZGUgIkhlYXBIZWxwZXJQb29sLmgiCiAjaW5jbHVkZSAiSGVh
cEl0ZXJhdGlvblNjb3BlLmgiCkBAIC00MywzNyArNTEsMTE4IEBACiAjaW5jbHVkZSAiSGVhcFZl
cmlmaWVyLmgiCiAjaW5jbHVkZSAiSW5jcmVtZW50YWxTd2VlcGVyLmgiCiAjaW5jbHVkZSAiSW50
ZXJwcmV0ZXIuaCIKKyNpbmNsdWRlICJJbnRsQ29sbGF0b3IuaCIKKyNpbmNsdWRlICJJbnRsRGF0
ZVRpbWVGb3JtYXQuaCIKKyNpbmNsdWRlICJJbnRsRGlzcGxheU5hbWVzLmgiCisjaW5jbHVkZSAi
SW50bExpc3RGb3JtYXQuaCIKKyNpbmNsdWRlICJJbnRsTG9jYWxlLmgiCisjaW5jbHVkZSAiSW50
bE51bWJlckZvcm1hdC5oIgorI2luY2x1ZGUgIkludGxQbHVyYWxSdWxlcy5oIgorI2luY2x1ZGUg
IkludGxSZWxhdGl2ZVRpbWVGb3JtYXQuaCIKKyNpbmNsdWRlICJJbnRsU2VnbWVudEl0ZXJhdG9y
LmgiCisjaW5jbHVkZSAiSW50bFNlZ21lbnRlci5oIgorI2luY2x1ZGUgIkludGxTZWdtZW50cy5o
IgogI2luY2x1ZGUgIklzb0NlbGxTZXRJbmxpbmVzLmgiCisjaW5jbHVkZSAiSXNvSW5saW5lZEhl
YXBDZWxsVHlwZUlubGluZXMuaCIKICNpbmNsdWRlICJKSVRTdHViUm91dGluZVNldC5oIgogI2lu
Y2x1ZGUgIkpJVFdvcmtsaXN0SW5saW5lcy5oIgorI2luY2x1ZGUgIkpTQVBJR2xvYmFsT2JqZWN0
LmgiCisjaW5jbHVkZSAiSlNBUElWYWx1ZVdyYXBwZXIuaCIKKyNpbmNsdWRlICJKU0FQSVdyYXBw
ZXJPYmplY3QuaCIKKyNpbmNsdWRlICJKU0FycmF5LmgiCisjaW5jbHVkZSAiSlNBcnJheUJ1ZmZl
ci5oIgorI2luY2x1ZGUgIkpTQXJyYXlJdGVyYXRvci5oIgorI2luY2x1ZGUgIkpTQXN5bmNHZW5l
cmF0b3IuaCIKKyNpbmNsdWRlICJKU0JpZ0ludC5oIgorI2luY2x1ZGUgIkpTQm91bmRGdW5jdGlv
bi5oIgorI2luY2x1ZGUgIkpTQ2FsbGJhY2tDb25zdHJ1Y3Rvci5oIgorI2luY2x1ZGUgIkpTQ2Fs
bGJhY2tGdW5jdGlvbi5oIgorI2luY2x1ZGUgIkpTQ2FsbGJhY2tPYmplY3QuaCIKKyNpbmNsdWRl
ICJKU0NhbGxlZS5oIgorI2luY2x1ZGUgIkpTQ3VzdG9tR2V0dGVyRnVuY3Rpb24uaCIKKyNpbmNs
dWRlICJKU0N1c3RvbVNldHRlckZ1bmN0aW9uLmgiCisjaW5jbHVkZSAiSlNEYXRhVmlldy5oIgog
I2luY2x1ZGUgIkpTRmluYWxpemF0aW9uUmVnaXN0cnkuaCIKKyNpbmNsdWRlICJKU0Z1bmN0aW9u
LmgiCisjaW5jbHVkZSAiSlNHbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQuaCIKKyNpbmNsdWRlICJK
U0dsb2JhbE9iamVjdC5oIgorI2luY2x1ZGUgIkpTSW5qZWN0ZWRTY3JpcHRIb3N0LmgiCisjaW5j
bHVkZSAiSlNKYXZhU2NyaXB0Q2FsbEZyYW1lLmgiCisjaW5jbHVkZSAiSlNNYXAuaCIKKyNpbmNs
dWRlICJKU01hcEl0ZXJhdG9yLmgiCisjaW5jbHVkZSAiSlNNb2R1bGVOYW1lc3BhY2VPYmplY3Qu
aCIKKyNpbmNsdWRlICJKU01vZHVsZVJlY29yZC5oIgorI2luY2x1ZGUgIkpTTmF0aXZlU3RkRnVu
Y3Rpb24uaCIKKyNpbmNsdWRlICJKU1Byb21pc2UuaCIKKyNpbmNsdWRlICJKU1Byb3BlcnR5TmFt
ZUVudW1lcmF0b3IuaCIKKyNpbmNsdWRlICJKU1Byb3h5LmgiCisjaW5jbHVkZSAiSlNTY3JpcHRG
ZXRjaFBhcmFtZXRlcnMuaCIKKyNpbmNsdWRlICJKU1NjcmlwdEZldGNoZXIuaCIKKyNpbmNsdWRl
ICJKU1NldC5oIgorI2luY2x1ZGUgIkpTU2V0SXRlcmF0b3IuaCIKKyNpbmNsdWRlICJKU1NvdXJj
ZUNvZGUuaCIKKyNpbmNsdWRlICJKU1N0cmluZy5oIgorI2luY2x1ZGUgIkpTU3RyaW5nSXRlcmF0
b3IuaCIKKyNpbmNsdWRlICJKU1RlbXBsYXRlT2JqZWN0RGVzY3JpcHRvci5oIgorI2luY2x1ZGUg
IkpTVG9XYXNtSUNDYWxsZWUuaCIKKyNpbmNsdWRlICJKU1R5cGVkQXJyYXlzLmgiCiAjaW5jbHVk
ZSAiSlNWaXJ0dWFsTWFjaGluZUludGVybmFsLmgiCiAjaW5jbHVkZSAiSlNXZWFrTWFwLmgiCiAj
aW5jbHVkZSAiSlNXZWFrT2JqZWN0UmVmLmgiCiAjaW5jbHVkZSAiSlNXZWFrU2V0LmgiCiAjaW5j
bHVkZSAiSlNXZWJBc3NlbWJseUNvZGVCbG9jay5oIgorI2luY2x1ZGUgIkpTV2ViQXNzZW1ibHlF
eGNlcHRpb24uaCIKKyNpbmNsdWRlICJKU1dlYkFzc2VtYmx5R2xvYmFsLmgiCisjaW5jbHVkZSAi
SlNXZWJBc3NlbWJseUluc3RhbmNlLmgiCisjaW5jbHVkZSAiSlNXZWJBc3NlbWJseU1lbW9yeS5o
IgorI2luY2x1ZGUgIkpTV2ViQXNzZW1ibHlNb2R1bGUuaCIKKyNpbmNsdWRlICJKU1dlYkFzc2Vt
Ymx5VGFibGUuaCIKKyNpbmNsdWRlICJKU1dlYkFzc2VtYmx5VGFnLmgiCisjaW5jbHVkZSAiSlNX
aXRoU2NvcGUuaCIKICNpbmNsdWRlICJNYWNoaW5lU3RhY2tNYXJrZXIuaCIKICNpbmNsdWRlICJN
YXJrU3RhY2tNZXJnaW5nQ29uc3RyYWludC5oIgogI2luY2x1ZGUgIk1hcmtlZEpTVmFsdWVSZWZB
cnJheS5oIgogI2luY2x1ZGUgIk1hcmtlZFNwYWNlSW5saW5lcy5oIgogI2luY2x1ZGUgIk1hcmtp
bmdDb25zdHJhaW50U2V0LmgiCisjaW5jbHVkZSAiTmF0aXZlRXhlY3V0YWJsZS5oIgogI2luY2x1
ZGUgIlByZXZlbnRDb2xsZWN0aW9uU2NvcGUuaCIKKyNpbmNsdWRlICJQcm9ncmFtRXhlY3V0YWJs
ZS5oIgorI2luY2x1ZGUgIlByb3BlcnR5VGFibGUuaCIKKyNpbmNsdWRlICJQcm94eVJldm9rZS5o
IgorI2luY2x1ZGUgIlJlZ0V4cE9iamVjdC5oIgogI2luY2x1ZGUgIlNhbXBsaW5nUHJvZmlsZXIu
aCIKKyNpbmNsdWRlICJTY29wZWRBcmd1bWVudHMuaCIKICNpbmNsdWRlICJTaGFkb3dDaGlja2Vu
LmgiCisjaW5jbHVkZSAiU2hhZG93UmVhbG1PYmplY3QuaCIKICNpbmNsdWRlICJTcGFjZVRpbWVN
dXRhdG9yU2NoZWR1bGVyLmgiCiAjaW5jbHVkZSAiU3RvY2hhc3RpY1NwYWNlVGltZU11dGF0b3JT
Y2hlZHVsZXIuaCIKICNpbmNsdWRlICJTdG9wSWZOZWNlc3NhcnlUaW1lci5oIgorI2luY2x1ZGUg
IlN0cmljdEV2YWxBY3RpdmF0aW9uLmgiCisjaW5jbHVkZSAiU3RyaW5nT2JqZWN0LmgiCisjaW5j
bHVkZSAiU3RydWN0dXJlQ2hhaW4uaCIKICNpbmNsdWRlICJTdWJzcGFjZUlubGluZXMuaCIKICNp
bmNsdWRlICJTdXBlclNhbXBsZXIuaCIKICNpbmNsdWRlICJTd2VlcGluZ1Njb3BlLmgiCisjaW5j
bHVkZSAiU3ltYm9sT2JqZWN0LmgiCiAjaW5jbHVkZSAiU3ltYm9sVGFibGVJbmxpbmVzLmgiCiAj
aW5jbHVkZSAiU3luY2hyb25vdXNTdG9wVGhlV29ybGRNdXRhdG9yU2NoZWR1bGVyLmgiCisjaW5j
bHVkZSAiVGVtcG9yYWxDYWxlbmRhci5oIgorI2luY2x1ZGUgIlRlbXBvcmFsRHVyYXRpb24uaCIK
KyNpbmNsdWRlICJUZW1wb3JhbEluc3RhbnQuaCIKKyNpbmNsdWRlICJUZW1wb3JhbFBsYWluVGlt
ZS5oIgorI2luY2x1ZGUgIlRlbXBvcmFsVGltZVpvbmUuaCIKICNpbmNsdWRlICJUeXBlUHJvZmls
ZXIuaCIKICNpbmNsdWRlICJUeXBlUHJvZmlsZXJMb2cuaCIKKyNpbmNsdWRlICJVbmxpbmtlZEZ1
bmN0aW9uQ29kZUJsb2NrLmgiCisjaW5jbHVkZSAiVW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJs
b2NrLmgiCisjaW5jbHVkZSAiVW5saW5rZWRQcm9ncmFtQ29kZUJsb2NrLmgiCiAjaW5jbHVkZSAi
Vk0uaCIKICNpbmNsdWRlICJWZXJpZmllclNsb3RWaXNpdG9ySW5saW5lcy5oIgogI2luY2x1ZGUg
IldlYWtNYXBJbXBsSW5saW5lcy5oIgogI2luY2x1ZGUgIldlYWtTZXRJbmxpbmVzLmgiCisjaW5j
bHVkZSAiV2ViQXNzZW1ibHlGdW5jdGlvbi5oIgorI2luY2x1ZGUgIldlYkFzc2VtYmx5TW9kdWxl
UmVjb3JkLmgiCisjaW5jbHVkZSAiV2ViQXNzZW1ibHlXcmFwcGVyRnVuY3Rpb24uaCIKICNpbmNs
dWRlIDxhbGdvcml0aG0+CiAjaW5jbHVkZSA8d3RmL0NyeXB0b2dyYXBoaWNhbGx5UmFuZG9tTnVt
YmVyLmg+CiAjaW5jbHVkZSA8d3RmL0xpc3REdW1wLmg+CkBAIC05MCw3ICsxNzksMTMgQEAKICNp
bmNsdWRlIDx3dGYvc3BpL2NvY29hL29iamNTUEkuaD4KICNlbmRpZgogCisjaWYgSlNDX09CSkNf
QVBJX0VOQUJMRUQKKyNpbmNsdWRlICJPYmpDQ2FsbGJhY2tGdW5jdGlvbi5oIgorI2VuZGlmCisK
ICNpZmRlZiBKU0NfR0xJQl9BUElfRU5BQkxFRAorI2luY2x1ZGUgIkpTQVBJV3JhcHBlckdsb2Jh
bE9iamVjdC5oIgorI2luY2x1ZGUgIkpTQ0NhbGxiYWNrRnVuY3Rpb24uaCIKICNpbmNsdWRlICJK
U0NHTGliV3JhcHBlck9iamVjdC5oIgogI2VuZGlmCiAKQEAgLTI4Niw2ICszODEsMTE0IEBAIEhl
YXA6OkhlYXAoVk0mIHZtLCBIZWFwVHlwZSBoZWFwVHlwZSkKICAgICAsIG1faGVscGVyQ2xpZW50
KCZoZWFwSGVscGVyUG9vbCgpKQogICAgICwgbV90aHJlYWRMb2NrKEJveDxMb2NrPjo6Y3JlYXRl
KCkpCiAgICAgLCBtX3RocmVhZENvbmRpdGlvbihBdXRvbWF0aWNUaHJlYWRDb25kaXRpb246OmNy
ZWF0ZSgpKQorCisgICAgLy8gSGVhcENlbGxUeXBlcworICAgICwgYXV4aWxpYXJ5SGVhcENlbGxU
eXBlKENlbGxBdHRyaWJ1dGVzKERvZXNOb3ROZWVkRGVzdHJ1Y3Rpb24sIEhlYXBDZWxsOjpBdXhp
bGlhcnkpKQorICAgICwgaW1tdXRhYmxlQnV0dGVyZmx5SGVhcENlbGxUeXBlKENlbGxBdHRyaWJ1
dGVzKERvZXNOb3ROZWVkRGVzdHJ1Y3Rpb24sIEhlYXBDZWxsOjpKU0NlbGxXaXRoSW5kZXhpbmdI
ZWFkZXIpKQorICAgICwgY2VsbEhlYXBDZWxsVHlwZShDZWxsQXR0cmlidXRlcyhEb2VzTm90TmVl
ZERlc3RydWN0aW9uLCBIZWFwQ2VsbDo6SlNDZWxsKSkKKyAgICAsIGRlc3RydWN0aWJsZUNlbGxI
ZWFwQ2VsbFR5cGUoQ2VsbEF0dHJpYnV0ZXMoTmVlZHNEZXN0cnVjdGlvbiwgSGVhcENlbGw6OkpT
Q2VsbCkpCisvLyAgICAsIGFwaUdsb2JhbE9iamVjdEhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5
cGU6OkFyZ3M8SlNBUElHbG9iYWxPYmplY3Q+KCkpCisvLyAgICAsIGNhbGxiYWNrQ29uc3RydWN0
b3JIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpBcmdzPEpTQ2FsbGJhY2tDb25zdHJ1Y3Rv
cj4oKSkKKy8vICAgICwgY2FsbGJhY2tHbG9iYWxPYmplY3RIZWFwQ2VsbFR5cGUoSXNvSGVhcENl
bGxUeXBlOjpBcmdzPEpTQ2FsbGJhY2tPYmplY3Q8SlNHbG9iYWxPYmplY3Q+PigpKQorLy8gICAg
LCBjYWxsYmFja09iamVjdEhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OkFyZ3M8SlNDYWxs
YmFja09iamVjdDxKU05vbkZpbmFsT2JqZWN0Pj4oKSkKKy8vICAgICwgY3VzdG9tR2V0dGVyRnVu
Y3Rpb25IZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpBcmdzPEpTQ3VzdG9tR2V0dGVyRnVu
Y3Rpb24+KCkpCisvLyAgICAsIGN1c3RvbVNldHRlckZ1bmN0aW9uSGVhcENlbGxUeXBlKElzb0hl
YXBDZWxsVHlwZTo6QXJnczxKU0N1c3RvbVNldHRlckZ1bmN0aW9uPigpKQorLy8gICAgLCBkYXRl
SW5zdGFuY2VIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpBcmdzPERhdGVJbnN0YW5jZT4o
KSkKKy8vICAgICwgZXJyb3JJbnN0YW5jZUhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OkFy
Z3M8RXJyb3JJbnN0YW5jZT4oKSkKKy8vICAgICwgZmluYWxpemF0aW9uUmVnaXN0cnlDZWxsVHlw
ZShJc29IZWFwQ2VsbFR5cGU6OkFyZ3M8SlNGaW5hbGl6YXRpb25SZWdpc3RyeT4oKSkKKy8vICAg
ICwgZ2xvYmFsTGV4aWNhbEVudmlyb25tZW50SGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6
QXJnczxKU0dsb2JhbExleGljYWxFbnZpcm9ubWVudD4oKSkKKy8vICAgICwgZ2xvYmFsT2JqZWN0
SGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6QXJnczxKU0dsb2JhbE9iamVjdD4oKSkKKy8v
ICAgICwgaW5qZWN0ZWRTY3JpcHRIb3N0U3BhY2VIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBl
OjpBcmdzPEluc3BlY3Rvcjo6SlNJbmplY3RlZFNjcmlwdEhvc3Q+KCkpCisvLyAgICAsIGphdmFT
Y3JpcHRDYWxsRnJhbWVIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpBcmdzPEluc3BlY3Rv
cjo6SlNKYXZhU2NyaXB0Q2FsbEZyYW1lPigpKQorLy8gICAgLCBqc01vZHVsZVJlY29yZEhlYXBD
ZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OkFyZ3M8SlNNb2R1bGVSZWNvcmQ+KCkpCisvLyAgICAs
IG1vZHVsZU5hbWVzcGFjZU9iamVjdEhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OkFyZ3M8
SlNNb2R1bGVOYW1lc3BhY2VPYmplY3Q+KCkpCisvLyAgICAsIG5hdGl2ZVN0ZEZ1bmN0aW9uSGVh
cENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6QXJnczxKU05hdGl2ZVN0ZEZ1bmN0aW9uPigpKQor
Ly8gICAgLCB3ZWFrTWFwSGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6QXJnczxKU1dlYWtN
YXA+KCkpCisvLyAgICAsIHdlYWtTZXRIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpBcmdz
PEpTV2Vha1NldD4oKSkKKyNpZiBKU0NfT0JKQ19BUElfRU5BQkxFRAorLy8gICAgLCBhcGlXcmFw
cGVyT2JqZWN0SGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6QXJnczxKU0NhbGxiYWNrT2Jq
ZWN0PEpTQVBJV3JhcHBlck9iamVjdD4+KCkpCisvLyAgICAsIG9iakNDYWxsYmFja0Z1bmN0aW9u
SGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6QXJnczxPYmpDQ2FsbGJhY2tGdW5jdGlvbj4o
KSkKKyNlbmRpZgorI2lmZGVmIEpTQ19HTElCX0FQSV9FTkFCTEVECisvLyAgICAsIGFwaVdyYXBw
ZXJPYmplY3RIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpBcmdzPEpTQ2FsbGJhY2tPYmpl
Y3Q8SlNBUElXcmFwcGVyT2JqZWN0Pj4oKSkKKy8vICAgICwgY2FsbGJhY2tBUElXcmFwcGVyR2xv
YmFsT2JqZWN0SGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6QXJnczxKU0NhbGxiYWNrT2Jq
ZWN0PEpTQVBJV3JhcHBlckdsb2JhbE9iamVjdD4+KCkpCisvLyAgICAsIGpzY0NhbGxiYWNrRnVu
Y3Rpb25IZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpBcmdzPEpTQ0NhbGxiYWNrRnVuY3Rp
b24+KCkpCisjZW5kaWYKKy8vICAgICwgaW50bENvbGxhdG9ySGVhcENlbGxUeXBlKElzb0hlYXBD
ZWxsVHlwZTo6QXJnczxJbnRsQ29sbGF0b3I+KCkpCisvLyAgICAsIGludGxEYXRlVGltZUZvcm1h
dEhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OkFyZ3M8SW50bERhdGVUaW1lRm9ybWF0Pigp
KQorLy8gICAgLCBpbnRsRGlzcGxheU5hbWVzSGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6
QXJnczxJbnRsRGlzcGxheU5hbWVzPigpKQorLy8gICAgLCBpbnRsTGlzdEZvcm1hdEhlYXBDZWxs
VHlwZShJc29IZWFwQ2VsbFR5cGU6OkFyZ3M8SW50bExpc3RGb3JtYXQ+KCkpCisvLyAgICAsIGlu
dGxMb2NhbGVIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpBcmdzPEludGxMb2NhbGU+KCkp
CisvLyAgICAsIGludGxOdW1iZXJGb3JtYXRIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpB
cmdzPEludGxOdW1iZXJGb3JtYXQ+KCkpCisvLyAgICAsIGludGxQbHVyYWxSdWxlc0hlYXBDZWxs
VHlwZShJc29IZWFwQ2VsbFR5cGU6OkFyZ3M8SW50bFBsdXJhbFJ1bGVzPigpKQorLy8gICAgLCBp
bnRsUmVsYXRpdmVUaW1lRm9ybWF0SGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6QXJnczxJ
bnRsUmVsYXRpdmVUaW1lRm9ybWF0PigpKQorLy8gICAgLCBpbnRsU2VnbWVudEl0ZXJhdG9ySGVh
cENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6QXJnczxJbnRsU2VnbWVudEl0ZXJhdG9yPigpKQor
Ly8gICAgLCBpbnRsU2VnbWVudGVySGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6QXJnczxJ
bnRsU2VnbWVudGVyPigpKQorLy8gICAgLCBpbnRsU2VnbWVudHNIZWFwQ2VsbFR5cGUoSXNvSGVh
cENlbGxUeXBlOjpBcmdzPEludGxTZWdtZW50cz4oKSkKKyNpZiBFTkFCTEUoV0VCQVNTRU1CTFkp
CisvLyAgICAsIHdlYkFzc2VtYmx5Q29kZUJsb2NrSGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlw
ZTo6QXJnczxKU1dlYkFzc2VtYmx5Q29kZUJsb2NrPigpKQorLy8gICAgLCB3ZWJBc3NlbWJseUV4
Y2VwdGlvbkhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OkFyZ3M8SlNXZWJBc3NlbWJseUV4
Y2VwdGlvbj4oKSkKKy8vICAgICwgd2ViQXNzZW1ibHlGdW5jdGlvbkhlYXBDZWxsVHlwZShJc29I
ZWFwQ2VsbFR5cGU6OkFyZ3M8V2ViQXNzZW1ibHlGdW5jdGlvbj4oKSkKKy8vICAgICwgd2ViQXNz
ZW1ibHlHbG9iYWxIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpBcmdzPEpTV2ViQXNzZW1i
bHlHbG9iYWw+KCkpCisvLyAgICAsIHdlYkFzc2VtYmx5SW5zdGFuY2VIZWFwQ2VsbFR5cGUoSXNv
SGVhcENlbGxUeXBlOjpBcmdzPEpTV2ViQXNzZW1ibHlJbnN0YW5jZT4oKSkKKy8vICAgICwgd2Vi
QXNzZW1ibHlNZW1vcnlIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpBcmdzPEpTV2ViQXNz
ZW1ibHlNZW1vcnk+KCkpCisvLyAgICAsIHdlYkFzc2VtYmx5TW9kdWxlSGVhcENlbGxUeXBlKElz
b0hlYXBDZWxsVHlwZTo6QXJnczxKU1dlYkFzc2VtYmx5TW9kdWxlPigpKQorLy8gICAgLCB3ZWJB
c3NlbWJseU1vZHVsZVJlY29yZEhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OkFyZ3M8V2Vi
QXNzZW1ibHlNb2R1bGVSZWNvcmQ+KCkpCisvLyAgICAsIHdlYkFzc2VtYmx5VGFibGVIZWFwQ2Vs
bFR5cGUoSXNvSGVhcENlbGxUeXBlOjpBcmdzPEpTV2ViQXNzZW1ibHlUYWJsZT4oKSkKKy8vICAg
ICwgd2ViQXNzZW1ibHlUYWdIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpBcmdzPEpTV2Vi
QXNzZW1ibHlUYWc+KCkpCisjZW5kaWYKKworICAgIC8vIEFsaWduZWRNZW1vcnlBbGxvY2F0b3Jz
CisgICAgLCBmYXN0TWFsbG9jQWxsb2NhdG9yKG1ha2VVbmlxdWU8RmFzdE1hbGxvY0FsaWduZWRN
ZW1vcnlBbGxvY2F0b3I+KCkpCisgICAgLCBwcmltaXRpdmVHaWdhY2FnZUFsbG9jYXRvcihtYWtl
VW5pcXVlPEdpZ2FjYWdlQWxpZ25lZE1lbW9yeUFsbG9jYXRvcj4oR2lnYWNhZ2U6OlByaW1pdGl2
ZSkpCisgICAgLCBqc1ZhbHVlR2lnYWNhZ2VBbGxvY2F0b3IobWFrZVVuaXF1ZTxHaWdhY2FnZUFs
aWduZWRNZW1vcnlBbGxvY2F0b3I+KEdpZ2FjYWdlOjpKU1ZhbHVlKSkKKworICAgIC8vIFN1YnNw
YWNlcworICAgICwgcHJpbWl0aXZlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZSgiUHJpbWl0aXZlIEdp
Z2FjYWdlIEF1eGlsaWFyeSIsICp0aGlzLCBhdXhpbGlhcnlIZWFwQ2VsbFR5cGUsIHByaW1pdGl2
ZUdpZ2FjYWdlQWxsb2NhdG9yLmdldCgpKSAvLyBIYXNoOjB4M2U3Y2Q3NjIKKyAgICAsIGpzVmFs
dWVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlKCJKU1ZhbHVlIEdpZ2FjYWdlIEF1eGlsaWFyeSIsICp0
aGlzLCBhdXhpbGlhcnlIZWFwQ2VsbFR5cGUsIGpzVmFsdWVHaWdhY2FnZUFsbG9jYXRvci5nZXQo
KSkgLy8gSGFzaDoweDI0MWU5NDYKKyAgICAsIGltbXV0YWJsZUJ1dHRlcmZseUpTVmFsdWVHaWdh
Y2FnZUF1eGlsaWFyeVNwYWNlKCJJbW11dGFibGVCdXR0ZXJmbHkgR2lnYWNhZ2UgSlNDZWxsV2l0
aEluZGV4aW5nSGVhZGVyIiwgKnRoaXMsIGltbXV0YWJsZUJ1dHRlcmZseUhlYXBDZWxsVHlwZSwg
anNWYWx1ZUdpZ2FjYWdlQWxsb2NhdG9yLmdldCgpKSAvLyBIYXNoOjB4N2E5NDUzMDAKKyAgICAs
IGNlbGxTcGFjZSgiSlNDZWxsIiwgKnRoaXMsIGNlbGxIZWFwQ2VsbFR5cGUsIGZhc3RNYWxsb2NB
bGxvY2F0b3IuZ2V0KCkpIC8vIEhhc2g6MHhhZGZiNWE3OQorICAgICwgdmFyaWFibGVTaXplZENl
bGxTcGFjZSgiVmFyaWFibGUgU2l6ZWQgSlNDZWxsIiwgKnRoaXMsIGNlbGxIZWFwQ2VsbFR5cGUs
IGZhc3RNYWxsb2NBbGxvY2F0b3IuZ2V0KCkpIC8vIEhhc2g6MHhiY2Q3NjljYworICAgICwgZGVz
dHJ1Y3RpYmxlT2JqZWN0U3BhY2UoIkpTRGVzdHJ1Y3RpYmxlT2JqZWN0IiwgKnRoaXMsIGRlc3Ry
dWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSwgZmFzdE1hbGxvY0FsbG9jYXRvci5nZXQoKSkgLy8g
SGFzaDoweDRmNWVkN2E5CisgICAgLCBhcnJheVNwYWNlIElTT19TVUJTUEFDRV9JTklUKCp0aGlz
LCBjZWxsSGVhcENlbGxUeXBlLCBKU0FycmF5KQorICAgICwgYmlnSW50U3BhY2UgSVNPX1NVQlNQ
QUNFX0lOSVQoKnRoaXMsIGNlbGxIZWFwQ2VsbFR5cGUsIEpTQmlnSW50KQorICAgICwgY2FsbGVl
U3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoKnRoaXMsIGNlbGxIZWFwQ2VsbFR5cGUsIEpTQ2FsbGVl
KQorICAgICwgY2xvbmVkQXJndW1lbnRzU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoKnRoaXMsIGNl
bGxIZWFwQ2VsbFR5cGUsIENsb25lZEFyZ3VtZW50cykKKyAgICAsIGN1c3RvbUdldHRlclNldHRl
clNwYWNlIElTT19TVUJTUEFDRV9JTklUKCp0aGlzLCBjZWxsSGVhcENlbGxUeXBlLCBDdXN0b21H
ZXR0ZXJTZXR0ZXIpCisgICAgLCBkYXRlSW5zdGFuY2VTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVCgq
dGhpcywgZGF0ZUluc3RhbmNlSGVhcENlbGxUeXBlLCBEYXRlSW5zdGFuY2UpCisgICAgLCBkb21B
dHRyaWJ1dGVHZXR0ZXJTZXR0ZXJTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVCgqdGhpcywgY2VsbEhl
YXBDZWxsVHlwZSwgRE9NQXR0cmlidXRlR2V0dGVyU2V0dGVyKQorICAgICwgZXhjZXB0aW9uU3Bh
Y2UgSVNPX1NVQlNQQUNFX0lOSVQoKnRoaXMsIGRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUs
IEV4Y2VwdGlvbikKKyAgICAsIGV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2VTcGFjZSBJU09fU1VC
U1BBQ0VfSU5JVCgqdGhpcywgY2VsbEhlYXBDZWxsVHlwZSwgRXhlY3V0YWJsZVRvQ29kZUJsb2Nr
RWRnZSkgLy8gSGFzaDoweDdiNzMwYjIwCisgICAgLCBmdW5jdGlvblNwYWNlIElTT19TVUJTUEFD
RV9JTklUKCp0aGlzLCBjZWxsSGVhcENlbGxUeXBlLCBKU0Z1bmN0aW9uKSAvLyBIYXNoOjB4ODAw
ZmNhNzIKKyAgICAsIGdldHRlclNldHRlclNwYWNlIElTT19TVUJTUEFDRV9JTklUKCp0aGlzLCBj
ZWxsSGVhcENlbGxUeXBlLCBHZXR0ZXJTZXR0ZXIpCisgICAgLCBnbG9iYWxMZXhpY2FsRW52aXJv
bm1lbnRTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVCgqdGhpcywgZ2xvYmFsTGV4aWNhbEVudmlyb25t
ZW50SGVhcENlbGxUeXBlLCBKU0dsb2JhbExleGljYWxFbnZpcm9ubWVudCkKKyAgICAsIGludGVy
bmFsRnVuY3Rpb25TcGFjZSBJU09fU1VCU1BBQ0VfSU5JVCgqdGhpcywgY2VsbEhlYXBDZWxsVHlw
ZSwgSW50ZXJuYWxGdW5jdGlvbikgLy8gSGFzaDoweGY4NDVjNDY0CisgICAgLCBqc1Byb3h5U3Bh
Y2UgSVNPX1NVQlNQQUNFX0lOSVQoKnRoaXMsIGNlbGxIZWFwQ2VsbFR5cGUsIEpTUHJveHkpCisg
ICAgLCBuYXRpdmVFeGVjdXRhYmxlU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoKnRoaXMsIGRlc3Ry
dWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUsIE5hdGl2ZUV4ZWN1dGFibGUpIC8vIEhhc2g6MHg2NzU2
N2Y5NQorICAgICwgbnVtYmVyT2JqZWN0U3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoKnRoaXMsIGNl
bGxIZWFwQ2VsbFR5cGUsIE51bWJlck9iamVjdCkKKyAgICAsIHBsYWluT2JqZWN0U3BhY2UgSVNP
X1NVQlNQQUNFX0lOSVQoKnRoaXMsIGNlbGxIZWFwQ2VsbFR5cGUsIEpTTm9uRmluYWxPYmplY3Qp
IC8vIE1haW5seSB1c2VkIGZvciBwcm90b3R5cGVzLgorICAgICwgcHJvbWlzZVNwYWNlIElTT19T
VUJTUEFDRV9JTklUKCp0aGlzLCBjZWxsSGVhcENlbGxUeXBlLCBKU1Byb21pc2UpCisgICAgLCBw
cm9wZXJ0eU5hbWVFbnVtZXJhdG9yU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoKnRoaXMsIGNlbGxI
ZWFwQ2VsbFR5cGUsIEpTUHJvcGVydHlOYW1lRW51bWVyYXRvcikKKyAgICAsIHByb3BlcnR5VGFi
bGVTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVCgqdGhpcywgZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxs
VHlwZSwgUHJvcGVydHlUYWJsZSkgLy8gSGFzaDoweGM2YmM5ZjEyCisgICAgLCByZWdFeHBTcGFj
ZSBJU09fU1VCU1BBQ0VfSU5JVCgqdGhpcywgZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZSwg
UmVnRXhwKQorICAgICwgcmVnRXhwT2JqZWN0U3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoKnRoaXMs
IGNlbGxIZWFwQ2VsbFR5cGUsIFJlZ0V4cE9iamVjdCkKKyAgICAsIHJvcGVTdHJpbmdTcGFjZSBJ
U09fU1VCU1BBQ0VfSU5JVCgqdGhpcywgc3RyaW5nSGVhcENlbGxUeXBlLCBKU1JvcGVTdHJpbmcp
CisgICAgLCBzY29wZWRBcmd1bWVudHNTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVCgqdGhpcywgY2Vs
bEhlYXBDZWxsVHlwZSwgU2NvcGVkQXJndW1lbnRzKQorICAgICwgc3BhcnNlQXJyYXlWYWx1ZU1h
cFNwYWNlIElTT19TVUJTUEFDRV9JTklUKCp0aGlzLCBkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxU
eXBlLCBTcGFyc2VBcnJheVZhbHVlTWFwKQorICAgICwgc3RyaW5nU3BhY2UgSVNPX1NVQlNQQUNF
X0lOSVQoKnRoaXMsIHN0cmluZ0hlYXBDZWxsVHlwZSwgSlNTdHJpbmcpIC8vIEhhc2g6MHg5MGNm
NzU4ZgorICAgICwgc3RyaW5nT2JqZWN0U3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoKnRoaXMsIGNl
bGxIZWFwQ2VsbFR5cGUsIFN0cmluZ09iamVjdCkKKyAgICAsIHN0cnVjdHVyZUNoYWluU3BhY2Ug
SVNPX1NVQlNQQUNFX0lOSVQoKnRoaXMsIGNlbGxIZWFwQ2VsbFR5cGUsIFN0cnVjdHVyZUNoYWlu
KQorICAgICwgc3RydWN0dXJlUmFyZURhdGFTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVCgqdGhpcywg
ZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZSwgU3RydWN0dXJlUmFyZURhdGEpIC8vIEhhc2g6
MHhhY2E0ZTYyZAorICAgICwgc3RydWN0dXJlU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoKnRoaXMs
IGRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUsIFN0cnVjdHVyZSkgLy8gSGFzaDoweDFmMWJj
ZGNhCisgICAgLCBicmFuZGVkU3RydWN0dXJlU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoKnRoaXMs
IGRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUsIEJyYW5kZWRTdHJ1Y3R1cmUpCisgICAgLCBz
eW1ib2xUYWJsZVNwYWNlIElTT19TVUJTUEFDRV9JTklUKCp0aGlzLCBkZXN0cnVjdGlibGVDZWxs
SGVhcENlbGxUeXBlLCBTeW1ib2xUYWJsZSkgLy8gSGFzaDoweGM1MjE1YWZkCisgICAgLCBleGVj
dXRhYmxlVG9Db2RlQmxvY2tFZGdlc1dpdGhDb25zdHJhaW50cyhleGVjdXRhYmxlVG9Db2RlQmxv
Y2tFZGdlU3BhY2UpCisgICAgLCBleGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlc1dpdGhGaW5hbGl6
ZXJzKGV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2VTcGFjZSkKKyAgICAsIGNvZGVCbG9ja1NwYWNl
IElTT19TVUJTUEFDRV9JTklUKCp0aGlzLCBkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlLCBD
b2RlQmxvY2spIC8vIEhhc2g6MHg3N2U2NmVjOQorICAgICwgZnVuY3Rpb25FeGVjdXRhYmxlU3Bh
Y2UgSVNPX1NVQlNQQUNFX0lOSVQoKnRoaXMsIGRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUs
IEZ1bmN0aW9uRXhlY3V0YWJsZSkgLy8gSGFzaDoweDVkMTU4ZjMKKyAgICAsIHByb2dyYW1FeGVj
dXRhYmxlU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoKnRoaXMsIGRlc3RydWN0aWJsZUNlbGxIZWFw
Q2VsbFR5cGUsIFByb2dyYW1FeGVjdXRhYmxlKSAvLyBIYXNoOjB4NTI3Yzc3ZTcKKyAgICAsIHVu
bGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoKnRoaXMsIGRl
c3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUsIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKSAv
LyBIYXNoOjB4ZjZiODI4ZDkKKwogewogICAgIG1fd29ybGRTdGF0ZS5zdG9yZSgwKTsKIApAQCAt
NTc5LDMxICs3ODIsMzEgQEAgdm9pZCBIZWFwOjpmaW5hbGl6ZVVuY29uZGl0aW9uYWxGaW5hbGl6
ZQogewogICAgIFZNJiB2bSA9IHRoaXMtPnZtKCk7CiAgICAgdm0uYnVpbHRpbkV4ZWN1dGFibGVz
KCktPmZpbmFsaXplVW5jb25kaXRpb25hbGx5KCk7Ci0gICAgZmluYWxpemVNYXJrZWRVbmNvbmRp
dGlvbmFsRmluYWxpemVyczxGdW5jdGlvbkV4ZWN1dGFibGU+KHZtLmZ1bmN0aW9uRXhlY3V0YWJs
ZVNwYWNlLnNwYWNlKTsKLSAgICBmaW5hbGl6ZU1hcmtlZFVuY29uZGl0aW9uYWxGaW5hbGl6ZXJz
PFN5bWJvbFRhYmxlPih2bS5zeW1ib2xUYWJsZVNwYWNlKTsKLSAgICBmaW5hbGl6ZU1hcmtlZFVu
Y29uZGl0aW9uYWxGaW5hbGl6ZXJzPEV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2U+KHZtLmV4ZWN1
dGFibGVUb0NvZGVCbG9ja0VkZ2VzV2l0aEZpbmFsaXplcnMpOyAvLyBXZSBydW4gdGhpcyBiZWZv
cmUgQ29kZUJsb2NrJ3MgdW5jb25kaXRpb25hbCBmaW5hbGl6ZXIgc2luY2UgQ29kZUJsb2NrIGxv
b2tzIGF0IHRoZSBvd25lciBleGVjdXRhYmxlJ3MgaW5zdGFsbGVkIENvZGVCbG9jayBpbiBpdHMg
ZmluYWxpemVVbmNvbmRpdGlvbmFsbHkuCi0gICAgdm0uZm9yRWFjaENvZGVCbG9ja1NwYWNlKAor
ICAgIGZpbmFsaXplTWFya2VkVW5jb25kaXRpb25hbEZpbmFsaXplcnM8RnVuY3Rpb25FeGVjdXRh
YmxlPihmdW5jdGlvbkV4ZWN1dGFibGVTcGFjZS5zcGFjZSk7CisgICAgZmluYWxpemVNYXJrZWRV
bmNvbmRpdGlvbmFsRmluYWxpemVyczxTeW1ib2xUYWJsZT4oc3ltYm9sVGFibGVTcGFjZSk7Cisg
ICAgZmluYWxpemVNYXJrZWRVbmNvbmRpdGlvbmFsRmluYWxpemVyczxFeGVjdXRhYmxlVG9Db2Rl
QmxvY2tFZGdlPihleGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlc1dpdGhGaW5hbGl6ZXJzKTsgLy8g
V2UgcnVuIHRoaXMgYmVmb3JlIENvZGVCbG9jaydzIHVuY29uZGl0aW9uYWwgZmluYWxpemVyIHNp
bmNlIENvZGVCbG9jayBsb29rcyBhdCB0aGUgb3duZXIgZXhlY3V0YWJsZSdzIGluc3RhbGxlZCBD
b2RlQmxvY2sgaW4gaXRzIGZpbmFsaXplVW5jb25kaXRpb25hbGx5LgorICAgIGZvckVhY2hDb2Rl
QmxvY2tTcGFjZSgKICAgICAgICAgWyZdIChhdXRvJiBzcGFjZSkgewogICAgICAgICAgICAgdGhp
cy0+ZmluYWxpemVNYXJrZWRVbmNvbmRpdGlvbmFsRmluYWxpemVyczxDb2RlQmxvY2s+KHNwYWNl
LnNldCk7CiAgICAgICAgIH0pOwotICAgIGZpbmFsaXplTWFya2VkVW5jb25kaXRpb25hbEZpbmFs
aXplcnM8U3RydWN0dXJlUmFyZURhdGE+KHZtLnN0cnVjdHVyZVJhcmVEYXRhU3BhY2UpOwotICAg
IGZpbmFsaXplTWFya2VkVW5jb25kaXRpb25hbEZpbmFsaXplcnM8VW5saW5rZWRGdW5jdGlvbkV4
ZWN1dGFibGU+KHZtLnVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlU3BhY2Uuc2V0KTsKLSAgICBp
ZiAodm0ubV93ZWFrU2V0U3BhY2UpCi0gICAgICAgIGZpbmFsaXplTWFya2VkVW5jb25kaXRpb25h
bEZpbmFsaXplcnM8SlNXZWFrU2V0Pigqdm0ubV93ZWFrU2V0U3BhY2UpOwotICAgIGlmICh2bS5t
X3dlYWtNYXBTcGFjZSkKLSAgICAgICAgZmluYWxpemVNYXJrZWRVbmNvbmRpdGlvbmFsRmluYWxp
emVyczxKU1dlYWtNYXA+KCp2bS5tX3dlYWtNYXBTcGFjZSk7Ci0gICAgaWYgKHZtLm1fd2Vha09i
amVjdFJlZlNwYWNlKQotICAgICAgICBmaW5hbGl6ZU1hcmtlZFVuY29uZGl0aW9uYWxGaW5hbGl6
ZXJzPEpTV2Vha09iamVjdFJlZj4oKnZtLm1fd2Vha09iamVjdFJlZlNwYWNlKTsKLSAgICBpZiAo
dm0ubV9lcnJvckluc3RhbmNlU3BhY2UpCi0gICAgICAgIGZpbmFsaXplTWFya2VkVW5jb25kaXRp
b25hbEZpbmFsaXplcnM8RXJyb3JJbnN0YW5jZT4oKnZtLm1fZXJyb3JJbnN0YW5jZVNwYWNlKTsK
KyAgICBmaW5hbGl6ZU1hcmtlZFVuY29uZGl0aW9uYWxGaW5hbGl6ZXJzPFN0cnVjdHVyZVJhcmVE
YXRhPihzdHJ1Y3R1cmVSYXJlRGF0YVNwYWNlKTsKKyAgICBmaW5hbGl6ZU1hcmtlZFVuY29uZGl0
aW9uYWxGaW5hbGl6ZXJzPFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlPih1bmxpbmtlZEZ1bmN0
aW9uRXhlY3V0YWJsZVNwYWNlLnNldCk7CisgICAgaWYgKG1fd2Vha1NldFNwYWNlKQorICAgICAg
ICBmaW5hbGl6ZU1hcmtlZFVuY29uZGl0aW9uYWxGaW5hbGl6ZXJzPEpTV2Vha1NldD4oKm1fd2Vh
a1NldFNwYWNlKTsKKyAgICBpZiAobV93ZWFrTWFwU3BhY2UpCisgICAgICAgIGZpbmFsaXplTWFy
a2VkVW5jb25kaXRpb25hbEZpbmFsaXplcnM8SlNXZWFrTWFwPigqbV93ZWFrTWFwU3BhY2UpOwor
ICAgIGlmIChtX3dlYWtPYmplY3RSZWZTcGFjZSkKKyAgICAgICAgZmluYWxpemVNYXJrZWRVbmNv
bmRpdGlvbmFsRmluYWxpemVyczxKU1dlYWtPYmplY3RSZWY+KCptX3dlYWtPYmplY3RSZWZTcGFj
ZSk7CisgICAgaWYgKG1fZXJyb3JJbnN0YW5jZVNwYWNlKQorICAgICAgICBmaW5hbGl6ZU1hcmtl
ZFVuY29uZGl0aW9uYWxGaW5hbGl6ZXJzPEVycm9ySW5zdGFuY2U+KCptX2Vycm9ySW5zdGFuY2VT
cGFjZSk7CiAKICAgICAvLyBGaW5hbGl6YXRpb25SZWdpc3RyaWVzIGN1cnJlbnRseSByZWx5IG9u
IHNlcmlhbCBmaW5hbGl6YXRpb24gYmVjYXVzZSB0aGV5IGNhbiBwb3N0IHRhc2tzIHRvIHRoZSBk
ZWZlcnJlZFdvcmtUaW1lciwgd2hpY2ggbm9ybWFsbHkgZXhwZWN0cyB0YXNrcyB0byBvbmx5IGJl
IHBvc3RlZCBieSB0aGUgQVBJIGxvY2sgaG9sZGVyLgotICAgIGlmICh2bS5tX2ZpbmFsaXphdGlv
blJlZ2lzdHJ5U3BhY2UpCi0gICAgICAgIGZpbmFsaXplTWFya2VkVW5jb25kaXRpb25hbEZpbmFs
aXplcnM8SlNGaW5hbGl6YXRpb25SZWdpc3RyeT4oKnZtLm1fZmluYWxpemF0aW9uUmVnaXN0cnlT
cGFjZSk7CisgICAgaWYgKG1fZmluYWxpemF0aW9uUmVnaXN0cnlTcGFjZSkKKyAgICAgICAgZmlu
YWxpemVNYXJrZWRVbmNvbmRpdGlvbmFsRmluYWxpemVyczxKU0ZpbmFsaXphdGlvblJlZ2lzdHJ5
PigqbV9maW5hbGl6YXRpb25SZWdpc3RyeVNwYWNlKTsKIAogI2lmIEVOQUJMRShXRUJBU1NFTUJM
WSkKLSAgICBpZiAodm0ubV93ZWJBc3NlbWJseUNvZGVCbG9ja1NwYWNlKQotICAgICAgICBmaW5h
bGl6ZU1hcmtlZFVuY29uZGl0aW9uYWxGaW5hbGl6ZXJzPEpTV2ViQXNzZW1ibHlDb2RlQmxvY2s+
KCp2bS5tX3dlYkFzc2VtYmx5Q29kZUJsb2NrU3BhY2UpOworICAgIGlmIChtX3dlYkFzc2VtYmx5
Q29kZUJsb2NrU3BhY2UpCisgICAgICAgIGZpbmFsaXplTWFya2VkVW5jb25kaXRpb25hbEZpbmFs
aXplcnM8SlNXZWJBc3NlbWJseUNvZGVCbG9jaz4oKm1fd2ViQXNzZW1ibHlDb2RlQmxvY2tTcGFj
ZSk7CiAjZW5kaWYKIH0KIApAQCAtOTA1LDcgKzExMDgsNyBAQCB2b2lkIEhlYXA6OmRlbGV0ZUFs
bENvZGVCbG9ja3MoRGVsZXRlQWxsCiAKICAgICBjb21wbGV0ZUFsbEpJVFBsYW5zKCk7CiAKLSAg
ICB2bS5mb3JFYWNoU2NyaXB0RXhlY3V0YWJsZVNwYWNlKAorICAgIGZvckVhY2hTY3JpcHRFeGVj
dXRhYmxlU3BhY2UoCiAgICAgICAgIFsmXSAoYXV0byYgc3BhY2VBbmRTZXQpIHsKICAgICAgICAg
ICAgIEhlYXBJdGVyYXRpb25TY29wZSBoZWFwSXRlcmF0aW9uU2NvcGUoKnRoaXMpOwogICAgICAg
ICAgICAgYXV0byYgc2V0ID0gc3BhY2VBbmRTZXQuc2V0OwpAQCAtOTI0LDggKzExMjcsOCBAQCB2
b2lkIEhlYXA6OmRlbGV0ZUFsbENvZGVCbG9ja3MoRGVsZXRlQWxsCiAgICAgICAgIC8vIHBvaW50
cyBpbnRvIGEgQ29kZUJsb2NrIHRoYXQgY291bGQgYmUgZGVhZC4gVGhlIElDIHdpbGwgc3RpbGwg
c3VjY2VlZCBiZWNhdXNlCiAgICAgICAgIC8vIGl0IHVzZXMgYSBjYWxsZWUgY2hlY2ssIGJ1dCB0
aGVuIGl0IHdpbGwgY2FsbCBpbnRvIGRlYWQgY29kZS4KICAgICAgICAgSGVhcEl0ZXJhdGlvblNj
b3BlIGhlYXBJdGVyYXRpb25TY29wZSgqdGhpcyk7Ci0gICAgICAgIGlmICh2bS5tX3dlYkFzc2Vt
Ymx5Q29kZUJsb2NrU3BhY2UpIHsKLSAgICAgICAgICAgIHZtLm1fd2ViQXNzZW1ibHlDb2RlQmxv
Y2tTcGFjZS0+Zm9yRWFjaExpdmVDZWxsKFsmXSAoSGVhcENlbGwqIGNlbGwsIEhlYXBDZWxsOjpL
aW5kIGtpbmQpIHsKKyAgICAgICAgaWYgKG1fd2ViQXNzZW1ibHlDb2RlQmxvY2tTcGFjZSkgewor
ICAgICAgICAgICAgbV93ZWJBc3NlbWJseUNvZGVCbG9ja1NwYWNlLT5mb3JFYWNoTGl2ZUNlbGwo
WyZdIChIZWFwQ2VsbCogY2VsbCwgSGVhcENlbGw6OktpbmQga2luZCkgewogICAgICAgICAgICAg
ICAgIEFTU0VSVF9VTlVTRUQoa2luZCwga2luZCA9PSBIZWFwQ2VsbDo6SlNDZWxsKTsKICAgICAg
ICAgICAgICAgICBKU1dlYkFzc2VtYmx5Q29kZUJsb2NrKiBjb2RlQmxvY2sgPSBzdGF0aWNfY2Fz
dDxKU1dlYkFzc2VtYmx5Q29kZUJsb2NrKj4oY2VsbCk7CiAgICAgICAgICAgICAgICAgY29kZUJs
b2NrLT5jbGVhckpTQ2FsbElDcyh2bSk7CkBAIC05NDYsNyArMTE0OSw3IEBAIHZvaWQgSGVhcDo6
ZGVsZXRlQWxsVW5saW5rZWRDb2RlQmxvY2tzKEQKICAgICBSRUxFQVNFX0FTU0VSVCghbV9jb2xs
ZWN0aW9uU2NvcGUpOwogCiAgICAgSGVhcEl0ZXJhdGlvblNjb3BlIGhlYXBJdGVyYXRpb25TY29w
ZSgqdGhpcyk7Ci0gICAgdm0udW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGVTcGFjZS5zZXQuZm9y
RWFjaExpdmVDZWxsKAorICAgIHVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlU3BhY2Uuc2V0LmZv
ckVhY2hMaXZlQ2VsbCgKICAgICAgICAgWyZdIChIZWFwQ2VsbCogY2VsbCwgSGVhcENlbGw6Oktp
bmQpIHsKICAgICAgICAgICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxl
ID0gc3RhdGljX2Nhc3Q8VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqPihjZWxsKTsKICAgICAg
ICAgICAgIGV4ZWN1dGFibGUtPmNsZWFyQ29kZSh2bSk7CkBAIC05NTUsMTAgKzExNTgsMTAgQEAg
dm9pZCBIZWFwOjpkZWxldGVBbGxVbmxpbmtlZENvZGVCbG9ja3MoRAogCiB2b2lkIEhlYXA6OmRl
bGV0ZVVubWFya2VkQ29tcGlsZWRDb2RlKCkKIHsKLSAgICB2bSgpLmZvckVhY2hTY3JpcHRFeGVj
dXRhYmxlU3BhY2UoW10gKGF1dG8mIHNwYWNlKSB7IHNwYWNlLnNwYWNlLnN3ZWVwKCk7IH0pOwor
ICAgIGZvckVhY2hTY3JpcHRFeGVjdXRhYmxlU3BhY2UoW10gKGF1dG8mIHNwYWNlKSB7IHNwYWNl
LnNwYWNlLnN3ZWVwMygpOyB9KTsKICAgICAvLyBTd2VlcGluZyBtdXN0IG9jY3VyIGJlZm9yZSBk
ZWxldGluZyBzdHVicywgb3RoZXJ3aXNlIHRoZSBzdHVicyBtaWdodCBzdGlsbCB0aGluayB0aGV5
J3JlIGFsaXZlIGFzIHRoZXkgZ2V0IGRlbGV0ZWQuCiAgICAgLy8gQW5kIENvZGVCbG9jayBkZXN0
cnVjdG9yIGlzIGFzc3VtaW5nIHRoYXQgQ29kZUJsb2NrIGdldHMgZGVzdHJveWVkIGJlZm9yZSBV
bmxpbmtlZENvZGVCbG9jayBnZXRzIGRlc3Ryb3llZC4KLSAgICB2bSgpLmZvckVhY2hDb2RlQmxv
Y2tTcGFjZShbXSAoYXV0byYgc3BhY2UpIHsgc3BhY2Uuc3BhY2Uuc3dlZXAoKTsgfSk7CisgICAg
Zm9yRWFjaENvZGVCbG9ja1NwYWNlKFtdIChhdXRvJiBzcGFjZSkgeyBzcGFjZS5zcGFjZS5zd2Vl
cDMoKTsgfSk7CiAgICAgbV9qaXRTdHViUm91dGluZXMtPmRlbGV0ZVVubWFya2VkSmV0dGlzb25l
ZFN0dWJSb3V0aW5lcygpOwogfQogCkBAIC0yMTAzLDggKzIzMDYsOCBAQCB2b2lkIEhlYXA6OnN3
ZWVwSW5GaW5hbGl6ZSgpCiAgICAgbV9vYmplY3RTcGFjZS5zd2VlcFByZWNpc2VBbGxvY2F0aW9u
cygpOwogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKICAgICAvLyBXZSBob2xkIG9udG8gYSBsb3Qg
b2YgbWVtb3J5LCBzbyBpdCBtYWtlcyBhIGxvdCBvZiBzZW5zZSB0byBiZSBzd2VwdCBlYWdlcmx5
LgotICAgIGlmICh2bSgpLm1fd2ViQXNzZW1ibHlNZW1vcnlTcGFjZSkKLSAgICAgICAgdm0oKS5t
X3dlYkFzc2VtYmx5TWVtb3J5U3BhY2UtPnN3ZWVwKCk7CisgICAgaWYgKG1fd2ViQXNzZW1ibHlN
ZW1vcnlTcGFjZSkKKyAgICAgICAgbV93ZWJBc3NlbWJseU1lbW9yeVNwYWNlLT5zd2VlcDMoKTsK
ICNlbmRpZgogfQogCkBAIC0yODA1LDcgKzMwMDgsNyBAQCB2b2lkIEhlYXA6OmFkZENvcmVDb25z
dHJhaW50cygpCiAgICAgICAgICJPIiwgIk91dHB1dCIsCiAgICAgICAgIE1BS0VfTUFSS0lOR19D
T05TVFJBSU5UX0VYRUNVVE9SX1BBSVIoKFtdIChhdXRvJiB2aXNpdG9yKSB7CiAgICAgICAgICAg
ICB1c2luZyBWaXNpdG9yID0gZGVjbHR5cGUodmlzaXRvcik7Ci0gICAgICAgICAgICBWTSYgdm0g
PSB2aXNpdG9yLnZtKCk7CisgICAgICAgICAgICBIZWFwKiBoZWFwID0gdmlzaXRvci5oZWFwKCk7
CiAKICAgICAgICAgICAgIC8vIFRoZSBgdmlzaXRvcjJgIGFyZ3VtZW50IGlzIHN0cmFuZ2VseSBu
YW1lZCBiZWNhdXNlIHRoZSBXaW5DYWlybyBwb3J0CiAgICAgICAgICAgICAvLyBnZXRzIGNvbmZ1
c2VkICBhbmQgdGhpbmtzIHdlJ3JlIHRyeWluZyB0byBjYXB0dXJlIHRoZSBvdXRlciB2aXNpdG9y
CkBAIC0yODI0LDExICszMDI3LDExIEBAIHZvaWQgSGVhcDo6YWRkQ29yZUNvbnN0cmFpbnRzKCkK
IAogICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIFNldFJvb3RNYXJrUmVhc29uU2NvcGUg
cm9vdFNjb3BlKHZpc2l0b3IsIFJvb3RNYXJrUmVhc29uOjpFeGVjdXRhYmxlVG9Db2RlQmxvY2tF
ZGdlcyk7Ci0gICAgICAgICAgICAgICAgYWRkKHZtLmV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2Vz
V2l0aENvbnN0cmFpbnRzKTsKKyAgICAgICAgICAgICAgICBhZGQoaGVhcC0+ZXhlY3V0YWJsZVRv
Q29kZUJsb2NrRWRnZXNXaXRoQ29uc3RyYWludHMpOwogICAgICAgICAgICAgfQotICAgICAgICAg
ICAgaWYgKHZtLm1fd2Vha01hcFNwYWNlKSB7CisgICAgICAgICAgICBpZiAoaGVhcC0+bV93ZWFr
TWFwU3BhY2UpIHsKICAgICAgICAgICAgICAgICBTZXRSb290TWFya1JlYXNvblNjb3BlIHJvb3RT
Y29wZSh2aXNpdG9yLCBSb290TWFya1JlYXNvbjo6V2Vha01hcFNwYWNlKTsKLSAgICAgICAgICAg
ICAgICBhZGQoKnZtLm1fd2Vha01hcFNwYWNlKTsKKyAgICAgICAgICAgICAgICBhZGQoKmhlYXAt
Pm1fd2Vha01hcFNwYWNlKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfSkpLAogICAgICAgICBD
b25zdHJhaW50Vm9sYXRpbGl0eTo6R3JleWVkQnlNYXJraW5nLApAQCAtMzA2Miw0ICszMjY1LDEz
NSBAQCB2b2lkIEhlYXA6OnZlcmlmeUdDKCkKICAgICBtX3ZlcmlmaWVyU2xvdFZpc2l0b3IgPSBu
dWxscHRyOwogfQogCisjZGVmaW5lIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJf
U0xPVyhuYW1lLCBoZWFwQ2VsbFR5cGUsIHR5cGUpIFwKKyAgICBJc29TdWJzcGFjZSogSGVhcDo6
bmFtZSMjU2xvdygpIFwKKyAgICB7IFwKKyAgICAgICAgQVNTRVJUKCFtXyMjbmFtZSk7IFwKKyAg
ICAgICAgYXV0byBzcGFjZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9J
TklUKCp0aGlzLCBoZWFwQ2VsbFR5cGUsIHR5cGUpOyBcCisgICAgICAgIFdURjo6c3RvcmVTdG9y
ZUZlbmNlKCk7IFwKKyAgICAgICAgbV8jI25hbWUgPSBXVEZNb3ZlKHNwYWNlKTsgXAorICAgICAg
ICByZXR1cm4gbV8jI25hbWUuZ2V0KCk7IFwKKyAgICB9CisKKworRFlOQU1JQ19JU09fU1VCU1BB
Q0VfREVGSU5FX01FTUJFUl9TTE9XKGFwaUdsb2JhbE9iamVjdFNwYWNlLCBhcGlHbG9iYWxPYmpl
Y3RIZWFwQ2VsbFR5cGUsIEpTQVBJR2xvYmFsT2JqZWN0KQorRFlOQU1JQ19JU09fU1VCU1BBQ0Vf
REVGSU5FX01FTUJFUl9TTE9XKGFwaVZhbHVlV3JhcHBlclNwYWNlLCBjZWxsSGVhcENlbGxUeXBl
LCBKU0FQSVZhbHVlV3JhcHBlcikKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJf
U0xPVyhhcnJheUJ1ZmZlclNwYWNlLCBjZWxsSGVhcENlbGxUeXBlLCBKU0FycmF5QnVmZmVyKQor
RFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGFycmF5SXRlcmF0b3JTcGFj
ZSwgY2VsbEhlYXBDZWxsVHlwZSwgSlNBcnJheUl0ZXJhdG9yKQorRFlOQU1JQ19JU09fU1VCU1BB
Q0VfREVGSU5FX01FTUJFUl9TTE9XKGFzeW5jR2VuZXJhdG9yU3BhY2UsIGNlbGxIZWFwQ2VsbFR5
cGUsIEpTQXN5bmNHZW5lcmF0b3IpCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVS
X1NMT1coYmlnSW50NjRBcnJheVNwYWNlLCBjZWxsSGVhcENlbGxUeXBlLCBKU0JpZ0ludDY0QXJy
YXkpCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coYmlnSW50T2JqZWN0
U3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUsIEJpZ0ludE9iamVjdCkKK0RZTkFNSUNfSVNPX1NVQlNQ
QUNFX0RFRklORV9NRU1CRVJfU0xPVyhiaWdVaW50NjRBcnJheVNwYWNlLCBjZWxsSGVhcENlbGxU
eXBlLCBKU0JpZ1VpbnQ2NEFycmF5KQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJF
Ul9TTE9XKGJvb2xlYW5PYmplY3RTcGFjZSwgY2VsbEhlYXBDZWxsVHlwZSwgQm9vbGVhbk9iamVj
dCkKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhib3VuZEZ1bmN0aW9u
U3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUsIEpTQm91bmRGdW5jdGlvbikgLy8gSGFzaDoweGQ3OTE2
ZDQxCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coY2FsbGJhY2tDb25z
dHJ1Y3RvclNwYWNlLCBjYWxsYmFja0NvbnN0cnVjdG9ySGVhcENlbGxUeXBlLCBKU0NhbGxiYWNr
Q29uc3RydWN0b3IpCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coY2Fs
bGJhY2tHbG9iYWxPYmplY3RTcGFjZSwgY2FsbGJhY2tHbG9iYWxPYmplY3RIZWFwQ2VsbFR5cGUs
IEpTQ2FsbGJhY2tPYmplY3Q8SlNHbG9iYWxPYmplY3Q+KQorRFlOQU1JQ19JU09fU1VCU1BBQ0Vf
REVGSU5FX01FTUJFUl9TTE9XKGNhbGxiYWNrRnVuY3Rpb25TcGFjZSwgY2VsbEhlYXBDZWxsVHlw
ZSwgSlNDYWxsYmFja0Z1bmN0aW9uKSAvLyBIYXNoOjB4ZTc2NDhlYmMKK0RZTkFNSUNfSVNPX1NV
QlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhjYWxsYmFja09iamVjdFNwYWNlLCBjYWxsYmFja09i
amVjdEhlYXBDZWxsVHlwZSwgSlNDYWxsYmFja09iamVjdDxKU05vbkZpbmFsT2JqZWN0PikKK0RZ
TkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhjdXN0b21HZXR0ZXJGdW5jdGlv
blNwYWNlLCBjdXN0b21HZXR0ZXJGdW5jdGlvbkhlYXBDZWxsVHlwZSwgSlNDdXN0b21HZXR0ZXJG
dW5jdGlvbikKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhjdXN0b21T
ZXR0ZXJGdW5jdGlvblNwYWNlLCBjdXN0b21TZXR0ZXJGdW5jdGlvbkhlYXBDZWxsVHlwZSwgSlND
dXN0b21TZXR0ZXJGdW5jdGlvbikKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJf
U0xPVyhkYXRhVmlld1NwYWNlLCBjZWxsSGVhcENlbGxUeXBlLCBKU0RhdGFWaWV3KQorRFlOQU1J
Q19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGRlYnVnZ2VyU2NvcGVTcGFjZSwgY2Vs
bEhlYXBDZWxsVHlwZSwgRGVidWdnZXJTY29wZSkKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklO
RV9NRU1CRVJfU0xPVyhlcnJvckluc3RhbmNlU3BhY2UsIGVycm9ySW5zdGFuY2VIZWFwQ2VsbFR5
cGUsIEVycm9ySW5zdGFuY2UpIC8vIEhhc2g6MHgzZjQwZDRhCitEWU5BTUlDX0lTT19TVUJTUEFD
RV9ERUZJTkVfTUVNQkVSX1NMT1coZmxvYXQzMkFycmF5U3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUs
IEpTRmxvYXQzMkFycmF5KQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9X
KGZsb2F0NjRBcnJheVNwYWNlLCBjZWxsSGVhcENlbGxUeXBlLCBKU0Zsb2F0NjRBcnJheSkKK0RZ
TkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhmdW5jdGlvblJhcmVEYXRhU3Bh
Y2UsIGRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUsIEZ1bmN0aW9uUmFyZURhdGEpCitEWU5B
TUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coZ2VuZXJhdG9yU3BhY2UsIGNlbGxI
ZWFwQ2VsbFR5cGUsIEpTR2VuZXJhdG9yKQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01F
TUJFUl9TTE9XKGdsb2JhbE9iamVjdFNwYWNlLCBnbG9iYWxPYmplY3RIZWFwQ2VsbFR5cGUsIEpT
R2xvYmFsT2JqZWN0KQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGlu
amVjdGVkU2NyaXB0SG9zdFNwYWNlLCBpbmplY3RlZFNjcmlwdEhvc3RTcGFjZUhlYXBDZWxsVHlw
ZSwgSW5zcGVjdG9yOjpKU0luamVjdGVkU2NyaXB0SG9zdCkKK0RZTkFNSUNfSVNPX1NVQlNQQUNF
X0RFRklORV9NRU1CRVJfU0xPVyhpbnQ4QXJyYXlTcGFjZSwgY2VsbEhlYXBDZWxsVHlwZSwgSlNJ
bnQ4QXJyYXkpCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coaW50MTZB
cnJheVNwYWNlLCBjZWxsSGVhcENlbGxUeXBlLCBKU0ludDE2QXJyYXkpCitEWU5BTUlDX0lTT19T
VUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coaW50MzJBcnJheVNwYWNlLCBjZWxsSGVhcENlbGxU
eXBlLCBKU0ludDMyQXJyYXkpCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NM
T1coamF2YVNjcmlwdENhbGxGcmFtZVNwYWNlLCBqYXZhU2NyaXB0Q2FsbEZyYW1lSGVhcENlbGxU
eXBlLCBJbnNwZWN0b3I6OkpTSmF2YVNjcmlwdENhbGxGcmFtZSkKK0RZTkFNSUNfSVNPX1NVQlNQ
QUNFX0RFRklORV9NRU1CRVJfU0xPVyhqc01vZHVsZVJlY29yZFNwYWNlLCBqc01vZHVsZVJlY29y
ZEhlYXBDZWxsVHlwZSwgSlNNb2R1bGVSZWNvcmQpCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJ
TkVfTUVNQkVSX1NMT1cobWFwQnVja2V0U3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUsIEpTTWFwOjpC
dWNrZXRUeXBlKQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKG1hcEl0
ZXJhdG9yU3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUsIEpTTWFwSXRlcmF0b3IpCitEWU5BTUlDX0lT
T19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1cobWFwU3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUs
IEpTTWFwKQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKG1vZHVsZU5h
bWVzcGFjZU9iamVjdFNwYWNlLCBtb2R1bGVOYW1lc3BhY2VPYmplY3RIZWFwQ2VsbFR5cGUsIEpT
TW9kdWxlTmFtZXNwYWNlT2JqZWN0KQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJF
Ul9TTE9XKG5hdGl2ZVN0ZEZ1bmN0aW9uU3BhY2UsIG5hdGl2ZVN0ZEZ1bmN0aW9uSGVhcENlbGxU
eXBlLCBKU05hdGl2ZVN0ZEZ1bmN0aW9uKSAvLyBIYXNoOjB4NzBlZDYxZTQKK0RZTkFNSUNfSVNP
X1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhwcm94eU9iamVjdFNwYWNlLCBjZWxsSGVhcENl
bGxUeXBlLCBQcm94eU9iamVjdCkKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJf
U0xPVyhwcm94eVJldm9rZVNwYWNlLCBjZWxsSGVhcENlbGxUeXBlLCBQcm94eVJldm9rZSkgLy8g
SGFzaDoweGI1MDZhOTM5CitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1co
c2NvcGVkQXJndW1lbnRzVGFibGVTcGFjZSwgZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZSwg
U2NvcGVkQXJndW1lbnRzVGFibGUpCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVS
X1NMT1coc2NyaXB0RmV0Y2hQYXJhbWV0ZXJzU3BhY2UsIGRlc3RydWN0aWJsZUNlbGxIZWFwQ2Vs
bFR5cGUsIEpTU2NyaXB0RmV0Y2hQYXJhbWV0ZXJzKQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVG
SU5FX01FTUJFUl9TTE9XKHNjcmlwdEZldGNoZXJTcGFjZSwgZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBD
ZWxsVHlwZSwgSlNTY3JpcHRGZXRjaGVyKQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01F
TUJFUl9TTE9XKHNldEJ1Y2tldFNwYWNlLCBjZWxsSGVhcENlbGxUeXBlLCBKU1NldDo6QnVja2V0
VHlwZSkKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhzZXRJdGVyYXRv
clNwYWNlLCBjZWxsSGVhcENlbGxUeXBlLCBKU1NldEl0ZXJhdG9yKQorRFlOQU1JQ19JU09fU1VC
U1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHNldFNwYWNlLCBjZWxsSGVhcENlbGxUeXBlLCBKU1Nl
dCkKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhzaGFkb3dSZWFsbVNw
YWNlLCBjZWxsSGVhcENlbGxUeXBlLCBTaGFkb3dSZWFsbU9iamVjdCkKK0RZTkFNSUNfSVNPX1NV
QlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhzdHJpY3RFdmFsQWN0aXZhdGlvblNwYWNlLCBjZWxs
SGVhcENlbGxUeXBlLCBTdHJpY3RFdmFsQWN0aXZhdGlvbikKK0RZTkFNSUNfSVNPX1NVQlNQQUNF
X0RFRklORV9NRU1CRVJfU0xPVyhzdHJpbmdJdGVyYXRvclNwYWNlLCBjZWxsSGVhcENlbGxUeXBl
LCBKU1N0cmluZ0l0ZXJhdG9yKQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9T
TE9XKHNvdXJjZUNvZGVTcGFjZSwgZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZSwgSlNTb3Vy
Y2VDb2RlKQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHN5bWJvbFNw
YWNlLCBkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlLCBTeW1ib2wpCitEWU5BTUlDX0lTT19T
VUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coc3ltYm9sT2JqZWN0U3BhY2UsIGNlbGxIZWFwQ2Vs
bFR5cGUsIFN5bWJvbE9iamVjdCkKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJf
U0xPVyh0ZW1wbGF0ZU9iamVjdERlc2NyaXB0b3JTcGFjZSwgZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBD
ZWxsVHlwZSwgSlNUZW1wbGF0ZU9iamVjdERlc2NyaXB0b3IpCitEWU5BTUlDX0lTT19TVUJTUEFD
RV9ERUZJTkVfTUVNQkVSX1NMT1codGVtcG9yYWxDYWxlbmRhclNwYWNlLCBjZWxsSGVhcENlbGxU
eXBlLCBUZW1wb3JhbENhbGVuZGFyKQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJF
Ul9TTE9XKHRlbXBvcmFsRHVyYXRpb25TcGFjZSwgY2VsbEhlYXBDZWxsVHlwZSwgVGVtcG9yYWxE
dXJhdGlvbikKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh0ZW1wb3Jh
bEluc3RhbnRTcGFjZSwgY2VsbEhlYXBDZWxsVHlwZSwgVGVtcG9yYWxJbnN0YW50KQorRFlOQU1J
Q19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHRlbXBvcmFsUGxhaW5UaW1lU3BhY2Us
IGNlbGxIZWFwQ2VsbFR5cGUsIFRlbXBvcmFsUGxhaW5UaW1lKQorRFlOQU1JQ19JU09fU1VCU1BB
Q0VfREVGSU5FX01FTUJFUl9TTE9XKHRlbXBvcmFsVGltZVpvbmVTcGFjZSwgY2VsbEhlYXBDZWxs
VHlwZSwgVGVtcG9yYWxUaW1lWm9uZSkKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1C
RVJfU0xPVyh1aW50OEFycmF5U3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUsIEpTVWludDhBcnJheSkK
K0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh1aW50OENsYW1wZWRBcnJh
eVNwYWNlLCBjZWxsSGVhcENlbGxUeXBlLCBKU1VpbnQ4Q2xhbXBlZEFycmF5KQorRFlOQU1JQ19J
U09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHVpbnQxNkFycmF5U3BhY2UsIGNlbGxIZWFw
Q2VsbFR5cGUsIEpTVWludDE2QXJyYXkpCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVN
QkVSX1NMT1codWludDMyQXJyYXlTcGFjZSwgY2VsbEhlYXBDZWxsVHlwZSwgSlNVaW50MzJBcnJh
eSkKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh1bmxpbmtlZEV2YWxD
b2RlQmxvY2tTcGFjZSwgZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZSwgVW5saW5rZWRFdmFs
Q29kZUJsb2NrKQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHVubGlu
a2VkRnVuY3Rpb25Db2RlQmxvY2tTcGFjZSwgZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZSwg
VW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jaykKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9N
RU1CRVJfU0xPVyh1bmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2tTcGFjZSwgZGVzdHJ1Y3Rp
YmxlQ2VsbEhlYXBDZWxsVHlwZSwgVW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKQorRFlO
QU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHVubGlua2VkUHJvZ3JhbUNvZGVC
bG9ja1NwYWNlLCBkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlLCBVbmxpbmtlZFByb2dyYW1D
b2RlQmxvY2spCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1cod2Vha01h
cFNwYWNlLCB3ZWFrTWFwSGVhcENlbGxUeXBlLCBKU1dlYWtNYXApIC8vIEhhc2g6MHg2NjJiMTJh
MworRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHdlYWtTZXRTcGFjZSwg
d2Vha1NldEhlYXBDZWxsVHlwZSwgSlNXZWFrU2V0KSAvLyBIYXNoOjB4NGM3ODFiMzAKK0RZTkFN
SUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh3ZWFrT2JqZWN0UmVmU3BhY2UsIGNl
bGxIZWFwQ2VsbFR5cGUsIEpTV2Vha09iamVjdFJlZikgLy8gSGFzaDoweDhlYzY4ZjFmCitEWU5B
TUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1cod2l0aFNjb3BlU3BhY2UsIGNlbGxI
ZWFwQ2VsbFR5cGUsIEpTV2l0aFNjb3BlKQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01F
TUJFUl9TTE9XKGZpbmFsaXphdGlvblJlZ2lzdHJ5U3BhY2UsIGZpbmFsaXphdGlvblJlZ2lzdHJ5
Q2VsbFR5cGUsIEpTRmluYWxpemF0aW9uUmVnaXN0cnkpCisjaWYgSlNDX09CSkNfQVBJX0VOQUJM
RUQKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhhcGlXcmFwcGVyT2Jq
ZWN0U3BhY2UsIGFwaVdyYXBwZXJPYmplY3RIZWFwQ2VsbFR5cGUsIEpTQ2FsbGJhY2tPYmplY3Q8
SlNBUElXcmFwcGVyT2JqZWN0PikKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJf
U0xPVyhvYmpDQ2FsbGJhY2tGdW5jdGlvblNwYWNlLCBvYmpDQ2FsbGJhY2tGdW5jdGlvbkhlYXBD
ZWxsVHlwZSwgT2JqQ0NhbGxiYWNrRnVuY3Rpb24pIC8vIEhhc2g6MHgxMGY2MTBiOAorI2VuZGlm
CisjaWZkZWYgSlNDX0dMSUJfQVBJX0VOQUJMRUQKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklO
RV9NRU1CRVJfU0xPVyhhcGlXcmFwcGVyT2JqZWN0U3BhY2UsIGFwaVdyYXBwZXJPYmplY3RIZWFw
Q2VsbFR5cGUsIEpTQ2FsbGJhY2tPYmplY3Q8SlNBUElXcmFwcGVyT2JqZWN0PikKK0RZTkFNSUNf
SVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhqc2NDYWxsYmFja0Z1bmN0aW9uU3BhY2Us
IGpzY0NhbGxiYWNrRnVuY3Rpb25IZWFwQ2VsbFR5cGUsIEpTQ0NhbGxiYWNrRnVuY3Rpb24pCitE
WU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coY2FsbGJhY2tBUElXcmFwcGVy
R2xvYmFsT2JqZWN0U3BhY2UsIGNhbGxiYWNrQVBJV3JhcHBlckdsb2JhbE9iamVjdEhlYXBDZWxs
VHlwZSwgSlNDYWxsYmFja09iamVjdDxKU0FQSVdyYXBwZXJHbG9iYWxPYmplY3Q+KQorI2VuZGlm
CitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coaW50bENvbGxhdG9yU3Bh
Y2UsIGludGxDb2xsYXRvckhlYXBDZWxsVHlwZSwgSW50bENvbGxhdG9yKQorRFlOQU1JQ19JU09f
U1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGludGxEYXRlVGltZUZvcm1hdFNwYWNlLCBpbnRs
RGF0ZVRpbWVGb3JtYXRIZWFwQ2VsbFR5cGUsIEludGxEYXRlVGltZUZvcm1hdCkKK0RZTkFNSUNf
SVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhpbnRsRGlzcGxheU5hbWVzU3BhY2UsIGlu
dGxEaXNwbGF5TmFtZXNIZWFwQ2VsbFR5cGUsIEludGxEaXNwbGF5TmFtZXMpCitEWU5BTUlDX0lT
T19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coaW50bExpc3RGb3JtYXRTcGFjZSwgaW50bExp
c3RGb3JtYXRIZWFwQ2VsbFR5cGUsIEludGxMaXN0Rm9ybWF0KQorRFlOQU1JQ19JU09fU1VCU1BB
Q0VfREVGSU5FX01FTUJFUl9TTE9XKGludGxMb2NhbGVTcGFjZSwgaW50bExvY2FsZUhlYXBDZWxs
VHlwZSwgSW50bExvY2FsZSkKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xP
VyhpbnRsTnVtYmVyRm9ybWF0U3BhY2UsIGludGxOdW1iZXJGb3JtYXRIZWFwQ2VsbFR5cGUsIElu
dGxOdW1iZXJGb3JtYXQpCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1co
aW50bFBsdXJhbFJ1bGVzU3BhY2UsIGludGxQbHVyYWxSdWxlc0hlYXBDZWxsVHlwZSwgSW50bFBs
dXJhbFJ1bGVzKQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGludGxS
ZWxhdGl2ZVRpbWVGb3JtYXRTcGFjZSwgaW50bFJlbGF0aXZlVGltZUZvcm1hdEhlYXBDZWxsVHlw
ZSwgSW50bFJlbGF0aXZlVGltZUZvcm1hdCkKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9N
RU1CRVJfU0xPVyhpbnRsU2VnbWVudEl0ZXJhdG9yU3BhY2UsIGludGxTZWdtZW50SXRlcmF0b3JI
ZWFwQ2VsbFR5cGUsIEludGxTZWdtZW50SXRlcmF0b3IpCitEWU5BTUlDX0lTT19TVUJTUEFDRV9E
RUZJTkVfTUVNQkVSX1NMT1coaW50bFNlZ21lbnRlclNwYWNlLCBpbnRsU2VnbWVudGVySGVhcENl
bGxUeXBlLCBJbnRsU2VnbWVudGVyKQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJF
Ul9TTE9XKGludGxTZWdtZW50c1NwYWNlLCBpbnRsU2VnbWVudHNIZWFwQ2VsbFR5cGUsIEludGxT
ZWdtZW50cykKKyNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCitEWU5BTUlDX0lTT19TVUJTUEFDRV9E
RUZJTkVfTUVNQkVSX1NMT1coanNUb1dhc21JQ0NhbGxlZVNwYWNlLCBjZWxsSGVhcENlbGxUeXBl
LCBKU1RvV2FzbUlDQ2FsbGVlKQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9T
TE9XKHdlYkFzc2VtYmx5Q29kZUJsb2NrU3BhY2UsIHdlYkFzc2VtYmx5Q29kZUJsb2NrSGVhcENl
bGxUeXBlLCBKU1dlYkFzc2VtYmx5Q29kZUJsb2NrKSAvLyBIYXNoOjB4OWFkOTk1Y2QKK0RZTkFN
SUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh3ZWJBc3NlbWJseUV4Y2VwdGlvblNw
YWNlLCB3ZWJBc3NlbWJseUV4Y2VwdGlvbkhlYXBDZWxsVHlwZSwgSlNXZWJBc3NlbWJseUV4Y2Vw
dGlvbikKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh3ZWJBc3NlbWJs
eUZ1bmN0aW9uU3BhY2UsIHdlYkFzc2VtYmx5RnVuY3Rpb25IZWFwQ2VsbFR5cGUsIFdlYkFzc2Vt
Ymx5RnVuY3Rpb24pIC8vIEhhc2g6MHg4YjdjMzJkYgorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVG
SU5FX01FTUJFUl9TTE9XKHdlYkFzc2VtYmx5R2xvYmFsU3BhY2UsIHdlYkFzc2VtYmx5R2xvYmFs
SGVhcENlbGxUeXBlLCBKU1dlYkFzc2VtYmx5R2xvYmFsKQorRFlOQU1JQ19JU09fU1VCU1BBQ0Vf
REVGSU5FX01FTUJFUl9TTE9XKHdlYkFzc2VtYmx5SW5zdGFuY2VTcGFjZSwgd2ViQXNzZW1ibHlJ
bnN0YW5jZUhlYXBDZWxsVHlwZSwgSlNXZWJBc3NlbWJseUluc3RhbmNlKQorRFlOQU1JQ19JU09f
U1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHdlYkFzc2VtYmx5TWVtb3J5U3BhY2UsIHdlYkFz
c2VtYmx5TWVtb3J5SGVhcENlbGxUeXBlLCBKU1dlYkFzc2VtYmx5TWVtb3J5KQorRFlOQU1JQ19J
U09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHdlYkFzc2VtYmx5TW9kdWxlU3BhY2UsIHdl
YkFzc2VtYmx5TW9kdWxlSGVhcENlbGxUeXBlLCBKU1dlYkFzc2VtYmx5TW9kdWxlKQorRFlOQU1J
Q19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHdlYkFzc2VtYmx5TW9kdWxlUmVjb3Jk
U3BhY2UsIHdlYkFzc2VtYmx5TW9kdWxlUmVjb3JkSGVhcENlbGxUeXBlLCBXZWJBc3NlbWJseU1v
ZHVsZVJlY29yZCkKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh3ZWJB
c3NlbWJseVRhYmxlU3BhY2UsIHdlYkFzc2VtYmx5VGFibGVIZWFwQ2VsbFR5cGUsIEpTV2ViQXNz
ZW1ibHlUYWJsZSkKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh3ZWJB
c3NlbWJseVRhZ1NwYWNlLCB3ZWJBc3NlbWJseVRhZ0hlYXBDZWxsVHlwZSwgSlNXZWJBc3NlbWJs
eVRhZykKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh3ZWJBc3NlbWJs
eVdyYXBwZXJGdW5jdGlvblNwYWNlLCBjZWxsSGVhcENlbGxUeXBlLCBXZWJBc3NlbWJseVdyYXBw
ZXJGdW5jdGlvbikgLy8gSGFzaDoweGQ0YTVmZjAxCisjZW5kaWYKKworI3VuZGVmIERZTkFNSUNf
SVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVworCisjZGVmaW5lIERZTkFNSUNfU1BBQ0Vf
QU5EX1NFVF9ERUZJTkVfTUVNQkVSX1NMT1cobmFtZSwgaGVhcENlbGxUeXBlLCB0eXBlKSBcCisg
ICAgSXNvU3Vic3BhY2UqIEhlYXA6Om5hbWUjI1Nsb3coKSBcCisgICAgeyBcCisgICAgICAgIEFT
U0VSVCghbV8jI25hbWUpOyBcCisgICAgICAgIGF1dG8gc3BhY2UgPSBtYWtlVW5pcXVlPFNwYWNl
QW5kU2V0PiBJU09fU1VCU1BBQ0VfSU5JVCgqdGhpcywgaGVhcENlbGxUeXBlLCB0eXBlKTsgXAor
ICAgICAgICBXVEY6OnN0b3JlU3RvcmVGZW5jZSgpOyBcCisgICAgICAgIG1fIyNuYW1lID0gV1RG
TW92ZShzcGFjZSk7IFwKKyAgICAgICAgcmV0dXJuICZtXyMjbmFtZS0+c3BhY2U7IFwKKyAgICB9
CisKK0RZTkFNSUNfU1BBQ0VfQU5EX1NFVF9ERUZJTkVfTUVNQkVSX1NMT1coZXZhbEV4ZWN1dGFi
bGVTcGFjZSwgZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZSwgRXZhbEV4ZWN1dGFibGUpIC8v
IEhhc2g6MHg5NThlM2U5ZAorRFlOQU1JQ19TUEFDRV9BTkRfU0VUX0RFRklORV9NRU1CRVJfU0xP
Vyhtb2R1bGVQcm9ncmFtRXhlY3V0YWJsZVNwYWNlLCBkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxU
eXBlLCBNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZSkgLy8gSGFzaDoweDY1MDZmYTNjCisKKyN1bmRl
ZiBEWU5BTUlDX1NQQUNFX0FORF9TRVRfREVGSU5FX01FTUJFUl9TTE9XCisKIH0gLy8gbmFtZXNw
YWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuaAkocmV2aXNpb24gMjg2MDk1
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oCSh3b3JraW5nIGNvcHkpCkBA
IC0yNSw2ICsyNSw3IEBACiAjaW5jbHVkZSAiQ2VsbFN0YXRlLmgiCiAjaW5jbHVkZSAiQ29sbGVj
dGlvblNjb3BlLmgiCiAjaW5jbHVkZSAiQ29sbGVjdG9yUGhhc2UuaCIKKyNpbmNsdWRlICJDb21w
bGV0ZVN1YnNwYWNlLmgiCiAjaW5jbHVkZSAiRGVsZXRlQWxsQ29kZUVmZm9ydC5oIgogI2luY2x1
ZGUgIkdDQ29uZHVjdG9yLmgiCiAjaW5jbHVkZSAiR0NJbmNvbWluZ1JlZkNvdW50ZWRTZXQuaCIK
QEAgLTMzLDYgKzM0LDExIEBACiAjaW5jbHVkZSAiSGFuZGxlU2V0LmgiCiAjaW5jbHVkZSAiSGVh
cEZpbmFsaXplckNhbGxiYWNrLmgiCiAjaW5jbHVkZSAiSGVhcE9ic2VydmVyLmgiCisjaW5jbHVk
ZSAiSXNvQ2VsbFNldC5oIgorI2luY2x1ZGUgIklzb0hlYXBDZWxsVHlwZS5oIgorI2luY2x1ZGUg
Iklzb0lubGluZWRIZWFwQ2VsbFR5cGUuaCIKKyNpbmNsdWRlICJJc29TdWJzcGFjZS5oIgorI2lu
Y2x1ZGUgIkpTRGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmgiCiAjaW5jbHVkZSAiTWFy
a2VkQmxvY2suaCIKICNpbmNsdWRlICJNYXJrZWRTcGFjZS5oIgogI2luY2x1ZGUgIk11dGF0b3JT
dGF0ZS5oIgpAQCAtNTAsMzIgKzU2LDY1IEBACiAjaW5jbHVkZSA8d3RmL1BhcmFsbGVsSGVscGVy
UG9vbC5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KIAorbmFtZXNwYWNlIEluc3BlY3Rv
ciB7CitjbGFzcyBKU0luamVjdGVkU2NyaXB0SG9zdDsKK2NsYXNzIEpTSmF2YVNjcmlwdENhbGxG
cmFtZTsKK30KKwogbmFtZXNwYWNlIEpTQyB7CiAKK2NsYXNzIEJsb2NrRGlyZWN0b3J5OwogY2xh
c3MgQ29kZUJsb2NrOwogY2xhc3MgQ29kZUJsb2NrU2V0OwogY2xhc3MgQ29sbGVjdGluZ1Njb3Bl
OwogY2xhc3MgQ29uc2VydmF0aXZlUm9vdHM7Ci1jbGFzcyBHQ0RlZmVycmFsQ29udGV4dDsKK2Ns
YXNzIERhdGVJbnN0YW5jZTsKIGNsYXNzIEVkZW5HQ0FjdGl2aXR5Q2FsbGJhY2s7CitjbGFzcyBF
cnJvckluc3RhbmNlOworY2xhc3MgRmFzdE1hbGxvY0FsaWduZWRNZW1vcnlBbGxvY2F0b3I7CiBj
bGFzcyBGdWxsR0NBY3Rpdml0eUNhbGxiYWNrOwogY2xhc3MgR0NBY3Rpdml0eUNhbGxiYWNrOwog
Y2xhc3MgR0NBd2FyZUpJVFN0dWJSb3V0aW5lOworY2xhc3MgR0NEZWZlcnJhbENvbnRleHQ7Citj
bGFzcyBHaWdhY2FnZUFsaWduZWRNZW1vcnlBbGxvY2F0b3I7CiBjbGFzcyBIZWFwOwogY2xhc3Mg
SGVhcFByb2ZpbGVyOwogY2xhc3MgSGVhcFZlcmlmaWVyOwogY2xhc3MgSW5jcmVtZW50YWxTd2Vl
cGVyOworY2xhc3MgSW50bENvbGxhdG9yOworY2xhc3MgSW50bERhdGVUaW1lRm9ybWF0OworY2xh
c3MgSW50bERpc3BsYXlOYW1lczsKK2NsYXNzIEludGxMaXN0Rm9ybWF0OworY2xhc3MgSW50bExv
Y2FsZTsKK2NsYXNzIEludGxOdW1iZXJGb3JtYXQ7CitjbGFzcyBJbnRsUGx1cmFsUnVsZXM7Citj
bGFzcyBJbnRsUmVsYXRpdmVUaW1lRm9ybWF0OworY2xhc3MgSW50bFNlZ21lbnRJdGVyYXRvcjsK
K2NsYXNzIEludGxTZWdtZW50ZXI7CitjbGFzcyBJbnRsU2VnbWVudHM7CiBjbGFzcyBKSVRTdHVi
Um91dGluZTsKIGNsYXNzIEpJVFN0dWJSb3V0aW5lU2V0OworY2xhc3MgSlNBUElHbG9iYWxPYmpl
Y3Q7CitjbGFzcyBKU0NhbGxiYWNrQ29uc3RydWN0b3I7CiBjbGFzcyBKU0NlbGw7CitjbGFzcyBK
U0N1c3RvbUdldHRlckZ1bmN0aW9uOworY2xhc3MgSlNDdXN0b21TZXR0ZXJGdW5jdGlvbjsKK2Ns
YXNzIEpTRmluYWxpemF0aW9uUmVnaXN0cnk7CitjbGFzcyBKU0dsb2JhbExleGljYWxFbnZpcm9u
bWVudDsKK2NsYXNzIEpTR2xvYmFsT2JqZWN0OwogY2xhc3MgSlNJbW11dGFibGVCdXR0ZXJmbHk7
CitjbGFzcyBKU01vZHVsZU5hbWVzcGFjZU9iamVjdDsKK2NsYXNzIEpTTW9kdWxlUmVjb3JkOwor
Y2xhc3MgSlNOYXRpdmVTdGRGdW5jdGlvbjsKK2NsYXNzIEpTTm9uRmluYWxPYmplY3Q7CitjbGFz
cyBKU1N0cmluZzsKIGNsYXNzIEpTVmFsdWU7Ci1jbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7
CitjbGFzcyBKU1dlYWtNYXA7CitjbGFzcyBKU1dlYWtTZXQ7CiBjbGFzcyBNYWNoaW5lVGhyZWFk
czsKIGNsYXNzIE1hcmtTdGFja0FycmF5OwogY2xhc3MgTWFya1N0YWNrTWVyZ2luZ0NvbnN0cmFp
bnQ7CiBjbGFzcyBNYXJrZWRKU1ZhbHVlUmVmQXJyYXk7Ci1jbGFzcyBCbG9ja0RpcmVjdG9yeTsK
IGNsYXNzIE1hcmtlZEFyZ3VtZW50QnVmZmVyQmFzZTsKIGNsYXNzIE1hcmtpbmdDb25zdHJhaW50
OwogY2xhc3MgTWFya2luZ0NvbnN0cmFpbnRTZXQ7CkBAIC05MCw3ICsxMjksMzAgQEAgY2xhc3Mg
VmVyaWZpZXJTbG90VmlzaXRvcjsKIGNsYXNzIFdlYWtHQ0hhc2hUYWJsZTsKIHN0cnVjdCBDdXJy
ZW50VGhyZWFkU3RhdGU7CiAKK3RlbXBsYXRlIDxjbGFzcyBQYXJlbnQ+IGNsYXNzIEpTQ2FsbGJh
Y2tPYmplY3Q7CisKKyNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCitjbGFzcyBKU1dlYkFzc2VtYmx5
Q29kZUJsb2NrOworY2xhc3MgSlNXZWJBc3NlbWJseUV4Y2VwdGlvbjsKK2NsYXNzIEpTV2ViQXNz
ZW1ibHlHbG9iYWw7CitjbGFzcyBKU1dlYkFzc2VtYmx5SW5zdGFuY2U7CitjbGFzcyBKU1dlYkFz
c2VtYmx5TWVtb3J5OworY2xhc3MgSlNXZWJBc3NlbWJseU1vZHVsZTsKK2NsYXNzIEpTV2ViQXNz
ZW1ibHlUYWJsZTsKK2NsYXNzIEpTV2ViQXNzZW1ibHlUYWc7CitjbGFzcyBXZWJBc3NlbWJseUZ1
bmN0aW9uOworY2xhc3MgV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQ7CisjZW5kaWYKKworI2lmIEpT
Q19PQkpDX0FQSV9FTkFCTEVECitjbGFzcyBKU0FQSVdyYXBwZXJPYmplY3Q7CitjbGFzcyBPYmpD
Q2FsbGJhY2tGdW5jdGlvbjsKKyNlbmRpZgorCiAjaWZkZWYgSlNDX0dMSUJfQVBJX0VOQUJMRUQK
K2NsYXNzIEpTQVBJV3JhcHBlckdsb2JhbE9iamVjdDsKK2NsYXNzIEpTQVBJV3JhcHBlck9iamVj
dDsKK2NsYXNzIEpTQ0NhbGxiYWNrRnVuY3Rpb247CiBjbGFzcyBKU0NHTGliV3JhcHBlck9iamVj
dDsKICNlbmRpZgogCkBAIC03MjksNiArNzkxLDMxOCBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9w
YXJhbGxlbE1hcmtlcnNTaG91bGRFeGl0IHsgZmFsc2UgfTsKICAgICBMb2NrIG1fY29sbGVjdENv
bnRpbnVvdXNseUxvY2s7CiAgICAgQ29uZGl0aW9uIG1fY29sbGVjdENvbnRpbnVvdXNseUNvbmRp
dGlvbjsKKworcHVibGljOgorICAgIC8vIEhlYXBDZWxsVHlwZXMKKyAgICBIZWFwQ2VsbFR5cGUg
YXV4aWxpYXJ5SGVhcENlbGxUeXBlOworICAgIEhlYXBDZWxsVHlwZSBpbW11dGFibGVCdXR0ZXJm
bHlIZWFwQ2VsbFR5cGU7CisgICAgSGVhcENlbGxUeXBlIGNlbGxIZWFwQ2VsbFR5cGU7CisgICAg
SGVhcENlbGxUeXBlIGRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGU7CisgICAgSXNvSGVhcENl
bGxUeXBlPEpTQVBJR2xvYmFsT2JqZWN0PiBhcGlHbG9iYWxPYmplY3RIZWFwQ2VsbFR5cGU7Cisg
ICAgSXNvSGVhcENlbGxUeXBlPEpTQ2FsbGJhY2tDb25zdHJ1Y3Rvcj4gY2FsbGJhY2tDb25zdHJ1
Y3RvckhlYXBDZWxsVHlwZTsKKyAgICBJc29IZWFwQ2VsbFR5cGU8SlNDYWxsYmFja09iamVjdDxK
U0dsb2JhbE9iamVjdD4+IGNhbGxiYWNrR2xvYmFsT2JqZWN0SGVhcENlbGxUeXBlOworICAgIElz
b0hlYXBDZWxsVHlwZTxKU0NhbGxiYWNrT2JqZWN0PEpTTm9uRmluYWxPYmplY3Q+PiBjYWxsYmFj
a09iamVjdEhlYXBDZWxsVHlwZTsKKyAgICBJc29IZWFwQ2VsbFR5cGU8SlNDdXN0b21HZXR0ZXJG
dW5jdGlvbj4gY3VzdG9tR2V0dGVyRnVuY3Rpb25IZWFwQ2VsbFR5cGU7CisgICAgSXNvSGVhcENl
bGxUeXBlPEpTQ3VzdG9tU2V0dGVyRnVuY3Rpb24+IGN1c3RvbVNldHRlckZ1bmN0aW9uSGVhcENl
bGxUeXBlOworICAgIElzb0hlYXBDZWxsVHlwZTxEYXRlSW5zdGFuY2U+IGRhdGVJbnN0YW5jZUhl
YXBDZWxsVHlwZTsKKyAgICBJc29IZWFwQ2VsbFR5cGU8RXJyb3JJbnN0YW5jZT4gZXJyb3JJbnN0
YW5jZUhlYXBDZWxsVHlwZTsKKyAgICBJc29IZWFwQ2VsbFR5cGU8SlNGaW5hbGl6YXRpb25SZWdp
c3RyeT4gZmluYWxpemF0aW9uUmVnaXN0cnlDZWxsVHlwZTsKKyAgICBJc29IZWFwQ2VsbFR5cGU8
SlNHbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQ+IGdsb2JhbExleGljYWxFbnZpcm9ubWVudEhlYXBD
ZWxsVHlwZTsKKyAgICBJc29IZWFwQ2VsbFR5cGU8SlNHbG9iYWxPYmplY3Q+IGdsb2JhbE9iamVj
dEhlYXBDZWxsVHlwZTsKKyAgICBJc29IZWFwQ2VsbFR5cGU8SW5zcGVjdG9yOjpKU0luamVjdGVk
U2NyaXB0SG9zdD4gaW5qZWN0ZWRTY3JpcHRIb3N0U3BhY2VIZWFwQ2VsbFR5cGU7CisgICAgSXNv
SGVhcENlbGxUeXBlPEluc3BlY3Rvcjo6SlNKYXZhU2NyaXB0Q2FsbEZyYW1lPiBqYXZhU2NyaXB0
Q2FsbEZyYW1lSGVhcENlbGxUeXBlOworICAgIElzb0hlYXBDZWxsVHlwZTxKU01vZHVsZVJlY29y
ZD4ganNNb2R1bGVSZWNvcmRIZWFwQ2VsbFR5cGU7CisgICAgSXNvSGVhcENlbGxUeXBlPEpTTW9k
dWxlTmFtZXNwYWNlT2JqZWN0PiBtb2R1bGVOYW1lc3BhY2VPYmplY3RIZWFwQ2VsbFR5cGU7Cisg
ICAgSXNvSGVhcENlbGxUeXBlPEpTTmF0aXZlU3RkRnVuY3Rpb24+IG5hdGl2ZVN0ZEZ1bmN0aW9u
SGVhcENlbGxUeXBlOworICAgIElzb0lubGluZWRIZWFwQ2VsbFR5cGU8SlNTdHJpbmc+IHN0cmlu
Z0hlYXBDZWxsVHlwZTsKKyAgICBJc29IZWFwQ2VsbFR5cGU8SlNXZWFrTWFwPiB3ZWFrTWFwSGVh
cENlbGxUeXBlOworICAgIElzb0hlYXBDZWxsVHlwZTxKU1dlYWtTZXQ+IHdlYWtTZXRIZWFwQ2Vs
bFR5cGU7CisgICAgSlNEZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUgZGVzdHJ1Y3RpYmxl
T2JqZWN0SGVhcENlbGxUeXBlOworI2lmIEpTQ19PQkpDX0FQSV9FTkFCTEVECisgICAgSXNvSGVh
cENlbGxUeXBlPEpTQ2FsbGJhY2tPYmplY3Q8SlNBUElXcmFwcGVyT2JqZWN0Pj4gYXBpV3JhcHBl
ck9iamVjdEhlYXBDZWxsVHlwZTsKKyAgICBJc29IZWFwQ2VsbFR5cGU8T2JqQ0NhbGxiYWNrRnVu
Y3Rpb24+IG9iakNDYWxsYmFja0Z1bmN0aW9uSGVhcENlbGxUeXBlOworI2VuZGlmCisjaWZkZWYg
SlNDX0dMSUJfQVBJX0VOQUJMRUQKKyAgICBJc29IZWFwQ2VsbFR5cGU8SlNDYWxsYmFja09iamVj
dDxKU0FQSVdyYXBwZXJPYmplY3Q+PiBhcGlXcmFwcGVyT2JqZWN0SGVhcENlbGxUeXBlOworICAg
IElzb0hlYXBDZWxsVHlwZTxKU0NhbGxiYWNrT2JqZWN0PEpTQVBJV3JhcHBlckdsb2JhbE9iamVj
dD4+IGNhbGxiYWNrQVBJV3JhcHBlckdsb2JhbE9iamVjdEhlYXBDZWxsVHlwZTsKKyAgICBJc29I
ZWFwQ2VsbFR5cGU8SlNDQ2FsbGJhY2tGdW5jdGlvbj4ganNjQ2FsbGJhY2tGdW5jdGlvbkhlYXBD
ZWxsVHlwZTsKKyNlbmRpZgorICAgIElzb0hlYXBDZWxsVHlwZTxJbnRsQ29sbGF0b3I+IGludGxD
b2xsYXRvckhlYXBDZWxsVHlwZTsKKyAgICBJc29IZWFwQ2VsbFR5cGU8SW50bERhdGVUaW1lRm9y
bWF0PiBpbnRsRGF0ZVRpbWVGb3JtYXRIZWFwQ2VsbFR5cGU7CisgICAgSXNvSGVhcENlbGxUeXBl
PEludGxEaXNwbGF5TmFtZXM+IGludGxEaXNwbGF5TmFtZXNIZWFwQ2VsbFR5cGU7CisgICAgSXNv
SGVhcENlbGxUeXBlPEludGxMaXN0Rm9ybWF0PiBpbnRsTGlzdEZvcm1hdEhlYXBDZWxsVHlwZTsK
KyAgICBJc29IZWFwQ2VsbFR5cGU8SW50bExvY2FsZT4gaW50bExvY2FsZUhlYXBDZWxsVHlwZTsK
KyAgICBJc29IZWFwQ2VsbFR5cGU8SW50bE51bWJlckZvcm1hdD4gaW50bE51bWJlckZvcm1hdEhl
YXBDZWxsVHlwZTsKKyAgICBJc29IZWFwQ2VsbFR5cGU8SW50bFBsdXJhbFJ1bGVzPiBpbnRsUGx1
cmFsUnVsZXNIZWFwQ2VsbFR5cGU7CisgICAgSXNvSGVhcENlbGxUeXBlPEludGxSZWxhdGl2ZVRp
bWVGb3JtYXQ+IGludGxSZWxhdGl2ZVRpbWVGb3JtYXRIZWFwQ2VsbFR5cGU7CisgICAgSXNvSGVh
cENlbGxUeXBlPEludGxTZWdtZW50SXRlcmF0b3I+IGludGxTZWdtZW50SXRlcmF0b3JIZWFwQ2Vs
bFR5cGU7CisgICAgSXNvSGVhcENlbGxUeXBlPEludGxTZWdtZW50ZXI+IGludGxTZWdtZW50ZXJI
ZWFwQ2VsbFR5cGU7CisgICAgSXNvSGVhcENlbGxUeXBlPEludGxTZWdtZW50cz4gaW50bFNlZ21l
bnRzSGVhcENlbGxUeXBlOworI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKKyAgICBJc29IZWFwQ2Vs
bFR5cGU8SlNXZWJBc3NlbWJseUNvZGVCbG9jaz4gd2ViQXNzZW1ibHlDb2RlQmxvY2tIZWFwQ2Vs
bFR5cGU7CisgICAgSXNvSGVhcENlbGxUeXBlPEpTV2ViQXNzZW1ibHlFeGNlcHRpb24+IHdlYkFz
c2VtYmx5RXhjZXB0aW9uSGVhcENlbGxUeXBlOworICAgIElzb0hlYXBDZWxsVHlwZTxXZWJBc3Nl
bWJseUZ1bmN0aW9uPiB3ZWJBc3NlbWJseUZ1bmN0aW9uSGVhcENlbGxUeXBlOworICAgIElzb0hl
YXBDZWxsVHlwZTxKU1dlYkFzc2VtYmx5R2xvYmFsPiB3ZWJBc3NlbWJseUdsb2JhbEhlYXBDZWxs
VHlwZTsKKyAgICBJc29IZWFwQ2VsbFR5cGU8SlNXZWJBc3NlbWJseUluc3RhbmNlPiB3ZWJBc3Nl
bWJseUluc3RhbmNlSGVhcENlbGxUeXBlOworICAgIElzb0hlYXBDZWxsVHlwZTxKU1dlYkFzc2Vt
Ymx5TWVtb3J5PiB3ZWJBc3NlbWJseU1lbW9yeUhlYXBDZWxsVHlwZTsKKyAgICBJc29IZWFwQ2Vs
bFR5cGU8SlNXZWJBc3NlbWJseU1vZHVsZT4gd2ViQXNzZW1ibHlNb2R1bGVIZWFwQ2VsbFR5cGU7
CisgICAgSXNvSGVhcENlbGxUeXBlPFdlYkFzc2VtYmx5TW9kdWxlUmVjb3JkPiB3ZWJBc3NlbWJs
eU1vZHVsZVJlY29yZEhlYXBDZWxsVHlwZTsKKyAgICBJc29IZWFwQ2VsbFR5cGU8SlNXZWJBc3Nl
bWJseVRhYmxlPiB3ZWJBc3NlbWJseVRhYmxlSGVhcENlbGxUeXBlOworICAgIElzb0hlYXBDZWxs
VHlwZTxKU1dlYkFzc2VtYmx5VGFnPiB3ZWJBc3NlbWJseVRhZ0hlYXBDZWxsVHlwZTsKKyNlbmRp
ZgorCisgICAgLy8gQWxpZ25lZE1lbW9yeUFsbG9jYXRvcnMKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8
RmFzdE1hbGxvY0FsaWduZWRNZW1vcnlBbGxvY2F0b3I+IGZhc3RNYWxsb2NBbGxvY2F0b3I7Cisg
ICAgc3RkOjp1bmlxdWVfcHRyPEdpZ2FjYWdlQWxpZ25lZE1lbW9yeUFsbG9jYXRvcj4gcHJpbWl0
aXZlR2lnYWNhZ2VBbGxvY2F0b3I7CisgICAgc3RkOjp1bmlxdWVfcHRyPEdpZ2FjYWdlQWxpZ25l
ZE1lbW9yeUFsbG9jYXRvcj4ganNWYWx1ZUdpZ2FjYWdlQWxsb2NhdG9yOworCisgICAgLy8gU3Vi
c3BhY2VzCisgICAgQ29tcGxldGVTdWJzcGFjZSBwcmltaXRpdmVHaWdhY2FnZUF1eGlsaWFyeVNw
YWNlOyAvLyBUeXBlZCBhcnJheXMsIHN0cmluZ3MsIGJpdHZlY3RvcnMsIGV0YyBnbyBoZXJlLgor
ICAgIENvbXBsZXRlU3Vic3BhY2UganNWYWx1ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2U7IC8vIEJ1
dHRlcmZsaWVzLCBhcnJheXMgb2YgSlNWYWx1ZXMsIGV0YyBnbyBoZXJlLgorICAgIENvbXBsZXRl
U3Vic3BhY2UgaW1tdXRhYmxlQnV0dGVyZmx5SlNWYWx1ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2U7
IC8vIEpTSW1tdXRhYmxlQnV0dGVyZmx5IGdvZXMgaGVyZS4KKworICAgIC8vIFdlIG1ha2UgY3Jv
c3MtY3V0dGluZyBhc3N1bXB0aW9ucyBhYm91dCB0eXBlZCBhcnJheXMgYmVpbmcgaW4gdGhlIHBy
aW1pdGl2ZSBHaWdhY2FnZSBhbmQgYnV0dGVyZmxpZXMKKyAgICAvLyBiZWluZyBpbiB0aGUgSlNW
YWx1ZSBnaWdhY2FnZS4gRm9yIHNvbWUgdHlwZXMsIGl0J3Mgc3VwZXIgb2J2aW91cyB3aGVyZSB0
aGV5IHNob3VsZCBnbywgYW5kIHNvIHdlCisgICAgLy8gY2FuIGhhcmRjb2RlIHRoYXQgZmFjdC4g
QnV0IHNvbWV0aW1lcyBpdCdzIG5vdCBjbGVhciwgc28gd2UgYWJzdHJhY3QgaXQgYnkgaGF2aW5n
IGEgR2lnYWNhZ2U6OktpbmQKKyAgICAvLyBjb25zdGFudCBzb21ld2hlcmUuCisgICAgLy8gRklY
TUU6IE1heWJlIGl0IHdvdWxkIGJlIGJldHRlciBpZiBldmVyeW9uZSBhYnN0cmFjdGVkIHRoaXM/
CisgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NTI0OAor
ICAgIEFMV0FZU19JTkxJTkUgQ29tcGxldGVTdWJzcGFjZSYgZ2lnYWNhZ2VBdXhpbGlhcnlTcGFj
ZShHaWdhY2FnZTo6S2luZCBraW5kKQorICAgIHsKKyAgICAgICAgc3dpdGNoIChraW5kKSB7Cisg
ICAgICAgIGNhc2UgR2lnYWNhZ2U6OlByaW1pdGl2ZToKKyAgICAgICAgICAgIHJldHVybiBwcmlt
aXRpdmVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlOworICAgICAgICBjYXNlIEdpZ2FjYWdlOjpKU1Zh
bHVlOgorICAgICAgICAgICAgcmV0dXJuIGpzVmFsdWVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlOwor
ICAgICAgICBjYXNlIEdpZ2FjYWdlOjpOdW1iZXJPZktpbmRzOgorICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIH0KKyAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAg
ICAgcmV0dXJuIHByaW1pdGl2ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2U7CisgICAgfQorICAgIAor
ICAgIC8vIFdoZW5ldmVyIHBvc3NpYmxlLCB1c2Ugc3Vic3BhY2VGb3I8Q2VsbFR5cGU+KHZtKSB0
byBnZXQgb25lIG9mIHRoZXNlIHN1YnNwYWNlcy4KKyAgICBDb21wbGV0ZVN1YnNwYWNlIGNlbGxT
cGFjZTsKKyAgICBDb21wbGV0ZVN1YnNwYWNlIHZhcmlhYmxlU2l6ZWRDZWxsU3BhY2U7IC8vIEZJ
WE1FOiBUaGlzIHNwYWNlIGlzIHByb2JsZW1hdGljIGJlY2F1c2Ugd2UgaGF2ZSB0aGluZ3MgaW4g
aGVyZSBsaWtlIERpcmVjdEFyZ3VtZW50cyBhbmQgU2NvcGVkQXJndW1lbnRzOyB0aG9zZSBzaG91
bGQgYmUgc3BsaXQgaW50byBKU1ZhbHVlT09CIGNlbGxzIGFuZCBKU1ZhbHVlU3RyaWN0IGF1eGls
aWFyaWVzLiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgyODU4Cisg
ICAgQ29tcGxldGVTdWJzcGFjZSBkZXN0cnVjdGlibGVPYmplY3RTcGFjZTsKKworICAgIElzb1N1
YnNwYWNlIGFycmF5U3BhY2U7CisgICAgSXNvU3Vic3BhY2UgYmlnSW50U3BhY2U7CisgICAgSXNv
U3Vic3BhY2UgY2FsbGVlU3BhY2U7CisgICAgSXNvU3Vic3BhY2UgY2xvbmVkQXJndW1lbnRzU3Bh
Y2U7CisgICAgSXNvU3Vic3BhY2UgY3VzdG9tR2V0dGVyU2V0dGVyU3BhY2U7CisgICAgSXNvU3Vi
c3BhY2UgZGF0ZUluc3RhbmNlU3BhY2U7CisgICAgSXNvU3Vic3BhY2UgZG9tQXR0cmlidXRlR2V0
dGVyU2V0dGVyU3BhY2U7CisgICAgSXNvU3Vic3BhY2UgZXhjZXB0aW9uU3BhY2U7CisgICAgSXNv
U3Vic3BhY2UgZXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZVNwYWNlOworICAgIElzb1N1YnNwYWNl
IGZ1bmN0aW9uU3BhY2U7CisgICAgSXNvU3Vic3BhY2UgZ2V0dGVyU2V0dGVyU3BhY2U7CisgICAg
SXNvU3Vic3BhY2UgZ2xvYmFsTGV4aWNhbEVudmlyb25tZW50U3BhY2U7CisgICAgSXNvU3Vic3Bh
Y2UgaW50ZXJuYWxGdW5jdGlvblNwYWNlOworICAgIElzb1N1YnNwYWNlIGpzUHJveHlTcGFjZTsK
KyAgICBJc29TdWJzcGFjZSBuYXRpdmVFeGVjdXRhYmxlU3BhY2U7CisgICAgSXNvU3Vic3BhY2Ug
bnVtYmVyT2JqZWN0U3BhY2U7CisgICAgSXNvU3Vic3BhY2UgcGxhaW5PYmplY3RTcGFjZTsKKyAg
ICBJc29TdWJzcGFjZSBwcm9taXNlU3BhY2U7CisgICAgSXNvU3Vic3BhY2UgcHJvcGVydHlOYW1l
RW51bWVyYXRvclNwYWNlOworICAgIElzb1N1YnNwYWNlIHByb3BlcnR5VGFibGVTcGFjZTsKKyAg
ICBJc29TdWJzcGFjZSByZWdFeHBTcGFjZTsKKyAgICBJc29TdWJzcGFjZSByZWdFeHBPYmplY3RT
cGFjZTsKKyAgICBJc29TdWJzcGFjZSByb3BlU3RyaW5nU3BhY2U7CisgICAgSXNvU3Vic3BhY2Ug
c2NvcGVkQXJndW1lbnRzU3BhY2U7CisgICAgSXNvU3Vic3BhY2Ugc3BhcnNlQXJyYXlWYWx1ZU1h
cFNwYWNlOworICAgIElzb1N1YnNwYWNlIHN0cmluZ1NwYWNlOworICAgIElzb1N1YnNwYWNlIHN0
cmluZ09iamVjdFNwYWNlOworICAgIElzb1N1YnNwYWNlIHN0cnVjdHVyZUNoYWluU3BhY2U7Cisg
ICAgSXNvU3Vic3BhY2Ugc3RydWN0dXJlUmFyZURhdGFTcGFjZTsKKyAgICBJc29TdWJzcGFjZSBz
dHJ1Y3R1cmVTcGFjZTsKKyAgICBJc29TdWJzcGFjZSBicmFuZGVkU3RydWN0dXJlU3BhY2U7Cisg
ICAgSXNvU3Vic3BhY2Ugc3ltYm9sVGFibGVTcGFjZTsKKworI2RlZmluZSBEWU5BTUlDX0lTT19T
VUJTUEFDRV9ERUZJTkVfTUVNQkVSKG5hbWUpIFwKKyAgICB0ZW1wbGF0ZTxTdWJzcGFjZUFjY2Vz
cyBtb2RlPiBcCisgICAgSXNvU3Vic3BhY2UqIG5hbWUoKSBcCisgICAgeyBcCisgICAgICAgIGlm
IChtXyMjbmFtZSB8fCBtb2RlID09IFN1YnNwYWNlQWNjZXNzOjpDb25jdXJyZW50bHkpIFwKKyAg
ICAgICAgICAgIHJldHVybiBtXyMjbmFtZS5nZXQoKTsgXAorICAgICAgICByZXR1cm4gbmFtZSMj
U2xvdygpOyBcCisgICAgfSBcCisgICAgSlNfRVhQT1JUX1BSSVZBVEUgSXNvU3Vic3BhY2UqIG5h
bWUjI1Nsb3coKTsgXAorICAgIHN0ZDo6dW5pcXVlX3B0cjxJc29TdWJzcGFjZT4gbV8jI25hbWU7
CisKKworI2lmIEpTQ19PQkpDX0FQSV9FTkFCTEVECisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0Vf
REVGSU5FX01FTUJFUihhcGlXcmFwcGVyT2JqZWN0U3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VC
U1BBQ0VfREVGSU5FX01FTUJFUihvYmpDQ2FsbGJhY2tGdW5jdGlvblNwYWNlKQorI2VuZGlmCisj
aWZkZWYgSlNDX0dMSUJfQVBJX0VOQUJMRUQKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJ
TkVfTUVNQkVSKGFwaVdyYXBwZXJPYmplY3RTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFD
RV9ERUZJTkVfTUVNQkVSKGpzY0NhbGxiYWNrRnVuY3Rpb25TcGFjZSkKKyAgICBEWU5BTUlDX0lT
T19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKGNhbGxiYWNrQVBJV3JhcHBlckdsb2JhbE9iamVjdFNw
YWNlKQorI2VuZGlmCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihhcGlH
bG9iYWxPYmplY3RTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVS
KGFwaVZhbHVlV3JhcHBlclNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9N
RU1CRVIoYXJyYXlCdWZmZXJTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVf
TUVNQkVSKGFycmF5SXRlcmF0b3JTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJ
TkVfTUVNQkVSKGFzeW5jR2VuZXJhdG9yU3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0Vf
REVGSU5FX01FTUJFUihiaWdJbnQ2NEFycmF5U3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BB
Q0VfREVGSU5FX01FTUJFUihiaWdJbnRPYmplY3RTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJT
UEFDRV9ERUZJTkVfTUVNQkVSKGJpZ1VpbnQ2NEFycmF5U3BhY2UpCisgICAgRFlOQU1JQ19JU09f
U1VCU1BBQ0VfREVGSU5FX01FTUJFUihib29sZWFuT2JqZWN0U3BhY2UpCisgICAgRFlOQU1JQ19J
U09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihib3VuZEZ1bmN0aW9uU3BhY2UpCisgICAgRFlOQU1J
Q19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihjYWxsYmFja0NvbnN0cnVjdG9yU3BhY2UpCisg
ICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihjYWxsYmFja0dsb2JhbE9iamVj
dFNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoY2FsbGJhY2tG
dW5jdGlvblNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoY2Fs
bGJhY2tPYmplY3RTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVS
KGN1c3RvbUdldHRlckZ1bmN0aW9uU3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVG
SU5FX01FTUJFUihjdXN0b21TZXR0ZXJGdW5jdGlvblNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NV
QlNQQUNFX0RFRklORV9NRU1CRVIoZGF0YVZpZXdTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJT
UEFDRV9ERUZJTkVfTUVNQkVSKGRlYnVnZ2VyU2NvcGVTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19T
VUJTUEFDRV9ERUZJTkVfTUVNQkVSKGVycm9ySW5zdGFuY2VTcGFjZSkKKyAgICBEWU5BTUlDX0lT
T19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKGZsb2F0MzJBcnJheVNwYWNlKQorICAgIERZTkFNSUNf
SVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoZmxvYXQ2NEFycmF5U3BhY2UpCisgICAgRFlOQU1J
Q19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihmdW5jdGlvblJhcmVEYXRhU3BhY2UpCisgICAg
RFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihnZW5lcmF0b3JTcGFjZSkKKyAgICBE
WU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKGdsb2JhbE9iamVjdFNwYWNlKQorICAg
IERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoaW5qZWN0ZWRTY3JpcHRIb3N0U3Bh
Y2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihpbnQ4QXJyYXlTcGFj
ZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKGludDE2QXJyYXlTcGFj
ZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKGludDMyQXJyYXlTcGFj
ZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKGphdmFTY3JpcHRDYWxs
RnJhbWVTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKGpzTW9k
dWxlUmVjb3JkU3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUiht
YXBCdWNrZXRTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKG1h
cEl0ZXJhdG9yU3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUiht
YXBTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKG1vZHVsZU5h
bWVzcGFjZU9iamVjdFNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1C
RVIobmF0aXZlU3RkRnVuY3Rpb25TcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJ
TkVfTUVNQkVSKHByb3h5T2JqZWN0U3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVG
SU5FX01FTUJFUihwcm94eVJldm9rZVNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RF
RklORV9NRU1CRVIoc2NvcGVkQXJndW1lbnRzVGFibGVTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19T
VUJTUEFDRV9ERUZJTkVfTUVNQkVSKHNjcmlwdEZldGNoUGFyYW1ldGVyc1NwYWNlKQorICAgIERZ
TkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoc2NyaXB0RmV0Y2hlclNwYWNlKQorICAg
IERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoc2V0QnVja2V0U3BhY2UpCisgICAg
RFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihzZXRJdGVyYXRvclNwYWNlKQorICAg
IERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoc2V0U3BhY2UpCisgICAgRFlOQU1J
Q19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihzaGFkb3dSZWFsbVNwYWNlKTsKKyAgICBEWU5B
TUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKHN0cmljdEV2YWxBY3RpdmF0aW9uU3BhY2Up
CisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihzdHJpbmdJdGVyYXRvclNw
YWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoc291cmNlQ29kZVNw
YWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoc3ltYm9sU3BhY2Up
CisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihzeW1ib2xPYmplY3RTcGFj
ZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKHRlbXBsYXRlT2JqZWN0
RGVzY3JpcHRvclNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIo
dGVtcG9yYWxDYWxlbmRhclNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9N
RU1CRVIodGVtcG9yYWxEdXJhdGlvblNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RF
RklORV9NRU1CRVIodGVtcG9yYWxJbnN0YW50U3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BB
Q0VfREVGSU5FX01FTUJFUih0ZW1wb3JhbFBsYWluVGltZVNwYWNlKQorICAgIERZTkFNSUNfSVNP
X1NVQlNQQUNFX0RFRklORV9NRU1CRVIodGVtcG9yYWxUaW1lWm9uZVNwYWNlKQorICAgIERZTkFN
SUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIodWludDhBcnJheVNwYWNlKQorICAgIERZTkFN
SUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIodWludDhDbGFtcGVkQXJyYXlTcGFjZSkKKyAg
ICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKHVpbnQxNkFycmF5U3BhY2UpCisg
ICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUih1aW50MzJBcnJheVNwYWNlKQor
ICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIodW5saW5rZWRFdmFsQ29kZUJs
b2NrU3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUih1bmxpbmtl
ZEZ1bmN0aW9uQ29kZUJsb2NrU3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5F
X01FTUJFUih1bmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2tTcGFjZSkKKyAgICBEWU5BTUlD
X0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKHVubGlua2VkUHJvZ3JhbUNvZGVCbG9ja1NwYWNl
KQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoZmluYWxpemF0aW9uUmVn
aXN0cnlTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKHdlYWtP
YmplY3RSZWZTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKHdl
YWtTZXRTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKHdlYWtN
YXBTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKHdpdGhTY29w
ZVNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoaW50bENvbGxh
dG9yU3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihpbnRsRGF0
ZVRpbWVGb3JtYXRTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVS
KGludGxEaXNwbGF5TmFtZXNTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVf
TUVNQkVSKGludGxMaXN0Rm9ybWF0U3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVG
SU5FX01FTUJFUihpbnRsTG9jYWxlU3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVG
SU5FX01FTUJFUihpbnRsTnVtYmVyRm9ybWF0U3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BB
Q0VfREVGSU5FX01FTUJFUihpbnRsUGx1cmFsUnVsZXNTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19T
VUJTUEFDRV9ERUZJTkVfTUVNQkVSKGludGxSZWxhdGl2ZVRpbWVGb3JtYXRTcGFjZSkKKyAgICBE
WU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKGludGxTZWdtZW50SXRlcmF0b3JTcGFj
ZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKGludGxTZWdtZW50ZXJT
cGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKGludGxTZWdtZW50
c1NwYWNlKQorI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFD
RV9ERUZJTkVfTUVNQkVSKGpzVG9XYXNtSUNDYWxsZWVTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19T
VUJTUEFDRV9ERUZJTkVfTUVNQkVSKHdlYkFzc2VtYmx5Q29kZUJsb2NrU3BhY2UpCisgICAgRFlO
QU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUih3ZWJBc3NlbWJseUV4Y2VwdGlvblNwYWNl
KQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIod2ViQXNzZW1ibHlGdW5j
dGlvblNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIod2ViQXNz
ZW1ibHlHbG9iYWxTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVS
KHdlYkFzc2VtYmx5SW5zdGFuY2VTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJ
TkVfTUVNQkVSKHdlYkFzc2VtYmx5TWVtb3J5U3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BB
Q0VfREVGSU5FX01FTUJFUih3ZWJBc3NlbWJseU1vZHVsZVNwYWNlKQorICAgIERZTkFNSUNfSVNP
X1NVQlNQQUNFX0RFRklORV9NRU1CRVIod2ViQXNzZW1ibHlNb2R1bGVSZWNvcmRTcGFjZSkKKyAg
ICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKHdlYkFzc2VtYmx5VGFibGVTcGFj
ZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKHdlYkFzc2VtYmx5VGFn
U3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUih3ZWJBc3NlbWJs
eVdyYXBwZXJGdW5jdGlvblNwYWNlKQorI2VuZGlmCisKKyN1bmRlZiBEWU5BTUlDX0lTT19TVUJT
UEFDRV9ERUZJTkVfTUVNQkVSCisgICAgCisgICAgSXNvQ2VsbFNldCBleGVjdXRhYmxlVG9Db2Rl
QmxvY2tFZGdlc1dpdGhDb25zdHJhaW50czsKKyAgICBJc29DZWxsU2V0IGV4ZWN1dGFibGVUb0Nv
ZGVCbG9ja0VkZ2VzV2l0aEZpbmFsaXplcnM7CisKKyNkZWZpbmUgRFlOQU1JQ19TUEFDRV9BTkRf
U0VUX0RFRklORV9NRU1CRVIobmFtZSkgXAorICAgIHRlbXBsYXRlPFN1YnNwYWNlQWNjZXNzIG1v
ZGU+IFwKKyAgICBJc29TdWJzcGFjZSogbmFtZSgpIFwKKyAgICB7IFwKKyAgICAgICAgaWYgKGF1
dG8qIHNwYWNlQW5kU2V0ID0gbV8jI25hbWUuZ2V0KCkpIFwKKyAgICAgICAgICAgIHJldHVybiAm
c3BhY2VBbmRTZXQtPnNwYWNlOyBcCisgICAgICAgIGlmIChtb2RlID09IFN1YnNwYWNlQWNjZXNz
OjpDb25jdXJyZW50bHkpIFwKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOyBcCisgICAgICAg
IHJldHVybiBuYW1lIyNTbG93KCk7IFwKKyAgICB9IFwKKyAgICBJc29TdWJzcGFjZSogbmFtZSMj
U2xvdygpOyBcCisgICAgc3RkOjp1bmlxdWVfcHRyPFNwYWNlQW5kU2V0PiBtXyMjbmFtZTsKKyAg
ICAKKyAgICBzdHJ1Y3QgU3BhY2VBbmRTZXQgeworICAgICAgICBXVEZfTUFLRV9TVFJVQ1RfRkFT
VF9BTExPQ0FURUQ7CisKKyAgICAgICAgSXNvU3Vic3BhY2Ugc3BhY2U7CisgICAgICAgIElzb0Nl
bGxTZXQgc2V0OworICAgICAgICAKKyAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gQXJndW1l
bnRzPgorICAgICAgICBTcGFjZUFuZFNldChBcmd1bWVudHMmJi4uLiBhcmd1bWVudHMpCisgICAg
ICAgICAgICA6IHNwYWNlKHN0ZDo6Zm9yd2FyZDxBcmd1bWVudHM+KGFyZ3VtZW50cykuLi4pCisg
ICAgICAgICAgICAsIHNldChzcGFjZSkKKyAgICAgICAgeworICAgICAgICB9CisgICAgICAgIAor
ICAgICAgICBzdGF0aWMgSXNvQ2VsbFNldCYgc2V0Rm9yKFN1YnNwYWNlJiBzcGFjZSkKKyAgICAg
ICAgeworICAgICAgICAgICAgcmV0dXJuICpiaXR3aXNlX2Nhc3Q8SXNvQ2VsbFNldCo+KAorICAg
ICAgICAgICAgICAgIGJpdHdpc2VfY2FzdDxjaGFyKj4oJnNwYWNlKSAtCisgICAgICAgICAgICAg
ICAgT0JKRUNUX09GRlNFVE9GKFNwYWNlQW5kU2V0LCBzcGFjZSkgKworICAgICAgICAgICAgICAg
IE9CSkVDVF9PRkZTRVRPRihTcGFjZUFuZFNldCwgc2V0KSk7CisgICAgICAgIH0KKyAgICB9Owor
ICAgIAorICAgIFNwYWNlQW5kU2V0IGNvZGVCbG9ja1NwYWNlOworCisgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgRnVuYz4KKyAgICB2b2lkIGZvckVhY2hDb2RlQmxvY2tTcGFjZShjb25zdCBGdW5jJiBm
dW5jKQorICAgIHsKKyAgICAgICAgLy8gVGhpcyBzaG91bGQgbm90IGluY2x1ZGUgd2ViQXNzZW1i
bHlDb2RlQmxvY2tTcGFjZSBiZWNhdXNlIHRoaXMgaXMgYWJvdXQgc3Vic2NsYXNzZXMgb2YKKyAg
ICAgICAgLy8gSlNDOjpDb2RlQmxvY2suCisgICAgICAgIGZ1bmMoY29kZUJsb2NrU3BhY2UpOwor
ICAgIH0KKworICAgIERZTkFNSUNfU1BBQ0VfQU5EX1NFVF9ERUZJTkVfTUVNQkVSKGV2YWxFeGVj
dXRhYmxlU3BhY2UpCisgICAgRFlOQU1JQ19TUEFDRV9BTkRfU0VUX0RFRklORV9NRU1CRVIobW9k
dWxlUHJvZ3JhbUV4ZWN1dGFibGVTcGFjZSkKKyAgICBTcGFjZUFuZFNldCBmdW5jdGlvbkV4ZWN1
dGFibGVTcGFjZTsKKyAgICBTcGFjZUFuZFNldCBwcm9ncmFtRXhlY3V0YWJsZVNwYWNlOworCisg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuYz4KKyAgICB2b2lkIGZvckVhY2hTY3JpcHRFeGVjdXRh
YmxlU3BhY2UoY29uc3QgRnVuYyYgZnVuYykKKyAgICB7CisgICAgICAgIGlmIChtX2V2YWxFeGVj
dXRhYmxlU3BhY2UpCisgICAgICAgICAgICBmdW5jKCptX2V2YWxFeGVjdXRhYmxlU3BhY2UpOwor
ICAgICAgICBmdW5jKGZ1bmN0aW9uRXhlY3V0YWJsZVNwYWNlKTsKKyAgICAgICAgaWYgKG1fbW9k
dWxlUHJvZ3JhbUV4ZWN1dGFibGVTcGFjZSkKKyAgICAgICAgICAgIGZ1bmMoKm1fbW9kdWxlUHJv
Z3JhbUV4ZWN1dGFibGVTcGFjZSk7CisgICAgICAgIGZ1bmMocHJvZ3JhbUV4ZWN1dGFibGVTcGFj
ZSk7CisgICAgfQorCisgICAgU3BhY2VBbmRTZXQgdW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGVT
cGFjZTsKKworI3VuZGVmIERZTkFNSUNfU1BBQ0VfQU5EX1NFVF9ERUZJTkVfTUVNQkVSCiB9Owog
CiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lz
b0hlYXBDZWxsVHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvSXNvSGVhcENlbGxUeXBlLmNwcAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvSXNvSGVhcENlbGxUeXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzEs
MjIgKzMxLDQ5IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1Jc29IZWFwQ2VsbFR5cGU6Oklzb0hl
YXBDZWxsVHlwZShEZXN0cnVjdGlvbk1vZGUgZGVzdHJ1Y3Rpb25Nb2RlLCBEZXN0cm95RnVuY3Rp
b25QdHIgZGVzdHJveUZ1bmN0aW9uKQotICAgIDogSGVhcENlbGxUeXBlKENlbGxBdHRyaWJ1dGVz
KGRlc3RydWN0aW9uTW9kZSwgSGVhcENlbGw6OkpTQ2VsbCkpCi0gICAgLCBtX2Rlc3Ryb3koZGVz
dHJveUZ1bmN0aW9uKQotewotfQotCi1Jc29IZWFwQ2VsbFR5cGU6On5Jc29IZWFwQ2VsbFR5cGUo
KSA9IGRlZmF1bHQ7CisvL0lzb0hlYXBDZWxsVHlwZTo6SXNvSGVhcENlbGxUeXBlKERlc3RydWN0
aW9uTW9kZSBkZXN0cnVjdGlvbk1vZGUsIERlc3Ryb3lGdW5jdGlvblB0ciBkZXN0cm95RnVuY3Rp
b24pCisvLyAgICA6IEhlYXBDZWxsVHlwZShDZWxsQXR0cmlidXRlcyhkZXN0cnVjdGlvbk1vZGUs
IEhlYXBDZWxsOjpKU0NlbGwpKQorLy8gICAgLCBtX2Rlc3Ryb3koZGVzdHJveUZ1bmN0aW9uKQor
Ly97CisvL30KKy8vCisvL0lzb0hlYXBDZWxsVHlwZTo6fklzb0hlYXBDZWxsVHlwZSgpID0gZGVm
YXVsdDsKKy8vCisvL3ZvaWQgSXNvSGVhcENlbGxUeXBlOjpmaW5pc2hTd2VlcChNYXJrZWRCbG9j
azo6SGFuZGxlJiBoYW5kbGUsIEZyZWVMaXN0KiBmcmVlTGlzdCkgY29uc3QKKy8veworLy8gICAg
aGFuZGxlLmZpbmlzaFN3ZWVwS25vd2luZ0hlYXBDZWxsVHlwZShmcmVlTGlzdCwgKnRoaXMpOwor
Ly99CisvLworLy92b2lkIElzb0hlYXBDZWxsVHlwZTo6ZGVzdHJveShWTSYsIEpTQ2VsbCogY2Vs
bCkgY29uc3QKKy8veworLy8gICAgbV9kZXN0cm95KGNlbGwpOworLy99CiAKLXZvaWQgSXNvSGVh
cENlbGxUeXBlOjpmaW5pc2hTd2VlcChNYXJrZWRCbG9jazo6SGFuZGxlJiBoYW5kbGUsIEZyZWVM
aXN0KiBmcmVlTGlzdCkgY29uc3QKK3ZvaWQgSXNvSGVhcENlbGxUeXBlQmFzZTo6ZmluaXNoU3dl
ZXAoTWFya2VkQmxvY2s6OkhhbmRsZSYgaGFuZGxlLCBGcmVlTGlzdCogZnJlZUxpc3QpIGNvbnN0
CiB7Ci0gICAgaGFuZGxlLmZpbmlzaFN3ZWVwS25vd2luZ0hlYXBDZWxsVHlwZShmcmVlTGlzdCwg
KnRoaXMpOwotfQorICAgIC8vIGZpbmlzaFN3ZWVwS25vd2luZ0hlYXBDZWxsVHlwZSgpIG1heSBj
YWxsIGRlc3Ryb3kgaW4gYSBsb29wLCBhbmQgd2UgZG9uJ3QKKyAgICAvLyB3YW50IHRvIGRvIGEg
dmlydHVhbCBmdW5jdGlvbiB0byBkbyB0aGUgZGVzdHJveSBpbiB0aGF0IGxvb3AuIEluc3RlYWQs
CisgICAgLy8gd2UgY2FsbCB0aGUgdmlydHVhbCBmdW5jdGlvbiBkZXN0cm95RnVuY3Rpb25QdHIo
KSBvbmx5IG9uY2UgdG8gZmV0Y2ggdGhlCisgICAgLy8gRGVzdHJveUZ1bmN0aW9uUHRyLCBhbmQg
dXNlIHRoaXMgSW52b2tlciBjbGFzcyB0byBjYWNoZSB0aGUgcmV0dXJuZWQKKyAgICAvLyBEZXN0
cm95RnVuY3Rpb25QdHIuIGZpbmlzaFN3ZWVwS25vd2luZ0hlYXBDZWxsVHlwZSgpIGNhbiB0aGVu
IGludm9rZQorICAgIC8vIGRlc3Ryb3kgdmlhIEludm9rZXIncyBjYWNoZWQgRGVzdHJveUZ1bmN0
aW9uUHRyLgorICAgIGNsYXNzIEludm9rZXIgeworICAgIHB1YmxpYzoKKyAgICAgICAgSW52b2tl
cihEZXN0cm95RnVuY3Rpb25QdHIgZGVzdHJveUZ1bmN0aW9uUHRyKQorICAgICAgICAgICAgOiBt
X2Rlc3Ryb3koZGVzdHJveUZ1bmN0aW9uUHRyKQorICAgICAgICB7IH0KKworICAgICAgICBBTFdB
WVNfSU5MSU5FIHZvaWQgb3BlcmF0b3IoKShWTSYsIEpTQ2VsbCogY2VsbCkgY29uc3QKKyAgICAg
ICAgeworICAgICAgICAgICAgbV9kZXN0cm95KGNlbGwpOworICAgICAgICB9CisKKyAgICBwcml2
YXRlOgorICAgICAgICBEZXN0cm95RnVuY3Rpb25QdHIgbV9kZXN0cm95OworICAgIH07CiAKLXZv
aWQgSXNvSGVhcENlbGxUeXBlOjpkZXN0cm95KFZNJiwgSlNDZWxsKiBjZWxsKSBjb25zdAotewot
ICAgIG1fZGVzdHJveShjZWxsKTsKKyAgICBJbnZva2VyIGludm9rZXIoZGVzdHJveUZ1bmN0aW9u
UHRyKCkpOworICAgIGhhbmRsZS5maW5pc2hTd2VlcEtub3dpbmdIZWFwQ2VsbFR5cGUoZnJlZUxp
c3QsIGludm9rZXIpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL0lzb0hlYXBDZWxsVHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL0lzb0hlYXBDZWxsVHlwZS5oCShyZXZpc2lvbiAyODYwOTUpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Jc29IZWFwQ2VsbFR5cGUuaAkod29ya2luZyBj
b3B5KQpAQCAtMjksMzAgKzI5LDc2IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1jbGFzcyBJc29I
ZWFwQ2VsbFR5cGUgZmluYWwgOiBwdWJsaWMgSGVhcENlbGxUeXBlIHsKKy8vY2xhc3MgSXNvSGVh
cENlbGxUeXBlIGZpbmFsIDogcHVibGljIEhlYXBDZWxsVHlwZSB7CisvL3B1YmxpYzoKKy8vICAg
IHVzaW5nIERlc3Ryb3lGdW5jdGlvblB0ciA9IHZvaWQgKCopKEpTQ2VsbCopOworLy8KKy8vICAg
IEpTX0VYUE9SVF9QUklWQVRFIH5Jc29IZWFwQ2VsbFR5cGUoKTsKKy8vCisvLyAgICBKU19FWFBP
UlRfUFJJVkFURSBJc29IZWFwQ2VsbFR5cGUoRGVzdHJ1Y3Rpb25Nb2RlLCBEZXN0cm95RnVuY3Rp
b25QdHIpOworLy8KKy8vICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlPgorLy8gICAgc3Ry
dWN0IEFyZ3MgeworLy8gICAgICAgIEFyZ3MoKQorLy8gICAgICAgICAgICA6IG1vZGUoQ2VsbFR5
cGU6Om5lZWRzRGVzdHJ1Y3Rpb24gPyBOZWVkc0Rlc3RydWN0aW9uIDogRG9lc05vdE5lZWREZXN0
cnVjdGlvbikKKy8vICAgICAgICAgICAgLCBmdW5jdGlvblB0cigmQ2VsbFR5cGU6OmRlc3Ryb3kp
CisvLyAgICAgICAgeyB9CisvLworLy8gICAgICAgIERlc3RydWN0aW9uTW9kZSBtb2RlOworLy8g
ICAgICAgIERlc3Ryb3lGdW5jdGlvblB0ciBmdW5jdGlvblB0cjsKKy8vICAgIH07CisvLworLy8g
ICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGU+CisvLyAgICBJc29IZWFwQ2VsbFR5cGUoQXJn
czxDZWxsVHlwZT4mJiBhcmdzKQorLy8gICAgICAgIDogSXNvSGVhcENlbGxUeXBlKGFyZ3MubW9k
ZSwgYXJncy5mdW5jdGlvblB0cikKKy8vICAgIHsgfQorLy8KKy8vICAgIEpTX0VYUE9SVF9QUklW
QVRFIHZvaWQgZmluaXNoU3dlZXAoTWFya2VkQmxvY2s6OkhhbmRsZSYsIEZyZWVMaXN0KikgY29u
c3QgZmluYWw7CisvLyAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIGRlc3Ryb3koVk0mLCBKU0Nl
bGwqKSBjb25zdCBmaW5hbDsKKy8vCisvLyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgb3BlcmF0b3Io
KShWTSYsIEpTQ2VsbCogY2VsbCkgY29uc3QKKy8vICAgIHsKKy8vICAgICAgICBtX2Rlc3Ryb3ko
Y2VsbCk7CisvLyAgICB9CisvLworLy9wcml2YXRlOgorLy8gICAgRGVzdHJveUZ1bmN0aW9uUHRy
IFdURl9WVEJMX0ZVTkNQVFJfUFRSQVVUSF9TVFIoIklzb0hlYXBDZWxsVHlwZS5kZXN0cm95Iikg
bV9kZXN0cm95OworLy99OworCisvLyBUaGUgcmVhc29uIHdlIG5lZWQgYW4gSXNvSGVhcENlbGxU
eXBlQmFzZSBpcyBqdXN0IHNvIGFsbCBJc29IZWFwQ2VsbFR5cGUKKy8vIHNwZWNpYWxpemF0aW9u
cyBjYW4gc2hhcmUgdGhlIHNhbWUgZmluaXNoU3dlZXAoKS4gZmluaXNoU3dlZXAoKSBuZWVkcyB0
byBjYWxsCisvLyBNYXJrZWRCbG9jazo6SGFuZGxlOjpmaW5pc2hTd2VlcEtub3dpbmdIZWFwQ2Vs
bFR5cGUoKSwgd2hpY2ggaXMgYSByZWxhdGl2ZWx5CisvLyBsYXJnZSB0ZW1wbGF0ZSBmdW5jdGlv
bi4gV2UgZG9uJ3Qgd2FudCB0byBpbnN0YW50aWF0ZSBhIHNwZWNpYWxpemF0aW9uIG9mCisvLyBm
aW5pc2hTd2VlcEtub3dpbmdIZWFwQ2VsbFR5cGUoKSBmb3IgZWFjaCBJc29IZWFwQ2VsbFR5cGUg
Y2VsbCB0eXBlLgorY2xhc3MgSXNvSGVhcENlbGxUeXBlQmFzZSA6IHB1YmxpYyBIZWFwQ2VsbFR5
cGUgewogcHVibGljOgogICAgIHVzaW5nIERlc3Ryb3lGdW5jdGlvblB0ciA9IHZvaWQgKCopKEpT
Q2VsbCopOwogCi0gICAgSlNfRVhQT1JUX1BSSVZBVEUgfklzb0hlYXBDZWxsVHlwZSgpOworICAg
IEFMV0FZU19JTkxJTkUgSXNvSGVhcENlbGxUeXBlQmFzZShDZWxsQXR0cmlidXRlcyBhdHRyaWJ1
dGVzKQorICAgICAgICA6IEhlYXBDZWxsVHlwZShhdHRyaWJ1dGVzKQorICAgIHsgfQogCi0gICAg
SlNfRVhQT1JUX1BSSVZBVEUgSXNvSGVhcENlbGxUeXBlKERlc3RydWN0aW9uTW9kZSwgRGVzdHJv
eUZ1bmN0aW9uUHRyKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIGZpbmlzaFN3ZWVwKE1h
cmtlZEJsb2NrOjpIYW5kbGUmIGhhbmRsZSwgRnJlZUxpc3QqIGZyZWVMaXN0KSBjb25zdCBmaW5h
bDsKIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlPgotICAgIHN0YXRpYyBzdGQ6OnVu
aXF1ZV9wdHI8SXNvSGVhcENlbGxUeXBlPiBjcmVhdGUoKQotICAgIHsKLSAgICAgICAgcmV0dXJu
IG1ha2VVbmlxdWU8SXNvSGVhcENlbGxUeXBlPihDZWxsVHlwZTo6bmVlZHNEZXN0cnVjdGlvbiA/
IE5lZWRzRGVzdHJ1Y3Rpb24gOiBEb2VzTm90TmVlZERlc3RydWN0aW9uLCAmQ2VsbFR5cGU6OmRl
c3Ryb3kpOwotICAgIH0KKyAgICB2aXJ0dWFsIERlc3Ryb3lGdW5jdGlvblB0ciBkZXN0cm95RnVu
Y3Rpb25QdHIoKSBjb25zdCA9IDA7Cit9OwogCi0gICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBm
aW5pc2hTd2VlcChNYXJrZWRCbG9jazo6SGFuZGxlJiwgRnJlZUxpc3QqKSBjb25zdCBmaW5hbDsK
LSAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIGRlc3Ryb3koVk0mLCBKU0NlbGwqKSBjb25zdCBm
aW5hbDsKK3RlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlPgorY2xhc3MgSXNvSGVhcENlbGxUeXBl
IGZpbmFsIDogcHVibGljIElzb0hlYXBDZWxsVHlwZUJhc2UgeworcHVibGljOgorICAgIElzb0hl
YXBDZWxsVHlwZSgpCisgICAgICAgIDogSXNvSGVhcENlbGxUeXBlQmFzZShDZWxsQXR0cmlidXRl
cyhDZWxsVHlwZTo6bmVlZHNEZXN0cnVjdGlvbiA/IE5lZWRzRGVzdHJ1Y3Rpb24gOiBEb2VzTm90
TmVlZERlc3RydWN0aW9uLCBIZWFwQ2VsbDo6SlNDZWxsKSkKKyAgICB7IH0KIAotICAgIEFMV0FZ
U19JTkxJTkUgdm9pZCBvcGVyYXRvcigpKFZNJiwgSlNDZWxsKiBjZWxsKSBjb25zdAorICAgIHZv
aWQgZGVzdHJveShWTSYsIEpTQ2VsbCogY2VsbCkgY29uc3QgZmluYWwKICAgICB7Ci0gICAgICAg
IG1fZGVzdHJveShjZWxsKTsKKyAgICAgICAgQ2VsbFR5cGU6OmRlc3Ryb3koY2VsbCk7CiAgICAg
fQogCi1wcml2YXRlOgotICAgIERlc3Ryb3lGdW5jdGlvblB0ciBXVEZfVlRCTF9GVU5DUFRSX1BU
UkFVVEhfU1RSKCJJc29IZWFwQ2VsbFR5cGUuZGVzdHJveSIpIG1fZGVzdHJveTsKKyAgICBEZXN0
cm95RnVuY3Rpb25QdHIgZGVzdHJveUZ1bmN0aW9uUHRyKCkgY29uc3QgZmluYWwKKyAgICB7Cisg
ICAgICAgIHJldHVybiAmQ2VsbFR5cGU6OmRlc3Ryb3k7CisgICAgfQogfTsKIAogfSAvLyBuYW1l
c3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Jc29JbmxpbmVkSGVh
cENlbGxUeXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSXNv
SW5saW5lZEhlYXBDZWxsVHlwZS5oCShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9Jc29JbmxpbmVkSGVhcENlbGxUeXBlLmgJKHdvcmtpbmcgY29weSkKQEAg
LTMyLDI4ICszMiwxMyBAQCBuYW1lc3BhY2UgSlNDIHsKIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxU
eXBlPgogY2xhc3MgSXNvSW5saW5lZEhlYXBDZWxsVHlwZSBmaW5hbCA6IHB1YmxpYyBIZWFwQ2Vs
bFR5cGUgewogcHVibGljOgotICAgIElzb0lubGluZWRIZWFwQ2VsbFR5cGUoKQotICAgICAgICA6
IEhlYXBDZWxsVHlwZShDZWxsQXR0cmlidXRlcyhDZWxsVHlwZTo6bmVlZHNEZXN0cnVjdGlvbiA/
IE5lZWRzRGVzdHJ1Y3Rpb24gOiBEb2VzTm90TmVlZERlc3RydWN0aW9uLCBIZWFwQ2VsbDo6SlND
ZWxsKSkKLSAgICB7Ci0gICAgfQotCisgICAgSXNvSW5saW5lZEhlYXBDZWxsVHlwZSgpOwogICAg
IHN0cnVjdCBEZXN0cm95RnVuYyB7Ci0gICAgICAgIEFMV0FZU19JTkxJTkUgdm9pZCBvcGVyYXRv
cigpKFZNJiwgSlNDZWxsKiBjZWxsKSBjb25zdAotICAgICAgICB7Ci0gICAgICAgICAgICBDZWxs
VHlwZTo6ZGVzdHJveShjZWxsKTsKLSAgICAgICAgfQorICAgICAgICBBTFdBWVNfSU5MSU5FIHZv
aWQgb3BlcmF0b3IoKShWTSYsIEpTQ2VsbCogY2VsbCkgY29uc3Q7CiAgICAgfTsKIAotICAgIHZv
aWQgZmluaXNoU3dlZXAoTWFya2VkQmxvY2s6OkhhbmRsZSYgaGFuZGxlLCBGcmVlTGlzdCogZnJl
ZUxpc3QpIGNvbnN0IGZpbmFsCi0gICAgewotICAgICAgICBoYW5kbGUuZmluaXNoU3dlZXBLbm93
aW5nSGVhcENlbGxUeXBlKGZyZWVMaXN0LCBEZXN0cm95RnVuYygpKTsKLSAgICB9Ci0KLSAgICB2
b2lkIGRlc3Ryb3koVk0mLCBKU0NlbGwqIGNlbGwpIGNvbnN0IGZpbmFsCi0gICAgewotICAgICAg
ICBDZWxsVHlwZTo6ZGVzdHJveShjZWxsKTsKLSAgICB9CisgICAgdm9pZCBmaW5pc2hTd2VlcChN
YXJrZWRCbG9jazo6SGFuZGxlJiBoYW5kbGUsIEZyZWVMaXN0KiBmcmVlTGlzdCkgY29uc3QgZmlu
YWw7CisgICAgdm9pZCBkZXN0cm95KFZNJiwgSlNDZWxsKiBjZWxsKSBjb25zdCBmaW5hbDsKIH07
CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwotCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVh
cC9Jc29JbmxpbmVkSGVhcENlbGxUeXBlSW5saW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL0lzb0lubGluZWRIZWFwQ2VsbFR5cGVJbmxpbmVzLmgJKG5vbmV4
aXN0ZW50KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSXNvSW5saW5lZEhlYXBDZWxs
VHlwZUlubGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDU4IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNs
dWRlICJJc29JbmxpbmVkSGVhcENlbGxUeXBlLmgiCisKKyNpbmNsdWRlICJNYXJrZWRCbG9jay5o
IgorCituYW1lc3BhY2UgSlNDIHsKKwordGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGU+Citpbmxp
bmUgSXNvSW5saW5lZEhlYXBDZWxsVHlwZTxDZWxsVHlwZT46Oklzb0lubGluZWRIZWFwQ2VsbFR5
cGUoKQorICAgIDogSGVhcENlbGxUeXBlKENlbGxBdHRyaWJ1dGVzKENlbGxUeXBlOjpuZWVkc0Rl
c3RydWN0aW9uID8gTmVlZHNEZXN0cnVjdGlvbiA6IERvZXNOb3ROZWVkRGVzdHJ1Y3Rpb24sIEhl
YXBDZWxsOjpKU0NlbGwpKQoreworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZT4KK0FM
V0FZU19JTkxJTkUgdm9pZCBJc29JbmxpbmVkSGVhcENlbGxUeXBlPENlbGxUeXBlPjo6RGVzdHJv
eUZ1bmM6Om9wZXJhdG9yKCkoVk0mLCBKU0NlbGwqIGNlbGwpIGNvbnN0Cit7CisgICAgQ2VsbFR5
cGU6OmRlc3Ryb3koY2VsbCk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlPgoraW5s
aW5lIHZvaWQgSXNvSW5saW5lZEhlYXBDZWxsVHlwZTxDZWxsVHlwZT46OmZpbmlzaFN3ZWVwKE1h
cmtlZEJsb2NrOjpIYW5kbGUmIGhhbmRsZSwgRnJlZUxpc3QqIGZyZWVMaXN0KSBjb25zdAorewor
ICAgIGhhbmRsZS5maW5pc2hTd2VlcEtub3dpbmdIZWFwQ2VsbFR5cGUoZnJlZUxpc3QsIERlc3Ry
b3lGdW5jKCkpOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZT4KK2lubGluZSB2b2lk
IElzb0lubGluZWRIZWFwQ2VsbFR5cGU8Q2VsbFR5cGU+OjpkZXN0cm95KFZNJiwgSlNDZWxsKiBj
ZWxsKSBjb25zdAoreworICAgIENlbGxUeXBlOjpkZXN0cm95KGNlbGwpOworfQorCit9IC8vIG5h
bWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lzb1N1YnNwYWNl
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSXNvU3Vic3BhY2Uu
aAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSXNvU3Vi
c3BhY2UuaAkod29ya2luZyBjb3B5KQpAQCAtNTQsNyArNTQsNyBAQCBwdWJsaWM6CiAgICAgdm9p
ZCogdHJ5QWxsb2NhdGVGcm9tTG93ZXJUaWVyKCk7CiAgICAgdm9pZCBkZXN0cm95TG93ZXJUaWVy
RnJlZUxpc3QoKTsKIAotICAgIHZvaWQgc3dlZXAoKTsKKyAgICB2b2lkIHN3ZWVwMygpOwogCiAg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuYz4gdm9pZCBmb3JFYWNoTG93ZXJUaWVyRnJlZUxpc3Rl
ZFByZWNpc2VBbGxvY2F0aW9uKGNvbnN0IEZ1bmMmKTsKIApJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvSXNvU3Vic3BhY2VJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvSXNvU3Vic3BhY2VJbmxpbmVzLmgJKHJldmlzaW9uIDI4NjA5NSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lzb1N1YnNwYWNlSW5saW5lcy5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC00NCw3ICs0NCw3IEBAIGlubGluZSB2b2lkIElzb1N1YnNwYWNlOjpjbGVh
cklzb0NlbGxTZXQKICAgICAgICAgfSk7CiB9CiAKLWlubGluZSB2b2lkIElzb1N1YnNwYWNlOjpz
d2VlcCgpCitpbmxpbmUgdm9pZCBJc29TdWJzcGFjZTo6c3dlZXAzKCkKIHsKICAgICBTdWJzcGFj
ZTo6c3dlZXBCbG9ja3MoKTsKICAgICAvLyBXZSBzd2VlcCBwcmVjaXNlLWFsbG9jYXRpb25zIGVh
Z2VybHksIGJ1dCB3ZSBkbyBub3QgZnJlZSBpdCBpbW1lZGlhdGVseS4KSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrSW5saW5lcy5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrSW5saW5lcy5oCShyZXZpc2lvbiAy
ODYwOTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9ja0lubGluZXMu
aAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTYtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTYtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKQEAgLTIxMyw3ICsyMTMsNyBAQCBpbmxpbmUgYm9vbCBNYXJrZWRC
bG9jazo6SGFuZGxlOjphcmVNYXJrCiAvLyBzd2VlcE1vZGUgPT0gU3dlZXBUb0ZyZWVMaXN0CiAv
LyBzY3JpYmJsZU1vZGUgPT0gRG9udFNjcmliYmxlCiAvLyBuZXdseUFsbG9jYXRlZE1vZGUgPT0g
RG9lc05vdEhhdmVOZXdseUFsbG9jYXRlZAotLy8gZGVzdHJ1Y3Rpb25Nb2RlICE9IEJsb2NrSGFz
RGVzdHJpY3RvcnNBbmRDb2xsZWN0b3JJc1J1bm5pbmcKKy8vIGRlc3RydWN0aW9uTW9kZSAhPSBC
bG9ja0hhc0Rlc3RydWN0b3JzQW5kQ29sbGVjdG9ySXNSdW5uaW5nCiAvLwogLy8gZW1wdHlNb2Rl
ID0gSXNFbXB0eQogLy8gICAgIGRlc3RydWN0aW9uTW9kZSA9IERvZXNOb3ROZWVkRGVzdHJ1Y3Rp
b24KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNJbmplY3RlZFNjcmlw
dEhvc3RQcm90b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL0pTSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBlLmgJKHJldmlzaW9uIDI4NjA5NSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNJbmplY3RlZFNjcmlwdEhvc3RQ
cm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtNDAsNyArNDAsNyBAQCBwdWJsaWM6CiAgICAg
c3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsK
ICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNJbmplY3RlZFNj
cmlwdEhvc3RQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0
U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAog
ICAgIERFQ0xBUkVfSU5GTzsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
SlNKYXZhU2NyaXB0Q2FsbEZyYW1lUHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0phdmFTY3JpcHRDYWxsRnJhbWVQcm90b3R5cGUuaAko
cmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0ph
dmFTY3JpcHRDYWxsRnJhbWVQcm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtNDAsNyArNDAs
NyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpT
Qzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hB
UkFCTEUoSlNKYXZhU2NyaXB0Q2FsbEZyYW1lUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0
dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0
U3BhY2UoKTsKICAgICB9CiAKICAgICBERUNMQVJFX0lORk87CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW50ZXJwcmV0ZXIvQ2FsbEZyYW1lLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0NhbGxGcmFtZS5oCShyZXZpc2lvbiAyODYwOTUpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvQ2FsbEZyYW1lLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTM4LDYgKzM4LDcgQEAgbmFtZXNwYWNlIEpTQyAgewogICAgIGNsYXNzIEpTQ2Fs
bGVlOwogICAgIGNsYXNzIEpTU2NvcGU7CiAgICAgY2xhc3MgU291cmNlT3JpZ2luOworICAgIGNs
YXNzIFZpcnR1YWxSZWdpc3RlcjsKIAogICAgIHN0cnVjdCBJbnN0cnVjdGlvbjsKIApJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQWdncmVnYXRlRXJyb3JQcm90b3R5cGUuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BZ2dyZWdhdGVFcnJv
clByb3RvdHlwZS5oCShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9BZ2dyZWdhdGVFcnJvclByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00NCw3
ICs0NCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZN
JiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxF
KEFnZ3JlZ2F0ZUVycm9yUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFp
bk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAg
ICB9CiAKICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5SXRlcmF0b3JQcm90b3R5cGUuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUl0ZXJhdG9yUHJvdG90
eXBlLmgJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0FycmF5SXRlcmF0b3JQcm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzgsNyArMzgsNyBA
QCBwdWJsaWM6CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAg
ICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShBcnJheUl0
ZXJhdG9yUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNw
YWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAg
ICBzdGF0aWMgQXJyYXlJdGVyYXRvclByb3RvdHlwZSogY3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Bc3luY0Zyb21TeW5jSXRlcmF0b3JQcm90b3R5cGUuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bc3luY0Zyb21TeW5j
SXRlcmF0b3JQcm90b3R5cGUuaAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQXN5bmNGcm9tU3luY0l0ZXJhdG9yUHJvdG90eXBlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTEsNSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDE3LTIwMTkgT2xl
a3NhbmRyIFNrYWNoa292IDxnc2thY2hrb3ZAZ21haWwuY29tPi4KKyAqIENvcHlyaWdodCAoQykg
MjAyMSBBcHBsZSwgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCkBAIC0zNyw3ICszOCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vi
c3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRf
SVNPX1NVQlNQQUNFX1NIQVJBQkxFKEFzeW5jRnJvbVN5bmNJdGVyYXRvclByb3RvdHlwZSwgQmFz
ZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJu
ICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAgREVDTEFSRV9JTkZPOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXN5bmNGdW5jdGlvblByb3RvdHlwZS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FzeW5jRnVuY3Rp
b25Qcm90b3R5cGUuaAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQXN5bmNGdW5jdGlvblByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw3
ICszOCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZN
JiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxF
KEFzeW5jRnVuY3Rpb25Qcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWlu
T2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAg
IH0KIAogICAgIERFQ0xBUkVfSU5GTzsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0FzeW5jR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bc3luY0dlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBl
LmgJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Fz
eW5jR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzgsNyAr
MzgsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYg
dm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShB
c3luY0dlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2
bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2Uo
KTsKICAgICB9CiAKICAgICBERUNMQVJFX0lORk87CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Bc3luY0dlbmVyYXRvclByb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FzeW5jR2VuZXJhdG9yUHJvdG90eXBlLmgJKHJldmlz
aW9uIDI4NjA5NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FzeW5jR2VuZXJh
dG9yUHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQxLDcgKzQxLDcgQEAgcHVibGljOgog
ICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAg
ICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoQXN5bmNHZW5lcmF0b3JQcm90
b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAg
ICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBB
c3luY0dlbmVyYXRvclByb3RvdHlwZSogY3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqLCBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0FzeW5jSXRlcmF0b3JQcm90b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Bc3luY0l0ZXJhdG9yUHJvdG90eXBlLmgJKHJldmlzaW9uIDI4NjA5NSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FzeW5jSXRlcmF0b3JQcm90b3R5cGUu
aAkod29ya2luZyBjb3B5KQpAQCAtMzksNyArMzksNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIElz
b1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNT
RVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShBc3luY0l0ZXJhdG9yUHJvdG90eXBlLCBCYXNlKTsK
LSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZt
LnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgQXN5bmNJdGVyYXRvclBy
b3RvdHlwZSogY3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9B
dG9taWNzT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQXRvbWljc09iamVjdC5oCShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9BdG9taWNzT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1
IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zNyw3ICsz
Nyw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2
bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEF0
b21pY3NPYmplY3QsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7
CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KICAgICAKICAg
ICBzdGF0aWMgQXRvbWljc09iamVjdCogY3JlYXRlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1
Y3R1cmUqKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0JpZ0ludFByb3Rv
dHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0JpZ0lu
dFByb3RvdHlwZS5oCShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9CaWdJbnRQcm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzksNyArMzksNyBA
QCBwdWJsaWM6CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAg
ICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShCaWdJbnRQ
cm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7Cisg
ICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRp
YyBCaWdJbnRQcm90b3R5cGUqIGNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQnJhbmRlZFN0cnVjdHVyZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0JyYW5kZWRTdHJ1Y3R1cmUuaAkocmV2aXNpb24gMjg2MDk1KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQnJhbmRlZFN0cnVjdHVyZS5oCSh3b3JraW5n
IGNvcHkpCkBAIC00Nyw3ICs0Nyw3IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBD
ZWxsVHlwZSwgU3Vic3BhY2VBY2Nlc3M+CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFj
ZUZvcihWTSYgdm0pCiAgICAgewotICAgICAgICByZXR1cm4gJnZtLmJyYW5kZWRTdHJ1Y3R1cmVT
cGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5icmFuZGVkU3RydWN0dXJlU3BhY2UoKTsKICAgICB9
CiAKICAgICBBTFdBWVNfSU5MSU5FIGJvb2wgY2hlY2tCcmFuZChTeW1ib2wqIGJyYW5kKQpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQnV0dGVyZmx5SW5saW5lcy5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0J1dHRlcmZseUlubGluZXMu
aAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQnV0
dGVyZmx5SW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC03Nyw3ICs3Nyw3IEBAIEFMV0FZU19J
TkxJTkUgdW5zaWduZWQgQnV0dGVyZmx5OjpvcHRpbWEKIGlubGluZSBCdXR0ZXJmbHkqIEJ1dHRl
cmZseTo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZChWTSYgdm0sIEpTT2JqZWN0Kiwgc2l6ZV90IHBy
ZUNhcGFjaXR5LCBzaXplX3QgcHJvcGVydHlDYXBhY2l0eSwgYm9vbCBoYXNJbmRleGluZ0hlYWRl
ciwgc2l6ZV90IGluZGV4aW5nUGF5bG9hZFNpemVJbkJ5dGVzLCBHQ0RlZmVycmFsQ29udGV4dCog
ZGVmZXJyYWxDb250ZXh0KQogewogICAgIHNpemVfdCBzaXplID0gdG90YWxTaXplKHByZUNhcGFj
aXR5LCBwcm9wZXJ0eUNhcGFjaXR5LCBoYXNJbmRleGluZ0hlYWRlciwgaW5kZXhpbmdQYXlsb2Fk
U2l6ZUluQnl0ZXMpOwotICAgIHZvaWQqIGJhc2UgPSB2bS5qc1ZhbHVlR2lnYWNhZ2VBdXhpbGlh
cnlTcGFjZS5hbGxvY2F0ZU5vblZpcnR1YWwodm0sIHNpemUsIGRlZmVycmFsQ29udGV4dCwgQWxs
b2NhdGlvbkZhaWx1cmVNb2RlOjpSZXR1cm5OdWxsKTsKKyAgICB2b2lkKiBiYXNlID0gdm0uanNW
YWx1ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UoKS5hbGxvY2F0ZU5vblZpcnR1YWwodm0sIHNpemUs
IGRlZmVycmFsQ29udGV4dCwgQWxsb2NhdGlvbkZhaWx1cmVNb2RlOjpSZXR1cm5OdWxsKTsKICAg
ICBpZiAoVU5MSUtFTFkoIWJhc2UpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApAQCAtODks
NyArODksNyBAQCBpbmxpbmUgQnV0dGVyZmx5KiBCdXR0ZXJmbHk6OnRyeUNyZWF0ZVVuCiBpbmxp
bmUgQnV0dGVyZmx5KiBCdXR0ZXJmbHk6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQoVk0mIHZtLCBKU09i
amVjdCosIHNpemVfdCBwcmVDYXBhY2l0eSwgc2l6ZV90IHByb3BlcnR5Q2FwYWNpdHksIGJvb2wg
aGFzSW5kZXhpbmdIZWFkZXIsIHNpemVfdCBpbmRleGluZ1BheWxvYWRTaXplSW5CeXRlcykKIHsK
ICAgICBzaXplX3Qgc2l6ZSA9IHRvdGFsU2l6ZShwcmVDYXBhY2l0eSwgcHJvcGVydHlDYXBhY2l0
eSwgaGFzSW5kZXhpbmdIZWFkZXIsIGluZGV4aW5nUGF5bG9hZFNpemVJbkJ5dGVzKTsKLSAgICB2
b2lkKiBiYXNlID0gdm0uanNWYWx1ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UuYWxsb2NhdGVOb25W
aXJ0dWFsKHZtLCBzaXplLCBudWxscHRyLCBBbGxvY2F0aW9uRmFpbHVyZU1vZGU6OkFzc2VydCk7
CisgICAgdm9pZCogYmFzZSA9IHZtLmpzVmFsdWVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlKCkuYWxs
b2NhdGVOb25WaXJ0dWFsKHZtLCBzaXplLCBudWxscHRyLCBBbGxvY2F0aW9uRmFpbHVyZU1vZGU6
OkFzc2VydCk7CiAgICAgQnV0dGVyZmx5KiByZXN1bHQgPSBmcm9tQmFzZShiYXNlLCBwcmVDYXBh
Y2l0eSwgcHJvcGVydHlDYXBhY2l0eSk7CiAKICAgICByZXR1cm4gcmVzdWx0OwpAQCAtOTgsNyAr
OTgsNyBAQCBpbmxpbmUgQnV0dGVyZmx5KiBCdXR0ZXJmbHk6OmNyZWF0ZVVuaW5pCiBpbmxpbmUg
QnV0dGVyZmx5KiBCdXR0ZXJmbHk6OnRyeUNyZWF0ZShWTSYgdm0sIEpTT2JqZWN0Kiwgc2l6ZV90
IHByZUNhcGFjaXR5LCBzaXplX3QgcHJvcGVydHlDYXBhY2l0eSwgYm9vbCBoYXNJbmRleGluZ0hl
YWRlciwgY29uc3QgSW5kZXhpbmdIZWFkZXImIGluZGV4aW5nSGVhZGVyLCBzaXplX3QgaW5kZXhp
bmdQYXlsb2FkU2l6ZUluQnl0ZXMpCiB7CiAgICAgc2l6ZV90IHNpemUgPSB0b3RhbFNpemUocHJl
Q2FwYWNpdHksIHByb3BlcnR5Q2FwYWNpdHksIGhhc0luZGV4aW5nSGVhZGVyLCBpbmRleGluZ1Bh
eWxvYWRTaXplSW5CeXRlcyk7Ci0gICAgdm9pZCogYmFzZSA9IHZtLmpzVmFsdWVHaWdhY2FnZUF1
eGlsaWFyeVNwYWNlLmFsbG9jYXRlTm9uVmlydHVhbCh2bSwgc2l6ZSwgbnVsbHB0ciwgQWxsb2Nh
dGlvbkZhaWx1cmVNb2RlOjpSZXR1cm5OdWxsKTsKKyAgICB2b2lkKiBiYXNlID0gdm0uanNWYWx1
ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UoKS5hbGxvY2F0ZU5vblZpcnR1YWwodm0sIHNpemUsIG51
bGxwdHIsIEFsbG9jYXRpb25GYWlsdXJlTW9kZTo6UmV0dXJuTnVsbCk7CiAgICAgaWYgKCFiYXNl
KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBCdXR0ZXJmbHkqIHJlc3VsdCA9IGZyb21C
YXNlKGJhc2UsIHByZUNhcGFjaXR5LCBwcm9wZXJ0eUNhcGFjaXR5KTsKQEAgLTE3NCw3ICsxNzQs
NyBAQCBpbmxpbmUgQnV0dGVyZmx5KiBCdXR0ZXJmbHk6Omdyb3dBcnJheVJpCiAgICAgdm9pZCog
dGhlQmFzZSA9IGJhc2UoMCwgcHJvcGVydHlDYXBhY2l0eSk7CiAgICAgc2l6ZV90IG9sZFNpemUg
PSB0b3RhbFNpemUoMCwgcHJvcGVydHlDYXBhY2l0eSwgaGFkSW5kZXhpbmdIZWFkZXIsIG9sZElu
ZGV4aW5nUGF5bG9hZFNpemVJbkJ5dGVzKTsKICAgICBzaXplX3QgbmV3U2l6ZSA9IHRvdGFsU2l6
ZSgwLCBwcm9wZXJ0eUNhcGFjaXR5LCB0cnVlLCBuZXdJbmRleGluZ1BheWxvYWRTaXplSW5CeXRl
cyk7Ci0gICAgdm9pZCogbmV3QmFzZSA9IHZtLmpzVmFsdWVHaWdhY2FnZUF1eGlsaWFyeVNwYWNl
LmFsbG9jYXRlTm9uVmlydHVhbCh2bSwgbmV3U2l6ZSwgbnVsbHB0ciwgQWxsb2NhdGlvbkZhaWx1
cmVNb2RlOjpSZXR1cm5OdWxsKTsKKyAgICB2b2lkKiBuZXdCYXNlID0gdm0uanNWYWx1ZUdpZ2Fj
YWdlQXV4aWxpYXJ5U3BhY2UoKS5hbGxvY2F0ZU5vblZpcnR1YWwodm0sIG5ld1NpemUsIG51bGxw
dHIsIEFsbG9jYXRpb25GYWlsdXJlTW9kZTo6UmV0dXJuTnVsbCk7CiAgICAgaWYgKCFuZXdCYXNl
KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAvLyBGSVhNRTogVGhpcyBwcm9iYWJseSBz
aG91bGRuJ3QgYmUgYSBtZW1jcHkuCkBAIC0yMTEsMTMgKzIxMSwxMyBAQCBpbmxpbmUgQnV0dGVy
Zmx5KiBCdXR0ZXJmbHk6OnJlYWxsb2NBcnJhCiAgICAgLy8gT2JqZWN0cyB3aXRoIG5vIHByb3Bl
cnRpZXMgYXJlIGNvbW1vbiBpbiBhcnJheXMsIGFuZCB3ZSBhcmUgZm9jdXNpbmcgb24gdmVyeSBs
YXJnZSBhcnJheSBjcmFmdGVkIGJ5IHJlcGVhdGluZyBBcnJheSNwdXNoLCBzby4uLiB0aGF0J3Mg
ZmluZSEKICAgICBib29sIGNhblJlYWxsb2MgPSAhcHJvcGVydHlDYXBhY2l0eSAmJiAhdm0uaGVh
cC5tdXRhdG9yU2hvdWxkQmVGZW5jZWQoKSAmJiBiaXR3aXNlX2Nhc3Q8SGVhcENlbGwqPih0aGVC
YXNlKS0+aXNQcmVjaXNlQWxsb2NhdGlvbigpOwogICAgIGlmIChjYW5SZWFsbG9jKSB7Ci0gICAg
ICAgIHZvaWQqIG5ld0Jhc2UgPSB2bS5qc1ZhbHVlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZS5yZWFs
bG9jYXRlUHJlY2lzZUFsbG9jYXRpb25Ob25WaXJ0dWFsKHZtLCBiaXR3aXNlX2Nhc3Q8SGVhcENl
bGwqPih0aGVCYXNlKSwgbmV3U2l6ZSwgJmRlZmVycmFsQ29udGV4dCwgQWxsb2NhdGlvbkZhaWx1
cmVNb2RlOjpSZXR1cm5OdWxsKTsKKyAgICAgICAgdm9pZCogbmV3QmFzZSA9IHZtLmpzVmFsdWVH
aWdhY2FnZUF1eGlsaWFyeVNwYWNlKCkucmVhbGxvY2F0ZVByZWNpc2VBbGxvY2F0aW9uTm9uVmly
dHVhbCh2bSwgYml0d2lzZV9jYXN0PEhlYXBDZWxsKj4odGhlQmFzZSksIG5ld1NpemUsICZkZWZl
cnJhbENvbnRleHQsIEFsbG9jYXRpb25GYWlsdXJlTW9kZTo6UmV0dXJuTnVsbCk7CiAgICAgICAg
IGlmICghbmV3QmFzZSkKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICByZXR1
cm4gZnJvbUJhc2UobmV3QmFzZSwgMCwgcHJvcGVydHlDYXBhY2l0eSk7CiAgICAgfQogCi0gICAg
dm9pZCogbmV3QmFzZSA9IHZtLmpzVmFsdWVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlLmFsbG9jYXRl
Tm9uVmlydHVhbCh2bSwgbmV3U2l6ZSwgJmRlZmVycmFsQ29udGV4dCwgQWxsb2NhdGlvbkZhaWx1
cmVNb2RlOjpSZXR1cm5OdWxsKTsKKyAgICB2b2lkKiBuZXdCYXNlID0gdm0uanNWYWx1ZUdpZ2Fj
YWdlQXV4aWxpYXJ5U3BhY2UoKS5hbGxvY2F0ZU5vblZpcnR1YWwodm0sIG5ld1NpemUsICZkZWZl
cnJhbENvbnRleHQsIEFsbG9jYXRpb25GYWlsdXJlTW9kZTo6UmV0dXJuTnVsbCk7CiAgICAgaWYg
KCFuZXdCYXNlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBnY1NhZmVNZW1jcHkoc3Rh
dGljX2Nhc3Q8SlNWYWx1ZSo+KG5ld0Jhc2UpLCBzdGF0aWNfY2FzdDxKU1ZhbHVlKj4odGhlQmFz
ZSksIG9sZFNpemUpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FjaGVk
VHlwZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWNo
ZWRUeXBlcy5oCShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9DYWNoZWRUeXBlcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxOC0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAxOC0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzksNiArMzksNyBAQCBjbGFz
cyBDYWNoZWRCeXRlY29kZTsKIGNsYXNzIFNvdXJjZUNvZGVLZXk7CiBjbGFzcyBVbmxpbmtlZENv
ZGVCbG9jazsKIGNsYXNzIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2s7CitjbGFzcyBVbmxpbmtl
ZEZ1bmN0aW9uRXhlY3V0YWJsZTsKIAogZW51bSBjbGFzcyBTb3VyY2VDb2RlVHlwZTsKIApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2xvbmVkQXJndW1lbnRzLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2xvbmVkQXJndW1lbnRzLmgJ
KHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nsb25l
ZEFyZ3VtZW50cy5oCSh3b3JraW5nIGNvcHkpCkBAIC00Niw3ICs0Niw3IEBAIHB1YmxpYzoKICAg
ICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAg
IHN0YXRpY19hc3NlcnQoIUNlbGxUeXBlOjpuZWVkc0Rlc3RydWN0aW9uLCAiIik7Ci0gICAgICAg
IHJldHVybiAmdm0uY2xvbmVkQXJndW1lbnRzU3BhY2U7CisgICAgICAgIHJldHVybiAmdm0uY2xv
bmVkQXJndW1lbnRzU3BhY2UoKTsKICAgICB9CiAgICAgCiBwcml2YXRlOgpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29uc29sZU9iamVjdC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbnNvbGVPYmplY3QuaAkocmV2aXNpb24gMjg2
MDk1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29uc29sZU9iamVjdC5oCSh3
b3JraW5nIGNvcHkpCkBAIC0zNyw3ICszNyw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vi
c3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRf
SVNPX1NVQlNQQUNFX1NIQVJBQkxFKENvbnNvbGVPYmplY3QsIEJhc2UpOwotICAgICAgICByZXR1
cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RT
cGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBDb25zb2xlT2JqZWN0KiBjcmVhdGUoVk0mIHZt
LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0N1c3RvbUdldHRlclNldHRlci5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0N1c3RvbUdldHRlclNl
dHRlci5oCShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9DdXN0b21HZXR0ZXJTZXR0ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNDMsNyArNDMsNyBAQCBw
dWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNzPgog
ICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKLSAgICAg
ICAgcmV0dXJuICZ2bS5jdXN0b21HZXR0ZXJTZXR0ZXJTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2
bS5jdXN0b21HZXR0ZXJTZXR0ZXJTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBDdXN0b21H
ZXR0ZXJTZXR0ZXIqIGNyZWF0ZShWTSYgdm0sIEN1c3RvbUdldHRlciBjdXN0b21HZXR0ZXIsIEN1
c3RvbVNldHRlciBjdXN0b21TZXR0ZXIpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9ET01BdHRyaWJ1dGVHZXR0ZXJTZXR0ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9ET01BdHRyaWJ1dGVHZXR0ZXJTZXR0ZXIuaAkocmV2aXNpb24g
Mjg2MDk1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRE9NQXR0cmlidXRlR2V0
dGVyU2V0dGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTQzLDcgKzQzLDcgQEAgcHVibGljOgogICAg
IHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlLCBTdWJzcGFjZUFjY2Vzcz4KICAgICBzdGF0aWMg
SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7Ci0gICAgICAgIHJldHVybiAm
dm0uZG9tQXR0cmlidXRlR2V0dGVyU2V0dGVyU3BhY2U7CisgICAgICAgIHJldHVybiAmdm0uZG9t
QXR0cmlidXRlR2V0dGVyU2V0dGVyU3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgRE9NQXR0
cmlidXRlR2V0dGVyU2V0dGVyKiBjcmVhdGUoVk0mIHZtLCBDdXN0b21HZXR0ZXIgY3VzdG9tR2V0
dGVyLCBDdXN0b21TZXR0ZXIgY3VzdG9tU2V0dGVyLCBET01BdHRyaWJ1dGVBbm5vdGF0aW9uIGRv
bUF0dHJpYnV0ZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVJbnN0
YW5jZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVJ
bnN0YW5jZS5oCShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9EYXRlSW5zdGFuY2UuaAkod29ya2luZyBjb3B5KQpAQCAtMzcsNyArMzcsNyBAQCBwdWJs
aWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNzIG1vZGU+
CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewotICAg
ICAgICByZXR1cm4gJnZtLmRhdGVJbnN0YW5jZVNwYWNlOworICAgICAgICByZXR1cm4gJnZtLmRh
dGVJbnN0YW5jZVNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIERhdGVJbnN0YW5jZSogY3Jl
YXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGRvdWJsZSBkYXRlKQpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZVByb3RvdHlwZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVQcm90b3R5cGUuaAkocmV2aXNpb24g
Mjg2MDk1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZVByb3RvdHlwZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC0zNSw3ICszNSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNv
U3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NF
UlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKERhdGVQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICBy
ZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmpl
Y3RTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBEYXRlUHJvdG90eXBlKiBjcmVhdGUoVk0m
IHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RpcmVjdEFyZ3VtZW50cy5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RpcmVjdEFyZ3VtZW50
cy5oCShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9E
aXJlY3RBcmd1bWVudHMuaAkod29ya2luZyBjb3B5KQpAQCAtNTAsNyArNTAsNyBAQCBwdWJsaWM6
CiAgICAgc3RhdGljIENvbXBsZXRlU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7
CiAgICAgICAgIHN0YXRpY19hc3NlcnQoIUNlbGxUeXBlOjpuZWVkc0Rlc3RydWN0aW9uLCAiIik7
Ci0gICAgICAgIHJldHVybiAmdm0udmFyaWFibGVTaXplZENlbGxTcGFjZTsKKyAgICAgICAgcmV0
dXJuICZ2bS52YXJpYWJsZVNpemVkQ2VsbFNwYWNlKCk7CiAgICAgfQogCiAgICAgLy8gQ3JlYXRl
cyBhbiBhcmd1bWVudHMgb2JqZWN0IGJ1dCBsZWF2ZXMgaXQgdW5pbml0aWFsaXplZC4gVGhpcyBp
cyBkYW5nZXJvdXMgaWYgd2UgR0MgcmlnaHQKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0Vycm9yUHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvRXJyb3JQcm90b3R5cGUuaAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JQcm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpA
QCAtNDUsNyArNDUsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFj
ZUZvcihWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9T
SEFSQUJMRShFcnJvclByb3RvdHlwZUJhc2UsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBs
YWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwog
ICAgIH0KIAogICAgIERFQ0xBUkVfSU5GTzsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0V4Y2VwdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0V4Y2VwdGlvbi5oCShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9FeGNlcHRpb24uaAkod29ya2luZyBjb3B5KQpAQCAtNDAsNyArNDAsNyBA
QCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNz
IG1vZGU+CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAg
ewotICAgICAgICByZXR1cm4gJnZtLmV4Y2VwdGlvblNwYWNlOworICAgICAgICByZXR1cm4gJnZt
LmV4Y2VwdGlvblNwYWNlKCk7CiAgICAgfQogCiAgICAgZW51bSBTdGFja0NhcHR1cmVBY3Rpb24g
ewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9uU2NvcGUuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvblNj
b3BlLmNwcAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvRXhjZXB0aW9uU2NvcGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxNi0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNi0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvRmluYWxpemF0aW9uUmVnaXN0cnlQcm90b3R5cGUuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GaW5hbGl6YXRpb25SZWdpc3Ry
eVByb3RvdHlwZS5oCShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9GaW5hbGl6YXRpb25SZWdpc3RyeVByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBA
IC0zNyw3ICszNyw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNl
Rm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NI
QVJBQkxFKEZpbmFsaXphdGlvblJlZ2lzdHJ5UHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0
dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0
U3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgRmluYWxpemF0aW9uUmVnaXN0cnlQcm90b3R5
cGUqIGNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVy
ZSogc3RydWN0dXJlKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rp
b25FeGVjdXRhYmxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvRnVuY3Rpb25FeGVjdXRhYmxlLmgJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uRXhlY3V0YWJsZS5oCSh3b3JraW5nIGNvcHkpCkBA
IC00Niw3ICs0Niw3IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwg
U3Vic3BhY2VBY2Nlc3M+CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYg
dm0pCiAgICAgewotICAgICAgICByZXR1cm4gJnZtLmZ1bmN0aW9uRXhlY3V0YWJsZVNwYWNlLnNw
YWNlOworICAgICAgICByZXR1cm4gJnZtLmZ1bmN0aW9uRXhlY3V0YWJsZVNwYWNlKCkuc3BhY2U7
CiAgICAgfQogCiAgICAgc3RhdGljIEZ1bmN0aW9uRXhlY3V0YWJsZSogY3JlYXRlKFZNJiB2bSwg
U2NyaXB0RXhlY3V0YWJsZSogdG9wTGV2ZWxFeGVjdXRhYmxlLCBjb25zdCBTb3VyY2VDb2RlJiBz
b3VyY2UsIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiB1bmxpbmtlZEV4ZWN1dGFibGUsIElu
dHJpbnNpYyBpbnRyaW5zaWMsIGJvb2wgaXNJbnNpZGVPcmRpbmFyeUZ1bmN0aW9uKQpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JG
dW5jdGlvblByb3RvdHlwZS5oCShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9HZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC00MCw3ICs0MCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNw
YWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNF
X1NIQVJBQkxFKEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0
dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0
U3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUq
IGNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yUHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yUHJvdG90eXBlLmgJKHJldmlzaW9u
IDI4NjA5NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvclByb3Rv
dHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00MSw3ICs0MSw3IEBAIHB1YmxpYzoKICAgICBzdGF0
aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJ
Q19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEdlbmVyYXRvclByb3RvdHlwZSwgQmFzZSk7
Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2
bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIEdlbmVyYXRvclByb3Rv
dHlwZSogY3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dldHRlclNldHRlci5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dldHRlclNldHRlci5o
CShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZXR0
ZXJTZXR0ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNTksNyArNTksNyBAQCBwdWJsaWM6CiAgICAg
dGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNzPgogICAgIHN0YXRpYyBJ
c29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKLSAgICAgICAgcmV0dXJuICZ2
bS5nZXR0ZXJTZXR0ZXJTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5nZXR0ZXJTZXR0ZXJTcGFj
ZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBHZXR0ZXJTZXR0ZXIqIGNyZWF0ZShWTSYgdm0sIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTT2JqZWN0KiBnZXR0ZXIsIEpTT2JqZWN0KiBz
ZXR0ZXIpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9IYXNoTWFwSW1wbC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0hhc2hNYXBJbXBs
LmgJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0hh
c2hNYXBJbXBsLmgJKHdvcmtpbmcgY29weSkKQEAgLTIxMyw3ICsyMTMsNyBAQCBwdWJsaWM6CiAg
ICAgewogICAgICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAg
ICAgIHNpemVfdCBhbGxvY2F0aW9uU2l6ZSA9IEhhc2hNYXBCdWZmZXI6OmFsbG9jYXRpb25TaXpl
KGNhcGFjaXR5KTsKLSAgICAgICAgdm9pZCogZGF0YSA9IHZtLmpzVmFsdWVHaWdhY2FnZUF1eGls
aWFyeVNwYWNlLmFsbG9jYXRlTm9uVmlydHVhbCh2bSwgYWxsb2NhdGlvblNpemUsIG51bGxwdHIs
IEFsbG9jYXRpb25GYWlsdXJlTW9kZTo6UmV0dXJuTnVsbCk7CisgICAgICAgIHZvaWQqIGRhdGEg
PSB2bS5qc1ZhbHVlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZSgpLmFsbG9jYXRlTm9uVmlydHVhbCh2
bSwgYWxsb2NhdGlvblNpemUsIG51bGxwdHIsIEFsbG9jYXRpb25GYWlsdXJlTW9kZTo6UmV0dXJu
TnVsbCk7CiAgICAgICAgIGlmICghZGF0YSkgewogICAgICAgICAgICAgdGhyb3dPdXRPZk1lbW9y
eUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUpOwogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRlcm5hbEZ1bmN0aW9uLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50ZXJuYWxGdW5j
dGlvbi5oCShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9JbnRlcm5hbEZ1bmN0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTQxLDcgKzQxLDcgQEAgcHVi
bGljOgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsK
ICAgICAgICAgc3RhdGljX2Fzc2VydChzaXplb2YoQ2VsbFR5cGUpID09IHNpemVvZihJbnRlcm5h
bEZ1bmN0aW9uKSwgIkludGVybmFsRnVuY3Rpb24gc3ViY2xhc3NlcyB0aGF0IGFkZCBmaWVsZHMg
bmVlZCB0byBvdmVycmlkZSBzdWJzcGFjZUZvcjw+KCkiKTsKLSAgICAgICAgcmV0dXJuICZ2bS5p
bnRlcm5hbEZ1bmN0aW9uU3BhY2U7CisgICAgICAgIHJldHVybiAmdm0uaW50ZXJuYWxGdW5jdGlv
blNwYWNlKCk7CiAgICAgfQogCiAgICAgREVDTEFSRV9FWFBPUlRfSU5GTzsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxDb2xsYXRvclByb3RvdHlwZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxDb2xsYXRvclByb3RvdHlw
ZS5oCShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9J
bnRsQ29sbGF0b3JQcm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMSw2ICsxLDYgQEAKIC8q
CiAgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQW5keSBWYW5XYWdvbmVyIChhbmR5QHZhbndhZ29uZXIu
ZmFtaWx5KQotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxOS0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzksNyArMzksNyBA
QCBwdWJsaWM6CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAg
ICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShJbnRsQ29s
bGF0b3JQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3Bh
Y2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAg
IHN0YXRpYyBJbnRsQ29sbGF0b3JQcm90b3R5cGUqIGNyZWF0ZShWTSYsIEpTR2xvYmFsT2JqZWN0
KiwgU3RydWN0dXJlKik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRs
RGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUuaAkocmV2aXNpb24gMjg2
MDk1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0
UHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw2IEBACiAvKgogICogQ29weXJp
Z2h0IChDKSAyMDE1IEFuZHkgVmFuV2Fnb25lciAoYW5keUB2YW53YWdvbmVyLmZhbWlseSkKLSAq
IENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTktMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM5LDcgKzM5LDcgQEAgcHVibGljOgog
ICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAg
ICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSW50bERhdGVUaW1lRm9ybWF0
UHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOwor
ICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0
aWMgSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlKiBjcmVhdGUoVk0mLCBKU0dsb2JhbE9iamVj
dCosIFN0cnVjdHVyZSopOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50
bERpc3BsYXlOYW1lc1Byb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0ludGxEaXNwbGF5TmFtZXNQcm90b3R5cGUuaAkocmV2aXNpb24gMjg2MDk1
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERpc3BsYXlOYW1lc1Byb3Rv
dHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAo
QykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMjAtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKQEAgLTM4LDcgKzM4LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJ
c29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FT
U0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSW50bERpc3BsYXlOYW1lc1Byb3RvdHlwZSwgQmFz
ZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJu
ICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIEludGxEaXNwbGF5
TmFtZXNQcm90b3R5cGUqIGNyZWF0ZShWTSYsIFN0cnVjdHVyZSopOwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bExpc3RGb3JtYXRQcm90b3R5cGUuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTGlzdEZvcm1hdFByb3RvdHlw
ZS5oCShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9J
bnRsTGlzdEZvcm1hdFByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAog
LyoKLSAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMjAtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM4LDcgKzM4LDcgQEAgcHVi
bGljOgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsK
ICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSW50bExpc3RGb3Jt
YXRQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7
CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIHN0
YXRpYyBJbnRsTGlzdEZvcm1hdFByb3RvdHlwZSogY3JlYXRlKFZNJiwgU3RydWN0dXJlKik7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTG9jYWxlUHJvdG90eXBlLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bExvY2FsZVBy
b3RvdHlwZS5oCShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9JbnRsTG9jYWxlUHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw2IEBA
CiAvKgogICogQ29weXJpZ2h0IChDKSAyMDIwIFNvbnkgSW50ZXJhY3RpdmUgRW50ZXJ0YWlubWVu
dCBJbmMuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zOCw3ICszOSw3IEBAIHB1
YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7
CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEludGxMb2NhbGVQ
cm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7Cisg
ICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRp
YyBJbnRsTG9jYWxlUHJvdG90eXBlKiBjcmVhdGUoVk0mLCBTdHJ1Y3R1cmUqKTsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9y
bWF0UHJvdG90eXBlLmgJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAt
MSw2ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQW5keSBWYW5XYWdvbmVyIChh
bmR5QHZhbndhZ29uZXIuZmFtaWx5KQotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxOS0yMDIxIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpA
QCAtMzksNyArMzksNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFj
ZUZvcihWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9T
SEFSQUJMRShJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJu
ICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3Bh
Y2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgSW50bE51bWJlckZvcm1hdFByb3RvdHlwZSogY3Jl
YXRlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqKTsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0ludGxPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9JbnRsT2JqZWN0LmgJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxPYmplY3QuaAkod29ya2luZyBjb3B5KQpA
QCAtMSw2ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQW5keSBWYW5XYWdvbmVy
IChhbmR5QHZhbndhZ29uZXIuZmFtaWx5KQotICogQ29weXJpZ2h0IChDKSAyMDE5LTIwMjAgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE5LTIwMjEg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDIwIFNv
bnkgSW50ZXJhY3RpdmUgRW50ZXJ0YWlubWVudCBJbmMuCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC03
Niw3ICs3Niw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9y
KFZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJB
QkxFKEludGxPYmplY3QsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3Bh
Y2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAg
IHN0YXRpYyBJbnRsT2JqZWN0KiBjcmVhdGUoVk0mLCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVy
ZSopOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFBsdXJhbFJ1bGVz
UHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SW50bFBsdXJhbFJ1bGVzUHJvdG90eXBlLmgJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxQbHVyYWxSdWxlc1Byb3RvdHlwZS5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDYgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxOCBBbmR5IFZh
bldhZ29uZXIgKGFuZHlAdmFud2Fnb25lci5mYW1pbHkpCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE5LTIw
MjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCkBAIC0zOSw3ICszOSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vic3Bh
Y2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNP
X1NVQlNQQUNFX1NIQVJBQkxFKEludGxQbHVyYWxSdWxlc1Byb3RvdHlwZSwgQmFzZSk7Ci0gICAg
ICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFp
bk9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIEludGxQbHVyYWxSdWxlc1Byb3Rv
dHlwZSogY3JlYXRlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqKTsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxSZWxhdGl2ZVRpbWVGb3JtYXRQcm90b3R5
cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsUmVs
YXRpdmVUaW1lRm9ybWF0UHJvdG90eXBlLmgJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxSZWxhdGl2ZVRpbWVGb3JtYXRQcm90b3R5cGUuaAko
d29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMjAg
U29ueSBJbnRlcmFjdGl2ZSBFbnRlcnRhaW5tZW50IEluYy4KKyAqIENvcHlyaWdodCAoQykgMjAy
MSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKQEAgLTM4LDcgKzM5LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJc29TdWJzcGFj
ZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09f
U1VCU1BBQ0VfU0hBUkFCTEUoSW50bFJlbGF0aXZlVGltZUZvcm1hdFByb3RvdHlwZSwgQmFzZSk7
Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2
bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIEludGxSZWxhdGl2ZVRp
bWVGb3JtYXRQcm90b3R5cGUqIGNyZWF0ZShWTSYsIFN0cnVjdHVyZSopOwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFNlZ21lbnRJdGVyYXRvclByb3RvdHlwZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxTZWdtZW50SXRl
cmF0b3JQcm90b3R5cGUuaAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSW50bFNlZ21lbnRJdGVyYXRvclByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAtMjAyMSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAg
LTM4LDcgKzM4LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VG
b3IoVk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hB
UkFCTEUoSW50bFNlZ21lbnRJdGVyYXRvclByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVy
biAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNw
YWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIEludGxTZWdtZW50SXRlcmF0b3JQcm90b3R5cGUq
IGNyZWF0ZShWTSYsIFN0cnVjdHVyZSopOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSW50bFNlZ21lbnRlclByb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0ludGxTZWdtZW50ZXJQcm90b3R5cGUuaAkocmV2aXNpb24gMjg2
MDk1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFNlZ21lbnRlclByb3Rv
dHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAo
QykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMjAtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKQEAgLTM4LDcgKzM4LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJ
c29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FT
U0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSW50bFNlZ21lbnRlclByb3RvdHlwZSwgQmFzZSk7
Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2
bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIEludGxTZWdtZW50ZXJQ
cm90b3R5cGUqIGNyZWF0ZShWTSYsIFN0cnVjdHVyZSopOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSW50bFNlZ21lbnRzUHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFNlZ21lbnRzUHJvdG90eXBlLmgJKHJldmlz
aW9uIDI4NjA5NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxTZWdtZW50
c1Byb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHly
aWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMjAtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM4LDcgKzM4LDcgQEAgcHVibGljOgogICAgIHN0
YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAgICAgU1RB
VElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSW50bFNlZ21lbnRzUHJvdG90eXBlLCBC
YXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1
cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgSW50bFNlZ21l
bnRzUHJvdG90eXBlKiBjcmVhdGUoVk0mLCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSopOwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSXRlcmF0b3JQcm90b3R5cGUuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JdGVyYXRvclByb3Rv
dHlwZS5oCShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9JdGVyYXRvclByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw3ICszOSw3IEBAIHB1
YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7
CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEl0ZXJhdG9yUHJv
dG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAg
ICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMg
SXRlcmF0b3JQcm90b3R5cGUqIGNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNBcnJheS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNBcnJheS5jcHAJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Niw3ICs1Niw3
IEBAIEpTQXJyYXkqIEpTQXJyYXk6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQKICAgICAgICAgICAg
IHx8IGhhc0NvbnRpZ3VvdXMoaW5kZXhpbmdUeXBlKSk7CiAKICAgICAgICAgdW5zaWduZWQgdmVj
dG9yTGVuZ3RoID0gQnV0dGVyZmx5OjpvcHRpbWFsQ29udGlndW91c1ZlY3Rvckxlbmd0aChzdHJ1
Y3R1cmUsIGluaXRpYWxMZW5ndGgpOwotICAgICAgICB2b2lkKiB0ZW1wID0gdm0uanNWYWx1ZUdp
Z2FjYWdlQXV4aWxpYXJ5U3BhY2UuYWxsb2NhdGVOb25WaXJ0dWFsKAorICAgICAgICB2b2lkKiB0
ZW1wID0gdm0uanNWYWx1ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UoKS5hbGxvY2F0ZU5vblZpcnR1
YWwoCiAgICAgICAgICAgICB2bSwKICAgICAgICAgICAgIEJ1dHRlcmZseTo6dG90YWxTaXplKDAs
IG91dE9mTGluZVN0b3JhZ2UsIHRydWUsIHZlY3Rvckxlbmd0aCAqIHNpemVvZihFbmNvZGVkSlNW
YWx1ZSkpLAogICAgICAgICAgICAgZGVmZXJyYWxDb250ZXh0LCBBbGxvY2F0aW9uRmFpbHVyZU1v
ZGU6OlJldHVybk51bGwpOwpAQCAtNzgsNyArNzgsNyBAQCBKU0FycmF5KiBKU0FycmF5Ojp0cnlD
cmVhdGVVbmluaXRpYWxpemVkCiAgICAgICAgICAgICB8fCBpbmRleGluZ1R5cGUgPT0gQXJyYXlX
aXRoQXJyYXlTdG9yYWdlKTsKICAgICAgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBpbmRl
eEJpYXMgPSAwOwogICAgICAgICB1bnNpZ25lZCB2ZWN0b3JMZW5ndGggPSBBcnJheVN0b3JhZ2U6
Om9wdGltYWxWZWN0b3JMZW5ndGgoaW5kZXhCaWFzLCBzdHJ1Y3R1cmUsIGluaXRpYWxMZW5ndGgp
OwotICAgICAgICB2b2lkKiB0ZW1wID0gdm0uanNWYWx1ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2Uu
YWxsb2NhdGVOb25WaXJ0dWFsKAorICAgICAgICB2b2lkKiB0ZW1wID0gdm0uanNWYWx1ZUdpZ2Fj
YWdlQXV4aWxpYXJ5U3BhY2UoKS5hbGxvY2F0ZU5vblZpcnR1YWwoCiAgICAgICAgICAgICB2bSwK
ICAgICAgICAgICAgIEJ1dHRlcmZseTo6dG90YWxTaXplKGluZGV4Qmlhcywgb3V0T2ZMaW5lU3Rv
cmFnZSwgdHJ1ZSwgQXJyYXlTdG9yYWdlOjpzaXplRm9yKHZlY3Rvckxlbmd0aCkpLAogICAgICAg
ICAgICAgZGVmZXJyYWxDb250ZXh0LCBBbGxvY2F0aW9uRmFpbHVyZU1vZGU6OlJldHVybk51bGwp
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuaAkocmV2aXNpb24g
Mjg2MDk1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC01MSw3ICs1MSw3IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBDZWxsVHlwZSwgU3Vic3BhY2VBY2Nlc3M+CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJz
cGFjZUZvcihWTSYgdm0pCiAgICAgewotICAgICAgICByZXR1cm4gJnZtLmFycmF5U3BhY2U7Cisg
ICAgICAgIHJldHVybiAmdm0uYXJyYXlTcGFjZSgpOwogICAgIH0KICAgICAgICAgCiBwcm90ZWN0
ZWQ6CkBAIC0yNDQsNyArMjQ0LDcgQEAgaW5saW5lIEpTQXJyYXkqIEpTQXJyYXk6OnRyeUNyZWF0
ZShWTSYgdgogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICAgICAgdW5zaWduZWQg
dmVjdG9yTGVuZ3RoID0gQnV0dGVyZmx5OjpvcHRpbWFsQ29udGlndW91c1ZlY3Rvckxlbmd0aChz
dHJ1Y3R1cmUsIHZlY3Rvckxlbmd0aEhpbnQpOwotICAgICAgICB2b2lkKiB0ZW1wID0gdm0uanNW
YWx1ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UuYWxsb2NhdGVOb25WaXJ0dWFsKAorICAgICAgICB2
b2lkKiB0ZW1wID0gdm0uanNWYWx1ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UoKS5hbGxvY2F0ZU5v
blZpcnR1YWwoCiAgICAgICAgICAgICB2bSwKICAgICAgICAgICAgIEJ1dHRlcmZseTo6dG90YWxT
aXplKDAsIG91dE9mTGluZVN0b3JhZ2UsIHRydWUsIHZlY3Rvckxlbmd0aCAqIHNpemVvZihFbmNv
ZGVkSlNWYWx1ZSkpLAogICAgICAgICAgICAgbnVsbHB0ciwgQWxsb2NhdGlvbkZhaWx1cmVNb2Rl
OjpSZXR1cm5OdWxsKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJy
YXlCdWZmZXJQcm90b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0FycmF5QnVmZmVyUHJvdG90eXBlLmgJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJQcm90b3R5cGUuaAkod29y
a2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIw
MTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEz
LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCkBAIC0zNyw3ICszNyw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vi
c3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRf
SVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTQXJyYXlCdWZmZXJQcm90b3R5cGUsIEJhc2UpOwotICAg
ICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxh
aW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBKU0FycmF5QnVmZmVyUHJvdG90
eXBlKiBjcmVhdGUoVk0mLCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIEFycmF5QnVmZmVy
U2hhcmluZ01vZGUgPSBBcnJheUJ1ZmZlclNoYXJpbmdNb2RlOjpEZWZhdWx0KTsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyVmlldy5j
cHAJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
QXJyYXlCdWZmZXJWaWV3LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjQsNyArNjQsNyBAQCBKU0Fy
cmF5QnVmZmVyVmlldzo6Q29uc3RydWN0aW9uQ29udGV4dDo6CiAgICAgICAgIC8vIEF0dGVtcHQg
R0MgYWxsb2NhdGlvbi4KICAgICAgICAgdm9pZCogdGVtcDsKICAgICAgICAgc2l6ZV90IHNpemUg
PSBzaXplT2YobGVuZ3RoLCBlbGVtZW50U2l6ZSk7Ci0gICAgICAgIHRlbXAgPSB2bS5wcmltaXRp
dmVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlLmFsbG9jYXRlTm9uVmlydHVhbCh2bSwgc2l6ZSwgbnVs
bHB0ciwgQWxsb2NhdGlvbkZhaWx1cmVNb2RlOjpSZXR1cm5OdWxsKTsKKyAgICAgICAgdGVtcCA9
IHZtLnByaW1pdGl2ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UoKS5hbGxvY2F0ZU5vblZpcnR1YWwo
dm0sIHNpemUsIG51bGxwdHIsIEFsbG9jYXRpb25GYWlsdXJlTW9kZTo6UmV0dXJuTnVsbCk7CiAg
ICAgICAgIGlmICghdGVtcCkKICAgICAgICAgICAgIHJldHVybjsKIApJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCaWdJbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQmlnSW50LmNwcAkocmV2aXNpb24gMjg2MDk1KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCaWdJbnQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xMTcsNyArMTE3LDcgQEAgaW5saW5lIEpTQmlnSW50KiBKU0JpZ0ludDo6Y3JlYXRlV2l0
aExlbgogICAgIH0KIAogICAgIEFTU0VSVChsZW5ndGggPD0gbWF4TGVuZ3RoKTsKLSAgICB2b2lk
KiBkYXRhID0gdm0ucHJpbWl0aXZlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZS5hbGxvY2F0ZU5vblZp
cnR1YWwodm0sIGxlbmd0aCAqIHNpemVvZihEaWdpdCksIG51bGxwdHIsIEFsbG9jYXRpb25GYWls
dXJlTW9kZTo6UmV0dXJuTnVsbCk7CisgICAgdm9pZCogZGF0YSA9IHZtLnByaW1pdGl2ZUdpZ2Fj
YWdlQXV4aWxpYXJ5U3BhY2UoKS5hbGxvY2F0ZU5vblZpcnR1YWwodm0sIGxlbmd0aCAqIHNpemVv
ZihEaWdpdCksIG51bGxwdHIsIEFsbG9jYXRpb25GYWlsdXJlTW9kZTo6UmV0dXJuTnVsbCk7CiAg
ICAgaWYgKFVOTElLRUxZKCFkYXRhKSkgewogICAgICAgICBpZiAobnVsbE9yR2xvYmFsT2JqZWN0
Rm9yT09NKSB7CiAgICAgICAgICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JpZ0ludC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQmlnSW50LmgJKHJldmlz
aW9uIDI4NjA5NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQmlnSW50LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTU2LDcgKzU2LDcgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5
cGVuYW1lIENlbGxUeXBlLCBTdWJzcGFjZUFjY2Vzcz4KICAgICBzdGF0aWMgSXNvU3Vic3BhY2Uq
IHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7Ci0gICAgICAgIHJldHVybiAmdm0uYmlnSW50U3Bh
Y2U7CisgICAgICAgIHJldHVybiAmdm0uYmlnSW50U3BhY2UoKTsKICAgICB9CiAKICAgICBlbnVt
IGNsYXNzIEluaXRpYWxpemF0aW9uVHlwZSB7IE5vbmUsIFdpdGhaZXJvIH07CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NhbGxlZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2FsbGVlLmgJKHJldmlzaW9uIDI4NjA5NSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2FsbGVlLmgJKHdvcmtpbmcgY29weSkK
QEAgLTUwLDcgKzUwLDcgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBl
LCBTdWJzcGFjZUFjY2Vzcz4KICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZN
JiB2bSkKICAgICB7Ci0gICAgICAgIHJldHVybiAmdm0uY2FsbGVlU3BhY2U7CisgICAgICAgIHJl
dHVybiAmdm0uY2FsbGVlU3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgSlNDYWxsZWUqIGNy
ZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTU2NvcGUqIHNjb3Bl
KQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRhVmlld1Byb3RvdHlw
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0YVZp
ZXdQcm90b3R5cGUuaAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNEYXRhVmlld1Byb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEs
NSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDIxIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzgsNyAr
MzgsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYg
dm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShK
U0RhdGFWaWV3UHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVj
dFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAK
ICAgICBzdGF0aWMgSlNEYXRhVmlld1Byb3RvdHlwZSogY3JlYXRlKFZNJiwgU3RydWN0dXJlKik7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oCShyZXZp
c2lvbiAyODYwOTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9u
LmgJKHdvcmtpbmcgY29weSkKQEAgLTY2LDcgKzY2LDcgQEAgcHVibGljOgogICAgIHRlbXBsYXRl
PHR5cGVuYW1lIENlbGxUeXBlLCBTdWJzcGFjZUFjY2Vzcz4KICAgICBzdGF0aWMgSXNvU3Vic3Bh
Y2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7Ci0gICAgICAgIHJldHVybiAmdm0uZnVuY3Rp
b25TcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5mdW5jdGlvblNwYWNlKCk7CiAgICAgfQogICAg
IAogICAgIHR5cGVkZWYgSlNDYWxsZWUgQmFzZTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdQ
cm90b3R5cGUuaAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpA
QCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMjEgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0z
OCw3ICszOCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9y
KFZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJB
QkxFKEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0
dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0
U3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgSlNHZW5lcmljVHlwZWRBcnJheVZpZXdQcm90
b3R5cGUqIGNyZWF0ZSgKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xv
YmFsTGV4aWNhbEVudmlyb25tZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNHbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQuaAkocmV2aXNpb24gMjg2MDk1
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxMZXhpY2FsRW52aXJv
bm1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzgsNyArMzgsNyBAQCBwdWJsaWM6CiAgICAgdGVt
cGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNzIG1vZGU+CiAgICAgc3RhdGlj
IElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewotICAgICAgICByZXR1cm4g
JnZtLmdsb2JhbExleGljYWxFbnZpcm9ubWVudFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLmds
b2JhbExleGljYWxFbnZpcm9ubWVudFNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIEpTR2xv
YmFsTGV4aWNhbEVudmlyb25tZW50KiBjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSwgSlNTY29wZSogcGFyZW50U2NvcGUpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0ltbXV0YWJsZUJ1dHRlcmZseS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTSW1tdXRhYmxlQnV0dGVyZmx5LmgJKHJldmlzaW9uIDI4NjA5NSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTSW1tdXRhYmxlQnV0dGVyZmx5LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTE1Myw3ICsxNTMsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIENv
bXBsZXRlU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAgIC8vIFdl
IGFsbG9jYXRlIG91dCBvZiB0aGUgSlNWYWx1ZSBnaWdhY2FnZSBhcyBvdGhlciBjb2RlIGV4cGVj
dHMgYWxsIGJ1dHRlcmZsaWVzIHRvIGxpdmUgdGhlcmUuCi0gICAgICAgIHJldHVybiAmdm0uaW1t
dXRhYmxlQnV0dGVyZmx5SlNWYWx1ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2U7CisgICAgICAgIHJl
dHVybiAmdm0uaW1tdXRhYmxlQnV0dGVyZmx5SlNWYWx1ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2Uo
KTsKICAgICB9CiAKICAgICAvLyBPbmx5IGNhbGwgdGhpcyBpZiB5b3UganVzdCBhbGxvY2F0ZWQg
dGhpcyBidXR0ZXJmbHkuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xl
eGljYWxFbnZpcm9ubWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTTGV4aWNhbEVudmlyb25tZW50LmgJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTGV4aWNhbEVudmlyb25tZW50LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTQ0LDcgKzQ0LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBDb21wbGV0ZVN1YnNw
YWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewogICAgICAgICBzdGF0aWNfYXNzZXJ0KCFD
ZWxsVHlwZTo6bmVlZHNEZXN0cnVjdGlvbiwgIiIpOwotICAgICAgICByZXR1cm4gJnZtLnZhcmlh
YmxlU2l6ZWRDZWxsU3BhY2U7CisgICAgICAgIHJldHVybiAmdm0udmFyaWFibGVTaXplZENlbGxT
cGFjZSgpOwogICAgIH0KIAogICAgIHVzaW5nIEJhc2UgPSBKU1N5bWJvbFRhYmxlT2JqZWN0OwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVMb2FkZXIuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZUxvYWRlci5o
CShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01v
ZHVsZUxvYWRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC00NCw3ICs0NCw3IEBAIHB1YmxpYzoKICAg
ICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAg
IFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTTW9kdWxlTG9hZGVyLCBCYXNl
KTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4g
JnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBlbnVtIFN0YXR1cyB7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09OT2JqZWN0LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPTk9iamVjdC5oCShyZXZpc2lvbiAy
ODYwOTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09OT2JqZWN0LmgJKHdv
cmtpbmcgY29weSkKQEAgLTM4LDcgKzM4LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJc29TdWJz
cGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9J
U09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNPTk9iamVjdCwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAm
dm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNl
KCk7CiAgICAgfQogCiAgICAgc3RhdGljIEpTT05PYmplY3QqIGNyZWF0ZShWTSYgdm0sIFN0cnVj
dHVyZSogc3RydWN0dXJlKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNP
YmplY3RJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNPYmplY3RJbmxpbmVzLmgJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0SW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC00MSw3
ICs0MSw3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlLCBTdWJzcGFjZUFjY2UKIENvbXBs
ZXRlU3Vic3BhY2UqIEpTRmluYWxPYmplY3Q6OnN1YnNwYWNlRm9yKFZNJiB2bSkKIHsKICAgICBz
dGF0aWNfYXNzZXJ0KCFDZWxsVHlwZTo6bmVlZHNEZXN0cnVjdGlvbik7Ci0gICAgcmV0dXJuICZ2
bS5jZWxsU3BhY2U7CisgICAgcmV0dXJuICZ2bS5jZWxsU3BhY2UoKTsKIH0KIAogLy8gaHR0cHM6
Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1jcmVhdGVsaXN0ZnJvbWFycmF5bGlrZQpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9taXNlLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9taXNlLmgJKHJldmlzaW9uIDI4NjA5NSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZS5oCSh3b3JraW5nIGNv
cHkpCkBAIC0zNyw3ICszNyw3IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxs
VHlwZSwgU3Vic3BhY2VBY2Nlc3MgbW9kZT4KICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNw
YWNlRm9yKFZNJiB2bSkKICAgICB7Ci0gICAgICAgIHJldHVybiAmdm0ucHJvbWlzZVNwYWNlOwor
ICAgICAgICByZXR1cm4gJnZtLnByb21pc2VTcGFjZSgpOwogICAgIH0KIAogICAgIEpTX0VYUE9S
VF9QUklWQVRFIHN0YXRpYyBKU1Byb21pc2UqIGNyZWF0ZShWTSYsIFN0cnVjdHVyZSopOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9taXNlUHJvdG90eXBlLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9taXNlUHJvdG90
eXBlLmgJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTUHJvbWlzZVByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzgsNyArMzgsNyBAQCBw
dWJsaWM6CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAg
ewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Byb21pc2VQ
cm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7Cisg
ICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRp
YyBKU1Byb21pc2VQcm90b3R5cGUqIGNyZWF0ZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0
dXJlKik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFt
ZUVudW1lcmF0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTUHJvcGVydHlOYW1lRW51bWVyYXRvci5jcHAJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lRW51bWVyYXRvci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTM4LDcgKzM4LDcgQEAgSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9y
KiBKU1Byb3BlcnR5TmFtZQogICAgIHVuc2lnbmVkIHByb3BlcnR5TmFtZXNCdWZmZXJTaXplSW5C
eXRlcyA9IENoZWNrZWQ8dW5zaWduZWQ+KHByb3BlcnR5TmFtZXNTaXplKSAqIHNpemVvZihXcml0
ZUJhcnJpZXI8SlNTdHJpbmc+KTsKICAgICBXcml0ZUJhcnJpZXI8SlNTdHJpbmc+KiBwcm9wZXJ0
eU5hbWVzQnVmZmVyID0gbnVsbHB0cjsKICAgICBpZiAocHJvcGVydHlOYW1lc0J1ZmZlclNpemVJ
bkJ5dGVzKSB7Ci0gICAgICAgIHByb3BlcnR5TmFtZXNCdWZmZXIgPSBzdGF0aWNfY2FzdDxXcml0
ZUJhcnJpZXI8SlNTdHJpbmc+Kj4odm0uanNWYWx1ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UuYWxs
b2NhdGVOb25WaXJ0dWFsKHZtLCBwcm9wZXJ0eU5hbWVzQnVmZmVyU2l6ZUluQnl0ZXMsIG51bGxw
dHIsIEFsbG9jYXRpb25GYWlsdXJlTW9kZTo6QXNzZXJ0KSk7CisgICAgICAgIHByb3BlcnR5TmFt
ZXNCdWZmZXIgPSBzdGF0aWNfY2FzdDxXcml0ZUJhcnJpZXI8SlNTdHJpbmc+Kj4odm0uanNWYWx1
ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UoKS5hbGxvY2F0ZU5vblZpcnR1YWwodm0sIHByb3BlcnR5
TmFtZXNCdWZmZXJTaXplSW5CeXRlcywgbnVsbHB0ciwgQWxsb2NhdGlvbkZhaWx1cmVNb2RlOjpB
c3NlcnQpKTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHByb3BlcnR5TmFtZXNT
aXplOyArK2kpCiAgICAgICAgICAgICBwcm9wZXJ0eU5hbWVzQnVmZmVyW2ldLmNsZWFyKCk7CiAg
ICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVF
bnVtZXJhdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yLmgJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lRW51bWVyYXRvci5oCSh3b3JraW5n
IGNvcHkpCkBAIC01MSw3ICs1MSw3IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBD
ZWxsVHlwZSwgU3Vic3BhY2VBY2Nlc3MgbW9kZT4KICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1
YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7Ci0gICAgICAgIHJldHVybiAmdm0ucHJvcGVydHlOYW1l
RW51bWVyYXRvclNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnByb3BlcnR5TmFtZUVudW1lcmF0
b3JTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3Iq
IGNyZWF0ZShWTSYsIFN0cnVjdHVyZSosIHVpbnQzMl90LCB1aW50MzJfdCwgUHJvcGVydHlOYW1l
QXJyYXkmJik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3h5LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm94eS5oCShy
ZXZpc2lvbiAyODYwOTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3h5
LmgJKHdvcmtpbmcgY29weSkKQEAgLTM4LDcgKzM4LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJ
c29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAgICAgc3RhdGljX2Fz
c2VydChzaXplb2YoQ2VsbFR5cGUpID09IHNpemVvZihKU1Byb3h5KSk7Ci0gICAgICAgIHJldHVy
biAmdm0uanNQcm94eVNwYWNlOworICAgICAgICByZXR1cm4gJnZtLmpzUHJveHlTcGFjZSgpOwog
ICAgIH0KIAogICAgIHN0YXRpYyBKU1Byb3h5KiBjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSwgSlNPYmplY3QqIHRhcmdldCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTU3RyaW5nLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNTdHJpbmcuaAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNTdHJpbmcuaAkod29ya2luZyBjb3B5KQpAQCAtMTExLDcgKzExMSw3IEBA
IHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSwgU3Vic3BhY2VBY2Nlc3M+CiAgICAgc3Rh
dGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewotICAgICAgICByZXR1
cm4gJnZtLnN0cmluZ1NwYWNlOworICAgICAgICByZXR1cm4gJnZtLnN0cmluZ1NwYWNlKCk7CiAg
ICAgfQogICAgIAogICAgIC8vIFdlIGVtcGxveSBvdmVyZmxvdyBjaGVja3MgaW4gbWFueSBwbGFj
ZXMgd2l0aCB0aGUgYXNzdW1wdGlvbiB0aGF0IE1heExlbmd0aApAQCAtMjcwLDcgKzI3MCw3IEBA
IHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSwgU3Vic3BhY2VBY2Nlc3M+CiAgICAgc3Rh
dGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewotICAgICAgICByZXR1
cm4gJnZtLnJvcGVTdHJpbmdTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5yb3BlU3RyaW5nU3Bh
Y2UoKTsKICAgICB9CiAKICAgICAvLyBXZSB1c2UgbG93ZXIgM2JpdHMgb2YgZmliZXIwIGZvciBm
bGFncy4gVGhlc2UgYml0cyBhcmUgdXNhYmxlIGR1ZSB0byBhbGlnbm1lbnQsIGFuZCBpdCBpcyBP
SyBldmVuIGluIDMyYml0IGFyY2hpdGVjdHVyZS4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTVHlwZWRBcnJheVZpZXdQcm90b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlLmgJKHJl
dmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZWRB
cnJheVZpZXdQcm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDE1LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zNyw3ICszNyw3IEBAIHB1YmxpYzoK
ICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAg
ICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVHlwZWRBcnJheVZpZXdQ
cm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7Cisg
ICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRp
YyBKU1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlKiBjcmVhdGUoVk0mLCBKU0dsb2JhbE9iamVjdCos
IFN0cnVjdHVyZSopOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFwSXRl
cmF0b3JQcm90b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9NYXBJdGVyYXRvclByb3RvdHlwZS5oCShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXBJdGVyYXRvclByb3RvdHlwZS5oCSh3b3JraW5nIGNv
cHkpCkBAIC0zNyw3ICszNyw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1
YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQ
QUNFX1NIQVJBQkxFKE1hcEl0ZXJhdG9yUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJu
ICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3Bh
Y2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgTWFwSXRlcmF0b3JQcm90b3R5cGUqIGNyZWF0ZShW
TSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJl
KQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFwUHJvdG90eXBlLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFwUHJvdG90eXBlLmgJ
KHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hcFBy
b3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw3ICszNyw3IEBAIHB1YmxpYzoKICAgICBz
dGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAgIFNU
QVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKE1hcFByb3RvdHlwZSwgQmFzZSk7Ci0g
ICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5w
bGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25l
ZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgSGFzU3RhdGljUHJvcGVy
dHlUYWJsZTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hdGhPYmplY3Qu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXRoT2JqZWN0
LmgJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01h
dGhPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtMzIsNyArMzIsNyBAQCBwdWJsaWM6CiAgICAg
c3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewogICAgICAgICBT
VEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShNYXRoT2JqZWN0LCBCYXNlKTsKLSAg
ICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBs
YWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgTWF0aE9iamVjdCogY3JlYXRl
KFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OYXRpdmVFcnJvclByb3Rv
dHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2
ZUVycm9yUHJvdG90eXBlLmgJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL05hdGl2ZUVycm9yUHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM0
LDcgKzM0LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3Io
Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFC
TEUoTmF0aXZlRXJyb3JQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWlu
T2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAg
IH0KIAogICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRXhlY3V0YWJsZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUV4ZWN1dGFibGUuaAkocmV2aXNp
b24gMjg2MDk1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRXhlY3V0
YWJsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAo
QykgMjAwOS0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAwOS0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDMsNyArNDMsNyBAQCBwdWJsaWM6CiAgICAgdGVt
cGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNzPgogICAgIHN0YXRpYyBJc29T
dWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKLSAgICAgICAgcmV0dXJuICZ2bS5u
YXRpdmVFeGVjdXRhYmxlU3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ubmF0aXZlRXhlY3V0YWJs
ZVNwYWNlKCk7CiAgICAgfQogCiAgICAgQ29kZUJsb2NrSGFzaCBoYXNoRm9yKENvZGVTcGVjaWFs
aXphdGlvbktpbmQpIGNvbnN0OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
TnVtYmVyT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvTnVtYmVyT2JqZWN0LmgJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL051bWJlck9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw3ICszNSw3
IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSwgU3Vic3BhY2VBY2Nlc3MgbW9kZT4K
ICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7Ci0gICAg
ICAgIHJldHVybiAmdm0ubnVtYmVyT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ubnVt
YmVyT2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgTnVtYmVyT2JqZWN0KiBjcmVh
dGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL09iamVjdFByb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL09iamVjdFByb3RvdHlwZS5oCShyZXZpc2lvbiAyODYwOTUpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RQcm90b3R5cGUuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiAgQ29weXJpZ2h0IChDKSAxOTk5LTIwMDAg
SGFycmkgUG9ydGVuIChwb3J0ZW5Aa2RlLm9yZykKLSAqICBDb3B5cmlnaHQgKEMpIDIwMDgtMjAx
OSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAgQ29weXJpZ2h0IChDKSAyMDA4
LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqICBUaGlzIGxpYnJh
cnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiAg
bW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1Ymxp
YwpAQCAtMzMsNyArMzMsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJz
cGFjZUZvcihWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFD
RV9TSEFSQUJMRShPYmplY3RQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBs
YWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwog
ICAgIH0KIAogICAgIHN0YXRpYyBPYmplY3RQcm90b3R5cGUqIGNyZWF0ZShWTSYsIEpTR2xvYmFs
T2JqZWN0KiwgU3RydWN0dXJlKik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Qcm9ncmFtRXhlY3V0YWJsZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1Byb2dyYW1FeGVjdXRhYmxlLmgJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb2dyYW1FeGVjdXRhYmxlLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTMwLDYgKzMwLDggQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKK2NsYXNzIFVubGlua2Vk
UHJvZ3JhbUNvZGVCbG9jazsKKwogY2xhc3MgUHJvZ3JhbUV4ZWN1dGFibGUgZmluYWwgOiBwdWJs
aWMgR2xvYmFsRXhlY3V0YWJsZSB7CiAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJh
Y3RvcjsKIHB1YmxpYzoKQEAgLTM5LDcgKzQxLDcgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5
cGVuYW1lIENlbGxUeXBlLCBTdWJzcGFjZUFjY2Vzcz4KICAgICBzdGF0aWMgSXNvU3Vic3BhY2Uq
IHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7Ci0gICAgICAgIHJldHVybiAmdm0ucHJvZ3JhbUV4
ZWN1dGFibGVTcGFjZS5zcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wcm9ncmFtRXhlY3V0YWJs
ZVNwYWNlKCkuc3BhY2U7CiAgICAgfQogCiAgICAgc3RhdGljIFByb2dyYW1FeGVjdXRhYmxlKiBj
cmVhdGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgU291cmNlQ29kZSYgc291
cmNlKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlUYWJsZS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5VGFi
bGUuaAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
UHJvcGVydHlUYWJsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjksNyArMTI5LDcgQEAgcHVibGlj
OgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlLCBTdWJzcGFjZUFjY2Vzcz4KICAgICBz
dGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7Ci0gICAgICAgIHJl
dHVybiAmdm0ucHJvcGVydHlUYWJsZVNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnByb3BlcnR5
VGFibGVTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBuZWVkc0Rl
c3RydWN0aW9uID0gdHJ1ZTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Jl
ZmxlY3RPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9SZWZsZWN0T2JqZWN0LmgJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1JlZmxlY3RPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtMzgsNyArMzgs
NyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0p
CiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShSZWZs
ZWN0T2JqZWN0LCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOwor
ICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0
aWMgUmVmbGVjdE9iamVjdCogY3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9SZWdFeHAuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9SZWdFeHAuaAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvUmVnRXhwLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ5LDcgKzQ5LDcgQEAgcHVibGlj
OgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlLCBTdWJzcGFjZUFjY2VzcyBtb2RlPgog
ICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKLSAgICAg
ICAgcmV0dXJuICZ2bS5yZWdFeHBTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5yZWdFeHBTcGFj
ZSgpOwogICAgIH0KIAogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWdFeHAqIGNyZWF0
ZShWTSYsIGNvbnN0IFN0cmluZyYgcGF0dGVybiwgT3B0aW9uU2V0PFlhcnI6OkZsYWdzPik7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBPYmplY3QuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBPYmplY3QuaAkocmV2
aXNpb24gMjg2MDk1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwT2Jq
ZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTM2LDcgKzM2LDcgQEAgcHVibGljOgogICAgIHN0YXRp
YyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAgICAgc3RhdGlj
X2Fzc2VydCghQ2VsbFR5cGU6Om5lZWRzRGVzdHJ1Y3Rpb24sICIiKTsKLSAgICAgICAgcmV0dXJu
ICZ2bS5yZWdFeHBPYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5yZWdFeHBPYmplY3RT
cGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBjb25zdGV4cHIgdWludHB0cl90IGxhc3RJbmRl
eElzTm90V3JpdGFibGVGbGFnID0gMGIwMTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1JlZ0V4cFByb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1JlZ0V4cFByb3RvdHlwZS5oCShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBQcm90b3R5cGUuaAkod29ya2luZyBjb3B5
KQpAQCAtMzQsNyArMzQsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJz
cGFjZUZvcihWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFD
RV9TSEFSQUJMRShSZWdFeHBQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBs
YWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwog
ICAgIH0KIAogICAgIHN0YXRpYyBSZWdFeHBQcm90b3R5cGUqIGNyZWF0ZShWTSYgdm0sIEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlKQpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwU3RyaW5nSXRlcmF0b3JQcm90b3R5cGUu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBTdHJp
bmdJdGVyYXRvclByb3RvdHlwZS5oCShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9SZWdFeHBTdHJpbmdJdGVyYXRvclByb3RvdHlwZS5oCSh3b3JraW5n
IGNvcHkpCkBAIC0zOSw3ICszOSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2Uq
IHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NV
QlNQQUNFX1NIQVJBQkxFKFJlZ0V4cFN0cmluZ0l0ZXJhdG9yUHJvdG90eXBlLCBCYXNlKTsKLSAg
ICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBs
YWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgUmVnRXhwU3RyaW5nSXRlcmF0
b3JQcm90b3R5cGUqIGNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IFN0cnVjdHVyZSogc3RydWN0dXJlKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU2NvcGVkQXJndW1lbnRzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9TY29wZWRBcmd1bWVudHMuY3BwCShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TY29wZWRBcmd1bWVudHMuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC01NSw3ICs1NSw3IEBAIFNjb3BlZEFyZ3VtZW50cyogU2NvcGVkQXJndW1lbnRzOjpj
cmVhdGUKICAgICBXcml0ZUJhcnJpZXI8VW5rbm93bj4qIHN0b3JhZ2UgPSBudWxscHRyOwogICAg
IGlmICh0b3RhbExlbmd0aCA+IHRhYmxlLT5sZW5ndGgoKSkgewogICAgICAgICBDaGVja2VkPHVu
c2lnbmVkPiBvdmVyZmxvd0xlbmd0aCA9IHRvdGFsTGVuZ3RoIC0gdGFibGUtPmxlbmd0aCgpOwot
ICAgICAgICBzdG9yYWdlID0gc3RhdGljX2Nhc3Q8V3JpdGVCYXJyaWVyPFVua25vd24+Kj4odm0u
anNWYWx1ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UuYWxsb2NhdGVOb25WaXJ0dWFsKHZtLCBvdmVy
Zmxvd0xlbmd0aCAqIHNpemVvZihXcml0ZUJhcnJpZXI8VW5rbm93bj4pLCBudWxscHRyLCBBbGxv
Y2F0aW9uRmFpbHVyZU1vZGU6OkFzc2VydCkpOworICAgICAgICBzdG9yYWdlID0gc3RhdGljX2Nh
c3Q8V3JpdGVCYXJyaWVyPFVua25vd24+Kj4odm0uanNWYWx1ZUdpZ2FjYWdlQXV4aWxpYXJ5U3Bh
Y2UoKS5hbGxvY2F0ZU5vblZpcnR1YWwodm0sIG92ZXJmbG93TGVuZ3RoICogc2l6ZW9mKFdyaXRl
QmFycmllcjxVbmtub3duPiksIG51bGxwdHIsIEFsbG9jYXRpb25GYWlsdXJlTW9kZTo6QXNzZXJ0
KSk7CiAgICAgfQogCiAgICAgU2NvcGVkQXJndW1lbnRzKiByZXN1bHQgPSBuZXcgKApJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2NvcGVkQXJndW1lbnRzLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2NvcGVkQXJndW1lbnRzLmgJKHJl
dmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Njb3BlZEFy
Z3VtZW50cy5oCSh3b3JraW5nIGNvcHkpCkBAIC00Nyw3ICs0Nyw3IEBAIHB1YmxpYzoKICAgICBz
dGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAgIHN0
YXRpY19hc3NlcnQoIUNlbGxUeXBlOjpuZWVkc0Rlc3RydWN0aW9uLCAiIik7Ci0gICAgICAgIHJl
dHVybiAmdm0uc2NvcGVkQXJndW1lbnRzU3BhY2U7CisgICAgICAgIHJldHVybiAmdm0uc2NvcGVk
QXJndW1lbnRzU3BhY2UoKTsKICAgICB9CiAKICAgICAvLyBDcmVhdGVzIGFuIGFyZ3VtZW50cyBv
YmplY3QgYnV0IGxlYXZlcyBpdCB1bmluaXRpYWxpemVkLiBUaGlzIGlzIGRhbmdlcm91cyBpZiB3
ZSBHQyByaWdodApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2V0SXRlcmF0
b3JQcm90b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9TZXRJdGVyYXRvclByb3RvdHlwZS5oCShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TZXRJdGVyYXRvclByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC0zNyw3ICszNyw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNw
YWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNF
X1NIQVJBQkxFKFNldEl0ZXJhdG9yUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2
bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2Uo
KTsKICAgICB9CiAKICAgICBzdGF0aWMgU2V0SXRlcmF0b3JQcm90b3R5cGUqIGNyZWF0ZShWTSYg
dm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlKQpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2V0UHJvdG90eXBlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2V0UHJvdG90eXBlLmgJKHJl
dmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NldFByb3Rv
dHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw3ICszNyw3IEBAIHB1YmxpYzoKICAgICBzdGF0
aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJ
Q19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKFNldFByb3RvdHlwZSwgQmFzZSk7Ci0gICAg
ICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFp
bk9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBT
dHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgSGFzU3RhdGljUHJvcGVydHlU
YWJsZTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NoYWRvd1JlYWxtUHJv
dG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2hh
ZG93UmVhbG1Qcm90b3R5cGUuaAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU2hhZG93UmVhbG1Qcm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAt
MzksNyArMzksNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZv
cihWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFS
QUJMRShTaGFkb3dSZWFsbVByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxh
aW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAg
ICAgfQogCiAgICAgc3RhdGljIFNoYWRvd1JlYWxtUHJvdG90eXBlKiBjcmVhdGUoVk0mIHZtLCBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1NwYXJzZUFycmF5VmFsdWVNYXAuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9TcGFyc2VBcnJheVZhbHVlTWFwLmgJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NwYXJzZUFycmF5VmFsdWVNYXAuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMTEwLDcgKzExMCw3IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBDZWxsVHlwZSwgU3Vic3BhY2VBY2Nlc3M+CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJz
cGFjZUZvcihWTSYgdm0pCiAgICAgewotICAgICAgICByZXR1cm4gJnZtLnNwYXJzZUFycmF5VmFs
dWVNYXBTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5zcGFyc2VBcnJheVZhbHVlTWFwU3BhY2Uo
KTsKICAgICB9CiAgICAgCiAgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZN
JiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlIHByb3RvdHlwZSk7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdJdGVyYXRvclByb3RvdHlwZS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ0l0ZXJhdG9yUHJvdG90eXBl
LmgJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0
cmluZ0l0ZXJhdG9yUHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM5LDcgKzM5LDcgQEAg
cHVibGljOgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAg
IHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoU3RyaW5nSXRl
cmF0b3JQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3Bh
Y2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAg
IHN0YXRpYyBTdHJpbmdJdGVyYXRvclByb3RvdHlwZSogY3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdPYmplY3QuaAkocmV2aXNpb24gMjg2MDk1
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nT2JqZWN0LmgJKHdvcmtp
bmcgY29weSkKQEAgLTMzLDcgKzMzLDcgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1l
LCBTdWJzcGFjZUFjY2VzcyBtb2RlPgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VG
b3IoVk0mIHZtKQogICAgIHsKLSAgICAgICAgcmV0dXJuICZ2bS5zdHJpbmdPYmplY3RTcGFjZTsK
KyAgICAgICAgcmV0dXJuICZ2bS5zdHJpbmdPYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIHN0
YXRpYyBTdHJpbmdPYmplY3QqIGNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmgJKHJldmlzaW9u
IDI4NjA5NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xMjgsNyArMTI4LDcgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5
cGVuYW1lIENlbGxUeXBlLCBTdWJzcGFjZUFjY2Vzcz4KICAgICBzdGF0aWMgSXNvU3Vic3BhY2Uq
IHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7Ci0gICAgICAgIHJldHVybiAmdm0uc3RydWN0dXJl
U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0uc3RydWN0dXJlU3BhY2UoKTsKICAgICB9CiAKICAg
ICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBpc1ZhbGlkUHJvdG90eXBlKEpTVmFsdWUp
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlQ2hhaW4uY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUNo
YWluLmNwcAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU3RydWN0dXJlQ2hhaW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00OCw3ICs0OCw3IEBAIFN0
cnVjdHVyZUNoYWluKiBTdHJ1Y3R1cmVDaGFpbjo6Y3JlYXRlKFYKICAgICAgICAgKytzaXplOwog
ICAgICsrc2l6ZTsgLy8gU2VudGluZWwgbnVsbHB0ci4KICAgICBzaXplX3QgYnl0ZXMgPSBDaGVj
a2VkPHNpemVfdD4oc2l6ZSkgKiBzaXplb2YoU3RydWN0dXJlSUQpOwotICAgIFN0cnVjdHVyZUlE
KiB2ZWN0b3IgPSBzdGF0aWNfY2FzdDxTdHJ1Y3R1cmVJRCo+KHZtLmpzVmFsdWVHaWdhY2FnZUF1
eGlsaWFyeVNwYWNlLmFsbG9jYXRlTm9uVmlydHVhbCh2bSwgYnl0ZXMsIG51bGxwdHIsIEFsbG9j
YXRpb25GYWlsdXJlTW9kZTo6QXNzZXJ0KSk7CisgICAgU3RydWN0dXJlSUQqIHZlY3RvciA9IHN0
YXRpY19jYXN0PFN0cnVjdHVyZUlEKj4odm0uanNWYWx1ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2Uo
KS5hbGxvY2F0ZU5vblZpcnR1YWwodm0sIGJ5dGVzLCBudWxscHRyLCBBbGxvY2F0aW9uRmFpbHVy
ZU1vZGU6OkFzc2VydCkpOwogICAgIG1lbXNldCh2ZWN0b3IsIDAsIGJ5dGVzKTsKICAgICBTdHJ1
Y3R1cmVDaGFpbiogY2hhaW4gPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxTdHJ1Y3R1cmVD
aGFpbj4odm0pKSBTdHJ1Y3R1cmVDaGFpbih2bSwgdm0uc3RydWN0dXJlQ2hhaW5TdHJ1Y3R1cmUu
Z2V0KCksIHZlY3Rvcik7CiAgICAgY2hhaW4tPmZpbmlzaENyZWF0aW9uKHZtLCBoZWFkKTsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUNoYWluLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlQ2hhaW4uaAko
cmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0
dXJlQ2hhaW4uaAkod29ya2luZyBjb3B5KQpAQCAtNDYsNyArNDYsNyBAQCBwdWJsaWM6CiAgICAg
dGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNzPgogICAgIHN0YXRpYyBJ
c29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKLSAgICAgICAgcmV0dXJuICZ2
bS5zdHJ1Y3R1cmVDaGFpblNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnN0cnVjdHVyZUNoYWlu
U3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgU3RydWN0dXJlQ2hhaW4qIGNyZWF0ZShWTSYs
IEpTT2JqZWN0Kik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1
cmVSYXJlRGF0YS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1N0cnVjdHVyZVJhcmVEYXRhLmgJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZVJhcmVEYXRhLmgJKHdvcmtpbmcgY29weSkKQEAgLTY2
LDcgKzY2LDcgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlLCBTdWJz
cGFjZUFjY2Vzcz4KICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkK
ICAgICB7Ci0gICAgICAgIHJldHVybiAmdm0uc3RydWN0dXJlUmFyZURhdGFTcGFjZTsKKyAgICAg
ICAgcmV0dXJuICZ2bS5zdHJ1Y3R1cmVSYXJlRGF0YVNwYWNlKCk7CiAgICAgfQogCiAgICAgc3Rh
dGljIFN0cnVjdHVyZVJhcmVEYXRhKiBjcmVhdGUoVk0mLCBTdHJ1Y3R1cmUqKTsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbFByb3RvdHlwZS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbFByb3RvdHlwZS5oCShyZXZp
c2lvbiAyODYwOTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xQcm90
b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtNDEsNyArNDEsNyBAQCBwdWJsaWM6CiAgICAgc3Rh
dGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFU
SUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShTeW1ib2xQcm90b3R5cGUsIEJhc2UpOwot
ICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0u
cGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBTeW1ib2xQcm90b3R5cGUq
IGNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSog
c3RydWN0dXJlKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sVGFi
bGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xU
YWJsZS5oCShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9TeW1ib2xUYWJsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00NTYsNyArNDU2LDcgQEAgcHVibGlj
OgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlLCBTdWJzcGFjZUFjY2Vzcz4KICAgICBz
dGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7Ci0gICAgICAgIHJl
dHVybiAmdm0uc3ltYm9sVGFibGVTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5zeW1ib2xUYWJs
ZVNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIFN5bWJvbFRhYmxlKiBjcmVhdGUoVk0mIHZt
KQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxDYWxlbmRhclBy
b3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Rl
bXBvcmFsQ2FsZW5kYXJQcm90b3R5cGUuaAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxDYWxlbmRhclByb3RvdHlwZS5oCSh3b3JraW5n
IGNvcHkpCkBAIC0zOCw3ICszOCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2Uq
IHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NV
QlNQQUNFX1NIQVJBQkxFKFRlbXBvcmFsQ2FsZW5kYXJQcm90b3R5cGUsIEJhc2UpOwotICAgICAg
ICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5P
YmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBUZW1wb3JhbENhbGVuZGFyUHJvdG90
eXBlKiBjcmVhdGUoVk0mLCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSopOwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxEdXJhdGlvblByb3RvdHlwZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsRHVyYXRp
b25Qcm90b3R5cGUuaAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvVGVtcG9yYWxEdXJhdGlvblByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAyMSBTb255IEludGVyYWN0aXZlIEVu
dGVydGFpbm1lbnQgSW5jLgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzgsNyAr
MzksNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYg
dm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShU
ZW1wb3JhbER1cmF0aW9uUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFp
bk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAg
ICB9CiAKICAgICBzdGF0aWMgVGVtcG9yYWxEdXJhdGlvblByb3RvdHlwZSogY3JlYXRlKFZNJiwg
U3RydWN0dXJlKik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3Jh
bEluc3RhbnRQcm90b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9UZW1wb3JhbEluc3RhbnRQcm90b3R5cGUuaAkocmV2aXNpb24gMjg2MDk1KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxJbnN0YW50UHJvdG90eXBlLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDIx
IElnYWxpYSBTLkwuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zOCw3ICszOSw3
IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkK
ICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKFRlbXBv
cmFsSW5zdGFudFByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmpl
Y3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQog
CiAgICAgc3RhdGljIFRlbXBvcmFsSW5zdGFudFByb3RvdHlwZSogY3JlYXRlKFZNJiwgU3RydWN0
dXJlKik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbE5vdy5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsTm93
LmgJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Rl
bXBvcmFsTm93LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw2IEBACiAvKgogICogIENvcHly
aWdodCAoQykgMjAyMSBJZ2FsaWEsIFMuTC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqICBDb3B5
cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqICBU
aGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k
L29yCiAgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5l
cmFsIFB1YmxpYwpAQCAtMzIsNyArMzMsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIElzb1N1YnNw
YWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lT
T19TVUJTUEFDRV9TSEFSQUJMRShUZW1wb3JhbE5vdywgQmFzZSk7Ci0gICAgICAgIHJldHVybiAm
dm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNl
KCk7CiAgICAgfQogCiAgICAgc3RhdGljIFRlbXBvcmFsTm93KiBjcmVhdGUoVk0mLCBTdHJ1Y3R1
cmUqKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsT2JqZWN0
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxP
YmplY3QuaAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvVGVtcG9yYWxPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtMSw2ICsxLDcgQEAKIC8qCiAg
KiAgQ29weXJpZ2h0IChDKSAyMDIxIElnYWxpYSwgUy5MLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICogIENvcHlyaWdodCAoQykgMjAyMSBTb255IEludGVyYWN0aXZlIEVudGVydGFpbm1lbnQgSW5j
LgorICogIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKgogICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJp
YnV0ZSBpdCBhbmQvb3IKICAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg
TGVzc2VyIEdlbmVyYWwgUHVibGljCkBAIC02NCw3ICs2NSw3IEBAIHB1YmxpYzoKICAgICBzdGF0
aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJ
Q19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKFRlbXBvcmFsT2JqZWN0LCBCYXNlKTsKLSAg
ICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBs
YWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgVGVtcG9yYWxPYmplY3QqIGNy
ZWF0ZShWTSYsIFN0cnVjdHVyZSopOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvVGVtcG9yYWxQbGFpblRpbWVQcm90b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbFBsYWluVGltZVByb3RvdHlwZS5oCShyZXZpc2lv
biAyODYwOTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbFBsYWlu
VGltZVByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENv
cHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CkBAIC0zOCw3ICszOCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNw
YWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNF
X1NIQVJBQkxFKFRlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0
dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0
U3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgVGVtcG9yYWxQbGFpblRpbWVQcm90b3R5cGUq
IGNyZWF0ZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKik7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbFRpbWVab25lUHJvdG90eXBlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxUaW1lWm9uZVBy
b3RvdHlwZS5oCShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9UZW1wb3JhbFRpbWVab25lUHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM4LDcg
KzM4LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0m
IHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUo
VGVtcG9yYWxUaW1lWm9uZVByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxh
aW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAg
ICAgfQogCiAgICAgc3RhdGljIFRlbXBvcmFsVGltZVpvbmVQcm90b3R5cGUqIGNyZWF0ZShWTSYs
IEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9UaHJvd1Njb3BlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9UaHJvd1Njb3BlLmNwcAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGhyb3dTY29wZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMTkgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMjEgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiRXhjZXB0aW9uLmgiCiAjaW5jbHVkZSAiSlNDSlNW
YWx1ZUlubGluZXMuaCIKICNpbmNsdWRlICJWTS5oIgorI2luY2x1ZGUgPHd0Zi9TdGFja1RyYWNl
Lmg+CiAKIG5hbWVzcGFjZSBKU0MgewogICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvVk0uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1ZNLmNwcAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvVk0uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMiwyMSArMzIsMTUgQEAKICNpbmNsdWRl
ICJBY2Nlc3NDYXNlLmgiCiAjaW5jbHVkZSAiQWdncmVnYXRlRXJyb3IuaCIKICNpbmNsdWRlICJB
cmdMaXN0LmgiCi0jaW5jbHVkZSAiQmlnSW50T2JqZWN0LmgiCi0jaW5jbHVkZSAiQm9vbGVhbk9i
amVjdC5oIgotI2luY2x1ZGUgIkJyYW5kZWRTdHJ1Y3R1cmUuaCIKICNpbmNsdWRlICJCdWlsdGlu
RXhlY3V0YWJsZXMuaCIKICNpbmNsdWRlICJCeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5LmgiCiAj
aW5jbHVkZSAiQ2hlY2twb2ludE9TUkV4aXRTaWRlU3RhdGUuaCIKLSNpbmNsdWRlICJDbG9uZWRB
cmd1bWVudHMuaCIKICNpbmNsdWRlICJDb2RlQmxvY2suaCIKICNpbmNsdWRlICJDb2RlQ2FjaGUu
aCIKICNpbmNsdWRlICJDb21tb25JZGVudGlmaWVycy5oIgogI2luY2x1ZGUgIkNvbnRyb2xGbG93
UHJvZmlsZXIuaCIKICNpbmNsdWRlICJDdXN0b21HZXR0ZXJTZXR0ZXIuaCIKICNpbmNsdWRlICJE
T01BdHRyaWJ1dGVHZXR0ZXJTZXR0ZXIuaCIKLSNpbmNsdWRlICJEYXRlSW5zdGFuY2UuaCIKLSNp
bmNsdWRlICJEZWJ1Z2dlclNjb3BlLmgiCiAjaW5jbHVkZSAiRGVmZXJyZWRXb3JrVGltZXIuaCIK
ICNpbmNsdWRlICJEaXNhc3NlbWJsZXIuaCIKICNpbmNsdWRlICJEb3VibGVQcmVkaWN0aW9uRnV6
emVyQWdlbnQuaCIKQEAgLTU1LDcgKzQ5LDYgQEAKICNpbmNsdWRlICJFeGNlcHRpb24uaCIKICNp
bmNsdWRlICJFeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlLmgiCiAjaW5jbHVkZSAiRlRMVGh1bmtz
LmgiCi0jaW5jbHVkZSAiRmFzdE1hbGxvY0FsaWduZWRNZW1vcnlBbGxvY2F0b3IuaCIKICNpbmNs
dWRlICJGaWxlQmFzZWRGdXp6ZXJBZ2VudC5oIgogI2luY2x1ZGUgIkZ1bmN0aW9uQ29kZUJsb2Nr
LmgiCiAjaW5jbHVkZSAiRnVuY3Rpb25FeGVjdXRhYmxlLmgiCkBAIC02Niw3NyArNTksMjUgQEAK
ICNpbmNsdWRlICJIZWFwUHJvZmlsZXIuaCIKICNpbmNsdWRlICJJbnRlcnByZXRlci5oIgogI2lu
Y2x1ZGUgIkludGxDYWNoZS5oIgotI2luY2x1ZGUgIkludGxDb2xsYXRvci5oIgotI2luY2x1ZGUg
IkludGxEYXRlVGltZUZvcm1hdC5oIgotI2luY2x1ZGUgIkludGxEaXNwbGF5TmFtZXMuaCIKLSNp
bmNsdWRlICJJbnRsTGlzdEZvcm1hdC5oIgotI2luY2x1ZGUgIkludGxMb2NhbGUuaCIKLSNpbmNs
dWRlICJJbnRsTnVtYmVyRm9ybWF0LmgiCi0jaW5jbHVkZSAiSW50bFBsdXJhbFJ1bGVzLmgiCi0j
aW5jbHVkZSAiSW50bFJlbGF0aXZlVGltZUZvcm1hdC5oIgotI2luY2x1ZGUgIkludGxTZWdtZW50
SXRlcmF0b3IuaCIKLSNpbmNsdWRlICJJbnRsU2VnbWVudGVyLmgiCi0jaW5jbHVkZSAiSW50bFNl
Z21lbnRzLmgiCi0jaW5jbHVkZSAiSXNvSGVhcENlbGxUeXBlLmgiCi0jaW5jbHVkZSAiSXNvSW5s
aW5lZEhlYXBDZWxsVHlwZS5oIgogI2luY2x1ZGUgIkpJVENvZGUuaCIKICNpbmNsdWRlICJKSVRP
cGVyYXRpb25MaXN0LmgiCiAjaW5jbHVkZSAiSklUU2l6ZVN0YXRpc3RpY3MuaCIKICNpbmNsdWRl
ICJKSVRUaHVua3MuaCIKICNpbmNsdWRlICJKSVRXb3JrbGlzdC5oIgotI2luY2x1ZGUgIkpTQVBJ
R2xvYmFsT2JqZWN0LmgiCiAjaW5jbHVkZSAiSlNBUElWYWx1ZVdyYXBwZXIuaCIKLSNpbmNsdWRl
ICJKU0FQSVdyYXBwZXJPYmplY3QuaCIKLSNpbmNsdWRlICJKU0FycmF5LmgiCi0jaW5jbHVkZSAi
SlNBcnJheUJ1ZmZlci5oIgotI2luY2x1ZGUgIkpTQXJyYXlJdGVyYXRvci5oIgotI2luY2x1ZGUg
IkpTQXN5bmNHZW5lcmF0b3IuaCIKICNpbmNsdWRlICJKU0JpZ0ludC5oIgotI2luY2x1ZGUgIkpT
Qm91bmRGdW5jdGlvbi5oIgotI2luY2x1ZGUgIkpTQ2FsbGJhY2tDb25zdHJ1Y3Rvci5oIgotI2lu
Y2x1ZGUgIkpTQ2FsbGJhY2tGdW5jdGlvbi5oIgotI2luY2x1ZGUgIkpTQ2FsbGJhY2tPYmplY3Qu
aCIKLSNpbmNsdWRlICJKU0NhbGxlZS5oIgotI2luY2x1ZGUgIkpTQ3VzdG9tR2V0dGVyRnVuY3Rp
b24uaCIKLSNpbmNsdWRlICJKU0N1c3RvbVNldHRlckZ1bmN0aW9uLmgiCi0jaW5jbHVkZSAiSlNE
ZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuaCIKLSNpbmNsdWRlICJKU0ZpbmFsaXphdGlv
blJlZ2lzdHJ5LmgiCi0jaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgotI2luY2x1ZGUgIkpTR2xvYmFs
TGV4aWNhbEVudmlyb25tZW50LmgiCiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKICNpbmNs
dWRlICJKU0ltbXV0YWJsZUJ1dHRlcmZseS5oIgotI2luY2x1ZGUgIkpTSW5qZWN0ZWRTY3JpcHRI
b3N0LmgiCi0jaW5jbHVkZSAiSlNKYXZhU2NyaXB0Q2FsbEZyYW1lLmgiCiAjaW5jbHVkZSAiSlNM
b2NrLmgiCiAjaW5jbHVkZSAiSlNNYXAuaCIKLSNpbmNsdWRlICJKU01hcEl0ZXJhdG9yLmgiCi0j
aW5jbHVkZSAiSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QuaCIKLSNpbmNsdWRlICJKU01vZHVsZVJl
Y29yZC5oIgotI2luY2x1ZGUgIkpTTmF0aXZlU3RkRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU1By
b21pc2UuaCIKICNpbmNsdWRlICJKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3IuaCIKLSNpbmNsdWRl
ICJKU1Byb3h5LmgiCiAjaW5jbHVkZSAiSlNTY3JpcHRGZXRjaFBhcmFtZXRlcnMuaCIKICNpbmNs
dWRlICJKU1NjcmlwdEZldGNoZXIuaCIKICNpbmNsdWRlICJKU1NldC5oIgotI2luY2x1ZGUgIkpT
U2V0SXRlcmF0b3IuaCIKICNpbmNsdWRlICJKU1NvdXJjZUNvZGUuaCIKLSNpbmNsdWRlICJKU1N0
cmluZ0l0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiSlNUZW1wbGF0ZU9iamVjdERlc2NyaXB0b3IuaCIK
LSNpbmNsdWRlICJKU1RvV2FzbUlDQ2FsbGVlLmgiCi0jaW5jbHVkZSAiSlNUeXBlZEFycmF5cy5o
IgotI2luY2x1ZGUgIkpTV2Vha01hcC5oIgotI2luY2x1ZGUgIkpTV2Vha09iamVjdFJlZi5oIgot
I2luY2x1ZGUgIkpTV2Vha1NldC5oIgogI2luY2x1ZGUgIkpTV2ViQXNzZW1ibHlDb2RlQmxvY2su
aCIKLSNpbmNsdWRlICJKU1dlYkFzc2VtYmx5RXhjZXB0aW9uLmgiCi0jaW5jbHVkZSAiSlNXZWJB
c3NlbWJseUdsb2JhbC5oIgotI2luY2x1ZGUgIkpTV2ViQXNzZW1ibHlJbnN0YW5jZS5oIgotI2lu
Y2x1ZGUgIkpTV2ViQXNzZW1ibHlNZW1vcnkuaCIKLSNpbmNsdWRlICJKU1dlYkFzc2VtYmx5TW9k
dWxlLmgiCi0jaW5jbHVkZSAiSlNXZWJBc3NlbWJseVRhYmxlLmgiCi0jaW5jbHVkZSAiSlNXZWJB
c3NlbWJseVRhZy5oIgotI2luY2x1ZGUgIkpTV2l0aFNjb3BlLmgiCiAjaW5jbHVkZSAiTExJbnRE
YXRhLmgiCiAjaW5jbHVkZSAiTExJbnRFeGNlcHRpb25zLmgiCiAjaW5jbHVkZSAiTWFya2VkQmxv
Y2tJbmxpbmVzLmgiCkBAIC0xNTEsMjcgKzkyLDE2IEBACiAjaW5jbHVkZSAiUHJvZ3JhbUNvZGVC
bG9jay5oIgogI2luY2x1ZGUgIlByb2dyYW1FeGVjdXRhYmxlLmgiCiAjaW5jbHVkZSAiUHJvcGVy
dHlUYWJsZS5oIgotI2luY2x1ZGUgIlByb3h5UmV2b2tlLmgiCiAjaW5jbHVkZSAiUmFuZG9taXpp
bmdGdXp6ZXJBZ2VudC5oIgogI2luY2x1ZGUgIlJlZ0V4cENhY2hlLmgiCi0jaW5jbHVkZSAiUmVn
RXhwT2JqZWN0LmgiCiAjaW5jbHVkZSAiU2FtcGxpbmdQcm9maWxlci5oIgogI2luY2x1ZGUgIlNj
b3BlZEFyZ3VtZW50cy5oIgogI2luY2x1ZGUgIlNoYWRvd0NoaWNrZW4uaCIKLSNpbmNsdWRlICJT
aGFkb3dSZWFsbU9iamVjdC5oIgogI2luY2x1ZGUgIlNpbXBsZVR5cGVkQXJyYXlDb250cm9sbGVy
LmgiCiAjaW5jbHVkZSAiU291cmNlUHJvdmlkZXJDYWNoZS5oIgotI2luY2x1ZGUgIlN0cmljdEV2
YWxBY3RpdmF0aW9uLmgiCi0jaW5jbHVkZSAiU3RyaW5nT2JqZWN0LmgiCiAjaW5jbHVkZSAiU3Ry
b25nSW5saW5lcy5oIgogI2luY2x1ZGUgIlN0cnVjdHVyZUNoYWluLmgiCiAjaW5jbHVkZSAiU3Ry
dWN0dXJlSW5saW5lcy5oIgotI2luY2x1ZGUgIlN5bWJvbE9iamVjdC5oIgotI2luY2x1ZGUgIlRl
bXBvcmFsQ2FsZW5kYXIuaCIKLSNpbmNsdWRlICJUZW1wb3JhbER1cmF0aW9uLmgiCi0jaW5jbHVk
ZSAiVGVtcG9yYWxJbnN0YW50LmgiCi0jaW5jbHVkZSAiVGVtcG9yYWxQbGFpblRpbWUuaCIKLSNp
bmNsdWRlICJUZW1wb3JhbFRpbWVab25lLmgiCiAjaW5jbHVkZSAiVGVzdFJ1bm5lclV0aWxzLmgi
CiAjaW5jbHVkZSAiVGh1bmtHZW5lcmF0b3JzLmgiCiAjaW5jbHVkZSAiVHlwZVByb2ZpbGVyLmgi
CkBAIC0xODMsMTkgKzExMywxNiBAQAogI2luY2x1ZGUgIldhc21Xb3JrbGlzdC5oIgogI2luY2x1
ZGUgIldhdGNoZG9nLmgiCiAjaW5jbHVkZSAiV2Vha0dDTWFwSW5saW5lcy5oIgotI2luY2x1ZGUg
IldlYkFzc2VtYmx5RnVuY3Rpb24uaCIKLSNpbmNsdWRlICJXZWJBc3NlbWJseU1vZHVsZVJlY29y
ZC5oIgotI2luY2x1ZGUgIldlYkFzc2VtYmx5V3JhcHBlckZ1bmN0aW9uLmgiCiAjaW5jbHVkZSAi
V2lkZW5pbmdOdW1iZXJQcmVkaWN0aW9uRnV6emVyQWdlbnQuaCIKICNpbmNsdWRlIDx3dGYvUHJv
Y2Vzc0lELmg+CiAjaW5jbHVkZSA8d3RmL1JlYWRXcml0ZUxvY2suaD4KICNpbmNsdWRlIDx3dGYv
U2ltcGxlU3RhdHMuaD4KKyNpbmNsdWRlIDx3dGYvU3RhY2tUcmFjZS5oPgogI2luY2x1ZGUgPHd0
Zi9TdHJpbmdQcmludFN0cmVhbS5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KICNpbmNs
dWRlIDx3dGYvdGV4dC9BdG9tU3RyaW5nVGFibGUuaD4KIAogI2lmIEVOQUJMRShDX0xPT1ApCi0j
aW5jbHVkZSAiQ0xvb3BTdGFjay5oIgogI2luY2x1ZGUgIkNMb29wU3RhY2tJbmxpbmVzLmgiCiAj
ZW5kaWYKIApAQCAtMjA3LDE1ICsxMzQsNiBAQAogI2luY2x1ZGUgIlJlZ0V4cC5oIgogI2VuZGlm
CiAKLSNpZiBKU0NfT0JKQ19BUElfRU5BQkxFRAotI2luY2x1ZGUgIk9iakNDYWxsYmFja0Z1bmN0
aW9uLmgiCi0jZW5kaWYKLQotI2lmZGVmIEpTQ19HTElCX0FQSV9FTkFCTEVECi0jaW5jbHVkZSAi
SlNBUElXcmFwcGVyR2xvYmFsT2JqZWN0LmgiCi0jaW5jbHVkZSAiSlNDQ2FsbGJhY2tGdW5jdGlv
bi5oIgotI2VuZGlmCi0KIG5hbWVzcGFjZSBKU0MgewogCiBBdG9taWM8dW5zaWduZWQ+IFZNOjpz
X251bWJlck9mSURzOwpAQCAtMjkxLDEwOSArMjA5LDYgQEAgVk06OlZNKFZNVHlwZSB2bVR5cGUs
IEhlYXBUeXBlIGhlYXBUeXBlLAogICAgICwgbV9yYW5kb20oT3B0aW9uczo6c2VlZE9mVk1SYW5k
b21Gb3JGdXp6ZXIoKSA/IE9wdGlvbnM6OnNlZWRPZlZNUmFuZG9tRm9yRnV6emVyKCkgOiBjcnlw
dG9ncmFwaGljYWxseVJhbmRvbU51bWJlcigpKQogICAgICwgbV9pbnRlZ3JpdHlSYW5kb20oKnRo
aXMpCiAgICAgLCBoZWFwKCp0aGlzLCBoZWFwVHlwZSkKLSAgICAsIGZhc3RNYWxsb2NBbGxvY2F0
b3IobWFrZVVuaXF1ZTxGYXN0TWFsbG9jQWxpZ25lZE1lbW9yeUFsbG9jYXRvcj4oKSkKLSAgICAs
IHByaW1pdGl2ZUdpZ2FjYWdlQWxsb2NhdG9yKG1ha2VVbmlxdWU8R2lnYWNhZ2VBbGlnbmVkTWVt
b3J5QWxsb2NhdG9yPihHaWdhY2FnZTo6UHJpbWl0aXZlKSkKLSAgICAsIGpzVmFsdWVHaWdhY2Fn
ZUFsbG9jYXRvcihtYWtlVW5pcXVlPEdpZ2FjYWdlQWxpZ25lZE1lbW9yeUFsbG9jYXRvcj4oR2ln
YWNhZ2U6OkpTVmFsdWUpKQotICAgICwgYXV4aWxpYXJ5SGVhcENlbGxUeXBlKG1ha2VVbmlxdWU8
SGVhcENlbGxUeXBlPihDZWxsQXR0cmlidXRlcyhEb2VzTm90TmVlZERlc3RydWN0aW9uLCBIZWFw
Q2VsbDo6QXV4aWxpYXJ5KSkpCi0gICAgLCBpbW11dGFibGVCdXR0ZXJmbHlIZWFwQ2VsbFR5cGUo
bWFrZVVuaXF1ZTxIZWFwQ2VsbFR5cGU+KENlbGxBdHRyaWJ1dGVzKERvZXNOb3ROZWVkRGVzdHJ1
Y3Rpb24sIEhlYXBDZWxsOjpKU0NlbGxXaXRoSW5kZXhpbmdIZWFkZXIpKSkKLSAgICAsIGNlbGxI
ZWFwQ2VsbFR5cGUobWFrZVVuaXF1ZTxIZWFwQ2VsbFR5cGU+KENlbGxBdHRyaWJ1dGVzKERvZXNO
b3ROZWVkRGVzdHJ1Y3Rpb24sIEhlYXBDZWxsOjpKU0NlbGwpKSkKLSAgICAsIGRlc3RydWN0aWJs
ZUNlbGxIZWFwQ2VsbFR5cGUobWFrZVVuaXF1ZTxIZWFwQ2VsbFR5cGU+KENlbGxBdHRyaWJ1dGVz
KE5lZWRzRGVzdHJ1Y3Rpb24sIEhlYXBDZWxsOjpKU0NlbGwpKSkKLSAgICAsIGFwaUdsb2JhbE9i
amVjdEhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OmNyZWF0ZTxKU0FQSUdsb2JhbE9iamVj
dD4oKSkKLSAgICAsIGNhbGxiYWNrQ29uc3RydWN0b3JIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxU
eXBlOjpjcmVhdGU8SlNDYWxsYmFja0NvbnN0cnVjdG9yPigpKQotICAgICwgY2FsbGJhY2tHbG9i
YWxPYmplY3RIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpjcmVhdGU8SlNDYWxsYmFja09i
amVjdDxKU0dsb2JhbE9iamVjdD4+KCkpCi0gICAgLCBjYWxsYmFja09iamVjdEhlYXBDZWxsVHlw
ZShJc29IZWFwQ2VsbFR5cGU6OmNyZWF0ZTxKU0NhbGxiYWNrT2JqZWN0PEpTTm9uRmluYWxPYmpl
Y3Q+PigpKQotICAgICwgY3VzdG9tR2V0dGVyRnVuY3Rpb25IZWFwQ2VsbFR5cGUoSXNvSGVhcENl
bGxUeXBlOjpjcmVhdGU8SlNDdXN0b21HZXR0ZXJGdW5jdGlvbj4oKSkKLSAgICAsIGN1c3RvbVNl
dHRlckZ1bmN0aW9uSGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6Y3JlYXRlPEpTQ3VzdG9t
U2V0dGVyRnVuY3Rpb24+KCkpCi0gICAgLCBkYXRlSW5zdGFuY2VIZWFwQ2VsbFR5cGUoSXNvSGVh
cENlbGxUeXBlOjpjcmVhdGU8RGF0ZUluc3RhbmNlPigpKQotICAgICwgZXJyb3JJbnN0YW5jZUhl
YXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OmNyZWF0ZTxFcnJvckluc3RhbmNlPigpKQotICAg
ICwgZmluYWxpemF0aW9uUmVnaXN0cnlDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OmNyZWF0ZTxK
U0ZpbmFsaXphdGlvblJlZ2lzdHJ5PigpKQotICAgICwgZ2xvYmFsTGV4aWNhbEVudmlyb25tZW50
SGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6Y3JlYXRlPEpTR2xvYmFsTGV4aWNhbEVudmly
b25tZW50PigpKQotICAgICwgZ2xvYmFsT2JqZWN0SGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlw
ZTo6Y3JlYXRlPEpTR2xvYmFsT2JqZWN0PigpKQotICAgICwgaW5qZWN0ZWRTY3JpcHRIb3N0U3Bh
Y2VIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpjcmVhdGU8SW5zcGVjdG9yOjpKU0luamVj
dGVkU2NyaXB0SG9zdD4oKSkKLSAgICAsIGphdmFTY3JpcHRDYWxsRnJhbWVIZWFwQ2VsbFR5cGUo
SXNvSGVhcENlbGxUeXBlOjpjcmVhdGU8SW5zcGVjdG9yOjpKU0phdmFTY3JpcHRDYWxsRnJhbWU+
KCkpCi0gICAgLCBqc01vZHVsZVJlY29yZEhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OmNy
ZWF0ZTxKU01vZHVsZVJlY29yZD4oKSkKLSAgICAsIG1vZHVsZU5hbWVzcGFjZU9iamVjdEhlYXBD
ZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OmNyZWF0ZTxKU01vZHVsZU5hbWVzcGFjZU9iamVjdD4o
KSkKLSAgICAsIG5hdGl2ZVN0ZEZ1bmN0aW9uSGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6
Y3JlYXRlPEpTTmF0aXZlU3RkRnVuY3Rpb24+KCkpCi0gICAgLCBzdHJpbmdIZWFwQ2VsbFR5cGUo
bWFrZVVuaXF1ZTxJc29JbmxpbmVkSGVhcENlbGxUeXBlPEpTU3RyaW5nPj4oKSkKLSAgICAsIHdl
YWtNYXBIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpjcmVhdGU8SlNXZWFrTWFwPigpKQot
ICAgICwgd2Vha1NldEhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OmNyZWF0ZTxKU1dlYWtT
ZXQ+KCkpCi0gICAgLCBkZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUobWFrZVVuaXF1ZTxK
U0Rlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZT4oKSkKLSNpZiBKU0NfT0JKQ19BUElfRU5B
QkxFRAotICAgICwgYXBpV3JhcHBlck9iamVjdEhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6
OmNyZWF0ZTxKU0NhbGxiYWNrT2JqZWN0PEpTQVBJV3JhcHBlck9iamVjdD4+KCkpCi0gICAgLCBv
YmpDQ2FsbGJhY2tGdW5jdGlvbkhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OmNyZWF0ZTxP
YmpDQ2FsbGJhY2tGdW5jdGlvbj4oKSkKLSNlbmRpZgotI2lmZGVmIEpTQ19HTElCX0FQSV9FTkFC
TEVECi0gICAgLCBhcGlXcmFwcGVyT2JqZWN0SGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6
Y3JlYXRlPEpTQ2FsbGJhY2tPYmplY3Q8SlNBUElXcmFwcGVyT2JqZWN0Pj4oKSkKLSAgICAsIGNh
bGxiYWNrQVBJV3JhcHBlckdsb2JhbE9iamVjdEhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6
OmNyZWF0ZTxKU0NhbGxiYWNrT2JqZWN0PEpTQVBJV3JhcHBlckdsb2JhbE9iamVjdD4+KCkpCi0g
ICAgLCBqc2NDYWxsYmFja0Z1bmN0aW9uSGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6Y3Jl
YXRlPEpTQ0NhbGxiYWNrRnVuY3Rpb24+KCkpCi0jZW5kaWYKLSAgICAsIGludGxDb2xsYXRvckhl
YXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OmNyZWF0ZTxJbnRsQ29sbGF0b3I+KCkpCi0gICAg
LCBpbnRsRGF0ZVRpbWVGb3JtYXRIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpjcmVhdGU8
SW50bERhdGVUaW1lRm9ybWF0PigpKQotICAgICwgaW50bERpc3BsYXlOYW1lc0hlYXBDZWxsVHlw
ZShJc29IZWFwQ2VsbFR5cGU6OmNyZWF0ZTxJbnRsRGlzcGxheU5hbWVzPigpKQotICAgICwgaW50
bExpc3RGb3JtYXRIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpjcmVhdGU8SW50bExpc3RG
b3JtYXQ+KCkpCi0gICAgLCBpbnRsTG9jYWxlSGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6
Y3JlYXRlPEludGxMb2NhbGU+KCkpCi0gICAgLCBpbnRsTnVtYmVyRm9ybWF0SGVhcENlbGxUeXBl
KElzb0hlYXBDZWxsVHlwZTo6Y3JlYXRlPEludGxOdW1iZXJGb3JtYXQ+KCkpCi0gICAgLCBpbnRs
UGx1cmFsUnVsZXNIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpjcmVhdGU8SW50bFBsdXJh
bFJ1bGVzPigpKQotICAgICwgaW50bFJlbGF0aXZlVGltZUZvcm1hdEhlYXBDZWxsVHlwZShJc29I
ZWFwQ2VsbFR5cGU6OmNyZWF0ZTxJbnRsUmVsYXRpdmVUaW1lRm9ybWF0PigpKQotICAgICwgaW50
bFNlZ21lbnRJdGVyYXRvckhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OmNyZWF0ZTxJbnRs
U2VnbWVudEl0ZXJhdG9yPigpKQotICAgICwgaW50bFNlZ21lbnRlckhlYXBDZWxsVHlwZShJc29I
ZWFwQ2VsbFR5cGU6OmNyZWF0ZTxJbnRsU2VnbWVudGVyPigpKQotICAgICwgaW50bFNlZ21lbnRz
SGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6Y3JlYXRlPEludGxTZWdtZW50cz4oKSkKLSNp
ZiBFTkFCTEUoV0VCQVNTRU1CTFkpCi0gICAgLCB3ZWJBc3NlbWJseUNvZGVCbG9ja0hlYXBDZWxs
VHlwZShJc29IZWFwQ2VsbFR5cGU6OmNyZWF0ZTxKU1dlYkFzc2VtYmx5Q29kZUJsb2NrPigpKQot
ICAgICwgd2ViQXNzZW1ibHlFeGNlcHRpb25IZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpj
cmVhdGU8SlNXZWJBc3NlbWJseUV4Y2VwdGlvbj4oKSkKLSAgICAsIHdlYkFzc2VtYmx5RnVuY3Rp
b25IZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpjcmVhdGU8V2ViQXNzZW1ibHlGdW5jdGlv
bj4oKSkKLSAgICAsIHdlYkFzc2VtYmx5R2xvYmFsSGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlw
ZTo6Y3JlYXRlPEpTV2ViQXNzZW1ibHlHbG9iYWw+KCkpCi0gICAgLCB3ZWJBc3NlbWJseUluc3Rh
bmNlSGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6Y3JlYXRlPEpTV2ViQXNzZW1ibHlJbnN0
YW5jZT4oKSkKLSAgICAsIHdlYkFzc2VtYmx5TWVtb3J5SGVhcENlbGxUeXBlKElzb0hlYXBDZWxs
VHlwZTo6Y3JlYXRlPEpTV2ViQXNzZW1ibHlNZW1vcnk+KCkpCi0gICAgLCB3ZWJBc3NlbWJseU1v
ZHVsZUhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OmNyZWF0ZTxKU1dlYkFzc2VtYmx5TW9k
dWxlPigpKQotICAgICwgd2ViQXNzZW1ibHlNb2R1bGVSZWNvcmRIZWFwQ2VsbFR5cGUoSXNvSGVh
cENlbGxUeXBlOjpjcmVhdGU8V2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQ+KCkpCi0gICAgLCB3ZWJB
c3NlbWJseVRhYmxlSGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6Y3JlYXRlPEpTV2ViQXNz
ZW1ibHlUYWJsZT4oKSkKLSAgICAsIHdlYkFzc2VtYmx5VGFnSGVhcENlbGxUeXBlKElzb0hlYXBD
ZWxsVHlwZTo6Y3JlYXRlPEpTV2ViQXNzZW1ibHlUYWc+KCkpCi0jZW5kaWYKLSAgICAsIHByaW1p
dGl2ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UoIlByaW1pdGl2ZSBHaWdhY2FnZSBBdXhpbGlhcnki
LCBoZWFwLCAqYXV4aWxpYXJ5SGVhcENlbGxUeXBlLCBwcmltaXRpdmVHaWdhY2FnZUFsbG9jYXRv
ci5nZXQoKSkgLy8gSGFzaDoweDNlN2NkNzYyCi0gICAgLCBqc1ZhbHVlR2lnYWNhZ2VBdXhpbGlh
cnlTcGFjZSgiSlNWYWx1ZSBHaWdhY2FnZSBBdXhpbGlhcnkiLCBoZWFwLCAqYXV4aWxpYXJ5SGVh
cENlbGxUeXBlLCBqc1ZhbHVlR2lnYWNhZ2VBbGxvY2F0b3IuZ2V0KCkpIC8vIEhhc2g6MHgyNDFl
OTQ2Ci0gICAgLCBpbW11dGFibGVCdXR0ZXJmbHlKU1ZhbHVlR2lnYWNhZ2VBdXhpbGlhcnlTcGFj
ZSgiSW1tdXRhYmxlQnV0dGVyZmx5IEdpZ2FjYWdlIEpTQ2VsbFdpdGhJbmRleGluZ0hlYWRlciIs
IGhlYXAsICppbW11dGFibGVCdXR0ZXJmbHlIZWFwQ2VsbFR5cGUsIGpzVmFsdWVHaWdhY2FnZUFs
bG9jYXRvci5nZXQoKSkgLy8gSGFzaDoweDdhOTQ1MzAwCi0gICAgLCBjZWxsU3BhY2UoIkpTQ2Vs
bCIsIGhlYXAsICpjZWxsSGVhcENlbGxUeXBlLCBmYXN0TWFsbG9jQWxsb2NhdG9yLmdldCgpKSAv
LyBIYXNoOjB4YWRmYjVhNzkKLSAgICAsIHZhcmlhYmxlU2l6ZWRDZWxsU3BhY2UoIlZhcmlhYmxl
IFNpemVkIEpTQ2VsbCIsIGhlYXAsICpjZWxsSGVhcENlbGxUeXBlLCBmYXN0TWFsbG9jQWxsb2Nh
dG9yLmdldCgpKSAvLyBIYXNoOjB4YmNkNzY5Y2MKLSAgICAsIGRlc3RydWN0aWJsZU9iamVjdFNw
YWNlKCJKU0Rlc3RydWN0aWJsZU9iamVjdCIsIGhlYXAsICpkZXN0cnVjdGlibGVPYmplY3RIZWFw
Q2VsbFR5cGUsIGZhc3RNYWxsb2NBbGxvY2F0b3IuZ2V0KCkpIC8vIEhhc2g6MHg0ZjVlZDdhOQot
ICAgICwgYXJyYXlTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVChoZWFwLCAqY2VsbEhlYXBDZWxsVHlw
ZSwgSlNBcnJheSkKLSAgICAsIGJpZ0ludFNwYWNlIElTT19TVUJTUEFDRV9JTklUKGhlYXAsICpj
ZWxsSGVhcENlbGxUeXBlLCBKU0JpZ0ludCkKLSAgICAsIGNhbGxlZVNwYWNlIElTT19TVUJTUEFD
RV9JTklUKGhlYXAsICpjZWxsSGVhcENlbGxUeXBlLCBKU0NhbGxlZSkKLSAgICAsIGNsb25lZEFy
Z3VtZW50c1NwYWNlIElTT19TVUJTUEFDRV9JTklUKGhlYXAsICpjZWxsSGVhcENlbGxUeXBlLCBD
bG9uZWRBcmd1bWVudHMpCi0gICAgLCBjdXN0b21HZXR0ZXJTZXR0ZXJTcGFjZSBJU09fU1VCU1BB
Q0VfSU5JVChoZWFwLCAqY2VsbEhlYXBDZWxsVHlwZSwgQ3VzdG9tR2V0dGVyU2V0dGVyKQotICAg
ICwgZGF0ZUluc3RhbmNlU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoaGVhcCwgKmRhdGVJbnN0YW5j
ZUhlYXBDZWxsVHlwZSwgRGF0ZUluc3RhbmNlKQotICAgICwgZG9tQXR0cmlidXRlR2V0dGVyU2V0
dGVyU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoaGVhcCwgKmNlbGxIZWFwQ2VsbFR5cGUsIERPTUF0
dHJpYnV0ZUdldHRlclNldHRlcikKLSAgICAsIGV4Y2VwdGlvblNwYWNlIElTT19TVUJTUEFDRV9J
TklUKGhlYXAsICpkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlLCBFeGNlcHRpb24pCi0gICAg
LCBleGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoaGVhcCwg
KmNlbGxIZWFwQ2VsbFR5cGUsIEV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2UpIC8vIEhhc2g6MHg3
YjczMGIyMAotICAgICwgZnVuY3Rpb25TcGFjZSBJU09fU1VCU1BBQ0VfSU5JVChoZWFwLCAqY2Vs
bEhlYXBDZWxsVHlwZSwgSlNGdW5jdGlvbikgLy8gSGFzaDoweDgwMGZjYTcyCi0gICAgLCBnZXR0
ZXJTZXR0ZXJTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVChoZWFwLCAqY2VsbEhlYXBDZWxsVHlwZSwg
R2V0dGVyU2V0dGVyKQotICAgICwgZ2xvYmFsTGV4aWNhbEVudmlyb25tZW50U3BhY2UgSVNPX1NV
QlNQQUNFX0lOSVQoaGVhcCwgKmdsb2JhbExleGljYWxFbnZpcm9ubWVudEhlYXBDZWxsVHlwZSwg
SlNHbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQpCi0gICAgLCBpbnRlcm5hbEZ1bmN0aW9uU3BhY2Ug
SVNPX1NVQlNQQUNFX0lOSVQoaGVhcCwgKmNlbGxIZWFwQ2VsbFR5cGUsIEludGVybmFsRnVuY3Rp
b24pIC8vIEhhc2g6MHhmODQ1YzQ2NAotICAgICwganNQcm94eVNwYWNlIElTT19TVUJTUEFDRV9J
TklUKGhlYXAsICpjZWxsSGVhcENlbGxUeXBlLCBKU1Byb3h5KQotICAgICwgbmF0aXZlRXhlY3V0
YWJsZVNwYWNlIElTT19TVUJTUEFDRV9JTklUKGhlYXAsICpkZXN0cnVjdGlibGVDZWxsSGVhcENl
bGxUeXBlLCBOYXRpdmVFeGVjdXRhYmxlKSAvLyBIYXNoOjB4Njc1NjdmOTUKLSAgICAsIG51bWJl
ck9iamVjdFNwYWNlIElTT19TVUJTUEFDRV9JTklUKGhlYXAsICpjZWxsSGVhcENlbGxUeXBlLCBO
dW1iZXJPYmplY3QpCi0gICAgLCBwbGFpbk9iamVjdFNwYWNlIElTT19TVUJTUEFDRV9JTklUKGhl
YXAsICpjZWxsSGVhcENlbGxUeXBlLCBKU05vbkZpbmFsT2JqZWN0KSAvLyBNYWlubHkgdXNlZCBm
b3IgcHJvdG90eXBlcy4KLSAgICAsIHByb21pc2VTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVChoZWFw
LCAqY2VsbEhlYXBDZWxsVHlwZSwgSlNQcm9taXNlKQotICAgICwgcHJvcGVydHlOYW1lRW51bWVy
YXRvclNwYWNlIElTT19TVUJTUEFDRV9JTklUKGhlYXAsICpjZWxsSGVhcENlbGxUeXBlLCBKU1By
b3BlcnR5TmFtZUVudW1lcmF0b3IpCi0gICAgLCBwcm9wZXJ0eVRhYmxlU3BhY2UgSVNPX1NVQlNQ
QUNFX0lOSVQoaGVhcCwgKmRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUsIFByb3BlcnR5VGFi
bGUpIC8vIEhhc2g6MHhjNmJjOWYxMgotICAgICwgcmVnRXhwU3BhY2UgSVNPX1NVQlNQQUNFX0lO
SVQoaGVhcCwgKmRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUsIFJlZ0V4cCkKLSAgICAsIHJl
Z0V4cE9iamVjdFNwYWNlIElTT19TVUJTUEFDRV9JTklUKGhlYXAsICpjZWxsSGVhcENlbGxUeXBl
LCBSZWdFeHBPYmplY3QpCi0gICAgLCByb3BlU3RyaW5nU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQo
aGVhcCwgKnN0cmluZ0hlYXBDZWxsVHlwZSwgSlNSb3BlU3RyaW5nKQotICAgICwgc2NvcGVkQXJn
dW1lbnRzU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoaGVhcCwgKmNlbGxIZWFwQ2VsbFR5cGUsIFNj
b3BlZEFyZ3VtZW50cykKLSAgICAsIHNwYXJzZUFycmF5VmFsdWVNYXBTcGFjZSBJU09fU1VCU1BB
Q0VfSU5JVChoZWFwLCAqZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZSwgU3BhcnNlQXJyYXlW
YWx1ZU1hcCkKLSAgICAsIHN0cmluZ1NwYWNlIElTT19TVUJTUEFDRV9JTklUKGhlYXAsICpzdHJp
bmdIZWFwQ2VsbFR5cGUsIEpTU3RyaW5nKSAvLyBIYXNoOjB4OTBjZjc1OGYKLSAgICAsIHN0cmlu
Z09iamVjdFNwYWNlIElTT19TVUJTUEFDRV9JTklUKGhlYXAsICpjZWxsSGVhcENlbGxUeXBlLCBT
dHJpbmdPYmplY3QpCi0gICAgLCBzdHJ1Y3R1cmVDaGFpblNwYWNlIElTT19TVUJTUEFDRV9JTklU
KGhlYXAsICpjZWxsSGVhcENlbGxUeXBlLCBTdHJ1Y3R1cmVDaGFpbikKLSAgICAsIHN0cnVjdHVy
ZVJhcmVEYXRhU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoaGVhcCwgKmRlc3RydWN0aWJsZUNlbGxI
ZWFwQ2VsbFR5cGUsIFN0cnVjdHVyZVJhcmVEYXRhKSAvLyBIYXNoOjB4YWNhNGU2MmQKLSAgICAs
IHN0cnVjdHVyZVNwYWNlIElTT19TVUJTUEFDRV9JTklUKGhlYXAsICpkZXN0cnVjdGlibGVDZWxs
SGVhcENlbGxUeXBlLCBTdHJ1Y3R1cmUpIC8vIEhhc2g6MHgxZjFiY2RjYQotICAgICwgYnJhbmRl
ZFN0cnVjdHVyZVNwYWNlIElTT19TVUJTUEFDRV9JTklUKGhlYXAsICpkZXN0cnVjdGlibGVDZWxs
SGVhcENlbGxUeXBlLCBCcmFuZGVkU3RydWN0dXJlKQotICAgICwgc3ltYm9sVGFibGVTcGFjZSBJ
U09fU1VCU1BBQ0VfSU5JVChoZWFwLCAqZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZSwgU3lt
Ym9sVGFibGUpIC8vIEhhc2g6MHhjNTIxNWFmZAotICAgICwgZXhlY3V0YWJsZVRvQ29kZUJsb2Nr
RWRnZXNXaXRoQ29uc3RyYWludHMoZXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZVNwYWNlKQotICAg
ICwgZXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZXNXaXRoRmluYWxpemVycyhleGVjdXRhYmxlVG9D
b2RlQmxvY2tFZGdlU3BhY2UpCi0gICAgLCBjb2RlQmxvY2tTcGFjZSBJU09fU1VCU1BBQ0VfSU5J
VChoZWFwLCAqZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZSwgQ29kZUJsb2NrKSAvLyBIYXNo
OjB4NzdlNjZlYzkKLSAgICAsIGZ1bmN0aW9uRXhlY3V0YWJsZVNwYWNlIElTT19TVUJTUEFDRV9J
TklUKGhlYXAsICpkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlLCBGdW5jdGlvbkV4ZWN1dGFi
bGUpIC8vIEhhc2g6MHg1ZDE1OGYzCi0gICAgLCBwcm9ncmFtRXhlY3V0YWJsZVNwYWNlIElTT19T
VUJTUEFDRV9JTklUKGhlYXAsICpkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlLCBQcm9ncmFt
RXhlY3V0YWJsZSkgLy8gSGFzaDoweDUyN2M3N2U3Ci0gICAgLCB1bmxpbmtlZEZ1bmN0aW9uRXhl
Y3V0YWJsZVNwYWNlIElTT19TVUJTUEFDRV9JTklUKGhlYXAsICpkZXN0cnVjdGlibGVDZWxsSGVh
cENlbGxUeXBlLCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSkgLy8gSGFzaDoweGY2YjgyOGQ5
CiAgICAgLCB2bVR5cGUodm1UeXBlKQogICAgICwgY2xpZW50RGF0YShudWxscHRyKQogICAgICwg
dG9wRW50cnlGcmFtZShudWxscHRyKQpAQCAtMTU3MiwxMzcgKzEzODcsNiBAQCB2b2lkIFZNOjpl
bnN1cmVTaGFkb3dDaGlja2VuKCkKICAgICBtX3NoYWRvd0NoaWNrZW4gPSBtYWtlVW5pcXVlPFNo
YWRvd0NoaWNrZW4+KCk7CiB9CiAKLSNkZWZpbmUgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5F
X01FTUJFUl9TTE9XKG5hbWUsIGhlYXBDZWxsVHlwZSwgdHlwZSkgXAotICAgIElzb1N1YnNwYWNl
KiBWTTo6bmFtZSMjU2xvdygpIFwKLSAgICB7IFwKLSAgICAgICAgQVNTRVJUKCFtXyMjbmFtZSk7
IFwKLSAgICAgICAgYXV0byBzcGFjZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJT
UEFDRV9JTklUKGhlYXAsIGhlYXBDZWxsVHlwZSwgdHlwZSk7IFwKLSAgICAgICAgV1RGOjpzdG9y
ZVN0b3JlRmVuY2UoKTsgXAotICAgICAgICBtXyMjbmFtZSA9IFdURk1vdmUoc3BhY2UpOyBcCi0g
ICAgICAgIHJldHVybiBtXyMjbmFtZS5nZXQoKTsgXAotICAgIH0KLQotCi1EWU5BTUlDX0lTT19T
VUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coYXBpR2xvYmFsT2JqZWN0U3BhY2UsICphcGlHbG9i
YWxPYmplY3RIZWFwQ2VsbFR5cGUsIEpTQVBJR2xvYmFsT2JqZWN0KQotRFlOQU1JQ19JU09fU1VC
U1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGFwaVZhbHVlV3JhcHBlclNwYWNlLCAqY2VsbEhlYXBD
ZWxsVHlwZSwgSlNBUElWYWx1ZVdyYXBwZXIpCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVf
TUVNQkVSX1NMT1coYXJyYXlCdWZmZXJTcGFjZSwgKmNlbGxIZWFwQ2VsbFR5cGUsIEpTQXJyYXlC
dWZmZXIpCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coYXJyYXlJdGVy
YXRvclNwYWNlLCAqY2VsbEhlYXBDZWxsVHlwZSwgSlNBcnJheUl0ZXJhdG9yKQotRFlOQU1JQ19J
U09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGFzeW5jR2VuZXJhdG9yU3BhY2UsICpjZWxs
SGVhcENlbGxUeXBlLCBKU0FzeW5jR2VuZXJhdG9yKQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVG
SU5FX01FTUJFUl9TTE9XKGJpZ0ludDY0QXJyYXlTcGFjZSwgKmNlbGxIZWFwQ2VsbFR5cGUsIEpT
QmlnSW50NjRBcnJheSkKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhi
aWdJbnRPYmplY3RTcGFjZSwgKmNlbGxIZWFwQ2VsbFR5cGUsIEJpZ0ludE9iamVjdCkKLURZTkFN
SUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhiaWdVaW50NjRBcnJheVNwYWNlLCAq
Y2VsbEhlYXBDZWxsVHlwZSwgSlNCaWdVaW50NjRBcnJheSkKLURZTkFNSUNfSVNPX1NVQlNQQUNF
X0RFRklORV9NRU1CRVJfU0xPVyhib29sZWFuT2JqZWN0U3BhY2UsICpjZWxsSGVhcENlbGxUeXBl
LCBCb29sZWFuT2JqZWN0KQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9X
KGJvdW5kRnVuY3Rpb25TcGFjZSwgKmNlbGxIZWFwQ2VsbFR5cGUsIEpTQm91bmRGdW5jdGlvbikg
Ly8gSGFzaDoweGQ3OTE2ZDQxCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NM
T1coY2FsbGJhY2tDb25zdHJ1Y3RvclNwYWNlLCAqY2FsbGJhY2tDb25zdHJ1Y3RvckhlYXBDZWxs
VHlwZSwgSlNDYWxsYmFja0NvbnN0cnVjdG9yKQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5F
X01FTUJFUl9TTE9XKGNhbGxiYWNrR2xvYmFsT2JqZWN0U3BhY2UsICpjYWxsYmFja0dsb2JhbE9i
amVjdEhlYXBDZWxsVHlwZSwgSlNDYWxsYmFja09iamVjdDxKU0dsb2JhbE9iamVjdD4pCi1EWU5B
TUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coY2FsbGJhY2tGdW5jdGlvblNwYWNl
LCAqY2VsbEhlYXBDZWxsVHlwZSwgSlNDYWxsYmFja0Z1bmN0aW9uKSAvLyBIYXNoOjB4ZTc2NDhl
YmMKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhjYWxsYmFja09iamVj
dFNwYWNlLCAqY2FsbGJhY2tPYmplY3RIZWFwQ2VsbFR5cGUsIEpTQ2FsbGJhY2tPYmplY3Q8SlNO
b25GaW5hbE9iamVjdD4pCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1co
Y3VzdG9tR2V0dGVyRnVuY3Rpb25TcGFjZSwgKmN1c3RvbUdldHRlckZ1bmN0aW9uSGVhcENlbGxU
eXBlLCBKU0N1c3RvbUdldHRlckZ1bmN0aW9uKQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5F
X01FTUJFUl9TTE9XKGN1c3RvbVNldHRlckZ1bmN0aW9uU3BhY2UsICpjdXN0b21TZXR0ZXJGdW5j
dGlvbkhlYXBDZWxsVHlwZSwgSlNDdXN0b21TZXR0ZXJGdW5jdGlvbikKLURZTkFNSUNfSVNPX1NV
QlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhkYXRhVmlld1NwYWNlLCAqY2VsbEhlYXBDZWxsVHlw
ZSwgSlNEYXRhVmlldykKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhk
ZWJ1Z2dlclNjb3BlU3BhY2UsICpjZWxsSGVhcENlbGxUeXBlLCBEZWJ1Z2dlclNjb3BlKQotRFlO
QU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGVycm9ySW5zdGFuY2VTcGFjZSwg
KmVycm9ySW5zdGFuY2VIZWFwQ2VsbFR5cGUsIEVycm9ySW5zdGFuY2UpIC8vIEhhc2g6MHgzZjQw
ZDRhCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coZmxvYXQzMkFycmF5
U3BhY2UsICpjZWxsSGVhcENlbGxUeXBlLCBKU0Zsb2F0MzJBcnJheSkKLURZTkFNSUNfSVNPX1NV
QlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhmbG9hdDY0QXJyYXlTcGFjZSwgKmNlbGxIZWFwQ2Vs
bFR5cGUsIEpTRmxvYXQ2NEFycmF5KQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJF
Ul9TTE9XKGZ1bmN0aW9uUmFyZURhdGFTcGFjZSwgKmRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5
cGUsIEZ1bmN0aW9uUmFyZURhdGEpCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVS
X1NMT1coZ2VuZXJhdG9yU3BhY2UsICpjZWxsSGVhcENlbGxUeXBlLCBKU0dlbmVyYXRvcikKLURZ
TkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhnbG9iYWxPYmplY3RTcGFjZSwg
Kmdsb2JhbE9iamVjdEhlYXBDZWxsVHlwZSwgSlNHbG9iYWxPYmplY3QpCi1EWU5BTUlDX0lTT19T
VUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coaW5qZWN0ZWRTY3JpcHRIb3N0U3BhY2UsICppbmpl
Y3RlZFNjcmlwdEhvc3RTcGFjZUhlYXBDZWxsVHlwZSwgSW5zcGVjdG9yOjpKU0luamVjdGVkU2Ny
aXB0SG9zdCkKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhpbnQ4QXJy
YXlTcGFjZSwgKmNlbGxIZWFwQ2VsbFR5cGUsIEpTSW50OEFycmF5KQotRFlOQU1JQ19JU09fU1VC
U1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGludDE2QXJyYXlTcGFjZSwgKmNlbGxIZWFwQ2VsbFR5
cGUsIEpTSW50MTZBcnJheSkKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xP
VyhpbnQzMkFycmF5U3BhY2UsICpjZWxsSGVhcENlbGxUeXBlLCBKU0ludDMyQXJyYXkpCi1EWU5B
TUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coamF2YVNjcmlwdENhbGxGcmFtZVNw
YWNlLCAqamF2YVNjcmlwdENhbGxGcmFtZUhlYXBDZWxsVHlwZSwgSW5zcGVjdG9yOjpKU0phdmFT
Y3JpcHRDYWxsRnJhbWUpCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1co
anNNb2R1bGVSZWNvcmRTcGFjZSwgKmpzTW9kdWxlUmVjb3JkSGVhcENlbGxUeXBlLCBKU01vZHVs
ZVJlY29yZCkKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhtYXBCdWNr
ZXRTcGFjZSwgKmNlbGxIZWFwQ2VsbFR5cGUsIEpTTWFwOjpCdWNrZXRUeXBlKQotRFlOQU1JQ19J
U09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKG1hcEl0ZXJhdG9yU3BhY2UsICpjZWxsSGVh
cENlbGxUeXBlLCBKU01hcEl0ZXJhdG9yKQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01F
TUJFUl9TTE9XKG1hcFNwYWNlLCAqY2VsbEhlYXBDZWxsVHlwZSwgSlNNYXApCi1EWU5BTUlDX0lT
T19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1cobW9kdWxlTmFtZXNwYWNlT2JqZWN0U3BhY2Us
ICptb2R1bGVOYW1lc3BhY2VPYmplY3RIZWFwQ2VsbFR5cGUsIEpTTW9kdWxlTmFtZXNwYWNlT2Jq
ZWN0KQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKG5hdGl2ZVN0ZEZ1
bmN0aW9uU3BhY2UsICpuYXRpdmVTdGRGdW5jdGlvbkhlYXBDZWxsVHlwZSwgSlNOYXRpdmVTdGRG
dW5jdGlvbikgLy8gSGFzaDoweDcwZWQ2MWU0Ci1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVf
TUVNQkVSX1NMT1cocHJveHlPYmplY3RTcGFjZSwgKmNlbGxIZWFwQ2VsbFR5cGUsIFByb3h5T2Jq
ZWN0KQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHByb3h5UmV2b2tl
U3BhY2UsICpjZWxsSGVhcENlbGxUeXBlLCBQcm94eVJldm9rZSkgLy8gSGFzaDoweGI1MDZhOTM5
Ci1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coc2NvcGVkQXJndW1lbnRz
VGFibGVTcGFjZSwgKmRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUsIFNjb3BlZEFyZ3VtZW50
c1RhYmxlKQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHNjcmlwdEZl
dGNoUGFyYW1ldGVyc1NwYWNlLCAqZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZSwgSlNTY3Jp
cHRGZXRjaFBhcmFtZXRlcnMpCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NM
T1coc2NyaXB0RmV0Y2hlclNwYWNlLCAqZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZSwgSlNT
Y3JpcHRGZXRjaGVyKQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHNl
dEJ1Y2tldFNwYWNlLCAqY2VsbEhlYXBDZWxsVHlwZSwgSlNTZXQ6OkJ1Y2tldFR5cGUpCi1EWU5B
TUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coc2V0SXRlcmF0b3JTcGFjZSwgKmNl
bGxIZWFwQ2VsbFR5cGUsIEpTU2V0SXRlcmF0b3IpCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJ
TkVfTUVNQkVSX1NMT1coc2V0U3BhY2UsICpjZWxsSGVhcENlbGxUeXBlLCBKU1NldCkKLURZTkFN
SUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhzaGFkb3dSZWFsbVNwYWNlLCAqY2Vs
bEhlYXBDZWxsVHlwZSwgU2hhZG93UmVhbG1PYmplY3QpCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9E
RUZJTkVfTUVNQkVSX1NMT1coc3RyaWN0RXZhbEFjdGl2YXRpb25TcGFjZSwgKmNlbGxIZWFwQ2Vs
bFR5cGUsIFN0cmljdEV2YWxBY3RpdmF0aW9uKQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5F
X01FTUJFUl9TTE9XKHN0cmluZ0l0ZXJhdG9yU3BhY2UsICpjZWxsSGVhcENlbGxUeXBlLCBKU1N0
cmluZ0l0ZXJhdG9yKQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHNv
dXJjZUNvZGVTcGFjZSwgKmRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUsIEpTU291cmNlQ29k
ZSkKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhzeW1ib2xTcGFjZSwg
KmRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUsIFN5bWJvbCkKLURZTkFNSUNfSVNPX1NVQlNQ
QUNFX0RFRklORV9NRU1CRVJfU0xPVyhzeW1ib2xPYmplY3RTcGFjZSwgKmNlbGxIZWFwQ2VsbFR5
cGUsIFN5bWJvbE9iamVjdCkKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xP
Vyh0ZW1wbGF0ZU9iamVjdERlc2NyaXB0b3JTcGFjZSwgKmRlc3RydWN0aWJsZUNlbGxIZWFwQ2Vs
bFR5cGUsIEpTVGVtcGxhdGVPYmplY3REZXNjcmlwdG9yKQotRFlOQU1JQ19JU09fU1VCU1BBQ0Vf
REVGSU5FX01FTUJFUl9TTE9XKHRlbXBvcmFsQ2FsZW5kYXJTcGFjZSwgKmNlbGxIZWFwQ2VsbFR5
cGUsIFRlbXBvcmFsQ2FsZW5kYXIpCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVS
X1NMT1codGVtcG9yYWxEdXJhdGlvblNwYWNlLCAqY2VsbEhlYXBDZWxsVHlwZSwgVGVtcG9yYWxE
dXJhdGlvbikKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh0ZW1wb3Jh
bEluc3RhbnRTcGFjZSwgKmNlbGxIZWFwQ2VsbFR5cGUsIFRlbXBvcmFsSW5zdGFudCkKLURZTkFN
SUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh0ZW1wb3JhbFBsYWluVGltZVNwYWNl
LCAqY2VsbEhlYXBDZWxsVHlwZSwgVGVtcG9yYWxQbGFpblRpbWUpCi1EWU5BTUlDX0lTT19TVUJT
UEFDRV9ERUZJTkVfTUVNQkVSX1NMT1codGVtcG9yYWxUaW1lWm9uZVNwYWNlLCAqY2VsbEhlYXBD
ZWxsVHlwZSwgVGVtcG9yYWxUaW1lWm9uZSkKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9N
RU1CRVJfU0xPVyh1aW50OEFycmF5U3BhY2UsICpjZWxsSGVhcENlbGxUeXBlLCBKU1VpbnQ4QXJy
YXkpCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1codWludDhDbGFtcGVk
QXJyYXlTcGFjZSwgKmNlbGxIZWFwQ2VsbFR5cGUsIEpTVWludDhDbGFtcGVkQXJyYXkpCi1EWU5B
TUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1codWludDE2QXJyYXlTcGFjZSwgKmNl
bGxIZWFwQ2VsbFR5cGUsIEpTVWludDE2QXJyYXkpCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJ
TkVfTUVNQkVSX1NMT1codWludDMyQXJyYXlTcGFjZSwgKmNlbGxIZWFwQ2VsbFR5cGUsIEpTVWlu
dDMyQXJyYXkpCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1codW5saW5r
ZWRFdmFsQ29kZUJsb2NrU3BhY2UsICpkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlLCBVbmxp
bmtlZEV2YWxDb2RlQmxvY2spCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NM
T1codW5saW5rZWRGdW5jdGlvbkNvZGVCbG9ja1NwYWNlLCAqZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBD
ZWxsVHlwZSwgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jaykKLURZTkFNSUNfSVNPX1NVQlNQQUNF
X0RFRklORV9NRU1CRVJfU0xPVyh1bmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2tTcGFjZSwg
KmRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUsIFVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVC
bG9jaykKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh1bmxpbmtlZFBy
b2dyYW1Db2RlQmxvY2tTcGFjZSwgKmRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUsIFVubGlu
a2VkUHJvZ3JhbUNvZGVCbG9jaykKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJf
U0xPVyh3ZWFrTWFwU3BhY2UsICp3ZWFrTWFwSGVhcENlbGxUeXBlLCBKU1dlYWtNYXApIC8vIEhh
c2g6MHg2NjJiMTJhMwotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHdl
YWtTZXRTcGFjZSwgKndlYWtTZXRIZWFwQ2VsbFR5cGUsIEpTV2Vha1NldCkgLy8gSGFzaDoweDRj
NzgxYjMwCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1cod2Vha09iamVj
dFJlZlNwYWNlLCAqY2VsbEhlYXBDZWxsVHlwZSwgSlNXZWFrT2JqZWN0UmVmKSAvLyBIYXNoOjB4
OGVjNjhmMWYKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh3aXRoU2Nv
cGVTcGFjZSwgKmNlbGxIZWFwQ2VsbFR5cGUsIEpTV2l0aFNjb3BlKQotRFlOQU1JQ19JU09fU1VC
U1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGZpbmFsaXphdGlvblJlZ2lzdHJ5U3BhY2UsICpmaW5h
bGl6YXRpb25SZWdpc3RyeUNlbGxUeXBlLCBKU0ZpbmFsaXphdGlvblJlZ2lzdHJ5KQotI2lmIEpT
Q19PQkpDX0FQSV9FTkFCTEVECi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NM
T1coYXBpV3JhcHBlck9iamVjdFNwYWNlLCAqYXBpV3JhcHBlck9iamVjdEhlYXBDZWxsVHlwZSwg
SlNDYWxsYmFja09iamVjdDxKU0FQSVdyYXBwZXJPYmplY3Q+KQotRFlOQU1JQ19JU09fU1VCU1BB
Q0VfREVGSU5FX01FTUJFUl9TTE9XKG9iakNDYWxsYmFja0Z1bmN0aW9uU3BhY2UsICpvYmpDQ2Fs
bGJhY2tGdW5jdGlvbkhlYXBDZWxsVHlwZSwgT2JqQ0NhbGxiYWNrRnVuY3Rpb24pIC8vIEhhc2g6
MHgxMGY2MTBiOAotI2VuZGlmCi0jaWZkZWYgSlNDX0dMSUJfQVBJX0VOQUJMRUQKLURZTkFNSUNf
SVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhhcGlXcmFwcGVyT2JqZWN0U3BhY2UsICph
cGlXcmFwcGVyT2JqZWN0SGVhcENlbGxUeXBlLCBKU0NhbGxiYWNrT2JqZWN0PEpTQVBJV3JhcHBl
ck9iamVjdD4pCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coanNjQ2Fs
bGJhY2tGdW5jdGlvblNwYWNlLCAqanNjQ2FsbGJhY2tGdW5jdGlvbkhlYXBDZWxsVHlwZSwgSlND
Q2FsbGJhY2tGdW5jdGlvbikKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xP
VyhjYWxsYmFja0FQSVdyYXBwZXJHbG9iYWxPYmplY3RTcGFjZSwgKmNhbGxiYWNrQVBJV3JhcHBl
ckdsb2JhbE9iamVjdEhlYXBDZWxsVHlwZSwgSlNDYWxsYmFja09iamVjdDxKU0FQSVdyYXBwZXJH
bG9iYWxPYmplY3Q+KQotI2VuZGlmCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVS
X1NMT1coaW50bENvbGxhdG9yU3BhY2UsICppbnRsQ29sbGF0b3JIZWFwQ2VsbFR5cGUsIEludGxD
b2xsYXRvcikKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhpbnRsRGF0
ZVRpbWVGb3JtYXRTcGFjZSwgKmludGxEYXRlVGltZUZvcm1hdEhlYXBDZWxsVHlwZSwgSW50bERh
dGVUaW1lRm9ybWF0KQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGlu
dGxEaXNwbGF5TmFtZXNTcGFjZSwgKmludGxEaXNwbGF5TmFtZXNIZWFwQ2VsbFR5cGUsIEludGxE
aXNwbGF5TmFtZXMpCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coaW50
bExpc3RGb3JtYXRTcGFjZSwgKmludGxMaXN0Rm9ybWF0SGVhcENlbGxUeXBlLCBJbnRsTGlzdEZv
cm1hdCkKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhpbnRsTG9jYWxl
U3BhY2UsICppbnRsTG9jYWxlSGVhcENlbGxUeXBlLCBJbnRsTG9jYWxlKQotRFlOQU1JQ19JU09f
U1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGludGxOdW1iZXJGb3JtYXRTcGFjZSwgKmludGxO
dW1iZXJGb3JtYXRIZWFwQ2VsbFR5cGUsIEludGxOdW1iZXJGb3JtYXQpCi1EWU5BTUlDX0lTT19T
VUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coaW50bFBsdXJhbFJ1bGVzU3BhY2UsICppbnRsUGx1
cmFsUnVsZXNIZWFwQ2VsbFR5cGUsIEludGxQbHVyYWxSdWxlcykKLURZTkFNSUNfSVNPX1NVQlNQ
QUNFX0RFRklORV9NRU1CRVJfU0xPVyhpbnRsUmVsYXRpdmVUaW1lRm9ybWF0U3BhY2UsICppbnRs
UmVsYXRpdmVUaW1lRm9ybWF0SGVhcENlbGxUeXBlLCBJbnRsUmVsYXRpdmVUaW1lRm9ybWF0KQot
RFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGludGxTZWdtZW50SXRlcmF0
b3JTcGFjZSwgKmludGxTZWdtZW50SXRlcmF0b3JIZWFwQ2VsbFR5cGUsIEludGxTZWdtZW50SXRl
cmF0b3IpCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coaW50bFNlZ21l
bnRlclNwYWNlLCAqaW50bFNlZ21lbnRlckhlYXBDZWxsVHlwZSwgSW50bFNlZ21lbnRlcikKLURZ
TkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhpbnRsU2VnbWVudHNTcGFjZSwg
KmludGxTZWdtZW50c0hlYXBDZWxsVHlwZSwgSW50bFNlZ21lbnRzKQotI2lmIEVOQUJMRShXRUJB
U1NFTUJMWSkKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhqc1RvV2Fz
bUlDQ2FsbGVlU3BhY2UsICpjZWxsSGVhcENlbGxUeXBlLCBKU1RvV2FzbUlDQ2FsbGVlKQotRFlO
QU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHdlYkFzc2VtYmx5Q29kZUJsb2Nr
U3BhY2UsICp3ZWJBc3NlbWJseUNvZGVCbG9ja0hlYXBDZWxsVHlwZSwgSlNXZWJBc3NlbWJseUNv
ZGVCbG9jaykgLy8gSGFzaDoweDlhZDk5NWNkCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVf
TUVNQkVSX1NMT1cod2ViQXNzZW1ibHlFeGNlcHRpb25TcGFjZSwgKndlYkFzc2VtYmx5RXhjZXB0
aW9uSGVhcENlbGxUeXBlLCBKU1dlYkFzc2VtYmx5RXhjZXB0aW9uKQotRFlOQU1JQ19JU09fU1VC
U1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHdlYkFzc2VtYmx5RnVuY3Rpb25TcGFjZSwgKndlYkFz
c2VtYmx5RnVuY3Rpb25IZWFwQ2VsbFR5cGUsIFdlYkFzc2VtYmx5RnVuY3Rpb24pIC8vIEhhc2g6
MHg4YjdjMzJkYgotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHdlYkFz
c2VtYmx5R2xvYmFsU3BhY2UsICp3ZWJBc3NlbWJseUdsb2JhbEhlYXBDZWxsVHlwZSwgSlNXZWJB
c3NlbWJseUdsb2JhbCkKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh3
ZWJBc3NlbWJseUluc3RhbmNlU3BhY2UsICp3ZWJBc3NlbWJseUluc3RhbmNlSGVhcENlbGxUeXBl
LCBKU1dlYkFzc2VtYmx5SW5zdGFuY2UpCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVN
QkVSX1NMT1cod2ViQXNzZW1ibHlNZW1vcnlTcGFjZSwgKndlYkFzc2VtYmx5TWVtb3J5SGVhcENl
bGxUeXBlLCBKU1dlYkFzc2VtYmx5TWVtb3J5KQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5F
X01FTUJFUl9TTE9XKHdlYkFzc2VtYmx5TW9kdWxlU3BhY2UsICp3ZWJBc3NlbWJseU1vZHVsZUhl
YXBDZWxsVHlwZSwgSlNXZWJBc3NlbWJseU1vZHVsZSkKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RF
RklORV9NRU1CRVJfU0xPVyh3ZWJBc3NlbWJseU1vZHVsZVJlY29yZFNwYWNlLCAqd2ViQXNzZW1i
bHlNb2R1bGVSZWNvcmRIZWFwQ2VsbFR5cGUsIFdlYkFzc2VtYmx5TW9kdWxlUmVjb3JkKQotRFlO
QU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHdlYkFzc2VtYmx5VGFibGVTcGFj
ZSwgKndlYkFzc2VtYmx5VGFibGVIZWFwQ2VsbFR5cGUsIEpTV2ViQXNzZW1ibHlUYWJsZSkKLURZ
TkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh3ZWJBc3NlbWJseVRhZ1NwYWNl
LCAqd2ViQXNzZW1ibHlUYWdIZWFwQ2VsbFR5cGUsIEpTV2ViQXNzZW1ibHlUYWcpCi1EWU5BTUlD
X0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1cod2ViQXNzZW1ibHlXcmFwcGVyRnVuY3Rp
b25TcGFjZSwgKmNlbGxIZWFwQ2VsbFR5cGUsIFdlYkFzc2VtYmx5V3JhcHBlckZ1bmN0aW9uKSAv
LyBIYXNoOjB4ZDRhNWZmMDEKLSNlbmRpZgotCi0jdW5kZWYgRFlOQU1JQ19JU09fU1VCU1BBQ0Vf
REVGSU5FX01FTUJFUl9TTE9XCi0KLSNkZWZpbmUgRFlOQU1JQ19TUEFDRV9BTkRfU0VUX0RFRklO
RV9NRU1CRVJfU0xPVyhuYW1lLCBoZWFwQ2VsbFR5cGUsIHR5cGUpIFwKLSAgICBJc29TdWJzcGFj
ZSogVk06Om5hbWUjI1Nsb3coKSBcCi0gICAgeyBcCi0gICAgICAgIEFTU0VSVCghbV8jI25hbWUp
OyBcCi0gICAgICAgIGF1dG8gc3BhY2UgPSBtYWtlVW5pcXVlPFNwYWNlQW5kU2V0PiBJU09fU1VC
U1BBQ0VfSU5JVChoZWFwLCBoZWFwQ2VsbFR5cGUsIHR5cGUpOyBcCi0gICAgICAgIFdURjo6c3Rv
cmVTdG9yZUZlbmNlKCk7IFwKLSAgICAgICAgbV8jI25hbWUgPSBXVEZNb3ZlKHNwYWNlKTsgXAot
ICAgICAgICByZXR1cm4gJm1fIyNuYW1lLT5zcGFjZTsgXAotICAgIH0KLQotRFlOQU1JQ19TUEFD
RV9BTkRfU0VUX0RFRklORV9NRU1CRVJfU0xPVyhldmFsRXhlY3V0YWJsZVNwYWNlLCAqZGVzdHJ1
Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZSwgRXZhbEV4ZWN1dGFibGUpIC8vIEhhc2g6MHg5NThlM2U5
ZAotRFlOQU1JQ19TUEFDRV9BTkRfU0VUX0RFRklORV9NRU1CRVJfU0xPVyhtb2R1bGVQcm9ncmFt
RXhlY3V0YWJsZVNwYWNlLCAqZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZSwgTW9kdWxlUHJv
Z3JhbUV4ZWN1dGFibGUpIC8vIEhhc2g6MHg2NTA2ZmEzYwotCi0jdW5kZWYgRFlOQU1JQ19TUEFD
RV9BTkRfU0VUX0RFRklORV9NRU1CRVJfU0xPVwotCiBKU0NlbGwqIFZNOjpzZW50aW5lbFNldEJ1
Y2tldFNsb3coKQogewogICAgIEFTU0VSVCghbV9zZW50aW5lbFNldEJ1Y2tldCk7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgJKHdvcmtpbmcgY29weSkKQEAgLTI4LDI4ICsyOCwy
MyBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIkNhbGxEYXRhLmgiCiAjaW5jbHVkZSAi
Q2FsbGVlQml0cy5oIgogI2luY2x1ZGUgIkNvZGVTcGVjaWFsaXphdGlvbktpbmQuaCIKLSNpbmNs
dWRlICJDb21wbGV0ZVN1YnNwYWNlLmgiCiAjaW5jbHVkZSAiQ29uY3VycmVudEpTTG9jay5oIgog
I2luY2x1ZGUgIkRGR0RvZXNHQ0NoZWNrLmgiCiAjaW5jbHVkZSAiRGVsZXRlQWxsQ29kZUVmZm9y
dC5oIgotI2luY2x1ZGUgIkRpc2FsbG93Vk1FbnRyeS5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbkV2
ZW50TG9jYXRpb24uaCIKICNpbmNsdWRlICJGdW5jdGlvbkhhc0V4ZWN1dGVkQ2FjaGUuaCIKLSNp
bmNsdWRlICJGdXp6ZXJBZ2VudC5oIgogI2luY2x1ZGUgIkhlYXAuaCIKICNpbmNsdWRlICJJbnRl
Z3JpdHkuaCIKICNpbmNsdWRlICJJbnRyaW5zaWMuaCIKLSNpbmNsdWRlICJJc29DZWxsU2V0Lmgi
Ci0jaW5jbHVkZSAiSXNvU3Vic3BhY2UuaCIKICNpbmNsdWRlICJKU0NKU1ZhbHVlLmgiCiAjaW5j
bHVkZSAiSlNEYXRlTWF0aC5oIgogI2luY2x1ZGUgIkpTTG9jay5oIgogI2luY2x1ZGUgIkpTT05B
dG9tU3RyaW5nQ2FjaGUuaCIKICNpbmNsdWRlICJNYWNyb0Fzc2VtYmxlckNvZGVSZWYuaCIKICNp
bmNsdWRlICJNaWNyb3Rhc2suaCIKKyNpbmNsdWRlICJOYXRpdmVGdW5jdGlvbi5oIgogI2luY2x1
ZGUgIk51bWVyaWNTdHJpbmdzLmgiCiAjaW5jbHVkZSAiU21hbGxTdHJpbmdzLmgiCiAjaW5jbHVk
ZSAiU3Ryb25nLmgiCkBAIC01OCwxMCArNTMsOCBAQAogI2luY2x1ZGUgIlRodW5rR2VuZXJhdG9y
LmgiCiAjaW5jbHVkZSAiVk1UcmFwcy5oIgogI2luY2x1ZGUgIldhc21Db250ZXh0LmgiCi0jaW5j
bHVkZSAiV2F0Y2hwb2ludC5oIgogI2luY2x1ZGUgPHd0Zi9CdW1wUG9pbnRlckFsbG9jYXRvci5o
PgogI2luY2x1ZGUgPHd0Zi9DaGVja2VkQXJpdGhtZXRpYy5oPgotI2luY2x1ZGUgPHd0Zi9EYXRl
TWF0aC5oPgogI2luY2x1ZGUgPHd0Zi9EZXF1ZS5oPgogI2luY2x1ZGUgPHd0Zi9Eb3VibHlMaW5r
ZWRMaXN0Lmg+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KQEAgLTY5LDExICs2Miw5IEBACiAj
aW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2luY2x1
ZGUgPHd0Zi9TZXRGb3JTY29wZS5oPgotI2luY2x1ZGUgPHd0Zi9TdGFja0JvdW5kcy5oPgogI2lu
Y2x1ZGUgPHd0Zi9TdGFja1BvaW50ZXIuaD4KICNpbmNsdWRlIDx3dGYvU3RvcHdhdGNoLmg+CiAj
aW5jbHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+Ci0jaW5jbHVkZSA8d3RmL1RocmVh
ZFNwZWNpZmljLmg+CiAjaW5jbHVkZSA8d3RmL1VuaXF1ZUFycmF5Lmg+CiAjaW5jbHVkZSA8d3Rm
L3RleHQvU3ltYm9sUmVnaXN0cnkuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4K
QEAgLTgxLDEwICs3Miw2IEBACiAjaW5jbHVkZSA8d3RmL0xpc3RIYXNoU2V0Lmg+CiAjZW5kaWYK
IAotI2lmIEVOQUJMRShFWENFUFRJT05fU0NPUEVfVkVSSUZJQ0FUSU9OKQotI2luY2x1ZGUgPHd0
Zi9TdGFja1RyYWNlLmg+Ci0jZW5kaWYKLQogLy8gRW5hYmxlIHRoZSBPYmplY3RpdmUtQyBBUEkg
Zm9yIHBsYXRmb3JtcyB3aXRoIGEgbW9kZXJuIHJ1bnRpbWUuIFRoaXMgaGFzIHRvIG1hdGNoIGV4
YWN0bHkgd2hhdCB3ZQogLy8gaGF2ZSBpbiBKU0Jhc2UuaC4KICNpZiAhZGVmaW5lZChKU0NfT0JK
Q19BUElfRU5BQkxFRCkKQEAgLTk4LDE2ICs4NSwxNyBAQAogbmFtZXNwYWNlIFdURiB7CiBjbGFz
cyBSdW5Mb29wOwogY2xhc3MgU2ltcGxlU3RhdHM7CitjbGFzcyBTdGFja1RyYWNlOwogfSAvLyBu
YW1lc3BhY2UgV1RGCiB1c2luZyBXVEY6OlNpbXBsZVN0YXRzOwordXNpbmcgV1RGOjpTdGFja1Ry
YWNlOwogCiBuYW1lc3BhY2UgSlNDIHsKIAotY2xhc3MgQmFzaWNCbG9ja0xvY2F0aW9uOworY2xh
c3MgQXJnTGlzdDsKIGNsYXNzIEJ1aWx0aW5FeGVjdXRhYmxlczsKIGNsYXNzIEJ5dGVjb2RlSW50
cmluc2ljUmVnaXN0cnk7CiBjbGFzcyBDYWxsRnJhbWU7Ci1jbGFzcyBDYWxsTGlua0luZm87CiBl
bnVtIGNsYXNzIENhbGxNb2RlOwogc3RydWN0IENoZWNrcG9pbnRPU1JFeGl0U2lkZVN0YXRlOwog
Y2xhc3MgQ29kZUJsb2NrOwpAQCAtMTE2LDEwMSArMTA0LDQxIEBAIGNsYXNzIENvbW1vbklkZW50
aWZpZXJzOwogY2xhc3MgQ29tcGFjdFREWkVudmlyb25tZW50TWFwOwogY2xhc3MgQ29uc2VydmF0
aXZlUm9vdHM7CiBjbGFzcyBDb250cm9sRmxvd1Byb2ZpbGVyOwotY2xhc3MgQ3VzdG9tR2V0dGVy
U2V0dGVyOwotY2xhc3MgRE9NQXR0cmlidXRlR2V0dGVyU2V0dGVyOwotY2xhc3MgRGF0ZUluc3Rh
bmNlOwotY2xhc3MgRXJyb3JJbnN0YW5jZTsKIGNsYXNzIEV4Y2VwdGlvbjsKIGNsYXNzIEV4Y2Vw
dGlvblNjb3BlOwotY2xhc3MgRmFzdE1hbGxvY0FsaWduZWRNZW1vcnlBbGxvY2F0b3I7Ci1jbGFz
cyBHaWdhY2FnZUFsaWduZWRNZW1vcnlBbGxvY2F0b3I7Ci1jbGFzcyBIYW5kbGVTdGFjazsKK2Ns
YXNzIEZ1enplckFnZW50OwogY2xhc3MgSGFzT3duUHJvcGVydHlDYWNoZTsKIGNsYXNzIEhlYXBB
bmFseXplcjsKIGNsYXNzIEhlYXBQcm9maWxlcjsKLWNsYXNzIElkZW50aWZpZXI7CiBjbGFzcyBJ
bnRlcnByZXRlcjsKIGNsYXNzIEludGxDYWNoZTsKLWNsYXNzIEludGxDb2xsYXRvcjsKLWNsYXNz
IEludGxEYXRlVGltZUZvcm1hdDsKLWNsYXNzIEludGxEaXNwbGF5TmFtZXM7Ci1jbGFzcyBJbnRs
TGlzdEZvcm1hdDsKLWNsYXNzIEludGxMb2NhbGU7Ci1jbGFzcyBJbnRsTnVtYmVyRm9ybWF0Owot
Y2xhc3MgSW50bFBsdXJhbFJ1bGVzOwotY2xhc3MgSW50bFJlbGF0aXZlVGltZUZvcm1hdDsKLWNs
YXNzIEludGxTZWdtZW50SXRlcmF0b3I7Ci1jbGFzcyBJbnRsU2VnbWVudGVyOwotY2xhc3MgSW50
bFNlZ21lbnRzOwotY2xhc3MgSlNBUElHbG9iYWxPYmplY3Q7Ci1jbGFzcyBKU0FQSVdyYXBwZXJH
bG9iYWxPYmplY3Q7Ci1jbGFzcyBKU0FQSVdyYXBwZXJPYmplY3Q7Ci1jbGFzcyBKU0NDYWxsYmFj
a0Z1bmN0aW9uOwotY2xhc3MgSlNDYWxsYmFja0NvbnN0cnVjdG9yOwogY2xhc3MgSlNEZXN0cnVj
dGlibGVPYmplY3RIZWFwQ2VsbFR5cGU7CiBjbGFzcyBKU0dsb2JhbE9iamVjdDsKLWNsYXNzIEpT
R2xvYmFsTGV4aWNhbEVudmlyb25tZW50OwotY2xhc3MgSlNNb2R1bGVOYW1lc3BhY2VPYmplY3Q7
Ci1jbGFzcyBKU01vZHVsZVJlY29yZDsKLWNsYXNzIEpTTmF0aXZlU3RkRnVuY3Rpb247Ci1jbGFz
cyBKU05vbkZpbmFsT2JqZWN0OwogY2xhc3MgSlNPYmplY3Q7CiBjbGFzcyBKU1Byb21pc2U7CiBj
bGFzcyBKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3I7Ci1jbGFzcyBKU1J1bkxvb3BUaW1lcjsKLWNs
YXNzIEpTV2Vha01hcDsKLWNsYXNzIEpTV2Vha1NldDsKLWNsYXNzIEpTV2ViQXNzZW1ibHlDb2Rl
QmxvY2s7Ci1jbGFzcyBKU1dlYkFzc2VtYmx5R2xvYmFsOwotY2xhc3MgSlNXZWJBc3NlbWJseUlu
c3RhbmNlOwotY2xhc3MgSlNXZWJBc3NlbWJseU1lbW9yeTsKLWNsYXNzIEpTV2ViQXNzZW1ibHlN
b2R1bGU7Ci1jbGFzcyBKU1dlYkFzc2VtYmx5VGFibGU7CiBjbGFzcyBKSVRTaXplU3RhdGlzdGlj
czsKIGNsYXNzIEpJVFRodW5rczsKLWNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKIGNsYXNz
IE5hdGl2ZUV4ZWN1dGFibGU7Ci1jbGFzcyBPYmpDQ2FsbGJhY2tGdW5jdGlvbjsKIGNsYXNzIERl
ZmVycmVkV29ya1RpbWVyOwogY2xhc3MgUmVnRXhwOwogY2xhc3MgUmVnRXhwQ2FjaGU7CiBjbGFz
cyBSZWdpc3RlcjsKLWNsYXNzIFJlZ2lzdGVyQXRPZmZzZXRMaXN0OwogI2lmIEVOQUJMRShTQU1Q
TElOR19QUk9GSUxFUikKIGNsYXNzIFNhbXBsaW5nUHJvZmlsZXI7CiAjZW5kaWYKIGNsYXNzIFNo
YWRvd0NoaWNrZW47CiBjbGFzcyBTaGFyZWRKSVRTdHViU2V0OwotY2xhc3MgU2NyaXB0RXhlY3V0
YWJsZTsKIGNsYXNzIFNvdXJjZVByb3ZpZGVyOwogY2xhc3MgU291cmNlUHJvdmlkZXJDYWNoZTsK
LWNsYXNzIFN0YWNrRnJhbWU7CiBjbGFzcyBTdHJ1Y3R1cmU7Ci0jaWYgRU5BQkxFKFJFR0VYUF9U
UkFDSU5HKQotY2xhc3MgUmVnRXhwOwotI2VuZGlmCiBjbGFzcyBTeW1ib2w7Ci1jbGFzcyBUZW1w
b3JhbER1cmF0aW9uOwotY2xhc3MgVGVtcG9yYWxJbnN0YW50OwogY2xhc3MgVHlwZWRBcnJheUNv
bnRyb2xsZXI7Ci1jbGFzcyBVbmxpbmtlZENvZGVCbG9jazsKLWNsYXNzIFVubGlua2VkRXZhbENv
ZGVCbG9jazsKLWNsYXNzIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOwotY2xhc3MgVW5saW5r
ZWRQcm9ncmFtQ29kZUJsb2NrOwotY2xhc3MgVW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2Nr
OwotY2xhc3MgVmlydHVhbFJlZ2lzdGVyOwogY2xhc3MgVk1FbnRyeVNjb3BlOwotY2xhc3MgVGVt
cG9yYWxDYWxlbmRhcjsKLWNsYXNzIFRlbXBvcmFsUGxhaW5UaW1lOwotY2xhc3MgVGVtcG9yYWxU
aW1lWm9uZTsKLWNsYXNzIFRvcExldmVsR2xvYmFsT2JqZWN0U2NvcGU7CiBjbGFzcyBUeXBlUHJv
ZmlsZXI7CiBjbGFzcyBUeXBlUHJvZmlsZXJMb2c7CiBjbGFzcyBXYXRjaGRvZzsKLWNsYXNzIFdh
dGNocG9pbnQ7CiBjbGFzcyBXYXRjaHBvaW50U2V0OwotY2xhc3MgV2ViQXNzZW1ibHlGdW5jdGlv
bjsKLWNsYXNzIFdlYkFzc2VtYmx5TW9kdWxlUmVjb3JkOwogCiAjaWYgRU5BQkxFKERGR19KSVQp
ICYmIEFTU0VSVF9FTkFCTEVECiAjZGVmaW5lIEVOQUJMRV9ERkdfRE9FU19HQ19WQUxJREFUSU9O
IDEKQEAgLTIyMCwxMCArMTQ4LDYgQEAgY2xhc3MgV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQ7CiAK
IGNvbnN0ZXhwciBib29sIHZhbGlkYXRlREZHRG9lc0dDID0gRU5BQkxFX0RGR19ET0VTX0dDX1ZB
TElEQVRJT047CiAKLWNsYXNzIElzb0hlYXBDZWxsVHlwZTsKLXRlbXBsYXRlPHR5cGVuYW1lIENl
bGxUeXBlPiBjbGFzcyBJc29JbmxpbmVkSGVhcENlbGxUeXBlOwotdGVtcGxhdGU8dHlwZW5hbWUg
UGFyZW50PiBjbGFzcyBKU0NhbGxiYWNrT2JqZWN0OwotCiAjaWYgRU5BQkxFKEZUTF9KSVQpCiBu
YW1lc3BhY2UgRlRMIHsKIGNsYXNzIFRodW5rczsKQEAgLTIzNSwxNCArMTU5LDkgQEAgY2xhc3Mg
RGF0YWJhc2U7CiBuYW1lc3BhY2UgRE9NSklUIHsKIGNsYXNzIFNpZ25hdHVyZTsKIH0KLW5hbWVz
cGFjZSBZYXJyIHsKLWNsYXNzIE1hdGNoaW5nQ29udGV4dEhvbGRlcjsKLX0KIAogc3RydWN0IEVu
dHJ5RnJhbWU7Ci1zdHJ1Y3QgSGFzaFRhYmxlOwogc3RydWN0IEluc3RydWN0aW9uOwotc3RydWN0
IFZhbHVlUHJvZmlsZTsKIAogY2xhc3MgUXVldWVkVGFzayB7CiAgICAgV1RGX01BS0VfTk9OQ09Q
WUFCTEUoUXVldWVkVGFzayk7CkBAIC0yNjEsOCArMTgwLDYgQEAgcHJpdmF0ZToKICAgICBSZWY8
TWljcm90YXNrPiBtX21pY3JvdGFzazsKIH07CiAKLWNsYXNzIENvbnNlcnZhdGl2ZVJvb3RzOwot
CiBERUNMQVJFX0FMTE9DQVRPUl9XSVRIX0hFQVBfSURFTlRJRklFUihWTSk7CiAKICNpZiBDT01Q
SUxFUihNU1ZDKQpAQCAtMzU3LDExICsyNzQsNyBAQCBwdWJsaWM6CiAjZW5kaWYKIAogICAgIEZ1
enplckFnZW50KiBmdXp6ZXJBZ2VudCgpIGNvbnN0IHsgcmV0dXJuIG1fZnV6emVyQWdlbnQuZ2V0
KCk7IH0KLSAgICB2b2lkIHNldEZ1enplckFnZW50KHN0ZDo6dW5pcXVlX3B0cjxGdXp6ZXJBZ2Vu
dD4mJiBmdXp6ZXJBZ2VudCkKLSAgICB7Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUX1dJVEhfTUVT
U0FHRSghbV9mdXp6ZXJBZ2VudCwgIk9ubHkgb25lIEZ1enplckFnZW50IGNhbiBiZSBzcGVjaWZp
ZWQgYXQgYSB0aW1lLiIpOwotICAgICAgICBtX2Z1enplckFnZW50ID0gV1RGTW92ZShmdXp6ZXJB
Z2VudCk7Ci0gICAgfQorICAgIHZvaWQgc2V0RnV6emVyQWdlbnQoc3RkOjp1bmlxdWVfcHRyPEZ1
enplckFnZW50PiYmIGZ1enplckFnZW50KTsKIAogICAgIHN0YXRpYyB1bnNpZ25lZCBudW1iZXJP
ZklEcygpIHsgcmV0dXJuIHNfbnVtYmVyT2ZJRHMubG9hZCgpOyB9CiAgICAgdW5zaWduZWQgaWQo
KSBjb25zdCB7IHJldHVybiBtX2lkOyB9CkBAIC00MTMsMTQ1ICszMjYsNTggQEAgcHJpdmF0ZToK
IAogcHVibGljOgogICAgIEhlYXAgaGVhcDsKLSAgICAKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8RmFz
dE1hbGxvY0FsaWduZWRNZW1vcnlBbGxvY2F0b3I+IGZhc3RNYWxsb2NBbGxvY2F0b3I7Ci0gICAg
c3RkOjp1bmlxdWVfcHRyPEdpZ2FjYWdlQWxpZ25lZE1lbW9yeUFsbG9jYXRvcj4gcHJpbWl0aXZl
R2lnYWNhZ2VBbGxvY2F0b3I7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPEdpZ2FjYWdlQWxpZ25lZE1l
bW9yeUFsbG9jYXRvcj4ganNWYWx1ZUdpZ2FjYWdlQWxsb2NhdG9yOwotCi0gICAgc3RkOjp1bmlx
dWVfcHRyPEhlYXBDZWxsVHlwZT4gYXV4aWxpYXJ5SGVhcENlbGxUeXBlOwotICAgIHN0ZDo6dW5p
cXVlX3B0cjxIZWFwQ2VsbFR5cGU+IGltbXV0YWJsZUJ1dHRlcmZseUhlYXBDZWxsVHlwZTsKLSAg
ICBzdGQ6OnVuaXF1ZV9wdHI8SGVhcENlbGxUeXBlPiBjZWxsSGVhcENlbGxUeXBlOwotICAgIHN0
ZDo6dW5pcXVlX3B0cjxIZWFwQ2VsbFR5cGU+IGRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGU7
Ci0gICAgc3RkOjp1bmlxdWVfcHRyPElzb0hlYXBDZWxsVHlwZT4gYXBpR2xvYmFsT2JqZWN0SGVh
cENlbGxUeXBlOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxJc29IZWFwQ2VsbFR5cGU+IGNhbGxiYWNr
Q29uc3RydWN0b3JIZWFwQ2VsbFR5cGU7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPElzb0hlYXBDZWxs
VHlwZT4gY2FsbGJhY2tHbG9iYWxPYmplY3RIZWFwQ2VsbFR5cGU7Ci0gICAgc3RkOjp1bmlxdWVf
cHRyPElzb0hlYXBDZWxsVHlwZT4gY2FsbGJhY2tPYmplY3RIZWFwQ2VsbFR5cGU7Ci0gICAgc3Rk
Ojp1bmlxdWVfcHRyPElzb0hlYXBDZWxsVHlwZT4gY3VzdG9tR2V0dGVyRnVuY3Rpb25IZWFwQ2Vs
bFR5cGU7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPElzb0hlYXBDZWxsVHlwZT4gY3VzdG9tU2V0dGVy
RnVuY3Rpb25IZWFwQ2VsbFR5cGU7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPElzb0hlYXBDZWxsVHlw
ZT4gZGF0ZUluc3RhbmNlSGVhcENlbGxUeXBlOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxJc29IZWFw
Q2VsbFR5cGU+IGVycm9ySW5zdGFuY2VIZWFwQ2VsbFR5cGU7Ci0gICAgc3RkOjp1bmlxdWVfcHRy
PElzb0hlYXBDZWxsVHlwZT4gZmluYWxpemF0aW9uUmVnaXN0cnlDZWxsVHlwZTsKLSAgICBzdGQ6
OnVuaXF1ZV9wdHI8SXNvSGVhcENlbGxUeXBlPiBnbG9iYWxMZXhpY2FsRW52aXJvbm1lbnRIZWFw
Q2VsbFR5cGU7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPElzb0hlYXBDZWxsVHlwZT4gZ2xvYmFsT2Jq
ZWN0SGVhcENlbGxUeXBlOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxJc29IZWFwQ2VsbFR5cGU+IGlu
amVjdGVkU2NyaXB0SG9zdFNwYWNlSGVhcENlbGxUeXBlOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxJ
c29IZWFwQ2VsbFR5cGU+IGphdmFTY3JpcHRDYWxsRnJhbWVIZWFwQ2VsbFR5cGU7Ci0gICAgc3Rk
Ojp1bmlxdWVfcHRyPElzb0hlYXBDZWxsVHlwZT4ganNNb2R1bGVSZWNvcmRIZWFwQ2VsbFR5cGU7
Ci0gICAgc3RkOjp1bmlxdWVfcHRyPElzb0hlYXBDZWxsVHlwZT4gbW9kdWxlTmFtZXNwYWNlT2Jq
ZWN0SGVhcENlbGxUeXBlOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxJc29IZWFwQ2VsbFR5cGU+IG5h
dGl2ZVN0ZEZ1bmN0aW9uSGVhcENlbGxUeXBlOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxJc29Jbmxp
bmVkSGVhcENlbGxUeXBlPEpTU3RyaW5nPj4gc3RyaW5nSGVhcENlbGxUeXBlOwotICAgIHN0ZDo6
dW5pcXVlX3B0cjxJc29IZWFwQ2VsbFR5cGU+IHdlYWtNYXBIZWFwQ2VsbFR5cGU7Ci0gICAgc3Rk
Ojp1bmlxdWVfcHRyPElzb0hlYXBDZWxsVHlwZT4gd2Vha1NldEhlYXBDZWxsVHlwZTsKLSAgICBz
dGQ6OnVuaXF1ZV9wdHI8SlNEZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGU+IGRlc3RydWN0
aWJsZU9iamVjdEhlYXBDZWxsVHlwZTsKLSNpZiBKU0NfT0JKQ19BUElfRU5BQkxFRAotICAgIHN0
ZDo6dW5pcXVlX3B0cjxJc29IZWFwQ2VsbFR5cGU+IGFwaVdyYXBwZXJPYmplY3RIZWFwQ2VsbFR5
cGU7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPElzb0hlYXBDZWxsVHlwZT4gb2JqQ0NhbGxiYWNrRnVu
Y3Rpb25IZWFwQ2VsbFR5cGU7Ci0jZW5kaWYKLSNpZmRlZiBKU0NfR0xJQl9BUElfRU5BQkxFRAot
ICAgIHN0ZDo6dW5pcXVlX3B0cjxJc29IZWFwQ2VsbFR5cGU+IGFwaVdyYXBwZXJPYmplY3RIZWFw
Q2VsbFR5cGU7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPElzb0hlYXBDZWxsVHlwZT4gY2FsbGJhY2tB
UElXcmFwcGVyR2xvYmFsT2JqZWN0SGVhcENlbGxUeXBlOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxJ
c29IZWFwQ2VsbFR5cGU+IGpzY0NhbGxiYWNrRnVuY3Rpb25IZWFwQ2VsbFR5cGU7Ci0jZW5kaWYK
LSAgICBzdGQ6OnVuaXF1ZV9wdHI8SXNvSGVhcENlbGxUeXBlPiBpbnRsQ29sbGF0b3JIZWFwQ2Vs
bFR5cGU7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPElzb0hlYXBDZWxsVHlwZT4gaW50bERhdGVUaW1l
Rm9ybWF0SGVhcENlbGxUeXBlOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxJc29IZWFwQ2VsbFR5cGU+
IGludGxEaXNwbGF5TmFtZXNIZWFwQ2VsbFR5cGU7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPElzb0hl
YXBDZWxsVHlwZT4gaW50bExpc3RGb3JtYXRIZWFwQ2VsbFR5cGU7Ci0gICAgc3RkOjp1bmlxdWVf
cHRyPElzb0hlYXBDZWxsVHlwZT4gaW50bExvY2FsZUhlYXBDZWxsVHlwZTsKLSAgICBzdGQ6OnVu
aXF1ZV9wdHI8SXNvSGVhcENlbGxUeXBlPiBpbnRsTnVtYmVyRm9ybWF0SGVhcENlbGxUeXBlOwot
ICAgIHN0ZDo6dW5pcXVlX3B0cjxJc29IZWFwQ2VsbFR5cGU+IGludGxQbHVyYWxSdWxlc0hlYXBD
ZWxsVHlwZTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SXNvSGVhcENlbGxUeXBlPiBpbnRsUmVsYXRp
dmVUaW1lRm9ybWF0SGVhcENlbGxUeXBlOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxJc29IZWFwQ2Vs
bFR5cGU+IGludGxTZWdtZW50SXRlcmF0b3JIZWFwQ2VsbFR5cGU7Ci0gICAgc3RkOjp1bmlxdWVf
cHRyPElzb0hlYXBDZWxsVHlwZT4gaW50bFNlZ21lbnRlckhlYXBDZWxsVHlwZTsKLSAgICBzdGQ6
OnVuaXF1ZV9wdHI8SXNvSGVhcENlbGxUeXBlPiBpbnRsU2VnbWVudHNIZWFwQ2VsbFR5cGU7Ci0j
aWYgRU5BQkxFKFdFQkFTU0VNQkxZKQotICAgIHN0ZDo6dW5pcXVlX3B0cjxJc29IZWFwQ2VsbFR5
cGU+IHdlYkFzc2VtYmx5Q29kZUJsb2NrSGVhcENlbGxUeXBlOwotICAgIHN0ZDo6dW5pcXVlX3B0
cjxJc29IZWFwQ2VsbFR5cGU+IHdlYkFzc2VtYmx5RXhjZXB0aW9uSGVhcENlbGxUeXBlOwotICAg
IHN0ZDo6dW5pcXVlX3B0cjxJc29IZWFwQ2VsbFR5cGU+IHdlYkFzc2VtYmx5RnVuY3Rpb25IZWFw
Q2VsbFR5cGU7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPElzb0hlYXBDZWxsVHlwZT4gd2ViQXNzZW1i
bHlHbG9iYWxIZWFwQ2VsbFR5cGU7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPElzb0hlYXBDZWxsVHlw
ZT4gd2ViQXNzZW1ibHlJbnN0YW5jZUhlYXBDZWxsVHlwZTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8
SXNvSGVhcENlbGxUeXBlPiB3ZWJBc3NlbWJseU1lbW9yeUhlYXBDZWxsVHlwZTsKLSAgICBzdGQ6
OnVuaXF1ZV9wdHI8SXNvSGVhcENlbGxUeXBlPiB3ZWJBc3NlbWJseU1vZHVsZUhlYXBDZWxsVHlw
ZTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SXNvSGVhcENlbGxUeXBlPiB3ZWJBc3NlbWJseU1vZHVs
ZVJlY29yZEhlYXBDZWxsVHlwZTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SXNvSGVhcENlbGxUeXBl
PiB3ZWJBc3NlbWJseVRhYmxlSGVhcENlbGxUeXBlOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxJc29I
ZWFwQ2VsbFR5cGU+IHdlYkFzc2VtYmx5VGFnSGVhcENlbGxUeXBlOwotI2VuZGlmCisKKyAgICBj
b25zdCBIZWFwQ2VsbFR5cGUmIGNlbGxIZWFwQ2VsbFR5cGUoKSB7IHJldHVybiBoZWFwLmNlbGxI
ZWFwQ2VsbFR5cGU7IH0KKyAgICBjb25zdCBKU0Rlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlw
ZSYgZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCkgeyByZXR1cm4gaGVhcC5kZXN0cnVj
dGlibGVPYmplY3RIZWFwQ2VsbFR5cGU7IH07CiAKICNpZiBFTkFCTEUoSklUKQogICAgIHN0ZDo6
dW5pcXVlX3B0cjxKSVRTaXplU3RhdGlzdGljcz4gaml0U2l6ZVN0YXRpc3RpY3M7CiAjZW5kaWYK
ICAgICAKLSAgICBDb21wbGV0ZVN1YnNwYWNlIHByaW1pdGl2ZUdpZ2FjYWdlQXV4aWxpYXJ5U3Bh
Y2U7IC8vIFR5cGVkIGFycmF5cywgc3RyaW5ncywgYml0dmVjdG9ycywgZXRjIGdvIGhlcmUuCi0g
ICAgQ29tcGxldGVTdWJzcGFjZSBqc1ZhbHVlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZTsgLy8gQnV0
dGVyZmxpZXMsIGFycmF5cyBvZiBKU1ZhbHVlcywgZXRjIGdvIGhlcmUuCi0gICAgQ29tcGxldGVT
dWJzcGFjZSBpbW11dGFibGVCdXR0ZXJmbHlKU1ZhbHVlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZTsg
Ly8gSlNJbW11dGFibGVCdXR0ZXJmbHkgZ29lcyBoZXJlLgotCi0gICAgLy8gV2UgbWFrZSBjcm9z
cy1jdXR0aW5nIGFzc3VtcHRpb25zIGFib3V0IHR5cGVkIGFycmF5cyBiZWluZyBpbiB0aGUgcHJp
bWl0aXZlIEdpZ2FjYWdlIGFuZCBidXR0ZXJmbGllcwotICAgIC8vIGJlaW5nIGluIHRoZSBKU1Zh
bHVlIGdpZ2FjYWdlLiBGb3Igc29tZSB0eXBlcywgaXQncyBzdXBlciBvYnZpb3VzIHdoZXJlIHRo
ZXkgc2hvdWxkIGdvLCBhbmQgc28gd2UKLSAgICAvLyBjYW4gaGFyZGNvZGUgdGhhdCBmYWN0LiBC
dXQgc29tZXRpbWVzIGl0J3Mgbm90IGNsZWFyLCBzbyB3ZSBhYnN0cmFjdCBpdCBieSBoYXZpbmcg
YSBHaWdhY2FnZTo6S2luZAotICAgIC8vIGNvbnN0YW50IHNvbWV3aGVyZS4KLSAgICAvLyBGSVhN
RTogTWF5YmUgaXQgd291bGQgYmUgYmV0dGVyIGlmIGV2ZXJ5b25lIGFic3RyYWN0ZWQgdGhpcz8K
LSAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc1MjQ4Ci0g
ICAgQUxXQVlTX0lOTElORSBDb21wbGV0ZVN1YnNwYWNlJiBnaWdhY2FnZUF1eGlsaWFyeVNwYWNl
KEdpZ2FjYWdlOjpLaW5kIGtpbmQpCi0gICAgewotICAgICAgICBzd2l0Y2ggKGtpbmQpIHsKLSAg
ICAgICAgY2FzZSBHaWdhY2FnZTo6UHJpbWl0aXZlOgotICAgICAgICAgICAgcmV0dXJuIHByaW1p
dGl2ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2U7Ci0gICAgICAgIGNhc2UgR2lnYWNhZ2U6OkpTVmFs
dWU6Ci0gICAgICAgICAgICByZXR1cm4ganNWYWx1ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2U7Ci0g
ICAgICAgIGNhc2UgR2lnYWNhZ2U6Ok51bWJlck9mS2luZHM6Ci0gICAgICAgICAgICBicmVhazsK
LSAgICAgICAgfQotICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAg
ICByZXR1cm4gcHJpbWl0aXZlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZTsKLSAgICB9Ci0gICAgCi0g
ICAgLy8gV2hlbmV2ZXIgcG9zc2libGUsIHVzZSBzdWJzcGFjZUZvcjxDZWxsVHlwZT4odm0pIHRv
IGdldCBvbmUgb2YgdGhlc2Ugc3Vic3BhY2VzLgotICAgIENvbXBsZXRlU3Vic3BhY2UgY2VsbFNw
YWNlOwotICAgIENvbXBsZXRlU3Vic3BhY2UgdmFyaWFibGVTaXplZENlbGxTcGFjZTsgLy8gRklY
TUU6IFRoaXMgc3BhY2UgaXMgcHJvYmxlbWF0aWMgYmVjYXVzZSB3ZSBoYXZlIHRoaW5ncyBpbiBo
ZXJlIGxpa2UgRGlyZWN0QXJndW1lbnRzIGFuZCBTY29wZWRBcmd1bWVudHM7IHRob3NlIHNob3Vs
ZCBiZSBzcGxpdCBpbnRvIEpTVmFsdWVPT0IgY2VsbHMgYW5kIEpTVmFsdWVTdHJpY3QgYXV4aWxp
YXJpZXMuIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODI4NTgKLSAg
ICBDb21wbGV0ZVN1YnNwYWNlIGRlc3RydWN0aWJsZU9iamVjdFNwYWNlOwotICAgIAotICAgIElz
b1N1YnNwYWNlIGFycmF5U3BhY2U7Ci0gICAgSXNvU3Vic3BhY2UgYmlnSW50U3BhY2U7Ci0gICAg
SXNvU3Vic3BhY2UgY2FsbGVlU3BhY2U7Ci0gICAgSXNvU3Vic3BhY2UgY2xvbmVkQXJndW1lbnRz
U3BhY2U7Ci0gICAgSXNvU3Vic3BhY2UgY3VzdG9tR2V0dGVyU2V0dGVyU3BhY2U7Ci0gICAgSXNv
U3Vic3BhY2UgZGF0ZUluc3RhbmNlU3BhY2U7Ci0gICAgSXNvU3Vic3BhY2UgZG9tQXR0cmlidXRl
R2V0dGVyU2V0dGVyU3BhY2U7Ci0gICAgSXNvU3Vic3BhY2UgZXhjZXB0aW9uU3BhY2U7Ci0gICAg
SXNvU3Vic3BhY2UgZXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZVNwYWNlOwotICAgIElzb1N1YnNw
YWNlIGZ1bmN0aW9uU3BhY2U7Ci0gICAgSXNvU3Vic3BhY2UgZ2V0dGVyU2V0dGVyU3BhY2U7Ci0g
ICAgSXNvU3Vic3BhY2UgZ2xvYmFsTGV4aWNhbEVudmlyb25tZW50U3BhY2U7Ci0gICAgSXNvU3Vi
c3BhY2UgaW50ZXJuYWxGdW5jdGlvblNwYWNlOwotICAgIElzb1N1YnNwYWNlIGpzUHJveHlTcGFj
ZTsKLSAgICBJc29TdWJzcGFjZSBuYXRpdmVFeGVjdXRhYmxlU3BhY2U7Ci0gICAgSXNvU3Vic3Bh
Y2UgbnVtYmVyT2JqZWN0U3BhY2U7Ci0gICAgSXNvU3Vic3BhY2UgcGxhaW5PYmplY3RTcGFjZTsK
LSAgICBJc29TdWJzcGFjZSBwcm9taXNlU3BhY2U7Ci0gICAgSXNvU3Vic3BhY2UgcHJvcGVydHlO
YW1lRW51bWVyYXRvclNwYWNlOwotICAgIElzb1N1YnNwYWNlIHByb3BlcnR5VGFibGVTcGFjZTsK
LSAgICBJc29TdWJzcGFjZSByZWdFeHBTcGFjZTsKLSAgICBJc29TdWJzcGFjZSByZWdFeHBPYmpl
Y3RTcGFjZTsKLSAgICBJc29TdWJzcGFjZSByb3BlU3RyaW5nU3BhY2U7Ci0gICAgSXNvU3Vic3Bh
Y2Ugc2NvcGVkQXJndW1lbnRzU3BhY2U7Ci0gICAgSXNvU3Vic3BhY2Ugc3BhcnNlQXJyYXlWYWx1
ZU1hcFNwYWNlOwotICAgIElzb1N1YnNwYWNlIHN0cmluZ1NwYWNlOwotICAgIElzb1N1YnNwYWNl
IHN0cmluZ09iamVjdFNwYWNlOwotICAgIElzb1N1YnNwYWNlIHN0cnVjdHVyZUNoYWluU3BhY2U7
Ci0gICAgSXNvU3Vic3BhY2Ugc3RydWN0dXJlUmFyZURhdGFTcGFjZTsKLSAgICBJc29TdWJzcGFj
ZSBzdHJ1Y3R1cmVTcGFjZTsKLSAgICBJc29TdWJzcGFjZSBicmFuZGVkU3RydWN0dXJlU3BhY2U7
Ci0gICAgSXNvU3Vic3BhY2Ugc3ltYm9sVGFibGVTcGFjZTsKKyAgICBBTFdBWVNfSU5MSU5FIENv
bXBsZXRlU3Vic3BhY2UmIHByaW1pdGl2ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UoKSB7IHJldHVy
biBoZWFwLnByaW1pdGl2ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2U7IH0KKyAgICBBTFdBWVNfSU5M
SU5FIENvbXBsZXRlU3Vic3BhY2UmIGpzVmFsdWVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlKCkgeyBy
ZXR1cm4gaGVhcC5qc1ZhbHVlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZTsgfQorICAgIEFMV0FZU19J
TkxJTkUgQ29tcGxldGVTdWJzcGFjZSYgaW1tdXRhYmxlQnV0dGVyZmx5SlNWYWx1ZUdpZ2FjYWdl
QXV4aWxpYXJ5U3BhY2UoKSB7IHJldHVybiBoZWFwLmltbXV0YWJsZUJ1dHRlcmZseUpTVmFsdWVH
aWdhY2FnZUF1eGlsaWFyeVNwYWNlOyB9CisgICAgQUxXQVlTX0lOTElORSBDb21wbGV0ZVN1YnNw
YWNlJiBnaWdhY2FnZUF1eGlsaWFyeVNwYWNlKEdpZ2FjYWdlOjpLaW5kIGtpbmQpIHsgcmV0dXJu
IGhlYXAuZ2lnYWNhZ2VBdXhpbGlhcnlTcGFjZShraW5kKTsgfQorICAgIEFMV0FZU19JTkxJTkUg
Q29tcGxldGVTdWJzcGFjZSYgY2VsbFNwYWNlKCkgeyByZXR1cm4gaGVhcC5jZWxsU3BhY2U7IH0K
KyAgICBBTFdBWVNfSU5MSU5FIENvbXBsZXRlU3Vic3BhY2UmIHZhcmlhYmxlU2l6ZWRDZWxsU3Bh
Y2UoKSB7IHJldHVybiBoZWFwLnZhcmlhYmxlU2l6ZWRDZWxsU3BhY2U7IH0KKyAgICBBTFdBWVNf
SU5MSU5FIENvbXBsZXRlU3Vic3BhY2UmIGRlc3RydWN0aWJsZU9iamVjdFNwYWNlKCkgeyByZXR1
cm4gaGVhcC5kZXN0cnVjdGlibGVPYmplY3RTcGFjZTsgfQorCisgICAgQUxXQVlTX0lOTElORSBJ
c29TdWJzcGFjZSYgYXJyYXlTcGFjZSgpIHsgcmV0dXJuIGhlYXAuYXJyYXlTcGFjZTsgfQorICAg
IEFMV0FZU19JTkxJTkUgSXNvU3Vic3BhY2UmIGJpZ0ludFNwYWNlKCkgeyByZXR1cm4gaGVhcC5i
aWdJbnRTcGFjZTsgfQorICAgIEFMV0FZU19JTkxJTkUgSXNvU3Vic3BhY2UmIGNhbGxlZVNwYWNl
KCkgeyByZXR1cm4gaGVhcC5jYWxsZWVTcGFjZTsgfQorICAgIEFMV0FZU19JTkxJTkUgSXNvU3Vi
c3BhY2UmIGNsb25lZEFyZ3VtZW50c1NwYWNlKCkgeyByZXR1cm4gaGVhcC5jbG9uZWRBcmd1bWVu
dHNTcGFjZTsgfQorICAgIEFMV0FZU19JTkxJTkUgSXNvU3Vic3BhY2UmIGN1c3RvbUdldHRlclNl
dHRlclNwYWNlKCkgeyByZXR1cm4gaGVhcC5jdXN0b21HZXR0ZXJTZXR0ZXJTcGFjZTsgfQorICAg
IEFMV0FZU19JTkxJTkUgSXNvU3Vic3BhY2UmIGRhdGVJbnN0YW5jZVNwYWNlKCkgeyByZXR1cm4g
aGVhcC5kYXRlSW5zdGFuY2VTcGFjZTsgfQorICAgIEFMV0FZU19JTkxJTkUgSXNvU3Vic3BhY2Um
IGRvbUF0dHJpYnV0ZUdldHRlclNldHRlclNwYWNlKCkgeyByZXR1cm4gaGVhcC5kb21BdHRyaWJ1
dGVHZXR0ZXJTZXR0ZXJTcGFjZTsgfQorICAgIEFMV0FZU19JTkxJTkUgSXNvU3Vic3BhY2UmIGV4
Y2VwdGlvblNwYWNlKCkgeyByZXR1cm4gaGVhcC5leGNlcHRpb25TcGFjZTsgfQorICAgIEFMV0FZ
U19JTkxJTkUgSXNvU3Vic3BhY2UmIGV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2VTcGFjZSgpIHsg
cmV0dXJuIGhlYXAuZXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZVNwYWNlOyB9CisgICAgQUxXQVlT
X0lOTElORSBJc29TdWJzcGFjZSYgZnVuY3Rpb25TcGFjZSgpIHsgcmV0dXJuIGhlYXAuZnVuY3Rp
b25TcGFjZTsgfQorICAgIEFMV0FZU19JTkxJTkUgSXNvU3Vic3BhY2UmIGdldHRlclNldHRlclNw
YWNlKCkgeyByZXR1cm4gaGVhcC5nZXR0ZXJTZXR0ZXJTcGFjZTsgfQorICAgIEFMV0FZU19JTkxJ
TkUgSXNvU3Vic3BhY2UmIGdsb2JhbExleGljYWxFbnZpcm9ubWVudFNwYWNlKCkgeyByZXR1cm4g
aGVhcC5nbG9iYWxMZXhpY2FsRW52aXJvbm1lbnRTcGFjZTsgfQorICAgIEFMV0FZU19JTkxJTkUg
SXNvU3Vic3BhY2UmIGludGVybmFsRnVuY3Rpb25TcGFjZSgpIHsgcmV0dXJuIGhlYXAuaW50ZXJu
YWxGdW5jdGlvblNwYWNlOyB9CisgICAgQUxXQVlTX0lOTElORSBJc29TdWJzcGFjZSYganNQcm94
eVNwYWNlKCkgeyByZXR1cm4gaGVhcC5qc1Byb3h5U3BhY2U7IH0KKyAgICBBTFdBWVNfSU5MSU5F
IElzb1N1YnNwYWNlJiBuYXRpdmVFeGVjdXRhYmxlU3BhY2UoKSB7IHJldHVybiBoZWFwLm5hdGl2
ZUV4ZWN1dGFibGVTcGFjZTsgfQorICAgIEFMV0FZU19JTkxJTkUgSXNvU3Vic3BhY2UmIG51bWJl
ck9iamVjdFNwYWNlKCkgeyByZXR1cm4gaGVhcC5udW1iZXJPYmplY3RTcGFjZTsgfQorICAgIEFM
V0FZU19JTkxJTkUgSXNvU3Vic3BhY2UmIHBsYWluT2JqZWN0U3BhY2UoKSB7IHJldHVybiBoZWFw
LnBsYWluT2JqZWN0U3BhY2U7IH0KKyAgICBBTFdBWVNfSU5MSU5FIElzb1N1YnNwYWNlJiBwcm9t
aXNlU3BhY2UoKSB7IHJldHVybiBoZWFwLnByb21pc2VTcGFjZTsgfQorICAgIEFMV0FZU19JTkxJ
TkUgSXNvU3Vic3BhY2UmIHByb3BlcnR5TmFtZUVudW1lcmF0b3JTcGFjZSgpIHsgcmV0dXJuIGhl
YXAucHJvcGVydHlOYW1lRW51bWVyYXRvclNwYWNlOyB9CisgICAgQUxXQVlTX0lOTElORSBJc29T
dWJzcGFjZSYgcHJvcGVydHlUYWJsZVNwYWNlKCkgeyByZXR1cm4gaGVhcC5wcm9wZXJ0eVRhYmxl
U3BhY2U7IH0KKyAgICBBTFdBWVNfSU5MSU5FIElzb1N1YnNwYWNlJiByZWdFeHBTcGFjZSgpIHsg
cmV0dXJuIGhlYXAucmVnRXhwU3BhY2U7IH0KKyAgICBBTFdBWVNfSU5MSU5FIElzb1N1YnNwYWNl
JiByZWdFeHBPYmplY3RTcGFjZSgpIHsgcmV0dXJuIGhlYXAucmVnRXhwT2JqZWN0U3BhY2U7IH0K
KyAgICBBTFdBWVNfSU5MSU5FIElzb1N1YnNwYWNlJiByb3BlU3RyaW5nU3BhY2UoKSB7IHJldHVy
biBoZWFwLnJvcGVTdHJpbmdTcGFjZTsgfQorICAgIEFMV0FZU19JTkxJTkUgSXNvU3Vic3BhY2Um
IHNjb3BlZEFyZ3VtZW50c1NwYWNlKCkgeyByZXR1cm4gaGVhcC5zY29wZWRBcmd1bWVudHNTcGFj
ZTsgfQorICAgIEFMV0FZU19JTkxJTkUgSXNvU3Vic3BhY2UmIHNwYXJzZUFycmF5VmFsdWVNYXBT
cGFjZSgpIHsgcmV0dXJuIGhlYXAuc3BhcnNlQXJyYXlWYWx1ZU1hcFNwYWNlOyB9CisgICAgQUxX
QVlTX0lOTElORSBJc29TdWJzcGFjZSYgc3RyaW5nU3BhY2UoKSB7IHJldHVybiBoZWFwLnN0cmlu
Z1NwYWNlOyB9CisgICAgQUxXQVlTX0lOTElORSBJc29TdWJzcGFjZSYgc3RyaW5nT2JqZWN0U3Bh
Y2UoKSB7IHJldHVybiBoZWFwLnN0cmluZ09iamVjdFNwYWNlOyB9CisgICAgQUxXQVlTX0lOTElO
RSBJc29TdWJzcGFjZSYgc3RydWN0dXJlQ2hhaW5TcGFjZSgpIHsgcmV0dXJuIGhlYXAuc3RydWN0
dXJlQ2hhaW5TcGFjZTsgfQorICAgIEFMV0FZU19JTkxJTkUgSXNvU3Vic3BhY2UmIHN0cnVjdHVy
ZVJhcmVEYXRhU3BhY2UoKSB7IHJldHVybiBoZWFwLnN0cnVjdHVyZVJhcmVEYXRhU3BhY2U7IH0K
KyAgICBBTFdBWVNfSU5MSU5FIElzb1N1YnNwYWNlJiBzdHJ1Y3R1cmVTcGFjZSgpIHsgcmV0dXJu
IGhlYXAuc3RydWN0dXJlU3BhY2U7IH0KKyAgICBBTFdBWVNfSU5MSU5FIElzb1N1YnNwYWNlJiBi
cmFuZGVkU3RydWN0dXJlU3BhY2UoKSB7IHJldHVybiBoZWFwLmJyYW5kZWRTdHJ1Y3R1cmVTcGFj
ZTsgfQorICAgIEFMV0FZU19JTkxJTkUgSXNvU3Vic3BhY2UmIHN5bWJvbFRhYmxlU3BhY2UoKSB7
IHJldHVybiBoZWFwLnN5bWJvbFRhYmxlU3BhY2U7IH0KIAogI2RlZmluZSBEWU5BTUlDX0lTT19T
VUJTUEFDRV9ERUZJTkVfTUVNQkVSKG5hbWUpIFwKICAgICB0ZW1wbGF0ZTxTdWJzcGFjZUFjY2Vz
cyBtb2RlPiBcCi0gICAgSXNvU3Vic3BhY2UqIG5hbWUoKSBcCi0gICAgeyBcCi0gICAgICAgIGlm
IChtXyMjbmFtZSB8fCBtb2RlID09IFN1YnNwYWNlQWNjZXNzOjpDb25jdXJyZW50bHkpIFwKLSAg
ICAgICAgICAgIHJldHVybiBtXyMjbmFtZS5nZXQoKTsgXAotICAgICAgICByZXR1cm4gbmFtZSMj
U2xvdygpOyBcCi0gICAgfSBcCi0gICAgSlNfRVhQT1JUX1BSSVZBVEUgSXNvU3Vic3BhY2UqIG5h
bWUjI1Nsb3coKTsgXAotICAgIHN0ZDo6dW5pcXVlX3B0cjxJc29TdWJzcGFjZT4gbV8jI25hbWU7
Ci0KKyAgICBBTFdBWVNfSU5MSU5FIElzb1N1YnNwYWNlKiBuYW1lKCkgeyByZXR1cm4gaGVhcC5u
YW1lPG1vZGU+KCk7IH0KIAogI2lmIEpTQ19PQkpDX0FQSV9FTkFCTEVECiAgICAgRFlOQU1JQ19J
U09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihhcGlXcmFwcGVyT2JqZWN0U3BhY2UpCkBAIC02NTcs
NzQgKzQ4MywyMyBAQCBwdWJsaWM6CiAjZW5kaWYKIAogI3VuZGVmIERZTkFNSUNfSVNPX1NVQlNQ
QUNFX0RFRklORV9NRU1CRVIKLSAgICAKLSAgICBJc29DZWxsU2V0IGV4ZWN1dGFibGVUb0NvZGVC
bG9ja0VkZ2VzV2l0aENvbnN0cmFpbnRzOwotICAgIElzb0NlbGxTZXQgZXhlY3V0YWJsZVRvQ29k
ZUJsb2NrRWRnZXNXaXRoRmluYWxpemVyczsKKworICAgIEFMV0FZU19JTkxJTkUgSXNvQ2VsbFNl
dCYgZXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZXNXaXRoQ29uc3RyYWludHMoKSB7IHJldHVybiBo
ZWFwLmV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2VzV2l0aENvbnN0cmFpbnRzOyB9CisgICAgQUxX
QVlTX0lOTElORSBJc29DZWxsU2V0JiBleGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlc1dpdGhGaW5h
bGl6ZXJzKCkgeyByZXR1cm4gaGVhcC5leGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlc1dpdGhGaW5h
bGl6ZXJzOyB9CiAKICNkZWZpbmUgRFlOQU1JQ19TUEFDRV9BTkRfU0VUX0RFRklORV9NRU1CRVIo
bmFtZSkgXAogICAgIHRlbXBsYXRlPFN1YnNwYWNlQWNjZXNzIG1vZGU+IFwKLSAgICBJc29TdWJz
cGFjZSogbmFtZSgpIFwKLSAgICB7IFwKLSAgICAgICAgaWYgKGF1dG8qIHNwYWNlQW5kU2V0ID0g
bV8jI25hbWUuZ2V0KCkpIFwKLSAgICAgICAgICAgIHJldHVybiAmc3BhY2VBbmRTZXQtPnNwYWNl
OyBcCi0gICAgICAgIGlmIChtb2RlID09IFN1YnNwYWNlQWNjZXNzOjpDb25jdXJyZW50bHkpIFwK
LSAgICAgICAgICAgIHJldHVybiBudWxscHRyOyBcCi0gICAgICAgIHJldHVybiBuYW1lIyNTbG93
KCk7IFwKLSAgICB9IFwKLSAgICBJc29TdWJzcGFjZSogbmFtZSMjU2xvdygpOyBcCi0gICAgc3Rk
Ojp1bmlxdWVfcHRyPFNwYWNlQW5kU2V0PiBtXyMjbmFtZTsKLSAgICAKLSAgICBzdHJ1Y3QgU3Bh
Y2VBbmRTZXQgewotICAgICAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7CisgICAg
QUxXQVlTX0lOTElORSBJc29TdWJzcGFjZSogbmFtZSgpIHsgcmV0dXJuIGhlYXAubmFtZTxtb2Rl
PigpOyB9CiAKLSAgICAgICAgSXNvU3Vic3BhY2Ugc3BhY2U7Ci0gICAgICAgIElzb0NlbGxTZXQg
c2V0OwotICAgICAgICAKLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gQXJndW1lbnRzPgot
ICAgICAgICBTcGFjZUFuZFNldChBcmd1bWVudHMmJi4uLiBhcmd1bWVudHMpCi0gICAgICAgICAg
ICA6IHNwYWNlKHN0ZDo6Zm9yd2FyZDxBcmd1bWVudHM+KGFyZ3VtZW50cykuLi4pCi0gICAgICAg
ICAgICAsIHNldChzcGFjZSkKLSAgICAgICAgewotICAgICAgICB9Ci0gICAgICAgIAotICAgICAg
ICBzdGF0aWMgSXNvQ2VsbFNldCYgc2V0Rm9yKFN1YnNwYWNlJiBzcGFjZSkKLSAgICAgICAgewot
ICAgICAgICAgICAgcmV0dXJuICpiaXR3aXNlX2Nhc3Q8SXNvQ2VsbFNldCo+KAotICAgICAgICAg
ICAgICAgIGJpdHdpc2VfY2FzdDxjaGFyKj4oJnNwYWNlKSAtCi0gICAgICAgICAgICAgICAgT0JK
RUNUX09GRlNFVE9GKFNwYWNlQW5kU2V0LCBzcGFjZSkgKwotICAgICAgICAgICAgICAgIE9CSkVD
VF9PRkZTRVRPRihTcGFjZUFuZFNldCwgc2V0KSk7Ci0gICAgICAgIH0KLSAgICB9OwotICAgIAot
ICAgIFNwYWNlQW5kU2V0IGNvZGVCbG9ja1NwYWNlOwotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUg
RnVuYz4KLSAgICB2b2lkIGZvckVhY2hDb2RlQmxvY2tTcGFjZShjb25zdCBGdW5jJiBmdW5jKQot
ICAgIHsKLSAgICAgICAgLy8gVGhpcyBzaG91bGQgbm90IGluY2x1ZGUgd2ViQXNzZW1ibHlDb2Rl
QmxvY2tTcGFjZSBiZWNhdXNlIHRoaXMgaXMgYWJvdXQgc3Vic2NsYXNzZXMgb2YKLSAgICAgICAg
Ly8gSlNDOjpDb2RlQmxvY2suCi0gICAgICAgIGZ1bmMoY29kZUJsb2NrU3BhY2UpOwotICAgIH0K
KyAgICB1c2luZyBTcGFjZUFuZFNldCA9IEhlYXA6OlNwYWNlQW5kU2V0OworICAgIEFMV0FZU19J
TkxJTkUgU3BhY2VBbmRTZXQmIGNvZGVCbG9ja1NwYWNlKCkgeyByZXR1cm4gaGVhcC5jb2RlQmxv
Y2tTcGFjZTsgfQogCiAgICAgRFlOQU1JQ19TUEFDRV9BTkRfU0VUX0RFRklORV9NRU1CRVIoZXZh
bEV4ZWN1dGFibGVTcGFjZSkKICAgICBEWU5BTUlDX1NQQUNFX0FORF9TRVRfREVGSU5FX01FTUJF
Uihtb2R1bGVQcm9ncmFtRXhlY3V0YWJsZVNwYWNlKQotICAgIFNwYWNlQW5kU2V0IGZ1bmN0aW9u
RXhlY3V0YWJsZVNwYWNlOwotICAgIFNwYWNlQW5kU2V0IHByb2dyYW1FeGVjdXRhYmxlU3BhY2U7
Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jPgotICAgIHZvaWQgZm9yRWFjaFNjcmlwdEV4
ZWN1dGFibGVTcGFjZShjb25zdCBGdW5jJiBmdW5jKQotICAgIHsKLSAgICAgICAgaWYgKG1fZXZh
bEV4ZWN1dGFibGVTcGFjZSkKLSAgICAgICAgICAgIGZ1bmMoKm1fZXZhbEV4ZWN1dGFibGVTcGFj
ZSk7Ci0gICAgICAgIGZ1bmMoZnVuY3Rpb25FeGVjdXRhYmxlU3BhY2UpOwotICAgICAgICBpZiAo
bV9tb2R1bGVQcm9ncmFtRXhlY3V0YWJsZVNwYWNlKQotICAgICAgICAgICAgZnVuYygqbV9tb2R1
bGVQcm9ncmFtRXhlY3V0YWJsZVNwYWNlKTsKLSAgICAgICAgZnVuYyhwcm9ncmFtRXhlY3V0YWJs
ZVNwYWNlKTsKLSAgICB9Ci0KLSAgICBTcGFjZUFuZFNldCB1bmxpbmtlZEZ1bmN0aW9uRXhlY3V0
YWJsZVNwYWNlOwogCi0jdW5kZWYgRFlOQU1JQ19TUEFDRV9BTkRfU0VUX0RFRklORV9NRU1CRVIK
KyAgICBBTFdBWVNfSU5MSU5FIFNwYWNlQW5kU2V0JiBmdW5jdGlvbkV4ZWN1dGFibGVTcGFjZSgp
IHsgcmV0dXJuIGhlYXAuZnVuY3Rpb25FeGVjdXRhYmxlU3BhY2U7IH0KKyAgICBBTFdBWVNfSU5M
SU5FIFNwYWNlQW5kU2V0JiBwcm9ncmFtRXhlY3V0YWJsZVNwYWNlKCkgeyByZXR1cm4gaGVhcC5w
cm9ncmFtRXhlY3V0YWJsZVNwYWNlOyB9CisgICAgQUxXQVlTX0lOTElORSBTcGFjZUFuZFNldCYg
dW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGVTcGFjZSgpIHsgcmV0dXJuIGhlYXAudW5saW5rZWRG
dW5jdGlvbkV4ZWN1dGFibGVTcGFjZTsgfQogCiAgICAgVk1UeXBlIHZtVHlwZTsKICAgICBDbGll
bnREYXRhKiBjbGllbnREYXRhOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Vk1JbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Vk1JbmxpbmVzLmgJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1ZNSW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw2ICsyNiw3IEBACiAjcHJh
Z21hIG9uY2UKIAogI2luY2x1ZGUgIkVudHJ5RnJhbWUuaCIKKyNpbmNsdWRlICJGdXp6ZXJBZ2Vu
dC5oIgogI2luY2x1ZGUgIlByb2ZpbGVyRGF0YWJhc2UuaCIKICNpbmNsdWRlICJWTS5oIgogI2lu
Y2x1ZGUgIldhdGNoZG9nLmgiCkBAIC05MCw0ICs5MSwxMCBAQCBpbmxpbmUgQ2FsbEZyYW1lKiBW
TTo6dG9wSlNDYWxsRnJhbWUoKSBjCiAgICAgcmV0dXJuIGZyYW1lOwogfQogCitpbmxpbmUgdm9p
ZCBWTTo6c2V0RnV6emVyQWdlbnQoc3RkOjp1bmlxdWVfcHRyPEZ1enplckFnZW50PiYmIGZ1enpl
ckFnZW50KQoreworICAgIFJFTEVBU0VfQVNTRVJUX1dJVEhfTUVTU0FHRSghbV9mdXp6ZXJBZ2Vu
dCwgIk9ubHkgb25lIEZ1enplckFnZW50IGNhbiBiZSBzcGVjaWZpZWQgYXQgYSB0aW1lLiIpOwor
ICAgIG1fZnV6emVyQWdlbnQgPSBXVEZNb3ZlKGZ1enplckFnZW50KTsKK30KKwogfSAvLyBuYW1l
c3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFrTWFwUHJv
dG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vh
a01hcFByb3RvdHlwZS5oCShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9XZWFrTWFwUHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQxLDcgKzQx
LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZt
KQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoV2Vh
a01hcFByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFj
ZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAg
c3RhdGljIFdlYWtNYXBQcm90b3R5cGUqIGNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlKQpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvV2Vha09iamVjdFJlZlByb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dlYWtPYmplY3RSZWZQcm90b3R5cGUuaAkocmV2
aXNpb24gMjg2MDk1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha09iamVj
dFJlZlByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw3ICszNyw3IEBAIHB1YmxpYzoK
ICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAg
ICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKFdlYWtPYmplY3RSZWZQcm90
b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAg
ICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBX
ZWFrT2JqZWN0UmVmUHJvdG90eXBlKiBjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1dlYWtTZXRQcm90b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9XZWFrU2V0UHJvdG90eXBlLmgJKHJldmlzaW9uIDI4NjA5NSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dlYWtTZXRQcm90b3R5cGUuaAkod29y
a2luZyBjb3B5KQpAQCAtNDEsNyArNDEsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIElzb1N1YnNw
YWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lT
T19TVUJTUEFDRV9TSEFSQUJMRShXZWFrU2V0UHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0
dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0
U3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgV2Vha1NldFByb3RvdHlwZSogY3JlYXRlKFZN
JiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUp
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvSlNEb2xsYXJWTS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0pTRG9sbGFyVk0uY3BwCShyZXZp
c2lvbiAyODYwOTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvSlNEb2xsYXJWTS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTEzMyw3ICsxMzMsNyBAQCBwdWJsaWM6CiAgICAgdGVtcGxh
dGU8dHlwZW5hbWUgQ2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNzPgogICAgIHN0YXRpYyBDb21wbGV0
ZVN1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewotICAgICAgICByZXR1cm4gJnZt
LmNlbGxTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5jZWxsU3BhY2UoKTsKICAgICB9CiAKICAg
ICBKU0RvbGxhclZNQ2FsbEZyYW1lKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCkBAIC0y
MjMsNyArMjIzLDcgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlLCBT
dWJzcGFjZUFjY2Vzcz4KICAgICBzdGF0aWMgQ29tcGxldGVTdWJzcGFjZSogc3Vic3BhY2VGb3Io
Vk0mIHZtKQogICAgIHsKLSAgICAgICAgcmV0dXJuICZ2bS5jZWxsU3BhY2U7CisgICAgICAgIHJl
dHVybiAmdm0uY2VsbFNwYWNlKCk7CiAgICAgfQogCiAgICAgUm9vdCogcm9vdCgpIGNvbnN0IHsg
cmV0dXJuIG1fcm9vdC5nZXQoKTsgfQpAQCAtMjg3LDcgKzI4Nyw3IEBAIHB1YmxpYzoKICAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vic3BhY2VBY2Nlc3M+CiAgICAgc3RhdGljIENv
bXBsZXRlU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7Ci0gICAgICAgIHJldHVy
biAmdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0uZGVzdHJ1
Y3RpYmxlT2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBSb290KFZNJiB2bSwgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUpCkBAIC0zNTQsNyArMzU0LDcgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5
cGVuYW1lIENlbGxUeXBlLCBTdWJzcGFjZUFjY2Vzcz4KICAgICBzdGF0aWMgQ29tcGxldGVTdWJz
cGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKLSAgICAgICAgcmV0dXJuICZ2bS5jZWxs
U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0uY2VsbFNwYWNlKCk7CiAgICAgfQogCiAgICAgc3Rh
dGljIFNpbXBsZU9iamVjdCogY3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCkKQEAgLTQyNiw3ICs0MjYsNyBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUg
Q2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNzPgogICAgIHN0YXRpYyBDb21wbGV0ZVN1YnNwYWNlKiBz
dWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewotICAgICAgICByZXR1cm4gJnZtLmNlbGxTcGFjZTsK
KyAgICAgICAgcmV0dXJuICZ2bS5jZWxsU3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgU3Ry
dWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKQEAgLTUwOCw3ICs1MDgsNyBAQCBwdWJsaWM6CiAgICAg
dGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNzPgogICAgIHN0YXRpYyBD
b21wbGV0ZVN1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewotICAgICAgICByZXR1
cm4gJnZtLmNlbGxTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5jZWxsU3BhY2UoKTsKICAgICB9
CiAKICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKQEAgLTU5MCw3ICs1OTAs
NyBAQCBJR05PUkVfV0FSTklOR1NfRU5ECiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUs
IFN1YnNwYWNlQWNjZXNzPgogICAgIHN0YXRpYyBDb21wbGV0ZVN1YnNwYWNlKiBzdWJzcGFjZUZv
cihWTSYgdm0pCiAgICAgewotICAgICAgICByZXR1cm4gJnZtLmNlbGxTcGFjZTsKKyAgICAgICAg
cmV0dXJuICZ2bS5jZWxsU3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgUnVudGltZUFycmF5
KiBjcmVhdGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJh
bWUpCkBAIC03NzIsNyArNzcyLDcgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENl
bGxUeXBlLCBTdWJzcGFjZUFjY2Vzcz4KICAgICBzdGF0aWMgQ29tcGxldGVTdWJzcGFjZSogc3Vi
c3BhY2VGb3IoVk0mIHZtKQogICAgIHsKLSAgICAgICAgcmV0dXJuICZ2bS5jZWxsU3BhY2U7Cisg
ICAgICAgIHJldHVybiAmdm0uY2VsbFNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIFN0cnVj
dHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgSlNWYWx1ZSBwcm90b3R5cGUpCkBAIC04NzIsNyArODcyLDcgQEAgcHVibGljOgogICAgIHRl
bXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlLCBTdWJzcGFjZUFjY2Vzcz4KICAgICBzdGF0aWMgQ29t
cGxldGVTdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKLSAgICAgICAgcmV0dXJu
ICZ2bS5jZWxsU3BhY2U7CisgICAgICAgIHJldHVybiAmdm0uY2VsbFNwYWNlKCk7CiAgICAgfQog
CiAgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCkBAIC04OTcsNyArODk3LDcg
QEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlLCBTdWJzcGFjZUFjY2Vz
cz4KICAgICBzdGF0aWMgQ29tcGxldGVTdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAg
IHsKLSAgICAgICAgcmV0dXJuICZ2bS5jZWxsU3BhY2U7CisgICAgICAgIHJldHVybiAmdm0uY2Vs
bFNwYWNlKCk7CiAgICAgfQogCiAgICAgT2JqZWN0RG9pbmdTaWRlRWZmZWN0UHV0V2l0aG91dENv
cnJlY3RTbG90U3RhdHVzKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCkBAIC05NDgsNyAr
OTQ4LDcgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlLCBTdWJzcGFj
ZUFjY2Vzcz4KICAgICBzdGF0aWMgQ29tcGxldGVTdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZt
KQogICAgIHsKLSAgICAgICAgcmV0dXJuICZ2bS5jZWxsU3BhY2U7CisgICAgICAgIHJldHVybiAm
dm0uY2VsbFNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3Ry
dWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90
b3R5cGUpCkBAIC0xNTg1LDcgKzE1ODUsNyBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5h
bWUgQ2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNzPgogICAgIHN0YXRpYyBDb21wbGV0ZVN1YnNwYWNl
KiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewotICAgICAgICByZXR1cm4gJnZtLmNlbGxTcGFj
ZTsKKyAgICAgICAgcmV0dXJuICZ2bS5jZWxsU3BhY2UoKTsKICAgICB9CiAKICAgICBKU1Rlc3RD
dXN0b21HZXR0ZXJTZXR0ZXIoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKQEAgLTE4Mzgs
NyArMTgzOCw3IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vi
c3BhY2VBY2Nlc3M+CiAgICAgc3RhdGljIENvbXBsZXRlU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZN
JiB2bSkKICAgICB7Ci0gICAgICAgIHJldHVybiAmdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0U3BhY2U7
CisgICAgICAgIHJldHVybiAmdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0U3BhY2UoKTsKICAgICB9CiAK
ICAgICBjbGFzcyBDbGllbnQgZmluYWwgOiBwdWJsaWMgV2FzbTo6U3RyZWFtaW5nUGFyc2VyQ2xp
ZW50IHsKQEAgLTE5MzMsNyArMTkzMyw3IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBDZWxsVHlwZSwgU3Vic3BhY2VBY2Nlc3M+CiAgICAgc3RhdGljIENvbXBsZXRlU3Vic3BhY2Uq
IHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7Ci0gICAgICAgIHJldHVybiAmdm0uZGVzdHJ1Y3Rp
YmxlT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0U3Bh
Y2UoKTsKICAgICB9CiAKICAgICBXYXNtU3RyZWFtaW5nQ29tcGlsZXIoVk0mIHZtLCBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSwgV2FzbTo6Q29tcGlsZXJNb2RlIGNvbXBpbGVyTW9kZSwgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgSlNQcm9taXNlKiBwcm9taXNlLCBKU09iamVjdCogaW1wb3J0
T2JqZWN0KQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0pTRG9sbGFyVk0uaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvSlNEb2xsYXJWTS5oCShy
ZXZpc2lvbiAyODYwOTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvSlNEb2xsYXJW
TS5oCSh3b3JraW5nIGNvcHkpCkBAIC00Miw3ICs0Miw3IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vic3BhY2VBY2Nlc3M+CiAgICAgc3RhdGljIENvbXBsZXRl
U3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7Ci0gICAgICAgIHJldHVybiAmdm0u
Y2VsbFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLmNlbGxTcGFjZSgpOwogICAgIH0KICAgICAK
ICAgICBERUNMQVJFX0VYUE9SVF9JTkZPOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vanMvSlNXZWJBc3NlbWJseS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL2pzL0pTV2ViQXNzZW1ibHkuaAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseS5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNi0yMDE5IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNi0yMDIxIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAt
NDEsNyArNDEsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZv
cihWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFS
QUJMRShKU1dlYkFzc2VtYmx5LCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVj
dFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAK
ICAgICBzdGF0aWMgSlNXZWJBc3NlbWJseSogY3JlYXRlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBT
dHJ1Y3R1cmUqKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2Vt
Ymx5Q29tcGlsZUVycm9yUHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlDb21waWxlRXJyb3JQcm90b3R5cGUuaAkocmV2aXNp
b24gMjg2MDk1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlD
b21waWxlRXJyb3JQcm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQxLDcgKzQxLDcgQEAg
cHVibGljOgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAg
IHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoV2ViQXNzZW1i
bHlDb21waWxlRXJyb3JQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWlu
T2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAg
IH0KIAogICAgIHN0YXRpYyBXZWJBc3NlbWJseUNvbXBpbGVFcnJvclByb3RvdHlwZSogY3JlYXRl
KFZNJiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5RXhjZXB0aW9uUHJvdG90eXBlLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlFeGNlcHRpb25Q
cm90b3R5cGUuaAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vanMvV2ViQXNzZW1ibHlFeGNlcHRpb25Qcm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAt
NDEsNyArNDEsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZv
cihWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFS
QUJMRShXZWJBc3NlbWJseUV4Y2VwdGlvblByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVy
biAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNw
YWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIFdlYkFzc2VtYmx5RXhjZXB0aW9uUHJvdG90eXBl
KiBjcmVhdGUoVk0mLCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSopOwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlHbG9iYWxQcm90b3R5cGUuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUdsb2Jh
bFByb3RvdHlwZS5oCShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9qcy9XZWJBc3NlbWJseUdsb2JhbFByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTktMjAyMSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQwLDcg
KzQwLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0m
IHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUo
V2ViQXNzZW1ibHlHbG9iYWxQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBs
YWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwog
ICAgIH0KIAogICAgIHN0YXRpYyBXZWJBc3NlbWJseUdsb2JhbFByb3RvdHlwZSogY3JlYXRlKFZN
JiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5SW5zdGFuY2VQcm90b3R5cGUuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUluc3RhbmNlUHJvdG90
eXBlLmgJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pz
L1dlYkFzc2VtYmx5SW5zdGFuY2VQcm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsx
LDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAyMSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQxLDcg
KzQxLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0m
IHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUo
V2ViQXNzZW1ibHlJbnN0YW5jZVByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0u
cGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7
CiAgICAgfQogCiAgICAgc3RhdGljIFdlYkFzc2VtYmx5SW5zdGFuY2VQcm90b3R5cGUqIGNyZWF0
ZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKik7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUxpbmtFcnJvclByb3RvdHlwZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TGlua0Vycm9y
UHJvdG90eXBlLmgJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL2pzL1dlYkFzc2VtYmx5TGlua0Vycm9yUHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAg
LTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMTkgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMjEgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC00MSw3ICs0MSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNl
Rm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NI
QVJBQkxFKFdlYkFzc2VtYmx5TGlua0Vycm9yUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0
dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0
U3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgV2ViQXNzZW1ibHlMaW5rRXJyb3JQcm90b3R5
cGUqIGNyZWF0ZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKik7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseU1lbW9yeVByb3RvdHlwZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TWVt
b3J5UHJvdG90eXBlLmgJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL2pzL1dlYkFzc2VtYmx5TWVtb3J5UHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAg
LTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMTkgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMjEgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC00MSw3ICs0MSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNl
Rm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NI
QVJBQkxFKFdlYkFzc2VtYmx5TWVtb3J5UHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJu
ICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3Bh
Y2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgV2ViQXNzZW1ibHlNZW1vcnlQcm90b3R5cGUqIGNy
ZWF0ZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKik7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseU1vZHVsZVByb3RvdHlwZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TW9kdWxlUHJv
dG90eXBlLmgJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L2pzL1dlYkFzc2VtYmx5TW9kdWxlUHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSAr
MSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMjEgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00MSw3
ICs0MSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZN
JiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxF
KFdlYkFzc2VtYmx5TW9kdWxlUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5w
bGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsK
ICAgICB9CiAKICAgICBzdGF0aWMgV2ViQXNzZW1ibHlNb2R1bGVQcm90b3R5cGUqIGNyZWF0ZShW
TSYsIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseVJ1bnRpbWVFcnJvclByb3RvdHlwZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5UnVudGltZUVy
cm9yUHJvdG90eXBlLmgJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL2pzL1dlYkFzc2VtYmx5UnVudGltZUVycm9yUHJvdG90eXBlLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMTkgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMjEgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCkBAIC00MSw3ICs0MSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1
YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQ
QUNFX1NIQVJBQkxFKFdlYkFzc2VtYmx5UnVudGltZUVycm9yUHJvdG90eXBlLCBCYXNlKTsKLSAg
ICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBs
YWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgV2ViQXNzZW1ibHlSdW50aW1l
RXJyb3JQcm90b3R5cGUqIGNyZWF0ZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKik7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseVRhYmxlUHJv
dG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2Vi
QXNzZW1ibHlUYWJsZVByb3RvdHlwZS5oCShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseVRhYmxlUHJvdG90eXBlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMTkgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMjEg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCkBAIC00MSw3ICs0MSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2Uq
IHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NV
QlNQQUNFX1NIQVJBQkxFKFdlYkFzc2VtYmx5VGFibGVQcm90b3R5cGUsIEJhc2UpOwotICAgICAg
ICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5P
YmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBXZWJBc3NlbWJseVRhYmxlUHJvdG90
eXBlKiBjcmVhdGUoVk0mLCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSopOwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlUYWdQcm90b3R5cGUuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseVRhZ1By
b3RvdHlwZS5oCShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9qcy9XZWJBc3NlbWJseVRhZ1Byb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00MCw3ICs0
MCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2
bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKFdl
YkFzc2VtYmx5VGFnUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9i
amVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9
CiAKICAgICBzdGF0aWMgV2ViQXNzZW1ibHlUYWdQcm90b3R5cGUqIGNyZWF0ZShWTSYsIEpTR2xv
YmFsT2JqZWN0KiwgU3RydWN0dXJlKik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0RPTUFzeW5jSXRlcmF0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0RPTUFzeW5jSXRlcmF0b3IuaAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Bc3luY0l0ZXJhdG9yLmgJKHdvcmtpbmcgY29weSkK
QEAgLTQ4LDcgKzQ4LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBz
dWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNP
X1NVQlNQQUNFX1NIQVJBQkxFKEpTRE9NQXN5bmNJdGVyYXRvclByb3RvdHlwZSwgQmFzZSk7Ci0g
ICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5w
bGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIEpTRE9NQXN5bmNJdGVyYXRv
clByb3RvdHlwZSogY3JlYXRlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUpCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0RPTUl0ZXJhdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNET01JdGVyYXRvci5oCShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUl0ZXJhdG9yLmgJKHdvcmtpbmcgY29weSkKQEAg
LTU1LDcgKzU1LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJz
cGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NV
QlNQQUNFX1NIQVJBQkxFKEpTRE9NSXRlcmF0b3JQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICBy
ZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmpl
Y3RTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBKU0RPTUl0ZXJhdG9yUHJvdG90eXBlKiBj
cmVhdGUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlND
OjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTRmlsZVN5c3RlbURpcmVjdG9yeUhhbmRsZUl0ZXJhdG9yLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0ZpbGVTeXN0ZW1EaXJlY3RvcnlIYW5kbGVJdGVy
YXRvci5jcHAJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTRmlsZVN5c3RlbURpcmVjdG9yeUhhbmRsZUl0ZXJhdG9yLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNTUsOSArNTUsOSBAQCBJc29TdWJzcGFjZSogSlNGaWxlU3lzdGVtRGlyZWN0b3J5SGFuZGxl
CiAgICAgICAgIHJldHVybiBzcGFjZTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9v
Zl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTRmlsZVN5c3RlbURpcmVjdG9yeUhhbmRs
ZUl0ZXJhdG9yPiB8fCAhSlNGaWxlU3lzdGVtRGlyZWN0b3J5SGFuZGxlSXRlcmF0b3I6Om5lZWRz
RGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpK
U0Rlc3RydWN0aWJsZU9iamVjdCwgSlNGaWxlU3lzdGVtRGlyZWN0b3J5SGFuZGxlSXRlcmF0b3I+
KQotICAgICAgICBjbGllbnREYXRhLnNldEZpbGVTeXN0ZW1EaXJlY3RvcnlIYW5kbGVJdGVyYXRv
clNwYWNlKG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAs
ICp2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUsIEpTRmlsZVN5c3RlbURpcmVjdG9y
eUhhbmRsZUl0ZXJhdG9yKSk7CisgICAgICAgIGNsaWVudERhdGEuc2V0RmlsZVN5c3RlbURpcmVj
dG9yeUhhbmRsZUl0ZXJhdG9yU3BhY2UobWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQ
QUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCksIEpT
RmlsZVN5c3RlbURpcmVjdG9yeUhhbmRsZUl0ZXJhdG9yKSk7CiAgICAgZWxzZQotICAgICAgICBj
bGllbnREYXRhLnNldEZpbGVTeXN0ZW1EaXJlY3RvcnlIYW5kbGVJdGVyYXRvclNwYWNlKG1ha2VV
bmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5jZWxsSGVh
cENlbGxUeXBlLCBKU0ZpbGVTeXN0ZW1EaXJlY3RvcnlIYW5kbGVJdGVyYXRvcikpOworICAgICAg
ICBjbGllbnREYXRhLnNldEZpbGVTeXN0ZW1EaXJlY3RvcnlIYW5kbGVJdGVyYXRvclNwYWNlKG1h
a2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxI
ZWFwQ2VsbFR5cGUoKSwgSlNGaWxlU3lzdGVtRGlyZWN0b3J5SGFuZGxlSXRlcmF0b3IpKTsKICAg
ICBhdXRvKiBzcGFjZSA9IGNsaWVudERhdGEuZmlsZVN5c3RlbURpcmVjdG9yeUhhbmRsZUl0ZXJh
dG9yU3BhY2UoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJ
R05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dlYkNvcmVKU0NsaWVudERhdGEuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dlYkNvcmVKU0NsaWVudERhdGEuY3BwCShy
ZXZpc2lvbiAyODYwOTUpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9XZWJDb3JlSlND
bGllbnREYXRhLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzgsNiArMzgsNyBAQAogI2luY2x1ZGUg
IkpTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuaCIKICNpbmNsdWRlICJKU1JlbW90ZURPTVdpbmRv
dy5oIgogI2luY2x1ZGUgIkpTU2VydmljZVdvcmtlckdsb2JhbFNjb3BlLmgiCisjaW5jbHVkZSAi
SlNTaGFyZWRXb3JrZXJHbG9iYWxTY29wZS5oIgogI2luY2x1ZGUgIkpTV2luZG93UHJveHkuaCIK
ICNpbmNsdWRlICJKU1dvcmtlckdsb2JhbFNjb3BlLmgiCiAjaW5jbHVkZSAiSlNXb3JrbGV0R2xv
YmFsU2NvcGUuaCIKQEAgLTU5LDMzICs2MCwzNCBAQCB1c2luZyBuYW1lc3BhY2UgSlNDOwogSlNW
TUNsaWVudERhdGE6OkpTVk1DbGllbnREYXRhKFZNJiB2bSkKICAgICA6IG1fYnVpbHRpbkZ1bmN0
aW9ucyh2bSkKICAgICAsIG1fYnVpbHRpbk5hbWVzKHZtKQotICAgICwgbV9ydW50aW1lQXJyYXlI
ZWFwQ2VsbFR5cGUoSlNDOjpJc29IZWFwQ2VsbFR5cGU6OmNyZWF0ZTxSdW50aW1lQXJyYXk+KCkp
Ci0gICAgLCBtX3J1bnRpbWVPYmplY3RIZWFwQ2VsbFR5cGUoSlNDOjpJc29IZWFwQ2VsbFR5cGU6
OmNyZWF0ZTxKU0M6OkJpbmRpbmdzOjpSdW50aW1lT2JqZWN0PigpKQotICAgICwgbV93aW5kb3dQ
cm94eUhlYXBDZWxsVHlwZShKU0M6Oklzb0hlYXBDZWxsVHlwZTo6Y3JlYXRlPEpTV2luZG93UHJv
eHk+KCkpCi0gICAgLCBtX2hlYXBDZWxsVHlwZUZvckpTRE9NV2luZG93KEpTQzo6SXNvSGVhcENl
bGxUeXBlOjpjcmVhdGU8SlNET01XaW5kb3c+KCkpCi0gICAgLCBtX2hlYXBDZWxsVHlwZUZvckpT
RGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUoSlNDOjpJc29IZWFwQ2VsbFR5cGU6OmNyZWF0ZTxK
U0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlPigpKQotICAgICwgbV9oZWFwQ2VsbFR5cGVGb3JK
U1JlbW90ZURPTVdpbmRvdyhKU0M6Oklzb0hlYXBDZWxsVHlwZTo6Y3JlYXRlPEpTUmVtb3RlRE9N
V2luZG93PigpKQotICAgICwgbV9oZWFwQ2VsbFR5cGVGb3JKU1dvcmtlckdsb2JhbFNjb3BlKEpT
Qzo6SXNvSGVhcENlbGxUeXBlOjpjcmVhdGU8SlNXb3JrZXJHbG9iYWxTY29wZT4oKSkKKy8vICAg
ICwgbV9ydW50aW1lQXJyYXlIZWFwQ2VsbFR5cGUoSlNDOjpJc29IZWFwQ2VsbFR5cGU6OkFyZ3M8
UnVudGltZUFycmF5PigpKQorLy8gICAgLCBtX3J1bnRpbWVPYmplY3RIZWFwQ2VsbFR5cGUoSlND
OjpJc29IZWFwQ2VsbFR5cGU6OkFyZ3M8SlNDOjpCaW5kaW5nczo6UnVudGltZU9iamVjdD4oKSkK
Ky8vICAgICwgbV93aW5kb3dQcm94eUhlYXBDZWxsVHlwZShKU0M6Oklzb0hlYXBDZWxsVHlwZTo6
QXJnczxKU1dpbmRvd1Byb3h5PigpKQorLy8gICAgLCBtX2hlYXBDZWxsVHlwZUZvckpTRE9NV2lu
ZG93KEpTQzo6SXNvSGVhcENlbGxUeXBlOjpBcmdzPEpTRE9NV2luZG93PigpKQorLy8gICAgLCBt
X2hlYXBDZWxsVHlwZUZvckpTRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUoSlNDOjpJc29IZWFw
Q2VsbFR5cGU6OkFyZ3M8SlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZT4oKSkKKy8vICAgICwg
bV9oZWFwQ2VsbFR5cGVGb3JKU1JlbW90ZURPTVdpbmRvdyhKU0M6Oklzb0hlYXBDZWxsVHlwZTo6
QXJnczxKU1JlbW90ZURPTVdpbmRvdz4oKSkKKy8vICAgICwgbV9oZWFwQ2VsbFR5cGVGb3JKU1dv
cmtlckdsb2JhbFNjb3BlKEpTQzo6SXNvSGVhcENlbGxUeXBlOjpBcmdzPEpTV29ya2VyR2xvYmFs
U2NvcGU+KCkpCisvLyAgICAsIG1faGVhcENlbGxUeXBlRm9ySlNTaGFyZWRXb3JrZXJHbG9iYWxT
Y29wZShKU0M6Oklzb0hlYXBDZWxsVHlwZTo6QXJnczxKU1NoYXJlZFdvcmtlckdsb2JhbFNjb3Bl
PigpKQogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLSAgICAsIG1faGVhcENlbGxUeXBlRm9y
SlNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUoSlNDOjpJc29IZWFwQ2VsbFR5cGU6OmNyZWF0ZTxK
U1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZT4oKSkKKy8vICAgICwgbV9oZWFwQ2VsbFR5cGVGb3JK
U1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZShKU0M6Oklzb0hlYXBDZWxsVHlwZTo6QXJnczxKU1Nl
cnZpY2VXb3JrZXJHbG9iYWxTY29wZT4oKSkKICNlbmRpZgotICAgICwgbV9oZWFwQ2VsbFR5cGVG
b3JKU1dvcmtsZXRHbG9iYWxTY29wZShKU0M6Oklzb0hlYXBDZWxsVHlwZTo6Y3JlYXRlPEpTV29y
a2xldEdsb2JhbFNjb3BlPigpKQorLy8gICAgLCBtX2hlYXBDZWxsVHlwZUZvckpTV29ya2xldEds
b2JhbFNjb3BlKEpTQzo6SXNvSGVhcENlbGxUeXBlOjpBcmdzPEpTV29ya2xldEdsb2JhbFNjb3Bl
PigpKQogI2lmIEVOQUJMRShDU1NfUEFJTlRJTkdfQVBJKQotICAgICwgbV9oZWFwQ2VsbFR5cGVG
b3JKU1BhaW50V29ya2xldEdsb2JhbFNjb3BlKEpTQzo6SXNvSGVhcENlbGxUeXBlOjpjcmVhdGU8
SlNQYWludFdvcmtsZXRHbG9iYWxTY29wZT4oKSkKKy8vICAgICwgbV9oZWFwQ2VsbFR5cGVGb3JK
U1BhaW50V29ya2xldEdsb2JhbFNjb3BlKEpTQzo6SXNvSGVhcENlbGxUeXBlOjpBcmdzPEpTUGFp
bnRXb3JrbGV0R2xvYmFsU2NvcGU+KCkpCiAjZW5kaWYKICNpZiBFTkFCTEUoV0VCX0FVRElPKQot
ICAgICwgbV9oZWFwQ2VsbFR5cGVGb3JKU0F1ZGlvV29ya2xldEdsb2JhbFNjb3BlKEpTQzo6SXNv
SGVhcENlbGxUeXBlOjpjcmVhdGU8SlNBdWRpb1dvcmtsZXRHbG9iYWxTY29wZT4oKSkKKy8vICAg
ICwgbV9oZWFwQ2VsbFR5cGVGb3JKU0F1ZGlvV29ya2xldEdsb2JhbFNjb3BlKEpTQzo6SXNvSGVh
cENlbGxUeXBlOjpBcmdzPEpTQXVkaW9Xb3JrbGV0R2xvYmFsU2NvcGU+KCkpCiAjZW5kaWYKLSAg
ICAsIG1faGVhcENlbGxUeXBlRm9ySlNJREJTZXJpYWxpemF0aW9uR2xvYmFsT2JqZWN0KEpTQzo6
SXNvSGVhcENlbGxUeXBlOjpjcmVhdGU8SlNJREJTZXJpYWxpemF0aW9uR2xvYmFsT2JqZWN0Pigp
KQotICAgICwgbV9kb21CdWlsdGluQ29uc3RydWN0b3JTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVCh2
bS5oZWFwLCAqdm0uY2VsbEhlYXBDZWxsVHlwZSwgSlNET01CdWlsdGluQ29uc3RydWN0b3JCYXNl
KQotICAgICwgbV9kb21Db25zdHJ1Y3RvclNwYWNlIElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAs
ICp2bS5jZWxsSGVhcENlbGxUeXBlLCBKU0RPTUNvbnN0cnVjdG9yQmFzZSkKLSAgICAsIG1fZG9t
TmFtZXNwYWNlT2JqZWN0U3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmNlbGxI
ZWFwQ2VsbFR5cGUsIEpTRE9NT2JqZWN0KQotICAgICwgbV9kb21XaW5kb3dQcm9wZXJ0aWVzU3Bh
Y2UgSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmNlbGxIZWFwQ2VsbFR5cGUsIEpTRE9N
V2luZG93UHJvcGVydGllcykKLSAgICAsIG1fcnVudGltZUFycmF5U3BhY2UgSVNPX1NVQlNQQUNF
X0lOSVQodm0uaGVhcCwgKm1fcnVudGltZUFycmF5SGVhcENlbGxUeXBlLCBSdW50aW1lQXJyYXkp
Ci0gICAgLCBtX3J1bnRpbWVNZXRob2RTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAq
dm0uY2VsbEhlYXBDZWxsVHlwZSwgUnVudGltZU1ldGhvZCkgLy8gSGFzaDoweGY3MGM0YTg1Ci0g
ICAgLCBtX3J1bnRpbWVPYmplY3RTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqbV9y
dW50aW1lT2JqZWN0SGVhcENlbGxUeXBlLCBKU0M6OkJpbmRpbmdzOjpSdW50aW1lT2JqZWN0KQot
ICAgICwgbV93aW5kb3dQcm94eVNwYWNlIElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICptX3dp
bmRvd1Byb3h5SGVhcENlbGxUeXBlLCBKU1dpbmRvd1Byb3h5KQotICAgICwgbV9pZGJTZXJpYWxp
emF0aW9uU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKm1faGVhcENlbGxUeXBlRm9y
SlNJREJTZXJpYWxpemF0aW9uR2xvYmFsT2JqZWN0LCBKU0lEQlNlcmlhbGl6YXRpb25HbG9iYWxP
YmplY3QpCisvLyAgICAsIG1faGVhcENlbGxUeXBlRm9ySlNJREJTZXJpYWxpemF0aW9uR2xvYmFs
T2JqZWN0KEpTQzo6SXNvSGVhcENlbGxUeXBlOjpBcmdzPEpTSURCU2VyaWFsaXphdGlvbkdsb2Jh
bE9iamVjdD4oKSkKKyAgICAsIG1fZG9tQnVpbHRpbkNvbnN0cnVjdG9yU3BhY2UgSVNPX1NVQlNQ
QUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU0RPTUJ1aWx0aW5Db25z
dHJ1Y3RvckJhc2UpCisgICAgLCBtX2RvbUNvbnN0cnVjdG9yU3BhY2UgSVNPX1NVQlNQQUNFX0lO
SVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU0RPTUNvbnN0cnVjdG9yQmFzZSkK
KyAgICAsIG1fZG9tTmFtZXNwYWNlT2JqZWN0U3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVh
cCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU0RPTU9iamVjdCkKKyAgICAsIG1fZG9tV2luZG93
UHJvcGVydGllc1NwYWNlIElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2Vs
bFR5cGUoKSwgSlNET01XaW5kb3dQcm9wZXJ0aWVzKQorICAgICwgbV9ydW50aW1lQXJyYXlTcGFj
ZSBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCBtX3J1bnRpbWVBcnJheUhlYXBDZWxsVHlwZSwg
UnVudGltZUFycmF5KQorICAgICwgbV9ydW50aW1lTWV0aG9kU3BhY2UgSVNPX1NVQlNQQUNFX0lO
SVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBSdW50aW1lTWV0aG9kKSAvLyBIYXNo
OjB4ZjcwYzRhODUKKyAgICAsIG1fcnVudGltZU9iamVjdFNwYWNlIElTT19TVUJTUEFDRV9JTklU
KHZtLmhlYXAsIG1fcnVudGltZU9iamVjdEhlYXBDZWxsVHlwZSwgSlNDOjpCaW5kaW5nczo6UnVu
dGltZU9iamVjdCkKKyAgICAsIG1fd2luZG93UHJveHlTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVCh2
bS5oZWFwLCBtX3dpbmRvd1Byb3h5SGVhcENlbGxUeXBlLCBKU1dpbmRvd1Byb3h5KQorICAgICwg
bV9pZGJTZXJpYWxpemF0aW9uU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgbV9oZWFw
Q2VsbFR5cGVGb3JKU0lEQlNlcmlhbGl6YXRpb25HbG9iYWxPYmplY3QsIEpTSURCU2VyaWFsaXph
dGlvbkdsb2JhbE9iamVjdCkKICAgICAsIG1fc3Vic3BhY2VzKG1ha2VVbmlxdWU8RE9NSXNvU3Vi
c3BhY2VzPigpKQogewogfQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV2ViQ29y
ZUpTQ2xpZW50RGF0YS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L1dlYkNvcmVKU0NsaWVudERhdGEuaAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvV2ViQ29yZUpTQ2xpZW50RGF0YS5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDYgKzEsNiBAQAogLyoKICAqICBDb3B5cmlnaHQgKEMpIDE5OTktMjAwMSBIYXJyaSBQb3J0ZW4g
KHBvcnRlbkBrZGUub3JnKQotICogIENvcHlyaWdodCAoQykgMjAwMy0yMDE3IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqICBDb3B5cmlnaHQgKEMpIDIwMDMtMjAyMSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiAgQ29weXJpZ2h0IChDKSAyMDA3IFNhbXVlbCBX
ZWluaWcgPHNhbUB3ZWJraXQub3JnPgogICogIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUsIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCkBAIC0yOCw5ICsyOCwzNSBAQAogI2luY2x1ZGUg
PHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCituYW1lc3BhY2UgSlND
IHsKK2NsYXNzIFJ1bnRpbWVBcnJheTsKKworbmFtZXNwYWNlIEJpbmRpbmdzIHsKK2NsYXNzIFJ1
bnRpbWVPYmplY3Q7Cit9Cit9IC8vIG5hbWVzcGFjZSBKU0MKKwogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBjbGFzcyBET01Jc29TdWJzcGFjZXM7CitjbGFzcyBKU0RPTVdpbmRvdzsKK2NsYXNzIEpT
RGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGU7CitjbGFzcyBKU0lEQlNlcmlhbGl6YXRpb25HbG9i
YWxPYmplY3Q7CitjbGFzcyBKU1JlbW90ZURPTVdpbmRvdzsKK2NsYXNzIEpTU2hhcmVkV29ya2Vy
R2xvYmFsU2NvcGU7CitjbGFzcyBKU1dpbmRvd1Byb3h5OworY2xhc3MgSlNXb3JrZXJHbG9iYWxT
Y29wZTsKK2NsYXNzIEpTV29ya2xldEdsb2JhbFNjb3BlOworCisjaWYgRU5BQkxFKFNFUlZJQ0Vf
V09SS0VSKQorY2xhc3MgSlNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU7CisjZW5kaWYKKyNpZiBF
TkFCTEUoQ1NTX1BBSU5USU5HX0FQSSkKK2NsYXNzIEpTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGU7
CisjZW5kaWYKKyNpZiBFTkFCTEUoV0VCX0FVRElPKQorY2xhc3MgSlNBdWRpb1dvcmtsZXRHbG9i
YWxTY29wZTsKKyNlbmRpZgogCiBjbGFzcyBKU1ZNQ2xpZW50RGF0YSA6IHB1YmxpYyBKU0M6OlZN
OjpDbGllbnREYXRhIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShKU1ZNQ2xpZW50RGF0YSk7
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwpAQCAtOTIsMjYgKzExOCwyNiBAQCBwcml2YXRlOgog
ICAgIEpTQnVpbHRpbkZ1bmN0aW9ucyBtX2J1aWx0aW5GdW5jdGlvbnM7CiAgICAgV2ViQ29yZUJ1
aWx0aW5OYW1lcyBtX2J1aWx0aW5OYW1lczsKIAotICAgIHN0ZDo6dW5pcXVlX3B0cjxKU0M6Okhl
YXBDZWxsVHlwZT4gbV9ydW50aW1lQXJyYXlIZWFwQ2VsbFR5cGU7Ci0gICAgc3RkOjp1bmlxdWVf
cHRyPEpTQzo6SGVhcENlbGxUeXBlPiBtX3J1bnRpbWVPYmplY3RIZWFwQ2VsbFR5cGU7Ci0gICAg
c3RkOjp1bmlxdWVfcHRyPEpTQzo6SGVhcENlbGxUeXBlPiBtX3dpbmRvd1Byb3h5SGVhcENlbGxU
eXBlOworICAgIEpTQzo6SXNvSGVhcENlbGxUeXBlPEpTQzo6UnVudGltZUFycmF5PiBtX3J1bnRp
bWVBcnJheUhlYXBDZWxsVHlwZTsKKyAgICBKU0M6Oklzb0hlYXBDZWxsVHlwZTxKU0M6OkJpbmRp
bmdzOjpSdW50aW1lT2JqZWN0PiBtX3J1bnRpbWVPYmplY3RIZWFwQ2VsbFR5cGU7CisgICAgSlND
OjpJc29IZWFwQ2VsbFR5cGU8SlNXaW5kb3dQcm94eT4gbV93aW5kb3dQcm94eUhlYXBDZWxsVHlw
ZTsKIHB1YmxpYzoKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SlNDOjpIZWFwQ2VsbFR5cGU+IG1faGVh
cENlbGxUeXBlRm9ySlNET01XaW5kb3c7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPEpTQzo6SGVhcENl
bGxUeXBlPiBtX2hlYXBDZWxsVHlwZUZvckpTRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGU7Ci0g
ICAgc3RkOjp1bmlxdWVfcHRyPEpTQzo6SGVhcENlbGxUeXBlPiBtX2hlYXBDZWxsVHlwZUZvckpT
UmVtb3RlRE9NV2luZG93OwotICAgIHN0ZDo6dW5pcXVlX3B0cjxKU0M6OkhlYXBDZWxsVHlwZT4g
bV9oZWFwQ2VsbFR5cGVGb3JKU1dvcmtlckdsb2JhbFNjb3BlOwotICAgIHN0ZDo6dW5pcXVlX3B0
cjxKU0M6OkhlYXBDZWxsVHlwZT4gbV9oZWFwQ2VsbFR5cGVGb3JKU1NoYXJlZFdvcmtlckdsb2Jh
bFNjb3BlOworICAgIEpTQzo6SXNvSGVhcENlbGxUeXBlPEpTRE9NV2luZG93PiBtX2hlYXBDZWxs
VHlwZUZvckpTRE9NV2luZG93OworICAgIEpTQzo6SXNvSGVhcENlbGxUeXBlPEpTRGVkaWNhdGVk
V29ya2VyR2xvYmFsU2NvcGU+IG1faGVhcENlbGxUeXBlRm9ySlNEZWRpY2F0ZWRXb3JrZXJHbG9i
YWxTY29wZTsKKyAgICBKU0M6Oklzb0hlYXBDZWxsVHlwZTxKU1JlbW90ZURPTVdpbmRvdz4gbV9o
ZWFwQ2VsbFR5cGVGb3JKU1JlbW90ZURPTVdpbmRvdzsKKyAgICBKU0M6Oklzb0hlYXBDZWxsVHlw
ZTxKU1dvcmtlckdsb2JhbFNjb3BlPiBtX2hlYXBDZWxsVHlwZUZvckpTV29ya2VyR2xvYmFsU2Nv
cGU7CisgICAgSlNDOjpJc29IZWFwQ2VsbFR5cGU8SlNTaGFyZWRXb3JrZXJHbG9iYWxTY29wZT4g
bV9oZWFwQ2VsbFR5cGVGb3JKU1NoYXJlZFdvcmtlckdsb2JhbFNjb3BlOwogI2lmIEVOQUJMRShT
RVJWSUNFX1dPUktFUikKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SlNDOjpIZWFwQ2VsbFR5cGU+IG1f
aGVhcENlbGxUeXBlRm9ySlNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU7CisgICAgSlNDOjpJc29I
ZWFwQ2VsbFR5cGU8SlNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU+IG1faGVhcENlbGxUeXBlRm9y
SlNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU7CiAjZW5kaWYKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8
SlNDOjpIZWFwQ2VsbFR5cGU+IG1faGVhcENlbGxUeXBlRm9ySlNXb3JrbGV0R2xvYmFsU2NvcGU7
CisgICAgSlNDOjpJc29IZWFwQ2VsbFR5cGU8SlNXb3JrbGV0R2xvYmFsU2NvcGU+IG1faGVhcENl
bGxUeXBlRm9ySlNXb3JrbGV0R2xvYmFsU2NvcGU7CiAjaWYgRU5BQkxFKENTU19QQUlOVElOR19B
UEkpCi0gICAgc3RkOjp1bmlxdWVfcHRyPEpTQzo6SGVhcENlbGxUeXBlPiBtX2hlYXBDZWxsVHlw
ZUZvckpTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGU7CisgICAgSlNDOjpJc29IZWFwQ2VsbFR5cGU8
SlNQYWludFdvcmtsZXRHbG9iYWxTY29wZT4gbV9oZWFwQ2VsbFR5cGVGb3JKU1BhaW50V29ya2xl
dEdsb2JhbFNjb3BlOwogI2VuZGlmCiAjaWYgRU5BQkxFKFdFQl9BVURJTykKLSAgICBzdGQ6OnVu
aXF1ZV9wdHI8SlNDOjpIZWFwQ2VsbFR5cGU+IG1faGVhcENlbGxUeXBlRm9ySlNBdWRpb1dvcmts
ZXRHbG9iYWxTY29wZTsKKyAgICBKU0M6Oklzb0hlYXBDZWxsVHlwZTxKU0F1ZGlvV29ya2xldEds
b2JhbFNjb3BlPiBtX2hlYXBDZWxsVHlwZUZvckpTQXVkaW9Xb3JrbGV0R2xvYmFsU2NvcGU7CiAj
ZW5kaWYKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SlNDOjpIZWFwQ2VsbFR5cGU+IG1faGVhcENlbGxU
eXBlRm9ySlNJREJTZXJpYWxpemF0aW9uR2xvYmFsT2JqZWN0OworICAgIEpTQzo6SXNvSGVhcENl
bGxUeXBlPEpTSURCU2VyaWFsaXphdGlvbkdsb2JhbE9iamVjdD4gbV9oZWFwQ2VsbFR5cGVGb3JK
U0lEQlNlcmlhbGl6YXRpb25HbG9iYWxPYmplY3Q7CiAKIHByaXZhdGU6CiAgICAgSlNDOjpJc29T
dWJzcGFjZSBtX2RvbUJ1aWx0aW5Db25zdHJ1Y3RvclNwYWNlOwpJbmRleDogU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0JKHJldmlzaW9u
IDI4NjA5NSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRv
ckpTLnBtCSh3b3JraW5nIGNvcHkpCkBAIC00ODUyLDEzICs0ODUyLDEzIEBAIHN1YiBHZW5lcmF0
ZUltcGxlbWVudGF0aW9uCiAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgaWYgKGF1dG8qIHNw
YWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3Ike2ludGVyZmFjZU5hbWV9LmdldCgpKVxuIik7CiAg
ICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIHJldHVybiBzcGFjZTtcbiIpOwogICAgIGlm
IChJc0RPTUdsb2JhbE9iamVjdCgkaW50ZXJmYWNlKSkgewotICAgICAgICBwdXNoKEBpbXBsQ29u
dGVudCwgIiAgICBzcGFjZXMubV9zdWJzcGFjZUZvciR7aW50ZXJmYWNlTmFtZX0gPSBtYWtlVW5p
cXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqY2xpZW50RGF0YS5t
X2hlYXBDZWxsVHlwZUZvciR7Y2xhc3NOYW1lfSwgJHtjbGFzc05hbWV9KTtcbiIpOworICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBzcGFjZXMubV9zdWJzcGFjZUZvciR7aW50ZXJmYWNl
TmFtZX0gPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFw
LCBjbGllbnREYXRhLm1faGVhcENlbGxUeXBlRm9yJHtjbGFzc05hbWV9LCAke2NsYXNzTmFtZX0p
O1xuIik7CiAgICAgfSBlbHNlIHsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgc3Rh
dGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCAk
e2NsYXNzTmFtZX0+IHx8ICEke2NsYXNzTmFtZX06Om5lZWRzRGVzdHJ1Y3Rpb24pO1xuIik7CiAg
ICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNl
X29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgJHtjbGFzc05hbWV9PilcbiIpOwotICAg
ICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3Ike2lu
dGVyZmFjZU5hbWV9ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQo
dm0uaGVhcCwgKnZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSwgJHtjbGFzc05hbWV9
KTtcbiIpOworICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgc3BhY2VzLm1fc3Vi
c3BhY2VGb3Ike2ludGVyZmFjZU5hbWV9ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NV
QlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCks
ICR7Y2xhc3NOYW1lfSk7XG4iKTsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgZWxz
ZVxuIik7Ci0gICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICBzcGFjZXMubV9zdWJz
cGFjZUZvciR7aW50ZXJmYWNlTmFtZX0gPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VC
U1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uY2VsbEhlYXBDZWxsVHlwZSwgJHtjbGFzc05hbWV9KTtc
biIpOworICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgc3BhY2VzLm1fc3Vic3Bh
Y2VGb3Ike2ludGVyZmFjZU5hbWV9ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQ
QUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCAke2NsYXNzTmFtZX0pO1xu
Iik7CiAgICAgfQogICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGF1dG8qIHNwYWNlID0gc3Bh
Y2VzLm1fc3Vic3BhY2VGb3Ike2ludGVyZmFjZU5hbWV9LmdldCgpO1xuIik7CiAgICAgcHVzaChA
aW1wbENvbnRlbnQsICJJR05PUkVfV0FSTklOR1NfQkVHSU4oXCJ1bnJlYWNoYWJsZS1jb2RlXCIp
XG4iKTsKQEAgLTY3MzEsOSArNjczMSw5IEBAIHB1YmxpYzoKICAgICAgICAgICAgIHJldHVybiBz
cGFjZTsKICAgICAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVz
dHJ1Y3RpYmxlT2JqZWN0LCAke2l0ZXJhdG9yTmFtZX0+IHx8ICEke2l0ZXJhdG9yTmFtZX06Om5l
ZWRzRGVzdHJ1Y3Rpb24pOwogICAgICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92
PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsICR7aXRlcmF0b3JOYW1lfT4pCi0gICAgICAgICAg
ICBzcGFjZXMubV9zdWJzcGFjZUZvciR7aXRlcmF0b3JOYW1lfSA9IG1ha2VVbmlxdWU8SXNvU3Vi
c3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5kZXN0cnVjdGlibGVPYmplY3RI
ZWFwQ2VsbFR5cGUuZ2V0KCksICR7aXRlcmF0b3JOYW1lfSk7CisgICAgICAgICAgICBzcGFjZXMu
bV9zdWJzcGFjZUZvciR7aXRlcmF0b3JOYW1lfSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElT
T19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlw
ZSgpLCAke2l0ZXJhdG9yTmFtZX0pOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBzcGFjZXMu
bV9zdWJzcGFjZUZvciR7aXRlcmF0b3JOYW1lfSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElT
T19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5jZWxsSGVhcENlbGxUeXBlLCAke2l0ZXJhdG9y
TmFtZX0pOworICAgICAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3Ike2l0ZXJhdG9yTmFtZX0g
PSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5j
ZWxsSGVhcENlbGxUeXBlKCksICR7aXRlcmF0b3JOYW1lfSk7CiAgICAgICAgIGF1dG8qIHNwYWNl
ID0gc3BhY2VzLm1fc3Vic3BhY2VGb3Ike2l0ZXJhdG9yTmFtZX0uZ2V0KCk7CiBJR05PUkVfV0FS
TklOR1NfQkVHSU4oXCJ1bnJlYWNoYWJsZS1jb2RlXCIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4o
XCJ0YXV0b2xvZ2ljYWwtY29tcGFyZVwiKQpAQCAtNzUyOSw3ICs3NTI5LDcgQEAgc3ViIEdlbmVy
YXRlUHJvdG90eXBlRGVjbGFyYXRpb24KICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgc3Rh
dGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKVxuIik7CiAgICAg
cHVzaChAJG91dHB1dEFycmF5LCAiICAgIHtcbiIpOwogICAgIHB1c2goQCRvdXRwdXRBcnJheSwg
IiAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoJHtwcm90b3R5cGVD
bGFzc05hbWV9LCBCYXNlKTtcbiIpOwotICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICAgICAg
cmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlO1xuIik7CisgICAgcHVzaChAJG91dHB1dEFycmF5
LCAiICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTtcbiIpOwogICAgIHB1c2go
QCRvdXRwdXRBcnJheSwgIiAgICB9XG4iKTsKIAogICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAg
ICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlND
OjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKVxu
Iik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNET01X
aW5kb3cuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNET01XaW5kb3cuaAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTRE9NV2luZG93LmgJKHdvcmtpbmcgY29weSkKQEAg
LTg1LDcgKzg1LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJz
cGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NV
QlNQQUNFX1NIQVJBQkxFKEpTRE9NV2luZG93UHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0
dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0
U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1
cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpK
U1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU0RlZGljYXRlZFdv
cmtlckdsb2JhbFNjb3BlLmgJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlLmgJKHdv
cmtpbmcgY29weSkKQEAgLTgyLDcgKzgyLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklz
b1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJ
Q19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTRGVkaWNhdGVkV29ya2VyR2xvYmFsU2Nv
cGVQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7
CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KICAgICBzdGF0
aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU0V4cG9zZWRT
dGFyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNFeHBvc2VkU3Rhci5jcHAJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU0V4cG9zZWRTdGFyLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNzEsNyArNzEsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3Bh
Y2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VS
VF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNFeHBvc2VkU3RhclByb3RvdHlwZSwgQmFzZSk7Ci0g
ICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5w
bGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3Jl
YXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAtMjM2LDkgKzIzNiw5IEBAIEpT
Qzo6SXNvU3Vic3BhY2UqIEpTRXhwb3NlZFN0YXI6OnN1YnNwYWMKICAgICAgICAgcmV0dXJuIHNw
YWNlOwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0
aWJsZU9iamVjdCwgSlNFeHBvc2VkU3Rhcj4gfHwgIUpTRXhwb3NlZFN0YXI6Om5lZWRzRGVzdHJ1
Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3Ry
dWN0aWJsZU9iamVjdCwgSlNFeHBvc2VkU3Rhcj4pCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNl
Rm9yRXhwb3NlZFN0YXIgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5J
VCh2bS5oZWFwLCAqdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLCBKU0V4cG9zZWRT
dGFyKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JFeHBvc2VkU3RhciA9IG1ha2VVbmlx
dWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJs
ZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBKU0V4cG9zZWRTdGFyKTsKICAgICBlbHNlCi0gICAgICAg
IHNwYWNlcy5tX3N1YnNwYWNlRm9yRXhwb3NlZFN0YXIgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNl
PiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uY2VsbEhlYXBDZWxsVHlwZSwgSlNFeHBv
c2VkU3Rhcik7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yRXhwb3NlZFN0YXIgPSBtYWtl
VW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVh
cENlbGxUeXBlKCksIEpTRXhwb3NlZFN0YXIpOwogICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1f
c3Vic3BhY2VGb3JFeHBvc2VkU3Rhci5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5y
ZWFjaGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21w
YXJlIikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU0V4
cG9zZWRUb1dvcmtlckFuZFdpbmRvdy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTRXhwb3NlZFRvV29ya2VyQW5kV2luZG93LmNwcAko
cmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTRXhwb3NlZFRvV29ya2VyQW5kV2luZG93LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTEy
LDcgKzExMiw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3Bh
Y2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJT
UEFDRV9TSEFSQUJMRShKU0V4cG9zZWRUb1dvcmtlckFuZFdpbmRvd1Byb3RvdHlwZSwgQmFzZSk7
Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2
bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSog
Y3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAtMjUyLDkgKzI1Miw5IEBA
IEpTQzo6SXNvU3Vic3BhY2UqIEpTRXhwb3NlZFRvV29ya2VyQW5kV2kKICAgICAgICAgcmV0dXJu
IHNwYWNlOwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3Ry
dWN0aWJsZU9iamVjdCwgSlNFeHBvc2VkVG9Xb3JrZXJBbmRXaW5kb3c+IHx8ICFKU0V4cG9zZWRU
b1dvcmtlckFuZFdpbmRvdzo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3RleHByIChz
dGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU0V4cG9zZWRUb1dv
cmtlckFuZFdpbmRvdz4pCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yRXhwb3NlZFRvV29y
a2VyQW5kV2luZG93ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQo
dm0uaGVhcCwgKnZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSwgSlNFeHBvc2VkVG9X
b3JrZXJBbmRXaW5kb3cpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvckV4cG9zZWRUb1dv
cmtlckFuZFdpbmRvdyA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklU
KHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBKU0V4cG9zZWRU
b1dvcmtlckFuZFdpbmRvdyk7CiAgICAgZWxzZQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZv
ckV4cG9zZWRUb1dvcmtlckFuZFdpbmRvdyA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19T
VUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5jZWxsSGVhcENlbGxUeXBlLCBKU0V4cG9zZWRUb1dv
cmtlckFuZFdpbmRvdyk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yRXhwb3NlZFRvV29y
a2VyQW5kV2luZG93ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQo
dm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU0V4cG9zZWRUb1dvcmtlckFuZFdpbmRv
dyk7CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvckV4cG9zZWRUb1dvcmtl
ckFuZFdpbmRvdy5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29k
ZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1BhaW50V29ya2xldEds
b2JhbFNjb3BlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuaAkocmV2aXNpb24gMjg2MDk1KQor
KysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTUGFpbnRXb3JrbGV0
R2xvYmFsU2NvcGUuaAkod29ya2luZyBjb3B5KQpAQCAtODIsNyArODIsNyBAQCBwdWJsaWM6CiAg
ICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAg
IHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNQYWludFdv
cmtsZXRHbG9iYWxTY29wZVByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxh
aW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAg
ICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0m
IHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90
b3R5cGUpCiAgICAgewpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTU2VydmljZVdvcmtlckdsb2JhbFNjb3BlLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTU2VydmljZVdvcmtlckdsb2JhbFNjb3Bl
LmgJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS5oCSh3b3JraW5nIGNvcHkpCkBAIC04
Miw3ICs4Miw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3Bh
Y2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJT
UEFDRV9TSEFSQUJMRShKU1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZVByb3RvdHlwZSwgQmFzZSk7
Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2
bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSog
Y3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpJbmRleDogU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTU2hhcmVkV29ya2VyR2xvYmFsU2NvcGUuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNT
aGFyZWRXb3JrZXJHbG9iYWxTY29wZS5oCShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNTaGFyZWRXb3JrZXJHbG9iYWxTY29wZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC04Miw3ICs4Miw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlND
OjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBT
VEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1NoYXJlZFdvcmtlckdsb2JhbFNj
b3BlUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNl
OworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3Rh
dGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q0VS
ZWFjdGlvbnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RDRVJlYWN0aW9ucy5jcHAJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDRVJlYWN0aW9ucy5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTkxLDcgKzkxLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBK
U0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAg
IFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdENFUmVhY3Rpb25zUHJv
dG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAg
ICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpT
Qzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC00
MzgsOSArNDM4LDkgQEAgSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0Q0VSZWFjdGlvbnM6OnN1Ygog
ICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2Zf
djxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RDRVJlYWN0aW9ucz4gfHwgIUpTVGVz
dENFUmVhY3Rpb25zOjpuZWVkc0Rlc3RydWN0aW9uKTsKICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6
aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdENFUmVhY3Rpb25z
PikKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0Q0VSZWFjdGlvbnMgPSBtYWtlVW5p
cXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uZGVzdHJ1Y3Rp
YmxlT2JqZWN0SGVhcENlbGxUeXBlLCBKU1Rlc3RDRVJlYWN0aW9ucyk7CisgICAgICAgIHNwYWNl
cy5tX3N1YnNwYWNlRm9yVGVzdENFUmVhY3Rpb25zID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4g
SVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxU
eXBlKCksIEpTVGVzdENFUmVhY3Rpb25zKTsKICAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1
YnNwYWNlRm9yVGVzdENFUmVhY3Rpb25zID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NV
QlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmNlbGxIZWFwQ2VsbFR5cGUsIEpTVGVzdENFUmVhY3Rp
b25zKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0Q0VSZWFjdGlvbnMgPSBtYWtl
VW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVh
cENlbGxUeXBlKCksIEpTVGVzdENFUmVhY3Rpb25zKTsKICAgICBhdXRvKiBzcGFjZSA9IHNwYWNl
cy5tX3N1YnNwYWNlRm9yVGVzdENFUmVhY3Rpb25zLmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JF
R0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dp
Y2FsLWNvbXBhcmUiKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXIuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDRVJlYWN0aW9uc1N0cmlu
Z2lmaWVyLmNwcAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXIuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC03NSw3ICs3NSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJz
cGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNT
RVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyUHJv
dG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAg
ICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpT
Qzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC0y
NjQsOSArMjY0LDkgQEAgSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0Q0VSZWFjdGlvbnNTdHJpbgog
ICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2Zf
djxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVy
PiB8fCAhSlNUZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllcjo6bmVlZHNEZXN0cnVjdGlvbik7CiAg
ICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2Jq
ZWN0LCBKU1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyPikKLSAgICAgICAgc3BhY2VzLm1fc3Vi
c3BhY2VGb3JUZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllciA9IG1ha2VVbmlxdWU8SXNvU3Vic3Bh
Y2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFw
Q2VsbFR5cGUsIEpTVGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXIpOworICAgICAgICBzcGFjZXMu
bV9zdWJzcGFjZUZvclRlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyID0gbWFrZVVuaXF1ZTxJc29T
dWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0
SGVhcENlbGxUeXBlKCksIEpTVGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXIpOwogICAgIGVsc2UK
LSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllciA9
IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5j
ZWxsSGVhcENlbGxUeXBlLCBKU1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyKTsKKyAgICAgICAg
c3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllciA9IG1ha2VVbmlx
dWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2Vs
bFR5cGUoKSwgSlNUZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllcik7CiAgICAgYXV0byogc3BhY2Ug
PSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyLmdldCgpOwog
SUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKIElHTk9SRV9XQVJOSU5H
U19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENhbGxUcmFjZXIuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDYWxsVHJhY2Vy
LmNwcAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdENhbGxUcmFjZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05Nyw3ICs5
Nyw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3Io
SlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9T
SEFSQUJMRShKU1Rlc3RDYWxsVHJhY2VyUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJu
ICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3Bh
Y2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUo
SlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1Zh
bHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC01MTMsOSArNTEzLDkgQEAgSlNDOjpJc29TdWJzcGFj
ZSogSlNUZXN0Q2FsbFRyYWNlcjo6c3VicwogICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAgc3Rh
dGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBK
U1Rlc3RDYWxsVHJhY2VyPiB8fCAhSlNUZXN0Q2FsbFRyYWNlcjo6bmVlZHNEZXN0cnVjdGlvbik7
CiAgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxl
T2JqZWN0LCBKU1Rlc3RDYWxsVHJhY2VyPikKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JU
ZXN0Q2FsbFRyYWNlciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklU
KHZtLmhlYXAsICp2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUsIEpTVGVzdENhbGxU
cmFjZXIpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RDYWxsVHJhY2VyID0gbWFr
ZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1
Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCksIEpTVGVzdENhbGxUcmFjZXIpOwogICAgIGVsc2UK
LSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0Q2FsbFRyYWNlciA9IG1ha2VVbmlxdWU8
SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5jZWxsSGVhcENlbGxU
eXBlLCBKU1Rlc3RDYWxsVHJhY2VyKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0
Q2FsbFRyYWNlciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZt
LmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0Q2FsbFRyYWNlcik7CiAgICAgYXV0
byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RDYWxsVHJhY2VyLmdldCgpOwogSUdO
T1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKIElHTk9SRV9XQVJOSU5HU19C
RUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3IuY3BwCShyZXZpc2lvbiAyODYwOTUp
CisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2xhc3NX
aXRoSlNCdWlsdGluQ29uc3RydWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NCw3ICs2NCw3
IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlND
OjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFS
QUJMRShKU1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3RvclByb3RvdHlwZSwgQmFzZSk7
Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2
bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSog
Y3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAtMTc2LDkgKzE3Niw5IEBA
IEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdENsYXNzV2l0aEpTQnVpbHQKICAgICAgICAgcmV0dXJu
IHNwYWNlOwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3Ry
dWN0aWJsZU9iamVjdCwgSlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3I+IHx8ICFK
U1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3Rvcjo6bmVlZHNEZXN0cnVjdGlvbik7CiAg
ICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2Jq
ZWN0LCBKU1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3Rvcj4pCi0gICAgICAgIHNwYWNl
cy5tX3N1YnNwYWNlRm9yVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yID0gbWFrZVVu
aXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmRlc3RydWN0
aWJsZU9iamVjdEhlYXBDZWxsVHlwZSwgSlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0
b3IpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RDbGFzc1dpdGhKU0J1aWx0aW5D
b25zdHJ1Y3RvciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZt
LmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RDbGFzc1dp
dGhKU0J1aWx0aW5Db25zdHJ1Y3Rvcik7CiAgICAgZWxzZQotICAgICAgICBzcGFjZXMubV9zdWJz
cGFjZUZvclRlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3RvciA9IG1ha2VVbmlxdWU8SXNv
U3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5jZWxsSGVhcENlbGxUeXBl
LCBKU1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3Rvcik7CisgICAgICAgIHNwYWNlcy5t
X3N1YnNwYWNlRm9yVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yID0gbWFrZVVuaXF1
ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxs
VHlwZSgpLCBKU1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3Rvcik7CiAgICAgYXV0byog
c3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1
Y3Rvci5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJ
R05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDb25kaXRpb25hbEluY2x1
ZGVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlcy5jcHAJKHJldmlzaW9uIDI4NjA5NSkKKysr
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDb25kaXRpb25h
bEluY2x1ZGVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTI3LDcgKzEyNyw3IEBAIHB1YmxpYzoK
ICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAg
ICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3RD
b25kaXRpb25hbEluY2x1ZGVzUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5w
bGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsK
ICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpW
TSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHBy
b3RvdHlwZSkKICAgICB7CkBAIC03ODksOSArNzg5LDkgQEAgSlNDOjpJc29TdWJzcGFjZSogSlNU
ZXN0Q29uZGl0aW9uYWxJbmNsdQogICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fz
c2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RD
b25kaXRpb25hbEluY2x1ZGVzPiB8fCAhSlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlczo6bmVlZHNE
ZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpT
RGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzPikKLSAgICAgICAg
c3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0Q29uZGl0aW9uYWxJbmNsdWRlcyA9IG1ha2VVbmlxdWU8
SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5kZXN0cnVjdGlibGVP
YmplY3RIZWFwQ2VsbFR5cGUsIEpTVGVzdENvbmRpdGlvbmFsSW5jbHVkZXMpOworICAgICAgICBz
cGFjZXMubV9zdWJzcGFjZUZvclRlc3RDb25kaXRpb25hbEluY2x1ZGVzID0gbWFrZVVuaXF1ZTxJ
c29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2Jq
ZWN0SGVhcENlbGxUeXBlKCksIEpTVGVzdENvbmRpdGlvbmFsSW5jbHVkZXMpOwogICAgIGVsc2UK
LSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0Q29uZGl0aW9uYWxJbmNsdWRlcyA9IG1h
a2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5jZWxs
SGVhcENlbGxUeXBlLCBKU1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzKTsKKyAgICAgICAgc3BhY2Vz
Lm1fc3Vic3BhY2VGb3JUZXN0Q29uZGl0aW9uYWxJbmNsdWRlcyA9IG1ha2VVbmlxdWU8SXNvU3Vi
c3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwg
SlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlcyk7CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9z
dWJzcGFjZUZvclRlc3RDb25kaXRpb25hbEluY2x1ZGVzLmdldCgpOwogSUdOT1JFX1dBUk5JTkdT
X0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9s
b2dpY2FsLWNvbXBhcmUiKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdENvbmRpdGlvbmFsbHlSZWFkV3JpdGUuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDb25kaXRpb25hbGx5
UmVhZFdyaXRlLmNwcAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENvbmRpdGlvbmFsbHlSZWFkV3JpdGUuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC05OCw3ICs5OCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29T
dWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNf
QVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3RDb25kaXRpb25hbGx5UmVhZFdyaXRl
UHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOwor
ICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGlj
IEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBA
IC02MTEsOSArNjExLDkgQEAgSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0Q29uZGl0aW9uYWxseVJl
YQogICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vf
b2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RDb25kaXRpb25hbGx5UmVhZFdy
aXRlPiB8fCAhSlNUZXN0Q29uZGl0aW9uYWxseVJlYWRXcml0ZTo6bmVlZHNEZXN0cnVjdGlvbik7
CiAgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxl
T2JqZWN0LCBKU1Rlc3RDb25kaXRpb25hbGx5UmVhZFdyaXRlPikKLSAgICAgICAgc3BhY2VzLm1f
c3Vic3BhY2VGb3JUZXN0Q29uZGl0aW9uYWxseVJlYWRXcml0ZSA9IG1ha2VVbmlxdWU8SXNvU3Vi
c3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5kZXN0cnVjdGlibGVPYmplY3RI
ZWFwQ2VsbFR5cGUsIEpTVGVzdENvbmRpdGlvbmFsbHlSZWFkV3JpdGUpOworICAgICAgICBzcGFj
ZXMubV9zdWJzcGFjZUZvclRlc3RDb25kaXRpb25hbGx5UmVhZFdyaXRlID0gbWFrZVVuaXF1ZTxJ
c29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2Jq
ZWN0SGVhcENlbGxUeXBlKCksIEpTVGVzdENvbmRpdGlvbmFsbHlSZWFkV3JpdGUpOwogICAgIGVs
c2UKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0Q29uZGl0aW9uYWxseVJlYWRXcml0
ZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2
bS5jZWxsSGVhcENlbGxUeXBlLCBKU1Rlc3RDb25kaXRpb25hbGx5UmVhZFdyaXRlKTsKKyAgICAg
ICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0Q29uZGl0aW9uYWxseVJlYWRXcml0ZSA9IG1ha2VV
bmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFw
Q2VsbFR5cGUoKSwgSlNUZXN0Q29uZGl0aW9uYWxseVJlYWRXcml0ZSk7CiAgICAgYXV0byogc3Bh
Y2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RDb25kaXRpb25hbGx5UmVhZFdyaXRlLmdldCgp
OwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKIElHTk9SRV9XQVJO
SU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRleDogU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERPTUpJVC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERPTUpJVC5jcHAJ
KHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RET01KSVQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00ODEsNyArNDgxLDcgQEAg
cHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZN
JiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxF
KEpTVGVzdERPTUpJVFByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5P
YmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAg
fQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZt
LCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5
cGUpCiAgICAgewpAQCAtMTI1Miw5ICsxMjUyLDkgQEAgSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0
RE9NSklUOjpzdWJzcGFjZQogICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fzc2Vy
dChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RET01K
SVQ+IHx8ICFKU1Rlc3RET01KSVQ6Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhw
ciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0RE9N
SklUPikKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0RE9NSklUID0gbWFrZVVuaXF1
ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmRlc3RydWN0aWJs
ZU9iamVjdEhlYXBDZWxsVHlwZSwgSlNUZXN0RE9NSklUKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vi
c3BhY2VGb3JUZXN0RE9NSklUID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNF
X0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCksIEpTVGVz
dERPTUpJVCk7CiAgICAgZWxzZQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RET01K
SVQgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAq
dm0uY2VsbEhlYXBDZWxsVHlwZSwgSlNUZXN0RE9NSklUKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vi
c3BhY2VGb3JUZXN0RE9NSklUID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNF
X0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RET01KSVQpOwogICAg
IGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0RE9NSklULmdldCgpOwogSUdO
T1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKIElHTk9SRV9XQVJOSU5HU19C
RUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERlZmF1bHRUb0pTT04uY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3REZWZhdWx0VG9K
U09OLmNwcAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdERlZmF1bHRUb0pTT04uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
MjQsNyArMTI0LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJz
cGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NV
QlNQQUNFX1NIQVJBQkxFKEpTVGVzdERlZmF1bHRUb0pTT05Qcm90b3R5cGUsIEJhc2UpOwotICAg
ICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxh
aW5PYmplY3RTcGFjZSgpOwogICAgIH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0
ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKQEAgLTgwOCw5ICs4MDgsOSBAQCBKU0M6
Oklzb1N1YnNwYWNlKiBKU1Rlc3REZWZhdWx0VG9KU09OOjpzCiAgICAgICAgIHJldHVybiBzcGFj
ZTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGli
bGVPYmplY3QsIEpTVGVzdERlZmF1bHRUb0pTT04+IHx8ICFKU1Rlc3REZWZhdWx0VG9KU09OOjpu
ZWVkc0Rlc3RydWN0aW9uKTsKICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpT
Qzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdERlZmF1bHRUb0pTT04+KQotICAgICAgICBz
cGFjZXMubV9zdWJzcGFjZUZvclRlc3REZWZhdWx0VG9KU09OID0gbWFrZVVuaXF1ZTxJc29TdWJz
cGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmRlc3RydWN0aWJsZU9iamVjdEhl
YXBDZWxsVHlwZSwgSlNUZXN0RGVmYXVsdFRvSlNPTik7CisgICAgICAgIHNwYWNlcy5tX3N1YnNw
YWNlRm9yVGVzdERlZmF1bHRUb0pTT04gPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VC
U1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwg
SlNUZXN0RGVmYXVsdFRvSlNPTik7CiAgICAgZWxzZQotICAgICAgICBzcGFjZXMubV9zdWJzcGFj
ZUZvclRlc3REZWZhdWx0VG9KU09OID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQ
QUNFX0lOSVQodm0uaGVhcCwgKnZtLmNlbGxIZWFwQ2VsbFR5cGUsIEpTVGVzdERlZmF1bHRUb0pT
T04pOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3REZWZhdWx0VG9KU09OID0gbWFr
ZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhl
YXBDZWxsVHlwZSgpLCBKU1Rlc3REZWZhdWx0VG9KU09OKTsKICAgICBhdXRvKiBzcGFjZSA9IHNw
YWNlcy5tX3N1YnNwYWNlRm9yVGVzdERlZmF1bHRUb0pTT04uZ2V0KCk7CiBJR05PUkVfV0FSTklO
R1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0
b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RGVm
YXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkLmNwcAkocmV2aXNpb24gMjg2MDk1KQorKysgU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERlZmF1bHRUb0pTT05G
aWx0ZXJlZEJ5RXhwb3NlZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc1LDcgKzc1LDcgQEAgcHVi
bGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2
bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpT
VGVzdERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZFByb3RvdHlwZSwgQmFzZSk7Ci0gICAg
ICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFp
bk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRl
U3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAtMjcwLDkgKzI3MCw5IEBAIEpTQzo6
SXNvU3Vic3BhY2UqIEpTVGVzdERlZmF1bHRUb0pTT05GaWwKICAgICAgICAgcmV0dXJuIHNwYWNl
OwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJs
ZU9iamVjdCwgSlNUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkPiB8fCAhSlNUZXN0
RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkOjpuZWVkc0Rlc3RydWN0aW9uKTsKICAgICBp
ZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3Qs
IEpTVGVzdERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZD4pCi0gICAgICAgIHNwYWNlcy5t
X3N1YnNwYWNlRm9yVGVzdERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZCA9IG1ha2VVbmlx
dWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5kZXN0cnVjdGli
bGVPYmplY3RIZWFwQ2VsbFR5cGUsIEpTVGVzdERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3Nl
ZCk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdERlZmF1bHRUb0pTT05GaWx0ZXJl
ZEJ5RXhwb3NlZCA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZt
LmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3REZWZhdWx0
VG9KU09ORmlsdGVyZWRCeUV4cG9zZWQpOwogICAgIGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vi
c3BhY2VGb3JUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkID0gbWFrZVVuaXF1ZTxJ
c29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmNlbGxIZWFwQ2VsbFR5
cGUsIEpTVGVzdERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZCk7CisgICAgICAgIHNwYWNl
cy5tX3N1YnNwYWNlRm9yVGVzdERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZCA9IG1ha2VV
bmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFw
Q2VsbFR5cGUoKSwgSlNUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkKTsKICAgICBh
dXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdERlZmF1bHRUb0pTT05GaWx0ZXJl
ZEJ5RXhwb3NlZC5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29k
ZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3REZWZhdWx0VG9K
U09OSW5kaXJlY3RJbmhlcml0YW5jZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERlZmF1bHRUb0pTT05JbmRpcmVjdEluaGVy
aXRhbmNlLmNwcAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdERlZmF1bHRUb0pTT05JbmRpcmVjdEluaGVyaXRhbmNlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNjIsNyArNjIsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpT
Qzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAg
U1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0RGVmYXVsdFRvSlNPTklu
ZGlyZWN0SW5oZXJpdGFuY2VQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBs
YWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwog
ICAgIH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZN
JiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJv
dG90eXBlKQogICAgIHsKQEAgLTE2Miw5ICsxNjIsOSBAQCBKU0M6Oklzb1N1YnNwYWNlKiBKU1Rl
c3REZWZhdWx0VG9KU09OSW5kCiAgICAgICAgIHJldHVybiBzcGFjZTsKICAgICBzdGF0aWNfYXNz
ZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdERl
ZmF1bHRUb0pTT05JbmRpcmVjdEluaGVyaXRhbmNlPiB8fCAhSlNUZXN0RGVmYXVsdFRvSlNPTklu
ZGlyZWN0SW5oZXJpdGFuY2U6Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhwciAo
c3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0RGVmYXVs
dFRvSlNPTkluZGlyZWN0SW5oZXJpdGFuY2U+KQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZv
clRlc3REZWZhdWx0VG9KU09OSW5kaXJlY3RJbmhlcml0YW5jZSA9IG1ha2VVbmlxdWU8SXNvU3Vi
c3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5kZXN0cnVjdGlibGVPYmplY3RI
ZWFwQ2VsbFR5cGUsIEpTVGVzdERlZmF1bHRUb0pTT05JbmRpcmVjdEluaGVyaXRhbmNlKTsKKyAg
ICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0RGVmYXVsdFRvSlNPTkluZGlyZWN0SW5oZXJp
dGFuY2UgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFw
LCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0RGVmYXVsdFRvSlNP
TkluZGlyZWN0SW5oZXJpdGFuY2UpOwogICAgIGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vic3Bh
Y2VGb3JUZXN0RGVmYXVsdFRvSlNPTkluZGlyZWN0SW5oZXJpdGFuY2UgPSBtYWtlVW5pcXVlPElz
b1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uY2VsbEhlYXBDZWxsVHlw
ZSwgSlNUZXN0RGVmYXVsdFRvSlNPTkluZGlyZWN0SW5oZXJpdGFuY2UpOworICAgICAgICBzcGFj
ZXMubV9zdWJzcGFjZUZvclRlc3REZWZhdWx0VG9KU09OSW5kaXJlY3RJbmhlcml0YW5jZSA9IG1h
a2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxI
ZWFwQ2VsbFR5cGUoKSwgSlNUZXN0RGVmYXVsdFRvSlNPTkluZGlyZWN0SW5oZXJpdGFuY2UpOwog
ICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0RGVmYXVsdFRvSlNPTklu
ZGlyZWN0SW5oZXJpdGFuY2UuZ2V0KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hh
YmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIp
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RGVm
YXVsdFRvSlNPTkluaGVyaXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3REZWZhdWx0VG9KU09OSW5oZXJpdC5jcHAJKHJldmlz
aW9uIDI4NjA5NSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3REZWZhdWx0VG9KU09OSW5oZXJpdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg5LDcgKzg5
LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihK
U0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NI
QVJBQkxFKEpTVGVzdERlZmF1bHRUb0pTT05Jbmhlcml0UHJvdG90eXBlLCBCYXNlKTsKLSAgICAg
ICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWlu
T2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVT
dHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
SlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC0yOTIsOSArMjkyLDkgQEAgSlNDOjpJ
c29TdWJzcGFjZSogSlNUZXN0RGVmYXVsdFRvSlNPTkluaAogICAgICAgICByZXR1cm4gc3BhY2U7
CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxl
T2JqZWN0LCBKU1Rlc3REZWZhdWx0VG9KU09OSW5oZXJpdD4gfHwgIUpTVGVzdERlZmF1bHRUb0pT
T05Jbmhlcml0OjpuZWVkc0Rlc3RydWN0aW9uKTsKICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNf
YmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdERlZmF1bHRUb0pTT05J
bmhlcml0PikKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0RGVmYXVsdFRvSlNPTklu
aGVyaXQgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFw
LCAqdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLCBKU1Rlc3REZWZhdWx0VG9KU09O
SW5oZXJpdCk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdERlZmF1bHRUb0pTT05J
bmhlcml0ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVh
cCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCksIEpTVGVzdERlZmF1bHRUb0pT
T05Jbmhlcml0KTsKICAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdERl
ZmF1bHRUb0pTT05Jbmhlcml0ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNF
X0lOSVQodm0uaGVhcCwgKnZtLmNlbGxIZWFwQ2VsbFR5cGUsIEpTVGVzdERlZmF1bHRUb0pTT05J
bmhlcml0KTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0RGVmYXVsdFRvSlNPTklu
aGVyaXQgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFw
LCB2bS5jZWxsSGVhcENlbGxUeXBlKCksIEpTVGVzdERlZmF1bHRUb0pTT05Jbmhlcml0KTsKICAg
ICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdERlZmF1bHRUb0pTT05Jbmhl
cml0LmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKIElH
Tk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRleDogU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERlZmF1bHRUb0pTT05Jbmhl
cml0RmluYWwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3REZWZhdWx0VG9KU09OSW5oZXJpdEZpbmFsLmNwcAkocmV2aXNpb24g
Mjg2MDk1KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dERlZmF1bHRUb0pTT05Jbmhlcml0RmluYWwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05MSw3ICs5
MSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3Io
SlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9T
SEFSQUJMRShKU1Rlc3REZWZhdWx0VG9KU09OSW5oZXJpdEZpbmFsUHJvdG90eXBlLCBCYXNlKTsK
LSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZt
LnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBj
cmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC0zMzIsOSArMzMyLDkgQEAg
SlNDOjpJc29TdWJzcGFjZSogSlNUZXN0RGVmYXVsdFRvSlNPTkluaAogICAgICAgICByZXR1cm4g
c3BhY2U7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1
Y3RpYmxlT2JqZWN0LCBKU1Rlc3REZWZhdWx0VG9KU09OSW5oZXJpdEZpbmFsPiB8fCAhSlNUZXN0
RGVmYXVsdFRvSlNPTkluaGVyaXRGaW5hbDo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgaWYgY29u
c3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rl
c3REZWZhdWx0VG9KU09OSW5oZXJpdEZpbmFsPikKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VG
b3JUZXN0RGVmYXVsdFRvSlNPTkluaGVyaXRGaW5hbCA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+
IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2Vs
bFR5cGUsIEpTVGVzdERlZmF1bHRUb0pTT05Jbmhlcml0RmluYWwpOworICAgICAgICBzcGFjZXMu
bV9zdWJzcGFjZUZvclRlc3REZWZhdWx0VG9KU09OSW5oZXJpdEZpbmFsID0gbWFrZVVuaXF1ZTxJ
c29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2Jq
ZWN0SGVhcENlbGxUeXBlKCksIEpTVGVzdERlZmF1bHRUb0pTT05Jbmhlcml0RmluYWwpOwogICAg
IGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0RGVmYXVsdFRvSlNPTkluaGVy
aXRGaW5hbCA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhl
YXAsICp2bS5jZWxsSGVhcENlbGxUeXBlLCBKU1Rlc3REZWZhdWx0VG9KU09OSW5oZXJpdEZpbmFs
KTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0RGVmYXVsdFRvSlNPTkluaGVyaXRG
aW5hbCA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAs
IHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0RGVmYXVsdFRvSlNPTkluaGVyaXRGaW5hbCk7
CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3REZWZhdWx0VG9KU09O
SW5oZXJpdEZpbmFsLmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1j
b2RlIikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRl
eDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERlbGVnYXRl
VG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhl
dGljQXR0cmlidXRlLmNwcAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRy
aWJ1dGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03MCw3ICs3MCw3IEBAIHB1YmxpYzoKICAgICBz
dGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewog
ICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3REZWxlZ2F0
ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0
dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0
U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1
cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpK
U1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC0yNDYsOSArMjQ2LDkgQEAgSlNDOjpJc29TdWJz
cGFjZSogSlNUZXN0RGVsZWdhdGVUb1NoYXJlZAogICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAg
c3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0
LCBKU1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlPiB8fCAhSlNUZXN0RGVs
ZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZTo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAg
aWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0
LCBKU1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlPikKLSAgICAgICAgc3Bh
Y2VzLm1fc3Vic3BhY2VGb3JUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZSA9
IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5k
ZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUsIEpTVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50
aGV0aWNBdHRyaWJ1dGUpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3REZWxlZ2F0
ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNP
X1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBl
KCksIEpTVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGUpOwogICAgIGVsc2UK
LSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRp
Y0F0dHJpYnV0ZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZt
LmhlYXAsICp2bS5jZWxsSGVhcENlbGxUeXBlLCBKU1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhl
dGljQXR0cmlidXRlKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0RGVsZWdhdGVU
b1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19T
VUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0RGVsZWdh
dGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZSk7CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMu
bV9zdWJzcGFjZUZvclRlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlLmdldCgp
OwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKIElHTk9SRV9XQVJO
SU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRleDogU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERvbWFpblNlY3VyaXR5LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RG9t
YWluU2VjdXJpdHkuY3BwCShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RG9tYWluU2VjdXJpdHkuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC04MCw3ICs4MCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFj
ZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJU
X0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3REb21haW5TZWN1cml0eVByb3RvdHlwZSwgQmFz
ZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJu
ICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVy
ZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAtMzIwLDkgKzMyMCw5
IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdERvbWFpblNlY3VyaXR5OjoKICAgICAgICAgcmV0
dXJuIHNwYWNlOwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rl
c3RydWN0aWJsZU9iamVjdCwgSlNUZXN0RG9tYWluU2VjdXJpdHk+IHx8ICFKU1Rlc3REb21haW5T
ZWN1cml0eTo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jh
c2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3REb21haW5TZWN1cml0eT4p
Ci0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdERvbWFpblNlY3VyaXR5ID0gbWFrZVVu
aXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmRlc3RydWN0
aWJsZU9iamVjdEhlYXBDZWxsVHlwZSwgSlNUZXN0RG9tYWluU2VjdXJpdHkpOworICAgICAgICBz
cGFjZXMubV9zdWJzcGFjZUZvclRlc3REb21haW5TZWN1cml0eSA9IG1ha2VVbmlxdWU8SXNvU3Vi
c3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhl
YXBDZWxsVHlwZSgpLCBKU1Rlc3REb21haW5TZWN1cml0eSk7CiAgICAgZWxzZQotICAgICAgICBz
cGFjZXMubV9zdWJzcGFjZUZvclRlc3REb21haW5TZWN1cml0eSA9IG1ha2VVbmlxdWU8SXNvU3Vi
c3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5jZWxsSGVhcENlbGxUeXBlLCBK
U1Rlc3REb21haW5TZWN1cml0eSk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdERv
bWFpblNlY3VyaXR5ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQo
dm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3REb21haW5TZWN1cml0eSk7CiAg
ICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3REb21haW5TZWN1cml0eS5n
ZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVf
V0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFbmFibGVkQnlTZXR0aW5nLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0RW5hYmxlZEJ5U2V0dGluZy5jcHAJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFbmFibGVkQnlTZXR0aW5nLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtOTIsNyArOTIsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6
SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RB
VElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0RW5hYmxlZEJ5U2V0dGluZ1By
b3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAg
ICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBK
U0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAt
NDU5LDkgKzQ1OSw5IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdEVuYWJsZWRCeVNldHRpbmcK
ICAgICAgICAgcmV0dXJuIHNwYWNlOwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29m
X3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0RW5hYmxlZEJ5U2V0dGluZz4gfHwg
IUpTVGVzdEVuYWJsZWRCeVNldHRpbmc6Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0
ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0
RW5hYmxlZEJ5U2V0dGluZz4pCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEVuYWJs
ZWRCeVNldHRpbmcgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2
bS5oZWFwLCAqdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLCBKU1Rlc3RFbmFibGVk
QnlTZXR0aW5nKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0RW5hYmxlZEJ5U2V0
dGluZyA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAs
IHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RFbmFibGVkQnlTZXR0
aW5nKTsKICAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEVuYWJsZWRC
eVNldHRpbmcgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5o
ZWFwLCAqdm0uY2VsbEhlYXBDZWxsVHlwZSwgSlNUZXN0RW5hYmxlZEJ5U2V0dGluZyk7CisgICAg
ICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEVuYWJsZWRCeVNldHRpbmcgPSBtYWtlVW5pcXVl
PElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxU
eXBlKCksIEpTVGVzdEVuYWJsZWRCeVNldHRpbmcpOwogICAgIGF1dG8qIHNwYWNlID0gc3BhY2Vz
Lm1fc3Vic3BhY2VGb3JUZXN0RW5hYmxlZEJ5U2V0dGluZy5nZXQoKTsKIElHTk9SRV9XQVJOSU5H
U19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRv
bG9naWNhbC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RFbmFibGVkRm9yQ29udGV4dC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEVuYWJsZWRGb3JDb250ZXh0
LmNwcAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdEVuYWJsZWRGb3JDb250ZXh0LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NjYsNyArNjYsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNw
YWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VC
U1BBQ0VfU0hBUkFCTEUoSlNUZXN0RW5hYmxlZEZvckNvbnRleHRQcm90b3R5cGUsIEJhc2UpOwot
ICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0u
cGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNy
ZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKQEAgLTE4Niw5ICsxODYsOSBAQCBK
U0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3RFbmFibGVkRm9yQ29udGV4CiAgICAgICAgIHJldHVybiBz
cGFjZTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVj
dGlibGVPYmplY3QsIEpTVGVzdEVuYWJsZWRGb3JDb250ZXh0PiB8fCAhSlNUZXN0RW5hYmxlZEZv
ckNvbnRleHQ6Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19i
YXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0RW5hYmxlZEZvckNvbnRl
eHQ+KQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RFbmFibGVkRm9yQ29udGV4dCA9
IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5k
ZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUsIEpTVGVzdEVuYWJsZWRGb3JDb250ZXh0KTsK
KyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0RW5hYmxlZEZvckNvbnRleHQgPSBtYWtl
VW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVj
dGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0RW5hYmxlZEZvckNvbnRleHQpOwogICAg
IGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0RW5hYmxlZEZvckNvbnRleHQg
PSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0u
Y2VsbEhlYXBDZWxsVHlwZSwgSlNUZXN0RW5hYmxlZEZvckNvbnRleHQpOworICAgICAgICBzcGFj
ZXMubV9zdWJzcGFjZUZvclRlc3RFbmFibGVkRm9yQ29udGV4dCA9IG1ha2VVbmlxdWU8SXNvU3Vi
c3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwg
SlNUZXN0RW5hYmxlZEZvckNvbnRleHQpOwogICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vi
c3BhY2VGb3JUZXN0RW5hYmxlZEZvckNvbnRleHQuZ2V0KCk7CiBJR05PUkVfV0FSTklOR1NfQkVH
SU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2lj
YWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0RXZlbnRDb25zdHJ1Y3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50Q29uc3RydWN0b3IuY3BwCShy
ZXZpc2lvbiAyODYwOTUpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0RXZlbnRDb25zdHJ1Y3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0Nyw3ICsx
NDcsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9y
KEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0Vf
U0hBUkFCTEUoSlNUZXN0RXZlbnRDb25zdHJ1Y3RvclByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAg
IHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9i
amVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3Ry
dWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpT
Qzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAtMzIxLDkgKzMyMSw5IEBAIEpTQzo6SXNv
U3Vic3BhY2UqIEpTVGVzdEV2ZW50Q29uc3RydWN0b3IKICAgICAgICAgcmV0dXJuIHNwYWNlOwog
ICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9i
amVjdCwgSlNUZXN0RXZlbnRDb25zdHJ1Y3Rvcj4gfHwgIUpTVGVzdEV2ZW50Q29uc3RydWN0b3I6
Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8
SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0RXZlbnRDb25zdHJ1Y3Rvcj4pCi0gICAg
ICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEV2ZW50Q29uc3RydWN0b3IgPSBtYWtlVW5pcXVl
PElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uZGVzdHJ1Y3RpYmxl
T2JqZWN0SGVhcENlbGxUeXBlLCBKU1Rlc3RFdmVudENvbnN0cnVjdG9yKTsKKyAgICAgICAgc3Bh
Y2VzLm1fc3Vic3BhY2VGb3JUZXN0RXZlbnRDb25zdHJ1Y3RvciA9IG1ha2VVbmlxdWU8SXNvU3Vi
c3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhl
YXBDZWxsVHlwZSgpLCBKU1Rlc3RFdmVudENvbnN0cnVjdG9yKTsKICAgICBlbHNlCi0gICAgICAg
IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEV2ZW50Q29uc3RydWN0b3IgPSBtYWtlVW5pcXVlPElz
b1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uY2VsbEhlYXBDZWxsVHlw
ZSwgSlNUZXN0RXZlbnRDb25zdHJ1Y3Rvcik7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9y
VGVzdEV2ZW50Q29uc3RydWN0b3IgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BB
Q0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCksIEpTVGVzdEV2ZW50Q29uc3Ry
dWN0b3IpOwogICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0RXZlbnRD
b25zdHJ1Y3Rvci5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29k
ZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudFRhcmdl
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdEV2ZW50VGFyZ2V0LmNwcAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50VGFyZ2V0LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNzMsNyArNzMsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNv
U3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElD
X0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0RXZlbnRUYXJnZXRQcm90b3R5cGUs
IEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJl
dHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1
Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKQEAgLTI2Miw5ICsy
NjIsOSBAQCBKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3RFdmVudFRhcmdldDo6c3ViCiAgICAgICAg
IHJldHVybiBzcGFjZTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6
SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdEV2ZW50VGFyZ2V0PiB8fCAhSlNUZXN0RXZlbnRU
YXJnZXQ6Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNl
X29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0RXZlbnRUYXJnZXQ+KQotICAg
ICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RFdmVudFRhcmdldCA9IG1ha2VVbmlxdWU8SXNv
U3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5kZXN0cnVjdGlibGVPYmpl
Y3RIZWFwQ2VsbFR5cGUsIEpTVGVzdEV2ZW50VGFyZ2V0KTsKKyAgICAgICAgc3BhY2VzLm1fc3Vi
c3BhY2VGb3JUZXN0RXZlbnRUYXJnZXQgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VC
U1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwg
SlNUZXN0RXZlbnRUYXJnZXQpOwogICAgIGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VG
b3JUZXN0RXZlbnRUYXJnZXQgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0Vf
SU5JVCh2bS5oZWFwLCAqdm0uY2VsbEhlYXBDZWxsVHlwZSwgSlNUZXN0RXZlbnRUYXJnZXQpOwor
ICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RFdmVudFRhcmdldCA9IG1ha2VVbmlxdWU8
SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5
cGUoKSwgSlNUZXN0RXZlbnRUYXJnZXQpOwogICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vi
c3BhY2VGb3JUZXN0RXZlbnRUYXJnZXQuZ2V0KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVu
cmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29t
cGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0RXhjZXB0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXhjZXB0aW9uLmNwcAkocmV2aXNpb24gMjg2MDk1KQorKysg
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV4Y2VwdGlvbi5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTY2LDcgKzY2LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBK
U0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAg
IFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdEV4Y2VwdGlvblByb3Rv
dHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAg
ICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6
OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAtMTg3
LDkgKzE4Nyw5IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdEV4Y2VwdGlvbjo6c3Vic3AKICAg
ICAgICAgcmV0dXJuIHNwYWNlOwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8
SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0RXhjZXB0aW9uPiB8fCAhSlNUZXN0RXhj
ZXB0aW9uOjpuZWVkc0Rlc3RydWN0aW9uKTsKICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFz
ZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdEV4Y2VwdGlvbj4pCi0gICAg
ICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEV4Y2VwdGlvbiA9IG1ha2VVbmlxdWU8SXNvU3Vi
c3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5kZXN0cnVjdGlibGVPYmplY3RI
ZWFwQ2VsbFR5cGUsIEpTVGVzdEV4Y2VwdGlvbik7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNl
Rm9yVGVzdEV4Y2VwdGlvbiA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9J
TklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RF
eGNlcHRpb24pOwogICAgIGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0RXhj
ZXB0aW9uID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVh
cCwgKnZtLmNlbGxIZWFwQ2VsbFR5cGUsIEpTVGVzdEV4Y2VwdGlvbik7CisgICAgICAgIHNwYWNl
cy5tX3N1YnNwYWNlRm9yVGVzdEV4Y2VwdGlvbiA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElT
T19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0RXhj
ZXB0aW9uKTsKICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEV4Y2Vw
dGlvbi5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJ
R05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RHZW5lcmF0ZUFkZE9wYXF1
ZVJvb3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RHZW5lcmF0ZUFkZE9wYXF1ZVJvb3QuY3BwCShyZXZpc2lvbiAyODYwOTUp
CisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2VuZXJh
dGVBZGRPcGFxdWVSb290LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjYsNyArNjYsNyBAQCBwdWJs
aWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZt
KQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNU
ZXN0R2VuZXJhdGVBZGRPcGFxdWVSb290UHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJu
ICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3Bh
Y2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUo
SlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1Zh
bHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC0xODcsOSArMTg3LDkgQEAgSlNDOjpJc29TdWJzcGFj
ZSogSlNUZXN0R2VuZXJhdGVBZGRPcGFxdQogICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAgc3Rh
dGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBK
U1Rlc3RHZW5lcmF0ZUFkZE9wYXF1ZVJvb3Q+IHx8ICFKU1Rlc3RHZW5lcmF0ZUFkZE9wYXF1ZVJv
b3Q6Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29m
X3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0R2VuZXJhdGVBZGRPcGFxdWVSb290
PikKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0R2VuZXJhdGVBZGRPcGFxdWVSb290
ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZt
LmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSwgSlNUZXN0R2VuZXJhdGVBZGRPcGFxdWVS
b290KTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0R2VuZXJhdGVBZGRPcGFxdWVS
b290ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwg
dm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCksIEpTVGVzdEdlbmVyYXRlQWRkT3Bh
cXVlUm9vdCk7CiAgICAgZWxzZQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RHZW5l
cmF0ZUFkZE9wYXF1ZVJvb3QgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0Vf
SU5JVCh2bS5oZWFwLCAqdm0uY2VsbEhlYXBDZWxsVHlwZSwgSlNUZXN0R2VuZXJhdGVBZGRPcGFx
dWVSb290KTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0R2VuZXJhdGVBZGRPcGFx
dWVSb290ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVh
cCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RHZW5lcmF0ZUFkZE9wYXF1ZVJvb3QpOwog
ICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0R2VuZXJhdGVBZGRPcGFx
dWVSb290LmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikK
IElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRleDogU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEdlbmVyYXRlSXNSZWFj
aGFibGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlLmNwcAkocmV2aXNpb24gMjg2MDk1KQor
KysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEdlbmVyYXRl
SXNSZWFjaGFibGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02Niw3ICs2Niw3IEBAIHB1YmxpYzoK
ICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAg
ICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3RH
ZW5lcmF0ZUlzUmVhY2hhYmxlUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5w
bGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsK
ICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpW
TSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHBy
b3RvdHlwZSkKICAgICB7CkBAIC0xOTcsOSArMTk3LDkgQEAgSlNDOjpJc29TdWJzcGFjZSogSlNU
ZXN0R2VuZXJhdGVJc1JlYWNoYQogICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fz
c2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RH
ZW5lcmF0ZUlzUmVhY2hhYmxlPiB8fCAhSlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZTo6bmVlZHNE
ZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpT
RGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlPikKLSAgICAgICAg
c3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZSA9IG1ha2VVbmlxdWU8
SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5kZXN0cnVjdGlibGVP
YmplY3RIZWFwQ2VsbFR5cGUsIEpTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGUpOworICAgICAgICBz
cGFjZXMubV9zdWJzcGFjZUZvclRlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlID0gbWFrZVVuaXF1ZTxJ
c29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2Jq
ZWN0SGVhcENlbGxUeXBlKCksIEpTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGUpOwogICAgIGVsc2UK
LSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZSA9IG1h
a2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5jZWxs
SGVhcENlbGxUeXBlLCBKU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlKTsKKyAgICAgICAgc3BhY2Vz
Lm1fc3Vic3BhY2VGb3JUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZSA9IG1ha2VVbmlxdWU8SXNvU3Vi
c3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwg
SlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZSk7CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9z
dWJzcGFjZUZvclRlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlLmdldCgpOwogSUdOT1JFX1dBUk5JTkdT
X0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9s
b2dpY2FsLWNvbXBhcmUiKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdEdsb2JhbE9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RHbG9iYWxPYmplY3QuaAkocmV2aXNpb24g
Mjg2MDk1KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dEdsb2JhbE9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC05OCw3ICs5OCw3IEBAIHB1YmxpYzoK
ICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAg
ICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3RH
bG9iYWxPYmplY3RQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2Jq
ZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0K
ICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwg
SlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBl
KQogICAgIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW5kZXhlZFNldHRlck5vSWRl
bnRpZmllci5jcHAJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNjUsNyArNjUsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNv
U3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElD
X0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0SW5kZXhlZFNldHRlck5vSWRlbnRp
ZmllclByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFj
ZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0
YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAg
ewpAQCAtMjc2LDkgKzI3Niw5IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdEluZGV4ZWRTZXR0
ZXJOb0kKICAgICAgICAgcmV0dXJuIHNwYWNlOwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19i
YXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0SW5kZXhlZFNldHRlck5v
SWRlbnRpZmllcj4gfHwgIUpTVGVzdEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXI6Om5lZWRzRGVz
dHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rl
c3RydWN0aWJsZU9iamVjdCwgSlNUZXN0SW5kZXhlZFNldHRlck5vSWRlbnRpZmllcj4pCi0gICAg
ICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXIgPSBt
YWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uZGVz
dHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLCBKU1Rlc3RJbmRleGVkU2V0dGVyTm9JZGVudGlm
aWVyKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0SW5kZXhlZFNldHRlck5vSWRl
bnRpZmllciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhl
YXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RJbmRleGVkU2V0
dGVyTm9JZGVudGlmaWVyKTsKICAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9y
VGVzdEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXIgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJ
U09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uY2VsbEhlYXBDZWxsVHlwZSwgSlNUZXN0SW5k
ZXhlZFNldHRlck5vSWRlbnRpZmllcik7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVz
dEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXIgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09f
U1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCksIEpTVGVzdEluZGV4
ZWRTZXR0ZXJOb0lkZW50aWZpZXIpOwogICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3Bh
Y2VGb3JUZXN0SW5kZXhlZFNldHRlck5vSWRlbnRpZmllci5nZXQoKTsKIElHTk9SRV9XQVJOSU5H
U19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRv
bG9naWNhbC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24uY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbmRl
eGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24uY3BwCShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW5kZXhlZFNldHRlclRo
cm93aW5nRXhjZXB0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjUsNyArNjUsNyBAQCBwdWJs
aWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZt
KQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNU
ZXN0SW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uUHJvdG90eXBlLCBCYXNlKTsKLSAgICAg
ICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWlu
T2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVT
dHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
SlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC0yNzYsOSArMjc2LDkgQEAgSlNDOjpJ
c29TdWJzcGFjZSogSlNUZXN0SW5kZXhlZFNldHRlclRocgogICAgICAgICByZXR1cm4gc3BhY2U7
CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxl
T2JqZWN0LCBKU1Rlc3RJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24+IHx8ICFKU1Rlc3RJ
bmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb246Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlm
IGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwg
SlNUZXN0SW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uPikKLSAgICAgICAgc3BhY2VzLm1f
c3Vic3BhY2VGb3JUZXN0SW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uID0gbWFrZVVuaXF1
ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmRlc3RydWN0aWJs
ZU9iamVjdEhlYXBDZWxsVHlwZSwgSlNUZXN0SW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9u
KTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0SW5kZXhlZFNldHRlclRocm93aW5n
RXhjZXB0aW9uID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0u
aGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCksIEpTVGVzdEluZGV4ZWRT
ZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbik7CiAgICAgZWxzZQotICAgICAgICBzcGFjZXMubV9zdWJz
cGFjZUZvclRlc3RJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24gPSBtYWtlVW5pcXVlPElz
b1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uY2VsbEhlYXBDZWxsVHlw
ZSwgSlNUZXN0SW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uKTsKKyAgICAgICAgc3BhY2Vz
Lm1fc3Vic3BhY2VGb3JUZXN0SW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uID0gbWFrZVVu
aXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBD
ZWxsVHlwZSgpLCBKU1Rlc3RJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24pOwogICAgIGF1
dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0SW5kZXhlZFNldHRlclRocm93aW5n
RXhjZXB0aW9uLmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2Rl
IikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRleDog
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEluZGV4ZWRTZXR0
ZXJXaXRoSWRlbnRpZmllci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllci5jcHAJ
KHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXIuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC03Myw3ICs3Myw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSog
c3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lT
T19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3RJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXJQcm90
b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAg
ICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KICAgICBzdGF0aWMgSlND
OjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKQEAgLTMw
OCw5ICszMDgsOSBAQCBKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3RJbmRleGVkU2V0dGVyV2l0CiAg
ICAgICAgIHJldHVybiBzcGFjZTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92
PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRp
Zmllcj4gfHwgIUpTVGVzdEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllcjo6bmVlZHNEZXN0cnVj
dGlvbik7CiAgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1
Y3RpYmxlT2JqZWN0LCBKU1Rlc3RJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXI+KQotICAgICAg
ICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXIgPSBt
YWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uZGVz
dHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLCBKU1Rlc3RJbmRleGVkU2V0dGVyV2l0aElkZW50
aWZpZXIpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RJbmRleGVkU2V0dGVyV2l0
aElkZW50aWZpZXIgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2
bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0SW5kZXhl
ZFNldHRlcldpdGhJZGVudGlmaWVyKTsKICAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNw
YWNlRm9yVGVzdEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllciA9IG1ha2VVbmlxdWU8SXNvU3Vi
c3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5jZWxsSGVhcENlbGxUeXBlLCBK
U1Rlc3RJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXIpOworICAgICAgICBzcGFjZXMubV9zdWJz
cGFjZUZvclRlc3RJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXIgPSBtYWtlVW5pcXVlPElzb1N1
YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCks
IEpTVGVzdEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllcik7CiAgICAgYXV0byogc3BhY2UgPSBz
cGFjZXMubV9zdWJzcGFjZUZvclRlc3RJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXIuZ2V0KCk7
CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5J
TkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNl
LmNwcAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE4MSw3ICsx
ODEsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9y
KEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0Vf
U0hBUkFCTEUoSlNUZXN0SW50ZXJmYWNlUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJu
ICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3Bh
Y2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUo
SlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1Zh
bHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC0xMTA0LDkgKzExMDQsOSBAQCBwdWJsaWM6CiAgICAg
ICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAgICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNl
X29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgVGVzdEludGVyZmFjZUl0ZXJhdG9yPiB8
fCAhVGVzdEludGVyZmFjZUl0ZXJhdG9yOjpuZWVkc0Rlc3RydWN0aW9uKTsKICAgICAgICAgaWYg
Y29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBU
ZXN0SW50ZXJmYWNlSXRlcmF0b3I+KQotICAgICAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JU
ZXN0SW50ZXJmYWNlSXRlcmF0b3IgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BB
Q0VfSU5JVCh2bS5oZWFwLCAqdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmdldCgp
LCBUZXN0SW50ZXJmYWNlSXRlcmF0b3IpOworICAgICAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VG
b3JUZXN0SW50ZXJmYWNlSXRlcmF0b3IgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VC
U1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwg
VGVzdEludGVyZmFjZUl0ZXJhdG9yKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgc3BhY2Vz
Lm1fc3Vic3BhY2VGb3JUZXN0SW50ZXJmYWNlSXRlcmF0b3IgPSBtYWtlVW5pcXVlPElzb1N1YnNw
YWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uY2VsbEhlYXBDZWxsVHlwZSwgVGVz
dEludGVyZmFjZUl0ZXJhdG9yKTsKKyAgICAgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVz
dEludGVyZmFjZUl0ZXJhdG9yID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNF
X0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBUZXN0SW50ZXJmYWNlSXRlcmF0
b3IpOwogICAgICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEludGVy
ZmFjZUl0ZXJhdG9yLmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1j
b2RlIikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpAQCAt
MTE5Niw5ICsxMTk2LDkgQEAgSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0SW50ZXJmYWNlOjpzdWJz
cAogICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vf
b2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RJbnRlcmZhY2U+IHx8ICFKU1Rl
c3RJbnRlcmZhY2U6Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjpp
c19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0SW50ZXJmYWNlPikK
LSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0SW50ZXJmYWNlID0gbWFrZVVuaXF1ZTxJ
c29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmRlc3RydWN0aWJsZU9i
amVjdEhlYXBDZWxsVHlwZSwgSlNUZXN0SW50ZXJmYWNlKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vi
c3BhY2VGb3JUZXN0SW50ZXJmYWNlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQ
QUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCksIEpT
VGVzdEludGVyZmFjZSk7CiAgICAgZWxzZQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRl
c3RJbnRlcmZhY2UgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2
bS5oZWFwLCAqdm0uY2VsbEhlYXBDZWxsVHlwZSwgSlNUZXN0SW50ZXJmYWNlKTsKKyAgICAgICAg
c3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0SW50ZXJmYWNlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFj
ZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU1Rl
c3RJbnRlcmZhY2UpOwogICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0
SW50ZXJmYWNlLmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2Rl
IikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRleDog
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZUxl
YWRpbmdVbmRlcnNjb3JlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlTGVhZGluZ1VuZGVyc2NvcmUuY3BwCShy
ZXZpc2lvbiAyODYwOTUpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0SW50ZXJmYWNlTGVhZGluZ1VuZGVyc2NvcmUuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC02Niw3ICs2Niw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vi
c3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19T
VUJTUEFDRV9TSEFSQUJMRShKU1Rlc3RJbnRlcmZhY2VMZWFkaW5nVW5kZXJzY29yZVByb3RvdHlw
ZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAg
cmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0
cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAtMTg3LDkg
KzE4Nyw5IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdEludGVyZmFjZUxlYWRpbmcKICAgICAg
ICAgcmV0dXJuIHNwYWNlOwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlND
OjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0SW50ZXJmYWNlTGVhZGluZ1VuZGVyc2NvcmU+
IHx8ICFKU1Rlc3RJbnRlcmZhY2VMZWFkaW5nVW5kZXJzY29yZTo6bmVlZHNEZXN0cnVjdGlvbik7
CiAgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxl
T2JqZWN0LCBKU1Rlc3RJbnRlcmZhY2VMZWFkaW5nVW5kZXJzY29yZT4pCi0gICAgICAgIHNwYWNl
cy5tX3N1YnNwYWNlRm9yVGVzdEludGVyZmFjZUxlYWRpbmdVbmRlcnNjb3JlID0gbWFrZVVuaXF1
ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmRlc3RydWN0aWJs
ZU9iamVjdEhlYXBDZWxsVHlwZSwgSlNUZXN0SW50ZXJmYWNlTGVhZGluZ1VuZGVyc2NvcmUpOwor
ICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RJbnRlcmZhY2VMZWFkaW5nVW5kZXJzY29y
ZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZt
LmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RJbnRlcmZhY2VMZWFkaW5n
VW5kZXJzY29yZSk7CiAgICAgZWxzZQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RJ
bnRlcmZhY2VMZWFkaW5nVW5kZXJzY29yZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19T
VUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5jZWxsSGVhcENlbGxUeXBlLCBKU1Rlc3RJbnRlcmZh
Y2VMZWFkaW5nVW5kZXJzY29yZSk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdElu
dGVyZmFjZUxlYWRpbmdVbmRlcnNjb3JlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NV
QlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RJbnRlcmZh
Y2VMZWFkaW5nVW5kZXJzY29yZSk7CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFj
ZUZvclRlc3RJbnRlcmZhY2VMZWFkaW5nVW5kZXJzY29yZS5nZXQoKTsKIElHTk9SRV9XQVJOSU5H
U19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRv
bG9naWNhbC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RJdGVyYWJsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEl0ZXJhYmxlLmNwcAkocmV2aXNpb24gMjg2
MDk1KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEl0
ZXJhYmxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzUsNyArNzUsNyBAQCBwdWJsaWM6CiAgICAg
c3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsK
ICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0SXRlcmFi
bGVQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7
CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KICAgICBzdGF0
aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsK
QEAgLTIwMSw5ICsyMDEsOSBAQCBwdWJsaWM6CiAgICAgICAgICAgICByZXR1cm4gc3BhY2U7CiAg
ICAgICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJs
ZU9iamVjdCwgVGVzdEl0ZXJhYmxlSXRlcmF0b3I+IHx8ICFUZXN0SXRlcmFibGVJdGVyYXRvcjo6
bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29m
X3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgVGVzdEl0ZXJhYmxlSXRlcmF0b3I+KQotICAg
ICAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0SXRlcmFibGVJdGVyYXRvciA9IG1ha2VV
bmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5kZXN0cnVj
dGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuZ2V0KCksIFRlc3RJdGVyYWJsZUl0ZXJhdG9yKTsKKyAg
ICAgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEl0ZXJhYmxlSXRlcmF0b3IgPSBtYWtl
VW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVj
dGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwgVGVzdEl0ZXJhYmxlSXRlcmF0b3IpOwogICAgICAg
ICBlbHNlCi0gICAgICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RJdGVyYWJsZUl0ZXJh
dG9yID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwg
KnZtLmNlbGxIZWFwQ2VsbFR5cGUsIFRlc3RJdGVyYWJsZUl0ZXJhdG9yKTsKKyAgICAgICAgICAg
IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEl0ZXJhYmxlSXRlcmF0b3IgPSBtYWtlVW5pcXVlPElz
b1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBl
KCksIFRlc3RJdGVyYWJsZUl0ZXJhdG9yKTsKICAgICAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMu
bV9zdWJzcGFjZUZvclRlc3RJdGVyYWJsZUl0ZXJhdG9yLmdldCgpOwogSUdOT1JFX1dBUk5JTkdT
X0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9s
b2dpY2FsLWNvbXBhcmUiKQpAQCAtMjkzLDkgKzI5Myw5IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpT
VGVzdEl0ZXJhYmxlOjpzdWJzcGEKICAgICAgICAgcmV0dXJuIHNwYWNlOwogICAgIHN0YXRpY19h
c3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0
SXRlcmFibGU+IHx8ICFKU1Rlc3RJdGVyYWJsZTo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgaWYg
Y29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBK
U1Rlc3RJdGVyYWJsZT4pCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEl0ZXJhYmxl
ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZt
LmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSwgSlNUZXN0SXRlcmFibGUpOworICAgICAg
ICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RJdGVyYWJsZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3Bh
Y2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBD
ZWxsVHlwZSgpLCBKU1Rlc3RJdGVyYWJsZSk7CiAgICAgZWxzZQotICAgICAgICBzcGFjZXMubV9z
dWJzcGFjZUZvclRlc3RJdGVyYWJsZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJT
UEFDRV9JTklUKHZtLmhlYXAsICp2bS5jZWxsSGVhcENlbGxUeXBlLCBKU1Rlc3RJdGVyYWJsZSk7
CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEl0ZXJhYmxlID0gbWFrZVVuaXF1ZTxJ
c29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlw
ZSgpLCBKU1Rlc3RJdGVyYWJsZSk7CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFj
ZUZvclRlc3RJdGVyYWJsZS5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFi
bGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RKU0J1
aWx0aW5Db25zdHJ1Y3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yLmNwcAkocmV2aXNp
b24gMjg2MDk1KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjksNyArNjks
NyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpT
Qzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hB
UkFCTEUoSlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3JQcm90b3R5cGUsIEJhc2UpOwotICAgICAg
ICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5P
YmplY3RTcGFjZSgpOwogICAgIH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0
cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBK
U0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKQEAgLTIzMCw5ICsyMzAsOSBAQCBKU0M6Oklz
b1N1YnNwYWNlKiBKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1CiAgICAgICAgIHJldHVybiBzcGFjZTsK
ICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVP
YmplY3QsIEpTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yPiB8fCAhSlNUZXN0SlNCdWlsdGluQ29u
c3RydWN0b3I6Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19i
YXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0SlNCdWlsdGluQ29uc3Ry
dWN0b3I+KQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RKU0J1aWx0aW5Db25zdHJ1
Y3RvciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAs
ICp2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUsIEpTVGVzdEpTQnVpbHRpbkNvbnN0
cnVjdG9yKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0SlNCdWlsdGluQ29uc3Ry
dWN0b3IgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFw
LCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0SlNCdWlsdGluQ29u
c3RydWN0b3IpOwogICAgIGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0SlNC
dWlsdGluQ29uc3RydWN0b3IgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0Vf
SU5JVCh2bS5oZWFwLCAqdm0uY2VsbEhlYXBDZWxsVHlwZSwgSlNUZXN0SlNCdWlsdGluQ29uc3Ry
dWN0b3IpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RKU0J1aWx0aW5Db25zdHJ1
Y3RvciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAs
IHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3IpOwogICAg
IGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0SlNCdWlsdGluQ29uc3RydWN0
b3IuZ2V0KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdO
T1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0
aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uLmNwcAkocmV2aXNpb24gMjg2MDk1KQor
KysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdExlZ2FjeUZh
Y3RvcnlGdW5jdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY3LDcgKzY3LDcgQEAgcHVibGlj
OgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkK
ICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVz
dExlZ2FjeUZhY3RvcnlGdW5jdGlvblByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAm
dm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNl
KCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpT
Qzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1
ZSBwcm90b3R5cGUpCiAgICAgewpAQCAtMjMwLDkgKzIzMCw5IEBAIEpTQzo6SXNvU3Vic3BhY2Uq
IEpTVGVzdExlZ2FjeUZhY3RvcnlGdW4KICAgICAgICAgcmV0dXJuIHNwYWNlOwogICAgIHN0YXRp
Y19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNU
ZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uPiB8fCAhSlNUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9u
OjpuZWVkc0Rlc3RydWN0aW9uKTsKICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92
PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlvbj4p
Ci0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlvbiA9
IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5k
ZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUsIEpTVGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlv
bik7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlv
biA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZt
LmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RMZWdhY3lGYWN0b3J5RnVu
Y3Rpb24pOwogICAgIGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TGVnYWN5
RmFjdG9yeUZ1bmN0aW9uID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lO
SVQodm0uaGVhcCwgKnZtLmNlbGxIZWFwQ2VsbFR5cGUsIEpTVGVzdExlZ2FjeUZhY3RvcnlGdW5j
dGlvbik7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdExlZ2FjeUZhY3RvcnlGdW5j
dGlvbiA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAs
IHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uKTsKICAg
ICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdExlZ2FjeUZhY3RvcnlGdW5j
dGlvbi5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJ
R05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RMZWdhY3lOb0ludGVyZmFj
ZU9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0LmNwcAkocmV2aXNpb24gMjg2
MDk1KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdExl
Z2FjeU5vSW50ZXJmYWNlT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtODUsNyArODUsNyBA
QCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6
Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFC
TEUoSlNUZXN0TGVnYWN5Tm9JbnRlcmZhY2VPYmplY3RQcm90b3R5cGUsIEJhc2UpOwotICAgICAg
ICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5P
YmplY3RTcGFjZSgpOwogICAgIH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0
cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBK
U0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKQEAgLTMzNSw5ICszMzUsOSBAQCBKU0M6Oklz
b1N1YnNwYWNlKiBKU1Rlc3RMZWdhY3lOb0ludGVyZmFjCiAgICAgICAgIHJldHVybiBzcGFjZTsK
ICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVP
YmplY3QsIEpTVGVzdExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0PiB8fCAhSlNUZXN0TGVnYWN5Tm9J
bnRlcmZhY2VPYmplY3Q6Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhwciAoc3Rk
Ojppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0TGVnYWN5Tm9J
bnRlcmZhY2VPYmplY3Q+KQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RMZWdhY3lO
b0ludGVyZmFjZU9iamVjdCA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9J
TklUKHZtLmhlYXAsICp2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUsIEpTVGVzdExl
Z2FjeU5vSW50ZXJmYWNlT2JqZWN0KTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0
TGVnYWN5Tm9JbnRlcmZhY2VPYmplY3QgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VC
U1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwg
SlNUZXN0TGVnYWN5Tm9JbnRlcmZhY2VPYmplY3QpOwogICAgIGVsc2UKLSAgICAgICAgc3BhY2Vz
Lm1fc3Vic3BhY2VGb3JUZXN0TGVnYWN5Tm9JbnRlcmZhY2VPYmplY3QgPSBtYWtlVW5pcXVlPElz
b1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uY2VsbEhlYXBDZWxsVHlw
ZSwgSlNUZXN0TGVnYWN5Tm9JbnRlcmZhY2VPYmplY3QpOworICAgICAgICBzcGFjZXMubV9zdWJz
cGFjZUZvclRlc3RMZWdhY3lOb0ludGVyZmFjZU9iamVjdCA9IG1ha2VVbmlxdWU8SXNvU3Vic3Bh
Y2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNU
ZXN0TGVnYWN5Tm9JbnRlcmZhY2VPYmplY3QpOwogICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1f
c3Vic3BhY2VGb3JUZXN0TGVnYWN5Tm9JbnRlcmZhY2VPYmplY3QuZ2V0KCk7CiBJR05PUkVfV0FS
TklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0
YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdElucy5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdExlZ2FjeU92
ZXJyaWRlQnVpbHRJbnMuY3BwCShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdElucy5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTczLDcgKzczLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6
Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNU
QVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdExlZ2FjeU92ZXJyaWRlQnVp
bHRJbnNQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3Bh
Y2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KICAgICBz
dGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAg
IHsKQEAgLTI0OSw5ICsyNDksOSBAQCBKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3RMZWdhY3lPdmVy
cmlkZUJ1CiAgICAgICAgIHJldHVybiBzcGFjZTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNf
YmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdExlZ2FjeU92ZXJyaWRl
QnVpbHRJbnM+IHx8ICFKU1Rlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zOjpuZWVkc0Rlc3RydWN0
aW9uKTsKICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVj
dGlibGVPYmplY3QsIEpTVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM+KQotICAgICAgICBzcGFj
ZXMubV9zdWJzcGFjZUZvclRlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zID0gbWFrZVVuaXF1ZTxJ
c29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmRlc3RydWN0aWJsZU9i
amVjdEhlYXBDZWxsVHlwZSwgSlNUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdElucyk7CisgICAgICAg
IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMgPSBtYWtlVW5p
cXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGli
bGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdElucyk7CiAg
ICAgZWxzZQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RMZWdhY3lPdmVycmlkZUJ1
aWx0SW5zID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVh
cCwgKnZtLmNlbGxIZWFwQ2VsbFR5cGUsIEpTVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMpOwor
ICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zID0g
bWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2Vs
bEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zKTsKICAgICBhdXRv
KiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMu
Z2V0KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JF
X1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TWFwTGlrZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE1hcExp
a2UuY3BwCShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0TWFwTGlrZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgyLDcgKzgy
LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihK
U0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NI
QVJBQkxFKEpTVGVzdE1hcExpa2VQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZt
LnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgp
OwogICAgIH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6
OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUg
cHJvdG90eXBlKQogICAgIHsKQEAgLTM2Niw5ICszNjYsOSBAQCBKU0M6Oklzb1N1YnNwYWNlKiBK
U1Rlc3RNYXBMaWtlOjpzdWJzcGFjCiAgICAgICAgIHJldHVybiBzcGFjZTsKICAgICBzdGF0aWNf
YXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVz
dE1hcExpa2U+IHx8ICFKU1Rlc3RNYXBMaWtlOjpuZWVkc0Rlc3RydWN0aW9uKTsKICAgICBpZiBj
b25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpT
VGVzdE1hcExpa2U+KQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RNYXBMaWtlID0g
bWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmRl
c3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSwgSlNUZXN0TWFwTGlrZSk7CisgICAgICAgIHNw
YWNlcy5tX3N1YnNwYWNlRm9yVGVzdE1hcExpa2UgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJ
U09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5
cGUoKSwgSlNUZXN0TWFwTGlrZSk7CiAgICAgZWxzZQotICAgICAgICBzcGFjZXMubV9zdWJzcGFj
ZUZvclRlc3RNYXBMaWtlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lO
SVQodm0uaGVhcCwgKnZtLmNlbGxIZWFwQ2VsbFR5cGUsIEpTVGVzdE1hcExpa2UpOworICAgICAg
ICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RNYXBMaWtlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFj
ZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU1Rl
c3RNYXBMaWtlKTsKICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE1h
cExpa2UuZ2V0KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQog
SUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TWFwTGlrZVdpdGhPdmVy
cmlkZGVuT3BlcmF0aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE1hcExpa2VXaXRoT3ZlcnJpZGRlbk9wZXJhdGlvbnMu
Y3BwCShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0TWFwTGlrZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9ucy5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTg2LDcgKzg2LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1
YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19B
U1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdE1hcExpa2VXaXRoT3ZlcnJpZGRlbk9w
ZXJhdGlvbnNQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0
U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KICAg
ICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlND
OjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQog
ICAgIHsKQEAgLTM4MCw5ICszODAsOSBAQCBKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3RNYXBMaWtl
V2l0aE92ZXJyCiAgICAgICAgIHJldHVybiBzcGFjZTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6
aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdE1hcExpa2VXaXRo
T3ZlcnJpZGRlbk9wZXJhdGlvbnM+IHx8ICFKU1Rlc3RNYXBMaWtlV2l0aE92ZXJyaWRkZW5PcGVy
YXRpb25zOjpuZWVkc0Rlc3RydWN0aW9uKTsKICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFz
ZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdE1hcExpa2VXaXRoT3ZlcnJp
ZGRlbk9wZXJhdGlvbnM+KQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RNYXBMaWtl
V2l0aE92ZXJyaWRkZW5PcGVyYXRpb25zID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NV
QlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSwg
SlNUZXN0TWFwTGlrZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9ucyk7CisgICAgICAgIHNwYWNlcy5t
X3N1YnNwYWNlRm9yVGVzdE1hcExpa2VXaXRoT3ZlcnJpZGRlbk9wZXJhdGlvbnMgPSBtYWtlVW5p
cXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGli
bGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0TWFwTGlrZVdpdGhPdmVycmlkZGVuT3BlcmF0
aW9ucyk7CiAgICAgZWxzZQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RNYXBMaWtl
V2l0aE92ZXJyaWRkZW5PcGVyYXRpb25zID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NV
QlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmNlbGxIZWFwQ2VsbFR5cGUsIEpTVGVzdE1hcExpa2VX
aXRoT3ZlcnJpZGRlbk9wZXJhdGlvbnMpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRl
c3RNYXBMaWtlV2l0aE92ZXJyaWRkZW5PcGVyYXRpb25zID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFj
ZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU1Rl
c3RNYXBMaWtlV2l0aE92ZXJyaWRkZW5PcGVyYXRpb25zKTsKICAgICBhdXRvKiBzcGFjZSA9IHNw
YWNlcy5tX3N1YnNwYWNlRm9yVGVzdE1hcExpa2VXaXRoT3ZlcnJpZGRlbk9wZXJhdGlvbnMuZ2V0
KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dB
Uk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyTm9J
ZGVudGlmaWVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyLmNwcAko
cmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlck5vSWRlbnRpZmllci5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTY2LDcgKzY2LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNw
YWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NF
UlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlck5vSWRl
bnRpZmllclByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RT
cGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAg
IHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6
OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAg
ICAgewpAQCAtMzQ0LDkgKzM0NCw5IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdE5hbWVkQW5k
SW5kZXhlZFMKICAgICAgICAgcmV0dXJuIHNwYWNlOwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjpp
c19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0TmFtZWRBbmRJbmRl
eGVkU2V0dGVyTm9JZGVudGlmaWVyPiB8fCAhSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyTm9J
ZGVudGlmaWVyOjpuZWVkc0Rlc3RydWN0aW9uKTsKICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNf
YmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdE5hbWVkQW5kSW5kZXhl
ZFNldHRlck5vSWRlbnRpZmllcj4pCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5h
bWVkQW5kSW5kZXhlZFNldHRlck5vSWRlbnRpZmllciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+
IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2Vs
bFR5cGUsIEpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlck5vSWRlbnRpZmllcik7CisgICAgICAg
IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlck5vSWRlbnRpZmll
ciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZt
LmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3ROYW1lZEFuZEluZGV4ZWRT
ZXR0ZXJOb0lkZW50aWZpZXIpOwogICAgIGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VG
b3JUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyID0gbWFrZVVuaXF1ZTxJc29T
dWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmNlbGxIZWFwQ2VsbFR5cGUs
IEpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlck5vSWRlbnRpZmllcik7CisgICAgICAgIHNwYWNl
cy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlck5vSWRlbnRpZmllciA9IG1h
a2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxI
ZWFwQ2VsbFR5cGUoKSwgSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyKTsK
ICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkQW5kSW5kZXhl
ZFNldHRlck5vSWRlbnRpZmllci5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFj
aGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJl
IikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RO
YW1lZEFuZEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQW5kSW5k
ZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uLmNwcAkocmV2aXNpb24gMjg2MDk1KQorKysgU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQW5kSW5kZXhl
ZFNldHRlclRocm93aW5nRXhjZXB0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjYsNyArNjYs
NyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpT
Qzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hB
UkFCTEUoSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb25Qcm90b3R5
cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAg
IHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KICAgICBzdGF0aWMgSlNDOjpT
dHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKQEAgLTM0NCw5
ICszNDQsOSBAQCBKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTCiAgICAg
ICAgIHJldHVybiBzcGFjZTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpT
Qzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlclRocm93
aW5nRXhjZXB0aW9uPiB8fCAhSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNl
cHRpb246Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNl
X29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0
dGVyVGhyb3dpbmdFeGNlcHRpb24+KQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RO
YW1lZEFuZEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbiA9IG1ha2VVbmlxdWU8SXNvU3Vi
c3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5kZXN0cnVjdGlibGVPYmplY3RI
ZWFwQ2VsbFR5cGUsIEpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9u
KTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVy
VGhyb3dpbmdFeGNlcHRpb24gPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0Vf
SU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0
TmFtZWRBbmRJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24pOwogICAgIGVsc2UKLSAgICAg
ICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyVGhyb3dpbmdF
eGNlcHRpb24gPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5o
ZWFwLCAqdm0uY2VsbEhlYXBDZWxsVHlwZSwgSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyVGhy
b3dpbmdFeGNlcHRpb24pOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZEFu
ZEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbiA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+
IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0
TmFtZWRBbmRJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24pOwogICAgIGF1dG8qIHNwYWNl
ID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyVGhyb3dpbmdF
eGNlcHRpb24uZ2V0KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUi
KQogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRBbmRJbmRl
eGVkU2V0dGVyV2l0aElkZW50aWZpZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJXaXRo
SWRlbnRpZmllci5jcHAJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRp
Zmllci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc1LDcgKzc1LDcgQEAgcHVibGljOgogICAgIHN0
YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAg
ICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdE5hbWVkQW5k
SW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0
dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0
U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1
cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpK
U1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC00MDEsOSArNDAxLDkgQEAgSlNDOjpJc29TdWJz
cGFjZSogSlNUZXN0TmFtZWRBbmRJbmRleGVkUwogICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAg
c3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0
LCBKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllcj4gfHwgIUpTVGVzdE5h
bWVkQW5kSW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyOjpuZWVkc0Rlc3RydWN0aW9uKTsKICAg
ICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmpl
Y3QsIEpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyPikKLSAgICAgICAg
c3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0aElkZW50aWZp
ZXIgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAq
dm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLCBKU1Rlc3ROYW1lZEFuZEluZGV4ZWRT
ZXR0ZXJXaXRoSWRlbnRpZmllcik7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5h
bWVkQW5kSW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFj
ZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENl
bGxUeXBlKCksIEpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyKTsKICAg
ICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkQW5kSW5kZXhlZFNl
dHRlcldpdGhJZGVudGlmaWVyID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNF
X0lOSVQodm0uaGVhcCwgKnZtLmNlbGxIZWFwQ2VsbFR5cGUsIEpTVGVzdE5hbWVkQW5kSW5kZXhl
ZFNldHRlcldpdGhJZGVudGlmaWVyKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0
TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXIgPSBtYWtlVW5pcXVlPElzb1N1YnNw
YWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCksIEpT
VGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyKTsKICAgICBhdXRvKiBzcGFj
ZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlcldpdGhJZGVu
dGlmaWVyLmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikK
IElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRleDogU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlck5v
SWRlbnRpZmllci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlck5vSWRlbnRpZmllci5jcHAJKHJldmlzaW9u
IDI4NjA5NSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3ROYW1lZERlbGV0ZXJOb0lkZW50aWZpZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NSw3ICs2
NSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3Io
SlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9T
SEFSQUJMRShKU1Rlc3ROYW1lZERlbGV0ZXJOb0lkZW50aWZpZXJQcm90b3R5cGUsIEJhc2UpOwot
ICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0u
cGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNy
ZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKQEAgLTI0Niw5ICsyNDYsOSBAQCBK
U0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3ROYW1lZERlbGV0ZXJOb0lkCiAgICAgICAgIHJldHVybiBz
cGFjZTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVj
dGlibGVPYmplY3QsIEpTVGVzdE5hbWVkRGVsZXRlck5vSWRlbnRpZmllcj4gfHwgIUpTVGVzdE5h
bWVkRGVsZXRlck5vSWRlbnRpZmllcjo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3Rl
eHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RO
YW1lZERlbGV0ZXJOb0lkZW50aWZpZXI+KQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRl
c3ROYW1lZERlbGV0ZXJOb0lkZW50aWZpZXIgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09f
U1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBl
LCBKU1Rlc3ROYW1lZERlbGV0ZXJOb0lkZW50aWZpZXIpOworICAgICAgICBzcGFjZXMubV9zdWJz
cGFjZUZvclRlc3ROYW1lZERlbGV0ZXJOb0lkZW50aWZpZXIgPSBtYWtlVW5pcXVlPElzb1N1YnNw
YWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFw
Q2VsbFR5cGUoKSwgSlNUZXN0TmFtZWREZWxldGVyTm9JZGVudGlmaWVyKTsKICAgICBlbHNlCi0g
ICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkRGVsZXRlck5vSWRlbnRpZmllciA9
IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5j
ZWxsSGVhcENlbGxUeXBlLCBKU1Rlc3ROYW1lZERlbGV0ZXJOb0lkZW50aWZpZXIpOworICAgICAg
ICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZERlbGV0ZXJOb0lkZW50aWZpZXIgPSBtYWtl
VW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVh
cENlbGxUeXBlKCksIEpTVGVzdE5hbWVkRGVsZXRlck5vSWRlbnRpZmllcik7CiAgICAgYXV0byog
c3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZERlbGV0ZXJOb0lkZW50aWZpZXIu
Z2V0KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JF
X1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyVGhyb3dpbmdF
eGNlcHRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5jcHAJKHJldmlz
aW9uIDI4NjA5NSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3ROYW1lZERlbGV0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTY1LDcgKzY1LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJz
cGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NV
QlNQQUNFX1NIQVJBQkxFKEpTVGVzdE5hbWVkRGVsZXRlclRocm93aW5nRXhjZXB0aW9uUHJvdG90
eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAg
ICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6
U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC0yNDYs
OSArMjQ2LDkgQEAgSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0TmFtZWREZWxldGVyVGhybwogICAg
ICAgICByZXR1cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxK
U0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3ROYW1lZERlbGV0ZXJUaHJvd2luZ0V4Y2Vw
dGlvbj4gfHwgIUpTVGVzdE5hbWVkRGVsZXRlclRocm93aW5nRXhjZXB0aW9uOjpuZWVkc0Rlc3Ry
dWN0aW9uKTsKICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0
cnVjdGlibGVPYmplY3QsIEpTVGVzdE5hbWVkRGVsZXRlclRocm93aW5nRXhjZXB0aW9uPikKLSAg
ICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWREZWxldGVyVGhyb3dpbmdFeGNlcHRp
b24gPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAq
dm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLCBKU1Rlc3ROYW1lZERlbGV0ZXJUaHJv
d2luZ0V4Y2VwdGlvbik7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkRGVs
ZXRlclRocm93aW5nRXhjZXB0aW9uID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQ
QUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCksIEpT
VGVzdE5hbWVkRGVsZXRlclRocm93aW5nRXhjZXB0aW9uKTsKICAgICBlbHNlCi0gICAgICAgIHNw
YWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkRGVsZXRlclRocm93aW5nRXhjZXB0aW9uID0gbWFr
ZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmNlbGxI
ZWFwQ2VsbFR5cGUsIEpTVGVzdE5hbWVkRGVsZXRlclRocm93aW5nRXhjZXB0aW9uKTsKKyAgICAg
ICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWREZWxldGVyVGhyb3dpbmdFeGNlcHRpb24g
PSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5j
ZWxsSGVhcENlbGxUeXBlKCksIEpTVGVzdE5hbWVkRGVsZXRlclRocm93aW5nRXhjZXB0aW9uKTsK
ICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkRGVsZXRlclRo
cm93aW5nRXhjZXB0aW9uLmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJs
ZS1jb2RlIikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJ
bmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVk
RGVsZXRlcldpdGhJZGVudGlmaWVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyV2l0aElkZW50aWZpZXIu
Y3BwCShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyV2l0aElkZW50aWZpZXIuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC03Miw3ICs3Miw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFj
ZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJU
X0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllclBy
b3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAg
ICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBK
U0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAt
MjcwLDkgKzI3MCw5IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdE5hbWVkRGVsZXRlcldpdGgK
ICAgICAgICAgcmV0dXJuIHNwYWNlOwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29m
X3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0TmFtZWREZWxldGVyV2l0aElkZW50
aWZpZXI+IHx8ICFKU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllcjo6bmVlZHNEZXN0cnVj
dGlvbik7CiAgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1
Y3RpYmxlT2JqZWN0LCBKU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllcj4pCi0gICAgICAg
IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkRGVsZXRlcldpdGhJZGVudGlmaWVyID0gbWFr
ZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmRlc3Ry
dWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSwgSlNUZXN0TmFtZWREZWxldGVyV2l0aElkZW50aWZp
ZXIpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZERlbGV0ZXJXaXRoSWRl
bnRpZmllciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhl
YXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3ROYW1lZERlbGV0
ZXJXaXRoSWRlbnRpZmllcik7CiAgICAgZWxzZQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZv
clRlc3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+
IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5jZWxsSGVhcENlbGxUeXBlLCBKU1Rlc3RO
YW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllcik7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9y
VGVzdE5hbWVkRGVsZXRlcldpdGhJZGVudGlmaWVyID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4g
SVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RO
YW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllcik7CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9z
dWJzcGFjZUZvclRlc3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllci5nZXQoKTsKIElHTk9SRV9X
QVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4o
InRhdXRvbG9naWNhbC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSW5kZXhlZEdldHRlci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dE5hbWVkRGVsZXRlcldpdGhJbmRleGVkR2V0dGVyLmNwcAkocmV2aXNpb24gMjg2MDk1KQorKysg
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRl
cldpdGhJbmRleGVkR2V0dGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjYsNyArNjYsNyBAQCBw
dWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0m
IHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUo
SlNUZXN0TmFtZWREZWxldGVyV2l0aEluZGV4ZWRHZXR0ZXJQcm90b3R5cGUsIEJhc2UpOwotICAg
ICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxh
aW5PYmplY3RTcGFjZSgpOwogICAgIH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0
ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKQEAgLTI2Miw5ICsyNjIsOSBAQCBKU0M6
Oklzb1N1YnNwYWNlKiBKU1Rlc3ROYW1lZERlbGV0ZXJXaXRoCiAgICAgICAgIHJldHVybiBzcGFj
ZTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGli
bGVPYmplY3QsIEpTVGVzdE5hbWVkRGVsZXRlcldpdGhJbmRleGVkR2V0dGVyPiB8fCAhSlNUZXN0
TmFtZWREZWxldGVyV2l0aEluZGV4ZWRHZXR0ZXI6Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlm
IGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwg
SlNUZXN0TmFtZWREZWxldGVyV2l0aEluZGV4ZWRHZXR0ZXI+KQotICAgICAgICBzcGFjZXMubV9z
dWJzcGFjZUZvclRlc3ROYW1lZERlbGV0ZXJXaXRoSW5kZXhlZEdldHRlciA9IG1ha2VVbmlxdWU8
SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5kZXN0cnVjdGlibGVP
YmplY3RIZWFwQ2VsbFR5cGUsIEpTVGVzdE5hbWVkRGVsZXRlcldpdGhJbmRleGVkR2V0dGVyKTsK
KyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWREZWxldGVyV2l0aEluZGV4ZWRH
ZXR0ZXIgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFw
LCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0TmFtZWREZWxldGVy
V2l0aEluZGV4ZWRHZXR0ZXIpOwogICAgIGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VG
b3JUZXN0TmFtZWREZWxldGVyV2l0aEluZGV4ZWRHZXR0ZXIgPSBtYWtlVW5pcXVlPElzb1N1YnNw
YWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uY2VsbEhlYXBDZWxsVHlwZSwgSlNU
ZXN0TmFtZWREZWxldGVyV2l0aEluZGV4ZWRHZXR0ZXIpOworICAgICAgICBzcGFjZXMubV9zdWJz
cGFjZUZvclRlc3ROYW1lZERlbGV0ZXJXaXRoSW5kZXhlZEdldHRlciA9IG1ha2VVbmlxdWU8SXNv
U3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUo
KSwgSlNUZXN0TmFtZWREZWxldGVyV2l0aEluZGV4ZWRHZXR0ZXIpOwogICAgIGF1dG8qIHNwYWNl
ID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWREZWxldGVyV2l0aEluZGV4ZWRHZXR0ZXIu
Z2V0KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JF
X1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRHZXR0ZXJDYWxsV2l0aC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdE5hbWVkR2V0dGVyQ2FsbFdpdGguY3BwCShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRHZXR0ZXJDYWxs
V2l0aC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY1LDcgKzY1LDcgQEAgcHVibGljOgogICAgIHN0
YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAg
ICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdE5hbWVkR2V0
dGVyQ2FsbFdpdGhQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2Jq
ZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0K
ICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwg
SlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBl
KQogICAgIHsKQEAgLTIyMCw5ICsyMjAsOSBAQCBKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3ROYW1l
ZEdldHRlckNhbGxXCiAgICAgICAgIHJldHVybiBzcGFjZTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0
ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdE5hbWVkR2V0
dGVyQ2FsbFdpdGg+IHx8ICFKU1Rlc3ROYW1lZEdldHRlckNhbGxXaXRoOjpuZWVkc0Rlc3RydWN0
aW9uKTsKICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVj
dGlibGVPYmplY3QsIEpTVGVzdE5hbWVkR2V0dGVyQ2FsbFdpdGg+KQotICAgICAgICBzcGFjZXMu
bV9zdWJzcGFjZUZvclRlc3ROYW1lZEdldHRlckNhbGxXaXRoID0gbWFrZVVuaXF1ZTxJc29TdWJz
cGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmRlc3RydWN0aWJsZU9iamVjdEhl
YXBDZWxsVHlwZSwgSlNUZXN0TmFtZWRHZXR0ZXJDYWxsV2l0aCk7CisgICAgICAgIHNwYWNlcy5t
X3N1YnNwYWNlRm9yVGVzdE5hbWVkR2V0dGVyQ2FsbFdpdGggPSBtYWtlVW5pcXVlPElzb1N1YnNw
YWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFw
Q2VsbFR5cGUoKSwgSlNUZXN0TmFtZWRHZXR0ZXJDYWxsV2l0aCk7CiAgICAgZWxzZQotICAgICAg
ICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZEdldHRlckNhbGxXaXRoID0gbWFrZVVuaXF1
ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmNlbGxIZWFwQ2Vs
bFR5cGUsIEpTVGVzdE5hbWVkR2V0dGVyQ2FsbFdpdGgpOworICAgICAgICBzcGFjZXMubV9zdWJz
cGFjZUZvclRlc3ROYW1lZEdldHRlckNhbGxXaXRoID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4g
SVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RO
YW1lZEdldHRlckNhbGxXaXRoKTsKICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNl
Rm9yVGVzdE5hbWVkR2V0dGVyQ2FsbFdpdGguZ2V0KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4o
InVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwt
Y29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0TmFtZWRHZXR0ZXJOb0lkZW50aWZpZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEdldHRlck5vSWRlbnRp
Zmllci5jcHAJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEdldHRlck5vSWRlbnRpZmllci5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTY1LDcgKzY1LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNw
YWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NF
UlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdE5hbWVkR2V0dGVyTm9JZGVudGlmaWVyUHJv
dG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAg
ICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpT
Qzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC0y
MjAsOSArMjIwLDkgQEAgSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0TmFtZWRHZXR0ZXJOb0lkZQog
ICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2Zf
djxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3ROYW1lZEdldHRlck5vSWRlbnRpZmll
cj4gfHwgIUpTVGVzdE5hbWVkR2V0dGVyTm9JZGVudGlmaWVyOjpuZWVkc0Rlc3RydWN0aW9uKTsK
ICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVP
YmplY3QsIEpTVGVzdE5hbWVkR2V0dGVyTm9JZGVudGlmaWVyPikKLSAgICAgICAgc3BhY2VzLm1f
c3Vic3BhY2VGb3JUZXN0TmFtZWRHZXR0ZXJOb0lkZW50aWZpZXIgPSBtYWtlVW5pcXVlPElzb1N1
YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0
SGVhcENlbGxUeXBlLCBKU1Rlc3ROYW1lZEdldHRlck5vSWRlbnRpZmllcik7CisgICAgICAgIHNw
YWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkR2V0dGVyTm9JZGVudGlmaWVyID0gbWFrZVVuaXF1
ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxl
T2JqZWN0SGVhcENlbGxUeXBlKCksIEpTVGVzdE5hbWVkR2V0dGVyTm9JZGVudGlmaWVyKTsKICAg
ICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkR2V0dGVyTm9JZGVu
dGlmaWVyID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVh
cCwgKnZtLmNlbGxIZWFwQ2VsbFR5cGUsIEpTVGVzdE5hbWVkR2V0dGVyTm9JZGVudGlmaWVyKTsK
KyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRHZXR0ZXJOb0lkZW50aWZpZXIg
PSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5j
ZWxsSGVhcENlbGxUeXBlKCksIEpTVGVzdE5hbWVkR2V0dGVyTm9JZGVudGlmaWVyKTsKICAgICBh
dXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkR2V0dGVyTm9JZGVudGlm
aWVyLmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKIElH
Tk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRleDogU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkR2V0dGVyV2l0aElk
ZW50aWZpZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEdldHRlcldpdGhJZGVudGlmaWVyLmNwcAkocmV2aXNpb24g
Mjg2MDk1KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dE5hbWVkR2V0dGVyV2l0aElkZW50aWZpZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03MCw3ICs3
MCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3Io
SlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9T
SEFSQUJMRShKU1Rlc3ROYW1lZEdldHRlcldpdGhJZGVudGlmaWVyUHJvdG90eXBlLCBCYXNlKTsK
LSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZt
LnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBj
cmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC0yNDYsOSArMjQ2LDkgQEAg
SlNDOjpJc29TdWJzcGFjZSogSlNUZXN0TmFtZWRHZXR0ZXJXaXRoSQogICAgICAgICByZXR1cm4g
c3BhY2U7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1
Y3RpYmxlT2JqZWN0LCBKU1Rlc3ROYW1lZEdldHRlcldpdGhJZGVudGlmaWVyPiB8fCAhSlNUZXN0
TmFtZWRHZXR0ZXJXaXRoSWRlbnRpZmllcjo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgaWYgY29u
c3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rl
c3ROYW1lZEdldHRlcldpdGhJZGVudGlmaWVyPikKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VG
b3JUZXN0TmFtZWRHZXR0ZXJXaXRoSWRlbnRpZmllciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+
IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2Vs
bFR5cGUsIEpTVGVzdE5hbWVkR2V0dGVyV2l0aElkZW50aWZpZXIpOworICAgICAgICBzcGFjZXMu
bV9zdWJzcGFjZUZvclRlc3ROYW1lZEdldHRlcldpdGhJZGVudGlmaWVyID0gbWFrZVVuaXF1ZTxJ
c29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2Jq
ZWN0SGVhcENlbGxUeXBlKCksIEpTVGVzdE5hbWVkR2V0dGVyV2l0aElkZW50aWZpZXIpOwogICAg
IGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRHZXR0ZXJXaXRoSWRl
bnRpZmllciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhl
YXAsICp2bS5jZWxsSGVhcENlbGxUeXBlLCBKU1Rlc3ROYW1lZEdldHRlcldpdGhJZGVudGlmaWVy
KTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRHZXR0ZXJXaXRoSWRlbnRp
ZmllciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAs
IHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0TmFtZWRHZXR0ZXJXaXRoSWRlbnRpZmllcik7
CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZEdldHRlcldp
dGhJZGVudGlmaWVyLmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1j
b2RlIikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRl
eDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0
dGVyTm9JZGVudGlmaWVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJOb0lkZW50aWZpZXIuY3BwCShyZXZp
c2lvbiAyODYwOTUpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0TmFtZWRTZXR0ZXJOb0lkZW50aWZpZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NSw3
ICs2NSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VG
b3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFD
RV9TSEFSQUJMRShKU1Rlc3ROYW1lZFNldHRlck5vSWRlbnRpZmllclByb3RvdHlwZSwgQmFzZSk7
Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2
bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSog
Y3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAtMzAwLDkgKzMwMCw5IEBA
IEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdE5hbWVkU2V0dGVyTm9JZGUKICAgICAgICAgcmV0dXJu
IHNwYWNlOwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3Ry
dWN0aWJsZU9iamVjdCwgSlNUZXN0TmFtZWRTZXR0ZXJOb0lkZW50aWZpZXI+IHx8ICFKU1Rlc3RO
YW1lZFNldHRlck5vSWRlbnRpZmllcjo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3Rl
eHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RO
YW1lZFNldHRlck5vSWRlbnRpZmllcj4pCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVz
dE5hbWVkU2V0dGVyTm9JZGVudGlmaWVyID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NV
QlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSwg
SlNUZXN0TmFtZWRTZXR0ZXJOb0lkZW50aWZpZXIpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFj
ZUZvclRlc3ROYW1lZFNldHRlck5vSWRlbnRpZmllciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+
IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxs
VHlwZSgpLCBKU1Rlc3ROYW1lZFNldHRlck5vSWRlbnRpZmllcik7CiAgICAgZWxzZQotICAgICAg
ICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZFNldHRlck5vSWRlbnRpZmllciA9IG1ha2VV
bmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5jZWxsSGVh
cENlbGxUeXBlLCBKU1Rlc3ROYW1lZFNldHRlck5vSWRlbnRpZmllcik7CisgICAgICAgIHNwYWNl
cy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkU2V0dGVyTm9JZGVudGlmaWVyID0gbWFrZVVuaXF1ZTxJ
c29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlw
ZSgpLCBKU1Rlc3ROYW1lZFNldHRlck5vSWRlbnRpZmllcik7CiAgICAgYXV0byogc3BhY2UgPSBz
cGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZFNldHRlck5vSWRlbnRpZmllci5nZXQoKTsKIElH
Tk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1Nf
QkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlclRocm93aW5nRXhjZXB0aW9uLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0TmFtZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5jcHAJKHJldmlzaW9uIDI4NjA5NSkK
KysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNl
dHRlclRocm93aW5nRXhjZXB0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjUsNyArNjUsNyBA
QCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6
Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFC
TEUoSlNUZXN0TmFtZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvblByb3RvdHlwZSwgQmFzZSk7Ci0g
ICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5w
bGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3Jl
YXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAtMzAwLDkgKzMwMCw5IEBAIEpT
Qzo6SXNvU3Vic3BhY2UqIEpTVGVzdE5hbWVkU2V0dGVyVGhyb3cKICAgICAgICAgcmV0dXJuIHNw
YWNlOwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0
aWJsZU9iamVjdCwgSlNUZXN0TmFtZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbj4gfHwgIUpTVGVz
dE5hbWVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb246Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlm
IGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwg
SlNUZXN0TmFtZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbj4pCi0gICAgICAgIHNwYWNlcy5tX3N1
YnNwYWNlRm9yVGVzdE5hbWVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24gPSBtYWtlVW5pcXVlPElz
b1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uZGVzdHJ1Y3RpYmxlT2Jq
ZWN0SGVhcENlbGxUeXBlLCBKU1Rlc3ROYW1lZFNldHRlclRocm93aW5nRXhjZXB0aW9uKTsKKyAg
ICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlv
biA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZt
LmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3ROYW1lZFNldHRlclRocm93
aW5nRXhjZXB0aW9uKTsKICAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVz
dE5hbWVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24gPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJ
U09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uY2VsbEhlYXBDZWxsVHlwZSwgSlNUZXN0TmFt
ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbik7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9y
VGVzdE5hbWVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24gPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNl
PiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCksIEpTVGVz
dE5hbWVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24pOwogICAgIGF1dG8qIHNwYWNlID0gc3BhY2Vz
Lm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5nZXQoKTsKIElH
Tk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1Nf
QkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhJZGVudGlmaWVyLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmllci5jcHAJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldp
dGhJZGVudGlmaWVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzIsNyArNzIsNyBAQCBwdWJsaWM6
CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQog
ICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0
TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmllclByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVy
biAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNw
YWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJl
KEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNW
YWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAtMzMxLDkgKzMzMSw5IEBAIEpTQzo6SXNvU3Vic3Bh
Y2UqIEpTVGVzdE5hbWVkU2V0dGVyV2l0aEkKICAgICAgICAgcmV0dXJuIHNwYWNlOwogICAgIHN0
YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwg
SlNUZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmllcj4gfHwgIUpTVGVzdE5hbWVkU2V0dGVyV2l0
aElkZW50aWZpZXI6Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjpp
c19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0TmFtZWRTZXR0ZXJX
aXRoSWRlbnRpZmllcj4pCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkU2V0
dGVyV2l0aElkZW50aWZpZXIgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0Vf
SU5JVCh2bS5oZWFwLCAqdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLCBKU1Rlc3RO
YW1lZFNldHRlcldpdGhJZGVudGlmaWVyKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JU
ZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmllciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElT
T19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlw
ZSgpLCBKU1Rlc3ROYW1lZFNldHRlcldpdGhJZGVudGlmaWVyKTsKICAgICBlbHNlCi0gICAgICAg
IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkU2V0dGVyV2l0aElkZW50aWZpZXIgPSBtYWtl
VW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uY2VsbEhl
YXBDZWxsVHlwZSwgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmllcik7CisgICAgICAgIHNw
YWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkU2V0dGVyV2l0aElkZW50aWZpZXIgPSBtYWtlVW5p
cXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENl
bGxUeXBlKCksIEpTVGVzdE5hbWVkU2V0dGVyV2l0aElkZW50aWZpZXIpOwogICAgIGF1dG8qIHNw
YWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmllci5n
ZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVf
V0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVk
R2V0dGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlci5jcHAJKHJldmlzaW9u
IDI4NjA5NSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzUs
NyArNzUsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNl
Rm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BB
Q0VfU0hBUkFCTEUoSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlclByb3RvdHlwZSwg
QmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0
dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVj
dHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAtMzc4LDkgKzM3
OCw5IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdE5hbWVkU2V0dGVyV2l0aEkKICAgICAgICAg
cmV0dXJuIHNwYWNlOwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpK
U0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlcj4g
fHwgIUpTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXI6Om5lZWRzRGVzdHJ1Y3Rpb24p
OwogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJs
ZU9iamVjdCwgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlcj4pCi0gICAgICAgIHNw
YWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXIgPSBtYWtl
VW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uZGVzdHJ1
Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLCBKU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0
dGVyKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRTZXR0ZXJXaXRoSW5k
ZXhlZEdldHRlciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZt
LmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3ROYW1lZFNl
dHRlcldpdGhJbmRleGVkR2V0dGVyKTsKICAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNw
YWNlRm9yVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXIgPSBtYWtlVW5pcXVlPElzb1N1
YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uY2VsbEhlYXBDZWxsVHlwZSwg
SlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlcik7CisgICAgICAgIHNwYWNlcy5tX3N1
YnNwYWNlRm9yVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXIgPSBtYWtlVW5pcXVlPElz
b1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBl
KCksIEpTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXIpOwogICAgIGF1dG8qIHNwYWNl
ID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlci5n
ZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVf
V0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVk
R2V0dGVyQW5kU2V0dGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlckFuZFNl
dHRlci5jcHAJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQW5kU2V0dGVy
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzUsNyArNzUsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGlj
IEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAg
ICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0TmFtZWRTZXR0ZXJX
aXRoSW5kZXhlZEdldHRlckFuZFNldHRlclByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVy
biAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNw
YWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJl
KEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNW
YWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAtNDI4LDkgKzQyOCw5IEBAIEpTQzo6SXNvU3Vic3Bh
Y2UqIEpTVGVzdE5hbWVkU2V0dGVyV2l0aEkKICAgICAgICAgcmV0dXJuIHNwYWNlOwogICAgIHN0
YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwg
SlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlckFuZFNldHRlcj4gfHwgIUpTVGVzdE5h
bWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0ZXI6Om5lZWRzRGVzdHJ1Y3Rpb24pOwog
ICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9i
amVjdCwgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlckFuZFNldHRlcj4pCi0gICAg
ICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJB
bmRTZXR0ZXIgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5o
ZWFwLCAqdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLCBKU1Rlc3ROYW1lZFNldHRl
cldpdGhJbmRleGVkR2V0dGVyQW5kU2V0dGVyKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VG
b3JUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlckFuZFNldHRlciA9IG1ha2VVbmlxdWU8
SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9i
amVjdEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQW5k
U2V0dGVyKTsKICAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVk
U2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0ZXIgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNl
PiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uY2VsbEhlYXBDZWxsVHlwZSwgSlNUZXN0
TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlckFuZFNldHRlcik7CisgICAgICAgIHNwYWNlcy5t
X3N1YnNwYWNlRm9yVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0ZXIgPSBt
YWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxs
SGVhcENlbGxUeXBlKCksIEpTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0
ZXIpOwogICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRTZXR0
ZXJXaXRoSW5kZXhlZEdldHRlckFuZFNldHRlci5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJ
TigidW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNh
bC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lPdmVycmlkZUJ1aWx0SW5zLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFt
ZWRTZXR0ZXJXaXRoTGVnYWN5T3ZlcnJpZGVCdWlsdElucy5jcHAJKHJldmlzaW9uIDI4NjA5NSkK
KysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNl
dHRlcldpdGhMZWdhY3lPdmVycmlkZUJ1aWx0SW5zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjUs
NyArNjUsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNl
Rm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BB
Q0VfU0hBUkFCTEUoSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5T3ZlcnJpZGVCdWlsdEluc1By
b3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAg
ICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBK
U0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAt
Mjc3LDkgKzI3Nyw5IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdE5hbWVkU2V0dGVyV2l0aEwK
ICAgICAgICAgcmV0dXJuIHNwYWNlOwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29m
X3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5
T3ZlcnJpZGVCdWlsdElucz4gfHwgIUpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeU92ZXJyaWRl
QnVpbHRJbnM6Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19i
YXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0TmFtZWRTZXR0ZXJXaXRo
TGVnYWN5T3ZlcnJpZGVCdWlsdElucz4pCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVz
dE5hbWVkU2V0dGVyV2l0aExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMgPSBtYWtlVW5pcXVlPElzb1N1
YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0
SGVhcENlbGxUeXBlLCBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lPdmVycmlkZUJ1aWx0SW5z
KTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5
T3ZlcnJpZGVCdWlsdElucyA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9J
TklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RO
YW1lZFNldHRlcldpdGhMZWdhY3lPdmVycmlkZUJ1aWx0SW5zKTsKICAgICBlbHNlCi0gICAgICAg
IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeU92ZXJyaWRlQnVp
bHRJbnMgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFw
LCAqdm0uY2VsbEhlYXBDZWxsVHlwZSwgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5T3ZlcnJp
ZGVCdWlsdElucyk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkU2V0dGVy
V2l0aExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09f
U1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCksIEpTVGVzdE5hbWVk
U2V0dGVyV2l0aExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMpOwogICAgIGF1dG8qIHNwYWNlID0gc3Bh
Y2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5T3ZlcnJpZGVCdWlsdElu
cy5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJR05P
UkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdh
Y3lVbmZvcmdlYWJsZVByb3BlcnRpZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZv
cmdlYWJsZVByb3BlcnRpZXMuY3BwCShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5m
b3JnZWFibGVQcm9wZXJ0aWVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzQsNyArNzQsNyBAQCBw
dWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0m
IHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUo
SlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzUHJvdG90eXBl
LCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICBy
ZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3Ry
dWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC0zNjEsOSAr
MzYxLDkgQEAgSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTAogICAgICAg
ICByZXR1cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6
OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdl
YWJsZVByb3BlcnRpZXM+IHx8ICFKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJs
ZVByb3BlcnRpZXM6Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjpp
c19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0TmFtZWRTZXR0ZXJX
aXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzPikKLSAgICAgICAgc3BhY2VzLm1fc3Vic3Bh
Y2VGb3JUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzID0gbWFr
ZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmRlc3Ry
dWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSwgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5m
b3JnZWFibGVQcm9wZXJ0aWVzKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFt
ZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzID0gbWFrZVVuaXF1ZTxJc29T
dWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0
SGVhcENlbGxUeXBlKCksIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJv
cGVydGllcyk7CiAgICAgZWxzZQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1l
ZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXMgPSBtYWtlVW5pcXVlPElzb1N1
YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uY2VsbEhlYXBDZWxsVHlwZSwg
SlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzKTsKKyAgICAg
ICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFi
bGVQcm9wZXJ0aWVzID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQo
dm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdh
Y3lVbmZvcmdlYWJsZVByb3BlcnRpZXMpOwogICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vi
c3BhY2VGb3JUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzLmdl
dCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKIElHTk9SRV9X
QVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRleDogU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVu
Zm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1l
ZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1
aWx0SW5zLmNwcAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJv
cGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03
NCw3ICs3NCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3Bh
Y2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJT
UEFDRV9TSEFSQUJMRShKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3Bl
cnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAg
cmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2Jq
ZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1
Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlND
OjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC0zMzgsOSArMzM4LDkgQEAgSlNDOjpJc29T
dWJzcGFjZSogSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTAogICAgICAgICByZXR1cm4gc3BhY2U7CiAg
ICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2Jq
ZWN0LCBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRM
ZWdhY3lPdmVycmlkZUJ1aWx0SW5zPiB8fCAhSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5m
b3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdEluczo6bmVlZHNEZXN0cnVj
dGlvbik7CiAgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1
Y3RpYmxlT2JqZWN0LCBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3Bl
cnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zPikKLSAgICAgICAgc3BhY2VzLm1fc3Vic3Bh
Y2VGb3JUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVn
YWN5T3ZlcnJpZGVCdWlsdElucyA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFD
RV9JTklUKHZtLmhlYXAsICp2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUsIEpTVGVz
dE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJy
aWRlQnVpbHRJbnMpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZFNldHRl
cldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5z
ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0u
ZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCksIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExl
Z2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMpOwogICAg
IGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRTZXR0ZXJXaXRoTGVn
YWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdElucyA9IG1ha2VV
bmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5jZWxsSGVh
cENlbGxUeXBlLCBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRp
ZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VG
b3JUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5
T3ZlcnJpZGVCdWlsdElucyA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9J
TklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0TmFtZWRTZXR0ZXJXaXRo
TGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdElucyk7CiAg
ICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZFNldHRlcldpdGhM
ZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zLmdldCgp
OwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKIElHTk9SRV9XQVJO
SU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRleDogU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVzcGFjZU9iamVjdC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5h
bWVzcGFjZU9iamVjdC5jcHAJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lc3BhY2VPYmplY3QuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yODAsOSArMjgwLDkgQEAgSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0TmFtZXNw
YWNlT2JqZWN0OgogICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6
OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3ROYW1lc3BhY2VP
YmplY3Q+IHx8ICFKU1Rlc3ROYW1lc3BhY2VPYmplY3Q6Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAg
IGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVj
dCwgSlNUZXN0TmFtZXNwYWNlT2JqZWN0PikKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JU
ZXN0TmFtZXNwYWNlT2JqZWN0ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNF
X0lOSVQodm0uaGVhcCwgKnZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSwgSlNUZXN0
TmFtZXNwYWNlT2JqZWN0KTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZXNw
YWNlT2JqZWN0ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0u
aGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCksIEpTVGVzdE5hbWVzcGFj
ZU9iamVjdCk7CiAgICAgZWxzZQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1l
c3BhY2VPYmplY3QgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2
bS5oZWFwLCAqdm0uY2VsbEhlYXBDZWxsVHlwZSwgSlNUZXN0TmFtZXNwYWNlT2JqZWN0KTsKKyAg
ICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZXNwYWNlT2JqZWN0ID0gbWFrZVVuaXF1
ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxs
VHlwZSgpLCBKU1Rlc3ROYW1lc3BhY2VPYmplY3QpOwogICAgIGF1dG8qIHNwYWNlID0gc3BhY2Vz
Lm1fc3Vic3BhY2VGb3JUZXN0TmFtZXNwYWNlT2JqZWN0LmdldCgpOwogSUdOT1JFX1dBUk5JTkdT
X0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9s
b2dpY2FsLWNvbXBhcmUiKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdE5vZGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROb2RlLmNwcAkocmV2aXNpb24gMjg2MDk1KQorKysg
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5vZGUuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC05NSw3ICs5NSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJ
c29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFU
SUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3ROb2RlUHJvdG90eXBlLCBCYXNl
KTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4g
JnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJl
KiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC00MDUsOSArNDA1LDkg
QEAgcHVibGljOgogICAgICAgICAgICAgcmV0dXJuIHNwYWNlOwogICAgICAgICBzdGF0aWNfYXNz
ZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIFRlc3ROb2Rl
SXRlcmF0b3I+IHx8ICFUZXN0Tm9kZUl0ZXJhdG9yOjpuZWVkc0Rlc3RydWN0aW9uKTsKICAgICAg
ICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2Jq
ZWN0LCBUZXN0Tm9kZUl0ZXJhdG9yPikKLSAgICAgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9y
VGVzdE5vZGVJdGVyYXRvciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9J
TklUKHZtLmhlYXAsICp2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuZ2V0KCksIFRl
c3ROb2RlSXRlcmF0b3IpOworICAgICAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0Tm9k
ZUl0ZXJhdG9yID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0u
aGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCksIFRlc3ROb2RlSXRlcmF0
b3IpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RO
b2RlSXRlcmF0b3IgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2
bS5oZWFwLCAqdm0uY2VsbEhlYXBDZWxsVHlwZSwgVGVzdE5vZGVJdGVyYXRvcik7CisgICAgICAg
ICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROb2RlSXRlcmF0b3IgPSBtYWtlVW5pcXVlPElz
b1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBl
KCksIFRlc3ROb2RlSXRlcmF0b3IpOwogICAgICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1
YnNwYWNlRm9yVGVzdE5vZGVJdGVyYXRvci5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigi
dW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1j
b21wYXJlIikKQEAgLTQ5Nyw5ICs0OTcsOSBAQCBKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3ROb2Rl
OjpzdWJzcGFjZUZvCiAgICAgICAgIHJldHVybiBzcGFjZTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0
ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdE5vZGU+IHx8
ICFKU1Rlc3ROb2RlOjpuZWVkc0Rlc3RydWN0aW9uKTsKICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6
aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdE5vZGU+KQotICAg
ICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROb2RlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFj
ZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBD
ZWxsVHlwZSwgSlNUZXN0Tm9kZSk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5v
ZGUgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2
bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0Tm9kZSk7CiAgICAgZWxz
ZQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROb2RlID0gbWFrZVVuaXF1ZTxJc29T
dWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmNlbGxIZWFwQ2VsbFR5cGUs
IEpTVGVzdE5vZGUpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROb2RlID0gbWFr
ZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhl
YXBDZWxsVHlwZSgpLCBKU1Rlc3ROb2RlKTsKICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1
YnNwYWNlRm9yVGVzdE5vZGUuZ2V0KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hh
YmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIp
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2Jq
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0T2JqLmNwcAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE4
NjYsNyArMTg2Niw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vi
c3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19T
VUJTUEFDRV9TSEFSQUJMRShKU1Rlc3RPYmpQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1
cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RT
cGFjZSgpOwogICAgIH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVy
ZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpT
VmFsdWUgcHJvdG90eXBlKQogICAgIHsKQEAgLTkwMDYsOSArOTAwNiw5IEBAIEpTQzo6SXNvU3Vi
c3BhY2UqIEpTVGVzdE9iajo6c3Vic3BhY2VGb3IKICAgICAgICAgcmV0dXJuIHNwYWNlOwogICAg
IHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVj
dCwgSlNUZXN0T2JqPiB8fCAhSlNUZXN0T2JqOjpuZWVkc0Rlc3RydWN0aW9uKTsKICAgICBpZiBj
b25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpT
VGVzdE9iaj4pCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE9iaiA9IG1ha2VVbmlx
dWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5kZXN0cnVjdGli
bGVPYmplY3RIZWFwQ2VsbFR5cGUsIEpTVGVzdE9iaik7CisgICAgICAgIHNwYWNlcy5tX3N1YnNw
YWNlRm9yVGVzdE9iaiA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklU
KHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RPYmop
OwogICAgIGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0T2JqID0gbWFrZVVu
aXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmNlbGxIZWFw
Q2VsbFR5cGUsIEpTVGVzdE9iaik7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE9i
aiA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZt
LmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0T2JqKTsKICAgICBhdXRvKiBzcGFjZSA9IHNwYWNl
cy5tX3N1YnNwYWNlRm9yVGVzdE9iai5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5y
ZWFjaGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21w
YXJlIikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RPcGVyYXRpb25Db25kaXRpb25hbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9wZXJhdGlvbkNvbmRpdGlvbmFsLmNwcAko
cmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdE9wZXJhdGlvbkNvbmRpdGlvbmFsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODEs
NyArODEsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNl
Rm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BB
Q0VfU0hBUkFCTEUoSlNUZXN0T3BlcmF0aW9uQ29uZGl0aW9uYWxQcm90b3R5cGUsIEJhc2UpOwot
ICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0u
cGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNy
ZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKQEAgLTIzNCw5ICsyMzQsOSBAQCBK
U0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3RPcGVyYXRpb25Db25kaXRpCiAgICAgICAgIHJldHVybiBz
cGFjZTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVj
dGlibGVPYmplY3QsIEpTVGVzdE9wZXJhdGlvbkNvbmRpdGlvbmFsPiB8fCAhSlNUZXN0T3BlcmF0
aW9uQ29uZGl0aW9uYWw6Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhwciAoc3Rk
Ojppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0T3BlcmF0aW9u
Q29uZGl0aW9uYWw+KQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RPcGVyYXRpb25D
b25kaXRpb25hbCA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZt
LmhlYXAsICp2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUsIEpTVGVzdE9wZXJhdGlv
bkNvbmRpdGlvbmFsKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0T3BlcmF0aW9u
Q29uZGl0aW9uYWwgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2
bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0T3BlcmF0
aW9uQ29uZGl0aW9uYWwpOwogICAgIGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JU
ZXN0T3BlcmF0aW9uQ29uZGl0aW9uYWwgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VC
U1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uY2VsbEhlYXBDZWxsVHlwZSwgSlNUZXN0T3BlcmF0aW9u
Q29uZGl0aW9uYWwpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RPcGVyYXRpb25D
b25kaXRpb25hbCA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZt
LmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0T3BlcmF0aW9uQ29uZGl0aW9uYWwp
OwogICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0T3BlcmF0aW9uQ29u
ZGl0aW9uYWwuZ2V0KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUi
KQogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcmxvYWRlZENv
bnN0cnVjdG9ycy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuY3BwCShyZXZpc2lvbiAy
ODYwOTUpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY5LDcgKzY5LDcg
QEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6
OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJB
QkxFKEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNQcm90b3R5cGUsIEJhc2UpOwotICAgICAg
ICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5P
YmplY3RTcGFjZSgpOwogICAgIH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0
cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBK
U0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKQEAgLTI5NSw5ICsyOTUsOSBAQCBKU0M6Oklz
b1N1YnNwYWNlKiBKU1Rlc3RPdmVybG9hZGVkQ29uc3RyCiAgICAgICAgIHJldHVybiBzcGFjZTsK
ICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVP
YmplY3QsIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM+IHx8ICFKU1Rlc3RPdmVybG9hZGVk
Q29uc3RydWN0b3JzOjpuZWVkc0Rlc3RydWN0aW9uKTsKICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6
aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdE92ZXJsb2FkZWRD
b25zdHJ1Y3RvcnM+KQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RPdmVybG9hZGVk
Q29uc3RydWN0b3JzID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQo
dm0uaGVhcCwgKnZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSwgSlNUZXN0T3Zlcmxv
YWRlZENvbnN0cnVjdG9ycyk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE92ZXJs
b2FkZWRDb25zdHJ1Y3RvcnMgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0Vf
SU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0
T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyk7CiAgICAgZWxzZQotICAgICAgICBzcGFjZXMubV9zdWJz
cGFjZUZvclRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFj
ZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmNlbGxIZWFwQ2VsbFR5cGUsIEpTVGVz
dE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRl
c3RPdmVybG9hZGVkQ29uc3RydWN0b3JzID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NV
QlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RPdmVybG9h
ZGVkQ29uc3RydWN0b3JzKTsKICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9y
VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuZ2V0KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4o
InVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwt
Y29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5jZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJsb2Fk
ZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2UuY3BwCShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcmxvYWRlZENvbnN0
cnVjdG9yc1dpdGhTZXF1ZW5jZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY4LDcgKzY4LDcgQEAg
cHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZN
JiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxF
KEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2VQcm90b3R5cGUsIEJhc2Up
OwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAm
dm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUq
IGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKQEAgLTIzOCw5ICsyMzgsOSBA
QCBKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3RPdmVybG9hZGVkQ29uc3RyCiAgICAgICAgIHJldHVy
biBzcGFjZTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0
cnVjdGlibGVPYmplY3QsIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2U+
IHx8ICFKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzV2l0aFNlcXVlbmNlOjpuZWVkc0Rlc3Ry
dWN0aW9uKTsKICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0
cnVjdGlibGVPYmplY3QsIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2U+
KQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3Jz
V2l0aFNlcXVlbmNlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQo
dm0uaGVhcCwgKnZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSwgSlNUZXN0T3Zlcmxv
YWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5jZSk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNl
Rm9yVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2UgPSBtYWtlVW5pcXVlPElz
b1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmpl
Y3RIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5j
ZSk7CiAgICAgZWxzZQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RPdmVybG9hZGVk
Q29uc3RydWN0b3JzV2l0aFNlcXVlbmNlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NV
QlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmNlbGxIZWFwQ2VsbFR5cGUsIEpTVGVzdE92ZXJsb2Fk
ZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2UpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZv
clRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzV2l0aFNlcXVlbmNlID0gbWFrZVVuaXF1ZTxJc29T
dWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgp
LCBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzV2l0aFNlcXVlbmNlKTsKICAgICBhdXRvKiBz
cGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRo
U2VxdWVuY2UuZ2V0KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUi
KQogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0UGx1Z2luSW50ZXJm
YWNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0UGx1Z2luSW50ZXJmYWNlLmNwcAkocmV2aXNpb24gMjg2MDk1KQorKysgU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFBsdWdpbkludGVyZmFj
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY0LDcgKzY0LDcgQEAgcHVibGljOgogICAgIHN0YXRp
YyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAg
ICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdFBsdWdpbkludGVy
ZmFjZVByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFj
ZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0
YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAg
ewpAQCAtMjQ0LDkgKzI0NCw5IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdFBsdWdpbkludGVy
ZmFjZToKICAgICAgICAgcmV0dXJuIHNwYWNlOwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19i
YXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0UGx1Z2luSW50ZXJmYWNl
PiB8fCAhSlNUZXN0UGx1Z2luSW50ZXJmYWNlOjpuZWVkc0Rlc3RydWN0aW9uKTsKICAgICBpZiBj
b25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpT
VGVzdFBsdWdpbkludGVyZmFjZT4pCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFBs
dWdpbkludGVyZmFjZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklU
KHZtLmhlYXAsICp2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUsIEpTVGVzdFBsdWdp
bkludGVyZmFjZSk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFBsdWdpbkludGVy
ZmFjZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAs
IHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RQbHVnaW5JbnRlcmZh
Y2UpOwogICAgIGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0UGx1Z2luSW50
ZXJmYWNlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVh
cCwgKnZtLmNlbGxIZWFwQ2VsbFR5cGUsIEpTVGVzdFBsdWdpbkludGVyZmFjZSk7CisgICAgICAg
IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFBsdWdpbkludGVyZmFjZSA9IG1ha2VVbmlxdWU8SXNv
U3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUo
KSwgSlNUZXN0UGx1Z2luSW50ZXJmYWNlKTsKICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1
YnNwYWNlRm9yVGVzdFBsdWdpbkludGVyZmFjZS5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJ
TigidW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNh
bC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZl
bnQuY3BwCShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTQ4LDcgKzE0OCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFj
ZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJU
X0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnRQcm90b3R5
cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAg
IHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KICAgICBzdGF0aWMgSlNDOjpT
dHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKQEAgLTMwMSw5
ICszMDEsOSBAQCBKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3RQcm9taXNlUmVqZWN0aW9uCiAgICAg
ICAgIHJldHVybiBzcGFjZTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpT
Qzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudD4gfHwg
IUpTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudDo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgaWYg
Y29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBK
U1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQ+KQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZv
clRlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09f
U1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBl
LCBKU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFj
ZUZvclRlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJ
U09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5
cGUoKSwgSlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50KTsKICAgICBlbHNlCi0gICAgICAgIHNw
YWNlcy5tX3N1YnNwYWNlRm9yVGVzdFByb21pc2VSZWplY3Rpb25FdmVudCA9IG1ha2VVbmlxdWU8
SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5jZWxsSGVhcENlbGxU
eXBlLCBKU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQpOworICAgICAgICBzcGFjZXMubV9zdWJz
cGFjZUZvclRlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNl
PiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCksIEpTVGVz
dFByb21pc2VSZWplY3Rpb25FdmVudCk7CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJz
cGFjZUZvclRlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQuZ2V0KCk7CiBJR05PUkVfV0FSTklOR1Nf
QkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xv
Z2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0UmVhZE9ubHlNYXBMaWtlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0UmVhZE9ubHlNYXBMaWtlLmNwcAko
cmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdFJlYWRPbmx5TWFwTGlrZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc5LDcgKzc5
LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihK
U0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NI
QVJBQkxFKEpTVGVzdFJlYWRPbmx5TWFwTGlrZVByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJl
dHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVj
dFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0
dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6
SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAtMzA1LDkgKzMwNSw5IEBAIEpTQzo6SXNvU3Vi
c3BhY2UqIEpTVGVzdFJlYWRPbmx5TWFwTGlrZToKICAgICAgICAgcmV0dXJuIHNwYWNlOwogICAg
IHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVj
dCwgSlNUZXN0UmVhZE9ubHlNYXBMaWtlPiB8fCAhSlNUZXN0UmVhZE9ubHlNYXBMaWtlOjpuZWVk
c0Rlc3RydWN0aW9uKTsKICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6
SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdFJlYWRPbmx5TWFwTGlrZT4pCi0gICAgICAgIHNw
YWNlcy5tX3N1YnNwYWNlRm9yVGVzdFJlYWRPbmx5TWFwTGlrZSA9IG1ha2VVbmlxdWU8SXNvU3Vi
c3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5kZXN0cnVjdGlibGVPYmplY3RI
ZWFwQ2VsbFR5cGUsIEpTVGVzdFJlYWRPbmx5TWFwTGlrZSk7CisgICAgICAgIHNwYWNlcy5tX3N1
YnNwYWNlRm9yVGVzdFJlYWRPbmx5TWFwTGlrZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElT
T19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlw
ZSgpLCBKU1Rlc3RSZWFkT25seU1hcExpa2UpOwogICAgIGVsc2UKLSAgICAgICAgc3BhY2VzLm1f
c3Vic3BhY2VGb3JUZXN0UmVhZE9ubHlNYXBMaWtlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4g
SVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmNlbGxIZWFwQ2VsbFR5cGUsIEpTVGVzdFJl
YWRPbmx5TWFwTGlrZSk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFJlYWRPbmx5
TWFwTGlrZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhl
YXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0UmVhZE9ubHlNYXBMaWtlKTsKICAgICBh
dXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFJlYWRPbmx5TWFwTGlrZS5nZXQo
KTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVfV0FS
TklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RSZWFkT25seVNldExpa2UuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RS
ZWFkT25seVNldExpa2UuY3BwCShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0UmVhZE9ubHlTZXRMaWtlLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNzgsNyArNzgsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vi
c3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FT
U0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0UmVhZE9ubHlTZXRMaWtlUHJvdG90eXBl
LCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICBy
ZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3Ry
dWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC0yODQsOSAr
Mjg0LDkgQEAgSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0UmVhZE9ubHlTZXRMaWtlOgogICAgICAg
ICByZXR1cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6
OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RSZWFkT25seVNldExpa2U+IHx8ICFKU1Rlc3RS
ZWFkT25seVNldExpa2U6Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhwciAoc3Rk
Ojppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0UmVhZE9ubHlT
ZXRMaWtlPikKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0UmVhZE9ubHlTZXRMaWtl
ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZt
LmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSwgSlNUZXN0UmVhZE9ubHlTZXRMaWtlKTsK
KyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0UmVhZE9ubHlTZXRMaWtlID0gbWFrZVVu
aXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3Rp
YmxlT2JqZWN0SGVhcENlbGxUeXBlKCksIEpTVGVzdFJlYWRPbmx5U2V0TGlrZSk7CiAgICAgZWxz
ZQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RSZWFkT25seVNldExpa2UgPSBtYWtl
VW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uY2VsbEhl
YXBDZWxsVHlwZSwgSlNUZXN0UmVhZE9ubHlTZXRMaWtlKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vi
c3BhY2VGb3JUZXN0UmVhZE9ubHlTZXRMaWtlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNP
X1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RSZWFk
T25seVNldExpa2UpOwogICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0
UmVhZE9ubHlTZXRMaWtlLmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJs
ZS1jb2RlIikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJ
bmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFJlcG9y
dEV4dHJhTWVtb3J5Q29zdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFJlcG9ydEV4dHJhTWVtb3J5Q29zdC5jcHAJKHJldmlz
aW9uIDI4NjA5NSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RSZXBvcnRFeHRyYU1lbW9yeUNvc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02Myw3ICs2
Myw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3Io
SlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9T
SEFSQUJMRShKU1Rlc3RSZXBvcnRFeHRyYU1lbW9yeUNvc3RQcm90b3R5cGUsIEJhc2UpOwotICAg
ICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxh
aW5PYmplY3RTcGFjZSgpOwogICAgIH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0
ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKQEAgLTE3MSw5ICsxNzEsOSBAQCBKU0M6
Oklzb1N1YnNwYWNlKiBKU1Rlc3RSZXBvcnRFeHRyYU1lbW9yCiAgICAgICAgIHJldHVybiBzcGFj
ZTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGli
bGVPYmplY3QsIEpTVGVzdFJlcG9ydEV4dHJhTWVtb3J5Q29zdD4gfHwgIUpTVGVzdFJlcG9ydEV4
dHJhTWVtb3J5Q29zdDo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3RleHByIChzdGQ6
OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RSZXBvcnRFeHRy
YU1lbW9yeUNvc3Q+KQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RSZXBvcnRFeHRy
YU1lbW9yeUNvc3QgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2
bS5oZWFwLCAqdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLCBKU1Rlc3RSZXBvcnRF
eHRyYU1lbW9yeUNvc3QpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RSZXBvcnRF
eHRyYU1lbW9yeUNvc3QgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5J
VCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0UmVw
b3J0RXh0cmFNZW1vcnlDb3N0KTsKICAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNl
Rm9yVGVzdFJlcG9ydEV4dHJhTWVtb3J5Q29zdCA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElT
T19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5jZWxsSGVhcENlbGxUeXBlLCBKU1Rlc3RSZXBv
cnRFeHRyYU1lbW9yeUNvc3QpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RSZXBv
cnRFeHRyYU1lbW9yeUNvc3QgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0Vf
SU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCksIEpTVGVzdFJlcG9ydEV4dHJhTWVt
b3J5Q29zdCk7CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RSZXBv
cnRFeHRyYU1lbW9yeUNvc3QuZ2V0KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hh
YmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIp
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2Vy
aWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVl
SW50ZXJmYWNlLmNwcAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTg5LDcgKzg5LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBK
U0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAg
IFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZUludGVyZmFjZVByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxh
aW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAg
ICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0m
IHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90
b3R5cGUpCiAgICAgewpAQCAtMzQ5LDkgKzM0OSw5IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVz
dFNlcmlhbGl6ZWRTY3JpcHQKICAgICAgICAgcmV0dXJuIHNwYWNlOwogICAgIHN0YXRpY19hc3Nl
cnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0U2Vy
aWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlPiB8fCAhSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZh
bHVlSW50ZXJmYWNlOjpuZWVkc0Rlc3RydWN0aW9uKTsKICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6
aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZUludGVyZmFjZT4pCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElT
T19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5
cGUsIEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSk7CisgICAgICAgIHNwYWNl
cy5tX3N1YnNwYWNlRm9yVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSA9IG1ha2VV
bmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0
aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRl
cmZhY2UpOwogICAgIGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0U2VyaWFs
aXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NV
QlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmNlbGxIZWFwQ2VsbFR5cGUsIEpTVGVzdFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVz
dFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+
IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0
U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlKTsKICAgICBhdXRvKiBzcGFjZSA9IHNwYWNl
cy5tX3N1YnNwYWNlRm9yVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5nZXQoKTsK
IElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklO
R1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXRMaWtlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2V0TGlrZS5jcHAJ
KHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RTZXRMaWtlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODEsNyArODEsNyBAQCBw
dWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0m
IHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUo
SlNUZXN0U2V0TGlrZVByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5P
YmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAg
fQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZt
LCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5
cGUpCiAgICAgewpAQCAtMzQyLDkgKzM0Miw5IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdFNl
dExpa2U6OnN1YnNwYWMKICAgICAgICAgcmV0dXJuIHNwYWNlOwogICAgIHN0YXRpY19hc3NlcnQo
c3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0U2V0TGlr
ZT4gfHwgIUpTVGVzdFNldExpa2U6Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhw
ciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0U2V0
TGlrZT4pCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFNldExpa2UgPSBtYWtlVW5p
cXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uZGVzdHJ1Y3Rp
YmxlT2JqZWN0SGVhcENlbGxUeXBlLCBKU1Rlc3RTZXRMaWtlKTsKKyAgICAgICAgc3BhY2VzLm1f
c3Vic3BhY2VGb3JUZXN0U2V0TGlrZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJT
UEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBK
U1Rlc3RTZXRMaWtlKTsKICAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVz
dFNldExpa2UgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5o
ZWFwLCAqdm0uY2VsbEhlYXBDZWxsVHlwZSwgSlNUZXN0U2V0TGlrZSk7CisgICAgICAgIHNwYWNl
cy5tX3N1YnNwYWNlRm9yVGVzdFNldExpa2UgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09f
U1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCksIEpTVGVzdFNldExp
a2UpOwogICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0U2V0TGlrZS5n
ZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVf
V0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXRMaWtlV2l0aE92ZXJyaWRkZW5P
cGVyYXRpb25zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0U2V0TGlrZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9ucy5jcHAJKHJl
dmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RTZXRMaWtlV2l0aE92ZXJyaWRkZW5PcGVyYXRpb25zLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtODUsNyArODUsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2Uq
IHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9J
U09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0U2V0TGlrZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9u
c1Byb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsK
KyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRp
YyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpA
QCAtMzU0LDkgKzM1NCw5IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdFNldExpa2VXaXRoT3Zl
cnIKICAgICAgICAgcmV0dXJuIHNwYWNlOwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNl
X29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0U2V0TGlrZVdpdGhPdmVycmlk
ZGVuT3BlcmF0aW9ucz4gfHwgIUpTVGVzdFNldExpa2VXaXRoT3ZlcnJpZGRlbk9wZXJhdGlvbnM6
Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8
SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0U2V0TGlrZVdpdGhPdmVycmlkZGVuT3Bl
cmF0aW9ucz4pCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFNldExpa2VXaXRoT3Zl
cnJpZGRlbk9wZXJhdGlvbnMgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0Vf
SU5JVCh2bS5oZWFwLCAqdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLCBKU1Rlc3RT
ZXRMaWtlV2l0aE92ZXJyaWRkZW5PcGVyYXRpb25zKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3Bh
Y2VGb3JUZXN0U2V0TGlrZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9ucyA9IG1ha2VVbmlxdWU8SXNv
U3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVj
dEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RTZXRMaWtlV2l0aE92ZXJyaWRkZW5PcGVyYXRpb25zKTsK
ICAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFNldExpa2VXaXRoT3Zl
cnJpZGRlbk9wZXJhdGlvbnMgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0Vf
SU5JVCh2bS5oZWFwLCAqdm0uY2VsbEhlYXBDZWxsVHlwZSwgSlNUZXN0U2V0TGlrZVdpdGhPdmVy
cmlkZGVuT3BlcmF0aW9ucyk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFNldExp
a2VXaXRoT3ZlcnJpZGRlbk9wZXJhdGlvbnMgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09f
U1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCksIEpTVGVzdFNldExp
a2VXaXRoT3ZlcnJpZGRlbk9wZXJhdGlvbnMpOwogICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1f
c3Vic3BhY2VGb3JUZXN0U2V0TGlrZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9ucy5nZXQoKTsKIElH
Tk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1Nf
QkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVy
LmNwcAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjksNyAr
NjksNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9y
KEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0Vf
U0hBUkFCTEUoSlNUZXN0U3RyaW5naWZpZXJQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1
cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RT
cGFjZSgpOwogICAgIH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVy
ZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpT
VmFsdWUgcHJvdG90eXBlKQogICAgIHsKQEAgLTE5Miw5ICsxOTIsOSBAQCBKU0M6Oklzb1N1YnNw
YWNlKiBKU1Rlc3RTdHJpbmdpZmllcjo6c3ViCiAgICAgICAgIHJldHVybiBzcGFjZTsKICAgICBz
dGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3Qs
IEpTVGVzdFN0cmluZ2lmaWVyPiB8fCAhSlNUZXN0U3RyaW5naWZpZXI6Om5lZWRzRGVzdHJ1Y3Rp
b24pOwogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0
aWJsZU9iamVjdCwgSlNUZXN0U3RyaW5naWZpZXI+KQotICAgICAgICBzcGFjZXMubV9zdWJzcGFj
ZUZvclRlc3RTdHJpbmdpZmllciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFD
RV9JTklUKHZtLmhlYXAsICp2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUsIEpTVGVz
dFN0cmluZ2lmaWVyKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0U3RyaW5naWZp
ZXIgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2
bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0U3RyaW5naWZpZXIpOwog
ICAgIGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0U3RyaW5naWZpZXIgPSBt
YWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uY2Vs
bEhlYXBDZWxsVHlwZSwgSlNUZXN0U3RyaW5naWZpZXIpOworICAgICAgICBzcGFjZXMubV9zdWJz
cGFjZUZvclRlc3RTdHJpbmdpZmllciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJT
UEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0U3RyaW5naWZp
ZXIpOwogICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0U3RyaW5naWZp
ZXIuZ2V0KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdO
T1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJBbm9ueW1v
dXNPcGVyYXRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllckFub255bW91c09wZXJhdGlvbi5jcHAJKHJl
dmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RTdHJpbmdpZmllckFub255bW91c09wZXJhdGlvbi5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTY5LDcgKzY5LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBz
dWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNP
X1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdFN0cmluZ2lmaWVyQW5vbnltb3VzT3BlcmF0aW9uUHJv
dG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAg
ICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpT
Qzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC0x
OTIsOSArMTkyLDkgQEAgSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0U3RyaW5naWZpZXJBbm9ueQog
ICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2Zf
djxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RTdHJpbmdpZmllckFub255bW91c09w
ZXJhdGlvbj4gfHwgIUpTVGVzdFN0cmluZ2lmaWVyQW5vbnltb3VzT3BlcmF0aW9uOjpuZWVkc0Rl
c3RydWN0aW9uKTsKICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNE
ZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdFN0cmluZ2lmaWVyQW5vbnltb3VzT3BlcmF0aW9uPikK
LSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0U3RyaW5naWZpZXJBbm9ueW1vdXNPcGVy
YXRpb24gPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFw
LCAqdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLCBKU1Rlc3RTdHJpbmdpZmllckFu
b255bW91c09wZXJhdGlvbik7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFN0cmlu
Z2lmaWVyQW5vbnltb3VzT3BlcmF0aW9uID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NV
QlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCks
IEpTVGVzdFN0cmluZ2lmaWVyQW5vbnltb3VzT3BlcmF0aW9uKTsKICAgICBlbHNlCi0gICAgICAg
IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFN0cmluZ2lmaWVyQW5vbnltb3VzT3BlcmF0aW9uID0g
bWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmNl
bGxIZWFwQ2VsbFR5cGUsIEpTVGVzdFN0cmluZ2lmaWVyQW5vbnltb3VzT3BlcmF0aW9uKTsKKyAg
ICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0U3RyaW5naWZpZXJBbm9ueW1vdXNPcGVyYXRp
b24gPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2
bS5jZWxsSGVhcENlbGxUeXBlKCksIEpTVGVzdFN0cmluZ2lmaWVyQW5vbnltb3VzT3BlcmF0aW9u
KTsKICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFN0cmluZ2lmaWVy
QW5vbnltb3VzT3BlcmF0aW9uLmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNo
YWJsZS1jb2RlIikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUi
KQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0
cmluZ2lmaWVyTmFtZWRPcGVyYXRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllck5hbWVkT3BlcmF0aW9u
LmNwcAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyTmFtZWRPcGVyYXRpb24uY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC03MCw3ICs3MCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFj
ZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJU
X0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3RTdHJpbmdpZmllck5hbWVkT3BlcmF0aW9uUHJv
dG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAg
ICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpT
Qzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC0y
MDksOSArMjA5LDkgQEAgSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0U3RyaW5naWZpZXJOYW1lZAog
ICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2Zf
djxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RTdHJpbmdpZmllck5hbWVkT3BlcmF0
aW9uPiB8fCAhSlNUZXN0U3RyaW5naWZpZXJOYW1lZE9wZXJhdGlvbjo6bmVlZHNEZXN0cnVjdGlv
bik7CiAgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3Rp
YmxlT2JqZWN0LCBKU1Rlc3RTdHJpbmdpZmllck5hbWVkT3BlcmF0aW9uPikKLSAgICAgICAgc3Bh
Y2VzLm1fc3Vic3BhY2VGb3JUZXN0U3RyaW5naWZpZXJOYW1lZE9wZXJhdGlvbiA9IG1ha2VVbmlx
dWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5kZXN0cnVjdGli
bGVPYmplY3RIZWFwQ2VsbFR5cGUsIEpTVGVzdFN0cmluZ2lmaWVyTmFtZWRPcGVyYXRpb24pOwor
ICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RTdHJpbmdpZmllck5hbWVkT3BlcmF0aW9u
ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0u
ZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCksIEpTVGVzdFN0cmluZ2lmaWVyTmFtZWRP
cGVyYXRpb24pOwogICAgIGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0U3Ry
aW5naWZpZXJOYW1lZE9wZXJhdGlvbiA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJT
UEFDRV9JTklUKHZtLmhlYXAsICp2bS5jZWxsSGVhcENlbGxUeXBlLCBKU1Rlc3RTdHJpbmdpZmll
ck5hbWVkT3BlcmF0aW9uKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0U3RyaW5n
aWZpZXJOYW1lZE9wZXJhdGlvbiA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFD
RV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0U3RyaW5naWZpZXJO
YW1lZE9wZXJhdGlvbik7CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRl
c3RTdHJpbmdpZmllck5hbWVkT3BlcmF0aW9uLmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lO
KCJ1bnJlYWNoYWJsZS1jb2RlIikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2Fs
LWNvbXBhcmUiKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uSW1wbGVtZW50ZWRBcy5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lm
aWVyT3BlcmF0aW9uSW1wbGVtZW50ZWRBcy5jcHAJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllck9wZXJh
dGlvbkltcGxlbWVudGVkQXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03MCw3ICs3MCw3IEBAIHB1
YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYg
dm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShK
U1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbkltcGxlbWVudGVkQXNQcm90b3R5cGUsIEJhc2UpOwot
ICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0u
cGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNy
ZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKQEAgLTIwOSw5ICsyMDksOSBAQCBK
U0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3RTdHJpbmdpZmllck9wZXJhCiAgICAgICAgIHJldHVybiBz
cGFjZTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVj
dGlibGVPYmplY3QsIEpTVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uSW1wbGVtZW50ZWRBcz4gfHwg
IUpTVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uSW1wbGVtZW50ZWRBczo6bmVlZHNEZXN0cnVjdGlv
bik7CiAgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3Rp
YmxlT2JqZWN0LCBKU1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbkltcGxlbWVudGVkQXM+KQotICAg
ICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RTdHJpbmdpZmllck9wZXJhdGlvbkltcGxlbWVu
dGVkQXMgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFw
LCAqdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLCBKU1Rlc3RTdHJpbmdpZmllck9w
ZXJhdGlvbkltcGxlbWVudGVkQXMpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RT
dHJpbmdpZmllck9wZXJhdGlvbkltcGxlbWVudGVkQXMgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNl
PiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2Vs
bFR5cGUoKSwgSlNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25JbXBsZW1lbnRlZEFzKTsKICAgICBl
bHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9u
SW1wbGVtZW50ZWRBcyA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklU
KHZtLmhlYXAsICp2bS5jZWxsSGVhcENlbGxUeXBlLCBKU1Rlc3RTdHJpbmdpZmllck9wZXJhdGlv
bkltcGxlbWVudGVkQXMpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RTdHJpbmdp
Zmllck9wZXJhdGlvbkltcGxlbWVudGVkQXMgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09f
U1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCksIEpTVGVzdFN0cmlu
Z2lmaWVyT3BlcmF0aW9uSW1wbGVtZW50ZWRBcyk7CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMu
bV9zdWJzcGFjZUZvclRlc3RTdHJpbmdpZmllck9wZXJhdGlvbkltcGxlbWVudGVkQXMuZ2V0KCk7
CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5J
TkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25OYW1lZFRv
U3RyaW5nLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25OYW1lZFRvU3RyaW5nLmNwcAkocmV2
aXNpb24gMjg2MDk1KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uTmFtZWRUb1N0cmluZy5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTY5LDcgKzY5LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNl
KiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRf
SVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uTmFtZWRUb1N0
cmluZ1Byb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFj
ZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0
YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAg
ewpAQCAtMTkyLDkgKzE5Miw5IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdFN0cmluZ2lmaWVy
T3BlcmEKICAgICAgICAgcmV0dXJuIHNwYWNlOwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19i
YXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0U3RyaW5naWZpZXJPcGVy
YXRpb25OYW1lZFRvU3RyaW5nPiB8fCAhSlNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25OYW1lZFRv
U3RyaW5nOjpuZWVkc0Rlc3RydWN0aW9uKTsKICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFz
ZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdFN0cmluZ2lmaWVyT3BlcmF0
aW9uTmFtZWRUb1N0cmluZz4pCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFN0cmlu
Z2lmaWVyT3BlcmF0aW9uTmFtZWRUb1N0cmluZyA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElT
T19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5
cGUsIEpTVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uTmFtZWRUb1N0cmluZyk7CisgICAgICAgIHNw
YWNlcy5tX3N1YnNwYWNlRm9yVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uTmFtZWRUb1N0cmluZyA9
IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRl
c3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RTdHJpbmdpZmllck9wZXJhdGlv
bk5hbWVkVG9TdHJpbmcpOwogICAgIGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JU
ZXN0U3RyaW5naWZpZXJPcGVyYXRpb25OYW1lZFRvU3RyaW5nID0gbWFrZVVuaXF1ZTxJc29TdWJz
cGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmNlbGxIZWFwQ2VsbFR5cGUsIEpT
VGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uTmFtZWRUb1N0cmluZyk7CisgICAgICAgIHNwYWNlcy5t
X3N1YnNwYWNlRm9yVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uTmFtZWRUb1N0cmluZyA9IG1ha2VV
bmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFw
Q2VsbFR5cGUoKSwgSlNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25OYW1lZFRvU3RyaW5nKTsKICAg
ICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFN0cmluZ2lmaWVyT3BlcmF0
aW9uTmFtZWRUb1N0cmluZy5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFi
bGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJp
bmdpZmllclJlYWRPbmx5QXR0cmlidXRlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJSZWFkT25seUF0dHJp
YnV0ZS5jcHAJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllclJlYWRPbmx5QXR0cmlidXRlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNzEsNyArNzEsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNv
U3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElD
X0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0U3RyaW5naWZpZXJSZWFkT25seUF0
dHJpYnV0ZVByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RT
cGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAg
IHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6
OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAg
ICAgewpAQCAtMjA4LDkgKzIwOCw5IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdFN0cmluZ2lm
aWVyUmVhZE8KICAgICAgICAgcmV0dXJuIHNwYWNlOwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjpp
c19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0U3RyaW5naWZpZXJS
ZWFkT25seUF0dHJpYnV0ZT4gfHwgIUpTVGVzdFN0cmluZ2lmaWVyUmVhZE9ubHlBdHRyaWJ1dGU6
Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8
SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0U3RyaW5naWZpZXJSZWFkT25seUF0dHJp
YnV0ZT4pCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFN0cmluZ2lmaWVyUmVhZE9u
bHlBdHRyaWJ1dGUgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2
bS5oZWFwLCAqdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLCBKU1Rlc3RTdHJpbmdp
ZmllclJlYWRPbmx5QXR0cmlidXRlKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0
U3RyaW5naWZpZXJSZWFkT25seUF0dHJpYnV0ZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElT
T19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlw
ZSgpLCBKU1Rlc3RTdHJpbmdpZmllclJlYWRPbmx5QXR0cmlidXRlKTsKICAgICBlbHNlCi0gICAg
ICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFN0cmluZ2lmaWVyUmVhZE9ubHlBdHRyaWJ1dGUg
PSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0u
Y2VsbEhlYXBDZWxsVHlwZSwgSlNUZXN0U3RyaW5naWZpZXJSZWFkT25seUF0dHJpYnV0ZSk7Cisg
ICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFN0cmluZ2lmaWVyUmVhZE9ubHlBdHRyaWJ1
dGUgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2
bS5jZWxsSGVhcENlbGxUeXBlKCksIEpTVGVzdFN0cmluZ2lmaWVyUmVhZE9ubHlBdHRyaWJ1dGUp
OwogICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0U3RyaW5naWZpZXJS
ZWFkT25seUF0dHJpYnV0ZS5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFi
bGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJp
bmdpZmllclJlYWRXcml0ZUF0dHJpYnV0ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyUmVhZFdyaXRlQXR0
cmlidXRlLmNwcAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyUmVhZFdyaXRlQXR0cmlidXRlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNzIsNyArNzIsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6
SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RB
VElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0U3RyaW5naWZpZXJSZWFkV3Jp
dGVBdHRyaWJ1dGVQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2Jq
ZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0K
ICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwg
SlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBl
KQogICAgIHsKQEAgLTIyNyw5ICsyMjcsOSBAQCBKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3RTdHJp
bmdpZmllclJlYWRXCiAgICAgICAgIHJldHVybiBzcGFjZTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0
ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdFN0cmluZ2lm
aWVyUmVhZFdyaXRlQXR0cmlidXRlPiB8fCAhSlNUZXN0U3RyaW5naWZpZXJSZWFkV3JpdGVBdHRy
aWJ1dGU6Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNl
X29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0U3RyaW5naWZpZXJSZWFkV3Jp
dGVBdHRyaWJ1dGU+KQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RTdHJpbmdpZmll
clJlYWRXcml0ZUF0dHJpYnV0ZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFD
RV9JTklUKHZtLmhlYXAsICp2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUsIEpTVGVz
dFN0cmluZ2lmaWVyUmVhZFdyaXRlQXR0cmlidXRlKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3Bh
Y2VGb3JUZXN0U3RyaW5naWZpZXJSZWFkV3JpdGVBdHRyaWJ1dGUgPSBtYWtlVW5pcXVlPElzb1N1
YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RI
ZWFwQ2VsbFR5cGUoKSwgSlNUZXN0U3RyaW5naWZpZXJSZWFkV3JpdGVBdHRyaWJ1dGUpOwogICAg
IGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0U3RyaW5naWZpZXJSZWFkV3Jp
dGVBdHRyaWJ1dGUgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2
bS5oZWFwLCAqdm0uY2VsbEhlYXBDZWxsVHlwZSwgSlNUZXN0U3RyaW5naWZpZXJSZWFkV3JpdGVB
dHRyaWJ1dGUpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RTdHJpbmdpZmllclJl
YWRXcml0ZUF0dHJpYnV0ZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9J
TklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0U3RyaW5naWZpZXJSZWFk
V3JpdGVBdHRyaWJ1dGUpOwogICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JU
ZXN0U3RyaW5naWZpZXJSZWFkV3JpdGVBdHRyaWJ1dGUuZ2V0KCk7CiBJR05PUkVfV0FSTklOR1Nf
QkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xv
Z2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0VHlwZWRlZnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RUeXBlZGVmcy5jcHAJKHJldmlzaW9uIDI4NjA5
NSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RUeXBl
ZGVmcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExNiw3ICsxMTYsNyBAQCBwdWJsaWM6CiAgICAg
c3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsK
ICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0VHlwZWRl
ZnNQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7
CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KICAgICBzdGF0
aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsK
QEAgLTc3OCw5ICs3NzgsOSBAQCBKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3RUeXBlZGVmczo6c3Vi
c3BhCiAgICAgICAgIHJldHVybiBzcGFjZTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFz
ZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdFR5cGVkZWZzPiB8fCAhSlNU
ZXN0VHlwZWRlZnM6Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjpp
c19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0VHlwZWRlZnM+KQot
ICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RUeXBlZGVmcyA9IG1ha2VVbmlxdWU8SXNv
U3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5kZXN0cnVjdGlibGVPYmpl
Y3RIZWFwQ2VsbFR5cGUsIEpTVGVzdFR5cGVkZWZzKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3Bh
Y2VGb3JUZXN0VHlwZWRlZnMgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0Vf
SU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0
VHlwZWRlZnMpOwogICAgIGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0VHlw
ZWRlZnMgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFw
LCAqdm0uY2VsbEhlYXBDZWxsVHlwZSwgSlNUZXN0VHlwZWRlZnMpOworICAgICAgICBzcGFjZXMu
bV9zdWJzcGFjZUZvclRlc3RUeXBlZGVmcyA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19T
VUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0VHlwZWRl
ZnMpOwogICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0VHlwZWRlZnMu
Z2V0KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JF
X1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNXb3JrZXJHbG9iYWxTY29wZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1dvcmtl
ckdsb2JhbFNjb3BlLmgJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1dvcmtlckdsb2JhbFNjb3BlLmgJKHdvcmtpbmcgY29weSkK
QEAgLTg1LDcgKzg1LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBz
dWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNP
X1NVQlNQQUNFX1NIQVJBQkxFKEpTV29ya2VyR2xvYmFsU2NvcGVQcm90b3R5cGUsIEJhc2UpOwot
ICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0u
cGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNy
ZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1dvcmtsZXRHbG9iYWxTY29wZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1dvcmtsZXRH
bG9iYWxTY29wZS5oCShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNXb3JrbGV0R2xvYmFsU2NvcGUuaAkod29ya2luZyBjb3B5KQpA
QCAtODUsNyArODUsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1
YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09f
U1VCU1BBQ0VfU0hBUkFCTEUoSlNXb3JrbGV0R2xvYmFsU2NvcGVQcm90b3R5cGUsIEJhc2UpOwot
ICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0u
cGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNy
ZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2JyaWRnZS9vYmpjL29iamNfcnVudGltZS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9icmlkZ2Uvb2JqYy9vYmpjX3J1bnRpbWUubW0JKHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJj
ZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfcnVudGltZS5tbQkod29ya2luZyBjb3B5KQpAQCAt
MzM1LDcgKzMzNSw3IEBAIGJvb2wgT2JqY0ZhbGxiYWNrT2JqZWN0SW1wOjp0b0Jvb2xlYW4oSlMK
IEpTQzo6SXNvU3Vic3BhY2UqIE9iamNGYWxsYmFja09iamVjdEltcDo6c3Vic3BhY2VGb3JJbXBs
KEpTQzo6Vk0mIHZtKQogewogICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxKU0M6Oklzb1N1YnNw
YWNlUGVyVk0+IHBlclZNKFtdIChKU0M6OlZNJiB2bSkgewotICAgICAgICByZXR1cm4gSVNPX1NV
QlNQQUNFX1BBUkFNRVRFUlMoKnZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSwgT2Jq
Y0ZhbGxiYWNrT2JqZWN0SW1wKTsKKyAgICAgICAgcmV0dXJuIElTT19TVUJTUEFDRV9QQVJBTUVU
RVJTKHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBPYmpjRmFsbGJhY2tPYmpl
Y3RJbXApOwogICAgIH0pOwogICAgIHJldHVybiAmcGVyVk0uZ2V0KCkuZm9yVk0odm0pOwogfQpJ
bmRleDogU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJPcldvcmtsZXRTY3JpcHRDb250cm9s
bGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJPcldvcmts
ZXRTY3JpcHRDb250cm9sbGVyLmgJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvV29ya2VyT3JXb3JrbGV0U2NyaXB0Q29udHJvbGxlci5oCSh3b3JraW5nIGNvcHkp
CkBAIC0zOCw2ICszOCw3IEBACiBuYW1lc3BhY2UgSlNDIHsKIGNsYXNzIEV4Y2VwdGlvbjsKIGNs
YXNzIEpTR2xvYmFsT2JqZWN0OworY2xhc3MgSlNNb2R1bGVSZWNvcmQ7CiBjbGFzcyBWTTsKIH0K
IApJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTW9kZWxFbGVtZW50Q29udHJv
bGxlckNvY29hLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29h
L01vZGVsRWxlbWVudENvbnRyb2xsZXJDb2NvYS5tbQkocmV2aXNpb24gMjg2MDk1KQorKysgU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTW9kZWxFbGVtZW50Q29udHJvbGxlckNvY29hLm1t
CSh3b3JraW5nIGNvcHkpCkBAIC0yMzMsNiArMjMzLDEwIEBAIHZvaWQgTW9kZWxFbGVtZW50Q29u
dHJvbGxlcjo6aGFuZGxlTW91c2UKIAogI2lmIEVOQUJMRShBUktJVF9JTkxJTkVfUFJFVklFVykK
IAorI3VuZGVmIEVOQUJMRV9BUktJVF9JTkxJTkVfUFJFVklFV19DQU1FUkFfVFJBTlNGT1JNIC8v
IG1sYW0gSEFDSworI3VuZGVmIEVOQUJMRV9BUktJVF9JTkxJTkVfUFJFVklFV19BTklNQVRJT05T
X0NPTlRST0wgLy8gbWxhbSBIQUNLCisjdW5kZWYgRU5BQkxFX0FSS0lUX0lOTElORV9QUkVWSUVX
X0FVRElPX0NPTlRST0wgLy8gbWxhbSBIQUNLCisKIHN0YXRpYyBib29sIHByZXZpZXdIYXNDYW1l
cmFTdXBwb3J0KEFTVklubGluZVByZXZpZXcgKnByZXZpZXcpCiB7CiAjaWYgRU5BQkxFKEFSS0lU
X0lOTElORV9QUkVWSUVXX0NBTUVSQV9UUkFOU0ZPUk0pCg==
</data>
<flag name="commit-queue"
          id="470009"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>444895</attachid>
            <date>2021-11-20 06:24:06 -0800</date>
            <delta_ts>2021-11-20 07:51:26 -0800</delta_ts>
            <desc>work in progress.</desc>
            <filename>bug-233240e.patch</filename>
            <type>text/plain</type>
            <size>405165</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDI4NjA5NSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpA
QCAtNzYzLDYgKzc2Myw4IEBAIHNldChKYXZhU2NyaXB0Q29yZV9QUklWQVRFX0ZSQU1FV09SS19I
RUEKICAgICBoZWFwL0luY3JlbWVudGFsU3dlZXBlci5oCiAgICAgaGVhcC9Jc29DZWxsU2V0LmgK
ICAgICBoZWFwL0lzb0hlYXBDZWxsVHlwZS5oCisgICAgaGVhcC9Jc29JbmxpbmVkSGVhcENlbGxU
eXBlLmgKKyAgICBoZWFwL0lzb0lubGluZWRIZWFwQ2VsbFR5cGVJbmxpbmVzLmgKICAgICBoZWFw
L0lzb1N1YnNwYWNlLmgKICAgICBoZWFwL0lzb1N1YnNwYWNlSW5saW5lcy5oCiAgICAgaGVhcC9J
c29TdWJzcGFjZVBlclZNLmgKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCShyZXZpc2lvbiAyODYw
OTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MTQyOSw3ICsxNDI5LDcgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBl
LCBTdWJzcGFjZUFjY2Vzcz4KICAgICBzdGF0aWMgQ29tcGxldGVTdWJzcGFjZSogc3Vic3BhY2VG
b3IoVk0mIHZtKQogICAgIHsKLSAgICAgICAgcmV0dXJuICZ2bS5kZXN0cnVjdGlibGVPYmplY3RT
cGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5kZXN0cnVjdGlibGVPYmplY3RTcGFjZSgpOwogICAg
IH0KIAogICAgIEpTQ01lbW9yeUZvb3RwcmludChWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJl
KQpAQCAtMTc2Miw3ICsxNzYyLDcgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENl
bGxUeXBlLCBTdWJzcGFjZUFjY2Vzcz4KICAgICBzdGF0aWMgQ29tcGxldGVTdWJzcGFjZSogc3Vi
c3BhY2VGb3IoVk0mIHZtKQogICAgIHsKLSAgICAgICAgcmV0dXJuICZ2bS5kZXN0cnVjdGlibGVP
YmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5kZXN0cnVjdGlibGVPYmplY3RTcGFjZSgp
OwogICAgIH0KIAogICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYgdm0s
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3
b3JraW5nIGNvcHkpCkBAIC0xOTU5LDcgKzE5NTksNyBAQAogCQlFM0M2OTRCMzIzMDI2ODc3MDA2
RkJFNDIgLyogV2FzbU9TUkVudHJ5RGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRTNDNjk0QjEyMzAyNjg3MzAwNkZCRTQyIC8qIFdhc21PU1JFbnRy
eURhdGEuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQlFM0M3M0E5MTI1QkZBNzNCMDBFRkUzMDMgLyogV2FzbVN0cmVhbWluZ1BsYW4uaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzQzczQTkwMjVCRkE3MzQw
MEVGRTMwMyAvKiBXYXNtU3RyZWFtaW5nUGxhbi5oICovOyB9OwogCQlFM0M3OUNBQjFEQjlBNERD
MDBEMUVDQTQgLyogRE9NSklURWZmZWN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBFM0M3OUNBQTFEQjlBNEQ2MDBEMUVDQTQgLyogRE9NSklURWZmZWN0
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJRTND
OEVENDMyM0ExREJDQjAwMTMxOTU4IC8qIElzb0lubGluZWRIZWFwQ2VsbFR5cGUuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzQzhFRDQyMjNBMURCQzUw
MDEzMTk1OCAvKiBJc29JbmxpbmVkSGVhcENlbGxUeXBlLmggKi87IH07CisJCUUzQzhFRDQzMjNB
MURCQ0IwMDEzMTk1OCAvKiBJc29JbmxpbmVkSGVhcENlbGxUeXBlLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFM0M4RUQ0MjIzQTFEQkM1MDAxMzE5NTgg
LyogSXNvSW5saW5lZEhlYXBDZWxsVHlwZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCUUzQ0EzQTRFMjUyN0FCMkYwMDQ4MDJCRiAvKiBKSVRPcGVy
YXRpb25MaXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBFM0NBM0E0QzI1MjdBQjJGMDA0ODAyQkYgLyogSklUT3BlcmF0aW9uTGlzdC5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUzRDIzOUM5MUI4MjlD
MUMwMEJCRUY2NyAvKiBKU01vZHVsZUVudmlyb25tZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFM0QyMzlDNzFCODI5QzFDMDBCQkVGNjcgLyogSlNN
b2R1bGVFbnZpcm9ubWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCUUzRDM1MTVGMjQxQjg5RDcwMDhEQzE2RSAvKiBNYXJrZWRKU1ZhbHVlUmVm
QXJyYXkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUz
RDM1MTVEMjQxQjg5Q0UwMDhEQzE2RSAvKiBNYXJrZWRKU1ZhbHVlUmVmQXJyYXkuaCAqLzsgfTsK
QEAgLTIwNDEsNiArMjA0MSw3IEBACiAJCUZFNjNERDU0MUVBOUI2MUUwMDEwM0E2OSAvKiBQcmlu
dGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTYz
REQ1MzFFQTlCNjBFMDAxMDNBNjkgLyogUHJpbnRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUZFNjQ4NzJFMjE0MUQwNDgwMEFCMEQzRSAvKiBP
cGNvZGVJbmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBGRTY0ODcyRDIxNDFEMDQ4MDBBQjBEM0UgLyogT3Bjb2RlSW5saW5lcy5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUZFNjQ5MTM3MUQ3OEYw
MUQwMEE2OTRENCAvKiBFeGNlcHRpb25TY29wZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRkU2NDkxMzYxRDc4RjAxMzAwQTY5NEQ0IC8qIEV4Y2VwdGlv
blNjb3BlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
KwkJRkU2NUIxNTEyNzQ4NjAxRjAwREI1QjE2IC8qIElzb0lubGluZWRIZWFwQ2VsbFR5cGVJbmxp
bmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTY1
QjE1MDI3NDg2MDFGMDBEQjVCMTYgLyogSXNvSW5saW5lZEhlYXBDZWxsVHlwZUlubGluZXMuaCAq
LzsgfTsKIAkJRkU2OEM2MzcxQjkwREUwNDAwNDJCQ0IzIC8qIE1hY3JvQXNzZW1ibGVyUHJpbnRl
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkU2OEM2
MzYxQjkwREREOTAwNDJCQ0IzIC8qIE1hY3JvQXNzZW1ibGVyUHJpbnRlci5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUZFNkY1NkRFMUU2NEVBRDYw
MEQxNzgwMSAvKiBWTVRyYXBzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBGRTZGNTZERDFFNjRFOTIwMDBEMTc4MDEgLyogVk1UcmFwcy5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUZFNzQ5N0U2MjA5MDAx
QjEwMDAzNTY1QiAvKiBKU0NQdHJUYWcuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEZFNzQ5N0U1MjA5MDAxQjAwMDAzNTY1QiAvKiBKU0NQdHJUYWcuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtNTQ5OSw2
ICs1NTAwLDcgQEAKIAkJRkU2NDg3MkQyMTQxRDA0ODAwQUIwRDNFIC8qIE9wY29kZUlubGluZXMu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gT3Bjb2RlSW5saW5lcy5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRTY0OTEzNjFENzhGMDEzMDBBNjk0RDQgLyogRXhj
ZXB0aW9uU2NvcGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRXhjZXB0aW9u
U2NvcGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkU2NDkxMzgxRDc4RjNBMzAw
QTY5NEQ0IC8qIEV4Y2VwdGlvblNjb3BlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEV4Y2VwdGlvblNjb3BlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJRkU2NUIxNTAyNzQ4NjAxRjAwREI1QjE2IC8qIElzb0lubGluZWRIZWFwQ2VsbFR5cGVJbmxp
bmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IElzb0lubGluZWRIZWFwQ2Vs
bFR5cGVJbmxpbmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFNjhDNjM1MUI5
MERERDkwMDQyQkNCMyAvKiBNYWNyb0Fzc2VtYmxlclByaW50ZXIuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWFjcm9Bc3NlbWJsZXJQcmludGVyLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkU2OEM2MzYxQjkwREREOTAwNDJCQ0IzIC8qIE1hY3Jv
QXNzZW1ibGVyUHJpbnRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNYWNy
b0Fzc2VtYmxlclByaW50ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkU2RjU2
REMxRTY0RTkyMDAwRDE3ODAxIC8qIFZNVHJhcHMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gVk1UcmFwcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBA
IC02NjAzLDYgKzY2MDUsNyBAQAogCQkJCUUzQzhFRDQxMjNBMURCQzQwMDEzMTk1OCAvKiBJc29I
ZWFwQ2VsbFR5cGUuY3BwICovLAogCQkJCUUzQkYxQkFEMjM4QUFFRDEwMDNBMUMyQiAvKiBJc29I
ZWFwQ2VsbFR5cGUuaCAqLywKIAkJCQlFM0M4RUQ0MjIzQTFEQkM1MDAxMzE5NTggLyogSXNvSW5s
aW5lZEhlYXBDZWxsVHlwZS5oICovLAorCQkJCUZFNjVCMTUwMjc0ODYwMUYwMERCNUIxNiAvKiBJ
c29JbmxpbmVkSGVhcENlbGxUeXBlSW5saW5lcy5oICovLAogCQkJCTBGRENFMTJDMUZBRkI0REUw
MDZGMzkwMSAvKiBJc29TdWJzcGFjZS5jcHAgKi8sCiAJCQkJMEZEQ0UxMkIxRkFGQjRERTAwNkYz
OTAxIC8qIElzb1N1YnNwYWNlLmggKi8sCiAJCQkJMEZEMkZEOTIyMEI1MkJEQzAwRjA5NDQxIC8q
IElzb1N1YnNwYWNlSW5saW5lcy5oICovLApAQCAtMTA0MTMsNiArMTA0MTYsNyBAQAogCQkJCUUz
M0Y1MDgxMUI4NDI5QTQwMDQxMzg1NiAvKiBKU0ludGVybmFsUHJvbWlzZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJRTMzRjUwNzkxQjg0MjI1NzAwNDEzODU2IC8qIEpTSW50ZXJuYWxQcm9taXNlQ29u
c3RydWN0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUUzM0Y1MDg3MUI4NDQ5RUYwMDQxMzg1NiAv
KiBKU0ludGVybmFsUHJvbWlzZUNvbnN0cnVjdG9yLmx1dC5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
RkU2NUIxNTEyNzQ4NjAxRjAwREI1QjE2IC8qIElzb0lubGluZWRIZWFwQ2VsbFR5cGVJbmxpbmVz
LmggaW4gSGVhZGVycyAqLywKIAkJCQlFMzNGNTA3NTFCODQyMUMwMDA0MTM4NTYgLyogSlNJbnRl
cm5hbFByb21pc2VQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1MDNGQTFFMTg4RTBG
QjAwMDExMEYxNCAvKiBKU0phdmFTY3JpcHRDYWxsRnJhbWVQcm90b3R5cGUuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUJDMThDNDE2MEUxNkY1Q0QwMEIzNDQ2MCAvKiBKU0xleGljYWxFbnZpcm9ubWVu
dC5oIGluIEhlYWRlcnMgKi8sCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
QWNjZXNzQ2FzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0FjY2Vzc0Nhc2UuY3BwCShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIyNzcsNyAr
MjI3Nyw3IEBAIHZvaWQgQWNjZXNzQ2FzZTo6Z2VuZXJhdGVJbXBsKEFjY2Vzc0dlbmUKICAgICAg
ICAgICAgIHNpemVfdCBuZXdTaXplID0gbmV3U3RydWN0dXJlKCktPm91dE9mTGluZUNhcGFjaXR5
KCkgKiBzaXplb2YoSlNWYWx1ZSk7CiAKICAgICAgICAgICAgIGlmIChhbGxvY2F0aW5nSW5saW5l
KSB7Ci0gICAgICAgICAgICAgICAgQWxsb2NhdG9yIGFsbG9jYXRvciA9IHZtLmpzVmFsdWVHaWdh
Y2FnZUF1eGlsaWFyeVNwYWNlLmFsbG9jYXRvckZvcihuZXdTaXplLCBBbGxvY2F0b3JGb3JNb2Rl
OjpBbGxvY2F0b3JJZkV4aXN0cyk7CisgICAgICAgICAgICAgICAgQWxsb2NhdG9yIGFsbG9jYXRv
ciA9IHZtLmpzVmFsdWVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlKCkuYWxsb2NhdG9yRm9yKG5ld1Np
emUsIEFsbG9jYXRvckZvck1vZGU6OkFsbG9jYXRvcklmRXhpc3RzKTsKIAogICAgICAgICAgICAg
ICAgIGppdC5lbWl0QWxsb2NhdGUoc2NyYXRjaEdQUiwgSklUQWxsb2NhdG9yOjpjb25zdGFudChh
bGxvY2F0b3IpLCBzY3JhdGNoR1BSMiwgc2NyYXRjaEdQUjMsIHNsb3dQYXRoKTsKICAgICAgICAg
ICAgICAgICBqaXQuYWRkUHRyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKG5ld1NpemUgKyBz
aXplb2YoSW5kZXhpbmdIZWFkZXIpKSwgc2NyYXRjaEdQUik7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvREZHRXhpdFByb2ZpbGUuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvREZHRXhpdFByb2ZpbGUuaAkocmV2aXNpb24gMjg2MDk1
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0RGR0V4aXRQcm9maWxlLmgJKHdv
cmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDExLTIw
MTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEx
LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCkBAIC0zNCw3ICszNCwxMSBAQAogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+
CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCi1uYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERG
RyB7CituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgVW5saW5rZWRDb2RlQmxvY2s7CisKK25hbWVz
cGFjZSBERkcgewogCiBjbGFzcyBGcmVxdWVudEV4aXRTaXRlIHsKIHB1YmxpYzoKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FdmFsQ29kZUJsb2NrLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0V2YWxDb2RlQmxvY2suaAkocmV2aXNp
b24gMjg2MDk1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0V2YWxDb2RlQmxv
Y2suaAkod29ya2luZyBjb3B5KQpAQCAtNDEsNyArNDEsNyBAQCBwdWJsaWM6CiAgICAgdGVtcGxh
dGU8dHlwZW5hbWUsIFN1YnNwYWNlQWNjZXNzPgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vi
c3BhY2VGb3IoVk0mIHZtKQogICAgIHsKLSAgICAgICAgcmV0dXJuICZ2bS5jb2RlQmxvY2tTcGFj
ZS5zcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5jb2RlQmxvY2tTcGFjZSgpLnNwYWNlOwogICAg
IH0KIAogICAgIHN0YXRpYyBFdmFsQ29kZUJsb2NrKiBjcmVhdGUoVk0mIHZtLCBDb3B5UGFyc2Vk
QmxvY2tUYWcsIEV2YWxDb2RlQmxvY2smIG90aGVyKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0V4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2UuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdl
LmNwcAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0V4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04MSw3ICs4
MSw3IEBAIHZvaWQgRXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZTo6dmlzaXRDaGkKICAgICAgICAg
dmlzaXRvci5hcHBlbmRVbmJhcnJpZXJlZChjb2RlQmxvY2spOwogICAgIAogICAgIGlmICghdmlz
aXRvci5pc01hcmtlZChjb2RlQmxvY2spKQotICAgICAgICB2bS5leGVjdXRhYmxlVG9Db2RlQmxv
Y2tFZGdlc1dpdGhGaW5hbGl6ZXJzLmFkZChlZGdlKTsKKyAgICAgICAgdm0uZXhlY3V0YWJsZVRv
Q29kZUJsb2NrRWRnZXNXaXRoRmluYWxpemVycygpLmFkZChlZGdlKTsKICAgICAKICAgICBpZiAo
SklUQ29kZTo6aXNPcHRpbWl6aW5nSklUKGNvZGVCbG9jay0+aml0VHlwZSgpKSkgewogICAgICAg
ICAvLyBJZiB3ZSBqZXR0aXNvbiBvdXJzZWx2ZXMgd2UnbGwgaW5zdGFsbCBvdXIgYWx0ZXJuYXRp
dmUsIHNvIG1ha2Ugc3VyZSB0aGF0IGl0CkBAIC0xMTQsNyArMTE0LDcgQEAgdm9pZCBFeGVjdXRh
YmxlVG9Db2RlQmxvY2tFZGdlOjp2aXNpdENoaQogICAgIC8vIG5vdCB5ZXQgbWFya2VkIGJlY2F1
c2UgaXQgd2Vha2x5IGRlcGVuZHMgb24gYSBzdHJ1Y3R1cmUgdGhhdCB3ZSBkaWQgbm90IHlldCBt
YXJrLCB0aGVuIHdlCiAgICAgLy8gd2lsbCBrZWVwIGZpeHBvaW50aW5nIHVudGlsIHRoZSBlbmQu
CiAgICAgdmlzaXRvci5hcHBlbmRVbmJhcnJpZXJlZChjb2RlQmxvY2stPmdsb2JhbE9iamVjdCgp
KTsKLSAgICB2bS5leGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlc1dpdGhDb25zdHJhaW50cy5hZGQo
ZWRnZSk7CisgICAgdm0uZXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZXNXaXRoQ29uc3RyYWludHMo
KS5hZGQoZWRnZSk7CiAgICAgZWRnZS0+cnVuQ29uc3RyYWludChsb2NrZXIsIHZtLCB2aXNpdG9y
KTsKIH0KIApAQCAtMTQzLDggKzE0Myw4IEBAIHZvaWQgRXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRn
ZTo6ZmluYWxpemUKICAgICAgICAgbV9jb2RlQmxvY2suY2xlYXIoKTsKICAgICB9CiAgICAgCi0g
ICAgdm0uZXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZXNXaXRoRmluYWxpemVycy5yZW1vdmUodGhp
cyk7Ci0gICAgdm0uZXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZXNXaXRoQ29uc3RyYWludHMucmVt
b3ZlKHRoaXMpOworICAgIHZtLmV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2VzV2l0aEZpbmFsaXpl
cnMoKS5yZW1vdmUodGhpcyk7CisgICAgdm0uZXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZXNXaXRo
Q29uc3RyYWludHMoKS5yZW1vdmUodGhpcyk7CiB9CiAKIGlubGluZSB2b2lkIEV4ZWN1dGFibGVU
b0NvZGVCbG9ja0VkZ2U6OmFjdGl2YXRlKCkKQEAgLTIwMSw3ICsyMDEsNyBAQCB2b2lkIEV4ZWN1
dGFibGVUb0NvZGVCbG9ja0VkZ2U6OnJ1bkNvbnN0CiAgICAgY29kZUJsb2NrLT5kZXRlcm1pbmVM
aXZlbmVzcyhsb2NrZXIsIHZpc2l0b3IpOwogCiAgICAgaWYgKHZpc2l0b3IuaXNNYXJrZWQoY29k
ZUJsb2NrKSkKLSAgICAgICAgdm0uZXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZXNXaXRoQ29uc3Ry
YWludHMucmVtb3ZlKHRoaXMpOworICAgICAgICB2bS5leGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdl
c1dpdGhDb25zdHJhaW50cygpLnJlbW92ZSh0aGlzKTsKIH0KIAogdGVtcGxhdGUgdm9pZCBFeGVj
dXRhYmxlVG9Db2RlQmxvY2tFZGdlOjpydW5Db25zdHJhaW50KGNvbnN0IENvbmN1cnJlbnRKU0xv
Y2tlciYsIFZNJiwgQWJzdHJhY3RTbG90VmlzaXRvciYpOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0V4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2UuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRn
ZS5oCShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
RXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00Myw3ICs0Myw3
IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vic3BhY2VBY2Nl
c3M+CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewot
ICAgICAgICByZXR1cm4gJnZtLmV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2VTcGFjZTsKKyAgICAg
ICAgcmV0dXJuICZ2bS5leGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlU3BhY2UoKTsKICAgICB9CiAK
ICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mLCBKU0dsb2JhbE9iamVj
dCosIEpTVmFsdWUgcHJvdG90eXBlKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9GdW5jdGlvbkNvZGVCbG9jay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9GdW5jdGlvbkNvZGVCbG9jay5oCShyZXZpc2lvbiAyODYwOTUpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRnVuY3Rpb25Db2RlQmxvY2suaAkod29ya2lu
ZyBjb3B5KQpAQCAtNDIsNyArNDIsNyBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUs
IFN1YnNwYWNlQWNjZXNzPgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0m
IHZtKQogICAgIHsKLSAgICAgICAgcmV0dXJuICZ2bS5jb2RlQmxvY2tTcGFjZS5zcGFjZTsKKyAg
ICAgICAgcmV0dXJuICZ2bS5jb2RlQmxvY2tTcGFjZSgpLnNwYWNlOwogICAgIH0KIAogICAgIHN0
YXRpYyBGdW5jdGlvbkNvZGVCbG9jayogY3JlYXRlKFZNJiB2bSwgQ29weVBhcnNlZEJsb2NrVGFn
LCBGdW5jdGlvbkNvZGVCbG9jayYgb3RoZXIpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvTW9kdWxlUHJvZ3JhbUNvZGVCbG9jay5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Nb2R1bGVQcm9ncmFtQ29kZUJsb2NrLmgJKHJldmlzaW9u
IDI4NjA5NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Nb2R1bGVQcm9ncmFt
Q29kZUJsb2NrLmgJKHdvcmtpbmcgY29weSkKQEAgLTQyLDcgKzQyLDcgQEAgcHVibGljOgogICAg
IHRlbXBsYXRlPHR5cGVuYW1lLCBTdWJzcGFjZUFjY2Vzcz4KICAgICBzdGF0aWMgSXNvU3Vic3Bh
Y2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7Ci0gICAgICAgIHJldHVybiAmdm0uY29kZUJs
b2NrU3BhY2Uuc3BhY2U7CisgICAgICAgIHJldHVybiAmdm0uY29kZUJsb2NrU3BhY2UoKS5zcGFj
ZTsKICAgICB9CiAKICAgICBzdGF0aWMgTW9kdWxlUHJvZ3JhbUNvZGVCbG9jayogY3JlYXRlKFZN
JiB2bSwgQ29weVBhcnNlZEJsb2NrVGFnLCBNb2R1bGVQcm9ncmFtQ29kZUJsb2NrJiBvdGhlcikK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qcm9ncmFtQ29kZUJsb2NrLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Byb2dyYW1Db2Rl
QmxvY2suaAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1Byb2dyYW1Db2RlQmxvY2suaAkod29ya2luZyBjb3B5KQpAQCAtNDIsNyArNDIsNyBAQCBw
dWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUsIFN1YnNwYWNlQWNjZXNzPgogICAgIHN0YXRp
YyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKLSAgICAgICAgcmV0dXJu
ICZ2bS5jb2RlQmxvY2tTcGFjZS5zcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5jb2RlQmxvY2tT
cGFjZSgpLnNwYWNlOwogICAgIH0KIAogICAgIHN0YXRpYyBQcm9ncmFtQ29kZUJsb2NrKiBjcmVh
dGUoVk0mIHZtLCBDb3B5UGFyc2VkQmxvY2tUYWcsIFByb2dyYW1Db2RlQmxvY2smIG90aGVyKQpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1JlcGF0Y2guaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUmVwYXRjaC5oCShyZXZpc2lvbiAy
ODYwOTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUmVwYXRjaC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMS0yMDIw
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMS0y
MDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwpAQCAtMzEsNiArMzEsNyBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAorY2xhc3Mg
Q2FsbExpbmtJbmZvOwogY2xhc3MgU3RydWN0dXJlU3R1YkluZm87CiAKIGVudW0gY2xhc3MgR2V0
QnlLaW5kIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1
bmN0aW9uRXhlY3V0YWJsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmNwcAkocmV2aXNpb24gMjg2MDk1
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVj
dXRhYmxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjUxLDcgKzI1MSw3IEBAIFVubGlua2VkRnVu
Y3Rpb25Db2RlQmxvY2sqIFVubGlua2VkRnVuY3QKICAgICAgICAgbV91bmxpbmtlZENvZGVCbG9j
a0ZvckNvbnN0cnVjdC5zZXQodm0sIHRoaXMsIHJlc3VsdCk7CiAgICAgICAgIGJyZWFrOwogICAg
IH0KLSAgICB2bS51bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZVNwYWNlLnNldC5hZGQodGhpcyk7
CisgICAgdm0udW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGVTcGFjZSgpLnNldC5hZGQodGhpcyk7
CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApAQCAtMzEwLDcgKzMxMCw3IEBAIHZvaWQgVW5saW5r
ZWRGdW5jdGlvbkV4ZWN1dGFibGU6OmZpbmFsaXoKICAgICAgICAgY2xlYXJJZkRlYWQobV91bmxp
bmtlZENvZGVCbG9ja0ZvckNhbGwpOwogICAgICAgICBjbGVhcklmRGVhZChtX3VubGlua2VkQ29k
ZUJsb2NrRm9yQ29uc3RydWN0KTsKICAgICAgICAgaWYgKGlzQ2xlYXJlZCAmJiAhaXNTdGlsbFZh
bGlkKQotICAgICAgICAgICAgdm0udW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGVTcGFjZS5zZXQu
cmVtb3ZlKHRoaXMpOworICAgICAgICAgICAgdm0udW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGVT
cGFjZSgpLnNldC5yZW1vdmUodGhpcyk7CiAgICAgfQogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1
dGFibGUuaAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQyLDEz
ICs0MiwxNCBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAorY2xhc3MgQ2FjaGVkRnVuY3Rpb25FeGVj
dXRhYmxlOwogY2xhc3MgRGVjb2RlcjsKLWNsYXNzIEZ1bmN0aW9uTWV0YWRhdGFOb2RlOwogY2xh
c3MgRnVuY3Rpb25FeGVjdXRhYmxlOworY2xhc3MgRnVuY3Rpb25NZXRhZGF0YU5vZGU7CiBjbGFz
cyBQYXJzZXJFcnJvcjsKK2NsYXNzIFNjcmlwdEV4ZWN1dGFibGU7CiBjbGFzcyBTb3VyY2VQcm92
aWRlcjsKIGNsYXNzIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2s7Ci1jbGFzcyBDYWNoZWRGdW5j
dGlvbkV4ZWN1dGFibGU7CiAKIGVudW0gVW5saW5rZWRGdW5jdGlvbktpbmQgewogICAgIFVubGlu
a2VkTm9ybWFsRnVuY3Rpb24sCkBAIC02Nyw3ICs2OCw3IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vic3BhY2VBY2Nlc3M+CiAgICAgc3RhdGljIElzb1N1YnNw
YWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewotICAgICAgICByZXR1cm4gJnZtLnVubGlu
a2VkRnVuY3Rpb25FeGVjdXRhYmxlU3BhY2Uuc3BhY2U7CisgICAgICAgIHJldHVybiAmdm0udW5s
aW5rZWRGdW5jdGlvbkV4ZWN1dGFibGVTcGFjZSgpLnNwYWNlOwogICAgIH0KIAogICAgIHN0YXRp
YyBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogY3JlYXRlKFZNJiB2bSwgY29uc3QgU291cmNl
Q29kZSYgc291cmNlLCBGdW5jdGlvbk1ldGFkYXRhTm9kZSogbm9kZSwgVW5saW5rZWRGdW5jdGlv
bktpbmQgdW5saW5rZWRGdW5jdGlvbktpbmQsIENvbnN0cnVjdEFiaWxpdHkgY29uc3RydWN0QWJp
bGl0eSwgSlNQYXJzZXJTY3JpcHRNb2RlIHNjcmlwdE1vZGUsIFJlZlB0cjxURFpFbnZpcm9ubWVu
dExpbms+IHBhcmVudFNjb3BlVERaVmFyaWFibGVzLCBzdGQ6Om9wdGlvbmFsPFByaXZhdGVOYW1l
RW52aXJvbm1lbnQ+IHBhcmVudFByaXZhdGVOYW1lRW52aXJvbm1lbnQsIERlcml2ZWRDb250ZXh0
VHlwZSBkZXJpdmVkQ29udGV4dFR5cGUsIE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyIG5lZWRz
Q2xhc3NGaWVsZEluaXRpYWxpemVyLCBQcml2YXRlQnJhbmRSZXF1aXJlbWVudCBwcml2YXRlQnJh
bmRSZXF1aXJlbWVudCwgYm9vbCBpc0J1aWx0aW5EZWZhdWx0Q2xhc3NDb25zdHJ1Y3RvciA9IGZh
bHNlKQpAQCAtMTMxLDcgKzEzMiw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIG1fdW5saW5r
ZWRDb2RlQmxvY2tGb3JDYWxsLmNsZWFyKCk7CiAgICAgICAgIG1fdW5saW5rZWRDb2RlQmxvY2tG
b3JDb25zdHJ1Y3QuY2xlYXIoKTsKLSAgICAgICAgdm0udW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFi
bGVTcGFjZS5zZXQucmVtb3ZlKHRoaXMpOworICAgICAgICB2bS51bmxpbmtlZEZ1bmN0aW9uRXhl
Y3V0YWJsZVNwYWNlKCkuc2V0LnJlbW92ZSh0aGlzKTsKICAgICB9CiAKICAgICB2b2lkIHJlY29y
ZFBhcnNlKENvZGVGZWF0dXJlcyBmZWF0dXJlcywgTGV4aWNhbFNjb3BlRmVhdHVyZXMgbGV4aWNh
bFNjb3BlRmVhdHVyZXMsIGJvb2wgaGFzQ2FwdHVyZWRWYXJpYWJsZXMpCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAkocmV2aXNpb24g
Mjg2MDk1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTEyMCw3ICsxMjAsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklU
OjplbWl0QWxsb2NhdGVSYXdPYmplCiAKICAgICBWTSYgdm0gPSB0aGlzLT52bSgpOwogICAgIGlm
IChzaXplKSB7Ci0gICAgICAgIGlmIChBbGxvY2F0b3IgYWxsb2NhdG9yID0gdm0uanNWYWx1ZUdp
Z2FjYWdlQXV4aWxpYXJ5U3BhY2UuYWxsb2NhdG9yRm9yTm9uVmlydHVhbChzaXplLCBBbGxvY2F0
b3JGb3JNb2RlOjpBbGxvY2F0b3JJZkV4aXN0cykpIHsKKyAgICAgICAgaWYgKEFsbG9jYXRvciBh
bGxvY2F0b3IgPSB2bS5qc1ZhbHVlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZSgpLmFsbG9jYXRvckZv
ck5vblZpcnR1YWwoc2l6ZSwgQWxsb2NhdG9yRm9yTW9kZTo6QWxsb2NhdG9ySWZFeGlzdHMpKSB7
CiAgICAgICAgICAgICBtX2ppdC5lbWl0QWxsb2NhdGUoc3RvcmFnZUdQUiwgSklUQWxsb2NhdG9y
Ojpjb25zdGFudChhbGxvY2F0b3IpLCBzY3JhdGNoR1BSLCBzY3JhdGNoMkdQUiwgc2xvd0Nhc2Vz
KTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgbV9qaXQuYWRkUHRyKApAQCAtMTA3MzgsNyAr
MTA3MzgsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQWxsb2NhdGVQcm9wCiAgICAg
CiAgICAgc2l6ZV90IHNpemUgPSBpbml0aWFsT3V0T2ZMaW5lQ2FwYWNpdHkgKiBzaXplb2YoSlNW
YWx1ZSk7CiAKLSAgICBBbGxvY2F0b3IgYWxsb2NhdG9yID0gdm0oKS5qc1ZhbHVlR2lnYWNhZ2VB
dXhpbGlhcnlTcGFjZS5hbGxvY2F0b3JGb3JOb25WaXJ0dWFsKHNpemUsIEFsbG9jYXRvckZvck1v
ZGU6OkFsbG9jYXRvcklmRXhpc3RzKTsKKyAgICBBbGxvY2F0b3IgYWxsb2NhdG9yID0gdm0oKS5q
c1ZhbHVlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZSgpLmFsbG9jYXRvckZvck5vblZpcnR1YWwoc2l6
ZSwgQWxsb2NhdG9yRm9yTW9kZTo6QWxsb2NhdG9ySWZFeGlzdHMpOwogCiAgICAgaWYgKCFhbGxv
Y2F0b3IgfHwgbm9kZS0+dHJhbnNpdGlvbigpLT5wcmV2aW91cy0+Y291bGRIYXZlSW5kZXhpbmdI
ZWFkZXIoKSkgewogICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUt
PmNoaWxkMSgpKTsKQEAgLTEwNzgyLDcgKzEwNzgyLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZVJlYWxsb2NhdGVQcgogICAgIHNpemVfdCBuZXdTaXplID0gb2xkU2l6ZSAqIG91dE9m
TGluZUdyb3d0aEZhY3RvcjsKICAgICBBU1NFUlQobmV3U2l6ZSA9PSBub2RlLT50cmFuc2l0aW9u
KCktPm5leHQtPm91dE9mTGluZUNhcGFjaXR5KCkgKiBzaXplb2YoSlNWYWx1ZSkpOwogICAgIAot
ICAgIEFsbG9jYXRvciBhbGxvY2F0b3IgPSB2bSgpLmpzVmFsdWVHaWdhY2FnZUF1eGlsaWFyeVNw
YWNlLmFsbG9jYXRvckZvck5vblZpcnR1YWwobmV3U2l6ZSwgQWxsb2NhdG9yRm9yTW9kZTo6QWxs
b2NhdG9ySWZFeGlzdHMpOworICAgIEFsbG9jYXRvciBhbGxvY2F0b3IgPSB2bSgpLmpzVmFsdWVH
aWdhY2FnZUF1eGlsaWFyeVNwYWNlKCkuYWxsb2NhdG9yRm9yTm9uVmlydHVhbChuZXdTaXplLCBB
bGxvY2F0b3JGb3JNb2RlOjpBbGxvY2F0b3JJZkV4aXN0cyk7CiAKICAgICBpZiAoIWFsbG9jYXRv
ciB8fCBub2RlLT50cmFuc2l0aW9uKCktPnByZXZpb3VzLT5jb3VsZEhhdmVJbmRleGluZ0hlYWRl
cigpKSB7CiAgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGJhc2UodGhpcywgbm9kZS0+Y2hp
bGQxKCkpOwpAQCAtMTE0OTksNyArMTE0OTksNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0
TmV3VHlwZWRBcnJheVdpCiAgICAgICAgIG1faml0LmFuZDMyKFRydXN0ZWRJbW0zMih+NyksIHNj
cmF0Y2hHUFIpOwogICAgIH0KICAgICBtX2ppdC5lbWl0QWxsb2NhdGVWYXJpYWJsZVNpemVkKAot
ICAgICAgICBzdG9yYWdlR1BSLCB2bSgpLnByaW1pdGl2ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2Us
IHNjcmF0Y2hHUFIsIHNjcmF0Y2hHUFIsCisgICAgICAgIHN0b3JhZ2VHUFIsIHZtKCkucHJpbWl0
aXZlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZSgpLCBzY3JhdGNoR1BSLCBzY3JhdGNoR1BSLAogICAg
ICAgICBzY3JhdGNoR1BSMiwgc2xvd0Nhc2VzKTsKICAgICAKICAgICBNYWNyb0Fzc2VtYmxlcjo6
SnVtcCBkb25lID0gbV9qaXQuYnJhbmNoVGVzdDMyKE1hY3JvQXNzZW1ibGVyOjpaZXJvLCBzaXpl
R1BSKTsKQEAgLTEzNzAwLDcgKzEzNzAwLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdEFs
bG9jYXRlQnV0dGVyZgogICAgIGRpZE5vdE92ZXJmbG93LmxpbmsoJm1faml0KTsKICNlbmRpZgog
ICAgIG1faml0LmVtaXRBbGxvY2F0ZVZhcmlhYmxlU2l6ZWQoCi0gICAgICAgIHN0b3JhZ2VSZXN1
bHRHUFIsIHZtKCkuanNWYWx1ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UsIHNjcmF0Y2gyLCBzY3Jh
dGNoMSwgc2NyYXRjaDMsIHNsb3dDYXNlcyk7CisgICAgICAgIHN0b3JhZ2VSZXN1bHRHUFIsIHZt
KCkuanNWYWx1ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UoKSwgc2NyYXRjaDIsIHNjcmF0Y2gxLCBz
Y3JhdGNoMywgc2xvd0Nhc2VzKTsKICAgICBtX2ppdC5hZGRQdHIoVHJ1c3RlZEltbTMyKHNpemVv
ZihJbmRleGluZ0hlYWRlcikpLCBzdG9yYWdlUmVzdWx0R1BSKTsKIAogICAgIG1faml0LnN0b3Jl
MzIoc2l6ZUdQUiwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc3RvcmFnZVJlc3VsdEdQUiwgQnV0
dGVyZmx5OjpvZmZzZXRPZlB1YmxpY0xlbmd0aCgpKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCShyZXZpc2lvbiAyODYwOTUpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTgzMDAsNyArODMwMCw3IEBAIElHTk9SRV9DTEFOR19XQVJOSU5HU19FTkQKICAgICAg
ICAgICAgICAgICBtX291dC5jb25zdEludFB0cih+c3RhdGljX2Nhc3Q8aW50cHRyX3Q+KDcpKSk7
CiAgICAgICAgIH0KIAotICAgICAgICBMVmFsdWUgYWxsb2NhdG9yID0gYWxsb2NhdG9yRm9yU2l6
ZSh2bSgpLnByaW1pdGl2ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UsIGJ5dGVTaXplLCBzbG93Q2Fz
ZSk7CisgICAgICAgIExWYWx1ZSBhbGxvY2F0b3IgPSBhbGxvY2F0b3JGb3JTaXplKHZtKCkucHJp
bWl0aXZlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZSgpLCBieXRlU2l6ZSwgc2xvd0Nhc2UpOwogICAg
ICAgICBMVmFsdWUgc3RvcmFnZSA9IGFsbG9jYXRlSGVhcENlbGwoYWxsb2NhdG9yLCBzbG93Q2Fz
ZSk7CiAKICAgICAgICAgc3BsYXRXb3JkcygKQEAgLTEzOTIxLDcgKzEzOTIxLDcgQEAgSUdOT1JF
X0NMQU5HX1dBUk5JTkdTX0VORAogICAgICAgICAgICAgICAgIFZhbHVlRnJvbUJsb2NrIG5vQnV0
dGVyZmx5ID0gbV9vdXQuYW5jaG9yKG1fb3V0LmludFB0clplcm8pOwogICAgICAgICAgICAgICAg
IAogICAgICAgICAgICAgICAgIExWYWx1ZSBzdGFydE9mU3RvcmFnZSA9IGFsbG9jYXRlSGVhcENl
bGwoCi0gICAgICAgICAgICAgICAgICAgIGFsbG9jYXRvckZvclNpemUodm0oKS5qc1ZhbHVlR2ln
YWNhZ2VBdXhpbGlhcnlTcGFjZSwgYnV0dGVyZmx5U2l6ZSwgc2xvd1BhdGgpLAorICAgICAgICAg
ICAgICAgICAgICBhbGxvY2F0b3JGb3JTaXplKHZtKCkuanNWYWx1ZUdpZ2FjYWdlQXV4aWxpYXJ5
U3BhY2UoKSwgYnV0dGVyZmx5U2l6ZSwgc2xvd1BhdGgpLAogICAgICAgICAgICAgICAgICAgICBz
bG93UGF0aCk7CiAKICAgICAgICAgICAgICAgICBMVmFsdWUgZmFzdEJ1dHRlcmZseVZhbHVlID0g
bV9vdXQuYWRkKApAQCAtMTUwMTYsNyArMTUwMTYsNyBAQCBJR05PUkVfQ0xBTkdfV0FSTklOR1Nf
RU5ECiAgICAgICAgIExCYXNpY0Jsb2NrIGxhc3ROZXh0ID0gbV9vdXQuaW5zZXJ0TmV3QmxvY2tz
QmVmb3JlKHNsb3dQYXRoKTsKIAogICAgICAgICBzaXplX3Qgc2l6ZUluQnl0ZXMgPSBzaXplSW5W
YWx1ZXMgKiBzaXplb2YoSlNWYWx1ZSk7Ci0gICAgICAgIEFsbG9jYXRvciBhbGxvY2F0b3IgPSB2
bSgpLmpzVmFsdWVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlLmFsbG9jYXRvckZvck5vblZpcnR1YWwo
c2l6ZUluQnl0ZXMsIEFsbG9jYXRvckZvck1vZGU6OkFsbG9jYXRvcklmRXhpc3RzKTsKKyAgICAg
ICAgQWxsb2NhdG9yIGFsbG9jYXRvciA9IHZtKCkuanNWYWx1ZUdpZ2FjYWdlQXV4aWxpYXJ5U3Bh
Y2UoKS5hbGxvY2F0b3JGb3JOb25WaXJ0dWFsKHNpemVJbkJ5dGVzLCBBbGxvY2F0b3JGb3JNb2Rl
OjpBbGxvY2F0b3JJZkV4aXN0cyk7CiAgICAgICAgIExWYWx1ZSBzdGFydE9mU3RvcmFnZSA9IGFs
bG9jYXRlSGVhcENlbGwoCiAgICAgICAgICAgICBtX291dC5jb25zdEludFB0cihhbGxvY2F0b3Iu
bG9jYWxBbGxvY2F0b3IoKSksIHNsb3dQYXRoKTsKICAgICAgICAgVmFsdWVGcm9tQmxvY2sgZmFz
dEJ1dHRlcmZseSA9IG1fb3V0LmFuY2hvcigKQEAgLTE3MDM4LDcgKzE3MDM4LDcgQEAgSUdOT1JF
X0NMQU5HX1dBUk5JTkdTX0VORAogICAgICAgICBMVmFsdWUgYnV0dGVyZmx5U2l6ZSA9IG1fb3V0
LmFkZCgKICAgICAgICAgICAgIHBheWxvYWRTaXplLCBtX291dC5jb25zdEludFB0cihzaXplb2Yo
SW5kZXhpbmdIZWFkZXIpKSk7CiAKLSAgICAgICAgTFZhbHVlIGFsbG9jYXRvciA9IGFsbG9jYXRv
ckZvclNpemUodm0oKS5qc1ZhbHVlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZSwgYnV0dGVyZmx5U2l6
ZSwgZmFpbENhc2UpOworICAgICAgICBMVmFsdWUgYWxsb2NhdG9yID0gYWxsb2NhdG9yRm9yU2l6
ZSh2bSgpLmpzVmFsdWVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlKCksIGJ1dHRlcmZseVNpemUsIGZh
aWxDYXNlKTsKICAgICAgICAgTFZhbHVlIHN0YXJ0T2ZTdG9yYWdlID0gYWxsb2NhdGVIZWFwQ2Vs
bChhbGxvY2F0b3IsIGZhaWxDYXNlKTsKIAogICAgICAgICBMVmFsdWUgYnV0dGVyZmx5ID0gbV9v
dXQuYWRkKHN0YXJ0T2ZTdG9yYWdlLCBtX291dC5jb25zdEludFB0cihzaXplb2YoSW5kZXhpbmdI
ZWFkZXIpKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZ2VuZXJhdG9yL0RTTC5yYgo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZ2VuZXJhdG9yL0RTTC5yYgkocmV2
aXNpb24gMjg2MDk1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2dlbmVyYXRvci9EU0wucmIJ
KHdvcmtpbmcgY29weSkKQEAgLTEsNCArMSw0IEBACi0jIENvcHlyaWdodCAoQykgMjAxOCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIENvcHlyaWdodCAoQykgMjAxOC0yMDIxIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICMKICMgUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAjIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwpAQCAtMTQ3LDYgKzE0Nyw4IEBAIG1vZHVsZSBEU0wKIAogbmFtZXNwYWNlIEpTQyB7CiAKK2Ns
YXNzIEJhc2ljQmxvY2tMb2NhdGlvbjsKKwogdm9pZCBkdW1wQnl0ZWNvZGUoQnl0ZWNvZGVEdW1w
ZXJCYXNlKiBkdW1wZXIsIEluc3RydWN0aW9uU3RyZWFtOjpPZmZzZXQsIGNvbnN0IEluc3RydWN0
aW9uKik7CiAKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9Db2RlQmxvY2tTZXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9Db2RlQmxvY2tTZXQuaAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvQ29kZUJsb2NrU2V0LmgJKHdvcmtpbmcgY29weSkKQEAgLTY2LDgg
KzY2LDYgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+IHZvaWQgaXRl
cmF0ZShjb25zdCBGdW5jdG9yJik7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4gdm9p
ZCBpdGVyYXRlKGNvbnN0IEFic3RyYWN0TG9ja2VyJiwgY29uc3QgRnVuY3RvciYpOwogCi0gICAg
dGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4gdm9pZCBpdGVyYXRlVmlhU3Vic3BhY2VzKFZNJiwg
Y29uc3QgRnVuY3RvciYpOwotICAgIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+IHZv
aWQgaXRlcmF0ZUN1cnJlbnRseUV4ZWN1dGluZyhjb25zdCBGdW5jdG9yJik7CiAgICAgCiAgICAg
dm9pZCBkdW1wKFByaW50U3RyZWFtJikgY29uc3Q7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9Db2RlQmxvY2tTZXRJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvQ29kZUJsb2NrU2V0SW5saW5lcy5oCShyZXZpc2lvbiAyODYwOTUpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Db2RlQmxvY2tTZXRJbmxpbmVzLmgJKHdvcmtp
bmcgY29weSkKQEAgLTYwLDE4ICs2MCw2IEBAIHZvaWQgQ29kZUJsb2NrU2V0OjppdGVyYXRlKGNv
bnN0IEFic3RyYWMKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4KLXZvaWQgQ29kZUJs
b2NrU2V0OjppdGVyYXRlVmlhU3Vic3BhY2VzKFZNJiB2bSwgY29uc3QgRnVuY3RvciYgZnVuY3Rv
cikKLXsKLSAgICB2bS5mb3JFYWNoQ29kZUJsb2NrU3BhY2UoCi0gICAgICAgIFsmXSAoYXV0byYg
c3BhY2VBbmRTZXQpIHsKLSAgICAgICAgICAgIHNwYWNlQW5kU2V0LnNwYWNlLmZvckVhY2hMaXZl
Q2VsbCgKLSAgICAgICAgICAgICAgICBbJl0gKEhlYXBDZWxsKiBjZWxsLCBIZWFwQ2VsbDo6S2lu
ZCkgewotICAgICAgICAgICAgICAgICAgICBmdW5jdG9yKGpzQ2FzdDxDb2RlQmxvY2sqPihzdGF0
aWNfY2FzdDxKU0NlbGwqPihjZWxsKSkpOwotICAgICAgICAgICAgICAgIH0pOwotICAgICAgICB9
KTsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4KIHZvaWQgQ29kZUJsb2NrU2V0Ojpp
dGVyYXRlQ3VycmVudGx5RXhlY3V0aW5nKGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3IpCiB7CiAgICAg
TG9ja2VyIGxvY2tlciB7IG1fbG9jayB9OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvSGVhcC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVh
cC5jcHAJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hl
YXAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMSwxMyArMjEsMjAgQEAKICNpbmNsdWRlICJjb25m
aWcuaCIKICNpbmNsdWRlICJIZWFwLmgiCiAKKyNpbmNsdWRlICJCaWdJbnRPYmplY3QuaCIKKyNp
bmNsdWRlICJCb29sZWFuT2JqZWN0LmgiCisjaW5jbHVkZSAiQnJhbmRlZFN0cnVjdHVyZS5oIgog
I2luY2x1ZGUgIkJ1aWx0aW5FeGVjdXRhYmxlcy5oIgorI2luY2x1ZGUgIkNsb25lZEFyZ3VtZW50
cy5oIgogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgogI2luY2x1ZGUgIkNvZGVCbG9ja1NldElubGlu
ZXMuaCIKICNpbmNsdWRlICJDb2xsZWN0aW5nU2NvcGUuaCIKICNpbmNsdWRlICJDb25zZXJ2YXRp
dmVSb290cy5oIgorI2luY2x1ZGUgIkRhdGVJbnN0YW5jZS5oIgorI2luY2x1ZGUgIkRlYnVnZ2Vy
U2NvcGUuaCIKICNpbmNsdWRlICJFZGVuR0NBY3Rpdml0eUNhbGxiYWNrLmgiCiAjaW5jbHVkZSAi
RXhjZXB0aW9uLmgiCisjaW5jbHVkZSAiRmFzdE1hbGxvY0FsaWduZWRNZW1vcnlBbGxvY2F0b3Iu
aCIKICNpbmNsdWRlICJGdWxsR0NBY3Rpdml0eUNhbGxiYWNrLmgiCiAjaW5jbHVkZSAiRnVuY3Rp
b25FeGVjdXRhYmxlSW5saW5lcy5oIgogI2luY2x1ZGUgIkdDQWN0aXZpdHlDYWxsYmFjay5oIgpA
QCAtMzUsNiArNDIsNyBAQAogI2luY2x1ZGUgIkdDSW5jb21pbmdSZWZDb3VudGVkU2V0SW5saW5l
cy5oIgogI2luY2x1ZGUgIkdDU2VnbWVudGVkQXJyYXlJbmxpbmVzLmgiCiAjaW5jbHVkZSAiR0NU
eXBlTWFwLmgiCisjaW5jbHVkZSAiR2V0dGVyU2V0dGVyLmgiCiAjaW5jbHVkZSAiSGFzT3duUHJv
cGVydHlDYWNoZS5oIgogI2luY2x1ZGUgIkhlYXBIZWxwZXJQb29sLmgiCiAjaW5jbHVkZSAiSGVh
cEl0ZXJhdGlvblNjb3BlLmgiCkBAIC00MywzNyArNTEsMTE4IEBACiAjaW5jbHVkZSAiSGVhcFZl
cmlmaWVyLmgiCiAjaW5jbHVkZSAiSW5jcmVtZW50YWxTd2VlcGVyLmgiCiAjaW5jbHVkZSAiSW50
ZXJwcmV0ZXIuaCIKKyNpbmNsdWRlICJJbnRsQ29sbGF0b3IuaCIKKyNpbmNsdWRlICJJbnRsRGF0
ZVRpbWVGb3JtYXQuaCIKKyNpbmNsdWRlICJJbnRsRGlzcGxheU5hbWVzLmgiCisjaW5jbHVkZSAi
SW50bExpc3RGb3JtYXQuaCIKKyNpbmNsdWRlICJJbnRsTG9jYWxlLmgiCisjaW5jbHVkZSAiSW50
bE51bWJlckZvcm1hdC5oIgorI2luY2x1ZGUgIkludGxQbHVyYWxSdWxlcy5oIgorI2luY2x1ZGUg
IkludGxSZWxhdGl2ZVRpbWVGb3JtYXQuaCIKKyNpbmNsdWRlICJJbnRsU2VnbWVudEl0ZXJhdG9y
LmgiCisjaW5jbHVkZSAiSW50bFNlZ21lbnRlci5oIgorI2luY2x1ZGUgIkludGxTZWdtZW50cy5o
IgogI2luY2x1ZGUgIklzb0NlbGxTZXRJbmxpbmVzLmgiCisjaW5jbHVkZSAiSXNvSW5saW5lZEhl
YXBDZWxsVHlwZUlubGluZXMuaCIKICNpbmNsdWRlICJKSVRTdHViUm91dGluZVNldC5oIgogI2lu
Y2x1ZGUgIkpJVFdvcmtsaXN0SW5saW5lcy5oIgorI2luY2x1ZGUgIkpTQVBJR2xvYmFsT2JqZWN0
LmgiCisjaW5jbHVkZSAiSlNBUElWYWx1ZVdyYXBwZXIuaCIKKyNpbmNsdWRlICJKU0FQSVdyYXBw
ZXJPYmplY3QuaCIKKyNpbmNsdWRlICJKU0FycmF5LmgiCisjaW5jbHVkZSAiSlNBcnJheUJ1ZmZl
ci5oIgorI2luY2x1ZGUgIkpTQXJyYXlJdGVyYXRvci5oIgorI2luY2x1ZGUgIkpTQXN5bmNHZW5l
cmF0b3IuaCIKKyNpbmNsdWRlICJKU0JpZ0ludC5oIgorI2luY2x1ZGUgIkpTQm91bmRGdW5jdGlv
bi5oIgorI2luY2x1ZGUgIkpTQ2FsbGJhY2tDb25zdHJ1Y3Rvci5oIgorI2luY2x1ZGUgIkpTQ2Fs
bGJhY2tGdW5jdGlvbi5oIgorI2luY2x1ZGUgIkpTQ2FsbGJhY2tPYmplY3QuaCIKKyNpbmNsdWRl
ICJKU0NhbGxlZS5oIgorI2luY2x1ZGUgIkpTQ3VzdG9tR2V0dGVyRnVuY3Rpb24uaCIKKyNpbmNs
dWRlICJKU0N1c3RvbVNldHRlckZ1bmN0aW9uLmgiCisjaW5jbHVkZSAiSlNEYXRhVmlldy5oIgog
I2luY2x1ZGUgIkpTRmluYWxpemF0aW9uUmVnaXN0cnkuaCIKKyNpbmNsdWRlICJKU0Z1bmN0aW9u
LmgiCisjaW5jbHVkZSAiSlNHbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQuaCIKKyNpbmNsdWRlICJK
U0dsb2JhbE9iamVjdC5oIgorI2luY2x1ZGUgIkpTSW5qZWN0ZWRTY3JpcHRIb3N0LmgiCisjaW5j
bHVkZSAiSlNKYXZhU2NyaXB0Q2FsbEZyYW1lLmgiCisjaW5jbHVkZSAiSlNNYXAuaCIKKyNpbmNs
dWRlICJKU01hcEl0ZXJhdG9yLmgiCisjaW5jbHVkZSAiSlNNb2R1bGVOYW1lc3BhY2VPYmplY3Qu
aCIKKyNpbmNsdWRlICJKU01vZHVsZVJlY29yZC5oIgorI2luY2x1ZGUgIkpTTmF0aXZlU3RkRnVu
Y3Rpb24uaCIKKyNpbmNsdWRlICJKU1Byb21pc2UuaCIKKyNpbmNsdWRlICJKU1Byb3BlcnR5TmFt
ZUVudW1lcmF0b3IuaCIKKyNpbmNsdWRlICJKU1Byb3h5LmgiCisjaW5jbHVkZSAiSlNTY3JpcHRG
ZXRjaFBhcmFtZXRlcnMuaCIKKyNpbmNsdWRlICJKU1NjcmlwdEZldGNoZXIuaCIKKyNpbmNsdWRl
ICJKU1NldC5oIgorI2luY2x1ZGUgIkpTU2V0SXRlcmF0b3IuaCIKKyNpbmNsdWRlICJKU1NvdXJj
ZUNvZGUuaCIKKyNpbmNsdWRlICJKU1N0cmluZy5oIgorI2luY2x1ZGUgIkpTU3RyaW5nSXRlcmF0
b3IuaCIKKyNpbmNsdWRlICJKU1RlbXBsYXRlT2JqZWN0RGVzY3JpcHRvci5oIgorI2luY2x1ZGUg
IkpTVG9XYXNtSUNDYWxsZWUuaCIKKyNpbmNsdWRlICJKU1R5cGVkQXJyYXlzLmgiCiAjaW5jbHVk
ZSAiSlNWaXJ0dWFsTWFjaGluZUludGVybmFsLmgiCiAjaW5jbHVkZSAiSlNXZWFrTWFwLmgiCiAj
aW5jbHVkZSAiSlNXZWFrT2JqZWN0UmVmLmgiCiAjaW5jbHVkZSAiSlNXZWFrU2V0LmgiCiAjaW5j
bHVkZSAiSlNXZWJBc3NlbWJseUNvZGVCbG9jay5oIgorI2luY2x1ZGUgIkpTV2ViQXNzZW1ibHlF
eGNlcHRpb24uaCIKKyNpbmNsdWRlICJKU1dlYkFzc2VtYmx5R2xvYmFsLmgiCisjaW5jbHVkZSAi
SlNXZWJBc3NlbWJseUluc3RhbmNlLmgiCisjaW5jbHVkZSAiSlNXZWJBc3NlbWJseU1lbW9yeS5o
IgorI2luY2x1ZGUgIkpTV2ViQXNzZW1ibHlNb2R1bGUuaCIKKyNpbmNsdWRlICJKU1dlYkFzc2Vt
Ymx5VGFibGUuaCIKKyNpbmNsdWRlICJKU1dlYkFzc2VtYmx5VGFnLmgiCisjaW5jbHVkZSAiSlNX
aXRoU2NvcGUuaCIKICNpbmNsdWRlICJNYWNoaW5lU3RhY2tNYXJrZXIuaCIKICNpbmNsdWRlICJN
YXJrU3RhY2tNZXJnaW5nQ29uc3RyYWludC5oIgogI2luY2x1ZGUgIk1hcmtlZEpTVmFsdWVSZWZB
cnJheS5oIgogI2luY2x1ZGUgIk1hcmtlZFNwYWNlSW5saW5lcy5oIgogI2luY2x1ZGUgIk1hcmtp
bmdDb25zdHJhaW50U2V0LmgiCisjaW5jbHVkZSAiTmF0aXZlRXhlY3V0YWJsZS5oIgogI2luY2x1
ZGUgIlByZXZlbnRDb2xsZWN0aW9uU2NvcGUuaCIKKyNpbmNsdWRlICJQcm9ncmFtRXhlY3V0YWJs
ZS5oIgorI2luY2x1ZGUgIlByb3BlcnR5VGFibGUuaCIKKyNpbmNsdWRlICJQcm94eVJldm9rZS5o
IgorI2luY2x1ZGUgIlJlZ0V4cE9iamVjdC5oIgogI2luY2x1ZGUgIlNhbXBsaW5nUHJvZmlsZXIu
aCIKKyNpbmNsdWRlICJTY29wZWRBcmd1bWVudHMuaCIKICNpbmNsdWRlICJTaGFkb3dDaGlja2Vu
LmgiCisjaW5jbHVkZSAiU2hhZG93UmVhbG1PYmplY3QuaCIKICNpbmNsdWRlICJTcGFjZVRpbWVN
dXRhdG9yU2NoZWR1bGVyLmgiCiAjaW5jbHVkZSAiU3RvY2hhc3RpY1NwYWNlVGltZU11dGF0b3JT
Y2hlZHVsZXIuaCIKICNpbmNsdWRlICJTdG9wSWZOZWNlc3NhcnlUaW1lci5oIgorI2luY2x1ZGUg
IlN0cmljdEV2YWxBY3RpdmF0aW9uLmgiCisjaW5jbHVkZSAiU3RyaW5nT2JqZWN0LmgiCisjaW5j
bHVkZSAiU3RydWN0dXJlQ2hhaW4uaCIKICNpbmNsdWRlICJTdWJzcGFjZUlubGluZXMuaCIKICNp
bmNsdWRlICJTdXBlclNhbXBsZXIuaCIKICNpbmNsdWRlICJTd2VlcGluZ1Njb3BlLmgiCisjaW5j
bHVkZSAiU3ltYm9sT2JqZWN0LmgiCiAjaW5jbHVkZSAiU3ltYm9sVGFibGVJbmxpbmVzLmgiCiAj
aW5jbHVkZSAiU3luY2hyb25vdXNTdG9wVGhlV29ybGRNdXRhdG9yU2NoZWR1bGVyLmgiCisjaW5j
bHVkZSAiVGVtcG9yYWxDYWxlbmRhci5oIgorI2luY2x1ZGUgIlRlbXBvcmFsRHVyYXRpb24uaCIK
KyNpbmNsdWRlICJUZW1wb3JhbEluc3RhbnQuaCIKKyNpbmNsdWRlICJUZW1wb3JhbFBsYWluVGlt
ZS5oIgorI2luY2x1ZGUgIlRlbXBvcmFsVGltZVpvbmUuaCIKICNpbmNsdWRlICJUeXBlUHJvZmls
ZXIuaCIKICNpbmNsdWRlICJUeXBlUHJvZmlsZXJMb2cuaCIKKyNpbmNsdWRlICJVbmxpbmtlZEZ1
bmN0aW9uQ29kZUJsb2NrLmgiCisjaW5jbHVkZSAiVW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJs
b2NrLmgiCisjaW5jbHVkZSAiVW5saW5rZWRQcm9ncmFtQ29kZUJsb2NrLmgiCiAjaW5jbHVkZSAi
Vk0uaCIKICNpbmNsdWRlICJWZXJpZmllclNsb3RWaXNpdG9ySW5saW5lcy5oIgogI2luY2x1ZGUg
IldlYWtNYXBJbXBsSW5saW5lcy5oIgogI2luY2x1ZGUgIldlYWtTZXRJbmxpbmVzLmgiCisjaW5j
bHVkZSAiV2ViQXNzZW1ibHlGdW5jdGlvbi5oIgorI2luY2x1ZGUgIldlYkFzc2VtYmx5TW9kdWxl
UmVjb3JkLmgiCisjaW5jbHVkZSAiV2ViQXNzZW1ibHlXcmFwcGVyRnVuY3Rpb24uaCIKICNpbmNs
dWRlIDxhbGdvcml0aG0+CiAjaW5jbHVkZSA8d3RmL0NyeXB0b2dyYXBoaWNhbGx5UmFuZG9tTnVt
YmVyLmg+CiAjaW5jbHVkZSA8d3RmL0xpc3REdW1wLmg+CkBAIC05MCw3ICsxNzksMTMgQEAKICNp
bmNsdWRlIDx3dGYvc3BpL2NvY29hL29iamNTUEkuaD4KICNlbmRpZgogCisjaWYgSlNDX09CSkNf
QVBJX0VOQUJMRUQKKyNpbmNsdWRlICJPYmpDQ2FsbGJhY2tGdW5jdGlvbi5oIgorI2VuZGlmCisK
ICNpZmRlZiBKU0NfR0xJQl9BUElfRU5BQkxFRAorI2luY2x1ZGUgIkpTQVBJV3JhcHBlckdsb2Jh
bE9iamVjdC5oIgorI2luY2x1ZGUgIkpTQ0NhbGxiYWNrRnVuY3Rpb24uaCIKICNpbmNsdWRlICJK
U0NHTGliV3JhcHBlck9iamVjdC5oIgogI2VuZGlmCiAKQEAgLTI4Niw2ICszODEsMTE0IEBAIEhl
YXA6OkhlYXAoVk0mIHZtLCBIZWFwVHlwZSBoZWFwVHlwZSkKICAgICAsIG1faGVscGVyQ2xpZW50
KCZoZWFwSGVscGVyUG9vbCgpKQogICAgICwgbV90aHJlYWRMb2NrKEJveDxMb2NrPjo6Y3JlYXRl
KCkpCiAgICAgLCBtX3RocmVhZENvbmRpdGlvbihBdXRvbWF0aWNUaHJlYWRDb25kaXRpb246OmNy
ZWF0ZSgpKQorCisgICAgLy8gSGVhcENlbGxUeXBlcworICAgICwgYXV4aWxpYXJ5SGVhcENlbGxU
eXBlKENlbGxBdHRyaWJ1dGVzKERvZXNOb3ROZWVkRGVzdHJ1Y3Rpb24sIEhlYXBDZWxsOjpBdXhp
bGlhcnkpKQorICAgICwgaW1tdXRhYmxlQnV0dGVyZmx5SGVhcENlbGxUeXBlKENlbGxBdHRyaWJ1
dGVzKERvZXNOb3ROZWVkRGVzdHJ1Y3Rpb24sIEhlYXBDZWxsOjpKU0NlbGxXaXRoSW5kZXhpbmdI
ZWFkZXIpKQorICAgICwgY2VsbEhlYXBDZWxsVHlwZShDZWxsQXR0cmlidXRlcyhEb2VzTm90TmVl
ZERlc3RydWN0aW9uLCBIZWFwQ2VsbDo6SlNDZWxsKSkKKyAgICAsIGRlc3RydWN0aWJsZUNlbGxI
ZWFwQ2VsbFR5cGUoQ2VsbEF0dHJpYnV0ZXMoTmVlZHNEZXN0cnVjdGlvbiwgSGVhcENlbGw6OkpT
Q2VsbCkpCisvLyAgICAsIGFwaUdsb2JhbE9iamVjdEhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5
cGU6OkFyZ3M8SlNBUElHbG9iYWxPYmplY3Q+KCkpCisvLyAgICAsIGNhbGxiYWNrQ29uc3RydWN0
b3JIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpBcmdzPEpTQ2FsbGJhY2tDb25zdHJ1Y3Rv
cj4oKSkKKy8vICAgICwgY2FsbGJhY2tHbG9iYWxPYmplY3RIZWFwQ2VsbFR5cGUoSXNvSGVhcENl
bGxUeXBlOjpBcmdzPEpTQ2FsbGJhY2tPYmplY3Q8SlNHbG9iYWxPYmplY3Q+PigpKQorLy8gICAg
LCBjYWxsYmFja09iamVjdEhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OkFyZ3M8SlNDYWxs
YmFja09iamVjdDxKU05vbkZpbmFsT2JqZWN0Pj4oKSkKKy8vICAgICwgY3VzdG9tR2V0dGVyRnVu
Y3Rpb25IZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpBcmdzPEpTQ3VzdG9tR2V0dGVyRnVu
Y3Rpb24+KCkpCisvLyAgICAsIGN1c3RvbVNldHRlckZ1bmN0aW9uSGVhcENlbGxUeXBlKElzb0hl
YXBDZWxsVHlwZTo6QXJnczxKU0N1c3RvbVNldHRlckZ1bmN0aW9uPigpKQorLy8gICAgLCBkYXRl
SW5zdGFuY2VIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpBcmdzPERhdGVJbnN0YW5jZT4o
KSkKKy8vICAgICwgZXJyb3JJbnN0YW5jZUhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OkFy
Z3M8RXJyb3JJbnN0YW5jZT4oKSkKKy8vICAgICwgZmluYWxpemF0aW9uUmVnaXN0cnlDZWxsVHlw
ZShJc29IZWFwQ2VsbFR5cGU6OkFyZ3M8SlNGaW5hbGl6YXRpb25SZWdpc3RyeT4oKSkKKy8vICAg
ICwgZ2xvYmFsTGV4aWNhbEVudmlyb25tZW50SGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6
QXJnczxKU0dsb2JhbExleGljYWxFbnZpcm9ubWVudD4oKSkKKy8vICAgICwgZ2xvYmFsT2JqZWN0
SGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6QXJnczxKU0dsb2JhbE9iamVjdD4oKSkKKy8v
ICAgICwgaW5qZWN0ZWRTY3JpcHRIb3N0U3BhY2VIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBl
OjpBcmdzPEluc3BlY3Rvcjo6SlNJbmplY3RlZFNjcmlwdEhvc3Q+KCkpCisvLyAgICAsIGphdmFT
Y3JpcHRDYWxsRnJhbWVIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpBcmdzPEluc3BlY3Rv
cjo6SlNKYXZhU2NyaXB0Q2FsbEZyYW1lPigpKQorLy8gICAgLCBqc01vZHVsZVJlY29yZEhlYXBD
ZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OkFyZ3M8SlNNb2R1bGVSZWNvcmQ+KCkpCisvLyAgICAs
IG1vZHVsZU5hbWVzcGFjZU9iamVjdEhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OkFyZ3M8
SlNNb2R1bGVOYW1lc3BhY2VPYmplY3Q+KCkpCisvLyAgICAsIG5hdGl2ZVN0ZEZ1bmN0aW9uSGVh
cENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6QXJnczxKU05hdGl2ZVN0ZEZ1bmN0aW9uPigpKQor
Ly8gICAgLCB3ZWFrTWFwSGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6QXJnczxKU1dlYWtN
YXA+KCkpCisvLyAgICAsIHdlYWtTZXRIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpBcmdz
PEpTV2Vha1NldD4oKSkKKyNpZiBKU0NfT0JKQ19BUElfRU5BQkxFRAorLy8gICAgLCBhcGlXcmFw
cGVyT2JqZWN0SGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6QXJnczxKU0NhbGxiYWNrT2Jq
ZWN0PEpTQVBJV3JhcHBlck9iamVjdD4+KCkpCisvLyAgICAsIG9iakNDYWxsYmFja0Z1bmN0aW9u
SGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6QXJnczxPYmpDQ2FsbGJhY2tGdW5jdGlvbj4o
KSkKKyNlbmRpZgorI2lmZGVmIEpTQ19HTElCX0FQSV9FTkFCTEVECisvLyAgICAsIGFwaVdyYXBw
ZXJPYmplY3RIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpBcmdzPEpTQ2FsbGJhY2tPYmpl
Y3Q8SlNBUElXcmFwcGVyT2JqZWN0Pj4oKSkKKy8vICAgICwgY2FsbGJhY2tBUElXcmFwcGVyR2xv
YmFsT2JqZWN0SGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6QXJnczxKU0NhbGxiYWNrT2Jq
ZWN0PEpTQVBJV3JhcHBlckdsb2JhbE9iamVjdD4+KCkpCisvLyAgICAsIGpzY0NhbGxiYWNrRnVu
Y3Rpb25IZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpBcmdzPEpTQ0NhbGxiYWNrRnVuY3Rp
b24+KCkpCisjZW5kaWYKKy8vICAgICwgaW50bENvbGxhdG9ySGVhcENlbGxUeXBlKElzb0hlYXBD
ZWxsVHlwZTo6QXJnczxJbnRsQ29sbGF0b3I+KCkpCisvLyAgICAsIGludGxEYXRlVGltZUZvcm1h
dEhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OkFyZ3M8SW50bERhdGVUaW1lRm9ybWF0Pigp
KQorLy8gICAgLCBpbnRsRGlzcGxheU5hbWVzSGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6
QXJnczxJbnRsRGlzcGxheU5hbWVzPigpKQorLy8gICAgLCBpbnRsTGlzdEZvcm1hdEhlYXBDZWxs
VHlwZShJc29IZWFwQ2VsbFR5cGU6OkFyZ3M8SW50bExpc3RGb3JtYXQ+KCkpCisvLyAgICAsIGlu
dGxMb2NhbGVIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpBcmdzPEludGxMb2NhbGU+KCkp
CisvLyAgICAsIGludGxOdW1iZXJGb3JtYXRIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpB
cmdzPEludGxOdW1iZXJGb3JtYXQ+KCkpCisvLyAgICAsIGludGxQbHVyYWxSdWxlc0hlYXBDZWxs
VHlwZShJc29IZWFwQ2VsbFR5cGU6OkFyZ3M8SW50bFBsdXJhbFJ1bGVzPigpKQorLy8gICAgLCBp
bnRsUmVsYXRpdmVUaW1lRm9ybWF0SGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6QXJnczxJ
bnRsUmVsYXRpdmVUaW1lRm9ybWF0PigpKQorLy8gICAgLCBpbnRsU2VnbWVudEl0ZXJhdG9ySGVh
cENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6QXJnczxJbnRsU2VnbWVudEl0ZXJhdG9yPigpKQor
Ly8gICAgLCBpbnRsU2VnbWVudGVySGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6QXJnczxJ
bnRsU2VnbWVudGVyPigpKQorLy8gICAgLCBpbnRsU2VnbWVudHNIZWFwQ2VsbFR5cGUoSXNvSGVh
cENlbGxUeXBlOjpBcmdzPEludGxTZWdtZW50cz4oKSkKKyNpZiBFTkFCTEUoV0VCQVNTRU1CTFkp
CisvLyAgICAsIHdlYkFzc2VtYmx5Q29kZUJsb2NrSGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlw
ZTo6QXJnczxKU1dlYkFzc2VtYmx5Q29kZUJsb2NrPigpKQorLy8gICAgLCB3ZWJBc3NlbWJseUV4
Y2VwdGlvbkhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OkFyZ3M8SlNXZWJBc3NlbWJseUV4
Y2VwdGlvbj4oKSkKKy8vICAgICwgd2ViQXNzZW1ibHlGdW5jdGlvbkhlYXBDZWxsVHlwZShJc29I
ZWFwQ2VsbFR5cGU6OkFyZ3M8V2ViQXNzZW1ibHlGdW5jdGlvbj4oKSkKKy8vICAgICwgd2ViQXNz
ZW1ibHlHbG9iYWxIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpBcmdzPEpTV2ViQXNzZW1i
bHlHbG9iYWw+KCkpCisvLyAgICAsIHdlYkFzc2VtYmx5SW5zdGFuY2VIZWFwQ2VsbFR5cGUoSXNv
SGVhcENlbGxUeXBlOjpBcmdzPEpTV2ViQXNzZW1ibHlJbnN0YW5jZT4oKSkKKy8vICAgICwgd2Vi
QXNzZW1ibHlNZW1vcnlIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpBcmdzPEpTV2ViQXNz
ZW1ibHlNZW1vcnk+KCkpCisvLyAgICAsIHdlYkFzc2VtYmx5TW9kdWxlSGVhcENlbGxUeXBlKElz
b0hlYXBDZWxsVHlwZTo6QXJnczxKU1dlYkFzc2VtYmx5TW9kdWxlPigpKQorLy8gICAgLCB3ZWJB
c3NlbWJseU1vZHVsZVJlY29yZEhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OkFyZ3M8V2Vi
QXNzZW1ibHlNb2R1bGVSZWNvcmQ+KCkpCisvLyAgICAsIHdlYkFzc2VtYmx5VGFibGVIZWFwQ2Vs
bFR5cGUoSXNvSGVhcENlbGxUeXBlOjpBcmdzPEpTV2ViQXNzZW1ibHlUYWJsZT4oKSkKKy8vICAg
ICwgd2ViQXNzZW1ibHlUYWdIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpBcmdzPEpTV2Vi
QXNzZW1ibHlUYWc+KCkpCisjZW5kaWYKKworICAgIC8vIEFsaWduZWRNZW1vcnlBbGxvY2F0b3Jz
CisgICAgLCBmYXN0TWFsbG9jQWxsb2NhdG9yKG1ha2VVbmlxdWU8RmFzdE1hbGxvY0FsaWduZWRN
ZW1vcnlBbGxvY2F0b3I+KCkpCisgICAgLCBwcmltaXRpdmVHaWdhY2FnZUFsbG9jYXRvcihtYWtl
VW5pcXVlPEdpZ2FjYWdlQWxpZ25lZE1lbW9yeUFsbG9jYXRvcj4oR2lnYWNhZ2U6OlByaW1pdGl2
ZSkpCisgICAgLCBqc1ZhbHVlR2lnYWNhZ2VBbGxvY2F0b3IobWFrZVVuaXF1ZTxHaWdhY2FnZUFs
aWduZWRNZW1vcnlBbGxvY2F0b3I+KEdpZ2FjYWdlOjpKU1ZhbHVlKSkKKworICAgIC8vIFN1YnNw
YWNlcworICAgICwgcHJpbWl0aXZlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZSgiUHJpbWl0aXZlIEdp
Z2FjYWdlIEF1eGlsaWFyeSIsICp0aGlzLCBhdXhpbGlhcnlIZWFwQ2VsbFR5cGUsIHByaW1pdGl2
ZUdpZ2FjYWdlQWxsb2NhdG9yLmdldCgpKSAvLyBIYXNoOjB4M2U3Y2Q3NjIKKyAgICAsIGpzVmFs
dWVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlKCJKU1ZhbHVlIEdpZ2FjYWdlIEF1eGlsaWFyeSIsICp0
aGlzLCBhdXhpbGlhcnlIZWFwQ2VsbFR5cGUsIGpzVmFsdWVHaWdhY2FnZUFsbG9jYXRvci5nZXQo
KSkgLy8gSGFzaDoweDI0MWU5NDYKKyAgICAsIGltbXV0YWJsZUJ1dHRlcmZseUpTVmFsdWVHaWdh
Y2FnZUF1eGlsaWFyeVNwYWNlKCJJbW11dGFibGVCdXR0ZXJmbHkgR2lnYWNhZ2UgSlNDZWxsV2l0
aEluZGV4aW5nSGVhZGVyIiwgKnRoaXMsIGltbXV0YWJsZUJ1dHRlcmZseUhlYXBDZWxsVHlwZSwg
anNWYWx1ZUdpZ2FjYWdlQWxsb2NhdG9yLmdldCgpKSAvLyBIYXNoOjB4N2E5NDUzMDAKKyAgICAs
IGNlbGxTcGFjZSgiSlNDZWxsIiwgKnRoaXMsIGNlbGxIZWFwQ2VsbFR5cGUsIGZhc3RNYWxsb2NB
bGxvY2F0b3IuZ2V0KCkpIC8vIEhhc2g6MHhhZGZiNWE3OQorICAgICwgdmFyaWFibGVTaXplZENl
bGxTcGFjZSgiVmFyaWFibGUgU2l6ZWQgSlNDZWxsIiwgKnRoaXMsIGNlbGxIZWFwQ2VsbFR5cGUs
IGZhc3RNYWxsb2NBbGxvY2F0b3IuZ2V0KCkpIC8vIEhhc2g6MHhiY2Q3NjljYworICAgICwgZGVz
dHJ1Y3RpYmxlT2JqZWN0U3BhY2UoIkpTRGVzdHJ1Y3RpYmxlT2JqZWN0IiwgKnRoaXMsIGRlc3Ry
dWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSwgZmFzdE1hbGxvY0FsbG9jYXRvci5nZXQoKSkgLy8g
SGFzaDoweDRmNWVkN2E5CisgICAgLCBhcnJheVNwYWNlIElTT19TVUJTUEFDRV9JTklUKCp0aGlz
LCBjZWxsSGVhcENlbGxUeXBlLCBKU0FycmF5KQorICAgICwgYmlnSW50U3BhY2UgSVNPX1NVQlNQ
QUNFX0lOSVQoKnRoaXMsIGNlbGxIZWFwQ2VsbFR5cGUsIEpTQmlnSW50KQorICAgICwgY2FsbGVl
U3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoKnRoaXMsIGNlbGxIZWFwQ2VsbFR5cGUsIEpTQ2FsbGVl
KQorICAgICwgY2xvbmVkQXJndW1lbnRzU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoKnRoaXMsIGNl
bGxIZWFwQ2VsbFR5cGUsIENsb25lZEFyZ3VtZW50cykKKyAgICAsIGN1c3RvbUdldHRlclNldHRl
clNwYWNlIElTT19TVUJTUEFDRV9JTklUKCp0aGlzLCBjZWxsSGVhcENlbGxUeXBlLCBDdXN0b21H
ZXR0ZXJTZXR0ZXIpCisgICAgLCBkYXRlSW5zdGFuY2VTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVCgq
dGhpcywgZGF0ZUluc3RhbmNlSGVhcENlbGxUeXBlLCBEYXRlSW5zdGFuY2UpCisgICAgLCBkb21B
dHRyaWJ1dGVHZXR0ZXJTZXR0ZXJTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVCgqdGhpcywgY2VsbEhl
YXBDZWxsVHlwZSwgRE9NQXR0cmlidXRlR2V0dGVyU2V0dGVyKQorICAgICwgZXhjZXB0aW9uU3Bh
Y2UgSVNPX1NVQlNQQUNFX0lOSVQoKnRoaXMsIGRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUs
IEV4Y2VwdGlvbikKKyAgICAsIGV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2VTcGFjZSBJU09fU1VC
U1BBQ0VfSU5JVCgqdGhpcywgY2VsbEhlYXBDZWxsVHlwZSwgRXhlY3V0YWJsZVRvQ29kZUJsb2Nr
RWRnZSkgLy8gSGFzaDoweDdiNzMwYjIwCisgICAgLCBmdW5jdGlvblNwYWNlIElTT19TVUJTUEFD
RV9JTklUKCp0aGlzLCBjZWxsSGVhcENlbGxUeXBlLCBKU0Z1bmN0aW9uKSAvLyBIYXNoOjB4ODAw
ZmNhNzIKKyAgICAsIGdldHRlclNldHRlclNwYWNlIElTT19TVUJTUEFDRV9JTklUKCp0aGlzLCBj
ZWxsSGVhcENlbGxUeXBlLCBHZXR0ZXJTZXR0ZXIpCisgICAgLCBnbG9iYWxMZXhpY2FsRW52aXJv
bm1lbnRTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVCgqdGhpcywgZ2xvYmFsTGV4aWNhbEVudmlyb25t
ZW50SGVhcENlbGxUeXBlLCBKU0dsb2JhbExleGljYWxFbnZpcm9ubWVudCkKKyAgICAsIGludGVy
bmFsRnVuY3Rpb25TcGFjZSBJU09fU1VCU1BBQ0VfSU5JVCgqdGhpcywgY2VsbEhlYXBDZWxsVHlw
ZSwgSW50ZXJuYWxGdW5jdGlvbikgLy8gSGFzaDoweGY4NDVjNDY0CisgICAgLCBqc1Byb3h5U3Bh
Y2UgSVNPX1NVQlNQQUNFX0lOSVQoKnRoaXMsIGNlbGxIZWFwQ2VsbFR5cGUsIEpTUHJveHkpCisg
ICAgLCBuYXRpdmVFeGVjdXRhYmxlU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoKnRoaXMsIGRlc3Ry
dWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUsIE5hdGl2ZUV4ZWN1dGFibGUpIC8vIEhhc2g6MHg2NzU2
N2Y5NQorICAgICwgbnVtYmVyT2JqZWN0U3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoKnRoaXMsIGNl
bGxIZWFwQ2VsbFR5cGUsIE51bWJlck9iamVjdCkKKyAgICAsIHBsYWluT2JqZWN0U3BhY2UgSVNP
X1NVQlNQQUNFX0lOSVQoKnRoaXMsIGNlbGxIZWFwQ2VsbFR5cGUsIEpTTm9uRmluYWxPYmplY3Qp
IC8vIE1haW5seSB1c2VkIGZvciBwcm90b3R5cGVzLgorICAgICwgcHJvbWlzZVNwYWNlIElTT19T
VUJTUEFDRV9JTklUKCp0aGlzLCBjZWxsSGVhcENlbGxUeXBlLCBKU1Byb21pc2UpCisgICAgLCBw
cm9wZXJ0eU5hbWVFbnVtZXJhdG9yU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoKnRoaXMsIGNlbGxI
ZWFwQ2VsbFR5cGUsIEpTUHJvcGVydHlOYW1lRW51bWVyYXRvcikKKyAgICAsIHByb3BlcnR5VGFi
bGVTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVCgqdGhpcywgZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxs
VHlwZSwgUHJvcGVydHlUYWJsZSkgLy8gSGFzaDoweGM2YmM5ZjEyCisgICAgLCByZWdFeHBTcGFj
ZSBJU09fU1VCU1BBQ0VfSU5JVCgqdGhpcywgZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZSwg
UmVnRXhwKQorICAgICwgcmVnRXhwT2JqZWN0U3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoKnRoaXMs
IGNlbGxIZWFwQ2VsbFR5cGUsIFJlZ0V4cE9iamVjdCkKKyAgICAsIHJvcGVTdHJpbmdTcGFjZSBJ
U09fU1VCU1BBQ0VfSU5JVCgqdGhpcywgc3RyaW5nSGVhcENlbGxUeXBlLCBKU1JvcGVTdHJpbmcp
CisgICAgLCBzY29wZWRBcmd1bWVudHNTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVCgqdGhpcywgY2Vs
bEhlYXBDZWxsVHlwZSwgU2NvcGVkQXJndW1lbnRzKQorICAgICwgc3BhcnNlQXJyYXlWYWx1ZU1h
cFNwYWNlIElTT19TVUJTUEFDRV9JTklUKCp0aGlzLCBkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxU
eXBlLCBTcGFyc2VBcnJheVZhbHVlTWFwKQorICAgICwgc3RyaW5nU3BhY2UgSVNPX1NVQlNQQUNF
X0lOSVQoKnRoaXMsIHN0cmluZ0hlYXBDZWxsVHlwZSwgSlNTdHJpbmcpIC8vIEhhc2g6MHg5MGNm
NzU4ZgorICAgICwgc3RyaW5nT2JqZWN0U3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoKnRoaXMsIGNl
bGxIZWFwQ2VsbFR5cGUsIFN0cmluZ09iamVjdCkKKyAgICAsIHN0cnVjdHVyZUNoYWluU3BhY2Ug
SVNPX1NVQlNQQUNFX0lOSVQoKnRoaXMsIGNlbGxIZWFwQ2VsbFR5cGUsIFN0cnVjdHVyZUNoYWlu
KQorICAgICwgc3RydWN0dXJlUmFyZURhdGFTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVCgqdGhpcywg
ZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZSwgU3RydWN0dXJlUmFyZURhdGEpIC8vIEhhc2g6
MHhhY2E0ZTYyZAorICAgICwgc3RydWN0dXJlU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoKnRoaXMs
IGRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUsIFN0cnVjdHVyZSkgLy8gSGFzaDoweDFmMWJj
ZGNhCisgICAgLCBicmFuZGVkU3RydWN0dXJlU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoKnRoaXMs
IGRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUsIEJyYW5kZWRTdHJ1Y3R1cmUpCisgICAgLCBz
eW1ib2xUYWJsZVNwYWNlIElTT19TVUJTUEFDRV9JTklUKCp0aGlzLCBkZXN0cnVjdGlibGVDZWxs
SGVhcENlbGxUeXBlLCBTeW1ib2xUYWJsZSkgLy8gSGFzaDoweGM1MjE1YWZkCisgICAgLCBleGVj
dXRhYmxlVG9Db2RlQmxvY2tFZGdlc1dpdGhDb25zdHJhaW50cyhleGVjdXRhYmxlVG9Db2RlQmxv
Y2tFZGdlU3BhY2UpCisgICAgLCBleGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlc1dpdGhGaW5hbGl6
ZXJzKGV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2VTcGFjZSkKKyAgICAsIGNvZGVCbG9ja1NwYWNl
IElTT19TVUJTUEFDRV9JTklUKCp0aGlzLCBkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlLCBD
b2RlQmxvY2spIC8vIEhhc2g6MHg3N2U2NmVjOQorICAgICwgZnVuY3Rpb25FeGVjdXRhYmxlU3Bh
Y2UgSVNPX1NVQlNQQUNFX0lOSVQoKnRoaXMsIGRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUs
IEZ1bmN0aW9uRXhlY3V0YWJsZSkgLy8gSGFzaDoweDVkMTU4ZjMKKyAgICAsIHByb2dyYW1FeGVj
dXRhYmxlU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoKnRoaXMsIGRlc3RydWN0aWJsZUNlbGxIZWFw
Q2VsbFR5cGUsIFByb2dyYW1FeGVjdXRhYmxlKSAvLyBIYXNoOjB4NTI3Yzc3ZTcKKyAgICAsIHVu
bGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoKnRoaXMsIGRl
c3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUsIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKSAv
LyBIYXNoOjB4ZjZiODI4ZDkKKwogewogICAgIG1fd29ybGRTdGF0ZS5zdG9yZSgwKTsKIApAQCAt
NTc5LDMxICs3ODIsMzEgQEAgdm9pZCBIZWFwOjpmaW5hbGl6ZVVuY29uZGl0aW9uYWxGaW5hbGl6
ZQogewogICAgIFZNJiB2bSA9IHRoaXMtPnZtKCk7CiAgICAgdm0uYnVpbHRpbkV4ZWN1dGFibGVz
KCktPmZpbmFsaXplVW5jb25kaXRpb25hbGx5KCk7Ci0gICAgZmluYWxpemVNYXJrZWRVbmNvbmRp
dGlvbmFsRmluYWxpemVyczxGdW5jdGlvbkV4ZWN1dGFibGU+KHZtLmZ1bmN0aW9uRXhlY3V0YWJs
ZVNwYWNlLnNwYWNlKTsKLSAgICBmaW5hbGl6ZU1hcmtlZFVuY29uZGl0aW9uYWxGaW5hbGl6ZXJz
PFN5bWJvbFRhYmxlPih2bS5zeW1ib2xUYWJsZVNwYWNlKTsKLSAgICBmaW5hbGl6ZU1hcmtlZFVu
Y29uZGl0aW9uYWxGaW5hbGl6ZXJzPEV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2U+KHZtLmV4ZWN1
dGFibGVUb0NvZGVCbG9ja0VkZ2VzV2l0aEZpbmFsaXplcnMpOyAvLyBXZSBydW4gdGhpcyBiZWZv
cmUgQ29kZUJsb2NrJ3MgdW5jb25kaXRpb25hbCBmaW5hbGl6ZXIgc2luY2UgQ29kZUJsb2NrIGxv
b2tzIGF0IHRoZSBvd25lciBleGVjdXRhYmxlJ3MgaW5zdGFsbGVkIENvZGVCbG9jayBpbiBpdHMg
ZmluYWxpemVVbmNvbmRpdGlvbmFsbHkuCi0gICAgdm0uZm9yRWFjaENvZGVCbG9ja1NwYWNlKAor
ICAgIGZpbmFsaXplTWFya2VkVW5jb25kaXRpb25hbEZpbmFsaXplcnM8RnVuY3Rpb25FeGVjdXRh
YmxlPihmdW5jdGlvbkV4ZWN1dGFibGVTcGFjZS5zcGFjZSk7CisgICAgZmluYWxpemVNYXJrZWRV
bmNvbmRpdGlvbmFsRmluYWxpemVyczxTeW1ib2xUYWJsZT4oc3ltYm9sVGFibGVTcGFjZSk7Cisg
ICAgZmluYWxpemVNYXJrZWRVbmNvbmRpdGlvbmFsRmluYWxpemVyczxFeGVjdXRhYmxlVG9Db2Rl
QmxvY2tFZGdlPihleGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlc1dpdGhGaW5hbGl6ZXJzKTsgLy8g
V2UgcnVuIHRoaXMgYmVmb3JlIENvZGVCbG9jaydzIHVuY29uZGl0aW9uYWwgZmluYWxpemVyIHNp
bmNlIENvZGVCbG9jayBsb29rcyBhdCB0aGUgb3duZXIgZXhlY3V0YWJsZSdzIGluc3RhbGxlZCBD
b2RlQmxvY2sgaW4gaXRzIGZpbmFsaXplVW5jb25kaXRpb25hbGx5LgorICAgIGZvckVhY2hDb2Rl
QmxvY2tTcGFjZSgKICAgICAgICAgWyZdIChhdXRvJiBzcGFjZSkgewogICAgICAgICAgICAgdGhp
cy0+ZmluYWxpemVNYXJrZWRVbmNvbmRpdGlvbmFsRmluYWxpemVyczxDb2RlQmxvY2s+KHNwYWNl
LnNldCk7CiAgICAgICAgIH0pOwotICAgIGZpbmFsaXplTWFya2VkVW5jb25kaXRpb25hbEZpbmFs
aXplcnM8U3RydWN0dXJlUmFyZURhdGE+KHZtLnN0cnVjdHVyZVJhcmVEYXRhU3BhY2UpOwotICAg
IGZpbmFsaXplTWFya2VkVW5jb25kaXRpb25hbEZpbmFsaXplcnM8VW5saW5rZWRGdW5jdGlvbkV4
ZWN1dGFibGU+KHZtLnVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlU3BhY2Uuc2V0KTsKLSAgICBp
ZiAodm0ubV93ZWFrU2V0U3BhY2UpCi0gICAgICAgIGZpbmFsaXplTWFya2VkVW5jb25kaXRpb25h
bEZpbmFsaXplcnM8SlNXZWFrU2V0Pigqdm0ubV93ZWFrU2V0U3BhY2UpOwotICAgIGlmICh2bS5t
X3dlYWtNYXBTcGFjZSkKLSAgICAgICAgZmluYWxpemVNYXJrZWRVbmNvbmRpdGlvbmFsRmluYWxp
emVyczxKU1dlYWtNYXA+KCp2bS5tX3dlYWtNYXBTcGFjZSk7Ci0gICAgaWYgKHZtLm1fd2Vha09i
amVjdFJlZlNwYWNlKQotICAgICAgICBmaW5hbGl6ZU1hcmtlZFVuY29uZGl0aW9uYWxGaW5hbGl6
ZXJzPEpTV2Vha09iamVjdFJlZj4oKnZtLm1fd2Vha09iamVjdFJlZlNwYWNlKTsKLSAgICBpZiAo
dm0ubV9lcnJvckluc3RhbmNlU3BhY2UpCi0gICAgICAgIGZpbmFsaXplTWFya2VkVW5jb25kaXRp
b25hbEZpbmFsaXplcnM8RXJyb3JJbnN0YW5jZT4oKnZtLm1fZXJyb3JJbnN0YW5jZVNwYWNlKTsK
KyAgICBmaW5hbGl6ZU1hcmtlZFVuY29uZGl0aW9uYWxGaW5hbGl6ZXJzPFN0cnVjdHVyZVJhcmVE
YXRhPihzdHJ1Y3R1cmVSYXJlRGF0YVNwYWNlKTsKKyAgICBmaW5hbGl6ZU1hcmtlZFVuY29uZGl0
aW9uYWxGaW5hbGl6ZXJzPFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlPih1bmxpbmtlZEZ1bmN0
aW9uRXhlY3V0YWJsZVNwYWNlLnNldCk7CisgICAgaWYgKG1fd2Vha1NldFNwYWNlKQorICAgICAg
ICBmaW5hbGl6ZU1hcmtlZFVuY29uZGl0aW9uYWxGaW5hbGl6ZXJzPEpTV2Vha1NldD4oKm1fd2Vh
a1NldFNwYWNlKTsKKyAgICBpZiAobV93ZWFrTWFwU3BhY2UpCisgICAgICAgIGZpbmFsaXplTWFy
a2VkVW5jb25kaXRpb25hbEZpbmFsaXplcnM8SlNXZWFrTWFwPigqbV93ZWFrTWFwU3BhY2UpOwor
ICAgIGlmIChtX3dlYWtPYmplY3RSZWZTcGFjZSkKKyAgICAgICAgZmluYWxpemVNYXJrZWRVbmNv
bmRpdGlvbmFsRmluYWxpemVyczxKU1dlYWtPYmplY3RSZWY+KCptX3dlYWtPYmplY3RSZWZTcGFj
ZSk7CisgICAgaWYgKG1fZXJyb3JJbnN0YW5jZVNwYWNlKQorICAgICAgICBmaW5hbGl6ZU1hcmtl
ZFVuY29uZGl0aW9uYWxGaW5hbGl6ZXJzPEVycm9ySW5zdGFuY2U+KCptX2Vycm9ySW5zdGFuY2VT
cGFjZSk7CiAKICAgICAvLyBGaW5hbGl6YXRpb25SZWdpc3RyaWVzIGN1cnJlbnRseSByZWx5IG9u
IHNlcmlhbCBmaW5hbGl6YXRpb24gYmVjYXVzZSB0aGV5IGNhbiBwb3N0IHRhc2tzIHRvIHRoZSBk
ZWZlcnJlZFdvcmtUaW1lciwgd2hpY2ggbm9ybWFsbHkgZXhwZWN0cyB0YXNrcyB0byBvbmx5IGJl
IHBvc3RlZCBieSB0aGUgQVBJIGxvY2sgaG9sZGVyLgotICAgIGlmICh2bS5tX2ZpbmFsaXphdGlv
blJlZ2lzdHJ5U3BhY2UpCi0gICAgICAgIGZpbmFsaXplTWFya2VkVW5jb25kaXRpb25hbEZpbmFs
aXplcnM8SlNGaW5hbGl6YXRpb25SZWdpc3RyeT4oKnZtLm1fZmluYWxpemF0aW9uUmVnaXN0cnlT
cGFjZSk7CisgICAgaWYgKG1fZmluYWxpemF0aW9uUmVnaXN0cnlTcGFjZSkKKyAgICAgICAgZmlu
YWxpemVNYXJrZWRVbmNvbmRpdGlvbmFsRmluYWxpemVyczxKU0ZpbmFsaXphdGlvblJlZ2lzdHJ5
PigqbV9maW5hbGl6YXRpb25SZWdpc3RyeVNwYWNlKTsKIAogI2lmIEVOQUJMRShXRUJBU1NFTUJM
WSkKLSAgICBpZiAodm0ubV93ZWJBc3NlbWJseUNvZGVCbG9ja1NwYWNlKQotICAgICAgICBmaW5h
bGl6ZU1hcmtlZFVuY29uZGl0aW9uYWxGaW5hbGl6ZXJzPEpTV2ViQXNzZW1ibHlDb2RlQmxvY2s+
KCp2bS5tX3dlYkFzc2VtYmx5Q29kZUJsb2NrU3BhY2UpOworICAgIGlmIChtX3dlYkFzc2VtYmx5
Q29kZUJsb2NrU3BhY2UpCisgICAgICAgIGZpbmFsaXplTWFya2VkVW5jb25kaXRpb25hbEZpbmFs
aXplcnM8SlNXZWJBc3NlbWJseUNvZGVCbG9jaz4oKm1fd2ViQXNzZW1ibHlDb2RlQmxvY2tTcGFj
ZSk7CiAjZW5kaWYKIH0KIApAQCAtOTA1LDcgKzExMDgsNyBAQCB2b2lkIEhlYXA6OmRlbGV0ZUFs
bENvZGVCbG9ja3MoRGVsZXRlQWxsCiAKICAgICBjb21wbGV0ZUFsbEpJVFBsYW5zKCk7CiAKLSAg
ICB2bS5mb3JFYWNoU2NyaXB0RXhlY3V0YWJsZVNwYWNlKAorICAgIGZvckVhY2hTY3JpcHRFeGVj
dXRhYmxlU3BhY2UoCiAgICAgICAgIFsmXSAoYXV0byYgc3BhY2VBbmRTZXQpIHsKICAgICAgICAg
ICAgIEhlYXBJdGVyYXRpb25TY29wZSBoZWFwSXRlcmF0aW9uU2NvcGUoKnRoaXMpOwogICAgICAg
ICAgICAgYXV0byYgc2V0ID0gc3BhY2VBbmRTZXQuc2V0OwpAQCAtOTI0LDggKzExMjcsOCBAQCB2
b2lkIEhlYXA6OmRlbGV0ZUFsbENvZGVCbG9ja3MoRGVsZXRlQWxsCiAgICAgICAgIC8vIHBvaW50
cyBpbnRvIGEgQ29kZUJsb2NrIHRoYXQgY291bGQgYmUgZGVhZC4gVGhlIElDIHdpbGwgc3RpbGwg
c3VjY2VlZCBiZWNhdXNlCiAgICAgICAgIC8vIGl0IHVzZXMgYSBjYWxsZWUgY2hlY2ssIGJ1dCB0
aGVuIGl0IHdpbGwgY2FsbCBpbnRvIGRlYWQgY29kZS4KICAgICAgICAgSGVhcEl0ZXJhdGlvblNj
b3BlIGhlYXBJdGVyYXRpb25TY29wZSgqdGhpcyk7Ci0gICAgICAgIGlmICh2bS5tX3dlYkFzc2Vt
Ymx5Q29kZUJsb2NrU3BhY2UpIHsKLSAgICAgICAgICAgIHZtLm1fd2ViQXNzZW1ibHlDb2RlQmxv
Y2tTcGFjZS0+Zm9yRWFjaExpdmVDZWxsKFsmXSAoSGVhcENlbGwqIGNlbGwsIEhlYXBDZWxsOjpL
aW5kIGtpbmQpIHsKKyAgICAgICAgaWYgKG1fd2ViQXNzZW1ibHlDb2RlQmxvY2tTcGFjZSkgewor
ICAgICAgICAgICAgbV93ZWJBc3NlbWJseUNvZGVCbG9ja1NwYWNlLT5mb3JFYWNoTGl2ZUNlbGwo
WyZdIChIZWFwQ2VsbCogY2VsbCwgSGVhcENlbGw6OktpbmQga2luZCkgewogICAgICAgICAgICAg
ICAgIEFTU0VSVF9VTlVTRUQoa2luZCwga2luZCA9PSBIZWFwQ2VsbDo6SlNDZWxsKTsKICAgICAg
ICAgICAgICAgICBKU1dlYkFzc2VtYmx5Q29kZUJsb2NrKiBjb2RlQmxvY2sgPSBzdGF0aWNfY2Fz
dDxKU1dlYkFzc2VtYmx5Q29kZUJsb2NrKj4oY2VsbCk7CiAgICAgICAgICAgICAgICAgY29kZUJs
b2NrLT5jbGVhckpTQ2FsbElDcyh2bSk7CkBAIC05NDYsNyArMTE0OSw3IEBAIHZvaWQgSGVhcDo6
ZGVsZXRlQWxsVW5saW5rZWRDb2RlQmxvY2tzKEQKICAgICBSRUxFQVNFX0FTU0VSVCghbV9jb2xs
ZWN0aW9uU2NvcGUpOwogCiAgICAgSGVhcEl0ZXJhdGlvblNjb3BlIGhlYXBJdGVyYXRpb25TY29w
ZSgqdGhpcyk7Ci0gICAgdm0udW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGVTcGFjZS5zZXQuZm9y
RWFjaExpdmVDZWxsKAorICAgIHVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlU3BhY2Uuc2V0LmZv
ckVhY2hMaXZlQ2VsbCgKICAgICAgICAgWyZdIChIZWFwQ2VsbCogY2VsbCwgSGVhcENlbGw6Oktp
bmQpIHsKICAgICAgICAgICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxl
ID0gc3RhdGljX2Nhc3Q8VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqPihjZWxsKTsKICAgICAg
ICAgICAgIGV4ZWN1dGFibGUtPmNsZWFyQ29kZSh2bSk7CkBAIC05NTUsMTAgKzExNTgsMTAgQEAg
dm9pZCBIZWFwOjpkZWxldGVBbGxVbmxpbmtlZENvZGVCbG9ja3MoRAogCiB2b2lkIEhlYXA6OmRl
bGV0ZVVubWFya2VkQ29tcGlsZWRDb2RlKCkKIHsKLSAgICB2bSgpLmZvckVhY2hTY3JpcHRFeGVj
dXRhYmxlU3BhY2UoW10gKGF1dG8mIHNwYWNlKSB7IHNwYWNlLnNwYWNlLnN3ZWVwKCk7IH0pOwor
ICAgIGZvckVhY2hTY3JpcHRFeGVjdXRhYmxlU3BhY2UoW10gKGF1dG8mIHNwYWNlKSB7IHNwYWNl
LnNwYWNlLnN3ZWVwMygpOyB9KTsKICAgICAvLyBTd2VlcGluZyBtdXN0IG9jY3VyIGJlZm9yZSBk
ZWxldGluZyBzdHVicywgb3RoZXJ3aXNlIHRoZSBzdHVicyBtaWdodCBzdGlsbCB0aGluayB0aGV5
J3JlIGFsaXZlIGFzIHRoZXkgZ2V0IGRlbGV0ZWQuCiAgICAgLy8gQW5kIENvZGVCbG9jayBkZXN0
cnVjdG9yIGlzIGFzc3VtaW5nIHRoYXQgQ29kZUJsb2NrIGdldHMgZGVzdHJveWVkIGJlZm9yZSBV
bmxpbmtlZENvZGVCbG9jayBnZXRzIGRlc3Ryb3llZC4KLSAgICB2bSgpLmZvckVhY2hDb2RlQmxv
Y2tTcGFjZShbXSAoYXV0byYgc3BhY2UpIHsgc3BhY2Uuc3BhY2Uuc3dlZXAoKTsgfSk7CisgICAg
Zm9yRWFjaENvZGVCbG9ja1NwYWNlKFtdIChhdXRvJiBzcGFjZSkgeyBzcGFjZS5zcGFjZS5zd2Vl
cDMoKTsgfSk7CiAgICAgbV9qaXRTdHViUm91dGluZXMtPmRlbGV0ZVVubWFya2VkSmV0dGlzb25l
ZFN0dWJSb3V0aW5lcygpOwogfQogCkBAIC0yMTAzLDggKzIzMDYsOCBAQCB2b2lkIEhlYXA6OnN3
ZWVwSW5GaW5hbGl6ZSgpCiAgICAgbV9vYmplY3RTcGFjZS5zd2VlcFByZWNpc2VBbGxvY2F0aW9u
cygpOwogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKICAgICAvLyBXZSBob2xkIG9udG8gYSBsb3Qg
b2YgbWVtb3J5LCBzbyBpdCBtYWtlcyBhIGxvdCBvZiBzZW5zZSB0byBiZSBzd2VwdCBlYWdlcmx5
LgotICAgIGlmICh2bSgpLm1fd2ViQXNzZW1ibHlNZW1vcnlTcGFjZSkKLSAgICAgICAgdm0oKS5t
X3dlYkFzc2VtYmx5TWVtb3J5U3BhY2UtPnN3ZWVwKCk7CisgICAgaWYgKG1fd2ViQXNzZW1ibHlN
ZW1vcnlTcGFjZSkKKyAgICAgICAgbV93ZWJBc3NlbWJseU1lbW9yeVNwYWNlLT5zd2VlcDMoKTsK
ICNlbmRpZgogfQogCkBAIC0yODA1LDcgKzMwMDgsNyBAQCB2b2lkIEhlYXA6OmFkZENvcmVDb25z
dHJhaW50cygpCiAgICAgICAgICJPIiwgIk91dHB1dCIsCiAgICAgICAgIE1BS0VfTUFSS0lOR19D
T05TVFJBSU5UX0VYRUNVVE9SX1BBSVIoKFtdIChhdXRvJiB2aXNpdG9yKSB7CiAgICAgICAgICAg
ICB1c2luZyBWaXNpdG9yID0gZGVjbHR5cGUodmlzaXRvcik7Ci0gICAgICAgICAgICBWTSYgdm0g
PSB2aXNpdG9yLnZtKCk7CisgICAgICAgICAgICBIZWFwKiBoZWFwID0gdmlzaXRvci5oZWFwKCk7
CiAKICAgICAgICAgICAgIC8vIFRoZSBgdmlzaXRvcjJgIGFyZ3VtZW50IGlzIHN0cmFuZ2VseSBu
YW1lZCBiZWNhdXNlIHRoZSBXaW5DYWlybyBwb3J0CiAgICAgICAgICAgICAvLyBnZXRzIGNvbmZ1
c2VkICBhbmQgdGhpbmtzIHdlJ3JlIHRyeWluZyB0byBjYXB0dXJlIHRoZSBvdXRlciB2aXNpdG9y
CkBAIC0yODI0LDExICszMDI3LDExIEBAIHZvaWQgSGVhcDo6YWRkQ29yZUNvbnN0cmFpbnRzKCkK
IAogICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIFNldFJvb3RNYXJrUmVhc29uU2NvcGUg
cm9vdFNjb3BlKHZpc2l0b3IsIFJvb3RNYXJrUmVhc29uOjpFeGVjdXRhYmxlVG9Db2RlQmxvY2tF
ZGdlcyk7Ci0gICAgICAgICAgICAgICAgYWRkKHZtLmV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2Vz
V2l0aENvbnN0cmFpbnRzKTsKKyAgICAgICAgICAgICAgICBhZGQoaGVhcC0+ZXhlY3V0YWJsZVRv
Q29kZUJsb2NrRWRnZXNXaXRoQ29uc3RyYWludHMpOwogICAgICAgICAgICAgfQotICAgICAgICAg
ICAgaWYgKHZtLm1fd2Vha01hcFNwYWNlKSB7CisgICAgICAgICAgICBpZiAoaGVhcC0+bV93ZWFr
TWFwU3BhY2UpIHsKICAgICAgICAgICAgICAgICBTZXRSb290TWFya1JlYXNvblNjb3BlIHJvb3RT
Y29wZSh2aXNpdG9yLCBSb290TWFya1JlYXNvbjo6V2Vha01hcFNwYWNlKTsKLSAgICAgICAgICAg
ICAgICBhZGQoKnZtLm1fd2Vha01hcFNwYWNlKTsKKyAgICAgICAgICAgICAgICBhZGQoKmhlYXAt
Pm1fd2Vha01hcFNwYWNlKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfSkpLAogICAgICAgICBD
b25zdHJhaW50Vm9sYXRpbGl0eTo6R3JleWVkQnlNYXJraW5nLApAQCAtMzA2Miw0ICszMjY1LDEz
NSBAQCB2b2lkIEhlYXA6OnZlcmlmeUdDKCkKICAgICBtX3ZlcmlmaWVyU2xvdFZpc2l0b3IgPSBu
dWxscHRyOwogfQogCisjZGVmaW5lIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJf
U0xPVyhuYW1lLCBoZWFwQ2VsbFR5cGUsIHR5cGUpIFwKKyAgICBJc29TdWJzcGFjZSogSGVhcDo6
bmFtZSMjU2xvdygpIFwKKyAgICB7IFwKKyAgICAgICAgQVNTRVJUKCFtXyMjbmFtZSk7IFwKKyAg
ICAgICAgYXV0byBzcGFjZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9J
TklUKCp0aGlzLCBoZWFwQ2VsbFR5cGUsIHR5cGUpOyBcCisgICAgICAgIFdURjo6c3RvcmVTdG9y
ZUZlbmNlKCk7IFwKKyAgICAgICAgbV8jI25hbWUgPSBXVEZNb3ZlKHNwYWNlKTsgXAorICAgICAg
ICByZXR1cm4gbV8jI25hbWUuZ2V0KCk7IFwKKyAgICB9CisKKworRFlOQU1JQ19JU09fU1VCU1BB
Q0VfREVGSU5FX01FTUJFUl9TTE9XKGFwaUdsb2JhbE9iamVjdFNwYWNlLCBhcGlHbG9iYWxPYmpl
Y3RIZWFwQ2VsbFR5cGUsIEpTQVBJR2xvYmFsT2JqZWN0KQorRFlOQU1JQ19JU09fU1VCU1BBQ0Vf
REVGSU5FX01FTUJFUl9TTE9XKGFwaVZhbHVlV3JhcHBlclNwYWNlLCBjZWxsSGVhcENlbGxUeXBl
LCBKU0FQSVZhbHVlV3JhcHBlcikKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJf
U0xPVyhhcnJheUJ1ZmZlclNwYWNlLCBjZWxsSGVhcENlbGxUeXBlLCBKU0FycmF5QnVmZmVyKQor
RFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGFycmF5SXRlcmF0b3JTcGFj
ZSwgY2VsbEhlYXBDZWxsVHlwZSwgSlNBcnJheUl0ZXJhdG9yKQorRFlOQU1JQ19JU09fU1VCU1BB
Q0VfREVGSU5FX01FTUJFUl9TTE9XKGFzeW5jR2VuZXJhdG9yU3BhY2UsIGNlbGxIZWFwQ2VsbFR5
cGUsIEpTQXN5bmNHZW5lcmF0b3IpCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVS
X1NMT1coYmlnSW50NjRBcnJheVNwYWNlLCBjZWxsSGVhcENlbGxUeXBlLCBKU0JpZ0ludDY0QXJy
YXkpCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coYmlnSW50T2JqZWN0
U3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUsIEJpZ0ludE9iamVjdCkKK0RZTkFNSUNfSVNPX1NVQlNQ
QUNFX0RFRklORV9NRU1CRVJfU0xPVyhiaWdVaW50NjRBcnJheVNwYWNlLCBjZWxsSGVhcENlbGxU
eXBlLCBKU0JpZ1VpbnQ2NEFycmF5KQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJF
Ul9TTE9XKGJvb2xlYW5PYmplY3RTcGFjZSwgY2VsbEhlYXBDZWxsVHlwZSwgQm9vbGVhbk9iamVj
dCkKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhib3VuZEZ1bmN0aW9u
U3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUsIEpTQm91bmRGdW5jdGlvbikgLy8gSGFzaDoweGQ3OTE2
ZDQxCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coY2FsbGJhY2tDb25z
dHJ1Y3RvclNwYWNlLCBjYWxsYmFja0NvbnN0cnVjdG9ySGVhcENlbGxUeXBlLCBKU0NhbGxiYWNr
Q29uc3RydWN0b3IpCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coY2Fs
bGJhY2tHbG9iYWxPYmplY3RTcGFjZSwgY2FsbGJhY2tHbG9iYWxPYmplY3RIZWFwQ2VsbFR5cGUs
IEpTQ2FsbGJhY2tPYmplY3Q8SlNHbG9iYWxPYmplY3Q+KQorRFlOQU1JQ19JU09fU1VCU1BBQ0Vf
REVGSU5FX01FTUJFUl9TTE9XKGNhbGxiYWNrRnVuY3Rpb25TcGFjZSwgY2VsbEhlYXBDZWxsVHlw
ZSwgSlNDYWxsYmFja0Z1bmN0aW9uKSAvLyBIYXNoOjB4ZTc2NDhlYmMKK0RZTkFNSUNfSVNPX1NV
QlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhjYWxsYmFja09iamVjdFNwYWNlLCBjYWxsYmFja09i
amVjdEhlYXBDZWxsVHlwZSwgSlNDYWxsYmFja09iamVjdDxKU05vbkZpbmFsT2JqZWN0PikKK0RZ
TkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhjdXN0b21HZXR0ZXJGdW5jdGlv
blNwYWNlLCBjdXN0b21HZXR0ZXJGdW5jdGlvbkhlYXBDZWxsVHlwZSwgSlNDdXN0b21HZXR0ZXJG
dW5jdGlvbikKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhjdXN0b21T
ZXR0ZXJGdW5jdGlvblNwYWNlLCBjdXN0b21TZXR0ZXJGdW5jdGlvbkhlYXBDZWxsVHlwZSwgSlND
dXN0b21TZXR0ZXJGdW5jdGlvbikKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJf
U0xPVyhkYXRhVmlld1NwYWNlLCBjZWxsSGVhcENlbGxUeXBlLCBKU0RhdGFWaWV3KQorRFlOQU1J
Q19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGRlYnVnZ2VyU2NvcGVTcGFjZSwgY2Vs
bEhlYXBDZWxsVHlwZSwgRGVidWdnZXJTY29wZSkKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklO
RV9NRU1CRVJfU0xPVyhlcnJvckluc3RhbmNlU3BhY2UsIGVycm9ySW5zdGFuY2VIZWFwQ2VsbFR5
cGUsIEVycm9ySW5zdGFuY2UpIC8vIEhhc2g6MHgzZjQwZDRhCitEWU5BTUlDX0lTT19TVUJTUEFD
RV9ERUZJTkVfTUVNQkVSX1NMT1coZmxvYXQzMkFycmF5U3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUs
IEpTRmxvYXQzMkFycmF5KQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9X
KGZsb2F0NjRBcnJheVNwYWNlLCBjZWxsSGVhcENlbGxUeXBlLCBKU0Zsb2F0NjRBcnJheSkKK0RZ
TkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhmdW5jdGlvblJhcmVEYXRhU3Bh
Y2UsIGRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUsIEZ1bmN0aW9uUmFyZURhdGEpCitEWU5B
TUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coZ2VuZXJhdG9yU3BhY2UsIGNlbGxI
ZWFwQ2VsbFR5cGUsIEpTR2VuZXJhdG9yKQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01F
TUJFUl9TTE9XKGdsb2JhbE9iamVjdFNwYWNlLCBnbG9iYWxPYmplY3RIZWFwQ2VsbFR5cGUsIEpT
R2xvYmFsT2JqZWN0KQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGlu
amVjdGVkU2NyaXB0SG9zdFNwYWNlLCBpbmplY3RlZFNjcmlwdEhvc3RTcGFjZUhlYXBDZWxsVHlw
ZSwgSW5zcGVjdG9yOjpKU0luamVjdGVkU2NyaXB0SG9zdCkKK0RZTkFNSUNfSVNPX1NVQlNQQUNF
X0RFRklORV9NRU1CRVJfU0xPVyhpbnQ4QXJyYXlTcGFjZSwgY2VsbEhlYXBDZWxsVHlwZSwgSlNJ
bnQ4QXJyYXkpCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coaW50MTZB
cnJheVNwYWNlLCBjZWxsSGVhcENlbGxUeXBlLCBKU0ludDE2QXJyYXkpCitEWU5BTUlDX0lTT19T
VUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coaW50MzJBcnJheVNwYWNlLCBjZWxsSGVhcENlbGxU
eXBlLCBKU0ludDMyQXJyYXkpCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NM
T1coamF2YVNjcmlwdENhbGxGcmFtZVNwYWNlLCBqYXZhU2NyaXB0Q2FsbEZyYW1lSGVhcENlbGxU
eXBlLCBJbnNwZWN0b3I6OkpTSmF2YVNjcmlwdENhbGxGcmFtZSkKK0RZTkFNSUNfSVNPX1NVQlNQ
QUNFX0RFRklORV9NRU1CRVJfU0xPVyhqc01vZHVsZVJlY29yZFNwYWNlLCBqc01vZHVsZVJlY29y
ZEhlYXBDZWxsVHlwZSwgSlNNb2R1bGVSZWNvcmQpCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJ
TkVfTUVNQkVSX1NMT1cobWFwQnVja2V0U3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUsIEpTTWFwOjpC
dWNrZXRUeXBlKQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKG1hcEl0
ZXJhdG9yU3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUsIEpTTWFwSXRlcmF0b3IpCitEWU5BTUlDX0lT
T19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1cobWFwU3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUs
IEpTTWFwKQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKG1vZHVsZU5h
bWVzcGFjZU9iamVjdFNwYWNlLCBtb2R1bGVOYW1lc3BhY2VPYmplY3RIZWFwQ2VsbFR5cGUsIEpT
TW9kdWxlTmFtZXNwYWNlT2JqZWN0KQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJF
Ul9TTE9XKG5hdGl2ZVN0ZEZ1bmN0aW9uU3BhY2UsIG5hdGl2ZVN0ZEZ1bmN0aW9uSGVhcENlbGxU
eXBlLCBKU05hdGl2ZVN0ZEZ1bmN0aW9uKSAvLyBIYXNoOjB4NzBlZDYxZTQKK0RZTkFNSUNfSVNP
X1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhwcm94eU9iamVjdFNwYWNlLCBjZWxsSGVhcENl
bGxUeXBlLCBQcm94eU9iamVjdCkKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJf
U0xPVyhwcm94eVJldm9rZVNwYWNlLCBjZWxsSGVhcENlbGxUeXBlLCBQcm94eVJldm9rZSkgLy8g
SGFzaDoweGI1MDZhOTM5CitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1co
c2NvcGVkQXJndW1lbnRzVGFibGVTcGFjZSwgZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZSwg
U2NvcGVkQXJndW1lbnRzVGFibGUpCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVS
X1NMT1coc2NyaXB0RmV0Y2hQYXJhbWV0ZXJzU3BhY2UsIGRlc3RydWN0aWJsZUNlbGxIZWFwQ2Vs
bFR5cGUsIEpTU2NyaXB0RmV0Y2hQYXJhbWV0ZXJzKQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVG
SU5FX01FTUJFUl9TTE9XKHNjcmlwdEZldGNoZXJTcGFjZSwgZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBD
ZWxsVHlwZSwgSlNTY3JpcHRGZXRjaGVyKQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01F
TUJFUl9TTE9XKHNldEJ1Y2tldFNwYWNlLCBjZWxsSGVhcENlbGxUeXBlLCBKU1NldDo6QnVja2V0
VHlwZSkKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhzZXRJdGVyYXRv
clNwYWNlLCBjZWxsSGVhcENlbGxUeXBlLCBKU1NldEl0ZXJhdG9yKQorRFlOQU1JQ19JU09fU1VC
U1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHNldFNwYWNlLCBjZWxsSGVhcENlbGxUeXBlLCBKU1Nl
dCkKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhzaGFkb3dSZWFsbVNw
YWNlLCBjZWxsSGVhcENlbGxUeXBlLCBTaGFkb3dSZWFsbU9iamVjdCkKK0RZTkFNSUNfSVNPX1NV
QlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhzdHJpY3RFdmFsQWN0aXZhdGlvblNwYWNlLCBjZWxs
SGVhcENlbGxUeXBlLCBTdHJpY3RFdmFsQWN0aXZhdGlvbikKK0RZTkFNSUNfSVNPX1NVQlNQQUNF
X0RFRklORV9NRU1CRVJfU0xPVyhzdHJpbmdJdGVyYXRvclNwYWNlLCBjZWxsSGVhcENlbGxUeXBl
LCBKU1N0cmluZ0l0ZXJhdG9yKQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9T
TE9XKHNvdXJjZUNvZGVTcGFjZSwgZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZSwgSlNTb3Vy
Y2VDb2RlKQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHN5bWJvbFNw
YWNlLCBkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlLCBTeW1ib2wpCitEWU5BTUlDX0lTT19T
VUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coc3ltYm9sT2JqZWN0U3BhY2UsIGNlbGxIZWFwQ2Vs
bFR5cGUsIFN5bWJvbE9iamVjdCkKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJf
U0xPVyh0ZW1wbGF0ZU9iamVjdERlc2NyaXB0b3JTcGFjZSwgZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBD
ZWxsVHlwZSwgSlNUZW1wbGF0ZU9iamVjdERlc2NyaXB0b3IpCitEWU5BTUlDX0lTT19TVUJTUEFD
RV9ERUZJTkVfTUVNQkVSX1NMT1codGVtcG9yYWxDYWxlbmRhclNwYWNlLCBjZWxsSGVhcENlbGxU
eXBlLCBUZW1wb3JhbENhbGVuZGFyKQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJF
Ul9TTE9XKHRlbXBvcmFsRHVyYXRpb25TcGFjZSwgY2VsbEhlYXBDZWxsVHlwZSwgVGVtcG9yYWxE
dXJhdGlvbikKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh0ZW1wb3Jh
bEluc3RhbnRTcGFjZSwgY2VsbEhlYXBDZWxsVHlwZSwgVGVtcG9yYWxJbnN0YW50KQorRFlOQU1J
Q19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHRlbXBvcmFsUGxhaW5UaW1lU3BhY2Us
IGNlbGxIZWFwQ2VsbFR5cGUsIFRlbXBvcmFsUGxhaW5UaW1lKQorRFlOQU1JQ19JU09fU1VCU1BB
Q0VfREVGSU5FX01FTUJFUl9TTE9XKHRlbXBvcmFsVGltZVpvbmVTcGFjZSwgY2VsbEhlYXBDZWxs
VHlwZSwgVGVtcG9yYWxUaW1lWm9uZSkKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1C
RVJfU0xPVyh1aW50OEFycmF5U3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUsIEpTVWludDhBcnJheSkK
K0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh1aW50OENsYW1wZWRBcnJh
eVNwYWNlLCBjZWxsSGVhcENlbGxUeXBlLCBKU1VpbnQ4Q2xhbXBlZEFycmF5KQorRFlOQU1JQ19J
U09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHVpbnQxNkFycmF5U3BhY2UsIGNlbGxIZWFw
Q2VsbFR5cGUsIEpTVWludDE2QXJyYXkpCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVN
QkVSX1NMT1codWludDMyQXJyYXlTcGFjZSwgY2VsbEhlYXBDZWxsVHlwZSwgSlNVaW50MzJBcnJh
eSkKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh1bmxpbmtlZEV2YWxD
b2RlQmxvY2tTcGFjZSwgZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZSwgVW5saW5rZWRFdmFs
Q29kZUJsb2NrKQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHVubGlu
a2VkRnVuY3Rpb25Db2RlQmxvY2tTcGFjZSwgZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZSwg
VW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jaykKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9N
RU1CRVJfU0xPVyh1bmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2tTcGFjZSwgZGVzdHJ1Y3Rp
YmxlQ2VsbEhlYXBDZWxsVHlwZSwgVW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKQorRFlO
QU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHVubGlua2VkUHJvZ3JhbUNvZGVC
bG9ja1NwYWNlLCBkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlLCBVbmxpbmtlZFByb2dyYW1D
b2RlQmxvY2spCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1cod2Vha01h
cFNwYWNlLCB3ZWFrTWFwSGVhcENlbGxUeXBlLCBKU1dlYWtNYXApIC8vIEhhc2g6MHg2NjJiMTJh
MworRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHdlYWtTZXRTcGFjZSwg
d2Vha1NldEhlYXBDZWxsVHlwZSwgSlNXZWFrU2V0KSAvLyBIYXNoOjB4NGM3ODFiMzAKK0RZTkFN
SUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh3ZWFrT2JqZWN0UmVmU3BhY2UsIGNl
bGxIZWFwQ2VsbFR5cGUsIEpTV2Vha09iamVjdFJlZikgLy8gSGFzaDoweDhlYzY4ZjFmCitEWU5B
TUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1cod2l0aFNjb3BlU3BhY2UsIGNlbGxI
ZWFwQ2VsbFR5cGUsIEpTV2l0aFNjb3BlKQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01F
TUJFUl9TTE9XKGZpbmFsaXphdGlvblJlZ2lzdHJ5U3BhY2UsIGZpbmFsaXphdGlvblJlZ2lzdHJ5
Q2VsbFR5cGUsIEpTRmluYWxpemF0aW9uUmVnaXN0cnkpCisjaWYgSlNDX09CSkNfQVBJX0VOQUJM
RUQKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhhcGlXcmFwcGVyT2Jq
ZWN0U3BhY2UsIGFwaVdyYXBwZXJPYmplY3RIZWFwQ2VsbFR5cGUsIEpTQ2FsbGJhY2tPYmplY3Q8
SlNBUElXcmFwcGVyT2JqZWN0PikKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJf
U0xPVyhvYmpDQ2FsbGJhY2tGdW5jdGlvblNwYWNlLCBvYmpDQ2FsbGJhY2tGdW5jdGlvbkhlYXBD
ZWxsVHlwZSwgT2JqQ0NhbGxiYWNrRnVuY3Rpb24pIC8vIEhhc2g6MHgxMGY2MTBiOAorI2VuZGlm
CisjaWZkZWYgSlNDX0dMSUJfQVBJX0VOQUJMRUQKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklO
RV9NRU1CRVJfU0xPVyhhcGlXcmFwcGVyT2JqZWN0U3BhY2UsIGFwaVdyYXBwZXJPYmplY3RIZWFw
Q2VsbFR5cGUsIEpTQ2FsbGJhY2tPYmplY3Q8SlNBUElXcmFwcGVyT2JqZWN0PikKK0RZTkFNSUNf
SVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhqc2NDYWxsYmFja0Z1bmN0aW9uU3BhY2Us
IGpzY0NhbGxiYWNrRnVuY3Rpb25IZWFwQ2VsbFR5cGUsIEpTQ0NhbGxiYWNrRnVuY3Rpb24pCitE
WU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coY2FsbGJhY2tBUElXcmFwcGVy
R2xvYmFsT2JqZWN0U3BhY2UsIGNhbGxiYWNrQVBJV3JhcHBlckdsb2JhbE9iamVjdEhlYXBDZWxs
VHlwZSwgSlNDYWxsYmFja09iamVjdDxKU0FQSVdyYXBwZXJHbG9iYWxPYmplY3Q+KQorI2VuZGlm
CitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coaW50bENvbGxhdG9yU3Bh
Y2UsIGludGxDb2xsYXRvckhlYXBDZWxsVHlwZSwgSW50bENvbGxhdG9yKQorRFlOQU1JQ19JU09f
U1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGludGxEYXRlVGltZUZvcm1hdFNwYWNlLCBpbnRs
RGF0ZVRpbWVGb3JtYXRIZWFwQ2VsbFR5cGUsIEludGxEYXRlVGltZUZvcm1hdCkKK0RZTkFNSUNf
SVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhpbnRsRGlzcGxheU5hbWVzU3BhY2UsIGlu
dGxEaXNwbGF5TmFtZXNIZWFwQ2VsbFR5cGUsIEludGxEaXNwbGF5TmFtZXMpCitEWU5BTUlDX0lT
T19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coaW50bExpc3RGb3JtYXRTcGFjZSwgaW50bExp
c3RGb3JtYXRIZWFwQ2VsbFR5cGUsIEludGxMaXN0Rm9ybWF0KQorRFlOQU1JQ19JU09fU1VCU1BB
Q0VfREVGSU5FX01FTUJFUl9TTE9XKGludGxMb2NhbGVTcGFjZSwgaW50bExvY2FsZUhlYXBDZWxs
VHlwZSwgSW50bExvY2FsZSkKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xP
VyhpbnRsTnVtYmVyRm9ybWF0U3BhY2UsIGludGxOdW1iZXJGb3JtYXRIZWFwQ2VsbFR5cGUsIElu
dGxOdW1iZXJGb3JtYXQpCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1co
aW50bFBsdXJhbFJ1bGVzU3BhY2UsIGludGxQbHVyYWxSdWxlc0hlYXBDZWxsVHlwZSwgSW50bFBs
dXJhbFJ1bGVzKQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGludGxS
ZWxhdGl2ZVRpbWVGb3JtYXRTcGFjZSwgaW50bFJlbGF0aXZlVGltZUZvcm1hdEhlYXBDZWxsVHlw
ZSwgSW50bFJlbGF0aXZlVGltZUZvcm1hdCkKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9N
RU1CRVJfU0xPVyhpbnRsU2VnbWVudEl0ZXJhdG9yU3BhY2UsIGludGxTZWdtZW50SXRlcmF0b3JI
ZWFwQ2VsbFR5cGUsIEludGxTZWdtZW50SXRlcmF0b3IpCitEWU5BTUlDX0lTT19TVUJTUEFDRV9E
RUZJTkVfTUVNQkVSX1NMT1coaW50bFNlZ21lbnRlclNwYWNlLCBpbnRsU2VnbWVudGVySGVhcENl
bGxUeXBlLCBJbnRsU2VnbWVudGVyKQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJF
Ul9TTE9XKGludGxTZWdtZW50c1NwYWNlLCBpbnRsU2VnbWVudHNIZWFwQ2VsbFR5cGUsIEludGxT
ZWdtZW50cykKKyNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCitEWU5BTUlDX0lTT19TVUJTUEFDRV9E
RUZJTkVfTUVNQkVSX1NMT1coanNUb1dhc21JQ0NhbGxlZVNwYWNlLCBjZWxsSGVhcENlbGxUeXBl
LCBKU1RvV2FzbUlDQ2FsbGVlKQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9T
TE9XKHdlYkFzc2VtYmx5Q29kZUJsb2NrU3BhY2UsIHdlYkFzc2VtYmx5Q29kZUJsb2NrSGVhcENl
bGxUeXBlLCBKU1dlYkFzc2VtYmx5Q29kZUJsb2NrKSAvLyBIYXNoOjB4OWFkOTk1Y2QKK0RZTkFN
SUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh3ZWJBc3NlbWJseUV4Y2VwdGlvblNw
YWNlLCB3ZWJBc3NlbWJseUV4Y2VwdGlvbkhlYXBDZWxsVHlwZSwgSlNXZWJBc3NlbWJseUV4Y2Vw
dGlvbikKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh3ZWJBc3NlbWJs
eUZ1bmN0aW9uU3BhY2UsIHdlYkFzc2VtYmx5RnVuY3Rpb25IZWFwQ2VsbFR5cGUsIFdlYkFzc2Vt
Ymx5RnVuY3Rpb24pIC8vIEhhc2g6MHg4YjdjMzJkYgorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVG
SU5FX01FTUJFUl9TTE9XKHdlYkFzc2VtYmx5R2xvYmFsU3BhY2UsIHdlYkFzc2VtYmx5R2xvYmFs
SGVhcENlbGxUeXBlLCBKU1dlYkFzc2VtYmx5R2xvYmFsKQorRFlOQU1JQ19JU09fU1VCU1BBQ0Vf
REVGSU5FX01FTUJFUl9TTE9XKHdlYkFzc2VtYmx5SW5zdGFuY2VTcGFjZSwgd2ViQXNzZW1ibHlJ
bnN0YW5jZUhlYXBDZWxsVHlwZSwgSlNXZWJBc3NlbWJseUluc3RhbmNlKQorRFlOQU1JQ19JU09f
U1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHdlYkFzc2VtYmx5TWVtb3J5U3BhY2UsIHdlYkFz
c2VtYmx5TWVtb3J5SGVhcENlbGxUeXBlLCBKU1dlYkFzc2VtYmx5TWVtb3J5KQorRFlOQU1JQ19J
U09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHdlYkFzc2VtYmx5TW9kdWxlU3BhY2UsIHdl
YkFzc2VtYmx5TW9kdWxlSGVhcENlbGxUeXBlLCBKU1dlYkFzc2VtYmx5TW9kdWxlKQorRFlOQU1J
Q19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHdlYkFzc2VtYmx5TW9kdWxlUmVjb3Jk
U3BhY2UsIHdlYkFzc2VtYmx5TW9kdWxlUmVjb3JkSGVhcENlbGxUeXBlLCBXZWJBc3NlbWJseU1v
ZHVsZVJlY29yZCkKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh3ZWJB
c3NlbWJseVRhYmxlU3BhY2UsIHdlYkFzc2VtYmx5VGFibGVIZWFwQ2VsbFR5cGUsIEpTV2ViQXNz
ZW1ibHlUYWJsZSkKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh3ZWJB
c3NlbWJseVRhZ1NwYWNlLCB3ZWJBc3NlbWJseVRhZ0hlYXBDZWxsVHlwZSwgSlNXZWJBc3NlbWJs
eVRhZykKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh3ZWJBc3NlbWJs
eVdyYXBwZXJGdW5jdGlvblNwYWNlLCBjZWxsSGVhcENlbGxUeXBlLCBXZWJBc3NlbWJseVdyYXBw
ZXJGdW5jdGlvbikgLy8gSGFzaDoweGQ0YTVmZjAxCisjZW5kaWYKKworI3VuZGVmIERZTkFNSUNf
SVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVworCisjZGVmaW5lIERZTkFNSUNfU1BBQ0Vf
QU5EX1NFVF9ERUZJTkVfTUVNQkVSX1NMT1cobmFtZSwgaGVhcENlbGxUeXBlLCB0eXBlKSBcCisg
ICAgSXNvU3Vic3BhY2UqIEhlYXA6Om5hbWUjI1Nsb3coKSBcCisgICAgeyBcCisgICAgICAgIEFT
U0VSVCghbV8jI25hbWUpOyBcCisgICAgICAgIGF1dG8gc3BhY2UgPSBtYWtlVW5pcXVlPFNwYWNl
QW5kU2V0PiBJU09fU1VCU1BBQ0VfSU5JVCgqdGhpcywgaGVhcENlbGxUeXBlLCB0eXBlKTsgXAor
ICAgICAgICBXVEY6OnN0b3JlU3RvcmVGZW5jZSgpOyBcCisgICAgICAgIG1fIyNuYW1lID0gV1RG
TW92ZShzcGFjZSk7IFwKKyAgICAgICAgcmV0dXJuICZtXyMjbmFtZS0+c3BhY2U7IFwKKyAgICB9
CisKK0RZTkFNSUNfU1BBQ0VfQU5EX1NFVF9ERUZJTkVfTUVNQkVSX1NMT1coZXZhbEV4ZWN1dGFi
bGVTcGFjZSwgZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZSwgRXZhbEV4ZWN1dGFibGUpIC8v
IEhhc2g6MHg5NThlM2U5ZAorRFlOQU1JQ19TUEFDRV9BTkRfU0VUX0RFRklORV9NRU1CRVJfU0xP
Vyhtb2R1bGVQcm9ncmFtRXhlY3V0YWJsZVNwYWNlLCBkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxU
eXBlLCBNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZSkgLy8gSGFzaDoweDY1MDZmYTNjCisKKyN1bmRl
ZiBEWU5BTUlDX1NQQUNFX0FORF9TRVRfREVGSU5FX01FTUJFUl9TTE9XCisKIH0gLy8gbmFtZXNw
YWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuaAkocmV2aXNpb24gMjg2MDk1
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oCSh3b3JraW5nIGNvcHkpCkBA
IC0yNSw2ICsyNSw3IEBACiAjaW5jbHVkZSAiQ2VsbFN0YXRlLmgiCiAjaW5jbHVkZSAiQ29sbGVj
dGlvblNjb3BlLmgiCiAjaW5jbHVkZSAiQ29sbGVjdG9yUGhhc2UuaCIKKyNpbmNsdWRlICJDb21w
bGV0ZVN1YnNwYWNlLmgiCiAjaW5jbHVkZSAiRGVsZXRlQWxsQ29kZUVmZm9ydC5oIgogI2luY2x1
ZGUgIkdDQ29uZHVjdG9yLmgiCiAjaW5jbHVkZSAiR0NJbmNvbWluZ1JlZkNvdW50ZWRTZXQuaCIK
QEAgLTMzLDYgKzM0LDExIEBACiAjaW5jbHVkZSAiSGFuZGxlU2V0LmgiCiAjaW5jbHVkZSAiSGVh
cEZpbmFsaXplckNhbGxiYWNrLmgiCiAjaW5jbHVkZSAiSGVhcE9ic2VydmVyLmgiCisjaW5jbHVk
ZSAiSXNvQ2VsbFNldC5oIgorI2luY2x1ZGUgIklzb0hlYXBDZWxsVHlwZS5oIgorI2luY2x1ZGUg
Iklzb0lubGluZWRIZWFwQ2VsbFR5cGUuaCIKKyNpbmNsdWRlICJJc29TdWJzcGFjZS5oIgorI2lu
Y2x1ZGUgIkpTRGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmgiCiAjaW5jbHVkZSAiTWFy
a2VkQmxvY2suaCIKICNpbmNsdWRlICJNYXJrZWRTcGFjZS5oIgogI2luY2x1ZGUgIk11dGF0b3JT
dGF0ZS5oIgpAQCAtNTAsMzIgKzU2LDY1IEBACiAjaW5jbHVkZSA8d3RmL1BhcmFsbGVsSGVscGVy
UG9vbC5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KIAorbmFtZXNwYWNlIEluc3BlY3Rv
ciB7CitjbGFzcyBKU0luamVjdGVkU2NyaXB0SG9zdDsKK2NsYXNzIEpTSmF2YVNjcmlwdENhbGxG
cmFtZTsKK30KKwogbmFtZXNwYWNlIEpTQyB7CiAKK2NsYXNzIEJsb2NrRGlyZWN0b3J5OwogY2xh
c3MgQ29kZUJsb2NrOwogY2xhc3MgQ29kZUJsb2NrU2V0OwogY2xhc3MgQ29sbGVjdGluZ1Njb3Bl
OwogY2xhc3MgQ29uc2VydmF0aXZlUm9vdHM7Ci1jbGFzcyBHQ0RlZmVycmFsQ29udGV4dDsKK2Ns
YXNzIERhdGVJbnN0YW5jZTsKIGNsYXNzIEVkZW5HQ0FjdGl2aXR5Q2FsbGJhY2s7CitjbGFzcyBF
cnJvckluc3RhbmNlOworY2xhc3MgRmFzdE1hbGxvY0FsaWduZWRNZW1vcnlBbGxvY2F0b3I7CiBj
bGFzcyBGdWxsR0NBY3Rpdml0eUNhbGxiYWNrOwogY2xhc3MgR0NBY3Rpdml0eUNhbGxiYWNrOwog
Y2xhc3MgR0NBd2FyZUpJVFN0dWJSb3V0aW5lOworY2xhc3MgR0NEZWZlcnJhbENvbnRleHQ7Citj
bGFzcyBHaWdhY2FnZUFsaWduZWRNZW1vcnlBbGxvY2F0b3I7CiBjbGFzcyBIZWFwOwogY2xhc3Mg
SGVhcFByb2ZpbGVyOwogY2xhc3MgSGVhcFZlcmlmaWVyOwogY2xhc3MgSW5jcmVtZW50YWxTd2Vl
cGVyOworY2xhc3MgSW50bENvbGxhdG9yOworY2xhc3MgSW50bERhdGVUaW1lRm9ybWF0OworY2xh
c3MgSW50bERpc3BsYXlOYW1lczsKK2NsYXNzIEludGxMaXN0Rm9ybWF0OworY2xhc3MgSW50bExv
Y2FsZTsKK2NsYXNzIEludGxOdW1iZXJGb3JtYXQ7CitjbGFzcyBJbnRsUGx1cmFsUnVsZXM7Citj
bGFzcyBJbnRsUmVsYXRpdmVUaW1lRm9ybWF0OworY2xhc3MgSW50bFNlZ21lbnRJdGVyYXRvcjsK
K2NsYXNzIEludGxTZWdtZW50ZXI7CitjbGFzcyBJbnRsU2VnbWVudHM7CiBjbGFzcyBKSVRTdHVi
Um91dGluZTsKIGNsYXNzIEpJVFN0dWJSb3V0aW5lU2V0OworY2xhc3MgSlNBUElHbG9iYWxPYmpl
Y3Q7CitjbGFzcyBKU0NhbGxiYWNrQ29uc3RydWN0b3I7CiBjbGFzcyBKU0NlbGw7CitjbGFzcyBK
U0N1c3RvbUdldHRlckZ1bmN0aW9uOworY2xhc3MgSlNDdXN0b21TZXR0ZXJGdW5jdGlvbjsKK2Ns
YXNzIEpTRmluYWxpemF0aW9uUmVnaXN0cnk7CitjbGFzcyBKU0dsb2JhbExleGljYWxFbnZpcm9u
bWVudDsKK2NsYXNzIEpTR2xvYmFsT2JqZWN0OwogY2xhc3MgSlNJbW11dGFibGVCdXR0ZXJmbHk7
CitjbGFzcyBKU01vZHVsZU5hbWVzcGFjZU9iamVjdDsKK2NsYXNzIEpTTW9kdWxlUmVjb3JkOwor
Y2xhc3MgSlNOYXRpdmVTdGRGdW5jdGlvbjsKK2NsYXNzIEpTTm9uRmluYWxPYmplY3Q7CitjbGFz
cyBKU1N0cmluZzsKIGNsYXNzIEpTVmFsdWU7Ci1jbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7
CitjbGFzcyBKU1dlYWtNYXA7CitjbGFzcyBKU1dlYWtTZXQ7CiBjbGFzcyBNYWNoaW5lVGhyZWFk
czsKIGNsYXNzIE1hcmtTdGFja0FycmF5OwogY2xhc3MgTWFya1N0YWNrTWVyZ2luZ0NvbnN0cmFp
bnQ7CiBjbGFzcyBNYXJrZWRKU1ZhbHVlUmVmQXJyYXk7Ci1jbGFzcyBCbG9ja0RpcmVjdG9yeTsK
IGNsYXNzIE1hcmtlZEFyZ3VtZW50QnVmZmVyQmFzZTsKIGNsYXNzIE1hcmtpbmdDb25zdHJhaW50
OwogY2xhc3MgTWFya2luZ0NvbnN0cmFpbnRTZXQ7CkBAIC05MCw3ICsxMjksMzAgQEAgY2xhc3Mg
VmVyaWZpZXJTbG90VmlzaXRvcjsKIGNsYXNzIFdlYWtHQ0hhc2hUYWJsZTsKIHN0cnVjdCBDdXJy
ZW50VGhyZWFkU3RhdGU7CiAKK3RlbXBsYXRlIDxjbGFzcyBQYXJlbnQ+IGNsYXNzIEpTQ2FsbGJh
Y2tPYmplY3Q7CisKKyNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCitjbGFzcyBKU1dlYkFzc2VtYmx5
Q29kZUJsb2NrOworY2xhc3MgSlNXZWJBc3NlbWJseUV4Y2VwdGlvbjsKK2NsYXNzIEpTV2ViQXNz
ZW1ibHlHbG9iYWw7CitjbGFzcyBKU1dlYkFzc2VtYmx5SW5zdGFuY2U7CitjbGFzcyBKU1dlYkFz
c2VtYmx5TWVtb3J5OworY2xhc3MgSlNXZWJBc3NlbWJseU1vZHVsZTsKK2NsYXNzIEpTV2ViQXNz
ZW1ibHlUYWJsZTsKK2NsYXNzIEpTV2ViQXNzZW1ibHlUYWc7CitjbGFzcyBXZWJBc3NlbWJseUZ1
bmN0aW9uOworY2xhc3MgV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQ7CisjZW5kaWYKKworI2lmIEpT
Q19PQkpDX0FQSV9FTkFCTEVECitjbGFzcyBKU0FQSVdyYXBwZXJPYmplY3Q7CitjbGFzcyBPYmpD
Q2FsbGJhY2tGdW5jdGlvbjsKKyNlbmRpZgorCiAjaWZkZWYgSlNDX0dMSUJfQVBJX0VOQUJMRUQK
K2NsYXNzIEpTQVBJV3JhcHBlckdsb2JhbE9iamVjdDsKK2NsYXNzIEpTQVBJV3JhcHBlck9iamVj
dDsKK2NsYXNzIEpTQ0NhbGxiYWNrRnVuY3Rpb247CiBjbGFzcyBKU0NHTGliV3JhcHBlck9iamVj
dDsKICNlbmRpZgogCkBAIC03MjksNiArNzkxLDMxOCBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9w
YXJhbGxlbE1hcmtlcnNTaG91bGRFeGl0IHsgZmFsc2UgfTsKICAgICBMb2NrIG1fY29sbGVjdENv
bnRpbnVvdXNseUxvY2s7CiAgICAgQ29uZGl0aW9uIG1fY29sbGVjdENvbnRpbnVvdXNseUNvbmRp
dGlvbjsKKworcHVibGljOgorICAgIC8vIEhlYXBDZWxsVHlwZXMKKyAgICBIZWFwQ2VsbFR5cGUg
YXV4aWxpYXJ5SGVhcENlbGxUeXBlOworICAgIEhlYXBDZWxsVHlwZSBpbW11dGFibGVCdXR0ZXJm
bHlIZWFwQ2VsbFR5cGU7CisgICAgSGVhcENlbGxUeXBlIGNlbGxIZWFwQ2VsbFR5cGU7CisgICAg
SGVhcENlbGxUeXBlIGRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGU7CisgICAgSXNvSGVhcENl
bGxUeXBlPEpTQVBJR2xvYmFsT2JqZWN0PiBhcGlHbG9iYWxPYmplY3RIZWFwQ2VsbFR5cGU7Cisg
ICAgSXNvSGVhcENlbGxUeXBlPEpTQ2FsbGJhY2tDb25zdHJ1Y3Rvcj4gY2FsbGJhY2tDb25zdHJ1
Y3RvckhlYXBDZWxsVHlwZTsKKyAgICBJc29IZWFwQ2VsbFR5cGU8SlNDYWxsYmFja09iamVjdDxK
U0dsb2JhbE9iamVjdD4+IGNhbGxiYWNrR2xvYmFsT2JqZWN0SGVhcENlbGxUeXBlOworICAgIElz
b0hlYXBDZWxsVHlwZTxKU0NhbGxiYWNrT2JqZWN0PEpTTm9uRmluYWxPYmplY3Q+PiBjYWxsYmFj
a09iamVjdEhlYXBDZWxsVHlwZTsKKyAgICBJc29IZWFwQ2VsbFR5cGU8SlNDdXN0b21HZXR0ZXJG
dW5jdGlvbj4gY3VzdG9tR2V0dGVyRnVuY3Rpb25IZWFwQ2VsbFR5cGU7CisgICAgSXNvSGVhcENl
bGxUeXBlPEpTQ3VzdG9tU2V0dGVyRnVuY3Rpb24+IGN1c3RvbVNldHRlckZ1bmN0aW9uSGVhcENl
bGxUeXBlOworICAgIElzb0hlYXBDZWxsVHlwZTxEYXRlSW5zdGFuY2U+IGRhdGVJbnN0YW5jZUhl
YXBDZWxsVHlwZTsKKyAgICBJc29IZWFwQ2VsbFR5cGU8RXJyb3JJbnN0YW5jZT4gZXJyb3JJbnN0
YW5jZUhlYXBDZWxsVHlwZTsKKyAgICBJc29IZWFwQ2VsbFR5cGU8SlNGaW5hbGl6YXRpb25SZWdp
c3RyeT4gZmluYWxpemF0aW9uUmVnaXN0cnlDZWxsVHlwZTsKKyAgICBJc29IZWFwQ2VsbFR5cGU8
SlNHbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQ+IGdsb2JhbExleGljYWxFbnZpcm9ubWVudEhlYXBD
ZWxsVHlwZTsKKyAgICBJc29IZWFwQ2VsbFR5cGU8SlNHbG9iYWxPYmplY3Q+IGdsb2JhbE9iamVj
dEhlYXBDZWxsVHlwZTsKKyAgICBJc29IZWFwQ2VsbFR5cGU8SW5zcGVjdG9yOjpKU0luamVjdGVk
U2NyaXB0SG9zdD4gaW5qZWN0ZWRTY3JpcHRIb3N0U3BhY2VIZWFwQ2VsbFR5cGU7CisgICAgSXNv
SGVhcENlbGxUeXBlPEluc3BlY3Rvcjo6SlNKYXZhU2NyaXB0Q2FsbEZyYW1lPiBqYXZhU2NyaXB0
Q2FsbEZyYW1lSGVhcENlbGxUeXBlOworICAgIElzb0hlYXBDZWxsVHlwZTxKU01vZHVsZVJlY29y
ZD4ganNNb2R1bGVSZWNvcmRIZWFwQ2VsbFR5cGU7CisgICAgSXNvSGVhcENlbGxUeXBlPEpTTW9k
dWxlTmFtZXNwYWNlT2JqZWN0PiBtb2R1bGVOYW1lc3BhY2VPYmplY3RIZWFwQ2VsbFR5cGU7Cisg
ICAgSXNvSGVhcENlbGxUeXBlPEpTTmF0aXZlU3RkRnVuY3Rpb24+IG5hdGl2ZVN0ZEZ1bmN0aW9u
SGVhcENlbGxUeXBlOworICAgIElzb0lubGluZWRIZWFwQ2VsbFR5cGU8SlNTdHJpbmc+IHN0cmlu
Z0hlYXBDZWxsVHlwZTsKKyAgICBJc29IZWFwQ2VsbFR5cGU8SlNXZWFrTWFwPiB3ZWFrTWFwSGVh
cENlbGxUeXBlOworICAgIElzb0hlYXBDZWxsVHlwZTxKU1dlYWtTZXQ+IHdlYWtTZXRIZWFwQ2Vs
bFR5cGU7CisgICAgSlNEZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUgZGVzdHJ1Y3RpYmxl
T2JqZWN0SGVhcENlbGxUeXBlOworI2lmIEpTQ19PQkpDX0FQSV9FTkFCTEVECisgICAgSXNvSGVh
cENlbGxUeXBlPEpTQ2FsbGJhY2tPYmplY3Q8SlNBUElXcmFwcGVyT2JqZWN0Pj4gYXBpV3JhcHBl
ck9iamVjdEhlYXBDZWxsVHlwZTsKKyAgICBJc29IZWFwQ2VsbFR5cGU8T2JqQ0NhbGxiYWNrRnVu
Y3Rpb24+IG9iakNDYWxsYmFja0Z1bmN0aW9uSGVhcENlbGxUeXBlOworI2VuZGlmCisjaWZkZWYg
SlNDX0dMSUJfQVBJX0VOQUJMRUQKKyAgICBJc29IZWFwQ2VsbFR5cGU8SlNDYWxsYmFja09iamVj
dDxKU0FQSVdyYXBwZXJPYmplY3Q+PiBhcGlXcmFwcGVyT2JqZWN0SGVhcENlbGxUeXBlOworICAg
IElzb0hlYXBDZWxsVHlwZTxKU0NhbGxiYWNrT2JqZWN0PEpTQVBJV3JhcHBlckdsb2JhbE9iamVj
dD4+IGNhbGxiYWNrQVBJV3JhcHBlckdsb2JhbE9iamVjdEhlYXBDZWxsVHlwZTsKKyAgICBJc29I
ZWFwQ2VsbFR5cGU8SlNDQ2FsbGJhY2tGdW5jdGlvbj4ganNjQ2FsbGJhY2tGdW5jdGlvbkhlYXBD
ZWxsVHlwZTsKKyNlbmRpZgorICAgIElzb0hlYXBDZWxsVHlwZTxJbnRsQ29sbGF0b3I+IGludGxD
b2xsYXRvckhlYXBDZWxsVHlwZTsKKyAgICBJc29IZWFwQ2VsbFR5cGU8SW50bERhdGVUaW1lRm9y
bWF0PiBpbnRsRGF0ZVRpbWVGb3JtYXRIZWFwQ2VsbFR5cGU7CisgICAgSXNvSGVhcENlbGxUeXBl
PEludGxEaXNwbGF5TmFtZXM+IGludGxEaXNwbGF5TmFtZXNIZWFwQ2VsbFR5cGU7CisgICAgSXNv
SGVhcENlbGxUeXBlPEludGxMaXN0Rm9ybWF0PiBpbnRsTGlzdEZvcm1hdEhlYXBDZWxsVHlwZTsK
KyAgICBJc29IZWFwQ2VsbFR5cGU8SW50bExvY2FsZT4gaW50bExvY2FsZUhlYXBDZWxsVHlwZTsK
KyAgICBJc29IZWFwQ2VsbFR5cGU8SW50bE51bWJlckZvcm1hdD4gaW50bE51bWJlckZvcm1hdEhl
YXBDZWxsVHlwZTsKKyAgICBJc29IZWFwQ2VsbFR5cGU8SW50bFBsdXJhbFJ1bGVzPiBpbnRsUGx1
cmFsUnVsZXNIZWFwQ2VsbFR5cGU7CisgICAgSXNvSGVhcENlbGxUeXBlPEludGxSZWxhdGl2ZVRp
bWVGb3JtYXQ+IGludGxSZWxhdGl2ZVRpbWVGb3JtYXRIZWFwQ2VsbFR5cGU7CisgICAgSXNvSGVh
cENlbGxUeXBlPEludGxTZWdtZW50SXRlcmF0b3I+IGludGxTZWdtZW50SXRlcmF0b3JIZWFwQ2Vs
bFR5cGU7CisgICAgSXNvSGVhcENlbGxUeXBlPEludGxTZWdtZW50ZXI+IGludGxTZWdtZW50ZXJI
ZWFwQ2VsbFR5cGU7CisgICAgSXNvSGVhcENlbGxUeXBlPEludGxTZWdtZW50cz4gaW50bFNlZ21l
bnRzSGVhcENlbGxUeXBlOworI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKKyAgICBJc29IZWFwQ2Vs
bFR5cGU8SlNXZWJBc3NlbWJseUNvZGVCbG9jaz4gd2ViQXNzZW1ibHlDb2RlQmxvY2tIZWFwQ2Vs
bFR5cGU7CisgICAgSXNvSGVhcENlbGxUeXBlPEpTV2ViQXNzZW1ibHlFeGNlcHRpb24+IHdlYkFz
c2VtYmx5RXhjZXB0aW9uSGVhcENlbGxUeXBlOworICAgIElzb0hlYXBDZWxsVHlwZTxXZWJBc3Nl
bWJseUZ1bmN0aW9uPiB3ZWJBc3NlbWJseUZ1bmN0aW9uSGVhcENlbGxUeXBlOworICAgIElzb0hl
YXBDZWxsVHlwZTxKU1dlYkFzc2VtYmx5R2xvYmFsPiB3ZWJBc3NlbWJseUdsb2JhbEhlYXBDZWxs
VHlwZTsKKyAgICBJc29IZWFwQ2VsbFR5cGU8SlNXZWJBc3NlbWJseUluc3RhbmNlPiB3ZWJBc3Nl
bWJseUluc3RhbmNlSGVhcENlbGxUeXBlOworICAgIElzb0hlYXBDZWxsVHlwZTxKU1dlYkFzc2Vt
Ymx5TWVtb3J5PiB3ZWJBc3NlbWJseU1lbW9yeUhlYXBDZWxsVHlwZTsKKyAgICBJc29IZWFwQ2Vs
bFR5cGU8SlNXZWJBc3NlbWJseU1vZHVsZT4gd2ViQXNzZW1ibHlNb2R1bGVIZWFwQ2VsbFR5cGU7
CisgICAgSXNvSGVhcENlbGxUeXBlPFdlYkFzc2VtYmx5TW9kdWxlUmVjb3JkPiB3ZWJBc3NlbWJs
eU1vZHVsZVJlY29yZEhlYXBDZWxsVHlwZTsKKyAgICBJc29IZWFwQ2VsbFR5cGU8SlNXZWJBc3Nl
bWJseVRhYmxlPiB3ZWJBc3NlbWJseVRhYmxlSGVhcENlbGxUeXBlOworICAgIElzb0hlYXBDZWxs
VHlwZTxKU1dlYkFzc2VtYmx5VGFnPiB3ZWJBc3NlbWJseVRhZ0hlYXBDZWxsVHlwZTsKKyNlbmRp
ZgorCisgICAgLy8gQWxpZ25lZE1lbW9yeUFsbG9jYXRvcnMKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8
RmFzdE1hbGxvY0FsaWduZWRNZW1vcnlBbGxvY2F0b3I+IGZhc3RNYWxsb2NBbGxvY2F0b3I7Cisg
ICAgc3RkOjp1bmlxdWVfcHRyPEdpZ2FjYWdlQWxpZ25lZE1lbW9yeUFsbG9jYXRvcj4gcHJpbWl0
aXZlR2lnYWNhZ2VBbGxvY2F0b3I7CisgICAgc3RkOjp1bmlxdWVfcHRyPEdpZ2FjYWdlQWxpZ25l
ZE1lbW9yeUFsbG9jYXRvcj4ganNWYWx1ZUdpZ2FjYWdlQWxsb2NhdG9yOworCisgICAgLy8gU3Vi
c3BhY2VzCisgICAgQ29tcGxldGVTdWJzcGFjZSBwcmltaXRpdmVHaWdhY2FnZUF1eGlsaWFyeVNw
YWNlOyAvLyBUeXBlZCBhcnJheXMsIHN0cmluZ3MsIGJpdHZlY3RvcnMsIGV0YyBnbyBoZXJlLgor
ICAgIENvbXBsZXRlU3Vic3BhY2UganNWYWx1ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2U7IC8vIEJ1
dHRlcmZsaWVzLCBhcnJheXMgb2YgSlNWYWx1ZXMsIGV0YyBnbyBoZXJlLgorICAgIENvbXBsZXRl
U3Vic3BhY2UgaW1tdXRhYmxlQnV0dGVyZmx5SlNWYWx1ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2U7
IC8vIEpTSW1tdXRhYmxlQnV0dGVyZmx5IGdvZXMgaGVyZS4KKworICAgIC8vIFdlIG1ha2UgY3Jv
c3MtY3V0dGluZyBhc3N1bXB0aW9ucyBhYm91dCB0eXBlZCBhcnJheXMgYmVpbmcgaW4gdGhlIHBy
aW1pdGl2ZSBHaWdhY2FnZSBhbmQgYnV0dGVyZmxpZXMKKyAgICAvLyBiZWluZyBpbiB0aGUgSlNW
YWx1ZSBnaWdhY2FnZS4gRm9yIHNvbWUgdHlwZXMsIGl0J3Mgc3VwZXIgb2J2aW91cyB3aGVyZSB0
aGV5IHNob3VsZCBnbywgYW5kIHNvIHdlCisgICAgLy8gY2FuIGhhcmRjb2RlIHRoYXQgZmFjdC4g
QnV0IHNvbWV0aW1lcyBpdCdzIG5vdCBjbGVhciwgc28gd2UgYWJzdHJhY3QgaXQgYnkgaGF2aW5n
IGEgR2lnYWNhZ2U6OktpbmQKKyAgICAvLyBjb25zdGFudCBzb21ld2hlcmUuCisgICAgLy8gRklY
TUU6IE1heWJlIGl0IHdvdWxkIGJlIGJldHRlciBpZiBldmVyeW9uZSBhYnN0cmFjdGVkIHRoaXM/
CisgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NTI0OAor
ICAgIEFMV0FZU19JTkxJTkUgQ29tcGxldGVTdWJzcGFjZSYgZ2lnYWNhZ2VBdXhpbGlhcnlTcGFj
ZShHaWdhY2FnZTo6S2luZCBraW5kKQorICAgIHsKKyAgICAgICAgc3dpdGNoIChraW5kKSB7Cisg
ICAgICAgIGNhc2UgR2lnYWNhZ2U6OlByaW1pdGl2ZToKKyAgICAgICAgICAgIHJldHVybiBwcmlt
aXRpdmVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlOworICAgICAgICBjYXNlIEdpZ2FjYWdlOjpKU1Zh
bHVlOgorICAgICAgICAgICAgcmV0dXJuIGpzVmFsdWVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlOwor
ICAgICAgICBjYXNlIEdpZ2FjYWdlOjpOdW1iZXJPZktpbmRzOgorICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIH0KKyAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAg
ICAgcmV0dXJuIHByaW1pdGl2ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2U7CisgICAgfQorICAgIAor
ICAgIC8vIFdoZW5ldmVyIHBvc3NpYmxlLCB1c2Ugc3Vic3BhY2VGb3I8Q2VsbFR5cGU+KHZtKSB0
byBnZXQgb25lIG9mIHRoZXNlIHN1YnNwYWNlcy4KKyAgICBDb21wbGV0ZVN1YnNwYWNlIGNlbGxT
cGFjZTsKKyAgICBDb21wbGV0ZVN1YnNwYWNlIHZhcmlhYmxlU2l6ZWRDZWxsU3BhY2U7IC8vIEZJ
WE1FOiBUaGlzIHNwYWNlIGlzIHByb2JsZW1hdGljIGJlY2F1c2Ugd2UgaGF2ZSB0aGluZ3MgaW4g
aGVyZSBsaWtlIERpcmVjdEFyZ3VtZW50cyBhbmQgU2NvcGVkQXJndW1lbnRzOyB0aG9zZSBzaG91
bGQgYmUgc3BsaXQgaW50byBKU1ZhbHVlT09CIGNlbGxzIGFuZCBKU1ZhbHVlU3RyaWN0IGF1eGls
aWFyaWVzLiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgyODU4Cisg
ICAgQ29tcGxldGVTdWJzcGFjZSBkZXN0cnVjdGlibGVPYmplY3RTcGFjZTsKKworICAgIElzb1N1
YnNwYWNlIGFycmF5U3BhY2U7CisgICAgSXNvU3Vic3BhY2UgYmlnSW50U3BhY2U7CisgICAgSXNv
U3Vic3BhY2UgY2FsbGVlU3BhY2U7CisgICAgSXNvU3Vic3BhY2UgY2xvbmVkQXJndW1lbnRzU3Bh
Y2U7CisgICAgSXNvU3Vic3BhY2UgY3VzdG9tR2V0dGVyU2V0dGVyU3BhY2U7CisgICAgSXNvU3Vi
c3BhY2UgZGF0ZUluc3RhbmNlU3BhY2U7CisgICAgSXNvU3Vic3BhY2UgZG9tQXR0cmlidXRlR2V0
dGVyU2V0dGVyU3BhY2U7CisgICAgSXNvU3Vic3BhY2UgZXhjZXB0aW9uU3BhY2U7CisgICAgSXNv
U3Vic3BhY2UgZXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZVNwYWNlOworICAgIElzb1N1YnNwYWNl
IGZ1bmN0aW9uU3BhY2U7CisgICAgSXNvU3Vic3BhY2UgZ2V0dGVyU2V0dGVyU3BhY2U7CisgICAg
SXNvU3Vic3BhY2UgZ2xvYmFsTGV4aWNhbEVudmlyb25tZW50U3BhY2U7CisgICAgSXNvU3Vic3Bh
Y2UgaW50ZXJuYWxGdW5jdGlvblNwYWNlOworICAgIElzb1N1YnNwYWNlIGpzUHJveHlTcGFjZTsK
KyAgICBJc29TdWJzcGFjZSBuYXRpdmVFeGVjdXRhYmxlU3BhY2U7CisgICAgSXNvU3Vic3BhY2Ug
bnVtYmVyT2JqZWN0U3BhY2U7CisgICAgSXNvU3Vic3BhY2UgcGxhaW5PYmplY3RTcGFjZTsKKyAg
ICBJc29TdWJzcGFjZSBwcm9taXNlU3BhY2U7CisgICAgSXNvU3Vic3BhY2UgcHJvcGVydHlOYW1l
RW51bWVyYXRvclNwYWNlOworICAgIElzb1N1YnNwYWNlIHByb3BlcnR5VGFibGVTcGFjZTsKKyAg
ICBJc29TdWJzcGFjZSByZWdFeHBTcGFjZTsKKyAgICBJc29TdWJzcGFjZSByZWdFeHBPYmplY3RT
cGFjZTsKKyAgICBJc29TdWJzcGFjZSByb3BlU3RyaW5nU3BhY2U7CisgICAgSXNvU3Vic3BhY2Ug
c2NvcGVkQXJndW1lbnRzU3BhY2U7CisgICAgSXNvU3Vic3BhY2Ugc3BhcnNlQXJyYXlWYWx1ZU1h
cFNwYWNlOworICAgIElzb1N1YnNwYWNlIHN0cmluZ1NwYWNlOworICAgIElzb1N1YnNwYWNlIHN0
cmluZ09iamVjdFNwYWNlOworICAgIElzb1N1YnNwYWNlIHN0cnVjdHVyZUNoYWluU3BhY2U7Cisg
ICAgSXNvU3Vic3BhY2Ugc3RydWN0dXJlUmFyZURhdGFTcGFjZTsKKyAgICBJc29TdWJzcGFjZSBz
dHJ1Y3R1cmVTcGFjZTsKKyAgICBJc29TdWJzcGFjZSBicmFuZGVkU3RydWN0dXJlU3BhY2U7Cisg
ICAgSXNvU3Vic3BhY2Ugc3ltYm9sVGFibGVTcGFjZTsKKworI2RlZmluZSBEWU5BTUlDX0lTT19T
VUJTUEFDRV9ERUZJTkVfTUVNQkVSKG5hbWUpIFwKKyAgICB0ZW1wbGF0ZTxTdWJzcGFjZUFjY2Vz
cyBtb2RlPiBcCisgICAgSXNvU3Vic3BhY2UqIG5hbWUoKSBcCisgICAgeyBcCisgICAgICAgIGlm
IChtXyMjbmFtZSB8fCBtb2RlID09IFN1YnNwYWNlQWNjZXNzOjpDb25jdXJyZW50bHkpIFwKKyAg
ICAgICAgICAgIHJldHVybiBtXyMjbmFtZS5nZXQoKTsgXAorICAgICAgICByZXR1cm4gbmFtZSMj
U2xvdygpOyBcCisgICAgfSBcCisgICAgSlNfRVhQT1JUX1BSSVZBVEUgSXNvU3Vic3BhY2UqIG5h
bWUjI1Nsb3coKTsgXAorICAgIHN0ZDo6dW5pcXVlX3B0cjxJc29TdWJzcGFjZT4gbV8jI25hbWU7
CisKKworI2lmIEpTQ19PQkpDX0FQSV9FTkFCTEVECisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0Vf
REVGSU5FX01FTUJFUihhcGlXcmFwcGVyT2JqZWN0U3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VC
U1BBQ0VfREVGSU5FX01FTUJFUihvYmpDQ2FsbGJhY2tGdW5jdGlvblNwYWNlKQorI2VuZGlmCisj
aWZkZWYgSlNDX0dMSUJfQVBJX0VOQUJMRUQKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJ
TkVfTUVNQkVSKGFwaVdyYXBwZXJPYmplY3RTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFD
RV9ERUZJTkVfTUVNQkVSKGpzY0NhbGxiYWNrRnVuY3Rpb25TcGFjZSkKKyAgICBEWU5BTUlDX0lT
T19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKGNhbGxiYWNrQVBJV3JhcHBlckdsb2JhbE9iamVjdFNw
YWNlKQorI2VuZGlmCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihhcGlH
bG9iYWxPYmplY3RTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVS
KGFwaVZhbHVlV3JhcHBlclNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9N
RU1CRVIoYXJyYXlCdWZmZXJTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVf
TUVNQkVSKGFycmF5SXRlcmF0b3JTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJ
TkVfTUVNQkVSKGFzeW5jR2VuZXJhdG9yU3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0Vf
REVGSU5FX01FTUJFUihiaWdJbnQ2NEFycmF5U3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BB
Q0VfREVGSU5FX01FTUJFUihiaWdJbnRPYmplY3RTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJT
UEFDRV9ERUZJTkVfTUVNQkVSKGJpZ1VpbnQ2NEFycmF5U3BhY2UpCisgICAgRFlOQU1JQ19JU09f
U1VCU1BBQ0VfREVGSU5FX01FTUJFUihib29sZWFuT2JqZWN0U3BhY2UpCisgICAgRFlOQU1JQ19J
U09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihib3VuZEZ1bmN0aW9uU3BhY2UpCisgICAgRFlOQU1J
Q19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihjYWxsYmFja0NvbnN0cnVjdG9yU3BhY2UpCisg
ICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihjYWxsYmFja0dsb2JhbE9iamVj
dFNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoY2FsbGJhY2tG
dW5jdGlvblNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoY2Fs
bGJhY2tPYmplY3RTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVS
KGN1c3RvbUdldHRlckZ1bmN0aW9uU3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVG
SU5FX01FTUJFUihjdXN0b21TZXR0ZXJGdW5jdGlvblNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NV
QlNQQUNFX0RFRklORV9NRU1CRVIoZGF0YVZpZXdTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJT
UEFDRV9ERUZJTkVfTUVNQkVSKGRlYnVnZ2VyU2NvcGVTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19T
VUJTUEFDRV9ERUZJTkVfTUVNQkVSKGVycm9ySW5zdGFuY2VTcGFjZSkKKyAgICBEWU5BTUlDX0lT
T19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKGZsb2F0MzJBcnJheVNwYWNlKQorICAgIERZTkFNSUNf
SVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoZmxvYXQ2NEFycmF5U3BhY2UpCisgICAgRFlOQU1J
Q19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihmdW5jdGlvblJhcmVEYXRhU3BhY2UpCisgICAg
RFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihnZW5lcmF0b3JTcGFjZSkKKyAgICBE
WU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKGdsb2JhbE9iamVjdFNwYWNlKQorICAg
IERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoaW5qZWN0ZWRTY3JpcHRIb3N0U3Bh
Y2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihpbnQ4QXJyYXlTcGFj
ZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKGludDE2QXJyYXlTcGFj
ZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKGludDMyQXJyYXlTcGFj
ZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKGphdmFTY3JpcHRDYWxs
RnJhbWVTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKGpzTW9k
dWxlUmVjb3JkU3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUiht
YXBCdWNrZXRTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKG1h
cEl0ZXJhdG9yU3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUiht
YXBTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKG1vZHVsZU5h
bWVzcGFjZU9iamVjdFNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1C
RVIobmF0aXZlU3RkRnVuY3Rpb25TcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJ
TkVfTUVNQkVSKHByb3h5T2JqZWN0U3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVG
SU5FX01FTUJFUihwcm94eVJldm9rZVNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RF
RklORV9NRU1CRVIoc2NvcGVkQXJndW1lbnRzVGFibGVTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19T
VUJTUEFDRV9ERUZJTkVfTUVNQkVSKHNjcmlwdEZldGNoUGFyYW1ldGVyc1NwYWNlKQorICAgIERZ
TkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoc2NyaXB0RmV0Y2hlclNwYWNlKQorICAg
IERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoc2V0QnVja2V0U3BhY2UpCisgICAg
RFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihzZXRJdGVyYXRvclNwYWNlKQorICAg
IERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoc2V0U3BhY2UpCisgICAgRFlOQU1J
Q19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihzaGFkb3dSZWFsbVNwYWNlKTsKKyAgICBEWU5B
TUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKHN0cmljdEV2YWxBY3RpdmF0aW9uU3BhY2Up
CisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihzdHJpbmdJdGVyYXRvclNw
YWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoc291cmNlQ29kZVNw
YWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoc3ltYm9sU3BhY2Up
CisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihzeW1ib2xPYmplY3RTcGFj
ZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKHRlbXBsYXRlT2JqZWN0
RGVzY3JpcHRvclNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIo
dGVtcG9yYWxDYWxlbmRhclNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9N
RU1CRVIodGVtcG9yYWxEdXJhdGlvblNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RF
RklORV9NRU1CRVIodGVtcG9yYWxJbnN0YW50U3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BB
Q0VfREVGSU5FX01FTUJFUih0ZW1wb3JhbFBsYWluVGltZVNwYWNlKQorICAgIERZTkFNSUNfSVNP
X1NVQlNQQUNFX0RFRklORV9NRU1CRVIodGVtcG9yYWxUaW1lWm9uZVNwYWNlKQorICAgIERZTkFN
SUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIodWludDhBcnJheVNwYWNlKQorICAgIERZTkFN
SUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIodWludDhDbGFtcGVkQXJyYXlTcGFjZSkKKyAg
ICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKHVpbnQxNkFycmF5U3BhY2UpCisg
ICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUih1aW50MzJBcnJheVNwYWNlKQor
ICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIodW5saW5rZWRFdmFsQ29kZUJs
b2NrU3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUih1bmxpbmtl
ZEZ1bmN0aW9uQ29kZUJsb2NrU3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5F
X01FTUJFUih1bmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2tTcGFjZSkKKyAgICBEWU5BTUlD
X0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKHVubGlua2VkUHJvZ3JhbUNvZGVCbG9ja1NwYWNl
KQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoZmluYWxpemF0aW9uUmVn
aXN0cnlTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKHdlYWtP
YmplY3RSZWZTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKHdl
YWtTZXRTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKHdlYWtN
YXBTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKHdpdGhTY29w
ZVNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoaW50bENvbGxh
dG9yU3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihpbnRsRGF0
ZVRpbWVGb3JtYXRTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVS
KGludGxEaXNwbGF5TmFtZXNTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVf
TUVNQkVSKGludGxMaXN0Rm9ybWF0U3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVG
SU5FX01FTUJFUihpbnRsTG9jYWxlU3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVG
SU5FX01FTUJFUihpbnRsTnVtYmVyRm9ybWF0U3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BB
Q0VfREVGSU5FX01FTUJFUihpbnRsUGx1cmFsUnVsZXNTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19T
VUJTUEFDRV9ERUZJTkVfTUVNQkVSKGludGxSZWxhdGl2ZVRpbWVGb3JtYXRTcGFjZSkKKyAgICBE
WU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKGludGxTZWdtZW50SXRlcmF0b3JTcGFj
ZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKGludGxTZWdtZW50ZXJT
cGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKGludGxTZWdtZW50
c1NwYWNlKQorI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFD
RV9ERUZJTkVfTUVNQkVSKGpzVG9XYXNtSUNDYWxsZWVTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19T
VUJTUEFDRV9ERUZJTkVfTUVNQkVSKHdlYkFzc2VtYmx5Q29kZUJsb2NrU3BhY2UpCisgICAgRFlO
QU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUih3ZWJBc3NlbWJseUV4Y2VwdGlvblNwYWNl
KQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIod2ViQXNzZW1ibHlGdW5j
dGlvblNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIod2ViQXNz
ZW1ibHlHbG9iYWxTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVS
KHdlYkFzc2VtYmx5SW5zdGFuY2VTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJ
TkVfTUVNQkVSKHdlYkFzc2VtYmx5TWVtb3J5U3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BB
Q0VfREVGSU5FX01FTUJFUih3ZWJBc3NlbWJseU1vZHVsZVNwYWNlKQorICAgIERZTkFNSUNfSVNP
X1NVQlNQQUNFX0RFRklORV9NRU1CRVIod2ViQXNzZW1ibHlNb2R1bGVSZWNvcmRTcGFjZSkKKyAg
ICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKHdlYkFzc2VtYmx5VGFibGVTcGFj
ZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKHdlYkFzc2VtYmx5VGFn
U3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUih3ZWJBc3NlbWJs
eVdyYXBwZXJGdW5jdGlvblNwYWNlKQorI2VuZGlmCisKKyN1bmRlZiBEWU5BTUlDX0lTT19TVUJT
UEFDRV9ERUZJTkVfTUVNQkVSCisgICAgCisgICAgSXNvQ2VsbFNldCBleGVjdXRhYmxlVG9Db2Rl
QmxvY2tFZGdlc1dpdGhDb25zdHJhaW50czsKKyAgICBJc29DZWxsU2V0IGV4ZWN1dGFibGVUb0Nv
ZGVCbG9ja0VkZ2VzV2l0aEZpbmFsaXplcnM7CisKKyNkZWZpbmUgRFlOQU1JQ19TUEFDRV9BTkRf
U0VUX0RFRklORV9NRU1CRVIobmFtZSkgXAorICAgIHRlbXBsYXRlPFN1YnNwYWNlQWNjZXNzIG1v
ZGU+IFwKKyAgICBJc29TdWJzcGFjZSogbmFtZSgpIFwKKyAgICB7IFwKKyAgICAgICAgaWYgKGF1
dG8qIHNwYWNlQW5kU2V0ID0gbV8jI25hbWUuZ2V0KCkpIFwKKyAgICAgICAgICAgIHJldHVybiAm
c3BhY2VBbmRTZXQtPnNwYWNlOyBcCisgICAgICAgIGlmIChtb2RlID09IFN1YnNwYWNlQWNjZXNz
OjpDb25jdXJyZW50bHkpIFwKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOyBcCisgICAgICAg
IHJldHVybiBuYW1lIyNTbG93KCk7IFwKKyAgICB9IFwKKyAgICBJc29TdWJzcGFjZSogbmFtZSMj
U2xvdygpOyBcCisgICAgc3RkOjp1bmlxdWVfcHRyPFNwYWNlQW5kU2V0PiBtXyMjbmFtZTsKKyAg
ICAKKyAgICBzdHJ1Y3QgU3BhY2VBbmRTZXQgeworICAgICAgICBXVEZfTUFLRV9TVFJVQ1RfRkFT
VF9BTExPQ0FURUQ7CisKKyAgICAgICAgSXNvU3Vic3BhY2Ugc3BhY2U7CisgICAgICAgIElzb0Nl
bGxTZXQgc2V0OworICAgICAgICAKKyAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gQXJndW1l
bnRzPgorICAgICAgICBTcGFjZUFuZFNldChBcmd1bWVudHMmJi4uLiBhcmd1bWVudHMpCisgICAg
ICAgICAgICA6IHNwYWNlKHN0ZDo6Zm9yd2FyZDxBcmd1bWVudHM+KGFyZ3VtZW50cykuLi4pCisg
ICAgICAgICAgICAsIHNldChzcGFjZSkKKyAgICAgICAgeworICAgICAgICB9CisgICAgICAgIAor
ICAgICAgICBzdGF0aWMgSXNvQ2VsbFNldCYgc2V0Rm9yKFN1YnNwYWNlJiBzcGFjZSkKKyAgICAg
ICAgeworICAgICAgICAgICAgcmV0dXJuICpiaXR3aXNlX2Nhc3Q8SXNvQ2VsbFNldCo+KAorICAg
ICAgICAgICAgICAgIGJpdHdpc2VfY2FzdDxjaGFyKj4oJnNwYWNlKSAtCisgICAgICAgICAgICAg
ICAgT0JKRUNUX09GRlNFVE9GKFNwYWNlQW5kU2V0LCBzcGFjZSkgKworICAgICAgICAgICAgICAg
IE9CSkVDVF9PRkZTRVRPRihTcGFjZUFuZFNldCwgc2V0KSk7CisgICAgICAgIH0KKyAgICB9Owor
ICAgIAorICAgIFNwYWNlQW5kU2V0IGNvZGVCbG9ja1NwYWNlOworCisgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgRnVuYz4KKyAgICB2b2lkIGZvckVhY2hDb2RlQmxvY2tTcGFjZShjb25zdCBGdW5jJiBm
dW5jKQorICAgIHsKKyAgICAgICAgLy8gVGhpcyBzaG91bGQgbm90IGluY2x1ZGUgd2ViQXNzZW1i
bHlDb2RlQmxvY2tTcGFjZSBiZWNhdXNlIHRoaXMgaXMgYWJvdXQgc3Vic2NsYXNzZXMgb2YKKyAg
ICAgICAgLy8gSlNDOjpDb2RlQmxvY2suCisgICAgICAgIGZ1bmMoY29kZUJsb2NrU3BhY2UpOwor
ICAgIH0KKworICAgIERZTkFNSUNfU1BBQ0VfQU5EX1NFVF9ERUZJTkVfTUVNQkVSKGV2YWxFeGVj
dXRhYmxlU3BhY2UpCisgICAgRFlOQU1JQ19TUEFDRV9BTkRfU0VUX0RFRklORV9NRU1CRVIobW9k
dWxlUHJvZ3JhbUV4ZWN1dGFibGVTcGFjZSkKKyAgICBTcGFjZUFuZFNldCBmdW5jdGlvbkV4ZWN1
dGFibGVTcGFjZTsKKyAgICBTcGFjZUFuZFNldCBwcm9ncmFtRXhlY3V0YWJsZVNwYWNlOworCisg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuYz4KKyAgICB2b2lkIGZvckVhY2hTY3JpcHRFeGVjdXRh
YmxlU3BhY2UoY29uc3QgRnVuYyYgZnVuYykKKyAgICB7CisgICAgICAgIGlmIChtX2V2YWxFeGVj
dXRhYmxlU3BhY2UpCisgICAgICAgICAgICBmdW5jKCptX2V2YWxFeGVjdXRhYmxlU3BhY2UpOwor
ICAgICAgICBmdW5jKGZ1bmN0aW9uRXhlY3V0YWJsZVNwYWNlKTsKKyAgICAgICAgaWYgKG1fbW9k
dWxlUHJvZ3JhbUV4ZWN1dGFibGVTcGFjZSkKKyAgICAgICAgICAgIGZ1bmMoKm1fbW9kdWxlUHJv
Z3JhbUV4ZWN1dGFibGVTcGFjZSk7CisgICAgICAgIGZ1bmMocHJvZ3JhbUV4ZWN1dGFibGVTcGFj
ZSk7CisgICAgfQorCisgICAgU3BhY2VBbmRTZXQgdW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGVT
cGFjZTsKKworI3VuZGVmIERZTkFNSUNfU1BBQ0VfQU5EX1NFVF9ERUZJTkVfTUVNQkVSCiB9Owog
CiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lz
b0hlYXBDZWxsVHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvSXNvSGVhcENlbGxUeXBlLmNwcAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvSXNvSGVhcENlbGxUeXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzEs
MjIgKzMxLDQ5IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1Jc29IZWFwQ2VsbFR5cGU6Oklzb0hl
YXBDZWxsVHlwZShEZXN0cnVjdGlvbk1vZGUgZGVzdHJ1Y3Rpb25Nb2RlLCBEZXN0cm95RnVuY3Rp
b25QdHIgZGVzdHJveUZ1bmN0aW9uKQotICAgIDogSGVhcENlbGxUeXBlKENlbGxBdHRyaWJ1dGVz
KGRlc3RydWN0aW9uTW9kZSwgSGVhcENlbGw6OkpTQ2VsbCkpCi0gICAgLCBtX2Rlc3Ryb3koZGVz
dHJveUZ1bmN0aW9uKQotewotfQotCi1Jc29IZWFwQ2VsbFR5cGU6On5Jc29IZWFwQ2VsbFR5cGUo
KSA9IGRlZmF1bHQ7CisvL0lzb0hlYXBDZWxsVHlwZTo6SXNvSGVhcENlbGxUeXBlKERlc3RydWN0
aW9uTW9kZSBkZXN0cnVjdGlvbk1vZGUsIERlc3Ryb3lGdW5jdGlvblB0ciBkZXN0cm95RnVuY3Rp
b24pCisvLyAgICA6IEhlYXBDZWxsVHlwZShDZWxsQXR0cmlidXRlcyhkZXN0cnVjdGlvbk1vZGUs
IEhlYXBDZWxsOjpKU0NlbGwpKQorLy8gICAgLCBtX2Rlc3Ryb3koZGVzdHJveUZ1bmN0aW9uKQor
Ly97CisvL30KKy8vCisvL0lzb0hlYXBDZWxsVHlwZTo6fklzb0hlYXBDZWxsVHlwZSgpID0gZGVm
YXVsdDsKKy8vCisvL3ZvaWQgSXNvSGVhcENlbGxUeXBlOjpmaW5pc2hTd2VlcChNYXJrZWRCbG9j
azo6SGFuZGxlJiBoYW5kbGUsIEZyZWVMaXN0KiBmcmVlTGlzdCkgY29uc3QKKy8veworLy8gICAg
aGFuZGxlLmZpbmlzaFN3ZWVwS25vd2luZ0hlYXBDZWxsVHlwZShmcmVlTGlzdCwgKnRoaXMpOwor
Ly99CisvLworLy92b2lkIElzb0hlYXBDZWxsVHlwZTo6ZGVzdHJveShWTSYsIEpTQ2VsbCogY2Vs
bCkgY29uc3QKKy8veworLy8gICAgbV9kZXN0cm95KGNlbGwpOworLy99CiAKLXZvaWQgSXNvSGVh
cENlbGxUeXBlOjpmaW5pc2hTd2VlcChNYXJrZWRCbG9jazo6SGFuZGxlJiBoYW5kbGUsIEZyZWVM
aXN0KiBmcmVlTGlzdCkgY29uc3QKK3ZvaWQgSXNvSGVhcENlbGxUeXBlQmFzZTo6ZmluaXNoU3dl
ZXAoTWFya2VkQmxvY2s6OkhhbmRsZSYgaGFuZGxlLCBGcmVlTGlzdCogZnJlZUxpc3QpIGNvbnN0
CiB7Ci0gICAgaGFuZGxlLmZpbmlzaFN3ZWVwS25vd2luZ0hlYXBDZWxsVHlwZShmcmVlTGlzdCwg
KnRoaXMpOwotfQorICAgIC8vIGZpbmlzaFN3ZWVwS25vd2luZ0hlYXBDZWxsVHlwZSgpIG1heSBj
YWxsIGRlc3Ryb3kgaW4gYSBsb29wLCBhbmQgd2UgZG9uJ3QKKyAgICAvLyB3YW50IHRvIGRvIGEg
dmlydHVhbCBmdW5jdGlvbiB0byBkbyB0aGUgZGVzdHJveSBpbiB0aGF0IGxvb3AuIEluc3RlYWQs
CisgICAgLy8gd2UgY2FsbCB0aGUgdmlydHVhbCBmdW5jdGlvbiBkZXN0cm95RnVuY3Rpb25QdHIo
KSBvbmx5IG9uY2UgdG8gZmV0Y2ggdGhlCisgICAgLy8gRGVzdHJveUZ1bmN0aW9uUHRyLCBhbmQg
dXNlIHRoaXMgSW52b2tlciBjbGFzcyB0byBjYWNoZSB0aGUgcmV0dXJuZWQKKyAgICAvLyBEZXN0
cm95RnVuY3Rpb25QdHIuIGZpbmlzaFN3ZWVwS25vd2luZ0hlYXBDZWxsVHlwZSgpIGNhbiB0aGVu
IGludm9rZQorICAgIC8vIGRlc3Ryb3kgdmlhIEludm9rZXIncyBjYWNoZWQgRGVzdHJveUZ1bmN0
aW9uUHRyLgorICAgIGNsYXNzIEludm9rZXIgeworICAgIHB1YmxpYzoKKyAgICAgICAgSW52b2tl
cihEZXN0cm95RnVuY3Rpb25QdHIgZGVzdHJveUZ1bmN0aW9uUHRyKQorICAgICAgICAgICAgOiBt
X2Rlc3Ryb3koZGVzdHJveUZ1bmN0aW9uUHRyKQorICAgICAgICB7IH0KKworICAgICAgICBBTFdB
WVNfSU5MSU5FIHZvaWQgb3BlcmF0b3IoKShWTSYsIEpTQ2VsbCogY2VsbCkgY29uc3QKKyAgICAg
ICAgeworICAgICAgICAgICAgbV9kZXN0cm95KGNlbGwpOworICAgICAgICB9CisKKyAgICBwcml2
YXRlOgorICAgICAgICBEZXN0cm95RnVuY3Rpb25QdHIgbV9kZXN0cm95OworICAgIH07CiAKLXZv
aWQgSXNvSGVhcENlbGxUeXBlOjpkZXN0cm95KFZNJiwgSlNDZWxsKiBjZWxsKSBjb25zdAotewot
ICAgIG1fZGVzdHJveShjZWxsKTsKKyAgICBJbnZva2VyIGludm9rZXIoZGVzdHJveUZ1bmN0aW9u
UHRyKCkpOworICAgIGhhbmRsZS5maW5pc2hTd2VlcEtub3dpbmdIZWFwQ2VsbFR5cGUoZnJlZUxp
c3QsIGludm9rZXIpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL0lzb0hlYXBDZWxsVHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL0lzb0hlYXBDZWxsVHlwZS5oCShyZXZpc2lvbiAyODYwOTUpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Jc29IZWFwQ2VsbFR5cGUuaAkod29ya2luZyBj
b3B5KQpAQCAtMjksMzAgKzI5LDc4IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1jbGFzcyBJc29I
ZWFwQ2VsbFR5cGUgZmluYWwgOiBwdWJsaWMgSGVhcENlbGxUeXBlIHsKKy8vY2xhc3MgSXNvSGVh
cENlbGxUeXBlIGZpbmFsIDogcHVibGljIEhlYXBDZWxsVHlwZSB7CisvL3B1YmxpYzoKKy8vICAg
IHVzaW5nIERlc3Ryb3lGdW5jdGlvblB0ciA9IHZvaWQgKCopKEpTQ2VsbCopOworLy8KKy8vICAg
IEpTX0VYUE9SVF9QUklWQVRFIH5Jc29IZWFwQ2VsbFR5cGUoKTsKKy8vCisvLyAgICBKU19FWFBP
UlRfUFJJVkFURSBJc29IZWFwQ2VsbFR5cGUoRGVzdHJ1Y3Rpb25Nb2RlLCBEZXN0cm95RnVuY3Rp
b25QdHIpOworLy8KKy8vICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlPgorLy8gICAgc3Ry
dWN0IEFyZ3MgeworLy8gICAgICAgIEFyZ3MoKQorLy8gICAgICAgICAgICA6IG1vZGUoQ2VsbFR5
cGU6Om5lZWRzRGVzdHJ1Y3Rpb24gPyBOZWVkc0Rlc3RydWN0aW9uIDogRG9lc05vdE5lZWREZXN0
cnVjdGlvbikKKy8vICAgICAgICAgICAgLCBmdW5jdGlvblB0cigmQ2VsbFR5cGU6OmRlc3Ryb3kp
CisvLyAgICAgICAgeyB9CisvLworLy8gICAgICAgIERlc3RydWN0aW9uTW9kZSBtb2RlOworLy8g
ICAgICAgIERlc3Ryb3lGdW5jdGlvblB0ciBmdW5jdGlvblB0cjsKKy8vICAgIH07CisvLworLy8g
ICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGU+CisvLyAgICBJc29IZWFwQ2VsbFR5cGUoQXJn
czxDZWxsVHlwZT4mJiBhcmdzKQorLy8gICAgICAgIDogSXNvSGVhcENlbGxUeXBlKGFyZ3MubW9k
ZSwgYXJncy5mdW5jdGlvblB0cikKKy8vICAgIHsgfQorLy8KKy8vICAgIEpTX0VYUE9SVF9QUklW
QVRFIHZvaWQgZmluaXNoU3dlZXAoTWFya2VkQmxvY2s6OkhhbmRsZSYsIEZyZWVMaXN0KikgY29u
c3QgZmluYWw7CisvLyAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIGRlc3Ryb3koVk0mLCBKU0Nl
bGwqKSBjb25zdCBmaW5hbDsKKy8vCisvLyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgb3BlcmF0b3Io
KShWTSYsIEpTQ2VsbCogY2VsbCkgY29uc3QKKy8vICAgIHsKKy8vICAgICAgICBtX2Rlc3Ryb3ko
Y2VsbCk7CisvLyAgICB9CisvLworLy9wcml2YXRlOgorLy8gICAgRGVzdHJveUZ1bmN0aW9uUHRy
IFdURl9WVEJMX0ZVTkNQVFJfUFRSQVVUSF9TVFIoIklzb0hlYXBDZWxsVHlwZS5kZXN0cm95Iikg
bV9kZXN0cm95OworLy99OworCisvLyBUaGUgcmVhc29uIHdlIG5lZWQgYW4gSXNvSGVhcENlbGxU
eXBlQmFzZSBpcyBqdXN0IHNvIGFsbCBJc29IZWFwQ2VsbFR5cGUKKy8vIHNwZWNpYWxpemF0aW9u
cyBjYW4gc2hhcmUgdGhlIHNhbWUgZmluaXNoU3dlZXAoKS4gZmluaXNoU3dlZXAoKSBuZWVkcyB0
byBjYWxsCisvLyBNYXJrZWRCbG9jazo6SGFuZGxlOjpmaW5pc2hTd2VlcEtub3dpbmdIZWFwQ2Vs
bFR5cGUoKSwgd2hpY2ggaXMgYSByZWxhdGl2ZWx5CisvLyBsYXJnZSB0ZW1wbGF0ZSBmdW5jdGlv
bi4gV2UgZG9uJ3Qgd2FudCB0byBpbnN0YW50aWF0ZSBhIHNwZWNpYWxpemF0aW9uIG9mCisvLyBm
aW5pc2hTd2VlcEtub3dpbmdIZWFwQ2VsbFR5cGUoKSBmb3IgZWFjaCBJc29IZWFwQ2VsbFR5cGUg
Y2VsbCB0eXBlLgorY2xhc3MgSXNvSGVhcENlbGxUeXBlQmFzZSA6IHB1YmxpYyBIZWFwQ2VsbFR5
cGUgewogcHVibGljOgogICAgIHVzaW5nIERlc3Ryb3lGdW5jdGlvblB0ciA9IHZvaWQgKCopKEpT
Q2VsbCopOwogCi0gICAgSlNfRVhQT1JUX1BSSVZBVEUgfklzb0hlYXBDZWxsVHlwZSgpOworICAg
IEFMV0FZU19JTkxJTkUgSXNvSGVhcENlbGxUeXBlQmFzZShDZWxsQXR0cmlidXRlcyBhdHRyaWJ1
dGVzKQorICAgICAgICA6IEhlYXBDZWxsVHlwZShhdHRyaWJ1dGVzKQorICAgIHsgfQorICAgIH5J
c29IZWFwQ2VsbFR5cGVCYXNlKCkgPSBkZWZhdWx0OwogCi0gICAgSlNfRVhQT1JUX1BSSVZBVEUg
SXNvSGVhcENlbGxUeXBlKERlc3RydWN0aW9uTW9kZSwgRGVzdHJveUZ1bmN0aW9uUHRyKTsKKyAg
ICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIGZpbmlzaFN3ZWVwKE1hcmtlZEJsb2NrOjpIYW5kbGUm
IGhhbmRsZSwgRnJlZUxpc3QqIGZyZWVMaXN0KSBjb25zdCBmaW5hbDsKIAotICAgIHRlbXBsYXRl
PHR5cGVuYW1lIENlbGxUeXBlPgotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8SXNvSGVhcENl
bGxUeXBlPiBjcmVhdGUoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8SXNvSGVh
cENlbGxUeXBlPihDZWxsVHlwZTo6bmVlZHNEZXN0cnVjdGlvbiA/IE5lZWRzRGVzdHJ1Y3Rpb24g
OiBEb2VzTm90TmVlZERlc3RydWN0aW9uLCAmQ2VsbFR5cGU6OmRlc3Ryb3kpOwotICAgIH0KKyAg
ICB2aXJ0dWFsIERlc3Ryb3lGdW5jdGlvblB0ciBkZXN0cm95RnVuY3Rpb25QdHIoKSBjb25zdCA9
IDA7Cit9OwogCi0gICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBmaW5pc2hTd2VlcChNYXJrZWRC
bG9jazo6SGFuZGxlJiwgRnJlZUxpc3QqKSBjb25zdCBmaW5hbDsKLSAgICBKU19FWFBPUlRfUFJJ
VkFURSB2b2lkIGRlc3Ryb3koVk0mLCBKU0NlbGwqKSBjb25zdCBmaW5hbDsKK3RlbXBsYXRlPHR5
cGVuYW1lIENlbGxUeXBlPgorY2xhc3MgSXNvSGVhcENlbGxUeXBlIGZpbmFsIDogcHVibGljIElz
b0hlYXBDZWxsVHlwZUJhc2UgeworcHVibGljOgorICAgIElzb0hlYXBDZWxsVHlwZSgpCisgICAg
ICAgIDogSXNvSGVhcENlbGxUeXBlQmFzZShDZWxsQXR0cmlidXRlcyhDZWxsVHlwZTo6bmVlZHNE
ZXN0cnVjdGlvbiA/IE5lZWRzRGVzdHJ1Y3Rpb24gOiBEb2VzTm90TmVlZERlc3RydWN0aW9uLCBI
ZWFwQ2VsbDo6SlNDZWxsKSkKKyAgICB7IH0KKyAgICB+SXNvSGVhcENlbGxUeXBlKCkgPSBkZWZh
dWx0OwogCi0gICAgQUxXQVlTX0lOTElORSB2b2lkIG9wZXJhdG9yKCkoVk0mLCBKU0NlbGwqIGNl
bGwpIGNvbnN0CisgICAgdm9pZCBkZXN0cm95KFZNJiwgSlNDZWxsKiBjZWxsKSBjb25zdCBmaW5h
bAogICAgIHsKLSAgICAgICAgbV9kZXN0cm95KGNlbGwpOworICAgICAgICBDZWxsVHlwZTo6ZGVz
dHJveShjZWxsKTsKICAgICB9CiAKLXByaXZhdGU6Ci0gICAgRGVzdHJveUZ1bmN0aW9uUHRyIFdU
Rl9WVEJMX0ZVTkNQVFJfUFRSQVVUSF9TVFIoIklzb0hlYXBDZWxsVHlwZS5kZXN0cm95IikgbV9k
ZXN0cm95OworICAgIERlc3Ryb3lGdW5jdGlvblB0ciBkZXN0cm95RnVuY3Rpb25QdHIoKSBjb25z
dCBmaW5hbAorICAgIHsKKyAgICAgICAgcmV0dXJuICZDZWxsVHlwZTo6ZGVzdHJveTsKKyAgICB9
CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL0lzb0lubGluZWRIZWFwQ2VsbFR5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9Jc29JbmxpbmVkSGVhcENlbGxUeXBlLmgJKHJldmlzaW9uIDI4NjA5NSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lzb0lubGluZWRIZWFwQ2VsbFR5cGUuaAko
d29ya2luZyBjb3B5KQpAQCAtMzIsMjggKzMyLDEzIEBAIG5hbWVzcGFjZSBKU0MgewogdGVtcGxh
dGU8dHlwZW5hbWUgQ2VsbFR5cGU+CiBjbGFzcyBJc29JbmxpbmVkSGVhcENlbGxUeXBlIGZpbmFs
IDogcHVibGljIEhlYXBDZWxsVHlwZSB7CiBwdWJsaWM6Ci0gICAgSXNvSW5saW5lZEhlYXBDZWxs
VHlwZSgpCi0gICAgICAgIDogSGVhcENlbGxUeXBlKENlbGxBdHRyaWJ1dGVzKENlbGxUeXBlOjpu
ZWVkc0Rlc3RydWN0aW9uID8gTmVlZHNEZXN0cnVjdGlvbiA6IERvZXNOb3ROZWVkRGVzdHJ1Y3Rp
b24sIEhlYXBDZWxsOjpKU0NlbGwpKQotICAgIHsKLSAgICB9Ci0KKyAgICBJc29JbmxpbmVkSGVh
cENlbGxUeXBlKCk7CiAgICAgc3RydWN0IERlc3Ryb3lGdW5jIHsKLSAgICAgICAgQUxXQVlTX0lO
TElORSB2b2lkIG9wZXJhdG9yKCkoVk0mLCBKU0NlbGwqIGNlbGwpIGNvbnN0Ci0gICAgICAgIHsK
LSAgICAgICAgICAgIENlbGxUeXBlOjpkZXN0cm95KGNlbGwpOwotICAgICAgICB9CisgICAgICAg
IEFMV0FZU19JTkxJTkUgdm9pZCBvcGVyYXRvcigpKFZNJiwgSlNDZWxsKiBjZWxsKSBjb25zdDsK
ICAgICB9OwogCi0gICAgdm9pZCBmaW5pc2hTd2VlcChNYXJrZWRCbG9jazo6SGFuZGxlJiBoYW5k
bGUsIEZyZWVMaXN0KiBmcmVlTGlzdCkgY29uc3QgZmluYWwKLSAgICB7Ci0gICAgICAgIGhhbmRs
ZS5maW5pc2hTd2VlcEtub3dpbmdIZWFwQ2VsbFR5cGUoZnJlZUxpc3QsIERlc3Ryb3lGdW5jKCkp
OwotICAgIH0KLQotICAgIHZvaWQgZGVzdHJveShWTSYsIEpTQ2VsbCogY2VsbCkgY29uc3QgZmlu
YWwKLSAgICB7Ci0gICAgICAgIENlbGxUeXBlOjpkZXN0cm95KGNlbGwpOwotICAgIH0KKyAgICB2
b2lkIGZpbmlzaFN3ZWVwKE1hcmtlZEJsb2NrOjpIYW5kbGUmIGhhbmRsZSwgRnJlZUxpc3QqIGZy
ZWVMaXN0KSBjb25zdCBmaW5hbDsKKyAgICB2b2lkIGRlc3Ryb3koVk0mLCBKU0NlbGwqIGNlbGwp
IGNvbnN0IGZpbmFsOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCi0KSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL0lzb0lubGluZWRIZWFwQ2VsbFR5cGVJbmxpbmVzLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSXNvSW5saW5lZEhlYXBDZWxsVHlw
ZUlubGluZXMuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9J
c29JbmxpbmVkSGVhcENlbGxUeXBlSW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEs
NTggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IK
KyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJh
Z21hIG9uY2UKKworI2luY2x1ZGUgIklzb0lubGluZWRIZWFwQ2VsbFR5cGUuaCIKKworI2luY2x1
ZGUgIk1hcmtlZEJsb2NrLmgiCisKK25hbWVzcGFjZSBKU0MgeworCit0ZW1wbGF0ZTx0eXBlbmFt
ZSBDZWxsVHlwZT4KK2lubGluZSBJc29JbmxpbmVkSGVhcENlbGxUeXBlPENlbGxUeXBlPjo6SXNv
SW5saW5lZEhlYXBDZWxsVHlwZSgpCisgICAgOiBIZWFwQ2VsbFR5cGUoQ2VsbEF0dHJpYnV0ZXMo
Q2VsbFR5cGU6Om5lZWRzRGVzdHJ1Y3Rpb24gPyBOZWVkc0Rlc3RydWN0aW9uIDogRG9lc05vdE5l
ZWREZXN0cnVjdGlvbiwgSGVhcENlbGw6OkpTQ2VsbCkpCit7Cit9CisKK3RlbXBsYXRlPHR5cGVu
YW1lIENlbGxUeXBlPgorQUxXQVlTX0lOTElORSB2b2lkIElzb0lubGluZWRIZWFwQ2VsbFR5cGU8
Q2VsbFR5cGU+OjpEZXN0cm95RnVuYzo6b3BlcmF0b3IoKShWTSYsIEpTQ2VsbCogY2VsbCkgY29u
c3QKK3sKKyAgICBDZWxsVHlwZTo6ZGVzdHJveShjZWxsKTsKK30KKwordGVtcGxhdGU8dHlwZW5h
bWUgQ2VsbFR5cGU+CitpbmxpbmUgdm9pZCBJc29JbmxpbmVkSGVhcENlbGxUeXBlPENlbGxUeXBl
Pjo6ZmluaXNoU3dlZXAoTWFya2VkQmxvY2s6OkhhbmRsZSYgaGFuZGxlLCBGcmVlTGlzdCogZnJl
ZUxpc3QpIGNvbnN0Cit7CisgICAgaGFuZGxlLmZpbmlzaFN3ZWVwS25vd2luZ0hlYXBDZWxsVHlw
ZShmcmVlTGlzdCwgRGVzdHJveUZ1bmMoKSk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIENlbGxU
eXBlPgoraW5saW5lIHZvaWQgSXNvSW5saW5lZEhlYXBDZWxsVHlwZTxDZWxsVHlwZT46OmRlc3Ry
b3koVk0mLCBKU0NlbGwqIGNlbGwpIGNvbnN0Cit7CisgICAgQ2VsbFR5cGU6OmRlc3Ryb3koY2Vs
bCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvSXNvU3Vic3BhY2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9Jc29TdWJzcGFjZS5oCShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9Jc29TdWJzcGFjZS5oCSh3b3JraW5nIGNvcHkpCkBAIC01NCw3ICs1NCw3IEBA
IHB1YmxpYzoKICAgICB2b2lkKiB0cnlBbGxvY2F0ZUZyb21Mb3dlclRpZXIoKTsKICAgICB2b2lk
IGRlc3Ryb3lMb3dlclRpZXJGcmVlTGlzdCgpOwogCi0gICAgdm9pZCBzd2VlcCgpOworICAgIHZv
aWQgc3dlZXAzKCk7CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jPiB2b2lkIGZvckVhY2hM
b3dlclRpZXJGcmVlTGlzdGVkUHJlY2lzZUFsbG9jYXRpb24oY29uc3QgRnVuYyYpOwogCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Jc29TdWJzcGFjZUlubGluZXMuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Jc29TdWJzcGFjZUlubGluZXMuaAko
cmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSXNvU3Vic3Bh
Y2VJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDcgKzQ0LDcgQEAgaW5saW5lIHZvaWQg
SXNvU3Vic3BhY2U6OmNsZWFySXNvQ2VsbFNldAogICAgICAgICB9KTsKIH0KIAotaW5saW5lIHZv
aWQgSXNvU3Vic3BhY2U6OnN3ZWVwKCkKK2lubGluZSB2b2lkIElzb1N1YnNwYWNlOjpzd2VlcDMo
KQogewogICAgIFN1YnNwYWNlOjpzd2VlcEJsb2NrcygpOwogICAgIC8vIFdlIHN3ZWVwIHByZWNp
c2UtYWxsb2NhdGlvbnMgZWFnZXJseSwgYnV0IHdlIGRvIG5vdCBmcmVlIGl0IGltbWVkaWF0ZWx5
LgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2tJbmxpbmVzLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2tJbmxp
bmVzLmgJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01h
cmtlZEJsb2NrSW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxNi0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAxNi0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjEzLDcgKzIxMyw3IEBAIGlu
bGluZSBib29sIE1hcmtlZEJsb2NrOjpIYW5kbGU6OmFyZU1hcmsKIC8vIHN3ZWVwTW9kZSA9PSBT
d2VlcFRvRnJlZUxpc3QKIC8vIHNjcmliYmxlTW9kZSA9PSBEb250U2NyaWJibGUKIC8vIG5ld2x5
QWxsb2NhdGVkTW9kZSA9PSBEb2VzTm90SGF2ZU5ld2x5QWxsb2NhdGVkCi0vLyBkZXN0cnVjdGlv
bk1vZGUgIT0gQmxvY2tIYXNEZXN0cmljdG9yc0FuZENvbGxlY3RvcklzUnVubmluZworLy8gZGVz
dHJ1Y3Rpb25Nb2RlICE9IEJsb2NrSGFzRGVzdHJ1Y3RvcnNBbmRDb2xsZWN0b3JJc1J1bm5pbmcK
IC8vCiAvLyBlbXB0eU1vZGUgPSBJc0VtcHR5CiAvLyAgICAgZGVzdHJ1Y3Rpb25Nb2RlID0gRG9l
c05vdE5lZWREZXN0cnVjdGlvbgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9KU0luamVjdGVkU2NyaXB0SG9zdFByb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNJbmplY3RlZFNjcmlwdEhvc3RQcm90b3R5cGUuaAko
cmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0lu
amVjdGVkU2NyaXB0SG9zdFByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00MCw3ICs0MCw3
IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlND
OjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFS
QUJMRShKU0luamVjdGVkU2NyaXB0SG9zdFByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVy
biAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNw
YWNlKCk7CiAgICAgfQogCiAgICAgREVDTEFSRV9JTkZPOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9KU0phdmFTY3JpcHRDYWxsRnJhbWVQcm90b3R5cGUuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTSmF2YVNjcmlwdENhbGxG
cmFtZVByb3RvdHlwZS5oCShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL0pTSmF2YVNjcmlwdENhbGxGcmFtZVByb3RvdHlwZS5oCSh3b3JraW5nIGNv
cHkpCkBAIC00MCw3ICs0MCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFj
ZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJU
X0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU0phdmFTY3JpcHRDYWxsRnJhbWVQcm90b3R5cGUsIEJh
c2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVy
biAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIERFQ0xBUkVfSU5GTzsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9DYWxsRnJhbWUuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvQ2FsbEZyYW1lLmgJKHJl
dmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9DYWxs
RnJhbWUuaAkod29ya2luZyBjb3B5KQpAQCAtMzgsNiArMzgsNyBAQCBuYW1lc3BhY2UgSlNDICB7
CiAgICAgY2xhc3MgSlNDYWxsZWU7CiAgICAgY2xhc3MgSlNTY29wZTsKICAgICBjbGFzcyBTb3Vy
Y2VPcmlnaW47CisgICAgY2xhc3MgVmlydHVhbFJlZ2lzdGVyOwogCiAgICAgc3RydWN0IEluc3Ry
dWN0aW9uOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BZ2dyZWdhdGVF
cnJvclByb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0FnZ3JlZ2F0ZUVycm9yUHJvdG90eXBlLmgJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FnZ3JlZ2F0ZUVycm9yUHJvdG90eXBlLmgJKHdvcmtp
bmcgY29weSkKQEAgLTQ0LDcgKzQ0LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJc29TdWJzcGFj
ZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09f
U1VCU1BBQ0VfU0hBUkFCTEUoQWdncmVnYXRlRXJyb3JQcm90b3R5cGUsIEJhc2UpOwotICAgICAg
ICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5P
YmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVj
dHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90
eXBlKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlJdGVyYXRvclBy
b3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Fy
cmF5SXRlcmF0b3JQcm90b3R5cGUuaAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlJdGVyYXRvclByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC0zOCw3ICszOCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNw
YWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNF
X1NIQVJBQkxFKEFycmF5SXRlcmF0b3JQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4g
JnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFj
ZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBBcnJheUl0ZXJhdG9yUHJvdG90eXBlKiBjcmVhdGUo
Vk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FzeW5jRnJvbVN5bmNJdGVy
YXRvclByb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0FzeW5jRnJvbVN5bmNJdGVyYXRvclByb3RvdHlwZS5oCShyZXZpc2lvbiAyODYwOTUpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bc3luY0Zyb21TeW5jSXRlcmF0b3JQcm90
b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQg
KEMpIDIwMTctMjAxOSBPbGVrc2FuZHIgU2thY2hrb3YgPGdza2FjaGtvdkBnbWFpbC5jb20+Lgor
ICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlLCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM3LDcgKzM4LDcgQEAgcHVibGljOgog
ICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAg
ICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoQXN5bmNGcm9tU3luY0l0ZXJh
dG9yUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNl
OworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBE
RUNMQVJFX0lORk87CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bc3luY0Z1
bmN0aW9uUHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQXN5bmNGdW5jdGlvblByb3RvdHlwZS5oCShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bc3luY0Z1bmN0aW9uUHJvdG90eXBlLmgJKHdvcmtp
bmcgY29weSkKQEAgLTM4LDcgKzM4LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJc29TdWJzcGFj
ZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09f
U1VCU1BBQ0VfU0hBUkFCTEUoQXN5bmNGdW5jdGlvblByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAg
IHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9i
amVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAgREVDTEFSRV9JTkZPOwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQXN5bmNHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FzeW5jR2VuZXJhdG9y
RnVuY3Rpb25Qcm90b3R5cGUuaAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQXN5bmNHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5oCSh3b3JraW5n
IGNvcHkpCkBAIC0zOCw3ICszOCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2Uq
IHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NV
QlNQQUNFX1NIQVJBQkxFKEFzeW5jR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUsIEJhc2UpOwot
ICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0u
cGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIERFQ0xBUkVfSU5GTzsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FzeW5jR2VuZXJhdG9yUHJvdG90eXBlLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXN5bmNHZW5lcmF0b3JQ
cm90b3R5cGUuaAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQXN5bmNHZW5lcmF0b3JQcm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtNDEsNyAr
NDEsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYg
dm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShB
c3luY0dlbmVyYXRvclByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5P
YmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAg
fQogCiAgICAgc3RhdGljIEFzeW5jR2VuZXJhdG9yUHJvdG90eXBlKiBjcmVhdGUoVk0mIHZtLCBK
U0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSogc3RydWN0dXJlKQpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQXN5bmNJdGVyYXRvclByb3RvdHlwZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FzeW5jSXRlcmF0b3JQcm90b3R5cGUuaAko
cmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXN5bmNJ
dGVyYXRvclByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw3ICszOSw3IEBAIHB1Ymxp
YzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAg
ICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEFzeW5jSXRlcmF0b3JQ
cm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7Cisg
ICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRp
YyBBc3luY0l0ZXJhdG9yUHJvdG90eXBlKiBjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0F0b21pY3NPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9BdG9taWNzT2JqZWN0LmgJKHJldmlzaW9uIDI4NjA5NSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0F0b21pY3NPYmplY3QuaAkod29ya2luZyBj
b3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAxNyBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAyMSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTM3LDcgKzM3LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSog
c3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VC
U1BBQ0VfU0hBUkFCTEUoQXRvbWljc09iamVjdCwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0u
cGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7
CiAgICAgfQogICAgIAogICAgIHN0YXRpYyBBdG9taWNzT2JqZWN0KiBjcmVhdGUoVk0mLCBKU0ds
b2JhbE9iamVjdCosIFN0cnVjdHVyZSopOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQmlnSW50UHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQmlnSW50UHJvdG90eXBlLmgJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0JpZ0ludFByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC0zOSw3ICszOSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNw
YWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNF
X1NIQVJBQkxFKEJpZ0ludFByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxh
aW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAg
ICAgfQogCiAgICAgc3RhdGljIEJpZ0ludFByb3RvdHlwZSogY3JlYXRlKFZNJiB2bSwgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9CcmFuZGVkU3RydWN0dXJlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQnJhbmRlZFN0cnVjdHVyZS5oCShyZXZp
c2lvbiAyODYwOTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9CcmFuZGVkU3Ry
dWN0dXJlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ3LDcgKzQ3LDcgQEAgcHVibGljOgogICAgIHRl
bXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlLCBTdWJzcGFjZUFjY2Vzcz4KICAgICBzdGF0aWMgSXNv
U3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7Ci0gICAgICAgIHJldHVybiAmdm0u
YnJhbmRlZFN0cnVjdHVyZVNwYWNlOworICAgICAgICByZXR1cm4gJnZtLmJyYW5kZWRTdHJ1Y3R1
cmVTcGFjZSgpOwogICAgIH0KIAogICAgIEFMV0FZU19JTkxJTkUgYm9vbCBjaGVja0JyYW5kKFN5
bWJvbCogYnJhbmQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9CdXR0ZXJm
bHlJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
QnV0dGVyZmx5SW5saW5lcy5oCShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9CdXR0ZXJmbHlJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTc3LDcg
Kzc3LDcgQEAgQUxXQVlTX0lOTElORSB1bnNpZ25lZCBCdXR0ZXJmbHk6Om9wdGltYQogaW5saW5l
IEJ1dHRlcmZseSogQnV0dGVyZmx5Ojp0cnlDcmVhdGVVbmluaXRpYWxpemVkKFZNJiB2bSwgSlNP
YmplY3QqLCBzaXplX3QgcHJlQ2FwYWNpdHksIHNpemVfdCBwcm9wZXJ0eUNhcGFjaXR5LCBib29s
IGhhc0luZGV4aW5nSGVhZGVyLCBzaXplX3QgaW5kZXhpbmdQYXlsb2FkU2l6ZUluQnl0ZXMsIEdD
RGVmZXJyYWxDb250ZXh0KiBkZWZlcnJhbENvbnRleHQpCiB7CiAgICAgc2l6ZV90IHNpemUgPSB0
b3RhbFNpemUocHJlQ2FwYWNpdHksIHByb3BlcnR5Q2FwYWNpdHksIGhhc0luZGV4aW5nSGVhZGVy
LCBpbmRleGluZ1BheWxvYWRTaXplSW5CeXRlcyk7Ci0gICAgdm9pZCogYmFzZSA9IHZtLmpzVmFs
dWVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlLmFsbG9jYXRlTm9uVmlydHVhbCh2bSwgc2l6ZSwgZGVm
ZXJyYWxDb250ZXh0LCBBbGxvY2F0aW9uRmFpbHVyZU1vZGU6OlJldHVybk51bGwpOworICAgIHZv
aWQqIGJhc2UgPSB2bS5qc1ZhbHVlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZSgpLmFsbG9jYXRlTm9u
VmlydHVhbCh2bSwgc2l6ZSwgZGVmZXJyYWxDb250ZXh0LCBBbGxvY2F0aW9uRmFpbHVyZU1vZGU6
OlJldHVybk51bGwpOwogICAgIGlmIChVTkxJS0VMWSghYmFzZSkpCiAgICAgICAgIHJldHVybiBu
dWxscHRyOwogCkBAIC04OSw3ICs4OSw3IEBAIGlubGluZSBCdXR0ZXJmbHkqIEJ1dHRlcmZseTo6
dHJ5Q3JlYXRlVW4KIGlubGluZSBCdXR0ZXJmbHkqIEJ1dHRlcmZseTo6Y3JlYXRlVW5pbml0aWFs
aXplZChWTSYgdm0sIEpTT2JqZWN0Kiwgc2l6ZV90IHByZUNhcGFjaXR5LCBzaXplX3QgcHJvcGVy
dHlDYXBhY2l0eSwgYm9vbCBoYXNJbmRleGluZ0hlYWRlciwgc2l6ZV90IGluZGV4aW5nUGF5bG9h
ZFNpemVJbkJ5dGVzKQogewogICAgIHNpemVfdCBzaXplID0gdG90YWxTaXplKHByZUNhcGFjaXR5
LCBwcm9wZXJ0eUNhcGFjaXR5LCBoYXNJbmRleGluZ0hlYWRlciwgaW5kZXhpbmdQYXlsb2FkU2l6
ZUluQnl0ZXMpOwotICAgIHZvaWQqIGJhc2UgPSB2bS5qc1ZhbHVlR2lnYWNhZ2VBdXhpbGlhcnlT
cGFjZS5hbGxvY2F0ZU5vblZpcnR1YWwodm0sIHNpemUsIG51bGxwdHIsIEFsbG9jYXRpb25GYWls
dXJlTW9kZTo6QXNzZXJ0KTsKKyAgICB2b2lkKiBiYXNlID0gdm0uanNWYWx1ZUdpZ2FjYWdlQXV4
aWxpYXJ5U3BhY2UoKS5hbGxvY2F0ZU5vblZpcnR1YWwodm0sIHNpemUsIG51bGxwdHIsIEFsbG9j
YXRpb25GYWlsdXJlTW9kZTo6QXNzZXJ0KTsKICAgICBCdXR0ZXJmbHkqIHJlc3VsdCA9IGZyb21C
YXNlKGJhc2UsIHByZUNhcGFjaXR5LCBwcm9wZXJ0eUNhcGFjaXR5KTsKIAogICAgIHJldHVybiBy
ZXN1bHQ7CkBAIC05OCw3ICs5OCw3IEBAIGlubGluZSBCdXR0ZXJmbHkqIEJ1dHRlcmZseTo6Y3Jl
YXRlVW5pbmkKIGlubGluZSBCdXR0ZXJmbHkqIEJ1dHRlcmZseTo6dHJ5Q3JlYXRlKFZNJiB2bSwg
SlNPYmplY3QqLCBzaXplX3QgcHJlQ2FwYWNpdHksIHNpemVfdCBwcm9wZXJ0eUNhcGFjaXR5LCBi
b29sIGhhc0luZGV4aW5nSGVhZGVyLCBjb25zdCBJbmRleGluZ0hlYWRlciYgaW5kZXhpbmdIZWFk
ZXIsIHNpemVfdCBpbmRleGluZ1BheWxvYWRTaXplSW5CeXRlcykKIHsKICAgICBzaXplX3Qgc2l6
ZSA9IHRvdGFsU2l6ZShwcmVDYXBhY2l0eSwgcHJvcGVydHlDYXBhY2l0eSwgaGFzSW5kZXhpbmdI
ZWFkZXIsIGluZGV4aW5nUGF5bG9hZFNpemVJbkJ5dGVzKTsKLSAgICB2b2lkKiBiYXNlID0gdm0u
anNWYWx1ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UuYWxsb2NhdGVOb25WaXJ0dWFsKHZtLCBzaXpl
LCBudWxscHRyLCBBbGxvY2F0aW9uRmFpbHVyZU1vZGU6OlJldHVybk51bGwpOworICAgIHZvaWQq
IGJhc2UgPSB2bS5qc1ZhbHVlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZSgpLmFsbG9jYXRlTm9uVmly
dHVhbCh2bSwgc2l6ZSwgbnVsbHB0ciwgQWxsb2NhdGlvbkZhaWx1cmVNb2RlOjpSZXR1cm5OdWxs
KTsKICAgICBpZiAoIWJhc2UpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIEJ1dHRlcmZs
eSogcmVzdWx0ID0gZnJvbUJhc2UoYmFzZSwgcHJlQ2FwYWNpdHksIHByb3BlcnR5Q2FwYWNpdHkp
OwpAQCAtMTc0LDcgKzE3NCw3IEBAIGlubGluZSBCdXR0ZXJmbHkqIEJ1dHRlcmZseTo6Z3Jvd0Fy
cmF5UmkKICAgICB2b2lkKiB0aGVCYXNlID0gYmFzZSgwLCBwcm9wZXJ0eUNhcGFjaXR5KTsKICAg
ICBzaXplX3Qgb2xkU2l6ZSA9IHRvdGFsU2l6ZSgwLCBwcm9wZXJ0eUNhcGFjaXR5LCBoYWRJbmRl
eGluZ0hlYWRlciwgb2xkSW5kZXhpbmdQYXlsb2FkU2l6ZUluQnl0ZXMpOwogICAgIHNpemVfdCBu
ZXdTaXplID0gdG90YWxTaXplKDAsIHByb3BlcnR5Q2FwYWNpdHksIHRydWUsIG5ld0luZGV4aW5n
UGF5bG9hZFNpemVJbkJ5dGVzKTsKLSAgICB2b2lkKiBuZXdCYXNlID0gdm0uanNWYWx1ZUdpZ2Fj
YWdlQXV4aWxpYXJ5U3BhY2UuYWxsb2NhdGVOb25WaXJ0dWFsKHZtLCBuZXdTaXplLCBudWxscHRy
LCBBbGxvY2F0aW9uRmFpbHVyZU1vZGU6OlJldHVybk51bGwpOworICAgIHZvaWQqIG5ld0Jhc2Ug
PSB2bS5qc1ZhbHVlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZSgpLmFsbG9jYXRlTm9uVmlydHVhbCh2
bSwgbmV3U2l6ZSwgbnVsbHB0ciwgQWxsb2NhdGlvbkZhaWx1cmVNb2RlOjpSZXR1cm5OdWxsKTsK
ICAgICBpZiAoIW5ld0Jhc2UpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIC8vIEZJWE1F
OiBUaGlzIHByb2JhYmx5IHNob3VsZG4ndCBiZSBhIG1lbWNweS4KQEAgLTIxMSwxMyArMjExLDEz
IEBAIGlubGluZSBCdXR0ZXJmbHkqIEJ1dHRlcmZseTo6cmVhbGxvY0FycmEKICAgICAvLyBPYmpl
Y3RzIHdpdGggbm8gcHJvcGVydGllcyBhcmUgY29tbW9uIGluIGFycmF5cywgYW5kIHdlIGFyZSBm
b2N1c2luZyBvbiB2ZXJ5IGxhcmdlIGFycmF5IGNyYWZ0ZWQgYnkgcmVwZWF0aW5nIEFycmF5I3B1
c2gsIHNvLi4uIHRoYXQncyBmaW5lIQogICAgIGJvb2wgY2FuUmVhbGxvYyA9ICFwcm9wZXJ0eUNh
cGFjaXR5ICYmICF2bS5oZWFwLm11dGF0b3JTaG91bGRCZUZlbmNlZCgpICYmIGJpdHdpc2VfY2Fz
dDxIZWFwQ2VsbCo+KHRoZUJhc2UpLT5pc1ByZWNpc2VBbGxvY2F0aW9uKCk7CiAgICAgaWYgKGNh
blJlYWxsb2MpIHsKLSAgICAgICAgdm9pZCogbmV3QmFzZSA9IHZtLmpzVmFsdWVHaWdhY2FnZUF1
eGlsaWFyeVNwYWNlLnJlYWxsb2NhdGVQcmVjaXNlQWxsb2NhdGlvbk5vblZpcnR1YWwodm0sIGJp
dHdpc2VfY2FzdDxIZWFwQ2VsbCo+KHRoZUJhc2UpLCBuZXdTaXplLCAmZGVmZXJyYWxDb250ZXh0
LCBBbGxvY2F0aW9uRmFpbHVyZU1vZGU6OlJldHVybk51bGwpOworICAgICAgICB2b2lkKiBuZXdC
YXNlID0gdm0uanNWYWx1ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UoKS5yZWFsbG9jYXRlUHJlY2lz
ZUFsbG9jYXRpb25Ob25WaXJ0dWFsKHZtLCBiaXR3aXNlX2Nhc3Q8SGVhcENlbGwqPih0aGVCYXNl
KSwgbmV3U2l6ZSwgJmRlZmVycmFsQ29udGV4dCwgQWxsb2NhdGlvbkZhaWx1cmVNb2RlOjpSZXR1
cm5OdWxsKTsKICAgICAgICAgaWYgKCFuZXdCYXNlKQogICAgICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAgICAgICAgIHJldHVybiBmcm9tQmFzZShuZXdCYXNlLCAwLCBwcm9wZXJ0eUNhcGFjaXR5
KTsKICAgICB9CiAKLSAgICB2b2lkKiBuZXdCYXNlID0gdm0uanNWYWx1ZUdpZ2FjYWdlQXV4aWxp
YXJ5U3BhY2UuYWxsb2NhdGVOb25WaXJ0dWFsKHZtLCBuZXdTaXplLCAmZGVmZXJyYWxDb250ZXh0
LCBBbGxvY2F0aW9uRmFpbHVyZU1vZGU6OlJldHVybk51bGwpOworICAgIHZvaWQqIG5ld0Jhc2Ug
PSB2bS5qc1ZhbHVlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZSgpLmFsbG9jYXRlTm9uVmlydHVhbCh2
bSwgbmV3U2l6ZSwgJmRlZmVycmFsQ29udGV4dCwgQWxsb2NhdGlvbkZhaWx1cmVNb2RlOjpSZXR1
cm5OdWxsKTsKICAgICBpZiAoIW5ld0Jhc2UpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAg
IGdjU2FmZU1lbWNweShzdGF0aWNfY2FzdDxKU1ZhbHVlKj4obmV3QmFzZSksIHN0YXRpY19jYXN0
PEpTVmFsdWUqPih0aGVCYXNlKSwgb2xkU2l6ZSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9DYWNoZWRUeXBlcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0NhY2hlZFR5cGVzLmgJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0NhY2hlZFR5cGVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTEs
NSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE4LTIwMTkgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE4LTIwMjEgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0z
OSw2ICszOSw3IEBAIGNsYXNzIENhY2hlZEJ5dGVjb2RlOwogY2xhc3MgU291cmNlQ29kZUtleTsK
IGNsYXNzIFVubGlua2VkQ29kZUJsb2NrOwogY2xhc3MgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9j
azsKK2NsYXNzIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOwogCiBlbnVtIGNsYXNzIFNvdXJj
ZUNvZGVUeXBlOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DbG9uZWRB
cmd1bWVudHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9D
bG9uZWRBcmd1bWVudHMuaAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQ2xvbmVkQXJndW1lbnRzLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDcgKzQ2
LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZt
KQogICAgIHsKICAgICAgICAgc3RhdGljX2Fzc2VydCghQ2VsbFR5cGU6Om5lZWRzRGVzdHJ1Y3Rp
b24sICIiKTsKLSAgICAgICAgcmV0dXJuICZ2bS5jbG9uZWRBcmd1bWVudHNTcGFjZTsKKyAgICAg
ICAgcmV0dXJuICZ2bS5jbG9uZWRBcmd1bWVudHNTcGFjZSgpOwogICAgIH0KICAgICAKIHByaXZh
dGU6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db25zb2xlT2JqZWN0LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29uc29sZU9iamVj
dC5oCShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9D
b25zb2xlT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTM3LDcgKzM3LDcgQEAgcHVibGljOgog
ICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAg
ICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoQ29uc29sZU9iamVjdCwgQmFz
ZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJu
ICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIENvbnNvbGVPYmpl
Y3QqIGNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVy
ZSogc3RydWN0dXJlKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ3VzdG9t
R2V0dGVyU2V0dGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQ3VzdG9tR2V0dGVyU2V0dGVyLmgJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0N1c3RvbUdldHRlclNldHRlci5oCSh3b3JraW5nIGNvcHkpCkBA
IC00Myw3ICs0Myw3IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwg
U3Vic3BhY2VBY2Nlc3M+CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYg
dm0pCiAgICAgewotICAgICAgICByZXR1cm4gJnZtLmN1c3RvbUdldHRlclNldHRlclNwYWNlOwor
ICAgICAgICByZXR1cm4gJnZtLmN1c3RvbUdldHRlclNldHRlclNwYWNlKCk7CiAgICAgfQogCiAg
ICAgc3RhdGljIEN1c3RvbUdldHRlclNldHRlciogY3JlYXRlKFZNJiB2bSwgQ3VzdG9tR2V0dGVy
IGN1c3RvbUdldHRlciwgQ3VzdG9tU2V0dGVyIGN1c3RvbVNldHRlcikKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0RPTUF0dHJpYnV0ZUdldHRlclNldHRlci5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RPTUF0dHJpYnV0ZUdldHRlclNl
dHRlci5oCShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9ET01BdHRyaWJ1dGVHZXR0ZXJTZXR0ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNDMsNyArNDMs
NyBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUsIFN1YnNwYWNlQWNj
ZXNzPgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsK
LSAgICAgICAgcmV0dXJuICZ2bS5kb21BdHRyaWJ1dGVHZXR0ZXJTZXR0ZXJTcGFjZTsKKyAgICAg
ICAgcmV0dXJuICZ2bS5kb21BdHRyaWJ1dGVHZXR0ZXJTZXR0ZXJTcGFjZSgpOwogICAgIH0KIAog
ICAgIHN0YXRpYyBET01BdHRyaWJ1dGVHZXR0ZXJTZXR0ZXIqIGNyZWF0ZShWTSYgdm0sIEN1c3Rv
bUdldHRlciBjdXN0b21HZXR0ZXIsIEN1c3RvbVNldHRlciBjdXN0b21TZXR0ZXIsIERPTUF0dHJp
YnV0ZUFubm90YXRpb24gZG9tQXR0cmlidXRlKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvRGF0ZUluc3RhbmNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvRGF0ZUluc3RhbmNlLmgJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVJbnN0YW5jZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0z
Nyw3ICszNyw3IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vi
c3BhY2VBY2Nlc3MgbW9kZT4KICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZN
JiB2bSkKICAgICB7Ci0gICAgICAgIHJldHVybiAmdm0uZGF0ZUluc3RhbmNlU3BhY2U7CisgICAg
ICAgIHJldHVybiAmdm0uZGF0ZUluc3RhbmNlU3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMg
RGF0ZUluc3RhbmNlKiBjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgZG91Ymxl
IGRhdGUpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlUHJvdG90eXBl
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZVByb3Rv
dHlwZS5oCShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9EYXRlUHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM1LDcgKzM1LDcgQEAgcHVibGlj
OgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAg
ICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoRGF0ZVByb3RvdHlwZSwg
QmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0
dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIERhdGVQcm90
b3R5cGUqIGNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVj
dHVyZSogc3RydWN0dXJlKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGly
ZWN0QXJndW1lbnRzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvRGlyZWN0QXJndW1lbnRzLmgJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0RpcmVjdEFyZ3VtZW50cy5oCSh3b3JraW5nIGNvcHkpCkBAIC01MCw3
ICs1MCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgQ29tcGxldGVTdWJzcGFjZSogc3Vic3BhY2VG
b3IoVk0mIHZtKQogICAgIHsKICAgICAgICAgc3RhdGljX2Fzc2VydCghQ2VsbFR5cGU6Om5lZWRz
RGVzdHJ1Y3Rpb24sICIiKTsKLSAgICAgICAgcmV0dXJuICZ2bS52YXJpYWJsZVNpemVkQ2VsbFNw
YWNlOworICAgICAgICByZXR1cm4gJnZtLnZhcmlhYmxlU2l6ZWRDZWxsU3BhY2UoKTsKICAgICB9
CiAKICAgICAvLyBDcmVhdGVzIGFuIGFyZ3VtZW50cyBvYmplY3QgYnV0IGxlYXZlcyBpdCB1bmlu
aXRpYWxpemVkLiBUaGlzIGlzIGRhbmdlcm91cyBpZiB3ZSBHQyByaWdodApJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JQcm90b3R5cGUuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvclByb3RvdHlwZS5oCShyZXZpc2lvbiAy
ODYwOTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvclByb3RvdHlwZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC00NSw3ICs0NSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNv
U3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NF
UlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEVycm9yUHJvdG90eXBlQmFzZSwgQmFzZSk7Ci0gICAg
ICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFp
bk9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAgREVDTEFSRV9JTkZPOwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9uLmgJKHJldmlzaW9uIDI4NjA5NSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvbi5oCSh3b3JraW5nIGNvcHkp
CkBAIC00MCw3ICs0MCw3IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlw
ZSwgU3Vic3BhY2VBY2Nlc3MgbW9kZT4KICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNl
Rm9yKFZNJiB2bSkKICAgICB7Ci0gICAgICAgIHJldHVybiAmdm0uZXhjZXB0aW9uU3BhY2U7Cisg
ICAgICAgIHJldHVybiAmdm0uZXhjZXB0aW9uU3BhY2UoKTsKICAgICB9CiAKICAgICBlbnVtIFN0
YWNrQ2FwdHVyZUFjdGlvbiB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9F
eGNlcHRpb25TY29wZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvRXhjZXB0aW9uU2NvcGUuY3BwCShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9FeGNlcHRpb25TY29wZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMTcgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMjEgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GaW5hbGl6YXRpb25SZWdpc3RyeVBy
b3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Zp
bmFsaXphdGlvblJlZ2lzdHJ5UHJvdG90eXBlLmgJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ZpbmFsaXphdGlvblJlZ2lzdHJ5UHJvdG90eXBlLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTM3LDcgKzM3LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJc29T
dWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VS
VF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoRmluYWxpemF0aW9uUmVnaXN0cnlQcm90b3R5cGUsIEJh
c2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVy
biAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBGaW5hbGl6YXRp
b25SZWdpc3RyeVByb3RvdHlwZSogY3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9GdW5jdGlvbkV4ZWN1dGFibGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkV4ZWN1dGFibGUuaAkocmV2aXNpb24gMjg2MDk1
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25FeGVjdXRhYmxlLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTQ2LDcgKzQ2LDcgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5
cGVuYW1lIENlbGxUeXBlLCBTdWJzcGFjZUFjY2Vzcz4KICAgICBzdGF0aWMgSXNvU3Vic3BhY2Uq
IHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7Ci0gICAgICAgIHJldHVybiAmdm0uZnVuY3Rpb25F
eGVjdXRhYmxlU3BhY2Uuc3BhY2U7CisgICAgICAgIHJldHVybiAmdm0uZnVuY3Rpb25FeGVjdXRh
YmxlU3BhY2UoKS5zcGFjZTsKICAgICB9CiAKICAgICBzdGF0aWMgRnVuY3Rpb25FeGVjdXRhYmxl
KiBjcmVhdGUoVk0mIHZtLCBTY3JpcHRFeGVjdXRhYmxlKiB0b3BMZXZlbEV4ZWN1dGFibGUsIGNv
bnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIHVubGlu
a2VkRXhlY3V0YWJsZSwgSW50cmluc2ljIGludHJpbnNpYywgYm9vbCBpc0luc2lkZU9yZGluYXJ5
RnVuY3Rpb24pCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JG
dW5jdGlvblByb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0dlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmgJKHJldmlzaW9uIDI4NjA5NSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBl
LmgJKHdvcmtpbmcgY29weSkKQEAgLTQwLDcgKzQwLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJ
c29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FT
U0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUsIEJh
c2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVy
biAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBHZW5lcmF0b3JG
dW5jdGlvblByb3RvdHlwZSogY3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JQcm90b3R5cGUuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JQcm90
b3R5cGUuaAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvR2VuZXJhdG9yUHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQxLDcgKzQxLDcgQEAg
cHVibGljOgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAg
IHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoR2VuZXJhdG9y
UHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOwor
ICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0
aWMgR2VuZXJhdG9yUHJvdG90eXBlKiBjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCosIFN0
cnVjdHVyZSogc3RydWN0dXJlKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
R2V0dGVyU2V0dGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvR2V0dGVyU2V0dGVyLmgJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0dldHRlclNldHRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC01OSw3ICs1OSw3
IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vic3BhY2VBY2Nl
c3M+CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewot
ICAgICAgICByZXR1cm4gJnZtLmdldHRlclNldHRlclNwYWNlOworICAgICAgICByZXR1cm4gJnZt
LmdldHRlclNldHRlclNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIEdldHRlclNldHRlciog
Y3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNPYmplY3QqIGdl
dHRlciwgSlNPYmplY3QqIHNldHRlcikKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0hhc2hNYXBJbXBsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSGFzaE1hcEltcGwuaAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSGFzaE1hcEltcGwuaAkod29ya2luZyBjb3B5KQpAQCAtMjEzLDcgKzIx
Myw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKICAgICAgICAgc2l6ZV90IGFsbG9jYXRpb25TaXplID0gSGFzaE1hcEJ1ZmZl
cjo6YWxsb2NhdGlvblNpemUoY2FwYWNpdHkpOwotICAgICAgICB2b2lkKiBkYXRhID0gdm0uanNW
YWx1ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UuYWxsb2NhdGVOb25WaXJ0dWFsKHZtLCBhbGxvY2F0
aW9uU2l6ZSwgbnVsbHB0ciwgQWxsb2NhdGlvbkZhaWx1cmVNb2RlOjpSZXR1cm5OdWxsKTsKKyAg
ICAgICAgdm9pZCogZGF0YSA9IHZtLmpzVmFsdWVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlKCkuYWxs
b2NhdGVOb25WaXJ0dWFsKHZtLCBhbGxvY2F0aW9uU2l6ZSwgbnVsbHB0ciwgQWxsb2NhdGlvbkZh
aWx1cmVNb2RlOjpSZXR1cm5OdWxsKTsKICAgICAgICAgaWYgKCFkYXRhKSB7CiAgICAgICAgICAg
ICB0aHJvd091dE9mTWVtb3J5RXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSk7CiAgICAgICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lu
dGVybmFsRnVuY3Rpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9JbnRlcm5hbEZ1bmN0aW9uLmgJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0ludGVybmFsRnVuY3Rpb24uaAkod29ya2luZyBjb3B5KQpAQCAt
NDEsNyArNDEsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZv
cihWTSYgdm0pCiAgICAgewogICAgICAgICBzdGF0aWNfYXNzZXJ0KHNpemVvZihDZWxsVHlwZSkg
PT0gc2l6ZW9mKEludGVybmFsRnVuY3Rpb24pLCAiSW50ZXJuYWxGdW5jdGlvbiBzdWJjbGFzc2Vz
IHRoYXQgYWRkIGZpZWxkcyBuZWVkIHRvIG92ZXJyaWRlIHN1YnNwYWNlRm9yPD4oKSIpOwotICAg
ICAgICByZXR1cm4gJnZtLmludGVybmFsRnVuY3Rpb25TcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2
bS5pbnRlcm5hbEZ1bmN0aW9uU3BhY2UoKTsKICAgICB9CiAKICAgICBERUNMQVJFX0VYUE9SVF9J
TkZPOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bENvbGxhdG9yUHJv
dG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50
bENvbGxhdG9yUHJvdG90eXBlLmgJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0ludGxDb2xsYXRvclByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDYgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxNSBBbmR5IFZhbldhZ29uZXIg
KGFuZHlAdmFud2Fnb25lci5mYW1pbHkpCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE5LTIwMjEgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CkBAIC0zOSw3ICszOSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNw
YWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNF
X1NIQVJBQkxFKEludGxDb2xsYXRvclByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAm
dm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNl
KCk7CiAgICAgfQogCiAgICAgc3RhdGljIEludGxDb2xsYXRvclByb3RvdHlwZSogY3JlYXRlKFZN
JiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdFByb3RvdHlw
ZS5oCShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9J
bnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMSw2ICsxLDYg
QEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQW5keSBWYW5XYWdvbmVyIChhbmR5QHZhbndh
Z29uZXIuZmFtaWx5KQotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxOS0yMDIxIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzksNyAr
MzksNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYg
dm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShJ
bnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBs
YWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwog
ICAgIH0KIAogICAgIHN0YXRpYyBJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUqIGNyZWF0ZShW
TSYsIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9JbnRsRGlzcGxheU5hbWVzUHJvdG90eXBlLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERpc3BsYXlOYW1lc1Byb3RvdHlwZS5o
CShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRs
RGlzcGxheU5hbWVzUHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAv
KgotICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAyMC0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzgsNyArMzgsNyBAQCBwdWJs
aWM6CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewog
ICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShJbnRsRGlzcGxheU5h
bWVzUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNl
OworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBz
dGF0aWMgSW50bERpc3BsYXlOYW1lc1Byb3RvdHlwZSogY3JlYXRlKFZNJiwgU3RydWN0dXJlKik7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTGlzdEZvcm1hdFByb3Rv
dHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxM
aXN0Rm9ybWF0UHJvdG90eXBlLmgJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0ludGxMaXN0Rm9ybWF0UHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkK
QEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAyMC0yMDIxIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAt
MzgsNyArMzgsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZv
cihWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFS
QUJMRShJbnRsTGlzdEZvcm1hdFByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0u
cGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7
CiAgICAgfQogCiAgICAgc3RhdGljIEludGxMaXN0Rm9ybWF0UHJvdG90eXBlKiBjcmVhdGUoVk0m
LCBTdHJ1Y3R1cmUqKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxM
b2NhbGVQcm90b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9JbnRsTG9jYWxlUHJvdG90eXBlLmgJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxMb2NhbGVQcm90b3R5cGUuaAkod29ya2luZyBjb3B5
KQpAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMjAgU29ueSBJbnRlcmFj
dGl2ZSBFbnRlcnRhaW5tZW50IEluYy4KKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAg
LTM4LDcgKzM5LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VG
b3IoVk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hB
UkFCTEUoSW50bExvY2FsZVByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxh
aW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAg
ICAgfQogCiAgICAgc3RhdGljIEludGxMb2NhbGVQcm90b3R5cGUqIGNyZWF0ZShWTSYsIFN0cnVj
dHVyZSopOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZv
cm1hdFByb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0ludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUuaAkocmV2aXNpb24gMjg2MDk1KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdFByb3RvdHlwZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxNSBB
bmR5IFZhbldhZ29uZXIgKGFuZHlAdmFud2Fnb25lci5mYW1pbHkpCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDE5LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCkBAIC0zOSw3ICszOSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNv
U3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NF
UlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUsIEJhc2Up
OwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAm
dm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBJbnRsTnVtYmVyRm9y
bWF0UHJvdG90eXBlKiBjcmVhdGUoVk0mLCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSopOwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE9iamVjdC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxPYmplY3QuaAkocmV2aXNp
b24gMjg2MDk1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE9iamVjdC5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAx
NSBBbmR5IFZhbldhZ29uZXIgKGFuZHlAdmFud2Fnb25lci5mYW1pbHkpCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTktMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMTktMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5
cmlnaHQgKEMpIDIwMjAgU29ueSBJbnRlcmFjdGl2ZSBFbnRlcnRhaW5tZW50IEluYy4KICAqCiAg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKQEAgLTc2LDcgKzc2LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJc29TdWJz
cGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9J
U09fU1VCU1BBQ0VfU0hBUkFCTEUoSW50bE9iamVjdCwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAm
dm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNl
KCk7CiAgICAgfQogCiAgICAgc3RhdGljIEludGxPYmplY3QqIGNyZWF0ZShWTSYsIEpTR2xvYmFs
T2JqZWN0KiwgU3RydWN0dXJlKik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9JbnRsUGx1cmFsUnVsZXNQcm90b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9JbnRsUGx1cmFsUnVsZXNQcm90b3R5cGUuaAkocmV2aXNpb24gMjg2
MDk1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFBsdXJhbFJ1bGVzUHJv
dG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw2IEBACiAvKgogICogQ29weXJpZ2h0
IChDKSAyMDE4IEFuZHkgVmFuV2Fnb25lciAoYW5keUB2YW53YWdvbmVyLmZhbWlseSkKLSAqIENv
cHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTktMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM5LDcgKzM5LDcgQEAgcHVibGljOgogICAg
IHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAgICAg
U1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSW50bFBsdXJhbFJ1bGVzUHJvdG90
eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAg
ICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgSW50
bFBsdXJhbFJ1bGVzUHJvdG90eXBlKiBjcmVhdGUoVk0mLCBKU0dsb2JhbE9iamVjdCosIFN0cnVj
dHVyZSopOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFJlbGF0aXZl
VGltZUZvcm1hdFByb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0ludGxSZWxhdGl2ZVRpbWVGb3JtYXRQcm90b3R5cGUuaAkocmV2aXNpb24gMjg2
MDk1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFJlbGF0aXZlVGltZUZv
cm1hdFByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENv
cHlyaWdodCAoQykgMjAyMCBTb255IEludGVyYWN0aXZlIEVudGVydGFpbm1lbnQgSW5jLgorICog
Q29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzgsNyArMzksNyBAQCBwdWJsaWM6CiAgICAg
c3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewogICAgICAgICBT
VEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShJbnRsUmVsYXRpdmVUaW1lRm9ybWF0
UHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOwor
ICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0
aWMgSW50bFJlbGF0aXZlVGltZUZvcm1hdFByb3RvdHlwZSogY3JlYXRlKFZNJiwgU3RydWN0dXJl
Kik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsU2VnbWVudEl0ZXJh
dG9yUHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSW50bFNlZ21lbnRJdGVyYXRvclByb3RvdHlwZS5oCShyZXZpc2lvbiAyODYwOTUpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsU2VnbWVudEl0ZXJhdG9yUHJvdG90eXBl
LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAy
MDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAy
MC0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpAQCAtMzgsNyArMzgsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIElzb1N1
YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJU
X0lTT19TVUJTUEFDRV9TSEFSQUJMRShJbnRsU2VnbWVudEl0ZXJhdG9yUHJvdG90eXBlLCBCYXNl
KTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4g
JnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgSW50bFNlZ21lbnRJ
dGVyYXRvclByb3RvdHlwZSogY3JlYXRlKFZNJiwgU3RydWN0dXJlKik7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsU2VnbWVudGVyUHJvdG90eXBlLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFNlZ21lbnRlclByb3RvdHlw
ZS5oCShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9J
bnRsU2VnbWVudGVyUHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAv
KgotICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAyMC0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzgsNyArMzgsNyBAQCBwdWJs
aWM6CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewog
ICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShJbnRsU2VnbWVudGVy
UHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOwor
ICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0
aWMgSW50bFNlZ21lbnRlclByb3RvdHlwZSogY3JlYXRlKFZNJiwgU3RydWN0dXJlKik7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsU2VnbWVudHNQcm90b3R5cGUuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsU2VnbWVudHNQ
cm90b3R5cGUuaAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSW50bFNlZ21lbnRzUHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1
IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAyMC0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzgsNyArMzgsNyBA
QCBwdWJsaWM6CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAg
ICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShJbnRsU2Vn
bWVudHNQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3Bh
Y2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAg
IHN0YXRpYyBJbnRsU2VnbWVudHNQcm90b3R5cGUqIGNyZWF0ZShWTSYsIEpTR2xvYmFsT2JqZWN0
KiwgU3RydWN0dXJlKik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JdGVy
YXRvclByb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0l0ZXJhdG9yUHJvdG90eXBlLmgJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0l0ZXJhdG9yUHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAg
LTM5LDcgKzM5LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VG
b3IoVk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hB
UkFCTEUoSXRlcmF0b3JQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWlu
T2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAg
IH0KIAogICAgIHN0YXRpYyBJdGVyYXRvclByb3RvdHlwZSogY3JlYXRlKFZNJiB2bSwgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmNwcAkocmV2aXNpb24gMjg2MDk1KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTU2LDcgKzU2LDcgQEAgSlNBcnJheSogSlNBcnJheTo6dHJ5Q3JlYXRlVW5pbml0aWFs
aXplZAogICAgICAgICAgICAgfHwgaGFzQ29udGlndW91cyhpbmRleGluZ1R5cGUpKTsKIAogICAg
ICAgICB1bnNpZ25lZCB2ZWN0b3JMZW5ndGggPSBCdXR0ZXJmbHk6Om9wdGltYWxDb250aWd1b3Vz
VmVjdG9yTGVuZ3RoKHN0cnVjdHVyZSwgaW5pdGlhbExlbmd0aCk7Ci0gICAgICAgIHZvaWQqIHRl
bXAgPSB2bS5qc1ZhbHVlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZS5hbGxvY2F0ZU5vblZpcnR1YWwo
CisgICAgICAgIHZvaWQqIHRlbXAgPSB2bS5qc1ZhbHVlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZSgp
LmFsbG9jYXRlTm9uVmlydHVhbCgKICAgICAgICAgICAgIHZtLAogICAgICAgICAgICAgQnV0dGVy
Zmx5Ojp0b3RhbFNpemUoMCwgb3V0T2ZMaW5lU3RvcmFnZSwgdHJ1ZSwgdmVjdG9yTGVuZ3RoICog
c2l6ZW9mKEVuY29kZWRKU1ZhbHVlKSksCiAgICAgICAgICAgICBkZWZlcnJhbENvbnRleHQsIEFs
bG9jYXRpb25GYWlsdXJlTW9kZTo6UmV0dXJuTnVsbCk7CkBAIC03OCw3ICs3OCw3IEBAIEpTQXJy
YXkqIEpTQXJyYXk6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQKICAgICAgICAgICAgIHx8IGluZGV4
aW5nVHlwZSA9PSBBcnJheVdpdGhBcnJheVN0b3JhZ2UpOwogICAgICAgICBzdGF0aWMgY29uc3Rl
eHByIHVuc2lnbmVkIGluZGV4QmlhcyA9IDA7CiAgICAgICAgIHVuc2lnbmVkIHZlY3Rvckxlbmd0
aCA9IEFycmF5U3RvcmFnZTo6b3B0aW1hbFZlY3Rvckxlbmd0aChpbmRleEJpYXMsIHN0cnVjdHVy
ZSwgaW5pdGlhbExlbmd0aCk7Ci0gICAgICAgIHZvaWQqIHRlbXAgPSB2bS5qc1ZhbHVlR2lnYWNh
Z2VBdXhpbGlhcnlTcGFjZS5hbGxvY2F0ZU5vblZpcnR1YWwoCisgICAgICAgIHZvaWQqIHRlbXAg
PSB2bS5qc1ZhbHVlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZSgpLmFsbG9jYXRlTm9uVmlydHVhbCgK
ICAgICAgICAgICAgIHZtLAogICAgICAgICAgICAgQnV0dGVyZmx5Ojp0b3RhbFNpemUoaW5kZXhC
aWFzLCBvdXRPZkxpbmVTdG9yYWdlLCB0cnVlLCBBcnJheVN0b3JhZ2U6OnNpemVGb3IodmVjdG9y
TGVuZ3RoKSksCiAgICAgICAgICAgICBkZWZlcnJhbENvbnRleHQsIEFsbG9jYXRpb25GYWlsdXJl
TW9kZTo6UmV0dXJuTnVsbCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0FycmF5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNB
cnJheS5oCShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0FycmF5LmgJKHdvcmtpbmcgY29weSkKQEAgLTUxLDcgKzUxLDcgQEAgcHVibGljOgogICAg
IHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlLCBTdWJzcGFjZUFjY2Vzcz4KICAgICBzdGF0aWMg
SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7Ci0gICAgICAgIHJldHVybiAm
dm0uYXJyYXlTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5hcnJheVNwYWNlKCk7CiAgICAgfQog
ICAgICAgICAKIHByb3RlY3RlZDoKQEAgLTI0NCw3ICsyNDQsNyBAQCBpbmxpbmUgSlNBcnJheSog
SlNBcnJheTo6dHJ5Q3JlYXRlKFZNJiB2CiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAog
ICAgICAgICB1bnNpZ25lZCB2ZWN0b3JMZW5ndGggPSBCdXR0ZXJmbHk6Om9wdGltYWxDb250aWd1
b3VzVmVjdG9yTGVuZ3RoKHN0cnVjdHVyZSwgdmVjdG9yTGVuZ3RoSGludCk7Ci0gICAgICAgIHZv
aWQqIHRlbXAgPSB2bS5qc1ZhbHVlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZS5hbGxvY2F0ZU5vblZp
cnR1YWwoCisgICAgICAgIHZvaWQqIHRlbXAgPSB2bS5qc1ZhbHVlR2lnYWNhZ2VBdXhpbGlhcnlT
cGFjZSgpLmFsbG9jYXRlTm9uVmlydHVhbCgKICAgICAgICAgICAgIHZtLAogICAgICAgICAgICAg
QnV0dGVyZmx5Ojp0b3RhbFNpemUoMCwgb3V0T2ZMaW5lU3RvcmFnZSwgdHJ1ZSwgdmVjdG9yTGVu
Z3RoICogc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKSksCiAgICAgICAgICAgICBudWxscHRyLCBBbGxv
Y2F0aW9uRmFpbHVyZU1vZGU6OlJldHVybk51bGwpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlclByb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJQcm90b3R5cGUuaAkocmV2aXNp
b24gMjg2MDk1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZl
clByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHly
aWdodCAoQykgMjAxMywgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTMtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM3LDcgKzM3LDcgQEAgcHVibGljOgog
ICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAg
ICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNBcnJheUJ1ZmZlclByb3Rv
dHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAg
ICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIEpT
QXJyYXlCdWZmZXJQcm90b3R5cGUqIGNyZWF0ZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0
dXJlKiwgQXJyYXlCdWZmZXJTaGFyaW5nTW9kZSA9IEFycmF5QnVmZmVyU2hhcmluZ01vZGU6OkRl
ZmF1bHQpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZl
clZpZXcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
QXJyYXlCdWZmZXJWaWV3LmNwcAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlclZpZXcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02
NCw3ICs2NCw3IEBAIEpTQXJyYXlCdWZmZXJWaWV3OjpDb25zdHJ1Y3Rpb25Db250ZXh0OjoKICAg
ICAgICAgLy8gQXR0ZW1wdCBHQyBhbGxvY2F0aW9uLgogICAgICAgICB2b2lkKiB0ZW1wOwogICAg
ICAgICBzaXplX3Qgc2l6ZSA9IHNpemVPZihsZW5ndGgsIGVsZW1lbnRTaXplKTsKLSAgICAgICAg
dGVtcCA9IHZtLnByaW1pdGl2ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UuYWxsb2NhdGVOb25WaXJ0
dWFsKHZtLCBzaXplLCBudWxscHRyLCBBbGxvY2F0aW9uRmFpbHVyZU1vZGU6OlJldHVybk51bGwp
OworICAgICAgICB0ZW1wID0gdm0ucHJpbWl0aXZlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZSgpLmFs
bG9jYXRlTm9uVmlydHVhbCh2bSwgc2l6ZSwgbnVsbHB0ciwgQWxsb2NhdGlvbkZhaWx1cmVNb2Rl
OjpSZXR1cm5OdWxsKTsKICAgICAgICAgaWYgKCF0ZW1wKQogICAgICAgICAgICAgcmV0dXJuOwog
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JpZ0ludC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCaWdJbnQuY3BwCShyZXZp
c2lvbiAyODYwOTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JpZ0ludC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTExNyw3ICsxMTcsNyBAQCBpbmxpbmUgSlNCaWdJbnQqIEpT
QmlnSW50OjpjcmVhdGVXaXRoTGVuCiAgICAgfQogCiAgICAgQVNTRVJUKGxlbmd0aCA8PSBtYXhM
ZW5ndGgpOwotICAgIHZvaWQqIGRhdGEgPSB2bS5wcmltaXRpdmVHaWdhY2FnZUF1eGlsaWFyeVNw
YWNlLmFsbG9jYXRlTm9uVmlydHVhbCh2bSwgbGVuZ3RoICogc2l6ZW9mKERpZ2l0KSwgbnVsbHB0
ciwgQWxsb2NhdGlvbkZhaWx1cmVNb2RlOjpSZXR1cm5OdWxsKTsKKyAgICB2b2lkKiBkYXRhID0g
dm0ucHJpbWl0aXZlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZSgpLmFsbG9jYXRlTm9uVmlydHVhbCh2
bSwgbGVuZ3RoICogc2l6ZW9mKERpZ2l0KSwgbnVsbHB0ciwgQWxsb2NhdGlvbkZhaWx1cmVNb2Rl
OjpSZXR1cm5OdWxsKTsKICAgICBpZiAoVU5MSUtFTFkoIWRhdGEpKSB7CiAgICAgICAgIGlmIChu
dWxsT3JHbG9iYWxPYmplY3RGb3JPT00pIHsKICAgICAgICAgICAgIGF1dG8gc2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTQmlnSW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNCaWdJbnQuaAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNCaWdJbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNTYsNyArNTYsNyBAQCBwdWJsaWM6
CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNzPgogICAgIHN0
YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKLSAgICAgICAgcmV0
dXJuICZ2bS5iaWdJbnRTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5iaWdJbnRTcGFjZSgpOwog
ICAgIH0KIAogICAgIGVudW0gY2xhc3MgSW5pdGlhbGl6YXRpb25UeXBlIHsgTm9uZSwgV2l0aFpl
cm8gfTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2FsbGVlLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDYWxsZWUuaAkocmV2
aXNpb24gMjg2MDk1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDYWxsZWUu
aAkod29ya2luZyBjb3B5KQpAQCAtNTAsNyArNTAsNyBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8
dHlwZW5hbWUgQ2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNzPgogICAgIHN0YXRpYyBJc29TdWJzcGFj
ZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKLSAgICAgICAgcmV0dXJuICZ2bS5jYWxsZWVT
cGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5jYWxsZWVTcGFjZSgpOwogICAgIH0KIAogICAgIHN0
YXRpYyBKU0NhbGxlZSogY3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgSlNTY29wZSogc2NvcGUpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0RhdGFWaWV3UHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNEYXRhVmlld1Byb3RvdHlwZS5oCShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGFWaWV3UHJvdG90eXBlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMTkgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMjEg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCkBAIC0zOCw3ICszOCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2Uq
IHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NV
QlNQQUNFX1NIQVJBQkxFKEpTRGF0YVZpZXdQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1
cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RT
cGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBKU0RhdGFWaWV3UHJvdG90eXBlKiBjcmVhdGUo
Vk0mLCBTdHJ1Y3R1cmUqKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
RnVuY3Rpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0Z1bmN0aW9uLmgJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTRnVuY3Rpb24uaAkod29ya2luZyBjb3B5KQpAQCAtNjYsNyArNjYsNyBAQCBwdWJs
aWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNzPgogICAg
IHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKLSAgICAgICAg
cmV0dXJuICZ2bS5mdW5jdGlvblNwYWNlOworICAgICAgICByZXR1cm4gJnZtLmZ1bmN0aW9uU3Bh
Y2UoKTsKICAgICB9CiAgICAgCiAgICAgdHlwZWRlZiBKU0NhbGxlZSBCYXNlOwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b3R5
cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVy
aWNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZS5oCShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
MyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMt
MjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTM4LDcgKzM4LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJc29TdWJz
cGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9J
U09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNHZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b3R5cGUsIEJh
c2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVy
biAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBKU0dlbmVyaWNU
eXBlZEFycmF5Vmlld1Byb3RvdHlwZSogY3JlYXRlKApJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNHbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbExleGljYWxFbnZpcm9ubWVudC5o
CShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ds
b2JhbExleGljYWxFbnZpcm9ubWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw3ICszOCw3IEBA
IHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vic3BhY2VBY2Nlc3Mg
bW9kZT4KICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7
Ci0gICAgICAgIHJldHVybiAmdm0uZ2xvYmFsTGV4aWNhbEVudmlyb25tZW50U3BhY2U7CisgICAg
ICAgIHJldHVybiAmdm0uZ2xvYmFsTGV4aWNhbEVudmlyb25tZW50U3BhY2UoKTsKICAgICB9CiAK
ICAgICBzdGF0aWMgSlNHbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQqIGNyZWF0ZShWTSYgdm0sIFN0
cnVjdHVyZSogc3RydWN0dXJlLCBKU1Njb3BlKiBwYXJlbnRTY29wZSkKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTSW1tdXRhYmxlQnV0dGVyZmx5LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNJbW11dGFibGVCdXR0ZXJmbHkuaAko
cmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNJbW11
dGFibGVCdXR0ZXJmbHkuaAkod29ya2luZyBjb3B5KQpAQCAtMTUzLDcgKzE1Myw3IEBAIHB1Ymxp
YzoKICAgICBzdGF0aWMgQ29tcGxldGVTdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAg
IHsKICAgICAgICAgLy8gV2UgYWxsb2NhdGUgb3V0IG9mIHRoZSBKU1ZhbHVlIGdpZ2FjYWdlIGFz
IG90aGVyIGNvZGUgZXhwZWN0cyBhbGwgYnV0dGVyZmxpZXMgdG8gbGl2ZSB0aGVyZS4KLSAgICAg
ICAgcmV0dXJuICZ2bS5pbW11dGFibGVCdXR0ZXJmbHlKU1ZhbHVlR2lnYWNhZ2VBdXhpbGlhcnlT
cGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5pbW11dGFibGVCdXR0ZXJmbHlKU1ZhbHVlR2lnYWNh
Z2VBdXhpbGlhcnlTcGFjZSgpOwogICAgIH0KIAogICAgIC8vIE9ubHkgY2FsbCB0aGlzIGlmIHlv
dSBqdXN0IGFsbG9jYXRlZCB0aGlzIGJ1dHRlcmZseS4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTTGV4aWNhbEVudmlyb25tZW50LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNMZXhpY2FsRW52aXJvbm1lbnQuaAkocmV2aXNpb24g
Mjg2MDk1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNMZXhpY2FsRW52aXJv
bm1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNDQsNyArNDQsNyBAQCBwdWJsaWM6CiAgICAgc3Rh
dGljIENvbXBsZXRlU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAg
IHN0YXRpY19hc3NlcnQoIUNlbGxUeXBlOjpuZWVkc0Rlc3RydWN0aW9uLCAiIik7Ci0gICAgICAg
IHJldHVybiAmdm0udmFyaWFibGVTaXplZENlbGxTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS52
YXJpYWJsZVNpemVkQ2VsbFNwYWNlKCk7CiAgICAgfQogCiAgICAgdXNpbmcgQmFzZSA9IEpTU3lt
Ym9sVGFibGVPYmplY3Q7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01v
ZHVsZUxvYWRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTTW9kdWxlTG9hZGVyLmgJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTTW9kdWxlTG9hZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDcgKzQ0
LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZt
KQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNN
b2R1bGVMb2FkZXIsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7
CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIGVu
dW0gU3RhdHVzIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT05PYmpl
Y3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09OT2Jq
ZWN0LmgJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTT05PYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtMzgsNyArMzgsNyBAQCBwdWJsaWM6CiAg
ICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewogICAgICAg
ICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU09OT2JqZWN0LCBCYXNlKTsK
LSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZt
LnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgSlNPTk9iamVjdCogY3Jl
YXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU09iamVjdElubGluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdElubGluZXMuaAkocmV2aXNpb24gMjg2MDk1KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3RJbmxpbmVzLmgJKHdvcmtp
bmcgY29weSkKQEAgLTQxLDcgKzQxLDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUsIFN1
YnNwYWNlQWNjZQogQ29tcGxldGVTdWJzcGFjZSogSlNGaW5hbE9iamVjdDo6c3Vic3BhY2VGb3Io
Vk0mIHZtKQogewogICAgIHN0YXRpY19hc3NlcnQoIUNlbGxUeXBlOjpuZWVkc0Rlc3RydWN0aW9u
KTsKLSAgICByZXR1cm4gJnZtLmNlbGxTcGFjZTsKKyAgICByZXR1cm4gJnZtLmNlbGxTcGFjZSgp
OwogfQogCiAvLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWNyZWF0ZWxpc3Rmcm9tYXJy
YXlsaWtlCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2UuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2UuaAko
cmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9t
aXNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM3LDcgKzM3LDcgQEAgcHVibGljOgogICAgIHRlbXBs
YXRlPHR5cGVuYW1lIENlbGxUeXBlLCBTdWJzcGFjZUFjY2VzcyBtb2RlPgogICAgIHN0YXRpYyBJ
c29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKLSAgICAgICAgcmV0dXJuICZ2
bS5wcm9taXNlU3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucHJvbWlzZVNwYWNlKCk7CiAgICAg
fQogCiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIEpTUHJvbWlzZSogY3JlYXRlKFZNJiwg
U3RydWN0dXJlKik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21p
c2VQcm90b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU1Byb21pc2VQcm90b3R5cGUuaAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9taXNlUHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAg
LTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMTkgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMjEgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC0zOCw3ICszOCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNl
Rm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NI
QVJBQkxFKEpTUHJvbWlzZVByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxh
aW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAg
ICAgfQogCiAgICAgc3RhdGljIEpTUHJvbWlzZVByb3RvdHlwZSogY3JlYXRlKFZNJiwgSlNHbG9i
YWxPYmplY3QqLCBTdHJ1Y3R1cmUqKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTUHJvcGVydHlOYW1lRW51bWVyYXRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yLmNwcAkocmV2aXNp
b24gMjg2MDk1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5h
bWVFbnVtZXJhdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzgsNyArMzgsNyBAQCBKU1Byb3Bl
cnR5TmFtZUVudW1lcmF0b3IqIEpTUHJvcGVydHlOYW1lCiAgICAgdW5zaWduZWQgcHJvcGVydHlO
YW1lc0J1ZmZlclNpemVJbkJ5dGVzID0gQ2hlY2tlZDx1bnNpZ25lZD4ocHJvcGVydHlOYW1lc1Np
emUpICogc2l6ZW9mKFdyaXRlQmFycmllcjxKU1N0cmluZz4pOwogICAgIFdyaXRlQmFycmllcjxK
U1N0cmluZz4qIHByb3BlcnR5TmFtZXNCdWZmZXIgPSBudWxscHRyOwogICAgIGlmIChwcm9wZXJ0
eU5hbWVzQnVmZmVyU2l6ZUluQnl0ZXMpIHsKLSAgICAgICAgcHJvcGVydHlOYW1lc0J1ZmZlciA9
IHN0YXRpY19jYXN0PFdyaXRlQmFycmllcjxKU1N0cmluZz4qPih2bS5qc1ZhbHVlR2lnYWNhZ2VB
dXhpbGlhcnlTcGFjZS5hbGxvY2F0ZU5vblZpcnR1YWwodm0sIHByb3BlcnR5TmFtZXNCdWZmZXJT
aXplSW5CeXRlcywgbnVsbHB0ciwgQWxsb2NhdGlvbkZhaWx1cmVNb2RlOjpBc3NlcnQpKTsKKyAg
ICAgICAgcHJvcGVydHlOYW1lc0J1ZmZlciA9IHN0YXRpY19jYXN0PFdyaXRlQmFycmllcjxKU1N0
cmluZz4qPih2bS5qc1ZhbHVlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZSgpLmFsbG9jYXRlTm9uVmly
dHVhbCh2bSwgcHJvcGVydHlOYW1lc0J1ZmZlclNpemVJbkJ5dGVzLCBudWxscHRyLCBBbGxvY2F0
aW9uRmFpbHVyZU1vZGU6OkFzc2VydCkpOwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgcHJvcGVydHlOYW1lc1NpemU7ICsraSkKICAgICAgICAgICAgIHByb3BlcnR5TmFtZXNCdWZm
ZXJbaV0uY2xlYXIoKTsKICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU1Byb3BlcnR5TmFtZUVudW1lcmF0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUVudW1lcmF0b3IuaAkocmV2aXNpb24gMjg2
MDk1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVFbnVt
ZXJhdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTUxLDcgKzUxLDcgQEAgcHVibGljOgogICAgIHRl
bXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlLCBTdWJzcGFjZUFjY2VzcyBtb2RlPgogICAgIHN0YXRp
YyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKLSAgICAgICAgcmV0dXJu
ICZ2bS5wcm9wZXJ0eU5hbWVFbnVtZXJhdG9yU3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucHJv
cGVydHlOYW1lRW51bWVyYXRvclNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIEpTUHJvcGVy
dHlOYW1lRW51bWVyYXRvciogY3JlYXRlKFZNJiwgU3RydWN0dXJlKiwgdWludDMyX3QsIHVpbnQz
Ml90LCBQcm9wZXJ0eU5hbWVBcnJheSYmKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTUHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU1Byb3h5LmgJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTUHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAtMzgsNyArMzgsNyBAQCBwdWJs
aWM6CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewog
ICAgICAgICBzdGF0aWNfYXNzZXJ0KHNpemVvZihDZWxsVHlwZSkgPT0gc2l6ZW9mKEpTUHJveHkp
KTsKLSAgICAgICAgcmV0dXJuICZ2bS5qc1Byb3h5U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0u
anNQcm94eVNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIEpTUHJveHkqIGNyZWF0ZShWTSYg
dm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBKU09iamVjdCogdGFyZ2V0KQpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5oCShyZXZpc2lvbiAyODYwOTUpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xMTEsNyArMTExLDcgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lLCBTdWJzcGFj
ZUFjY2Vzcz4KICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAg
ICB7Ci0gICAgICAgIHJldHVybiAmdm0uc3RyaW5nU3BhY2U7CisgICAgICAgIHJldHVybiAmdm0u
c3RyaW5nU3BhY2UoKTsKICAgICB9CiAgICAgCiAgICAgLy8gV2UgZW1wbG95IG92ZXJmbG93IGNo
ZWNrcyBpbiBtYW55IHBsYWNlcyB3aXRoIHRoZSBhc3N1bXB0aW9uIHRoYXQgTWF4TGVuZ3RoCkBA
IC0yNzAsNyArMjcwLDcgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lLCBTdWJzcGFj
ZUFjY2Vzcz4KICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAg
ICB7Ci0gICAgICAgIHJldHVybiAmdm0ucm9wZVN0cmluZ1NwYWNlOworICAgICAgICByZXR1cm4g
JnZtLnJvcGVTdHJpbmdTcGFjZSgpOwogICAgIH0KIAogICAgIC8vIFdlIHVzZSBsb3dlciAzYml0
cyBvZiBmaWJlcjAgZm9yIGZsYWdzLiBUaGVzZSBiaXRzIGFyZSB1c2FibGUgZHVlIHRvIGFsaWdu
bWVudCwgYW5kIGl0IGlzIE9LIGV2ZW4gaW4gMzJiaXQgYXJjaGl0ZWN0dXJlLgpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZWRBcnJheVZp
ZXdQcm90b3R5cGUuaAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAyMSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM3LDcg
KzM3LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0m
IHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUo
SlNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxh
aW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAg
ICAgfQogCiAgICAgc3RhdGljIEpTVHlwZWRBcnJheVZpZXdQcm90b3R5cGUqIGNyZWF0ZShWTSYs
IEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9NYXBJdGVyYXRvclByb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL01hcEl0ZXJhdG9yUHJvdG90eXBlLmgJKHJldmlzaW9uIDI4
NjA5NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hcEl0ZXJhdG9yUHJvdG90
eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM3LDcgKzM3LDcgQEAgcHVibGljOgogICAgIHN0YXRp
YyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElD
X0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoTWFwSXRlcmF0b3JQcm90b3R5cGUsIEJhc2Up
OwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAm
dm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBNYXBJdGVyYXRvclBy
b3RvdHlwZSogY3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9N
YXBQcm90b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9NYXBQcm90b3R5cGUuaAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvTWFwUHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM3LDcgKzM3LDcg
QEAgcHVibGljOgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQog
ICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoTWFwUHJv
dG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAg
ICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMg
Y29uc3RleHByIHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3Mg
fCBIYXNTdGF0aWNQcm9wZXJ0eVRhYmxlOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvTWF0aE9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL01hdGhPYmplY3QuaAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvTWF0aE9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw3ICszMiw3
IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkK
ICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKE1hdGhP
YmplY3QsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAg
ICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBN
YXRoT2JqZWN0KiBjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L05hdGl2ZUVycm9yUHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvTmF0aXZlRXJyb3JQcm90b3R5cGUuaAkocmV2aXNpb24gMjg2MDk1KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRXJyb3JQcm90b3R5cGUuaAkod29y
a2luZyBjb3B5KQpAQCAtMzQsNyArMzQsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIElzb1N1YnNw
YWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lT
T19TVUJTUEFDRV9TSEFSQUJMRShOYXRpdmVFcnJvclByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAg
IHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9i
amVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0
dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5
cGUpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OYXRpdmVFeGVjdXRhYmxl
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRXhl
Y3V0YWJsZS5oCShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9OYXRpdmVFeGVjdXRhYmxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAv
KgotICogQ29weXJpZ2h0IChDKSAyMDA5LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA5LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00Myw3ICs0Myw3IEBA
IHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vic3BhY2VBY2Nlc3M+
CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewotICAg
ICAgICByZXR1cm4gJnZtLm5hdGl2ZUV4ZWN1dGFibGVTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2
bS5uYXRpdmVFeGVjdXRhYmxlU3BhY2UoKTsKICAgICB9CiAKICAgICBDb2RlQmxvY2tIYXNoIGhh
c2hGb3IoQ29kZVNwZWNpYWxpemF0aW9uS2luZCkgY29uc3Q7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9OdW1iZXJPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9OdW1iZXJPYmplY3QuaAkocmV2aXNpb24gMjg2MDk1KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVyT2JqZWN0LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTM1LDcgKzM1LDcgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lLCBTdWJz
cGFjZUFjY2VzcyBtb2RlPgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0m
IHZtKQogICAgIHsKLSAgICAgICAgcmV0dXJuICZ2bS5udW1iZXJPYmplY3RTcGFjZTsKKyAgICAg
ICAgcmV0dXJuICZ2bS5udW1iZXJPYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBO
dW1iZXJPYmplY3QqIGNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0UHJvdG90eXBlLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0UHJvdG90eXBlLmgJKHJl
dmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdFBy
b3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNiBAQAogLyoKICAqICBDb3B5cmln
aHQgKEMpIDE5OTktMjAwMCBIYXJyaSBQb3J0ZW4gKHBvcnRlbkBrZGUub3JnKQotICogIENvcHly
aWdodCAoQykgMjAwOC0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqICBD
b3B5cmlnaHQgKEMpIDIwMDgtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KgogICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0
ZSBpdCBhbmQvb3IKICAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVz
c2VyIEdlbmVyYWwgUHVibGljCkBAIC0zMyw3ICszMyw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMg
SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19B
U1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKE9iamVjdFByb3RvdHlwZSwgQmFzZSk7Ci0gICAg
ICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFp
bk9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIE9iamVjdFByb3RvdHlwZSogY3Jl
YXRlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqKTsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1Byb2dyYW1FeGVjdXRhYmxlLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvZ3JhbUV4ZWN1dGFibGUuaAkocmV2aXNpb24g
Mjg2MDk1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvZ3JhbUV4ZWN1dGFi
bGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzAsNiArMzAsOCBAQAogCiBuYW1lc3BhY2UgSlNDIHsK
IAorY2xhc3MgVW5saW5rZWRQcm9ncmFtQ29kZUJsb2NrOworCiBjbGFzcyBQcm9ncmFtRXhlY3V0
YWJsZSBmaW5hbCA6IHB1YmxpYyBHbG9iYWxFeGVjdXRhYmxlIHsKICAgICBmcmllbmQgY2xhc3Mg
TExJbnRPZmZzZXRzRXh0cmFjdG9yOwogcHVibGljOgpAQCAtMzksNyArNDEsNyBAQCBwdWJsaWM6
CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNzPgogICAgIHN0
YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKLSAgICAgICAgcmV0
dXJuICZ2bS5wcm9ncmFtRXhlY3V0YWJsZVNwYWNlLnNwYWNlOworICAgICAgICByZXR1cm4gJnZt
LnByb2dyYW1FeGVjdXRhYmxlU3BhY2UoKS5zcGFjZTsKICAgICB9CiAKICAgICBzdGF0aWMgUHJv
Z3JhbUV4ZWN1dGFibGUqIGNyZWF0ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25z
dCBTb3VyY2VDb2RlJiBzb3VyY2UpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Qcm9wZXJ0eVRhYmxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvUHJvcGVydHlUYWJsZS5oCShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eVRhYmxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEyOSw3
ICsxMjksNyBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUsIFN1YnNw
YWNlQWNjZXNzPgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQog
ICAgIHsKLSAgICAgICAgcmV0dXJuICZ2bS5wcm9wZXJ0eVRhYmxlU3BhY2U7CisgICAgICAgIHJl
dHVybiAmdm0ucHJvcGVydHlUYWJsZVNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIGNvbnN0
ZXhwciBib29sIG5lZWRzRGVzdHJ1Y3Rpb24gPSB0cnVlOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvUmVmbGVjdE9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1JlZmxlY3RPYmplY3QuaAkocmV2aXNpb24gMjg2MDk1KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVmbGVjdE9iamVjdC5oCSh3b3JraW5nIGNv
cHkpCkBAIC0zOCw3ICszOCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1
YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQ
QUNFX1NIQVJBQkxFKFJlZmxlY3RPYmplY3QsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBs
YWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwog
ICAgIH0KIAogICAgIHN0YXRpYyBSZWZsZWN0T2JqZWN0KiBjcmVhdGUoVk0mIHZtLCBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cC5oCShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHAuaAkod29ya2luZyBjb3B5KQpAQCAtNDks
NyArNDksNyBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUsIFN1YnNw
YWNlQWNjZXNzIG1vZGU+CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYg
dm0pCiAgICAgewotICAgICAgICByZXR1cm4gJnZtLnJlZ0V4cFNwYWNlOworICAgICAgICByZXR1
cm4gJnZtLnJlZ0V4cFNwYWNlKCk7CiAgICAgfQogCiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3Rh
dGljIFJlZ0V4cCogY3JlYXRlKFZNJiwgY29uc3QgU3RyaW5nJiBwYXR0ZXJuLCBPcHRpb25TZXQ8
WWFycjo6RmxhZ3M+KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4
cE9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Jl
Z0V4cE9iamVjdC5oCShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9SZWdFeHBPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtMzYsNyArMzYsNyBAQCBw
dWJsaWM6CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAg
ewogICAgICAgICBzdGF0aWNfYXNzZXJ0KCFDZWxsVHlwZTo6bmVlZHNEZXN0cnVjdGlvbiwgIiIp
OwotICAgICAgICByZXR1cm4gJnZtLnJlZ0V4cE9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4g
JnZtLnJlZ0V4cE9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIGNvbnN0ZXhwciB1
aW50cHRyX3QgbGFzdEluZGV4SXNOb3RXcml0YWJsZUZsYWcgPSAwYjAxOwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwUHJvdG90eXBlLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwUHJvdG90eXBlLmgJKHJldmlzaW9u
IDI4NjA5NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cFByb3RvdHlw
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw3ICszNCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMg
SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19B
U1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKFJlZ0V4cFByb3RvdHlwZSwgQmFzZSk7Ci0gICAg
ICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFp
bk9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIFJlZ0V4cFByb3RvdHlwZSogY3Jl
YXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBTdHJpbmdJ
dGVyYXRvclByb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1JlZ0V4cFN0cmluZ0l0ZXJhdG9yUHJvdG90eXBlLmgJKHJldmlzaW9uIDI4NjA5NSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cFN0cmluZ0l0ZXJhdG9yUHJv
dG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM5LDcgKzM5LDcgQEAgcHVibGljOgogICAgIHN0
YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAgICAgU1RB
VElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoUmVnRXhwU3RyaW5nSXRlcmF0b3JQcm90
b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAg
ICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBS
ZWdFeHBTdHJpbmdJdGVyYXRvclByb3RvdHlwZSogY3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TY29wZWRBcmd1bWVudHMuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Njb3BlZEFyZ3VtZW50cy5jcHAJKHJldmlzaW9u
IDI4NjA5NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Njb3BlZEFyZ3VtZW50
cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU1LDcgKzU1LDcgQEAgU2NvcGVkQXJndW1lbnRzKiBT
Y29wZWRBcmd1bWVudHM6OmNyZWF0ZQogICAgIFdyaXRlQmFycmllcjxVbmtub3duPiogc3RvcmFn
ZSA9IG51bGxwdHI7CiAgICAgaWYgKHRvdGFsTGVuZ3RoID4gdGFibGUtPmxlbmd0aCgpKSB7CiAg
ICAgICAgIENoZWNrZWQ8dW5zaWduZWQ+IG92ZXJmbG93TGVuZ3RoID0gdG90YWxMZW5ndGggLSB0
YWJsZS0+bGVuZ3RoKCk7Ci0gICAgICAgIHN0b3JhZ2UgPSBzdGF0aWNfY2FzdDxXcml0ZUJhcnJp
ZXI8VW5rbm93bj4qPih2bS5qc1ZhbHVlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZS5hbGxvY2F0ZU5v
blZpcnR1YWwodm0sIG92ZXJmbG93TGVuZ3RoICogc2l6ZW9mKFdyaXRlQmFycmllcjxVbmtub3du
PiksIG51bGxwdHIsIEFsbG9jYXRpb25GYWlsdXJlTW9kZTo6QXNzZXJ0KSk7CisgICAgICAgIHN0
b3JhZ2UgPSBzdGF0aWNfY2FzdDxXcml0ZUJhcnJpZXI8VW5rbm93bj4qPih2bS5qc1ZhbHVlR2ln
YWNhZ2VBdXhpbGlhcnlTcGFjZSgpLmFsbG9jYXRlTm9uVmlydHVhbCh2bSwgb3ZlcmZsb3dMZW5n
dGggKiBzaXplb2YoV3JpdGVCYXJyaWVyPFVua25vd24+KSwgbnVsbHB0ciwgQWxsb2NhdGlvbkZh
aWx1cmVNb2RlOjpBc3NlcnQpKTsKICAgICB9CiAKICAgICBTY29wZWRBcmd1bWVudHMqIHJlc3Vs
dCA9IG5ldyAoCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TY29wZWRBcmd1
bWVudHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TY29w
ZWRBcmd1bWVudHMuaAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvU2NvcGVkQXJndW1lbnRzLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ3LDcgKzQ3LDcg
QEAgcHVibGljOgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQog
ICAgIHsKICAgICAgICAgc3RhdGljX2Fzc2VydCghQ2VsbFR5cGU6Om5lZWRzRGVzdHJ1Y3Rpb24s
ICIiKTsKLSAgICAgICAgcmV0dXJuICZ2bS5zY29wZWRBcmd1bWVudHNTcGFjZTsKKyAgICAgICAg
cmV0dXJuICZ2bS5zY29wZWRBcmd1bWVudHNTcGFjZSgpOwogICAgIH0KIAogICAgIC8vIENyZWF0
ZXMgYW4gYXJndW1lbnRzIG9iamVjdCBidXQgbGVhdmVzIGl0IHVuaW5pdGlhbGl6ZWQuIFRoaXMg
aXMgZGFuZ2Vyb3VzIGlmIHdlIEdDIHJpZ2h0CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9TZXRJdGVyYXRvclByb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1NldEl0ZXJhdG9yUHJvdG90eXBlLmgJKHJldmlzaW9uIDI4NjA5
NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NldEl0ZXJhdG9yUHJvdG90eXBl
LmgJKHdvcmtpbmcgY29weSkKQEAgLTM3LDcgKzM3LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJ
c29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FT
U0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoU2V0SXRlcmF0b3JQcm90b3R5cGUsIEJhc2UpOwot
ICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0u
cGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBTZXRJdGVyYXRvclByb3Rv
dHlwZSogY3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TZXRQ
cm90b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
ZXRQcm90b3R5cGUuaAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvU2V0UHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM3LDcgKzM3LDcgQEAg
cHVibGljOgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAg
IHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoU2V0UHJvdG90
eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAg
ICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgY29u
c3RleHByIHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBI
YXNTdGF0aWNQcm9wZXJ0eVRhYmxlOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU2hhZG93UmVhbG1Qcm90b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TaGFkb3dSZWFsbVByb3RvdHlwZS5oCShyZXZpc2lvbiAyODYwOTUpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TaGFkb3dSZWFsbVByb3RvdHlwZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC0zOSw3ICszOSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vi
c3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRf
SVNPX1NVQlNQQUNFX1NIQVJBQkxFKFNoYWRvd1JlYWxtUHJvdG90eXBlLCBCYXNlKTsKLSAgICAg
ICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWlu
T2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgU2hhZG93UmVhbG1Qcm90b3R5cGUq
IGNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvU3BhcnNlQXJyYXlWYWx1ZU1hcC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NwYXJzZUFycmF5VmFsdWVNYXAuaAkocmV2aXNp
b24gMjg2MDk1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3BhcnNlQXJyYXlW
YWx1ZU1hcC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTAsNyArMTEwLDcgQEAgcHVibGljOgogICAg
IHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlLCBTdWJzcGFjZUFjY2Vzcz4KICAgICBzdGF0aWMg
SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7Ci0gICAgICAgIHJldHVybiAm
dm0uc3BhcnNlQXJyYXlWYWx1ZU1hcFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnNwYXJzZUFy
cmF5VmFsdWVNYXBTcGFjZSgpOwogICAgIH0KICAgICAKICAgICBzdGF0aWMgU3RydWN0dXJlKiBj
cmVhdGVTdHJ1Y3R1cmUoVk0mLCBKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUgcHJvdG90eXBlKTsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ0l0ZXJhdG9yUHJvdG90
eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5n
SXRlcmF0b3JQcm90b3R5cGUuaAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU3RyaW5nSXRlcmF0b3JQcm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpA
QCAtMzksNyArMzksNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFj
ZUZvcihWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9T
SEFSQUJMRShTdHJpbmdJdGVyYXRvclByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAm
dm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNl
KCk7CiAgICAgfQogCiAgICAgc3RhdGljIFN0cmluZ0l0ZXJhdG9yUHJvdG90eXBlKiBjcmVhdGUo
Vk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ09iamVjdC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ09iamVjdC5o
CShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJp
bmdPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtMzMsNyArMzMsNyBAQCBwdWJsaWM6CiAgICAg
dGVtcGxhdGU8dHlwZW5hbWUsIFN1YnNwYWNlQWNjZXNzIG1vZGU+CiAgICAgc3RhdGljIElzb1N1
YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewotICAgICAgICByZXR1cm4gJnZtLnN0
cmluZ09iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnN0cmluZ09iamVjdFNwYWNlKCk7
CiAgICAgfQogCiAgICAgc3RhdGljIFN0cmluZ09iamVjdCogY3JlYXRlKFZNJiB2bSwgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1
Y3R1cmUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1
Y3R1cmUuaAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU3RydWN0dXJlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEyOCw3ICsxMjgsNyBAQCBwdWJsaWM6
CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNzPgogICAgIHN0
YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKLSAgICAgICAgcmV0
dXJuICZ2bS5zdHJ1Y3R1cmVTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5zdHJ1Y3R1cmVTcGFj
ZSgpOwogICAgIH0KIAogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIGlzVmFsaWRQ
cm90b3R5cGUoSlNWYWx1ZSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
dHJ1Y3R1cmVDaGFpbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvU3RydWN0dXJlQ2hhaW4uY3BwCShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVDaGFpbi5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTQ4LDcgKzQ4LDcgQEAgU3RydWN0dXJlQ2hhaW4qIFN0cnVjdHVyZUNoYWluOjpjcmVhdGUoVgog
ICAgICAgICArK3NpemU7CiAgICAgKytzaXplOyAvLyBTZW50aW5lbCBudWxscHRyLgogICAgIHNp
emVfdCBieXRlcyA9IENoZWNrZWQ8c2l6ZV90PihzaXplKSAqIHNpemVvZihTdHJ1Y3R1cmVJRCk7
Ci0gICAgU3RydWN0dXJlSUQqIHZlY3RvciA9IHN0YXRpY19jYXN0PFN0cnVjdHVyZUlEKj4odm0u
anNWYWx1ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UuYWxsb2NhdGVOb25WaXJ0dWFsKHZtLCBieXRl
cywgbnVsbHB0ciwgQWxsb2NhdGlvbkZhaWx1cmVNb2RlOjpBc3NlcnQpKTsKKyAgICBTdHJ1Y3R1
cmVJRCogdmVjdG9yID0gc3RhdGljX2Nhc3Q8U3RydWN0dXJlSUQqPih2bS5qc1ZhbHVlR2lnYWNh
Z2VBdXhpbGlhcnlTcGFjZSgpLmFsbG9jYXRlTm9uVmlydHVhbCh2bSwgYnl0ZXMsIG51bGxwdHIs
IEFsbG9jYXRpb25GYWlsdXJlTW9kZTo6QXNzZXJ0KSk7CiAgICAgbWVtc2V0KHZlY3RvciwgMCwg
Ynl0ZXMpOwogICAgIFN0cnVjdHVyZUNoYWluKiBjaGFpbiA9IG5ldyAoTm90TnVsbCwgYWxsb2Nh
dGVDZWxsPFN0cnVjdHVyZUNoYWluPih2bSkpIFN0cnVjdHVyZUNoYWluKHZtLCB2bS5zdHJ1Y3R1
cmVDaGFpblN0cnVjdHVyZS5nZXQoKSwgdmVjdG9yKTsKICAgICBjaGFpbi0+ZmluaXNoQ3JlYXRp
b24odm0sIGhlYWQpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0
dXJlQ2hhaW4uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
dHJ1Y3R1cmVDaGFpbi5oCShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9TdHJ1Y3R1cmVDaGFpbi5oCSh3b3JraW5nIGNvcHkpCkBAIC00Niw3ICs0Niw3
IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vic3BhY2VBY2Nl
c3M+CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewot
ICAgICAgICByZXR1cm4gJnZtLnN0cnVjdHVyZUNoYWluU3BhY2U7CisgICAgICAgIHJldHVybiAm
dm0uc3RydWN0dXJlQ2hhaW5TcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBTdHJ1Y3R1cmVD
aGFpbiogY3JlYXRlKFZNJiwgSlNPYmplY3QqKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1N0cnVjdHVyZVJhcmVEYXRhLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlUmFyZURhdGEuaAkocmV2aXNpb24gMjg2MDk1KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlUmFyZURhdGEuaAkod29y
a2luZyBjb3B5KQpAQCAtNjYsNyArNjYsNyBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5h
bWUgQ2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNzPgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vi
c3BhY2VGb3IoVk0mIHZtKQogICAgIHsKLSAgICAgICAgcmV0dXJuICZ2bS5zdHJ1Y3R1cmVSYXJl
RGF0YVNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnN0cnVjdHVyZVJhcmVEYXRhU3BhY2UoKTsK
ICAgICB9CiAKICAgICBzdGF0aWMgU3RydWN0dXJlUmFyZURhdGEqIGNyZWF0ZShWTSYsIFN0cnVj
dHVyZSopOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sUHJvdG90
eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9s
UHJvdG90eXBlLmgJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1N5bWJvbFByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00MSw3ICs0MSw3IEBA
IHB1YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAg
ICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKFN5bWJvbFBy
b3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAg
ICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGlj
IFN5bWJvbFByb3RvdHlwZSogY3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9TeW1ib2xUYWJsZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1N5bWJvbFRhYmxlLmgJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbFRhYmxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ1Niw3
ICs0NTYsNyBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUsIFN1YnNw
YWNlQWNjZXNzPgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQog
ICAgIHsKLSAgICAgICAgcmV0dXJuICZ2bS5zeW1ib2xUYWJsZVNwYWNlOworICAgICAgICByZXR1
cm4gJnZtLnN5bWJvbFRhYmxlU3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgU3ltYm9sVGFi
bGUqIGNyZWF0ZShWTSYgdm0pCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9U
ZW1wb3JhbENhbGVuZGFyUHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxDYWxlbmRhclByb3RvdHlwZS5oCShyZXZpc2lvbiAyODYw
OTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbENhbGVuZGFyUHJv
dG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM4LDcgKzM4LDcgQEAgcHVibGljOgogICAgIHN0
YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAgICAgU1RB
VElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoVGVtcG9yYWxDYWxlbmRhclByb3RvdHlw
ZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAg
cmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIFRlbXBv
cmFsQ2FsZW5kYXJQcm90b3R5cGUqIGNyZWF0ZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0
dXJlKik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbER1cmF0
aW9uUHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvVGVtcG9yYWxEdXJhdGlvblByb3RvdHlwZS5oCShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbER1cmF0aW9uUHJvdG90eXBlLmgJKHdv
cmtpbmcgY29weSkKQEAgLTEsNSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDIxIFNv
bnkgSW50ZXJhY3RpdmUgRW50ZXJ0YWlubWVudCBJbmMuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCkBAIC0zOCw3ICszOSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2Uq
IHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NV
QlNQQUNFX1NIQVJBQkxFKFRlbXBvcmFsRHVyYXRpb25Qcm90b3R5cGUsIEJhc2UpOwotICAgICAg
ICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5P
YmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBUZW1wb3JhbER1cmF0aW9uUHJvdG90
eXBlKiBjcmVhdGUoVk0mLCBTdHJ1Y3R1cmUqKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1RlbXBvcmFsSW5zdGFudFByb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsSW5zdGFudFByb3RvdHlwZS5oCShyZXZp
c2lvbiAyODYwOTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbElu
c3RhbnRQcm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBD
b3B5cmlnaHQgKEMpIDIwMjEgSWdhbGlhIFMuTC4KKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKQEAgLTM4LDcgKzM5LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vi
c3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BB
Q0VfU0hBUkFCTEUoVGVtcG9yYWxJbnN0YW50UHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0
dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0
U3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgVGVtcG9yYWxJbnN0YW50UHJvdG90eXBlKiBj
cmVhdGUoVk0mLCBTdHJ1Y3R1cmUqKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1RlbXBvcmFsTm93LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvVGVtcG9yYWxOb3cuaAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxOb3cuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDYg
QEAKIC8qCiAgKiAgQ29weXJpZ2h0IChDKSAyMDIxIElnYWxpYSwgUy5MLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKgogICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJl
ZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRo
ZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCkBAIC0zMiw3ICszMyw3IEBAIHB1YmxpYzoKICAg
ICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAg
IFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKFRlbXBvcmFsTm93LCBCYXNlKTsK
LSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZt
LnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgVGVtcG9yYWxOb3cqIGNy
ZWF0ZShWTSYsIFN0cnVjdHVyZSopOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvVGVtcG9yYWxPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9UZW1wb3JhbE9iamVjdC5oCShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbE9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDYgKzEsNyBAQAogLyoKICAqICBDb3B5cmlnaHQgKEMpIDIwMjEgSWdhbGlhLCBTLkwuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKiAgQ29weXJpZ2h0IChDKSAyMDIxIFNvbnkgSW50ZXJhY3RpdmUg
RW50ZXJ0YWlubWVudCBJbmMuCisgKiAgQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7
IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogIG1vZGlmeSBpdCB1bmRlciB0aGUg
dGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKQEAgLTY0LDcgKzY1LDcgQEAg
cHVibGljOgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAg
IHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoVGVtcG9yYWxP
YmplY3QsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAg
ICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBU
ZW1wb3JhbE9iamVjdCogY3JlYXRlKFZNJiwgU3RydWN0dXJlKik7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbFBsYWluVGltZVByb3RvdHlwZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsUGxhaW5UaW1lUHJv
dG90eXBlLmgJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1RlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSAr
MSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4KKyAqIENvcHlyaWdo
dCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKQEAgLTM4LDcgKzM4LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJ
c29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FT
U0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoVGVtcG9yYWxQbGFpblRpbWVQcm90b3R5cGUsIEJh
c2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVy
biAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBUZW1wb3JhbFBs
YWluVGltZVByb3RvdHlwZSogY3JlYXRlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUq
KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsVGltZVpvbmVQ
cm90b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9U
ZW1wb3JhbFRpbWVab25lUHJvdG90eXBlLmgJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsVGltZVpvbmVQcm90b3R5cGUuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMzgsNyArMzgsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIElzb1N1YnNwYWNl
KiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19T
VUJTUEFDRV9TSEFSQUJMRShUZW1wb3JhbFRpbWVab25lUHJvdG90eXBlLCBCYXNlKTsKLSAgICAg
ICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWlu
T2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgVGVtcG9yYWxUaW1lWm9uZVByb3Rv
dHlwZSogY3JlYXRlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqKTsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Rocm93U2NvcGUuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Rocm93U2NvcGUuY3BwCShyZXZpc2lvbiAy
ODYwOTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UaHJvd1Njb3BlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYt
MjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTYtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJFeGNlcHRpb24uaCIK
ICNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgogI2luY2x1ZGUgIlZNLmgiCisjaW5jbHVk
ZSA8d3RmL1N0YWNrVHJhY2UuaD4KIAogbmFtZXNwYWNlIEpTQyB7CiAgICAgCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyLDIxICsz
MiwxNSBAQAogI2luY2x1ZGUgIkFjY2Vzc0Nhc2UuaCIKICNpbmNsdWRlICJBZ2dyZWdhdGVFcnJv
ci5oIgogI2luY2x1ZGUgIkFyZ0xpc3QuaCIKLSNpbmNsdWRlICJCaWdJbnRPYmplY3QuaCIKLSNp
bmNsdWRlICJCb29sZWFuT2JqZWN0LmgiCi0jaW5jbHVkZSAiQnJhbmRlZFN0cnVjdHVyZS5oIgog
I2luY2x1ZGUgIkJ1aWx0aW5FeGVjdXRhYmxlcy5oIgogI2luY2x1ZGUgIkJ5dGVjb2RlSW50cmlu
c2ljUmVnaXN0cnkuaCIKICNpbmNsdWRlICJDaGVja3BvaW50T1NSRXhpdFNpZGVTdGF0ZS5oIgot
I2luY2x1ZGUgIkNsb25lZEFyZ3VtZW50cy5oIgogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgogI2lu
Y2x1ZGUgIkNvZGVDYWNoZS5oIgogI2luY2x1ZGUgIkNvbW1vbklkZW50aWZpZXJzLmgiCiAjaW5j
bHVkZSAiQ29udHJvbEZsb3dQcm9maWxlci5oIgogI2luY2x1ZGUgIkN1c3RvbUdldHRlclNldHRl
ci5oIgogI2luY2x1ZGUgIkRPTUF0dHJpYnV0ZUdldHRlclNldHRlci5oIgotI2luY2x1ZGUgIkRh
dGVJbnN0YW5jZS5oIgotI2luY2x1ZGUgIkRlYnVnZ2VyU2NvcGUuaCIKICNpbmNsdWRlICJEZWZl
cnJlZFdvcmtUaW1lci5oIgogI2luY2x1ZGUgIkRpc2Fzc2VtYmxlci5oIgogI2luY2x1ZGUgIkRv
dWJsZVByZWRpY3Rpb25GdXp6ZXJBZ2VudC5oIgpAQCAtNTUsNyArNDksNiBAQAogI2luY2x1ZGUg
IkV4Y2VwdGlvbi5oIgogI2luY2x1ZGUgIkV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2UuaCIKICNp
bmNsdWRlICJGVExUaHVua3MuaCIKLSNpbmNsdWRlICJGYXN0TWFsbG9jQWxpZ25lZE1lbW9yeUFs
bG9jYXRvci5oIgogI2luY2x1ZGUgIkZpbGVCYXNlZEZ1enplckFnZW50LmgiCiAjaW5jbHVkZSAi
RnVuY3Rpb25Db2RlQmxvY2suaCIKICNpbmNsdWRlICJGdW5jdGlvbkV4ZWN1dGFibGUuaCIKQEAg
LTY2LDc3ICs1OSwyNSBAQAogI2luY2x1ZGUgIkhlYXBQcm9maWxlci5oIgogI2luY2x1ZGUgIklu
dGVycHJldGVyLmgiCiAjaW5jbHVkZSAiSW50bENhY2hlLmgiCi0jaW5jbHVkZSAiSW50bENvbGxh
dG9yLmgiCi0jaW5jbHVkZSAiSW50bERhdGVUaW1lRm9ybWF0LmgiCi0jaW5jbHVkZSAiSW50bERp
c3BsYXlOYW1lcy5oIgotI2luY2x1ZGUgIkludGxMaXN0Rm9ybWF0LmgiCi0jaW5jbHVkZSAiSW50
bExvY2FsZS5oIgotI2luY2x1ZGUgIkludGxOdW1iZXJGb3JtYXQuaCIKLSNpbmNsdWRlICJJbnRs
UGx1cmFsUnVsZXMuaCIKLSNpbmNsdWRlICJJbnRsUmVsYXRpdmVUaW1lRm9ybWF0LmgiCi0jaW5j
bHVkZSAiSW50bFNlZ21lbnRJdGVyYXRvci5oIgotI2luY2x1ZGUgIkludGxTZWdtZW50ZXIuaCIK
LSNpbmNsdWRlICJJbnRsU2VnbWVudHMuaCIKLSNpbmNsdWRlICJJc29IZWFwQ2VsbFR5cGUuaCIK
LSNpbmNsdWRlICJJc29JbmxpbmVkSGVhcENlbGxUeXBlLmgiCiAjaW5jbHVkZSAiSklUQ29kZS5o
IgogI2luY2x1ZGUgIkpJVE9wZXJhdGlvbkxpc3QuaCIKICNpbmNsdWRlICJKSVRTaXplU3RhdGlz
dGljcy5oIgogI2luY2x1ZGUgIkpJVFRodW5rcy5oIgogI2luY2x1ZGUgIkpJVFdvcmtsaXN0Lmgi
Ci0jaW5jbHVkZSAiSlNBUElHbG9iYWxPYmplY3QuaCIKICNpbmNsdWRlICJKU0FQSVZhbHVlV3Jh
cHBlci5oIgotI2luY2x1ZGUgIkpTQVBJV3JhcHBlck9iamVjdC5oIgotI2luY2x1ZGUgIkpTQXJy
YXkuaCIKLSNpbmNsdWRlICJKU0FycmF5QnVmZmVyLmgiCi0jaW5jbHVkZSAiSlNBcnJheUl0ZXJh
dG9yLmgiCi0jaW5jbHVkZSAiSlNBc3luY0dlbmVyYXRvci5oIgogI2luY2x1ZGUgIkpTQmlnSW50
LmgiCi0jaW5jbHVkZSAiSlNCb3VuZEZ1bmN0aW9uLmgiCi0jaW5jbHVkZSAiSlNDYWxsYmFja0Nv
bnN0cnVjdG9yLmgiCi0jaW5jbHVkZSAiSlNDYWxsYmFja0Z1bmN0aW9uLmgiCi0jaW5jbHVkZSAi
SlNDYWxsYmFja09iamVjdC5oIgotI2luY2x1ZGUgIkpTQ2FsbGVlLmgiCi0jaW5jbHVkZSAiSlND
dXN0b21HZXR0ZXJGdW5jdGlvbi5oIgotI2luY2x1ZGUgIkpTQ3VzdG9tU2V0dGVyRnVuY3Rpb24u
aCIKLSNpbmNsdWRlICJKU0Rlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5oIgotI2luY2x1
ZGUgIkpTRmluYWxpemF0aW9uUmVnaXN0cnkuaCIKLSNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCi0j
aW5jbHVkZSAiSlNHbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQuaCIKICNpbmNsdWRlICJKU0dsb2Jh
bE9iamVjdC5oIgogI2luY2x1ZGUgIkpTSW1tdXRhYmxlQnV0dGVyZmx5LmgiCi0jaW5jbHVkZSAi
SlNJbmplY3RlZFNjcmlwdEhvc3QuaCIKLSNpbmNsdWRlICJKU0phdmFTY3JpcHRDYWxsRnJhbWUu
aCIKICNpbmNsdWRlICJKU0xvY2suaCIKICNpbmNsdWRlICJKU01hcC5oIgotI2luY2x1ZGUgIkpT
TWFwSXRlcmF0b3IuaCIKLSNpbmNsdWRlICJKU01vZHVsZU5hbWVzcGFjZU9iamVjdC5oIgotI2lu
Y2x1ZGUgIkpTTW9kdWxlUmVjb3JkLmgiCi0jaW5jbHVkZSAiSlNOYXRpdmVTdGRGdW5jdGlvbi5o
IgogI2luY2x1ZGUgIkpTUHJvbWlzZS5oIgogI2luY2x1ZGUgIkpTUHJvcGVydHlOYW1lRW51bWVy
YXRvci5oIgotI2luY2x1ZGUgIkpTUHJveHkuaCIKICNpbmNsdWRlICJKU1NjcmlwdEZldGNoUGFy
YW1ldGVycy5oIgogI2luY2x1ZGUgIkpTU2NyaXB0RmV0Y2hlci5oIgogI2luY2x1ZGUgIkpTU2V0
LmgiCi0jaW5jbHVkZSAiSlNTZXRJdGVyYXRvci5oIgogI2luY2x1ZGUgIkpTU291cmNlQ29kZS5o
IgotI2luY2x1ZGUgIkpTU3RyaW5nSXRlcmF0b3IuaCIKICNpbmNsdWRlICJKU1RlbXBsYXRlT2Jq
ZWN0RGVzY3JpcHRvci5oIgotI2luY2x1ZGUgIkpTVG9XYXNtSUNDYWxsZWUuaCIKLSNpbmNsdWRl
ICJKU1R5cGVkQXJyYXlzLmgiCi0jaW5jbHVkZSAiSlNXZWFrTWFwLmgiCi0jaW5jbHVkZSAiSlNX
ZWFrT2JqZWN0UmVmLmgiCi0jaW5jbHVkZSAiSlNXZWFrU2V0LmgiCiAjaW5jbHVkZSAiSlNXZWJB
c3NlbWJseUNvZGVCbG9jay5oIgotI2luY2x1ZGUgIkpTV2ViQXNzZW1ibHlFeGNlcHRpb24uaCIK
LSNpbmNsdWRlICJKU1dlYkFzc2VtYmx5R2xvYmFsLmgiCi0jaW5jbHVkZSAiSlNXZWJBc3NlbWJs
eUluc3RhbmNlLmgiCi0jaW5jbHVkZSAiSlNXZWJBc3NlbWJseU1lbW9yeS5oIgotI2luY2x1ZGUg
IkpTV2ViQXNzZW1ibHlNb2R1bGUuaCIKLSNpbmNsdWRlICJKU1dlYkFzc2VtYmx5VGFibGUuaCIK
LSNpbmNsdWRlICJKU1dlYkFzc2VtYmx5VGFnLmgiCi0jaW5jbHVkZSAiSlNXaXRoU2NvcGUuaCIK
ICNpbmNsdWRlICJMTEludERhdGEuaCIKICNpbmNsdWRlICJMTEludEV4Y2VwdGlvbnMuaCIKICNp
bmNsdWRlICJNYXJrZWRCbG9ja0lubGluZXMuaCIKQEAgLTE1MSwyNyArOTIsMTYgQEAKICNpbmNs
dWRlICJQcm9ncmFtQ29kZUJsb2NrLmgiCiAjaW5jbHVkZSAiUHJvZ3JhbUV4ZWN1dGFibGUuaCIK
ICNpbmNsdWRlICJQcm9wZXJ0eVRhYmxlLmgiCi0jaW5jbHVkZSAiUHJveHlSZXZva2UuaCIKICNp
bmNsdWRlICJSYW5kb21pemluZ0Z1enplckFnZW50LmgiCiAjaW5jbHVkZSAiUmVnRXhwQ2FjaGUu
aCIKLSNpbmNsdWRlICJSZWdFeHBPYmplY3QuaCIKICNpbmNsdWRlICJTYW1wbGluZ1Byb2ZpbGVy
LmgiCiAjaW5jbHVkZSAiU2NvcGVkQXJndW1lbnRzLmgiCiAjaW5jbHVkZSAiU2hhZG93Q2hpY2tl
bi5oIgotI2luY2x1ZGUgIlNoYWRvd1JlYWxtT2JqZWN0LmgiCiAjaW5jbHVkZSAiU2ltcGxlVHlw
ZWRBcnJheUNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJTb3VyY2VQcm92aWRlckNhY2hlLmgiCi0j
aW5jbHVkZSAiU3RyaWN0RXZhbEFjdGl2YXRpb24uaCIKLSNpbmNsdWRlICJTdHJpbmdPYmplY3Qu
aCIKICNpbmNsdWRlICJTdHJvbmdJbmxpbmVzLmgiCiAjaW5jbHVkZSAiU3RydWN0dXJlQ2hhaW4u
aCIKICNpbmNsdWRlICJTdHJ1Y3R1cmVJbmxpbmVzLmgiCi0jaW5jbHVkZSAiU3ltYm9sT2JqZWN0
LmgiCi0jaW5jbHVkZSAiVGVtcG9yYWxDYWxlbmRhci5oIgotI2luY2x1ZGUgIlRlbXBvcmFsRHVy
YXRpb24uaCIKLSNpbmNsdWRlICJUZW1wb3JhbEluc3RhbnQuaCIKLSNpbmNsdWRlICJUZW1wb3Jh
bFBsYWluVGltZS5oIgotI2luY2x1ZGUgIlRlbXBvcmFsVGltZVpvbmUuaCIKICNpbmNsdWRlICJU
ZXN0UnVubmVyVXRpbHMuaCIKICNpbmNsdWRlICJUaHVua0dlbmVyYXRvcnMuaCIKICNpbmNsdWRl
ICJUeXBlUHJvZmlsZXIuaCIKQEAgLTE4MywxOSArMTEzLDE2IEBACiAjaW5jbHVkZSAiV2FzbVdv
cmtsaXN0LmgiCiAjaW5jbHVkZSAiV2F0Y2hkb2cuaCIKICNpbmNsdWRlICJXZWFrR0NNYXBJbmxp
bmVzLmgiCi0jaW5jbHVkZSAiV2ViQXNzZW1ibHlGdW5jdGlvbi5oIgotI2luY2x1ZGUgIldlYkFz
c2VtYmx5TW9kdWxlUmVjb3JkLmgiCi0jaW5jbHVkZSAiV2ViQXNzZW1ibHlXcmFwcGVyRnVuY3Rp
b24uaCIKICNpbmNsdWRlICJXaWRlbmluZ051bWJlclByZWRpY3Rpb25GdXp6ZXJBZ2VudC5oIgog
I2luY2x1ZGUgPHd0Zi9Qcm9jZXNzSUQuaD4KICNpbmNsdWRlIDx3dGYvUmVhZFdyaXRlTG9jay5o
PgogI2luY2x1ZGUgPHd0Zi9TaW1wbGVTdGF0cy5oPgorI2luY2x1ZGUgPHd0Zi9TdGFja1RyYWNl
Lmg+CiAjaW5jbHVkZSA8d3RmL1N0cmluZ1ByaW50U3RyZWFtLmg+CiAjaW5jbHVkZSA8d3RmL1Ro
cmVhZGluZy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21TdHJpbmdUYWJsZS5oPgogCiAjaWYg
RU5BQkxFKENfTE9PUCkKLSNpbmNsdWRlICJDTG9vcFN0YWNrLmgiCiAjaW5jbHVkZSAiQ0xvb3BT
dGFja0lubGluZXMuaCIKICNlbmRpZgogCkBAIC0yMDcsMTUgKzEzNCw2IEBACiAjaW5jbHVkZSAi
UmVnRXhwLmgiCiAjZW5kaWYKIAotI2lmIEpTQ19PQkpDX0FQSV9FTkFCTEVECi0jaW5jbHVkZSAi
T2JqQ0NhbGxiYWNrRnVuY3Rpb24uaCIKLSNlbmRpZgotCi0jaWZkZWYgSlNDX0dMSUJfQVBJX0VO
QUJMRUQKLSNpbmNsdWRlICJKU0FQSVdyYXBwZXJHbG9iYWxPYmplY3QuaCIKLSNpbmNsdWRlICJK
U0NDYWxsYmFja0Z1bmN0aW9uLmgiCi0jZW5kaWYKLQogbmFtZXNwYWNlIEpTQyB7CiAKIEF0b21p
Yzx1bnNpZ25lZD4gVk06OnNfbnVtYmVyT2ZJRHM7CkBAIC0yOTEsMTA5ICsyMDksNiBAQCBWTTo6
Vk0oVk1UeXBlIHZtVHlwZSwgSGVhcFR5cGUgaGVhcFR5cGUsCiAgICAgLCBtX3JhbmRvbShPcHRp
b25zOjpzZWVkT2ZWTVJhbmRvbUZvckZ1enplcigpID8gT3B0aW9uczo6c2VlZE9mVk1SYW5kb21G
b3JGdXp6ZXIoKSA6IGNyeXB0b2dyYXBoaWNhbGx5UmFuZG9tTnVtYmVyKCkpCiAgICAgLCBtX2lu
dGVncml0eVJhbmRvbSgqdGhpcykKICAgICAsIGhlYXAoKnRoaXMsIGhlYXBUeXBlKQotICAgICwg
ZmFzdE1hbGxvY0FsbG9jYXRvcihtYWtlVW5pcXVlPEZhc3RNYWxsb2NBbGlnbmVkTWVtb3J5QWxs
b2NhdG9yPigpKQotICAgICwgcHJpbWl0aXZlR2lnYWNhZ2VBbGxvY2F0b3IobWFrZVVuaXF1ZTxH
aWdhY2FnZUFsaWduZWRNZW1vcnlBbGxvY2F0b3I+KEdpZ2FjYWdlOjpQcmltaXRpdmUpKQotICAg
ICwganNWYWx1ZUdpZ2FjYWdlQWxsb2NhdG9yKG1ha2VVbmlxdWU8R2lnYWNhZ2VBbGlnbmVkTWVt
b3J5QWxsb2NhdG9yPihHaWdhY2FnZTo6SlNWYWx1ZSkpCi0gICAgLCBhdXhpbGlhcnlIZWFwQ2Vs
bFR5cGUobWFrZVVuaXF1ZTxIZWFwQ2VsbFR5cGU+KENlbGxBdHRyaWJ1dGVzKERvZXNOb3ROZWVk
RGVzdHJ1Y3Rpb24sIEhlYXBDZWxsOjpBdXhpbGlhcnkpKSkKLSAgICAsIGltbXV0YWJsZUJ1dHRl
cmZseUhlYXBDZWxsVHlwZShtYWtlVW5pcXVlPEhlYXBDZWxsVHlwZT4oQ2VsbEF0dHJpYnV0ZXMo
RG9lc05vdE5lZWREZXN0cnVjdGlvbiwgSGVhcENlbGw6OkpTQ2VsbFdpdGhJbmRleGluZ0hlYWRl
cikpKQotICAgICwgY2VsbEhlYXBDZWxsVHlwZShtYWtlVW5pcXVlPEhlYXBDZWxsVHlwZT4oQ2Vs
bEF0dHJpYnV0ZXMoRG9lc05vdE5lZWREZXN0cnVjdGlvbiwgSGVhcENlbGw6OkpTQ2VsbCkpKQot
ICAgICwgZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZShtYWtlVW5pcXVlPEhlYXBDZWxsVHlw
ZT4oQ2VsbEF0dHJpYnV0ZXMoTmVlZHNEZXN0cnVjdGlvbiwgSGVhcENlbGw6OkpTQ2VsbCkpKQot
ICAgICwgYXBpR2xvYmFsT2JqZWN0SGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6Y3JlYXRl
PEpTQVBJR2xvYmFsT2JqZWN0PigpKQotICAgICwgY2FsbGJhY2tDb25zdHJ1Y3RvckhlYXBDZWxs
VHlwZShJc29IZWFwQ2VsbFR5cGU6OmNyZWF0ZTxKU0NhbGxiYWNrQ29uc3RydWN0b3I+KCkpCi0g
ICAgLCBjYWxsYmFja0dsb2JhbE9iamVjdEhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OmNy
ZWF0ZTxKU0NhbGxiYWNrT2JqZWN0PEpTR2xvYmFsT2JqZWN0Pj4oKSkKLSAgICAsIGNhbGxiYWNr
T2JqZWN0SGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6Y3JlYXRlPEpTQ2FsbGJhY2tPYmpl
Y3Q8SlNOb25GaW5hbE9iamVjdD4+KCkpCi0gICAgLCBjdXN0b21HZXR0ZXJGdW5jdGlvbkhlYXBD
ZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OmNyZWF0ZTxKU0N1c3RvbUdldHRlckZ1bmN0aW9uPigp
KQotICAgICwgY3VzdG9tU2V0dGVyRnVuY3Rpb25IZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBl
OjpjcmVhdGU8SlNDdXN0b21TZXR0ZXJGdW5jdGlvbj4oKSkKLSAgICAsIGRhdGVJbnN0YW5jZUhl
YXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OmNyZWF0ZTxEYXRlSW5zdGFuY2U+KCkpCi0gICAg
LCBlcnJvckluc3RhbmNlSGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6Y3JlYXRlPEVycm9y
SW5zdGFuY2U+KCkpCi0gICAgLCBmaW5hbGl6YXRpb25SZWdpc3RyeUNlbGxUeXBlKElzb0hlYXBD
ZWxsVHlwZTo6Y3JlYXRlPEpTRmluYWxpemF0aW9uUmVnaXN0cnk+KCkpCi0gICAgLCBnbG9iYWxM
ZXhpY2FsRW52aXJvbm1lbnRIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpjcmVhdGU8SlNH
bG9iYWxMZXhpY2FsRW52aXJvbm1lbnQ+KCkpCi0gICAgLCBnbG9iYWxPYmplY3RIZWFwQ2VsbFR5
cGUoSXNvSGVhcENlbGxUeXBlOjpjcmVhdGU8SlNHbG9iYWxPYmplY3Q+KCkpCi0gICAgLCBpbmpl
Y3RlZFNjcmlwdEhvc3RTcGFjZUhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OmNyZWF0ZTxJ
bnNwZWN0b3I6OkpTSW5qZWN0ZWRTY3JpcHRIb3N0PigpKQotICAgICwgamF2YVNjcmlwdENhbGxG
cmFtZUhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OmNyZWF0ZTxJbnNwZWN0b3I6OkpTSmF2
YVNjcmlwdENhbGxGcmFtZT4oKSkKLSAgICAsIGpzTW9kdWxlUmVjb3JkSGVhcENlbGxUeXBlKElz
b0hlYXBDZWxsVHlwZTo6Y3JlYXRlPEpTTW9kdWxlUmVjb3JkPigpKQotICAgICwgbW9kdWxlTmFt
ZXNwYWNlT2JqZWN0SGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6Y3JlYXRlPEpTTW9kdWxl
TmFtZXNwYWNlT2JqZWN0PigpKQotICAgICwgbmF0aXZlU3RkRnVuY3Rpb25IZWFwQ2VsbFR5cGUo
SXNvSGVhcENlbGxUeXBlOjpjcmVhdGU8SlNOYXRpdmVTdGRGdW5jdGlvbj4oKSkKLSAgICAsIHN0
cmluZ0hlYXBDZWxsVHlwZShtYWtlVW5pcXVlPElzb0lubGluZWRIZWFwQ2VsbFR5cGU8SlNTdHJp
bmc+PigpKQotICAgICwgd2Vha01hcEhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OmNyZWF0
ZTxKU1dlYWtNYXA+KCkpCi0gICAgLCB3ZWFrU2V0SGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlw
ZTo6Y3JlYXRlPEpTV2Vha1NldD4oKSkKLSAgICAsIGRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxs
VHlwZShtYWtlVW5pcXVlPEpTRGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlPigpKQotI2lm
IEpTQ19PQkpDX0FQSV9FTkFCTEVECi0gICAgLCBhcGlXcmFwcGVyT2JqZWN0SGVhcENlbGxUeXBl
KElzb0hlYXBDZWxsVHlwZTo6Y3JlYXRlPEpTQ2FsbGJhY2tPYmplY3Q8SlNBUElXcmFwcGVyT2Jq
ZWN0Pj4oKSkKLSAgICAsIG9iakNDYWxsYmFja0Z1bmN0aW9uSGVhcENlbGxUeXBlKElzb0hlYXBD
ZWxsVHlwZTo6Y3JlYXRlPE9iakNDYWxsYmFja0Z1bmN0aW9uPigpKQotI2VuZGlmCi0jaWZkZWYg
SlNDX0dMSUJfQVBJX0VOQUJMRUQKLSAgICAsIGFwaVdyYXBwZXJPYmplY3RIZWFwQ2VsbFR5cGUo
SXNvSGVhcENlbGxUeXBlOjpjcmVhdGU8SlNDYWxsYmFja09iamVjdDxKU0FQSVdyYXBwZXJPYmpl
Y3Q+PigpKQotICAgICwgY2FsbGJhY2tBUElXcmFwcGVyR2xvYmFsT2JqZWN0SGVhcENlbGxUeXBl
KElzb0hlYXBDZWxsVHlwZTo6Y3JlYXRlPEpTQ2FsbGJhY2tPYmplY3Q8SlNBUElXcmFwcGVyR2xv
YmFsT2JqZWN0Pj4oKSkKLSAgICAsIGpzY0NhbGxiYWNrRnVuY3Rpb25IZWFwQ2VsbFR5cGUoSXNv
SGVhcENlbGxUeXBlOjpjcmVhdGU8SlNDQ2FsbGJhY2tGdW5jdGlvbj4oKSkKLSNlbmRpZgotICAg
ICwgaW50bENvbGxhdG9ySGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6Y3JlYXRlPEludGxD
b2xsYXRvcj4oKSkKLSAgICAsIGludGxEYXRlVGltZUZvcm1hdEhlYXBDZWxsVHlwZShJc29IZWFw
Q2VsbFR5cGU6OmNyZWF0ZTxJbnRsRGF0ZVRpbWVGb3JtYXQ+KCkpCi0gICAgLCBpbnRsRGlzcGxh
eU5hbWVzSGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6Y3JlYXRlPEludGxEaXNwbGF5TmFt
ZXM+KCkpCi0gICAgLCBpbnRsTGlzdEZvcm1hdEhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6
OmNyZWF0ZTxJbnRsTGlzdEZvcm1hdD4oKSkKLSAgICAsIGludGxMb2NhbGVIZWFwQ2VsbFR5cGUo
SXNvSGVhcENlbGxUeXBlOjpjcmVhdGU8SW50bExvY2FsZT4oKSkKLSAgICAsIGludGxOdW1iZXJG
b3JtYXRIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpjcmVhdGU8SW50bE51bWJlckZvcm1h
dD4oKSkKLSAgICAsIGludGxQbHVyYWxSdWxlc0hlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6
OmNyZWF0ZTxJbnRsUGx1cmFsUnVsZXM+KCkpCi0gICAgLCBpbnRsUmVsYXRpdmVUaW1lRm9ybWF0
SGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6Y3JlYXRlPEludGxSZWxhdGl2ZVRpbWVGb3Jt
YXQ+KCkpCi0gICAgLCBpbnRsU2VnbWVudEl0ZXJhdG9ySGVhcENlbGxUeXBlKElzb0hlYXBDZWxs
VHlwZTo6Y3JlYXRlPEludGxTZWdtZW50SXRlcmF0b3I+KCkpCi0gICAgLCBpbnRsU2VnbWVudGVy
SGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6Y3JlYXRlPEludGxTZWdtZW50ZXI+KCkpCi0g
ICAgLCBpbnRsU2VnbWVudHNIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpjcmVhdGU8SW50
bFNlZ21lbnRzPigpKQotI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKLSAgICAsIHdlYkFzc2VtYmx5
Q29kZUJsb2NrSGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6Y3JlYXRlPEpTV2ViQXNzZW1i
bHlDb2RlQmxvY2s+KCkpCi0gICAgLCB3ZWJBc3NlbWJseUV4Y2VwdGlvbkhlYXBDZWxsVHlwZShJ
c29IZWFwQ2VsbFR5cGU6OmNyZWF0ZTxKU1dlYkFzc2VtYmx5RXhjZXB0aW9uPigpKQotICAgICwg
d2ViQXNzZW1ibHlGdW5jdGlvbkhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OmNyZWF0ZTxX
ZWJBc3NlbWJseUZ1bmN0aW9uPigpKQotICAgICwgd2ViQXNzZW1ibHlHbG9iYWxIZWFwQ2VsbFR5
cGUoSXNvSGVhcENlbGxUeXBlOjpjcmVhdGU8SlNXZWJBc3NlbWJseUdsb2JhbD4oKSkKLSAgICAs
IHdlYkFzc2VtYmx5SW5zdGFuY2VIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpjcmVhdGU8
SlNXZWJBc3NlbWJseUluc3RhbmNlPigpKQotICAgICwgd2ViQXNzZW1ibHlNZW1vcnlIZWFwQ2Vs
bFR5cGUoSXNvSGVhcENlbGxUeXBlOjpjcmVhdGU8SlNXZWJBc3NlbWJseU1lbW9yeT4oKSkKLSAg
ICAsIHdlYkFzc2VtYmx5TW9kdWxlSGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6Y3JlYXRl
PEpTV2ViQXNzZW1ibHlNb2R1bGU+KCkpCi0gICAgLCB3ZWJBc3NlbWJseU1vZHVsZVJlY29yZEhl
YXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OmNyZWF0ZTxXZWJBc3NlbWJseU1vZHVsZVJlY29y
ZD4oKSkKLSAgICAsIHdlYkFzc2VtYmx5VGFibGVIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBl
OjpjcmVhdGU8SlNXZWJBc3NlbWJseVRhYmxlPigpKQotICAgICwgd2ViQXNzZW1ibHlUYWdIZWFw
Q2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpjcmVhdGU8SlNXZWJBc3NlbWJseVRhZz4oKSkKLSNl
bmRpZgotICAgICwgcHJpbWl0aXZlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZSgiUHJpbWl0aXZlIEdp
Z2FjYWdlIEF1eGlsaWFyeSIsIGhlYXAsICphdXhpbGlhcnlIZWFwQ2VsbFR5cGUsIHByaW1pdGl2
ZUdpZ2FjYWdlQWxsb2NhdG9yLmdldCgpKSAvLyBIYXNoOjB4M2U3Y2Q3NjIKLSAgICAsIGpzVmFs
dWVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlKCJKU1ZhbHVlIEdpZ2FjYWdlIEF1eGlsaWFyeSIsIGhl
YXAsICphdXhpbGlhcnlIZWFwQ2VsbFR5cGUsIGpzVmFsdWVHaWdhY2FnZUFsbG9jYXRvci5nZXQo
KSkgLy8gSGFzaDoweDI0MWU5NDYKLSAgICAsIGltbXV0YWJsZUJ1dHRlcmZseUpTVmFsdWVHaWdh
Y2FnZUF1eGlsaWFyeVNwYWNlKCJJbW11dGFibGVCdXR0ZXJmbHkgR2lnYWNhZ2UgSlNDZWxsV2l0
aEluZGV4aW5nSGVhZGVyIiwgaGVhcCwgKmltbXV0YWJsZUJ1dHRlcmZseUhlYXBDZWxsVHlwZSwg
anNWYWx1ZUdpZ2FjYWdlQWxsb2NhdG9yLmdldCgpKSAvLyBIYXNoOjB4N2E5NDUzMDAKLSAgICAs
IGNlbGxTcGFjZSgiSlNDZWxsIiwgaGVhcCwgKmNlbGxIZWFwQ2VsbFR5cGUsIGZhc3RNYWxsb2NB
bGxvY2F0b3IuZ2V0KCkpIC8vIEhhc2g6MHhhZGZiNWE3OQotICAgICwgdmFyaWFibGVTaXplZENl
bGxTcGFjZSgiVmFyaWFibGUgU2l6ZWQgSlNDZWxsIiwgaGVhcCwgKmNlbGxIZWFwQ2VsbFR5cGUs
IGZhc3RNYWxsb2NBbGxvY2F0b3IuZ2V0KCkpIC8vIEhhc2g6MHhiY2Q3NjljYwotICAgICwgZGVz
dHJ1Y3RpYmxlT2JqZWN0U3BhY2UoIkpTRGVzdHJ1Y3RpYmxlT2JqZWN0IiwgaGVhcCwgKmRlc3Ry
dWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSwgZmFzdE1hbGxvY0FsbG9jYXRvci5nZXQoKSkgLy8g
SGFzaDoweDRmNWVkN2E5Ci0gICAgLCBhcnJheVNwYWNlIElTT19TVUJTUEFDRV9JTklUKGhlYXAs
ICpjZWxsSGVhcENlbGxUeXBlLCBKU0FycmF5KQotICAgICwgYmlnSW50U3BhY2UgSVNPX1NVQlNQ
QUNFX0lOSVQoaGVhcCwgKmNlbGxIZWFwQ2VsbFR5cGUsIEpTQmlnSW50KQotICAgICwgY2FsbGVl
U3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoaGVhcCwgKmNlbGxIZWFwQ2VsbFR5cGUsIEpTQ2FsbGVl
KQotICAgICwgY2xvbmVkQXJndW1lbnRzU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoaGVhcCwgKmNl
bGxIZWFwQ2VsbFR5cGUsIENsb25lZEFyZ3VtZW50cykKLSAgICAsIGN1c3RvbUdldHRlclNldHRl
clNwYWNlIElTT19TVUJTUEFDRV9JTklUKGhlYXAsICpjZWxsSGVhcENlbGxUeXBlLCBDdXN0b21H
ZXR0ZXJTZXR0ZXIpCi0gICAgLCBkYXRlSW5zdGFuY2VTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVCho
ZWFwLCAqZGF0ZUluc3RhbmNlSGVhcENlbGxUeXBlLCBEYXRlSW5zdGFuY2UpCi0gICAgLCBkb21B
dHRyaWJ1dGVHZXR0ZXJTZXR0ZXJTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVChoZWFwLCAqY2VsbEhl
YXBDZWxsVHlwZSwgRE9NQXR0cmlidXRlR2V0dGVyU2V0dGVyKQotICAgICwgZXhjZXB0aW9uU3Bh
Y2UgSVNPX1NVQlNQQUNFX0lOSVQoaGVhcCwgKmRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUs
IEV4Y2VwdGlvbikKLSAgICAsIGV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2VTcGFjZSBJU09fU1VC
U1BBQ0VfSU5JVChoZWFwLCAqY2VsbEhlYXBDZWxsVHlwZSwgRXhlY3V0YWJsZVRvQ29kZUJsb2Nr
RWRnZSkgLy8gSGFzaDoweDdiNzMwYjIwCi0gICAgLCBmdW5jdGlvblNwYWNlIElTT19TVUJTUEFD
RV9JTklUKGhlYXAsICpjZWxsSGVhcENlbGxUeXBlLCBKU0Z1bmN0aW9uKSAvLyBIYXNoOjB4ODAw
ZmNhNzIKLSAgICAsIGdldHRlclNldHRlclNwYWNlIElTT19TVUJTUEFDRV9JTklUKGhlYXAsICpj
ZWxsSGVhcENlbGxUeXBlLCBHZXR0ZXJTZXR0ZXIpCi0gICAgLCBnbG9iYWxMZXhpY2FsRW52aXJv
bm1lbnRTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVChoZWFwLCAqZ2xvYmFsTGV4aWNhbEVudmlyb25t
ZW50SGVhcENlbGxUeXBlLCBKU0dsb2JhbExleGljYWxFbnZpcm9ubWVudCkKLSAgICAsIGludGVy
bmFsRnVuY3Rpb25TcGFjZSBJU09fU1VCU1BBQ0VfSU5JVChoZWFwLCAqY2VsbEhlYXBDZWxsVHlw
ZSwgSW50ZXJuYWxGdW5jdGlvbikgLy8gSGFzaDoweGY4NDVjNDY0Ci0gICAgLCBqc1Byb3h5U3Bh
Y2UgSVNPX1NVQlNQQUNFX0lOSVQoaGVhcCwgKmNlbGxIZWFwQ2VsbFR5cGUsIEpTUHJveHkpCi0g
ICAgLCBuYXRpdmVFeGVjdXRhYmxlU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoaGVhcCwgKmRlc3Ry
dWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUsIE5hdGl2ZUV4ZWN1dGFibGUpIC8vIEhhc2g6MHg2NzU2
N2Y5NQotICAgICwgbnVtYmVyT2JqZWN0U3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoaGVhcCwgKmNl
bGxIZWFwQ2VsbFR5cGUsIE51bWJlck9iamVjdCkKLSAgICAsIHBsYWluT2JqZWN0U3BhY2UgSVNP
X1NVQlNQQUNFX0lOSVQoaGVhcCwgKmNlbGxIZWFwQ2VsbFR5cGUsIEpTTm9uRmluYWxPYmplY3Qp
IC8vIE1haW5seSB1c2VkIGZvciBwcm90b3R5cGVzLgotICAgICwgcHJvbWlzZVNwYWNlIElTT19T
VUJTUEFDRV9JTklUKGhlYXAsICpjZWxsSGVhcENlbGxUeXBlLCBKU1Byb21pc2UpCi0gICAgLCBw
cm9wZXJ0eU5hbWVFbnVtZXJhdG9yU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoaGVhcCwgKmNlbGxI
ZWFwQ2VsbFR5cGUsIEpTUHJvcGVydHlOYW1lRW51bWVyYXRvcikKLSAgICAsIHByb3BlcnR5VGFi
bGVTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVChoZWFwLCAqZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxs
VHlwZSwgUHJvcGVydHlUYWJsZSkgLy8gSGFzaDoweGM2YmM5ZjEyCi0gICAgLCByZWdFeHBTcGFj
ZSBJU09fU1VCU1BBQ0VfSU5JVChoZWFwLCAqZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZSwg
UmVnRXhwKQotICAgICwgcmVnRXhwT2JqZWN0U3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoaGVhcCwg
KmNlbGxIZWFwQ2VsbFR5cGUsIFJlZ0V4cE9iamVjdCkKLSAgICAsIHJvcGVTdHJpbmdTcGFjZSBJ
U09fU1VCU1BBQ0VfSU5JVChoZWFwLCAqc3RyaW5nSGVhcENlbGxUeXBlLCBKU1JvcGVTdHJpbmcp
Ci0gICAgLCBzY29wZWRBcmd1bWVudHNTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVChoZWFwLCAqY2Vs
bEhlYXBDZWxsVHlwZSwgU2NvcGVkQXJndW1lbnRzKQotICAgICwgc3BhcnNlQXJyYXlWYWx1ZU1h
cFNwYWNlIElTT19TVUJTUEFDRV9JTklUKGhlYXAsICpkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxU
eXBlLCBTcGFyc2VBcnJheVZhbHVlTWFwKQotICAgICwgc3RyaW5nU3BhY2UgSVNPX1NVQlNQQUNF
X0lOSVQoaGVhcCwgKnN0cmluZ0hlYXBDZWxsVHlwZSwgSlNTdHJpbmcpIC8vIEhhc2g6MHg5MGNm
NzU4ZgotICAgICwgc3RyaW5nT2JqZWN0U3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoaGVhcCwgKmNl
bGxIZWFwQ2VsbFR5cGUsIFN0cmluZ09iamVjdCkKLSAgICAsIHN0cnVjdHVyZUNoYWluU3BhY2Ug
SVNPX1NVQlNQQUNFX0lOSVQoaGVhcCwgKmNlbGxIZWFwQ2VsbFR5cGUsIFN0cnVjdHVyZUNoYWlu
KQotICAgICwgc3RydWN0dXJlUmFyZURhdGFTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVChoZWFwLCAq
ZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZSwgU3RydWN0dXJlUmFyZURhdGEpIC8vIEhhc2g6
MHhhY2E0ZTYyZAotICAgICwgc3RydWN0dXJlU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoaGVhcCwg
KmRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUsIFN0cnVjdHVyZSkgLy8gSGFzaDoweDFmMWJj
ZGNhCi0gICAgLCBicmFuZGVkU3RydWN0dXJlU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoaGVhcCwg
KmRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUsIEJyYW5kZWRTdHJ1Y3R1cmUpCi0gICAgLCBz
eW1ib2xUYWJsZVNwYWNlIElTT19TVUJTUEFDRV9JTklUKGhlYXAsICpkZXN0cnVjdGlibGVDZWxs
SGVhcENlbGxUeXBlLCBTeW1ib2xUYWJsZSkgLy8gSGFzaDoweGM1MjE1YWZkCi0gICAgLCBleGVj
dXRhYmxlVG9Db2RlQmxvY2tFZGdlc1dpdGhDb25zdHJhaW50cyhleGVjdXRhYmxlVG9Db2RlQmxv
Y2tFZGdlU3BhY2UpCi0gICAgLCBleGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlc1dpdGhGaW5hbGl6
ZXJzKGV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2VTcGFjZSkKLSAgICAsIGNvZGVCbG9ja1NwYWNl
IElTT19TVUJTUEFDRV9JTklUKGhlYXAsICpkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlLCBD
b2RlQmxvY2spIC8vIEhhc2g6MHg3N2U2NmVjOQotICAgICwgZnVuY3Rpb25FeGVjdXRhYmxlU3Bh
Y2UgSVNPX1NVQlNQQUNFX0lOSVQoaGVhcCwgKmRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUs
IEZ1bmN0aW9uRXhlY3V0YWJsZSkgLy8gSGFzaDoweDVkMTU4ZjMKLSAgICAsIHByb2dyYW1FeGVj
dXRhYmxlU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoaGVhcCwgKmRlc3RydWN0aWJsZUNlbGxIZWFw
Q2VsbFR5cGUsIFByb2dyYW1FeGVjdXRhYmxlKSAvLyBIYXNoOjB4NTI3Yzc3ZTcKLSAgICAsIHVu
bGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoaGVhcCwgKmRl
c3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUsIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKSAv
LyBIYXNoOjB4ZjZiODI4ZDkKICAgICAsIHZtVHlwZSh2bVR5cGUpCiAgICAgLCBjbGllbnREYXRh
KG51bGxwdHIpCiAgICAgLCB0b3BFbnRyeUZyYW1lKG51bGxwdHIpCkBAIC0xNTcyLDEzNyArMTM4
Nyw2IEBAIHZvaWQgVk06OmVuc3VyZVNoYWRvd0NoaWNrZW4oKQogICAgIG1fc2hhZG93Q2hpY2tl
biA9IG1ha2VVbmlxdWU8U2hhZG93Q2hpY2tlbj4oKTsKIH0KIAotI2RlZmluZSBEWU5BTUlDX0lT
T19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1cobmFtZSwgaGVhcENlbGxUeXBlLCB0eXBlKSBc
Ci0gICAgSXNvU3Vic3BhY2UqIFZNOjpuYW1lIyNTbG93KCkgXAotICAgIHsgXAotICAgICAgICBB
U1NFUlQoIW1fIyNuYW1lKTsgXAotICAgICAgICBhdXRvIHNwYWNlID0gbWFrZVVuaXF1ZTxJc29T
dWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQoaGVhcCwgaGVhcENlbGxUeXBlLCB0eXBlKTsgXAot
ICAgICAgICBXVEY6OnN0b3JlU3RvcmVGZW5jZSgpOyBcCi0gICAgICAgIG1fIyNuYW1lID0gV1RG
TW92ZShzcGFjZSk7IFwKLSAgICAgICAgcmV0dXJuIG1fIyNuYW1lLmdldCgpOyBcCi0gICAgfQot
Ci0KLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhhcGlHbG9iYWxPYmpl
Y3RTcGFjZSwgKmFwaUdsb2JhbE9iamVjdEhlYXBDZWxsVHlwZSwgSlNBUElHbG9iYWxPYmplY3Qp
Ci1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coYXBpVmFsdWVXcmFwcGVy
U3BhY2UsICpjZWxsSGVhcENlbGxUeXBlLCBKU0FQSVZhbHVlV3JhcHBlcikKLURZTkFNSUNfSVNP
X1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhhcnJheUJ1ZmZlclNwYWNlLCAqY2VsbEhlYXBD
ZWxsVHlwZSwgSlNBcnJheUJ1ZmZlcikKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1C
RVJfU0xPVyhhcnJheUl0ZXJhdG9yU3BhY2UsICpjZWxsSGVhcENlbGxUeXBlLCBKU0FycmF5SXRl
cmF0b3IpCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coYXN5bmNHZW5l
cmF0b3JTcGFjZSwgKmNlbGxIZWFwQ2VsbFR5cGUsIEpTQXN5bmNHZW5lcmF0b3IpCi1EWU5BTUlD
X0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coYmlnSW50NjRBcnJheVNwYWNlLCAqY2Vs
bEhlYXBDZWxsVHlwZSwgSlNCaWdJbnQ2NEFycmF5KQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVG
SU5FX01FTUJFUl9TTE9XKGJpZ0ludE9iamVjdFNwYWNlLCAqY2VsbEhlYXBDZWxsVHlwZSwgQmln
SW50T2JqZWN0KQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGJpZ1Vp
bnQ2NEFycmF5U3BhY2UsICpjZWxsSGVhcENlbGxUeXBlLCBKU0JpZ1VpbnQ2NEFycmF5KQotRFlO
QU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGJvb2xlYW5PYmplY3RTcGFjZSwg
KmNlbGxIZWFwQ2VsbFR5cGUsIEJvb2xlYW5PYmplY3QpCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9E
RUZJTkVfTUVNQkVSX1NMT1coYm91bmRGdW5jdGlvblNwYWNlLCAqY2VsbEhlYXBDZWxsVHlwZSwg
SlNCb3VuZEZ1bmN0aW9uKSAvLyBIYXNoOjB4ZDc5MTZkNDEKLURZTkFNSUNfSVNPX1NVQlNQQUNF
X0RFRklORV9NRU1CRVJfU0xPVyhjYWxsYmFja0NvbnN0cnVjdG9yU3BhY2UsICpjYWxsYmFja0Nv
bnN0cnVjdG9ySGVhcENlbGxUeXBlLCBKU0NhbGxiYWNrQ29uc3RydWN0b3IpCi1EWU5BTUlDX0lT
T19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coY2FsbGJhY2tHbG9iYWxPYmplY3RTcGFjZSwg
KmNhbGxiYWNrR2xvYmFsT2JqZWN0SGVhcENlbGxUeXBlLCBKU0NhbGxiYWNrT2JqZWN0PEpTR2xv
YmFsT2JqZWN0PikKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhjYWxs
YmFja0Z1bmN0aW9uU3BhY2UsICpjZWxsSGVhcENlbGxUeXBlLCBKU0NhbGxiYWNrRnVuY3Rpb24p
IC8vIEhhc2g6MHhlNzY0OGViYwotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9T
TE9XKGNhbGxiYWNrT2JqZWN0U3BhY2UsICpjYWxsYmFja09iamVjdEhlYXBDZWxsVHlwZSwgSlND
YWxsYmFja09iamVjdDxKU05vbkZpbmFsT2JqZWN0PikKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RF
RklORV9NRU1CRVJfU0xPVyhjdXN0b21HZXR0ZXJGdW5jdGlvblNwYWNlLCAqY3VzdG9tR2V0dGVy
RnVuY3Rpb25IZWFwQ2VsbFR5cGUsIEpTQ3VzdG9tR2V0dGVyRnVuY3Rpb24pCi1EWU5BTUlDX0lT
T19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coY3VzdG9tU2V0dGVyRnVuY3Rpb25TcGFjZSwg
KmN1c3RvbVNldHRlckZ1bmN0aW9uSGVhcENlbGxUeXBlLCBKU0N1c3RvbVNldHRlckZ1bmN0aW9u
KQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGRhdGFWaWV3U3BhY2Us
ICpjZWxsSGVhcENlbGxUeXBlLCBKU0RhdGFWaWV3KQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVG
SU5FX01FTUJFUl9TTE9XKGRlYnVnZ2VyU2NvcGVTcGFjZSwgKmNlbGxIZWFwQ2VsbFR5cGUsIERl
YnVnZ2VyU2NvcGUpCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coZXJy
b3JJbnN0YW5jZVNwYWNlLCAqZXJyb3JJbnN0YW5jZUhlYXBDZWxsVHlwZSwgRXJyb3JJbnN0YW5j
ZSkgLy8gSGFzaDoweDNmNDBkNGEKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJf
U0xPVyhmbG9hdDMyQXJyYXlTcGFjZSwgKmNlbGxIZWFwQ2VsbFR5cGUsIEpTRmxvYXQzMkFycmF5
KQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGZsb2F0NjRBcnJheVNw
YWNlLCAqY2VsbEhlYXBDZWxsVHlwZSwgSlNGbG9hdDY0QXJyYXkpCi1EWU5BTUlDX0lTT19TVUJT
UEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coZnVuY3Rpb25SYXJlRGF0YVNwYWNlLCAqZGVzdHJ1Y3Rp
YmxlQ2VsbEhlYXBDZWxsVHlwZSwgRnVuY3Rpb25SYXJlRGF0YSkKLURZTkFNSUNfSVNPX1NVQlNQ
QUNFX0RFRklORV9NRU1CRVJfU0xPVyhnZW5lcmF0b3JTcGFjZSwgKmNlbGxIZWFwQ2VsbFR5cGUs
IEpTR2VuZXJhdG9yKQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGds
b2JhbE9iamVjdFNwYWNlLCAqZ2xvYmFsT2JqZWN0SGVhcENlbGxUeXBlLCBKU0dsb2JhbE9iamVj
dCkKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhpbmplY3RlZFNjcmlw
dEhvc3RTcGFjZSwgKmluamVjdGVkU2NyaXB0SG9zdFNwYWNlSGVhcENlbGxUeXBlLCBJbnNwZWN0
b3I6OkpTSW5qZWN0ZWRTY3JpcHRIb3N0KQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01F
TUJFUl9TTE9XKGludDhBcnJheVNwYWNlLCAqY2VsbEhlYXBDZWxsVHlwZSwgSlNJbnQ4QXJyYXkp
Ci1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coaW50MTZBcnJheVNwYWNl
LCAqY2VsbEhlYXBDZWxsVHlwZSwgSlNJbnQxNkFycmF5KQotRFlOQU1JQ19JU09fU1VCU1BBQ0Vf
REVGSU5FX01FTUJFUl9TTE9XKGludDMyQXJyYXlTcGFjZSwgKmNlbGxIZWFwQ2VsbFR5cGUsIEpT
SW50MzJBcnJheSkKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhqYXZh
U2NyaXB0Q2FsbEZyYW1lU3BhY2UsICpqYXZhU2NyaXB0Q2FsbEZyYW1lSGVhcENlbGxUeXBlLCBJ
bnNwZWN0b3I6OkpTSmF2YVNjcmlwdENhbGxGcmFtZSkKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RF
RklORV9NRU1CRVJfU0xPVyhqc01vZHVsZVJlY29yZFNwYWNlLCAqanNNb2R1bGVSZWNvcmRIZWFw
Q2VsbFR5cGUsIEpTTW9kdWxlUmVjb3JkKQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01F
TUJFUl9TTE9XKG1hcEJ1Y2tldFNwYWNlLCAqY2VsbEhlYXBDZWxsVHlwZSwgSlNNYXA6OkJ1Y2tl
dFR5cGUpCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1cobWFwSXRlcmF0
b3JTcGFjZSwgKmNlbGxIZWFwQ2VsbFR5cGUsIEpTTWFwSXRlcmF0b3IpCi1EWU5BTUlDX0lTT19T
VUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1cobWFwU3BhY2UsICpjZWxsSGVhcENlbGxUeXBlLCBK
U01hcCkKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhtb2R1bGVOYW1l
c3BhY2VPYmplY3RTcGFjZSwgKm1vZHVsZU5hbWVzcGFjZU9iamVjdEhlYXBDZWxsVHlwZSwgSlNN
b2R1bGVOYW1lc3BhY2VPYmplY3QpCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVS
X1NMT1cobmF0aXZlU3RkRnVuY3Rpb25TcGFjZSwgKm5hdGl2ZVN0ZEZ1bmN0aW9uSGVhcENlbGxU
eXBlLCBKU05hdGl2ZVN0ZEZ1bmN0aW9uKSAvLyBIYXNoOjB4NzBlZDYxZTQKLURZTkFNSUNfSVNP
X1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhwcm94eU9iamVjdFNwYWNlLCAqY2VsbEhlYXBD
ZWxsVHlwZSwgUHJveHlPYmplY3QpCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVS
X1NMT1cocHJveHlSZXZva2VTcGFjZSwgKmNlbGxIZWFwQ2VsbFR5cGUsIFByb3h5UmV2b2tlKSAv
LyBIYXNoOjB4YjUwNmE5MzkKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xP
VyhzY29wZWRBcmd1bWVudHNUYWJsZVNwYWNlLCAqZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlw
ZSwgU2NvcGVkQXJndW1lbnRzVGFibGUpCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVN
QkVSX1NMT1coc2NyaXB0RmV0Y2hQYXJhbWV0ZXJzU3BhY2UsICpkZXN0cnVjdGlibGVDZWxsSGVh
cENlbGxUeXBlLCBKU1NjcmlwdEZldGNoUGFyYW1ldGVycykKLURZTkFNSUNfSVNPX1NVQlNQQUNF
X0RFRklORV9NRU1CRVJfU0xPVyhzY3JpcHRGZXRjaGVyU3BhY2UsICpkZXN0cnVjdGlibGVDZWxs
SGVhcENlbGxUeXBlLCBKU1NjcmlwdEZldGNoZXIpCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJ
TkVfTUVNQkVSX1NMT1coc2V0QnVja2V0U3BhY2UsICpjZWxsSGVhcENlbGxUeXBlLCBKU1NldDo6
QnVja2V0VHlwZSkKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhzZXRJ
dGVyYXRvclNwYWNlLCAqY2VsbEhlYXBDZWxsVHlwZSwgSlNTZXRJdGVyYXRvcikKLURZTkFNSUNf
SVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhzZXRTcGFjZSwgKmNlbGxIZWFwQ2VsbFR5
cGUsIEpTU2V0KQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHNoYWRv
d1JlYWxtU3BhY2UsICpjZWxsSGVhcENlbGxUeXBlLCBTaGFkb3dSZWFsbU9iamVjdCkKLURZTkFN
SUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhzdHJpY3RFdmFsQWN0aXZhdGlvblNw
YWNlLCAqY2VsbEhlYXBDZWxsVHlwZSwgU3RyaWN0RXZhbEFjdGl2YXRpb24pCi1EWU5BTUlDX0lT
T19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coc3RyaW5nSXRlcmF0b3JTcGFjZSwgKmNlbGxI
ZWFwQ2VsbFR5cGUsIEpTU3RyaW5nSXRlcmF0b3IpCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJ
TkVfTUVNQkVSX1NMT1coc291cmNlQ29kZVNwYWNlLCAqZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxs
VHlwZSwgSlNTb3VyY2VDb2RlKQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9T
TE9XKHN5bWJvbFNwYWNlLCAqZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZSwgU3ltYm9sKQot
RFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHN5bWJvbE9iamVjdFNwYWNl
LCAqY2VsbEhlYXBDZWxsVHlwZSwgU3ltYm9sT2JqZWN0KQotRFlOQU1JQ19JU09fU1VCU1BBQ0Vf
REVGSU5FX01FTUJFUl9TTE9XKHRlbXBsYXRlT2JqZWN0RGVzY3JpcHRvclNwYWNlLCAqZGVzdHJ1
Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZSwgSlNUZW1wbGF0ZU9iamVjdERlc2NyaXB0b3IpCi1EWU5B
TUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1codGVtcG9yYWxDYWxlbmRhclNwYWNl
LCAqY2VsbEhlYXBDZWxsVHlwZSwgVGVtcG9yYWxDYWxlbmRhcikKLURZTkFNSUNfSVNPX1NVQlNQ
QUNFX0RFRklORV9NRU1CRVJfU0xPVyh0ZW1wb3JhbER1cmF0aW9uU3BhY2UsICpjZWxsSGVhcENl
bGxUeXBlLCBUZW1wb3JhbER1cmF0aW9uKQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01F
TUJFUl9TTE9XKHRlbXBvcmFsSW5zdGFudFNwYWNlLCAqY2VsbEhlYXBDZWxsVHlwZSwgVGVtcG9y
YWxJbnN0YW50KQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHRlbXBv
cmFsUGxhaW5UaW1lU3BhY2UsICpjZWxsSGVhcENlbGxUeXBlLCBUZW1wb3JhbFBsYWluVGltZSkK
LURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh0ZW1wb3JhbFRpbWVab25l
U3BhY2UsICpjZWxsSGVhcENlbGxUeXBlLCBUZW1wb3JhbFRpbWVab25lKQotRFlOQU1JQ19JU09f
U1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHVpbnQ4QXJyYXlTcGFjZSwgKmNlbGxIZWFwQ2Vs
bFR5cGUsIEpTVWludDhBcnJheSkKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJf
U0xPVyh1aW50OENsYW1wZWRBcnJheVNwYWNlLCAqY2VsbEhlYXBDZWxsVHlwZSwgSlNVaW50OENs
YW1wZWRBcnJheSkKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh1aW50
MTZBcnJheVNwYWNlLCAqY2VsbEhlYXBDZWxsVHlwZSwgSlNVaW50MTZBcnJheSkKLURZTkFNSUNf
SVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh1aW50MzJBcnJheVNwYWNlLCAqY2VsbEhl
YXBDZWxsVHlwZSwgSlNVaW50MzJBcnJheSkKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9N
RU1CRVJfU0xPVyh1bmxpbmtlZEV2YWxDb2RlQmxvY2tTcGFjZSwgKmRlc3RydWN0aWJsZUNlbGxI
ZWFwQ2VsbFR5cGUsIFVubGlua2VkRXZhbENvZGVCbG9jaykKLURZTkFNSUNfSVNPX1NVQlNQQUNF
X0RFRklORV9NRU1CRVJfU0xPVyh1bmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrU3BhY2UsICpkZXN0
cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlLCBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKQotRFlO
QU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHVubGlua2VkTW9kdWxlUHJvZ3Jh
bUNvZGVCbG9ja1NwYWNlLCAqZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZSwgVW5saW5rZWRN
b2R1bGVQcm9ncmFtQ29kZUJsb2NrKQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJF
Ul9TTE9XKHVubGlua2VkUHJvZ3JhbUNvZGVCbG9ja1NwYWNlLCAqZGVzdHJ1Y3RpYmxlQ2VsbEhl
YXBDZWxsVHlwZSwgVW5saW5rZWRQcm9ncmFtQ29kZUJsb2NrKQotRFlOQU1JQ19JU09fU1VCU1BB
Q0VfREVGSU5FX01FTUJFUl9TTE9XKHdlYWtNYXBTcGFjZSwgKndlYWtNYXBIZWFwQ2VsbFR5cGUs
IEpTV2Vha01hcCkgLy8gSGFzaDoweDY2MmIxMmEzCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJ
TkVfTUVNQkVSX1NMT1cod2Vha1NldFNwYWNlLCAqd2Vha1NldEhlYXBDZWxsVHlwZSwgSlNXZWFr
U2V0KSAvLyBIYXNoOjB4NGM3ODFiMzAKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1C
RVJfU0xPVyh3ZWFrT2JqZWN0UmVmU3BhY2UsICpjZWxsSGVhcENlbGxUeXBlLCBKU1dlYWtPYmpl
Y3RSZWYpIC8vIEhhc2g6MHg4ZWM2OGYxZgotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01F
TUJFUl9TTE9XKHdpdGhTY29wZVNwYWNlLCAqY2VsbEhlYXBDZWxsVHlwZSwgSlNXaXRoU2NvcGUp
Ci1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coZmluYWxpemF0aW9uUmVn
aXN0cnlTcGFjZSwgKmZpbmFsaXphdGlvblJlZ2lzdHJ5Q2VsbFR5cGUsIEpTRmluYWxpemF0aW9u
UmVnaXN0cnkpCi0jaWYgSlNDX09CSkNfQVBJX0VOQUJMRUQKLURZTkFNSUNfSVNPX1NVQlNQQUNF
X0RFRklORV9NRU1CRVJfU0xPVyhhcGlXcmFwcGVyT2JqZWN0U3BhY2UsICphcGlXcmFwcGVyT2Jq
ZWN0SGVhcENlbGxUeXBlLCBKU0NhbGxiYWNrT2JqZWN0PEpTQVBJV3JhcHBlck9iamVjdD4pCi1E
WU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1cob2JqQ0NhbGxiYWNrRnVuY3Rp
b25TcGFjZSwgKm9iakNDYWxsYmFja0Z1bmN0aW9uSGVhcENlbGxUeXBlLCBPYmpDQ2FsbGJhY2tG
dW5jdGlvbikgLy8gSGFzaDoweDEwZjYxMGI4Ci0jZW5kaWYKLSNpZmRlZiBKU0NfR0xJQl9BUElf
RU5BQkxFRAotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGFwaVdyYXBw
ZXJPYmplY3RTcGFjZSwgKmFwaVdyYXBwZXJPYmplY3RIZWFwQ2VsbFR5cGUsIEpTQ2FsbGJhY2tP
YmplY3Q8SlNBUElXcmFwcGVyT2JqZWN0PikKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9N
RU1CRVJfU0xPVyhqc2NDYWxsYmFja0Z1bmN0aW9uU3BhY2UsICpqc2NDYWxsYmFja0Z1bmN0aW9u
SGVhcENlbGxUeXBlLCBKU0NDYWxsYmFja0Z1bmN0aW9uKQotRFlOQU1JQ19JU09fU1VCU1BBQ0Vf
REVGSU5FX01FTUJFUl9TTE9XKGNhbGxiYWNrQVBJV3JhcHBlckdsb2JhbE9iamVjdFNwYWNlLCAq
Y2FsbGJhY2tBUElXcmFwcGVyR2xvYmFsT2JqZWN0SGVhcENlbGxUeXBlLCBKU0NhbGxiYWNrT2Jq
ZWN0PEpTQVBJV3JhcHBlckdsb2JhbE9iamVjdD4pCi0jZW5kaWYKLURZTkFNSUNfSVNPX1NVQlNQ
QUNFX0RFRklORV9NRU1CRVJfU0xPVyhpbnRsQ29sbGF0b3JTcGFjZSwgKmludGxDb2xsYXRvckhl
YXBDZWxsVHlwZSwgSW50bENvbGxhdG9yKQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01F
TUJFUl9TTE9XKGludGxEYXRlVGltZUZvcm1hdFNwYWNlLCAqaW50bERhdGVUaW1lRm9ybWF0SGVh
cENlbGxUeXBlLCBJbnRsRGF0ZVRpbWVGb3JtYXQpCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJ
TkVfTUVNQkVSX1NMT1coaW50bERpc3BsYXlOYW1lc1NwYWNlLCAqaW50bERpc3BsYXlOYW1lc0hl
YXBDZWxsVHlwZSwgSW50bERpc3BsYXlOYW1lcykKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklO
RV9NRU1CRVJfU0xPVyhpbnRsTGlzdEZvcm1hdFNwYWNlLCAqaW50bExpc3RGb3JtYXRIZWFwQ2Vs
bFR5cGUsIEludGxMaXN0Rm9ybWF0KQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJF
Ul9TTE9XKGludGxMb2NhbGVTcGFjZSwgKmludGxMb2NhbGVIZWFwQ2VsbFR5cGUsIEludGxMb2Nh
bGUpCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coaW50bE51bWJlckZv
cm1hdFNwYWNlLCAqaW50bE51bWJlckZvcm1hdEhlYXBDZWxsVHlwZSwgSW50bE51bWJlckZvcm1h
dCkKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhpbnRsUGx1cmFsUnVs
ZXNTcGFjZSwgKmludGxQbHVyYWxSdWxlc0hlYXBDZWxsVHlwZSwgSW50bFBsdXJhbFJ1bGVzKQot
RFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGludGxSZWxhdGl2ZVRpbWVG
b3JtYXRTcGFjZSwgKmludGxSZWxhdGl2ZVRpbWVGb3JtYXRIZWFwQ2VsbFR5cGUsIEludGxSZWxh
dGl2ZVRpbWVGb3JtYXQpCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1co
aW50bFNlZ21lbnRJdGVyYXRvclNwYWNlLCAqaW50bFNlZ21lbnRJdGVyYXRvckhlYXBDZWxsVHlw
ZSwgSW50bFNlZ21lbnRJdGVyYXRvcikKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1C
RVJfU0xPVyhpbnRsU2VnbWVudGVyU3BhY2UsICppbnRsU2VnbWVudGVySGVhcENlbGxUeXBlLCBJ
bnRsU2VnbWVudGVyKQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGlu
dGxTZWdtZW50c1NwYWNlLCAqaW50bFNlZ21lbnRzSGVhcENlbGxUeXBlLCBJbnRsU2VnbWVudHMp
Ci0jaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01F
TUJFUl9TTE9XKGpzVG9XYXNtSUNDYWxsZWVTcGFjZSwgKmNlbGxIZWFwQ2VsbFR5cGUsIEpTVG9X
YXNtSUNDYWxsZWUpCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1cod2Vi
QXNzZW1ibHlDb2RlQmxvY2tTcGFjZSwgKndlYkFzc2VtYmx5Q29kZUJsb2NrSGVhcENlbGxUeXBl
LCBKU1dlYkFzc2VtYmx5Q29kZUJsb2NrKSAvLyBIYXNoOjB4OWFkOTk1Y2QKLURZTkFNSUNfSVNP
X1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh3ZWJBc3NlbWJseUV4Y2VwdGlvblNwYWNlLCAq
d2ViQXNzZW1ibHlFeGNlcHRpb25IZWFwQ2VsbFR5cGUsIEpTV2ViQXNzZW1ibHlFeGNlcHRpb24p
Ci1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1cod2ViQXNzZW1ibHlGdW5j
dGlvblNwYWNlLCAqd2ViQXNzZW1ibHlGdW5jdGlvbkhlYXBDZWxsVHlwZSwgV2ViQXNzZW1ibHlG
dW5jdGlvbikgLy8gSGFzaDoweDhiN2MzMmRiCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVf
TUVNQkVSX1NMT1cod2ViQXNzZW1ibHlHbG9iYWxTcGFjZSwgKndlYkFzc2VtYmx5R2xvYmFsSGVh
cENlbGxUeXBlLCBKU1dlYkFzc2VtYmx5R2xvYmFsKQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVG
SU5FX01FTUJFUl9TTE9XKHdlYkFzc2VtYmx5SW5zdGFuY2VTcGFjZSwgKndlYkFzc2VtYmx5SW5z
dGFuY2VIZWFwQ2VsbFR5cGUsIEpTV2ViQXNzZW1ibHlJbnN0YW5jZSkKLURZTkFNSUNfSVNPX1NV
QlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh3ZWJBc3NlbWJseU1lbW9yeVNwYWNlLCAqd2ViQXNz
ZW1ibHlNZW1vcnlIZWFwQ2VsbFR5cGUsIEpTV2ViQXNzZW1ibHlNZW1vcnkpCi1EWU5BTUlDX0lT
T19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1cod2ViQXNzZW1ibHlNb2R1bGVTcGFjZSwgKndl
YkFzc2VtYmx5TW9kdWxlSGVhcENlbGxUeXBlLCBKU1dlYkFzc2VtYmx5TW9kdWxlKQotRFlOQU1J
Q19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHdlYkFzc2VtYmx5TW9kdWxlUmVjb3Jk
U3BhY2UsICp3ZWJBc3NlbWJseU1vZHVsZVJlY29yZEhlYXBDZWxsVHlwZSwgV2ViQXNzZW1ibHlN
b2R1bGVSZWNvcmQpCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1cod2Vi
QXNzZW1ibHlUYWJsZVNwYWNlLCAqd2ViQXNzZW1ibHlUYWJsZUhlYXBDZWxsVHlwZSwgSlNXZWJB
c3NlbWJseVRhYmxlKQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHdl
YkFzc2VtYmx5VGFnU3BhY2UsICp3ZWJBc3NlbWJseVRhZ0hlYXBDZWxsVHlwZSwgSlNXZWJBc3Nl
bWJseVRhZykKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh3ZWJBc3Nl
bWJseVdyYXBwZXJGdW5jdGlvblNwYWNlLCAqY2VsbEhlYXBDZWxsVHlwZSwgV2ViQXNzZW1ibHlX
cmFwcGVyRnVuY3Rpb24pIC8vIEhhc2g6MHhkNGE1ZmYwMQotI2VuZGlmCi0KLSN1bmRlZiBEWU5B
TUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1cKLQotI2RlZmluZSBEWU5BTUlDX1NQ
QUNFX0FORF9TRVRfREVGSU5FX01FTUJFUl9TTE9XKG5hbWUsIGhlYXBDZWxsVHlwZSwgdHlwZSkg
XAotICAgIElzb1N1YnNwYWNlKiBWTTo6bmFtZSMjU2xvdygpIFwKLSAgICB7IFwKLSAgICAgICAg
QVNTRVJUKCFtXyMjbmFtZSk7IFwKLSAgICAgICAgYXV0byBzcGFjZSA9IG1ha2VVbmlxdWU8U3Bh
Y2VBbmRTZXQ+IElTT19TVUJTUEFDRV9JTklUKGhlYXAsIGhlYXBDZWxsVHlwZSwgdHlwZSk7IFwK
LSAgICAgICAgV1RGOjpzdG9yZVN0b3JlRmVuY2UoKTsgXAotICAgICAgICBtXyMjbmFtZSA9IFdU
Rk1vdmUoc3BhY2UpOyBcCi0gICAgICAgIHJldHVybiAmbV8jI25hbWUtPnNwYWNlOyBcCi0gICAg
fQotCi1EWU5BTUlDX1NQQUNFX0FORF9TRVRfREVGSU5FX01FTUJFUl9TTE9XKGV2YWxFeGVjdXRh
YmxlU3BhY2UsICpkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlLCBFdmFsRXhlY3V0YWJsZSkg
Ly8gSGFzaDoweDk1OGUzZTlkCi1EWU5BTUlDX1NQQUNFX0FORF9TRVRfREVGSU5FX01FTUJFUl9T
TE9XKG1vZHVsZVByb2dyYW1FeGVjdXRhYmxlU3BhY2UsICpkZXN0cnVjdGlibGVDZWxsSGVhcENl
bGxUeXBlLCBNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZSkgLy8gSGFzaDoweDY1MDZmYTNjCi0KLSN1
bmRlZiBEWU5BTUlDX1NQQUNFX0FORF9TRVRfREVGSU5FX01FTUJFUl9TTE9XCi0KIEpTQ2VsbCog
Vk06OnNlbnRpbmVsU2V0QnVja2V0U2xvdygpCiB7CiAgICAgQVNTRVJUKCFtX3NlbnRpbmVsU2V0
QnVja2V0KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAkocmV2aXNpb24gMjg2
MDk1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAkod29ya2luZyBjb3B5
KQpAQCAtMjgsMjggKzI4LDIzIEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiQ2FsbERh
dGEuaCIKICNpbmNsdWRlICJDYWxsZWVCaXRzLmgiCiAjaW5jbHVkZSAiQ29kZVNwZWNpYWxpemF0
aW9uS2luZC5oIgotI2luY2x1ZGUgIkNvbXBsZXRlU3Vic3BhY2UuaCIKICNpbmNsdWRlICJDb25j
dXJyZW50SlNMb2NrLmgiCiAjaW5jbHVkZSAiREZHRG9lc0dDQ2hlY2suaCIKICNpbmNsdWRlICJE
ZWxldGVBbGxDb2RlRWZmb3J0LmgiCi0jaW5jbHVkZSAiRGlzYWxsb3dWTUVudHJ5LmgiCiAjaW5j
bHVkZSAiRXhjZXB0aW9uRXZlbnRMb2NhdGlvbi5oIgogI2luY2x1ZGUgIkZ1bmN0aW9uSGFzRXhl
Y3V0ZWRDYWNoZS5oIgotI2luY2x1ZGUgIkZ1enplckFnZW50LmgiCiAjaW5jbHVkZSAiSGVhcC5o
IgogI2luY2x1ZGUgIkludGVncml0eS5oIgogI2luY2x1ZGUgIkludHJpbnNpYy5oIgotI2luY2x1
ZGUgIklzb0NlbGxTZXQuaCIKLSNpbmNsdWRlICJJc29TdWJzcGFjZS5oIgogI2luY2x1ZGUgIkpT
Q0pTVmFsdWUuaCIKICNpbmNsdWRlICJKU0RhdGVNYXRoLmgiCiAjaW5jbHVkZSAiSlNMb2NrLmgi
CiAjaW5jbHVkZSAiSlNPTkF0b21TdHJpbmdDYWNoZS5oIgogI2luY2x1ZGUgIk1hY3JvQXNzZW1i
bGVyQ29kZVJlZi5oIgogI2luY2x1ZGUgIk1pY3JvdGFzay5oIgorI2luY2x1ZGUgIk5hdGl2ZUZ1
bmN0aW9uLmgiCiAjaW5jbHVkZSAiTnVtZXJpY1N0cmluZ3MuaCIKICNpbmNsdWRlICJTbWFsbFN0
cmluZ3MuaCIKICNpbmNsdWRlICJTdHJvbmcuaCIKQEAgLTU4LDEwICs1Myw4IEBACiAjaW5jbHVk
ZSAiVGh1bmtHZW5lcmF0b3IuaCIKICNpbmNsdWRlICJWTVRyYXBzLmgiCiAjaW5jbHVkZSAiV2Fz
bUNvbnRleHQuaCIKLSNpbmNsdWRlICJXYXRjaHBvaW50LmgiCiAjaW5jbHVkZSA8d3RmL0J1bXBQ
b2ludGVyQWxsb2NhdG9yLmg+CiAjaW5jbHVkZSA8d3RmL0NoZWNrZWRBcml0aG1ldGljLmg+Ci0j
aW5jbHVkZSA8d3RmL0RhdGVNYXRoLmg+CiAjaW5jbHVkZSA8d3RmL0RlcXVlLmg+CiAjaW5jbHVk
ZSA8d3RmL0RvdWJseUxpbmtlZExpc3QuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgpAQCAt
NjksMTEgKzYyLDkgQEAKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9I
YXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL1NldEZvclNjb3BlLmg+Ci0jaW5jbHVkZSA8d3RmL1N0
YWNrQm91bmRzLmg+CiAjaW5jbHVkZSA8d3RmL1N0YWNrUG9pbnRlci5oPgogI2luY2x1ZGUgPHd0
Zi9TdG9wd2F0Y2guaD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQuaD4KLSNp
bmNsdWRlIDx3dGYvVGhyZWFkU3BlY2lmaWMuaD4KICNpbmNsdWRlIDx3dGYvVW5pcXVlQXJyYXku
aD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TeW1ib2xSZWdpc3RyeS5oPgogI2luY2x1ZGUgPHd0Zi90
ZXh0L1dURlN0cmluZy5oPgpAQCAtODEsMTAgKzcyLDYgQEAKICNpbmNsdWRlIDx3dGYvTGlzdEhh
c2hTZXQuaD4KICNlbmRpZgogCi0jaWYgRU5BQkxFKEVYQ0VQVElPTl9TQ09QRV9WRVJJRklDQVRJ
T04pCi0jaW5jbHVkZSA8d3RmL1N0YWNrVHJhY2UuaD4KLSNlbmRpZgotCiAvLyBFbmFibGUgdGhl
IE9iamVjdGl2ZS1DIEFQSSBmb3IgcGxhdGZvcm1zIHdpdGggYSBtb2Rlcm4gcnVudGltZS4gVGhp
cyBoYXMgdG8gbWF0Y2ggZXhhY3RseSB3aGF0IHdlCiAvLyBoYXZlIGluIEpTQmFzZS5oLgogI2lm
ICFkZWZpbmVkKEpTQ19PQkpDX0FQSV9FTkFCTEVEKQpAQCAtOTgsMTYgKzg1LDE3IEBACiBuYW1l
c3BhY2UgV1RGIHsKIGNsYXNzIFJ1bkxvb3A7CiBjbGFzcyBTaW1wbGVTdGF0czsKK2NsYXNzIFN0
YWNrVHJhY2U7CiB9IC8vIG5hbWVzcGFjZSBXVEYKIHVzaW5nIFdURjo6U2ltcGxlU3RhdHM7Cit1
c2luZyBXVEY6OlN0YWNrVHJhY2U7CiAKIG5hbWVzcGFjZSBKU0MgewogCi1jbGFzcyBCYXNpY0Js
b2NrTG9jYXRpb247CitjbGFzcyBBcmdMaXN0OwogY2xhc3MgQnVpbHRpbkV4ZWN1dGFibGVzOwog
Y2xhc3MgQnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeTsKIGNsYXNzIENhbGxGcmFtZTsKLWNsYXNz
IENhbGxMaW5rSW5mbzsKIGVudW0gY2xhc3MgQ2FsbE1vZGU7CiBzdHJ1Y3QgQ2hlY2twb2ludE9T
UkV4aXRTaWRlU3RhdGU7CiBjbGFzcyBDb2RlQmxvY2s7CkBAIC0xMTYsMTAxICsxMDQsNDEgQEAg
Y2xhc3MgQ29tbW9uSWRlbnRpZmllcnM7CiBjbGFzcyBDb21wYWN0VERaRW52aXJvbm1lbnRNYXA7
CiBjbGFzcyBDb25zZXJ2YXRpdmVSb290czsKIGNsYXNzIENvbnRyb2xGbG93UHJvZmlsZXI7Ci1j
bGFzcyBDdXN0b21HZXR0ZXJTZXR0ZXI7Ci1jbGFzcyBET01BdHRyaWJ1dGVHZXR0ZXJTZXR0ZXI7
Ci1jbGFzcyBEYXRlSW5zdGFuY2U7Ci1jbGFzcyBFcnJvckluc3RhbmNlOwogY2xhc3MgRXhjZXB0
aW9uOwogY2xhc3MgRXhjZXB0aW9uU2NvcGU7Ci1jbGFzcyBGYXN0TWFsbG9jQWxpZ25lZE1lbW9y
eUFsbG9jYXRvcjsKLWNsYXNzIEdpZ2FjYWdlQWxpZ25lZE1lbW9yeUFsbG9jYXRvcjsKLWNsYXNz
IEhhbmRsZVN0YWNrOworY2xhc3MgRnV6emVyQWdlbnQ7CiBjbGFzcyBIYXNPd25Qcm9wZXJ0eUNh
Y2hlOwogY2xhc3MgSGVhcEFuYWx5emVyOwogY2xhc3MgSGVhcFByb2ZpbGVyOwotY2xhc3MgSWRl
bnRpZmllcjsKIGNsYXNzIEludGVycHJldGVyOwogY2xhc3MgSW50bENhY2hlOwotY2xhc3MgSW50
bENvbGxhdG9yOwotY2xhc3MgSW50bERhdGVUaW1lRm9ybWF0OwotY2xhc3MgSW50bERpc3BsYXlO
YW1lczsKLWNsYXNzIEludGxMaXN0Rm9ybWF0OwotY2xhc3MgSW50bExvY2FsZTsKLWNsYXNzIElu
dGxOdW1iZXJGb3JtYXQ7Ci1jbGFzcyBJbnRsUGx1cmFsUnVsZXM7Ci1jbGFzcyBJbnRsUmVsYXRp
dmVUaW1lRm9ybWF0OwotY2xhc3MgSW50bFNlZ21lbnRJdGVyYXRvcjsKLWNsYXNzIEludGxTZWdt
ZW50ZXI7Ci1jbGFzcyBJbnRsU2VnbWVudHM7Ci1jbGFzcyBKU0FQSUdsb2JhbE9iamVjdDsKLWNs
YXNzIEpTQVBJV3JhcHBlckdsb2JhbE9iamVjdDsKLWNsYXNzIEpTQVBJV3JhcHBlck9iamVjdDsK
LWNsYXNzIEpTQ0NhbGxiYWNrRnVuY3Rpb247Ci1jbGFzcyBKU0NhbGxiYWNrQ29uc3RydWN0b3I7
CiBjbGFzcyBKU0Rlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZTsKIGNsYXNzIEpTR2xvYmFs
T2JqZWN0OwotY2xhc3MgSlNHbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQ7Ci1jbGFzcyBKU01vZHVs
ZU5hbWVzcGFjZU9iamVjdDsKLWNsYXNzIEpTTW9kdWxlUmVjb3JkOwotY2xhc3MgSlNOYXRpdmVT
dGRGdW5jdGlvbjsKLWNsYXNzIEpTTm9uRmluYWxPYmplY3Q7CiBjbGFzcyBKU09iamVjdDsKIGNs
YXNzIEpTUHJvbWlzZTsKIGNsYXNzIEpTUHJvcGVydHlOYW1lRW51bWVyYXRvcjsKLWNsYXNzIEpT
UnVuTG9vcFRpbWVyOwotY2xhc3MgSlNXZWFrTWFwOwotY2xhc3MgSlNXZWFrU2V0OwotY2xhc3Mg
SlNXZWJBc3NlbWJseUNvZGVCbG9jazsKLWNsYXNzIEpTV2ViQXNzZW1ibHlHbG9iYWw7Ci1jbGFz
cyBKU1dlYkFzc2VtYmx5SW5zdGFuY2U7Ci1jbGFzcyBKU1dlYkFzc2VtYmx5TWVtb3J5OwotY2xh
c3MgSlNXZWJBc3NlbWJseU1vZHVsZTsKLWNsYXNzIEpTV2ViQXNzZW1ibHlUYWJsZTsKIGNsYXNz
IEpJVFNpemVTdGF0aXN0aWNzOwogY2xhc3MgSklUVGh1bmtzOwotY2xhc3MgTExJbnRPZmZzZXRz
RXh0cmFjdG9yOwogY2xhc3MgTmF0aXZlRXhlY3V0YWJsZTsKLWNsYXNzIE9iakNDYWxsYmFja0Z1
bmN0aW9uOwogY2xhc3MgRGVmZXJyZWRXb3JrVGltZXI7CiBjbGFzcyBSZWdFeHA7CiBjbGFzcyBS
ZWdFeHBDYWNoZTsKIGNsYXNzIFJlZ2lzdGVyOwotY2xhc3MgUmVnaXN0ZXJBdE9mZnNldExpc3Q7
CiAjaWYgRU5BQkxFKFNBTVBMSU5HX1BST0ZJTEVSKQogY2xhc3MgU2FtcGxpbmdQcm9maWxlcjsK
ICNlbmRpZgogY2xhc3MgU2hhZG93Q2hpY2tlbjsKIGNsYXNzIFNoYXJlZEpJVFN0dWJTZXQ7Ci1j
bGFzcyBTY3JpcHRFeGVjdXRhYmxlOwogY2xhc3MgU291cmNlUHJvdmlkZXI7CiBjbGFzcyBTb3Vy
Y2VQcm92aWRlckNhY2hlOwotY2xhc3MgU3RhY2tGcmFtZTsKIGNsYXNzIFN0cnVjdHVyZTsKLSNp
ZiBFTkFCTEUoUkVHRVhQX1RSQUNJTkcpCi1jbGFzcyBSZWdFeHA7Ci0jZW5kaWYKIGNsYXNzIFN5
bWJvbDsKLWNsYXNzIFRlbXBvcmFsRHVyYXRpb247Ci1jbGFzcyBUZW1wb3JhbEluc3RhbnQ7CiBj
bGFzcyBUeXBlZEFycmF5Q29udHJvbGxlcjsKLWNsYXNzIFVubGlua2VkQ29kZUJsb2NrOwotY2xh
c3MgVW5saW5rZWRFdmFsQ29kZUJsb2NrOwotY2xhc3MgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFi
bGU7Ci1jbGFzcyBVbmxpbmtlZFByb2dyYW1Db2RlQmxvY2s7Ci1jbGFzcyBVbmxpbmtlZE1vZHVs
ZVByb2dyYW1Db2RlQmxvY2s7Ci1jbGFzcyBWaXJ0dWFsUmVnaXN0ZXI7CiBjbGFzcyBWTUVudHJ5
U2NvcGU7Ci1jbGFzcyBUZW1wb3JhbENhbGVuZGFyOwotY2xhc3MgVGVtcG9yYWxQbGFpblRpbWU7
Ci1jbGFzcyBUZW1wb3JhbFRpbWVab25lOwotY2xhc3MgVG9wTGV2ZWxHbG9iYWxPYmplY3RTY29w
ZTsKIGNsYXNzIFR5cGVQcm9maWxlcjsKIGNsYXNzIFR5cGVQcm9maWxlckxvZzsKIGNsYXNzIFdh
dGNoZG9nOwotY2xhc3MgV2F0Y2hwb2ludDsKIGNsYXNzIFdhdGNocG9pbnRTZXQ7Ci1jbGFzcyBX
ZWJBc3NlbWJseUZ1bmN0aW9uOwotY2xhc3MgV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQ7CiAKICNp
ZiBFTkFCTEUoREZHX0pJVCkgJiYgQVNTRVJUX0VOQUJMRUQKICNkZWZpbmUgRU5BQkxFX0RGR19E
T0VTX0dDX1ZBTElEQVRJT04gMQpAQCAtMjIwLDEwICsxNDgsNiBAQCBjbGFzcyBXZWJBc3NlbWJs
eU1vZHVsZVJlY29yZDsKIAogY29uc3RleHByIGJvb2wgdmFsaWRhdGVERkdEb2VzR0MgPSBFTkFC
TEVfREZHX0RPRVNfR0NfVkFMSURBVElPTjsKIAotY2xhc3MgSXNvSGVhcENlbGxUeXBlOwotdGVt
cGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGU+IGNsYXNzIElzb0lubGluZWRIZWFwQ2VsbFR5cGU7Ci10
ZW1wbGF0ZTx0eXBlbmFtZSBQYXJlbnQ+IGNsYXNzIEpTQ2FsbGJhY2tPYmplY3Q7Ci0KICNpZiBF
TkFCTEUoRlRMX0pJVCkKIG5hbWVzcGFjZSBGVEwgewogY2xhc3MgVGh1bmtzOwpAQCAtMjM1LDE0
ICsxNTksOSBAQCBjbGFzcyBEYXRhYmFzZTsKIG5hbWVzcGFjZSBET01KSVQgewogY2xhc3MgU2ln
bmF0dXJlOwogfQotbmFtZXNwYWNlIFlhcnIgewotY2xhc3MgTWF0Y2hpbmdDb250ZXh0SG9sZGVy
OwotfQogCiBzdHJ1Y3QgRW50cnlGcmFtZTsKLXN0cnVjdCBIYXNoVGFibGU7CiBzdHJ1Y3QgSW5z
dHJ1Y3Rpb247Ci1zdHJ1Y3QgVmFsdWVQcm9maWxlOwogCiBjbGFzcyBRdWV1ZWRUYXNrIHsKICAg
ICBXVEZfTUFLRV9OT05DT1BZQUJMRShRdWV1ZWRUYXNrKTsKQEAgLTI2MSw4ICsxODAsNiBAQCBw
cml2YXRlOgogICAgIFJlZjxNaWNyb3Rhc2s+IG1fbWljcm90YXNrOwogfTsKIAotY2xhc3MgQ29u
c2VydmF0aXZlUm9vdHM7Ci0KIERFQ0xBUkVfQUxMT0NBVE9SX1dJVEhfSEVBUF9JREVOVElGSUVS
KFZNKTsKIAogI2lmIENPTVBJTEVSKE1TVkMpCkBAIC0zNTcsMTEgKzI3NCw3IEBAIHB1YmxpYzoK
ICNlbmRpZgogCiAgICAgRnV6emVyQWdlbnQqIGZ1enplckFnZW50KCkgY29uc3QgeyByZXR1cm4g
bV9mdXp6ZXJBZ2VudC5nZXQoKTsgfQotICAgIHZvaWQgc2V0RnV6emVyQWdlbnQoc3RkOjp1bmlx
dWVfcHRyPEZ1enplckFnZW50PiYmIGZ1enplckFnZW50KQotICAgIHsKLSAgICAgICAgUkVMRUFT
RV9BU1NFUlRfV0lUSF9NRVNTQUdFKCFtX2Z1enplckFnZW50LCAiT25seSBvbmUgRnV6emVyQWdl
bnQgY2FuIGJlIHNwZWNpZmllZCBhdCBhIHRpbWUuIik7Ci0gICAgICAgIG1fZnV6emVyQWdlbnQg
PSBXVEZNb3ZlKGZ1enplckFnZW50KTsKLSAgICB9CisgICAgdm9pZCBzZXRGdXp6ZXJBZ2VudChz
dGQ6OnVuaXF1ZV9wdHI8RnV6emVyQWdlbnQ+JiYgZnV6emVyQWdlbnQpOwogCiAgICAgc3RhdGlj
IHVuc2lnbmVkIG51bWJlck9mSURzKCkgeyByZXR1cm4gc19udW1iZXJPZklEcy5sb2FkKCk7IH0K
ICAgICB1bnNpZ25lZCBpZCgpIGNvbnN0IHsgcmV0dXJuIG1faWQ7IH0KQEAgLTQxMywxNDUgKzMy
Niw1OCBAQCBwcml2YXRlOgogCiBwdWJsaWM6CiAgICAgSGVhcCBoZWFwOwotICAgIAotICAgIHN0
ZDo6dW5pcXVlX3B0cjxGYXN0TWFsbG9jQWxpZ25lZE1lbW9yeUFsbG9jYXRvcj4gZmFzdE1hbGxv
Y0FsbG9jYXRvcjsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8R2lnYWNhZ2VBbGlnbmVkTWVtb3J5QWxs
b2NhdG9yPiBwcmltaXRpdmVHaWdhY2FnZUFsbG9jYXRvcjsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8
R2lnYWNhZ2VBbGlnbmVkTWVtb3J5QWxsb2NhdG9yPiBqc1ZhbHVlR2lnYWNhZ2VBbGxvY2F0b3I7
Ci0KLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SGVhcENlbGxUeXBlPiBhdXhpbGlhcnlIZWFwQ2VsbFR5
cGU7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPEhlYXBDZWxsVHlwZT4gaW1tdXRhYmxlQnV0dGVyZmx5
SGVhcENlbGxUeXBlOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxIZWFwQ2VsbFR5cGU+IGNlbGxIZWFw
Q2VsbFR5cGU7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPEhlYXBDZWxsVHlwZT4gZGVzdHJ1Y3RpYmxl
Q2VsbEhlYXBDZWxsVHlwZTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SXNvSGVhcENlbGxUeXBlPiBh
cGlHbG9iYWxPYmplY3RIZWFwQ2VsbFR5cGU7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPElzb0hlYXBD
ZWxsVHlwZT4gY2FsbGJhY2tDb25zdHJ1Y3RvckhlYXBDZWxsVHlwZTsKLSAgICBzdGQ6OnVuaXF1
ZV9wdHI8SXNvSGVhcENlbGxUeXBlPiBjYWxsYmFja0dsb2JhbE9iamVjdEhlYXBDZWxsVHlwZTsK
LSAgICBzdGQ6OnVuaXF1ZV9wdHI8SXNvSGVhcENlbGxUeXBlPiBjYWxsYmFja09iamVjdEhlYXBD
ZWxsVHlwZTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SXNvSGVhcENlbGxUeXBlPiBjdXN0b21HZXR0
ZXJGdW5jdGlvbkhlYXBDZWxsVHlwZTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SXNvSGVhcENlbGxU
eXBlPiBjdXN0b21TZXR0ZXJGdW5jdGlvbkhlYXBDZWxsVHlwZTsKLSAgICBzdGQ6OnVuaXF1ZV9w
dHI8SXNvSGVhcENlbGxUeXBlPiBkYXRlSW5zdGFuY2VIZWFwQ2VsbFR5cGU7Ci0gICAgc3RkOjp1
bmlxdWVfcHRyPElzb0hlYXBDZWxsVHlwZT4gZXJyb3JJbnN0YW5jZUhlYXBDZWxsVHlwZTsKLSAg
ICBzdGQ6OnVuaXF1ZV9wdHI8SXNvSGVhcENlbGxUeXBlPiBmaW5hbGl6YXRpb25SZWdpc3RyeUNl
bGxUeXBlOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxJc29IZWFwQ2VsbFR5cGU+IGdsb2JhbExleGlj
YWxFbnZpcm9ubWVudEhlYXBDZWxsVHlwZTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SXNvSGVhcENl
bGxUeXBlPiBnbG9iYWxPYmplY3RIZWFwQ2VsbFR5cGU7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPElz
b0hlYXBDZWxsVHlwZT4gaW5qZWN0ZWRTY3JpcHRIb3N0U3BhY2VIZWFwQ2VsbFR5cGU7Ci0gICAg
c3RkOjp1bmlxdWVfcHRyPElzb0hlYXBDZWxsVHlwZT4gamF2YVNjcmlwdENhbGxGcmFtZUhlYXBD
ZWxsVHlwZTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SXNvSGVhcENlbGxUeXBlPiBqc01vZHVsZVJl
Y29yZEhlYXBDZWxsVHlwZTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SXNvSGVhcENlbGxUeXBlPiBt
b2R1bGVOYW1lc3BhY2VPYmplY3RIZWFwQ2VsbFR5cGU7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPElz
b0hlYXBDZWxsVHlwZT4gbmF0aXZlU3RkRnVuY3Rpb25IZWFwQ2VsbFR5cGU7Ci0gICAgc3RkOjp1
bmlxdWVfcHRyPElzb0lubGluZWRIZWFwQ2VsbFR5cGU8SlNTdHJpbmc+PiBzdHJpbmdIZWFwQ2Vs
bFR5cGU7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPElzb0hlYXBDZWxsVHlwZT4gd2Vha01hcEhlYXBD
ZWxsVHlwZTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SXNvSGVhcENlbGxUeXBlPiB3ZWFrU2V0SGVh
cENlbGxUeXBlOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxKU0Rlc3RydWN0aWJsZU9iamVjdEhlYXBD
ZWxsVHlwZT4gZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlOwotI2lmIEpTQ19PQkpDX0FQ
SV9FTkFCTEVECi0gICAgc3RkOjp1bmlxdWVfcHRyPElzb0hlYXBDZWxsVHlwZT4gYXBpV3JhcHBl
ck9iamVjdEhlYXBDZWxsVHlwZTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SXNvSGVhcENlbGxUeXBl
PiBvYmpDQ2FsbGJhY2tGdW5jdGlvbkhlYXBDZWxsVHlwZTsKLSNlbmRpZgotI2lmZGVmIEpTQ19H
TElCX0FQSV9FTkFCTEVECi0gICAgc3RkOjp1bmlxdWVfcHRyPElzb0hlYXBDZWxsVHlwZT4gYXBp
V3JhcHBlck9iamVjdEhlYXBDZWxsVHlwZTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SXNvSGVhcENl
bGxUeXBlPiBjYWxsYmFja0FQSVdyYXBwZXJHbG9iYWxPYmplY3RIZWFwQ2VsbFR5cGU7Ci0gICAg
c3RkOjp1bmlxdWVfcHRyPElzb0hlYXBDZWxsVHlwZT4ganNjQ2FsbGJhY2tGdW5jdGlvbkhlYXBD
ZWxsVHlwZTsKLSNlbmRpZgotICAgIHN0ZDo6dW5pcXVlX3B0cjxJc29IZWFwQ2VsbFR5cGU+IGlu
dGxDb2xsYXRvckhlYXBDZWxsVHlwZTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SXNvSGVhcENlbGxU
eXBlPiBpbnRsRGF0ZVRpbWVGb3JtYXRIZWFwQ2VsbFR5cGU7Ci0gICAgc3RkOjp1bmlxdWVfcHRy
PElzb0hlYXBDZWxsVHlwZT4gaW50bERpc3BsYXlOYW1lc0hlYXBDZWxsVHlwZTsKLSAgICBzdGQ6
OnVuaXF1ZV9wdHI8SXNvSGVhcENlbGxUeXBlPiBpbnRsTGlzdEZvcm1hdEhlYXBDZWxsVHlwZTsK
LSAgICBzdGQ6OnVuaXF1ZV9wdHI8SXNvSGVhcENlbGxUeXBlPiBpbnRsTG9jYWxlSGVhcENlbGxU
eXBlOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxJc29IZWFwQ2VsbFR5cGU+IGludGxOdW1iZXJGb3Jt
YXRIZWFwQ2VsbFR5cGU7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPElzb0hlYXBDZWxsVHlwZT4gaW50
bFBsdXJhbFJ1bGVzSGVhcENlbGxUeXBlOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxJc29IZWFwQ2Vs
bFR5cGU+IGludGxSZWxhdGl2ZVRpbWVGb3JtYXRIZWFwQ2VsbFR5cGU7Ci0gICAgc3RkOjp1bmlx
dWVfcHRyPElzb0hlYXBDZWxsVHlwZT4gaW50bFNlZ21lbnRJdGVyYXRvckhlYXBDZWxsVHlwZTsK
LSAgICBzdGQ6OnVuaXF1ZV9wdHI8SXNvSGVhcENlbGxUeXBlPiBpbnRsU2VnbWVudGVySGVhcENl
bGxUeXBlOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxJc29IZWFwQ2VsbFR5cGU+IGludGxTZWdtZW50
c0hlYXBDZWxsVHlwZTsKLSNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCi0gICAgc3RkOjp1bmlxdWVf
cHRyPElzb0hlYXBDZWxsVHlwZT4gd2ViQXNzZW1ibHlDb2RlQmxvY2tIZWFwQ2VsbFR5cGU7Ci0g
ICAgc3RkOjp1bmlxdWVfcHRyPElzb0hlYXBDZWxsVHlwZT4gd2ViQXNzZW1ibHlFeGNlcHRpb25I
ZWFwQ2VsbFR5cGU7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPElzb0hlYXBDZWxsVHlwZT4gd2ViQXNz
ZW1ibHlGdW5jdGlvbkhlYXBDZWxsVHlwZTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SXNvSGVhcENl
bGxUeXBlPiB3ZWJBc3NlbWJseUdsb2JhbEhlYXBDZWxsVHlwZTsKLSAgICBzdGQ6OnVuaXF1ZV9w
dHI8SXNvSGVhcENlbGxUeXBlPiB3ZWJBc3NlbWJseUluc3RhbmNlSGVhcENlbGxUeXBlOwotICAg
IHN0ZDo6dW5pcXVlX3B0cjxJc29IZWFwQ2VsbFR5cGU+IHdlYkFzc2VtYmx5TWVtb3J5SGVhcENl
bGxUeXBlOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxJc29IZWFwQ2VsbFR5cGU+IHdlYkFzc2VtYmx5
TW9kdWxlSGVhcENlbGxUeXBlOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxJc29IZWFwQ2VsbFR5cGU+
IHdlYkFzc2VtYmx5TW9kdWxlUmVjb3JkSGVhcENlbGxUeXBlOwotICAgIHN0ZDo6dW5pcXVlX3B0
cjxJc29IZWFwQ2VsbFR5cGU+IHdlYkFzc2VtYmx5VGFibGVIZWFwQ2VsbFR5cGU7Ci0gICAgc3Rk
Ojp1bmlxdWVfcHRyPElzb0hlYXBDZWxsVHlwZT4gd2ViQXNzZW1ibHlUYWdIZWFwQ2VsbFR5cGU7
Ci0jZW5kaWYKKworICAgIGNvbnN0IEhlYXBDZWxsVHlwZSYgY2VsbEhlYXBDZWxsVHlwZSgpIHsg
cmV0dXJuIGhlYXAuY2VsbEhlYXBDZWxsVHlwZTsgfQorICAgIGNvbnN0IEpTRGVzdHJ1Y3RpYmxl
T2JqZWN0SGVhcENlbGxUeXBlJiBkZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSB7IHJl
dHVybiBoZWFwLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZTsgfTsKIAogI2lmIEVOQUJM
RShKSVQpCiAgICAgc3RkOjp1bmlxdWVfcHRyPEpJVFNpemVTdGF0aXN0aWNzPiBqaXRTaXplU3Rh
dGlzdGljczsKICNlbmRpZgogICAgIAotICAgIENvbXBsZXRlU3Vic3BhY2UgcHJpbWl0aXZlR2ln
YWNhZ2VBdXhpbGlhcnlTcGFjZTsgLy8gVHlwZWQgYXJyYXlzLCBzdHJpbmdzLCBiaXR2ZWN0b3Jz
LCBldGMgZ28gaGVyZS4KLSAgICBDb21wbGV0ZVN1YnNwYWNlIGpzVmFsdWVHaWdhY2FnZUF1eGls
aWFyeVNwYWNlOyAvLyBCdXR0ZXJmbGllcywgYXJyYXlzIG9mIEpTVmFsdWVzLCBldGMgZ28gaGVy
ZS4KLSAgICBDb21wbGV0ZVN1YnNwYWNlIGltbXV0YWJsZUJ1dHRlcmZseUpTVmFsdWVHaWdhY2Fn
ZUF1eGlsaWFyeVNwYWNlOyAvLyBKU0ltbXV0YWJsZUJ1dHRlcmZseSBnb2VzIGhlcmUuCi0KLSAg
ICAvLyBXZSBtYWtlIGNyb3NzLWN1dHRpbmcgYXNzdW1wdGlvbnMgYWJvdXQgdHlwZWQgYXJyYXlz
IGJlaW5nIGluIHRoZSBwcmltaXRpdmUgR2lnYWNhZ2UgYW5kIGJ1dHRlcmZsaWVzCi0gICAgLy8g
YmVpbmcgaW4gdGhlIEpTVmFsdWUgZ2lnYWNhZ2UuIEZvciBzb21lIHR5cGVzLCBpdCdzIHN1cGVy
IG9idmlvdXMgd2hlcmUgdGhleSBzaG91bGQgZ28sIGFuZCBzbyB3ZQotICAgIC8vIGNhbiBoYXJk
Y29kZSB0aGF0IGZhY3QuIEJ1dCBzb21ldGltZXMgaXQncyBub3QgY2xlYXIsIHNvIHdlIGFic3Ry
YWN0IGl0IGJ5IGhhdmluZyBhIEdpZ2FjYWdlOjpLaW5kCi0gICAgLy8gY29uc3RhbnQgc29tZXdo
ZXJlLgotICAgIC8vIEZJWE1FOiBNYXliZSBpdCB3b3VsZCBiZSBiZXR0ZXIgaWYgZXZlcnlvbmUg
YWJzdHJhY3RlZCB0aGlzPwotICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNzUyNDgKLSAgICBBTFdBWVNfSU5MSU5FIENvbXBsZXRlU3Vic3BhY2UmIGdpZ2Fj
YWdlQXV4aWxpYXJ5U3BhY2UoR2lnYWNhZ2U6OktpbmQga2luZCkKLSAgICB7Ci0gICAgICAgIHN3
aXRjaCAoa2luZCkgewotICAgICAgICBjYXNlIEdpZ2FjYWdlOjpQcmltaXRpdmU6Ci0gICAgICAg
ICAgICByZXR1cm4gcHJpbWl0aXZlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZTsKLSAgICAgICAgY2Fz
ZSBHaWdhY2FnZTo6SlNWYWx1ZToKLSAgICAgICAgICAgIHJldHVybiBqc1ZhbHVlR2lnYWNhZ2VB
dXhpbGlhcnlTcGFjZTsKLSAgICAgICAgY2FzZSBHaWdhY2FnZTo6TnVtYmVyT2ZLaW5kczoKLSAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9S
RUFDSEVEKCk7Ci0gICAgICAgIHJldHVybiBwcmltaXRpdmVHaWdhY2FnZUF1eGlsaWFyeVNwYWNl
OwotICAgIH0KLSAgICAKLSAgICAvLyBXaGVuZXZlciBwb3NzaWJsZSwgdXNlIHN1YnNwYWNlRm9y
PENlbGxUeXBlPih2bSkgdG8gZ2V0IG9uZSBvZiB0aGVzZSBzdWJzcGFjZXMuCi0gICAgQ29tcGxl
dGVTdWJzcGFjZSBjZWxsU3BhY2U7Ci0gICAgQ29tcGxldGVTdWJzcGFjZSB2YXJpYWJsZVNpemVk
Q2VsbFNwYWNlOyAvLyBGSVhNRTogVGhpcyBzcGFjZSBpcyBwcm9ibGVtYXRpYyBiZWNhdXNlIHdl
IGhhdmUgdGhpbmdzIGluIGhlcmUgbGlrZSBEaXJlY3RBcmd1bWVudHMgYW5kIFNjb3BlZEFyZ3Vt
ZW50czsgdGhvc2Ugc2hvdWxkIGJlIHNwbGl0IGludG8gSlNWYWx1ZU9PQiBjZWxscyBhbmQgSlNW
YWx1ZVN0cmljdCBhdXhpbGlhcmllcy4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE4Mjg1OAotICAgIENvbXBsZXRlU3Vic3BhY2UgZGVzdHJ1Y3RpYmxlT2JqZWN0U3Bh
Y2U7Ci0gICAgCi0gICAgSXNvU3Vic3BhY2UgYXJyYXlTcGFjZTsKLSAgICBJc29TdWJzcGFjZSBi
aWdJbnRTcGFjZTsKLSAgICBJc29TdWJzcGFjZSBjYWxsZWVTcGFjZTsKLSAgICBJc29TdWJzcGFj
ZSBjbG9uZWRBcmd1bWVudHNTcGFjZTsKLSAgICBJc29TdWJzcGFjZSBjdXN0b21HZXR0ZXJTZXR0
ZXJTcGFjZTsKLSAgICBJc29TdWJzcGFjZSBkYXRlSW5zdGFuY2VTcGFjZTsKLSAgICBJc29TdWJz
cGFjZSBkb21BdHRyaWJ1dGVHZXR0ZXJTZXR0ZXJTcGFjZTsKLSAgICBJc29TdWJzcGFjZSBleGNl
cHRpb25TcGFjZTsKLSAgICBJc29TdWJzcGFjZSBleGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlU3Bh
Y2U7Ci0gICAgSXNvU3Vic3BhY2UgZnVuY3Rpb25TcGFjZTsKLSAgICBJc29TdWJzcGFjZSBnZXR0
ZXJTZXR0ZXJTcGFjZTsKLSAgICBJc29TdWJzcGFjZSBnbG9iYWxMZXhpY2FsRW52aXJvbm1lbnRT
cGFjZTsKLSAgICBJc29TdWJzcGFjZSBpbnRlcm5hbEZ1bmN0aW9uU3BhY2U7Ci0gICAgSXNvU3Vi
c3BhY2UganNQcm94eVNwYWNlOwotICAgIElzb1N1YnNwYWNlIG5hdGl2ZUV4ZWN1dGFibGVTcGFj
ZTsKLSAgICBJc29TdWJzcGFjZSBudW1iZXJPYmplY3RTcGFjZTsKLSAgICBJc29TdWJzcGFjZSBw
bGFpbk9iamVjdFNwYWNlOwotICAgIElzb1N1YnNwYWNlIHByb21pc2VTcGFjZTsKLSAgICBJc29T
dWJzcGFjZSBwcm9wZXJ0eU5hbWVFbnVtZXJhdG9yU3BhY2U7Ci0gICAgSXNvU3Vic3BhY2UgcHJv
cGVydHlUYWJsZVNwYWNlOwotICAgIElzb1N1YnNwYWNlIHJlZ0V4cFNwYWNlOwotICAgIElzb1N1
YnNwYWNlIHJlZ0V4cE9iamVjdFNwYWNlOwotICAgIElzb1N1YnNwYWNlIHJvcGVTdHJpbmdTcGFj
ZTsKLSAgICBJc29TdWJzcGFjZSBzY29wZWRBcmd1bWVudHNTcGFjZTsKLSAgICBJc29TdWJzcGFj
ZSBzcGFyc2VBcnJheVZhbHVlTWFwU3BhY2U7Ci0gICAgSXNvU3Vic3BhY2Ugc3RyaW5nU3BhY2U7
Ci0gICAgSXNvU3Vic3BhY2Ugc3RyaW5nT2JqZWN0U3BhY2U7Ci0gICAgSXNvU3Vic3BhY2Ugc3Ry
dWN0dXJlQ2hhaW5TcGFjZTsKLSAgICBJc29TdWJzcGFjZSBzdHJ1Y3R1cmVSYXJlRGF0YVNwYWNl
OwotICAgIElzb1N1YnNwYWNlIHN0cnVjdHVyZVNwYWNlOwotICAgIElzb1N1YnNwYWNlIGJyYW5k
ZWRTdHJ1Y3R1cmVTcGFjZTsKLSAgICBJc29TdWJzcGFjZSBzeW1ib2xUYWJsZVNwYWNlOworICAg
IEFMV0FZU19JTkxJTkUgQ29tcGxldGVTdWJzcGFjZSYgcHJpbWl0aXZlR2lnYWNhZ2VBdXhpbGlh
cnlTcGFjZSgpIHsgcmV0dXJuIGhlYXAucHJpbWl0aXZlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZTsg
fQorICAgIEFMV0FZU19JTkxJTkUgQ29tcGxldGVTdWJzcGFjZSYganNWYWx1ZUdpZ2FjYWdlQXV4
aWxpYXJ5U3BhY2UoKSB7IHJldHVybiBoZWFwLmpzVmFsdWVHaWdhY2FnZUF1eGlsaWFyeVNwYWNl
OyB9CisgICAgQUxXQVlTX0lOTElORSBDb21wbGV0ZVN1YnNwYWNlJiBpbW11dGFibGVCdXR0ZXJm
bHlKU1ZhbHVlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZSgpIHsgcmV0dXJuIGhlYXAuaW1tdXRhYmxl
QnV0dGVyZmx5SlNWYWx1ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2U7IH0KKyAgICBBTFdBWVNfSU5M
SU5FIENvbXBsZXRlU3Vic3BhY2UmIGdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UoR2lnYWNhZ2U6Oktp
bmQga2luZCkgeyByZXR1cm4gaGVhcC5naWdhY2FnZUF1eGlsaWFyeVNwYWNlKGtpbmQpOyB9Cisg
ICAgQUxXQVlTX0lOTElORSBDb21wbGV0ZVN1YnNwYWNlJiBjZWxsU3BhY2UoKSB7IHJldHVybiBo
ZWFwLmNlbGxTcGFjZTsgfQorICAgIEFMV0FZU19JTkxJTkUgQ29tcGxldGVTdWJzcGFjZSYgdmFy
aWFibGVTaXplZENlbGxTcGFjZSgpIHsgcmV0dXJuIGhlYXAudmFyaWFibGVTaXplZENlbGxTcGFj
ZTsgfQorICAgIEFMV0FZU19JTkxJTkUgQ29tcGxldGVTdWJzcGFjZSYgZGVzdHJ1Y3RpYmxlT2Jq
ZWN0U3BhY2UoKSB7IHJldHVybiBoZWFwLmRlc3RydWN0aWJsZU9iamVjdFNwYWNlOyB9CisKKyAg
ICBBTFdBWVNfSU5MSU5FIElzb1N1YnNwYWNlJiBhcnJheVNwYWNlKCkgeyByZXR1cm4gaGVhcC5h
cnJheVNwYWNlOyB9CisgICAgQUxXQVlTX0lOTElORSBJc29TdWJzcGFjZSYgYmlnSW50U3BhY2Uo
KSB7IHJldHVybiBoZWFwLmJpZ0ludFNwYWNlOyB9CisgICAgQUxXQVlTX0lOTElORSBJc29TdWJz
cGFjZSYgY2FsbGVlU3BhY2UoKSB7IHJldHVybiBoZWFwLmNhbGxlZVNwYWNlOyB9CisgICAgQUxX
QVlTX0lOTElORSBJc29TdWJzcGFjZSYgY2xvbmVkQXJndW1lbnRzU3BhY2UoKSB7IHJldHVybiBo
ZWFwLmNsb25lZEFyZ3VtZW50c1NwYWNlOyB9CisgICAgQUxXQVlTX0lOTElORSBJc29TdWJzcGFj
ZSYgY3VzdG9tR2V0dGVyU2V0dGVyU3BhY2UoKSB7IHJldHVybiBoZWFwLmN1c3RvbUdldHRlclNl
dHRlclNwYWNlOyB9CisgICAgQUxXQVlTX0lOTElORSBJc29TdWJzcGFjZSYgZGF0ZUluc3RhbmNl
U3BhY2UoKSB7IHJldHVybiBoZWFwLmRhdGVJbnN0YW5jZVNwYWNlOyB9CisgICAgQUxXQVlTX0lO
TElORSBJc29TdWJzcGFjZSYgZG9tQXR0cmlidXRlR2V0dGVyU2V0dGVyU3BhY2UoKSB7IHJldHVy
biBoZWFwLmRvbUF0dHJpYnV0ZUdldHRlclNldHRlclNwYWNlOyB9CisgICAgQUxXQVlTX0lOTElO
RSBJc29TdWJzcGFjZSYgZXhjZXB0aW9uU3BhY2UoKSB7IHJldHVybiBoZWFwLmV4Y2VwdGlvblNw
YWNlOyB9CisgICAgQUxXQVlTX0lOTElORSBJc29TdWJzcGFjZSYgZXhlY3V0YWJsZVRvQ29kZUJs
b2NrRWRnZVNwYWNlKCkgeyByZXR1cm4gaGVhcC5leGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlU3Bh
Y2U7IH0KKyAgICBBTFdBWVNfSU5MSU5FIElzb1N1YnNwYWNlJiBmdW5jdGlvblNwYWNlKCkgeyBy
ZXR1cm4gaGVhcC5mdW5jdGlvblNwYWNlOyB9CisgICAgQUxXQVlTX0lOTElORSBJc29TdWJzcGFj
ZSYgZ2V0dGVyU2V0dGVyU3BhY2UoKSB7IHJldHVybiBoZWFwLmdldHRlclNldHRlclNwYWNlOyB9
CisgICAgQUxXQVlTX0lOTElORSBJc29TdWJzcGFjZSYgZ2xvYmFsTGV4aWNhbEVudmlyb25tZW50
U3BhY2UoKSB7IHJldHVybiBoZWFwLmdsb2JhbExleGljYWxFbnZpcm9ubWVudFNwYWNlOyB9Cisg
ICAgQUxXQVlTX0lOTElORSBJc29TdWJzcGFjZSYgaW50ZXJuYWxGdW5jdGlvblNwYWNlKCkgeyBy
ZXR1cm4gaGVhcC5pbnRlcm5hbEZ1bmN0aW9uU3BhY2U7IH0KKyAgICBBTFdBWVNfSU5MSU5FIElz
b1N1YnNwYWNlJiBqc1Byb3h5U3BhY2UoKSB7IHJldHVybiBoZWFwLmpzUHJveHlTcGFjZTsgfQor
ICAgIEFMV0FZU19JTkxJTkUgSXNvU3Vic3BhY2UmIG5hdGl2ZUV4ZWN1dGFibGVTcGFjZSgpIHsg
cmV0dXJuIGhlYXAubmF0aXZlRXhlY3V0YWJsZVNwYWNlOyB9CisgICAgQUxXQVlTX0lOTElORSBJ
c29TdWJzcGFjZSYgbnVtYmVyT2JqZWN0U3BhY2UoKSB7IHJldHVybiBoZWFwLm51bWJlck9iamVj
dFNwYWNlOyB9CisgICAgQUxXQVlTX0lOTElORSBJc29TdWJzcGFjZSYgcGxhaW5PYmplY3RTcGFj
ZSgpIHsgcmV0dXJuIGhlYXAucGxhaW5PYmplY3RTcGFjZTsgfQorICAgIEFMV0FZU19JTkxJTkUg
SXNvU3Vic3BhY2UmIHByb21pc2VTcGFjZSgpIHsgcmV0dXJuIGhlYXAucHJvbWlzZVNwYWNlOyB9
CisgICAgQUxXQVlTX0lOTElORSBJc29TdWJzcGFjZSYgcHJvcGVydHlOYW1lRW51bWVyYXRvclNw
YWNlKCkgeyByZXR1cm4gaGVhcC5wcm9wZXJ0eU5hbWVFbnVtZXJhdG9yU3BhY2U7IH0KKyAgICBB
TFdBWVNfSU5MSU5FIElzb1N1YnNwYWNlJiBwcm9wZXJ0eVRhYmxlU3BhY2UoKSB7IHJldHVybiBo
ZWFwLnByb3BlcnR5VGFibGVTcGFjZTsgfQorICAgIEFMV0FZU19JTkxJTkUgSXNvU3Vic3BhY2Um
IHJlZ0V4cFNwYWNlKCkgeyByZXR1cm4gaGVhcC5yZWdFeHBTcGFjZTsgfQorICAgIEFMV0FZU19J
TkxJTkUgSXNvU3Vic3BhY2UmIHJlZ0V4cE9iamVjdFNwYWNlKCkgeyByZXR1cm4gaGVhcC5yZWdF
eHBPYmplY3RTcGFjZTsgfQorICAgIEFMV0FZU19JTkxJTkUgSXNvU3Vic3BhY2UmIHJvcGVTdHJp
bmdTcGFjZSgpIHsgcmV0dXJuIGhlYXAucm9wZVN0cmluZ1NwYWNlOyB9CisgICAgQUxXQVlTX0lO
TElORSBJc29TdWJzcGFjZSYgc2NvcGVkQXJndW1lbnRzU3BhY2UoKSB7IHJldHVybiBoZWFwLnNj
b3BlZEFyZ3VtZW50c1NwYWNlOyB9CisgICAgQUxXQVlTX0lOTElORSBJc29TdWJzcGFjZSYgc3Bh
cnNlQXJyYXlWYWx1ZU1hcFNwYWNlKCkgeyByZXR1cm4gaGVhcC5zcGFyc2VBcnJheVZhbHVlTWFw
U3BhY2U7IH0KKyAgICBBTFdBWVNfSU5MSU5FIElzb1N1YnNwYWNlJiBzdHJpbmdTcGFjZSgpIHsg
cmV0dXJuIGhlYXAuc3RyaW5nU3BhY2U7IH0KKyAgICBBTFdBWVNfSU5MSU5FIElzb1N1YnNwYWNl
JiBzdHJpbmdPYmplY3RTcGFjZSgpIHsgcmV0dXJuIGhlYXAuc3RyaW5nT2JqZWN0U3BhY2U7IH0K
KyAgICBBTFdBWVNfSU5MSU5FIElzb1N1YnNwYWNlJiBzdHJ1Y3R1cmVDaGFpblNwYWNlKCkgeyBy
ZXR1cm4gaGVhcC5zdHJ1Y3R1cmVDaGFpblNwYWNlOyB9CisgICAgQUxXQVlTX0lOTElORSBJc29T
dWJzcGFjZSYgc3RydWN0dXJlUmFyZURhdGFTcGFjZSgpIHsgcmV0dXJuIGhlYXAuc3RydWN0dXJl
UmFyZURhdGFTcGFjZTsgfQorICAgIEFMV0FZU19JTkxJTkUgSXNvU3Vic3BhY2UmIHN0cnVjdHVy
ZVNwYWNlKCkgeyByZXR1cm4gaGVhcC5zdHJ1Y3R1cmVTcGFjZTsgfQorICAgIEFMV0FZU19JTkxJ
TkUgSXNvU3Vic3BhY2UmIGJyYW5kZWRTdHJ1Y3R1cmVTcGFjZSgpIHsgcmV0dXJuIGhlYXAuYnJh
bmRlZFN0cnVjdHVyZVNwYWNlOyB9CisgICAgQUxXQVlTX0lOTElORSBJc29TdWJzcGFjZSYgc3lt
Ym9sVGFibGVTcGFjZSgpIHsgcmV0dXJuIGhlYXAuc3ltYm9sVGFibGVTcGFjZTsgfQogCiAjZGVm
aW5lIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIobmFtZSkgXAogICAgIHRlbXBs
YXRlPFN1YnNwYWNlQWNjZXNzIG1vZGU+IFwKLSAgICBJc29TdWJzcGFjZSogbmFtZSgpIFwKLSAg
ICB7IFwKLSAgICAgICAgaWYgKG1fIyNuYW1lIHx8IG1vZGUgPT0gU3Vic3BhY2VBY2Nlc3M6OkNv
bmN1cnJlbnRseSkgXAotICAgICAgICAgICAgcmV0dXJuIG1fIyNuYW1lLmdldCgpOyBcCi0gICAg
ICAgIHJldHVybiBuYW1lIyNTbG93KCk7IFwKLSAgICB9IFwKLSAgICBKU19FWFBPUlRfUFJJVkFU
RSBJc29TdWJzcGFjZSogbmFtZSMjU2xvdygpOyBcCi0gICAgc3RkOjp1bmlxdWVfcHRyPElzb1N1
YnNwYWNlPiBtXyMjbmFtZTsKLQorICAgIEFMV0FZU19JTkxJTkUgSXNvU3Vic3BhY2UqIG5hbWUo
KSB7IHJldHVybiBoZWFwLm5hbWU8bW9kZT4oKTsgfQogCiAjaWYgSlNDX09CSkNfQVBJX0VOQUJM
RUQKICAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKGFwaVdyYXBwZXJPYmpl
Y3RTcGFjZSkKQEAgLTY1Nyw3NCArNDgzLDIzIEBAIHB1YmxpYzoKICNlbmRpZgogCiAjdW5kZWYg
RFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUgotICAgIAotICAgIElzb0NlbGxTZXQg
ZXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZXNXaXRoQ29uc3RyYWludHM7Ci0gICAgSXNvQ2VsbFNl
dCBleGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlc1dpdGhGaW5hbGl6ZXJzOworCisgICAgQUxXQVlT
X0lOTElORSBJc29DZWxsU2V0JiBleGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlc1dpdGhDb25zdHJh
aW50cygpIHsgcmV0dXJuIGhlYXAuZXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZXNXaXRoQ29uc3Ry
YWludHM7IH0KKyAgICBBTFdBWVNfSU5MSU5FIElzb0NlbGxTZXQmIGV4ZWN1dGFibGVUb0NvZGVC
bG9ja0VkZ2VzV2l0aEZpbmFsaXplcnMoKSB7IHJldHVybiBoZWFwLmV4ZWN1dGFibGVUb0NvZGVC
bG9ja0VkZ2VzV2l0aEZpbmFsaXplcnM7IH0KIAogI2RlZmluZSBEWU5BTUlDX1NQQUNFX0FORF9T
RVRfREVGSU5FX01FTUJFUihuYW1lKSBcCiAgICAgdGVtcGxhdGU8U3Vic3BhY2VBY2Nlc3MgbW9k
ZT4gXAotICAgIElzb1N1YnNwYWNlKiBuYW1lKCkgXAotICAgIHsgXAotICAgICAgICBpZiAoYXV0
byogc3BhY2VBbmRTZXQgPSBtXyMjbmFtZS5nZXQoKSkgXAotICAgICAgICAgICAgcmV0dXJuICZz
cGFjZUFuZFNldC0+c3BhY2U7IFwKLSAgICAgICAgaWYgKG1vZGUgPT0gU3Vic3BhY2VBY2Nlc3M6
OkNvbmN1cnJlbnRseSkgXAotICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7IFwKLSAgICAgICAg
cmV0dXJuIG5hbWUjI1Nsb3coKTsgXAotICAgIH0gXAotICAgIElzb1N1YnNwYWNlKiBuYW1lIyNT
bG93KCk7IFwKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8U3BhY2VBbmRTZXQ+IG1fIyNuYW1lOwotICAg
IAotICAgIHN0cnVjdCBTcGFjZUFuZFNldCB7Ci0gICAgICAgIFdURl9NQUtFX1NUUlVDVF9GQVNU
X0FMTE9DQVRFRDsKKyAgICBBTFdBWVNfSU5MSU5FIElzb1N1YnNwYWNlKiBuYW1lKCkgeyByZXR1
cm4gaGVhcC5uYW1lPG1vZGU+KCk7IH0KIAotICAgICAgICBJc29TdWJzcGFjZSBzcGFjZTsKLSAg
ICAgICAgSXNvQ2VsbFNldCBzZXQ7Ci0gICAgICAgIAotICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZS4uLiBBcmd1bWVudHM+Ci0gICAgICAgIFNwYWNlQW5kU2V0KEFyZ3VtZW50cyYmLi4uIGFyZ3Vt
ZW50cykKLSAgICAgICAgICAgIDogc3BhY2Uoc3RkOjpmb3J3YXJkPEFyZ3VtZW50cz4oYXJndW1l
bnRzKS4uLikKLSAgICAgICAgICAgICwgc2V0KHNwYWNlKQotICAgICAgICB7Ci0gICAgICAgIH0K
LSAgICAgICAgCi0gICAgICAgIHN0YXRpYyBJc29DZWxsU2V0JiBzZXRGb3IoU3Vic3BhY2UmIHNw
YWNlKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gKmJpdHdpc2VfY2FzdDxJc29DZWxs
U2V0Kj4oCi0gICAgICAgICAgICAgICAgYml0d2lzZV9jYXN0PGNoYXIqPigmc3BhY2UpIC0KLSAg
ICAgICAgICAgICAgICBPQkpFQ1RfT0ZGU0VUT0YoU3BhY2VBbmRTZXQsIHNwYWNlKSArCi0gICAg
ICAgICAgICAgICAgT0JKRUNUX09GRlNFVE9GKFNwYWNlQW5kU2V0LCBzZXQpKTsKLSAgICAgICAg
fQotICAgIH07Ci0gICAgCi0gICAgU3BhY2VBbmRTZXQgY29kZUJsb2NrU3BhY2U7Ci0KLSAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jPgotICAgIHZvaWQgZm9yRWFjaENvZGVCbG9ja1NwYWNlKGNv
bnN0IEZ1bmMmIGZ1bmMpCi0gICAgewotICAgICAgICAvLyBUaGlzIHNob3VsZCBub3QgaW5jbHVk
ZSB3ZWJBc3NlbWJseUNvZGVCbG9ja1NwYWNlIGJlY2F1c2UgdGhpcyBpcyBhYm91dCBzdWJzY2xh
c3NlcyBvZgotICAgICAgICAvLyBKU0M6OkNvZGVCbG9jay4KLSAgICAgICAgZnVuYyhjb2RlQmxv
Y2tTcGFjZSk7Ci0gICAgfQorICAgIHVzaW5nIFNwYWNlQW5kU2V0ID0gSGVhcDo6U3BhY2VBbmRT
ZXQ7CisgICAgQUxXQVlTX0lOTElORSBTcGFjZUFuZFNldCYgY29kZUJsb2NrU3BhY2UoKSB7IHJl
dHVybiBoZWFwLmNvZGVCbG9ja1NwYWNlOyB9CiAKICAgICBEWU5BTUlDX1NQQUNFX0FORF9TRVRf
REVGSU5FX01FTUJFUihldmFsRXhlY3V0YWJsZVNwYWNlKQogICAgIERZTkFNSUNfU1BBQ0VfQU5E
X1NFVF9ERUZJTkVfTUVNQkVSKG1vZHVsZVByb2dyYW1FeGVjdXRhYmxlU3BhY2UpCi0gICAgU3Bh
Y2VBbmRTZXQgZnVuY3Rpb25FeGVjdXRhYmxlU3BhY2U7Ci0gICAgU3BhY2VBbmRTZXQgcHJvZ3Jh
bUV4ZWN1dGFibGVTcGFjZTsKLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmM+Ci0gICAgdm9p
ZCBmb3JFYWNoU2NyaXB0RXhlY3V0YWJsZVNwYWNlKGNvbnN0IEZ1bmMmIGZ1bmMpCi0gICAgewot
ICAgICAgICBpZiAobV9ldmFsRXhlY3V0YWJsZVNwYWNlKQotICAgICAgICAgICAgZnVuYygqbV9l
dmFsRXhlY3V0YWJsZVNwYWNlKTsKLSAgICAgICAgZnVuYyhmdW5jdGlvbkV4ZWN1dGFibGVTcGFj
ZSk7Ci0gICAgICAgIGlmIChtX21vZHVsZVByb2dyYW1FeGVjdXRhYmxlU3BhY2UpCi0gICAgICAg
ICAgICBmdW5jKCptX21vZHVsZVByb2dyYW1FeGVjdXRhYmxlU3BhY2UpOwotICAgICAgICBmdW5j
KHByb2dyYW1FeGVjdXRhYmxlU3BhY2UpOwotICAgIH0KLQotICAgIFNwYWNlQW5kU2V0IHVubGlu
a2VkRnVuY3Rpb25FeGVjdXRhYmxlU3BhY2U7CiAKLSN1bmRlZiBEWU5BTUlDX1NQQUNFX0FORF9T
RVRfREVGSU5FX01FTUJFUgorICAgIEFMV0FZU19JTkxJTkUgU3BhY2VBbmRTZXQmIGZ1bmN0aW9u
RXhlY3V0YWJsZVNwYWNlKCkgeyByZXR1cm4gaGVhcC5mdW5jdGlvbkV4ZWN1dGFibGVTcGFjZTsg
fQorICAgIEFMV0FZU19JTkxJTkUgU3BhY2VBbmRTZXQmIHByb2dyYW1FeGVjdXRhYmxlU3BhY2Uo
KSB7IHJldHVybiBoZWFwLnByb2dyYW1FeGVjdXRhYmxlU3BhY2U7IH0KKyAgICBBTFdBWVNfSU5M
SU5FIFNwYWNlQW5kU2V0JiB1bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZVNwYWNlKCkgeyByZXR1
cm4gaGVhcC51bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZVNwYWNlOyB9CiAKICAgICBWTVR5cGUg
dm1UeXBlOwogICAgIENsaWVudERhdGEqIGNsaWVudERhdGE7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9WTUlubGluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9WTUlubGluZXMuaAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk1JbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTI2
LDYgKzI2LDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiRW50cnlGcmFtZS5oIgorI2lu
Y2x1ZGUgIkZ1enplckFnZW50LmgiCiAjaW5jbHVkZSAiUHJvZmlsZXJEYXRhYmFzZS5oIgogI2lu
Y2x1ZGUgIlZNLmgiCiAjaW5jbHVkZSAiV2F0Y2hkb2cuaCIKQEAgLTkwLDQgKzkxLDEwIEBAIGlu
bGluZSBDYWxsRnJhbWUqIFZNOjp0b3BKU0NhbGxGcmFtZSgpIGMKICAgICByZXR1cm4gZnJhbWU7
CiB9CiAKK2lubGluZSB2b2lkIFZNOjpzZXRGdXp6ZXJBZ2VudChzdGQ6OnVuaXF1ZV9wdHI8RnV6
emVyQWdlbnQ+JiYgZnV6emVyQWdlbnQpCit7CisgICAgUkVMRUFTRV9BU1NFUlRfV0lUSF9NRVNT
QUdFKCFtX2Z1enplckFnZW50LCAiT25seSBvbmUgRnV6emVyQWdlbnQgY2FuIGJlIHNwZWNpZmll
ZCBhdCBhIHRpbWUuIik7CisgICAgbV9mdXp6ZXJBZ2VudCA9IFdURk1vdmUoZnV6emVyQWdlbnQp
OworfQorCiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1dlYWtNYXBQcm90b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9XZWFrTWFwUHJvdG90eXBlLmgJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dlYWtNYXBQcm90b3R5cGUuaAkod29ya2luZyBj
b3B5KQpAQCAtNDEsNyArNDEsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBz
dWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJT
UEFDRV9TSEFSQUJMRShXZWFrTWFwUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2
bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2Uo
KTsKICAgICB9CiAKICAgICBzdGF0aWMgV2Vha01hcFByb3RvdHlwZSogY3JlYXRlKFZNJiB2bSwg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFrT2JqZWN0UmVmUHJvdG90eXBlLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha09iamVjdFJl
ZlByb3RvdHlwZS5oCShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9XZWFrT2JqZWN0UmVmUHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM3LDcg
KzM3LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0m
IHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUo
V2Vha09iamVjdFJlZlByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5P
YmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAg
fQogCiAgICAgc3RhdGljIFdlYWtPYmplY3RSZWZQcm90b3R5cGUqIGNyZWF0ZShWTSYgdm0sIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlKQpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha1NldFByb3RvdHlwZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dlYWtTZXRQcm90b3R5cGUuaAko
cmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha1Nl
dFByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00MSw3ICs0MSw3IEBAIHB1YmxpYzoKICAg
ICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAg
IFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKFdlYWtTZXRQcm90b3R5cGUsIEJh
c2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVy
biAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBXZWFrU2V0UHJv
dG90eXBlKiBjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0Rv
bGxhclZNLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvSlNE
b2xsYXJWTS5jcHAJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90
b29scy9KU0RvbGxhclZNLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTMzLDcgKzEzMyw3IEBAIHB1
YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vic3BhY2VBY2Nlc3M+CiAg
ICAgc3RhdGljIENvbXBsZXRlU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7Ci0g
ICAgICAgIHJldHVybiAmdm0uY2VsbFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLmNlbGxTcGFj
ZSgpOwogICAgIH0KIAogICAgIEpTRG9sbGFyVk1DYWxsRnJhbWUoVk0mIHZtLCBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSkKQEAgLTIyMyw3ICsyMjMsNyBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgQ2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNzPgogICAgIHN0YXRpYyBDb21wbGV0ZVN1YnNw
YWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewotICAgICAgICByZXR1cm4gJnZtLmNlbGxT
cGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5jZWxsU3BhY2UoKTsKICAgICB9CiAKICAgICBSb290
KiByb290KCkgY29uc3QgeyByZXR1cm4gbV9yb290LmdldCgpOyB9CkBAIC0yODcsNyArMjg3LDcg
QEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlLCBTdWJzcGFjZUFjY2Vz
cz4KICAgICBzdGF0aWMgQ29tcGxldGVTdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAg
IHsKLSAgICAgICAgcmV0dXJuICZ2bS5kZXN0cnVjdGlibGVPYmplY3RTcGFjZTsKKyAgICAgICAg
cmV0dXJuICZ2bS5kZXN0cnVjdGlibGVPYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIFJvb3Qo
Vk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKQEAgLTM1NCw3ICszNTQsNyBAQCBwdWJsaWM6
CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNzPgogICAgIHN0
YXRpYyBDb21wbGV0ZVN1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewotICAgICAg
ICByZXR1cm4gJnZtLmNlbGxTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5jZWxsU3BhY2UoKTsK
ICAgICB9CiAKICAgICBzdGF0aWMgU2ltcGxlT2JqZWN0KiBjcmVhdGUoVk0mIHZtLCBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0KQpAQCAtNDI2LDcgKzQyNiw3IEBAIHB1YmxpYzoKICAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vic3BhY2VBY2Nlc3M+CiAgICAgc3RhdGljIENv
bXBsZXRlU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7Ci0gICAgICAgIHJldHVy
biAmdm0uY2VsbFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLmNlbGxTcGFjZSgpOwogICAgIH0K
IAogICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQpAQCAtNTA4LDcgKzUwOCw3
IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vic3BhY2VBY2Nl
c3M+CiAgICAgc3RhdGljIENvbXBsZXRlU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAg
ICB7Ci0gICAgICAgIHJldHVybiAmdm0uY2VsbFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLmNl
bGxTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVy
ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBl
KQpAQCAtNTkwLDcgKzU5MCw3IEBAIElHTk9SRV9XQVJOSU5HU19FTkQKICAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBDZWxsVHlwZSwgU3Vic3BhY2VBY2Nlc3M+CiAgICAgc3RhdGljIENvbXBsZXRlU3Vi
c3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7Ci0gICAgICAgIHJldHVybiAmdm0uY2Vs
bFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLmNlbGxTcGFjZSgpOwogICAgIH0KIAogICAgIHN0
YXRpYyBSdW50aW1lQXJyYXkqIGNyZWF0ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBD
YWxsRnJhbWUqIGNhbGxGcmFtZSkKQEAgLTc3Miw3ICs3NzIsNyBAQCBwdWJsaWM6CiAgICAgdGVt
cGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNzPgogICAgIHN0YXRpYyBDb21w
bGV0ZVN1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewotICAgICAgICByZXR1cm4g
JnZtLmNlbGxTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5jZWxsU3BhY2UoKTsKICAgICB9CiAK
ICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKQEAgLTg3Miw3ICs4NzIsNyBA
QCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNz
PgogICAgIHN0YXRpYyBDb21wbGV0ZVN1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAg
ewotICAgICAgICByZXR1cm4gJnZtLmNlbGxTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5jZWxs
U3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUo
Vk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkK
QEAgLTg5Nyw3ICs4OTcsNyBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5
cGUsIFN1YnNwYWNlQWNjZXNzPgogICAgIHN0YXRpYyBDb21wbGV0ZVN1YnNwYWNlKiBzdWJzcGFj
ZUZvcihWTSYgdm0pCiAgICAgewotICAgICAgICByZXR1cm4gJnZtLmNlbGxTcGFjZTsKKyAgICAg
ICAgcmV0dXJuICZ2bS5jZWxsU3BhY2UoKTsKICAgICB9CiAKICAgICBPYmplY3REb2luZ1NpZGVF
ZmZlY3RQdXRXaXRob3V0Q29ycmVjdFNsb3RTdGF0dXMoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSkKQEAgLTk0OCw3ICs5NDgsNyBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUg
Q2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNzPgogICAgIHN0YXRpYyBDb21wbGV0ZVN1YnNwYWNlKiBz
dWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewotICAgICAgICByZXR1cm4gJnZtLmNlbGxTcGFjZTsK
KyAgICAgICAgcmV0dXJuICZ2bS5jZWxsU3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgU3Ry
dWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKQEAgLTE1ODUsNyArMTU4NSw3IEBAIHB1YmxpYzoKICAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vic3BhY2VBY2Nlc3M+CiAgICAgc3RhdGlj
IENvbXBsZXRlU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7Ci0gICAgICAgIHJl
dHVybiAmdm0uY2VsbFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLmNlbGxTcGFjZSgpOwogICAg
IH0KIAogICAgIEpTVGVzdEN1c3RvbUdldHRlclNldHRlcihWTSYgdm0sIFN0cnVjdHVyZSogc3Ry
dWN0dXJlKQpAQCAtMTgzOCw3ICsxODM4LDcgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVu
YW1lIENlbGxUeXBlLCBTdWJzcGFjZUFjY2Vzcz4KICAgICBzdGF0aWMgQ29tcGxldGVTdWJzcGFj
ZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKLSAgICAgICAgcmV0dXJuICZ2bS5kZXN0cnVj
dGlibGVPYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5kZXN0cnVjdGlibGVPYmplY3RT
cGFjZSgpOwogICAgIH0KIAogICAgIGNsYXNzIENsaWVudCBmaW5hbCA6IHB1YmxpYyBXYXNtOjpT
dHJlYW1pbmdQYXJzZXJDbGllbnQgewpAQCAtMTkzMyw3ICsxOTMzLDcgQEAgcHVibGljOgogICAg
IHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlLCBTdWJzcGFjZUFjY2Vzcz4KICAgICBzdGF0aWMg
Q29tcGxldGVTdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKLSAgICAgICAgcmV0
dXJuICZ2bS5kZXN0cnVjdGlibGVPYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5kZXN0
cnVjdGlibGVPYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIFdhc21TdHJlYW1pbmdDb21waWxl
cihWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBXYXNtOjpDb21waWxlck1vZGUgY29tcGls
ZXJNb2RlLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1Byb21pc2UqIHByb21pc2Us
IEpTT2JqZWN0KiBpbXBvcnRPYmplY3QpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9v
bHMvSlNEb2xsYXJWTS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29s
cy9KU0RvbGxhclZNLmgJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS90b29scy9KU0RvbGxhclZNLmgJKHdvcmtpbmcgY29weSkKQEAgLTQyLDcgKzQyLDcgQEAgcHVi
bGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlLCBTdWJzcGFjZUFjY2Vzcz4KICAg
ICBzdGF0aWMgQ29tcGxldGVTdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKLSAg
ICAgICAgcmV0dXJuICZ2bS5jZWxsU3BhY2U7CisgICAgICAgIHJldHVybiAmdm0uY2VsbFNwYWNl
KCk7CiAgICAgfQogICAgIAogICAgIERFQ0xBUkVfRVhQT1JUX0lORk87CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseS5oCShyZXZpc2lvbiAyODYw
OTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5LmgJKHdv
cmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE2LTIw
MTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE2
LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCkBAIC00MSw3ICs0MSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vi
c3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRf
SVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTV2ViQXNzZW1ibHksIEJhc2UpOwotICAgICAgICByZXR1
cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RT
cGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBKU1dlYkFzc2VtYmx5KiBjcmVhdGUoVk0mLCBK
U0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSopOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vanMvV2ViQXNzZW1ibHlDb21waWxlRXJyb3JQcm90b3R5cGUuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUNvbXBpbGVFcnJvclBy
b3RvdHlwZS5oCShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9qcy9XZWJBc3NlbWJseUNvbXBpbGVFcnJvclByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNi0yMDE5IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNi0yMDIxIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpA
QCAtNDEsNyArNDEsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFj
ZUZvcihWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9T
SEFSQUJMRShXZWJBc3NlbWJseUNvbXBpbGVFcnJvclByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAg
IHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9i
amVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIFdlYkFzc2VtYmx5Q29tcGlsZUVycm9y
UHJvdG90eXBlKiBjcmVhdGUoVk0mLCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSopOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlFeGNlcHRpb25Qcm90
b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJB
c3NlbWJseUV4Y2VwdGlvblByb3RvdHlwZS5oCShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUV4Y2VwdGlvblByb3RvdHlwZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC00MSw3ICs0MSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vi
c3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRf
SVNPX1NVQlNQQUNFX1NIQVJBQkxFKFdlYkFzc2VtYmx5RXhjZXB0aW9uUHJvdG90eXBlLCBCYXNl
KTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4g
JnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgV2ViQXNzZW1ibHlF
eGNlcHRpb25Qcm90b3R5cGUqIGNyZWF0ZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJl
Kik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUdsb2Jh
bFByb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pz
L1dlYkFzc2VtYmx5R2xvYmFsUHJvdG90eXBlLmgJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5R2xvYmFsUHJvdG90eXBlLmgJKHdv
cmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxOS0yMDIx
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtNDAsNyArNDAsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIElzb1N1YnNwYWNl
KiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19T
VUJTUEFDRV9TSEFSQUJMRShXZWJBc3NlbWJseUdsb2JhbFByb3RvdHlwZSwgQmFzZSk7Ci0gICAg
ICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFp
bk9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIFdlYkFzc2VtYmx5R2xvYmFsUHJv
dG90eXBlKiBjcmVhdGUoVk0mLCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSopOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlJbnN0YW5jZVByb3RvdHlw
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2Vt
Ymx5SW5zdGFuY2VQcm90b3R5cGUuaAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlJbnN0YW5jZVByb3RvdHlwZS5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNi0yMDE5IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNi0yMDIx
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtNDEsNyArNDEsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIElzb1N1YnNwYWNl
KiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19T
VUJTUEFDRV9TSEFSQUJMRShXZWJBc3NlbWJseUluc3RhbmNlUHJvdG90eXBlLCBCYXNlKTsKLSAg
ICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBs
YWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgV2ViQXNzZW1ibHlJbnN0YW5j
ZVByb3RvdHlwZSogY3JlYXRlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqKTsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TGlua0Vycm9yUHJv
dG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2Vi
QXNzZW1ibHlMaW5rRXJyb3JQcm90b3R5cGUuaAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlMaW5rRXJyb3JQcm90b3R5cGUuaAko
d29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYt
MjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTYtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTQxLDcgKzQxLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJc29T
dWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VS
VF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoV2ViQXNzZW1ibHlMaW5rRXJyb3JQcm90b3R5cGUsIEJh
c2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVy
biAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBXZWJBc3NlbWJs
eUxpbmtFcnJvclByb3RvdHlwZSogY3JlYXRlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1
cmUqKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TWVt
b3J5UHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
anMvV2ViQXNzZW1ibHlNZW1vcnlQcm90b3R5cGUuaAkocmV2aXNpb24gMjg2MDk1KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlNZW1vcnlQcm90b3R5cGUuaAko
d29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYt
MjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTYtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTQxLDcgKzQxLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJc29T
dWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VS
VF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoV2ViQXNzZW1ibHlNZW1vcnlQcm90b3R5cGUsIEJhc2Up
OwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAm
dm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBXZWJBc3NlbWJseU1l
bW9yeVByb3RvdHlwZSogY3JlYXRlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqKTsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TW9kdWxlUHJv
dG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2Vi
QXNzZW1ibHlNb2R1bGVQcm90b3R5cGUuaAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlNb2R1bGVQcm90b3R5cGUuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAxOSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAy
MSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKQEAgLTQxLDcgKzQxLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJc29TdWJzcGFj
ZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09f
U1VCU1BBQ0VfU0hBUkFCTEUoV2ViQXNzZW1ibHlNb2R1bGVQcm90b3R5cGUsIEJhc2UpOwotICAg
ICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxh
aW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBXZWJBc3NlbWJseU1vZHVsZVBy
b3RvdHlwZSogY3JlYXRlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqKTsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5UnVudGltZUVycm9yUHJv
dG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2Vi
QXNzZW1ibHlSdW50aW1lRXJyb3JQcm90b3R5cGUuaAkocmV2aXNpb24gMjg2MDk1KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlSdW50aW1lRXJyb3JQcm90b3R5
cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTYtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTYtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQxLDcgKzQxLDcgQEAgcHVibGljOgogICAgIHN0YXRp
YyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElD
X0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoV2ViQXNzZW1ibHlSdW50aW1lRXJyb3JQcm90
b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAg
ICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBX
ZWJBc3NlbWJseVJ1bnRpbWVFcnJvclByb3RvdHlwZSogY3JlYXRlKFZNJiwgSlNHbG9iYWxPYmpl
Y3QqLCBTdHJ1Y3R1cmUqKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dl
YkFzc2VtYmx5VGFibGVQcm90b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseVRhYmxlUHJvdG90eXBlLmgJKHJldmlzaW9uIDI4NjA5
NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5VGFibGVQcm90
b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTYtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMTYtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQxLDcgKzQxLDcgQEAgcHVibGljOgogICAgIHN0
YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAgICAgU1RB
VElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoV2ViQXNzZW1ibHlUYWJsZVByb3RvdHlw
ZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAg
cmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIFdlYkFz
c2VtYmx5VGFibGVQcm90b3R5cGUqIGNyZWF0ZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0
dXJlKik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseVRh
Z1Byb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pz
L1dlYkFzc2VtYmx5VGFnUHJvdG90eXBlLmgJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5VGFnUHJvdG90eXBlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTQwLDcgKzQwLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSog
c3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VC
U1BBQ0VfU0hBUkFCTEUoV2ViQXNzZW1ibHlUYWdQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICBy
ZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmpl
Y3RTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBXZWJBc3NlbWJseVRhZ1Byb3RvdHlwZSog
Y3JlYXRlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqKTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQXN5bmNJdGVyYXRvci5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQXN5bmNJdGVyYXRvci5oCShyZXZpc2lvbiAy
ODYwOTUpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUFzeW5jSXRlcmF0b3Iu
aAkod29ya2luZyBjb3B5KQpAQCAtNDgsNyArNDgsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpT
Qzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAg
U1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNET01Bc3luY0l0ZXJhdG9yUHJv
dG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAg
ICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMg
SlNET01Bc3luY0l0ZXJhdG9yUHJvdG90eXBlKiBjcmVhdGUoSlNDOjpWTSYgdm0sIEpTQzo6SlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NSXRlcmF0b3IuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUl0ZXJhdG9yLmgJKHJldmlzaW9u
IDI4NjA5NSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NSXRlcmF0b3IuaAko
d29ya2luZyBjb3B5KQpAQCAtNTUsNyArNTUsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6
SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RB
VElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNET01JdGVyYXRvclByb3RvdHlwZSwg
QmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0
dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIEpTRE9NSXRl
cmF0b3JQcm90b3R5cGUqIGNyZWF0ZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlKQpJbmRleDogU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNGaWxlU3lzdGVtRGlyZWN0b3J5SGFuZGxlSXRlcmF0b3IuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRmlsZVN5c3RlbURp
cmVjdG9yeUhhbmRsZUl0ZXJhdG9yLmNwcAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNGaWxlU3lzdGVtRGlyZWN0b3J5SGFuZGxlSXRlcmF0b3IuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC01NSw5ICs1NSw5IEBAIElzb1N1YnNwYWNlKiBKU0ZpbGVTeXN0
ZW1EaXJlY3RvcnlIYW5kbGUKICAgICAgICAgcmV0dXJuIHNwYWNlOwogICAgIHN0YXRpY19hc3Nl
cnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNGaWxlU3lz
dGVtRGlyZWN0b3J5SGFuZGxlSXRlcmF0b3I+IHx8ICFKU0ZpbGVTeXN0ZW1EaXJlY3RvcnlIYW5k
bGVJdGVyYXRvcjo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3RleHByIChzdGQ6Omlz
X2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU0ZpbGVTeXN0ZW1EaXJlY3Rv
cnlIYW5kbGVJdGVyYXRvcj4pCi0gICAgICAgIGNsaWVudERhdGEuc2V0RmlsZVN5c3RlbURpcmVj
dG9yeUhhbmRsZUl0ZXJhdG9yU3BhY2UobWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQ
QUNFX0lOSVQodm0uaGVhcCwgKnZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSwgSlNG
aWxlU3lzdGVtRGlyZWN0b3J5SGFuZGxlSXRlcmF0b3IpKTsKKyAgICAgICAgY2xpZW50RGF0YS5z
ZXRGaWxlU3lzdGVtRGlyZWN0b3J5SGFuZGxlSXRlcmF0b3JTcGFjZShtYWtlVW5pcXVlPElzb1N1
YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RI
ZWFwQ2VsbFR5cGUoKSwgSlNGaWxlU3lzdGVtRGlyZWN0b3J5SGFuZGxlSXRlcmF0b3IpKTsKICAg
ICBlbHNlCi0gICAgICAgIGNsaWVudERhdGEuc2V0RmlsZVN5c3RlbURpcmVjdG9yeUhhbmRsZUl0
ZXJhdG9yU3BhY2UobWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0u
aGVhcCwgKnZtLmNlbGxIZWFwQ2VsbFR5cGUsIEpTRmlsZVN5c3RlbURpcmVjdG9yeUhhbmRsZUl0
ZXJhdG9yKSk7CisgICAgICAgIGNsaWVudERhdGEuc2V0RmlsZVN5c3RlbURpcmVjdG9yeUhhbmRs
ZUl0ZXJhdG9yU3BhY2UobWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQo
dm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU0ZpbGVTeXN0ZW1EaXJlY3RvcnlIYW5k
bGVJdGVyYXRvcikpOwogICAgIGF1dG8qIHNwYWNlID0gY2xpZW50RGF0YS5maWxlU3lzdGVtRGly
ZWN0b3J5SGFuZGxlSXRlcmF0b3JTcGFjZSgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJl
YWNoYWJsZS1jb2RlIikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBh
cmUiKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV2ViQ29yZUpTQ2xpZW50RGF0
YS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV2ViQ29yZUpT
Q2xpZW50RGF0YS5jcHAJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL1dlYkNvcmVKU0NsaWVudERhdGEuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw2ICsz
OCw3IEBACiAjaW5jbHVkZSAiSlNQYWludFdvcmtsZXRHbG9iYWxTY29wZS5oIgogI2luY2x1ZGUg
IkpTUmVtb3RlRE9NV2luZG93LmgiCiAjaW5jbHVkZSAiSlNTZXJ2aWNlV29ya2VyR2xvYmFsU2Nv
cGUuaCIKKyNpbmNsdWRlICJKU1NoYXJlZFdvcmtlckdsb2JhbFNjb3BlLmgiCiAjaW5jbHVkZSAi
SlNXaW5kb3dQcm94eS5oIgogI2luY2x1ZGUgIkpTV29ya2VyR2xvYmFsU2NvcGUuaCIKICNpbmNs
dWRlICJKU1dvcmtsZXRHbG9iYWxTY29wZS5oIgpAQCAtNTksMzMgKzYwLDM0IEBAIHVzaW5nIG5h
bWVzcGFjZSBKU0M7CiBKU1ZNQ2xpZW50RGF0YTo6SlNWTUNsaWVudERhdGEoVk0mIHZtKQogICAg
IDogbV9idWlsdGluRnVuY3Rpb25zKHZtKQogICAgICwgbV9idWlsdGluTmFtZXModm0pCi0gICAg
LCBtX3J1bnRpbWVBcnJheUhlYXBDZWxsVHlwZShKU0M6Oklzb0hlYXBDZWxsVHlwZTo6Y3JlYXRl
PFJ1bnRpbWVBcnJheT4oKSkKLSAgICAsIG1fcnVudGltZU9iamVjdEhlYXBDZWxsVHlwZShKU0M6
Oklzb0hlYXBDZWxsVHlwZTo6Y3JlYXRlPEpTQzo6QmluZGluZ3M6OlJ1bnRpbWVPYmplY3Q+KCkp
Ci0gICAgLCBtX3dpbmRvd1Byb3h5SGVhcENlbGxUeXBlKEpTQzo6SXNvSGVhcENlbGxUeXBlOjpj
cmVhdGU8SlNXaW5kb3dQcm94eT4oKSkKLSAgICAsIG1faGVhcENlbGxUeXBlRm9ySlNET01XaW5k
b3coSlNDOjpJc29IZWFwQ2VsbFR5cGU6OmNyZWF0ZTxKU0RPTVdpbmRvdz4oKSkKLSAgICAsIG1f
aGVhcENlbGxUeXBlRm9ySlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZShKU0M6Oklzb0hlYXBD
ZWxsVHlwZTo6Y3JlYXRlPEpTRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGU+KCkpCi0gICAgLCBt
X2hlYXBDZWxsVHlwZUZvckpTUmVtb3RlRE9NV2luZG93KEpTQzo6SXNvSGVhcENlbGxUeXBlOjpj
cmVhdGU8SlNSZW1vdGVET01XaW5kb3c+KCkpCi0gICAgLCBtX2hlYXBDZWxsVHlwZUZvckpTV29y
a2VyR2xvYmFsU2NvcGUoSlNDOjpJc29IZWFwQ2VsbFR5cGU6OmNyZWF0ZTxKU1dvcmtlckdsb2Jh
bFNjb3BlPigpKQorLy8gICAgLCBtX3J1bnRpbWVBcnJheUhlYXBDZWxsVHlwZShKU0M6Oklzb0hl
YXBDZWxsVHlwZTo6QXJnczxSdW50aW1lQXJyYXk+KCkpCisvLyAgICAsIG1fcnVudGltZU9iamVj
dEhlYXBDZWxsVHlwZShKU0M6Oklzb0hlYXBDZWxsVHlwZTo6QXJnczxKU0M6OkJpbmRpbmdzOjpS
dW50aW1lT2JqZWN0PigpKQorLy8gICAgLCBtX3dpbmRvd1Byb3h5SGVhcENlbGxUeXBlKEpTQzo6
SXNvSGVhcENlbGxUeXBlOjpBcmdzPEpTV2luZG93UHJveHk+KCkpCisvLyAgICAsIG1faGVhcENl
bGxUeXBlRm9ySlNET01XaW5kb3coSlNDOjpJc29IZWFwQ2VsbFR5cGU6OkFyZ3M8SlNET01XaW5k
b3c+KCkpCisvLyAgICAsIG1faGVhcENlbGxUeXBlRm9ySlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxT
Y29wZShKU0M6Oklzb0hlYXBDZWxsVHlwZTo6QXJnczxKU0RlZGljYXRlZFdvcmtlckdsb2JhbFNj
b3BlPigpKQorLy8gICAgLCBtX2hlYXBDZWxsVHlwZUZvckpTUmVtb3RlRE9NV2luZG93KEpTQzo6
SXNvSGVhcENlbGxUeXBlOjpBcmdzPEpTUmVtb3RlRE9NV2luZG93PigpKQorLy8gICAgLCBtX2hl
YXBDZWxsVHlwZUZvckpTV29ya2VyR2xvYmFsU2NvcGUoSlNDOjpJc29IZWFwQ2VsbFR5cGU6OkFy
Z3M8SlNXb3JrZXJHbG9iYWxTY29wZT4oKSkKKy8vICAgICwgbV9oZWFwQ2VsbFR5cGVGb3JKU1No
YXJlZFdvcmtlckdsb2JhbFNjb3BlKEpTQzo6SXNvSGVhcENlbGxUeXBlOjpBcmdzPEpTU2hhcmVk
V29ya2VyR2xvYmFsU2NvcGU+KCkpCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotICAgICwg
bV9oZWFwQ2VsbFR5cGVGb3JKU1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZShKU0M6Oklzb0hlYXBD
ZWxsVHlwZTo6Y3JlYXRlPEpTU2VydmljZVdvcmtlckdsb2JhbFNjb3BlPigpKQorLy8gICAgLCBt
X2hlYXBDZWxsVHlwZUZvckpTU2VydmljZVdvcmtlckdsb2JhbFNjb3BlKEpTQzo6SXNvSGVhcENl
bGxUeXBlOjpBcmdzPEpTU2VydmljZVdvcmtlckdsb2JhbFNjb3BlPigpKQogI2VuZGlmCi0gICAg
LCBtX2hlYXBDZWxsVHlwZUZvckpTV29ya2xldEdsb2JhbFNjb3BlKEpTQzo6SXNvSGVhcENlbGxU
eXBlOjpjcmVhdGU8SlNXb3JrbGV0R2xvYmFsU2NvcGU+KCkpCisvLyAgICAsIG1faGVhcENlbGxU
eXBlRm9ySlNXb3JrbGV0R2xvYmFsU2NvcGUoSlNDOjpJc29IZWFwQ2VsbFR5cGU6OkFyZ3M8SlNX
b3JrbGV0R2xvYmFsU2NvcGU+KCkpCiAjaWYgRU5BQkxFKENTU19QQUlOVElOR19BUEkpCi0gICAg
LCBtX2hlYXBDZWxsVHlwZUZvckpTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUoSlNDOjpJc29IZWFw
Q2VsbFR5cGU6OmNyZWF0ZTxKU1BhaW50V29ya2xldEdsb2JhbFNjb3BlPigpKQorLy8gICAgLCBt
X2hlYXBDZWxsVHlwZUZvckpTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUoSlNDOjpJc29IZWFwQ2Vs
bFR5cGU6OkFyZ3M8SlNQYWludFdvcmtsZXRHbG9iYWxTY29wZT4oKSkKICNlbmRpZgogI2lmIEVO
QUJMRShXRUJfQVVESU8pCi0gICAgLCBtX2hlYXBDZWxsVHlwZUZvckpTQXVkaW9Xb3JrbGV0R2xv
YmFsU2NvcGUoSlNDOjpJc29IZWFwQ2VsbFR5cGU6OmNyZWF0ZTxKU0F1ZGlvV29ya2xldEdsb2Jh
bFNjb3BlPigpKQorLy8gICAgLCBtX2hlYXBDZWxsVHlwZUZvckpTQXVkaW9Xb3JrbGV0R2xvYmFs
U2NvcGUoSlNDOjpJc29IZWFwQ2VsbFR5cGU6OkFyZ3M8SlNBdWRpb1dvcmtsZXRHbG9iYWxTY29w
ZT4oKSkKICNlbmRpZgotICAgICwgbV9oZWFwQ2VsbFR5cGVGb3JKU0lEQlNlcmlhbGl6YXRpb25H
bG9iYWxPYmplY3QoSlNDOjpJc29IZWFwQ2VsbFR5cGU6OmNyZWF0ZTxKU0lEQlNlcmlhbGl6YXRp
b25HbG9iYWxPYmplY3Q+KCkpCi0gICAgLCBtX2RvbUJ1aWx0aW5Db25zdHJ1Y3RvclNwYWNlIElT
T19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5jZWxsSGVhcENlbGxUeXBlLCBKU0RPTUJ1aWx0
aW5Db25zdHJ1Y3RvckJhc2UpCi0gICAgLCBtX2RvbUNvbnN0cnVjdG9yU3BhY2UgSVNPX1NVQlNQ
QUNFX0lOSVQodm0uaGVhcCwgKnZtLmNlbGxIZWFwQ2VsbFR5cGUsIEpTRE9NQ29uc3RydWN0b3JC
YXNlKQotICAgICwgbV9kb21OYW1lc3BhY2VPYmplY3RTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVCh2
bS5oZWFwLCAqdm0uY2VsbEhlYXBDZWxsVHlwZSwgSlNET01PYmplY3QpCi0gICAgLCBtX2RvbVdp
bmRvd1Byb3BlcnRpZXNTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uY2VsbEhl
YXBDZWxsVHlwZSwgSlNET01XaW5kb3dQcm9wZXJ0aWVzKQotICAgICwgbV9ydW50aW1lQXJyYXlT
cGFjZSBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqbV9ydW50aW1lQXJyYXlIZWFwQ2VsbFR5
cGUsIFJ1bnRpbWVBcnJheSkKLSAgICAsIG1fcnVudGltZU1ldGhvZFNwYWNlIElTT19TVUJTUEFD
RV9JTklUKHZtLmhlYXAsICp2bS5jZWxsSGVhcENlbGxUeXBlLCBSdW50aW1lTWV0aG9kKSAvLyBI
YXNoOjB4ZjcwYzRhODUKLSAgICAsIG1fcnVudGltZU9iamVjdFNwYWNlIElTT19TVUJTUEFDRV9J
TklUKHZtLmhlYXAsICptX3J1bnRpbWVPYmplY3RIZWFwQ2VsbFR5cGUsIEpTQzo6QmluZGluZ3M6
OlJ1bnRpbWVPYmplY3QpCi0gICAgLCBtX3dpbmRvd1Byb3h5U3BhY2UgSVNPX1NVQlNQQUNFX0lO
SVQodm0uaGVhcCwgKm1fd2luZG93UHJveHlIZWFwQ2VsbFR5cGUsIEpTV2luZG93UHJveHkpCi0g
ICAgLCBtX2lkYlNlcmlhbGl6YXRpb25TcGFjZSBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAq
bV9oZWFwQ2VsbFR5cGVGb3JKU0lEQlNlcmlhbGl6YXRpb25HbG9iYWxPYmplY3QsIEpTSURCU2Vy
aWFsaXphdGlvbkdsb2JhbE9iamVjdCkKKy8vICAgICwgbV9oZWFwQ2VsbFR5cGVGb3JKU0lEQlNl
cmlhbGl6YXRpb25HbG9iYWxPYmplY3QoSlNDOjpJc29IZWFwQ2VsbFR5cGU6OkFyZ3M8SlNJREJT
ZXJpYWxpemF0aW9uR2xvYmFsT2JqZWN0PigpKQorICAgICwgbV9kb21CdWlsdGluQ29uc3RydWN0
b3JTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCks
IEpTRE9NQnVpbHRpbkNvbnN0cnVjdG9yQmFzZSkKKyAgICAsIG1fZG9tQ29uc3RydWN0b3JTcGFj
ZSBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCksIEpTRE9N
Q29uc3RydWN0b3JCYXNlKQorICAgICwgbV9kb21OYW1lc3BhY2VPYmplY3RTcGFjZSBJU09fU1VC
U1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCksIEpTRE9NT2JqZWN0KQor
ICAgICwgbV9kb21XaW5kb3dQcm9wZXJ0aWVzU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVh
cCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU0RPTVdpbmRvd1Byb3BlcnRpZXMpCisgICAgLCBt
X3J1bnRpbWVBcnJheVNwYWNlIElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIG1fcnVudGltZUFy
cmF5SGVhcENlbGxUeXBlLCBSdW50aW1lQXJyYXkpCisgICAgLCBtX3J1bnRpbWVNZXRob2RTcGFj
ZSBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCksIFJ1bnRp
bWVNZXRob2QpIC8vIEhhc2g6MHhmNzBjNGE4NQorICAgICwgbV9ydW50aW1lT2JqZWN0U3BhY2Ug
SVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgbV9ydW50aW1lT2JqZWN0SGVhcENlbGxUeXBlLCBK
U0M6OkJpbmRpbmdzOjpSdW50aW1lT2JqZWN0KQorICAgICwgbV93aW5kb3dQcm94eVNwYWNlIElT
T19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIG1fd2luZG93UHJveHlIZWFwQ2VsbFR5cGUsIEpTV2lu
ZG93UHJveHkpCisgICAgLCBtX2lkYlNlcmlhbGl6YXRpb25TcGFjZSBJU09fU1VCU1BBQ0VfSU5J
VCh2bS5oZWFwLCBtX2hlYXBDZWxsVHlwZUZvckpTSURCU2VyaWFsaXphdGlvbkdsb2JhbE9iamVj
dCwgSlNJREJTZXJpYWxpemF0aW9uR2xvYmFsT2JqZWN0KQogICAgICwgbV9zdWJzcGFjZXMobWFr
ZVVuaXF1ZTxET01Jc29TdWJzcGFjZXM+KCkpCiB7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9XZWJDb3JlSlNDbGllbnREYXRhLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvV2ViQ29yZUpTQ2xpZW50RGF0YS5oCShyZXZpc2lvbiAyODYwOTUp
CisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9XZWJDb3JlSlNDbGllbnREYXRhLmgJKHdv
cmtpbmcgY29weSkKQEAgLTEsNiArMSw2IEBACiAvKgogICogIENvcHlyaWdodCAoQykgMTk5OS0y
MDAxIEhhcnJpIFBvcnRlbiAocG9ydGVuQGtkZS5vcmcpCi0gKiAgQ29weXJpZ2h0IChDKSAyMDAz
LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogIENvcHlyaWdodCAoQykg
MjAwMy0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqICBDb3B5cmlnaHQg
KEMpIDIwMDcgU2FtdWVsIFdlaW5pZyA8c2FtQHdlYmtpdC5vcmc+CiAgKiAgQ29weXJpZ2h0IChD
KSAyMDA5IEdvb2dsZSwgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKQEAgLTI4LDkgKzI4
LDM1IEBACiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+
CiAKK25hbWVzcGFjZSBKU0MgeworY2xhc3MgUnVudGltZUFycmF5OworCituYW1lc3BhY2UgQmlu
ZGluZ3MgeworY2xhc3MgUnVudGltZU9iamVjdDsKK30KK30gLy8gbmFtZXNwYWNlIEpTQworCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIERPTUlzb1N1YnNwYWNlczsKK2NsYXNzIEpTRE9N
V2luZG93OworY2xhc3MgSlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZTsKK2NsYXNzIEpTSURC
U2VyaWFsaXphdGlvbkdsb2JhbE9iamVjdDsKK2NsYXNzIEpTUmVtb3RlRE9NV2luZG93OworY2xh
c3MgSlNTaGFyZWRXb3JrZXJHbG9iYWxTY29wZTsKK2NsYXNzIEpTV2luZG93UHJveHk7CitjbGFz
cyBKU1dvcmtlckdsb2JhbFNjb3BlOworY2xhc3MgSlNXb3JrbGV0R2xvYmFsU2NvcGU7CisKKyNp
ZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCitjbGFzcyBKU1NlcnZpY2VXb3JrZXJHbG9iYWxTY29w
ZTsKKyNlbmRpZgorI2lmIEVOQUJMRShDU1NfUEFJTlRJTkdfQVBJKQorY2xhc3MgSlNQYWludFdv
cmtsZXRHbG9iYWxTY29wZTsKKyNlbmRpZgorI2lmIEVOQUJMRShXRUJfQVVESU8pCitjbGFzcyBK
U0F1ZGlvV29ya2xldEdsb2JhbFNjb3BlOworI2VuZGlmCiAKIGNsYXNzIEpTVk1DbGllbnREYXRh
IDogcHVibGljIEpTQzo6Vk06OkNsaWVudERhdGEgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxF
KEpTVk1DbGllbnREYXRhKTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CkBAIC05MiwyNiArMTE4
LDI2IEBAIHByaXZhdGU6CiAgICAgSlNCdWlsdGluRnVuY3Rpb25zIG1fYnVpbHRpbkZ1bmN0aW9u
czsKICAgICBXZWJDb3JlQnVpbHRpbk5hbWVzIG1fYnVpbHRpbk5hbWVzOwogCi0gICAgc3RkOjp1
bmlxdWVfcHRyPEpTQzo6SGVhcENlbGxUeXBlPiBtX3J1bnRpbWVBcnJheUhlYXBDZWxsVHlwZTsK
LSAgICBzdGQ6OnVuaXF1ZV9wdHI8SlNDOjpIZWFwQ2VsbFR5cGU+IG1fcnVudGltZU9iamVjdEhl
YXBDZWxsVHlwZTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SlNDOjpIZWFwQ2VsbFR5cGU+IG1fd2lu
ZG93UHJveHlIZWFwQ2VsbFR5cGU7CisgICAgSlNDOjpJc29IZWFwQ2VsbFR5cGU8SlNDOjpSdW50
aW1lQXJyYXk+IG1fcnVudGltZUFycmF5SGVhcENlbGxUeXBlOworICAgIEpTQzo6SXNvSGVhcENl
bGxUeXBlPEpTQzo6QmluZGluZ3M6OlJ1bnRpbWVPYmplY3Q+IG1fcnVudGltZU9iamVjdEhlYXBD
ZWxsVHlwZTsKKyAgICBKU0M6Oklzb0hlYXBDZWxsVHlwZTxKU1dpbmRvd1Byb3h5PiBtX3dpbmRv
d1Byb3h5SGVhcENlbGxUeXBlOwogcHVibGljOgotICAgIHN0ZDo6dW5pcXVlX3B0cjxKU0M6Okhl
YXBDZWxsVHlwZT4gbV9oZWFwQ2VsbFR5cGVGb3JKU0RPTVdpbmRvdzsKLSAgICBzdGQ6OnVuaXF1
ZV9wdHI8SlNDOjpIZWFwQ2VsbFR5cGU+IG1faGVhcENlbGxUeXBlRm9ySlNEZWRpY2F0ZWRXb3Jr
ZXJHbG9iYWxTY29wZTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SlNDOjpIZWFwQ2VsbFR5cGU+IG1f
aGVhcENlbGxUeXBlRm9ySlNSZW1vdGVET01XaW5kb3c7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPEpT
Qzo6SGVhcENlbGxUeXBlPiBtX2hlYXBDZWxsVHlwZUZvckpTV29ya2VyR2xvYmFsU2NvcGU7Ci0g
ICAgc3RkOjp1bmlxdWVfcHRyPEpTQzo6SGVhcENlbGxUeXBlPiBtX2hlYXBDZWxsVHlwZUZvckpT
U2hhcmVkV29ya2VyR2xvYmFsU2NvcGU7CisgICAgSlNDOjpJc29IZWFwQ2VsbFR5cGU8SlNET01X
aW5kb3c+IG1faGVhcENlbGxUeXBlRm9ySlNET01XaW5kb3c7CisgICAgSlNDOjpJc29IZWFwQ2Vs
bFR5cGU8SlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZT4gbV9oZWFwQ2VsbFR5cGVGb3JKU0Rl
ZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlOworICAgIEpTQzo6SXNvSGVhcENlbGxUeXBlPEpTUmVt
b3RlRE9NV2luZG93PiBtX2hlYXBDZWxsVHlwZUZvckpTUmVtb3RlRE9NV2luZG93OworICAgIEpT
Qzo6SXNvSGVhcENlbGxUeXBlPEpTV29ya2VyR2xvYmFsU2NvcGU+IG1faGVhcENlbGxUeXBlRm9y
SlNXb3JrZXJHbG9iYWxTY29wZTsKKyAgICBKU0M6Oklzb0hlYXBDZWxsVHlwZTxKU1NoYXJlZFdv
cmtlckdsb2JhbFNjb3BlPiBtX2hlYXBDZWxsVHlwZUZvckpTU2hhcmVkV29ya2VyR2xvYmFsU2Nv
cGU7CiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotICAgIHN0ZDo6dW5pcXVlX3B0cjxKU0M6
OkhlYXBDZWxsVHlwZT4gbV9oZWFwQ2VsbFR5cGVGb3JKU1NlcnZpY2VXb3JrZXJHbG9iYWxTY29w
ZTsKKyAgICBKU0M6Oklzb0hlYXBDZWxsVHlwZTxKU1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZT4g
bV9oZWFwQ2VsbFR5cGVGb3JKU1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZTsKICNlbmRpZgotICAg
IHN0ZDo6dW5pcXVlX3B0cjxKU0M6OkhlYXBDZWxsVHlwZT4gbV9oZWFwQ2VsbFR5cGVGb3JKU1dv
cmtsZXRHbG9iYWxTY29wZTsKKyAgICBKU0M6Oklzb0hlYXBDZWxsVHlwZTxKU1dvcmtsZXRHbG9i
YWxTY29wZT4gbV9oZWFwQ2VsbFR5cGVGb3JKU1dvcmtsZXRHbG9iYWxTY29wZTsKICNpZiBFTkFC
TEUoQ1NTX1BBSU5USU5HX0FQSSkKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SlNDOjpIZWFwQ2VsbFR5
cGU+IG1faGVhcENlbGxUeXBlRm9ySlNQYWludFdvcmtsZXRHbG9iYWxTY29wZTsKKyAgICBKU0M6
Oklzb0hlYXBDZWxsVHlwZTxKU1BhaW50V29ya2xldEdsb2JhbFNjb3BlPiBtX2hlYXBDZWxsVHlw
ZUZvckpTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGU7CiAjZW5kaWYKICNpZiBFTkFCTEUoV0VCX0FV
RElPKQotICAgIHN0ZDo6dW5pcXVlX3B0cjxKU0M6OkhlYXBDZWxsVHlwZT4gbV9oZWFwQ2VsbFR5
cGVGb3JKU0F1ZGlvV29ya2xldEdsb2JhbFNjb3BlOworICAgIEpTQzo6SXNvSGVhcENlbGxUeXBl
PEpTQXVkaW9Xb3JrbGV0R2xvYmFsU2NvcGU+IG1faGVhcENlbGxUeXBlRm9ySlNBdWRpb1dvcmts
ZXRHbG9iYWxTY29wZTsKICNlbmRpZgotICAgIHN0ZDo6dW5pcXVlX3B0cjxKU0M6OkhlYXBDZWxs
VHlwZT4gbV9oZWFwQ2VsbFR5cGVGb3JKU0lEQlNlcmlhbGl6YXRpb25HbG9iYWxPYmplY3Q7Cisg
ICAgSlNDOjpJc29IZWFwQ2VsbFR5cGU8SlNJREJTZXJpYWxpemF0aW9uR2xvYmFsT2JqZWN0PiBt
X2hlYXBDZWxsVHlwZUZvckpTSURCU2VyaWFsaXphdGlvbkdsb2JhbE9iamVjdDsKIAogcHJpdmF0
ZToKICAgICBKU0M6Oklzb1N1YnNwYWNlIG1fZG9tQnVpbHRpbkNvbnN0cnVjdG9yU3BhY2U7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0
b3JKUy5wbQkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy9Db2RlR2VuZXJhdG9ySlMucG0JKHdvcmtpbmcgY29weSkKQEAgLTQ4NTIsMTMgKzQ4NTIs
MTMgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICBwdXNoKEBpbXBsQ29udGVudCwg
IiAgICBpZiAoYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvciR7aW50ZXJmYWNlTmFt
ZX0uZ2V0KCkpXG4iKTsKICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgcmV0dXJuIHNw
YWNlO1xuIik7CiAgICAgaWYgKElzRE9NR2xvYmFsT2JqZWN0KCRpbnRlcmZhY2UpKSB7Ci0gICAg
ICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yJHtpbnRlcmZh
Y2VOYW1lfSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhl
YXAsICpjbGllbnREYXRhLm1faGVhcENlbGxUeXBlRm9yJHtjbGFzc05hbWV9LCAke2NsYXNzTmFt
ZX0pO1xuIik7CisgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHNwYWNlcy5tX3N1YnNw
YWNlRm9yJHtpbnRlcmZhY2VOYW1lfSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJT
UEFDRV9JTklUKHZtLmhlYXAsIGNsaWVudERhdGEubV9oZWFwQ2VsbFR5cGVGb3Ike2NsYXNzTmFt
ZX0sICR7Y2xhc3NOYW1lfSk7XG4iKTsKICAgICB9IGVsc2UgewogICAgICAgICBwdXNoKEBpbXBs
Q29udGVudCwgIiAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0
cnVjdGlibGVPYmplY3QsICR7Y2xhc3NOYW1lfT4gfHwgISR7Y2xhc3NOYW1lfTo6bmVlZHNEZXN0
cnVjdGlvbik7XG4iKTsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgaWYgY29uc3Rl
eHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCAke2NsYXNz
TmFtZX0+KVxuIik7Ci0gICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICBzcGFjZXMu
bV9zdWJzcGFjZUZvciR7aW50ZXJmYWNlTmFtZX0gPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJ
U09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxU
eXBlLCAke2NsYXNzTmFtZX0pO1xuIik7CisgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAg
ICAgICBzcGFjZXMubV9zdWJzcGFjZUZvciR7aW50ZXJmYWNlTmFtZX0gPSBtYWtlVW5pcXVlPElz
b1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmpl
Y3RIZWFwQ2VsbFR5cGUoKSwgJHtjbGFzc05hbWV9KTtcbiIpOwogICAgICAgICBwdXNoKEBpbXBs
Q29udGVudCwgIiAgICBlbHNlXG4iKTsKLSAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAg
ICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yJHtpbnRlcmZhY2VOYW1lfSA9IG1ha2VVbmlxdWU8SXNv
U3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5jZWxsSGVhcENlbGxUeXBl
LCAke2NsYXNzTmFtZX0pO1xuIik7CisgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAg
ICBzcGFjZXMubV9zdWJzcGFjZUZvciR7aW50ZXJmYWNlTmFtZX0gPSBtYWtlVW5pcXVlPElzb1N1
YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCks
ICR7Y2xhc3NOYW1lfSk7XG4iKTsKICAgICB9CiAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAg
YXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvciR7aW50ZXJmYWNlTmFtZX0uZ2V0KCk7
XG4iKTsKICAgICBwdXNoKEBpbXBsQ29udGVudCwgIklHTk9SRV9XQVJOSU5HU19CRUdJTihcInVu
cmVhY2hhYmxlLWNvZGVcIilcbiIpOwpAQCAtNjczMSw5ICs2NzMxLDkgQEAgcHVibGljOgogICAg
ICAgICAgICAgcmV0dXJuIHNwYWNlOwogICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFz
ZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsICR7aXRlcmF0b3JOYW1lfT4gfHwgISR7
aXRlcmF0b3JOYW1lfTo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgICAgIGlmIGNvbnN0ZXhwciAo
c3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgJHtpdGVyYXRvck5h
bWV9PikKLSAgICAgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yJHtpdGVyYXRvck5hbWV9ID0g
bWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmRl
c3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5nZXQoKSwgJHtpdGVyYXRvck5hbWV9KTsKKyAg
ICAgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yJHtpdGVyYXRvck5hbWV9ID0gbWFrZVVuaXF1
ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxl
T2JqZWN0SGVhcENlbGxUeXBlKCksICR7aXRlcmF0b3JOYW1lfSk7CiAgICAgICAgIGVsc2UKLSAg
ICAgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yJHtpdGVyYXRvck5hbWV9ID0gbWFrZVVuaXF1
ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmNlbGxIZWFwQ2Vs
bFR5cGUsICR7aXRlcmF0b3JOYW1lfSk7CisgICAgICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZv
ciR7aXRlcmF0b3JOYW1lfSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9J
TklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgJHtpdGVyYXRvck5hbWV9KTsKICAg
ICAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvciR7aXRlcmF0b3JOYW1lfS5n
ZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTihcInVucmVhY2hhYmxlLWNvZGVcIikKIElHTk9S
RV9XQVJOSU5HU19CRUdJTihcInRhdXRvbG9naWNhbC1jb21wYXJlXCIpCkBAIC03NTI5LDcgKzc1
MjksNyBAQCBzdWIgR2VuZXJhdGVQcm90b3R5cGVEZWNsYXJhdGlvbgogICAgIHB1c2goQCRvdXRw
dXRBcnJheSwgIiAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpW
TSYgdm0pXG4iKTsKICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAge1xuIik7CiAgICAgcHVz
aChAJG91dHB1dEFycmF5LCAiICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFS
QUJMRSgke3Byb3RvdHlwZUNsYXNzTmFtZX0sIEJhc2UpO1xuIik7Ci0gICAgcHVzaChAJG91dHB1
dEFycmF5LCAiICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7XG4iKTsKKyAgICBw
dXNoKEAkb3V0cHV0QXJyYXksICIgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgp
O1xuIik7CiAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIH1cbiIpOwogCiAgICAgcHVzaChA
JG91dHB1dEFycmF5LCAiICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJl
KEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNW
YWx1ZSBwcm90b3R5cGUpXG4iKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU0RPTVdpbmRvdy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTRE9NV2luZG93LmNwcAkocmV2aXNpb24gMjg2MDk1
KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTRE9NV2luZG93
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzY5LDcgKzM2OSw3IEBAIEpTQzo6SXNvU3Vic3BhY2Uq
IEpTRE9NV2luZG93OjpzdWJzcGFjZUYKICAgICBhdXRvJiBzcGFjZXMgPSBjbGllbnREYXRhLnN1
YnNwYWNlcygpOwogICAgIGlmIChhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yRE9N
V2luZG93LmdldCgpKQogICAgICAgICByZXR1cm4gc3BhY2U7Ci0gICAgc3BhY2VzLm1fc3Vic3Bh
Y2VGb3JET01XaW5kb3cgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5J
VCh2bS5oZWFwLCAqY2xpZW50RGF0YS5tX2hlYXBDZWxsVHlwZUZvckpTRE9NV2luZG93LCBKU0RP
TVdpbmRvdyk7CisgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JET01XaW5kb3cgPSBtYWtlVW5pcXVl
PElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCBjbGllbnREYXRhLm1faGVh
cENlbGxUeXBlRm9ySlNET01XaW5kb3csIEpTRE9NV2luZG93KTsKICAgICBhdXRvKiBzcGFjZSA9
IHNwYWNlcy5tX3N1YnNwYWNlRm9yRE9NV2luZG93LmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JF
R0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dp
Y2FsLWNvbXBhcmUiKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTRE9NV2luZG93LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTRE9NV2luZG93LmgJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU0RPTVdpbmRvdy5oCSh3b3JraW5n
IGNvcHkpCkBAIC04NSw3ICs4NSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJz
cGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNT
RVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU0RPTVdpbmRvd1Byb3RvdHlwZSwgQmFzZSk7Ci0g
ICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5w
bGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3Jl
YXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpJbmRleDogU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlLmNwcAkocmV2aXNpb24gMjg2MDk1KQorKysgU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTRGVkaWNhdGVkV29ya2VyR2xv
YmFsU2NvcGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNzAsNyArMTcwLDcgQEAgSlNDOjpJc29T
dWJzcGFjZSogSlNEZWRpY2F0ZWRXb3JrZXJHbG9iYQogICAgIGF1dG8mIHNwYWNlcyA9IGNsaWVu
dERhdGEuc3Vic3BhY2VzKCk7CiAgICAgaWYgKGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3Bh
Y2VGb3JEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZS5nZXQoKSkKICAgICAgICAgcmV0dXJuIHNw
YWNlOwotICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUg
PSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqY2xp
ZW50RGF0YS5tX2hlYXBDZWxsVHlwZUZvckpTRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUsIEpT
RGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUpOworICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yRGVk
aWNhdGVkV29ya2VyR2xvYmFsU2NvcGUgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VC
U1BBQ0VfSU5JVCh2bS5oZWFwLCBjbGllbnREYXRhLm1faGVhcENlbGxUeXBlRm9ySlNEZWRpY2F0
ZWRXb3JrZXJHbG9iYWxTY29wZSwgSlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZSk7CiAgICAg
YXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvckRlZGljYXRlZFdvcmtlckdsb2JhbFNj
b3BlLmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKIElH
Tk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRleDogU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTRGVkaWNhdGVkV29ya2VyR2xvYmFs
U2NvcGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZS5oCShyZXZpc2lvbiAyODYwOTUpCisr
KyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNEZWRpY2F0ZWRXb3Jr
ZXJHbG9iYWxTY29wZS5oCSh3b3JraW5nIGNvcHkpCkBAIC04Miw3ICs4Miw3IEBAIHB1YmxpYzoK
ICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAg
ICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU0RlZGlj
YXRlZFdvcmtlckdsb2JhbFNjb3BlUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2
bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2Uo
KTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlND
OjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVl
IHByb3RvdHlwZSkKICAgICB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNFeHBvc2VkU3Rhci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTRXhwb3NlZFN0YXIuY3BwCShyZXZpc2lvbiAyODYw
OTUpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNFeHBvc2Vk
U3Rhci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcxLDcgKzcxLDcgQEAgcHVibGljOgogICAgIHN0
YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAg
ICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTRXhwb3NlZFN0YXJQ
cm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7Cisg
ICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KICAgICBzdGF0aWMg
SlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKQEAg
LTIzNiw5ICsyMzYsOSBAQCBKU0M6Oklzb1N1YnNwYWNlKiBKU0V4cG9zZWRTdGFyOjpzdWJzcGFj
CiAgICAgICAgIHJldHVybiBzcGFjZTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9v
Zl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTRXhwb3NlZFN0YXI+IHx8ICFKU0V4cG9z
ZWRTdGFyOjpuZWVkc0Rlc3RydWN0aW9uKTsKICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFz
ZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTRXhwb3NlZFN0YXI+KQotICAgICAg
ICBzcGFjZXMubV9zdWJzcGFjZUZvckV4cG9zZWRTdGFyID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFj
ZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBD
ZWxsVHlwZSwgSlNFeHBvc2VkU3Rhcik7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yRXhw
b3NlZFN0YXIgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5o
ZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwgSlNFeHBvc2VkU3Rhcik7
CiAgICAgZWxzZQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvckV4cG9zZWRTdGFyID0gbWFr
ZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmNlbGxI
ZWFwQ2VsbFR5cGUsIEpTRXhwb3NlZFN0YXIpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZv
ckV4cG9zZWRTdGFyID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQo
dm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU0V4cG9zZWRTdGFyKTsKICAgICBhdXRv
KiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yRXhwb3NlZFN0YXIuZ2V0KCk7CiBJR05PUkVf
V0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lO
KCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNFeHBvc2VkVG9Xb3JrZXJBbmRXaW5kb3cuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU0V4cG9zZWRUb1dv
cmtlckFuZFdpbmRvdy5jcHAJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU0V4cG9zZWRUb1dvcmtlckFuZFdpbmRvdy5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTExMiw3ICsxMTIsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6
SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RB
VElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNFeHBvc2VkVG9Xb3JrZXJBbmRXaW5k
b3dQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7
CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KICAgICBzdGF0
aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsK
QEAgLTI1Miw5ICsyNTIsOSBAQCBKU0M6Oklzb1N1YnNwYWNlKiBKU0V4cG9zZWRUb1dvcmtlckFu
ZFdpCiAgICAgICAgIHJldHVybiBzcGFjZTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFz
ZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTRXhwb3NlZFRvV29ya2VyQW5kV2lu
ZG93PiB8fCAhSlNFeHBvc2VkVG9Xb3JrZXJBbmRXaW5kb3c6Om5lZWRzRGVzdHJ1Y3Rpb24pOwog
ICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9i
amVjdCwgSlNFeHBvc2VkVG9Xb3JrZXJBbmRXaW5kb3c+KQotICAgICAgICBzcGFjZXMubV9zdWJz
cGFjZUZvckV4cG9zZWRUb1dvcmtlckFuZFdpbmRvdyA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+
IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2Vs
bFR5cGUsIEpTRXhwb3NlZFRvV29ya2VyQW5kV2luZG93KTsKKyAgICAgICAgc3BhY2VzLm1fc3Vi
c3BhY2VGb3JFeHBvc2VkVG9Xb3JrZXJBbmRXaW5kb3cgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNl
PiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2Vs
bFR5cGUoKSwgSlNFeHBvc2VkVG9Xb3JrZXJBbmRXaW5kb3cpOwogICAgIGVsc2UKLSAgICAgICAg
c3BhY2VzLm1fc3Vic3BhY2VGb3JFeHBvc2VkVG9Xb3JrZXJBbmRXaW5kb3cgPSBtYWtlVW5pcXVl
PElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uY2VsbEhlYXBDZWxs
VHlwZSwgSlNFeHBvc2VkVG9Xb3JrZXJBbmRXaW5kb3cpOworICAgICAgICBzcGFjZXMubV9zdWJz
cGFjZUZvckV4cG9zZWRUb1dvcmtlckFuZFdpbmRvdyA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+
IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNFeHBv
c2VkVG9Xb3JrZXJBbmRXaW5kb3cpOwogICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3Bh
Y2VGb3JFeHBvc2VkVG9Xb3JrZXJBbmRXaW5kb3cuZ2V0KCk7CiBJR05PUkVfV0FSTklOR1NfQkVH
SU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2lj
YWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNQYWludFdvcmtsZXRHbG9iYWxTY29wZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUu
Y3BwCShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNQYWludFdvcmtsZXRHbG9iYWxTY29wZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTE2OSw3ICsxNjksNyBAQCBKU0M6Oklzb1N1YnNwYWNlKiBKU1BhaW50V29ya2xldEdsb2JhbFNj
CiAgICAgYXV0byYgc3BhY2VzID0gY2xpZW50RGF0YS5zdWJzcGFjZXMoKTsKICAgICBpZiAoYXV0
byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclBhaW50V29ya2xldEdsb2JhbFNjb3BlLmdl
dCgpKQogICAgICAgICByZXR1cm4gc3BhY2U7Ci0gICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JQYWlu
dFdvcmtsZXRHbG9iYWxTY29wZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFD
RV9JTklUKHZtLmhlYXAsICpjbGllbnREYXRhLm1faGVhcENlbGxUeXBlRm9ySlNQYWludFdvcmts
ZXRHbG9iYWxTY29wZSwgSlNQYWludFdvcmtsZXRHbG9iYWxTY29wZSk7CisgICAgc3BhY2VzLm1f
c3Vic3BhY2VGb3JQYWludFdvcmtsZXRHbG9iYWxTY29wZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3Bh
Y2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIGNsaWVudERhdGEubV9oZWFwQ2VsbFR5cGVG
b3JKU1BhaW50V29ya2xldEdsb2JhbFNjb3BlLCBKU1BhaW50V29ya2xldEdsb2JhbFNjb3BlKTsK
ICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yUGFpbnRXb3JrbGV0R2xvYmFs
U2NvcGUuZ2V0KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQog
SUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNQYWludFdvcmtsZXRHbG9iYWxT
Y29wZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmgJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1BhaW50V29ya2xldEdsb2Jh
bFNjb3BlLmgJKHdvcmtpbmcgY29weSkKQEAgLTgyLDcgKzgyLDcgQEAgcHVibGljOgogICAgIHN0
YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAg
ICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTUGFpbnRXb3JrbGV0
R2xvYmFsU2NvcGVQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2Jq
ZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0K
ICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwg
SlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBl
KQogICAgIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTU2VydmljZVdvcmtlckdsb2JhbFNjb3BlLmNw
cAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTU2VydmljZVdvcmtlckdsb2JhbFNjb3BlLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MTY5LDcgKzE2OSw3IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTU2VydmljZVdvcmtlckdsb2JhbFMK
ICAgICBhdXRvJiBzcGFjZXMgPSBjbGllbnREYXRhLnN1YnNwYWNlcygpOwogICAgIGlmIChhdXRv
KiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yU2VydmljZVdvcmtlckdsb2JhbFNjb3BlLmdl
dCgpKQogICAgICAgICByZXR1cm4gc3BhY2U7Ci0gICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JTZXJ2
aWNlV29ya2VyR2xvYmFsU2NvcGUgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BB
Q0VfSU5JVCh2bS5oZWFwLCAqY2xpZW50RGF0YS5tX2hlYXBDZWxsVHlwZUZvckpTU2VydmljZVdv
cmtlckdsb2JhbFNjb3BlLCBKU1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSk7CisgICAgc3BhY2Vz
Lm1fc3Vic3BhY2VGb3JTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUgPSBtYWtlVW5pcXVlPElzb1N1
YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCBjbGllbnREYXRhLm1faGVhcENlbGxU
eXBlRm9ySlNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUsIEpTU2VydmljZVdvcmtlckdsb2JhbFNj
b3BlKTsKICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yU2VydmljZVdvcmtl
ckdsb2JhbFNjb3BlLmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1j
b2RlIikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRl
eDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTU2VydmljZVdvcmtl
ckdsb2JhbFNjb3BlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTU2VydmljZVdvcmtlckdsb2JhbFNjb3BlLmgJKHJldmlzaW9uIDI4NjA5
NSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1NlcnZpY2VX
b3JrZXJHbG9iYWxTY29wZS5oCSh3b3JraW5nIGNvcHkpCkBAIC04Miw3ICs4Miw3IEBAIHB1Ymxp
YzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0p
CiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Nl
cnZpY2VXb3JrZXJHbG9iYWxTY29wZVByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAm
dm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNl
KCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpT
Qzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1
ZSBwcm90b3R5cGUpCiAgICAgewpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTU2hhcmVkV29ya2VyR2xvYmFsU2NvcGUuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1NoYXJlZFdvcmtlckdsb2Jh
bFNjb3BlLmNwcAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTU2hhcmVkV29ya2VyR2xvYmFsU2NvcGUuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xNTMsNyArMTUzLDcgQEAgSlNDOjpJc29TdWJzcGFjZSogSlNTaGFyZWRXb3JrZXJH
bG9iYWxTYwogICAgIGF1dG8mIHNwYWNlcyA9IGNsaWVudERhdGEuc3Vic3BhY2VzKCk7CiAgICAg
aWYgKGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JTaGFyZWRXb3JrZXJHbG9iYWxT
Y29wZS5nZXQoKSkKICAgICAgICAgcmV0dXJuIHNwYWNlOwotICAgIHNwYWNlcy5tX3N1YnNwYWNl
Rm9yU2hhcmVkV29ya2VyR2xvYmFsU2NvcGUgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09f
U1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqY2xpZW50RGF0YS5tX2hlYXBDZWxsVHlwZUZvckpTU2hh
cmVkV29ya2VyR2xvYmFsU2NvcGUsIEpTU2hhcmVkV29ya2VyR2xvYmFsU2NvcGUpOworICAgIHNw
YWNlcy5tX3N1YnNwYWNlRm9yU2hhcmVkV29ya2VyR2xvYmFsU2NvcGUgPSBtYWtlVW5pcXVlPElz
b1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCBjbGllbnREYXRhLm1faGVhcENl
bGxUeXBlRm9ySlNTaGFyZWRXb3JrZXJHbG9iYWxTY29wZSwgSlNTaGFyZWRXb3JrZXJHbG9iYWxT
Y29wZSk7CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclNoYXJlZFdvcmtl
ckdsb2JhbFNjb3BlLmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1j
b2RlIikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRl
eDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTU2hhcmVkV29ya2Vy
R2xvYmFsU2NvcGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNTaGFyZWRXb3JrZXJHbG9iYWxTY29wZS5oCShyZXZpc2lvbiAyODYwOTUp
CisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNTaGFyZWRXb3Jr
ZXJHbG9iYWxTY29wZS5oCSh3b3JraW5nIGNvcHkpCkBAIC04Miw3ICs4Miw3IEBAIHB1YmxpYzoK
ICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAg
ICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1NoYXJl
ZFdvcmtlckdsb2JhbFNjb3BlUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5w
bGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsK
ICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpW
TSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHBy
b3RvdHlwZSkKICAgICB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0Q0VSZWFjdGlvbnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDRVJlYWN0aW9ucy5jcHAJKHJldmlzaW9u
IDI4NjA5NSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RDRVJlYWN0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTkxLDcgKzkxLDcgQEAgcHVibGlj
OgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkK
ICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVz
dENFUmVhY3Rpb25zUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9i
amVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9
CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0s
IEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlw
ZSkKICAgICB7CkBAIC00MzgsOSArNDM4LDkgQEAgSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0Q0VS
ZWFjdGlvbnM6OnN1YgogICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fzc2VydChz
dGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RDRVJlYWN0
aW9ucz4gfHwgIUpTVGVzdENFUmVhY3Rpb25zOjpuZWVkc0Rlc3RydWN0aW9uKTsKICAgICBpZiBj
b25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpT
VGVzdENFUmVhY3Rpb25zPikKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0Q0VSZWFj
dGlvbnMgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFw
LCAqdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLCBKU1Rlc3RDRVJlYWN0aW9ucyk7
CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdENFUmVhY3Rpb25zID0gbWFrZVVuaXF1
ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxl
T2JqZWN0SGVhcENlbGxUeXBlKCksIEpTVGVzdENFUmVhY3Rpb25zKTsKICAgICBlbHNlCi0gICAg
ICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdENFUmVhY3Rpb25zID0gbWFrZVVuaXF1ZTxJc29T
dWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmNlbGxIZWFwQ2VsbFR5cGUs
IEpTVGVzdENFUmVhY3Rpb25zKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0Q0VS
ZWFjdGlvbnMgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5o
ZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCksIEpTVGVzdENFUmVhY3Rpb25zKTsKICAgICBhdXRv
KiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdENFUmVhY3Rpb25zLmdldCgpOwogSUdO
T1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKIElHTk9SRV9XQVJOSU5HU19C
RUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXIuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RD
RVJlYWN0aW9uc1N0cmluZ2lmaWVyLmNwcAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENFUmVhY3Rpb25zU3RyaW5naWZp
ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NSw3ICs3NSw3IEBAIHB1YmxpYzoKICAgICBzdGF0
aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAg
ICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3RDRVJlYWN0aW9u
c1N0cmluZ2lmaWVyUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9i
amVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9
CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0s
IEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlw
ZSkKICAgICB7CkBAIC0yNjQsOSArMjY0LDkgQEAgSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0Q0VS
ZWFjdGlvbnNTdHJpbgogICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fzc2VydChz
dGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RDRVJlYWN0
aW9uc1N0cmluZ2lmaWVyPiB8fCAhSlNUZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllcjo6bmVlZHNE
ZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpT
RGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyPikKLSAgICAg
ICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllciA9IG1ha2VV
bmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5kZXN0cnVj
dGlibGVPYmplY3RIZWFwQ2VsbFR5cGUsIEpTVGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXIpOwor
ICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyID0g
bWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVz
dHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCksIEpTVGVzdENFUmVhY3Rpb25zU3RyaW5naWZp
ZXIpOwogICAgIGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0Q0VSZWFjdGlv
bnNTdHJpbmdpZmllciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklU
KHZtLmhlYXAsICp2bS5jZWxsSGVhcENlbGxUeXBlLCBKU1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lm
aWVyKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0Q0VSZWFjdGlvbnNTdHJpbmdp
ZmllciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAs
IHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllcik7CiAg
ICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RDRVJlYWN0aW9uc1N0cmlu
Z2lmaWVyLmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikK
IElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRleDogU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENhbGxUcmFjZXIuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RDYWxsVHJhY2VyLmNwcAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENhbGxUcmFjZXIuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC05Nyw3ICs5Nyw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFj
ZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJU
X0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3RDYWxsVHJhY2VyUHJvdG90eXBlLCBCYXNlKTsK
LSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZt
LnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBj
cmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC01MTMsOSArNTEzLDkgQEAg
SlNDOjpJc29TdWJzcGFjZSogSlNUZXN0Q2FsbFRyYWNlcjo6c3VicwogICAgICAgICByZXR1cm4g
c3BhY2U7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1
Y3RpYmxlT2JqZWN0LCBKU1Rlc3RDYWxsVHJhY2VyPiB8fCAhSlNUZXN0Q2FsbFRyYWNlcjo6bmVl
ZHNEZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6
OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RDYWxsVHJhY2VyPikKLSAgICAgICAgc3BhY2Vz
Lm1fc3Vic3BhY2VGb3JUZXN0Q2FsbFRyYWNlciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElT
T19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5
cGUsIEpTVGVzdENhbGxUcmFjZXIpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RD
YWxsVHJhY2VyID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0u
aGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCksIEpTVGVzdENhbGxUcmFj
ZXIpOwogICAgIGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0Q2FsbFRyYWNl
ciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2
bS5jZWxsSGVhcENlbGxUeXBlLCBKU1Rlc3RDYWxsVHJhY2VyKTsKKyAgICAgICAgc3BhY2VzLm1f
c3Vic3BhY2VGb3JUZXN0Q2FsbFRyYWNlciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19T
VUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0Q2FsbFRy
YWNlcik7CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RDYWxsVHJh
Y2VyLmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKIElH
Tk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRleDogU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENsYXNzV2l0aEpTQnVpbHRp
bkNvbnN0cnVjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3IuY3BwCShy
ZXZpc2lvbiAyODYwOTUpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3IuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC02NCw3ICs2NCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSog
c3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lT
T19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3RvclBy
b3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAg
ICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBK
U0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAt
MTc2LDkgKzE3Niw5IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdENsYXNzV2l0aEpTQnVpbHQK
ICAgICAgICAgcmV0dXJuIHNwYWNlOwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29m
X3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29u
c3RydWN0b3I+IHx8ICFKU1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3Rvcjo6bmVlZHNE
ZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpT
RGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3Rvcj4p
Ci0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0
cnVjdG9yID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVh
cCwgKnZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSwgSlNUZXN0Q2xhc3NXaXRoSlNC
dWlsdGluQ29uc3RydWN0b3IpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RDbGFz
c1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3RvciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19T
VUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgp
LCBKU1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3Rvcik7CiAgICAgZWxzZQotICAgICAg
ICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3RvciA9
IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5j
ZWxsSGVhcENlbGxUeXBlLCBKU1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3Rvcik7Cisg
ICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVj
dG9yID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwg
dm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3Rv
cik7CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RDbGFzc1dpdGhK
U0J1aWx0aW5Db25zdHJ1Y3Rvci5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFj
aGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJl
IikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RD
b25kaXRpb25hbEluY2x1ZGVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlcy5jcHAJKHJldmlz
aW9uIDI4NjA5NSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTI3LDcgKzEy
Nyw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3Io
SlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9T
SEFSQUJMRShKU1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzUHJvdG90eXBlLCBCYXNlKTsKLSAgICAg
ICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWlu
T2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVT
dHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
SlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC03ODksOSArNzg5LDkgQEAgSlNDOjpJ
c29TdWJzcGFjZSogSlNUZXN0Q29uZGl0aW9uYWxJbmNsdQogICAgICAgICByZXR1cm4gc3BhY2U7
CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxl
T2JqZWN0LCBKU1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzPiB8fCAhSlNUZXN0Q29uZGl0aW9uYWxJ
bmNsdWRlczo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jh
c2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RDb25kaXRpb25hbEluY2x1
ZGVzPikKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0Q29uZGl0aW9uYWxJbmNsdWRl
cyA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2
bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUsIEpTVGVzdENvbmRpdGlvbmFsSW5jbHVk
ZXMpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RDb25kaXRpb25hbEluY2x1ZGVz
ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0u
ZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCksIEpTVGVzdENvbmRpdGlvbmFsSW5jbHVk
ZXMpOwogICAgIGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0Q29uZGl0aW9u
YWxJbmNsdWRlcyA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZt
LmhlYXAsICp2bS5jZWxsSGVhcENlbGxUeXBlLCBKU1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzKTsK
KyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0Q29uZGl0aW9uYWxJbmNsdWRlcyA9IG1h
a2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxI
ZWFwQ2VsbFR5cGUoKSwgSlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlcyk7CiAgICAgYXV0byogc3Bh
Y2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RDb25kaXRpb25hbEluY2x1ZGVzLmdldCgpOwog
SUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKIElHTk9SRV9XQVJOSU5H
U19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENvbmRpdGlvbmFsbHlSZWFkV3JpdGUuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RDb25kaXRpb25hbGx5UmVhZFdyaXRlLmNwcAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENvbmRpdGlvbmFsbHlSZWFk
V3JpdGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05OCw3ICs5OCw3IEBAIHB1YmxpYzoKICAgICBz
dGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewog
ICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3RDb25kaXRp
b25hbGx5UmVhZFdyaXRlUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFp
bk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAg
ICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYg
dm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3Rv
dHlwZSkKICAgICB7CkBAIC02MTEsOSArNjExLDkgQEAgSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0
Q29uZGl0aW9uYWxseVJlYQogICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fzc2Vy
dChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RDb25k
aXRpb25hbGx5UmVhZFdyaXRlPiB8fCAhSlNUZXN0Q29uZGl0aW9uYWxseVJlYWRXcml0ZTo6bmVl
ZHNEZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6
OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RDb25kaXRpb25hbGx5UmVhZFdyaXRlPikKLSAg
ICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0Q29uZGl0aW9uYWxseVJlYWRXcml0ZSA9IG1h
a2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5kZXN0
cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUsIEpTVGVzdENvbmRpdGlvbmFsbHlSZWFkV3JpdGUp
OworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RDb25kaXRpb25hbGx5UmVhZFdyaXRl
ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0u
ZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCksIEpTVGVzdENvbmRpdGlvbmFsbHlSZWFk
V3JpdGUpOwogICAgIGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0Q29uZGl0
aW9uYWxseVJlYWRXcml0ZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9J
TklUKHZtLmhlYXAsICp2bS5jZWxsSGVhcENlbGxUeXBlLCBKU1Rlc3RDb25kaXRpb25hbGx5UmVh
ZFdyaXRlKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0Q29uZGl0aW9uYWxseVJl
YWRXcml0ZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhl
YXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0Q29uZGl0aW9uYWxseVJlYWRXcml0ZSk7
CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RDb25kaXRpb25hbGx5
UmVhZFdyaXRlLmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2Rl
IikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRleDog
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERPTUpJVC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdERPTUpJVC5jcHAJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RET01KSVQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00
ODEsNyArNDgxLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJz
cGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NV
QlNQQUNFX1NIQVJBQkxFKEpTVGVzdERPTUpJVFByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJl
dHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVj
dFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0
dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6
SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAtMTI1Miw5ICsxMjUyLDkgQEAgSlNDOjpJc29T
dWJzcGFjZSogSlNUZXN0RE9NSklUOjpzdWJzcGFjZQogICAgICAgICByZXR1cm4gc3BhY2U7CiAg
ICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2Jq
ZWN0LCBKU1Rlc3RET01KSVQ+IHx8ICFKU1Rlc3RET01KSVQ6Om5lZWRzRGVzdHJ1Y3Rpb24pOwog
ICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9i
amVjdCwgSlNUZXN0RE9NSklUPikKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0RE9N
SklUID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwg
KnZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSwgSlNUZXN0RE9NSklUKTsKKyAgICAg
ICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0RE9NSklUID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFj
ZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENl
bGxUeXBlKCksIEpTVGVzdERPTUpJVCk7CiAgICAgZWxzZQotICAgICAgICBzcGFjZXMubV9zdWJz
cGFjZUZvclRlc3RET01KSVQgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0Vf
SU5JVCh2bS5oZWFwLCAqdm0uY2VsbEhlYXBDZWxsVHlwZSwgSlNUZXN0RE9NSklUKTsKKyAgICAg
ICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0RE9NSklUID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFj
ZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU1Rl
c3RET01KSVQpOwogICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0RE9N
SklULmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKIElH
Tk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRleDogU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERlZmF1bHRUb0pTT04uY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3REZWZhdWx0VG9KU09OLmNwcAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERlZmF1bHRUb0pTT04uY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMjQsNyArMTI0LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklz
b1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJ
Q19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdERlZmF1bHRUb0pTT05Qcm90b3R5
cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAg
IHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KICAgICBzdGF0aWMgSlNDOjpT
dHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKQEAgLTgwOCw5
ICs4MDgsOSBAQCBKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3REZWZhdWx0VG9KU09OOjpzCiAgICAg
ICAgIHJldHVybiBzcGFjZTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpT
Qzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdERlZmF1bHRUb0pTT04+IHx8ICFKU1Rlc3RE
ZWZhdWx0VG9KU09OOjpuZWVkc0Rlc3RydWN0aW9uKTsKICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6
aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdERlZmF1bHRUb0pT
T04+KQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3REZWZhdWx0VG9KU09OID0gbWFr
ZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmRlc3Ry
dWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSwgSlNUZXN0RGVmYXVsdFRvSlNPTik7CisgICAgICAg
IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdERlZmF1bHRUb0pTT04gPSBtYWtlVW5pcXVlPElzb1N1
YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RI
ZWFwQ2VsbFR5cGUoKSwgSlNUZXN0RGVmYXVsdFRvSlNPTik7CiAgICAgZWxzZQotICAgICAgICBz
cGFjZXMubV9zdWJzcGFjZUZvclRlc3REZWZhdWx0VG9KU09OID0gbWFrZVVuaXF1ZTxJc29TdWJz
cGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmNlbGxIZWFwQ2VsbFR5cGUsIEpT
VGVzdERlZmF1bHRUb0pTT04pOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3REZWZh
dWx0VG9KU09OID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0u
aGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3REZWZhdWx0VG9KU09OKTsKICAgICBh
dXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdERlZmF1bHRUb0pTT04uZ2V0KCk7
CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5J
TkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBv
c2VkLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkLmNwcAkocmV2aXNpb24g
Mjg2MDk1KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc1
LDcgKzc1LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFj
ZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQ
QUNFX1NIQVJBQkxFKEpTVGVzdERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZFByb3RvdHlw
ZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAg
cmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0
cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAtMjcwLDkg
KzI3MCw5IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdERlZmF1bHRUb0pTT05GaWwKICAgICAg
ICAgcmV0dXJuIHNwYWNlOwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlND
OjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBv
c2VkPiB8fCAhSlNUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkOjpuZWVkc0Rlc3Ry
dWN0aW9uKTsKICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0
cnVjdGlibGVPYmplY3QsIEpTVGVzdERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZD4pCi0g
ICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhw
b3NlZCA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAs
ICp2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUsIEpTVGVzdERlZmF1bHRUb0pTT05G
aWx0ZXJlZEJ5RXhwb3NlZCk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdERlZmF1
bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZCA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19T
VUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgp
LCBKU1Rlc3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWQpOwogICAgIGVsc2UKLSAgICAg
ICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2Vk
ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZt
LmNlbGxIZWFwQ2VsbFR5cGUsIEpTVGVzdERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZCk7
CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5
RXhwb3NlZCA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhl
YXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlF
eHBvc2VkKTsKICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdERlZmF1
bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZC5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigi
dW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1j
b21wYXJlIikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3REZWZhdWx0VG9KU09OSW5kaXJlY3RJbmhlcml0YW5jZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERlZmF1bHRUb0pT
T05JbmRpcmVjdEluaGVyaXRhbmNlLmNwcAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERlZmF1bHRUb0pTT05JbmRpcmVj
dEluaGVyaXRhbmNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjIsNyArNjIsNyBAQCBwdWJsaWM6
CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQog
ICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0
RGVmYXVsdFRvSlNPTkluZGlyZWN0SW5oZXJpdGFuY2VQcm90b3R5cGUsIEJhc2UpOwotICAgICAg
ICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5P
YmplY3RTcGFjZSgpOwogICAgIH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0
cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBK
U0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKQEAgLTE2Miw5ICsxNjIsOSBAQCBKU0M6Oklz
b1N1YnNwYWNlKiBKU1Rlc3REZWZhdWx0VG9KU09OSW5kCiAgICAgICAgIHJldHVybiBzcGFjZTsK
ICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVP
YmplY3QsIEpTVGVzdERlZmF1bHRUb0pTT05JbmRpcmVjdEluaGVyaXRhbmNlPiB8fCAhSlNUZXN0
RGVmYXVsdFRvSlNPTkluZGlyZWN0SW5oZXJpdGFuY2U6Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAg
IGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVj
dCwgSlNUZXN0RGVmYXVsdFRvSlNPTkluZGlyZWN0SW5oZXJpdGFuY2U+KQotICAgICAgICBzcGFj
ZXMubV9zdWJzcGFjZUZvclRlc3REZWZhdWx0VG9KU09OSW5kaXJlY3RJbmhlcml0YW5jZSA9IG1h
a2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5kZXN0
cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUsIEpTVGVzdERlZmF1bHRUb0pTT05JbmRpcmVjdElu
aGVyaXRhbmNlKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0RGVmYXVsdFRvSlNP
TkluZGlyZWN0SW5oZXJpdGFuY2UgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BB
Q0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwgSlNU
ZXN0RGVmYXVsdFRvSlNPTkluZGlyZWN0SW5oZXJpdGFuY2UpOwogICAgIGVsc2UKLSAgICAgICAg
c3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0RGVmYXVsdFRvSlNPTkluZGlyZWN0SW5oZXJpdGFuY2Ug
PSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0u
Y2VsbEhlYXBDZWxsVHlwZSwgSlNUZXN0RGVmYXVsdFRvSlNPTkluZGlyZWN0SW5oZXJpdGFuY2Up
OworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3REZWZhdWx0VG9KU09OSW5kaXJlY3RJ
bmhlcml0YW5jZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZt
LmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0RGVmYXVsdFRvSlNPTkluZGlyZWN0
SW5oZXJpdGFuY2UpOwogICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0
RGVmYXVsdFRvSlNPTkluZGlyZWN0SW5oZXJpdGFuY2UuZ2V0KCk7CiBJR05PUkVfV0FSTklOR1Nf
QkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xv
Z2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0RGVmYXVsdFRvSlNPTkluaGVyaXQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3REZWZhdWx0VG9KU09OSW5o
ZXJpdC5jcHAJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3REZWZhdWx0VG9KU09OSW5oZXJpdC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTg5LDcgKzg5LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNl
KiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRf
SVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdERlZmF1bHRUb0pTT05Jbmhlcml0UHJvdG90eXBl
LCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICBy
ZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3Ry
dWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC0yOTIsOSAr
MjkyLDkgQEAgSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0RGVmYXVsdFRvSlNPTkluaAogICAgICAg
ICByZXR1cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6
OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3REZWZhdWx0VG9KU09OSW5oZXJpdD4gfHwgIUpT
VGVzdERlZmF1bHRUb0pTT05Jbmhlcml0OjpuZWVkc0Rlc3RydWN0aW9uKTsKICAgICBpZiBjb25z
dGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVz
dERlZmF1bHRUb0pTT05Jbmhlcml0PikKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0
RGVmYXVsdFRvSlNPTkluaGVyaXQgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BB
Q0VfSU5JVCh2bS5oZWFwLCAqdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLCBKU1Rl
c3REZWZhdWx0VG9KU09OSW5oZXJpdCk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVz
dERlZmF1bHRUb0pTT05Jbmhlcml0ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQ
QUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCksIEpT
VGVzdERlZmF1bHRUb0pTT05Jbmhlcml0KTsKICAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1
YnNwYWNlRm9yVGVzdERlZmF1bHRUb0pTT05Jbmhlcml0ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFj
ZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmNlbGxIZWFwQ2VsbFR5cGUsIEpTVGVz
dERlZmF1bHRUb0pTT05Jbmhlcml0KTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0
RGVmYXVsdFRvSlNPTkluaGVyaXQgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BB
Q0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCksIEpTVGVzdERlZmF1bHRUb0pT
T05Jbmhlcml0KTsKICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdERl
ZmF1bHRUb0pTT05Jbmhlcml0LmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNo
YWJsZS1jb2RlIikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUi
KQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERl
ZmF1bHRUb0pTT05Jbmhlcml0RmluYWwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3REZWZhdWx0VG9KU09OSW5oZXJpdEZpbmFs
LmNwcAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdERlZmF1bHRUb0pTT05Jbmhlcml0RmluYWwuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC05MSw3ICs5MSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFj
ZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJU
X0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3REZWZhdWx0VG9KU09OSW5oZXJpdEZpbmFsUHJv
dG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAg
ICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpT
Qzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC0z
MzIsOSArMzMyLDkgQEAgSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0RGVmYXVsdFRvSlNPTkluaAog
ICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2Zf
djxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3REZWZhdWx0VG9KU09OSW5oZXJpdEZp
bmFsPiB8fCAhSlNUZXN0RGVmYXVsdFRvSlNPTkluaGVyaXRGaW5hbDo6bmVlZHNEZXN0cnVjdGlv
bik7CiAgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3Rp
YmxlT2JqZWN0LCBKU1Rlc3REZWZhdWx0VG9KU09OSW5oZXJpdEZpbmFsPikKLSAgICAgICAgc3Bh
Y2VzLm1fc3Vic3BhY2VGb3JUZXN0RGVmYXVsdFRvSlNPTkluaGVyaXRGaW5hbCA9IG1ha2VVbmlx
dWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5kZXN0cnVjdGli
bGVPYmplY3RIZWFwQ2VsbFR5cGUsIEpTVGVzdERlZmF1bHRUb0pTT05Jbmhlcml0RmluYWwpOwor
ICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3REZWZhdWx0VG9KU09OSW5oZXJpdEZpbmFs
ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0u
ZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCksIEpTVGVzdERlZmF1bHRUb0pTT05Jbmhl
cml0RmluYWwpOwogICAgIGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0RGVm
YXVsdFRvSlNPTkluaGVyaXRGaW5hbCA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJT
UEFDRV9JTklUKHZtLmhlYXAsICp2bS5jZWxsSGVhcENlbGxUeXBlLCBKU1Rlc3REZWZhdWx0VG9K
U09OSW5oZXJpdEZpbmFsKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0RGVmYXVs
dFRvSlNPTkluaGVyaXRGaW5hbCA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFD
RV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0RGVmYXVsdFRvSlNP
TkluaGVyaXRGaW5hbCk7CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRl
c3REZWZhdWx0VG9KU09OSW5oZXJpdEZpbmFsLmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lO
KCJ1bnJlYWNoYWJsZS1jb2RlIikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2Fs
LWNvbXBhcmUiKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGUuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3REZWxlZ2F0
ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlLmNwcAkocmV2aXNpb24gMjg2MDk1KQorKysgU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERlbGVnYXRlVG9TaGFy
ZWRTeW50aGV0aWNBdHRyaWJ1dGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03MCw3ICs3MCw3IEBA
IHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpW
TSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJM
RShKU1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlUHJvdG90eXBlLCBCYXNl
KTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4g
JnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJl
KiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC0yNDYsOSArMjQ2LDkg
QEAgSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0RGVsZWdhdGVUb1NoYXJlZAogICAgICAgICByZXR1
cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVz
dHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRl
PiB8fCAhSlNUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZTo6bmVlZHNEZXN0
cnVjdGlvbik7CiAgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVz
dHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRl
PikKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRo
ZXRpY0F0dHJpYnV0ZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklU
KHZtLmhlYXAsICp2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUsIEpTVGVzdERlbGVn
YXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGUpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFj
ZUZvclRlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlID0gbWFrZVVuaXF1ZTxJ
c29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2Jq
ZWN0SGVhcENlbGxUeXBlKCksIEpTVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1
dGUpOwogICAgIGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0RGVsZWdhdGVU
b1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19T
VUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5jZWxsSGVhcENlbGxUeXBlLCBKU1Rlc3REZWxlZ2F0
ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VG
b3JUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZSA9IG1ha2VVbmlxdWU8SXNv
U3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUo
KSwgSlNUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZSk7CiAgICAgYXV0byog
c3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGlj
QXR0cmlidXRlLmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2Rl
IikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRleDog
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERvbWFpblNlY3Vy
aXR5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0RG9tYWluU2VjdXJpdHkuY3BwCShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RG9tYWluU2VjdXJpdHku
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC04MCw3ICs4MCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMg
SlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAgICAg
ICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3REb21haW5TZWN1cml0
eVByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsK
KyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRp
YyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpA
QCAtMzIwLDkgKzMyMCw5IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdERvbWFpblNlY3VyaXR5
OjoKICAgICAgICAgcmV0dXJuIHNwYWNlOwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNl
X29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0RG9tYWluU2VjdXJpdHk+IHx8
ICFKU1Rlc3REb21haW5TZWN1cml0eTo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3Rl
eHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RE
b21haW5TZWN1cml0eT4pCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdERvbWFpblNl
Y3VyaXR5ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVh
cCwgKnZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSwgSlNUZXN0RG9tYWluU2VjdXJp
dHkpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3REb21haW5TZWN1cml0eSA9IG1h
a2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3Ry
dWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3REb21haW5TZWN1cml0eSk7CiAgICAg
ZWxzZQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3REb21haW5TZWN1cml0eSA9IG1h
a2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5jZWxs
SGVhcENlbGxUeXBlLCBKU1Rlc3REb21haW5TZWN1cml0eSk7CisgICAgICAgIHNwYWNlcy5tX3N1
YnNwYWNlRm9yVGVzdERvbWFpblNlY3VyaXR5ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNP
X1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3REb21h
aW5TZWN1cml0eSk7CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RE
b21haW5TZWN1cml0eS5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUt
Y29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFbmFibGVk
QnlTZXR0aW5nLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0RW5hYmxlZEJ5U2V0dGluZy5jcHAJKHJldmlzaW9uIDI4NjA5NSkK
KysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFbmFibGVk
QnlTZXR0aW5nLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTIsNyArOTIsNyBAQCBwdWJsaWM6CiAg
ICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAg
IHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0RW5h
YmxlZEJ5U2V0dGluZ1Byb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5P
YmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAg
fQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZt
LCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5
cGUpCiAgICAgewpAQCAtNDU5LDkgKzQ1OSw5IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdEVu
YWJsZWRCeVNldHRpbmcKICAgICAgICAgcmV0dXJuIHNwYWNlOwogICAgIHN0YXRpY19hc3NlcnQo
c3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0RW5hYmxl
ZEJ5U2V0dGluZz4gfHwgIUpTVGVzdEVuYWJsZWRCeVNldHRpbmc6Om5lZWRzRGVzdHJ1Y3Rpb24p
OwogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJs
ZU9iamVjdCwgSlNUZXN0RW5hYmxlZEJ5U2V0dGluZz4pCi0gICAgICAgIHNwYWNlcy5tX3N1YnNw
YWNlRm9yVGVzdEVuYWJsZWRCeVNldHRpbmcgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09f
U1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBl
LCBKU1Rlc3RFbmFibGVkQnlTZXR0aW5nKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JU
ZXN0RW5hYmxlZEJ5U2V0dGluZyA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFD
RV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBKU1Rl
c3RFbmFibGVkQnlTZXR0aW5nKTsKICAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNl
Rm9yVGVzdEVuYWJsZWRCeVNldHRpbmcgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VC
U1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uY2VsbEhlYXBDZWxsVHlwZSwgSlNUZXN0RW5hYmxlZEJ5
U2V0dGluZyk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEVuYWJsZWRCeVNldHRp
bmcgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2
bS5jZWxsSGVhcENlbGxUeXBlKCksIEpTVGVzdEVuYWJsZWRCeVNldHRpbmcpOwogICAgIGF1dG8q
IHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0RW5hYmxlZEJ5U2V0dGluZy5nZXQoKTsK
IElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklO
R1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFbmFibGVkRm9yQ29udGV4dC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEVu
YWJsZWRGb3JDb250ZXh0LmNwcAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEVuYWJsZWRGb3JDb250ZXh0LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNjYsNyArNjYsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNv
U3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElD
X0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0RW5hYmxlZEZvckNvbnRleHRQcm90
b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAg
ICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KICAgICBzdGF0aWMgSlND
OjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKQEAgLTE4
Niw5ICsxODYsOSBAQCBKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3RFbmFibGVkRm9yQ29udGV4CiAg
ICAgICAgIHJldHVybiBzcGFjZTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92
PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdEVuYWJsZWRGb3JDb250ZXh0PiB8fCAh
SlNUZXN0RW5hYmxlZEZvckNvbnRleHQ6Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0
ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0
RW5hYmxlZEZvckNvbnRleHQ+KQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RFbmFi
bGVkRm9yQ29udGV4dCA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklU
KHZtLmhlYXAsICp2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUsIEpTVGVzdEVuYWJs
ZWRGb3JDb250ZXh0KTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0RW5hYmxlZEZv
ckNvbnRleHQgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5o
ZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0RW5hYmxlZEZv
ckNvbnRleHQpOwogICAgIGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0RW5h
YmxlZEZvckNvbnRleHQgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5J
VCh2bS5oZWFwLCAqdm0uY2VsbEhlYXBDZWxsVHlwZSwgSlNUZXN0RW5hYmxlZEZvckNvbnRleHQp
OworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RFbmFibGVkRm9yQ29udGV4dCA9IG1h
a2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxI
ZWFwQ2VsbFR5cGUoKSwgSlNUZXN0RW5hYmxlZEZvckNvbnRleHQpOwogICAgIGF1dG8qIHNwYWNl
ID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0RW5hYmxlZEZvckNvbnRleHQuZ2V0KCk7CiBJR05P
UkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JF
R0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRDb25zdHJ1Y3Rvci5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50Q29u
c3RydWN0b3IuY3BwCShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRDb25zdHJ1Y3Rvci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTE0Nyw3ICsxNDcsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3Bh
Y2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VS
VF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0RXZlbnRDb25zdHJ1Y3RvclByb3RvdHlwZSwg
QmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0
dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVj
dHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAtMzIxLDkgKzMy
MSw5IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdEV2ZW50Q29uc3RydWN0b3IKICAgICAgICAg
cmV0dXJuIHNwYWNlOwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpK
U0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0RXZlbnRDb25zdHJ1Y3Rvcj4gfHwgIUpTVGVzdEV2
ZW50Q29uc3RydWN0b3I6Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhwciAoc3Rk
Ojppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0RXZlbnRDb25z
dHJ1Y3Rvcj4pCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEV2ZW50Q29uc3RydWN0
b3IgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAq
dm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLCBKU1Rlc3RFdmVudENvbnN0cnVjdG9y
KTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0RXZlbnRDb25zdHJ1Y3RvciA9IG1h
a2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3Ry
dWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RFdmVudENvbnN0cnVjdG9yKTsKICAg
ICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEV2ZW50Q29uc3RydWN0b3Ig
PSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0u
Y2VsbEhlYXBDZWxsVHlwZSwgSlNUZXN0RXZlbnRDb25zdHJ1Y3Rvcik7CisgICAgICAgIHNwYWNl
cy5tX3N1YnNwYWNlRm9yVGVzdEV2ZW50Q29uc3RydWN0b3IgPSBtYWtlVW5pcXVlPElzb1N1YnNw
YWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCksIEpT
VGVzdEV2ZW50Q29uc3RydWN0b3IpOwogICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3Bh
Y2VGb3JUZXN0RXZlbnRDb25zdHJ1Y3Rvci5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigi
dW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1j
b21wYXJlIikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RFdmVudFRhcmdldC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50VGFyZ2V0LmNwcAkocmV2aXNpb24gMjg2MDk1
KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50
VGFyZ2V0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzMsNyArNzMsNyBAQCBwdWJsaWM6CiAgICAg
c3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsK
ICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0RXZlbnRU
YXJnZXRQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3Bh
Y2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KICAgICBz
dGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAg
IHsKQEAgLTI2Miw5ICsyNjIsOSBAQCBKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3RFdmVudFRhcmdl
dDo6c3ViCiAgICAgICAgIHJldHVybiBzcGFjZTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNf
YmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdEV2ZW50VGFyZ2V0PiB8
fCAhSlNUZXN0RXZlbnRUYXJnZXQ6Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhw
ciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0RXZl
bnRUYXJnZXQ+KQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RFdmVudFRhcmdldCA9
IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5k
ZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUsIEpTVGVzdEV2ZW50VGFyZ2V0KTsKKyAgICAg
ICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0RXZlbnRUYXJnZXQgPSBtYWtlVW5pcXVlPElzb1N1
YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RI
ZWFwQ2VsbFR5cGUoKSwgSlNUZXN0RXZlbnRUYXJnZXQpOwogICAgIGVsc2UKLSAgICAgICAgc3Bh
Y2VzLm1fc3Vic3BhY2VGb3JUZXN0RXZlbnRUYXJnZXQgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNl
PiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uY2VsbEhlYXBDZWxsVHlwZSwgSlNUZXN0
RXZlbnRUYXJnZXQpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RFdmVudFRhcmdl
dCA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZt
LmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0RXZlbnRUYXJnZXQpOwogICAgIGF1dG8qIHNwYWNl
ID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0RXZlbnRUYXJnZXQuZ2V0KCk7CiBJR05PUkVfV0FS
TklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0
YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0RXhjZXB0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXhjZXB0aW9uLmNwcAkocmV2aXNp
b24gMjg2MDk1KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdEV4Y2VwdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY2LDcgKzY2LDcgQEAgcHVibGlj
OgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkK
ICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVz
dEV4Y2VwdGlvblByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmpl
Y3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQog
ICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBK
U0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUp
CiAgICAgewpAQCAtMTg3LDkgKzE4Nyw5IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdEV4Y2Vw
dGlvbjo6c3Vic3AKICAgICAgICAgcmV0dXJuIHNwYWNlOwogICAgIHN0YXRpY19hc3NlcnQoc3Rk
Ojppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0RXhjZXB0aW9u
PiB8fCAhSlNUZXN0RXhjZXB0aW9uOjpuZWVkc0Rlc3RydWN0aW9uKTsKICAgICBpZiBjb25zdGV4
cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdEV4
Y2VwdGlvbj4pCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEV4Y2VwdGlvbiA9IG1h
a2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5kZXN0
cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUsIEpTVGVzdEV4Y2VwdGlvbik7CisgICAgICAgIHNw
YWNlcy5tX3N1YnNwYWNlRm9yVGVzdEV4Y2VwdGlvbiA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+
IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxs
VHlwZSgpLCBKU1Rlc3RFeGNlcHRpb24pOwogICAgIGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vi
c3BhY2VGb3JUZXN0RXhjZXB0aW9uID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQ
QUNFX0lOSVQodm0uaGVhcCwgKnZtLmNlbGxIZWFwQ2VsbFR5cGUsIEpTVGVzdEV4Y2VwdGlvbik7
CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEV4Y2VwdGlvbiA9IG1ha2VVbmlxdWU8
SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5
cGUoKSwgSlNUZXN0RXhjZXB0aW9uKTsKICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNw
YWNlRm9yVGVzdEV4Y2VwdGlvbi5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFj
aGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJl
IikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RH
ZW5lcmF0ZUFkZE9wYXF1ZVJvb3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RHZW5lcmF0ZUFkZE9wYXF1ZVJvb3QuY3BwCShy
ZXZpc2lvbiAyODYwOTUpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0R2VuZXJhdGVBZGRPcGFxdWVSb290LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjYs
NyArNjYsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNl
Rm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BB
Q0VfU0hBUkFCTEUoSlNUZXN0R2VuZXJhdGVBZGRPcGFxdWVSb290UHJvdG90eXBlLCBCYXNlKTsK
LSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZt
LnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBj
cmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC0xODcsOSArMTg3LDkgQEAg
SlNDOjpJc29TdWJzcGFjZSogSlNUZXN0R2VuZXJhdGVBZGRPcGFxdQogICAgICAgICByZXR1cm4g
c3BhY2U7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1
Y3RpYmxlT2JqZWN0LCBKU1Rlc3RHZW5lcmF0ZUFkZE9wYXF1ZVJvb3Q+IHx8ICFKU1Rlc3RHZW5l
cmF0ZUFkZE9wYXF1ZVJvb3Q6Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhwciAo
c3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0R2VuZXJh
dGVBZGRPcGFxdWVSb290PikKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0R2VuZXJh
dGVBZGRPcGFxdWVSb290ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lO
SVQodm0uaGVhcCwgKnZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSwgSlNUZXN0R2Vu
ZXJhdGVBZGRPcGFxdWVSb290KTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0R2Vu
ZXJhdGVBZGRPcGFxdWVSb290ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNF
X0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCksIEpTVGVz
dEdlbmVyYXRlQWRkT3BhcXVlUm9vdCk7CiAgICAgZWxzZQotICAgICAgICBzcGFjZXMubV9zdWJz
cGFjZUZvclRlc3RHZW5lcmF0ZUFkZE9wYXF1ZVJvb3QgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNl
PiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uY2VsbEhlYXBDZWxsVHlwZSwgSlNUZXN0
R2VuZXJhdGVBZGRPcGFxdWVSb290KTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0
R2VuZXJhdGVBZGRPcGFxdWVSb290ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQ
QUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RHZW5lcmF0ZUFk
ZE9wYXF1ZVJvb3QpOwogICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0
R2VuZXJhdGVBZGRPcGFxdWVSb290LmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJl
YWNoYWJsZS1jb2RlIikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBh
cmUiKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dEdlbmVyYXRlSXNSZWFjaGFibGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlLmNwcAkocmV2
aXNpb24gMjg2MDk1KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02Niw3ICs2
Niw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3Io
SlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9T
SEFSQUJMRShKU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlUHJvdG90eXBlLCBCYXNlKTsKLSAgICAg
ICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWlu
T2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVT
dHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
SlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC0xOTcsOSArMTk3LDkgQEAgSlNDOjpJ
c29TdWJzcGFjZSogSlNUZXN0R2VuZXJhdGVJc1JlYWNoYQogICAgICAgICByZXR1cm4gc3BhY2U7
CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxl
T2JqZWN0LCBKU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlPiB8fCAhSlNUZXN0R2VuZXJhdGVJc1Jl
YWNoYWJsZTo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jh
c2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RHZW5lcmF0ZUlzUmVhY2hh
YmxlPikKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0R2VuZXJhdGVJc1JlYWNoYWJs
ZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2
bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUsIEpTVGVzdEdlbmVyYXRlSXNSZWFjaGFi
bGUpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RHZW5lcmF0ZUlzUmVhY2hhYmxl
ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0u
ZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCksIEpTVGVzdEdlbmVyYXRlSXNSZWFjaGFi
bGUpOwogICAgIGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0R2VuZXJhdGVJ
c1JlYWNoYWJsZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZt
LmhlYXAsICp2bS5jZWxsSGVhcENlbGxUeXBlLCBKU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlKTsK
KyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZSA9IG1h
a2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxI
ZWFwQ2VsbFR5cGUoKSwgSlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZSk7CiAgICAgYXV0byogc3Bh
Y2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlLmdldCgpOwog
SUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKIElHTk9SRV9XQVJOSU5H
U19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEdsb2JhbE9iamVjdC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEdsb2JhbE9i
amVjdC5jcHAJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RHbG9iYWxPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
ODE0LDcgKzE4MTQsNyBAQCBKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3RHbG9iYWxPYmplY3Q6OnN1
CiAgICAgYXV0byYgc3BhY2VzID0gY2xpZW50RGF0YS5zdWJzcGFjZXMoKTsKICAgICBpZiAoYXV0
byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RHbG9iYWxPYmplY3QuZ2V0KCkpCiAg
ICAgICAgIHJldHVybiBzcGFjZTsKLSAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RHbG9iYWxP
YmplY3QgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFw
LCAqY2xpZW50RGF0YS5tX2hlYXBDZWxsVHlwZUZvckpTVGVzdEdsb2JhbE9iamVjdCwgSlNUZXN0
R2xvYmFsT2JqZWN0KTsKKyAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RHbG9iYWxPYmplY3Qg
PSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCBjbGll
bnREYXRhLm1faGVhcENlbGxUeXBlRm9ySlNUZXN0R2xvYmFsT2JqZWN0LCBKU1Rlc3RHbG9iYWxP
YmplY3QpOwogICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0R2xvYmFs
T2JqZWN0LmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikK
IElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRleDogU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEdsb2JhbE9iamVjdC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RHbG9iYWxPYmplY3QuaAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEdsb2JhbE9iamVjdC5oCSh3b3JraW5nIGNv
cHkpCkBAIC05OCw3ICs5OCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFj
ZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJU
X0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3RHbG9iYWxPYmplY3RQcm90b3R5cGUsIEJhc2Up
OwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAm
dm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUq
IGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbmRleGVkU2V0dGVyTm9JZGVudGlm
aWVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0SW5kZXhlZFNldHRlck5vSWRlbnRpZmllci5jcHAJKHJldmlzaW9uIDI4NjA5
NSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbmRl
eGVkU2V0dGVyTm9JZGVudGlmaWVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjUsNyArNjUsNyBA
QCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6
Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFC
TEUoSlNUZXN0SW5kZXhlZFNldHRlck5vSWRlbnRpZmllclByb3RvdHlwZSwgQmFzZSk7Ci0gICAg
ICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFp
bk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRl
U3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAtMjc2LDkgKzI3Niw5IEBAIEpTQzo6
SXNvU3Vic3BhY2UqIEpTVGVzdEluZGV4ZWRTZXR0ZXJOb0kKICAgICAgICAgcmV0dXJuIHNwYWNl
OwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJs
ZU9iamVjdCwgSlNUZXN0SW5kZXhlZFNldHRlck5vSWRlbnRpZmllcj4gfHwgIUpTVGVzdEluZGV4
ZWRTZXR0ZXJOb0lkZW50aWZpZXI6Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhw
ciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0SW5k
ZXhlZFNldHRlck5vSWRlbnRpZmllcj4pCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVz
dEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXIgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09f
U1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBl
LCBKU1Rlc3RJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vi
c3BhY2VGb3JUZXN0SW5kZXhlZFNldHRlck5vSWRlbnRpZmllciA9IG1ha2VVbmlxdWU8SXNvU3Vi
c3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhl
YXBDZWxsVHlwZSgpLCBKU1Rlc3RJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyKTsKICAgICBlbHNl
Ci0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZp
ZXIgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAq
dm0uY2VsbEhlYXBDZWxsVHlwZSwgSlNUZXN0SW5kZXhlZFNldHRlck5vSWRlbnRpZmllcik7Cisg
ICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXIg
PSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5j
ZWxsSGVhcENlbGxUeXBlKCksIEpTVGVzdEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXIpOwogICAg
IGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0SW5kZXhlZFNldHRlck5vSWRl
bnRpZmllci5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIp
CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbmRleGVkU2V0dGVy
VGhyb3dpbmdFeGNlcHRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24u
Y3BwCShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0SW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNjUsNyArNjUsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vi
c3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FT
U0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0SW5kZXhlZFNldHRlclRocm93aW5nRXhj
ZXB0aW9uUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNw
YWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAg
c3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAg
ICB7CkBAIC0yNzYsOSArMjc2LDkgQEAgSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0SW5kZXhlZFNl
dHRlclRocgogICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6Omlz
X2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RJbmRleGVkU2V0dGVy
VGhyb3dpbmdFeGNlcHRpb24+IHx8ICFKU1Rlc3RJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRp
b246Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29m
X3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0SW5kZXhlZFNldHRlclRocm93aW5n
RXhjZXB0aW9uPikKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0SW5kZXhlZFNldHRl
clRocm93aW5nRXhjZXB0aW9uID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNF
X0lOSVQodm0uaGVhcCwgKnZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSwgSlNUZXN0
SW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3Bh
Y2VGb3JUZXN0SW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uID0gbWFrZVVuaXF1ZTxJc29T
dWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0
SGVhcENlbGxUeXBlKCksIEpTVGVzdEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbik7CiAg
ICAgZWxzZQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RJbmRleGVkU2V0dGVyVGhy
b3dpbmdFeGNlcHRpb24gPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5J
VCh2bS5oZWFwLCAqdm0uY2VsbEhlYXBDZWxsVHlwZSwgSlNUZXN0SW5kZXhlZFNldHRlclRocm93
aW5nRXhjZXB0aW9uKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0SW5kZXhlZFNl
dHRlclRocm93aW5nRXhjZXB0aW9uID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQ
QUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RJbmRleGVkU2V0
dGVyVGhyb3dpbmdFeGNlcHRpb24pOwogICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3Bh
Y2VGb3JUZXN0SW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uLmdldCgpOwogSUdOT1JFX1dB
Uk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigi
dGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdElu
ZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllci5jcHAJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbmRleGVkU2V0dGVyV2l0
aElkZW50aWZpZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03Myw3ICs3Myw3IEBAIHB1YmxpYzoK
ICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAg
ICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3RJ
bmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXJQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1
cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RT
cGFjZSgpOwogICAgIH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVy
ZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpT
VmFsdWUgcHJvdG90eXBlKQogICAgIHsKQEAgLTMwOCw5ICszMDgsOSBAQCBKU0M6Oklzb1N1YnNw
YWNlKiBKU1Rlc3RJbmRleGVkU2V0dGVyV2l0CiAgICAgICAgIHJldHVybiBzcGFjZTsKICAgICBz
dGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3Qs
IEpTVGVzdEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllcj4gfHwgIUpTVGVzdEluZGV4ZWRTZXR0
ZXJXaXRoSWRlbnRpZmllcjo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3RleHByIChz
dGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RJbmRleGVk
U2V0dGVyV2l0aElkZW50aWZpZXI+KQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RJ
bmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXIgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09f
U1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBl
LCBKU1Rlc3RJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXIpOworICAgICAgICBzcGFjZXMubV9z
dWJzcGFjZUZvclRlc3RJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXIgPSBtYWtlVW5pcXVlPElz
b1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmpl
Y3RIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0SW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyKTsKICAg
ICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEluZGV4ZWRTZXR0ZXJXaXRo
SWRlbnRpZmllciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZt
LmhlYXAsICp2bS5jZWxsSGVhcENlbGxUeXBlLCBKU1Rlc3RJbmRleGVkU2V0dGVyV2l0aElkZW50
aWZpZXIpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RJbmRleGVkU2V0dGVyV2l0
aElkZW50aWZpZXIgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2
bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCksIEpTVGVzdEluZGV4ZWRTZXR0ZXJXaXRoSWRl
bnRpZmllcik7CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RJbmRl
eGVkU2V0dGVyV2l0aElkZW50aWZpZXIuZ2V0KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVu
cmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29t
cGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0SW50ZXJmYWNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlLmNwcAkocmV2aXNpb24gMjg2MDk1KQorKysg
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTE4MSw3ICsxODEsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGlj
IEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAg
ICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0SW50ZXJmYWNlUHJv
dG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAg
ICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpT
Qzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC0x
MTA0LDkgKzExMDQsOSBAQCBwdWJsaWM6CiAgICAgICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAg
ICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9i
amVjdCwgVGVzdEludGVyZmFjZUl0ZXJhdG9yPiB8fCAhVGVzdEludGVyZmFjZUl0ZXJhdG9yOjpu
ZWVkc0Rlc3RydWN0aW9uKTsKICAgICAgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2Zf
djxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBUZXN0SW50ZXJmYWNlSXRlcmF0b3I+KQotICAg
ICAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0SW50ZXJmYWNlSXRlcmF0b3IgPSBtYWtl
VW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uZGVzdHJ1
Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmdldCgpLCBUZXN0SW50ZXJmYWNlSXRlcmF0b3IpOwor
ICAgICAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0SW50ZXJmYWNlSXRlcmF0b3IgPSBt
YWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0
cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwgVGVzdEludGVyZmFjZUl0ZXJhdG9yKTsKICAg
ICAgICAgZWxzZQotICAgICAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0SW50ZXJmYWNl
SXRlcmF0b3IgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5o
ZWFwLCAqdm0uY2VsbEhlYXBDZWxsVHlwZSwgVGVzdEludGVyZmFjZUl0ZXJhdG9yKTsKKyAgICAg
ICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEludGVyZmFjZUl0ZXJhdG9yID0gbWFrZVVu
aXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBD
ZWxsVHlwZSgpLCBUZXN0SW50ZXJmYWNlSXRlcmF0b3IpOwogICAgICAgICBhdXRvKiBzcGFjZSA9
IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEludGVyZmFjZUl0ZXJhdG9yLmdldCgpOwogSUdOT1JF
X1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKIElHTk9SRV9XQVJOSU5HU19CRUdJ
TigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpAQCAtMTE5Niw5ICsxMTk2LDkgQEAgSlNDOjpJc29T
dWJzcGFjZSogSlNUZXN0SW50ZXJmYWNlOjpzdWJzcAogICAgICAgICByZXR1cm4gc3BhY2U7CiAg
ICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2Jq
ZWN0LCBKU1Rlc3RJbnRlcmZhY2U+IHx8ICFKU1Rlc3RJbnRlcmZhY2U6Om5lZWRzRGVzdHJ1Y3Rp
b24pOwogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0
aWJsZU9iamVjdCwgSlNUZXN0SW50ZXJmYWNlPikKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VG
b3JUZXN0SW50ZXJmYWNlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lO
SVQodm0uaGVhcCwgKnZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSwgSlNUZXN0SW50
ZXJmYWNlKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0SW50ZXJmYWNlID0gbWFr
ZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1
Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCksIEpTVGVzdEludGVyZmFjZSk7CiAgICAgZWxzZQot
ICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RJbnRlcmZhY2UgPSBtYWtlVW5pcXVlPElz
b1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uY2VsbEhlYXBDZWxsVHlw
ZSwgSlNUZXN0SW50ZXJmYWNlKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0SW50
ZXJmYWNlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVh
cCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RJbnRlcmZhY2UpOwogICAgIGF1dG8qIHNw
YWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0SW50ZXJmYWNlLmdldCgpOwogSUdOT1JFX1dB
Uk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigi
dGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZUxlYWRpbmdVbmRlcnNjb3JlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50
ZXJmYWNlTGVhZGluZ1VuZGVyc2NvcmUuY3BwCShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlTGVhZGluZ1Vu
ZGVyc2NvcmUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02Niw3ICs2Niw3IEBAIHB1YmxpYzoKICAg
ICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAg
ewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3RJbnRl
cmZhY2VMZWFkaW5nVW5kZXJzY29yZVByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAm
dm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNl
KCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpT
Qzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1
ZSBwcm90b3R5cGUpCiAgICAgewpAQCAtMTg3LDkgKzE4Nyw5IEBAIEpTQzo6SXNvU3Vic3BhY2Uq
IEpTVGVzdEludGVyZmFjZUxlYWRpbmcKICAgICAgICAgcmV0dXJuIHNwYWNlOwogICAgIHN0YXRp
Y19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNU
ZXN0SW50ZXJmYWNlTGVhZGluZ1VuZGVyc2NvcmU+IHx8ICFKU1Rlc3RJbnRlcmZhY2VMZWFkaW5n
VW5kZXJzY29yZTo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3RleHByIChzdGQ6Omlz
X2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RJbnRlcmZhY2VMZWFk
aW5nVW5kZXJzY29yZT4pCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEludGVyZmFj
ZUxlYWRpbmdVbmRlcnNjb3JlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNF
X0lOSVQodm0uaGVhcCwgKnZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSwgSlNUZXN0
SW50ZXJmYWNlTGVhZGluZ1VuZGVyc2NvcmUpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZv
clRlc3RJbnRlcmZhY2VMZWFkaW5nVW5kZXJzY29yZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+
IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxs
VHlwZSgpLCBKU1Rlc3RJbnRlcmZhY2VMZWFkaW5nVW5kZXJzY29yZSk7CiAgICAgZWxzZQotICAg
ICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RJbnRlcmZhY2VMZWFkaW5nVW5kZXJzY29yZSA9
IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5j
ZWxsSGVhcENlbGxUeXBlLCBKU1Rlc3RJbnRlcmZhY2VMZWFkaW5nVW5kZXJzY29yZSk7CisgICAg
ICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEludGVyZmFjZUxlYWRpbmdVbmRlcnNjb3JlID0g
bWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2Vs
bEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RJbnRlcmZhY2VMZWFkaW5nVW5kZXJzY29yZSk7CiAgICAg
YXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RJbnRlcmZhY2VMZWFkaW5nVW5k
ZXJzY29yZS5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIp
CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJdGVyYWJsZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdEl0ZXJhYmxlLmNwcAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEl0ZXJhYmxlLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNzUsNyArNzUsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1
YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09f
U1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0SXRlcmFibGVQcm90b3R5cGUsIEJhc2UpOwotICAgICAg
ICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5P
YmplY3RTcGFjZSgpOwogICAgIH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0
cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBK
U0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKQEAgLTIwMSw5ICsyMDEsOSBAQCBwdWJsaWM6
CiAgICAgICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAgICAgIHN0YXRpY19hc3NlcnQoc3RkOjpp
c19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgVGVzdEl0ZXJhYmxlSXRlcmF0
b3I+IHx8ICFUZXN0SXRlcmFibGVJdGVyYXRvcjo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgICAg
IGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVj
dCwgVGVzdEl0ZXJhYmxlSXRlcmF0b3I+KQotICAgICAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VG
b3JUZXN0SXRlcmFibGVJdGVyYXRvciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJT
UEFDRV9JTklUKHZtLmhlYXAsICp2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuZ2V0
KCksIFRlc3RJdGVyYWJsZUl0ZXJhdG9yKTsKKyAgICAgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNl
Rm9yVGVzdEl0ZXJhYmxlSXRlcmF0b3IgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VC
U1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwg
VGVzdEl0ZXJhYmxlSXRlcmF0b3IpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBzcGFjZXMu
bV9zdWJzcGFjZUZvclRlc3RJdGVyYWJsZUl0ZXJhdG9yID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFj
ZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmNlbGxIZWFwQ2VsbFR5cGUsIFRlc3RJ
dGVyYWJsZUl0ZXJhdG9yKTsKKyAgICAgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEl0
ZXJhYmxlSXRlcmF0b3IgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5J
VCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCksIFRlc3RJdGVyYWJsZUl0ZXJhdG9yKTsK
ICAgICAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RJdGVyYWJsZUl0
ZXJhdG9yLmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikK
IElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpAQCAtMjkzLDkg
KzI5Myw5IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdEl0ZXJhYmxlOjpzdWJzcGEKICAgICAg
ICAgcmV0dXJuIHNwYWNlOwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlND
OjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0SXRlcmFibGU+IHx8ICFKU1Rlc3RJdGVyYWJs
ZTo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2Zf
djxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RJdGVyYWJsZT4pCi0gICAgICAgIHNw
YWNlcy5tX3N1YnNwYWNlRm9yVGVzdEl0ZXJhYmxlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4g
SVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxs
VHlwZSwgSlNUZXN0SXRlcmFibGUpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RJ
dGVyYWJsZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhl
YXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RJdGVyYWJsZSk7
CiAgICAgZWxzZQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RJdGVyYWJsZSA9IG1h
a2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5jZWxs
SGVhcENlbGxUeXBlLCBKU1Rlc3RJdGVyYWJsZSk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNl
Rm9yVGVzdEl0ZXJhYmxlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lO
SVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RJdGVyYWJsZSk7CiAgICAg
YXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RJdGVyYWJsZS5nZXQoKTsKIElH
Tk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1Nf
QkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rvci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEpT
QnVpbHRpbkNvbnN0cnVjdG9yLmNwcAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNjksNyArNjksNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpT
Qzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAg
U1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0SlNCdWlsdGluQ29uc3Ry
dWN0b3JQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3Bh
Y2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KICAgICBz
dGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAg
IHsKQEAgLTIzMCw5ICsyMzAsOSBAQCBKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3RKU0J1aWx0aW5D
b25zdHJ1CiAgICAgICAgIHJldHVybiBzcGFjZTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNf
YmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdEpTQnVpbHRpbkNvbnN0
cnVjdG9yPiB8fCAhSlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3I6Om5lZWRzRGVzdHJ1Y3Rpb24p
OwogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJs
ZU9iamVjdCwgSlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3I+KQotICAgICAgICBzcGFjZXMubV9z
dWJzcGFjZUZvclRlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvciA9IG1ha2VVbmlxdWU8SXNvU3Vic3Bh
Y2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFw
Q2VsbFR5cGUsIEpTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yKTsKKyAgICAgICAgc3BhY2VzLm1f
c3Vic3BhY2VGb3JUZXN0SlNCdWlsdGluQ29uc3RydWN0b3IgPSBtYWtlVW5pcXVlPElzb1N1YnNw
YWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFw
Q2VsbFR5cGUoKSwgSlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3IpOwogICAgIGVsc2UKLSAgICAg
ICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0SlNCdWlsdGluQ29uc3RydWN0b3IgPSBtYWtlVW5p
cXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uY2VsbEhlYXBD
ZWxsVHlwZSwgSlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3IpOworICAgICAgICBzcGFjZXMubV9z
dWJzcGFjZUZvclRlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvciA9IG1ha2VVbmlxdWU8SXNvU3Vic3Bh
Y2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNU
ZXN0SlNCdWlsdGluQ29uc3RydWN0b3IpOwogICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vi
c3BhY2VGb3JUZXN0SlNCdWlsdGluQ29uc3RydWN0b3IuZ2V0KCk7CiBJR05PUkVfV0FSTklOR1Nf
QkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xv
Z2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TGVnYWN5RmFjdG9yeUZ1
bmN0aW9uLmNwcAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlvbi5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTY3LDcgKzY3LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNw
YWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NF
UlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlvblByb3Rv
dHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAg
ICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6
OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAtMjMw
LDkgKzIzMCw5IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdExlZ2FjeUZhY3RvcnlGdW4KICAg
ICAgICAgcmV0dXJuIHNwYWNlOwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8
SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uPiB8
fCAhSlNUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uOjpuZWVkc0Rlc3RydWN0aW9uKTsKICAgICBp
ZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3Qs
IEpTVGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlvbj4pCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNl
Rm9yVGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlvbiA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElT
T19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5
cGUsIEpTVGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlvbik7CisgICAgICAgIHNwYWNlcy5tX3N1YnNw
YWNlRm9yVGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlvbiA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+
IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxs
VHlwZSgpLCBKU1Rlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb24pOwogICAgIGVsc2UKLSAgICAgICAg
c3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uID0gbWFrZVVuaXF1
ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmNlbGxIZWFwQ2Vs
bFR5cGUsIEpTVGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlvbik7CisgICAgICAgIHNwYWNlcy5tX3N1
YnNwYWNlRm9yVGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlvbiA9IG1ha2VVbmlxdWU8SXNvU3Vic3Bh
Y2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNU
ZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uKTsKICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1
YnNwYWNlRm9yVGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlvbi5nZXQoKTsKIElHTk9SRV9XQVJOSU5H
U19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRv
bG9naWNhbC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RMZWdhY3lOb0ludGVyZmFjZU9iamVjdC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdExlZ2FjeU5vSW50
ZXJmYWNlT2JqZWN0LmNwcAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtODUsNyArODUsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6
SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RB
VElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0TGVnYWN5Tm9JbnRlcmZhY2VP
YmplY3RQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3Bh
Y2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KICAgICBz
dGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAg
IHsKQEAgLTMzNSw5ICszMzUsOSBAQCBKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3RMZWdhY3lOb0lu
dGVyZmFjCiAgICAgICAgIHJldHVybiBzcGFjZTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNf
YmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdExlZ2FjeU5vSW50ZXJm
YWNlT2JqZWN0PiB8fCAhSlNUZXN0TGVnYWN5Tm9JbnRlcmZhY2VPYmplY3Q6Om5lZWRzRGVzdHJ1
Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3Ry
dWN0aWJsZU9iamVjdCwgSlNUZXN0TGVnYWN5Tm9JbnRlcmZhY2VPYmplY3Q+KQotICAgICAgICBz
cGFjZXMubV9zdWJzcGFjZUZvclRlc3RMZWdhY3lOb0ludGVyZmFjZU9iamVjdCA9IG1ha2VVbmlx
dWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5kZXN0cnVjdGli
bGVPYmplY3RIZWFwQ2VsbFR5cGUsIEpTVGVzdExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0KTsKKyAg
ICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TGVnYWN5Tm9JbnRlcmZhY2VPYmplY3QgPSBt
YWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0
cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0TGVnYWN5Tm9JbnRlcmZhY2VPYmpl
Y3QpOwogICAgIGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TGVnYWN5Tm9J
bnRlcmZhY2VPYmplY3QgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5J
VCh2bS5oZWFwLCAqdm0uY2VsbEhlYXBDZWxsVHlwZSwgSlNUZXN0TGVnYWN5Tm9JbnRlcmZhY2VP
YmplY3QpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RMZWdhY3lOb0ludGVyZmFj
ZU9iamVjdCA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhl
YXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0TGVnYWN5Tm9JbnRlcmZhY2VPYmplY3Qp
OwogICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TGVnYWN5Tm9JbnRl
cmZhY2VPYmplY3QuZ2V0KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNv
ZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TGVnYWN5T3Zl
cnJpZGVCdWlsdElucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMuY3BwCShyZXZpc2lv
biAyODYwOTUpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdElucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTczLDcgKzcz
LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihK
U0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NI
QVJBQkxFKEpTVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnNQcm90b3R5cGUsIEJhc2UpOwotICAg
ICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxh
aW5PYmplY3RTcGFjZSgpOwogICAgIH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0
ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKQEAgLTI0OSw5ICsyNDksOSBAQCBKU0M6
Oklzb1N1YnNwYWNlKiBKU1Rlc3RMZWdhY3lPdmVycmlkZUJ1CiAgICAgICAgIHJldHVybiBzcGFj
ZTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGli
bGVPYmplY3QsIEpTVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM+IHx8ICFKU1Rlc3RMZWdhY3lP
dmVycmlkZUJ1aWx0SW5zOjpuZWVkc0Rlc3RydWN0aW9uKTsKICAgICBpZiBjb25zdGV4cHIgKHN0
ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdExlZ2FjeU92
ZXJyaWRlQnVpbHRJbnM+KQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RMZWdhY3lP
dmVycmlkZUJ1aWx0SW5zID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lO
SVQodm0uaGVhcCwgKnZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSwgSlNUZXN0TGVn
YWN5T3ZlcnJpZGVCdWlsdElucyk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdExl
Z2FjeU92ZXJyaWRlQnVpbHRJbnMgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BB
Q0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwgSlNU
ZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdElucyk7CiAgICAgZWxzZQotICAgICAgICBzcGFjZXMubV9z
dWJzcGFjZUZvclRlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zID0gbWFrZVVuaXF1ZTxJc29TdWJz
cGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmNlbGxIZWFwQ2VsbFR5cGUsIEpT
VGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZv
clRlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNP
X1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RMZWdh
Y3lPdmVycmlkZUJ1aWx0SW5zKTsKICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNl
Rm9yVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMuZ2V0KCk7CiBJR05PUkVfV0FSTklOR1NfQkVH
SU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2lj
YWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0TWFwTGlrZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE1hcExpa2UuY3BwCShyZXZpc2lvbiAyODYwOTUpCisr
KyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TWFwTGlrZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTgyLDcgKzgyLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBK
U0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAg
IFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdE1hcExpa2VQcm90b3R5
cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAg
IHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KICAgICBzdGF0aWMgSlNDOjpT
dHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKQEAgLTM2Niw5
ICszNjYsOSBAQCBKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3RNYXBMaWtlOjpzdWJzcGFjCiAgICAg
ICAgIHJldHVybiBzcGFjZTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpT
Qzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdE1hcExpa2U+IHx8ICFKU1Rlc3RNYXBMaWtl
OjpuZWVkc0Rlc3RydWN0aW9uKTsKICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92
PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdE1hcExpa2U+KQotICAgICAgICBzcGFj
ZXMubV9zdWJzcGFjZUZvclRlc3RNYXBMaWtlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNP
X1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlw
ZSwgSlNUZXN0TWFwTGlrZSk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE1hcExp
a2UgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2
bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0TWFwTGlrZSk7CiAgICAg
ZWxzZQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RNYXBMaWtlID0gbWFrZVVuaXF1
ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmNlbGxIZWFwQ2Vs
bFR5cGUsIEpTVGVzdE1hcExpa2UpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RN
YXBMaWtlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVh
cCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RNYXBMaWtlKTsKICAgICBhdXRvKiBzcGFj
ZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE1hcExpa2UuZ2V0KCk7CiBJR05PUkVfV0FSTklO
R1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0
b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0TWFwTGlrZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9ucy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE1h
cExpa2VXaXRoT3ZlcnJpZGRlbk9wZXJhdGlvbnMuY3BwCShyZXZpc2lvbiAyODYwOTUpCisrKyBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TWFwTGlrZVdpdGhP
dmVycmlkZGVuT3BlcmF0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg2LDcgKzg2LDcgQEAg
cHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZN
JiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxF
KEpTVGVzdE1hcExpa2VXaXRoT3ZlcnJpZGRlbk9wZXJhdGlvbnNQcm90b3R5cGUsIEJhc2UpOwot
ICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0u
cGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNy
ZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKQEAgLTM4MCw5ICszODAsOSBAQCBK
U0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3RNYXBMaWtlV2l0aE92ZXJyCiAgICAgICAgIHJldHVybiBz
cGFjZTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVj
dGlibGVPYmplY3QsIEpTVGVzdE1hcExpa2VXaXRoT3ZlcnJpZGRlbk9wZXJhdGlvbnM+IHx8ICFK
U1Rlc3RNYXBMaWtlV2l0aE92ZXJyaWRkZW5PcGVyYXRpb25zOjpuZWVkc0Rlc3RydWN0aW9uKTsK
ICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVP
YmplY3QsIEpTVGVzdE1hcExpa2VXaXRoT3ZlcnJpZGRlbk9wZXJhdGlvbnM+KQotICAgICAgICBz
cGFjZXMubV9zdWJzcGFjZUZvclRlc3RNYXBMaWtlV2l0aE92ZXJyaWRkZW5PcGVyYXRpb25zID0g
bWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmRl
c3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSwgSlNUZXN0TWFwTGlrZVdpdGhPdmVycmlkZGVu
T3BlcmF0aW9ucyk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE1hcExpa2VXaXRo
T3ZlcnJpZGRlbk9wZXJhdGlvbnMgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BB
Q0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwgSlNU
ZXN0TWFwTGlrZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9ucyk7CiAgICAgZWxzZQotICAgICAgICBz
cGFjZXMubV9zdWJzcGFjZUZvclRlc3RNYXBMaWtlV2l0aE92ZXJyaWRkZW5PcGVyYXRpb25zID0g
bWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmNl
bGxIZWFwQ2VsbFR5cGUsIEpTVGVzdE1hcExpa2VXaXRoT3ZlcnJpZGRlbk9wZXJhdGlvbnMpOwor
ICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RNYXBMaWtlV2l0aE92ZXJyaWRkZW5PcGVy
YXRpb25zID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVh
cCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RNYXBMaWtlV2l0aE92ZXJyaWRkZW5PcGVy
YXRpb25zKTsKICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE1hcExp
a2VXaXRoT3ZlcnJpZGRlbk9wZXJhdGlvbnMuZ2V0KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4o
InVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwt
Y29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRBbmRJ
bmRleGVkU2V0dGVyTm9JZGVudGlmaWVyLmNwcAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQW5kSW5kZXhlZFNl
dHRlck5vSWRlbnRpZmllci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY2LDcgKzY2LDcgQEAgcHVi
bGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2
bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpT
VGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlck5vSWRlbnRpZmllclByb3RvdHlwZSwgQmFzZSk7Ci0g
ICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5w
bGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3Jl
YXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAtMzQ0LDkgKzM0NCw5IEBAIEpT
Qzo6SXNvU3Vic3BhY2UqIEpTVGVzdE5hbWVkQW5kSW5kZXhlZFMKICAgICAgICAgcmV0dXJuIHNw
YWNlOwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0
aWJsZU9iamVjdCwgSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyPiB8fCAh
SlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyOjpuZWVkc0Rlc3RydWN0aW9u
KTsKICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGli
bGVPYmplY3QsIEpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlck5vSWRlbnRpZmllcj4pCi0gICAg
ICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlck5vSWRlbnRp
ZmllciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAs
ICp2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUsIEpTVGVzdE5hbWVkQW5kSW5kZXhl
ZFNldHRlck5vSWRlbnRpZmllcik7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5h
bWVkQW5kSW5kZXhlZFNldHRlck5vSWRlbnRpZmllciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+
IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxs
VHlwZSgpLCBKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXIpOwogICAgIGVs
c2UKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVy
Tm9JZGVudGlmaWVyID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQo
dm0uaGVhcCwgKnZtLmNlbGxIZWFwQ2VsbFR5cGUsIEpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRl
ck5vSWRlbnRpZmllcik7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkQW5k
SW5kZXhlZFNldHRlck5vSWRlbnRpZmllciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19T
VUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0TmFtZWRB
bmRJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyKTsKICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5t
X3N1YnNwYWNlRm9yVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlck5vSWRlbnRpZmllci5nZXQoKTsK
IElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklO
R1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJUaHJvd2lu
Z0V4Y2VwdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9u
LmNwcAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNjYsNyArNjYsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpT
Qzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAg
U1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0TmFtZWRBbmRJbmRleGVk
U2V0dGVyVGhyb3dpbmdFeGNlcHRpb25Qcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4g
JnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFj
ZSgpOwogICAgIH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShK
U0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFs
dWUgcHJvdG90eXBlKQogICAgIHsKQEAgLTM0NCw5ICszNDQsOSBAQCBKU0M6Oklzb1N1YnNwYWNl
KiBKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTCiAgICAgICAgIHJldHVybiBzcGFjZTsKICAgICBzdGF0
aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpT
VGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uPiB8fCAhSlNUZXN0TmFt
ZWRBbmRJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb246Om5lZWRzRGVzdHJ1Y3Rpb24pOwog
ICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9i
amVjdCwgSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24+KQotICAg
ICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJUaHJvd2lu
Z0V4Y2VwdGlvbiA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZt
LmhlYXAsICp2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUsIEpTVGVzdE5hbWVkQW5k
SW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3Bh
Y2VGb3JUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24gPSBtYWtlVW5p
cXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGli
bGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyVGhyb3dp
bmdFeGNlcHRpb24pOwogICAgIGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0
TmFtZWRBbmRJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24gPSBtYWtlVW5pcXVlPElzb1N1
YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uY2VsbEhlYXBDZWxsVHlwZSwg
SlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24pOworICAgICAgICBz
cGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2Vw
dGlvbiA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAs
IHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyVGhyb3dp
bmdFeGNlcHRpb24pOwogICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0
TmFtZWRBbmRJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24uZ2V0KCk7CiBJR05PUkVfV0FS
TklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0
YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXIuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllci5jcHAJKHJldmlzaW9uIDI4
NjA5NSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RO
YW1lZEFuZEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTc1LDcgKzc1LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJz
cGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NV
QlNQQUNFX1NIQVJBQkxFKEpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVy
UHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOwor
ICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGlj
IEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBA
IC00MDEsOSArNDAxLDkgQEAgSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0TmFtZWRBbmRJbmRleGVk
UwogICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vf
b2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0
ZXJXaXRoSWRlbnRpZmllcj4gfHwgIUpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlcldpdGhJZGVu
dGlmaWVyOjpuZWVkc0Rlc3RydWN0aW9uKTsKICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFz
ZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdE5hbWVkQW5kSW5kZXhlZFNl
dHRlcldpdGhJZGVudGlmaWVyPikKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFt
ZWRBbmRJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXIgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNl
PiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENl
bGxUeXBlLCBKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllcik7CisgICAg
ICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlcldpdGhJZGVu
dGlmaWVyID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVh
cCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCksIEpTVGVzdE5hbWVkQW5kSW5k
ZXhlZFNldHRlcldpdGhJZGVudGlmaWVyKTsKICAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1
YnNwYWNlRm9yVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyID0gbWFrZVVu
aXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmNlbGxIZWFw
Q2VsbFR5cGUsIEpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyKTsKKyAg
ICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0aElk
ZW50aWZpZXIgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5o
ZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCksIEpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlcldp
dGhJZGVudGlmaWVyKTsKICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVz
dE5hbWVkQW5kSW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyLmdldCgpOwogSUdOT1JFX1dBUk5J
TkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1
dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlck5vSWRlbnRpZmllci5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVs
ZXRlck5vSWRlbnRpZmllci5jcHAJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJOb0lkZW50aWZpZXIu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NSw3ICs2NSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMg
SlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAgICAg
ICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3ROYW1lZERlbGV0ZXJO
b0lkZW50aWZpZXJQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2Jq
ZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0K
ICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwg
SlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBl
KQogICAgIHsKQEAgLTI0Niw5ICsyNDYsOSBAQCBKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3ROYW1l
ZERlbGV0ZXJOb0lkCiAgICAgICAgIHJldHVybiBzcGFjZTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0
ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdE5hbWVkRGVs
ZXRlck5vSWRlbnRpZmllcj4gfHwgIUpTVGVzdE5hbWVkRGVsZXRlck5vSWRlbnRpZmllcjo6bmVl
ZHNEZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6
OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3ROYW1lZERlbGV0ZXJOb0lkZW50aWZpZXI+KQot
ICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZERlbGV0ZXJOb0lkZW50aWZpZXIg
PSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0u
ZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLCBKU1Rlc3ROYW1lZERlbGV0ZXJOb0lkZW50
aWZpZXIpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZERlbGV0ZXJOb0lk
ZW50aWZpZXIgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5o
ZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0TmFtZWREZWxl
dGVyTm9JZGVudGlmaWVyKTsKICAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9y
VGVzdE5hbWVkRGVsZXRlck5vSWRlbnRpZmllciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElT
T19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5jZWxsSGVhcENlbGxUeXBlLCBKU1Rlc3ROYW1l
ZERlbGV0ZXJOb0lkZW50aWZpZXIpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RO
YW1lZERlbGV0ZXJOb0lkZW50aWZpZXIgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VC
U1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCksIEpTVGVzdE5hbWVkRGVs
ZXRlck5vSWRlbnRpZmllcik7CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZv
clRlc3ROYW1lZERlbGV0ZXJOb0lkZW50aWZpZXIuZ2V0KCk7CiBJR05PUkVfV0FSTklOR1NfQkVH
SU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2lj
YWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0TmFtZWREZWxldGVyVGhyb3dpbmdFeGNlcHRpb24uY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0
ZXJUaHJvd2luZ0V4Y2VwdGlvbi5jcHAJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJUaHJvd2luZ0V4
Y2VwdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY1LDcgKzY1LDcgQEAgcHVibGljOgogICAg
IHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7
CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdE5hbWVk
RGVsZXRlclRocm93aW5nRXhjZXB0aW9uUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJu
ICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3Bh
Y2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUo
SlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1Zh
bHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC0yNDYsOSArMjQ2LDkgQEAgSlNDOjpJc29TdWJzcGFj
ZSogSlNUZXN0TmFtZWREZWxldGVyVGhybwogICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAgc3Rh
dGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBK
U1Rlc3ROYW1lZERlbGV0ZXJUaHJvd2luZ0V4Y2VwdGlvbj4gfHwgIUpTVGVzdE5hbWVkRGVsZXRl
clRocm93aW5nRXhjZXB0aW9uOjpuZWVkc0Rlc3RydWN0aW9uKTsKICAgICBpZiBjb25zdGV4cHIg
KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdE5hbWVk
RGVsZXRlclRocm93aW5nRXhjZXB0aW9uPikKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JU
ZXN0TmFtZWREZWxldGVyVGhyb3dpbmdFeGNlcHRpb24gPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNl
PiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENl
bGxUeXBlLCBKU1Rlc3ROYW1lZERlbGV0ZXJUaHJvd2luZ0V4Y2VwdGlvbik7CisgICAgICAgIHNw
YWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkRGVsZXRlclRocm93aW5nRXhjZXB0aW9uID0gbWFr
ZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1
Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCksIEpTVGVzdE5hbWVkRGVsZXRlclRocm93aW5nRXhj
ZXB0aW9uKTsKICAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVk
RGVsZXRlclRocm93aW5nRXhjZXB0aW9uID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NV
QlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmNlbGxIZWFwQ2VsbFR5cGUsIEpTVGVzdE5hbWVkRGVs
ZXRlclRocm93aW5nRXhjZXB0aW9uKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0
TmFtZWREZWxldGVyVGhyb3dpbmdFeGNlcHRpb24gPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJ
U09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCksIEpTVGVzdE5h
bWVkRGVsZXRlclRocm93aW5nRXhjZXB0aW9uKTsKICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5t
X3N1YnNwYWNlRm9yVGVzdE5hbWVkRGVsZXRlclRocm93aW5nRXhjZXB0aW9uLmdldCgpOwogSUdO
T1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKIElHTk9SRV9XQVJOSU5HU19C
RUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlcldpdGhJZGVudGlmaWVyLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0TmFtZWREZWxldGVyV2l0aElkZW50aWZpZXIuY3BwCShyZXZpc2lvbiAyODYwOTUpCisrKyBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVy
V2l0aElkZW50aWZpZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03Miw3ICs3Miw3IEBAIHB1Ymxp
YzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0p
CiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rl
c3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllclByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJl
dHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVj
dFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0
dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6
SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAtMjcwLDkgKzI3MCw5IEBAIEpTQzo6SXNvU3Vi
c3BhY2UqIEpTVGVzdE5hbWVkRGVsZXRlcldpdGgKICAgICAgICAgcmV0dXJuIHNwYWNlOwogICAg
IHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVj
dCwgSlNUZXN0TmFtZWREZWxldGVyV2l0aElkZW50aWZpZXI+IHx8ICFKU1Rlc3ROYW1lZERlbGV0
ZXJXaXRoSWRlbnRpZmllcjo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3RleHByIChz
dGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3ROYW1lZERl
bGV0ZXJXaXRoSWRlbnRpZmllcj4pCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5h
bWVkRGVsZXRlcldpdGhJZGVudGlmaWVyID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NV
QlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSwg
SlNUZXN0TmFtZWREZWxldGVyV2l0aElkZW50aWZpZXIpOworICAgICAgICBzcGFjZXMubV9zdWJz
cGFjZUZvclRlc3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllciA9IG1ha2VVbmlxdWU8SXNvU3Vi
c3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhl
YXBDZWxsVHlwZSgpLCBKU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllcik7CiAgICAgZWxz
ZQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRp
ZmllciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAs
ICp2bS5jZWxsSGVhcENlbGxUeXBlLCBKU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllcik7
CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkRGVsZXRlcldpdGhJZGVudGlm
aWVyID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwg
dm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllcik7
CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZERlbGV0ZXJX
aXRoSWRlbnRpZmllci5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUt
Y29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERl
bGV0ZXJXaXRoSW5kZXhlZEdldHRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlcldpdGhJbmRleGVkR2V0
dGVyLmNwcAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlcldpdGhJbmRleGVkR2V0dGVyLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNjYsNyArNjYsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNv
U3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElD
X0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0TmFtZWREZWxldGVyV2l0aEluZGV4
ZWRHZXR0ZXJQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0
U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KICAg
ICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlND
OjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQog
ICAgIHsKQEAgLTI2Miw5ICsyNjIsOSBAQCBKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3ROYW1lZERl
bGV0ZXJXaXRoCiAgICAgICAgIHJldHVybiBzcGFjZTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6
aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdE5hbWVkRGVsZXRl
cldpdGhJbmRleGVkR2V0dGVyPiB8fCAhSlNUZXN0TmFtZWREZWxldGVyV2l0aEluZGV4ZWRHZXR0
ZXI6Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29m
X3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0TmFtZWREZWxldGVyV2l0aEluZGV4
ZWRHZXR0ZXI+KQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZERlbGV0ZXJX
aXRoSW5kZXhlZEdldHRlciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9J
TklUKHZtLmhlYXAsICp2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUsIEpTVGVzdE5h
bWVkRGVsZXRlcldpdGhJbmRleGVkR2V0dGVyKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VG
b3JUZXN0TmFtZWREZWxldGVyV2l0aEluZGV4ZWRHZXR0ZXIgPSBtYWtlVW5pcXVlPElzb1N1YnNw
YWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFw
Q2VsbFR5cGUoKSwgSlNUZXN0TmFtZWREZWxldGVyV2l0aEluZGV4ZWRHZXR0ZXIpOwogICAgIGVs
c2UKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWREZWxldGVyV2l0aEluZGV4
ZWRHZXR0ZXIgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5o
ZWFwLCAqdm0uY2VsbEhlYXBDZWxsVHlwZSwgSlNUZXN0TmFtZWREZWxldGVyV2l0aEluZGV4ZWRH
ZXR0ZXIpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZERlbGV0ZXJXaXRo
SW5kZXhlZEdldHRlciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklU
KHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0TmFtZWREZWxldGVyV2l0aElu
ZGV4ZWRHZXR0ZXIpOwogICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0
TmFtZWREZWxldGVyV2l0aEluZGV4ZWRHZXR0ZXIuZ2V0KCk7CiBJR05PUkVfV0FSTklOR1NfQkVH
SU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2lj
YWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0TmFtZWRHZXR0ZXJDYWxsV2l0aC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkR2V0dGVyQ2FsbFdpdGgu
Y3BwCShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0TmFtZWRHZXR0ZXJDYWxsV2l0aC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTY1LDcgKzY1LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJz
cGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NV
QlNQQUNFX1NIQVJBQkxFKEpTVGVzdE5hbWVkR2V0dGVyQ2FsbFdpdGhQcm90b3R5cGUsIEJhc2Up
OwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAm
dm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUq
IGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKQEAgLTIyMCw5ICsyMjAsOSBA
QCBKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3ROYW1lZEdldHRlckNhbGxXCiAgICAgICAgIHJldHVy
biBzcGFjZTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0
cnVjdGlibGVPYmplY3QsIEpTVGVzdE5hbWVkR2V0dGVyQ2FsbFdpdGg+IHx8ICFKU1Rlc3ROYW1l
ZEdldHRlckNhbGxXaXRoOjpuZWVkc0Rlc3RydWN0aW9uKTsKICAgICBpZiBjb25zdGV4cHIgKHN0
ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdE5hbWVkR2V0
dGVyQ2FsbFdpdGg+KQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZEdldHRl
ckNhbGxXaXRoID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0u
aGVhcCwgKnZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSwgSlNUZXN0TmFtZWRHZXR0
ZXJDYWxsV2l0aCk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkR2V0dGVy
Q2FsbFdpdGggPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5o
ZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0TmFtZWRHZXR0
ZXJDYWxsV2l0aCk7CiAgICAgZWxzZQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RO
YW1lZEdldHRlckNhbGxXaXRoID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNF
X0lOSVQodm0uaGVhcCwgKnZtLmNlbGxIZWFwQ2VsbFR5cGUsIEpTVGVzdE5hbWVkR2V0dGVyQ2Fs
bFdpdGgpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZEdldHRlckNhbGxX
aXRoID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwg
dm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3ROYW1lZEdldHRlckNhbGxXaXRoKTsKICAgICBh
dXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkR2V0dGVyQ2FsbFdpdGgu
Z2V0KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JF
X1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRHZXR0ZXJOb0lkZW50aWZp
ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3ROYW1lZEdldHRlck5vSWRlbnRpZmllci5jcHAJKHJldmlzaW9uIDI4NjA5NSkK
KysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEdl
dHRlck5vSWRlbnRpZmllci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY1LDcgKzY1LDcgQEAgcHVi
bGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2
bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpT
VGVzdE5hbWVkR2V0dGVyTm9JZGVudGlmaWVyUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0
dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0
U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1
cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpK
U1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC0yMjAsOSArMjIwLDkgQEAgSlNDOjpJc29TdWJz
cGFjZSogSlNUZXN0TmFtZWRHZXR0ZXJOb0lkZQogICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAg
c3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0
LCBKU1Rlc3ROYW1lZEdldHRlck5vSWRlbnRpZmllcj4gfHwgIUpTVGVzdE5hbWVkR2V0dGVyTm9J
ZGVudGlmaWVyOjpuZWVkc0Rlc3RydWN0aW9uKTsKICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNf
YmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdE5hbWVkR2V0dGVyTm9J
ZGVudGlmaWVyPikKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRHZXR0ZXJO
b0lkZW50aWZpZXIgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2
bS5oZWFwLCAqdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLCBKU1Rlc3ROYW1lZEdl
dHRlck5vSWRlbnRpZmllcik7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVk
R2V0dGVyTm9JZGVudGlmaWVyID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNF
X0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCksIEpTVGVz
dE5hbWVkR2V0dGVyTm9JZGVudGlmaWVyKTsKICAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1
YnNwYWNlRm9yVGVzdE5hbWVkR2V0dGVyTm9JZGVudGlmaWVyID0gbWFrZVVuaXF1ZTxJc29TdWJz
cGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmNlbGxIZWFwQ2VsbFR5cGUsIEpT
VGVzdE5hbWVkR2V0dGVyTm9JZGVudGlmaWVyKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VG
b3JUZXN0TmFtZWRHZXR0ZXJOb0lkZW50aWZpZXIgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJ
U09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCksIEpTVGVzdE5h
bWVkR2V0dGVyTm9JZGVudGlmaWVyKTsKICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNw
YWNlRm9yVGVzdE5hbWVkR2V0dGVyTm9JZGVudGlmaWVyLmdldCgpOwogSUdOT1JFX1dBUk5JTkdT
X0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9s
b2dpY2FsLWNvbXBhcmUiKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdE5hbWVkR2V0dGVyV2l0aElkZW50aWZpZXIuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEdldHRl
cldpdGhJZGVudGlmaWVyLmNwcAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkR2V0dGVyV2l0aElkZW50aWZpZXIu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC03MCw3ICs3MCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMg
SlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAgICAg
ICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3ROYW1lZEdldHRlcldp
dGhJZGVudGlmaWVyUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9i
amVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9
CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0s
IEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlw
ZSkKICAgICB7CkBAIC0yNDYsOSArMjQ2LDkgQEAgSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0TmFt
ZWRHZXR0ZXJXaXRoSQogICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fzc2VydChz
dGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3ROYW1lZEdl
dHRlcldpdGhJZGVudGlmaWVyPiB8fCAhSlNUZXN0TmFtZWRHZXR0ZXJXaXRoSWRlbnRpZmllcjo6
bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxK
U0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3ROYW1lZEdldHRlcldpdGhJZGVudGlmaWVy
PikKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRHZXR0ZXJXaXRoSWRlbnRp
ZmllciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAs
ICp2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUsIEpTVGVzdE5hbWVkR2V0dGVyV2l0
aElkZW50aWZpZXIpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZEdldHRl
cldpdGhJZGVudGlmaWVyID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lO
SVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCksIEpTVGVzdE5h
bWVkR2V0dGVyV2l0aElkZW50aWZpZXIpOwogICAgIGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vi
c3BhY2VGb3JUZXN0TmFtZWRHZXR0ZXJXaXRoSWRlbnRpZmllciA9IG1ha2VVbmlxdWU8SXNvU3Vi
c3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5jZWxsSGVhcENlbGxUeXBlLCBK
U1Rlc3ROYW1lZEdldHRlcldpdGhJZGVudGlmaWVyKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3Bh
Y2VGb3JUZXN0TmFtZWRHZXR0ZXJXaXRoSWRlbnRpZmllciA9IG1ha2VVbmlxdWU8SXNvU3Vic3Bh
Y2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNU
ZXN0TmFtZWRHZXR0ZXJXaXRoSWRlbnRpZmllcik7CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMu
bV9zdWJzcGFjZUZvclRlc3ROYW1lZEdldHRlcldpdGhJZGVudGlmaWVyLmdldCgpOwogSUdOT1JF
X1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKIElHTk9SRV9XQVJOSU5HU19CRUdJ
TigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyTm9JZGVudGlmaWVyLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFt
ZWRTZXR0ZXJOb0lkZW50aWZpZXIuY3BwCShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJOb0lkZW50aWZp
ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NSw3ICs2NSw3IEBAIHB1YmxpYzoKICAgICBzdGF0
aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAg
ICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3ROYW1lZFNldHRl
ck5vSWRlbnRpZmllclByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5P
YmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAg
fQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZt
LCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5
cGUpCiAgICAgewpAQCAtMzAwLDkgKzMwMCw5IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdE5h
bWVkU2V0dGVyTm9JZGUKICAgICAgICAgcmV0dXJuIHNwYWNlOwogICAgIHN0YXRpY19hc3NlcnQo
c3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0TmFtZWRT
ZXR0ZXJOb0lkZW50aWZpZXI+IHx8ICFKU1Rlc3ROYW1lZFNldHRlck5vSWRlbnRpZmllcjo6bmVl
ZHNEZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6
OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3ROYW1lZFNldHRlck5vSWRlbnRpZmllcj4pCi0g
ICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkU2V0dGVyTm9JZGVudGlmaWVyID0g
bWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmRl
c3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSwgSlNUZXN0TmFtZWRTZXR0ZXJOb0lkZW50aWZp
ZXIpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZFNldHRlck5vSWRlbnRp
ZmllciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAs
IHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3ROYW1lZFNldHRlck5v
SWRlbnRpZmllcik7CiAgICAgZWxzZQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RO
YW1lZFNldHRlck5vSWRlbnRpZmllciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJT
UEFDRV9JTklUKHZtLmhlYXAsICp2bS5jZWxsSGVhcENlbGxUeXBlLCBKU1Rlc3ROYW1lZFNldHRl
ck5vSWRlbnRpZmllcik7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkU2V0
dGVyTm9JZGVudGlmaWVyID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lO
SVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3ROYW1lZFNldHRlck5vSWRl
bnRpZmllcik7CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1l
ZFNldHRlck5vSWRlbnRpZmllci5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFj
aGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJl
IikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RO
YW1lZFNldHRlclRocm93aW5nRXhjZXB0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJUaHJvd2luZ0V4
Y2VwdGlvbi5jcHAJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlclRocm93aW5nRXhjZXB0aW9uLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNjUsNyArNjUsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6
SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RB
VElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0TmFtZWRTZXR0ZXJUaHJvd2lu
Z0V4Y2VwdGlvblByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmpl
Y3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQog
ICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBK
U0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUp
CiAgICAgewpAQCAtMzAwLDkgKzMwMCw5IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdE5hbWVk
U2V0dGVyVGhyb3cKICAgICAgICAgcmV0dXJuIHNwYWNlOwogICAgIHN0YXRpY19hc3NlcnQoc3Rk
Ojppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0TmFtZWRTZXR0
ZXJUaHJvd2luZ0V4Y2VwdGlvbj4gfHwgIUpTVGVzdE5hbWVkU2V0dGVyVGhyb3dpbmdFeGNlcHRp
b246Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29m
X3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0TmFtZWRTZXR0ZXJUaHJvd2luZ0V4
Y2VwdGlvbj4pCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkU2V0dGVyVGhy
b3dpbmdFeGNlcHRpb24gPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5J
VCh2bS5oZWFwLCAqdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLCBKU1Rlc3ROYW1l
ZFNldHRlclRocm93aW5nRXhjZXB0aW9uKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JU
ZXN0TmFtZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbiA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+
IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxs
VHlwZSgpLCBKU1Rlc3ROYW1lZFNldHRlclRocm93aW5nRXhjZXB0aW9uKTsKICAgICBlbHNlCi0g
ICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkU2V0dGVyVGhyb3dpbmdFeGNlcHRp
b24gPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAq
dm0uY2VsbEhlYXBDZWxsVHlwZSwgSlNUZXN0TmFtZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbik7
CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkU2V0dGVyVGhyb3dpbmdFeGNl
cHRpb24gPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFw
LCB2bS5jZWxsSGVhcENlbGxUeXBlKCksIEpTVGVzdE5hbWVkU2V0dGVyVGhyb3dpbmdFeGNlcHRp
b24pOwogICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRTZXR0
ZXJUaHJvd2luZ0V4Y2VwdGlvbi5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFj
aGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJl
IikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RO
YW1lZFNldHRlcldpdGhJZGVudGlmaWVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmll
ci5jcHAJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhJZGVudGlmaWVyLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNzIsNyArNzIsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3Bh
Y2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VS
VF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmllclBy
b3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAg
ICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBK
U0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAt
MzMxLDkgKzMzMSw5IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdE5hbWVkU2V0dGVyV2l0aEkK
ICAgICAgICAgcmV0dXJuIHNwYWNlOwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29m
X3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRp
Zmllcj4gfHwgIUpTVGVzdE5hbWVkU2V0dGVyV2l0aElkZW50aWZpZXI6Om5lZWRzRGVzdHJ1Y3Rp
b24pOwogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0
aWJsZU9iamVjdCwgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmllcj4pCi0gICAgICAgIHNw
YWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkU2V0dGVyV2l0aElkZW50aWZpZXIgPSBtYWtlVW5p
cXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uZGVzdHJ1Y3Rp
YmxlT2JqZWN0SGVhcENlbGxUeXBlLCBKU1Rlc3ROYW1lZFNldHRlcldpdGhJZGVudGlmaWVyKTsK
KyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmll
ciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZt
LmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3ROYW1lZFNldHRlcldpdGhJ
ZGVudGlmaWVyKTsKICAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5h
bWVkU2V0dGVyV2l0aElkZW50aWZpZXIgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VC
U1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uY2VsbEhlYXBDZWxsVHlwZSwgSlNUZXN0TmFtZWRTZXR0
ZXJXaXRoSWRlbnRpZmllcik7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVk
U2V0dGVyV2l0aElkZW50aWZpZXIgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BB
Q0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCksIEpTVGVzdE5hbWVkU2V0dGVy
V2l0aElkZW50aWZpZXIpOwogICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JU
ZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmllci5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJ
TigidW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNh
bC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJX
aXRoSW5kZXhlZEdldHRlci5jcHAJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0
dGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzUsNyArNzUsNyBAQCBwdWJsaWM6CiAgICAgc3Rh
dGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAg
ICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0TmFtZWRTZXR0
ZXJXaXRoSW5kZXhlZEdldHRlclByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0u
cGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7
CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6
Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBw
cm90b3R5cGUpCiAgICAgewpAQCAtMzc4LDkgKzM3OCw5IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpT
VGVzdE5hbWVkU2V0dGVyV2l0aEkKICAgICAgICAgcmV0dXJuIHNwYWNlOwogICAgIHN0YXRpY19h
c3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0
TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlcj4gfHwgIUpTVGVzdE5hbWVkU2V0dGVyV2l0aElu
ZGV4ZWRHZXR0ZXI6Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjpp
c19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0TmFtZWRTZXR0ZXJX
aXRoSW5kZXhlZEdldHRlcj4pCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVk
U2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXIgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VC
U1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLCBK
U1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vi
c3BhY2VGb3JUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlciA9IG1ha2VVbmlxdWU8SXNv
U3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVj
dEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyKTsKICAg
ICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkU2V0dGVyV2l0aElu
ZGV4ZWRHZXR0ZXIgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2
bS5oZWFwLCAqdm0uY2VsbEhlYXBDZWxsVHlwZSwgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhl
ZEdldHRlcik7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkU2V0dGVyV2l0
aEluZGV4ZWRHZXR0ZXIgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5J
VCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCksIEpTVGVzdE5hbWVkU2V0dGVyV2l0aElu
ZGV4ZWRHZXR0ZXIpOwogICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0
TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlci5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJ
TigidW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNh
bC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQW5kU2V0dGVyLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFt
ZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlckFuZFNldHRlci5jcHAJKHJldmlzaW9uIDI4NjA5NSkK
KysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNl
dHRlcldpdGhJbmRleGVkR2V0dGVyQW5kU2V0dGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzUs
NyArNzUsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNl
Rm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BB
Q0VfU0hBUkFCTEUoSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlckFuZFNldHRlclBy
b3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAg
ICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBK
U0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAt
NDI4LDkgKzQyOCw5IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdE5hbWVkU2V0dGVyV2l0aEkK
ICAgICAgICAgcmV0dXJuIHNwYWNlOwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29m
X3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhl
ZEdldHRlckFuZFNldHRlcj4gfHwgIUpTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJB
bmRTZXR0ZXI6Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19i
YXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0TmFtZWRTZXR0ZXJXaXRo
SW5kZXhlZEdldHRlckFuZFNldHRlcj4pCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVz
dE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0ZXIgPSBtYWtlVW5pcXVlPElzb1N1
YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0
SGVhcENlbGxUeXBlLCBKU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQW5kU2V0dGVy
KTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhl
ZEdldHRlckFuZFNldHRlciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9J
TklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RO
YW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQW5kU2V0dGVyKTsKICAgICBlbHNlCi0gICAgICAg
IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRT
ZXR0ZXIgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFw
LCAqdm0uY2VsbEhlYXBDZWxsVHlwZSwgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRl
ckFuZFNldHRlcik7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkU2V0dGVy
V2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0ZXIgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09f
U1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCksIEpTVGVzdE5hbWVk
U2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0ZXIpOwogICAgIGF1dG8qIHNwYWNlID0gc3Bh
Y2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlckFuZFNldHRl
ci5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJR05P
UkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdh
Y3lPdmVycmlkZUJ1aWx0SW5zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5T3ZlcnJpZGVC
dWlsdElucy5jcHAJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lPdmVycmlkZUJ1aWx0
SW5zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjUsNyArNjUsNyBAQCBwdWJsaWM6CiAgICAgc3Rh
dGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAg
ICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0TmFtZWRTZXR0
ZXJXaXRoTGVnYWN5T3ZlcnJpZGVCdWlsdEluc1Byb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJl
dHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVj
dFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0
dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6
SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAtMjc3LDkgKzI3Nyw5IEBAIEpTQzo6SXNvU3Vi
c3BhY2UqIEpTVGVzdE5hbWVkU2V0dGVyV2l0aEwKICAgICAgICAgcmV0dXJuIHNwYWNlOwogICAg
IHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVj
dCwgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5T3ZlcnJpZGVCdWlsdElucz4gfHwgIUpTVGVz
dE5hbWVkU2V0dGVyV2l0aExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM6Om5lZWRzRGVzdHJ1Y3Rpb24p
OwogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJs
ZU9iamVjdCwgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5T3ZlcnJpZGVCdWlsdElucz4pCi0g
ICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeU92ZXJy
aWRlQnVpbHRJbnMgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2
bS5oZWFwLCAqdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLCBKU1Rlc3ROYW1lZFNl
dHRlcldpdGhMZWdhY3lPdmVycmlkZUJ1aWx0SW5zKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3Bh
Y2VGb3JUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5T3ZlcnJpZGVCdWlsdElucyA9IG1ha2VVbmlx
dWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJs
ZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lPdmVycmlk
ZUJ1aWx0SW5zKTsKICAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5h
bWVkU2V0dGVyV2l0aExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMgPSBtYWtlVW5pcXVlPElzb1N1YnNw
YWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uY2VsbEhlYXBDZWxsVHlwZSwgSlNU
ZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5T3ZlcnJpZGVCdWlsdElucyk7CisgICAgICAgIHNwYWNl
cy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMg
PSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5j
ZWxsSGVhcENlbGxUeXBlKCksIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeU92ZXJyaWRlQnVp
bHRJbnMpOwogICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRT
ZXR0ZXJXaXRoTGVnYWN5T3ZlcnJpZGVCdWlsdElucy5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19C
RUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9n
aWNhbC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXMuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXMuY3BwCShyZXZp
c2lvbiAyODYwOTUpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNzQsNyArNzQsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNv
U3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElD
X0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5
VW5mb3JnZWFibGVQcm9wZXJ0aWVzUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2
bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2Uo
KTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlND
OjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVl
IHByb3RvdHlwZSkKICAgICB7CkBAIC0zNjEsOSArMzYxLDkgQEAgSlNDOjpJc29TdWJzcGFjZSog
SlNUZXN0TmFtZWRTZXR0ZXJXaXRoTAogICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAgc3RhdGlj
X2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rl
c3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXM+IHx8ICFKU1Rlc3RO
YW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXM6Om5lZWRzRGVzdHJ1Y3Rp
b24pOwogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0
aWJsZU9iamVjdCwgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0
aWVzPikKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRTZXR0ZXJXaXRoTGVn
YWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NV
QlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSwg
SlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzKTsKKyAgICAg
ICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFi
bGVQcm9wZXJ0aWVzID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQo
dm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCksIEpTVGVzdE5hbWVk
U2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllcyk7CiAgICAgZWxzZQotICAgICAg
ICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJs
ZVByb3BlcnRpZXMgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2
bS5oZWFwLCAqdm0uY2VsbEhlYXBDZWxsVHlwZSwgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5
VW5mb3JnZWFibGVQcm9wZXJ0aWVzKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0
TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzID0gbWFrZVVuaXF1ZTxJ
c29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlw
ZSgpLCBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXMpOwog
ICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRTZXR0ZXJXaXRo
TGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzLmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lO
KCJ1bnJlYWNoYWJsZS1jb2RlIikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2Fs
LWNvbXBhcmUiKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2Fj
eU92ZXJyaWRlQnVpbHRJbnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJs
ZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zLmNwcAkocmV2aXNpb24gMjg2MDk1
KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVk
U2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVp
bHRJbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NCw3ICs3NCw3IEBAIHB1YmxpYzoKICAgICBz
dGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewog
ICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3ROYW1lZFNl
dHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0
SW5zUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNl
OworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3Rh
dGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7
CkBAIC0zMzgsOSArMzM4LDkgQEAgSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0TmFtZWRTZXR0ZXJX
aXRoTAogICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jh
c2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3ROYW1lZFNldHRlcldpdGhM
ZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zPiB8fCAh
SlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5
T3ZlcnJpZGVCdWlsdEluczo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3RleHByIChz
dGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3ROYW1lZFNl
dHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0
SW5zPikKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRTZXR0ZXJXaXRoTGVn
YWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdElucyA9IG1ha2VV
bmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5kZXN0cnVj
dGlibGVPYmplY3RIZWFwQ2VsbFR5cGUsIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9y
Z2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMpOworICAgICAgICBzcGFj
ZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3Bl
cnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4g
SVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxU
eXBlKCksIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0Fu
ZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMpOwogICAgIGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vi
c3BhY2VGb3JUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5k
TGVnYWN5T3ZlcnJpZGVCdWlsdElucyA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJT
UEFDRV9JTklUKHZtLmhlYXAsICp2bS5jZWxsSGVhcENlbGxUeXBlLCBKU1Rlc3ROYW1lZFNldHRl
cldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5z
KTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5
VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdElucyA9IG1ha2VVbmlx
dWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2Vs
bFR5cGUoKSwgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVz
QW5kTGVnYWN5T3ZlcnJpZGVCdWlsdElucyk7CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9z
dWJzcGFjZUZvclRlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNB
bmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zLmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1
bnJlYWNoYWJsZS1jb2RlIikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNv
bXBhcmUiKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdE5hbWVzcGFjZU9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVzcGFjZU9iamVjdC5jcHAJKHJldmlzaW9u
IDI4NjA5NSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3ROYW1lc3BhY2VPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yODAsOSArMjgwLDkgQEAg
SlNDOjpJc29TdWJzcGFjZSogSlNUZXN0TmFtZXNwYWNlT2JqZWN0OgogICAgICAgICByZXR1cm4g
c3BhY2U7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1
Y3RpYmxlT2JqZWN0LCBKU1Rlc3ROYW1lc3BhY2VPYmplY3Q+IHx8ICFKU1Rlc3ROYW1lc3BhY2VP
YmplY3Q6Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNl
X29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0TmFtZXNwYWNlT2JqZWN0PikK
LSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZXNwYWNlT2JqZWN0ID0gbWFrZVVu
aXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmRlc3RydWN0
aWJsZU9iamVjdEhlYXBDZWxsVHlwZSwgSlNUZXN0TmFtZXNwYWNlT2JqZWN0KTsKKyAgICAgICAg
c3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZXNwYWNlT2JqZWN0ID0gbWFrZVVuaXF1ZTxJc29T
dWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0
SGVhcENlbGxUeXBlKCksIEpTVGVzdE5hbWVzcGFjZU9iamVjdCk7CiAgICAgZWxzZQotICAgICAg
ICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lc3BhY2VPYmplY3QgPSBtYWtlVW5pcXVlPElz
b1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uY2VsbEhlYXBDZWxsVHlw
ZSwgSlNUZXN0TmFtZXNwYWNlT2JqZWN0KTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JU
ZXN0TmFtZXNwYWNlT2JqZWN0ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNF
X0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3ROYW1lc3BhY2VPYmpl
Y3QpOwogICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZXNwYWNl
T2JqZWN0LmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikK
IElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRleDogU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5vZGUuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RO
b2RlLmNwcAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdE5vZGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05NSw3ICs5NSw3
IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlND
OjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFS
QUJMRShKU1Rlc3ROb2RlUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFp
bk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAg
ICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYg
dm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3Rv
dHlwZSkKICAgICB7CkBAIC00MDUsOSArNDA1LDkgQEAgcHVibGljOgogICAgICAgICAgICAgcmV0
dXJuIHNwYWNlOwogICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6
SlNEZXN0cnVjdGlibGVPYmplY3QsIFRlc3ROb2RlSXRlcmF0b3I+IHx8ICFUZXN0Tm9kZUl0ZXJh
dG9yOjpuZWVkc0Rlc3RydWN0aW9uKTsKICAgICAgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jh
c2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBUZXN0Tm9kZUl0ZXJhdG9yPikKLSAg
ICAgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5vZGVJdGVyYXRvciA9IG1ha2VVbmlx
dWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5kZXN0cnVjdGli
bGVPYmplY3RIZWFwQ2VsbFR5cGUuZ2V0KCksIFRlc3ROb2RlSXRlcmF0b3IpOworICAgICAgICAg
ICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0Tm9kZUl0ZXJhdG9yID0gbWFrZVVuaXF1ZTxJc29T
dWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0
SGVhcENlbGxUeXBlKCksIFRlc3ROb2RlSXRlcmF0b3IpOwogICAgICAgICBlbHNlCi0gICAgICAg
ICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROb2RlSXRlcmF0b3IgPSBtYWtlVW5pcXVlPElz
b1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uY2VsbEhlYXBDZWxsVHlw
ZSwgVGVzdE5vZGVJdGVyYXRvcik7CisgICAgICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRl
c3ROb2RlSXRlcmF0b3IgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5J
VCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCksIFRlc3ROb2RlSXRlcmF0b3IpOwogICAg
ICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5vZGVJdGVyYXRvci5n
ZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVf
V0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKQEAgLTQ5Nyw5ICs0OTcsOSBA
QCBKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3ROb2RlOjpzdWJzcGFjZUZvCiAgICAgICAgIHJldHVy
biBzcGFjZTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0
cnVjdGlibGVPYmplY3QsIEpTVGVzdE5vZGU+IHx8ICFKU1Rlc3ROb2RlOjpuZWVkc0Rlc3RydWN0
aW9uKTsKICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVj
dGlibGVPYmplY3QsIEpTVGVzdE5vZGU+KQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRl
c3ROb2RlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVh
cCwgKnZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSwgSlNUZXN0Tm9kZSk7CisgICAg
ICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5vZGUgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNl
PiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2Vs
bFR5cGUoKSwgSlNUZXN0Tm9kZSk7CiAgICAgZWxzZQotICAgICAgICBzcGFjZXMubV9zdWJzcGFj
ZUZvclRlc3ROb2RlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQo
dm0uaGVhcCwgKnZtLmNlbGxIZWFwQ2VsbFR5cGUsIEpTVGVzdE5vZGUpOworICAgICAgICBzcGFj
ZXMubV9zdWJzcGFjZUZvclRlc3ROb2RlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NV
QlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3ROb2RlKTsK
ICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5vZGUuZ2V0KCk7CiBJ
R05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdT
X0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcAkocmV2aXNpb24g
Mjg2MDk1KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dE9iai5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE4NjYsNyArMTg2Niw3IEBAIHB1YmxpYzoKICAg
ICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAg
ewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3RPYmpQ
cm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7Cisg
ICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KICAgICBzdGF0aWMg
SlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKQEAg
LTkwMDYsOSArOTAwNiw5IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdE9iajo6c3Vic3BhY2VG
b3IKICAgICAgICAgcmV0dXJuIHNwYWNlOwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNl
X29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0T2JqPiB8fCAhSlNUZXN0T2Jq
OjpuZWVkc0Rlc3RydWN0aW9uKTsKICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92
PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdE9iaj4pCi0gICAgICAgIHNwYWNlcy5t
X3N1YnNwYWNlRm9yVGVzdE9iaiA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFD
RV9JTklUKHZtLmhlYXAsICp2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUsIEpTVGVz
dE9iaik7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE9iaiA9IG1ha2VVbmlxdWU8
SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9i
amVjdEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RPYmopOwogICAgIGVsc2UKLSAgICAgICAgc3BhY2Vz
Lm1fc3Vic3BhY2VGb3JUZXN0T2JqID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQ
QUNFX0lOSVQodm0uaGVhcCwgKnZtLmNlbGxIZWFwQ2VsbFR5cGUsIEpTVGVzdE9iaik7CisgICAg
ICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE9iaiA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+
IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0
T2JqKTsKICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE9iai5nZXQo
KTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVfV0FS
TklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPcGVyYXRpb25Db25kaXRpb25hbC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdE9wZXJhdGlvbkNvbmRpdGlvbmFsLmNwcAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9wZXJhdGlvbkNvbmRpdGlv
bmFsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODEsNyArODEsNyBAQCBwdWJsaWM6CiAgICAgc3Rh
dGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAg
ICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0T3BlcmF0aW9u
Q29uZGl0aW9uYWxQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2Jq
ZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0K
ICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwg
SlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBl
KQogICAgIHsKQEAgLTIzNCw5ICsyMzQsOSBAQCBKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3RPcGVy
YXRpb25Db25kaXRpCiAgICAgICAgIHJldHVybiBzcGFjZTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0
ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdE9wZXJhdGlv
bkNvbmRpdGlvbmFsPiB8fCAhSlNUZXN0T3BlcmF0aW9uQ29uZGl0aW9uYWw6Om5lZWRzRGVzdHJ1
Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3Ry
dWN0aWJsZU9iamVjdCwgSlNUZXN0T3BlcmF0aW9uQ29uZGl0aW9uYWw+KQotICAgICAgICBzcGFj
ZXMubV9zdWJzcGFjZUZvclRlc3RPcGVyYXRpb25Db25kaXRpb25hbCA9IG1ha2VVbmlxdWU8SXNv
U3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5kZXN0cnVjdGlibGVPYmpl
Y3RIZWFwQ2VsbFR5cGUsIEpTVGVzdE9wZXJhdGlvbkNvbmRpdGlvbmFsKTsKKyAgICAgICAgc3Bh
Y2VzLm1fc3Vic3BhY2VGb3JUZXN0T3BlcmF0aW9uQ29uZGl0aW9uYWwgPSBtYWtlVW5pcXVlPElz
b1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmpl
Y3RIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0T3BlcmF0aW9uQ29uZGl0aW9uYWwpOwogICAgIGVsc2UK
LSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0T3BlcmF0aW9uQ29uZGl0aW9uYWwgPSBt
YWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uY2Vs
bEhlYXBDZWxsVHlwZSwgSlNUZXN0T3BlcmF0aW9uQ29uZGl0aW9uYWwpOworICAgICAgICBzcGFj
ZXMubV9zdWJzcGFjZUZvclRlc3RPcGVyYXRpb25Db25kaXRpb25hbCA9IG1ha2VVbmlxdWU8SXNv
U3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUo
KSwgSlNUZXN0T3BlcmF0aW9uQ29uZGl0aW9uYWwpOwogICAgIGF1dG8qIHNwYWNlID0gc3BhY2Vz
Lm1fc3Vic3BhY2VGb3JUZXN0T3BlcmF0aW9uQ29uZGl0aW9uYWwuZ2V0KCk7CiBJR05PUkVfV0FS
TklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0
YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJsb2Fk
ZWRDb25zdHJ1Y3RvcnMuY3BwCShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTY5LDcgKzY5LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6
Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNU
QVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1
Y3RvcnNQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3Bh
Y2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KICAgICBz
dGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAg
IHsKQEAgLTI5NSw5ICsyOTUsOSBAQCBKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3RPdmVybG9hZGVk
Q29uc3RyCiAgICAgICAgIHJldHVybiBzcGFjZTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNf
YmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdE92ZXJsb2FkZWRDb25z
dHJ1Y3RvcnM+IHx8ICFKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzOjpuZWVkc0Rlc3RydWN0
aW9uKTsKICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVj
dGlibGVPYmplY3QsIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM+KQotICAgICAgICBzcGFj
ZXMubV9zdWJzcGFjZUZvclRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzID0gbWFrZVVuaXF1ZTxJ
c29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmRlc3RydWN0aWJsZU9i
amVjdEhlYXBDZWxsVHlwZSwgSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyk7CisgICAgICAg
IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMgPSBtYWtlVW5p
cXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGli
bGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyk7CiAg
ICAgZWxzZQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RPdmVybG9hZGVkQ29uc3Ry
dWN0b3JzID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVh
cCwgKnZtLmNlbGxIZWFwQ2VsbFR5cGUsIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMpOwor
ICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzID0g
bWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2Vs
bEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzKTsKICAgICBhdXRv
KiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMu
Z2V0KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JF
X1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9y
c1dpdGhTZXF1ZW5jZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2Uu
Y3BwCShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5jZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTY4LDcgKzY4LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklz
b1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJ
Q19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3Rv
cnNXaXRoU2VxdWVuY2VQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWlu
T2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAg
IH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2
bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90
eXBlKQogICAgIHsKQEAgLTIzOCw5ICsyMzgsOSBAQCBKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3RP
dmVybG9hZGVkQ29uc3RyCiAgICAgICAgIHJldHVybiBzcGFjZTsKICAgICBzdGF0aWNfYXNzZXJ0
KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdE92ZXJs
b2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2U+IHx8ICFKU1Rlc3RPdmVybG9hZGVkQ29uc3Ry
dWN0b3JzV2l0aFNlcXVlbmNlOjpuZWVkc0Rlc3RydWN0aW9uKTsKICAgICBpZiBjb25zdGV4cHIg
KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdE92ZXJs
b2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2U+KQotICAgICAgICBzcGFjZXMubV9zdWJzcGFj
ZUZvclRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzV2l0aFNlcXVlbmNlID0gbWFrZVVuaXF1ZTxJ
c29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmRlc3RydWN0aWJsZU9i
amVjdEhlYXBDZWxsVHlwZSwgSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5j
ZSk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3Rv
cnNXaXRoU2VxdWVuY2UgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5J
VCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0T3Zl
cmxvYWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5jZSk7CiAgICAgZWxzZQotICAgICAgICBzcGFj
ZXMubV9zdWJzcGFjZUZvclRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzV2l0aFNlcXVlbmNlID0g
bWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmNl
bGxIZWFwQ2VsbFR5cGUsIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2Up
OworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3Jz
V2l0aFNlcXVlbmNlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQo
dm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0
b3JzV2l0aFNlcXVlbmNlKTsKICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9y
VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2UuZ2V0KCk7CiBJR05PUkVfV0FS
TklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0
YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0UGx1Z2luSW50ZXJmYWNlLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0UGx1Z2luSW50ZXJmYWNl
LmNwcAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdFBsdWdpbkludGVyZmFjZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY0
LDcgKzY0LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFj
ZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQ
QUNFX1NIQVJBQkxFKEpTVGVzdFBsdWdpbkludGVyZmFjZVByb3RvdHlwZSwgQmFzZSk7Ci0gICAg
ICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFp
bk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRl
U3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAtMjQ0LDkgKzI0NCw5IEBAIEpTQzo6
SXNvU3Vic3BhY2UqIEpTVGVzdFBsdWdpbkludGVyZmFjZToKICAgICAgICAgcmV0dXJuIHNwYWNl
OwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJs
ZU9iamVjdCwgSlNUZXN0UGx1Z2luSW50ZXJmYWNlPiB8fCAhSlNUZXN0UGx1Z2luSW50ZXJmYWNl
OjpuZWVkc0Rlc3RydWN0aW9uKTsKICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92
PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdFBsdWdpbkludGVyZmFjZT4pCi0gICAg
ICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFBsdWdpbkludGVyZmFjZSA9IG1ha2VVbmlxdWU8
SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5kZXN0cnVjdGlibGVP
YmplY3RIZWFwQ2VsbFR5cGUsIEpTVGVzdFBsdWdpbkludGVyZmFjZSk7CisgICAgICAgIHNwYWNl
cy5tX3N1YnNwYWNlRm9yVGVzdFBsdWdpbkludGVyZmFjZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3Bh
Y2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBD
ZWxsVHlwZSgpLCBKU1Rlc3RQbHVnaW5JbnRlcmZhY2UpOwogICAgIGVsc2UKLSAgICAgICAgc3Bh
Y2VzLm1fc3Vic3BhY2VGb3JUZXN0UGx1Z2luSW50ZXJmYWNlID0gbWFrZVVuaXF1ZTxJc29TdWJz
cGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmNlbGxIZWFwQ2VsbFR5cGUsIEpT
VGVzdFBsdWdpbkludGVyZmFjZSk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFBs
dWdpbkludGVyZmFjZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklU
KHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0UGx1Z2luSW50ZXJmYWNlKTsK
ICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFBsdWdpbkludGVyZmFj
ZS5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJR05P
UkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZl
bnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQuY3BwCShyZXZpc2lvbiAyODYwOTUpCisr
KyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0UHJvbWlzZVJl
amVjdGlvbkV2ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQ4LDcgKzE0OCw3IEBAIHB1Ymxp
YzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0p
CiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rl
c3RQcm9taXNlUmVqZWN0aW9uRXZlbnRQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4g
JnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFj
ZSgpOwogICAgIH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShK
U0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFs
dWUgcHJvdG90eXBlKQogICAgIHsKQEAgLTMwMSw5ICszMDEsOSBAQCBKU0M6Oklzb1N1YnNwYWNl
KiBKU1Rlc3RQcm9taXNlUmVqZWN0aW9uCiAgICAgICAgIHJldHVybiBzcGFjZTsKICAgICBzdGF0
aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpT
VGVzdFByb21pc2VSZWplY3Rpb25FdmVudD4gfHwgIUpTVGVzdFByb21pc2VSZWplY3Rpb25FdmVu
dDo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2Zf
djxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQ+
KQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQg
PSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0u
ZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLCBKU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZl
bnQpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RQcm9taXNlUmVqZWN0aW9uRXZl
bnQgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2
bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0UHJvbWlzZVJlamVjdGlv
bkV2ZW50KTsKICAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFByb21p
c2VSZWplY3Rpb25FdmVudCA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9J
TklUKHZtLmhlYXAsICp2bS5jZWxsSGVhcENlbGxUeXBlLCBKU1Rlc3RQcm9taXNlUmVqZWN0aW9u
RXZlbnQpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RQcm9taXNlUmVqZWN0aW9u
RXZlbnQgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFw
LCB2bS5jZWxsSGVhcENlbGxUeXBlKCksIEpTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudCk7CiAg
ICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RQcm9taXNlUmVqZWN0aW9u
RXZlbnQuZ2V0KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQog
SUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0UmVhZE9ubHlNYXBMaWtl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0UmVhZE9ubHlNYXBMaWtlLmNwcAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFJlYWRPbmx5TWFwTGlrZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTc5LDcgKzc5LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBK
U0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAg
IFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdFJlYWRPbmx5TWFwTGlr
ZVByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsK
KyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRp
YyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpA
QCAtMzA1LDkgKzMwNSw5IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdFJlYWRPbmx5TWFwTGlr
ZToKICAgICAgICAgcmV0dXJuIHNwYWNlOwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNl
X29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0UmVhZE9ubHlNYXBMaWtlPiB8
fCAhSlNUZXN0UmVhZE9ubHlNYXBMaWtlOjpuZWVkc0Rlc3RydWN0aW9uKTsKICAgICBpZiBjb25z
dGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVz
dFJlYWRPbmx5TWFwTGlrZT4pCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFJlYWRP
bmx5TWFwTGlrZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZt
LmhlYXAsICp2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUsIEpTVGVzdFJlYWRPbmx5
TWFwTGlrZSk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFJlYWRPbmx5TWFwTGlr
ZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZt
LmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RSZWFkT25seU1hcExpa2Up
OwogICAgIGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0UmVhZE9ubHlNYXBM
aWtlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwg
KnZtLmNlbGxIZWFwQ2VsbFR5cGUsIEpTVGVzdFJlYWRPbmx5TWFwTGlrZSk7CisgICAgICAgIHNw
YWNlcy5tX3N1YnNwYWNlRm9yVGVzdFJlYWRPbmx5TWFwTGlrZSA9IG1ha2VVbmlxdWU8SXNvU3Vi
c3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwg
SlNUZXN0UmVhZE9ubHlNYXBMaWtlKTsKICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNw
YWNlRm9yVGVzdFJlYWRPbmx5TWFwTGlrZS5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigi
dW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1j
b21wYXJlIikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RSZWFkT25seVNldExpa2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RSZWFkT25seVNldExpa2UuY3BwCShyZXZpc2lv
biAyODYwOTUpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0UmVhZE9ubHlTZXRMaWtlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzgsNyArNzgsNyBAQCBw
dWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0m
IHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUo
SlNUZXN0UmVhZE9ubHlTZXRMaWtlUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2
bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2Uo
KTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlND
OjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVl
IHByb3RvdHlwZSkKICAgICB7CkBAIC0yODQsOSArMjg0LDkgQEAgSlNDOjpJc29TdWJzcGFjZSog
SlNUZXN0UmVhZE9ubHlTZXRMaWtlOgogICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAgc3RhdGlj
X2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rl
c3RSZWFkT25seVNldExpa2U+IHx8ICFKU1Rlc3RSZWFkT25seVNldExpa2U6Om5lZWRzRGVzdHJ1
Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3Ry
dWN0aWJsZU9iamVjdCwgSlNUZXN0UmVhZE9ubHlTZXRMaWtlPikKLSAgICAgICAgc3BhY2VzLm1f
c3Vic3BhY2VGb3JUZXN0UmVhZE9ubHlTZXRMaWtlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4g
SVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxs
VHlwZSwgSlNUZXN0UmVhZE9ubHlTZXRMaWtlKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VG
b3JUZXN0UmVhZE9ubHlTZXRMaWtlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQ
QUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCksIEpT
VGVzdFJlYWRPbmx5U2V0TGlrZSk7CiAgICAgZWxzZQotICAgICAgICBzcGFjZXMubV9zdWJzcGFj
ZUZvclRlc3RSZWFkT25seVNldExpa2UgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VC
U1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uY2VsbEhlYXBDZWxsVHlwZSwgSlNUZXN0UmVhZE9ubHlT
ZXRMaWtlKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0UmVhZE9ubHlTZXRMaWtl
ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0u
Y2VsbEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RSZWFkT25seVNldExpa2UpOwogICAgIGF1dG8qIHNw
YWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0UmVhZE9ubHlTZXRMaWtlLmdldCgpOwogSUdO
T1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKIElHTk9SRV9XQVJOSU5HU19C
RUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFJlcG9ydEV4dHJhTWVtb3J5Q29zdC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFJl
cG9ydEV4dHJhTWVtb3J5Q29zdC5jcHAJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RSZXBvcnRFeHRyYU1lbW9yeUNvc3Qu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC02Myw3ICs2Myw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMg
SlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAgICAg
ICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3RSZXBvcnRFeHRyYU1l
bW9yeUNvc3RQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0
U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KICAg
ICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlND
OjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQog
ICAgIHsKQEAgLTE3MSw5ICsxNzEsOSBAQCBKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3RSZXBvcnRF
eHRyYU1lbW9yCiAgICAgICAgIHJldHVybiBzcGFjZTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6
aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdFJlcG9ydEV4dHJh
TWVtb3J5Q29zdD4gfHwgIUpTVGVzdFJlcG9ydEV4dHJhTWVtb3J5Q29zdDo6bmVlZHNEZXN0cnVj
dGlvbik7CiAgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1
Y3RpYmxlT2JqZWN0LCBKU1Rlc3RSZXBvcnRFeHRyYU1lbW9yeUNvc3Q+KQotICAgICAgICBzcGFj
ZXMubV9zdWJzcGFjZUZvclRlc3RSZXBvcnRFeHRyYU1lbW9yeUNvc3QgPSBtYWtlVW5pcXVlPElz
b1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uZGVzdHJ1Y3RpYmxlT2Jq
ZWN0SGVhcENlbGxUeXBlLCBKU1Rlc3RSZXBvcnRFeHRyYU1lbW9yeUNvc3QpOworICAgICAgICBz
cGFjZXMubV9zdWJzcGFjZUZvclRlc3RSZXBvcnRFeHRyYU1lbW9yeUNvc3QgPSBtYWtlVW5pcXVl
PElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVP
YmplY3RIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0UmVwb3J0RXh0cmFNZW1vcnlDb3N0KTsKICAgICBl
bHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFJlcG9ydEV4dHJhTWVtb3J5Q29z
dCA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2
bS5jZWxsSGVhcENlbGxUeXBlLCBKU1Rlc3RSZXBvcnRFeHRyYU1lbW9yeUNvc3QpOworICAgICAg
ICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RSZXBvcnRFeHRyYU1lbW9yeUNvc3QgPSBtYWtlVW5p
cXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENl
bGxUeXBlKCksIEpTVGVzdFJlcG9ydEV4dHJhTWVtb3J5Q29zdCk7CiAgICAgYXV0byogc3BhY2Ug
PSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RSZXBvcnRFeHRyYU1lbW9yeUNvc3QuZ2V0KCk7CiBJ
R05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdT
X0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmNwcAkocmV2aXNpb24gMjg2
MDk1KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg5LDcg
Kzg5LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZv
cihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNF
X1NIQVJBQkxFKEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVByb3RvdHlwZSwg
QmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0
dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVj
dHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAtMzQ5LDkgKzM0
OSw5IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHQKICAgICAgICAg
cmV0dXJuIHNwYWNlOwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpK
U0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNl
PiB8fCAhSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlOjpuZWVkc0Rlc3RydWN0
aW9uKTsKICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVj
dGlibGVPYmplY3QsIEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZT4pCi0gICAg
ICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFj
ZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2
bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUsIEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZUludGVyZmFjZSk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJT
UEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBK
U1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UpOwogICAgIGVsc2UKLSAgICAgICAg
c3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlID0g
bWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmNl
bGxIZWFwQ2VsbFR5cGUsIEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSk7Cisg
ICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVy
ZmFjZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAs
IHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJm
YWNlKTsKICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5y
ZWFjaGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21w
YXJlIikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RTZXRMaWtlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0U2V0TGlrZS5jcHAJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXRMaWtlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtODEsNyArODEsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNv
U3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElD
X0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0U2V0TGlrZVByb3RvdHlwZSwgQmFz
ZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJu
ICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVy
ZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAtMzQyLDkgKzM0Miw5
IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdFNldExpa2U6OnN1YnNwYWMKICAgICAgICAgcmV0
dXJuIHNwYWNlOwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rl
c3RydWN0aWJsZU9iamVjdCwgSlNUZXN0U2V0TGlrZT4gfHwgIUpTVGVzdFNldExpa2U6Om5lZWRz
RGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpK
U0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0U2V0TGlrZT4pCi0gICAgICAgIHNwYWNlcy5tX3N1
YnNwYWNlRm9yVGVzdFNldExpa2UgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BB
Q0VfSU5JVCh2bS5oZWFwLCAqdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLCBKU1Rl
c3RTZXRMaWtlKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0U2V0TGlrZSA9IG1h
a2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3Ry
dWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RTZXRMaWtlKTsKICAgICBlbHNlCi0g
ICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFNldExpa2UgPSBtYWtlVW5pcXVlPElzb1N1
YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uY2VsbEhlYXBDZWxsVHlwZSwg
SlNUZXN0U2V0TGlrZSk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFNldExpa2Ug
PSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5j
ZWxsSGVhcENlbGxUeXBlKCksIEpTVGVzdFNldExpa2UpOwogICAgIGF1dG8qIHNwYWNlID0gc3Bh
Y2VzLm1fc3Vic3BhY2VGb3JUZXN0U2V0TGlrZS5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJ
TigidW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNh
bC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RTZXRMaWtlV2l0aE92ZXJyaWRkZW5PcGVyYXRpb25zLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2V0TGlrZVdp
dGhPdmVycmlkZGVuT3BlcmF0aW9ucy5jcHAJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXRMaWtlV2l0aE92ZXJyaWRk
ZW5PcGVyYXRpb25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODUsNyArODUsNyBAQCBwdWJsaWM6
CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQog
ICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0
U2V0TGlrZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9uc1Byb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAg
IHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9i
amVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3Ry
dWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpT
Qzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAtMzU0LDkgKzM1NCw5IEBAIEpTQzo6SXNv
U3Vic3BhY2UqIEpTVGVzdFNldExpa2VXaXRoT3ZlcnIKICAgICAgICAgcmV0dXJuIHNwYWNlOwog
ICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9i
amVjdCwgSlNUZXN0U2V0TGlrZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9ucz4gfHwgIUpTVGVzdFNl
dExpa2VXaXRoT3ZlcnJpZGRlbk9wZXJhdGlvbnM6Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlm
IGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwg
SlNUZXN0U2V0TGlrZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9ucz4pCi0gICAgICAgIHNwYWNlcy5t
X3N1YnNwYWNlRm9yVGVzdFNldExpa2VXaXRoT3ZlcnJpZGRlbk9wZXJhdGlvbnMgPSBtYWtlVW5p
cXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uZGVzdHJ1Y3Rp
YmxlT2JqZWN0SGVhcENlbGxUeXBlLCBKU1Rlc3RTZXRMaWtlV2l0aE92ZXJyaWRkZW5PcGVyYXRp
b25zKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0U2V0TGlrZVdpdGhPdmVycmlk
ZGVuT3BlcmF0aW9ucyA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklU
KHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RTZXRM
aWtlV2l0aE92ZXJyaWRkZW5PcGVyYXRpb25zKTsKICAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5t
X3N1YnNwYWNlRm9yVGVzdFNldExpa2VXaXRoT3ZlcnJpZGRlbk9wZXJhdGlvbnMgPSBtYWtlVW5p
cXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uY2VsbEhlYXBD
ZWxsVHlwZSwgSlNUZXN0U2V0TGlrZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9ucyk7CisgICAgICAg
IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFNldExpa2VXaXRoT3ZlcnJpZGRlbk9wZXJhdGlvbnMg
PSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5j
ZWxsSGVhcENlbGxUeXBlKCksIEpTVGVzdFNldExpa2VXaXRoT3ZlcnJpZGRlbk9wZXJhdGlvbnMp
OwogICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0U2V0TGlrZVdpdGhP
dmVycmlkZGVuT3BlcmF0aW9ucy5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFj
aGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJl
IikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RT
dHJpbmdpZmllci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyLmNwcAkocmV2aXNpb24gMjg2MDk1KQorKysg
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVy
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjksNyArNjksNyBAQCBwdWJsaWM6CiAgICAgc3RhdGlj
IEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAg
ICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0U3RyaW5naWZpZXJQ
cm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7Cisg
ICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KICAgICBzdGF0aWMg
SlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKQEAg
LTE5Miw5ICsxOTIsOSBAQCBKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3RTdHJpbmdpZmllcjo6c3Vi
CiAgICAgICAgIHJldHVybiBzcGFjZTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9v
Zl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdFN0cmluZ2lmaWVyPiB8fCAhSlNU
ZXN0U3RyaW5naWZpZXI6Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhwciAoc3Rk
Ojppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0U3RyaW5naWZp
ZXI+KQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RTdHJpbmdpZmllciA9IG1ha2VV
bmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5kZXN0cnVj
dGlibGVPYmplY3RIZWFwQ2VsbFR5cGUsIEpTVGVzdFN0cmluZ2lmaWVyKTsKKyAgICAgICAgc3Bh
Y2VzLm1fc3Vic3BhY2VGb3JUZXN0U3RyaW5naWZpZXIgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNl
PiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2Vs
bFR5cGUoKSwgSlNUZXN0U3RyaW5naWZpZXIpOwogICAgIGVsc2UKLSAgICAgICAgc3BhY2VzLm1f
c3Vic3BhY2VGb3JUZXN0U3RyaW5naWZpZXIgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09f
U1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uY2VsbEhlYXBDZWxsVHlwZSwgSlNUZXN0U3RyaW5n
aWZpZXIpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RTdHJpbmdpZmllciA9IG1h
a2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxI
ZWFwQ2VsbFR5cGUoKSwgSlNUZXN0U3RyaW5naWZpZXIpOwogICAgIGF1dG8qIHNwYWNlID0gc3Bh
Y2VzLm1fc3Vic3BhY2VGb3JUZXN0U3RyaW5naWZpZXIuZ2V0KCk7CiBJR05PUkVfV0FSTklOR1Nf
QkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xv
Z2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0U3RyaW5naWZpZXJBbm9ueW1vdXNPcGVyYXRpb24uY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdp
ZmllckFub255bW91c09wZXJhdGlvbi5jcHAJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllckFub255bW91
c09wZXJhdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY5LDcgKzY5LDcgQEAgcHVibGljOgog
ICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKICAg
ICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdFN0
cmluZ2lmaWVyQW5vbnltb3VzT3BlcmF0aW9uUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0
dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0
U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1
cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpK
U1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC0xOTIsOSArMTkyLDkgQEAgSlNDOjpJc29TdWJz
cGFjZSogSlNUZXN0U3RyaW5naWZpZXJBbm9ueQogICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAg
c3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0
LCBKU1Rlc3RTdHJpbmdpZmllckFub255bW91c09wZXJhdGlvbj4gfHwgIUpTVGVzdFN0cmluZ2lm
aWVyQW5vbnltb3VzT3BlcmF0aW9uOjpuZWVkc0Rlc3RydWN0aW9uKTsKICAgICBpZiBjb25zdGV4
cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdFN0
cmluZ2lmaWVyQW5vbnltb3VzT3BlcmF0aW9uPikKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VG
b3JUZXN0U3RyaW5naWZpZXJBbm9ueW1vdXNPcGVyYXRpb24gPSBtYWtlVW5pcXVlPElzb1N1YnNw
YWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVh
cENlbGxUeXBlLCBKU1Rlc3RTdHJpbmdpZmllckFub255bW91c09wZXJhdGlvbik7CisgICAgICAg
IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFN0cmluZ2lmaWVyQW5vbnltb3VzT3BlcmF0aW9uID0g
bWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVz
dHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCksIEpTVGVzdFN0cmluZ2lmaWVyQW5vbnltb3Vz
T3BlcmF0aW9uKTsKICAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFN0
cmluZ2lmaWVyQW5vbnltb3VzT3BlcmF0aW9uID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNP
X1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmNlbGxIZWFwQ2VsbFR5cGUsIEpTVGVzdFN0cmlu
Z2lmaWVyQW5vbnltb3VzT3BlcmF0aW9uKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JU
ZXN0U3RyaW5naWZpZXJBbm9ueW1vdXNPcGVyYXRpb24gPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNl
PiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCksIEpTVGVz
dFN0cmluZ2lmaWVyQW5vbnltb3VzT3BlcmF0aW9uKTsKICAgICBhdXRvKiBzcGFjZSA9IHNwYWNl
cy5tX3N1YnNwYWNlRm9yVGVzdFN0cmluZ2lmaWVyQW5vbnltb3VzT3BlcmF0aW9uLmdldCgpOwog
SUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKIElHTk9SRV9XQVJOSU5H
U19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyTmFtZWRPcGVyYXRpb24uY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RTdHJpbmdpZmllck5hbWVkT3BlcmF0aW9uLmNwcAkocmV2aXNpb24gMjg2MDk1KQorKysg
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVy
TmFtZWRPcGVyYXRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03MCw3ICs3MCw3IEBAIHB1Ymxp
YzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0p
CiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rl
c3RTdHJpbmdpZmllck5hbWVkT3BlcmF0aW9uUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0
dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0
U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1
cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpK
U1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC0yMDksOSArMjA5LDkgQEAgSlNDOjpJc29TdWJz
cGFjZSogSlNUZXN0U3RyaW5naWZpZXJOYW1lZAogICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAg
c3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0
LCBKU1Rlc3RTdHJpbmdpZmllck5hbWVkT3BlcmF0aW9uPiB8fCAhSlNUZXN0U3RyaW5naWZpZXJO
YW1lZE9wZXJhdGlvbjo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3RleHByIChzdGQ6
OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RTdHJpbmdpZmll
ck5hbWVkT3BlcmF0aW9uPikKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0U3RyaW5n
aWZpZXJOYW1lZE9wZXJhdGlvbiA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFD
RV9JTklUKHZtLmhlYXAsICp2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUsIEpTVGVz
dFN0cmluZ2lmaWVyTmFtZWRPcGVyYXRpb24pOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZv
clRlc3RTdHJpbmdpZmllck5hbWVkT3BlcmF0aW9uID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4g
SVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxU
eXBlKCksIEpTVGVzdFN0cmluZ2lmaWVyTmFtZWRPcGVyYXRpb24pOwogICAgIGVsc2UKLSAgICAg
ICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0U3RyaW5naWZpZXJOYW1lZE9wZXJhdGlvbiA9IG1h
a2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5jZWxs
SGVhcENlbGxUeXBlLCBKU1Rlc3RTdHJpbmdpZmllck5hbWVkT3BlcmF0aW9uKTsKKyAgICAgICAg
c3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0U3RyaW5naWZpZXJOYW1lZE9wZXJhdGlvbiA9IG1ha2VV
bmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFw
Q2VsbFR5cGUoKSwgSlNUZXN0U3RyaW5naWZpZXJOYW1lZE9wZXJhdGlvbik7CiAgICAgYXV0byog
c3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RTdHJpbmdpZmllck5hbWVkT3BlcmF0aW9u
LmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKIElHTk9S
RV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRleDogU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9u
SW1wbGVtZW50ZWRBcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uSW1wbGVtZW50ZWRBcy5j
cHAJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbkltcGxlbWVudGVkQXMuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC03MCw3ICs3MCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29T
dWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNf
QVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbklt
cGxlbWVudGVkQXNQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2Jq
ZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0K
ICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwg
SlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBl
KQogICAgIHsKQEAgLTIwOSw5ICsyMDksOSBAQCBKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3RTdHJp
bmdpZmllck9wZXJhCiAgICAgICAgIHJldHVybiBzcGFjZTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0
ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdFN0cmluZ2lm
aWVyT3BlcmF0aW9uSW1wbGVtZW50ZWRBcz4gfHwgIUpTVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9u
SW1wbGVtZW50ZWRBczo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3RleHByIChzdGQ6
OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RTdHJpbmdpZmll
ck9wZXJhdGlvbkltcGxlbWVudGVkQXM+KQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRl
c3RTdHJpbmdpZmllck9wZXJhdGlvbkltcGxlbWVudGVkQXMgPSBtYWtlVW5pcXVlPElzb1N1YnNw
YWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVh
cENlbGxUeXBlLCBKU1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbkltcGxlbWVudGVkQXMpOworICAg
ICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RTdHJpbmdpZmllck9wZXJhdGlvbkltcGxlbWVu
dGVkQXMgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFw
LCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0U3RyaW5naWZpZXJP
cGVyYXRpb25JbXBsZW1lbnRlZEFzKTsKICAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNw
YWNlRm9yVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uSW1wbGVtZW50ZWRBcyA9IG1ha2VVbmlxdWU8
SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5jZWxsSGVhcENlbGxU
eXBlLCBKU1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbkltcGxlbWVudGVkQXMpOworICAgICAgICBz
cGFjZXMubV9zdWJzcGFjZUZvclRlc3RTdHJpbmdpZmllck9wZXJhdGlvbkltcGxlbWVudGVkQXMg
PSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5j
ZWxsSGVhcENlbGxUeXBlKCksIEpTVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uSW1wbGVtZW50ZWRB
cyk7CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RTdHJpbmdpZmll
ck9wZXJhdGlvbkltcGxlbWVudGVkQXMuZ2V0KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVu
cmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29t
cGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0U3RyaW5naWZpZXJPcGVyYXRpb25OYW1lZFRvU3RyaW5nLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJP
cGVyYXRpb25OYW1lZFRvU3RyaW5nLmNwcAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9u
TmFtZWRUb1N0cmluZy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY5LDcgKzY5LDcgQEAgcHVibGlj
OgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkK
ICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVz
dFN0cmluZ2lmaWVyT3BlcmF0aW9uTmFtZWRUb1N0cmluZ1Byb3RvdHlwZSwgQmFzZSk7Ci0gICAg
ICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFp
bk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRl
U3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAtMTkyLDkgKzE5Miw5IEBAIEpTQzo6
SXNvU3Vic3BhY2UqIEpTVGVzdFN0cmluZ2lmaWVyT3BlcmEKICAgICAgICAgcmV0dXJuIHNwYWNl
OwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJs
ZU9iamVjdCwgSlNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25OYW1lZFRvU3RyaW5nPiB8fCAhSlNU
ZXN0U3RyaW5naWZpZXJPcGVyYXRpb25OYW1lZFRvU3RyaW5nOjpuZWVkc0Rlc3RydWN0aW9uKTsK
ICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVP
YmplY3QsIEpTVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uTmFtZWRUb1N0cmluZz4pCi0gICAgICAg
IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uTmFtZWRUb1N0cmlu
ZyA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2
bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUsIEpTVGVzdFN0cmluZ2lmaWVyT3BlcmF0
aW9uTmFtZWRUb1N0cmluZyk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFN0cmlu
Z2lmaWVyT3BlcmF0aW9uTmFtZWRUb1N0cmluZyA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElT
T19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlw
ZSgpLCBKU1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbk5hbWVkVG9TdHJpbmcpOwogICAgIGVsc2UK
LSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25OYW1l
ZFRvU3RyaW5nID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0u
aGVhcCwgKnZtLmNlbGxIZWFwQ2VsbFR5cGUsIEpTVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uTmFt
ZWRUb1N0cmluZyk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFN0cmluZ2lmaWVy
T3BlcmF0aW9uTmFtZWRUb1N0cmluZyA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJT
UEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0U3RyaW5naWZp
ZXJPcGVyYXRpb25OYW1lZFRvU3RyaW5nKTsKICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1
YnNwYWNlRm9yVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uTmFtZWRUb1N0cmluZy5nZXQoKTsKIElH
Tk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1Nf
QkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllclJlYWRPbmx5QXR0cmlidXRlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0U3RyaW5naWZpZXJSZWFkT25seUF0dHJpYnV0ZS5jcHAJKHJldmlzaW9uIDI4NjA5NSkK
KysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdp
ZmllclJlYWRPbmx5QXR0cmlidXRlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzEsNyArNzEsNyBA
QCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6
Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFC
TEUoSlNUZXN0U3RyaW5naWZpZXJSZWFkT25seUF0dHJpYnV0ZVByb3RvdHlwZSwgQmFzZSk7Ci0g
ICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5w
bGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3Jl
YXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAtMjA4LDkgKzIwOCw5IEBAIEpT
Qzo6SXNvU3Vic3BhY2UqIEpTVGVzdFN0cmluZ2lmaWVyUmVhZE8KICAgICAgICAgcmV0dXJuIHNw
YWNlOwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0
aWJsZU9iamVjdCwgSlNUZXN0U3RyaW5naWZpZXJSZWFkT25seUF0dHJpYnV0ZT4gfHwgIUpTVGVz
dFN0cmluZ2lmaWVyUmVhZE9ubHlBdHRyaWJ1dGU6Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlm
IGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwg
SlNUZXN0U3RyaW5naWZpZXJSZWFkT25seUF0dHJpYnV0ZT4pCi0gICAgICAgIHNwYWNlcy5tX3N1
YnNwYWNlRm9yVGVzdFN0cmluZ2lmaWVyUmVhZE9ubHlBdHRyaWJ1dGUgPSBtYWtlVW5pcXVlPElz
b1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uZGVzdHJ1Y3RpYmxlT2Jq
ZWN0SGVhcENlbGxUeXBlLCBKU1Rlc3RTdHJpbmdpZmllclJlYWRPbmx5QXR0cmlidXRlKTsKKyAg
ICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0U3RyaW5naWZpZXJSZWFkT25seUF0dHJpYnV0
ZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZt
LmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RTdHJpbmdpZmllclJlYWRP
bmx5QXR0cmlidXRlKTsKICAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVz
dFN0cmluZ2lmaWVyUmVhZE9ubHlBdHRyaWJ1dGUgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJ
U09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uY2VsbEhlYXBDZWxsVHlwZSwgSlNUZXN0U3Ry
aW5naWZpZXJSZWFkT25seUF0dHJpYnV0ZSk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9y
VGVzdFN0cmluZ2lmaWVyUmVhZE9ubHlBdHRyaWJ1dGUgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNl
PiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCksIEpTVGVz
dFN0cmluZ2lmaWVyUmVhZE9ubHlBdHRyaWJ1dGUpOwogICAgIGF1dG8qIHNwYWNlID0gc3BhY2Vz
Lm1fc3Vic3BhY2VGb3JUZXN0U3RyaW5naWZpZXJSZWFkT25seUF0dHJpYnV0ZS5nZXQoKTsKIElH
Tk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1Nf
QkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllclJlYWRXcml0ZUF0dHJpYnV0ZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdFN0cmluZ2lmaWVyUmVhZFdyaXRlQXR0cmlidXRlLmNwcAkocmV2aXNpb24gMjg2MDk1
KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmlu
Z2lmaWVyUmVhZFdyaXRlQXR0cmlidXRlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzIsNyArNzIs
NyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpT
Qzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hB
UkFCTEUoSlNUZXN0U3RyaW5naWZpZXJSZWFkV3JpdGVBdHRyaWJ1dGVQcm90b3R5cGUsIEJhc2Up
OwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAm
dm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUq
IGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKQEAgLTIyNyw5ICsyMjcsOSBA
QCBKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3RTdHJpbmdpZmllclJlYWRXCiAgICAgICAgIHJldHVy
biBzcGFjZTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0
cnVjdGlibGVPYmplY3QsIEpTVGVzdFN0cmluZ2lmaWVyUmVhZFdyaXRlQXR0cmlidXRlPiB8fCAh
SlNUZXN0U3RyaW5naWZpZXJSZWFkV3JpdGVBdHRyaWJ1dGU6Om5lZWRzRGVzdHJ1Y3Rpb24pOwog
ICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9i
amVjdCwgSlNUZXN0U3RyaW5naWZpZXJSZWFkV3JpdGVBdHRyaWJ1dGU+KQotICAgICAgICBzcGFj
ZXMubV9zdWJzcGFjZUZvclRlc3RTdHJpbmdpZmllclJlYWRXcml0ZUF0dHJpYnV0ZSA9IG1ha2VV
bmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5kZXN0cnVj
dGlibGVPYmplY3RIZWFwQ2VsbFR5cGUsIEpTVGVzdFN0cmluZ2lmaWVyUmVhZFdyaXRlQXR0cmli
dXRlKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0U3RyaW5naWZpZXJSZWFkV3Jp
dGVBdHRyaWJ1dGUgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2
bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0U3RyaW5n
aWZpZXJSZWFkV3JpdGVBdHRyaWJ1dGUpOwogICAgIGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vi
c3BhY2VGb3JUZXN0U3RyaW5naWZpZXJSZWFkV3JpdGVBdHRyaWJ1dGUgPSBtYWtlVW5pcXVlPElz
b1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uY2VsbEhlYXBDZWxsVHlw
ZSwgSlNUZXN0U3RyaW5naWZpZXJSZWFkV3JpdGVBdHRyaWJ1dGUpOworICAgICAgICBzcGFjZXMu
bV9zdWJzcGFjZUZvclRlc3RTdHJpbmdpZmllclJlYWRXcml0ZUF0dHJpYnV0ZSA9IG1ha2VVbmlx
dWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2Vs
bFR5cGUoKSwgSlNUZXN0U3RyaW5naWZpZXJSZWFkV3JpdGVBdHRyaWJ1dGUpOwogICAgIGF1dG8q
IHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0U3RyaW5naWZpZXJSZWFkV3JpdGVBdHRy
aWJ1dGUuZ2V0KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQog
SUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0VHlwZWRlZnMuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RUeXBlZGVmcy5jcHAJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RUeXBlZGVmcy5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTExNiw3ICsxMTYsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1
YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09f
U1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0VHlwZWRlZnNQcm90b3R5cGUsIEJhc2UpOwotICAgICAg
ICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5P
YmplY3RTcGFjZSgpOwogICAgIH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0
cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBK
U0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKQEAgLTc3OCw5ICs3NzgsOSBAQCBKU0M6Oklz
b1N1YnNwYWNlKiBKU1Rlc3RUeXBlZGVmczo6c3Vic3BhCiAgICAgICAgIHJldHVybiBzcGFjZTsK
ICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVP
YmplY3QsIEpTVGVzdFR5cGVkZWZzPiB8fCAhSlNUZXN0VHlwZWRlZnM6Om5lZWRzRGVzdHJ1Y3Rp
b24pOwogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0
aWJsZU9iamVjdCwgSlNUZXN0VHlwZWRlZnM+KQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZv
clRlc3RUeXBlZGVmcyA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklU
KHZtLmhlYXAsICp2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUsIEpTVGVzdFR5cGVk
ZWZzKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0VHlwZWRlZnMgPSBtYWtlVW5p
cXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGli
bGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0VHlwZWRlZnMpOwogICAgIGVsc2UKLSAgICAg
ICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0VHlwZWRlZnMgPSBtYWtlVW5pcXVlPElzb1N1YnNw
YWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uY2VsbEhlYXBDZWxsVHlwZSwgSlNU
ZXN0VHlwZWRlZnMpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RUeXBlZGVmcyA9
IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNl
bGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0VHlwZWRlZnMpOwogICAgIGF1dG8qIHNwYWNlID0gc3Bh
Y2VzLm1fc3Vic3BhY2VGb3JUZXN0VHlwZWRlZnMuZ2V0KCk7CiBJR05PUkVfV0FSTklOR1NfQkVH
SU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2lj
YWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNXb3JrZXJHbG9iYWxTY29wZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTV29ya2VyR2xvYmFsU2NvcGUuY3BwCShyZXZpc2lv
biAyODYwOTUpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNX
b3JrZXJHbG9iYWxTY29wZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0OSw3ICsyNDksNyBAQCBK
U0M6Oklzb1N1YnNwYWNlKiBKU1dvcmtlckdsb2JhbFNjb3BlOjpzCiAgICAgYXV0byYgc3BhY2Vz
ID0gY2xpZW50RGF0YS5zdWJzcGFjZXMoKTsKICAgICBpZiAoYXV0byogc3BhY2UgPSBzcGFjZXMu
bV9zdWJzcGFjZUZvcldvcmtlckdsb2JhbFNjb3BlLmdldCgpKQogICAgICAgICByZXR1cm4gc3Bh
Y2U7Ci0gICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JXb3JrZXJHbG9iYWxTY29wZSA9IG1ha2VVbmlx
dWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICpjbGllbnREYXRhLm1f
aGVhcENlbGxUeXBlRm9ySlNXb3JrZXJHbG9iYWxTY29wZSwgSlNXb3JrZXJHbG9iYWxTY29wZSk7
CisgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JXb3JrZXJHbG9iYWxTY29wZSA9IG1ha2VVbmlxdWU8
SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIGNsaWVudERhdGEubV9oZWFw
Q2VsbFR5cGVGb3JKU1dvcmtlckdsb2JhbFNjb3BlLCBKU1dvcmtlckdsb2JhbFNjb3BlKTsKICAg
ICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yV29ya2VyR2xvYmFsU2NvcGUuZ2V0
KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dB
Uk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNXb3JrZXJHbG9iYWxTY29wZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1dvcmtlckds
b2JhbFNjb3BlLmgJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1dvcmtlckdsb2JhbFNjb3BlLmgJKHdvcmtpbmcgY29weSkKQEAg
LTg1LDcgKzg1LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJz
cGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NV
QlNQQUNFX1NIQVJBQkxFKEpTV29ya2VyR2xvYmFsU2NvcGVQcm90b3R5cGUsIEJhc2UpOwotICAg
ICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxh
aW5PYmplY3RTcGFjZSgpOwogICAgIH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0
ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1dvcmtsZXRHbG9iYWxTY29wZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTV29ya2xldEds
b2JhbFNjb3BlLmNwcAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTV29ya2xldEdsb2JhbFNjb3BlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTYzLDcgKzE2Myw3IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTV29ya2xldEdsb2JhbFNj
b3BlOjoKICAgICBhdXRvJiBzcGFjZXMgPSBjbGllbnREYXRhLnN1YnNwYWNlcygpOwogICAgIGlm
IChhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yV29ya2xldEdsb2JhbFNjb3BlLmdl
dCgpKQogICAgICAgICByZXR1cm4gc3BhY2U7Ci0gICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JXb3Jr
bGV0R2xvYmFsU2NvcGUgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5J
VCh2bS5oZWFwLCAqY2xpZW50RGF0YS5tX2hlYXBDZWxsVHlwZUZvckpTV29ya2xldEdsb2JhbFNj
b3BlLCBKU1dvcmtsZXRHbG9iYWxTY29wZSk7CisgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JXb3Jr
bGV0R2xvYmFsU2NvcGUgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5J
VCh2bS5oZWFwLCBjbGllbnREYXRhLm1faGVhcENlbGxUeXBlRm9ySlNXb3JrbGV0R2xvYmFsU2Nv
cGUsIEpTV29ya2xldEdsb2JhbFNjb3BlKTsKICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1
YnNwYWNlRm9yV29ya2xldEdsb2JhbFNjb3BlLmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lO
KCJ1bnJlYWNoYWJsZS1jb2RlIikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2Fs
LWNvbXBhcmUiKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTV29ya2xldEdsb2JhbFNjb3BlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTV29ya2xldEdsb2JhbFNjb3BlLmgJKHJldmlzaW9uIDI4
NjA5NSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1dvcmts
ZXRHbG9iYWxTY29wZS5oCSh3b3JraW5nIGNvcHkpCkBAIC04NSw3ICs4NSw3IEBAIHB1YmxpYzoK
ICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAg
ICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1dvcmts
ZXRHbG9iYWxTY29wZVByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5P
YmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAg
fQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZt
LCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5
cGUpCiAgICAgewpJbmRleDogU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19ydW50aW1l
Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfcnVudGlt
ZS5tbQkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2Jq
Y19ydW50aW1lLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zMzUsNyArMzM1LDcgQEAgYm9vbCBPYmpj
RmFsbGJhY2tPYmplY3RJbXA6OnRvQm9vbGVhbihKUwogSlNDOjpJc29TdWJzcGFjZSogT2JqY0Zh
bGxiYWNrT2JqZWN0SW1wOjpzdWJzcGFjZUZvckltcGwoSlNDOjpWTSYgdm0pCiB7CiAgICAgc3Rh
dGljIE5ldmVyRGVzdHJveWVkPEpTQzo6SXNvU3Vic3BhY2VQZXJWTT4gcGVyVk0oW10gKEpTQzo6
Vk0mIHZtKSB7Ci0gICAgICAgIHJldHVybiBJU09fU1VCU1BBQ0VfUEFSQU1FVEVSUygqdm0uZGVz
dHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLCBPYmpjRmFsbGJhY2tPYmplY3RJbXApOworICAg
ICAgICByZXR1cm4gSVNPX1NVQlNQQUNFX1BBUkFNRVRFUlModm0uZGVzdHJ1Y3RpYmxlT2JqZWN0
SGVhcENlbGxUeXBlKCksIE9iamNGYWxsYmFja09iamVjdEltcCk7CiAgICAgfSk7CiAgICAgcmV0
dXJuICZwZXJWTS5nZXQoKS5mb3JWTSh2bSk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL1dvcmtlck9yV29ya2xldFNjcmlwdENvbnRyb2xsZXIuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck9yV29ya2xldFNjcmlwdENvbnRyb2xsZXIuaAkocmV2
aXNpb24gMjg2MDk1KQorKysgU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJPcldvcmtsZXRT
Y3JpcHRDb250cm9sbGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTM4LDYgKzM4LDcgQEAKIG5hbWVz
cGFjZSBKU0MgewogY2xhc3MgRXhjZXB0aW9uOwogY2xhc3MgSlNHbG9iYWxPYmplY3Q7CitjbGFz
cyBKU01vZHVsZVJlY29yZDsKIGNsYXNzIFZNOwogfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Db2NvYS9Nb2RlbEVsZW1lbnRDb250cm9sbGVyQ29jb2EubW0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTW9kZWxFbGVtZW50Q29udHJvbGxlckNv
Y29hLm1tCShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2Nv
YS9Nb2RlbEVsZW1lbnRDb250cm9sbGVyQ29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTIzMyw2
ICsyMzMsMTAgQEAgdm9pZCBNb2RlbEVsZW1lbnRDb250cm9sbGVyOjpoYW5kbGVNb3VzZQogCiAj
aWYgRU5BQkxFKEFSS0lUX0lOTElORV9QUkVWSUVXKQogCisjdW5kZWYgRU5BQkxFX0FSS0lUX0lO
TElORV9QUkVWSUVXX0NBTUVSQV9UUkFOU0ZPUk0gLy8gbWxhbSBIQUNLCisjdW5kZWYgRU5BQkxF
X0FSS0lUX0lOTElORV9QUkVWSUVXX0FOSU1BVElPTlNfQ09OVFJPTCAvLyBtbGFtIEhBQ0sKKyN1
bmRlZiBFTkFCTEVfQVJLSVRfSU5MSU5FX1BSRVZJRVdfQVVESU9fQ09OVFJPTCAvLyBtbGFtIEhB
Q0sKKwogc3RhdGljIGJvb2wgcHJldmlld0hhc0NhbWVyYVN1cHBvcnQoQVNWSW5saW5lUHJldmll
dyAqcHJldmlldykKIHsKICNpZiBFTkFCTEUoQVJLSVRfSU5MSU5FX1BSRVZJRVdfQ0FNRVJBX1RS
QU5TRk9STSkK
</data>
<flag name="commit-queue"
          id="470013"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>444896</attachid>
            <date>2021-11-20 07:51:26 -0800</date>
            <delta_ts>2021-11-20 08:27:59 -0800</delta_ts>
            <desc>work in progress.</desc>
            <filename>bug-233240e.patch</filename>
            <type>text/plain</type>
            <size>408963</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDI4NjA5NSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpA
QCAtNzYzLDYgKzc2Myw3IEBAIHNldChKYXZhU2NyaXB0Q29yZV9QUklWQVRFX0ZSQU1FV09SS19I
RUEKICAgICBoZWFwL0luY3JlbWVudGFsU3dlZXBlci5oCiAgICAgaGVhcC9Jc29DZWxsU2V0LmgK
ICAgICBoZWFwL0lzb0hlYXBDZWxsVHlwZS5oCisgICAgaGVhcC9Jc29IZWFwQ2VsbFR5cGVJbmxp
bmVzLmgKICAgICBoZWFwL0lzb1N1YnNwYWNlLmgKICAgICBoZWFwL0lzb1N1YnNwYWNlSW5saW5l
cy5oCiAgICAgaGVhcC9Jc29TdWJzcGFjZVBlclZNLmgKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qc2MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3Bw
CShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTQyOSw3ICsxNDI5LDcgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5
cGVuYW1lIENlbGxUeXBlLCBTdWJzcGFjZUFjY2Vzcz4KICAgICBzdGF0aWMgQ29tcGxldGVTdWJz
cGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKLSAgICAgICAgcmV0dXJuICZ2bS5kZXN0
cnVjdGlibGVPYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5kZXN0cnVjdGlibGVPYmpl
Y3RTcGFjZSgpOwogICAgIH0KIAogICAgIEpTQ01lbW9yeUZvb3RwcmludChWTSYgdm0sIFN0cnVj
dHVyZSogc3RydWN0dXJlKQpAQCAtMTc2Miw3ICsxNzYyLDcgQEAgcHVibGljOgogICAgIHRlbXBs
YXRlPHR5cGVuYW1lIENlbGxUeXBlLCBTdWJzcGFjZUFjY2Vzcz4KICAgICBzdGF0aWMgQ29tcGxl
dGVTdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKLSAgICAgICAgcmV0dXJuICZ2
bS5kZXN0cnVjdGlibGVPYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5kZXN0cnVjdGli
bGVPYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0
cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJv
dG90eXBlKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDI4NjA5
NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xOTU5LDcgKzE5NTksNyBAQAogCQlFM0M2
OTRCMzIzMDI2ODc3MDA2RkJFNDIgLyogV2FzbU9TUkVudHJ5RGF0YS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTNDNjk0QjEyMzAyNjg3MzAwNkZCRTQy
IC8qIFdhc21PU1JFbnRyeURhdGEuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQlFM0M3M0E5MTI1QkZBNzNCMDBFRkUzMDMgLyogV2FzbVN0cmVhbWlu
Z1BsYW4uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUz
QzczQTkwMjVCRkE3MzQwMEVGRTMwMyAvKiBXYXNtU3RyZWFtaW5nUGxhbi5oICovOyB9OwogCQlF
M0M3OUNBQjFEQjlBNERDMDBEMUVDQTQgLyogRE9NSklURWZmZWN0LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFM0M3OUNBQTFEQjlBNEQ2MDBEMUVDQTQg
LyogRE9NSklURWZmZWN0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKLQkJRTNDOEVENDMyM0ExREJDQjAwMTMxOTU4IC8qIElzb0lubGluZWRIZWFwQ2Vs
bFR5cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUz
QzhFRDQyMjNBMURCQzUwMDEzMTk1OCAvKiBJc29JbmxpbmVkSGVhcENlbGxUeXBlLmggKi87IH07
CisJCUUzQzhFRDQzMjNBMURCQ0IwMDEzMTk1OCAvKiBJc29JbmxpbmVkSGVhcENlbGxUeXBlLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFM0M4RUQ0MjIz
QTFEQkM1MDAxMzE5NTggLyogSXNvSW5saW5lZEhlYXBDZWxsVHlwZS5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUzQ0EzQTRFMjUyN0FCMkYwMDQ4
MDJCRiAvKiBKSVRPcGVyYXRpb25MaXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBFM0NBM0E0QzI1MjdBQjJGMDA0ODAyQkYgLyogSklUT3BlcmF0aW9u
TGlzdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CUUzRDIzOUM5MUI4MjlDMUMwMEJCRUY2NyAvKiBKU01vZHVsZUVudmlyb25tZW50LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFM0QyMzlDNzFCODI5QzFD
MDBCQkVGNjcgLyogSlNNb2R1bGVFbnZpcm9ubWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUzRDM1MTVGMjQxQjg5RDcwMDhEQzE2RSAvKiBN
YXJrZWRKU1ZhbHVlUmVmQXJyYXkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEUzRDM1MTVEMjQxQjg5Q0UwMDhEQzE2RSAvKiBNYXJrZWRKU1ZhbHVlUmVm
QXJyYXkuaCAqLzsgfTsKQEAgLTIwNDEsNiArMjA0MSw4IEBACiAJCUZFNjNERDU0MUVBOUI2MUUw
MDEwM0E2OSAvKiBQcmludGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBGRTYzREQ1MzFFQTlCNjBFMDAxMDNBNjkgLyogUHJpbnRlci5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUZFNjQ4NzJFMjE0MUQw
NDgwMEFCMEQzRSAvKiBPcGNvZGVJbmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBGRTY0ODcyRDIxNDFEMDQ4MDBBQjBEM0UgLyogT3Bjb2RlSW5s
aW5lcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CUZFNjQ5MTM3MUQ3OEYwMUQwMEE2OTRENCAvKiBFeGNlcHRpb25TY29wZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkU2NDkxMzYxRDc4RjAxMzAwQTY5
NEQ0IC8qIEV4Y2VwdGlvblNjb3BlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKKwkJRkU2NUIxNTEyNzQ4NjAxRjAwREI1QjE2IC8qIElzb0lubGluZWRI
ZWFwQ2VsbFR5cGVJbmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBGRTY1QjE1MDI3NDg2MDFGMDBEQjVCMTYgLyogSXNvSW5saW5lZEhlYXBDZWxs
VHlwZUlubGluZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OworCQlGRTY1QjE1NTI3NDkzRjE0MDBEQjVCMTYgLyogSXNvSGVhcENlbGxUeXBlSW5saW5l
cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkU2NUIx
NTQyNzQ5M0YxNDAwREI1QjE2IC8qIElzb0hlYXBDZWxsVHlwZUlubGluZXMuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlGRTY4QzYzNzFCOTBERTA0
MDA0MkJDQjMgLyogTWFjcm9Bc3NlbWJsZXJQcmludGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTY4QzYzNjFCOTBEREQ5MDA0MkJDQjMgLyogTWFj
cm9Bc3NlbWJsZXJQcmludGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJRkU2RjU2REUxRTY0RUFENjAwRDE3ODAxIC8qIFZNVHJhcHMuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFNkY1NkREMUU2NEU5
MjAwMEQxNzgwMSAvKiBWTVRyYXBzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJRkU3NDk3RTYyMDkwMDFCMTAwMDM1NjVCIC8qIEpTQ1B0clRhZy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkU3NDk3RTUy
MDkwMDFCMDAwMDM1NjVCIC8qIEpTQ1B0clRhZy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CkBAIC01NDk5LDYgKzU1MDEsOCBAQAogCQlGRTY0ODcyRDIx
NDFEMDQ4MDBBQjBEM0UgLyogT3Bjb2RlSW5saW5lcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBPcGNvZGVJbmxpbmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUZFNjQ5MTM2MUQ3OEYwMTMwMEE2OTRENCAvKiBFeGNlcHRpb25TY29wZS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBFeGNlcHRpb25TY29wZS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlGRTY0OTEzODFENzhGM0EzMDBBNjk0RDQgLyogRXhjZXB0aW9uU2NvcGUu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRXhjZXB0aW9uU2NvcGUu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGRTY1QjE1MDI3NDg2MDFGMDBEQjVC
MTYgLyogSXNvSW5saW5lZEhlYXBDZWxsVHlwZUlubGluZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gSXNvSW5saW5lZEhlYXBDZWxsVHlwZUlubGluZXMuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkU2NUIxNTQyNzQ5M0YxNDAwREI1QjE2IC8qIElzb0hlYXBD
ZWxsVHlwZUlubGluZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSXNvSGVh
cENlbGxUeXBlSW5saW5lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRTY4QzYz
NTFCOTBEREQ5MDA0MkJDQjMgLyogTWFjcm9Bc3NlbWJsZXJQcmludGVyLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1hY3JvQXNzZW1ibGVyUHJpbnRlci5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFNjhDNjM2MUI5MERERDkwMDQyQkNCMyAvKiBN
YWNyb0Fzc2VtYmxlclByaW50ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
TWFjcm9Bc3NlbWJsZXJQcmludGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZF
NkY1NkRDMUU2NEU5MjAwMEQxNzgwMSAvKiBWTVRyYXBzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFZNVHJhcHMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtNjYwMiw3ICs2NjA2LDkgQEAKIAkJCQkwRkI0Njc3QjFGRERBNkQ4MDAzRkNCMDkgLyog
SXNvQ2VsbFNldElubGluZXMuaCAqLywKIAkJCQlFM0M4RUQ0MTIzQTFEQkM0MDAxMzE5NTggLyog
SXNvSGVhcENlbGxUeXBlLmNwcCAqLywKIAkJCQlFM0JGMUJBRDIzOEFBRUQxMDAzQTFDMkIgLyog
SXNvSGVhcENlbGxUeXBlLmggKi8sCisJCQkJRkU2NUIxNTQyNzQ5M0YxNDAwREI1QjE2IC8qIElz
b0hlYXBDZWxsVHlwZUlubGluZXMuaCAqLywKIAkJCQlFM0M4RUQ0MjIzQTFEQkM1MDAxMzE5NTgg
LyogSXNvSW5saW5lZEhlYXBDZWxsVHlwZS5oICovLAorCQkJCUZFNjVCMTUwMjc0ODYwMUYwMERC
NUIxNiAvKiBJc29JbmxpbmVkSGVhcENlbGxUeXBlSW5saW5lcy5oICovLAogCQkJCTBGRENFMTJD
MUZBRkI0REUwMDZGMzkwMSAvKiBJc29TdWJzcGFjZS5jcHAgKi8sCiAJCQkJMEZEQ0UxMkIxRkFG
QjRERTAwNkYzOTAxIC8qIElzb1N1YnNwYWNlLmggKi8sCiAJCQkJMEZEMkZEOTIyMEI1MkJEQzAw
RjA5NDQxIC8qIElzb1N1YnNwYWNlSW5saW5lcy5oICovLApAQCAtMTAyNDAsNiArMTAyNDYsNyBA
QAogCQkJCUExMjU4NDZFMUI0NUEzNjAwMENDN0Y2QyAvKiBJbnRsTnVtYmVyRm9ybWF0Q29uc3Ry
dWN0b3IubHV0LmggaW4gSGVhZGVycyAqLywKIAkJCQlFMzIzMTE2OTI0QTFEQzM1MDA2OTNEQTUg
LyogSW50bE51bWJlckZvcm1hdElubGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUExRDc5MzAx
MUI0Mzg2NEIwMDQ1MTZGNSAvKiBJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlLmggaW4gSGVhZGVy
cyAqLywKKwkJCQlGRTY1QjE1NTI3NDkzRjE0MDBEQjVCMTYgLyogSXNvSGVhcENlbGxUeXBlSW5s
aW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTEyNTg0NkYxQjQ1QTM2MDAwQ0M3RjZDIC8qIElu
dGxOdW1iZXJGb3JtYXRQcm90b3R5cGUubHV0LmggaW4gSGVhZGVycyAqLywKIAkJCQlBMTJCQkZG
MjFCMDQ0QThCMDA2NjRCNjkgLyogSW50bE9iamVjdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNzA4
RUJFMjQxQ0U4RjM1ODAwNDUzMTQ2IC8qIEludGxPYmplY3RJbmxpbmVzLmggaW4gSGVhZGVycyAq
LywKQEAgLTEwNDEzLDYgKzEwNDIwLDcgQEAKIAkJCQlFMzNGNTA4MTFCODQyOUE0MDA0MTM4NTYg
LyogSlNJbnRlcm5hbFByb21pc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUUzM0Y1MDc5MUI4NDIy
NTcwMDQxMzg1NiAvKiBKU0ludGVybmFsUHJvbWlzZUNvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAq
LywKIAkJCQlFMzNGNTA4NzFCODQ0OUVGMDA0MTM4NTYgLyogSlNJbnRlcm5hbFByb21pc2VDb25z
dHJ1Y3Rvci5sdXQuaCBpbiBIZWFkZXJzICovLAorCQkJCUZFNjVCMTUxMjc0ODYwMUYwMERCNUIx
NiAvKiBJc29JbmxpbmVkSGVhcENlbGxUeXBlSW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
RTMzRjUwNzUxQjg0MjFDMDAwNDEzODU2IC8qIEpTSW50ZXJuYWxQcm9taXNlUHJvdG90eXBlLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlBNTAzRkExRTE4OEUwRkIwMDAxMTBGMTQgLyogSlNKYXZhU2Ny
aXB0Q2FsbEZyYW1lUHJvdG90eXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzQxNjBFMTZG
NUNEMDBCMzQ0NjAgLyogSlNMZXhpY2FsRW52aXJvbm1lbnQuaCBpbiBIZWFkZXJzICovLApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vzc0Nhc2UuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNlLmNwcAkocmV2
aXNpb24gMjg2MDk1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vzc0Nh
c2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMjc3LDcgKzIyNzcsNyBAQCB2b2lkIEFjY2Vzc0Nh
c2U6OmdlbmVyYXRlSW1wbChBY2Nlc3NHZW5lCiAgICAgICAgICAgICBzaXplX3QgbmV3U2l6ZSA9
IG5ld1N0cnVjdHVyZSgpLT5vdXRPZkxpbmVDYXBhY2l0eSgpICogc2l6ZW9mKEpTVmFsdWUpOwog
CiAgICAgICAgICAgICBpZiAoYWxsb2NhdGluZ0lubGluZSkgewotICAgICAgICAgICAgICAgIEFs
bG9jYXRvciBhbGxvY2F0b3IgPSB2bS5qc1ZhbHVlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZS5hbGxv
Y2F0b3JGb3IobmV3U2l6ZSwgQWxsb2NhdG9yRm9yTW9kZTo6QWxsb2NhdG9ySWZFeGlzdHMpOwor
ICAgICAgICAgICAgICAgIEFsbG9jYXRvciBhbGxvY2F0b3IgPSB2bS5qc1ZhbHVlR2lnYWNhZ2VB
dXhpbGlhcnlTcGFjZSgpLmFsbG9jYXRvckZvcihuZXdTaXplLCBBbGxvY2F0b3JGb3JNb2RlOjpB
bGxvY2F0b3JJZkV4aXN0cyk7CiAKICAgICAgICAgICAgICAgICBqaXQuZW1pdEFsbG9jYXRlKHNj
cmF0Y2hHUFIsIEpJVEFsbG9jYXRvcjo6Y29uc3RhbnQoYWxsb2NhdG9yKSwgc2NyYXRjaEdQUjIs
IHNjcmF0Y2hHUFIzLCBzbG93UGF0aCk7CiAgICAgICAgICAgICAgICAgaml0LmFkZFB0cihDQ2Fs
bEhlbHBlcnM6OlRydXN0ZWRJbW0zMihuZXdTaXplICsgc2l6ZW9mKEluZGV4aW5nSGVhZGVyKSks
IHNjcmF0Y2hHUFIpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0RGR0V4
aXRQcm9maWxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0RGR0V4aXRQcm9maWxlLmgJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9ERkdFeGl0UHJvZmlsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEs
NSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMS0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMS0yMDIxIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzQsNyAr
MzQsMTEgQEAKICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3Iu
aD4KIAotbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgeworbmFtZXNwYWNlIEpTQyB7CisK
K2NsYXNzIFVubGlua2VkQ29kZUJsb2NrOworCituYW1lc3BhY2UgREZHIHsKIAogY2xhc3MgRnJl
cXVlbnRFeGl0U2l0ZSB7CiBwdWJsaWM6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvRXZhbENvZGVCbG9jay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9FdmFsQ29kZUJsb2NrLmgJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FdmFsQ29kZUJsb2NrLmgJKHdvcmtpbmcgY29weSkKQEAg
LTQxLDcgKzQxLDcgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lLCBTdWJzcGFjZUFj
Y2Vzcz4KICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7
Ci0gICAgICAgIHJldHVybiAmdm0uY29kZUJsb2NrU3BhY2Uuc3BhY2U7CisgICAgICAgIHJldHVy
biAmdm0uY29kZUJsb2NrU3BhY2UoKS5zcGFjZTsKICAgICB9CiAKICAgICBzdGF0aWMgRXZhbENv
ZGVCbG9jayogY3JlYXRlKFZNJiB2bSwgQ29weVBhcnNlZEJsb2NrVGFnLCBFdmFsQ29kZUJsb2Nr
JiBvdGhlcikKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FeGVjdXRhYmxl
VG9Db2RlQmxvY2tFZGdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvRXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZS5jcHAJKHJldmlzaW9uIDI4NjA5NSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FeGVjdXRhYmxlVG9Db2RlQmxvY2tF
ZGdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODEsNyArODEsNyBAQCB2b2lkIEV4ZWN1dGFibGVU
b0NvZGVCbG9ja0VkZ2U6OnZpc2l0Q2hpCiAgICAgICAgIHZpc2l0b3IuYXBwZW5kVW5iYXJyaWVy
ZWQoY29kZUJsb2NrKTsKICAgICAKICAgICBpZiAoIXZpc2l0b3IuaXNNYXJrZWQoY29kZUJsb2Nr
KSkKLSAgICAgICAgdm0uZXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZXNXaXRoRmluYWxpemVycy5h
ZGQoZWRnZSk7CisgICAgICAgIHZtLmV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2VzV2l0aEZpbmFs
aXplcnMoKS5hZGQoZWRnZSk7CiAgICAgCiAgICAgaWYgKEpJVENvZGU6OmlzT3B0aW1pemluZ0pJ
VChjb2RlQmxvY2stPmppdFR5cGUoKSkpIHsKICAgICAgICAgLy8gSWYgd2UgamV0dGlzb24gb3Vy
c2VsdmVzIHdlJ2xsIGluc3RhbGwgb3VyIGFsdGVybmF0aXZlLCBzbyBtYWtlIHN1cmUgdGhhdCBp
dApAQCAtMTE0LDcgKzExNCw3IEBAIHZvaWQgRXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZTo6dmlz
aXRDaGkKICAgICAvLyBub3QgeWV0IG1hcmtlZCBiZWNhdXNlIGl0IHdlYWtseSBkZXBlbmRzIG9u
IGEgc3RydWN0dXJlIHRoYXQgd2UgZGlkIG5vdCB5ZXQgbWFyaywgdGhlbiB3ZQogICAgIC8vIHdp
bGwga2VlcCBmaXhwb2ludGluZyB1bnRpbCB0aGUgZW5kLgogICAgIHZpc2l0b3IuYXBwZW5kVW5i
YXJyaWVyZWQoY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSk7Ci0gICAgdm0uZXhlY3V0YWJsZVRv
Q29kZUJsb2NrRWRnZXNXaXRoQ29uc3RyYWludHMuYWRkKGVkZ2UpOworICAgIHZtLmV4ZWN1dGFi
bGVUb0NvZGVCbG9ja0VkZ2VzV2l0aENvbnN0cmFpbnRzKCkuYWRkKGVkZ2UpOwogICAgIGVkZ2Ut
PnJ1bkNvbnN0cmFpbnQobG9ja2VyLCB2bSwgdmlzaXRvcik7CiB9CiAKQEAgLTE0Myw4ICsxNDMs
OCBAQCB2b2lkIEV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2U6OmZpbmFsaXplCiAgICAgICAgIG1f
Y29kZUJsb2NrLmNsZWFyKCk7CiAgICAgfQogICAgIAotICAgIHZtLmV4ZWN1dGFibGVUb0NvZGVC
bG9ja0VkZ2VzV2l0aEZpbmFsaXplcnMucmVtb3ZlKHRoaXMpOwotICAgIHZtLmV4ZWN1dGFibGVU
b0NvZGVCbG9ja0VkZ2VzV2l0aENvbnN0cmFpbnRzLnJlbW92ZSh0aGlzKTsKKyAgICB2bS5leGVj
dXRhYmxlVG9Db2RlQmxvY2tFZGdlc1dpdGhGaW5hbGl6ZXJzKCkucmVtb3ZlKHRoaXMpOworICAg
IHZtLmV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2VzV2l0aENvbnN0cmFpbnRzKCkucmVtb3ZlKHRo
aXMpOwogfQogCiBpbmxpbmUgdm9pZCBFeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlOjphY3RpdmF0
ZSgpCkBAIC0yMDEsNyArMjAxLDcgQEAgdm9pZCBFeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlOjpy
dW5Db25zdAogICAgIGNvZGVCbG9jay0+ZGV0ZXJtaW5lTGl2ZW5lc3MobG9ja2VyLCB2aXNpdG9y
KTsKIAogICAgIGlmICh2aXNpdG9yLmlzTWFya2VkKGNvZGVCbG9jaykpCi0gICAgICAgIHZtLmV4
ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2VzV2l0aENvbnN0cmFpbnRzLnJlbW92ZSh0aGlzKTsKKyAg
ICAgICAgdm0uZXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZXNXaXRoQ29uc3RyYWludHMoKS5yZW1v
dmUodGhpcyk7CiB9CiAKIHRlbXBsYXRlIHZvaWQgRXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZTo6
cnVuQ29uc3RyYWludChjb25zdCBDb25jdXJyZW50SlNMb2NrZXImLCBWTSYsIEFic3RyYWN0U2xv
dFZpc2l0b3ImKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FeGVjdXRh
YmxlVG9Db2RlQmxvY2tFZGdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0V4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2UuaAkocmV2aXNpb24gMjg2MDk1KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0V4ZWN1dGFibGVUb0NvZGVCbG9ja0Vk
Z2UuaAkod29ya2luZyBjb3B5KQpAQCAtNDMsNyArNDMsNyBAQCBwdWJsaWM6CiAgICAgdGVtcGxh
dGU8dHlwZW5hbWUgQ2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNzPgogICAgIHN0YXRpYyBJc29TdWJz
cGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKLSAgICAgICAgcmV0dXJuICZ2bS5leGVj
dXRhYmxlVG9Db2RlQmxvY2tFZGdlU3BhY2U7CisgICAgICAgIHJldHVybiAmdm0uZXhlY3V0YWJs
ZVRvQ29kZUJsb2NrRWRnZVNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIFN0cnVjdHVyZSog
Y3JlYXRlU3RydWN0dXJlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlIHByb3RvdHlwZSk7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRnVuY3Rpb25Db2RlQmxvY2su
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRnVuY3Rpb25D
b2RlQmxvY2suaAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0Z1bmN0aW9uQ29kZUJsb2NrLmgJKHdvcmtpbmcgY29weSkKQEAgLTQyLDcgKzQyLDcg
QEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lLCBTdWJzcGFjZUFjY2Vzcz4KICAgICBz
dGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7Ci0gICAgICAgIHJl
dHVybiAmdm0uY29kZUJsb2NrU3BhY2Uuc3BhY2U7CisgICAgICAgIHJldHVybiAmdm0uY29kZUJs
b2NrU3BhY2UoKS5zcGFjZTsKICAgICB9CiAKICAgICBzdGF0aWMgRnVuY3Rpb25Db2RlQmxvY2sq
IGNyZWF0ZShWTSYgdm0sIENvcHlQYXJzZWRCbG9ja1RhZywgRnVuY3Rpb25Db2RlQmxvY2smIG90
aGVyKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL01vZHVsZVByb2dyYW1D
b2RlQmxvY2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
TW9kdWxlUHJvZ3JhbUNvZGVCbG9jay5oCShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvTW9kdWxlUHJvZ3JhbUNvZGVCbG9jay5oCSh3b3JraW5nIGNv
cHkpCkBAIC00Miw3ICs0Miw3IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSwgU3Vi
c3BhY2VBY2Nlc3M+CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0p
CiAgICAgewotICAgICAgICByZXR1cm4gJnZtLmNvZGVCbG9ja1NwYWNlLnNwYWNlOworICAgICAg
ICByZXR1cm4gJnZtLmNvZGVCbG9ja1NwYWNlKCkuc3BhY2U7CiAgICAgfQogCiAgICAgc3RhdGlj
IE1vZHVsZVByb2dyYW1Db2RlQmxvY2sqIGNyZWF0ZShWTSYgdm0sIENvcHlQYXJzZWRCbG9ja1Rh
ZywgTW9kdWxlUHJvZ3JhbUNvZGVCbG9jayYgb3RoZXIpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvUHJvZ3JhbUNvZGVCbG9jay5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qcm9ncmFtQ29kZUJsb2NrLmgJKHJldmlzaW9uIDI4NjA5
NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qcm9ncmFtQ29kZUJsb2NrLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTQyLDcgKzQyLDcgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5
cGVuYW1lLCBTdWJzcGFjZUFjY2Vzcz4KICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNl
Rm9yKFZNJiB2bSkKICAgICB7Ci0gICAgICAgIHJldHVybiAmdm0uY29kZUJsb2NrU3BhY2Uuc3Bh
Y2U7CisgICAgICAgIHJldHVybiAmdm0uY29kZUJsb2NrU3BhY2UoKS5zcGFjZTsKICAgICB9CiAK
ICAgICBzdGF0aWMgUHJvZ3JhbUNvZGVCbG9jayogY3JlYXRlKFZNJiB2bSwgQ29weVBhcnNlZEJs
b2NrVGFnLCBQcm9ncmFtQ29kZUJsb2NrJiBvdGhlcikKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9SZXBhdGNoLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL1JlcGF0Y2guaAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL1JlcGF0Y2guaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUg
QEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMxLDYgKzMx
LDcgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKK2NsYXNzIENhbGxMaW5rSW5mbzsKIGNsYXNzIFN0
cnVjdHVyZVN0dWJJbmZvOwogCiBlbnVtIGNsYXNzIEdldEJ5S2luZCB7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0
aW9uRXhlY3V0YWJsZS5jcHAJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTI1MSw3ICsyNTEsNyBAQCBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiBVbmxpbmtl
ZEZ1bmN0CiAgICAgICAgIG1fdW5saW5rZWRDb2RlQmxvY2tGb3JDb25zdHJ1Y3Quc2V0KHZtLCB0
aGlzLCByZXN1bHQpOwogICAgICAgICBicmVhazsKICAgICB9Ci0gICAgdm0udW5saW5rZWRGdW5j
dGlvbkV4ZWN1dGFibGVTcGFjZS5zZXQuYWRkKHRoaXMpOworICAgIHZtLnVubGlua2VkRnVuY3Rp
b25FeGVjdXRhYmxlU3BhY2UoKS5zZXQuYWRkKHRoaXMpOwogICAgIHJldHVybiByZXN1bHQ7CiB9
CiAKQEAgLTMxMCw3ICszMTAsNyBAQCB2b2lkIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpm
aW5hbGl6CiAgICAgICAgIGNsZWFySWZEZWFkKG1fdW5saW5rZWRDb2RlQmxvY2tGb3JDYWxsKTsK
ICAgICAgICAgY2xlYXJJZkRlYWQobV91bmxpbmtlZENvZGVCbG9ja0ZvckNvbnN0cnVjdCk7CiAg
ICAgICAgIGlmIChpc0NsZWFyZWQgJiYgIWlzU3RpbGxWYWxpZCkKLSAgICAgICAgICAgIHZtLnVu
bGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlU3BhY2Uuc2V0LnJlbW92ZSh0aGlzKTsKKyAgICAgICAg
ICAgIHZtLnVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlU3BhY2UoKS5zZXQucmVtb3ZlKHRoaXMp
OwogICAgIH0KIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlu
a2VkRnVuY3Rpb25FeGVjdXRhYmxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmgJKHJldmlzaW9uIDI4NjA5
NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhl
Y3V0YWJsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00MiwxMyArNDIsMTQgQEAKIAogbmFtZXNwYWNl
IEpTQyB7CiAKK2NsYXNzIENhY2hlZEZ1bmN0aW9uRXhlY3V0YWJsZTsKIGNsYXNzIERlY29kZXI7
Ci1jbGFzcyBGdW5jdGlvbk1ldGFkYXRhTm9kZTsKIGNsYXNzIEZ1bmN0aW9uRXhlY3V0YWJsZTsK
K2NsYXNzIEZ1bmN0aW9uTWV0YWRhdGFOb2RlOwogY2xhc3MgUGFyc2VyRXJyb3I7CitjbGFzcyBT
Y3JpcHRFeGVjdXRhYmxlOwogY2xhc3MgU291cmNlUHJvdmlkZXI7CiBjbGFzcyBVbmxpbmtlZEZ1
bmN0aW9uQ29kZUJsb2NrOwotY2xhc3MgQ2FjaGVkRnVuY3Rpb25FeGVjdXRhYmxlOwogCiBlbnVt
IFVubGlua2VkRnVuY3Rpb25LaW5kIHsKICAgICBVbmxpbmtlZE5vcm1hbEZ1bmN0aW9uLApAQCAt
NjcsNyArNjgsNyBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUsIFN1
YnNwYWNlQWNjZXNzPgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZt
KQogICAgIHsKLSAgICAgICAgcmV0dXJuICZ2bS51bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZVNw
YWNlLnNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxl
U3BhY2UoKS5zcGFjZTsKICAgICB9CiAKICAgICBzdGF0aWMgVW5saW5rZWRGdW5jdGlvbkV4ZWN1
dGFibGUqIGNyZWF0ZShWTSYgdm0sIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgRnVuY3Rpb25N
ZXRhZGF0YU5vZGUqIG5vZGUsIFVubGlua2VkRnVuY3Rpb25LaW5kIHVubGlua2VkRnVuY3Rpb25L
aW5kLCBDb25zdHJ1Y3RBYmlsaXR5IGNvbnN0cnVjdEFiaWxpdHksIEpTUGFyc2VyU2NyaXB0TW9k
ZSBzY3JpcHRNb2RlLCBSZWZQdHI8VERaRW52aXJvbm1lbnRMaW5rPiBwYXJlbnRTY29wZVREWlZh
cmlhYmxlcywgc3RkOjpvcHRpb25hbDxQcml2YXRlTmFtZUVudmlyb25tZW50PiBwYXJlbnRQcml2
YXRlTmFtZUVudmlyb25tZW50LCBEZXJpdmVkQ29udGV4dFR5cGUgZGVyaXZlZENvbnRleHRUeXBl
LCBOZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciBuZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciwg
UHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQgcHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQsIGJvb2wgaXNC
dWlsdGluRGVmYXVsdENsYXNzQ29uc3RydWN0b3IgPSBmYWxzZSkKQEAgLTEzMSw3ICsxMzIsNyBA
QCBwdWJsaWM6CiAgICAgewogICAgICAgICBtX3VubGlua2VkQ29kZUJsb2NrRm9yQ2FsbC5jbGVh
cigpOwogICAgICAgICBtX3VubGlua2VkQ29kZUJsb2NrRm9yQ29uc3RydWN0LmNsZWFyKCk7Ci0g
ICAgICAgIHZtLnVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlU3BhY2Uuc2V0LnJlbW92ZSh0aGlz
KTsKKyAgICAgICAgdm0udW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGVTcGFjZSgpLnNldC5yZW1v
dmUodGhpcyk7CiAgICAgfQogCiAgICAgdm9pZCByZWNvcmRQYXJzZShDb2RlRmVhdHVyZXMgZmVh
dHVyZXMsIExleGljYWxTY29wZUZlYXR1cmVzIGxleGljYWxTY29wZUZlYXR1cmVzLCBib29sIGhh
c0NhcHR1cmVkVmFyaWFibGVzKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
cGVjdWxhdGl2ZUpJVC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
MjAsNyArMTIwLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdEFsbG9jYXRlUmF3T2JqZQog
CiAgICAgVk0mIHZtID0gdGhpcy0+dm0oKTsKICAgICBpZiAoc2l6ZSkgewotICAgICAgICBpZiAo
QWxsb2NhdG9yIGFsbG9jYXRvciA9IHZtLmpzVmFsdWVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlLmFs
bG9jYXRvckZvck5vblZpcnR1YWwoc2l6ZSwgQWxsb2NhdG9yRm9yTW9kZTo6QWxsb2NhdG9ySWZF
eGlzdHMpKSB7CisgICAgICAgIGlmIChBbGxvY2F0b3IgYWxsb2NhdG9yID0gdm0uanNWYWx1ZUdp
Z2FjYWdlQXV4aWxpYXJ5U3BhY2UoKS5hbGxvY2F0b3JGb3JOb25WaXJ0dWFsKHNpemUsIEFsbG9j
YXRvckZvck1vZGU6OkFsbG9jYXRvcklmRXhpc3RzKSkgewogICAgICAgICAgICAgbV9qaXQuZW1p
dEFsbG9jYXRlKHN0b3JhZ2VHUFIsIEpJVEFsbG9jYXRvcjo6Y29uc3RhbnQoYWxsb2NhdG9yKSwg
c2NyYXRjaEdQUiwgc2NyYXRjaDJHUFIsIHNsb3dDYXNlcyk7CiAgICAgICAgICAgICAKICAgICAg
ICAgICAgIG1faml0LmFkZFB0cigKQEAgLTEwNzM4LDcgKzEwNzM4LDcgQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZUFsbG9jYXRlUHJvcAogICAgIAogICAgIHNpemVfdCBzaXplID0gaW5p
dGlhbE91dE9mTGluZUNhcGFjaXR5ICogc2l6ZW9mKEpTVmFsdWUpOwogCi0gICAgQWxsb2NhdG9y
IGFsbG9jYXRvciA9IHZtKCkuanNWYWx1ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UuYWxsb2NhdG9y
Rm9yTm9uVmlydHVhbChzaXplLCBBbGxvY2F0b3JGb3JNb2RlOjpBbGxvY2F0b3JJZkV4aXN0cyk7
CisgICAgQWxsb2NhdG9yIGFsbG9jYXRvciA9IHZtKCkuanNWYWx1ZUdpZ2FjYWdlQXV4aWxpYXJ5
U3BhY2UoKS5hbGxvY2F0b3JGb3JOb25WaXJ0dWFsKHNpemUsIEFsbG9jYXRvckZvck1vZGU6OkFs
bG9jYXRvcklmRXhpc3RzKTsKIAogICAgIGlmICghYWxsb2NhdG9yIHx8IG5vZGUtPnRyYW5zaXRp
b24oKS0+cHJldmlvdXMtPmNvdWxkSGF2ZUluZGV4aW5nSGVhZGVyKCkpIHsKICAgICAgICAgU3Bl
Y3VsYXRlQ2VsbE9wZXJhbmQgYmFzZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CkBAIC0xMDc4Miw3
ICsxMDc4Miw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVSZWFsbG9jYXRlUHIKICAg
ICBzaXplX3QgbmV3U2l6ZSA9IG9sZFNpemUgKiBvdXRPZkxpbmVHcm93dGhGYWN0b3I7CiAgICAg
QVNTRVJUKG5ld1NpemUgPT0gbm9kZS0+dHJhbnNpdGlvbigpLT5uZXh0LT5vdXRPZkxpbmVDYXBh
Y2l0eSgpICogc2l6ZW9mKEpTVmFsdWUpKTsKICAgICAKLSAgICBBbGxvY2F0b3IgYWxsb2NhdG9y
ID0gdm0oKS5qc1ZhbHVlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZS5hbGxvY2F0b3JGb3JOb25WaXJ0
dWFsKG5ld1NpemUsIEFsbG9jYXRvckZvck1vZGU6OkFsbG9jYXRvcklmRXhpc3RzKTsKKyAgICBB
bGxvY2F0b3IgYWxsb2NhdG9yID0gdm0oKS5qc1ZhbHVlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZSgp
LmFsbG9jYXRvckZvck5vblZpcnR1YWwobmV3U2l6ZSwgQWxsb2NhdG9yRm9yTW9kZTo6QWxsb2Nh
dG9ySWZFeGlzdHMpOwogCiAgICAgaWYgKCFhbGxvY2F0b3IgfHwgbm9kZS0+dHJhbnNpdGlvbigp
LT5wcmV2aW91cy0+Y291bGRIYXZlSW5kZXhpbmdIZWFkZXIoKSkgewogICAgICAgICBTcGVjdWxh
dGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKQEAgLTExNDk5LDcgKzEx
NDk5LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdE5ld1R5cGVkQXJyYXlXaQogICAgICAg
ICBtX2ppdC5hbmQzMihUcnVzdGVkSW1tMzIofjcpLCBzY3JhdGNoR1BSKTsKICAgICB9CiAgICAg
bV9qaXQuZW1pdEFsbG9jYXRlVmFyaWFibGVTaXplZCgKLSAgICAgICAgc3RvcmFnZUdQUiwgdm0o
KS5wcmltaXRpdmVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlLCBzY3JhdGNoR1BSLCBzY3JhdGNoR1BS
LAorICAgICAgICBzdG9yYWdlR1BSLCB2bSgpLnByaW1pdGl2ZUdpZ2FjYWdlQXV4aWxpYXJ5U3Bh
Y2UoKSwgc2NyYXRjaEdQUiwgc2NyYXRjaEdQUiwKICAgICAgICAgc2NyYXRjaEdQUjIsIHNsb3dD
YXNlcyk7CiAgICAgCiAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgZG9uZSA9IG1faml0LmJyYW5j
aFRlc3QzMihNYWNyb0Fzc2VtYmxlcjo6WmVybywgc2l6ZUdQUik7CkBAIC0xMzcwMCw3ICsxMzcw
MCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRBbGxvY2F0ZUJ1dHRlcmYKICAgICBkaWRO
b3RPdmVyZmxvdy5saW5rKCZtX2ppdCk7CiAjZW5kaWYKICAgICBtX2ppdC5lbWl0QWxsb2NhdGVW
YXJpYWJsZVNpemVkKAotICAgICAgICBzdG9yYWdlUmVzdWx0R1BSLCB2bSgpLmpzVmFsdWVHaWdh
Y2FnZUF1eGlsaWFyeVNwYWNlLCBzY3JhdGNoMiwgc2NyYXRjaDEsIHNjcmF0Y2gzLCBzbG93Q2Fz
ZXMpOworICAgICAgICBzdG9yYWdlUmVzdWx0R1BSLCB2bSgpLmpzVmFsdWVHaWdhY2FnZUF1eGls
aWFyeVNwYWNlKCksIHNjcmF0Y2gyLCBzY3JhdGNoMSwgc2NyYXRjaDMsIHNsb3dDYXNlcyk7CiAg
ICAgbV9qaXQuYWRkUHRyKFRydXN0ZWRJbW0zMihzaXplb2YoSW5kZXhpbmdIZWFkZXIpKSwgc3Rv
cmFnZVJlc3VsdEdQUik7CiAKICAgICBtX2ppdC5zdG9yZTMyKHNpemVHUFIsIE1hY3JvQXNzZW1i
bGVyOjpBZGRyZXNzKHN0b3JhZ2VSZXN1bHRHUFIsIEJ1dHRlcmZseTo6b2Zmc2V0T2ZQdWJsaWNM
ZW5ndGgoKSkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1Rv
QjMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJE
RkdUb0IzLmNwcAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0
bC9GVExMb3dlckRGR1RvQjMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04MzAwLDcgKzgzMDAsNyBA
QCBJR05PUkVfQ0xBTkdfV0FSTklOR1NfRU5ECiAgICAgICAgICAgICAgICAgbV9vdXQuY29uc3RJ
bnRQdHIofnN0YXRpY19jYXN0PGludHB0cl90Pig3KSkpOwogICAgICAgICB9CiAKLSAgICAgICAg
TFZhbHVlIGFsbG9jYXRvciA9IGFsbG9jYXRvckZvclNpemUodm0oKS5wcmltaXRpdmVHaWdhY2Fn
ZUF1eGlsaWFyeVNwYWNlLCBieXRlU2l6ZSwgc2xvd0Nhc2UpOworICAgICAgICBMVmFsdWUgYWxs
b2NhdG9yID0gYWxsb2NhdG9yRm9yU2l6ZSh2bSgpLnByaW1pdGl2ZUdpZ2FjYWdlQXV4aWxpYXJ5
U3BhY2UoKSwgYnl0ZVNpemUsIHNsb3dDYXNlKTsKICAgICAgICAgTFZhbHVlIHN0b3JhZ2UgPSBh
bGxvY2F0ZUhlYXBDZWxsKGFsbG9jYXRvciwgc2xvd0Nhc2UpOwogCiAgICAgICAgIHNwbGF0V29y
ZHMoCkBAIC0xMzkyMSw3ICsxMzkyMSw3IEBAIElHTk9SRV9DTEFOR19XQVJOSU5HU19FTkQKICAg
ICAgICAgICAgICAgICBWYWx1ZUZyb21CbG9jayBub0J1dHRlcmZseSA9IG1fb3V0LmFuY2hvciht
X291dC5pbnRQdHJaZXJvKTsKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBMVmFs
dWUgc3RhcnRPZlN0b3JhZ2UgPSBhbGxvY2F0ZUhlYXBDZWxsKAotICAgICAgICAgICAgICAgICAg
ICBhbGxvY2F0b3JGb3JTaXplKHZtKCkuanNWYWx1ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UsIGJ1
dHRlcmZseVNpemUsIHNsb3dQYXRoKSwKKyAgICAgICAgICAgICAgICAgICAgYWxsb2NhdG9yRm9y
U2l6ZSh2bSgpLmpzVmFsdWVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlKCksIGJ1dHRlcmZseVNpemUs
IHNsb3dQYXRoKSwKICAgICAgICAgICAgICAgICAgICAgc2xvd1BhdGgpOwogCiAgICAgICAgICAg
ICAgICAgTFZhbHVlIGZhc3RCdXR0ZXJmbHlWYWx1ZSA9IG1fb3V0LmFkZCgKQEAgLTE1MDE2LDcg
KzE1MDE2LDcgQEAgSUdOT1JFX0NMQU5HX1dBUk5JTkdTX0VORAogICAgICAgICBMQmFzaWNCbG9j
ayBsYXN0TmV4dCA9IG1fb3V0Lmluc2VydE5ld0Jsb2Nrc0JlZm9yZShzbG93UGF0aCk7CiAKICAg
ICAgICAgc2l6ZV90IHNpemVJbkJ5dGVzID0gc2l6ZUluVmFsdWVzICogc2l6ZW9mKEpTVmFsdWUp
OwotICAgICAgICBBbGxvY2F0b3IgYWxsb2NhdG9yID0gdm0oKS5qc1ZhbHVlR2lnYWNhZ2VBdXhp
bGlhcnlTcGFjZS5hbGxvY2F0b3JGb3JOb25WaXJ0dWFsKHNpemVJbkJ5dGVzLCBBbGxvY2F0b3JG
b3JNb2RlOjpBbGxvY2F0b3JJZkV4aXN0cyk7CisgICAgICAgIEFsbG9jYXRvciBhbGxvY2F0b3Ig
PSB2bSgpLmpzVmFsdWVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlKCkuYWxsb2NhdG9yRm9yTm9uVmly
dHVhbChzaXplSW5CeXRlcywgQWxsb2NhdG9yRm9yTW9kZTo6QWxsb2NhdG9ySWZFeGlzdHMpOwog
ICAgICAgICBMVmFsdWUgc3RhcnRPZlN0b3JhZ2UgPSBhbGxvY2F0ZUhlYXBDZWxsKAogICAgICAg
ICAgICAgbV9vdXQuY29uc3RJbnRQdHIoYWxsb2NhdG9yLmxvY2FsQWxsb2NhdG9yKCkpLCBzbG93
UGF0aCk7CiAgICAgICAgIFZhbHVlRnJvbUJsb2NrIGZhc3RCdXR0ZXJmbHkgPSBtX291dC5hbmNo
b3IoCkBAIC0xNzAzOCw3ICsxNzAzOCw3IEBAIElHTk9SRV9DTEFOR19XQVJOSU5HU19FTkQKICAg
ICAgICAgTFZhbHVlIGJ1dHRlcmZseVNpemUgPSBtX291dC5hZGQoCiAgICAgICAgICAgICBwYXls
b2FkU2l6ZSwgbV9vdXQuY29uc3RJbnRQdHIoc2l6ZW9mKEluZGV4aW5nSGVhZGVyKSkpOwogCi0g
ICAgICAgIExWYWx1ZSBhbGxvY2F0b3IgPSBhbGxvY2F0b3JGb3JTaXplKHZtKCkuanNWYWx1ZUdp
Z2FjYWdlQXV4aWxpYXJ5U3BhY2UsIGJ1dHRlcmZseVNpemUsIGZhaWxDYXNlKTsKKyAgICAgICAg
TFZhbHVlIGFsbG9jYXRvciA9IGFsbG9jYXRvckZvclNpemUodm0oKS5qc1ZhbHVlR2lnYWNhZ2VB
dXhpbGlhcnlTcGFjZSgpLCBidXR0ZXJmbHlTaXplLCBmYWlsQ2FzZSk7CiAgICAgICAgIExWYWx1
ZSBzdGFydE9mU3RvcmFnZSA9IGFsbG9jYXRlSGVhcENlbGwoYWxsb2NhdG9yLCBmYWlsQ2FzZSk7
CiAKICAgICAgICAgTFZhbHVlIGJ1dHRlcmZseSA9IG1fb3V0LmFkZChzdGFydE9mU3RvcmFnZSwg
bV9vdXQuY29uc3RJbnRQdHIoc2l6ZW9mKEluZGV4aW5nSGVhZGVyKSkpOwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2dlbmVyYXRvci9EU0wucmIKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2dlbmVyYXRvci9EU0wucmIJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9nZW5lcmF0b3IvRFNMLnJiCSh3b3JraW5nIGNvcHkpCkBAIC0xLDQg
KzEsNCBAQAotIyBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorIyBDb3B5cmlnaHQgKEMpIDIwMTgtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAjCiAjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAogIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTE0Nyw2ICsxNDcsOCBAQCBt
b2R1bGUgRFNMCiAKIG5hbWVzcGFjZSBKU0MgewogCitjbGFzcyBCYXNpY0Jsb2NrTG9jYXRpb247
CisKIHZvaWQgZHVtcEJ5dGVjb2RlKEJ5dGVjb2RlRHVtcGVyQmFzZSogZHVtcGVyLCBJbnN0cnVj
dGlvblN0cmVhbTo6T2Zmc2V0LCBjb25zdCBJbnN0cnVjdGlvbiopOwogCiAjaWYgRU5BQkxFKFdF
QkFTU0VNQkxZKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ29kZUJsb2NrU2V0
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ29kZUJsb2NrU2V0
LmgJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0NvZGVC
bG9ja1NldC5oCSh3b3JraW5nIGNvcHkpCkBAIC02Niw4ICs2Niw2IEBAIHB1YmxpYzoKICAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPiB2b2lkIGl0ZXJhdGUoY29uc3QgRnVuY3RvciYpOwog
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+IHZvaWQgaXRlcmF0ZShjb25zdCBBYnN0cmFj
dExvY2tlciYsIGNvbnN0IEZ1bmN0b3ImKTsKIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0
b3I+IHZvaWQgaXRlcmF0ZVZpYVN1YnNwYWNlcyhWTSYsIGNvbnN0IEZ1bmN0b3ImKTsKLSAgICAK
ICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPiB2b2lkIGl0ZXJhdGVDdXJyZW50bHlFeGVj
dXRpbmcoY29uc3QgRnVuY3RvciYpOwogICAgIAogICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYp
IGNvbnN0OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ29kZUJsb2NrU2V0SW5s
aW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0NvZGVCbG9j
a1NldElubGluZXMuaAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvQ29kZUJsb2NrU2V0SW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC02MCwxOCArNjAs
NiBAQCB2b2lkIENvZGVCbG9ja1NldDo6aXRlcmF0ZShjb25zdCBBYnN0cmFjCiB9CiAKIHRlbXBs
YXRlPHR5cGVuYW1lIEZ1bmN0b3I+Ci12b2lkIENvZGVCbG9ja1NldDo6aXRlcmF0ZVZpYVN1YnNw
YWNlcyhWTSYgdm0sIGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3IpCi17Ci0gICAgdm0uZm9yRWFjaENv
ZGVCbG9ja1NwYWNlKAotICAgICAgICBbJl0gKGF1dG8mIHNwYWNlQW5kU2V0KSB7Ci0gICAgICAg
ICAgICBzcGFjZUFuZFNldC5zcGFjZS5mb3JFYWNoTGl2ZUNlbGwoCi0gICAgICAgICAgICAgICAg
WyZdIChIZWFwQ2VsbCogY2VsbCwgSGVhcENlbGw6OktpbmQpIHsKLSAgICAgICAgICAgICAgICAg
ICAgZnVuY3Rvcihqc0Nhc3Q8Q29kZUJsb2NrKj4oc3RhdGljX2Nhc3Q8SlNDZWxsKj4oY2VsbCkp
KTsKLSAgICAgICAgICAgICAgICB9KTsKLSAgICAgICAgfSk7Ci19Ci0KLXRlbXBsYXRlPHR5cGVu
YW1lIEZ1bmN0b3I+CiB2b2lkIENvZGVCbG9ja1NldDo6aXRlcmF0ZUN1cnJlbnRseUV4ZWN1dGlu
Zyhjb25zdCBGdW5jdG9yJiBmdW5jdG9yKQogewogICAgIExvY2tlciBsb2NrZXIgeyBtX2xvY2sg
fTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCShyZXZpc2lvbiAyODYwOTUp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjEsMTMgKzIxLDIwIEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiSGVhcC5o
IgogCisjaW5jbHVkZSAiQmlnSW50T2JqZWN0LmgiCisjaW5jbHVkZSAiQm9vbGVhbk9iamVjdC5o
IgorI2luY2x1ZGUgIkJyYW5kZWRTdHJ1Y3R1cmUuaCIKICNpbmNsdWRlICJCdWlsdGluRXhlY3V0
YWJsZXMuaCIKKyNpbmNsdWRlICJDbG9uZWRBcmd1bWVudHMuaCIKICNpbmNsdWRlICJDb2RlQmxv
Y2suaCIKICNpbmNsdWRlICJDb2RlQmxvY2tTZXRJbmxpbmVzLmgiCiAjaW5jbHVkZSAiQ29sbGVj
dGluZ1Njb3BlLmgiCiAjaW5jbHVkZSAiQ29uc2VydmF0aXZlUm9vdHMuaCIKKyNpbmNsdWRlICJE
YXRlSW5zdGFuY2UuaCIKKyNpbmNsdWRlICJEZWJ1Z2dlclNjb3BlLmgiCiAjaW5jbHVkZSAiRWRl
bkdDQWN0aXZpdHlDYWxsYmFjay5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbi5oIgorI2luY2x1ZGUg
IkZhc3RNYWxsb2NBbGlnbmVkTWVtb3J5QWxsb2NhdG9yLmgiCiAjaW5jbHVkZSAiRnVsbEdDQWN0
aXZpdHlDYWxsYmFjay5oIgogI2luY2x1ZGUgIkZ1bmN0aW9uRXhlY3V0YWJsZUlubGluZXMuaCIK
ICNpbmNsdWRlICJHQ0FjdGl2aXR5Q2FsbGJhY2suaCIKQEAgLTM1LDYgKzQyLDcgQEAKICNpbmNs
dWRlICJHQ0luY29taW5nUmVmQ291bnRlZFNldElubGluZXMuaCIKICNpbmNsdWRlICJHQ1NlZ21l
bnRlZEFycmF5SW5saW5lcy5oIgogI2luY2x1ZGUgIkdDVHlwZU1hcC5oIgorI2luY2x1ZGUgIkdl
dHRlclNldHRlci5oIgogI2luY2x1ZGUgIkhhc093blByb3BlcnR5Q2FjaGUuaCIKICNpbmNsdWRl
ICJIZWFwSGVscGVyUG9vbC5oIgogI2luY2x1ZGUgIkhlYXBJdGVyYXRpb25TY29wZS5oIgpAQCAt
NDMsMzcgKzUxLDExOSBAQAogI2luY2x1ZGUgIkhlYXBWZXJpZmllci5oIgogI2luY2x1ZGUgIklu
Y3JlbWVudGFsU3dlZXBlci5oIgogI2luY2x1ZGUgIkludGVycHJldGVyLmgiCisjaW5jbHVkZSAi
SW50bENvbGxhdG9yLmgiCisjaW5jbHVkZSAiSW50bERhdGVUaW1lRm9ybWF0LmgiCisjaW5jbHVk
ZSAiSW50bERpc3BsYXlOYW1lcy5oIgorI2luY2x1ZGUgIkludGxMaXN0Rm9ybWF0LmgiCisjaW5j
bHVkZSAiSW50bExvY2FsZS5oIgorI2luY2x1ZGUgIkludGxOdW1iZXJGb3JtYXQuaCIKKyNpbmNs
dWRlICJJbnRsUGx1cmFsUnVsZXMuaCIKKyNpbmNsdWRlICJJbnRsUmVsYXRpdmVUaW1lRm9ybWF0
LmgiCisjaW5jbHVkZSAiSW50bFNlZ21lbnRJdGVyYXRvci5oIgorI2luY2x1ZGUgIkludGxTZWdt
ZW50ZXIuaCIKKyNpbmNsdWRlICJJbnRsU2VnbWVudHMuaCIKICNpbmNsdWRlICJJc29DZWxsU2V0
SW5saW5lcy5oIgorI2luY2x1ZGUgIklzb0hlYXBDZWxsVHlwZUlubGluZXMuaCIKKyNpbmNsdWRl
ICJJc29JbmxpbmVkSGVhcENlbGxUeXBlSW5saW5lcy5oIgogI2luY2x1ZGUgIkpJVFN0dWJSb3V0
aW5lU2V0LmgiCiAjaW5jbHVkZSAiSklUV29ya2xpc3RJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNB
UElHbG9iYWxPYmplY3QuaCIKKyNpbmNsdWRlICJKU0FQSVZhbHVlV3JhcHBlci5oIgorI2luY2x1
ZGUgIkpTQVBJV3JhcHBlck9iamVjdC5oIgorI2luY2x1ZGUgIkpTQXJyYXkuaCIKKyNpbmNsdWRl
ICJKU0FycmF5QnVmZmVyLmgiCisjaW5jbHVkZSAiSlNBcnJheUl0ZXJhdG9yLmgiCisjaW5jbHVk
ZSAiSlNBc3luY0dlbmVyYXRvci5oIgorI2luY2x1ZGUgIkpTQmlnSW50LmgiCisjaW5jbHVkZSAi
SlNCb3VuZEZ1bmN0aW9uLmgiCisjaW5jbHVkZSAiSlNDYWxsYmFja0NvbnN0cnVjdG9yLmgiCisj
aW5jbHVkZSAiSlNDYWxsYmFja0Z1bmN0aW9uLmgiCisjaW5jbHVkZSAiSlNDYWxsYmFja09iamVj
dC5oIgorI2luY2x1ZGUgIkpTQ2FsbGVlLmgiCisjaW5jbHVkZSAiSlNDdXN0b21HZXR0ZXJGdW5j
dGlvbi5oIgorI2luY2x1ZGUgIkpTQ3VzdG9tU2V0dGVyRnVuY3Rpb24uaCIKKyNpbmNsdWRlICJK
U0RhdGFWaWV3LmgiCiAjaW5jbHVkZSAiSlNGaW5hbGl6YXRpb25SZWdpc3RyeS5oIgorI2luY2x1
ZGUgIkpTRnVuY3Rpb24uaCIKKyNpbmNsdWRlICJKU0dsb2JhbExleGljYWxFbnZpcm9ubWVudC5o
IgorI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCisjaW5jbHVkZSAiSlNJbmplY3RlZFNjcmlw
dEhvc3QuaCIKKyNpbmNsdWRlICJKU0phdmFTY3JpcHRDYWxsRnJhbWUuaCIKKyNpbmNsdWRlICJK
U01hcC5oIgorI2luY2x1ZGUgIkpTTWFwSXRlcmF0b3IuaCIKKyNpbmNsdWRlICJKU01vZHVsZU5h
bWVzcGFjZU9iamVjdC5oIgorI2luY2x1ZGUgIkpTTW9kdWxlUmVjb3JkLmgiCisjaW5jbHVkZSAi
SlNOYXRpdmVTdGRGdW5jdGlvbi5oIgorI2luY2x1ZGUgIkpTUHJvbWlzZS5oIgorI2luY2x1ZGUg
IkpTUHJvcGVydHlOYW1lRW51bWVyYXRvci5oIgorI2luY2x1ZGUgIkpTUHJveHkuaCIKKyNpbmNs
dWRlICJKU1NjcmlwdEZldGNoUGFyYW1ldGVycy5oIgorI2luY2x1ZGUgIkpTU2NyaXB0RmV0Y2hl
ci5oIgorI2luY2x1ZGUgIkpTU2V0LmgiCisjaW5jbHVkZSAiSlNTZXRJdGVyYXRvci5oIgorI2lu
Y2x1ZGUgIkpTU291cmNlQ29kZS5oIgorI2luY2x1ZGUgIkpTU3RyaW5nLmgiCisjaW5jbHVkZSAi
SlNTdHJpbmdJdGVyYXRvci5oIgorI2luY2x1ZGUgIkpTVGVtcGxhdGVPYmplY3REZXNjcmlwdG9y
LmgiCisjaW5jbHVkZSAiSlNUb1dhc21JQ0NhbGxlZS5oIgorI2luY2x1ZGUgIkpTVHlwZWRBcnJh
eXMuaCIKICNpbmNsdWRlICJKU1ZpcnR1YWxNYWNoaW5lSW50ZXJuYWwuaCIKICNpbmNsdWRlICJK
U1dlYWtNYXAuaCIKICNpbmNsdWRlICJKU1dlYWtPYmplY3RSZWYuaCIKICNpbmNsdWRlICJKU1dl
YWtTZXQuaCIKICNpbmNsdWRlICJKU1dlYkFzc2VtYmx5Q29kZUJsb2NrLmgiCisjaW5jbHVkZSAi
SlNXZWJBc3NlbWJseUV4Y2VwdGlvbi5oIgorI2luY2x1ZGUgIkpTV2ViQXNzZW1ibHlHbG9iYWwu
aCIKKyNpbmNsdWRlICJKU1dlYkFzc2VtYmx5SW5zdGFuY2UuaCIKKyNpbmNsdWRlICJKU1dlYkFz
c2VtYmx5TWVtb3J5LmgiCisjaW5jbHVkZSAiSlNXZWJBc3NlbWJseU1vZHVsZS5oIgorI2luY2x1
ZGUgIkpTV2ViQXNzZW1ibHlUYWJsZS5oIgorI2luY2x1ZGUgIkpTV2ViQXNzZW1ibHlUYWcuaCIK
KyNpbmNsdWRlICJKU1dpdGhTY29wZS5oIgogI2luY2x1ZGUgIk1hY2hpbmVTdGFja01hcmtlci5o
IgogI2luY2x1ZGUgIk1hcmtTdGFja01lcmdpbmdDb25zdHJhaW50LmgiCiAjaW5jbHVkZSAiTWFy
a2VkSlNWYWx1ZVJlZkFycmF5LmgiCiAjaW5jbHVkZSAiTWFya2VkU3BhY2VJbmxpbmVzLmgiCiAj
aW5jbHVkZSAiTWFya2luZ0NvbnN0cmFpbnRTZXQuaCIKKyNpbmNsdWRlICJOYXRpdmVFeGVjdXRh
YmxlLmgiCiAjaW5jbHVkZSAiUHJldmVudENvbGxlY3Rpb25TY29wZS5oIgorI2luY2x1ZGUgIlBy
b2dyYW1FeGVjdXRhYmxlLmgiCisjaW5jbHVkZSAiUHJvcGVydHlUYWJsZS5oIgorI2luY2x1ZGUg
IlByb3h5UmV2b2tlLmgiCisjaW5jbHVkZSAiUmVnRXhwT2JqZWN0LmgiCiAjaW5jbHVkZSAiU2Ft
cGxpbmdQcm9maWxlci5oIgorI2luY2x1ZGUgIlNjb3BlZEFyZ3VtZW50cy5oIgogI2luY2x1ZGUg
IlNoYWRvd0NoaWNrZW4uaCIKKyNpbmNsdWRlICJTaGFkb3dSZWFsbU9iamVjdC5oIgogI2luY2x1
ZGUgIlNwYWNlVGltZU11dGF0b3JTY2hlZHVsZXIuaCIKICNpbmNsdWRlICJTdG9jaGFzdGljU3Bh
Y2VUaW1lTXV0YXRvclNjaGVkdWxlci5oIgogI2luY2x1ZGUgIlN0b3BJZk5lY2Vzc2FyeVRpbWVy
LmgiCisjaW5jbHVkZSAiU3RyaWN0RXZhbEFjdGl2YXRpb24uaCIKKyNpbmNsdWRlICJTdHJpbmdP
YmplY3QuaCIKKyNpbmNsdWRlICJTdHJ1Y3R1cmVDaGFpbi5oIgogI2luY2x1ZGUgIlN1YnNwYWNl
SW5saW5lcy5oIgogI2luY2x1ZGUgIlN1cGVyU2FtcGxlci5oIgogI2luY2x1ZGUgIlN3ZWVwaW5n
U2NvcGUuaCIKKyNpbmNsdWRlICJTeW1ib2xPYmplY3QuaCIKICNpbmNsdWRlICJTeW1ib2xUYWJs
ZUlubGluZXMuaCIKICNpbmNsdWRlICJTeW5jaHJvbm91c1N0b3BUaGVXb3JsZE11dGF0b3JTY2hl
ZHVsZXIuaCIKKyNpbmNsdWRlICJUZW1wb3JhbENhbGVuZGFyLmgiCisjaW5jbHVkZSAiVGVtcG9y
YWxEdXJhdGlvbi5oIgorI2luY2x1ZGUgIlRlbXBvcmFsSW5zdGFudC5oIgorI2luY2x1ZGUgIlRl
bXBvcmFsUGxhaW5UaW1lLmgiCisjaW5jbHVkZSAiVGVtcG9yYWxUaW1lWm9uZS5oIgogI2luY2x1
ZGUgIlR5cGVQcm9maWxlci5oIgogI2luY2x1ZGUgIlR5cGVQcm9maWxlckxvZy5oIgorI2luY2x1
ZGUgIlVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2suaCIKKyNpbmNsdWRlICJVbmxpbmtlZE1vZHVs
ZVByb2dyYW1Db2RlQmxvY2suaCIKKyNpbmNsdWRlICJVbmxpbmtlZFByb2dyYW1Db2RlQmxvY2su
aCIKICNpbmNsdWRlICJWTS5oIgogI2luY2x1ZGUgIlZlcmlmaWVyU2xvdFZpc2l0b3JJbmxpbmVz
LmgiCiAjaW5jbHVkZSAiV2Vha01hcEltcGxJbmxpbmVzLmgiCiAjaW5jbHVkZSAiV2Vha1NldElu
bGluZXMuaCIKKyNpbmNsdWRlICJXZWJBc3NlbWJseUZ1bmN0aW9uLmgiCisjaW5jbHVkZSAiV2Vi
QXNzZW1ibHlNb2R1bGVSZWNvcmQuaCIKKyNpbmNsdWRlICJXZWJBc3NlbWJseVdyYXBwZXJGdW5j
dGlvbi5oIgogI2luY2x1ZGUgPGFsZ29yaXRobT4KICNpbmNsdWRlIDx3dGYvQ3J5cHRvZ3JhcGhp
Y2FsbHlSYW5kb21OdW1iZXIuaD4KICNpbmNsdWRlIDx3dGYvTGlzdER1bXAuaD4KQEAgLTkwLDcg
KzE4MCwxMyBAQAogI2luY2x1ZGUgPHd0Zi9zcGkvY29jb2Evb2JqY1NQSS5oPgogI2VuZGlmCiAK
KyNpZiBKU0NfT0JKQ19BUElfRU5BQkxFRAorI2luY2x1ZGUgIk9iakNDYWxsYmFja0Z1bmN0aW9u
LmgiCisjZW5kaWYKKwogI2lmZGVmIEpTQ19HTElCX0FQSV9FTkFCTEVECisjaW5jbHVkZSAiSlNB
UElXcmFwcGVyR2xvYmFsT2JqZWN0LmgiCisjaW5jbHVkZSAiSlNDQ2FsbGJhY2tGdW5jdGlvbi5o
IgogI2luY2x1ZGUgIkpTQ0dMaWJXcmFwcGVyT2JqZWN0LmgiCiAjZW5kaWYKIApAQCAtMjg2LDYg
KzM4MiwxMTQgQEAgSGVhcDo6SGVhcChWTSYgdm0sIEhlYXBUeXBlIGhlYXBUeXBlKQogICAgICwg
bV9oZWxwZXJDbGllbnQoJmhlYXBIZWxwZXJQb29sKCkpCiAgICAgLCBtX3RocmVhZExvY2soQm94
PExvY2s+OjpjcmVhdGUoKSkKICAgICAsIG1fdGhyZWFkQ29uZGl0aW9uKEF1dG9tYXRpY1RocmVh
ZENvbmRpdGlvbjo6Y3JlYXRlKCkpCisKKyAgICAvLyBIZWFwQ2VsbFR5cGVzCisgICAgLCBhdXhp
bGlhcnlIZWFwQ2VsbFR5cGUoQ2VsbEF0dHJpYnV0ZXMoRG9lc05vdE5lZWREZXN0cnVjdGlvbiwg
SGVhcENlbGw6OkF1eGlsaWFyeSkpCisgICAgLCBpbW11dGFibGVCdXR0ZXJmbHlIZWFwQ2VsbFR5
cGUoQ2VsbEF0dHJpYnV0ZXMoRG9lc05vdE5lZWREZXN0cnVjdGlvbiwgSGVhcENlbGw6OkpTQ2Vs
bFdpdGhJbmRleGluZ0hlYWRlcikpCisgICAgLCBjZWxsSGVhcENlbGxUeXBlKENlbGxBdHRyaWJ1
dGVzKERvZXNOb3ROZWVkRGVzdHJ1Y3Rpb24sIEhlYXBDZWxsOjpKU0NlbGwpKQorICAgICwgZGVz
dHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZShDZWxsQXR0cmlidXRlcyhOZWVkc0Rlc3RydWN0aW9u
LCBIZWFwQ2VsbDo6SlNDZWxsKSkKKy8vICAgICwgYXBpR2xvYmFsT2JqZWN0SGVhcENlbGxUeXBl
KElzb0hlYXBDZWxsVHlwZTo6QXJnczxKU0FQSUdsb2JhbE9iamVjdD4oKSkKKy8vICAgICwgY2Fs
bGJhY2tDb25zdHJ1Y3RvckhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OkFyZ3M8SlNDYWxs
YmFja0NvbnN0cnVjdG9yPigpKQorLy8gICAgLCBjYWxsYmFja0dsb2JhbE9iamVjdEhlYXBDZWxs
VHlwZShJc29IZWFwQ2VsbFR5cGU6OkFyZ3M8SlNDYWxsYmFja09iamVjdDxKU0dsb2JhbE9iamVj
dD4+KCkpCisvLyAgICAsIGNhbGxiYWNrT2JqZWN0SGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlw
ZTo6QXJnczxKU0NhbGxiYWNrT2JqZWN0PEpTTm9uRmluYWxPYmplY3Q+PigpKQorLy8gICAgLCBj
dXN0b21HZXR0ZXJGdW5jdGlvbkhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OkFyZ3M8SlND
dXN0b21HZXR0ZXJGdW5jdGlvbj4oKSkKKy8vICAgICwgY3VzdG9tU2V0dGVyRnVuY3Rpb25IZWFw
Q2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpBcmdzPEpTQ3VzdG9tU2V0dGVyRnVuY3Rpb24+KCkp
CisvLyAgICAsIGRhdGVJbnN0YW5jZUhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OkFyZ3M8
RGF0ZUluc3RhbmNlPigpKQorLy8gICAgLCBlcnJvckluc3RhbmNlSGVhcENlbGxUeXBlKElzb0hl
YXBDZWxsVHlwZTo6QXJnczxFcnJvckluc3RhbmNlPigpKQorLy8gICAgLCBmaW5hbGl6YXRpb25S
ZWdpc3RyeUNlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6QXJnczxKU0ZpbmFsaXphdGlvblJlZ2lz
dHJ5PigpKQorLy8gICAgLCBnbG9iYWxMZXhpY2FsRW52aXJvbm1lbnRIZWFwQ2VsbFR5cGUoSXNv
SGVhcENlbGxUeXBlOjpBcmdzPEpTR2xvYmFsTGV4aWNhbEVudmlyb25tZW50PigpKQorLy8gICAg
LCBnbG9iYWxPYmplY3RIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpBcmdzPEpTR2xvYmFs
T2JqZWN0PigpKQorLy8gICAgLCBpbmplY3RlZFNjcmlwdEhvc3RTcGFjZUhlYXBDZWxsVHlwZShJ
c29IZWFwQ2VsbFR5cGU6OkFyZ3M8SW5zcGVjdG9yOjpKU0luamVjdGVkU2NyaXB0SG9zdD4oKSkK
Ky8vICAgICwgamF2YVNjcmlwdENhbGxGcmFtZUhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6
OkFyZ3M8SW5zcGVjdG9yOjpKU0phdmFTY3JpcHRDYWxsRnJhbWU+KCkpCisvLyAgICAsIGpzTW9k
dWxlUmVjb3JkSGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6QXJnczxKU01vZHVsZVJlY29y
ZD4oKSkKKy8vICAgICwgbW9kdWxlTmFtZXNwYWNlT2JqZWN0SGVhcENlbGxUeXBlKElzb0hlYXBD
ZWxsVHlwZTo6QXJnczxKU01vZHVsZU5hbWVzcGFjZU9iamVjdD4oKSkKKy8vICAgICwgbmF0aXZl
U3RkRnVuY3Rpb25IZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpBcmdzPEpTTmF0aXZlU3Rk
RnVuY3Rpb24+KCkpCisvLyAgICAsIHdlYWtNYXBIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBl
OjpBcmdzPEpTV2Vha01hcD4oKSkKKy8vICAgICwgd2Vha1NldEhlYXBDZWxsVHlwZShJc29IZWFw
Q2VsbFR5cGU6OkFyZ3M8SlNXZWFrU2V0PigpKQorI2lmIEpTQ19PQkpDX0FQSV9FTkFCTEVECisv
LyAgICAsIGFwaVdyYXBwZXJPYmplY3RIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpBcmdz
PEpTQ2FsbGJhY2tPYmplY3Q8SlNBUElXcmFwcGVyT2JqZWN0Pj4oKSkKKy8vICAgICwgb2JqQ0Nh
bGxiYWNrRnVuY3Rpb25IZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpBcmdzPE9iakNDYWxs
YmFja0Z1bmN0aW9uPigpKQorI2VuZGlmCisjaWZkZWYgSlNDX0dMSUJfQVBJX0VOQUJMRUQKKy8v
ICAgICwgYXBpV3JhcHBlck9iamVjdEhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OkFyZ3M8
SlNDYWxsYmFja09iamVjdDxKU0FQSVdyYXBwZXJPYmplY3Q+PigpKQorLy8gICAgLCBjYWxsYmFj
a0FQSVdyYXBwZXJHbG9iYWxPYmplY3RIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpBcmdz
PEpTQ2FsbGJhY2tPYmplY3Q8SlNBUElXcmFwcGVyR2xvYmFsT2JqZWN0Pj4oKSkKKy8vICAgICwg
anNjQ2FsbGJhY2tGdW5jdGlvbkhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OkFyZ3M8SlND
Q2FsbGJhY2tGdW5jdGlvbj4oKSkKKyNlbmRpZgorLy8gICAgLCBpbnRsQ29sbGF0b3JIZWFwQ2Vs
bFR5cGUoSXNvSGVhcENlbGxUeXBlOjpBcmdzPEludGxDb2xsYXRvcj4oKSkKKy8vICAgICwgaW50
bERhdGVUaW1lRm9ybWF0SGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6QXJnczxJbnRsRGF0
ZVRpbWVGb3JtYXQ+KCkpCisvLyAgICAsIGludGxEaXNwbGF5TmFtZXNIZWFwQ2VsbFR5cGUoSXNv
SGVhcENlbGxUeXBlOjpBcmdzPEludGxEaXNwbGF5TmFtZXM+KCkpCisvLyAgICAsIGludGxMaXN0
Rm9ybWF0SGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6QXJnczxJbnRsTGlzdEZvcm1hdD4o
KSkKKy8vICAgICwgaW50bExvY2FsZUhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OkFyZ3M8
SW50bExvY2FsZT4oKSkKKy8vICAgICwgaW50bE51bWJlckZvcm1hdEhlYXBDZWxsVHlwZShJc29I
ZWFwQ2VsbFR5cGU6OkFyZ3M8SW50bE51bWJlckZvcm1hdD4oKSkKKy8vICAgICwgaW50bFBsdXJh
bFJ1bGVzSGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6QXJnczxJbnRsUGx1cmFsUnVsZXM+
KCkpCisvLyAgICAsIGludGxSZWxhdGl2ZVRpbWVGb3JtYXRIZWFwQ2VsbFR5cGUoSXNvSGVhcENl
bGxUeXBlOjpBcmdzPEludGxSZWxhdGl2ZVRpbWVGb3JtYXQ+KCkpCisvLyAgICAsIGludGxTZWdt
ZW50SXRlcmF0b3JIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpBcmdzPEludGxTZWdtZW50
SXRlcmF0b3I+KCkpCisvLyAgICAsIGludGxTZWdtZW50ZXJIZWFwQ2VsbFR5cGUoSXNvSGVhcENl
bGxUeXBlOjpBcmdzPEludGxTZWdtZW50ZXI+KCkpCisvLyAgICAsIGludGxTZWdtZW50c0hlYXBD
ZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OkFyZ3M8SW50bFNlZ21lbnRzPigpKQorI2lmIEVOQUJM
RShXRUJBU1NFTUJMWSkKKy8vICAgICwgd2ViQXNzZW1ibHlDb2RlQmxvY2tIZWFwQ2VsbFR5cGUo
SXNvSGVhcENlbGxUeXBlOjpBcmdzPEpTV2ViQXNzZW1ibHlDb2RlQmxvY2s+KCkpCisvLyAgICAs
IHdlYkFzc2VtYmx5RXhjZXB0aW9uSGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6QXJnczxK
U1dlYkFzc2VtYmx5RXhjZXB0aW9uPigpKQorLy8gICAgLCB3ZWJBc3NlbWJseUZ1bmN0aW9uSGVh
cENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6QXJnczxXZWJBc3NlbWJseUZ1bmN0aW9uPigpKQor
Ly8gICAgLCB3ZWJBc3NlbWJseUdsb2JhbEhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OkFy
Z3M8SlNXZWJBc3NlbWJseUdsb2JhbD4oKSkKKy8vICAgICwgd2ViQXNzZW1ibHlJbnN0YW5jZUhl
YXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OkFyZ3M8SlNXZWJBc3NlbWJseUluc3RhbmNlPigp
KQorLy8gICAgLCB3ZWJBc3NlbWJseU1lbW9yeUhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6
OkFyZ3M8SlNXZWJBc3NlbWJseU1lbW9yeT4oKSkKKy8vICAgICwgd2ViQXNzZW1ibHlNb2R1bGVI
ZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpBcmdzPEpTV2ViQXNzZW1ibHlNb2R1bGU+KCkp
CisvLyAgICAsIHdlYkFzc2VtYmx5TW9kdWxlUmVjb3JkSGVhcENlbGxUeXBlKElzb0hlYXBDZWxs
VHlwZTo6QXJnczxXZWJBc3NlbWJseU1vZHVsZVJlY29yZD4oKSkKKy8vICAgICwgd2ViQXNzZW1i
bHlUYWJsZUhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OkFyZ3M8SlNXZWJBc3NlbWJseVRh
YmxlPigpKQorLy8gICAgLCB3ZWJBc3NlbWJseVRhZ0hlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5
cGU6OkFyZ3M8SlNXZWJBc3NlbWJseVRhZz4oKSkKKyNlbmRpZgorCisgICAgLy8gQWxpZ25lZE1l
bW9yeUFsbG9jYXRvcnMKKyAgICAsIGZhc3RNYWxsb2NBbGxvY2F0b3IobWFrZVVuaXF1ZTxGYXN0
TWFsbG9jQWxpZ25lZE1lbW9yeUFsbG9jYXRvcj4oKSkKKyAgICAsIHByaW1pdGl2ZUdpZ2FjYWdl
QWxsb2NhdG9yKG1ha2VVbmlxdWU8R2lnYWNhZ2VBbGlnbmVkTWVtb3J5QWxsb2NhdG9yPihHaWdh
Y2FnZTo6UHJpbWl0aXZlKSkKKyAgICAsIGpzVmFsdWVHaWdhY2FnZUFsbG9jYXRvcihtYWtlVW5p
cXVlPEdpZ2FjYWdlQWxpZ25lZE1lbW9yeUFsbG9jYXRvcj4oR2lnYWNhZ2U6OkpTVmFsdWUpKQor
CisgICAgLy8gU3Vic3BhY2VzCisgICAgLCBwcmltaXRpdmVHaWdhY2FnZUF1eGlsaWFyeVNwYWNl
KCJQcmltaXRpdmUgR2lnYWNhZ2UgQXV4aWxpYXJ5IiwgKnRoaXMsIGF1eGlsaWFyeUhlYXBDZWxs
VHlwZSwgcHJpbWl0aXZlR2lnYWNhZ2VBbGxvY2F0b3IuZ2V0KCkpIC8vIEhhc2g6MHgzZTdjZDc2
MgorICAgICwganNWYWx1ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UoIkpTVmFsdWUgR2lnYWNhZ2Ug
QXV4aWxpYXJ5IiwgKnRoaXMsIGF1eGlsaWFyeUhlYXBDZWxsVHlwZSwganNWYWx1ZUdpZ2FjYWdl
QWxsb2NhdG9yLmdldCgpKSAvLyBIYXNoOjB4MjQxZTk0NgorICAgICwgaW1tdXRhYmxlQnV0dGVy
Zmx5SlNWYWx1ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UoIkltbXV0YWJsZUJ1dHRlcmZseSBHaWdh
Y2FnZSBKU0NlbGxXaXRoSW5kZXhpbmdIZWFkZXIiLCAqdGhpcywgaW1tdXRhYmxlQnV0dGVyZmx5
SGVhcENlbGxUeXBlLCBqc1ZhbHVlR2lnYWNhZ2VBbGxvY2F0b3IuZ2V0KCkpIC8vIEhhc2g6MHg3
YTk0NTMwMAorICAgICwgY2VsbFNwYWNlKCJKU0NlbGwiLCAqdGhpcywgY2VsbEhlYXBDZWxsVHlw
ZSwgZmFzdE1hbGxvY0FsbG9jYXRvci5nZXQoKSkgLy8gSGFzaDoweGFkZmI1YTc5CisgICAgLCB2
YXJpYWJsZVNpemVkQ2VsbFNwYWNlKCJWYXJpYWJsZSBTaXplZCBKU0NlbGwiLCAqdGhpcywgY2Vs
bEhlYXBDZWxsVHlwZSwgZmFzdE1hbGxvY0FsbG9jYXRvci5nZXQoKSkgLy8gSGFzaDoweGJjZDc2
OWNjCisgICAgLCBkZXN0cnVjdGlibGVPYmplY3RTcGFjZSgiSlNEZXN0cnVjdGlibGVPYmplY3Qi
LCAqdGhpcywgZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLCBmYXN0TWFsbG9jQWxsb2Nh
dG9yLmdldCgpKSAvLyBIYXNoOjB4NGY1ZWQ3YTkKKyAgICAsIGFycmF5U3BhY2UgSVNPX1NVQlNQ
QUNFX0lOSVQoKnRoaXMsIGNlbGxIZWFwQ2VsbFR5cGUsIEpTQXJyYXkpCisgICAgLCBiaWdJbnRT
cGFjZSBJU09fU1VCU1BBQ0VfSU5JVCgqdGhpcywgY2VsbEhlYXBDZWxsVHlwZSwgSlNCaWdJbnQp
CisgICAgLCBjYWxsZWVTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVCgqdGhpcywgY2VsbEhlYXBDZWxs
VHlwZSwgSlNDYWxsZWUpCisgICAgLCBjbG9uZWRBcmd1bWVudHNTcGFjZSBJU09fU1VCU1BBQ0Vf
SU5JVCgqdGhpcywgY2VsbEhlYXBDZWxsVHlwZSwgQ2xvbmVkQXJndW1lbnRzKQorICAgICwgY3Vz
dG9tR2V0dGVyU2V0dGVyU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoKnRoaXMsIGNlbGxIZWFwQ2Vs
bFR5cGUsIEN1c3RvbUdldHRlclNldHRlcikKKyAgICAsIGRhdGVJbnN0YW5jZVNwYWNlIElTT19T
VUJTUEFDRV9JTklUKCp0aGlzLCBkYXRlSW5zdGFuY2VIZWFwQ2VsbFR5cGUsIERhdGVJbnN0YW5j
ZSkKKyAgICAsIGRvbUF0dHJpYnV0ZUdldHRlclNldHRlclNwYWNlIElTT19TVUJTUEFDRV9JTklU
KCp0aGlzLCBjZWxsSGVhcENlbGxUeXBlLCBET01BdHRyaWJ1dGVHZXR0ZXJTZXR0ZXIpCisgICAg
LCBleGNlcHRpb25TcGFjZSBJU09fU1VCU1BBQ0VfSU5JVCgqdGhpcywgZGVzdHJ1Y3RpYmxlQ2Vs
bEhlYXBDZWxsVHlwZSwgRXhjZXB0aW9uKQorICAgICwgZXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRn
ZVNwYWNlIElTT19TVUJTUEFDRV9JTklUKCp0aGlzLCBjZWxsSGVhcENlbGxUeXBlLCBFeGVjdXRh
YmxlVG9Db2RlQmxvY2tFZGdlKSAvLyBIYXNoOjB4N2I3MzBiMjAKKyAgICAsIGZ1bmN0aW9uU3Bh
Y2UgSVNPX1NVQlNQQUNFX0lOSVQoKnRoaXMsIGNlbGxIZWFwQ2VsbFR5cGUsIEpTRnVuY3Rpb24p
IC8vIEhhc2g6MHg4MDBmY2E3MgorICAgICwgZ2V0dGVyU2V0dGVyU3BhY2UgSVNPX1NVQlNQQUNF
X0lOSVQoKnRoaXMsIGNlbGxIZWFwQ2VsbFR5cGUsIEdldHRlclNldHRlcikKKyAgICAsIGdsb2Jh
bExleGljYWxFbnZpcm9ubWVudFNwYWNlIElTT19TVUJTUEFDRV9JTklUKCp0aGlzLCBnbG9iYWxM
ZXhpY2FsRW52aXJvbm1lbnRIZWFwQ2VsbFR5cGUsIEpTR2xvYmFsTGV4aWNhbEVudmlyb25tZW50
KQorICAgICwgaW50ZXJuYWxGdW5jdGlvblNwYWNlIElTT19TVUJTUEFDRV9JTklUKCp0aGlzLCBj
ZWxsSGVhcENlbGxUeXBlLCBJbnRlcm5hbEZ1bmN0aW9uKSAvLyBIYXNoOjB4Zjg0NWM0NjQKKyAg
ICAsIGpzUHJveHlTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVCgqdGhpcywgY2VsbEhlYXBDZWxsVHlw
ZSwgSlNQcm94eSkKKyAgICAsIG5hdGl2ZUV4ZWN1dGFibGVTcGFjZSBJU09fU1VCU1BBQ0VfSU5J
VCgqdGhpcywgZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZSwgTmF0aXZlRXhlY3V0YWJsZSkg
Ly8gSGFzaDoweDY3NTY3Zjk1CisgICAgLCBudW1iZXJPYmplY3RTcGFjZSBJU09fU1VCU1BBQ0Vf
SU5JVCgqdGhpcywgY2VsbEhlYXBDZWxsVHlwZSwgTnVtYmVyT2JqZWN0KQorICAgICwgcGxhaW5P
YmplY3RTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVCgqdGhpcywgY2VsbEhlYXBDZWxsVHlwZSwgSlNO
b25GaW5hbE9iamVjdCkgLy8gTWFpbmx5IHVzZWQgZm9yIHByb3RvdHlwZXMuCisgICAgLCBwcm9t
aXNlU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoKnRoaXMsIGNlbGxIZWFwQ2VsbFR5cGUsIEpTUHJv
bWlzZSkKKyAgICAsIHByb3BlcnR5TmFtZUVudW1lcmF0b3JTcGFjZSBJU09fU1VCU1BBQ0VfSU5J
VCgqdGhpcywgY2VsbEhlYXBDZWxsVHlwZSwgSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yKQorICAg
ICwgcHJvcGVydHlUYWJsZVNwYWNlIElTT19TVUJTUEFDRV9JTklUKCp0aGlzLCBkZXN0cnVjdGli
bGVDZWxsSGVhcENlbGxUeXBlLCBQcm9wZXJ0eVRhYmxlKSAvLyBIYXNoOjB4YzZiYzlmMTIKKyAg
ICAsIHJlZ0V4cFNwYWNlIElTT19TVUJTUEFDRV9JTklUKCp0aGlzLCBkZXN0cnVjdGlibGVDZWxs
SGVhcENlbGxUeXBlLCBSZWdFeHApCisgICAgLCByZWdFeHBPYmplY3RTcGFjZSBJU09fU1VCU1BB
Q0VfSU5JVCgqdGhpcywgY2VsbEhlYXBDZWxsVHlwZSwgUmVnRXhwT2JqZWN0KQorICAgICwgcm9w
ZVN0cmluZ1NwYWNlIElTT19TVUJTUEFDRV9JTklUKCp0aGlzLCBzdHJpbmdIZWFwQ2VsbFR5cGUs
IEpTUm9wZVN0cmluZykKKyAgICAsIHNjb3BlZEFyZ3VtZW50c1NwYWNlIElTT19TVUJTUEFDRV9J
TklUKCp0aGlzLCBjZWxsSGVhcENlbGxUeXBlLCBTY29wZWRBcmd1bWVudHMpCisgICAgLCBzcGFy
c2VBcnJheVZhbHVlTWFwU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoKnRoaXMsIGRlc3RydWN0aWJs
ZUNlbGxIZWFwQ2VsbFR5cGUsIFNwYXJzZUFycmF5VmFsdWVNYXApCisgICAgLCBzdHJpbmdTcGFj
ZSBJU09fU1VCU1BBQ0VfSU5JVCgqdGhpcywgc3RyaW5nSGVhcENlbGxUeXBlLCBKU1N0cmluZykg
Ly8gSGFzaDoweDkwY2Y3NThmCisgICAgLCBzdHJpbmdPYmplY3RTcGFjZSBJU09fU1VCU1BBQ0Vf
SU5JVCgqdGhpcywgY2VsbEhlYXBDZWxsVHlwZSwgU3RyaW5nT2JqZWN0KQorICAgICwgc3RydWN0
dXJlQ2hhaW5TcGFjZSBJU09fU1VCU1BBQ0VfSU5JVCgqdGhpcywgY2VsbEhlYXBDZWxsVHlwZSwg
U3RydWN0dXJlQ2hhaW4pCisgICAgLCBzdHJ1Y3R1cmVSYXJlRGF0YVNwYWNlIElTT19TVUJTUEFD
RV9JTklUKCp0aGlzLCBkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlLCBTdHJ1Y3R1cmVSYXJl
RGF0YSkgLy8gSGFzaDoweGFjYTRlNjJkCisgICAgLCBzdHJ1Y3R1cmVTcGFjZSBJU09fU1VCU1BB
Q0VfSU5JVCgqdGhpcywgZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZSwgU3RydWN0dXJlKSAv
LyBIYXNoOjB4MWYxYmNkY2EKKyAgICAsIGJyYW5kZWRTdHJ1Y3R1cmVTcGFjZSBJU09fU1VCU1BB
Q0VfSU5JVCgqdGhpcywgZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZSwgQnJhbmRlZFN0cnVj
dHVyZSkKKyAgICAsIHN5bWJvbFRhYmxlU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoKnRoaXMsIGRl
c3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUsIFN5bWJvbFRhYmxlKSAvLyBIYXNoOjB4YzUyMTVh
ZmQKKyAgICAsIGV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2VzV2l0aENvbnN0cmFpbnRzKGV4ZWN1
dGFibGVUb0NvZGVCbG9ja0VkZ2VTcGFjZSkKKyAgICAsIGV4ZWN1dGFibGVUb0NvZGVCbG9ja0Vk
Z2VzV2l0aEZpbmFsaXplcnMoZXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZVNwYWNlKQorICAgICwg
Y29kZUJsb2NrU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoKnRoaXMsIGRlc3RydWN0aWJsZUNlbGxI
ZWFwQ2VsbFR5cGUsIENvZGVCbG9jaykgLy8gSGFzaDoweDc3ZTY2ZWM5CisgICAgLCBmdW5jdGlv
bkV4ZWN1dGFibGVTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVCgqdGhpcywgZGVzdHJ1Y3RpYmxlQ2Vs
bEhlYXBDZWxsVHlwZSwgRnVuY3Rpb25FeGVjdXRhYmxlKSAvLyBIYXNoOjB4NWQxNThmMworICAg
ICwgcHJvZ3JhbUV4ZWN1dGFibGVTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVCgqdGhpcywgZGVzdHJ1
Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZSwgUHJvZ3JhbUV4ZWN1dGFibGUpIC8vIEhhc2g6MHg1Mjdj
NzdlNworICAgICwgdW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGVTcGFjZSBJU09fU1VCU1BBQ0Vf
SU5JVCgqdGhpcywgZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZSwgVW5saW5rZWRGdW5jdGlv
bkV4ZWN1dGFibGUpIC8vIEhhc2g6MHhmNmI4MjhkOQorCiB7CiAgICAgbV93b3JsZFN0YXRlLnN0
b3JlKDApOwogCkBAIC01NzksMzEgKzc4MywzMSBAQCB2b2lkIEhlYXA6OmZpbmFsaXplVW5jb25k
aXRpb25hbEZpbmFsaXplCiB7CiAgICAgVk0mIHZtID0gdGhpcy0+dm0oKTsKICAgICB2bS5idWls
dGluRXhlY3V0YWJsZXMoKS0+ZmluYWxpemVVbmNvbmRpdGlvbmFsbHkoKTsKLSAgICBmaW5hbGl6
ZU1hcmtlZFVuY29uZGl0aW9uYWxGaW5hbGl6ZXJzPEZ1bmN0aW9uRXhlY3V0YWJsZT4odm0uZnVu
Y3Rpb25FeGVjdXRhYmxlU3BhY2Uuc3BhY2UpOwotICAgIGZpbmFsaXplTWFya2VkVW5jb25kaXRp
b25hbEZpbmFsaXplcnM8U3ltYm9sVGFibGU+KHZtLnN5bWJvbFRhYmxlU3BhY2UpOwotICAgIGZp
bmFsaXplTWFya2VkVW5jb25kaXRpb25hbEZpbmFsaXplcnM8RXhlY3V0YWJsZVRvQ29kZUJsb2Nr
RWRnZT4odm0uZXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZXNXaXRoRmluYWxpemVycyk7IC8vIFdl
IHJ1biB0aGlzIGJlZm9yZSBDb2RlQmxvY2sncyB1bmNvbmRpdGlvbmFsIGZpbmFsaXplciBzaW5j
ZSBDb2RlQmxvY2sgbG9va3MgYXQgdGhlIG93bmVyIGV4ZWN1dGFibGUncyBpbnN0YWxsZWQgQ29k
ZUJsb2NrIGluIGl0cyBmaW5hbGl6ZVVuY29uZGl0aW9uYWxseS4KLSAgICB2bS5mb3JFYWNoQ29k
ZUJsb2NrU3BhY2UoCisgICAgZmluYWxpemVNYXJrZWRVbmNvbmRpdGlvbmFsRmluYWxpemVyczxG
dW5jdGlvbkV4ZWN1dGFibGU+KGZ1bmN0aW9uRXhlY3V0YWJsZVNwYWNlLnNwYWNlKTsKKyAgICBm
aW5hbGl6ZU1hcmtlZFVuY29uZGl0aW9uYWxGaW5hbGl6ZXJzPFN5bWJvbFRhYmxlPihzeW1ib2xU
YWJsZVNwYWNlKTsKKyAgICBmaW5hbGl6ZU1hcmtlZFVuY29uZGl0aW9uYWxGaW5hbGl6ZXJzPEV4
ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2U+KGV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2VzV2l0aEZp
bmFsaXplcnMpOyAvLyBXZSBydW4gdGhpcyBiZWZvcmUgQ29kZUJsb2NrJ3MgdW5jb25kaXRpb25h
bCBmaW5hbGl6ZXIgc2luY2UgQ29kZUJsb2NrIGxvb2tzIGF0IHRoZSBvd25lciBleGVjdXRhYmxl
J3MgaW5zdGFsbGVkIENvZGVCbG9jayBpbiBpdHMgZmluYWxpemVVbmNvbmRpdGlvbmFsbHkuCisg
ICAgZm9yRWFjaENvZGVCbG9ja1NwYWNlKAogICAgICAgICBbJl0gKGF1dG8mIHNwYWNlKSB7CiAg
ICAgICAgICAgICB0aGlzLT5maW5hbGl6ZU1hcmtlZFVuY29uZGl0aW9uYWxGaW5hbGl6ZXJzPENv
ZGVCbG9jaz4oc3BhY2Uuc2V0KTsKICAgICAgICAgfSk7Ci0gICAgZmluYWxpemVNYXJrZWRVbmNv
bmRpdGlvbmFsRmluYWxpemVyczxTdHJ1Y3R1cmVSYXJlRGF0YT4odm0uc3RydWN0dXJlUmFyZURh
dGFTcGFjZSk7Ci0gICAgZmluYWxpemVNYXJrZWRVbmNvbmRpdGlvbmFsRmluYWxpemVyczxVbmxp
bmtlZEZ1bmN0aW9uRXhlY3V0YWJsZT4odm0udW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGVTcGFj
ZS5zZXQpOwotICAgIGlmICh2bS5tX3dlYWtTZXRTcGFjZSkKLSAgICAgICAgZmluYWxpemVNYXJr
ZWRVbmNvbmRpdGlvbmFsRmluYWxpemVyczxKU1dlYWtTZXQ+KCp2bS5tX3dlYWtTZXRTcGFjZSk7
Ci0gICAgaWYgKHZtLm1fd2Vha01hcFNwYWNlKQotICAgICAgICBmaW5hbGl6ZU1hcmtlZFVuY29u
ZGl0aW9uYWxGaW5hbGl6ZXJzPEpTV2Vha01hcD4oKnZtLm1fd2Vha01hcFNwYWNlKTsKLSAgICBp
ZiAodm0ubV93ZWFrT2JqZWN0UmVmU3BhY2UpCi0gICAgICAgIGZpbmFsaXplTWFya2VkVW5jb25k
aXRpb25hbEZpbmFsaXplcnM8SlNXZWFrT2JqZWN0UmVmPigqdm0ubV93ZWFrT2JqZWN0UmVmU3Bh
Y2UpOwotICAgIGlmICh2bS5tX2Vycm9ySW5zdGFuY2VTcGFjZSkKLSAgICAgICAgZmluYWxpemVN
YXJrZWRVbmNvbmRpdGlvbmFsRmluYWxpemVyczxFcnJvckluc3RhbmNlPigqdm0ubV9lcnJvcklu
c3RhbmNlU3BhY2UpOworICAgIGZpbmFsaXplTWFya2VkVW5jb25kaXRpb25hbEZpbmFsaXplcnM8
U3RydWN0dXJlUmFyZURhdGE+KHN0cnVjdHVyZVJhcmVEYXRhU3BhY2UpOworICAgIGZpbmFsaXpl
TWFya2VkVW5jb25kaXRpb25hbEZpbmFsaXplcnM8VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU+
KHVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlU3BhY2Uuc2V0KTsKKyAgICBpZiAobV93ZWFrU2V0
U3BhY2UpCisgICAgICAgIGZpbmFsaXplTWFya2VkVW5jb25kaXRpb25hbEZpbmFsaXplcnM8SlNX
ZWFrU2V0PigqbV93ZWFrU2V0U3BhY2UpOworICAgIGlmIChtX3dlYWtNYXBTcGFjZSkKKyAgICAg
ICAgZmluYWxpemVNYXJrZWRVbmNvbmRpdGlvbmFsRmluYWxpemVyczxKU1dlYWtNYXA+KCptX3dl
YWtNYXBTcGFjZSk7CisgICAgaWYgKG1fd2Vha09iamVjdFJlZlNwYWNlKQorICAgICAgICBmaW5h
bGl6ZU1hcmtlZFVuY29uZGl0aW9uYWxGaW5hbGl6ZXJzPEpTV2Vha09iamVjdFJlZj4oKm1fd2Vh
a09iamVjdFJlZlNwYWNlKTsKKyAgICBpZiAobV9lcnJvckluc3RhbmNlU3BhY2UpCisgICAgICAg
IGZpbmFsaXplTWFya2VkVW5jb25kaXRpb25hbEZpbmFsaXplcnM8RXJyb3JJbnN0YW5jZT4oKm1f
ZXJyb3JJbnN0YW5jZVNwYWNlKTsKIAogICAgIC8vIEZpbmFsaXphdGlvblJlZ2lzdHJpZXMgY3Vy
cmVudGx5IHJlbHkgb24gc2VyaWFsIGZpbmFsaXphdGlvbiBiZWNhdXNlIHRoZXkgY2FuIHBvc3Qg
dGFza3MgdG8gdGhlIGRlZmVycmVkV29ya1RpbWVyLCB3aGljaCBub3JtYWxseSBleHBlY3RzIHRh
c2tzIHRvIG9ubHkgYmUgcG9zdGVkIGJ5IHRoZSBBUEkgbG9jayBob2xkZXIuCi0gICAgaWYgKHZt
Lm1fZmluYWxpemF0aW9uUmVnaXN0cnlTcGFjZSkKLSAgICAgICAgZmluYWxpemVNYXJrZWRVbmNv
bmRpdGlvbmFsRmluYWxpemVyczxKU0ZpbmFsaXphdGlvblJlZ2lzdHJ5Pigqdm0ubV9maW5hbGl6
YXRpb25SZWdpc3RyeVNwYWNlKTsKKyAgICBpZiAobV9maW5hbGl6YXRpb25SZWdpc3RyeVNwYWNl
KQorICAgICAgICBmaW5hbGl6ZU1hcmtlZFVuY29uZGl0aW9uYWxGaW5hbGl6ZXJzPEpTRmluYWxp
emF0aW9uUmVnaXN0cnk+KCptX2ZpbmFsaXphdGlvblJlZ2lzdHJ5U3BhY2UpOwogCiAjaWYgRU5B
QkxFKFdFQkFTU0VNQkxZKQotICAgIGlmICh2bS5tX3dlYkFzc2VtYmx5Q29kZUJsb2NrU3BhY2Up
Ci0gICAgICAgIGZpbmFsaXplTWFya2VkVW5jb25kaXRpb25hbEZpbmFsaXplcnM8SlNXZWJBc3Nl
bWJseUNvZGVCbG9jaz4oKnZtLm1fd2ViQXNzZW1ibHlDb2RlQmxvY2tTcGFjZSk7CisgICAgaWYg
KG1fd2ViQXNzZW1ibHlDb2RlQmxvY2tTcGFjZSkKKyAgICAgICAgZmluYWxpemVNYXJrZWRVbmNv
bmRpdGlvbmFsRmluYWxpemVyczxKU1dlYkFzc2VtYmx5Q29kZUJsb2NrPigqbV93ZWJBc3NlbWJs
eUNvZGVCbG9ja1NwYWNlKTsKICNlbmRpZgogfQogCkBAIC05MDUsNyArMTEwOSw3IEBAIHZvaWQg
SGVhcDo6ZGVsZXRlQWxsQ29kZUJsb2NrcyhEZWxldGVBbGwKIAogICAgIGNvbXBsZXRlQWxsSklU
UGxhbnMoKTsKIAotICAgIHZtLmZvckVhY2hTY3JpcHRFeGVjdXRhYmxlU3BhY2UoCisgICAgZm9y
RWFjaFNjcmlwdEV4ZWN1dGFibGVTcGFjZSgKICAgICAgICAgWyZdIChhdXRvJiBzcGFjZUFuZFNl
dCkgewogICAgICAgICAgICAgSGVhcEl0ZXJhdGlvblNjb3BlIGhlYXBJdGVyYXRpb25TY29wZSgq
dGhpcyk7CiAgICAgICAgICAgICBhdXRvJiBzZXQgPSBzcGFjZUFuZFNldC5zZXQ7CkBAIC05MjQs
OCArMTEyOCw4IEBAIHZvaWQgSGVhcDo6ZGVsZXRlQWxsQ29kZUJsb2NrcyhEZWxldGVBbGwKICAg
ICAgICAgLy8gcG9pbnRzIGludG8gYSBDb2RlQmxvY2sgdGhhdCBjb3VsZCBiZSBkZWFkLiBUaGUg
SUMgd2lsbCBzdGlsbCBzdWNjZWVkIGJlY2F1c2UKICAgICAgICAgLy8gaXQgdXNlcyBhIGNhbGxl
ZSBjaGVjaywgYnV0IHRoZW4gaXQgd2lsbCBjYWxsIGludG8gZGVhZCBjb2RlLgogICAgICAgICBI
ZWFwSXRlcmF0aW9uU2NvcGUgaGVhcEl0ZXJhdGlvblNjb3BlKCp0aGlzKTsKLSAgICAgICAgaWYg
KHZtLm1fd2ViQXNzZW1ibHlDb2RlQmxvY2tTcGFjZSkgewotICAgICAgICAgICAgdm0ubV93ZWJB
c3NlbWJseUNvZGVCbG9ja1NwYWNlLT5mb3JFYWNoTGl2ZUNlbGwoWyZdIChIZWFwQ2VsbCogY2Vs
bCwgSGVhcENlbGw6OktpbmQga2luZCkgeworICAgICAgICBpZiAobV93ZWJBc3NlbWJseUNvZGVC
bG9ja1NwYWNlKSB7CisgICAgICAgICAgICBtX3dlYkFzc2VtYmx5Q29kZUJsb2NrU3BhY2UtPmZv
ckVhY2hMaXZlQ2VsbChbJl0gKEhlYXBDZWxsKiBjZWxsLCBIZWFwQ2VsbDo6S2luZCBraW5kKSB7
CiAgICAgICAgICAgICAgICAgQVNTRVJUX1VOVVNFRChraW5kLCBraW5kID09IEhlYXBDZWxsOjpK
U0NlbGwpOwogICAgICAgICAgICAgICAgIEpTV2ViQXNzZW1ibHlDb2RlQmxvY2sqIGNvZGVCbG9j
ayA9IHN0YXRpY19jYXN0PEpTV2ViQXNzZW1ibHlDb2RlQmxvY2sqPihjZWxsKTsKICAgICAgICAg
ICAgICAgICBjb2RlQmxvY2stPmNsZWFySlNDYWxsSUNzKHZtKTsKQEAgLTk0Niw3ICsxMTUwLDcg
QEAgdm9pZCBIZWFwOjpkZWxldGVBbGxVbmxpbmtlZENvZGVCbG9ja3MoRAogICAgIFJFTEVBU0Vf
QVNTRVJUKCFtX2NvbGxlY3Rpb25TY29wZSk7CiAKICAgICBIZWFwSXRlcmF0aW9uU2NvcGUgaGVh
cEl0ZXJhdGlvblNjb3BlKCp0aGlzKTsKLSAgICB2bS51bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJs
ZVNwYWNlLnNldC5mb3JFYWNoTGl2ZUNlbGwoCisgICAgdW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFi
bGVTcGFjZS5zZXQuZm9yRWFjaExpdmVDZWxsKAogICAgICAgICBbJl0gKEhlYXBDZWxsKiBjZWxs
LCBIZWFwQ2VsbDo6S2luZCkgewogICAgICAgICAgICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFi
bGUqIGV4ZWN1dGFibGUgPSBzdGF0aWNfY2FzdDxVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSo+
KGNlbGwpOwogICAgICAgICAgICAgZXhlY3V0YWJsZS0+Y2xlYXJDb2RlKHZtKTsKQEAgLTk1NSwx
MCArMTE1OSwxMCBAQCB2b2lkIEhlYXA6OmRlbGV0ZUFsbFVubGlua2VkQ29kZUJsb2NrcyhECiAK
IHZvaWQgSGVhcDo6ZGVsZXRlVW5tYXJrZWRDb21waWxlZENvZGUoKQogewotICAgIHZtKCkuZm9y
RWFjaFNjcmlwdEV4ZWN1dGFibGVTcGFjZShbXSAoYXV0byYgc3BhY2UpIHsgc3BhY2Uuc3BhY2Uu
c3dlZXAoKTsgfSk7CisgICAgZm9yRWFjaFNjcmlwdEV4ZWN1dGFibGVTcGFjZShbXSAoYXV0byYg
c3BhY2UpIHsgc3BhY2Uuc3BhY2Uuc3dlZXAzKCk7IH0pOwogICAgIC8vIFN3ZWVwaW5nIG11c3Qg
b2NjdXIgYmVmb3JlIGRlbGV0aW5nIHN0dWJzLCBvdGhlcndpc2UgdGhlIHN0dWJzIG1pZ2h0IHN0
aWxsIHRoaW5rIHRoZXkncmUgYWxpdmUgYXMgdGhleSBnZXQgZGVsZXRlZC4KICAgICAvLyBBbmQg
Q29kZUJsb2NrIGRlc3RydWN0b3IgaXMgYXNzdW1pbmcgdGhhdCBDb2RlQmxvY2sgZ2V0cyBkZXN0
cm95ZWQgYmVmb3JlIFVubGlua2VkQ29kZUJsb2NrIGdldHMgZGVzdHJveWVkLgotICAgIHZtKCku
Zm9yRWFjaENvZGVCbG9ja1NwYWNlKFtdIChhdXRvJiBzcGFjZSkgeyBzcGFjZS5zcGFjZS5zd2Vl
cCgpOyB9KTsKKyAgICBmb3JFYWNoQ29kZUJsb2NrU3BhY2UoW10gKGF1dG8mIHNwYWNlKSB7IHNw
YWNlLnNwYWNlLnN3ZWVwMygpOyB9KTsKICAgICBtX2ppdFN0dWJSb3V0aW5lcy0+ZGVsZXRlVW5t
YXJrZWRKZXR0aXNvbmVkU3R1YlJvdXRpbmVzKCk7CiB9CiAKQEAgLTIxMDMsOCArMjMwNyw4IEBA
IHZvaWQgSGVhcDo6c3dlZXBJbkZpbmFsaXplKCkKICAgICBtX29iamVjdFNwYWNlLnN3ZWVwUHJl
Y2lzZUFsbG9jYXRpb25zKCk7CiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQogICAgIC8vIFdlIGhv
bGQgb250byBhIGxvdCBvZiBtZW1vcnksIHNvIGl0IG1ha2VzIGEgbG90IG9mIHNlbnNlIHRvIGJl
IHN3ZXB0IGVhZ2VybHkuCi0gICAgaWYgKHZtKCkubV93ZWJBc3NlbWJseU1lbW9yeVNwYWNlKQot
ICAgICAgICB2bSgpLm1fd2ViQXNzZW1ibHlNZW1vcnlTcGFjZS0+c3dlZXAoKTsKKyAgICBpZiAo
bV93ZWJBc3NlbWJseU1lbW9yeVNwYWNlKQorICAgICAgICBtX3dlYkFzc2VtYmx5TWVtb3J5U3Bh
Y2UtPnN3ZWVwMygpOwogI2VuZGlmCiB9CiAKQEAgLTI4MDUsNyArMzAwOSw3IEBAIHZvaWQgSGVh
cDo6YWRkQ29yZUNvbnN0cmFpbnRzKCkKICAgICAgICAgIk8iLCAiT3V0cHV0IiwKICAgICAgICAg
TUFLRV9NQVJLSU5HX0NPTlNUUkFJTlRfRVhFQ1VUT1JfUEFJUigoW10gKGF1dG8mIHZpc2l0b3Ip
IHsKICAgICAgICAgICAgIHVzaW5nIFZpc2l0b3IgPSBkZWNsdHlwZSh2aXNpdG9yKTsKLSAgICAg
ICAgICAgIFZNJiB2bSA9IHZpc2l0b3Iudm0oKTsKKyAgICAgICAgICAgIEhlYXAqIGhlYXAgPSB2
aXNpdG9yLmhlYXAoKTsKIAogICAgICAgICAgICAgLy8gVGhlIGB2aXNpdG9yMmAgYXJndW1lbnQg
aXMgc3RyYW5nZWx5IG5hbWVkIGJlY2F1c2UgdGhlIFdpbkNhaXJvIHBvcnQKICAgICAgICAgICAg
IC8vIGdldHMgY29uZnVzZWQgIGFuZCB0aGlua3Mgd2UncmUgdHJ5aW5nIHRvIGNhcHR1cmUgdGhl
IG91dGVyIHZpc2l0b3IKQEAgLTI4MjQsMTEgKzMwMjgsMTEgQEAgdm9pZCBIZWFwOjphZGRDb3Jl
Q29uc3RyYWludHMoKQogCiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgU2V0Um9vdE1h
cmtSZWFzb25TY29wZSByb290U2NvcGUodmlzaXRvciwgUm9vdE1hcmtSZWFzb246OkV4ZWN1dGFi
bGVUb0NvZGVCbG9ja0VkZ2VzKTsKLSAgICAgICAgICAgICAgICBhZGQodm0uZXhlY3V0YWJsZVRv
Q29kZUJsb2NrRWRnZXNXaXRoQ29uc3RyYWludHMpOworICAgICAgICAgICAgICAgIGFkZChoZWFw
LT5leGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlc1dpdGhDb25zdHJhaW50cyk7CiAgICAgICAgICAg
ICB9Ci0gICAgICAgICAgICBpZiAodm0ubV93ZWFrTWFwU3BhY2UpIHsKKyAgICAgICAgICAgIGlm
IChoZWFwLT5tX3dlYWtNYXBTcGFjZSkgewogICAgICAgICAgICAgICAgIFNldFJvb3RNYXJrUmVh
c29uU2NvcGUgcm9vdFNjb3BlKHZpc2l0b3IsIFJvb3RNYXJrUmVhc29uOjpXZWFrTWFwU3BhY2Up
OwotICAgICAgICAgICAgICAgIGFkZCgqdm0ubV93ZWFrTWFwU3BhY2UpOworICAgICAgICAgICAg
ICAgIGFkZCgqaGVhcC0+bV93ZWFrTWFwU3BhY2UpOwogICAgICAgICAgICAgfQogICAgICAgICB9
KSksCiAgICAgICAgIENvbnN0cmFpbnRWb2xhdGlsaXR5OjpHcmV5ZWRCeU1hcmtpbmcsCkBAIC0z
MDYyLDQgKzMyNjYsMTM1IEBAIHZvaWQgSGVhcDo6dmVyaWZ5R0MoKQogICAgIG1fdmVyaWZpZXJT
bG90VmlzaXRvciA9IG51bGxwdHI7CiB9CiAKKyNkZWZpbmUgRFlOQU1JQ19JU09fU1VCU1BBQ0Vf
REVGSU5FX01FTUJFUl9TTE9XKG5hbWUsIGhlYXBDZWxsVHlwZSwgdHlwZSkgXAorICAgIElzb1N1
YnNwYWNlKiBIZWFwOjpuYW1lIyNTbG93KCkgXAorICAgIHsgXAorICAgICAgICBBU1NFUlQoIW1f
IyNuYW1lKTsgXAorICAgICAgICBhdXRvIHNwYWNlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4g
SVNPX1NVQlNQQUNFX0lOSVQoKnRoaXMsIGhlYXBDZWxsVHlwZSwgdHlwZSk7IFwKKyAgICAgICAg
V1RGOjpzdG9yZVN0b3JlRmVuY2UoKTsgXAorICAgICAgICBtXyMjbmFtZSA9IFdURk1vdmUoc3Bh
Y2UpOyBcCisgICAgICAgIHJldHVybiBtXyMjbmFtZS5nZXQoKTsgXAorICAgIH0KKworCitEWU5B
TUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coYXBpR2xvYmFsT2JqZWN0U3BhY2Us
IGFwaUdsb2JhbE9iamVjdEhlYXBDZWxsVHlwZSwgSlNBUElHbG9iYWxPYmplY3QpCitEWU5BTUlD
X0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coYXBpVmFsdWVXcmFwcGVyU3BhY2UsIGNl
bGxIZWFwQ2VsbFR5cGUsIEpTQVBJVmFsdWVXcmFwcGVyKQorRFlOQU1JQ19JU09fU1VCU1BBQ0Vf
REVGSU5FX01FTUJFUl9TTE9XKGFycmF5QnVmZmVyU3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUsIEpT
QXJyYXlCdWZmZXIpCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coYXJy
YXlJdGVyYXRvclNwYWNlLCBjZWxsSGVhcENlbGxUeXBlLCBKU0FycmF5SXRlcmF0b3IpCitEWU5B
TUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coYXN5bmNHZW5lcmF0b3JTcGFjZSwg
Y2VsbEhlYXBDZWxsVHlwZSwgSlNBc3luY0dlbmVyYXRvcikKK0RZTkFNSUNfSVNPX1NVQlNQQUNF
X0RFRklORV9NRU1CRVJfU0xPVyhiaWdJbnQ2NEFycmF5U3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUs
IEpTQmlnSW50NjRBcnJheSkKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xP
VyhiaWdJbnRPYmplY3RTcGFjZSwgY2VsbEhlYXBDZWxsVHlwZSwgQmlnSW50T2JqZWN0KQorRFlO
QU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGJpZ1VpbnQ2NEFycmF5U3BhY2Us
IGNlbGxIZWFwQ2VsbFR5cGUsIEpTQmlnVWludDY0QXJyYXkpCitEWU5BTUlDX0lTT19TVUJTUEFD
RV9ERUZJTkVfTUVNQkVSX1NMT1coYm9vbGVhbk9iamVjdFNwYWNlLCBjZWxsSGVhcENlbGxUeXBl
LCBCb29sZWFuT2JqZWN0KQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9X
KGJvdW5kRnVuY3Rpb25TcGFjZSwgY2VsbEhlYXBDZWxsVHlwZSwgSlNCb3VuZEZ1bmN0aW9uKSAv
LyBIYXNoOjB4ZDc5MTZkNDEKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xP
VyhjYWxsYmFja0NvbnN0cnVjdG9yU3BhY2UsIGNhbGxiYWNrQ29uc3RydWN0b3JIZWFwQ2VsbFR5
cGUsIEpTQ2FsbGJhY2tDb25zdHJ1Y3RvcikKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9N
RU1CRVJfU0xPVyhjYWxsYmFja0dsb2JhbE9iamVjdFNwYWNlLCBjYWxsYmFja0dsb2JhbE9iamVj
dEhlYXBDZWxsVHlwZSwgSlNDYWxsYmFja09iamVjdDxKU0dsb2JhbE9iamVjdD4pCitEWU5BTUlD
X0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coY2FsbGJhY2tGdW5jdGlvblNwYWNlLCBj
ZWxsSGVhcENlbGxUeXBlLCBKU0NhbGxiYWNrRnVuY3Rpb24pIC8vIEhhc2g6MHhlNzY0OGViYwor
RFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGNhbGxiYWNrT2JqZWN0U3Bh
Y2UsIGNhbGxiYWNrT2JqZWN0SGVhcENlbGxUeXBlLCBKU0NhbGxiYWNrT2JqZWN0PEpTTm9uRmlu
YWxPYmplY3Q+KQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGN1c3Rv
bUdldHRlckZ1bmN0aW9uU3BhY2UsIGN1c3RvbUdldHRlckZ1bmN0aW9uSGVhcENlbGxUeXBlLCBK
U0N1c3RvbUdldHRlckZ1bmN0aW9uKQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJF
Ul9TTE9XKGN1c3RvbVNldHRlckZ1bmN0aW9uU3BhY2UsIGN1c3RvbVNldHRlckZ1bmN0aW9uSGVh
cENlbGxUeXBlLCBKU0N1c3RvbVNldHRlckZ1bmN0aW9uKQorRFlOQU1JQ19JU09fU1VCU1BBQ0Vf
REVGSU5FX01FTUJFUl9TTE9XKGRhdGFWaWV3U3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUsIEpTRGF0
YVZpZXcpCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coZGVidWdnZXJT
Y29wZVNwYWNlLCBjZWxsSGVhcENlbGxUeXBlLCBEZWJ1Z2dlclNjb3BlKQorRFlOQU1JQ19JU09f
U1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGVycm9ySW5zdGFuY2VTcGFjZSwgZXJyb3JJbnN0
YW5jZUhlYXBDZWxsVHlwZSwgRXJyb3JJbnN0YW5jZSkgLy8gSGFzaDoweDNmNDBkNGEKK0RZTkFN
SUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhmbG9hdDMyQXJyYXlTcGFjZSwgY2Vs
bEhlYXBDZWxsVHlwZSwgSlNGbG9hdDMyQXJyYXkpCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJ
TkVfTUVNQkVSX1NMT1coZmxvYXQ2NEFycmF5U3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUsIEpTRmxv
YXQ2NEFycmF5KQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGZ1bmN0
aW9uUmFyZURhdGFTcGFjZSwgZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZSwgRnVuY3Rpb25S
YXJlRGF0YSkKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhnZW5lcmF0
b3JTcGFjZSwgY2VsbEhlYXBDZWxsVHlwZSwgSlNHZW5lcmF0b3IpCitEWU5BTUlDX0lTT19TVUJT
UEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coZ2xvYmFsT2JqZWN0U3BhY2UsIGdsb2JhbE9iamVjdEhl
YXBDZWxsVHlwZSwgSlNHbG9iYWxPYmplY3QpCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVf
TUVNQkVSX1NMT1coaW5qZWN0ZWRTY3JpcHRIb3N0U3BhY2UsIGluamVjdGVkU2NyaXB0SG9zdFNw
YWNlSGVhcENlbGxUeXBlLCBJbnNwZWN0b3I6OkpTSW5qZWN0ZWRTY3JpcHRIb3N0KQorRFlOQU1J
Q19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGludDhBcnJheVNwYWNlLCBjZWxsSGVh
cENlbGxUeXBlLCBKU0ludDhBcnJheSkKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1C
RVJfU0xPVyhpbnQxNkFycmF5U3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUsIEpTSW50MTZBcnJheSkK
K0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhpbnQzMkFycmF5U3BhY2Us
IGNlbGxIZWFwQ2VsbFR5cGUsIEpTSW50MzJBcnJheSkKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RF
RklORV9NRU1CRVJfU0xPVyhqYXZhU2NyaXB0Q2FsbEZyYW1lU3BhY2UsIGphdmFTY3JpcHRDYWxs
RnJhbWVIZWFwQ2VsbFR5cGUsIEluc3BlY3Rvcjo6SlNKYXZhU2NyaXB0Q2FsbEZyYW1lKQorRFlO
QU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGpzTW9kdWxlUmVjb3JkU3BhY2Us
IGpzTW9kdWxlUmVjb3JkSGVhcENlbGxUeXBlLCBKU01vZHVsZVJlY29yZCkKK0RZTkFNSUNfSVNP
X1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhtYXBCdWNrZXRTcGFjZSwgY2VsbEhlYXBDZWxs
VHlwZSwgSlNNYXA6OkJ1Y2tldFR5cGUpCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVN
QkVSX1NMT1cobWFwSXRlcmF0b3JTcGFjZSwgY2VsbEhlYXBDZWxsVHlwZSwgSlNNYXBJdGVyYXRv
cikKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhtYXBTcGFjZSwgY2Vs
bEhlYXBDZWxsVHlwZSwgSlNNYXApCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVS
X1NMT1cobW9kdWxlTmFtZXNwYWNlT2JqZWN0U3BhY2UsIG1vZHVsZU5hbWVzcGFjZU9iamVjdEhl
YXBDZWxsVHlwZSwgSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QpCitEWU5BTUlDX0lTT19TVUJTUEFD
RV9ERUZJTkVfTUVNQkVSX1NMT1cobmF0aXZlU3RkRnVuY3Rpb25TcGFjZSwgbmF0aXZlU3RkRnVu
Y3Rpb25IZWFwQ2VsbFR5cGUsIEpTTmF0aXZlU3RkRnVuY3Rpb24pIC8vIEhhc2g6MHg3MGVkNjFl
NAorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHByb3h5T2JqZWN0U3Bh
Y2UsIGNlbGxIZWFwQ2VsbFR5cGUsIFByb3h5T2JqZWN0KQorRFlOQU1JQ19JU09fU1VCU1BBQ0Vf
REVGSU5FX01FTUJFUl9TTE9XKHByb3h5UmV2b2tlU3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUsIFBy
b3h5UmV2b2tlKSAvLyBIYXNoOjB4YjUwNmE5MzkKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklO
RV9NRU1CRVJfU0xPVyhzY29wZWRBcmd1bWVudHNUYWJsZVNwYWNlLCBkZXN0cnVjdGlibGVDZWxs
SGVhcENlbGxUeXBlLCBTY29wZWRBcmd1bWVudHNUYWJsZSkKK0RZTkFNSUNfSVNPX1NVQlNQQUNF
X0RFRklORV9NRU1CRVJfU0xPVyhzY3JpcHRGZXRjaFBhcmFtZXRlcnNTcGFjZSwgZGVzdHJ1Y3Rp
YmxlQ2VsbEhlYXBDZWxsVHlwZSwgSlNTY3JpcHRGZXRjaFBhcmFtZXRlcnMpCitEWU5BTUlDX0lT
T19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coc2NyaXB0RmV0Y2hlclNwYWNlLCBkZXN0cnVj
dGlibGVDZWxsSGVhcENlbGxUeXBlLCBKU1NjcmlwdEZldGNoZXIpCitEWU5BTUlDX0lTT19TVUJT
UEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coc2V0QnVja2V0U3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUs
IEpTU2V0OjpCdWNrZXRUeXBlKQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9T
TE9XKHNldEl0ZXJhdG9yU3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUsIEpTU2V0SXRlcmF0b3IpCitE
WU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coc2V0U3BhY2UsIGNlbGxIZWFw
Q2VsbFR5cGUsIEpTU2V0KQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9X
KHNoYWRvd1JlYWxtU3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUsIFNoYWRvd1JlYWxtT2JqZWN0KQor
RFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHN0cmljdEV2YWxBY3RpdmF0
aW9uU3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUsIFN0cmljdEV2YWxBY3RpdmF0aW9uKQorRFlOQU1J
Q19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHN0cmluZ0l0ZXJhdG9yU3BhY2UsIGNl
bGxIZWFwQ2VsbFR5cGUsIEpTU3RyaW5nSXRlcmF0b3IpCitEWU5BTUlDX0lTT19TVUJTUEFDRV9E
RUZJTkVfTUVNQkVSX1NMT1coc291cmNlQ29kZVNwYWNlLCBkZXN0cnVjdGlibGVDZWxsSGVhcENl
bGxUeXBlLCBKU1NvdXJjZUNvZGUpCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVS
X1NMT1coc3ltYm9sU3BhY2UsIGRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUsIFN5bWJvbCkK
K0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhzeW1ib2xPYmplY3RTcGFj
ZSwgY2VsbEhlYXBDZWxsVHlwZSwgU3ltYm9sT2JqZWN0KQorRFlOQU1JQ19JU09fU1VCU1BBQ0Vf
REVGSU5FX01FTUJFUl9TTE9XKHRlbXBsYXRlT2JqZWN0RGVzY3JpcHRvclNwYWNlLCBkZXN0cnVj
dGlibGVDZWxsSGVhcENlbGxUeXBlLCBKU1RlbXBsYXRlT2JqZWN0RGVzY3JpcHRvcikKK0RZTkFN
SUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh0ZW1wb3JhbENhbGVuZGFyU3BhY2Us
IGNlbGxIZWFwQ2VsbFR5cGUsIFRlbXBvcmFsQ2FsZW5kYXIpCitEWU5BTUlDX0lTT19TVUJTUEFD
RV9ERUZJTkVfTUVNQkVSX1NMT1codGVtcG9yYWxEdXJhdGlvblNwYWNlLCBjZWxsSGVhcENlbGxU
eXBlLCBUZW1wb3JhbER1cmF0aW9uKQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJF
Ul9TTE9XKHRlbXBvcmFsSW5zdGFudFNwYWNlLCBjZWxsSGVhcENlbGxUeXBlLCBUZW1wb3JhbElu
c3RhbnQpCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1codGVtcG9yYWxQ
bGFpblRpbWVTcGFjZSwgY2VsbEhlYXBDZWxsVHlwZSwgVGVtcG9yYWxQbGFpblRpbWUpCitEWU5B
TUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1codGVtcG9yYWxUaW1lWm9uZVNwYWNl
LCBjZWxsSGVhcENlbGxUeXBlLCBUZW1wb3JhbFRpbWVab25lKQorRFlOQU1JQ19JU09fU1VCU1BB
Q0VfREVGSU5FX01FTUJFUl9TTE9XKHVpbnQ4QXJyYXlTcGFjZSwgY2VsbEhlYXBDZWxsVHlwZSwg
SlNVaW50OEFycmF5KQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHVp
bnQ4Q2xhbXBlZEFycmF5U3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUsIEpTVWludDhDbGFtcGVkQXJy
YXkpCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1codWludDE2QXJyYXlT
cGFjZSwgY2VsbEhlYXBDZWxsVHlwZSwgSlNVaW50MTZBcnJheSkKK0RZTkFNSUNfSVNPX1NVQlNQ
QUNFX0RFRklORV9NRU1CRVJfU0xPVyh1aW50MzJBcnJheVNwYWNlLCBjZWxsSGVhcENlbGxUeXBl
LCBKU1VpbnQzMkFycmF5KQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9X
KHVubGlua2VkRXZhbENvZGVCbG9ja1NwYWNlLCBkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBl
LCBVbmxpbmtlZEV2YWxDb2RlQmxvY2spCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVN
QkVSX1NMT1codW5saW5rZWRGdW5jdGlvbkNvZGVCbG9ja1NwYWNlLCBkZXN0cnVjdGlibGVDZWxs
SGVhcENlbGxUeXBlLCBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKQorRFlOQU1JQ19JU09fU1VC
U1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9ja1Nw
YWNlLCBkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlLCBVbmxpbmtlZE1vZHVsZVByb2dyYW1D
b2RlQmxvY2spCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1codW5saW5r
ZWRQcm9ncmFtQ29kZUJsb2NrU3BhY2UsIGRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUsIFVu
bGlua2VkUHJvZ3JhbUNvZGVCbG9jaykKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1C
RVJfU0xPVyh3ZWFrTWFwU3BhY2UsIHdlYWtNYXBIZWFwQ2VsbFR5cGUsIEpTV2Vha01hcCkgLy8g
SGFzaDoweDY2MmIxMmEzCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1co
d2Vha1NldFNwYWNlLCB3ZWFrU2V0SGVhcENlbGxUeXBlLCBKU1dlYWtTZXQpIC8vIEhhc2g6MHg0
Yzc4MWIzMAorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHdlYWtPYmpl
Y3RSZWZTcGFjZSwgY2VsbEhlYXBDZWxsVHlwZSwgSlNXZWFrT2JqZWN0UmVmKSAvLyBIYXNoOjB4
OGVjNjhmMWYKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh3aXRoU2Nv
cGVTcGFjZSwgY2VsbEhlYXBDZWxsVHlwZSwgSlNXaXRoU2NvcGUpCitEWU5BTUlDX0lTT19TVUJT
UEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coZmluYWxpemF0aW9uUmVnaXN0cnlTcGFjZSwgZmluYWxp
emF0aW9uUmVnaXN0cnlDZWxsVHlwZSwgSlNGaW5hbGl6YXRpb25SZWdpc3RyeSkKKyNpZiBKU0Nf
T0JKQ19BUElfRU5BQkxFRAorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9X
KGFwaVdyYXBwZXJPYmplY3RTcGFjZSwgYXBpV3JhcHBlck9iamVjdEhlYXBDZWxsVHlwZSwgSlND
YWxsYmFja09iamVjdDxKU0FQSVdyYXBwZXJPYmplY3Q+KQorRFlOQU1JQ19JU09fU1VCU1BBQ0Vf
REVGSU5FX01FTUJFUl9TTE9XKG9iakNDYWxsYmFja0Z1bmN0aW9uU3BhY2UsIG9iakNDYWxsYmFj
a0Z1bmN0aW9uSGVhcENlbGxUeXBlLCBPYmpDQ2FsbGJhY2tGdW5jdGlvbikgLy8gSGFzaDoweDEw
ZjYxMGI4CisjZW5kaWYKKyNpZmRlZiBKU0NfR0xJQl9BUElfRU5BQkxFRAorRFlOQU1JQ19JU09f
U1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGFwaVdyYXBwZXJPYmplY3RTcGFjZSwgYXBpV3Jh
cHBlck9iamVjdEhlYXBDZWxsVHlwZSwgSlNDYWxsYmFja09iamVjdDxKU0FQSVdyYXBwZXJPYmpl
Y3Q+KQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGpzY0NhbGxiYWNr
RnVuY3Rpb25TcGFjZSwganNjQ2FsbGJhY2tGdW5jdGlvbkhlYXBDZWxsVHlwZSwgSlNDQ2FsbGJh
Y2tGdW5jdGlvbikKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhjYWxs
YmFja0FQSVdyYXBwZXJHbG9iYWxPYmplY3RTcGFjZSwgY2FsbGJhY2tBUElXcmFwcGVyR2xvYmFs
T2JqZWN0SGVhcENlbGxUeXBlLCBKU0NhbGxiYWNrT2JqZWN0PEpTQVBJV3JhcHBlckdsb2JhbE9i
amVjdD4pCisjZW5kaWYKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhp
bnRsQ29sbGF0b3JTcGFjZSwgaW50bENvbGxhdG9ySGVhcENlbGxUeXBlLCBJbnRsQ29sbGF0b3Ip
CitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coaW50bERhdGVUaW1lRm9y
bWF0U3BhY2UsIGludGxEYXRlVGltZUZvcm1hdEhlYXBDZWxsVHlwZSwgSW50bERhdGVUaW1lRm9y
bWF0KQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGludGxEaXNwbGF5
TmFtZXNTcGFjZSwgaW50bERpc3BsYXlOYW1lc0hlYXBDZWxsVHlwZSwgSW50bERpc3BsYXlOYW1l
cykKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhpbnRsTGlzdEZvcm1h
dFNwYWNlLCBpbnRsTGlzdEZvcm1hdEhlYXBDZWxsVHlwZSwgSW50bExpc3RGb3JtYXQpCitEWU5B
TUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coaW50bExvY2FsZVNwYWNlLCBpbnRs
TG9jYWxlSGVhcENlbGxUeXBlLCBJbnRsTG9jYWxlKQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVG
SU5FX01FTUJFUl9TTE9XKGludGxOdW1iZXJGb3JtYXRTcGFjZSwgaW50bE51bWJlckZvcm1hdEhl
YXBDZWxsVHlwZSwgSW50bE51bWJlckZvcm1hdCkKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklO
RV9NRU1CRVJfU0xPVyhpbnRsUGx1cmFsUnVsZXNTcGFjZSwgaW50bFBsdXJhbFJ1bGVzSGVhcENl
bGxUeXBlLCBJbnRsUGx1cmFsUnVsZXMpCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVN
QkVSX1NMT1coaW50bFJlbGF0aXZlVGltZUZvcm1hdFNwYWNlLCBpbnRsUmVsYXRpdmVUaW1lRm9y
bWF0SGVhcENlbGxUeXBlLCBJbnRsUmVsYXRpdmVUaW1lRm9ybWF0KQorRFlOQU1JQ19JU09fU1VC
U1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGludGxTZWdtZW50SXRlcmF0b3JTcGFjZSwgaW50bFNl
Z21lbnRJdGVyYXRvckhlYXBDZWxsVHlwZSwgSW50bFNlZ21lbnRJdGVyYXRvcikKK0RZTkFNSUNf
SVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhpbnRsU2VnbWVudGVyU3BhY2UsIGludGxT
ZWdtZW50ZXJIZWFwQ2VsbFR5cGUsIEludGxTZWdtZW50ZXIpCitEWU5BTUlDX0lTT19TVUJTUEFD
RV9ERUZJTkVfTUVNQkVSX1NMT1coaW50bFNlZ21lbnRzU3BhY2UsIGludGxTZWdtZW50c0hlYXBD
ZWxsVHlwZSwgSW50bFNlZ21lbnRzKQorI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKK0RZTkFNSUNf
SVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhqc1RvV2FzbUlDQ2FsbGVlU3BhY2UsIGNl
bGxIZWFwQ2VsbFR5cGUsIEpTVG9XYXNtSUNDYWxsZWUpCitEWU5BTUlDX0lTT19TVUJTUEFDRV9E
RUZJTkVfTUVNQkVSX1NMT1cod2ViQXNzZW1ibHlDb2RlQmxvY2tTcGFjZSwgd2ViQXNzZW1ibHlD
b2RlQmxvY2tIZWFwQ2VsbFR5cGUsIEpTV2ViQXNzZW1ibHlDb2RlQmxvY2spIC8vIEhhc2g6MHg5
YWQ5OTVjZAorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHdlYkFzc2Vt
Ymx5RXhjZXB0aW9uU3BhY2UsIHdlYkFzc2VtYmx5RXhjZXB0aW9uSGVhcENlbGxUeXBlLCBKU1dl
YkFzc2VtYmx5RXhjZXB0aW9uKQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9T
TE9XKHdlYkFzc2VtYmx5RnVuY3Rpb25TcGFjZSwgd2ViQXNzZW1ibHlGdW5jdGlvbkhlYXBDZWxs
VHlwZSwgV2ViQXNzZW1ibHlGdW5jdGlvbikgLy8gSGFzaDoweDhiN2MzMmRiCitEWU5BTUlDX0lT
T19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1cod2ViQXNzZW1ibHlHbG9iYWxTcGFjZSwgd2Vi
QXNzZW1ibHlHbG9iYWxIZWFwQ2VsbFR5cGUsIEpTV2ViQXNzZW1ibHlHbG9iYWwpCitEWU5BTUlD
X0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1cod2ViQXNzZW1ibHlJbnN0YW5jZVNwYWNl
LCB3ZWJBc3NlbWJseUluc3RhbmNlSGVhcENlbGxUeXBlLCBKU1dlYkFzc2VtYmx5SW5zdGFuY2Up
CitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1cod2ViQXNzZW1ibHlNZW1v
cnlTcGFjZSwgd2ViQXNzZW1ibHlNZW1vcnlIZWFwQ2VsbFR5cGUsIEpTV2ViQXNzZW1ibHlNZW1v
cnkpCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1cod2ViQXNzZW1ibHlN
b2R1bGVTcGFjZSwgd2ViQXNzZW1ibHlNb2R1bGVIZWFwQ2VsbFR5cGUsIEpTV2ViQXNzZW1ibHlN
b2R1bGUpCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1cod2ViQXNzZW1i
bHlNb2R1bGVSZWNvcmRTcGFjZSwgd2ViQXNzZW1ibHlNb2R1bGVSZWNvcmRIZWFwQ2VsbFR5cGUs
IFdlYkFzc2VtYmx5TW9kdWxlUmVjb3JkKQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01F
TUJFUl9TTE9XKHdlYkFzc2VtYmx5VGFibGVTcGFjZSwgd2ViQXNzZW1ibHlUYWJsZUhlYXBDZWxs
VHlwZSwgSlNXZWJBc3NlbWJseVRhYmxlKQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01F
TUJFUl9TTE9XKHdlYkFzc2VtYmx5VGFnU3BhY2UsIHdlYkFzc2VtYmx5VGFnSGVhcENlbGxUeXBl
LCBKU1dlYkFzc2VtYmx5VGFnKQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9T
TE9XKHdlYkFzc2VtYmx5V3JhcHBlckZ1bmN0aW9uU3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUsIFdl
YkFzc2VtYmx5V3JhcHBlckZ1bmN0aW9uKSAvLyBIYXNoOjB4ZDRhNWZmMDEKKyNlbmRpZgorCisj
dW5kZWYgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XCisKKyNkZWZpbmUg
RFlOQU1JQ19TUEFDRV9BTkRfU0VUX0RFRklORV9NRU1CRVJfU0xPVyhuYW1lLCBoZWFwQ2VsbFR5
cGUsIHR5cGUpIFwKKyAgICBJc29TdWJzcGFjZSogSGVhcDo6bmFtZSMjU2xvdygpIFwKKyAgICB7
IFwKKyAgICAgICAgQVNTRVJUKCFtXyMjbmFtZSk7IFwKKyAgICAgICAgYXV0byBzcGFjZSA9IG1h
a2VVbmlxdWU8U3BhY2VBbmRTZXQ+IElTT19TVUJTUEFDRV9JTklUKCp0aGlzLCBoZWFwQ2VsbFR5
cGUsIHR5cGUpOyBcCisgICAgICAgIFdURjo6c3RvcmVTdG9yZUZlbmNlKCk7IFwKKyAgICAgICAg
bV8jI25hbWUgPSBXVEZNb3ZlKHNwYWNlKTsgXAorICAgICAgICByZXR1cm4gJm1fIyNuYW1lLT5z
cGFjZTsgXAorICAgIH0KKworRFlOQU1JQ19TUEFDRV9BTkRfU0VUX0RFRklORV9NRU1CRVJfU0xP
VyhldmFsRXhlY3V0YWJsZVNwYWNlLCBkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlLCBFdmFs
RXhlY3V0YWJsZSkgLy8gSGFzaDoweDk1OGUzZTlkCitEWU5BTUlDX1NQQUNFX0FORF9TRVRfREVG
SU5FX01FTUJFUl9TTE9XKG1vZHVsZVByb2dyYW1FeGVjdXRhYmxlU3BhY2UsIGRlc3RydWN0aWJs
ZUNlbGxIZWFwQ2VsbFR5cGUsIE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlKSAvLyBIYXNoOjB4NjUw
NmZhM2MKKworI3VuZGVmIERZTkFNSUNfU1BBQ0VfQU5EX1NFVF9ERUZJTkVfTUVNQkVSX1NMT1cK
KwogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9I
ZWFwLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oCShy
ZXZpc2lvbiAyODYwOTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgJKHdv
cmtpbmcgY29weSkKQEAgLTI1LDYgKzI1LDcgQEAKICNpbmNsdWRlICJDZWxsU3RhdGUuaCIKICNp
bmNsdWRlICJDb2xsZWN0aW9uU2NvcGUuaCIKICNpbmNsdWRlICJDb2xsZWN0b3JQaGFzZS5oIgor
I2luY2x1ZGUgIkNvbXBsZXRlU3Vic3BhY2UuaCIKICNpbmNsdWRlICJEZWxldGVBbGxDb2RlRWZm
b3J0LmgiCiAjaW5jbHVkZSAiR0NDb25kdWN0b3IuaCIKICNpbmNsdWRlICJHQ0luY29taW5nUmVm
Q291bnRlZFNldC5oIgpAQCAtMzMsNiArMzQsMTEgQEAKICNpbmNsdWRlICJIYW5kbGVTZXQuaCIK
ICNpbmNsdWRlICJIZWFwRmluYWxpemVyQ2FsbGJhY2suaCIKICNpbmNsdWRlICJIZWFwT2JzZXJ2
ZXIuaCIKKyNpbmNsdWRlICJJc29DZWxsU2V0LmgiCisjaW5jbHVkZSAiSXNvSGVhcENlbGxUeXBl
LmgiCisjaW5jbHVkZSAiSXNvSW5saW5lZEhlYXBDZWxsVHlwZS5oIgorI2luY2x1ZGUgIklzb1N1
YnNwYWNlLmgiCisjaW5jbHVkZSAiSlNEZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuaCIK
ICNpbmNsdWRlICJNYXJrZWRCbG9jay5oIgogI2luY2x1ZGUgIk1hcmtlZFNwYWNlLmgiCiAjaW5j
bHVkZSAiTXV0YXRvclN0YXRlLmgiCkBAIC01MCwzMiArNTYsNjUgQEAKICNpbmNsdWRlIDx3dGYv
UGFyYWxsZWxIZWxwZXJQb29sLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgogCituYW1l
c3BhY2UgSW5zcGVjdG9yIHsKK2NsYXNzIEpTSW5qZWN0ZWRTY3JpcHRIb3N0OworY2xhc3MgSlNK
YXZhU2NyaXB0Q2FsbEZyYW1lOworfQorCiBuYW1lc3BhY2UgSlNDIHsKIAorY2xhc3MgQmxvY2tE
aXJlY3Rvcnk7CiBjbGFzcyBDb2RlQmxvY2s7CiBjbGFzcyBDb2RlQmxvY2tTZXQ7CiBjbGFzcyBD
b2xsZWN0aW5nU2NvcGU7CiBjbGFzcyBDb25zZXJ2YXRpdmVSb290czsKLWNsYXNzIEdDRGVmZXJy
YWxDb250ZXh0OworY2xhc3MgRGF0ZUluc3RhbmNlOwogY2xhc3MgRWRlbkdDQWN0aXZpdHlDYWxs
YmFjazsKK2NsYXNzIEVycm9ySW5zdGFuY2U7CitjbGFzcyBGYXN0TWFsbG9jQWxpZ25lZE1lbW9y
eUFsbG9jYXRvcjsKIGNsYXNzIEZ1bGxHQ0FjdGl2aXR5Q2FsbGJhY2s7CiBjbGFzcyBHQ0FjdGl2
aXR5Q2FsbGJhY2s7CiBjbGFzcyBHQ0F3YXJlSklUU3R1YlJvdXRpbmU7CitjbGFzcyBHQ0RlZmVy
cmFsQ29udGV4dDsKK2NsYXNzIEdpZ2FjYWdlQWxpZ25lZE1lbW9yeUFsbG9jYXRvcjsKIGNsYXNz
IEhlYXA7CiBjbGFzcyBIZWFwUHJvZmlsZXI7CiBjbGFzcyBIZWFwVmVyaWZpZXI7CiBjbGFzcyBJ
bmNyZW1lbnRhbFN3ZWVwZXI7CitjbGFzcyBJbnRsQ29sbGF0b3I7CitjbGFzcyBJbnRsRGF0ZVRp
bWVGb3JtYXQ7CitjbGFzcyBJbnRsRGlzcGxheU5hbWVzOworY2xhc3MgSW50bExpc3RGb3JtYXQ7
CitjbGFzcyBJbnRsTG9jYWxlOworY2xhc3MgSW50bE51bWJlckZvcm1hdDsKK2NsYXNzIEludGxQ
bHVyYWxSdWxlczsKK2NsYXNzIEludGxSZWxhdGl2ZVRpbWVGb3JtYXQ7CitjbGFzcyBJbnRsU2Vn
bWVudEl0ZXJhdG9yOworY2xhc3MgSW50bFNlZ21lbnRlcjsKK2NsYXNzIEludGxTZWdtZW50czsK
IGNsYXNzIEpJVFN0dWJSb3V0aW5lOwogY2xhc3MgSklUU3R1YlJvdXRpbmVTZXQ7CitjbGFzcyBK
U0FQSUdsb2JhbE9iamVjdDsKK2NsYXNzIEpTQ2FsbGJhY2tDb25zdHJ1Y3RvcjsKIGNsYXNzIEpT
Q2VsbDsKK2NsYXNzIEpTQ3VzdG9tR2V0dGVyRnVuY3Rpb247CitjbGFzcyBKU0N1c3RvbVNldHRl
ckZ1bmN0aW9uOworY2xhc3MgSlNGaW5hbGl6YXRpb25SZWdpc3RyeTsKK2NsYXNzIEpTR2xvYmFs
TGV4aWNhbEVudmlyb25tZW50OworY2xhc3MgSlNHbG9iYWxPYmplY3Q7CiBjbGFzcyBKU0ltbXV0
YWJsZUJ1dHRlcmZseTsKK2NsYXNzIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0OworY2xhc3MgSlNN
b2R1bGVSZWNvcmQ7CitjbGFzcyBKU05hdGl2ZVN0ZEZ1bmN0aW9uOworY2xhc3MgSlNOb25GaW5h
bE9iamVjdDsKK2NsYXNzIEpTU3RyaW5nOwogY2xhc3MgSlNWYWx1ZTsKLWNsYXNzIExMSW50T2Zm
c2V0c0V4dHJhY3RvcjsKK2NsYXNzIEpTV2Vha01hcDsKK2NsYXNzIEpTV2Vha1NldDsKIGNsYXNz
IE1hY2hpbmVUaHJlYWRzOwogY2xhc3MgTWFya1N0YWNrQXJyYXk7CiBjbGFzcyBNYXJrU3RhY2tN
ZXJnaW5nQ29uc3RyYWludDsKIGNsYXNzIE1hcmtlZEpTVmFsdWVSZWZBcnJheTsKLWNsYXNzIEJs
b2NrRGlyZWN0b3J5OwogY2xhc3MgTWFya2VkQXJndW1lbnRCdWZmZXJCYXNlOwogY2xhc3MgTWFy
a2luZ0NvbnN0cmFpbnQ7CiBjbGFzcyBNYXJraW5nQ29uc3RyYWludFNldDsKQEAgLTkwLDcgKzEy
OSwzMCBAQCBjbGFzcyBWZXJpZmllclNsb3RWaXNpdG9yOwogY2xhc3MgV2Vha0dDSGFzaFRhYmxl
Owogc3RydWN0IEN1cnJlbnRUaHJlYWRTdGF0ZTsKIAordGVtcGxhdGUgPGNsYXNzIFBhcmVudD4g
Y2xhc3MgSlNDYWxsYmFja09iamVjdDsKKworI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKK2NsYXNz
IEpTV2ViQXNzZW1ibHlDb2RlQmxvY2s7CitjbGFzcyBKU1dlYkFzc2VtYmx5RXhjZXB0aW9uOwor
Y2xhc3MgSlNXZWJBc3NlbWJseUdsb2JhbDsKK2NsYXNzIEpTV2ViQXNzZW1ibHlJbnN0YW5jZTsK
K2NsYXNzIEpTV2ViQXNzZW1ibHlNZW1vcnk7CitjbGFzcyBKU1dlYkFzc2VtYmx5TW9kdWxlOwor
Y2xhc3MgSlNXZWJBc3NlbWJseVRhYmxlOworY2xhc3MgSlNXZWJBc3NlbWJseVRhZzsKK2NsYXNz
IFdlYkFzc2VtYmx5RnVuY3Rpb247CitjbGFzcyBXZWJBc3NlbWJseU1vZHVsZVJlY29yZDsKKyNl
bmRpZgorCisjaWYgSlNDX09CSkNfQVBJX0VOQUJMRUQKK2NsYXNzIEpTQVBJV3JhcHBlck9iamVj
dDsKK2NsYXNzIE9iakNDYWxsYmFja0Z1bmN0aW9uOworI2VuZGlmCisKICNpZmRlZiBKU0NfR0xJ
Ql9BUElfRU5BQkxFRAorY2xhc3MgSlNBUElXcmFwcGVyR2xvYmFsT2JqZWN0OworY2xhc3MgSlNB
UElXcmFwcGVyT2JqZWN0OworY2xhc3MgSlNDQ2FsbGJhY2tGdW5jdGlvbjsKIGNsYXNzIEpTQ0dM
aWJXcmFwcGVyT2JqZWN0OwogI2VuZGlmCiAKQEAgLTcyOSw2ICs3OTEsMzE4IEBAIHByaXZhdGU6
CiAgICAgYm9vbCBtX3BhcmFsbGVsTWFya2Vyc1Nob3VsZEV4aXQgeyBmYWxzZSB9OwogICAgIExv
Y2sgbV9jb2xsZWN0Q29udGludW91c2x5TG9jazsKICAgICBDb25kaXRpb24gbV9jb2xsZWN0Q29u
dGludW91c2x5Q29uZGl0aW9uOworCitwdWJsaWM6CisgICAgLy8gSGVhcENlbGxUeXBlcworICAg
IEhlYXBDZWxsVHlwZSBhdXhpbGlhcnlIZWFwQ2VsbFR5cGU7CisgICAgSGVhcENlbGxUeXBlIGlt
bXV0YWJsZUJ1dHRlcmZseUhlYXBDZWxsVHlwZTsKKyAgICBIZWFwQ2VsbFR5cGUgY2VsbEhlYXBD
ZWxsVHlwZTsKKyAgICBIZWFwQ2VsbFR5cGUgZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZTsK
KyAgICBJc29IZWFwQ2VsbFR5cGU8SlNBUElHbG9iYWxPYmplY3Q+IGFwaUdsb2JhbE9iamVjdEhl
YXBDZWxsVHlwZTsKKyAgICBJc29IZWFwQ2VsbFR5cGU8SlNDYWxsYmFja0NvbnN0cnVjdG9yPiBj
YWxsYmFja0NvbnN0cnVjdG9ySGVhcENlbGxUeXBlOworICAgIElzb0hlYXBDZWxsVHlwZTxKU0Nh
bGxiYWNrT2JqZWN0PEpTR2xvYmFsT2JqZWN0Pj4gY2FsbGJhY2tHbG9iYWxPYmplY3RIZWFwQ2Vs
bFR5cGU7CisgICAgSXNvSGVhcENlbGxUeXBlPEpTQ2FsbGJhY2tPYmplY3Q8SlNOb25GaW5hbE9i
amVjdD4+IGNhbGxiYWNrT2JqZWN0SGVhcENlbGxUeXBlOworICAgIElzb0hlYXBDZWxsVHlwZTxK
U0N1c3RvbUdldHRlckZ1bmN0aW9uPiBjdXN0b21HZXR0ZXJGdW5jdGlvbkhlYXBDZWxsVHlwZTsK
KyAgICBJc29IZWFwQ2VsbFR5cGU8SlNDdXN0b21TZXR0ZXJGdW5jdGlvbj4gY3VzdG9tU2V0dGVy
RnVuY3Rpb25IZWFwQ2VsbFR5cGU7CisgICAgSXNvSGVhcENlbGxUeXBlPERhdGVJbnN0YW5jZT4g
ZGF0ZUluc3RhbmNlSGVhcENlbGxUeXBlOworICAgIElzb0hlYXBDZWxsVHlwZTxFcnJvckluc3Rh
bmNlPiBlcnJvckluc3RhbmNlSGVhcENlbGxUeXBlOworICAgIElzb0hlYXBDZWxsVHlwZTxKU0Zp
bmFsaXphdGlvblJlZ2lzdHJ5PiBmaW5hbGl6YXRpb25SZWdpc3RyeUNlbGxUeXBlOworICAgIElz
b0hlYXBDZWxsVHlwZTxKU0dsb2JhbExleGljYWxFbnZpcm9ubWVudD4gZ2xvYmFsTGV4aWNhbEVu
dmlyb25tZW50SGVhcENlbGxUeXBlOworICAgIElzb0hlYXBDZWxsVHlwZTxKU0dsb2JhbE9iamVj
dD4gZ2xvYmFsT2JqZWN0SGVhcENlbGxUeXBlOworICAgIElzb0hlYXBDZWxsVHlwZTxJbnNwZWN0
b3I6OkpTSW5qZWN0ZWRTY3JpcHRIb3N0PiBpbmplY3RlZFNjcmlwdEhvc3RTcGFjZUhlYXBDZWxs
VHlwZTsKKyAgICBJc29IZWFwQ2VsbFR5cGU8SW5zcGVjdG9yOjpKU0phdmFTY3JpcHRDYWxsRnJh
bWU+IGphdmFTY3JpcHRDYWxsRnJhbWVIZWFwQ2VsbFR5cGU7CisgICAgSXNvSGVhcENlbGxUeXBl
PEpTTW9kdWxlUmVjb3JkPiBqc01vZHVsZVJlY29yZEhlYXBDZWxsVHlwZTsKKyAgICBJc29IZWFw
Q2VsbFR5cGU8SlNNb2R1bGVOYW1lc3BhY2VPYmplY3Q+IG1vZHVsZU5hbWVzcGFjZU9iamVjdEhl
YXBDZWxsVHlwZTsKKyAgICBJc29IZWFwQ2VsbFR5cGU8SlNOYXRpdmVTdGRGdW5jdGlvbj4gbmF0
aXZlU3RkRnVuY3Rpb25IZWFwQ2VsbFR5cGU7CisgICAgSXNvSW5saW5lZEhlYXBDZWxsVHlwZTxK
U1N0cmluZz4gc3RyaW5nSGVhcENlbGxUeXBlOworICAgIElzb0hlYXBDZWxsVHlwZTxKU1dlYWtN
YXA+IHdlYWtNYXBIZWFwQ2VsbFR5cGU7CisgICAgSXNvSGVhcENlbGxUeXBlPEpTV2Vha1NldD4g
d2Vha1NldEhlYXBDZWxsVHlwZTsKKyAgICBKU0Rlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlw
ZSBkZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGU7CisjaWYgSlNDX09CSkNfQVBJX0VOQUJM
RUQKKyAgICBJc29IZWFwQ2VsbFR5cGU8SlNDYWxsYmFja09iamVjdDxKU0FQSVdyYXBwZXJPYmpl
Y3Q+PiBhcGlXcmFwcGVyT2JqZWN0SGVhcENlbGxUeXBlOworICAgIElzb0hlYXBDZWxsVHlwZTxP
YmpDQ2FsbGJhY2tGdW5jdGlvbj4gb2JqQ0NhbGxiYWNrRnVuY3Rpb25IZWFwQ2VsbFR5cGU7Cisj
ZW5kaWYKKyNpZmRlZiBKU0NfR0xJQl9BUElfRU5BQkxFRAorICAgIElzb0hlYXBDZWxsVHlwZTxK
U0NhbGxiYWNrT2JqZWN0PEpTQVBJV3JhcHBlck9iamVjdD4+IGFwaVdyYXBwZXJPYmplY3RIZWFw
Q2VsbFR5cGU7CisgICAgSXNvSGVhcENlbGxUeXBlPEpTQ2FsbGJhY2tPYmplY3Q8SlNBUElXcmFw
cGVyR2xvYmFsT2JqZWN0Pj4gY2FsbGJhY2tBUElXcmFwcGVyR2xvYmFsT2JqZWN0SGVhcENlbGxU
eXBlOworICAgIElzb0hlYXBDZWxsVHlwZTxKU0NDYWxsYmFja0Z1bmN0aW9uPiBqc2NDYWxsYmFj
a0Z1bmN0aW9uSGVhcENlbGxUeXBlOworI2VuZGlmCisgICAgSXNvSGVhcENlbGxUeXBlPEludGxD
b2xsYXRvcj4gaW50bENvbGxhdG9ySGVhcENlbGxUeXBlOworICAgIElzb0hlYXBDZWxsVHlwZTxJ
bnRsRGF0ZVRpbWVGb3JtYXQ+IGludGxEYXRlVGltZUZvcm1hdEhlYXBDZWxsVHlwZTsKKyAgICBJ
c29IZWFwQ2VsbFR5cGU8SW50bERpc3BsYXlOYW1lcz4gaW50bERpc3BsYXlOYW1lc0hlYXBDZWxs
VHlwZTsKKyAgICBJc29IZWFwQ2VsbFR5cGU8SW50bExpc3RGb3JtYXQ+IGludGxMaXN0Rm9ybWF0
SGVhcENlbGxUeXBlOworICAgIElzb0hlYXBDZWxsVHlwZTxJbnRsTG9jYWxlPiBpbnRsTG9jYWxl
SGVhcENlbGxUeXBlOworICAgIElzb0hlYXBDZWxsVHlwZTxJbnRsTnVtYmVyRm9ybWF0PiBpbnRs
TnVtYmVyRm9ybWF0SGVhcENlbGxUeXBlOworICAgIElzb0hlYXBDZWxsVHlwZTxJbnRsUGx1cmFs
UnVsZXM+IGludGxQbHVyYWxSdWxlc0hlYXBDZWxsVHlwZTsKKyAgICBJc29IZWFwQ2VsbFR5cGU8
SW50bFJlbGF0aXZlVGltZUZvcm1hdD4gaW50bFJlbGF0aXZlVGltZUZvcm1hdEhlYXBDZWxsVHlw
ZTsKKyAgICBJc29IZWFwQ2VsbFR5cGU8SW50bFNlZ21lbnRJdGVyYXRvcj4gaW50bFNlZ21lbnRJ
dGVyYXRvckhlYXBDZWxsVHlwZTsKKyAgICBJc29IZWFwQ2VsbFR5cGU8SW50bFNlZ21lbnRlcj4g
aW50bFNlZ21lbnRlckhlYXBDZWxsVHlwZTsKKyAgICBJc29IZWFwQ2VsbFR5cGU8SW50bFNlZ21l
bnRzPiBpbnRsU2VnbWVudHNIZWFwQ2VsbFR5cGU7CisjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQor
ICAgIElzb0hlYXBDZWxsVHlwZTxKU1dlYkFzc2VtYmx5Q29kZUJsb2NrPiB3ZWJBc3NlbWJseUNv
ZGVCbG9ja0hlYXBDZWxsVHlwZTsKKyAgICBJc29IZWFwQ2VsbFR5cGU8SlNXZWJBc3NlbWJseUV4
Y2VwdGlvbj4gd2ViQXNzZW1ibHlFeGNlcHRpb25IZWFwQ2VsbFR5cGU7CisgICAgSXNvSGVhcENl
bGxUeXBlPFdlYkFzc2VtYmx5RnVuY3Rpb24+IHdlYkFzc2VtYmx5RnVuY3Rpb25IZWFwQ2VsbFR5
cGU7CisgICAgSXNvSGVhcENlbGxUeXBlPEpTV2ViQXNzZW1ibHlHbG9iYWw+IHdlYkFzc2VtYmx5
R2xvYmFsSGVhcENlbGxUeXBlOworICAgIElzb0hlYXBDZWxsVHlwZTxKU1dlYkFzc2VtYmx5SW5z
dGFuY2U+IHdlYkFzc2VtYmx5SW5zdGFuY2VIZWFwQ2VsbFR5cGU7CisgICAgSXNvSGVhcENlbGxU
eXBlPEpTV2ViQXNzZW1ibHlNZW1vcnk+IHdlYkFzc2VtYmx5TWVtb3J5SGVhcENlbGxUeXBlOwor
ICAgIElzb0hlYXBDZWxsVHlwZTxKU1dlYkFzc2VtYmx5TW9kdWxlPiB3ZWJBc3NlbWJseU1vZHVs
ZUhlYXBDZWxsVHlwZTsKKyAgICBJc29IZWFwQ2VsbFR5cGU8V2ViQXNzZW1ibHlNb2R1bGVSZWNv
cmQ+IHdlYkFzc2VtYmx5TW9kdWxlUmVjb3JkSGVhcENlbGxUeXBlOworICAgIElzb0hlYXBDZWxs
VHlwZTxKU1dlYkFzc2VtYmx5VGFibGU+IHdlYkFzc2VtYmx5VGFibGVIZWFwQ2VsbFR5cGU7Cisg
ICAgSXNvSGVhcENlbGxUeXBlPEpTV2ViQXNzZW1ibHlUYWc+IHdlYkFzc2VtYmx5VGFnSGVhcENl
bGxUeXBlOworI2VuZGlmCisKKyAgICAvLyBBbGlnbmVkTWVtb3J5QWxsb2NhdG9ycworICAgIHN0
ZDo6dW5pcXVlX3B0cjxGYXN0TWFsbG9jQWxpZ25lZE1lbW9yeUFsbG9jYXRvcj4gZmFzdE1hbGxv
Y0FsbG9jYXRvcjsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8R2lnYWNhZ2VBbGlnbmVkTWVtb3J5QWxs
b2NhdG9yPiBwcmltaXRpdmVHaWdhY2FnZUFsbG9jYXRvcjsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8
R2lnYWNhZ2VBbGlnbmVkTWVtb3J5QWxsb2NhdG9yPiBqc1ZhbHVlR2lnYWNhZ2VBbGxvY2F0b3I7
CisKKyAgICAvLyBTdWJzcGFjZXMKKyAgICBDb21wbGV0ZVN1YnNwYWNlIHByaW1pdGl2ZUdpZ2Fj
YWdlQXV4aWxpYXJ5U3BhY2U7IC8vIFR5cGVkIGFycmF5cywgc3RyaW5ncywgYml0dmVjdG9ycywg
ZXRjIGdvIGhlcmUuCisgICAgQ29tcGxldGVTdWJzcGFjZSBqc1ZhbHVlR2lnYWNhZ2VBdXhpbGlh
cnlTcGFjZTsgLy8gQnV0dGVyZmxpZXMsIGFycmF5cyBvZiBKU1ZhbHVlcywgZXRjIGdvIGhlcmUu
CisgICAgQ29tcGxldGVTdWJzcGFjZSBpbW11dGFibGVCdXR0ZXJmbHlKU1ZhbHVlR2lnYWNhZ2VB
dXhpbGlhcnlTcGFjZTsgLy8gSlNJbW11dGFibGVCdXR0ZXJmbHkgZ29lcyBoZXJlLgorCisgICAg
Ly8gV2UgbWFrZSBjcm9zcy1jdXR0aW5nIGFzc3VtcHRpb25zIGFib3V0IHR5cGVkIGFycmF5cyBi
ZWluZyBpbiB0aGUgcHJpbWl0aXZlIEdpZ2FjYWdlIGFuZCBidXR0ZXJmbGllcworICAgIC8vIGJl
aW5nIGluIHRoZSBKU1ZhbHVlIGdpZ2FjYWdlLiBGb3Igc29tZSB0eXBlcywgaXQncyBzdXBlciBv
YnZpb3VzIHdoZXJlIHRoZXkgc2hvdWxkIGdvLCBhbmQgc28gd2UKKyAgICAvLyBjYW4gaGFyZGNv
ZGUgdGhhdCBmYWN0LiBCdXQgc29tZXRpbWVzIGl0J3Mgbm90IGNsZWFyLCBzbyB3ZSBhYnN0cmFj
dCBpdCBieSBoYXZpbmcgYSBHaWdhY2FnZTo6S2luZAorICAgIC8vIGNvbnN0YW50IHNvbWV3aGVy
ZS4KKyAgICAvLyBGSVhNRTogTWF5YmUgaXQgd291bGQgYmUgYmV0dGVyIGlmIGV2ZXJ5b25lIGFi
c3RyYWN0ZWQgdGhpcz8KKyAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTc1MjQ4CisgICAgQUxXQVlTX0lOTElORSBDb21wbGV0ZVN1YnNwYWNlJiBnaWdhY2Fn
ZUF1eGlsaWFyeVNwYWNlKEdpZ2FjYWdlOjpLaW5kIGtpbmQpCisgICAgeworICAgICAgICBzd2l0
Y2ggKGtpbmQpIHsKKyAgICAgICAgY2FzZSBHaWdhY2FnZTo6UHJpbWl0aXZlOgorICAgICAgICAg
ICAgcmV0dXJuIHByaW1pdGl2ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2U7CisgICAgICAgIGNhc2Ug
R2lnYWNhZ2U6OkpTVmFsdWU6CisgICAgICAgICAgICByZXR1cm4ganNWYWx1ZUdpZ2FjYWdlQXV4
aWxpYXJ5U3BhY2U7CisgICAgICAgIGNhc2UgR2lnYWNhZ2U6Ok51bWJlck9mS2luZHM6CisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVB
Q0hFRCgpOworICAgICAgICByZXR1cm4gcHJpbWl0aXZlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZTsK
KyAgICB9CisgICAgCisgICAgLy8gV2hlbmV2ZXIgcG9zc2libGUsIHVzZSBzdWJzcGFjZUZvcjxD
ZWxsVHlwZT4odm0pIHRvIGdldCBvbmUgb2YgdGhlc2Ugc3Vic3BhY2VzLgorICAgIENvbXBsZXRl
U3Vic3BhY2UgY2VsbFNwYWNlOworICAgIENvbXBsZXRlU3Vic3BhY2UgdmFyaWFibGVTaXplZENl
bGxTcGFjZTsgLy8gRklYTUU6IFRoaXMgc3BhY2UgaXMgcHJvYmxlbWF0aWMgYmVjYXVzZSB3ZSBo
YXZlIHRoaW5ncyBpbiBoZXJlIGxpa2UgRGlyZWN0QXJndW1lbnRzIGFuZCBTY29wZWRBcmd1bWVu
dHM7IHRob3NlIHNob3VsZCBiZSBzcGxpdCBpbnRvIEpTVmFsdWVPT0IgY2VsbHMgYW5kIEpTVmFs
dWVTdHJpY3QgYXV4aWxpYXJpZXMuIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xODI4NTgKKyAgICBDb21wbGV0ZVN1YnNwYWNlIGRlc3RydWN0aWJsZU9iamVjdFNwYWNl
OworCisgICAgSXNvU3Vic3BhY2UgYXJyYXlTcGFjZTsKKyAgICBJc29TdWJzcGFjZSBiaWdJbnRT
cGFjZTsKKyAgICBJc29TdWJzcGFjZSBjYWxsZWVTcGFjZTsKKyAgICBJc29TdWJzcGFjZSBjbG9u
ZWRBcmd1bWVudHNTcGFjZTsKKyAgICBJc29TdWJzcGFjZSBjdXN0b21HZXR0ZXJTZXR0ZXJTcGFj
ZTsKKyAgICBJc29TdWJzcGFjZSBkYXRlSW5zdGFuY2VTcGFjZTsKKyAgICBJc29TdWJzcGFjZSBk
b21BdHRyaWJ1dGVHZXR0ZXJTZXR0ZXJTcGFjZTsKKyAgICBJc29TdWJzcGFjZSBleGNlcHRpb25T
cGFjZTsKKyAgICBJc29TdWJzcGFjZSBleGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlU3BhY2U7Cisg
ICAgSXNvU3Vic3BhY2UgZnVuY3Rpb25TcGFjZTsKKyAgICBJc29TdWJzcGFjZSBnZXR0ZXJTZXR0
ZXJTcGFjZTsKKyAgICBJc29TdWJzcGFjZSBnbG9iYWxMZXhpY2FsRW52aXJvbm1lbnRTcGFjZTsK
KyAgICBJc29TdWJzcGFjZSBpbnRlcm5hbEZ1bmN0aW9uU3BhY2U7CisgICAgSXNvU3Vic3BhY2Ug
anNQcm94eVNwYWNlOworICAgIElzb1N1YnNwYWNlIG5hdGl2ZUV4ZWN1dGFibGVTcGFjZTsKKyAg
ICBJc29TdWJzcGFjZSBudW1iZXJPYmplY3RTcGFjZTsKKyAgICBJc29TdWJzcGFjZSBwbGFpbk9i
amVjdFNwYWNlOworICAgIElzb1N1YnNwYWNlIHByb21pc2VTcGFjZTsKKyAgICBJc29TdWJzcGFj
ZSBwcm9wZXJ0eU5hbWVFbnVtZXJhdG9yU3BhY2U7CisgICAgSXNvU3Vic3BhY2UgcHJvcGVydHlU
YWJsZVNwYWNlOworICAgIElzb1N1YnNwYWNlIHJlZ0V4cFNwYWNlOworICAgIElzb1N1YnNwYWNl
IHJlZ0V4cE9iamVjdFNwYWNlOworICAgIElzb1N1YnNwYWNlIHJvcGVTdHJpbmdTcGFjZTsKKyAg
ICBJc29TdWJzcGFjZSBzY29wZWRBcmd1bWVudHNTcGFjZTsKKyAgICBJc29TdWJzcGFjZSBzcGFy
c2VBcnJheVZhbHVlTWFwU3BhY2U7CisgICAgSXNvU3Vic3BhY2Ugc3RyaW5nU3BhY2U7CisgICAg
SXNvU3Vic3BhY2Ugc3RyaW5nT2JqZWN0U3BhY2U7CisgICAgSXNvU3Vic3BhY2Ugc3RydWN0dXJl
Q2hhaW5TcGFjZTsKKyAgICBJc29TdWJzcGFjZSBzdHJ1Y3R1cmVSYXJlRGF0YVNwYWNlOworICAg
IElzb1N1YnNwYWNlIHN0cnVjdHVyZVNwYWNlOworICAgIElzb1N1YnNwYWNlIGJyYW5kZWRTdHJ1
Y3R1cmVTcGFjZTsKKyAgICBJc29TdWJzcGFjZSBzeW1ib2xUYWJsZVNwYWNlOworCisjZGVmaW5l
IERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIobmFtZSkgXAorICAgIHRlbXBsYXRl
PFN1YnNwYWNlQWNjZXNzIG1vZGU+IFwKKyAgICBJc29TdWJzcGFjZSogbmFtZSgpIFwKKyAgICB7
IFwKKyAgICAgICAgaWYgKG1fIyNuYW1lIHx8IG1vZGUgPT0gU3Vic3BhY2VBY2Nlc3M6OkNvbmN1
cnJlbnRseSkgXAorICAgICAgICAgICAgcmV0dXJuIG1fIyNuYW1lLmdldCgpOyBcCisgICAgICAg
IHJldHVybiBuYW1lIyNTbG93KCk7IFwKKyAgICB9IFwKKyAgICBKU19FWFBPUlRfUFJJVkFURSBJ
c29TdWJzcGFjZSogbmFtZSMjU2xvdygpOyBcCisgICAgc3RkOjp1bmlxdWVfcHRyPElzb1N1YnNw
YWNlPiBtXyMjbmFtZTsKKworCisjaWYgSlNDX09CSkNfQVBJX0VOQUJMRUQKKyAgICBEWU5BTUlD
X0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKGFwaVdyYXBwZXJPYmplY3RTcGFjZSkKKyAgICBE
WU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKG9iakNDYWxsYmFja0Z1bmN0aW9uU3Bh
Y2UpCisjZW5kaWYKKyNpZmRlZiBKU0NfR0xJQl9BUElfRU5BQkxFRAorICAgIERZTkFNSUNfSVNP
X1NVQlNQQUNFX0RFRklORV9NRU1CRVIoYXBpV3JhcHBlck9iamVjdFNwYWNlKQorICAgIERZTkFN
SUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoanNjQ2FsbGJhY2tGdW5jdGlvblNwYWNlKQor
ICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoY2FsbGJhY2tBUElXcmFwcGVy
R2xvYmFsT2JqZWN0U3BhY2UpCisjZW5kaWYKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJ
TkVfTUVNQkVSKGFwaUdsb2JhbE9iamVjdFNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNF
X0RFRklORV9NRU1CRVIoYXBpVmFsdWVXcmFwcGVyU3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VC
U1BBQ0VfREVGSU5FX01FTUJFUihhcnJheUJ1ZmZlclNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NV
QlNQQUNFX0RFRklORV9NRU1CRVIoYXJyYXlJdGVyYXRvclNwYWNlKQorICAgIERZTkFNSUNfSVNP
X1NVQlNQQUNFX0RFRklORV9NRU1CRVIoYXN5bmNHZW5lcmF0b3JTcGFjZSkKKyAgICBEWU5BTUlD
X0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKGJpZ0ludDY0QXJyYXlTcGFjZSkKKyAgICBEWU5B
TUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKGJpZ0ludE9iamVjdFNwYWNlKQorICAgIERZ
TkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoYmlnVWludDY0QXJyYXlTcGFjZSkKKyAg
ICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKGJvb2xlYW5PYmplY3RTcGFjZSkK
KyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKGJvdW5kRnVuY3Rpb25TcGFj
ZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKGNhbGxiYWNrQ29uc3Ry
dWN0b3JTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKGNhbGxi
YWNrR2xvYmFsT2JqZWN0U3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01F
TUJFUihjYWxsYmFja0Z1bmN0aW9uU3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVG
SU5FX01FTUJFUihjYWxsYmFja09iamVjdFNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNF
X0RFRklORV9NRU1CRVIoY3VzdG9tR2V0dGVyRnVuY3Rpb25TcGFjZSkKKyAgICBEWU5BTUlDX0lT
T19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKGN1c3RvbVNldHRlckZ1bmN0aW9uU3BhY2UpCisgICAg
RFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihkYXRhVmlld1NwYWNlKQorICAgIERZ
TkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoZGVidWdnZXJTY29wZVNwYWNlKQorICAg
IERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoZXJyb3JJbnN0YW5jZVNwYWNlKQor
ICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoZmxvYXQzMkFycmF5U3BhY2Up
CisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihmbG9hdDY0QXJyYXlTcGFj
ZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKGZ1bmN0aW9uUmFyZURh
dGFTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKGdlbmVyYXRv
clNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoZ2xvYmFsT2Jq
ZWN0U3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihpbmplY3Rl
ZFNjcmlwdEhvc3RTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVS
KGludDhBcnJheVNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIo
aW50MTZBcnJheVNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIo
aW50MzJBcnJheVNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIo
amF2YVNjcmlwdENhbGxGcmFtZVNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklO
RV9NRU1CRVIoanNNb2R1bGVSZWNvcmRTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9E
RUZJTkVfTUVNQkVSKG1hcEJ1Y2tldFNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RF
RklORV9NRU1CRVIobWFwSXRlcmF0b3JTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9E
RUZJTkVfTUVNQkVSKG1hcFNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9N
RU1CRVIobW9kdWxlTmFtZXNwYWNlT2JqZWN0U3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BB
Q0VfREVGSU5FX01FTUJFUihuYXRpdmVTdGRGdW5jdGlvblNwYWNlKQorICAgIERZTkFNSUNfSVNP
X1NVQlNQQUNFX0RFRklORV9NRU1CRVIocHJveHlPYmplY3RTcGFjZSkKKyAgICBEWU5BTUlDX0lT
T19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKHByb3h5UmV2b2tlU3BhY2UpCisgICAgRFlOQU1JQ19J
U09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihzY29wZWRBcmd1bWVudHNUYWJsZVNwYWNlKQorICAg
IERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoc2NyaXB0RmV0Y2hQYXJhbWV0ZXJz
U3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihzY3JpcHRGZXRj
aGVyU3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihzZXRCdWNr
ZXRTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKHNldEl0ZXJh
dG9yU3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihzZXRTcGFj
ZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKHNoYWRvd1JlYWxtU3Bh
Y2UpOworICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoc3RyaWN0RXZhbEFj
dGl2YXRpb25TcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKHN0
cmluZ0l0ZXJhdG9yU3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJF
Uihzb3VyY2VDb2RlU3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJF
UihzeW1ib2xTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKHN5
bWJvbE9iamVjdFNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIo
dGVtcGxhdGVPYmplY3REZXNjcmlwdG9yU3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0Vf
REVGSU5FX01FTUJFUih0ZW1wb3JhbENhbGVuZGFyU3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VC
U1BBQ0VfREVGSU5FX01FTUJFUih0ZW1wb3JhbER1cmF0aW9uU3BhY2UpCisgICAgRFlOQU1JQ19J
U09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUih0ZW1wb3JhbEluc3RhbnRTcGFjZSkKKyAgICBEWU5B
TUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKHRlbXBvcmFsUGxhaW5UaW1lU3BhY2UpCisg
ICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUih0ZW1wb3JhbFRpbWVab25lU3Bh
Y2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUih1aW50OEFycmF5U3Bh
Y2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUih1aW50OENsYW1wZWRB
cnJheVNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIodWludDE2
QXJyYXlTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKHVpbnQz
MkFycmF5U3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUih1bmxp
bmtlZEV2YWxDb2RlQmxvY2tTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVf
TUVNQkVSKHVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2tTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19T
VUJTUEFDRV9ERUZJTkVfTUVNQkVSKHVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9ja1NwYWNl
KQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIodW5saW5rZWRQcm9ncmFt
Q29kZUJsb2NrU3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihm
aW5hbGl6YXRpb25SZWdpc3RyeVNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklO
RV9NRU1CRVIod2Vha09iamVjdFJlZlNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RF
RklORV9NRU1CRVIod2Vha1NldFNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklO
RV9NRU1CRVIod2Vha01hcFNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9N
RU1CRVIod2l0aFNjb3BlU3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01F
TUJFUihpbnRsQ29sbGF0b3JTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVf
TUVNQkVSKGludGxEYXRlVGltZUZvcm1hdFNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNF
X0RFRklORV9NRU1CRVIoaW50bERpc3BsYXlOYW1lc1NwYWNlKQorICAgIERZTkFNSUNfSVNPX1NV
QlNQQUNFX0RFRklORV9NRU1CRVIoaW50bExpc3RGb3JtYXRTcGFjZSkKKyAgICBEWU5BTUlDX0lT
T19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKGludGxMb2NhbGVTcGFjZSkKKyAgICBEWU5BTUlDX0lT
T19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKGludGxOdW1iZXJGb3JtYXRTcGFjZSkKKyAgICBEWU5B
TUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKGludGxQbHVyYWxSdWxlc1NwYWNlKQorICAg
IERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoaW50bFJlbGF0aXZlVGltZUZvcm1h
dFNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoaW50bFNlZ21l
bnRJdGVyYXRvclNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIo
aW50bFNlZ21lbnRlclNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1C
RVIoaW50bFNlZ21lbnRzU3BhY2UpCisjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQorICAgIERZTkFN
SUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoanNUb1dhc21JQ0NhbGxlZVNwYWNlKQorICAg
IERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIod2ViQXNzZW1ibHlDb2RlQmxvY2tT
cGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKHdlYkFzc2VtYmx5
RXhjZXB0aW9uU3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUih3
ZWJBc3NlbWJseUZ1bmN0aW9uU3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5F
X01FTUJFUih3ZWJBc3NlbWJseUdsb2JhbFNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNF
X0RFRklORV9NRU1CRVIod2ViQXNzZW1ibHlJbnN0YW5jZVNwYWNlKQorICAgIERZTkFNSUNfSVNP
X1NVQlNQQUNFX0RFRklORV9NRU1CRVIod2ViQXNzZW1ibHlNZW1vcnlTcGFjZSkKKyAgICBEWU5B
TUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKHdlYkFzc2VtYmx5TW9kdWxlU3BhY2UpCisg
ICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUih3ZWJBc3NlbWJseU1vZHVsZVJl
Y29yZFNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIod2ViQXNz
ZW1ibHlUYWJsZVNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIo
d2ViQXNzZW1ibHlUYWdTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVN
QkVSKHdlYkFzc2VtYmx5V3JhcHBlckZ1bmN0aW9uU3BhY2UpCisjZW5kaWYKKworI3VuZGVmIERZ
TkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIKKyAgICAKKyAgICBJc29DZWxsU2V0IGV4
ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2VzV2l0aENvbnN0cmFpbnRzOworICAgIElzb0NlbGxTZXQg
ZXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZXNXaXRoRmluYWxpemVyczsKKworI2RlZmluZSBEWU5B
TUlDX1NQQUNFX0FORF9TRVRfREVGSU5FX01FTUJFUihuYW1lKSBcCisgICAgdGVtcGxhdGU8U3Vi
c3BhY2VBY2Nlc3MgbW9kZT4gXAorICAgIElzb1N1YnNwYWNlKiBuYW1lKCkgXAorICAgIHsgXAor
ICAgICAgICBpZiAoYXV0byogc3BhY2VBbmRTZXQgPSBtXyMjbmFtZS5nZXQoKSkgXAorICAgICAg
ICAgICAgcmV0dXJuICZzcGFjZUFuZFNldC0+c3BhY2U7IFwKKyAgICAgICAgaWYgKG1vZGUgPT0g
U3Vic3BhY2VBY2Nlc3M6OkNvbmN1cnJlbnRseSkgXAorICAgICAgICAgICAgcmV0dXJuIG51bGxw
dHI7IFwKKyAgICAgICAgcmV0dXJuIG5hbWUjI1Nsb3coKTsgXAorICAgIH0gXAorICAgIElzb1N1
YnNwYWNlKiBuYW1lIyNTbG93KCk7IFwKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8U3BhY2VBbmRTZXQ+
IG1fIyNuYW1lOworICAgIAorICAgIHN0cnVjdCBTcGFjZUFuZFNldCB7CisgICAgICAgIFdURl9N
QUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKKworICAgICAgICBJc29TdWJzcGFjZSBzcGFjZTsK
KyAgICAgICAgSXNvQ2VsbFNldCBzZXQ7CisgICAgICAgIAorICAgICAgICB0ZW1wbGF0ZTx0eXBl
bmFtZS4uLiBBcmd1bWVudHM+CisgICAgICAgIFNwYWNlQW5kU2V0KEFyZ3VtZW50cyYmLi4uIGFy
Z3VtZW50cykKKyAgICAgICAgICAgIDogc3BhY2Uoc3RkOjpmb3J3YXJkPEFyZ3VtZW50cz4oYXJn
dW1lbnRzKS4uLikKKyAgICAgICAgICAgICwgc2V0KHNwYWNlKQorICAgICAgICB7CisgICAgICAg
IH0KKyAgICAgICAgCisgICAgICAgIHN0YXRpYyBJc29DZWxsU2V0JiBzZXRGb3IoU3Vic3BhY2Um
IHNwYWNlKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gKmJpdHdpc2VfY2FzdDxJc29D
ZWxsU2V0Kj4oCisgICAgICAgICAgICAgICAgYml0d2lzZV9jYXN0PGNoYXIqPigmc3BhY2UpIC0K
KyAgICAgICAgICAgICAgICBPQkpFQ1RfT0ZGU0VUT0YoU3BhY2VBbmRTZXQsIHNwYWNlKSArCisg
ICAgICAgICAgICAgICAgT0JKRUNUX09GRlNFVE9GKFNwYWNlQW5kU2V0LCBzZXQpKTsKKyAgICAg
ICAgfQorICAgIH07CisgICAgCisgICAgU3BhY2VBbmRTZXQgY29kZUJsb2NrU3BhY2U7CisKKyAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jPgorICAgIHZvaWQgZm9yRWFjaENvZGVCbG9ja1NwYWNl
KGNvbnN0IEZ1bmMmIGZ1bmMpCisgICAgeworICAgICAgICAvLyBUaGlzIHNob3VsZCBub3QgaW5j
bHVkZSB3ZWJBc3NlbWJseUNvZGVCbG9ja1NwYWNlIGJlY2F1c2UgdGhpcyBpcyBhYm91dCBzdWJz
Y2xhc3NlcyBvZgorICAgICAgICAvLyBKU0M6OkNvZGVCbG9jay4KKyAgICAgICAgZnVuYyhjb2Rl
QmxvY2tTcGFjZSk7CisgICAgfQorCisgICAgRFlOQU1JQ19TUEFDRV9BTkRfU0VUX0RFRklORV9N
RU1CRVIoZXZhbEV4ZWN1dGFibGVTcGFjZSkKKyAgICBEWU5BTUlDX1NQQUNFX0FORF9TRVRfREVG
SU5FX01FTUJFUihtb2R1bGVQcm9ncmFtRXhlY3V0YWJsZVNwYWNlKQorICAgIFNwYWNlQW5kU2V0
IGZ1bmN0aW9uRXhlY3V0YWJsZVNwYWNlOworICAgIFNwYWNlQW5kU2V0IHByb2dyYW1FeGVjdXRh
YmxlU3BhY2U7CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jPgorICAgIHZvaWQgZm9yRWFj
aFNjcmlwdEV4ZWN1dGFibGVTcGFjZShjb25zdCBGdW5jJiBmdW5jKQorICAgIHsKKyAgICAgICAg
aWYgKG1fZXZhbEV4ZWN1dGFibGVTcGFjZSkKKyAgICAgICAgICAgIGZ1bmMoKm1fZXZhbEV4ZWN1
dGFibGVTcGFjZSk7CisgICAgICAgIGZ1bmMoZnVuY3Rpb25FeGVjdXRhYmxlU3BhY2UpOworICAg
ICAgICBpZiAobV9tb2R1bGVQcm9ncmFtRXhlY3V0YWJsZVNwYWNlKQorICAgICAgICAgICAgZnVu
YygqbV9tb2R1bGVQcm9ncmFtRXhlY3V0YWJsZVNwYWNlKTsKKyAgICAgICAgZnVuYyhwcm9ncmFt
RXhlY3V0YWJsZVNwYWNlKTsKKyAgICB9CisKKyAgICBTcGFjZUFuZFNldCB1bmxpbmtlZEZ1bmN0
aW9uRXhlY3V0YWJsZVNwYWNlOworCisjdW5kZWYgRFlOQU1JQ19TUEFDRV9BTkRfU0VUX0RFRklO
RV9NRU1CRVIKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvSXNvSGVhcENlbGxUeXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9Jc29IZWFwQ2VsbFR5cGUuY3BwCShyZXZpc2lvbiAyODYwOTUpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Jc29IZWFwQ2VsbFR5cGUuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zMSwyMiArMzEsNjEgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLUlzb0hlYXBD
ZWxsVHlwZTo6SXNvSGVhcENlbGxUeXBlKERlc3RydWN0aW9uTW9kZSBkZXN0cnVjdGlvbk1vZGUs
IERlc3Ryb3lGdW5jdGlvblB0ciBkZXN0cm95RnVuY3Rpb24pCi0gICAgOiBIZWFwQ2VsbFR5cGUo
Q2VsbEF0dHJpYnV0ZXMoZGVzdHJ1Y3Rpb25Nb2RlLCBIZWFwQ2VsbDo6SlNDZWxsKSkKLSAgICAs
IG1fZGVzdHJveShkZXN0cm95RnVuY3Rpb24pCisvL0lzb0hlYXBDZWxsVHlwZTo6SXNvSGVhcENl
bGxUeXBlKERlc3RydWN0aW9uTW9kZSBkZXN0cnVjdGlvbk1vZGUsIERlc3Ryb3lGdW5jdGlvblB0
ciBkZXN0cm95RnVuY3Rpb24pCisvLyAgICA6IEhlYXBDZWxsVHlwZShDZWxsQXR0cmlidXRlcyhk
ZXN0cnVjdGlvbk1vZGUsIEhlYXBDZWxsOjpKU0NlbGwpKQorLy8gICAgLCBtX2Rlc3Ryb3koZGVz
dHJveUZ1bmN0aW9uKQorLy97CisvL30KKy8vCisvL0lzb0hlYXBDZWxsVHlwZTo6fklzb0hlYXBD
ZWxsVHlwZSgpID0gZGVmYXVsdDsKKy8vCisvL3ZvaWQgSXNvSGVhcENlbGxUeXBlOjpmaW5pc2hT
d2VlcChNYXJrZWRCbG9jazo6SGFuZGxlJiBoYW5kbGUsIEZyZWVMaXN0KiBmcmVlTGlzdCkgY29u
c3QKKy8veworLy8gICAgaGFuZGxlLmZpbmlzaFN3ZWVwS25vd2luZ0hlYXBDZWxsVHlwZShmcmVl
TGlzdCwgKnRoaXMpOworLy99CisvLworLy92b2lkIElzb0hlYXBDZWxsVHlwZTo6ZGVzdHJveShW
TSYsIEpTQ2VsbCogY2VsbCkgY29uc3QKKy8veworLy8gICAgbV9kZXN0cm95KGNlbGwpOworLy99
CisKK0lzb0hlYXBDZWxsVHlwZUJhc2U6Oklzb0hlYXBDZWxsVHlwZUJhc2UoQ2VsbEF0dHJpYnV0
ZXMgYXR0cmlidXRlcykKKyAgICA6IEhlYXBDZWxsVHlwZShhdHRyaWJ1dGVzKQogewogfQogCi1J
c29IZWFwQ2VsbFR5cGU6On5Jc29IZWFwQ2VsbFR5cGUoKSA9IGRlZmF1bHQ7CitJc29IZWFwQ2Vs
bFR5cGVCYXNlOjp+SXNvSGVhcENlbGxUeXBlQmFzZSgpID0gZGVmYXVsdDsKIAotdm9pZCBJc29I
ZWFwQ2VsbFR5cGU6OmZpbmlzaFN3ZWVwKE1hcmtlZEJsb2NrOjpIYW5kbGUmIGhhbmRsZSwgRnJl
ZUxpc3QqIGZyZWVMaXN0KSBjb25zdAordm9pZCBJc29IZWFwQ2VsbFR5cGVCYXNlOjpmaW5pc2hT
d2VlcChNYXJrZWRCbG9jazo6SGFuZGxlJiBoYW5kbGUsIEZyZWVMaXN0KiBmcmVlTGlzdCkgY29u
c3QKIHsKLSAgICBoYW5kbGUuZmluaXNoU3dlZXBLbm93aW5nSGVhcENlbGxUeXBlKGZyZWVMaXN0
LCAqdGhpcyk7CisgICAgLy8gZmluaXNoU3dlZXBLbm93aW5nSGVhcENlbGxUeXBlKCkgbWF5IGNh
bGwgZGVzdHJveSBpbiBhIGxvb3AsIGFuZCB3ZSBkb24ndAorICAgIC8vIHdhbnQgdG8gZG8gYSB2
aXJ0dWFsIGZ1bmN0aW9uIHRvIGRvIHRoZSBkZXN0cm95IGluIHRoYXQgbG9vcC4gSW5zdGVhZCwK
KyAgICAvLyB3ZSBjYWxsIHRoZSB2aXJ0dWFsIGZ1bmN0aW9uIGRlc3Ryb3lGdW5jdGlvblB0cigp
IG9ubHkgb25jZSB0byBmZXRjaCB0aGUKKyAgICAvLyBEZXN0cm95RnVuY3Rpb25QdHIsIGFuZCB1
c2UgdGhpcyBJbnZva2VyIGNsYXNzIHRvIGNhY2hlIHRoZSByZXR1cm5lZAorICAgIC8vIERlc3Ry
b3lGdW5jdGlvblB0ci4gZmluaXNoU3dlZXBLbm93aW5nSGVhcENlbGxUeXBlKCkgY2FuIHRoZW4g
aW52b2tlCisgICAgLy8gZGVzdHJveSB2aWEgSW52b2tlcidzIGNhY2hlZCBEZXN0cm95RnVuY3Rp
b25QdHIuCisgICAgY2xhc3MgSW52b2tlciB7CisgICAgcHVibGljOgorICAgICAgICBJbnZva2Vy
KERlc3Ryb3lGdW5jdGlvblB0ciBkZXN0cm95RnVuY3Rpb25QdHIpCisgICAgICAgICAgICA6IG1f
ZGVzdHJveShkZXN0cm95RnVuY3Rpb25QdHIpCisgICAgICAgIHsgfQorCisgICAgICAgIEFMV0FZ
U19JTkxJTkUgdm9pZCBvcGVyYXRvcigpKFZNJiwgSlNDZWxsKiBjZWxsKSBjb25zdAorICAgICAg
ICB7CisgICAgICAgICAgICBtX2Rlc3Ryb3koY2VsbCk7CisgICAgICAgIH0KKworICAgIHByaXZh
dGU6CisgICAgICAgIERlc3Ryb3lGdW5jdGlvblB0ciBtX2Rlc3Ryb3k7CisgICAgfTsKKworICAg
IEludm9rZXIgaW52b2tlcihkZXN0cm95RnVuY3Rpb25QdHIoKSk7CisgICAgaGFuZGxlLmZpbmlz
aFN3ZWVwS25vd2luZ0hlYXBDZWxsVHlwZShmcmVlTGlzdCwgaW52b2tlcik7CiB9CiAKLXZvaWQg
SXNvSGVhcENlbGxUeXBlOjpkZXN0cm95KFZNJiwgSlNDZWxsKiBjZWxsKSBjb25zdAorSXNvSGVh
cENlbGxUeXBlQmFzZTo6RGVzdHJveUZ1bmN0aW9uUHRyIElzb0hlYXBDZWxsVHlwZUJhc2U6OmRl
c3Ryb3lGdW5jdGlvblB0cigpIGNvbnN0CiB7Ci0gICAgbV9kZXN0cm95KGNlbGwpOworICAgIFJF
TEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSXNvSGVhcENlbGxUeXBlLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSXNvSGVhcENlbGxUeXBlLmgJKHJldmlz
aW9uIDI4NjA5NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lzb0hlYXBDZWxsVHlw
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOSwzMCArMjksNjkgQEAKIAogbmFtZXNwYWNlIEpTQyB7
CiAKLWNsYXNzIElzb0hlYXBDZWxsVHlwZSBmaW5hbCA6IHB1YmxpYyBIZWFwQ2VsbFR5cGUgewor
Ly9jbGFzcyBJc29IZWFwQ2VsbFR5cGUgZmluYWwgOiBwdWJsaWMgSGVhcENlbGxUeXBlIHsKKy8v
cHVibGljOgorLy8gICAgdXNpbmcgRGVzdHJveUZ1bmN0aW9uUHRyID0gdm9pZCAoKikoSlNDZWxs
Kik7CisvLworLy8gICAgSlNfRVhQT1JUX1BSSVZBVEUgfklzb0hlYXBDZWxsVHlwZSgpOworLy8K
Ky8vICAgIEpTX0VYUE9SVF9QUklWQVRFIElzb0hlYXBDZWxsVHlwZShEZXN0cnVjdGlvbk1vZGUs
IERlc3Ryb3lGdW5jdGlvblB0cik7CisvLworLy8gICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5
cGU+CisvLyAgICBzdHJ1Y3QgQXJncyB7CisvLyAgICAgICAgQXJncygpCisvLyAgICAgICAgICAg
IDogbW9kZShDZWxsVHlwZTo6bmVlZHNEZXN0cnVjdGlvbiA/IE5lZWRzRGVzdHJ1Y3Rpb24gOiBE
b2VzTm90TmVlZERlc3RydWN0aW9uKQorLy8gICAgICAgICAgICAsIGZ1bmN0aW9uUHRyKCZDZWxs
VHlwZTo6ZGVzdHJveSkKKy8vICAgICAgICB7IH0KKy8vCisvLyAgICAgICAgRGVzdHJ1Y3Rpb25N
b2RlIG1vZGU7CisvLyAgICAgICAgRGVzdHJveUZ1bmN0aW9uUHRyIGZ1bmN0aW9uUHRyOworLy8g
ICAgfTsKKy8vCisvLyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZT4KKy8vICAgIElzb0hl
YXBDZWxsVHlwZShBcmdzPENlbGxUeXBlPiYmIGFyZ3MpCisvLyAgICAgICAgOiBJc29IZWFwQ2Vs
bFR5cGUoYXJncy5tb2RlLCBhcmdzLmZ1bmN0aW9uUHRyKQorLy8gICAgeyB9CisvLworLy8gICAg
SlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBmaW5pc2hTd2VlcChNYXJrZWRCbG9jazo6SGFuZGxlJiwg
RnJlZUxpc3QqKSBjb25zdCBmaW5hbDsKKy8vICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgZGVz
dHJveShWTSYsIEpTQ2VsbCopIGNvbnN0IGZpbmFsOworLy8KKy8vICAgIEFMV0FZU19JTkxJTkUg
dm9pZCBvcGVyYXRvcigpKFZNJiwgSlNDZWxsKiBjZWxsKSBjb25zdAorLy8gICAgeworLy8gICAg
ICAgIG1fZGVzdHJveShjZWxsKTsKKy8vICAgIH0KKy8vCisvL3ByaXZhdGU6CisvLyAgICBEZXN0
cm95RnVuY3Rpb25QdHIgV1RGX1ZUQkxfRlVOQ1BUUl9QVFJBVVRIX1NUUigiSXNvSGVhcENlbGxU
eXBlLmRlc3Ryb3kiKSBtX2Rlc3Ryb3k7CisvL307CisKKy8vIFRoZSByZWFzb24gd2UgbmVlZCBh
biBJc29IZWFwQ2VsbFR5cGVCYXNlIGlzIGp1c3Qgc28gYWxsIElzb0hlYXBDZWxsVHlwZQorLy8g
c3BlY2lhbGl6YXRpb25zIGNhbiBzaGFyZSB0aGUgc2FtZSBmaW5pc2hTd2VlcCgpLiBmaW5pc2hT
d2VlcCgpIG5lZWRzIHRvIGNhbGwKKy8vIE1hcmtlZEJsb2NrOjpIYW5kbGU6OmZpbmlzaFN3ZWVw
S25vd2luZ0hlYXBDZWxsVHlwZSgpLCB3aGljaCBpcyBhIHJlbGF0aXZlbHkKKy8vIGxhcmdlIHRl
bXBsYXRlIGZ1bmN0aW9uLiBXZSBkb24ndCB3YW50IHRvIGluc3RhbnRpYXRlIGEgc3BlY2lhbGl6
YXRpb24gb2YKKy8vIGZpbmlzaFN3ZWVwS25vd2luZ0hlYXBDZWxsVHlwZSgpIGZvciBlYWNoIElz
b0hlYXBDZWxsVHlwZSBjZWxsIHR5cGUuCitjbGFzcyBJc29IZWFwQ2VsbFR5cGVCYXNlIDogcHVi
bGljIEhlYXBDZWxsVHlwZSB7CiBwdWJsaWM6CiAgICAgdXNpbmcgRGVzdHJveUZ1bmN0aW9uUHRy
ID0gdm9pZCAoKikoSlNDZWxsKik7CiAKLSAgICBKU19FWFBPUlRfUFJJVkFURSB+SXNvSGVhcENl
bGxUeXBlKCk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgSXNvSGVhcENlbGxUeXBlQmFzZShDZWxs
QXR0cmlidXRlcyBhdHRyaWJ1dGVzKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSB+SXNvSGVhcENl
bGxUeXBlQmFzZSgpOwogCi0gICAgSlNfRVhQT1JUX1BSSVZBVEUgSXNvSGVhcENlbGxUeXBlKERl
c3RydWN0aW9uTW9kZSwgRGVzdHJveUZ1bmN0aW9uUHRyKTsKKyAgICBKU19FWFBPUlRfUFJJVkFU
RSB2b2lkIGZpbmlzaFN3ZWVwKE1hcmtlZEJsb2NrOjpIYW5kbGUmIGhhbmRsZSwgRnJlZUxpc3Qq
IGZyZWVMaXN0KSBjb25zdCBmaW5hbDsKIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBl
PgotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8SXNvSGVhcENlbGxUeXBlPiBjcmVhdGUoKQot
ICAgIHsKLSAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8SXNvSGVhcENlbGxUeXBlPihDZWxsVHlw
ZTo6bmVlZHNEZXN0cnVjdGlvbiA/IE5lZWRzRGVzdHJ1Y3Rpb24gOiBEb2VzTm90TmVlZERlc3Ry
dWN0aW9uLCAmQ2VsbFR5cGU6OmRlc3Ryb3kpOwotICAgIH0KLQotICAgIEpTX0VYUE9SVF9QUklW
QVRFIHZvaWQgZmluaXNoU3dlZXAoTWFya2VkQmxvY2s6OkhhbmRsZSYsIEZyZWVMaXN0KikgY29u
c3QgZmluYWw7Ci0gICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBkZXN0cm95KFZNJiwgSlNDZWxs
KikgY29uc3QgZmluYWw7Ci0KLSAgICBBTFdBWVNfSU5MSU5FIHZvaWQgb3BlcmF0b3IoKShWTSYs
IEpTQ2VsbCogY2VsbCkgY29uc3QKLSAgICB7Ci0gICAgICAgIG1fZGVzdHJveShjZWxsKTsKLSAg
ICB9CisgICAgdmlydHVhbCBEZXN0cm95RnVuY3Rpb25QdHIgZGVzdHJveUZ1bmN0aW9uUHRyKCkg
Y29uc3Q7Cit9OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZT4KK2NsYXNzIElzb0hlYXBD
ZWxsVHlwZSBmaW5hbCA6IHB1YmxpYyBJc29IZWFwQ2VsbFR5cGVCYXNlIHsKK3B1YmxpYzoKKyAg
ICB1c2luZyBJc29IZWFwQ2VsbFR5cGVCYXNlOjpEZXN0cm95RnVuY3Rpb25QdHI7CisKKyAgICBJ
c29IZWFwQ2VsbFR5cGUoKTsKKyAgICB+SXNvSGVhcENlbGxUeXBlKCkgPSBkZWZhdWx0OwogCi1w
cml2YXRlOgotICAgIERlc3Ryb3lGdW5jdGlvblB0ciBXVEZfVlRCTF9GVU5DUFRSX1BUUkFVVEhf
U1RSKCJJc29IZWFwQ2VsbFR5cGUuZGVzdHJveSIpIG1fZGVzdHJveTsKKyAgICB2b2lkIGRlc3Ry
b3koVk0mLCBKU0NlbGwqIGNlbGwpIGNvbnN0IGZpbmFsOworICAgIERlc3Ryb3lGdW5jdGlvblB0
ciBkZXN0cm95RnVuY3Rpb25QdHIoKSBjb25zdCBmaW5hbDsKIH07CiAKIH0gLy8gbmFtZXNwYWNl
IEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSXNvSGVhcENlbGxUeXBlSW5s
aW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lzb0hlYXBD
ZWxsVHlwZUlubGluZXMuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9Jc29IZWFwQ2VsbFR5cGVJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0
OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgor
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFn
bWEgb25jZQorCisjaW5jbHVkZSAiSGVhcENlbGxUeXBlLmgiCisKK25hbWVzcGFjZSBKU0Mgewor
Cit0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZT4KK0FMV0FZU19JTkxJTkUgSXNvSGVhcENlbGxU
eXBlPENlbGxUeXBlPjo6SXNvSGVhcENlbGxUeXBlKCkKKyAgICA6IElzb0hlYXBDZWxsVHlwZUJh
c2UoQ2VsbEF0dHJpYnV0ZXMoQ2VsbFR5cGU6Om5lZWRzRGVzdHJ1Y3Rpb24gPyBOZWVkc0Rlc3Ry
dWN0aW9uIDogRG9lc05vdE5lZWREZXN0cnVjdGlvbiwgSGVhcENlbGw6OkpTQ2VsbCkpCit7IH0K
KwordGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGU+Cit2b2lkIElzb0hlYXBDZWxsVHlwZTxDZWxs
VHlwZT46OmRlc3Ryb3koVk0mLCBKU0NlbGwqIGNlbGwpIGNvbnN0Cit7CisgICAgQ2VsbFR5cGU6
OmRlc3Ryb3koY2VsbCk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlPgordHlwZW5h
bWUgSXNvSGVhcENlbGxUeXBlPENlbGxUeXBlPjo6RGVzdHJveUZ1bmN0aW9uUHRyIElzb0hlYXBD
ZWxsVHlwZTxDZWxsVHlwZT46OmRlc3Ryb3lGdW5jdGlvblB0cigpIGNvbnN0Cit7CisgICAgcmV0
dXJuICZDZWxsVHlwZTo6ZGVzdHJveTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Jc29JbmxpbmVkSGVhcENlbGxUeXBlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSXNvSW5saW5lZEhlYXBDZWxsVHlw
ZS5oCShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Jc29J
bmxpbmVkSGVhcENlbGxUeXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTMyLDI4ICszMiwxMyBAQCBu
YW1lc3BhY2UgSlNDIHsKIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlPgogY2xhc3MgSXNvSW5s
aW5lZEhlYXBDZWxsVHlwZSBmaW5hbCA6IHB1YmxpYyBIZWFwQ2VsbFR5cGUgewogcHVibGljOgot
ICAgIElzb0lubGluZWRIZWFwQ2VsbFR5cGUoKQotICAgICAgICA6IEhlYXBDZWxsVHlwZShDZWxs
QXR0cmlidXRlcyhDZWxsVHlwZTo6bmVlZHNEZXN0cnVjdGlvbiA/IE5lZWRzRGVzdHJ1Y3Rpb24g
OiBEb2VzTm90TmVlZERlc3RydWN0aW9uLCBIZWFwQ2VsbDo6SlNDZWxsKSkKLSAgICB7Ci0gICAg
fQotCisgICAgSXNvSW5saW5lZEhlYXBDZWxsVHlwZSgpOwogICAgIHN0cnVjdCBEZXN0cm95RnVu
YyB7Ci0gICAgICAgIEFMV0FZU19JTkxJTkUgdm9pZCBvcGVyYXRvcigpKFZNJiwgSlNDZWxsKiBj
ZWxsKSBjb25zdAotICAgICAgICB7Ci0gICAgICAgICAgICBDZWxsVHlwZTo6ZGVzdHJveShjZWxs
KTsKLSAgICAgICAgfQorICAgICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgb3BlcmF0b3IoKShWTSYs
IEpTQ2VsbCogY2VsbCkgY29uc3Q7CiAgICAgfTsKIAotICAgIHZvaWQgZmluaXNoU3dlZXAoTWFy
a2VkQmxvY2s6OkhhbmRsZSYgaGFuZGxlLCBGcmVlTGlzdCogZnJlZUxpc3QpIGNvbnN0IGZpbmFs
Ci0gICAgewotICAgICAgICBoYW5kbGUuZmluaXNoU3dlZXBLbm93aW5nSGVhcENlbGxUeXBlKGZy
ZWVMaXN0LCBEZXN0cm95RnVuYygpKTsKLSAgICB9Ci0KLSAgICB2b2lkIGRlc3Ryb3koVk0mLCBK
U0NlbGwqIGNlbGwpIGNvbnN0IGZpbmFsCi0gICAgewotICAgICAgICBDZWxsVHlwZTo6ZGVzdHJv
eShjZWxsKTsKLSAgICB9CisgICAgdm9pZCBmaW5pc2hTd2VlcChNYXJrZWRCbG9jazo6SGFuZGxl
JiBoYW5kbGUsIEZyZWVMaXN0KiBmcmVlTGlzdCkgY29uc3QgZmluYWw7CisgICAgdm9pZCBkZXN0
cm95KFZNJiwgSlNDZWxsKiBjZWxsKSBjb25zdCBmaW5hbDsKIH07CiAKIH0gLy8gbmFtZXNwYWNl
IEpTQwotCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Jc29JbmxpbmVkSGVhcENl
bGxUeXBlSW5saW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L0lzb0lubGluZWRIZWFwQ2VsbFR5cGVJbmxpbmVzLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvSXNvSW5saW5lZEhlYXBDZWxsVHlwZUlubGluZXMuaAkod29y
a2luZyBjb3B5KQpAQCAtMCwwICsxLDU4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJJc29JbmxpbmVkSGVh
cENlbGxUeXBlLmgiCisKKyNpbmNsdWRlICJNYXJrZWRCbG9jay5oIgorCituYW1lc3BhY2UgSlND
IHsKKwordGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGU+CitpbmxpbmUgSXNvSW5saW5lZEhlYXBD
ZWxsVHlwZTxDZWxsVHlwZT46Oklzb0lubGluZWRIZWFwQ2VsbFR5cGUoKQorICAgIDogSGVhcENl
bGxUeXBlKENlbGxBdHRyaWJ1dGVzKENlbGxUeXBlOjpuZWVkc0Rlc3RydWN0aW9uID8gTmVlZHNE
ZXN0cnVjdGlvbiA6IERvZXNOb3ROZWVkRGVzdHJ1Y3Rpb24sIEhlYXBDZWxsOjpKU0NlbGwpKQor
eworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZT4KK0FMV0FZU19JTkxJTkUgdm9pZCBJ
c29JbmxpbmVkSGVhcENlbGxUeXBlPENlbGxUeXBlPjo6RGVzdHJveUZ1bmM6Om9wZXJhdG9yKCko
Vk0mLCBKU0NlbGwqIGNlbGwpIGNvbnN0Cit7CisgICAgQ2VsbFR5cGU6OmRlc3Ryb3koY2VsbCk7
Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlPgoraW5saW5lIHZvaWQgSXNvSW5saW5l
ZEhlYXBDZWxsVHlwZTxDZWxsVHlwZT46OmZpbmlzaFN3ZWVwKE1hcmtlZEJsb2NrOjpIYW5kbGUm
IGhhbmRsZSwgRnJlZUxpc3QqIGZyZWVMaXN0KSBjb25zdAoreworICAgIGhhbmRsZS5maW5pc2hT
d2VlcEtub3dpbmdIZWFwQ2VsbFR5cGUoZnJlZUxpc3QsIERlc3Ryb3lGdW5jKCkpOworfQorCit0
ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZT4KK2lubGluZSB2b2lkIElzb0lubGluZWRIZWFwQ2Vs
bFR5cGU8Q2VsbFR5cGU+OjpkZXN0cm95KFZNJiwgSlNDZWxsKiBjZWxsKSBjb25zdAoreworICAg
IENlbGxUeXBlOjpkZXN0cm95KGNlbGwpOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lzb1N1YnNwYWNlLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSXNvU3Vic3BhY2UuaAkocmV2aXNpb24gMjg2MDk1
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSXNvU3Vic3BhY2UuaAkod29ya2luZyBj
b3B5KQpAQCAtNTQsNyArNTQsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCogdHJ5QWxsb2NhdGVGcm9t
TG93ZXJUaWVyKCk7CiAgICAgdm9pZCBkZXN0cm95TG93ZXJUaWVyRnJlZUxpc3QoKTsKIAotICAg
IHZvaWQgc3dlZXAoKTsKKyAgICB2b2lkIHN3ZWVwMygpOwogCiAgICAgdGVtcGxhdGU8dHlwZW5h
bWUgRnVuYz4gdm9pZCBmb3JFYWNoTG93ZXJUaWVyRnJlZUxpc3RlZFByZWNpc2VBbGxvY2F0aW9u
KGNvbnN0IEZ1bmMmKTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSXNvU3Vi
c3BhY2VJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
SXNvU3Vic3BhY2VJbmxpbmVzLmgJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL0lzb1N1YnNwYWNlSW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC00NCw3
ICs0NCw3IEBAIGlubGluZSB2b2lkIElzb1N1YnNwYWNlOjpjbGVhcklzb0NlbGxTZXQKICAgICAg
ICAgfSk7CiB9CiAKLWlubGluZSB2b2lkIElzb1N1YnNwYWNlOjpzd2VlcCgpCitpbmxpbmUgdm9p
ZCBJc29TdWJzcGFjZTo6c3dlZXAzKCkKIHsKICAgICBTdWJzcGFjZTo6c3dlZXBCbG9ja3MoKTsK
ICAgICAvLyBXZSBzd2VlcCBwcmVjaXNlLWFsbG9jYXRpb25zIGVhZ2VybHksIGJ1dCB3ZSBkbyBu
b3QgZnJlZSBpdCBpbW1lZGlhdGVseS4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L01hcmtlZEJsb2NrSW5saW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL01hcmtlZEJsb2NrSW5saW5lcy5oCShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9ja0lubGluZXMuaAkod29ya2luZyBjb3B5KQpA
QCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAxOSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAyMSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
QEAgLTIxMyw3ICsyMTMsNyBAQCBpbmxpbmUgYm9vbCBNYXJrZWRCbG9jazo6SGFuZGxlOjphcmVN
YXJrCiAvLyBzd2VlcE1vZGUgPT0gU3dlZXBUb0ZyZWVMaXN0CiAvLyBzY3JpYmJsZU1vZGUgPT0g
RG9udFNjcmliYmxlCiAvLyBuZXdseUFsbG9jYXRlZE1vZGUgPT0gRG9lc05vdEhhdmVOZXdseUFs
bG9jYXRlZAotLy8gZGVzdHJ1Y3Rpb25Nb2RlICE9IEJsb2NrSGFzRGVzdHJpY3RvcnNBbmRDb2xs
ZWN0b3JJc1J1bm5pbmcKKy8vIGRlc3RydWN0aW9uTW9kZSAhPSBCbG9ja0hhc0Rlc3RydWN0b3Jz
QW5kQ29sbGVjdG9ySXNSdW5uaW5nCiAvLwogLy8gZW1wdHlNb2RlID0gSXNFbXB0eQogLy8gICAg
IGRlc3RydWN0aW9uTW9kZSA9IERvZXNOb3ROZWVkRGVzdHJ1Y3Rpb24KSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNJbmplY3RlZFNjcmlwdEhvc3RQcm90b3R5cGUuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTSW5qZWN0ZWRT
Y3JpcHRIb3N0UHJvdG90eXBlLmgJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3IvSlNJbmplY3RlZFNjcmlwdEhvc3RQcm90b3R5cGUuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNDAsNyArNDAsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vi
c3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FT
U0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNJbmplY3RlZFNjcmlwdEhvc3RQcm90b3R5cGUs
IEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJl
dHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIERFQ0xBUkVfSU5GTzsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNKYXZhU2NyaXB0Q2FsbEZy
YW1lUHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9KU0phdmFTY3JpcHRDYWxsRnJhbWVQcm90b3R5cGUuaAkocmV2aXNpb24gMjg2MDk1KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0phdmFTY3JpcHRDYWxsRnJhbWVQ
cm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtNDAsNyArNDAsNyBAQCBwdWJsaWM6CiAgICAg
c3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsK
ICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNKYXZhU2NyaXB0
Q2FsbEZyYW1lUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVj
dFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAK
ICAgICBERUNMQVJFX0lORk87CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0
ZXIvQ2FsbEZyYW1lLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVy
cHJldGVyL0NhbGxGcmFtZS5oCShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW50ZXJwcmV0ZXIvQ2FsbEZyYW1lLmgJKHdvcmtpbmcgY29weSkKQEAgLTM4LDYgKzM4
LDcgQEAgbmFtZXNwYWNlIEpTQyAgewogICAgIGNsYXNzIEpTQ2FsbGVlOwogICAgIGNsYXNzIEpT
U2NvcGU7CiAgICAgY2xhc3MgU291cmNlT3JpZ2luOworICAgIGNsYXNzIFZpcnR1YWxSZWdpc3Rl
cjsKIAogICAgIHN0cnVjdCBJbnN0cnVjdGlvbjsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQWdncmVnYXRlRXJyb3JQcm90b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BZ2dyZWdhdGVFcnJvclByb3RvdHlwZS5oCShyZXZp
c2lvbiAyODYwOTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BZ2dyZWdhdGVF
cnJvclByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00NCw3ICs0NCw3IEBAIHB1YmxpYzoK
ICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAg
ICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEFnZ3JlZ2F0ZUVycm9yUHJv
dG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAg
ICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMg
U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0FycmF5SXRlcmF0b3JQcm90b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUl0ZXJhdG9yUHJvdG90eXBlLmgJKHJldmlzaW9uIDI4
NjA5NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5SXRlcmF0b3JQcm90
b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzgsNyArMzgsNyBAQCBwdWJsaWM6CiAgICAgc3Rh
dGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFU
SUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShBcnJheUl0ZXJhdG9yUHJvdG90eXBlLCBC
YXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1
cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgQXJyYXlJdGVy
YXRvclByb3RvdHlwZSogY3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Bc3luY0Zyb21TeW5jSXRlcmF0b3JQcm90b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bc3luY0Zyb21TeW5jSXRlcmF0b3JQcm90b3R5cGUu
aAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXN5
bmNGcm9tU3luY0l0ZXJhdG9yUHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw2
IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDE3LTIwMTkgT2xla3NhbmRyIFNrYWNoa292IDxn
c2thY2hrb3ZAZ21haWwuY29tPi4KKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSwgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0z
Nyw3ICszOCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9y
KFZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJB
QkxFKEFzeW5jRnJvbVN5bmNJdGVyYXRvclByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVy
biAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNw
YWNlKCk7CiAgICAgfQogCiAgICAgREVDTEFSRV9JTkZPOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQXN5bmNGdW5jdGlvblByb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FzeW5jRnVuY3Rpb25Qcm90b3R5cGUuaAkocmV2
aXNpb24gMjg2MDk1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXN5bmNGdW5j
dGlvblByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw3ICszOCw3IEBAIHB1YmxpYzoK
ICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAg
ICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEFzeW5jRnVuY3Rpb25Qcm90
b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAg
ICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIERFQ0xBUkVf
SU5GTzsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FzeW5jR2VuZXJhdG9y
RnVuY3Rpb25Qcm90b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Bc3luY0dlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmgJKHJldmlzaW9uIDI4NjA5
NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FzeW5jR2VuZXJhdG9yRnVuY3Rp
b25Qcm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzgsNyArMzgsNyBAQCBwdWJsaWM6CiAg
ICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewogICAgICAg
ICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShBc3luY0dlbmVyYXRvckZ1bmN0
aW9uUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNl
OworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBE
RUNMQVJFX0lORk87CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bc3luY0dl
bmVyYXRvclByb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0FzeW5jR2VuZXJhdG9yUHJvdG90eXBlLmgJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FzeW5jR2VuZXJhdG9yUHJvdG90eXBlLmgJKHdv
cmtpbmcgY29weSkKQEAgLTQxLDcgKzQxLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJc29TdWJz
cGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9J
U09fU1VCU1BBQ0VfU0hBUkFCTEUoQXN5bmNHZW5lcmF0b3JQcm90b3R5cGUsIEJhc2UpOwotICAg
ICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxh
aW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBBc3luY0dlbmVyYXRvclByb3Rv
dHlwZSogY3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FzeW5jSXRlcmF0b3JQcm90
b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bc3lu
Y0l0ZXJhdG9yUHJvdG90eXBlLmgJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0FzeW5jSXRlcmF0b3JQcm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpA
QCAtMzksNyArMzksNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFj
ZUZvcihWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9T
SEFSQUJMRShBc3luY0l0ZXJhdG9yUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2
bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2Uo
KTsKICAgICB9CiAKICAgICBzdGF0aWMgQXN5bmNJdGVyYXRvclByb3RvdHlwZSogY3JlYXRlKFZN
JiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUp
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BdG9taWNzT2JqZWN0LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXRvbWljc09iamVjdC5o
CShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BdG9t
aWNzT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDE2LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDE2LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zNyw3ICszNyw3IEBAIHB1YmxpYzoKICAg
ICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAg
IFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEF0b21pY3NPYmplY3QsIEJhc2Up
OwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAm
dm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KICAgICAKICAgICBzdGF0aWMgQXRvbWljc09i
amVjdCogY3JlYXRlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqKTsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0JpZ0ludFByb3RvdHlwZS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0JpZ0ludFByb3RvdHlwZS5oCShyZXZp
c2lvbiAyODYwOTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9CaWdJbnRQcm90
b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzksNyArMzksNyBAQCBwdWJsaWM6CiAgICAgc3Rh
dGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFU
SUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShCaWdJbnRQcm90b3R5cGUsIEJhc2UpOwot
ICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0u
cGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBCaWdJbnRQcm90b3R5cGUq
IGNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSog
c3RydWN0dXJlKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQnJhbmRlZFN0
cnVjdHVyZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Jy
YW5kZWRTdHJ1Y3R1cmUuaAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQnJhbmRlZFN0cnVjdHVyZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00Nyw3ICs0
Nyw3IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vic3BhY2VB
Y2Nlc3M+CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAg
ewotICAgICAgICByZXR1cm4gJnZtLmJyYW5kZWRTdHJ1Y3R1cmVTcGFjZTsKKyAgICAgICAgcmV0
dXJuICZ2bS5icmFuZGVkU3RydWN0dXJlU3BhY2UoKTsKICAgICB9CiAKICAgICBBTFdBWVNfSU5M
SU5FIGJvb2wgY2hlY2tCcmFuZChTeW1ib2wqIGJyYW5kKQpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQnV0dGVyZmx5SW5saW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0J1dHRlcmZseUlubGluZXMuaAkocmV2aXNpb24gMjg2MDk1
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQnV0dGVyZmx5SW5saW5lcy5oCSh3
b3JraW5nIGNvcHkpCkBAIC03Nyw3ICs3Nyw3IEBAIEFMV0FZU19JTkxJTkUgdW5zaWduZWQgQnV0
dGVyZmx5OjpvcHRpbWEKIGlubGluZSBCdXR0ZXJmbHkqIEJ1dHRlcmZseTo6dHJ5Q3JlYXRlVW5p
bml0aWFsaXplZChWTSYgdm0sIEpTT2JqZWN0Kiwgc2l6ZV90IHByZUNhcGFjaXR5LCBzaXplX3Qg
cHJvcGVydHlDYXBhY2l0eSwgYm9vbCBoYXNJbmRleGluZ0hlYWRlciwgc2l6ZV90IGluZGV4aW5n
UGF5bG9hZFNpemVJbkJ5dGVzLCBHQ0RlZmVycmFsQ29udGV4dCogZGVmZXJyYWxDb250ZXh0KQog
ewogICAgIHNpemVfdCBzaXplID0gdG90YWxTaXplKHByZUNhcGFjaXR5LCBwcm9wZXJ0eUNhcGFj
aXR5LCBoYXNJbmRleGluZ0hlYWRlciwgaW5kZXhpbmdQYXlsb2FkU2l6ZUluQnl0ZXMpOwotICAg
IHZvaWQqIGJhc2UgPSB2bS5qc1ZhbHVlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZS5hbGxvY2F0ZU5v
blZpcnR1YWwodm0sIHNpemUsIGRlZmVycmFsQ29udGV4dCwgQWxsb2NhdGlvbkZhaWx1cmVNb2Rl
OjpSZXR1cm5OdWxsKTsKKyAgICB2b2lkKiBiYXNlID0gdm0uanNWYWx1ZUdpZ2FjYWdlQXV4aWxp
YXJ5U3BhY2UoKS5hbGxvY2F0ZU5vblZpcnR1YWwodm0sIHNpemUsIGRlZmVycmFsQ29udGV4dCwg
QWxsb2NhdGlvbkZhaWx1cmVNb2RlOjpSZXR1cm5OdWxsKTsKICAgICBpZiAoVU5MSUtFTFkoIWJh
c2UpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApAQCAtODksNyArODksNyBAQCBpbmxpbmUg
QnV0dGVyZmx5KiBCdXR0ZXJmbHk6OnRyeUNyZWF0ZVVuCiBpbmxpbmUgQnV0dGVyZmx5KiBCdXR0
ZXJmbHk6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQoVk0mIHZtLCBKU09iamVjdCosIHNpemVfdCBwcmVD
YXBhY2l0eSwgc2l6ZV90IHByb3BlcnR5Q2FwYWNpdHksIGJvb2wgaGFzSW5kZXhpbmdIZWFkZXIs
IHNpemVfdCBpbmRleGluZ1BheWxvYWRTaXplSW5CeXRlcykKIHsKICAgICBzaXplX3Qgc2l6ZSA9
IHRvdGFsU2l6ZShwcmVDYXBhY2l0eSwgcHJvcGVydHlDYXBhY2l0eSwgaGFzSW5kZXhpbmdIZWFk
ZXIsIGluZGV4aW5nUGF5bG9hZFNpemVJbkJ5dGVzKTsKLSAgICB2b2lkKiBiYXNlID0gdm0uanNW
YWx1ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UuYWxsb2NhdGVOb25WaXJ0dWFsKHZtLCBzaXplLCBu
dWxscHRyLCBBbGxvY2F0aW9uRmFpbHVyZU1vZGU6OkFzc2VydCk7CisgICAgdm9pZCogYmFzZSA9
IHZtLmpzVmFsdWVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlKCkuYWxsb2NhdGVOb25WaXJ0dWFsKHZt
LCBzaXplLCBudWxscHRyLCBBbGxvY2F0aW9uRmFpbHVyZU1vZGU6OkFzc2VydCk7CiAgICAgQnV0
dGVyZmx5KiByZXN1bHQgPSBmcm9tQmFzZShiYXNlLCBwcmVDYXBhY2l0eSwgcHJvcGVydHlDYXBh
Y2l0eSk7CiAKICAgICByZXR1cm4gcmVzdWx0OwpAQCAtOTgsNyArOTgsNyBAQCBpbmxpbmUgQnV0
dGVyZmx5KiBCdXR0ZXJmbHk6OmNyZWF0ZVVuaW5pCiBpbmxpbmUgQnV0dGVyZmx5KiBCdXR0ZXJm
bHk6OnRyeUNyZWF0ZShWTSYgdm0sIEpTT2JqZWN0Kiwgc2l6ZV90IHByZUNhcGFjaXR5LCBzaXpl
X3QgcHJvcGVydHlDYXBhY2l0eSwgYm9vbCBoYXNJbmRleGluZ0hlYWRlciwgY29uc3QgSW5kZXhp
bmdIZWFkZXImIGluZGV4aW5nSGVhZGVyLCBzaXplX3QgaW5kZXhpbmdQYXlsb2FkU2l6ZUluQnl0
ZXMpCiB7CiAgICAgc2l6ZV90IHNpemUgPSB0b3RhbFNpemUocHJlQ2FwYWNpdHksIHByb3BlcnR5
Q2FwYWNpdHksIGhhc0luZGV4aW5nSGVhZGVyLCBpbmRleGluZ1BheWxvYWRTaXplSW5CeXRlcyk7
Ci0gICAgdm9pZCogYmFzZSA9IHZtLmpzVmFsdWVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlLmFsbG9j
YXRlTm9uVmlydHVhbCh2bSwgc2l6ZSwgbnVsbHB0ciwgQWxsb2NhdGlvbkZhaWx1cmVNb2RlOjpS
ZXR1cm5OdWxsKTsKKyAgICB2b2lkKiBiYXNlID0gdm0uanNWYWx1ZUdpZ2FjYWdlQXV4aWxpYXJ5
U3BhY2UoKS5hbGxvY2F0ZU5vblZpcnR1YWwodm0sIHNpemUsIG51bGxwdHIsIEFsbG9jYXRpb25G
YWlsdXJlTW9kZTo6UmV0dXJuTnVsbCk7CiAgICAgaWYgKCFiYXNlKQogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKICAgICBCdXR0ZXJmbHkqIHJlc3VsdCA9IGZyb21CYXNlKGJhc2UsIHByZUNhcGFj
aXR5LCBwcm9wZXJ0eUNhcGFjaXR5KTsKQEAgLTE3NCw3ICsxNzQsNyBAQCBpbmxpbmUgQnV0dGVy
Zmx5KiBCdXR0ZXJmbHk6Omdyb3dBcnJheVJpCiAgICAgdm9pZCogdGhlQmFzZSA9IGJhc2UoMCwg
cHJvcGVydHlDYXBhY2l0eSk7CiAgICAgc2l6ZV90IG9sZFNpemUgPSB0b3RhbFNpemUoMCwgcHJv
cGVydHlDYXBhY2l0eSwgaGFkSW5kZXhpbmdIZWFkZXIsIG9sZEluZGV4aW5nUGF5bG9hZFNpemVJ
bkJ5dGVzKTsKICAgICBzaXplX3QgbmV3U2l6ZSA9IHRvdGFsU2l6ZSgwLCBwcm9wZXJ0eUNhcGFj
aXR5LCB0cnVlLCBuZXdJbmRleGluZ1BheWxvYWRTaXplSW5CeXRlcyk7Ci0gICAgdm9pZCogbmV3
QmFzZSA9IHZtLmpzVmFsdWVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlLmFsbG9jYXRlTm9uVmlydHVh
bCh2bSwgbmV3U2l6ZSwgbnVsbHB0ciwgQWxsb2NhdGlvbkZhaWx1cmVNb2RlOjpSZXR1cm5OdWxs
KTsKKyAgICB2b2lkKiBuZXdCYXNlID0gdm0uanNWYWx1ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2Uo
KS5hbGxvY2F0ZU5vblZpcnR1YWwodm0sIG5ld1NpemUsIG51bGxwdHIsIEFsbG9jYXRpb25GYWls
dXJlTW9kZTo6UmV0dXJuTnVsbCk7CiAgICAgaWYgKCFuZXdCYXNlKQogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKICAgICAvLyBGSVhNRTogVGhpcyBwcm9iYWJseSBzaG91bGRuJ3QgYmUgYSBtZW1j
cHkuCkBAIC0yMTEsMTMgKzIxMSwxMyBAQCBpbmxpbmUgQnV0dGVyZmx5KiBCdXR0ZXJmbHk6OnJl
YWxsb2NBcnJhCiAgICAgLy8gT2JqZWN0cyB3aXRoIG5vIHByb3BlcnRpZXMgYXJlIGNvbW1vbiBp
biBhcnJheXMsIGFuZCB3ZSBhcmUgZm9jdXNpbmcgb24gdmVyeSBsYXJnZSBhcnJheSBjcmFmdGVk
IGJ5IHJlcGVhdGluZyBBcnJheSNwdXNoLCBzby4uLiB0aGF0J3MgZmluZSEKICAgICBib29sIGNh
blJlYWxsb2MgPSAhcHJvcGVydHlDYXBhY2l0eSAmJiAhdm0uaGVhcC5tdXRhdG9yU2hvdWxkQmVG
ZW5jZWQoKSAmJiBiaXR3aXNlX2Nhc3Q8SGVhcENlbGwqPih0aGVCYXNlKS0+aXNQcmVjaXNlQWxs
b2NhdGlvbigpOwogICAgIGlmIChjYW5SZWFsbG9jKSB7Ci0gICAgICAgIHZvaWQqIG5ld0Jhc2Ug
PSB2bS5qc1ZhbHVlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZS5yZWFsbG9jYXRlUHJlY2lzZUFsbG9j
YXRpb25Ob25WaXJ0dWFsKHZtLCBiaXR3aXNlX2Nhc3Q8SGVhcENlbGwqPih0aGVCYXNlKSwgbmV3
U2l6ZSwgJmRlZmVycmFsQ29udGV4dCwgQWxsb2NhdGlvbkZhaWx1cmVNb2RlOjpSZXR1cm5OdWxs
KTsKKyAgICAgICAgdm9pZCogbmV3QmFzZSA9IHZtLmpzVmFsdWVHaWdhY2FnZUF1eGlsaWFyeVNw
YWNlKCkucmVhbGxvY2F0ZVByZWNpc2VBbGxvY2F0aW9uTm9uVmlydHVhbCh2bSwgYml0d2lzZV9j
YXN0PEhlYXBDZWxsKj4odGhlQmFzZSksIG5ld1NpemUsICZkZWZlcnJhbENvbnRleHQsIEFsbG9j
YXRpb25GYWlsdXJlTW9kZTo6UmV0dXJuTnVsbCk7CiAgICAgICAgIGlmICghbmV3QmFzZSkKICAg
ICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICByZXR1cm4gZnJvbUJhc2UobmV3QmFz
ZSwgMCwgcHJvcGVydHlDYXBhY2l0eSk7CiAgICAgfQogCi0gICAgdm9pZCogbmV3QmFzZSA9IHZt
LmpzVmFsdWVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlLmFsbG9jYXRlTm9uVmlydHVhbCh2bSwgbmV3
U2l6ZSwgJmRlZmVycmFsQ29udGV4dCwgQWxsb2NhdGlvbkZhaWx1cmVNb2RlOjpSZXR1cm5OdWxs
KTsKKyAgICB2b2lkKiBuZXdCYXNlID0gdm0uanNWYWx1ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2Uo
KS5hbGxvY2F0ZU5vblZpcnR1YWwodm0sIG5ld1NpemUsICZkZWZlcnJhbENvbnRleHQsIEFsbG9j
YXRpb25GYWlsdXJlTW9kZTo6UmV0dXJuTnVsbCk7CiAgICAgaWYgKCFuZXdCYXNlKQogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKICAgICBnY1NhZmVNZW1jcHkoc3RhdGljX2Nhc3Q8SlNWYWx1ZSo+
KG5ld0Jhc2UpLCBzdGF0aWNfY2FzdDxKU1ZhbHVlKj4odGhlQmFzZSksIG9sZFNpemUpOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FjaGVkVHlwZXMuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWNoZWRUeXBlcy5oCShyZXZpc2lv
biAyODYwOTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWNoZWRUeXBlcy5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
OC0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAxOC0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwpAQCAtMzksNiArMzksNyBAQCBjbGFzcyBDYWNoZWRCeXRlY29kZTsK
IGNsYXNzIFNvdXJjZUNvZGVLZXk7CiBjbGFzcyBVbmxpbmtlZENvZGVCbG9jazsKIGNsYXNzIFVu
bGlua2VkRnVuY3Rpb25Db2RlQmxvY2s7CitjbGFzcyBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJs
ZTsKIAogZW51bSBjbGFzcyBTb3VyY2VDb2RlVHlwZTsKIApJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQ2xvbmVkQXJndW1lbnRzLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2xvbmVkQXJndW1lbnRzLmgJKHJldmlzaW9uIDI4NjA5NSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nsb25lZEFyZ3VtZW50cy5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC00Niw3ICs0Niw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vic3Bh
Y2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAgIHN0YXRpY19hc3NlcnQoIUNl
bGxUeXBlOjpuZWVkc0Rlc3RydWN0aW9uLCAiIik7Ci0gICAgICAgIHJldHVybiAmdm0uY2xvbmVk
QXJndW1lbnRzU3BhY2U7CisgICAgICAgIHJldHVybiAmdm0uY2xvbmVkQXJndW1lbnRzU3BhY2Uo
KTsKICAgICB9CiAgICAgCiBwcml2YXRlOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQ29uc29sZU9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0NvbnNvbGVPYmplY3QuaAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29uc29sZU9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0z
Nyw3ICszNyw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9y
KFZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJB
QkxFKENvbnNvbGVPYmplY3QsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0
U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAog
ICAgIHN0YXRpYyBDb25zb2xlT2JqZWN0KiBjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0N1c3RvbUdldHRlclNldHRlci5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0N1c3RvbUdldHRlclNldHRlci5oCShyZXZpc2lvbiAy
ODYwOTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DdXN0b21HZXR0ZXJTZXR0
ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNDMsNyArNDMsNyBAQCBwdWJsaWM6CiAgICAgdGVtcGxh
dGU8dHlwZW5hbWUgQ2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNzPgogICAgIHN0YXRpYyBJc29TdWJz
cGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKLSAgICAgICAgcmV0dXJuICZ2bS5jdXN0
b21HZXR0ZXJTZXR0ZXJTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5jdXN0b21HZXR0ZXJTZXR0
ZXJTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBDdXN0b21HZXR0ZXJTZXR0ZXIqIGNyZWF0
ZShWTSYgdm0sIEN1c3RvbUdldHRlciBjdXN0b21HZXR0ZXIsIEN1c3RvbVNldHRlciBjdXN0b21T
ZXR0ZXIpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9ET01BdHRyaWJ1dGVH
ZXR0ZXJTZXR0ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9ET01BdHRyaWJ1dGVHZXR0ZXJTZXR0ZXIuaAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRE9NQXR0cmlidXRlR2V0dGVyU2V0dGVyLmgJKHdvcmtp
bmcgY29weSkKQEAgLTQzLDcgKzQzLDcgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1l
IENlbGxUeXBlLCBTdWJzcGFjZUFjY2Vzcz4KICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNw
YWNlRm9yKFZNJiB2bSkKICAgICB7Ci0gICAgICAgIHJldHVybiAmdm0uZG9tQXR0cmlidXRlR2V0
dGVyU2V0dGVyU3BhY2U7CisgICAgICAgIHJldHVybiAmdm0uZG9tQXR0cmlidXRlR2V0dGVyU2V0
dGVyU3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgRE9NQXR0cmlidXRlR2V0dGVyU2V0dGVy
KiBjcmVhdGUoVk0mIHZtLCBDdXN0b21HZXR0ZXIgY3VzdG9tR2V0dGVyLCBDdXN0b21TZXR0ZXIg
Y3VzdG9tU2V0dGVyLCBET01BdHRyaWJ1dGVBbm5vdGF0aW9uIGRvbUF0dHJpYnV0ZSkKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVJbnN0YW5jZS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVJbnN0YW5jZS5oCShyZXZpc2lv
biAyODYwOTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlSW5zdGFuY2Uu
aAkod29ya2luZyBjb3B5KQpAQCAtMzcsNyArMzcsNyBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8
dHlwZW5hbWUgQ2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNzIG1vZGU+CiAgICAgc3RhdGljIElzb1N1
YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewotICAgICAgICByZXR1cm4gJnZtLmRh
dGVJbnN0YW5jZVNwYWNlOworICAgICAgICByZXR1cm4gJnZtLmRhdGVJbnN0YW5jZVNwYWNlKCk7
CiAgICAgfQogCiAgICAgc3RhdGljIERhdGVJbnN0YW5jZSogY3JlYXRlKFZNJiB2bSwgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUsIGRvdWJsZSBkYXRlKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvRGF0ZVByb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0RhdGVQcm90b3R5cGUuaAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZVByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBA
IC0zNSw3ICszNSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNl
Rm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NI
QVJBQkxFKERhdGVQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2Jq
ZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0K
IAogICAgIHN0YXRpYyBEYXRlUHJvdG90eXBlKiBjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0RpcmVjdEFyZ3VtZW50cy5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RpcmVjdEFyZ3VtZW50cy5oCShyZXZpc2lvbiAyODYw
OTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EaXJlY3RBcmd1bWVudHMuaAko
d29ya2luZyBjb3B5KQpAQCAtNTAsNyArNTAsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIENvbXBs
ZXRlU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAgIHN0YXRpY19h
c3NlcnQoIUNlbGxUeXBlOjpuZWVkc0Rlc3RydWN0aW9uLCAiIik7Ci0gICAgICAgIHJldHVybiAm
dm0udmFyaWFibGVTaXplZENlbGxTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS52YXJpYWJsZVNp
emVkQ2VsbFNwYWNlKCk7CiAgICAgfQogCiAgICAgLy8gQ3JlYXRlcyBhbiBhcmd1bWVudHMgb2Jq
ZWN0IGJ1dCBsZWF2ZXMgaXQgdW5pbml0aWFsaXplZC4gVGhpcyBpcyBkYW5nZXJvdXMgaWYgd2Ug
R0MgcmlnaHQKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yUHJvdG90
eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JQ
cm90b3R5cGUuaAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvRXJyb3JQcm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtNDUsNyArNDUsNyBAQCBw
dWJsaWM6CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAg
ewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShFcnJvclByb3Rv
dHlwZUJhc2UsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7Cisg
ICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIERFQ0xB
UkVfSU5GTzsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvbi5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvbi5o
CShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNl
cHRpb24uaAkod29ya2luZyBjb3B5KQpAQCAtNDAsNyArNDAsNyBAQCBwdWJsaWM6CiAgICAgdGVt
cGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNzIG1vZGU+CiAgICAgc3RhdGlj
IElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewotICAgICAgICByZXR1cm4g
JnZtLmV4Y2VwdGlvblNwYWNlOworICAgICAgICByZXR1cm4gJnZtLmV4Y2VwdGlvblNwYWNlKCk7
CiAgICAgfQogCiAgICAgZW51bSBTdGFja0NhcHR1cmVBY3Rpb24gewpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9uU2NvcGUuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvblNjb3BlLmNwcAkocmV2aXNpb24g
Mjg2MDk1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9uU2NvcGUu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxNi0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAxNi0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
RmluYWxpemF0aW9uUmVnaXN0cnlQcm90b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9GaW5hbGl6YXRpb25SZWdpc3RyeVByb3RvdHlwZS5oCShyZXZp
c2lvbiAyODYwOTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GaW5hbGl6YXRp
b25SZWdpc3RyeVByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw3ICszNyw3IEBAIHB1
YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7
CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEZpbmFsaXphdGlv
blJlZ2lzdHJ5UHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVj
dFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAK
ICAgICBzdGF0aWMgRmluYWxpemF0aW9uUmVnaXN0cnlQcm90b3R5cGUqIGNyZWF0ZShWTSYgdm0s
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlKQpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25FeGVjdXRhYmxlLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25FeGVjdXRh
YmxlLmgJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0Z1bmN0aW9uRXhlY3V0YWJsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00Niw3ICs0Niw3IEBAIHB1
YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vic3BhY2VBY2Nlc3M+CiAg
ICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewotICAgICAg
ICByZXR1cm4gJnZtLmZ1bmN0aW9uRXhlY3V0YWJsZVNwYWNlLnNwYWNlOworICAgICAgICByZXR1
cm4gJnZtLmZ1bmN0aW9uRXhlY3V0YWJsZVNwYWNlKCkuc3BhY2U7CiAgICAgfQogCiAgICAgc3Rh
dGljIEZ1bmN0aW9uRXhlY3V0YWJsZSogY3JlYXRlKFZNJiB2bSwgU2NyaXB0RXhlY3V0YWJsZSog
dG9wTGV2ZWxFeGVjdXRhYmxlLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIFVubGlua2VkRnVu
Y3Rpb25FeGVjdXRhYmxlKiB1bmxpbmtlZEV4ZWN1dGFibGUsIEludHJpbnNpYyBpbnRyaW5zaWMs
IGJvb2wgaXNJbnNpZGVPcmRpbmFyeUZ1bmN0aW9uKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5o
CShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5l
cmF0b3JGdW5jdGlvblByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00MCw3ICs0MCw3IEBA
IHB1YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAg
ICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEdlbmVyYXRv
ckZ1bmN0aW9uUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVj
dFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAK
ICAgICBzdGF0aWMgR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUqIGNyZWF0ZShWTSYgdm0sIFN0
cnVjdHVyZSogc3RydWN0dXJlKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
R2VuZXJhdG9yUHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvR2VuZXJhdG9yUHJvdG90eXBlLmgJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvclByb3RvdHlwZS5oCSh3b3JraW5nIGNv
cHkpCkBAIC00MSw3ICs0MSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1
YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQ
QUNFX1NIQVJBQkxFKEdlbmVyYXRvclByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAm
dm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNl
KCk7CiAgICAgfQogCiAgICAgc3RhdGljIEdlbmVyYXRvclByb3RvdHlwZSogY3JlYXRlKFZNJiB2
bSwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0dldHRlclNldHRlci5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dldHRlclNldHRlci5oCShyZXZpc2lvbiAyODYwOTUp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZXR0ZXJTZXR0ZXIuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNTksNyArNTksNyBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUg
Q2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNzPgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3Bh
Y2VGb3IoVk0mIHZtKQogICAgIHsKLSAgICAgICAgcmV0dXJuICZ2bS5nZXR0ZXJTZXR0ZXJTcGFj
ZTsKKyAgICAgICAgcmV0dXJuICZ2bS5nZXR0ZXJTZXR0ZXJTcGFjZSgpOwogICAgIH0KIAogICAg
IHN0YXRpYyBHZXR0ZXJTZXR0ZXIqIGNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEpTT2JqZWN0KiBnZXR0ZXIsIEpTT2JqZWN0KiBzZXR0ZXIpCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9IYXNoTWFwSW1wbC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0hhc2hNYXBJbXBsLmgJKHJldmlzaW9uIDI4NjA5
NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0hhc2hNYXBJbXBsLmgJKHdvcmtp
bmcgY29weSkKQEAgLTIxMyw3ICsyMTMsNyBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBhdXRv
IHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgICAgIHNpemVfdCBhbGxvY2F0
aW9uU2l6ZSA9IEhhc2hNYXBCdWZmZXI6OmFsbG9jYXRpb25TaXplKGNhcGFjaXR5KTsKLSAgICAg
ICAgdm9pZCogZGF0YSA9IHZtLmpzVmFsdWVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlLmFsbG9jYXRl
Tm9uVmlydHVhbCh2bSwgYWxsb2NhdGlvblNpemUsIG51bGxwdHIsIEFsbG9jYXRpb25GYWlsdXJl
TW9kZTo6UmV0dXJuTnVsbCk7CisgICAgICAgIHZvaWQqIGRhdGEgPSB2bS5qc1ZhbHVlR2lnYWNh
Z2VBdXhpbGlhcnlTcGFjZSgpLmFsbG9jYXRlTm9uVmlydHVhbCh2bSwgYWxsb2NhdGlvblNpemUs
IG51bGxwdHIsIEFsbG9jYXRpb25GYWlsdXJlTW9kZTo6UmV0dXJuTnVsbCk7CiAgICAgICAgIGlm
ICghZGF0YSkgewogICAgICAgICAgICAgdGhyb3dPdXRPZk1lbW9yeUVycm9yKGdsb2JhbE9iamVj
dCwgc2NvcGUpOwogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9JbnRlcm5hbEZ1bmN0aW9uLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50ZXJuYWxGdW5jdGlvbi5oCShyZXZpc2lvbiAy
ODYwOTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRlcm5hbEZ1bmN0aW9u
LmgJKHdvcmtpbmcgY29weSkKQEAgLTQxLDcgKzQxLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJ
c29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAgICAgc3RhdGljX2Fz
c2VydChzaXplb2YoQ2VsbFR5cGUpID09IHNpemVvZihJbnRlcm5hbEZ1bmN0aW9uKSwgIkludGVy
bmFsRnVuY3Rpb24gc3ViY2xhc3NlcyB0aGF0IGFkZCBmaWVsZHMgbmVlZCB0byBvdmVycmlkZSBz
dWJzcGFjZUZvcjw+KCkiKTsKLSAgICAgICAgcmV0dXJuICZ2bS5pbnRlcm5hbEZ1bmN0aW9uU3Bh
Y2U7CisgICAgICAgIHJldHVybiAmdm0uaW50ZXJuYWxGdW5jdGlvblNwYWNlKCk7CiAgICAgfQog
CiAgICAgREVDTEFSRV9FWFBPUlRfSU5GTzsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0ludGxDb2xsYXRvclByb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0ludGxDb2xsYXRvclByb3RvdHlwZS5oCShyZXZpc2lvbiAyODYw
OTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsQ29sbGF0b3JQcm90b3R5
cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMp
IDIwMTUgQW5keSBWYW5XYWdvbmVyIChhbmR5QHZhbndhZ29uZXIuZmFtaWx5KQotICogQ29weXJp
Z2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAxOS0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzksNyArMzksNyBAQCBwdWJsaWM6CiAgICAgc3Rh
dGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFU
SUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShJbnRsQ29sbGF0b3JQcm90b3R5cGUsIEJh
c2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVy
biAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBJbnRsQ29sbGF0
b3JQcm90b3R5cGUqIGNyZWF0ZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKik7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXRQcm90
b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRs
RGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUuaAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlLmgJKHdvcmtp
bmcgY29weSkKQEAgLTEsNiArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDE1IEFuZHkg
VmFuV2Fnb25lciAoYW5keUB2YW53YWdvbmVyLmZhbWlseSkKLSAqIENvcHlyaWdodCAoQykgMjAx
OSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkt
MjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTM5LDcgKzM5LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJc29TdWJz
cGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9J
U09fU1VCU1BBQ0VfU0hBUkFCTEUoSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlLCBCYXNlKTsK
LSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZt
LnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgSW50bERhdGVUaW1lRm9y
bWF0UHJvdG90eXBlKiBjcmVhdGUoVk0mLCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSopOwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERpc3BsYXlOYW1lc1Byb3Rv
dHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxE
aXNwbGF5TmFtZXNQcm90b3R5cGUuaAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSW50bERpc3BsYXlOYW1lc1Byb3RvdHlwZS5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAtMjAyMSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
QEAgLTM4LDcgKzM4LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3Bh
Y2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0Vf
U0hBUkFCTEUoSW50bERpc3BsYXlOYW1lc1Byb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVy
biAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNw
YWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIEludGxEaXNwbGF5TmFtZXNQcm90b3R5cGUqIGNy
ZWF0ZShWTSYsIFN0cnVjdHVyZSopOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSW50bExpc3RGb3JtYXRQcm90b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9JbnRsTGlzdEZvcm1hdFByb3RvdHlwZS5oCShyZXZpc2lvbiAyODYw
OTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTGlzdEZvcm1hdFByb3Rv
dHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAo
QykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMjAtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKQEAgLTM4LDcgKzM4LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJ
c29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FT
U0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSW50bExpc3RGb3JtYXRQcm90b3R5cGUsIEJhc2Up
OwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAm
dm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBJbnRsTGlzdEZvcm1h
dFByb3RvdHlwZSogY3JlYXRlKFZNJiwgU3RydWN0dXJlKik7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9JbnRsTG9jYWxlUHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bExvY2FsZVByb3RvdHlwZS5oCShyZXZpc2lv
biAyODYwOTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTG9jYWxlUHJv
dG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0
IChDKSAyMDIwIFNvbnkgSW50ZXJhY3RpdmUgRW50ZXJ0YWlubWVudCBJbmMuCisgKiBDb3B5cmln
aHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCkBAIC0zOCw3ICszOSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMg
SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19B
U1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEludGxMb2NhbGVQcm90b3R5cGUsIEJhc2UpOwot
ICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0u
cGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBJbnRsTG9jYWxlUHJvdG90
eXBlKiBjcmVhdGUoVk0mLCBTdHJ1Y3R1cmUqKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlLmgJKHJl
dmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1i
ZXJGb3JtYXRQcm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMSw2ICsxLDYgQEAKIC8qCiAg
KiBDb3B5cmlnaHQgKEMpIDIwMTUgQW5keSBWYW5XYWdvbmVyIChhbmR5QHZhbndhZ29uZXIuZmFt
aWx5KQotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAxOS0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzksNyArMzksNyBAQCBw
dWJsaWM6CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAg
ewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShJbnRsTnVtYmVy
Rm9ybWF0UHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNw
YWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAg
ICBzdGF0aWMgSW50bE51bWJlckZvcm1hdFByb3RvdHlwZSogY3JlYXRlKFZNJiwgSlNHbG9iYWxP
YmplY3QqLCBTdHJ1Y3R1cmUqKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0ludGxPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9JbnRsT2JqZWN0LmgJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0ludGxPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtMSw2ICsxLDYgQEAKIC8q
CiAgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQW5keSBWYW5XYWdvbmVyIChhbmR5QHZhbndhZ29uZXIu
ZmFtaWx5KQotICogQ29weXJpZ2h0IChDKSAyMDE5LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE5LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDIwIFNvbnkgSW50ZXJhY3RpdmUgRW50
ZXJ0YWlubWVudCBJbmMuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC03Niw3ICs3Niw3IEBAIHB1Ymxp
YzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAg
ICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEludGxPYmplY3QsIEJh
c2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVy
biAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBJbnRsT2JqZWN0
KiBjcmVhdGUoVk0mLCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSopOwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFBsdXJhbFJ1bGVzUHJvdG90eXBlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFBsdXJhbFJ1bGVzUHJv
dG90eXBlLmgJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0ludGxQbHVyYWxSdWxlc1Byb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEs
NiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxOCBBbmR5IFZhbldhZ29uZXIgKGFuZHlAdmFu
d2Fnb25lci5mYW1pbHkpCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE5LTIwMjEgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zOSw3
ICszOSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZN
JiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxF
KEludGxQbHVyYWxSdWxlc1Byb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxh
aW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAg
ICAgfQogCiAgICAgc3RhdGljIEludGxQbHVyYWxSdWxlc1Byb3RvdHlwZSogY3JlYXRlKFZNJiwg
SlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0ludGxSZWxhdGl2ZVRpbWVGb3JtYXRQcm90b3R5cGUuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsUmVsYXRpdmVUaW1lRm9ybWF0UHJv
dG90eXBlLmgJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0ludGxSZWxhdGl2ZVRpbWVGb3JtYXRQcm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAt
MSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMjAgU29ueSBJbnRlcmFjdGl2ZSBF
bnRlcnRhaW5tZW50IEluYy4KKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM4LDcg
KzM5LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0m
IHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUo
SW50bFJlbGF0aXZlVGltZUZvcm1hdFByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAm
dm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNl
KCk7CiAgICAgfQogCiAgICAgc3RhdGljIEludGxSZWxhdGl2ZVRpbWVGb3JtYXRQcm90b3R5cGUq
IGNyZWF0ZShWTSYsIFN0cnVjdHVyZSopOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSW50bFNlZ21lbnRJdGVyYXRvclByb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxTZWdtZW50SXRlcmF0b3JQcm90b3R5cGUuaAko
cmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFNl
Z21lbnRJdGVyYXRvclByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAog
LyoKLSAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMjAtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM4LDcgKzM4LDcgQEAgcHVi
bGljOgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsK
ICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSW50bFNlZ21lbnRJ
dGVyYXRvclByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RT
cGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAg
ICAgc3RhdGljIEludGxTZWdtZW50SXRlcmF0b3JQcm90b3R5cGUqIGNyZWF0ZShWTSYsIFN0cnVj
dHVyZSopOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFNlZ21lbnRl
clByb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0ludGxTZWdtZW50ZXJQcm90b3R5cGUuaAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFNlZ21lbnRlclByb3RvdHlwZS5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAtMjAyMSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
QEAgLTM4LDcgKzM4LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3Bh
Y2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0Vf
U0hBUkFCTEUoSW50bFNlZ21lbnRlclByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAm
dm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNl
KCk7CiAgICAgfQogCiAgICAgc3RhdGljIEludGxTZWdtZW50ZXJQcm90b3R5cGUqIGNyZWF0ZShW
TSYsIFN0cnVjdHVyZSopOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50
bFNlZ21lbnRzUHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSW50bFNlZ21lbnRzUHJvdG90eXBlLmgJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxTZWdtZW50c1Byb3RvdHlwZS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAtMjAyMSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTM4LDcgKzM4LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSog
c3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VC
U1BBQ0VfU0hBUkFCTEUoSW50bFNlZ21lbnRzUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0
dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0
U3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgSW50bFNlZ21lbnRzUHJvdG90eXBlKiBjcmVh
dGUoVk0mLCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSopOwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSXRlcmF0b3JQcm90b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JdGVyYXRvclByb3RvdHlwZS5oCShyZXZpc2lvbiAy
ODYwOTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JdGVyYXRvclByb3RvdHlw
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw3ICszOSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMg
SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19B
U1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEl0ZXJhdG9yUHJvdG90eXBlLCBCYXNlKTsKLSAg
ICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBs
YWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgSXRlcmF0b3JQcm90b3R5cGUq
IGNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSog
c3RydWN0dXJlKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5j
cHAJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
QXJyYXkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Niw3ICs1Niw3IEBAIEpTQXJyYXkqIEpTQXJy
YXk6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQKICAgICAgICAgICAgIHx8IGhhc0NvbnRpZ3VvdXMo
aW5kZXhpbmdUeXBlKSk7CiAKICAgICAgICAgdW5zaWduZWQgdmVjdG9yTGVuZ3RoID0gQnV0dGVy
Zmx5OjpvcHRpbWFsQ29udGlndW91c1ZlY3Rvckxlbmd0aChzdHJ1Y3R1cmUsIGluaXRpYWxMZW5n
dGgpOwotICAgICAgICB2b2lkKiB0ZW1wID0gdm0uanNWYWx1ZUdpZ2FjYWdlQXV4aWxpYXJ5U3Bh
Y2UuYWxsb2NhdGVOb25WaXJ0dWFsKAorICAgICAgICB2b2lkKiB0ZW1wID0gdm0uanNWYWx1ZUdp
Z2FjYWdlQXV4aWxpYXJ5U3BhY2UoKS5hbGxvY2F0ZU5vblZpcnR1YWwoCiAgICAgICAgICAgICB2
bSwKICAgICAgICAgICAgIEJ1dHRlcmZseTo6dG90YWxTaXplKDAsIG91dE9mTGluZVN0b3JhZ2Us
IHRydWUsIHZlY3Rvckxlbmd0aCAqIHNpemVvZihFbmNvZGVkSlNWYWx1ZSkpLAogICAgICAgICAg
ICAgZGVmZXJyYWxDb250ZXh0LCBBbGxvY2F0aW9uRmFpbHVyZU1vZGU6OlJldHVybk51bGwpOwpA
QCAtNzgsNyArNzgsNyBAQCBKU0FycmF5KiBKU0FycmF5Ojp0cnlDcmVhdGVVbmluaXRpYWxpemVk
CiAgICAgICAgICAgICB8fCBpbmRleGluZ1R5cGUgPT0gQXJyYXlXaXRoQXJyYXlTdG9yYWdlKTsK
ICAgICAgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBpbmRleEJpYXMgPSAwOwogICAgICAg
ICB1bnNpZ25lZCB2ZWN0b3JMZW5ndGggPSBBcnJheVN0b3JhZ2U6Om9wdGltYWxWZWN0b3JMZW5n
dGgoaW5kZXhCaWFzLCBzdHJ1Y3R1cmUsIGluaXRpYWxMZW5ndGgpOwotICAgICAgICB2b2lkKiB0
ZW1wID0gdm0uanNWYWx1ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UuYWxsb2NhdGVOb25WaXJ0dWFs
KAorICAgICAgICB2b2lkKiB0ZW1wID0gdm0uanNWYWx1ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2Uo
KS5hbGxvY2F0ZU5vblZpcnR1YWwoCiAgICAgICAgICAgICB2bSwKICAgICAgICAgICAgIEJ1dHRl
cmZseTo6dG90YWxTaXplKGluZGV4Qmlhcywgb3V0T2ZMaW5lU3RvcmFnZSwgdHJ1ZSwgQXJyYXlT
dG9yYWdlOjpzaXplRm9yKHZlY3Rvckxlbmd0aCkpLAogICAgICAgICAgICAgZGVmZXJyYWxDb250
ZXh0LCBBbGxvY2F0aW9uRmFpbHVyZU1vZGU6OlJldHVybk51bGwpOwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuaAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5oCSh3b3JraW5nIGNvcHkpCkBAIC01MSw3
ICs1MSw3IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vic3Bh
Y2VBY2Nlc3M+CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAg
ICAgewotICAgICAgICByZXR1cm4gJnZtLmFycmF5U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0u
YXJyYXlTcGFjZSgpOwogICAgIH0KICAgICAgICAgCiBwcm90ZWN0ZWQ6CkBAIC0yNDQsNyArMjQ0
LDcgQEAgaW5saW5lIEpTQXJyYXkqIEpTQXJyYXk6OnRyeUNyZWF0ZShWTSYgdgogICAgICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICAgICAgdW5zaWduZWQgdmVjdG9yTGVuZ3RoID0gQnV0
dGVyZmx5OjpvcHRpbWFsQ29udGlndW91c1ZlY3Rvckxlbmd0aChzdHJ1Y3R1cmUsIHZlY3Rvckxl
bmd0aEhpbnQpOwotICAgICAgICB2b2lkKiB0ZW1wID0gdm0uanNWYWx1ZUdpZ2FjYWdlQXV4aWxp
YXJ5U3BhY2UuYWxsb2NhdGVOb25WaXJ0dWFsKAorICAgICAgICB2b2lkKiB0ZW1wID0gdm0uanNW
YWx1ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UoKS5hbGxvY2F0ZU5vblZpcnR1YWwoCiAgICAgICAg
ICAgICB2bSwKICAgICAgICAgICAgIEJ1dHRlcmZseTo6dG90YWxTaXplKDAsIG91dE9mTGluZVN0
b3JhZ2UsIHRydWUsIHZlY3Rvckxlbmd0aCAqIHNpemVvZihFbmNvZGVkSlNWYWx1ZSkpLAogICAg
ICAgICAgICAgbnVsbHB0ciwgQWxsb2NhdGlvbkZhaWx1cmVNb2RlOjpSZXR1cm5OdWxsKTsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJQcm90b3R5cGUu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVm
ZmVyUHJvdG90eXBlLmgJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJQcm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTYgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMjEgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0z
Nyw3ICszNyw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9y
KFZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJB
QkxFKEpTQXJyYXlCdWZmZXJQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBs
YWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwog
ICAgIH0KIAogICAgIHN0YXRpYyBKU0FycmF5QnVmZmVyUHJvdG90eXBlKiBjcmVhdGUoVk0mLCBK
U0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIEFycmF5QnVmZmVyU2hhcmluZ01vZGUgPSBBcnJh
eUJ1ZmZlclNoYXJpbmdNb2RlOjpEZWZhdWx0KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyVmlldy5jcHAJKHJldmlzaW9uIDI4NjA5
NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNjQsNyArNjQsNyBAQCBKU0FycmF5QnVmZmVyVmlldzo6Q29u
c3RydWN0aW9uQ29udGV4dDo6CiAgICAgICAgIC8vIEF0dGVtcHQgR0MgYWxsb2NhdGlvbi4KICAg
ICAgICAgdm9pZCogdGVtcDsKICAgICAgICAgc2l6ZV90IHNpemUgPSBzaXplT2YobGVuZ3RoLCBl
bGVtZW50U2l6ZSk7Ci0gICAgICAgIHRlbXAgPSB2bS5wcmltaXRpdmVHaWdhY2FnZUF1eGlsaWFy
eVNwYWNlLmFsbG9jYXRlTm9uVmlydHVhbCh2bSwgc2l6ZSwgbnVsbHB0ciwgQWxsb2NhdGlvbkZh
aWx1cmVNb2RlOjpSZXR1cm5OdWxsKTsKKyAgICAgICAgdGVtcCA9IHZtLnByaW1pdGl2ZUdpZ2Fj
YWdlQXV4aWxpYXJ5U3BhY2UoKS5hbGxvY2F0ZU5vblZpcnR1YWwodm0sIHNpemUsIG51bGxwdHIs
IEFsbG9jYXRpb25GYWlsdXJlTW9kZTo6UmV0dXJuTnVsbCk7CiAgICAgICAgIGlmICghdGVtcCkK
ICAgICAgICAgICAgIHJldHVybjsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNCaWdJbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQmlnSW50LmNwcAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNCaWdJbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTcsNyArMTE3LDcg
QEAgaW5saW5lIEpTQmlnSW50KiBKU0JpZ0ludDo6Y3JlYXRlV2l0aExlbgogICAgIH0KIAogICAg
IEFTU0VSVChsZW5ndGggPD0gbWF4TGVuZ3RoKTsKLSAgICB2b2lkKiBkYXRhID0gdm0ucHJpbWl0
aXZlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZS5hbGxvY2F0ZU5vblZpcnR1YWwodm0sIGxlbmd0aCAq
IHNpemVvZihEaWdpdCksIG51bGxwdHIsIEFsbG9jYXRpb25GYWlsdXJlTW9kZTo6UmV0dXJuTnVs
bCk7CisgICAgdm9pZCogZGF0YSA9IHZtLnByaW1pdGl2ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2Uo
KS5hbGxvY2F0ZU5vblZpcnR1YWwodm0sIGxlbmd0aCAqIHNpemVvZihEaWdpdCksIG51bGxwdHIs
IEFsbG9jYXRpb25GYWlsdXJlTW9kZTo6UmV0dXJuTnVsbCk7CiAgICAgaWYgKFVOTElLRUxZKCFk
YXRhKSkgewogICAgICAgICBpZiAobnVsbE9yR2xvYmFsT2JqZWN0Rm9yT09NKSB7CiAgICAgICAg
ICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JpZ0ludC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQmlnSW50LmgJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQmlnSW50LmgJKHdvcmtpbmcgY29weSkKQEAg
LTU2LDcgKzU2LDcgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlLCBT
dWJzcGFjZUFjY2Vzcz4KICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2
bSkKICAgICB7Ci0gICAgICAgIHJldHVybiAmdm0uYmlnSW50U3BhY2U7CisgICAgICAgIHJldHVy
biAmdm0uYmlnSW50U3BhY2UoKTsKICAgICB9CiAKICAgICBlbnVtIGNsYXNzIEluaXRpYWxpemF0
aW9uVHlwZSB7IE5vbmUsIFdpdGhaZXJvIH07CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0NhbGxlZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTQ2FsbGVlLmgJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTQ2FsbGVlLmgJKHdvcmtpbmcgY29weSkKQEAgLTUwLDcgKzUwLDcgQEAg
cHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlLCBTdWJzcGFjZUFjY2Vzcz4K
ICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7Ci0gICAg
ICAgIHJldHVybiAmdm0uY2FsbGVlU3BhY2U7CisgICAgICAgIHJldHVybiAmdm0uY2FsbGVlU3Bh
Y2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgSlNDYWxsZWUqIGNyZWF0ZShWTSYgdm0sIEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTU2NvcGUqIHNjb3BlKQpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRhVmlld1Byb3RvdHlwZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0YVZpZXdQcm90b3R5cGUuaAkocmV2
aXNpb24gMjg2MDk1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRhVmll
d1Byb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHly
aWdodCAoQykgMjAxMy0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAxMy0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
CiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzgsNyArMzgsNyBAQCBwdWJsaWM6CiAg
ICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewogICAgICAg
ICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU0RhdGFWaWV3UHJvdG90eXBl
LCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICBy
ZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgSlNEYXRh
Vmlld1Byb3RvdHlwZSogY3JlYXRlKFZNJiwgU3RydWN0dXJlKik7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oCShyZXZpc2lvbiAyODYwOTUpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmgJKHdvcmtpbmcgY29weSkK
QEAgLTY2LDcgKzY2LDcgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBl
LCBTdWJzcGFjZUFjY2Vzcz4KICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZN
JiB2bSkKICAgICB7Ci0gICAgICAgIHJldHVybiAmdm0uZnVuY3Rpb25TcGFjZTsKKyAgICAgICAg
cmV0dXJuICZ2bS5mdW5jdGlvblNwYWNlKCk7CiAgICAgfQogICAgIAogICAgIHR5cGVkZWYgSlND
YWxsZWUgQmFzZTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJp
Y1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b3R5cGUuaAkocmV2aXNp
b24gMjg2MDk1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlw
ZWRBcnJheVZpZXdQcm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zOCw3ICszOCw3IEBAIHB1Ymxp
YzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAg
ICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTR2VuZXJpY1R5cGVk
QXJyYXlWaWV3UHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVj
dFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAK
ICAgICBzdGF0aWMgSlNHZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b3R5cGUqIGNyZWF0ZSgKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsTGV4aWNhbEVudmlyb25t
ZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9i
YWxMZXhpY2FsRW52aXJvbm1lbnQuaAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQuaAkod29ya2luZyBj
b3B5KQpAQCAtMzgsNyArMzgsNyBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2Vs
bFR5cGUsIFN1YnNwYWNlQWNjZXNzIG1vZGU+CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJz
cGFjZUZvcihWTSYgdm0pCiAgICAgewotICAgICAgICByZXR1cm4gJnZtLmdsb2JhbExleGljYWxF
bnZpcm9ubWVudFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLmdsb2JhbExleGljYWxFbnZpcm9u
bWVudFNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIEpTR2xvYmFsTGV4aWNhbEVudmlyb25t
ZW50KiBjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNTY29wZSogcGFyZW50
U2NvcGUpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ltbXV0YWJsZUJ1
dHRlcmZseS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
SW1tdXRhYmxlQnV0dGVyZmx5LmgJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTSW1tdXRhYmxlQnV0dGVyZmx5LmgJKHdvcmtpbmcgY29weSkKQEAg
LTE1Myw3ICsxNTMsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIENvbXBsZXRlU3Vic3BhY2UqIHN1
YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAgIC8vIFdlIGFsbG9jYXRlIG91dCBvZiB0
aGUgSlNWYWx1ZSBnaWdhY2FnZSBhcyBvdGhlciBjb2RlIGV4cGVjdHMgYWxsIGJ1dHRlcmZsaWVz
IHRvIGxpdmUgdGhlcmUuCi0gICAgICAgIHJldHVybiAmdm0uaW1tdXRhYmxlQnV0dGVyZmx5SlNW
YWx1ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0uaW1tdXRhYmxl
QnV0dGVyZmx5SlNWYWx1ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UoKTsKICAgICB9CiAKICAgICAv
LyBPbmx5IGNhbGwgdGhpcyBpZiB5b3UganVzdCBhbGxvY2F0ZWQgdGhpcyBidXR0ZXJmbHkuCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xleGljYWxFbnZpcm9ubWVudC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTGV4aWNhbEVu
dmlyb25tZW50LmgJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTTGV4aWNhbEVudmlyb25tZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDcgKzQ0
LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBDb21wbGV0ZVN1YnNwYWNlKiBzdWJzcGFjZUZvcihW
TSYgdm0pCiAgICAgewogICAgICAgICBzdGF0aWNfYXNzZXJ0KCFDZWxsVHlwZTo6bmVlZHNEZXN0
cnVjdGlvbiwgIiIpOwotICAgICAgICByZXR1cm4gJnZtLnZhcmlhYmxlU2l6ZWRDZWxsU3BhY2U7
CisgICAgICAgIHJldHVybiAmdm0udmFyaWFibGVTaXplZENlbGxTcGFjZSgpOwogICAgIH0KIAog
ICAgIHVzaW5nIEJhc2UgPSBKU1N5bWJvbFRhYmxlT2JqZWN0OwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVMb2FkZXIuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZUxvYWRlci5oCShyZXZpc2lvbiAyODYwOTUp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZUxvYWRlci5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC00NCw3ICs0NCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vic3Bh
Y2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNP
X1NVQlNQQUNFX1NIQVJBQkxFKEpTTW9kdWxlTG9hZGVyLCBCYXNlKTsKLSAgICAgICAgcmV0dXJu
ICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3Bh
Y2UoKTsKICAgICB9CiAKICAgICBlbnVtIFN0YXR1cyB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU09OT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNPTk9iamVjdC5oCShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09OT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTM4
LDcgKzM4LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3Io
Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFC
TEUoSlNPTk9iamVjdCwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFj
ZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAg
c3RhdGljIEpTT05PYmplY3QqIGNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3RJbmxpbmVzLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3RJbmxpbmVz
LmgJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
T2JqZWN0SW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC00MSw3ICs0MSw3IEBAIHRlbXBsYXRl
PHR5cGVuYW1lIENlbGxUeXBlLCBTdWJzcGFjZUFjY2UKIENvbXBsZXRlU3Vic3BhY2UqIEpTRmlu
YWxPYmplY3Q6OnN1YnNwYWNlRm9yKFZNJiB2bSkKIHsKICAgICBzdGF0aWNfYXNzZXJ0KCFDZWxs
VHlwZTo6bmVlZHNEZXN0cnVjdGlvbik7Ci0gICAgcmV0dXJuICZ2bS5jZWxsU3BhY2U7CisgICAg
cmV0dXJuICZ2bS5jZWxsU3BhY2UoKTsKIH0KIAogLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIv
I3NlYy1jcmVhdGVsaXN0ZnJvbWFycmF5bGlrZQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNQcm9taXNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNQcm9taXNlLmgJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw3ICszNyw3
IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vic3BhY2VBY2Nl
c3MgbW9kZT4KICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAg
ICB7Ci0gICAgICAgIHJldHVybiAmdm0ucHJvbWlzZVNwYWNlOworICAgICAgICByZXR1cm4gJnZt
LnByb21pc2VTcGFjZSgpOwogICAgIH0KIAogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBK
U1Byb21pc2UqIGNyZWF0ZShWTSYsIFN0cnVjdHVyZSopOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNQcm9taXNlUHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9taXNlUHJvdG90eXBlLmgJKHJldmlzaW9uIDI4
NjA5NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZVByb3RvdHlw
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxMy0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAxMy0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzgsNyArMzgsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGlj
IElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNf
QVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Byb21pc2VQcm90b3R5cGUsIEJhc2UpOwot
ICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0u
cGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBKU1Byb21pc2VQcm90b3R5
cGUqIGNyZWF0ZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKik7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUVudW1lcmF0b3IuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1l
RW51bWVyYXRvci5jcHAJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lRW51bWVyYXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTM4LDcgKzM4LDcgQEAgSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yKiBKU1Byb3BlcnR5TmFtZQog
ICAgIHVuc2lnbmVkIHByb3BlcnR5TmFtZXNCdWZmZXJTaXplSW5CeXRlcyA9IENoZWNrZWQ8dW5z
aWduZWQ+KHByb3BlcnR5TmFtZXNTaXplKSAqIHNpemVvZihXcml0ZUJhcnJpZXI8SlNTdHJpbmc+
KTsKICAgICBXcml0ZUJhcnJpZXI8SlNTdHJpbmc+KiBwcm9wZXJ0eU5hbWVzQnVmZmVyID0gbnVs
bHB0cjsKICAgICBpZiAocHJvcGVydHlOYW1lc0J1ZmZlclNpemVJbkJ5dGVzKSB7Ci0gICAgICAg
IHByb3BlcnR5TmFtZXNCdWZmZXIgPSBzdGF0aWNfY2FzdDxXcml0ZUJhcnJpZXI8SlNTdHJpbmc+
Kj4odm0uanNWYWx1ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UuYWxsb2NhdGVOb25WaXJ0dWFsKHZt
LCBwcm9wZXJ0eU5hbWVzQnVmZmVyU2l6ZUluQnl0ZXMsIG51bGxwdHIsIEFsbG9jYXRpb25GYWls
dXJlTW9kZTo6QXNzZXJ0KSk7CisgICAgICAgIHByb3BlcnR5TmFtZXNCdWZmZXIgPSBzdGF0aWNf
Y2FzdDxXcml0ZUJhcnJpZXI8SlNTdHJpbmc+Kj4odm0uanNWYWx1ZUdpZ2FjYWdlQXV4aWxpYXJ5
U3BhY2UoKS5hbGxvY2F0ZU5vblZpcnR1YWwodm0sIHByb3BlcnR5TmFtZXNCdWZmZXJTaXplSW5C
eXRlcywgbnVsbHB0ciwgQWxsb2NhdGlvbkZhaWx1cmVNb2RlOjpBc3NlcnQpKTsKICAgICAgICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHByb3BlcnR5TmFtZXNTaXplOyArK2kpCiAgICAgICAg
ICAgICBwcm9wZXJ0eU5hbWVzQnVmZmVyW2ldLmNsZWFyKCk7CiAgICAgfQpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVFbnVt
ZXJhdG9yLmgJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTUHJvcGVydHlOYW1lRW51bWVyYXRvci5oCSh3b3JraW5nIGNvcHkpCkBAIC01MSw3ICs1
MSw3IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vic3BhY2VB
Y2Nlc3MgbW9kZT4KICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkK
ICAgICB7Ci0gICAgICAgIHJldHVybiAmdm0ucHJvcGVydHlOYW1lRW51bWVyYXRvclNwYWNlOwor
ICAgICAgICByZXR1cm4gJnZtLnByb3BlcnR5TmFtZUVudW1lcmF0b3JTcGFjZSgpOwogICAgIH0K
IAogICAgIHN0YXRpYyBKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3IqIGNyZWF0ZShWTSYsIFN0cnVj
dHVyZSosIHVpbnQzMl90LCB1aW50MzJfdCwgUHJvcGVydHlOYW1lQXJyYXkmJik7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3h5LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm94eS5oCShyZXZpc2lvbiAyODYwOTUpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3h5LmgJKHdvcmtpbmcgY29weSkK
QEAgLTM4LDcgKzM4LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3Bh
Y2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAgICAgc3RhdGljX2Fzc2VydChzaXplb2YoQ2VsbFR5
cGUpID09IHNpemVvZihKU1Byb3h5KSk7Ci0gICAgICAgIHJldHVybiAmdm0uanNQcm94eVNwYWNl
OworICAgICAgICByZXR1cm4gJnZtLmpzUHJveHlTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRp
YyBKU1Byb3h5KiBjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNPYmplY3Qq
IHRhcmdldCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuaAko
cmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJp
bmcuaAkod29ya2luZyBjb3B5KQpAQCAtMTExLDcgKzExMSw3IEBAIHB1YmxpYzoKICAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSwgU3Vic3BhY2VBY2Nlc3M+CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBz
dWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewotICAgICAgICByZXR1cm4gJnZtLnN0cmluZ1NwYWNl
OworICAgICAgICByZXR1cm4gJnZtLnN0cmluZ1NwYWNlKCk7CiAgICAgfQogICAgIAogICAgIC8v
IFdlIGVtcGxveSBvdmVyZmxvdyBjaGVja3MgaW4gbWFueSBwbGFjZXMgd2l0aCB0aGUgYXNzdW1w
dGlvbiB0aGF0IE1heExlbmd0aApAQCAtMjcwLDcgKzI3MCw3IEBAIHB1YmxpYzoKICAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSwgU3Vic3BhY2VBY2Nlc3M+CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBz
dWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewotICAgICAgICByZXR1cm4gJnZtLnJvcGVTdHJpbmdT
cGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5yb3BlU3RyaW5nU3BhY2UoKTsKICAgICB9CiAKICAg
ICAvLyBXZSB1c2UgbG93ZXIgM2JpdHMgb2YgZmliZXIwIGZvciBmbGFncy4gVGhlc2UgYml0cyBh
cmUgdXNhYmxlIGR1ZSB0byBhbGlnbm1lbnQsIGFuZCBpdCBpcyBPSyBldmVuIGluIDMyYml0IGFy
Y2hpdGVjdHVyZS4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZWRB
cnJheVZpZXdQcm90b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlLmgJKHJldmlzaW9uIDI4NjA5NSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZWRBcnJheVZpZXdQcm90b3R5cGUu
aAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE1
LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCkBAIC0zNyw3ICszNyw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vi
c3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRf
SVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVHlwZWRBcnJheVZpZXdQcm90b3R5cGUsIEJhc2UpOwot
ICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0u
cGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBKU1R5cGVkQXJyYXlWaWV3
UHJvdG90eXBlKiBjcmVhdGUoVk0mLCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSopOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFwSXRlcmF0b3JQcm90b3R5cGUuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXBJdGVyYXRvclBy
b3RvdHlwZS5oCShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9NYXBJdGVyYXRvclByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw3ICszNyw3
IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkK
ICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKE1hcEl0
ZXJhdG9yUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNw
YWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAg
ICBzdGF0aWMgTWFwSXRlcmF0b3JQcm90b3R5cGUqIGNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlKQpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFwUHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFwUHJvdG90eXBlLmgJKHJldmlzaW9uIDI4NjA5NSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hcFByb3RvdHlwZS5oCSh3b3JraW5n
IGNvcHkpCkBAIC0zNyw3ICszNyw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2Uq
IHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NV
QlNQQUNFX1NIQVJBQkxFKE1hcFByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0u
cGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7
CiAgICAgfQogCiAgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9
IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgSGFzU3RhdGljUHJvcGVydHlUYWJsZTsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hdGhPYmplY3QuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXRoT2JqZWN0LmgJKHJldmlzaW9uIDI4NjA5
NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hdGhPYmplY3QuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMzIsNyArMzIsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIElzb1N1YnNwYWNl
KiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19T
VUJTUEFDRV9TSEFSQUJMRShNYXRoT2JqZWN0LCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5w
bGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsK
ICAgICB9CiAKICAgICBzdGF0aWMgTWF0aE9iamVjdCogY3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9OYXRpdmVFcnJvclByb3RvdHlwZS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUVycm9yUHJvdG90eXBlLmgJ
KHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2
ZUVycm9yUHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM0LDcgKzM0LDcgQEAgcHVibGlj
OgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAg
ICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoTmF0aXZlRXJyb3JQcm90
b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAg
ICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBT
dHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvTmF0aXZlRXhlY3V0YWJsZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL05hdGl2ZUV4ZWN1dGFibGUuaAkocmV2aXNpb24gMjg2MDk1KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRXhlY3V0YWJsZS5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOS0yMDE5IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOS0yMDIxIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwpAQCAtNDMsNyArNDMsNyBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2Vs
bFR5cGUsIFN1YnNwYWNlQWNjZXNzPgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VG
b3IoVk0mIHZtKQogICAgIHsKLSAgICAgICAgcmV0dXJuICZ2bS5uYXRpdmVFeGVjdXRhYmxlU3Bh
Y2U7CisgICAgICAgIHJldHVybiAmdm0ubmF0aXZlRXhlY3V0YWJsZVNwYWNlKCk7CiAgICAgfQog
CiAgICAgQ29kZUJsb2NrSGFzaCBoYXNoRm9yKENvZGVTcGVjaWFsaXphdGlvbktpbmQpIGNvbnN0
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVyT2JqZWN0LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVyT2JqZWN0LmgJ
KHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWJl
ck9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw3ICszNSw3IEBAIHB1YmxpYzoKICAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSwgU3Vic3BhY2VBY2Nlc3MgbW9kZT4KICAgICBzdGF0aWMgSXNvU3Vi
c3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7Ci0gICAgICAgIHJldHVybiAmdm0ubnVt
YmVyT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ubnVtYmVyT2JqZWN0U3BhY2UoKTsK
ICAgICB9CiAKICAgICBzdGF0aWMgTnVtYmVyT2JqZWN0KiBjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVj
dFByb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L09iamVjdFByb3RvdHlwZS5oCShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9PYmplY3RQcm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMSw2ICsx
LDYgQEAKIC8qCiAgKiAgQ29weXJpZ2h0IChDKSAxOTk5LTIwMDAgSGFycmkgUG9ydGVuIChwb3J0
ZW5Aa2RlLm9yZykKLSAqICBDb3B5cmlnaHQgKEMpIDIwMDgtMjAxOSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiAgQ29weXJpZ2h0IChDKSAyMDA4LTIwMjEgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2Fy
ZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiAgbW9kaWZ5IGl0IHVuZGVyIHRo
ZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwpAQCAtMzMsNyArMzMsNyBA
QCBwdWJsaWM6CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAg
ICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShPYmplY3RQ
cm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7Cisg
ICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRp
YyBPYmplY3RQcm90b3R5cGUqIGNyZWF0ZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJl
Kik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9ncmFtRXhlY3V0YWJs
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb2dyYW1F
eGVjdXRhYmxlLmgJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1Byb2dyYW1FeGVjdXRhYmxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTMwLDYgKzMwLDgg
QEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKK2NsYXNzIFVubGlua2VkUHJvZ3JhbUNvZGVCbG9jazsK
KwogY2xhc3MgUHJvZ3JhbUV4ZWN1dGFibGUgZmluYWwgOiBwdWJsaWMgR2xvYmFsRXhlY3V0YWJs
ZSB7CiAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKIHB1YmxpYzoKQEAg
LTM5LDcgKzQxLDcgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlLCBT
dWJzcGFjZUFjY2Vzcz4KICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2
bSkKICAgICB7Ci0gICAgICAgIHJldHVybiAmdm0ucHJvZ3JhbUV4ZWN1dGFibGVTcGFjZS5zcGFj
ZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wcm9ncmFtRXhlY3V0YWJsZVNwYWNlKCkuc3BhY2U7CiAg
ICAgfQogCiAgICAgc3RhdGljIFByb2dyYW1FeGVjdXRhYmxlKiBjcmVhdGUoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgY29uc3QgU291cmNlQ29kZSYgc291cmNlKQpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlUYWJsZS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5VGFibGUuaAkocmV2aXNpb24gMjg2
MDk1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlUYWJsZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xMjksNyArMTI5LDcgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5
cGVuYW1lIENlbGxUeXBlLCBTdWJzcGFjZUFjY2Vzcz4KICAgICBzdGF0aWMgSXNvU3Vic3BhY2Uq
IHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7Ci0gICAgICAgIHJldHVybiAmdm0ucHJvcGVydHlU
YWJsZVNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnByb3BlcnR5VGFibGVTcGFjZSgpOwogICAg
IH0KIAogICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBuZWVkc0Rlc3RydWN0aW9uID0gdHJ1ZTsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZmxlY3RPYmplY3QuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWZsZWN0T2JqZWN0LmgJ
KHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZmxl
Y3RPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtMzgsNyArMzgsNyBAQCBwdWJsaWM6CiAgICAg
c3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewogICAgICAgICBT
VEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShSZWZsZWN0T2JqZWN0LCBCYXNlKTsK
LSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZt
LnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgUmVmbGVjdE9iamVjdCog
Y3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHAuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHAuaAkocmV2
aXNpb24gMjg2MDk1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTQ5LDcgKzQ5LDcgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5
cGVuYW1lIENlbGxUeXBlLCBTdWJzcGFjZUFjY2VzcyBtb2RlPgogICAgIHN0YXRpYyBJc29TdWJz
cGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKLSAgICAgICAgcmV0dXJuICZ2bS5yZWdF
eHBTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5yZWdFeHBTcGFjZSgpOwogICAgIH0KIAogICAg
IEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWdFeHAqIGNyZWF0ZShWTSYsIGNvbnN0IFN0cmlu
ZyYgcGF0dGVybiwgT3B0aW9uU2V0PFlhcnI6OkZsYWdzPik7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9SZWdFeHBPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBPYmplY3QuaAkocmV2aXNpb24gMjg2MDk1KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwT2JqZWN0LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTM2LDcgKzM2LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vi
c3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAgICAgc3RhdGljX2Fzc2VydCghQ2VsbFR5cGU6
Om5lZWRzRGVzdHJ1Y3Rpb24sICIiKTsKLSAgICAgICAgcmV0dXJuICZ2bS5yZWdFeHBPYmplY3RT
cGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5yZWdFeHBPYmplY3RTcGFjZSgpOwogICAgIH0KIAog
ICAgIHN0YXRpYyBjb25zdGV4cHIgdWludHB0cl90IGxhc3RJbmRleElzTm90V3JpdGFibGVGbGFn
ID0gMGIwMTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cFByb3Rv
dHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4
cFByb3RvdHlwZS5oCShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9SZWdFeHBQcm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzQsNyArMzQsNyBA
QCBwdWJsaWM6CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAg
ICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShSZWdFeHBQ
cm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7Cisg
ICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRp
YyBSZWdFeHBQcm90b3R5cGUqIGNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvUmVnRXhwU3RyaW5nSXRlcmF0b3JQcm90b3R5cGUuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBTdHJpbmdJdGVyYXRvclByb3RvdHlw
ZS5oCShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9S
ZWdFeHBTdHJpbmdJdGVyYXRvclByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw3ICsz
OSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2
bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKFJl
Z0V4cFN0cmluZ0l0ZXJhdG9yUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5w
bGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsK
ICAgICB9CiAKICAgICBzdGF0aWMgUmVnRXhwU3RyaW5nSXRlcmF0b3JQcm90b3R5cGUqIGNyZWF0
ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0
dXJlKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2NvcGVkQXJndW1lbnRz
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TY29wZWRB
cmd1bWVudHMuY3BwCShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9TY29wZWRBcmd1bWVudHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NSw3ICs1NSw3
IEBAIFNjb3BlZEFyZ3VtZW50cyogU2NvcGVkQXJndW1lbnRzOjpjcmVhdGUKICAgICBXcml0ZUJh
cnJpZXI8VW5rbm93bj4qIHN0b3JhZ2UgPSBudWxscHRyOwogICAgIGlmICh0b3RhbExlbmd0aCA+
IHRhYmxlLT5sZW5ndGgoKSkgewogICAgICAgICBDaGVja2VkPHVuc2lnbmVkPiBvdmVyZmxvd0xl
bmd0aCA9IHRvdGFsTGVuZ3RoIC0gdGFibGUtPmxlbmd0aCgpOwotICAgICAgICBzdG9yYWdlID0g
c3RhdGljX2Nhc3Q8V3JpdGVCYXJyaWVyPFVua25vd24+Kj4odm0uanNWYWx1ZUdpZ2FjYWdlQXV4
aWxpYXJ5U3BhY2UuYWxsb2NhdGVOb25WaXJ0dWFsKHZtLCBvdmVyZmxvd0xlbmd0aCAqIHNpemVv
ZihXcml0ZUJhcnJpZXI8VW5rbm93bj4pLCBudWxscHRyLCBBbGxvY2F0aW9uRmFpbHVyZU1vZGU6
OkFzc2VydCkpOworICAgICAgICBzdG9yYWdlID0gc3RhdGljX2Nhc3Q8V3JpdGVCYXJyaWVyPFVu
a25vd24+Kj4odm0uanNWYWx1ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UoKS5hbGxvY2F0ZU5vblZp
cnR1YWwodm0sIG92ZXJmbG93TGVuZ3RoICogc2l6ZW9mKFdyaXRlQmFycmllcjxVbmtub3duPiks
IG51bGxwdHIsIEFsbG9jYXRpb25GYWlsdXJlTW9kZTo6QXNzZXJ0KSk7CiAgICAgfQogCiAgICAg
U2NvcGVkQXJndW1lbnRzKiByZXN1bHQgPSBuZXcgKApJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvU2NvcGVkQXJndW1lbnRzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvU2NvcGVkQXJndW1lbnRzLmgJKHJldmlzaW9uIDI4NjA5NSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Njb3BlZEFyZ3VtZW50cy5oCSh3b3JraW5n
IGNvcHkpCkBAIC00Nyw3ICs0Nyw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2Uq
IHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAgIHN0YXRpY19hc3NlcnQoIUNlbGxU
eXBlOjpuZWVkc0Rlc3RydWN0aW9uLCAiIik7Ci0gICAgICAgIHJldHVybiAmdm0uc2NvcGVkQXJn
dW1lbnRzU3BhY2U7CisgICAgICAgIHJldHVybiAmdm0uc2NvcGVkQXJndW1lbnRzU3BhY2UoKTsK
ICAgICB9CiAKICAgICAvLyBDcmVhdGVzIGFuIGFyZ3VtZW50cyBvYmplY3QgYnV0IGxlYXZlcyBp
dCB1bmluaXRpYWxpemVkLiBUaGlzIGlzIGRhbmdlcm91cyBpZiB3ZSBHQyByaWdodApJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2V0SXRlcmF0b3JQcm90b3R5cGUuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TZXRJdGVyYXRvclByb3Rv
dHlwZS5oCShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9TZXRJdGVyYXRvclByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw3ICszNyw3IEBA
IHB1YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAg
ICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKFNldEl0ZXJh
dG9yUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNl
OworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBz
dGF0aWMgU2V0SXRlcmF0b3JQcm90b3R5cGUqIGNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlKQpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvU2V0UHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvU2V0UHJvdG90eXBlLmgJKHJldmlzaW9uIDI4NjA5NSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NldFByb3RvdHlwZS5oCSh3b3JraW5nIGNv
cHkpCkBAIC0zNyw3ICszNyw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1
YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQ
QUNFX1NIQVJBQkxFKFNldFByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxh
aW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAg
ICAgfQogCiAgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJh
c2U6OlN0cnVjdHVyZUZsYWdzIHwgSGFzU3RhdGljUHJvcGVydHlUYWJsZTsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NoYWRvd1JlYWxtUHJvdG90eXBlLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2hhZG93UmVhbG1Qcm90b3R5cGUu
aAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2hh
ZG93UmVhbG1Qcm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzksNyArMzksNyBAQCBwdWJs
aWM6CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewog
ICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShTaGFkb3dSZWFsbVBy
b3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAg
ICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGlj
IFNoYWRvd1JlYWxtUHJvdG90eXBlKiBjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NwYXJzZUFycmF5VmFsdWVN
YXAuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TcGFyc2VB
cnJheVZhbHVlTWFwLmgJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1NwYXJzZUFycmF5VmFsdWVNYXAuaAkod29ya2luZyBjb3B5KQpAQCAtMTEwLDcg
KzExMCw3IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vic3Bh
Y2VBY2Nlc3M+CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAg
ICAgewotICAgICAgICByZXR1cm4gJnZtLnNwYXJzZUFycmF5VmFsdWVNYXBTcGFjZTsKKyAgICAg
ICAgcmV0dXJuICZ2bS5zcGFyc2VBcnJheVZhbHVlTWFwU3BhY2UoKTsKICAgICB9CiAgICAgCiAg
ICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiwgSlNHbG9iYWxPYmplY3Qq
LCBKU1ZhbHVlIHByb3RvdHlwZSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9TdHJpbmdJdGVyYXRvclByb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1N0cmluZ0l0ZXJhdG9yUHJvdG90eXBlLmgJKHJldmlzaW9uIDI4NjA5
NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ0l0ZXJhdG9yUHJvdG90
eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM5LDcgKzM5LDcgQEAgcHVibGljOgogICAgIHN0YXRp
YyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElD
X0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoU3RyaW5nSXRlcmF0b3JQcm90b3R5cGUsIEJh
c2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVy
biAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBTdHJpbmdJdGVy
YXRvclByb3RvdHlwZSogY3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9TdHJpbmdPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9TdHJpbmdPYmplY3QuaAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTMzLDcg
KzMzLDcgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lLCBTdWJzcGFjZUFjY2VzcyBt
b2RlPgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsK
LSAgICAgICAgcmV0dXJuICZ2bS5zdHJpbmdPYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2
bS5zdHJpbmdPYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBTdHJpbmdPYmplY3Qq
IGNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmgJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
MjgsNyArMTI4LDcgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlLCBT
dWJzcGFjZUFjY2Vzcz4KICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2
bSkKICAgICB7Ci0gICAgICAgIHJldHVybiAmdm0uc3RydWN0dXJlU3BhY2U7CisgICAgICAgIHJl
dHVybiAmdm0uc3RydWN0dXJlU3BhY2UoKTsKICAgICB9CiAKICAgICBKU19FWFBPUlRfUFJJVkFU
RSBzdGF0aWMgYm9vbCBpc1ZhbGlkUHJvdG90eXBlKEpTVmFsdWUpOwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlQ2hhaW4uY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUNoYWluLmNwcAkocmV2aXNpb24g
Mjg2MDk1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlQ2hhaW4u
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC00OCw3ICs0OCw3IEBAIFN0cnVjdHVyZUNoYWluKiBTdHJ1
Y3R1cmVDaGFpbjo6Y3JlYXRlKFYKICAgICAgICAgKytzaXplOwogICAgICsrc2l6ZTsgLy8gU2Vu
dGluZWwgbnVsbHB0ci4KICAgICBzaXplX3QgYnl0ZXMgPSBDaGVja2VkPHNpemVfdD4oc2l6ZSkg
KiBzaXplb2YoU3RydWN0dXJlSUQpOwotICAgIFN0cnVjdHVyZUlEKiB2ZWN0b3IgPSBzdGF0aWNf
Y2FzdDxTdHJ1Y3R1cmVJRCo+KHZtLmpzVmFsdWVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlLmFsbG9j
YXRlTm9uVmlydHVhbCh2bSwgYnl0ZXMsIG51bGxwdHIsIEFsbG9jYXRpb25GYWlsdXJlTW9kZTo6
QXNzZXJ0KSk7CisgICAgU3RydWN0dXJlSUQqIHZlY3RvciA9IHN0YXRpY19jYXN0PFN0cnVjdHVy
ZUlEKj4odm0uanNWYWx1ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UoKS5hbGxvY2F0ZU5vblZpcnR1
YWwodm0sIGJ5dGVzLCBudWxscHRyLCBBbGxvY2F0aW9uRmFpbHVyZU1vZGU6OkFzc2VydCkpOwog
ICAgIG1lbXNldCh2ZWN0b3IsIDAsIGJ5dGVzKTsKICAgICBTdHJ1Y3R1cmVDaGFpbiogY2hhaW4g
PSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxTdHJ1Y3R1cmVDaGFpbj4odm0pKSBTdHJ1Y3R1
cmVDaGFpbih2bSwgdm0uc3RydWN0dXJlQ2hhaW5TdHJ1Y3R1cmUuZ2V0KCksIHZlY3Rvcik7CiAg
ICAgY2hhaW4tPmZpbmlzaENyZWF0aW9uKHZtLCBoZWFkKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUNoYWluLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlQ2hhaW4uaAkocmV2aXNpb24gMjg2MDk1KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlQ2hhaW4uaAkod29ya2lu
ZyBjb3B5KQpAQCAtNDYsNyArNDYsNyBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUg
Q2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNzPgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3Bh
Y2VGb3IoVk0mIHZtKQogICAgIHsKLSAgICAgICAgcmV0dXJuICZ2bS5zdHJ1Y3R1cmVDaGFpblNw
YWNlOworICAgICAgICByZXR1cm4gJnZtLnN0cnVjdHVyZUNoYWluU3BhY2UoKTsKICAgICB9CiAK
ICAgICBzdGF0aWMgU3RydWN0dXJlQ2hhaW4qIGNyZWF0ZShWTSYsIEpTT2JqZWN0Kik7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVSYXJlRGF0YS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZVJhcmVEYXRh
LmgJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0
cnVjdHVyZVJhcmVEYXRhLmgJKHdvcmtpbmcgY29weSkKQEAgLTY2LDcgKzY2LDcgQEAgcHVibGlj
OgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlLCBTdWJzcGFjZUFjY2Vzcz4KICAgICBz
dGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7Ci0gICAgICAgIHJl
dHVybiAmdm0uc3RydWN0dXJlUmFyZURhdGFTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5zdHJ1
Y3R1cmVSYXJlRGF0YVNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIFN0cnVjdHVyZVJhcmVE
YXRhKiBjcmVhdGUoVk0mLCBTdHJ1Y3R1cmUqKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1N5bWJvbFByb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1N5bWJvbFByb3RvdHlwZS5oCShyZXZpc2lvbiAyODYwOTUpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xQcm90b3R5cGUuaAkod29ya2luZyBj
b3B5KQpAQCAtNDEsNyArNDEsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBz
dWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJT
UEFDRV9TSEFSQUJMRShTeW1ib2xQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZt
LnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgp
OwogICAgIH0KIAogICAgIHN0YXRpYyBTeW1ib2xQcm90b3R5cGUqIGNyZWF0ZShWTSYgdm0sIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlKQpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sVGFibGUuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xUYWJsZS5oCShyZXZpc2lvbiAy
ODYwOTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xUYWJsZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC00NTYsNyArNDU2LDcgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5
cGVuYW1lIENlbGxUeXBlLCBTdWJzcGFjZUFjY2Vzcz4KICAgICBzdGF0aWMgSXNvU3Vic3BhY2Uq
IHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7Ci0gICAgICAgIHJldHVybiAmdm0uc3ltYm9sVGFi
bGVTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5zeW1ib2xUYWJsZVNwYWNlKCk7CiAgICAgfQog
CiAgICAgc3RhdGljIFN5bWJvbFRhYmxlKiBjcmVhdGUoVk0mIHZtKQpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxDYWxlbmRhclByb3RvdHlwZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsQ2FsZW5kYXJQcm90
b3R5cGUuaAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvVGVtcG9yYWxDYWxlbmRhclByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw3ICsz
OCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2
bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKFRl
bXBvcmFsQ2FsZW5kYXJQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWlu
T2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAg
IH0KIAogICAgIHN0YXRpYyBUZW1wb3JhbENhbGVuZGFyUHJvdG90eXBlKiBjcmVhdGUoVk0mLCBK
U0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSopOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvVGVtcG9yYWxEdXJhdGlvblByb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsRHVyYXRpb25Qcm90b3R5cGUuaAkocmV2
aXNpb24gMjg2MDk1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxE
dXJhdGlvblByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNiBAQAogLyoKICAq
IENvcHlyaWdodCAoQykgMjAyMSBTb255IEludGVyYWN0aXZlIEVudGVydGFpbm1lbnQgSW5jLgor
ICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
CiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzgsNyArMzksNyBAQCBwdWJsaWM6CiAg
ICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewogICAgICAg
ICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShUZW1wb3JhbER1cmF0aW9uUHJv
dG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAg
ICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMg
VGVtcG9yYWxEdXJhdGlvblByb3RvdHlwZSogY3JlYXRlKFZNJiwgU3RydWN0dXJlKik7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbEluc3RhbnRQcm90b3R5cGUu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbElu
c3RhbnRQcm90b3R5cGUuaAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvVGVtcG9yYWxJbnN0YW50UHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAg
LTEsNSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDIxIElnYWxpYSBTLkwuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zOCw3ICszOSw3IEBAIHB1YmxpYzoKICAgICBz
dGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAgIFNU
QVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKFRlbXBvcmFsSW5zdGFudFByb3RvdHlw
ZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAg
cmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIFRlbXBv
cmFsSW5zdGFudFByb3RvdHlwZSogY3JlYXRlKFZNJiwgU3RydWN0dXJlKik7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbE5vdy5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsTm93LmgJKHJldmlzaW9uIDI4NjA5
NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsTm93LmgJKHdvcmtp
bmcgY29weSkKQEAgLTEsNSArMSw2IEBACiAvKgogICogIENvcHlyaWdodCAoQykgMjAyMSBJZ2Fs
aWEsIFMuTC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqICBDb3B5cmlnaHQgKEMpIDIwMjEgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqICBUaGlzIGxpYnJhcnkgaXMgZnJl
ZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiAgbW9kaWZ5IGl0
IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwpAQCAtMzIs
NyArMzMsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihW
TSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJM
RShUZW1wb3JhbE5vdywgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFj
ZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAg
c3RhdGljIFRlbXBvcmFsTm93KiBjcmVhdGUoVk0mLCBTdHJ1Y3R1cmUqKTsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsT2JqZWN0LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxPYmplY3QuaAkocmV2aXNpb24g
Mjg2MDk1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxPYmplY3Qu
aAkod29ya2luZyBjb3B5KQpAQCAtMSw2ICsxLDcgQEAKIC8qCiAgKiAgQ29weXJpZ2h0IChDKSAy
MDIxIElnYWxpYSwgUy5MLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogIENvcHlyaWdodCAoQykg
MjAyMSBTb255IEludGVyYWN0aXZlIEVudGVydGFpbm1lbnQgSW5jLgorICogIENvcHlyaWdodCAo
QykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogIFRoaXMgbGli
cmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAq
ICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVi
bGljCkBAIC02NCw3ICs2NSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1
YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQ
QUNFX1NIQVJBQkxFKFRlbXBvcmFsT2JqZWN0LCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5w
bGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsK
ICAgICB9CiAKICAgICBzdGF0aWMgVGVtcG9yYWxPYmplY3QqIGNyZWF0ZShWTSYsIFN0cnVjdHVy
ZSopOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxQbGFpblRp
bWVQcm90b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9UZW1wb3JhbFBsYWluVGltZVByb3RvdHlwZS5oCShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbFBsYWluVGltZVByb3RvdHlwZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMSBB
cHBsZSBJbmMuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zOCw3ICszOCw3IEBA
IHB1YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAg
ICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKFRlbXBvcmFs
UGxhaW5UaW1lUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVj
dFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAK
ICAgICBzdGF0aWMgVGVtcG9yYWxQbGFpblRpbWVQcm90b3R5cGUqIGNyZWF0ZShWTSYsIEpTR2xv
YmFsT2JqZWN0KiwgU3RydWN0dXJlKik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9UZW1wb3JhbFRpbWVab25lUHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxUaW1lWm9uZVByb3RvdHlwZS5oCShyZXZpc2lv
biAyODYwOTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbFRpbWVa
b25lUHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM4LDcgKzM4LDcgQEAgcHVibGljOgog
ICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAg
ICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoVGVtcG9yYWxUaW1lWm9uZVBy
b3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAg
ICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGlj
IFRlbXBvcmFsVGltZVpvbmVQcm90b3R5cGUqIGNyZWF0ZShWTSYsIEpTR2xvYmFsT2JqZWN0Kiwg
U3RydWN0dXJlKik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UaHJvd1Nj
b3BlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UaHJv
d1Njb3BlLmNwcAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvVGhyb3dTY29wZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgot
ICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yOSw2ICsyOSw3IEBACiAj
aW5jbHVkZSAiRXhjZXB0aW9uLmgiCiAjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKICNp
bmNsdWRlICJWTS5oIgorI2luY2x1ZGUgPHd0Zi9TdGFja1RyYWNlLmg+CiAKIG5hbWVzcGFjZSBK
U0MgewogICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAkocmV2aXNp
b24gMjg2MDk1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMiwyMSArMzIsMTUgQEAKICNpbmNsdWRlICJBY2Nlc3NDYXNlLmgiCiAj
aW5jbHVkZSAiQWdncmVnYXRlRXJyb3IuaCIKICNpbmNsdWRlICJBcmdMaXN0LmgiCi0jaW5jbHVk
ZSAiQmlnSW50T2JqZWN0LmgiCi0jaW5jbHVkZSAiQm9vbGVhbk9iamVjdC5oIgotI2luY2x1ZGUg
IkJyYW5kZWRTdHJ1Y3R1cmUuaCIKICNpbmNsdWRlICJCdWlsdGluRXhlY3V0YWJsZXMuaCIKICNp
bmNsdWRlICJCeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5LmgiCiAjaW5jbHVkZSAiQ2hlY2twb2lu
dE9TUkV4aXRTaWRlU3RhdGUuaCIKLSNpbmNsdWRlICJDbG9uZWRBcmd1bWVudHMuaCIKICNpbmNs
dWRlICJDb2RlQmxvY2suaCIKICNpbmNsdWRlICJDb2RlQ2FjaGUuaCIKICNpbmNsdWRlICJDb21t
b25JZGVudGlmaWVycy5oIgogI2luY2x1ZGUgIkNvbnRyb2xGbG93UHJvZmlsZXIuaCIKICNpbmNs
dWRlICJDdXN0b21HZXR0ZXJTZXR0ZXIuaCIKICNpbmNsdWRlICJET01BdHRyaWJ1dGVHZXR0ZXJT
ZXR0ZXIuaCIKLSNpbmNsdWRlICJEYXRlSW5zdGFuY2UuaCIKLSNpbmNsdWRlICJEZWJ1Z2dlclNj
b3BlLmgiCiAjaW5jbHVkZSAiRGVmZXJyZWRXb3JrVGltZXIuaCIKICNpbmNsdWRlICJEaXNhc3Nl
bWJsZXIuaCIKICNpbmNsdWRlICJEb3VibGVQcmVkaWN0aW9uRnV6emVyQWdlbnQuaCIKQEAgLTU1
LDcgKzQ5LDYgQEAKICNpbmNsdWRlICJFeGNlcHRpb24uaCIKICNpbmNsdWRlICJFeGVjdXRhYmxl
VG9Db2RlQmxvY2tFZGdlLmgiCiAjaW5jbHVkZSAiRlRMVGh1bmtzLmgiCi0jaW5jbHVkZSAiRmFz
dE1hbGxvY0FsaWduZWRNZW1vcnlBbGxvY2F0b3IuaCIKICNpbmNsdWRlICJGaWxlQmFzZWRGdXp6
ZXJBZ2VudC5oIgogI2luY2x1ZGUgIkZ1bmN0aW9uQ29kZUJsb2NrLmgiCiAjaW5jbHVkZSAiRnVu
Y3Rpb25FeGVjdXRhYmxlLmgiCkBAIC02Niw3NyArNTksMjUgQEAKICNpbmNsdWRlICJIZWFwUHJv
ZmlsZXIuaCIKICNpbmNsdWRlICJJbnRlcnByZXRlci5oIgogI2luY2x1ZGUgIkludGxDYWNoZS5o
IgotI2luY2x1ZGUgIkludGxDb2xsYXRvci5oIgotI2luY2x1ZGUgIkludGxEYXRlVGltZUZvcm1h
dC5oIgotI2luY2x1ZGUgIkludGxEaXNwbGF5TmFtZXMuaCIKLSNpbmNsdWRlICJJbnRsTGlzdEZv
cm1hdC5oIgotI2luY2x1ZGUgIkludGxMb2NhbGUuaCIKLSNpbmNsdWRlICJJbnRsTnVtYmVyRm9y
bWF0LmgiCi0jaW5jbHVkZSAiSW50bFBsdXJhbFJ1bGVzLmgiCi0jaW5jbHVkZSAiSW50bFJlbGF0
aXZlVGltZUZvcm1hdC5oIgotI2luY2x1ZGUgIkludGxTZWdtZW50SXRlcmF0b3IuaCIKLSNpbmNs
dWRlICJJbnRsU2VnbWVudGVyLmgiCi0jaW5jbHVkZSAiSW50bFNlZ21lbnRzLmgiCi0jaW5jbHVk
ZSAiSXNvSGVhcENlbGxUeXBlLmgiCi0jaW5jbHVkZSAiSXNvSW5saW5lZEhlYXBDZWxsVHlwZS5o
IgogI2luY2x1ZGUgIkpJVENvZGUuaCIKICNpbmNsdWRlICJKSVRPcGVyYXRpb25MaXN0LmgiCiAj
aW5jbHVkZSAiSklUU2l6ZVN0YXRpc3RpY3MuaCIKICNpbmNsdWRlICJKSVRUaHVua3MuaCIKICNp
bmNsdWRlICJKSVRXb3JrbGlzdC5oIgotI2luY2x1ZGUgIkpTQVBJR2xvYmFsT2JqZWN0LmgiCiAj
aW5jbHVkZSAiSlNBUElWYWx1ZVdyYXBwZXIuaCIKLSNpbmNsdWRlICJKU0FQSVdyYXBwZXJPYmpl
Y3QuaCIKLSNpbmNsdWRlICJKU0FycmF5LmgiCi0jaW5jbHVkZSAiSlNBcnJheUJ1ZmZlci5oIgot
I2luY2x1ZGUgIkpTQXJyYXlJdGVyYXRvci5oIgotI2luY2x1ZGUgIkpTQXN5bmNHZW5lcmF0b3Iu
aCIKICNpbmNsdWRlICJKU0JpZ0ludC5oIgotI2luY2x1ZGUgIkpTQm91bmRGdW5jdGlvbi5oIgot
I2luY2x1ZGUgIkpTQ2FsbGJhY2tDb25zdHJ1Y3Rvci5oIgotI2luY2x1ZGUgIkpTQ2FsbGJhY2tG
dW5jdGlvbi5oIgotI2luY2x1ZGUgIkpTQ2FsbGJhY2tPYmplY3QuaCIKLSNpbmNsdWRlICJKU0Nh
bGxlZS5oIgotI2luY2x1ZGUgIkpTQ3VzdG9tR2V0dGVyRnVuY3Rpb24uaCIKLSNpbmNsdWRlICJK
U0N1c3RvbVNldHRlckZ1bmN0aW9uLmgiCi0jaW5jbHVkZSAiSlNEZXN0cnVjdGlibGVPYmplY3RI
ZWFwQ2VsbFR5cGUuaCIKLSNpbmNsdWRlICJKU0ZpbmFsaXphdGlvblJlZ2lzdHJ5LmgiCi0jaW5j
bHVkZSAiSlNGdW5jdGlvbi5oIgotI2luY2x1ZGUgIkpTR2xvYmFsTGV4aWNhbEVudmlyb25tZW50
LmgiCiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKICNpbmNsdWRlICJKU0ltbXV0YWJsZUJ1
dHRlcmZseS5oIgotI2luY2x1ZGUgIkpTSW5qZWN0ZWRTY3JpcHRIb3N0LmgiCi0jaW5jbHVkZSAi
SlNKYXZhU2NyaXB0Q2FsbEZyYW1lLmgiCiAjaW5jbHVkZSAiSlNMb2NrLmgiCiAjaW5jbHVkZSAi
SlNNYXAuaCIKLSNpbmNsdWRlICJKU01hcEl0ZXJhdG9yLmgiCi0jaW5jbHVkZSAiSlNNb2R1bGVO
YW1lc3BhY2VPYmplY3QuaCIKLSNpbmNsdWRlICJKU01vZHVsZVJlY29yZC5oIgotI2luY2x1ZGUg
IkpTTmF0aXZlU3RkRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU1Byb21pc2UuaCIKICNpbmNsdWRl
ICJKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3IuaCIKLSNpbmNsdWRlICJKU1Byb3h5LmgiCiAjaW5j
bHVkZSAiSlNTY3JpcHRGZXRjaFBhcmFtZXRlcnMuaCIKICNpbmNsdWRlICJKU1NjcmlwdEZldGNo
ZXIuaCIKICNpbmNsdWRlICJKU1NldC5oIgotI2luY2x1ZGUgIkpTU2V0SXRlcmF0b3IuaCIKICNp
bmNsdWRlICJKU1NvdXJjZUNvZGUuaCIKLSNpbmNsdWRlICJKU1N0cmluZ0l0ZXJhdG9yLmgiCiAj
aW5jbHVkZSAiSlNUZW1wbGF0ZU9iamVjdERlc2NyaXB0b3IuaCIKLSNpbmNsdWRlICJKU1RvV2Fz
bUlDQ2FsbGVlLmgiCi0jaW5jbHVkZSAiSlNUeXBlZEFycmF5cy5oIgotI2luY2x1ZGUgIkpTV2Vh
a01hcC5oIgotI2luY2x1ZGUgIkpTV2Vha09iamVjdFJlZi5oIgotI2luY2x1ZGUgIkpTV2Vha1Nl
dC5oIgogI2luY2x1ZGUgIkpTV2ViQXNzZW1ibHlDb2RlQmxvY2suaCIKLSNpbmNsdWRlICJKU1dl
YkFzc2VtYmx5RXhjZXB0aW9uLmgiCi0jaW5jbHVkZSAiSlNXZWJBc3NlbWJseUdsb2JhbC5oIgot
I2luY2x1ZGUgIkpTV2ViQXNzZW1ibHlJbnN0YW5jZS5oIgotI2luY2x1ZGUgIkpTV2ViQXNzZW1i
bHlNZW1vcnkuaCIKLSNpbmNsdWRlICJKU1dlYkFzc2VtYmx5TW9kdWxlLmgiCi0jaW5jbHVkZSAi
SlNXZWJBc3NlbWJseVRhYmxlLmgiCi0jaW5jbHVkZSAiSlNXZWJBc3NlbWJseVRhZy5oIgotI2lu
Y2x1ZGUgIkpTV2l0aFNjb3BlLmgiCiAjaW5jbHVkZSAiTExJbnREYXRhLmgiCiAjaW5jbHVkZSAi
TExJbnRFeGNlcHRpb25zLmgiCiAjaW5jbHVkZSAiTWFya2VkQmxvY2tJbmxpbmVzLmgiCkBAIC0x
NTEsMjcgKzkyLDE2IEBACiAjaW5jbHVkZSAiUHJvZ3JhbUNvZGVCbG9jay5oIgogI2luY2x1ZGUg
IlByb2dyYW1FeGVjdXRhYmxlLmgiCiAjaW5jbHVkZSAiUHJvcGVydHlUYWJsZS5oIgotI2luY2x1
ZGUgIlByb3h5UmV2b2tlLmgiCiAjaW5jbHVkZSAiUmFuZG9taXppbmdGdXp6ZXJBZ2VudC5oIgog
I2luY2x1ZGUgIlJlZ0V4cENhY2hlLmgiCi0jaW5jbHVkZSAiUmVnRXhwT2JqZWN0LmgiCiAjaW5j
bHVkZSAiU2FtcGxpbmdQcm9maWxlci5oIgogI2luY2x1ZGUgIlNjb3BlZEFyZ3VtZW50cy5oIgog
I2luY2x1ZGUgIlNoYWRvd0NoaWNrZW4uaCIKLSNpbmNsdWRlICJTaGFkb3dSZWFsbU9iamVjdC5o
IgogI2luY2x1ZGUgIlNpbXBsZVR5cGVkQXJyYXlDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiU291
cmNlUHJvdmlkZXJDYWNoZS5oIgotI2luY2x1ZGUgIlN0cmljdEV2YWxBY3RpdmF0aW9uLmgiCi0j
aW5jbHVkZSAiU3RyaW5nT2JqZWN0LmgiCiAjaW5jbHVkZSAiU3Ryb25nSW5saW5lcy5oIgogI2lu
Y2x1ZGUgIlN0cnVjdHVyZUNoYWluLmgiCiAjaW5jbHVkZSAiU3RydWN0dXJlSW5saW5lcy5oIgot
I2luY2x1ZGUgIlN5bWJvbE9iamVjdC5oIgotI2luY2x1ZGUgIlRlbXBvcmFsQ2FsZW5kYXIuaCIK
LSNpbmNsdWRlICJUZW1wb3JhbER1cmF0aW9uLmgiCi0jaW5jbHVkZSAiVGVtcG9yYWxJbnN0YW50
LmgiCi0jaW5jbHVkZSAiVGVtcG9yYWxQbGFpblRpbWUuaCIKLSNpbmNsdWRlICJUZW1wb3JhbFRp
bWVab25lLmgiCiAjaW5jbHVkZSAiVGVzdFJ1bm5lclV0aWxzLmgiCiAjaW5jbHVkZSAiVGh1bmtH
ZW5lcmF0b3JzLmgiCiAjaW5jbHVkZSAiVHlwZVByb2ZpbGVyLmgiCkBAIC0xODMsMTkgKzExMywx
NiBAQAogI2luY2x1ZGUgIldhc21Xb3JrbGlzdC5oIgogI2luY2x1ZGUgIldhdGNoZG9nLmgiCiAj
aW5jbHVkZSAiV2Vha0dDTWFwSW5saW5lcy5oIgotI2luY2x1ZGUgIldlYkFzc2VtYmx5RnVuY3Rp
b24uaCIKLSNpbmNsdWRlICJXZWJBc3NlbWJseU1vZHVsZVJlY29yZC5oIgotI2luY2x1ZGUgIldl
YkFzc2VtYmx5V3JhcHBlckZ1bmN0aW9uLmgiCiAjaW5jbHVkZSAiV2lkZW5pbmdOdW1iZXJQcmVk
aWN0aW9uRnV6emVyQWdlbnQuaCIKICNpbmNsdWRlIDx3dGYvUHJvY2Vzc0lELmg+CiAjaW5jbHVk
ZSA8d3RmL1JlYWRXcml0ZUxvY2suaD4KICNpbmNsdWRlIDx3dGYvU2ltcGxlU3RhdHMuaD4KKyNp
bmNsdWRlIDx3dGYvU3RhY2tUcmFjZS5oPgogI2luY2x1ZGUgPHd0Zi9TdHJpbmdQcmludFN0cmVh
bS5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9BdG9t
U3RyaW5nVGFibGUuaD4KIAogI2lmIEVOQUJMRShDX0xPT1ApCi0jaW5jbHVkZSAiQ0xvb3BTdGFj
ay5oIgogI2luY2x1ZGUgIkNMb29wU3RhY2tJbmxpbmVzLmgiCiAjZW5kaWYKIApAQCAtMjA3LDE1
ICsxMzQsNiBAQAogI2luY2x1ZGUgIlJlZ0V4cC5oIgogI2VuZGlmCiAKLSNpZiBKU0NfT0JKQ19B
UElfRU5BQkxFRAotI2luY2x1ZGUgIk9iakNDYWxsYmFja0Z1bmN0aW9uLmgiCi0jZW5kaWYKLQot
I2lmZGVmIEpTQ19HTElCX0FQSV9FTkFCTEVECi0jaW5jbHVkZSAiSlNBUElXcmFwcGVyR2xvYmFs
T2JqZWN0LmgiCi0jaW5jbHVkZSAiSlNDQ2FsbGJhY2tGdW5jdGlvbi5oIgotI2VuZGlmCi0KIG5h
bWVzcGFjZSBKU0MgewogCiBBdG9taWM8dW5zaWduZWQ+IFZNOjpzX251bWJlck9mSURzOwpAQCAt
MjkxLDEwOSArMjA5LDYgQEAgVk06OlZNKFZNVHlwZSB2bVR5cGUsIEhlYXBUeXBlIGhlYXBUeXBl
LAogICAgICwgbV9yYW5kb20oT3B0aW9uczo6c2VlZE9mVk1SYW5kb21Gb3JGdXp6ZXIoKSA/IE9w
dGlvbnM6OnNlZWRPZlZNUmFuZG9tRm9yRnV6emVyKCkgOiBjcnlwdG9ncmFwaGljYWxseVJhbmRv
bU51bWJlcigpKQogICAgICwgbV9pbnRlZ3JpdHlSYW5kb20oKnRoaXMpCiAgICAgLCBoZWFwKCp0
aGlzLCBoZWFwVHlwZSkKLSAgICAsIGZhc3RNYWxsb2NBbGxvY2F0b3IobWFrZVVuaXF1ZTxGYXN0
TWFsbG9jQWxpZ25lZE1lbW9yeUFsbG9jYXRvcj4oKSkKLSAgICAsIHByaW1pdGl2ZUdpZ2FjYWdl
QWxsb2NhdG9yKG1ha2VVbmlxdWU8R2lnYWNhZ2VBbGlnbmVkTWVtb3J5QWxsb2NhdG9yPihHaWdh
Y2FnZTo6UHJpbWl0aXZlKSkKLSAgICAsIGpzVmFsdWVHaWdhY2FnZUFsbG9jYXRvcihtYWtlVW5p
cXVlPEdpZ2FjYWdlQWxpZ25lZE1lbW9yeUFsbG9jYXRvcj4oR2lnYWNhZ2U6OkpTVmFsdWUpKQot
ICAgICwgYXV4aWxpYXJ5SGVhcENlbGxUeXBlKG1ha2VVbmlxdWU8SGVhcENlbGxUeXBlPihDZWxs
QXR0cmlidXRlcyhEb2VzTm90TmVlZERlc3RydWN0aW9uLCBIZWFwQ2VsbDo6QXV4aWxpYXJ5KSkp
Ci0gICAgLCBpbW11dGFibGVCdXR0ZXJmbHlIZWFwQ2VsbFR5cGUobWFrZVVuaXF1ZTxIZWFwQ2Vs
bFR5cGU+KENlbGxBdHRyaWJ1dGVzKERvZXNOb3ROZWVkRGVzdHJ1Y3Rpb24sIEhlYXBDZWxsOjpK
U0NlbGxXaXRoSW5kZXhpbmdIZWFkZXIpKSkKLSAgICAsIGNlbGxIZWFwQ2VsbFR5cGUobWFrZVVu
aXF1ZTxIZWFwQ2VsbFR5cGU+KENlbGxBdHRyaWJ1dGVzKERvZXNOb3ROZWVkRGVzdHJ1Y3Rpb24s
IEhlYXBDZWxsOjpKU0NlbGwpKSkKLSAgICAsIGRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUo
bWFrZVVuaXF1ZTxIZWFwQ2VsbFR5cGU+KENlbGxBdHRyaWJ1dGVzKE5lZWRzRGVzdHJ1Y3Rpb24s
IEhlYXBDZWxsOjpKU0NlbGwpKSkKLSAgICAsIGFwaUdsb2JhbE9iamVjdEhlYXBDZWxsVHlwZShJ
c29IZWFwQ2VsbFR5cGU6OmNyZWF0ZTxKU0FQSUdsb2JhbE9iamVjdD4oKSkKLSAgICAsIGNhbGxi
YWNrQ29uc3RydWN0b3JIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpjcmVhdGU8SlNDYWxs
YmFja0NvbnN0cnVjdG9yPigpKQotICAgICwgY2FsbGJhY2tHbG9iYWxPYmplY3RIZWFwQ2VsbFR5
cGUoSXNvSGVhcENlbGxUeXBlOjpjcmVhdGU8SlNDYWxsYmFja09iamVjdDxKU0dsb2JhbE9iamVj
dD4+KCkpCi0gICAgLCBjYWxsYmFja09iamVjdEhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6
OmNyZWF0ZTxKU0NhbGxiYWNrT2JqZWN0PEpTTm9uRmluYWxPYmplY3Q+PigpKQotICAgICwgY3Vz
dG9tR2V0dGVyRnVuY3Rpb25IZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpjcmVhdGU8SlND
dXN0b21HZXR0ZXJGdW5jdGlvbj4oKSkKLSAgICAsIGN1c3RvbVNldHRlckZ1bmN0aW9uSGVhcENl
bGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6Y3JlYXRlPEpTQ3VzdG9tU2V0dGVyRnVuY3Rpb24+KCkp
Ci0gICAgLCBkYXRlSW5zdGFuY2VIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpjcmVhdGU8
RGF0ZUluc3RhbmNlPigpKQotICAgICwgZXJyb3JJbnN0YW5jZUhlYXBDZWxsVHlwZShJc29IZWFw
Q2VsbFR5cGU6OmNyZWF0ZTxFcnJvckluc3RhbmNlPigpKQotICAgICwgZmluYWxpemF0aW9uUmVn
aXN0cnlDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OmNyZWF0ZTxKU0ZpbmFsaXphdGlvblJlZ2lz
dHJ5PigpKQotICAgICwgZ2xvYmFsTGV4aWNhbEVudmlyb25tZW50SGVhcENlbGxUeXBlKElzb0hl
YXBDZWxsVHlwZTo6Y3JlYXRlPEpTR2xvYmFsTGV4aWNhbEVudmlyb25tZW50PigpKQotICAgICwg
Z2xvYmFsT2JqZWN0SGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6Y3JlYXRlPEpTR2xvYmFs
T2JqZWN0PigpKQotICAgICwgaW5qZWN0ZWRTY3JpcHRIb3N0U3BhY2VIZWFwQ2VsbFR5cGUoSXNv
SGVhcENlbGxUeXBlOjpjcmVhdGU8SW5zcGVjdG9yOjpKU0luamVjdGVkU2NyaXB0SG9zdD4oKSkK
LSAgICAsIGphdmFTY3JpcHRDYWxsRnJhbWVIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpj
cmVhdGU8SW5zcGVjdG9yOjpKU0phdmFTY3JpcHRDYWxsRnJhbWU+KCkpCi0gICAgLCBqc01vZHVs
ZVJlY29yZEhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OmNyZWF0ZTxKU01vZHVsZVJlY29y
ZD4oKSkKLSAgICAsIG1vZHVsZU5hbWVzcGFjZU9iamVjdEhlYXBDZWxsVHlwZShJc29IZWFwQ2Vs
bFR5cGU6OmNyZWF0ZTxKU01vZHVsZU5hbWVzcGFjZU9iamVjdD4oKSkKLSAgICAsIG5hdGl2ZVN0
ZEZ1bmN0aW9uSGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6Y3JlYXRlPEpTTmF0aXZlU3Rk
RnVuY3Rpb24+KCkpCi0gICAgLCBzdHJpbmdIZWFwQ2VsbFR5cGUobWFrZVVuaXF1ZTxJc29Jbmxp
bmVkSGVhcENlbGxUeXBlPEpTU3RyaW5nPj4oKSkKLSAgICAsIHdlYWtNYXBIZWFwQ2VsbFR5cGUo
SXNvSGVhcENlbGxUeXBlOjpjcmVhdGU8SlNXZWFrTWFwPigpKQotICAgICwgd2Vha1NldEhlYXBD
ZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OmNyZWF0ZTxKU1dlYWtTZXQ+KCkpCi0gICAgLCBkZXN0
cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUobWFrZVVuaXF1ZTxKU0Rlc3RydWN0aWJsZU9iamVj
dEhlYXBDZWxsVHlwZT4oKSkKLSNpZiBKU0NfT0JKQ19BUElfRU5BQkxFRAotICAgICwgYXBpV3Jh
cHBlck9iamVjdEhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OmNyZWF0ZTxKU0NhbGxiYWNr
T2JqZWN0PEpTQVBJV3JhcHBlck9iamVjdD4+KCkpCi0gICAgLCBvYmpDQ2FsbGJhY2tGdW5jdGlv
bkhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OmNyZWF0ZTxPYmpDQ2FsbGJhY2tGdW5jdGlv
bj4oKSkKLSNlbmRpZgotI2lmZGVmIEpTQ19HTElCX0FQSV9FTkFCTEVECi0gICAgLCBhcGlXcmFw
cGVyT2JqZWN0SGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6Y3JlYXRlPEpTQ2FsbGJhY2tP
YmplY3Q8SlNBUElXcmFwcGVyT2JqZWN0Pj4oKSkKLSAgICAsIGNhbGxiYWNrQVBJV3JhcHBlckds
b2JhbE9iamVjdEhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OmNyZWF0ZTxKU0NhbGxiYWNr
T2JqZWN0PEpTQVBJV3JhcHBlckdsb2JhbE9iamVjdD4+KCkpCi0gICAgLCBqc2NDYWxsYmFja0Z1
bmN0aW9uSGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6Y3JlYXRlPEpTQ0NhbGxiYWNrRnVu
Y3Rpb24+KCkpCi0jZW5kaWYKLSAgICAsIGludGxDb2xsYXRvckhlYXBDZWxsVHlwZShJc29IZWFw
Q2VsbFR5cGU6OmNyZWF0ZTxJbnRsQ29sbGF0b3I+KCkpCi0gICAgLCBpbnRsRGF0ZVRpbWVGb3Jt
YXRIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpjcmVhdGU8SW50bERhdGVUaW1lRm9ybWF0
PigpKQotICAgICwgaW50bERpc3BsYXlOYW1lc0hlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6
OmNyZWF0ZTxJbnRsRGlzcGxheU5hbWVzPigpKQotICAgICwgaW50bExpc3RGb3JtYXRIZWFwQ2Vs
bFR5cGUoSXNvSGVhcENlbGxUeXBlOjpjcmVhdGU8SW50bExpc3RGb3JtYXQ+KCkpCi0gICAgLCBp
bnRsTG9jYWxlSGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6Y3JlYXRlPEludGxMb2NhbGU+
KCkpCi0gICAgLCBpbnRsTnVtYmVyRm9ybWF0SGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6
Y3JlYXRlPEludGxOdW1iZXJGb3JtYXQ+KCkpCi0gICAgLCBpbnRsUGx1cmFsUnVsZXNIZWFwQ2Vs
bFR5cGUoSXNvSGVhcENlbGxUeXBlOjpjcmVhdGU8SW50bFBsdXJhbFJ1bGVzPigpKQotICAgICwg
aW50bFJlbGF0aXZlVGltZUZvcm1hdEhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OmNyZWF0
ZTxJbnRsUmVsYXRpdmVUaW1lRm9ybWF0PigpKQotICAgICwgaW50bFNlZ21lbnRJdGVyYXRvckhl
YXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OmNyZWF0ZTxJbnRsU2VnbWVudEl0ZXJhdG9yPigp
KQotICAgICwgaW50bFNlZ21lbnRlckhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OmNyZWF0
ZTxJbnRsU2VnbWVudGVyPigpKQotICAgICwgaW50bFNlZ21lbnRzSGVhcENlbGxUeXBlKElzb0hl
YXBDZWxsVHlwZTo6Y3JlYXRlPEludGxTZWdtZW50cz4oKSkKLSNpZiBFTkFCTEUoV0VCQVNTRU1C
TFkpCi0gICAgLCB3ZWJBc3NlbWJseUNvZGVCbG9ja0hlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5
cGU6OmNyZWF0ZTxKU1dlYkFzc2VtYmx5Q29kZUJsb2NrPigpKQotICAgICwgd2ViQXNzZW1ibHlF
eGNlcHRpb25IZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpjcmVhdGU8SlNXZWJBc3NlbWJs
eUV4Y2VwdGlvbj4oKSkKLSAgICAsIHdlYkFzc2VtYmx5RnVuY3Rpb25IZWFwQ2VsbFR5cGUoSXNv
SGVhcENlbGxUeXBlOjpjcmVhdGU8V2ViQXNzZW1ibHlGdW5jdGlvbj4oKSkKLSAgICAsIHdlYkFz
c2VtYmx5R2xvYmFsSGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6Y3JlYXRlPEpTV2ViQXNz
ZW1ibHlHbG9iYWw+KCkpCi0gICAgLCB3ZWJBc3NlbWJseUluc3RhbmNlSGVhcENlbGxUeXBlKElz
b0hlYXBDZWxsVHlwZTo6Y3JlYXRlPEpTV2ViQXNzZW1ibHlJbnN0YW5jZT4oKSkKLSAgICAsIHdl
YkFzc2VtYmx5TWVtb3J5SGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6Y3JlYXRlPEpTV2Vi
QXNzZW1ibHlNZW1vcnk+KCkpCi0gICAgLCB3ZWJBc3NlbWJseU1vZHVsZUhlYXBDZWxsVHlwZShJ
c29IZWFwQ2VsbFR5cGU6OmNyZWF0ZTxKU1dlYkFzc2VtYmx5TW9kdWxlPigpKQotICAgICwgd2Vi
QXNzZW1ibHlNb2R1bGVSZWNvcmRIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpjcmVhdGU8
V2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQ+KCkpCi0gICAgLCB3ZWJBc3NlbWJseVRhYmxlSGVhcENl
bGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6Y3JlYXRlPEpTV2ViQXNzZW1ibHlUYWJsZT4oKSkKLSAg
ICAsIHdlYkFzc2VtYmx5VGFnSGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6Y3JlYXRlPEpT
V2ViQXNzZW1ibHlUYWc+KCkpCi0jZW5kaWYKLSAgICAsIHByaW1pdGl2ZUdpZ2FjYWdlQXV4aWxp
YXJ5U3BhY2UoIlByaW1pdGl2ZSBHaWdhY2FnZSBBdXhpbGlhcnkiLCBoZWFwLCAqYXV4aWxpYXJ5
SGVhcENlbGxUeXBlLCBwcmltaXRpdmVHaWdhY2FnZUFsbG9jYXRvci5nZXQoKSkgLy8gSGFzaDow
eDNlN2NkNzYyCi0gICAgLCBqc1ZhbHVlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZSgiSlNWYWx1ZSBH
aWdhY2FnZSBBdXhpbGlhcnkiLCBoZWFwLCAqYXV4aWxpYXJ5SGVhcENlbGxUeXBlLCBqc1ZhbHVl
R2lnYWNhZ2VBbGxvY2F0b3IuZ2V0KCkpIC8vIEhhc2g6MHgyNDFlOTQ2Ci0gICAgLCBpbW11dGFi
bGVCdXR0ZXJmbHlKU1ZhbHVlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZSgiSW1tdXRhYmxlQnV0dGVy
Zmx5IEdpZ2FjYWdlIEpTQ2VsbFdpdGhJbmRleGluZ0hlYWRlciIsIGhlYXAsICppbW11dGFibGVC
dXR0ZXJmbHlIZWFwQ2VsbFR5cGUsIGpzVmFsdWVHaWdhY2FnZUFsbG9jYXRvci5nZXQoKSkgLy8g
SGFzaDoweDdhOTQ1MzAwCi0gICAgLCBjZWxsU3BhY2UoIkpTQ2VsbCIsIGhlYXAsICpjZWxsSGVh
cENlbGxUeXBlLCBmYXN0TWFsbG9jQWxsb2NhdG9yLmdldCgpKSAvLyBIYXNoOjB4YWRmYjVhNzkK
LSAgICAsIHZhcmlhYmxlU2l6ZWRDZWxsU3BhY2UoIlZhcmlhYmxlIFNpemVkIEpTQ2VsbCIsIGhl
YXAsICpjZWxsSGVhcENlbGxUeXBlLCBmYXN0TWFsbG9jQWxsb2NhdG9yLmdldCgpKSAvLyBIYXNo
OjB4YmNkNzY5Y2MKLSAgICAsIGRlc3RydWN0aWJsZU9iamVjdFNwYWNlKCJKU0Rlc3RydWN0aWJs
ZU9iamVjdCIsIGhlYXAsICpkZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUsIGZhc3RNYWxs
b2NBbGxvY2F0b3IuZ2V0KCkpIC8vIEhhc2g6MHg0ZjVlZDdhOQotICAgICwgYXJyYXlTcGFjZSBJ
U09fU1VCU1BBQ0VfSU5JVChoZWFwLCAqY2VsbEhlYXBDZWxsVHlwZSwgSlNBcnJheSkKLSAgICAs
IGJpZ0ludFNwYWNlIElTT19TVUJTUEFDRV9JTklUKGhlYXAsICpjZWxsSGVhcENlbGxUeXBlLCBK
U0JpZ0ludCkKLSAgICAsIGNhbGxlZVNwYWNlIElTT19TVUJTUEFDRV9JTklUKGhlYXAsICpjZWxs
SGVhcENlbGxUeXBlLCBKU0NhbGxlZSkKLSAgICAsIGNsb25lZEFyZ3VtZW50c1NwYWNlIElTT19T
VUJTUEFDRV9JTklUKGhlYXAsICpjZWxsSGVhcENlbGxUeXBlLCBDbG9uZWRBcmd1bWVudHMpCi0g
ICAgLCBjdXN0b21HZXR0ZXJTZXR0ZXJTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVChoZWFwLCAqY2Vs
bEhlYXBDZWxsVHlwZSwgQ3VzdG9tR2V0dGVyU2V0dGVyKQotICAgICwgZGF0ZUluc3RhbmNlU3Bh
Y2UgSVNPX1NVQlNQQUNFX0lOSVQoaGVhcCwgKmRhdGVJbnN0YW5jZUhlYXBDZWxsVHlwZSwgRGF0
ZUluc3RhbmNlKQotICAgICwgZG9tQXR0cmlidXRlR2V0dGVyU2V0dGVyU3BhY2UgSVNPX1NVQlNQ
QUNFX0lOSVQoaGVhcCwgKmNlbGxIZWFwQ2VsbFR5cGUsIERPTUF0dHJpYnV0ZUdldHRlclNldHRl
cikKLSAgICAsIGV4Y2VwdGlvblNwYWNlIElTT19TVUJTUEFDRV9JTklUKGhlYXAsICpkZXN0cnVj
dGlibGVDZWxsSGVhcENlbGxUeXBlLCBFeGNlcHRpb24pCi0gICAgLCBleGVjdXRhYmxlVG9Db2Rl
QmxvY2tFZGdlU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoaGVhcCwgKmNlbGxIZWFwQ2VsbFR5cGUs
IEV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2UpIC8vIEhhc2g6MHg3YjczMGIyMAotICAgICwgZnVu
Y3Rpb25TcGFjZSBJU09fU1VCU1BBQ0VfSU5JVChoZWFwLCAqY2VsbEhlYXBDZWxsVHlwZSwgSlNG
dW5jdGlvbikgLy8gSGFzaDoweDgwMGZjYTcyCi0gICAgLCBnZXR0ZXJTZXR0ZXJTcGFjZSBJU09f
U1VCU1BBQ0VfSU5JVChoZWFwLCAqY2VsbEhlYXBDZWxsVHlwZSwgR2V0dGVyU2V0dGVyKQotICAg
ICwgZ2xvYmFsTGV4aWNhbEVudmlyb25tZW50U3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoaGVhcCwg
Kmdsb2JhbExleGljYWxFbnZpcm9ubWVudEhlYXBDZWxsVHlwZSwgSlNHbG9iYWxMZXhpY2FsRW52
aXJvbm1lbnQpCi0gICAgLCBpbnRlcm5hbEZ1bmN0aW9uU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQo
aGVhcCwgKmNlbGxIZWFwQ2VsbFR5cGUsIEludGVybmFsRnVuY3Rpb24pIC8vIEhhc2g6MHhmODQ1
YzQ2NAotICAgICwganNQcm94eVNwYWNlIElTT19TVUJTUEFDRV9JTklUKGhlYXAsICpjZWxsSGVh
cENlbGxUeXBlLCBKU1Byb3h5KQotICAgICwgbmF0aXZlRXhlY3V0YWJsZVNwYWNlIElTT19TVUJT
UEFDRV9JTklUKGhlYXAsICpkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlLCBOYXRpdmVFeGVj
dXRhYmxlKSAvLyBIYXNoOjB4Njc1NjdmOTUKLSAgICAsIG51bWJlck9iamVjdFNwYWNlIElTT19T
VUJTUEFDRV9JTklUKGhlYXAsICpjZWxsSGVhcENlbGxUeXBlLCBOdW1iZXJPYmplY3QpCi0gICAg
LCBwbGFpbk9iamVjdFNwYWNlIElTT19TVUJTUEFDRV9JTklUKGhlYXAsICpjZWxsSGVhcENlbGxU
eXBlLCBKU05vbkZpbmFsT2JqZWN0KSAvLyBNYWlubHkgdXNlZCBmb3IgcHJvdG90eXBlcy4KLSAg
ICAsIHByb21pc2VTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVChoZWFwLCAqY2VsbEhlYXBDZWxsVHlw
ZSwgSlNQcm9taXNlKQotICAgICwgcHJvcGVydHlOYW1lRW51bWVyYXRvclNwYWNlIElTT19TVUJT
UEFDRV9JTklUKGhlYXAsICpjZWxsSGVhcENlbGxUeXBlLCBKU1Byb3BlcnR5TmFtZUVudW1lcmF0
b3IpCi0gICAgLCBwcm9wZXJ0eVRhYmxlU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoaGVhcCwgKmRl
c3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUsIFByb3BlcnR5VGFibGUpIC8vIEhhc2g6MHhjNmJj
OWYxMgotICAgICwgcmVnRXhwU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoaGVhcCwgKmRlc3RydWN0
aWJsZUNlbGxIZWFwQ2VsbFR5cGUsIFJlZ0V4cCkKLSAgICAsIHJlZ0V4cE9iamVjdFNwYWNlIElT
T19TVUJTUEFDRV9JTklUKGhlYXAsICpjZWxsSGVhcENlbGxUeXBlLCBSZWdFeHBPYmplY3QpCi0g
ICAgLCByb3BlU3RyaW5nU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoaGVhcCwgKnN0cmluZ0hlYXBD
ZWxsVHlwZSwgSlNSb3BlU3RyaW5nKQotICAgICwgc2NvcGVkQXJndW1lbnRzU3BhY2UgSVNPX1NV
QlNQQUNFX0lOSVQoaGVhcCwgKmNlbGxIZWFwQ2VsbFR5cGUsIFNjb3BlZEFyZ3VtZW50cykKLSAg
ICAsIHNwYXJzZUFycmF5VmFsdWVNYXBTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVChoZWFwLCAqZGVz
dHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZSwgU3BhcnNlQXJyYXlWYWx1ZU1hcCkKLSAgICAsIHN0
cmluZ1NwYWNlIElTT19TVUJTUEFDRV9JTklUKGhlYXAsICpzdHJpbmdIZWFwQ2VsbFR5cGUsIEpT
U3RyaW5nKSAvLyBIYXNoOjB4OTBjZjc1OGYKLSAgICAsIHN0cmluZ09iamVjdFNwYWNlIElTT19T
VUJTUEFDRV9JTklUKGhlYXAsICpjZWxsSGVhcENlbGxUeXBlLCBTdHJpbmdPYmplY3QpCi0gICAg
LCBzdHJ1Y3R1cmVDaGFpblNwYWNlIElTT19TVUJTUEFDRV9JTklUKGhlYXAsICpjZWxsSGVhcENl
bGxUeXBlLCBTdHJ1Y3R1cmVDaGFpbikKLSAgICAsIHN0cnVjdHVyZVJhcmVEYXRhU3BhY2UgSVNP
X1NVQlNQQUNFX0lOSVQoaGVhcCwgKmRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUsIFN0cnVj
dHVyZVJhcmVEYXRhKSAvLyBIYXNoOjB4YWNhNGU2MmQKLSAgICAsIHN0cnVjdHVyZVNwYWNlIElT
T19TVUJTUEFDRV9JTklUKGhlYXAsICpkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlLCBTdHJ1
Y3R1cmUpIC8vIEhhc2g6MHgxZjFiY2RjYQotICAgICwgYnJhbmRlZFN0cnVjdHVyZVNwYWNlIElT
T19TVUJTUEFDRV9JTklUKGhlYXAsICpkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlLCBCcmFu
ZGVkU3RydWN0dXJlKQotICAgICwgc3ltYm9sVGFibGVTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVCho
ZWFwLCAqZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZSwgU3ltYm9sVGFibGUpIC8vIEhhc2g6
MHhjNTIxNWFmZAotICAgICwgZXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZXNXaXRoQ29uc3RyYWlu
dHMoZXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZVNwYWNlKQotICAgICwgZXhlY3V0YWJsZVRvQ29k
ZUJsb2NrRWRnZXNXaXRoRmluYWxpemVycyhleGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlU3BhY2Up
Ci0gICAgLCBjb2RlQmxvY2tTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVChoZWFwLCAqZGVzdHJ1Y3Rp
YmxlQ2VsbEhlYXBDZWxsVHlwZSwgQ29kZUJsb2NrKSAvLyBIYXNoOjB4NzdlNjZlYzkKLSAgICAs
IGZ1bmN0aW9uRXhlY3V0YWJsZVNwYWNlIElTT19TVUJTUEFDRV9JTklUKGhlYXAsICpkZXN0cnVj
dGlibGVDZWxsSGVhcENlbGxUeXBlLCBGdW5jdGlvbkV4ZWN1dGFibGUpIC8vIEhhc2g6MHg1ZDE1
OGYzCi0gICAgLCBwcm9ncmFtRXhlY3V0YWJsZVNwYWNlIElTT19TVUJTUEFDRV9JTklUKGhlYXAs
ICpkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlLCBQcm9ncmFtRXhlY3V0YWJsZSkgLy8gSGFz
aDoweDUyN2M3N2U3Ci0gICAgLCB1bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZVNwYWNlIElTT19T
VUJTUEFDRV9JTklUKGhlYXAsICpkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlLCBVbmxpbmtl
ZEZ1bmN0aW9uRXhlY3V0YWJsZSkgLy8gSGFzaDoweGY2YjgyOGQ5CiAgICAgLCB2bVR5cGUodm1U
eXBlKQogICAgICwgY2xpZW50RGF0YShudWxscHRyKQogICAgICwgdG9wRW50cnlGcmFtZShudWxs
cHRyKQpAQCAtMTU3MiwxMzcgKzEzODcsNiBAQCB2b2lkIFZNOjplbnN1cmVTaGFkb3dDaGlja2Vu
KCkKICAgICBtX3NoYWRvd0NoaWNrZW4gPSBtYWtlVW5pcXVlPFNoYWRvd0NoaWNrZW4+KCk7CiB9
CiAKLSNkZWZpbmUgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKG5hbWUs
IGhlYXBDZWxsVHlwZSwgdHlwZSkgXAotICAgIElzb1N1YnNwYWNlKiBWTTo6bmFtZSMjU2xvdygp
IFwKLSAgICB7IFwKLSAgICAgICAgQVNTRVJUKCFtXyMjbmFtZSk7IFwKLSAgICAgICAgYXV0byBz
cGFjZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKGhlYXAsIGhl
YXBDZWxsVHlwZSwgdHlwZSk7IFwKLSAgICAgICAgV1RGOjpzdG9yZVN0b3JlRmVuY2UoKTsgXAot
ICAgICAgICBtXyMjbmFtZSA9IFdURk1vdmUoc3BhY2UpOyBcCi0gICAgICAgIHJldHVybiBtXyMj
bmFtZS5nZXQoKTsgXAotICAgIH0KLQotCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVN
QkVSX1NMT1coYXBpR2xvYmFsT2JqZWN0U3BhY2UsICphcGlHbG9iYWxPYmplY3RIZWFwQ2VsbFR5
cGUsIEpTQVBJR2xvYmFsT2JqZWN0KQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJF
Ul9TTE9XKGFwaVZhbHVlV3JhcHBlclNwYWNlLCAqY2VsbEhlYXBDZWxsVHlwZSwgSlNBUElWYWx1
ZVdyYXBwZXIpCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coYXJyYXlC
dWZmZXJTcGFjZSwgKmNlbGxIZWFwQ2VsbFR5cGUsIEpTQXJyYXlCdWZmZXIpCi1EWU5BTUlDX0lT
T19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coYXJyYXlJdGVyYXRvclNwYWNlLCAqY2VsbEhl
YXBDZWxsVHlwZSwgSlNBcnJheUl0ZXJhdG9yKQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5F
X01FTUJFUl9TTE9XKGFzeW5jR2VuZXJhdG9yU3BhY2UsICpjZWxsSGVhcENlbGxUeXBlLCBKU0Fz
eW5jR2VuZXJhdG9yKQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGJp
Z0ludDY0QXJyYXlTcGFjZSwgKmNlbGxIZWFwQ2VsbFR5cGUsIEpTQmlnSW50NjRBcnJheSkKLURZ
TkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhiaWdJbnRPYmplY3RTcGFjZSwg
KmNlbGxIZWFwQ2VsbFR5cGUsIEJpZ0ludE9iamVjdCkKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RF
RklORV9NRU1CRVJfU0xPVyhiaWdVaW50NjRBcnJheVNwYWNlLCAqY2VsbEhlYXBDZWxsVHlwZSwg
SlNCaWdVaW50NjRBcnJheSkKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xP
Vyhib29sZWFuT2JqZWN0U3BhY2UsICpjZWxsSGVhcENlbGxUeXBlLCBCb29sZWFuT2JqZWN0KQot
RFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGJvdW5kRnVuY3Rpb25TcGFj
ZSwgKmNlbGxIZWFwQ2VsbFR5cGUsIEpTQm91bmRGdW5jdGlvbikgLy8gSGFzaDoweGQ3OTE2ZDQx
Ci1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coY2FsbGJhY2tDb25zdHJ1
Y3RvclNwYWNlLCAqY2FsbGJhY2tDb25zdHJ1Y3RvckhlYXBDZWxsVHlwZSwgSlNDYWxsYmFja0Nv
bnN0cnVjdG9yKQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGNhbGxi
YWNrR2xvYmFsT2JqZWN0U3BhY2UsICpjYWxsYmFja0dsb2JhbE9iamVjdEhlYXBDZWxsVHlwZSwg
SlNDYWxsYmFja09iamVjdDxKU0dsb2JhbE9iamVjdD4pCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9E
RUZJTkVfTUVNQkVSX1NMT1coY2FsbGJhY2tGdW5jdGlvblNwYWNlLCAqY2VsbEhlYXBDZWxsVHlw
ZSwgSlNDYWxsYmFja0Z1bmN0aW9uKSAvLyBIYXNoOjB4ZTc2NDhlYmMKLURZTkFNSUNfSVNPX1NV
QlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhjYWxsYmFja09iamVjdFNwYWNlLCAqY2FsbGJhY2tP
YmplY3RIZWFwQ2VsbFR5cGUsIEpTQ2FsbGJhY2tPYmplY3Q8SlNOb25GaW5hbE9iamVjdD4pCi1E
WU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coY3VzdG9tR2V0dGVyRnVuY3Rp
b25TcGFjZSwgKmN1c3RvbUdldHRlckZ1bmN0aW9uSGVhcENlbGxUeXBlLCBKU0N1c3RvbUdldHRl
ckZ1bmN0aW9uKQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGN1c3Rv
bVNldHRlckZ1bmN0aW9uU3BhY2UsICpjdXN0b21TZXR0ZXJGdW5jdGlvbkhlYXBDZWxsVHlwZSwg
SlNDdXN0b21TZXR0ZXJGdW5jdGlvbikKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1C
RVJfU0xPVyhkYXRhVmlld1NwYWNlLCAqY2VsbEhlYXBDZWxsVHlwZSwgSlNEYXRhVmlldykKLURZ
TkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhkZWJ1Z2dlclNjb3BlU3BhY2Us
ICpjZWxsSGVhcENlbGxUeXBlLCBEZWJ1Z2dlclNjb3BlKQotRFlOQU1JQ19JU09fU1VCU1BBQ0Vf
REVGSU5FX01FTUJFUl9TTE9XKGVycm9ySW5zdGFuY2VTcGFjZSwgKmVycm9ySW5zdGFuY2VIZWFw
Q2VsbFR5cGUsIEVycm9ySW5zdGFuY2UpIC8vIEhhc2g6MHgzZjQwZDRhCi1EWU5BTUlDX0lTT19T
VUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coZmxvYXQzMkFycmF5U3BhY2UsICpjZWxsSGVhcENl
bGxUeXBlLCBKU0Zsb2F0MzJBcnJheSkKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1C
RVJfU0xPVyhmbG9hdDY0QXJyYXlTcGFjZSwgKmNlbGxIZWFwQ2VsbFR5cGUsIEpTRmxvYXQ2NEFy
cmF5KQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGZ1bmN0aW9uUmFy
ZURhdGFTcGFjZSwgKmRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUsIEZ1bmN0aW9uUmFyZURh
dGEpCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coZ2VuZXJhdG9yU3Bh
Y2UsICpjZWxsSGVhcENlbGxUeXBlLCBKU0dlbmVyYXRvcikKLURZTkFNSUNfSVNPX1NVQlNQQUNF
X0RFRklORV9NRU1CRVJfU0xPVyhnbG9iYWxPYmplY3RTcGFjZSwgKmdsb2JhbE9iamVjdEhlYXBD
ZWxsVHlwZSwgSlNHbG9iYWxPYmplY3QpCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVN
QkVSX1NMT1coaW5qZWN0ZWRTY3JpcHRIb3N0U3BhY2UsICppbmplY3RlZFNjcmlwdEhvc3RTcGFj
ZUhlYXBDZWxsVHlwZSwgSW5zcGVjdG9yOjpKU0luamVjdGVkU2NyaXB0SG9zdCkKLURZTkFNSUNf
SVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhpbnQ4QXJyYXlTcGFjZSwgKmNlbGxIZWFw
Q2VsbFR5cGUsIEpTSW50OEFycmF5KQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJF
Ul9TTE9XKGludDE2QXJyYXlTcGFjZSwgKmNlbGxIZWFwQ2VsbFR5cGUsIEpTSW50MTZBcnJheSkK
LURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhpbnQzMkFycmF5U3BhY2Us
ICpjZWxsSGVhcENlbGxUeXBlLCBKU0ludDMyQXJyYXkpCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9E
RUZJTkVfTUVNQkVSX1NMT1coamF2YVNjcmlwdENhbGxGcmFtZVNwYWNlLCAqamF2YVNjcmlwdENh
bGxGcmFtZUhlYXBDZWxsVHlwZSwgSW5zcGVjdG9yOjpKU0phdmFTY3JpcHRDYWxsRnJhbWUpCi1E
WU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coanNNb2R1bGVSZWNvcmRTcGFj
ZSwgKmpzTW9kdWxlUmVjb3JkSGVhcENlbGxUeXBlLCBKU01vZHVsZVJlY29yZCkKLURZTkFNSUNf
SVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhtYXBCdWNrZXRTcGFjZSwgKmNlbGxIZWFw
Q2VsbFR5cGUsIEpTTWFwOjpCdWNrZXRUeXBlKQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5F
X01FTUJFUl9TTE9XKG1hcEl0ZXJhdG9yU3BhY2UsICpjZWxsSGVhcENlbGxUeXBlLCBKU01hcEl0
ZXJhdG9yKQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKG1hcFNwYWNl
LCAqY2VsbEhlYXBDZWxsVHlwZSwgSlNNYXApCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVf
TUVNQkVSX1NMT1cobW9kdWxlTmFtZXNwYWNlT2JqZWN0U3BhY2UsICptb2R1bGVOYW1lc3BhY2VP
YmplY3RIZWFwQ2VsbFR5cGUsIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0KQotRFlOQU1JQ19JU09f
U1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKG5hdGl2ZVN0ZEZ1bmN0aW9uU3BhY2UsICpuYXRp
dmVTdGRGdW5jdGlvbkhlYXBDZWxsVHlwZSwgSlNOYXRpdmVTdGRGdW5jdGlvbikgLy8gSGFzaDow
eDcwZWQ2MWU0Ci1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1cocHJveHlP
YmplY3RTcGFjZSwgKmNlbGxIZWFwQ2VsbFR5cGUsIFByb3h5T2JqZWN0KQotRFlOQU1JQ19JU09f
U1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHByb3h5UmV2b2tlU3BhY2UsICpjZWxsSGVhcENl
bGxUeXBlLCBQcm94eVJldm9rZSkgLy8gSGFzaDoweGI1MDZhOTM5Ci1EWU5BTUlDX0lTT19TVUJT
UEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coc2NvcGVkQXJndW1lbnRzVGFibGVTcGFjZSwgKmRlc3Ry
dWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUsIFNjb3BlZEFyZ3VtZW50c1RhYmxlKQotRFlOQU1JQ19J
U09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHNjcmlwdEZldGNoUGFyYW1ldGVyc1NwYWNl
LCAqZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZSwgSlNTY3JpcHRGZXRjaFBhcmFtZXRlcnMp
Ci1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coc2NyaXB0RmV0Y2hlclNw
YWNlLCAqZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZSwgSlNTY3JpcHRGZXRjaGVyKQotRFlO
QU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHNldEJ1Y2tldFNwYWNlLCAqY2Vs
bEhlYXBDZWxsVHlwZSwgSlNTZXQ6OkJ1Y2tldFR5cGUpCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9E
RUZJTkVfTUVNQkVSX1NMT1coc2V0SXRlcmF0b3JTcGFjZSwgKmNlbGxIZWFwQ2VsbFR5cGUsIEpT
U2V0SXRlcmF0b3IpCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coc2V0
U3BhY2UsICpjZWxsSGVhcENlbGxUeXBlLCBKU1NldCkKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RF
RklORV9NRU1CRVJfU0xPVyhzaGFkb3dSZWFsbVNwYWNlLCAqY2VsbEhlYXBDZWxsVHlwZSwgU2hh
ZG93UmVhbG1PYmplY3QpCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1co
c3RyaWN0RXZhbEFjdGl2YXRpb25TcGFjZSwgKmNlbGxIZWFwQ2VsbFR5cGUsIFN0cmljdEV2YWxB
Y3RpdmF0aW9uKQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHN0cmlu
Z0l0ZXJhdG9yU3BhY2UsICpjZWxsSGVhcENlbGxUeXBlLCBKU1N0cmluZ0l0ZXJhdG9yKQotRFlO
QU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHNvdXJjZUNvZGVTcGFjZSwgKmRl
c3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUsIEpTU291cmNlQ29kZSkKLURZTkFNSUNfSVNPX1NV
QlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhzeW1ib2xTcGFjZSwgKmRlc3RydWN0aWJsZUNlbGxI
ZWFwQ2VsbFR5cGUsIFN5bWJvbCkKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJf
U0xPVyhzeW1ib2xPYmplY3RTcGFjZSwgKmNlbGxIZWFwQ2VsbFR5cGUsIFN5bWJvbE9iamVjdCkK
LURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh0ZW1wbGF0ZU9iamVjdERl
c2NyaXB0b3JTcGFjZSwgKmRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUsIEpTVGVtcGxhdGVP
YmplY3REZXNjcmlwdG9yKQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9X
KHRlbXBvcmFsQ2FsZW5kYXJTcGFjZSwgKmNlbGxIZWFwQ2VsbFR5cGUsIFRlbXBvcmFsQ2FsZW5k
YXIpCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1codGVtcG9yYWxEdXJh
dGlvblNwYWNlLCAqY2VsbEhlYXBDZWxsVHlwZSwgVGVtcG9yYWxEdXJhdGlvbikKLURZTkFNSUNf
SVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh0ZW1wb3JhbEluc3RhbnRTcGFjZSwgKmNl
bGxIZWFwQ2VsbFR5cGUsIFRlbXBvcmFsSW5zdGFudCkKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RF
RklORV9NRU1CRVJfU0xPVyh0ZW1wb3JhbFBsYWluVGltZVNwYWNlLCAqY2VsbEhlYXBDZWxsVHlw
ZSwgVGVtcG9yYWxQbGFpblRpbWUpCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVS
X1NMT1codGVtcG9yYWxUaW1lWm9uZVNwYWNlLCAqY2VsbEhlYXBDZWxsVHlwZSwgVGVtcG9yYWxU
aW1lWm9uZSkKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh1aW50OEFy
cmF5U3BhY2UsICpjZWxsSGVhcENlbGxUeXBlLCBKU1VpbnQ4QXJyYXkpCi1EWU5BTUlDX0lTT19T
VUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1codWludDhDbGFtcGVkQXJyYXlTcGFjZSwgKmNlbGxI
ZWFwQ2VsbFR5cGUsIEpTVWludDhDbGFtcGVkQXJyYXkpCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9E
RUZJTkVfTUVNQkVSX1NMT1codWludDE2QXJyYXlTcGFjZSwgKmNlbGxIZWFwQ2VsbFR5cGUsIEpT
VWludDE2QXJyYXkpCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1codWlu
dDMyQXJyYXlTcGFjZSwgKmNlbGxIZWFwQ2VsbFR5cGUsIEpTVWludDMyQXJyYXkpCi1EWU5BTUlD
X0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1codW5saW5rZWRFdmFsQ29kZUJsb2NrU3Bh
Y2UsICpkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlLCBVbmxpbmtlZEV2YWxDb2RlQmxvY2sp
Ci1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1codW5saW5rZWRGdW5jdGlv
bkNvZGVCbG9ja1NwYWNlLCAqZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZSwgVW5saW5rZWRG
dW5jdGlvbkNvZGVCbG9jaykKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xP
Vyh1bmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2tTcGFjZSwgKmRlc3RydWN0aWJsZUNlbGxI
ZWFwQ2VsbFR5cGUsIFVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jaykKLURZTkFNSUNfSVNP
X1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh1bmxpbmtlZFByb2dyYW1Db2RlQmxvY2tTcGFj
ZSwgKmRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUsIFVubGlua2VkUHJvZ3JhbUNvZGVCbG9j
aykKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh3ZWFrTWFwU3BhY2Us
ICp3ZWFrTWFwSGVhcENlbGxUeXBlLCBKU1dlYWtNYXApIC8vIEhhc2g6MHg2NjJiMTJhMwotRFlO
QU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHdlYWtTZXRTcGFjZSwgKndlYWtT
ZXRIZWFwQ2VsbFR5cGUsIEpTV2Vha1NldCkgLy8gSGFzaDoweDRjNzgxYjMwCi1EWU5BTUlDX0lT
T19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1cod2Vha09iamVjdFJlZlNwYWNlLCAqY2VsbEhl
YXBDZWxsVHlwZSwgSlNXZWFrT2JqZWN0UmVmKSAvLyBIYXNoOjB4OGVjNjhmMWYKLURZTkFNSUNf
SVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh3aXRoU2NvcGVTcGFjZSwgKmNlbGxIZWFw
Q2VsbFR5cGUsIEpTV2l0aFNjb3BlKQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJF
Ul9TTE9XKGZpbmFsaXphdGlvblJlZ2lzdHJ5U3BhY2UsICpmaW5hbGl6YXRpb25SZWdpc3RyeUNl
bGxUeXBlLCBKU0ZpbmFsaXphdGlvblJlZ2lzdHJ5KQotI2lmIEpTQ19PQkpDX0FQSV9FTkFCTEVE
Ci1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coYXBpV3JhcHBlck9iamVj
dFNwYWNlLCAqYXBpV3JhcHBlck9iamVjdEhlYXBDZWxsVHlwZSwgSlNDYWxsYmFja09iamVjdDxK
U0FQSVdyYXBwZXJPYmplY3Q+KQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9T
TE9XKG9iakNDYWxsYmFja0Z1bmN0aW9uU3BhY2UsICpvYmpDQ2FsbGJhY2tGdW5jdGlvbkhlYXBD
ZWxsVHlwZSwgT2JqQ0NhbGxiYWNrRnVuY3Rpb24pIC8vIEhhc2g6MHgxMGY2MTBiOAotI2VuZGlm
Ci0jaWZkZWYgSlNDX0dMSUJfQVBJX0VOQUJMRUQKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklO
RV9NRU1CRVJfU0xPVyhhcGlXcmFwcGVyT2JqZWN0U3BhY2UsICphcGlXcmFwcGVyT2JqZWN0SGVh
cENlbGxUeXBlLCBKU0NhbGxiYWNrT2JqZWN0PEpTQVBJV3JhcHBlck9iamVjdD4pCi1EWU5BTUlD
X0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coanNjQ2FsbGJhY2tGdW5jdGlvblNwYWNl
LCAqanNjQ2FsbGJhY2tGdW5jdGlvbkhlYXBDZWxsVHlwZSwgSlNDQ2FsbGJhY2tGdW5jdGlvbikK
LURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhjYWxsYmFja0FQSVdyYXBw
ZXJHbG9iYWxPYmplY3RTcGFjZSwgKmNhbGxiYWNrQVBJV3JhcHBlckdsb2JhbE9iamVjdEhlYXBD
ZWxsVHlwZSwgSlNDYWxsYmFja09iamVjdDxKU0FQSVdyYXBwZXJHbG9iYWxPYmplY3Q+KQotI2Vu
ZGlmCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coaW50bENvbGxhdG9y
U3BhY2UsICppbnRsQ29sbGF0b3JIZWFwQ2VsbFR5cGUsIEludGxDb2xsYXRvcikKLURZTkFNSUNf
SVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhpbnRsRGF0ZVRpbWVGb3JtYXRTcGFjZSwg
KmludGxEYXRlVGltZUZvcm1hdEhlYXBDZWxsVHlwZSwgSW50bERhdGVUaW1lRm9ybWF0KQotRFlO
QU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGludGxEaXNwbGF5TmFtZXNTcGFj
ZSwgKmludGxEaXNwbGF5TmFtZXNIZWFwQ2VsbFR5cGUsIEludGxEaXNwbGF5TmFtZXMpCi1EWU5B
TUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coaW50bExpc3RGb3JtYXRTcGFjZSwg
KmludGxMaXN0Rm9ybWF0SGVhcENlbGxUeXBlLCBJbnRsTGlzdEZvcm1hdCkKLURZTkFNSUNfSVNP
X1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhpbnRsTG9jYWxlU3BhY2UsICppbnRsTG9jYWxl
SGVhcENlbGxUeXBlLCBJbnRsTG9jYWxlKQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01F
TUJFUl9TTE9XKGludGxOdW1iZXJGb3JtYXRTcGFjZSwgKmludGxOdW1iZXJGb3JtYXRIZWFwQ2Vs
bFR5cGUsIEludGxOdW1iZXJGb3JtYXQpCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVN
QkVSX1NMT1coaW50bFBsdXJhbFJ1bGVzU3BhY2UsICppbnRsUGx1cmFsUnVsZXNIZWFwQ2VsbFR5
cGUsIEludGxQbHVyYWxSdWxlcykKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJf
U0xPVyhpbnRsUmVsYXRpdmVUaW1lRm9ybWF0U3BhY2UsICppbnRsUmVsYXRpdmVUaW1lRm9ybWF0
SGVhcENlbGxUeXBlLCBJbnRsUmVsYXRpdmVUaW1lRm9ybWF0KQotRFlOQU1JQ19JU09fU1VCU1BB
Q0VfREVGSU5FX01FTUJFUl9TTE9XKGludGxTZWdtZW50SXRlcmF0b3JTcGFjZSwgKmludGxTZWdt
ZW50SXRlcmF0b3JIZWFwQ2VsbFR5cGUsIEludGxTZWdtZW50SXRlcmF0b3IpCi1EWU5BTUlDX0lT
T19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coaW50bFNlZ21lbnRlclNwYWNlLCAqaW50bFNl
Z21lbnRlckhlYXBDZWxsVHlwZSwgSW50bFNlZ21lbnRlcikKLURZTkFNSUNfSVNPX1NVQlNQQUNF
X0RFRklORV9NRU1CRVJfU0xPVyhpbnRsU2VnbWVudHNTcGFjZSwgKmludGxTZWdtZW50c0hlYXBD
ZWxsVHlwZSwgSW50bFNlZ21lbnRzKQotI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKLURZTkFNSUNf
SVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhqc1RvV2FzbUlDQ2FsbGVlU3BhY2UsICpj
ZWxsSGVhcENlbGxUeXBlLCBKU1RvV2FzbUlDQ2FsbGVlKQotRFlOQU1JQ19JU09fU1VCU1BBQ0Vf
REVGSU5FX01FTUJFUl9TTE9XKHdlYkFzc2VtYmx5Q29kZUJsb2NrU3BhY2UsICp3ZWJBc3NlbWJs
eUNvZGVCbG9ja0hlYXBDZWxsVHlwZSwgSlNXZWJBc3NlbWJseUNvZGVCbG9jaykgLy8gSGFzaDow
eDlhZDk5NWNkCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1cod2ViQXNz
ZW1ibHlFeGNlcHRpb25TcGFjZSwgKndlYkFzc2VtYmx5RXhjZXB0aW9uSGVhcENlbGxUeXBlLCBK
U1dlYkFzc2VtYmx5RXhjZXB0aW9uKQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJF
Ul9TTE9XKHdlYkFzc2VtYmx5RnVuY3Rpb25TcGFjZSwgKndlYkFzc2VtYmx5RnVuY3Rpb25IZWFw
Q2VsbFR5cGUsIFdlYkFzc2VtYmx5RnVuY3Rpb24pIC8vIEhhc2g6MHg4YjdjMzJkYgotRFlOQU1J
Q19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHdlYkFzc2VtYmx5R2xvYmFsU3BhY2Us
ICp3ZWJBc3NlbWJseUdsb2JhbEhlYXBDZWxsVHlwZSwgSlNXZWJBc3NlbWJseUdsb2JhbCkKLURZ
TkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh3ZWJBc3NlbWJseUluc3RhbmNl
U3BhY2UsICp3ZWJBc3NlbWJseUluc3RhbmNlSGVhcENlbGxUeXBlLCBKU1dlYkFzc2VtYmx5SW5z
dGFuY2UpCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1cod2ViQXNzZW1i
bHlNZW1vcnlTcGFjZSwgKndlYkFzc2VtYmx5TWVtb3J5SGVhcENlbGxUeXBlLCBKU1dlYkFzc2Vt
Ymx5TWVtb3J5KQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHdlYkFz
c2VtYmx5TW9kdWxlU3BhY2UsICp3ZWJBc3NlbWJseU1vZHVsZUhlYXBDZWxsVHlwZSwgSlNXZWJB
c3NlbWJseU1vZHVsZSkKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh3
ZWJBc3NlbWJseU1vZHVsZVJlY29yZFNwYWNlLCAqd2ViQXNzZW1ibHlNb2R1bGVSZWNvcmRIZWFw
Q2VsbFR5cGUsIFdlYkFzc2VtYmx5TW9kdWxlUmVjb3JkKQotRFlOQU1JQ19JU09fU1VCU1BBQ0Vf
REVGSU5FX01FTUJFUl9TTE9XKHdlYkFzc2VtYmx5VGFibGVTcGFjZSwgKndlYkFzc2VtYmx5VGFi
bGVIZWFwQ2VsbFR5cGUsIEpTV2ViQXNzZW1ibHlUYWJsZSkKLURZTkFNSUNfSVNPX1NVQlNQQUNF
X0RFRklORV9NRU1CRVJfU0xPVyh3ZWJBc3NlbWJseVRhZ1NwYWNlLCAqd2ViQXNzZW1ibHlUYWdI
ZWFwQ2VsbFR5cGUsIEpTV2ViQXNzZW1ibHlUYWcpCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJ
TkVfTUVNQkVSX1NMT1cod2ViQXNzZW1ibHlXcmFwcGVyRnVuY3Rpb25TcGFjZSwgKmNlbGxIZWFw
Q2VsbFR5cGUsIFdlYkFzc2VtYmx5V3JhcHBlckZ1bmN0aW9uKSAvLyBIYXNoOjB4ZDRhNWZmMDEK
LSNlbmRpZgotCi0jdW5kZWYgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9X
Ci0KLSNkZWZpbmUgRFlOQU1JQ19TUEFDRV9BTkRfU0VUX0RFRklORV9NRU1CRVJfU0xPVyhuYW1l
LCBoZWFwQ2VsbFR5cGUsIHR5cGUpIFwKLSAgICBJc29TdWJzcGFjZSogVk06Om5hbWUjI1Nsb3co
KSBcCi0gICAgeyBcCi0gICAgICAgIEFTU0VSVCghbV8jI25hbWUpOyBcCi0gICAgICAgIGF1dG8g
c3BhY2UgPSBtYWtlVW5pcXVlPFNwYWNlQW5kU2V0PiBJU09fU1VCU1BBQ0VfSU5JVChoZWFwLCBo
ZWFwQ2VsbFR5cGUsIHR5cGUpOyBcCi0gICAgICAgIFdURjo6c3RvcmVTdG9yZUZlbmNlKCk7IFwK
LSAgICAgICAgbV8jI25hbWUgPSBXVEZNb3ZlKHNwYWNlKTsgXAotICAgICAgICByZXR1cm4gJm1f
IyNuYW1lLT5zcGFjZTsgXAotICAgIH0KLQotRFlOQU1JQ19TUEFDRV9BTkRfU0VUX0RFRklORV9N
RU1CRVJfU0xPVyhldmFsRXhlY3V0YWJsZVNwYWNlLCAqZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxs
VHlwZSwgRXZhbEV4ZWN1dGFibGUpIC8vIEhhc2g6MHg5NThlM2U5ZAotRFlOQU1JQ19TUEFDRV9B
TkRfU0VUX0RFRklORV9NRU1CRVJfU0xPVyhtb2R1bGVQcm9ncmFtRXhlY3V0YWJsZVNwYWNlLCAq
ZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZSwgTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUpIC8v
IEhhc2g6MHg2NTA2ZmEzYwotCi0jdW5kZWYgRFlOQU1JQ19TUEFDRV9BTkRfU0VUX0RFRklORV9N
RU1CRVJfU0xPVwotCiBKU0NlbGwqIFZNOjpzZW50aW5lbFNldEJ1Y2tldFNsb3coKQogewogICAg
IEFTU0VSVCghbV9zZW50aW5lbFNldEJ1Y2tldCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9WTS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1ZNLmgJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1ZNLmgJKHdvcmtpbmcgY29weSkKQEAgLTI4LDI4ICsyOCwyMyBAQAogCiAjcHJhZ21hIG9u
Y2UKIAotI2luY2x1ZGUgIkNhbGxEYXRhLmgiCiAjaW5jbHVkZSAiQ2FsbGVlQml0cy5oIgogI2lu
Y2x1ZGUgIkNvZGVTcGVjaWFsaXphdGlvbktpbmQuaCIKLSNpbmNsdWRlICJDb21wbGV0ZVN1YnNw
YWNlLmgiCiAjaW5jbHVkZSAiQ29uY3VycmVudEpTTG9jay5oIgogI2luY2x1ZGUgIkRGR0RvZXNH
Q0NoZWNrLmgiCiAjaW5jbHVkZSAiRGVsZXRlQWxsQ29kZUVmZm9ydC5oIgotI2luY2x1ZGUgIkRp
c2FsbG93Vk1FbnRyeS5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbkV2ZW50TG9jYXRpb24uaCIKICNp
bmNsdWRlICJGdW5jdGlvbkhhc0V4ZWN1dGVkQ2FjaGUuaCIKLSNpbmNsdWRlICJGdXp6ZXJBZ2Vu
dC5oIgogI2luY2x1ZGUgIkhlYXAuaCIKICNpbmNsdWRlICJJbnRlZ3JpdHkuaCIKICNpbmNsdWRl
ICJJbnRyaW5zaWMuaCIKLSNpbmNsdWRlICJJc29DZWxsU2V0LmgiCi0jaW5jbHVkZSAiSXNvU3Vi
c3BhY2UuaCIKICNpbmNsdWRlICJKU0NKU1ZhbHVlLmgiCiAjaW5jbHVkZSAiSlNEYXRlTWF0aC5o
IgogI2luY2x1ZGUgIkpTTG9jay5oIgogI2luY2x1ZGUgIkpTT05BdG9tU3RyaW5nQ2FjaGUuaCIK
ICNpbmNsdWRlICJNYWNyb0Fzc2VtYmxlckNvZGVSZWYuaCIKICNpbmNsdWRlICJNaWNyb3Rhc2su
aCIKKyNpbmNsdWRlICJOYXRpdmVGdW5jdGlvbi5oIgogI2luY2x1ZGUgIk51bWVyaWNTdHJpbmdz
LmgiCiAjaW5jbHVkZSAiU21hbGxTdHJpbmdzLmgiCiAjaW5jbHVkZSAiU3Ryb25nLmgiCkBAIC01
OCwxMCArNTMsOCBAQAogI2luY2x1ZGUgIlRodW5rR2VuZXJhdG9yLmgiCiAjaW5jbHVkZSAiVk1U
cmFwcy5oIgogI2luY2x1ZGUgIldhc21Db250ZXh0LmgiCi0jaW5jbHVkZSAiV2F0Y2hwb2ludC5o
IgogI2luY2x1ZGUgPHd0Zi9CdW1wUG9pbnRlckFsbG9jYXRvci5oPgogI2luY2x1ZGUgPHd0Zi9D
aGVja2VkQXJpdGhtZXRpYy5oPgotI2luY2x1ZGUgPHd0Zi9EYXRlTWF0aC5oPgogI2luY2x1ZGUg
PHd0Zi9EZXF1ZS5oPgogI2luY2x1ZGUgPHd0Zi9Eb3VibHlMaW5rZWRMaXN0Lmg+CiAjaW5jbHVk
ZSA8d3RmL0ZvcndhcmQuaD4KQEAgLTY5LDExICs2Miw5IEBACiAjaW5jbHVkZSA8d3RmL0hhc2hN
YXAuaD4KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9TZXRGb3JTY29w
ZS5oPgotI2luY2x1ZGUgPHd0Zi9TdGFja0JvdW5kcy5oPgogI2luY2x1ZGUgPHd0Zi9TdGFja1Bv
aW50ZXIuaD4KICNpbmNsdWRlIDx3dGYvU3RvcHdhdGNoLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVh
ZFNhZmVSZWZDb3VudGVkLmg+Ci0jaW5jbHVkZSA8d3RmL1RocmVhZFNwZWNpZmljLmg+CiAjaW5j
bHVkZSA8d3RmL1VuaXF1ZUFycmF5Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3ltYm9sUmVnaXN0
cnkuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KQEAgLTgxLDEwICs3Miw2IEBA
CiAjaW5jbHVkZSA8d3RmL0xpc3RIYXNoU2V0Lmg+CiAjZW5kaWYKIAotI2lmIEVOQUJMRShFWENF
UFRJT05fU0NPUEVfVkVSSUZJQ0FUSU9OKQotI2luY2x1ZGUgPHd0Zi9TdGFja1RyYWNlLmg+Ci0j
ZW5kaWYKLQogLy8gRW5hYmxlIHRoZSBPYmplY3RpdmUtQyBBUEkgZm9yIHBsYXRmb3JtcyB3aXRo
IGEgbW9kZXJuIHJ1bnRpbWUuIFRoaXMgaGFzIHRvIG1hdGNoIGV4YWN0bHkgd2hhdCB3ZQogLy8g
aGF2ZSBpbiBKU0Jhc2UuaC4KICNpZiAhZGVmaW5lZChKU0NfT0JKQ19BUElfRU5BQkxFRCkKQEAg
LTk4LDE2ICs4NSwxNyBAQAogbmFtZXNwYWNlIFdURiB7CiBjbGFzcyBSdW5Mb29wOwogY2xhc3Mg
U2ltcGxlU3RhdHM7CitjbGFzcyBTdGFja1RyYWNlOwogfSAvLyBuYW1lc3BhY2UgV1RGCiB1c2lu
ZyBXVEY6OlNpbXBsZVN0YXRzOwordXNpbmcgV1RGOjpTdGFja1RyYWNlOwogCiBuYW1lc3BhY2Ug
SlNDIHsKIAotY2xhc3MgQmFzaWNCbG9ja0xvY2F0aW9uOworY2xhc3MgQXJnTGlzdDsKIGNsYXNz
IEJ1aWx0aW5FeGVjdXRhYmxlczsKIGNsYXNzIEJ5dGVjb2RlSW50cmluc2ljUmVnaXN0cnk7CiBj
bGFzcyBDYWxsRnJhbWU7Ci1jbGFzcyBDYWxsTGlua0luZm87CiBlbnVtIGNsYXNzIENhbGxNb2Rl
Owogc3RydWN0IENoZWNrcG9pbnRPU1JFeGl0U2lkZVN0YXRlOwogY2xhc3MgQ29kZUJsb2NrOwpA
QCAtMTE2LDEwMSArMTA0LDQxIEBAIGNsYXNzIENvbW1vbklkZW50aWZpZXJzOwogY2xhc3MgQ29t
cGFjdFREWkVudmlyb25tZW50TWFwOwogY2xhc3MgQ29uc2VydmF0aXZlUm9vdHM7CiBjbGFzcyBD
b250cm9sRmxvd1Byb2ZpbGVyOwotY2xhc3MgQ3VzdG9tR2V0dGVyU2V0dGVyOwotY2xhc3MgRE9N
QXR0cmlidXRlR2V0dGVyU2V0dGVyOwotY2xhc3MgRGF0ZUluc3RhbmNlOwotY2xhc3MgRXJyb3JJ
bnN0YW5jZTsKIGNsYXNzIEV4Y2VwdGlvbjsKIGNsYXNzIEV4Y2VwdGlvblNjb3BlOwotY2xhc3Mg
RmFzdE1hbGxvY0FsaWduZWRNZW1vcnlBbGxvY2F0b3I7Ci1jbGFzcyBHaWdhY2FnZUFsaWduZWRN
ZW1vcnlBbGxvY2F0b3I7Ci1jbGFzcyBIYW5kbGVTdGFjazsKK2NsYXNzIEZ1enplckFnZW50Owog
Y2xhc3MgSGFzT3duUHJvcGVydHlDYWNoZTsKIGNsYXNzIEhlYXBBbmFseXplcjsKIGNsYXNzIEhl
YXBQcm9maWxlcjsKLWNsYXNzIElkZW50aWZpZXI7CiBjbGFzcyBJbnRlcnByZXRlcjsKIGNsYXNz
IEludGxDYWNoZTsKLWNsYXNzIEludGxDb2xsYXRvcjsKLWNsYXNzIEludGxEYXRlVGltZUZvcm1h
dDsKLWNsYXNzIEludGxEaXNwbGF5TmFtZXM7Ci1jbGFzcyBJbnRsTGlzdEZvcm1hdDsKLWNsYXNz
IEludGxMb2NhbGU7Ci1jbGFzcyBJbnRsTnVtYmVyRm9ybWF0OwotY2xhc3MgSW50bFBsdXJhbFJ1
bGVzOwotY2xhc3MgSW50bFJlbGF0aXZlVGltZUZvcm1hdDsKLWNsYXNzIEludGxTZWdtZW50SXRl
cmF0b3I7Ci1jbGFzcyBJbnRsU2VnbWVudGVyOwotY2xhc3MgSW50bFNlZ21lbnRzOwotY2xhc3Mg
SlNBUElHbG9iYWxPYmplY3Q7Ci1jbGFzcyBKU0FQSVdyYXBwZXJHbG9iYWxPYmplY3Q7Ci1jbGFz
cyBKU0FQSVdyYXBwZXJPYmplY3Q7Ci1jbGFzcyBKU0NDYWxsYmFja0Z1bmN0aW9uOwotY2xhc3Mg
SlNDYWxsYmFja0NvbnN0cnVjdG9yOwogY2xhc3MgSlNEZXN0cnVjdGlibGVPYmplY3RIZWFwQ2Vs
bFR5cGU7CiBjbGFzcyBKU0dsb2JhbE9iamVjdDsKLWNsYXNzIEpTR2xvYmFsTGV4aWNhbEVudmly
b25tZW50OwotY2xhc3MgSlNNb2R1bGVOYW1lc3BhY2VPYmplY3Q7Ci1jbGFzcyBKU01vZHVsZVJl
Y29yZDsKLWNsYXNzIEpTTmF0aXZlU3RkRnVuY3Rpb247Ci1jbGFzcyBKU05vbkZpbmFsT2JqZWN0
OwogY2xhc3MgSlNPYmplY3Q7CiBjbGFzcyBKU1Byb21pc2U7CiBjbGFzcyBKU1Byb3BlcnR5TmFt
ZUVudW1lcmF0b3I7Ci1jbGFzcyBKU1J1bkxvb3BUaW1lcjsKLWNsYXNzIEpTV2Vha01hcDsKLWNs
YXNzIEpTV2Vha1NldDsKLWNsYXNzIEpTV2ViQXNzZW1ibHlDb2RlQmxvY2s7Ci1jbGFzcyBKU1dl
YkFzc2VtYmx5R2xvYmFsOwotY2xhc3MgSlNXZWJBc3NlbWJseUluc3RhbmNlOwotY2xhc3MgSlNX
ZWJBc3NlbWJseU1lbW9yeTsKLWNsYXNzIEpTV2ViQXNzZW1ibHlNb2R1bGU7Ci1jbGFzcyBKU1dl
YkFzc2VtYmx5VGFibGU7CiBjbGFzcyBKSVRTaXplU3RhdGlzdGljczsKIGNsYXNzIEpJVFRodW5r
czsKLWNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKIGNsYXNzIE5hdGl2ZUV4ZWN1dGFibGU7
Ci1jbGFzcyBPYmpDQ2FsbGJhY2tGdW5jdGlvbjsKIGNsYXNzIERlZmVycmVkV29ya1RpbWVyOwog
Y2xhc3MgUmVnRXhwOwogY2xhc3MgUmVnRXhwQ2FjaGU7CiBjbGFzcyBSZWdpc3RlcjsKLWNsYXNz
IFJlZ2lzdGVyQXRPZmZzZXRMaXN0OwogI2lmIEVOQUJMRShTQU1QTElOR19QUk9GSUxFUikKIGNs
YXNzIFNhbXBsaW5nUHJvZmlsZXI7CiAjZW5kaWYKIGNsYXNzIFNoYWRvd0NoaWNrZW47CiBjbGFz
cyBTaGFyZWRKSVRTdHViU2V0OwotY2xhc3MgU2NyaXB0RXhlY3V0YWJsZTsKIGNsYXNzIFNvdXJj
ZVByb3ZpZGVyOwogY2xhc3MgU291cmNlUHJvdmlkZXJDYWNoZTsKLWNsYXNzIFN0YWNrRnJhbWU7
CiBjbGFzcyBTdHJ1Y3R1cmU7Ci0jaWYgRU5BQkxFKFJFR0VYUF9UUkFDSU5HKQotY2xhc3MgUmVn
RXhwOwotI2VuZGlmCiBjbGFzcyBTeW1ib2w7Ci1jbGFzcyBUZW1wb3JhbER1cmF0aW9uOwotY2xh
c3MgVGVtcG9yYWxJbnN0YW50OwogY2xhc3MgVHlwZWRBcnJheUNvbnRyb2xsZXI7Ci1jbGFzcyBV
bmxpbmtlZENvZGVCbG9jazsKLWNsYXNzIFVubGlua2VkRXZhbENvZGVCbG9jazsKLWNsYXNzIFVu
bGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOwotY2xhc3MgVW5saW5rZWRQcm9ncmFtQ29kZUJsb2Nr
OwotY2xhc3MgVW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrOwotY2xhc3MgVmlydHVhbFJl
Z2lzdGVyOwogY2xhc3MgVk1FbnRyeVNjb3BlOwotY2xhc3MgVGVtcG9yYWxDYWxlbmRhcjsKLWNs
YXNzIFRlbXBvcmFsUGxhaW5UaW1lOwotY2xhc3MgVGVtcG9yYWxUaW1lWm9uZTsKLWNsYXNzIFRv
cExldmVsR2xvYmFsT2JqZWN0U2NvcGU7CiBjbGFzcyBUeXBlUHJvZmlsZXI7CiBjbGFzcyBUeXBl
UHJvZmlsZXJMb2c7CiBjbGFzcyBXYXRjaGRvZzsKLWNsYXNzIFdhdGNocG9pbnQ7CiBjbGFzcyBX
YXRjaHBvaW50U2V0OwotY2xhc3MgV2ViQXNzZW1ibHlGdW5jdGlvbjsKLWNsYXNzIFdlYkFzc2Vt
Ymx5TW9kdWxlUmVjb3JkOwogCiAjaWYgRU5BQkxFKERGR19KSVQpICYmIEFTU0VSVF9FTkFCTEVE
CiAjZGVmaW5lIEVOQUJMRV9ERkdfRE9FU19HQ19WQUxJREFUSU9OIDEKQEAgLTIyMCwxMCArMTQ4
LDYgQEAgY2xhc3MgV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQ7CiAKIGNvbnN0ZXhwciBib29sIHZh
bGlkYXRlREZHRG9lc0dDID0gRU5BQkxFX0RGR19ET0VTX0dDX1ZBTElEQVRJT047CiAKLWNsYXNz
IElzb0hlYXBDZWxsVHlwZTsKLXRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlPiBjbGFzcyBJc29J
bmxpbmVkSGVhcENlbGxUeXBlOwotdGVtcGxhdGU8dHlwZW5hbWUgUGFyZW50PiBjbGFzcyBKU0Nh
bGxiYWNrT2JqZWN0OwotCiAjaWYgRU5BQkxFKEZUTF9KSVQpCiBuYW1lc3BhY2UgRlRMIHsKIGNs
YXNzIFRodW5rczsKQEAgLTIzNSwxNCArMTU5LDkgQEAgY2xhc3MgRGF0YWJhc2U7CiBuYW1lc3Bh
Y2UgRE9NSklUIHsKIGNsYXNzIFNpZ25hdHVyZTsKIH0KLW5hbWVzcGFjZSBZYXJyIHsKLWNsYXNz
IE1hdGNoaW5nQ29udGV4dEhvbGRlcjsKLX0KIAogc3RydWN0IEVudHJ5RnJhbWU7Ci1zdHJ1Y3Qg
SGFzaFRhYmxlOwogc3RydWN0IEluc3RydWN0aW9uOwotc3RydWN0IFZhbHVlUHJvZmlsZTsKIAog
Y2xhc3MgUXVldWVkVGFzayB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoUXVldWVkVGFzayk7
CkBAIC0yNjEsOCArMTgwLDYgQEAgcHJpdmF0ZToKICAgICBSZWY8TWljcm90YXNrPiBtX21pY3Jv
dGFzazsKIH07CiAKLWNsYXNzIENvbnNlcnZhdGl2ZVJvb3RzOwotCiBERUNMQVJFX0FMTE9DQVRP
Ul9XSVRIX0hFQVBfSURFTlRJRklFUihWTSk7CiAKICNpZiBDT01QSUxFUihNU1ZDKQpAQCAtMzU3
LDExICsyNzQsNyBAQCBwdWJsaWM6CiAjZW5kaWYKIAogICAgIEZ1enplckFnZW50KiBmdXp6ZXJB
Z2VudCgpIGNvbnN0IHsgcmV0dXJuIG1fZnV6emVyQWdlbnQuZ2V0KCk7IH0KLSAgICB2b2lkIHNl
dEZ1enplckFnZW50KHN0ZDo6dW5pcXVlX3B0cjxGdXp6ZXJBZ2VudD4mJiBmdXp6ZXJBZ2VudCkK
LSAgICB7Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUX1dJVEhfTUVTU0FHRSghbV9mdXp6ZXJBZ2Vu
dCwgIk9ubHkgb25lIEZ1enplckFnZW50IGNhbiBiZSBzcGVjaWZpZWQgYXQgYSB0aW1lLiIpOwot
ICAgICAgICBtX2Z1enplckFnZW50ID0gV1RGTW92ZShmdXp6ZXJBZ2VudCk7Ci0gICAgfQorICAg
IHZvaWQgc2V0RnV6emVyQWdlbnQoc3RkOjp1bmlxdWVfcHRyPEZ1enplckFnZW50PiYmIGZ1enpl
ckFnZW50KTsKIAogICAgIHN0YXRpYyB1bnNpZ25lZCBudW1iZXJPZklEcygpIHsgcmV0dXJuIHNf
bnVtYmVyT2ZJRHMubG9hZCgpOyB9CiAgICAgdW5zaWduZWQgaWQoKSBjb25zdCB7IHJldHVybiBt
X2lkOyB9CkBAIC00MTMsMTQ1ICszMjYsNTggQEAgcHJpdmF0ZToKIAogcHVibGljOgogICAgIEhl
YXAgaGVhcDsKLSAgICAKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8RmFzdE1hbGxvY0FsaWduZWRNZW1v
cnlBbGxvY2F0b3I+IGZhc3RNYWxsb2NBbGxvY2F0b3I7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPEdp
Z2FjYWdlQWxpZ25lZE1lbW9yeUFsbG9jYXRvcj4gcHJpbWl0aXZlR2lnYWNhZ2VBbGxvY2F0b3I7
Ci0gICAgc3RkOjp1bmlxdWVfcHRyPEdpZ2FjYWdlQWxpZ25lZE1lbW9yeUFsbG9jYXRvcj4ganNW
YWx1ZUdpZ2FjYWdlQWxsb2NhdG9yOwotCi0gICAgc3RkOjp1bmlxdWVfcHRyPEhlYXBDZWxsVHlw
ZT4gYXV4aWxpYXJ5SGVhcENlbGxUeXBlOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxIZWFwQ2VsbFR5
cGU+IGltbXV0YWJsZUJ1dHRlcmZseUhlYXBDZWxsVHlwZTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8
SGVhcENlbGxUeXBlPiBjZWxsSGVhcENlbGxUeXBlOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxIZWFw
Q2VsbFR5cGU+IGRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGU7Ci0gICAgc3RkOjp1bmlxdWVf
cHRyPElzb0hlYXBDZWxsVHlwZT4gYXBpR2xvYmFsT2JqZWN0SGVhcENlbGxUeXBlOwotICAgIHN0
ZDo6dW5pcXVlX3B0cjxJc29IZWFwQ2VsbFR5cGU+IGNhbGxiYWNrQ29uc3RydWN0b3JIZWFwQ2Vs
bFR5cGU7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPElzb0hlYXBDZWxsVHlwZT4gY2FsbGJhY2tHbG9i
YWxPYmplY3RIZWFwQ2VsbFR5cGU7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPElzb0hlYXBDZWxsVHlw
ZT4gY2FsbGJhY2tPYmplY3RIZWFwQ2VsbFR5cGU7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPElzb0hl
YXBDZWxsVHlwZT4gY3VzdG9tR2V0dGVyRnVuY3Rpb25IZWFwQ2VsbFR5cGU7Ci0gICAgc3RkOjp1
bmlxdWVfcHRyPElzb0hlYXBDZWxsVHlwZT4gY3VzdG9tU2V0dGVyRnVuY3Rpb25IZWFwQ2VsbFR5
cGU7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPElzb0hlYXBDZWxsVHlwZT4gZGF0ZUluc3RhbmNlSGVh
cENlbGxUeXBlOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxJc29IZWFwQ2VsbFR5cGU+IGVycm9ySW5z
dGFuY2VIZWFwQ2VsbFR5cGU7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPElzb0hlYXBDZWxsVHlwZT4g
ZmluYWxpemF0aW9uUmVnaXN0cnlDZWxsVHlwZTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SXNvSGVh
cENlbGxUeXBlPiBnbG9iYWxMZXhpY2FsRW52aXJvbm1lbnRIZWFwQ2VsbFR5cGU7Ci0gICAgc3Rk
Ojp1bmlxdWVfcHRyPElzb0hlYXBDZWxsVHlwZT4gZ2xvYmFsT2JqZWN0SGVhcENlbGxUeXBlOwot
ICAgIHN0ZDo6dW5pcXVlX3B0cjxJc29IZWFwQ2VsbFR5cGU+IGluamVjdGVkU2NyaXB0SG9zdFNw
YWNlSGVhcENlbGxUeXBlOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxJc29IZWFwQ2VsbFR5cGU+IGph
dmFTY3JpcHRDYWxsRnJhbWVIZWFwQ2VsbFR5cGU7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPElzb0hl
YXBDZWxsVHlwZT4ganNNb2R1bGVSZWNvcmRIZWFwQ2VsbFR5cGU7Ci0gICAgc3RkOjp1bmlxdWVf
cHRyPElzb0hlYXBDZWxsVHlwZT4gbW9kdWxlTmFtZXNwYWNlT2JqZWN0SGVhcENlbGxUeXBlOwot
ICAgIHN0ZDo6dW5pcXVlX3B0cjxJc29IZWFwQ2VsbFR5cGU+IG5hdGl2ZVN0ZEZ1bmN0aW9uSGVh
cENlbGxUeXBlOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxJc29JbmxpbmVkSGVhcENlbGxUeXBlPEpT
U3RyaW5nPj4gc3RyaW5nSGVhcENlbGxUeXBlOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxJc29IZWFw
Q2VsbFR5cGU+IHdlYWtNYXBIZWFwQ2VsbFR5cGU7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPElzb0hl
YXBDZWxsVHlwZT4gd2Vha1NldEhlYXBDZWxsVHlwZTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SlNE
ZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGU+IGRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxs
VHlwZTsKLSNpZiBKU0NfT0JKQ19BUElfRU5BQkxFRAotICAgIHN0ZDo6dW5pcXVlX3B0cjxJc29I
ZWFwQ2VsbFR5cGU+IGFwaVdyYXBwZXJPYmplY3RIZWFwQ2VsbFR5cGU7Ci0gICAgc3RkOjp1bmlx
dWVfcHRyPElzb0hlYXBDZWxsVHlwZT4gb2JqQ0NhbGxiYWNrRnVuY3Rpb25IZWFwQ2VsbFR5cGU7
Ci0jZW5kaWYKLSNpZmRlZiBKU0NfR0xJQl9BUElfRU5BQkxFRAotICAgIHN0ZDo6dW5pcXVlX3B0
cjxJc29IZWFwQ2VsbFR5cGU+IGFwaVdyYXBwZXJPYmplY3RIZWFwQ2VsbFR5cGU7Ci0gICAgc3Rk
Ojp1bmlxdWVfcHRyPElzb0hlYXBDZWxsVHlwZT4gY2FsbGJhY2tBUElXcmFwcGVyR2xvYmFsT2Jq
ZWN0SGVhcENlbGxUeXBlOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxJc29IZWFwQ2VsbFR5cGU+IGpz
Y0NhbGxiYWNrRnVuY3Rpb25IZWFwQ2VsbFR5cGU7Ci0jZW5kaWYKLSAgICBzdGQ6OnVuaXF1ZV9w
dHI8SXNvSGVhcENlbGxUeXBlPiBpbnRsQ29sbGF0b3JIZWFwQ2VsbFR5cGU7Ci0gICAgc3RkOjp1
bmlxdWVfcHRyPElzb0hlYXBDZWxsVHlwZT4gaW50bERhdGVUaW1lRm9ybWF0SGVhcENlbGxUeXBl
OwotICAgIHN0ZDo6dW5pcXVlX3B0cjxJc29IZWFwQ2VsbFR5cGU+IGludGxEaXNwbGF5TmFtZXNI
ZWFwQ2VsbFR5cGU7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPElzb0hlYXBDZWxsVHlwZT4gaW50bExp
c3RGb3JtYXRIZWFwQ2VsbFR5cGU7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPElzb0hlYXBDZWxsVHlw
ZT4gaW50bExvY2FsZUhlYXBDZWxsVHlwZTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SXNvSGVhcENl
bGxUeXBlPiBpbnRsTnVtYmVyRm9ybWF0SGVhcENlbGxUeXBlOwotICAgIHN0ZDo6dW5pcXVlX3B0
cjxJc29IZWFwQ2VsbFR5cGU+IGludGxQbHVyYWxSdWxlc0hlYXBDZWxsVHlwZTsKLSAgICBzdGQ6
OnVuaXF1ZV9wdHI8SXNvSGVhcENlbGxUeXBlPiBpbnRsUmVsYXRpdmVUaW1lRm9ybWF0SGVhcENl
bGxUeXBlOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxJc29IZWFwQ2VsbFR5cGU+IGludGxTZWdtZW50
SXRlcmF0b3JIZWFwQ2VsbFR5cGU7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPElzb0hlYXBDZWxsVHlw
ZT4gaW50bFNlZ21lbnRlckhlYXBDZWxsVHlwZTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SXNvSGVh
cENlbGxUeXBlPiBpbnRsU2VnbWVudHNIZWFwQ2VsbFR5cGU7Ci0jaWYgRU5BQkxFKFdFQkFTU0VN
QkxZKQotICAgIHN0ZDo6dW5pcXVlX3B0cjxJc29IZWFwQ2VsbFR5cGU+IHdlYkFzc2VtYmx5Q29k
ZUJsb2NrSGVhcENlbGxUeXBlOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxJc29IZWFwQ2VsbFR5cGU+
IHdlYkFzc2VtYmx5RXhjZXB0aW9uSGVhcENlbGxUeXBlOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxJ
c29IZWFwQ2VsbFR5cGU+IHdlYkFzc2VtYmx5RnVuY3Rpb25IZWFwQ2VsbFR5cGU7Ci0gICAgc3Rk
Ojp1bmlxdWVfcHRyPElzb0hlYXBDZWxsVHlwZT4gd2ViQXNzZW1ibHlHbG9iYWxIZWFwQ2VsbFR5
cGU7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPElzb0hlYXBDZWxsVHlwZT4gd2ViQXNzZW1ibHlJbnN0
YW5jZUhlYXBDZWxsVHlwZTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SXNvSGVhcENlbGxUeXBlPiB3
ZWJBc3NlbWJseU1lbW9yeUhlYXBDZWxsVHlwZTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SXNvSGVh
cENlbGxUeXBlPiB3ZWJBc3NlbWJseU1vZHVsZUhlYXBDZWxsVHlwZTsKLSAgICBzdGQ6OnVuaXF1
ZV9wdHI8SXNvSGVhcENlbGxUeXBlPiB3ZWJBc3NlbWJseU1vZHVsZVJlY29yZEhlYXBDZWxsVHlw
ZTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SXNvSGVhcENlbGxUeXBlPiB3ZWJBc3NlbWJseVRhYmxl
SGVhcENlbGxUeXBlOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxJc29IZWFwQ2VsbFR5cGU+IHdlYkFz
c2VtYmx5VGFnSGVhcENlbGxUeXBlOwotI2VuZGlmCisKKyAgICBjb25zdCBIZWFwQ2VsbFR5cGUm
IGNlbGxIZWFwQ2VsbFR5cGUoKSB7IHJldHVybiBoZWFwLmNlbGxIZWFwQ2VsbFR5cGU7IH0KKyAg
ICBjb25zdCBKU0Rlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSYgZGVzdHJ1Y3RpYmxlT2Jq
ZWN0SGVhcENlbGxUeXBlKCkgeyByZXR1cm4gaGVhcC5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2Vs
bFR5cGU7IH07CiAKICNpZiBFTkFCTEUoSklUKQogICAgIHN0ZDo6dW5pcXVlX3B0cjxKSVRTaXpl
U3RhdGlzdGljcz4gaml0U2l6ZVN0YXRpc3RpY3M7CiAjZW5kaWYKICAgICAKLSAgICBDb21wbGV0
ZVN1YnNwYWNlIHByaW1pdGl2ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2U7IC8vIFR5cGVkIGFycmF5
cywgc3RyaW5ncywgYml0dmVjdG9ycywgZXRjIGdvIGhlcmUuCi0gICAgQ29tcGxldGVTdWJzcGFj
ZSBqc1ZhbHVlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZTsgLy8gQnV0dGVyZmxpZXMsIGFycmF5cyBv
ZiBKU1ZhbHVlcywgZXRjIGdvIGhlcmUuCi0gICAgQ29tcGxldGVTdWJzcGFjZSBpbW11dGFibGVC
dXR0ZXJmbHlKU1ZhbHVlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZTsgLy8gSlNJbW11dGFibGVCdXR0
ZXJmbHkgZ29lcyBoZXJlLgotCi0gICAgLy8gV2UgbWFrZSBjcm9zcy1jdXR0aW5nIGFzc3VtcHRp
b25zIGFib3V0IHR5cGVkIGFycmF5cyBiZWluZyBpbiB0aGUgcHJpbWl0aXZlIEdpZ2FjYWdlIGFu
ZCBidXR0ZXJmbGllcwotICAgIC8vIGJlaW5nIGluIHRoZSBKU1ZhbHVlIGdpZ2FjYWdlLiBGb3Ig
c29tZSB0eXBlcywgaXQncyBzdXBlciBvYnZpb3VzIHdoZXJlIHRoZXkgc2hvdWxkIGdvLCBhbmQg
c28gd2UKLSAgICAvLyBjYW4gaGFyZGNvZGUgdGhhdCBmYWN0LiBCdXQgc29tZXRpbWVzIGl0J3Mg
bm90IGNsZWFyLCBzbyB3ZSBhYnN0cmFjdCBpdCBieSBoYXZpbmcgYSBHaWdhY2FnZTo6S2luZAot
ICAgIC8vIGNvbnN0YW50IHNvbWV3aGVyZS4KLSAgICAvLyBGSVhNRTogTWF5YmUgaXQgd291bGQg
YmUgYmV0dGVyIGlmIGV2ZXJ5b25lIGFic3RyYWN0ZWQgdGhpcz8KLSAgICAvLyBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc1MjQ4Ci0gICAgQUxXQVlTX0lOTElORSBD
b21wbGV0ZVN1YnNwYWNlJiBnaWdhY2FnZUF1eGlsaWFyeVNwYWNlKEdpZ2FjYWdlOjpLaW5kIGtp
bmQpCi0gICAgewotICAgICAgICBzd2l0Y2ggKGtpbmQpIHsKLSAgICAgICAgY2FzZSBHaWdhY2Fn
ZTo6UHJpbWl0aXZlOgotICAgICAgICAgICAgcmV0dXJuIHByaW1pdGl2ZUdpZ2FjYWdlQXV4aWxp
YXJ5U3BhY2U7Ci0gICAgICAgIGNhc2UgR2lnYWNhZ2U6OkpTVmFsdWU6Ci0gICAgICAgICAgICBy
ZXR1cm4ganNWYWx1ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2U7Ci0gICAgICAgIGNhc2UgR2lnYWNh
Z2U6Ok51bWJlck9mS2luZHM6Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAg
ICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm4gcHJpbWl0aXZl
R2lnYWNhZ2VBdXhpbGlhcnlTcGFjZTsKLSAgICB9Ci0gICAgCi0gICAgLy8gV2hlbmV2ZXIgcG9z
c2libGUsIHVzZSBzdWJzcGFjZUZvcjxDZWxsVHlwZT4odm0pIHRvIGdldCBvbmUgb2YgdGhlc2Ug
c3Vic3BhY2VzLgotICAgIENvbXBsZXRlU3Vic3BhY2UgY2VsbFNwYWNlOwotICAgIENvbXBsZXRl
U3Vic3BhY2UgdmFyaWFibGVTaXplZENlbGxTcGFjZTsgLy8gRklYTUU6IFRoaXMgc3BhY2UgaXMg
cHJvYmxlbWF0aWMgYmVjYXVzZSB3ZSBoYXZlIHRoaW5ncyBpbiBoZXJlIGxpa2UgRGlyZWN0QXJn
dW1lbnRzIGFuZCBTY29wZWRBcmd1bWVudHM7IHRob3NlIHNob3VsZCBiZSBzcGxpdCBpbnRvIEpT
VmFsdWVPT0IgY2VsbHMgYW5kIEpTVmFsdWVTdHJpY3QgYXV4aWxpYXJpZXMuIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODI4NTgKLSAgICBDb21wbGV0ZVN1YnNwYWNl
IGRlc3RydWN0aWJsZU9iamVjdFNwYWNlOwotICAgIAotICAgIElzb1N1YnNwYWNlIGFycmF5U3Bh
Y2U7Ci0gICAgSXNvU3Vic3BhY2UgYmlnSW50U3BhY2U7Ci0gICAgSXNvU3Vic3BhY2UgY2FsbGVl
U3BhY2U7Ci0gICAgSXNvU3Vic3BhY2UgY2xvbmVkQXJndW1lbnRzU3BhY2U7Ci0gICAgSXNvU3Vi
c3BhY2UgY3VzdG9tR2V0dGVyU2V0dGVyU3BhY2U7Ci0gICAgSXNvU3Vic3BhY2UgZGF0ZUluc3Rh
bmNlU3BhY2U7Ci0gICAgSXNvU3Vic3BhY2UgZG9tQXR0cmlidXRlR2V0dGVyU2V0dGVyU3BhY2U7
Ci0gICAgSXNvU3Vic3BhY2UgZXhjZXB0aW9uU3BhY2U7Ci0gICAgSXNvU3Vic3BhY2UgZXhlY3V0
YWJsZVRvQ29kZUJsb2NrRWRnZVNwYWNlOwotICAgIElzb1N1YnNwYWNlIGZ1bmN0aW9uU3BhY2U7
Ci0gICAgSXNvU3Vic3BhY2UgZ2V0dGVyU2V0dGVyU3BhY2U7Ci0gICAgSXNvU3Vic3BhY2UgZ2xv
YmFsTGV4aWNhbEVudmlyb25tZW50U3BhY2U7Ci0gICAgSXNvU3Vic3BhY2UgaW50ZXJuYWxGdW5j
dGlvblNwYWNlOwotICAgIElzb1N1YnNwYWNlIGpzUHJveHlTcGFjZTsKLSAgICBJc29TdWJzcGFj
ZSBuYXRpdmVFeGVjdXRhYmxlU3BhY2U7Ci0gICAgSXNvU3Vic3BhY2UgbnVtYmVyT2JqZWN0U3Bh
Y2U7Ci0gICAgSXNvU3Vic3BhY2UgcGxhaW5PYmplY3RTcGFjZTsKLSAgICBJc29TdWJzcGFjZSBw
cm9taXNlU3BhY2U7Ci0gICAgSXNvU3Vic3BhY2UgcHJvcGVydHlOYW1lRW51bWVyYXRvclNwYWNl
OwotICAgIElzb1N1YnNwYWNlIHByb3BlcnR5VGFibGVTcGFjZTsKLSAgICBJc29TdWJzcGFjZSBy
ZWdFeHBTcGFjZTsKLSAgICBJc29TdWJzcGFjZSByZWdFeHBPYmplY3RTcGFjZTsKLSAgICBJc29T
dWJzcGFjZSByb3BlU3RyaW5nU3BhY2U7Ci0gICAgSXNvU3Vic3BhY2Ugc2NvcGVkQXJndW1lbnRz
U3BhY2U7Ci0gICAgSXNvU3Vic3BhY2Ugc3BhcnNlQXJyYXlWYWx1ZU1hcFNwYWNlOwotICAgIElz
b1N1YnNwYWNlIHN0cmluZ1NwYWNlOwotICAgIElzb1N1YnNwYWNlIHN0cmluZ09iamVjdFNwYWNl
OwotICAgIElzb1N1YnNwYWNlIHN0cnVjdHVyZUNoYWluU3BhY2U7Ci0gICAgSXNvU3Vic3BhY2Ug
c3RydWN0dXJlUmFyZURhdGFTcGFjZTsKLSAgICBJc29TdWJzcGFjZSBzdHJ1Y3R1cmVTcGFjZTsK
LSAgICBJc29TdWJzcGFjZSBicmFuZGVkU3RydWN0dXJlU3BhY2U7Ci0gICAgSXNvU3Vic3BhY2Ug
c3ltYm9sVGFibGVTcGFjZTsKKyAgICBBTFdBWVNfSU5MSU5FIENvbXBsZXRlU3Vic3BhY2UmIHBy
aW1pdGl2ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UoKSB7IHJldHVybiBoZWFwLnByaW1pdGl2ZUdp
Z2FjYWdlQXV4aWxpYXJ5U3BhY2U7IH0KKyAgICBBTFdBWVNfSU5MSU5FIENvbXBsZXRlU3Vic3Bh
Y2UmIGpzVmFsdWVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlKCkgeyByZXR1cm4gaGVhcC5qc1ZhbHVl
R2lnYWNhZ2VBdXhpbGlhcnlTcGFjZTsgfQorICAgIEFMV0FZU19JTkxJTkUgQ29tcGxldGVTdWJz
cGFjZSYgaW1tdXRhYmxlQnV0dGVyZmx5SlNWYWx1ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UoKSB7
IHJldHVybiBoZWFwLmltbXV0YWJsZUJ1dHRlcmZseUpTVmFsdWVHaWdhY2FnZUF1eGlsaWFyeVNw
YWNlOyB9CisgICAgQUxXQVlTX0lOTElORSBDb21wbGV0ZVN1YnNwYWNlJiBnaWdhY2FnZUF1eGls
aWFyeVNwYWNlKEdpZ2FjYWdlOjpLaW5kIGtpbmQpIHsgcmV0dXJuIGhlYXAuZ2lnYWNhZ2VBdXhp
bGlhcnlTcGFjZShraW5kKTsgfQorICAgIEFMV0FZU19JTkxJTkUgQ29tcGxldGVTdWJzcGFjZSYg
Y2VsbFNwYWNlKCkgeyByZXR1cm4gaGVhcC5jZWxsU3BhY2U7IH0KKyAgICBBTFdBWVNfSU5MSU5F
IENvbXBsZXRlU3Vic3BhY2UmIHZhcmlhYmxlU2l6ZWRDZWxsU3BhY2UoKSB7IHJldHVybiBoZWFw
LnZhcmlhYmxlU2l6ZWRDZWxsU3BhY2U7IH0KKyAgICBBTFdBWVNfSU5MSU5FIENvbXBsZXRlU3Vi
c3BhY2UmIGRlc3RydWN0aWJsZU9iamVjdFNwYWNlKCkgeyByZXR1cm4gaGVhcC5kZXN0cnVjdGli
bGVPYmplY3RTcGFjZTsgfQorCisgICAgQUxXQVlTX0lOTElORSBJc29TdWJzcGFjZSYgYXJyYXlT
cGFjZSgpIHsgcmV0dXJuIGhlYXAuYXJyYXlTcGFjZTsgfQorICAgIEFMV0FZU19JTkxJTkUgSXNv
U3Vic3BhY2UmIGJpZ0ludFNwYWNlKCkgeyByZXR1cm4gaGVhcC5iaWdJbnRTcGFjZTsgfQorICAg
IEFMV0FZU19JTkxJTkUgSXNvU3Vic3BhY2UmIGNhbGxlZVNwYWNlKCkgeyByZXR1cm4gaGVhcC5j
YWxsZWVTcGFjZTsgfQorICAgIEFMV0FZU19JTkxJTkUgSXNvU3Vic3BhY2UmIGNsb25lZEFyZ3Vt
ZW50c1NwYWNlKCkgeyByZXR1cm4gaGVhcC5jbG9uZWRBcmd1bWVudHNTcGFjZTsgfQorICAgIEFM
V0FZU19JTkxJTkUgSXNvU3Vic3BhY2UmIGN1c3RvbUdldHRlclNldHRlclNwYWNlKCkgeyByZXR1
cm4gaGVhcC5jdXN0b21HZXR0ZXJTZXR0ZXJTcGFjZTsgfQorICAgIEFMV0FZU19JTkxJTkUgSXNv
U3Vic3BhY2UmIGRhdGVJbnN0YW5jZVNwYWNlKCkgeyByZXR1cm4gaGVhcC5kYXRlSW5zdGFuY2VT
cGFjZTsgfQorICAgIEFMV0FZU19JTkxJTkUgSXNvU3Vic3BhY2UmIGRvbUF0dHJpYnV0ZUdldHRl
clNldHRlclNwYWNlKCkgeyByZXR1cm4gaGVhcC5kb21BdHRyaWJ1dGVHZXR0ZXJTZXR0ZXJTcGFj
ZTsgfQorICAgIEFMV0FZU19JTkxJTkUgSXNvU3Vic3BhY2UmIGV4Y2VwdGlvblNwYWNlKCkgeyBy
ZXR1cm4gaGVhcC5leGNlcHRpb25TcGFjZTsgfQorICAgIEFMV0FZU19JTkxJTkUgSXNvU3Vic3Bh
Y2UmIGV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2VTcGFjZSgpIHsgcmV0dXJuIGhlYXAuZXhlY3V0
YWJsZVRvQ29kZUJsb2NrRWRnZVNwYWNlOyB9CisgICAgQUxXQVlTX0lOTElORSBJc29TdWJzcGFj
ZSYgZnVuY3Rpb25TcGFjZSgpIHsgcmV0dXJuIGhlYXAuZnVuY3Rpb25TcGFjZTsgfQorICAgIEFM
V0FZU19JTkxJTkUgSXNvU3Vic3BhY2UmIGdldHRlclNldHRlclNwYWNlKCkgeyByZXR1cm4gaGVh
cC5nZXR0ZXJTZXR0ZXJTcGFjZTsgfQorICAgIEFMV0FZU19JTkxJTkUgSXNvU3Vic3BhY2UmIGds
b2JhbExleGljYWxFbnZpcm9ubWVudFNwYWNlKCkgeyByZXR1cm4gaGVhcC5nbG9iYWxMZXhpY2Fs
RW52aXJvbm1lbnRTcGFjZTsgfQorICAgIEFMV0FZU19JTkxJTkUgSXNvU3Vic3BhY2UmIGludGVy
bmFsRnVuY3Rpb25TcGFjZSgpIHsgcmV0dXJuIGhlYXAuaW50ZXJuYWxGdW5jdGlvblNwYWNlOyB9
CisgICAgQUxXQVlTX0lOTElORSBJc29TdWJzcGFjZSYganNQcm94eVNwYWNlKCkgeyByZXR1cm4g
aGVhcC5qc1Byb3h5U3BhY2U7IH0KKyAgICBBTFdBWVNfSU5MSU5FIElzb1N1YnNwYWNlJiBuYXRp
dmVFeGVjdXRhYmxlU3BhY2UoKSB7IHJldHVybiBoZWFwLm5hdGl2ZUV4ZWN1dGFibGVTcGFjZTsg
fQorICAgIEFMV0FZU19JTkxJTkUgSXNvU3Vic3BhY2UmIG51bWJlck9iamVjdFNwYWNlKCkgeyBy
ZXR1cm4gaGVhcC5udW1iZXJPYmplY3RTcGFjZTsgfQorICAgIEFMV0FZU19JTkxJTkUgSXNvU3Vi
c3BhY2UmIHBsYWluT2JqZWN0U3BhY2UoKSB7IHJldHVybiBoZWFwLnBsYWluT2JqZWN0U3BhY2U7
IH0KKyAgICBBTFdBWVNfSU5MSU5FIElzb1N1YnNwYWNlJiBwcm9taXNlU3BhY2UoKSB7IHJldHVy
biBoZWFwLnByb21pc2VTcGFjZTsgfQorICAgIEFMV0FZU19JTkxJTkUgSXNvU3Vic3BhY2UmIHBy
b3BlcnR5TmFtZUVudW1lcmF0b3JTcGFjZSgpIHsgcmV0dXJuIGhlYXAucHJvcGVydHlOYW1lRW51
bWVyYXRvclNwYWNlOyB9CisgICAgQUxXQVlTX0lOTElORSBJc29TdWJzcGFjZSYgcHJvcGVydHlU
YWJsZVNwYWNlKCkgeyByZXR1cm4gaGVhcC5wcm9wZXJ0eVRhYmxlU3BhY2U7IH0KKyAgICBBTFdB
WVNfSU5MSU5FIElzb1N1YnNwYWNlJiByZWdFeHBTcGFjZSgpIHsgcmV0dXJuIGhlYXAucmVnRXhw
U3BhY2U7IH0KKyAgICBBTFdBWVNfSU5MSU5FIElzb1N1YnNwYWNlJiByZWdFeHBPYmplY3RTcGFj
ZSgpIHsgcmV0dXJuIGhlYXAucmVnRXhwT2JqZWN0U3BhY2U7IH0KKyAgICBBTFdBWVNfSU5MSU5F
IElzb1N1YnNwYWNlJiByb3BlU3RyaW5nU3BhY2UoKSB7IHJldHVybiBoZWFwLnJvcGVTdHJpbmdT
cGFjZTsgfQorICAgIEFMV0FZU19JTkxJTkUgSXNvU3Vic3BhY2UmIHNjb3BlZEFyZ3VtZW50c1Nw
YWNlKCkgeyByZXR1cm4gaGVhcC5zY29wZWRBcmd1bWVudHNTcGFjZTsgfQorICAgIEFMV0FZU19J
TkxJTkUgSXNvU3Vic3BhY2UmIHNwYXJzZUFycmF5VmFsdWVNYXBTcGFjZSgpIHsgcmV0dXJuIGhl
YXAuc3BhcnNlQXJyYXlWYWx1ZU1hcFNwYWNlOyB9CisgICAgQUxXQVlTX0lOTElORSBJc29TdWJz
cGFjZSYgc3RyaW5nU3BhY2UoKSB7IHJldHVybiBoZWFwLnN0cmluZ1NwYWNlOyB9CisgICAgQUxX
QVlTX0lOTElORSBJc29TdWJzcGFjZSYgc3RyaW5nT2JqZWN0U3BhY2UoKSB7IHJldHVybiBoZWFw
LnN0cmluZ09iamVjdFNwYWNlOyB9CisgICAgQUxXQVlTX0lOTElORSBJc29TdWJzcGFjZSYgc3Ry
dWN0dXJlQ2hhaW5TcGFjZSgpIHsgcmV0dXJuIGhlYXAuc3RydWN0dXJlQ2hhaW5TcGFjZTsgfQor
ICAgIEFMV0FZU19JTkxJTkUgSXNvU3Vic3BhY2UmIHN0cnVjdHVyZVJhcmVEYXRhU3BhY2UoKSB7
IHJldHVybiBoZWFwLnN0cnVjdHVyZVJhcmVEYXRhU3BhY2U7IH0KKyAgICBBTFdBWVNfSU5MSU5F
IElzb1N1YnNwYWNlJiBzdHJ1Y3R1cmVTcGFjZSgpIHsgcmV0dXJuIGhlYXAuc3RydWN0dXJlU3Bh
Y2U7IH0KKyAgICBBTFdBWVNfSU5MSU5FIElzb1N1YnNwYWNlJiBicmFuZGVkU3RydWN0dXJlU3Bh
Y2UoKSB7IHJldHVybiBoZWFwLmJyYW5kZWRTdHJ1Y3R1cmVTcGFjZTsgfQorICAgIEFMV0FZU19J
TkxJTkUgSXNvU3Vic3BhY2UmIHN5bWJvbFRhYmxlU3BhY2UoKSB7IHJldHVybiBoZWFwLnN5bWJv
bFRhYmxlU3BhY2U7IH0KIAogI2RlZmluZSBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVN
QkVSKG5hbWUpIFwKICAgICB0ZW1wbGF0ZTxTdWJzcGFjZUFjY2VzcyBtb2RlPiBcCi0gICAgSXNv
U3Vic3BhY2UqIG5hbWUoKSBcCi0gICAgeyBcCi0gICAgICAgIGlmIChtXyMjbmFtZSB8fCBtb2Rl
ID09IFN1YnNwYWNlQWNjZXNzOjpDb25jdXJyZW50bHkpIFwKLSAgICAgICAgICAgIHJldHVybiBt
XyMjbmFtZS5nZXQoKTsgXAotICAgICAgICByZXR1cm4gbmFtZSMjU2xvdygpOyBcCi0gICAgfSBc
Ci0gICAgSlNfRVhQT1JUX1BSSVZBVEUgSXNvU3Vic3BhY2UqIG5hbWUjI1Nsb3coKTsgXAotICAg
IHN0ZDo6dW5pcXVlX3B0cjxJc29TdWJzcGFjZT4gbV8jI25hbWU7Ci0KKyAgICBBTFdBWVNfSU5M
SU5FIElzb1N1YnNwYWNlKiBuYW1lKCkgeyByZXR1cm4gaGVhcC5uYW1lPG1vZGU+KCk7IH0KIAog
I2lmIEpTQ19PQkpDX0FQSV9FTkFCTEVECiAgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5F
X01FTUJFUihhcGlXcmFwcGVyT2JqZWN0U3BhY2UpCkBAIC02NTcsNzQgKzQ4MywyMyBAQCBwdWJs
aWM6CiAjZW5kaWYKIAogI3VuZGVmIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIK
LSAgICAKLSAgICBJc29DZWxsU2V0IGV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2VzV2l0aENvbnN0
cmFpbnRzOwotICAgIElzb0NlbGxTZXQgZXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZXNXaXRoRmlu
YWxpemVyczsKKworICAgIEFMV0FZU19JTkxJTkUgSXNvQ2VsbFNldCYgZXhlY3V0YWJsZVRvQ29k
ZUJsb2NrRWRnZXNXaXRoQ29uc3RyYWludHMoKSB7IHJldHVybiBoZWFwLmV4ZWN1dGFibGVUb0Nv
ZGVCbG9ja0VkZ2VzV2l0aENvbnN0cmFpbnRzOyB9CisgICAgQUxXQVlTX0lOTElORSBJc29DZWxs
U2V0JiBleGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlc1dpdGhGaW5hbGl6ZXJzKCkgeyByZXR1cm4g
aGVhcC5leGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlc1dpdGhGaW5hbGl6ZXJzOyB9CiAKICNkZWZp
bmUgRFlOQU1JQ19TUEFDRV9BTkRfU0VUX0RFRklORV9NRU1CRVIobmFtZSkgXAogICAgIHRlbXBs
YXRlPFN1YnNwYWNlQWNjZXNzIG1vZGU+IFwKLSAgICBJc29TdWJzcGFjZSogbmFtZSgpIFwKLSAg
ICB7IFwKLSAgICAgICAgaWYgKGF1dG8qIHNwYWNlQW5kU2V0ID0gbV8jI25hbWUuZ2V0KCkpIFwK
LSAgICAgICAgICAgIHJldHVybiAmc3BhY2VBbmRTZXQtPnNwYWNlOyBcCi0gICAgICAgIGlmICht
b2RlID09IFN1YnNwYWNlQWNjZXNzOjpDb25jdXJyZW50bHkpIFwKLSAgICAgICAgICAgIHJldHVy
biBudWxscHRyOyBcCi0gICAgICAgIHJldHVybiBuYW1lIyNTbG93KCk7IFwKLSAgICB9IFwKLSAg
ICBJc29TdWJzcGFjZSogbmFtZSMjU2xvdygpOyBcCi0gICAgc3RkOjp1bmlxdWVfcHRyPFNwYWNl
QW5kU2V0PiBtXyMjbmFtZTsKLSAgICAKLSAgICBzdHJ1Y3QgU3BhY2VBbmRTZXQgewotICAgICAg
ICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7CisgICAgQUxXQVlTX0lOTElORSBJc29T
dWJzcGFjZSogbmFtZSgpIHsgcmV0dXJuIGhlYXAubmFtZTxtb2RlPigpOyB9CiAKLSAgICAgICAg
SXNvU3Vic3BhY2Ugc3BhY2U7Ci0gICAgICAgIElzb0NlbGxTZXQgc2V0OwotICAgICAgICAKLSAg
ICAgICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gQXJndW1lbnRzPgotICAgICAgICBTcGFjZUFuZFNl
dChBcmd1bWVudHMmJi4uLiBhcmd1bWVudHMpCi0gICAgICAgICAgICA6IHNwYWNlKHN0ZDo6Zm9y
d2FyZDxBcmd1bWVudHM+KGFyZ3VtZW50cykuLi4pCi0gICAgICAgICAgICAsIHNldChzcGFjZSkK
LSAgICAgICAgewotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBzdGF0aWMgSXNvQ2VsbFNl
dCYgc2V0Rm9yKFN1YnNwYWNlJiBzcGFjZSkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJu
ICpiaXR3aXNlX2Nhc3Q8SXNvQ2VsbFNldCo+KAotICAgICAgICAgICAgICAgIGJpdHdpc2VfY2Fz
dDxjaGFyKj4oJnNwYWNlKSAtCi0gICAgICAgICAgICAgICAgT0JKRUNUX09GRlNFVE9GKFNwYWNl
QW5kU2V0LCBzcGFjZSkgKwotICAgICAgICAgICAgICAgIE9CSkVDVF9PRkZTRVRPRihTcGFjZUFu
ZFNldCwgc2V0KSk7Ci0gICAgICAgIH0KLSAgICB9OwotICAgIAotICAgIFNwYWNlQW5kU2V0IGNv
ZGVCbG9ja1NwYWNlOwotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuYz4KLSAgICB2b2lkIGZv
ckVhY2hDb2RlQmxvY2tTcGFjZShjb25zdCBGdW5jJiBmdW5jKQotICAgIHsKLSAgICAgICAgLy8g
VGhpcyBzaG91bGQgbm90IGluY2x1ZGUgd2ViQXNzZW1ibHlDb2RlQmxvY2tTcGFjZSBiZWNhdXNl
IHRoaXMgaXMgYWJvdXQgc3Vic2NsYXNzZXMgb2YKLSAgICAgICAgLy8gSlNDOjpDb2RlQmxvY2su
Ci0gICAgICAgIGZ1bmMoY29kZUJsb2NrU3BhY2UpOwotICAgIH0KKyAgICB1c2luZyBTcGFjZUFu
ZFNldCA9IEhlYXA6OlNwYWNlQW5kU2V0OworICAgIEFMV0FZU19JTkxJTkUgU3BhY2VBbmRTZXQm
IGNvZGVCbG9ja1NwYWNlKCkgeyByZXR1cm4gaGVhcC5jb2RlQmxvY2tTcGFjZTsgfQogCiAgICAg
RFlOQU1JQ19TUEFDRV9BTkRfU0VUX0RFRklORV9NRU1CRVIoZXZhbEV4ZWN1dGFibGVTcGFjZSkK
ICAgICBEWU5BTUlDX1NQQUNFX0FORF9TRVRfREVGSU5FX01FTUJFUihtb2R1bGVQcm9ncmFtRXhl
Y3V0YWJsZVNwYWNlKQotICAgIFNwYWNlQW5kU2V0IGZ1bmN0aW9uRXhlY3V0YWJsZVNwYWNlOwot
ICAgIFNwYWNlQW5kU2V0IHByb2dyYW1FeGVjdXRhYmxlU3BhY2U7Ci0KLSAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBGdW5jPgotICAgIHZvaWQgZm9yRWFjaFNjcmlwdEV4ZWN1dGFibGVTcGFjZShjb25z
dCBGdW5jJiBmdW5jKQotICAgIHsKLSAgICAgICAgaWYgKG1fZXZhbEV4ZWN1dGFibGVTcGFjZSkK
LSAgICAgICAgICAgIGZ1bmMoKm1fZXZhbEV4ZWN1dGFibGVTcGFjZSk7Ci0gICAgICAgIGZ1bmMo
ZnVuY3Rpb25FeGVjdXRhYmxlU3BhY2UpOwotICAgICAgICBpZiAobV9tb2R1bGVQcm9ncmFtRXhl
Y3V0YWJsZVNwYWNlKQotICAgICAgICAgICAgZnVuYygqbV9tb2R1bGVQcm9ncmFtRXhlY3V0YWJs
ZVNwYWNlKTsKLSAgICAgICAgZnVuYyhwcm9ncmFtRXhlY3V0YWJsZVNwYWNlKTsKLSAgICB9Ci0K
LSAgICBTcGFjZUFuZFNldCB1bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZVNwYWNlOwogCi0jdW5k
ZWYgRFlOQU1JQ19TUEFDRV9BTkRfU0VUX0RFRklORV9NRU1CRVIKKyAgICBBTFdBWVNfSU5MSU5F
IFNwYWNlQW5kU2V0JiBmdW5jdGlvbkV4ZWN1dGFibGVTcGFjZSgpIHsgcmV0dXJuIGhlYXAuZnVu
Y3Rpb25FeGVjdXRhYmxlU3BhY2U7IH0KKyAgICBBTFdBWVNfSU5MSU5FIFNwYWNlQW5kU2V0JiBw
cm9ncmFtRXhlY3V0YWJsZVNwYWNlKCkgeyByZXR1cm4gaGVhcC5wcm9ncmFtRXhlY3V0YWJsZVNw
YWNlOyB9CisgICAgQUxXQVlTX0lOTElORSBTcGFjZUFuZFNldCYgdW5saW5rZWRGdW5jdGlvbkV4
ZWN1dGFibGVTcGFjZSgpIHsgcmV0dXJuIGhlYXAudW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGVT
cGFjZTsgfQogCiAgICAgVk1UeXBlIHZtVHlwZTsKICAgICBDbGllbnREYXRhKiBjbGllbnREYXRh
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk1JbmxpbmVzLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk1JbmxpbmVzLmgJKHJldmlz
aW9uIDI4NjA5NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNSW5saW5lcy5o
CSh3b3JraW5nIGNvcHkpCkBAIC0yNiw2ICsyNiw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1
ZGUgIkVudHJ5RnJhbWUuaCIKKyNpbmNsdWRlICJGdXp6ZXJBZ2VudC5oIgogI2luY2x1ZGUgIlBy
b2ZpbGVyRGF0YWJhc2UuaCIKICNpbmNsdWRlICJWTS5oIgogI2luY2x1ZGUgIldhdGNoZG9nLmgi
CkBAIC05MCw0ICs5MSwxMCBAQCBpbmxpbmUgQ2FsbEZyYW1lKiBWTTo6dG9wSlNDYWxsRnJhbWUo
KSBjCiAgICAgcmV0dXJuIGZyYW1lOwogfQogCitpbmxpbmUgdm9pZCBWTTo6c2V0RnV6emVyQWdl
bnQoc3RkOjp1bmlxdWVfcHRyPEZ1enplckFnZW50PiYmIGZ1enplckFnZW50KQoreworICAgIFJF
TEVBU0VfQVNTRVJUX1dJVEhfTUVTU0FHRSghbV9mdXp6ZXJBZ2VudCwgIk9ubHkgb25lIEZ1enpl
ckFnZW50IGNhbiBiZSBzcGVjaWZpZWQgYXQgYSB0aW1lLiIpOworICAgIG1fZnV6emVyQWdlbnQg
PSBXVEZNb3ZlKGZ1enplckFnZW50KTsKK30KKwogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFrTWFwUHJvdG90eXBlLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha01hcFByb3RvdHlwZS5oCShy
ZXZpc2lvbiAyODYwOTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFrTWFw
UHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQxLDcgKzQxLDcgQEAgcHVibGljOgogICAg
IHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAgICAg
U1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoV2Vha01hcFByb3RvdHlwZSwgQmFz
ZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJu
ICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIFdlYWtNYXBQcm90
b3R5cGUqIGNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVj
dHVyZSogc3RydWN0dXJlKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vh
a09iamVjdFJlZlByb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1dlYWtPYmplY3RSZWZQcm90b3R5cGUuaAkocmV2aXNpb24gMjg2MDk1KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha09iamVjdFJlZlByb3RvdHlwZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC0zNyw3ICszNyw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vi
c3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRf
SVNPX1NVQlNQQUNFX1NIQVJBQkxFKFdlYWtPYmplY3RSZWZQcm90b3R5cGUsIEJhc2UpOwotICAg
ICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxh
aW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBXZWFrT2JqZWN0UmVmUHJvdG90
eXBlKiBjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dlYWtT
ZXRQcm90b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9XZWFrU2V0UHJvdG90eXBlLmgJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1dlYWtTZXRQcm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtNDEs
NyArNDEsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihW
TSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJM
RShXZWFrU2V0UHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVj
dFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAK
ICAgICBzdGF0aWMgV2Vha1NldFByb3RvdHlwZSogY3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvdG9vbHMvSlNEb2xsYXJWTS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3Rvb2xzL0pTRG9sbGFyVk0uY3BwCShyZXZpc2lvbiAyODYwOTUpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvSlNEb2xsYXJWTS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTEzMyw3ICsxMzMsNyBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5
cGUsIFN1YnNwYWNlQWNjZXNzPgogICAgIHN0YXRpYyBDb21wbGV0ZVN1YnNwYWNlKiBzdWJzcGFj
ZUZvcihWTSYgdm0pCiAgICAgewotICAgICAgICByZXR1cm4gJnZtLmNlbGxTcGFjZTsKKyAgICAg
ICAgcmV0dXJuICZ2bS5jZWxsU3BhY2UoKTsKICAgICB9CiAKICAgICBKU0RvbGxhclZNQ2FsbEZy
YW1lKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCkBAIC0yMjMsNyArMjIzLDcgQEAgcHVi
bGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlLCBTdWJzcGFjZUFjY2Vzcz4KICAg
ICBzdGF0aWMgQ29tcGxldGVTdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKLSAg
ICAgICAgcmV0dXJuICZ2bS5jZWxsU3BhY2U7CisgICAgICAgIHJldHVybiAmdm0uY2VsbFNwYWNl
KCk7CiAgICAgfQogCiAgICAgUm9vdCogcm9vdCgpIGNvbnN0IHsgcmV0dXJuIG1fcm9vdC5nZXQo
KTsgfQpAQCAtMjg3LDcgKzI4Nyw3IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBD
ZWxsVHlwZSwgU3Vic3BhY2VBY2Nlc3M+CiAgICAgc3RhdGljIENvbXBsZXRlU3Vic3BhY2UqIHN1
YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7Ci0gICAgICAgIHJldHVybiAmdm0uZGVzdHJ1Y3RpYmxl
T2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0U3BhY2Uo
KTsKICAgICB9CiAKICAgICBSb290KFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCkBAIC0z
NTQsNyArMzU0LDcgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlLCBT
dWJzcGFjZUFjY2Vzcz4KICAgICBzdGF0aWMgQ29tcGxldGVTdWJzcGFjZSogc3Vic3BhY2VGb3Io
Vk0mIHZtKQogICAgIHsKLSAgICAgICAgcmV0dXJuICZ2bS5jZWxsU3BhY2U7CisgICAgICAgIHJl
dHVybiAmdm0uY2VsbFNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIFNpbXBsZU9iamVjdCog
Y3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKQEAgLTQyNiw3ICs0
MjYsNyBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUsIFN1YnNwYWNl
QWNjZXNzPgogICAgIHN0YXRpYyBDb21wbGV0ZVN1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0p
CiAgICAgewotICAgICAgICByZXR1cm4gJnZtLmNlbGxTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2
bS5jZWxsU3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1
Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3Rv
dHlwZSkKQEAgLTUwOCw3ICs1MDgsNyBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUg
Q2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNzPgogICAgIHN0YXRpYyBDb21wbGV0ZVN1YnNwYWNlKiBz
dWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewotICAgICAgICByZXR1cm4gJnZtLmNlbGxTcGFjZTsK
KyAgICAgICAgcmV0dXJuICZ2bS5jZWxsU3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgU3Ry
dWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKQEAgLTU5MCw3ICs1OTAsNyBAQCBJR05PUkVfV0FSTklO
R1NfRU5ECiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNzPgog
ICAgIHN0YXRpYyBDb21wbGV0ZVN1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewot
ICAgICAgICByZXR1cm4gJnZtLmNlbGxTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5jZWxsU3Bh
Y2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgUnVudGltZUFycmF5KiBjcmVhdGUoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCkBAIC03NzIsNyArNzcy
LDcgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlLCBTdWJzcGFjZUFj
Y2Vzcz4KICAgICBzdGF0aWMgQ29tcGxldGVTdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQog
ICAgIHsKLSAgICAgICAgcmV0dXJuICZ2bS5jZWxsU3BhY2U7CisgICAgICAgIHJldHVybiAmdm0u
Y2VsbFNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0
dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5
cGUpCkBAIC04NzIsNyArODcyLDcgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENl
bGxUeXBlLCBTdWJzcGFjZUFjY2Vzcz4KICAgICBzdGF0aWMgQ29tcGxldGVTdWJzcGFjZSogc3Vi
c3BhY2VGb3IoVk0mIHZtKQogICAgIHsKLSAgICAgICAgcmV0dXJuICZ2bS5jZWxsU3BhY2U7Cisg
ICAgICAgIHJldHVybiAmdm0uY2VsbFNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIFN0cnVj
dHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgSlNWYWx1ZSBwcm90b3R5cGUpCkBAIC04OTcsNyArODk3LDcgQEAgcHVibGljOgogICAgIHRl
bXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlLCBTdWJzcGFjZUFjY2Vzcz4KICAgICBzdGF0aWMgQ29t
cGxldGVTdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKLSAgICAgICAgcmV0dXJu
ICZ2bS5jZWxsU3BhY2U7CisgICAgICAgIHJldHVybiAmdm0uY2VsbFNwYWNlKCk7CiAgICAgfQog
CiAgICAgT2JqZWN0RG9pbmdTaWRlRWZmZWN0UHV0V2l0aG91dENvcnJlY3RTbG90U3RhdHVzKFZN
JiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCkBAIC05NDgsNyArOTQ4LDcgQEAgcHVibGljOgog
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlLCBTdWJzcGFjZUFjY2Vzcz4KICAgICBzdGF0
aWMgQ29tcGxldGVTdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKLSAgICAgICAg
cmV0dXJuICZ2bS5jZWxsU3BhY2U7CisgICAgICAgIHJldHVybiAmdm0uY2VsbFNwYWNlKCk7CiAg
ICAgfQogCiAgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCkBAIC0xNTg1LDcg
KzE1ODUsNyBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUsIFN1YnNw
YWNlQWNjZXNzPgogICAgIHN0YXRpYyBDb21wbGV0ZVN1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYg
dm0pCiAgICAgewotICAgICAgICByZXR1cm4gJnZtLmNlbGxTcGFjZTsKKyAgICAgICAgcmV0dXJu
ICZ2bS5jZWxsU3BhY2UoKTsKICAgICB9CiAKICAgICBKU1Rlc3RDdXN0b21HZXR0ZXJTZXR0ZXIo
Vk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKQEAgLTE4MzgsNyArMTgzOCw3IEBAIHB1Ymxp
YzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vic3BhY2VBY2Nlc3M+CiAgICAg
c3RhdGljIENvbXBsZXRlU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7Ci0gICAg
ICAgIHJldHVybiAmdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAm
dm0uZGVzdHJ1Y3RpYmxlT2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBjbGFzcyBDbGllbnQg
ZmluYWwgOiBwdWJsaWMgV2FzbTo6U3RyZWFtaW5nUGFyc2VyQ2xpZW50IHsKQEAgLTE5MzMsNyAr
MTkzMyw3IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vic3Bh
Y2VBY2Nlc3M+CiAgICAgc3RhdGljIENvbXBsZXRlU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2
bSkKICAgICB7Ci0gICAgICAgIHJldHVybiAmdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0U3BhY2U7Cisg
ICAgICAgIHJldHVybiAmdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAg
ICBXYXNtU3RyZWFtaW5nQ29tcGlsZXIoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgV2Fz
bTo6Q29tcGlsZXJNb2RlIGNvbXBpbGVyTW9kZSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgSlNQcm9taXNlKiBwcm9taXNlLCBKU09iamVjdCogaW1wb3J0T2JqZWN0KQpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0pTRG9sbGFyVk0uaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvSlNEb2xsYXJWTS5oCShyZXZpc2lvbiAyODYwOTUpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvSlNEb2xsYXJWTS5oCSh3b3JraW5nIGNvcHkp
CkBAIC00Miw3ICs0Miw3IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlw
ZSwgU3Vic3BhY2VBY2Nlc3M+CiAgICAgc3RhdGljIENvbXBsZXRlU3Vic3BhY2UqIHN1YnNwYWNl
Rm9yKFZNJiB2bSkKICAgICB7Ci0gICAgICAgIHJldHVybiAmdm0uY2VsbFNwYWNlOworICAgICAg
ICByZXR1cm4gJnZtLmNlbGxTcGFjZSgpOwogICAgIH0KICAgICAKICAgICBERUNMQVJFX0VYUE9S
VF9JTkZPOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJs
eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNz
ZW1ibHkuaAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
anMvSlNXZWJBc3NlbWJseS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxNi0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAxNi0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDEsNyArNDEsNyBAQCBwdWJs
aWM6CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewog
ICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1dlYkFzc2VtYmx5
LCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICBy
ZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgSlNXZWJB
c3NlbWJseSogY3JlYXRlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqKTsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5Q29tcGlsZUVycm9yUHJv
dG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2Vi
QXNzZW1ibHlDb21waWxlRXJyb3JQcm90b3R5cGUuaAkocmV2aXNpb24gMjg2MDk1KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlDb21waWxlRXJyb3JQcm90b3R5
cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTYtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTYtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQxLDcgKzQxLDcgQEAgcHVibGljOgogICAgIHN0YXRp
YyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElD
X0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoV2ViQXNzZW1ibHlDb21waWxlRXJyb3JQcm90
b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAg
ICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBX
ZWJBc3NlbWJseUNvbXBpbGVFcnJvclByb3RvdHlwZSogY3JlYXRlKFZNJiwgSlNHbG9iYWxPYmpl
Y3QqLCBTdHJ1Y3R1cmUqKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dl
YkFzc2VtYmx5RXhjZXB0aW9uUHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlFeGNlcHRpb25Qcm90b3R5cGUuaAkocmV2aXNp
b24gMjg2MDk1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlF
eGNlcHRpb25Qcm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtNDEsNyArNDEsNyBAQCBwdWJs
aWM6CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewog
ICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShXZWJBc3NlbWJseUV4
Y2VwdGlvblByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RT
cGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAg
ICAgc3RhdGljIFdlYkFzc2VtYmx5RXhjZXB0aW9uUHJvdG90eXBlKiBjcmVhdGUoVk0mLCBKU0ds
b2JhbE9iamVjdCosIFN0cnVjdHVyZSopOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vanMvV2ViQXNzZW1ibHlHbG9iYWxQcm90b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUdsb2JhbFByb3RvdHlwZS5oCShyZXZp
c2lvbiAyODYwOTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJs
eUdsb2JhbFByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTktMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQwLDcgKzQwLDcgQEAgcHVibGljOgog
ICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAg
ICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoV2ViQXNzZW1ibHlHbG9iYWxQ
cm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7Cisg
ICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRp
YyBXZWJBc3NlbWJseUdsb2JhbFByb3RvdHlwZSogY3JlYXRlKFZNJiwgSlNHbG9iYWxPYmplY3Qq
LCBTdHJ1Y3R1cmUqKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFz
c2VtYmx5SW5zdGFuY2VQcm90b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUluc3RhbmNlUHJvdG90eXBlLmgJKHJldmlzaW9uIDI4
NjA5NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5SW5zdGFu
Y2VQcm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTYtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTYtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQxLDcgKzQxLDcgQEAgcHVibGljOgog
ICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAg
ICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoV2ViQXNzZW1ibHlJbnN0YW5j
ZVByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsK
KyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAgc3Rh
dGljIFdlYkFzc2VtYmx5SW5zdGFuY2VQcm90b3R5cGUqIGNyZWF0ZShWTSYsIEpTR2xvYmFsT2Jq
ZWN0KiwgU3RydWN0dXJlKik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9X
ZWJBc3NlbWJseUxpbmtFcnJvclByb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TGlua0Vycm9yUHJvdG90eXBlLmgJKHJldmlz
aW9uIDI4NjA5NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5
TGlua0Vycm9yUHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgot
ICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00MSw3ICs0MSw3IEBAIHB1
YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7
CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKFdlYkFzc2VtYmx5
TGlua0Vycm9yUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVj
dFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAK
ICAgICBzdGF0aWMgV2ViQXNzZW1ibHlMaW5rRXJyb3JQcm90b3R5cGUqIGNyZWF0ZShWTSYsIEpT
R2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9qcy9XZWJBc3NlbWJseU1lbW9yeVByb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TWVtb3J5UHJvdG90eXBlLmgJKHJl
dmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2Vt
Ymx5TWVtb3J5UHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgot
ICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00MSw3ICs0MSw3IEBAIHB1
YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7
CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKFdlYkFzc2VtYmx5
TWVtb3J5UHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNw
YWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAg
ICBzdGF0aWMgV2ViQXNzZW1ibHlNZW1vcnlQcm90b3R5cGUqIGNyZWF0ZShWTSYsIEpTR2xvYmFs
T2JqZWN0KiwgU3RydWN0dXJlKik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9q
cy9XZWJBc3NlbWJseU1vZHVsZVByb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TW9kdWxlUHJvdG90eXBlLmgJKHJldmlzaW9u
IDI4NjA5NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TW9k
dWxlUHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDE2LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDE2LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00MSw3ICs0MSw3IEBAIHB1YmxpYzoK
ICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAg
ICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKFdlYkFzc2VtYmx5TW9kdWxl
UHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOwor
ICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0
aWMgV2ViQXNzZW1ibHlNb2R1bGVQcm90b3R5cGUqIGNyZWF0ZShWTSYsIEpTR2xvYmFsT2JqZWN0
KiwgU3RydWN0dXJlKik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJB
c3NlbWJseVJ1bnRpbWVFcnJvclByb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5UnVudGltZUVycm9yUHJvdG90eXBlLmgJKHJl
dmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2Vt
Ymx5UnVudGltZUVycm9yUHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBA
CiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00MSw3ICs0MSw3
IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkK
ICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKFdlYkFz
c2VtYmx5UnVudGltZUVycm9yUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5w
bGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsK
ICAgICB9CiAKICAgICBzdGF0aWMgV2ViQXNzZW1ibHlSdW50aW1lRXJyb3JQcm90b3R5cGUqIGNy
ZWF0ZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKik7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseVRhYmxlUHJvdG90eXBlLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlUYWJsZVByb3Rv
dHlwZS5oCShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9q
cy9XZWJBc3NlbWJseVRhYmxlUHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1
IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00MSw3ICs0
MSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2
bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKFdl
YkFzc2VtYmx5VGFibGVQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWlu
T2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAg
IH0KIAogICAgIHN0YXRpYyBXZWJBc3NlbWJseVRhYmxlUHJvdG90eXBlKiBjcmVhdGUoVk0mLCBK
U0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSopOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vanMvV2ViQXNzZW1ibHlUYWdQcm90b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseVRhZ1Byb3RvdHlwZS5oCShyZXZpc2lv
biAyODYwOTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseVRh
Z1Byb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00MCw3ICs0MCw3IEBAIHB1YmxpYzoKICAg
ICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAg
IFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKFdlYkFzc2VtYmx5VGFnUHJvdG90
eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAg
ICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgV2Vi
QXNzZW1ibHlUYWdQcm90b3R5cGUqIGNyZWF0ZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0
dXJlKik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUFzeW5jSXRlcmF0
b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUFzeW5j
SXRlcmF0b3IuaAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNET01Bc3luY0l0ZXJhdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDcgKzQ4LDcgQEAg
cHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZN
JiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxF
KEpTRE9NQXN5bmNJdGVyYXRvclByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0u
cGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7
CiAgICAgfQogCiAgICAgc3RhdGljIEpTRE9NQXN5bmNJdGVyYXRvclByb3RvdHlwZSogY3JlYXRl
KEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6U3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RP
TUl0ZXJhdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNE
T01JdGVyYXRvci5oCShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0RPTUl0ZXJhdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTU1LDcgKzU1LDcgQEAgcHVi
bGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2
bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpT
RE9NSXRlcmF0b3JQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2Jq
ZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0K
IAogICAgIHN0YXRpYyBKU0RPTUl0ZXJhdG9yUHJvdG90eXBlKiBjcmVhdGUoSlNDOjpWTSYgdm0s
IEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRmlsZVN5c3RlbURpcmVj
dG9yeUhhbmRsZUl0ZXJhdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0ZpbGVTeXN0ZW1EaXJlY3RvcnlIYW5kbGVJdGVyYXRvci5jcHAJKHJldmlzaW9u
IDI4NjA5NSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRmlsZVN5c3RlbURpcmVj
dG9yeUhhbmRsZUl0ZXJhdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTUsOSArNTUsOSBAQCBJ
c29TdWJzcGFjZSogSlNGaWxlU3lzdGVtRGlyZWN0b3J5SGFuZGxlCiAgICAgICAgIHJldHVybiBz
cGFjZTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVj
dGlibGVPYmplY3QsIEpTRmlsZVN5c3RlbURpcmVjdG9yeUhhbmRsZUl0ZXJhdG9yPiB8fCAhSlNG
aWxlU3lzdGVtRGlyZWN0b3J5SGFuZGxlSXRlcmF0b3I6Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAg
IGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVj
dCwgSlNGaWxlU3lzdGVtRGlyZWN0b3J5SGFuZGxlSXRlcmF0b3I+KQotICAgICAgICBjbGllbnRE
YXRhLnNldEZpbGVTeXN0ZW1EaXJlY3RvcnlIYW5kbGVJdGVyYXRvclNwYWNlKG1ha2VVbmlxdWU8
SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5kZXN0cnVjdGlibGVP
YmplY3RIZWFwQ2VsbFR5cGUsIEpTRmlsZVN5c3RlbURpcmVjdG9yeUhhbmRsZUl0ZXJhdG9yKSk7
CisgICAgICAgIGNsaWVudERhdGEuc2V0RmlsZVN5c3RlbURpcmVjdG9yeUhhbmRsZUl0ZXJhdG9y
U3BhY2UobWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwg
dm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCksIEpTRmlsZVN5c3RlbURpcmVjdG9y
eUhhbmRsZUl0ZXJhdG9yKSk7CiAgICAgZWxzZQotICAgICAgICBjbGllbnREYXRhLnNldEZpbGVT
eXN0ZW1EaXJlY3RvcnlIYW5kbGVJdGVyYXRvclNwYWNlKG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+
IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5jZWxsSGVhcENlbGxUeXBlLCBKU0ZpbGVT
eXN0ZW1EaXJlY3RvcnlIYW5kbGVJdGVyYXRvcikpOworICAgICAgICBjbGllbnREYXRhLnNldEZp
bGVTeXN0ZW1EaXJlY3RvcnlIYW5kbGVJdGVyYXRvclNwYWNlKG1ha2VVbmlxdWU8SXNvU3Vic3Bh
Y2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNG
aWxlU3lzdGVtRGlyZWN0b3J5SGFuZGxlSXRlcmF0b3IpKTsKICAgICBhdXRvKiBzcGFjZSA9IGNs
aWVudERhdGEuZmlsZVN5c3RlbURpcmVjdG9yeUhhbmRsZUl0ZXJhdG9yU3BhY2UoKTsKIElHTk9S
RV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVH
SU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL1dlYkNvcmVKU0NsaWVudERhdGEuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL1dlYkNvcmVKU0NsaWVudERhdGEuY3BwCShyZXZpc2lvbiAyODYwOTUpCisr
KyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9XZWJDb3JlSlNDbGllbnREYXRhLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMzgsMTIgKzM4LDEzIEBACiAjaW5jbHVkZSAiSlNQYWludFdvcmtsZXRH
bG9iYWxTY29wZS5oIgogI2luY2x1ZGUgIkpTUmVtb3RlRE9NV2luZG93LmgiCiAjaW5jbHVkZSAi
SlNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUuaCIKKyNpbmNsdWRlICJKU1NoYXJlZFdvcmtlckds
b2JhbFNjb3BlLmgiCiAjaW5jbHVkZSAiSlNXaW5kb3dQcm94eS5oIgogI2luY2x1ZGUgIkpTV29y
a2VyR2xvYmFsU2NvcGUuaCIKICNpbmNsdWRlICJKU1dvcmtsZXRHbG9iYWxTY29wZS5oIgogI2lu
Y2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Zhc3RNYWxsb2NBbGlnbmVkTWVtb3J5QWxsb2NhdG9yLmg+
CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGVhcElubGluZXMuaD4KLSNpbmNsdWRlIDxKYXZh
U2NyaXB0Q29yZS9Jc29IZWFwQ2VsbFR5cGUuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9J
c29IZWFwQ2VsbFR5cGVJbmxpbmVzLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNEZXN0
cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9N
YXJraW5nQ29uc3RyYWludC5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1N1YnNwYWNlSW5s
aW5lcy5oPgpAQCAtNTksMzMgKzYwLDM0IEBAIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiBKU1ZNQ2xp
ZW50RGF0YTo6SlNWTUNsaWVudERhdGEoVk0mIHZtKQogICAgIDogbV9idWlsdGluRnVuY3Rpb25z
KHZtKQogICAgICwgbV9idWlsdGluTmFtZXModm0pCi0gICAgLCBtX3J1bnRpbWVBcnJheUhlYXBD
ZWxsVHlwZShKU0M6Oklzb0hlYXBDZWxsVHlwZTo6Y3JlYXRlPFJ1bnRpbWVBcnJheT4oKSkKLSAg
ICAsIG1fcnVudGltZU9iamVjdEhlYXBDZWxsVHlwZShKU0M6Oklzb0hlYXBDZWxsVHlwZTo6Y3Jl
YXRlPEpTQzo6QmluZGluZ3M6OlJ1bnRpbWVPYmplY3Q+KCkpCi0gICAgLCBtX3dpbmRvd1Byb3h5
SGVhcENlbGxUeXBlKEpTQzo6SXNvSGVhcENlbGxUeXBlOjpjcmVhdGU8SlNXaW5kb3dQcm94eT4o
KSkKLSAgICAsIG1faGVhcENlbGxUeXBlRm9ySlNET01XaW5kb3coSlNDOjpJc29IZWFwQ2VsbFR5
cGU6OmNyZWF0ZTxKU0RPTVdpbmRvdz4oKSkKLSAgICAsIG1faGVhcENlbGxUeXBlRm9ySlNEZWRp
Y2F0ZWRXb3JrZXJHbG9iYWxTY29wZShKU0M6Oklzb0hlYXBDZWxsVHlwZTo6Y3JlYXRlPEpTRGVk
aWNhdGVkV29ya2VyR2xvYmFsU2NvcGU+KCkpCi0gICAgLCBtX2hlYXBDZWxsVHlwZUZvckpTUmVt
b3RlRE9NV2luZG93KEpTQzo6SXNvSGVhcENlbGxUeXBlOjpjcmVhdGU8SlNSZW1vdGVET01XaW5k
b3c+KCkpCi0gICAgLCBtX2hlYXBDZWxsVHlwZUZvckpTV29ya2VyR2xvYmFsU2NvcGUoSlNDOjpJ
c29IZWFwQ2VsbFR5cGU6OmNyZWF0ZTxKU1dvcmtlckdsb2JhbFNjb3BlPigpKQorLy8gICAgLCBt
X3J1bnRpbWVBcnJheUhlYXBDZWxsVHlwZShKU0M6Oklzb0hlYXBDZWxsVHlwZTo6QXJnczxSdW50
aW1lQXJyYXk+KCkpCisvLyAgICAsIG1fcnVudGltZU9iamVjdEhlYXBDZWxsVHlwZShKU0M6Oklz
b0hlYXBDZWxsVHlwZTo6QXJnczxKU0M6OkJpbmRpbmdzOjpSdW50aW1lT2JqZWN0PigpKQorLy8g
ICAgLCBtX3dpbmRvd1Byb3h5SGVhcENlbGxUeXBlKEpTQzo6SXNvSGVhcENlbGxUeXBlOjpBcmdz
PEpTV2luZG93UHJveHk+KCkpCisvLyAgICAsIG1faGVhcENlbGxUeXBlRm9ySlNET01XaW5kb3co
SlNDOjpJc29IZWFwQ2VsbFR5cGU6OkFyZ3M8SlNET01XaW5kb3c+KCkpCisvLyAgICAsIG1faGVh
cENlbGxUeXBlRm9ySlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZShKU0M6Oklzb0hlYXBDZWxs
VHlwZTo6QXJnczxKU0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlPigpKQorLy8gICAgLCBtX2hl
YXBDZWxsVHlwZUZvckpTUmVtb3RlRE9NV2luZG93KEpTQzo6SXNvSGVhcENlbGxUeXBlOjpBcmdz
PEpTUmVtb3RlRE9NV2luZG93PigpKQorLy8gICAgLCBtX2hlYXBDZWxsVHlwZUZvckpTV29ya2Vy
R2xvYmFsU2NvcGUoSlNDOjpJc29IZWFwQ2VsbFR5cGU6OkFyZ3M8SlNXb3JrZXJHbG9iYWxTY29w
ZT4oKSkKKy8vICAgICwgbV9oZWFwQ2VsbFR5cGVGb3JKU1NoYXJlZFdvcmtlckdsb2JhbFNjb3Bl
KEpTQzo6SXNvSGVhcENlbGxUeXBlOjpBcmdzPEpTU2hhcmVkV29ya2VyR2xvYmFsU2NvcGU+KCkp
CiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotICAgICwgbV9oZWFwQ2VsbFR5cGVGb3JKU1Nl
cnZpY2VXb3JrZXJHbG9iYWxTY29wZShKU0M6Oklzb0hlYXBDZWxsVHlwZTo6Y3JlYXRlPEpTU2Vy
dmljZVdvcmtlckdsb2JhbFNjb3BlPigpKQorLy8gICAgLCBtX2hlYXBDZWxsVHlwZUZvckpTU2Vy
dmljZVdvcmtlckdsb2JhbFNjb3BlKEpTQzo6SXNvSGVhcENlbGxUeXBlOjpBcmdzPEpTU2Vydmlj
ZVdvcmtlckdsb2JhbFNjb3BlPigpKQogI2VuZGlmCi0gICAgLCBtX2hlYXBDZWxsVHlwZUZvckpT
V29ya2xldEdsb2JhbFNjb3BlKEpTQzo6SXNvSGVhcENlbGxUeXBlOjpjcmVhdGU8SlNXb3JrbGV0
R2xvYmFsU2NvcGU+KCkpCisvLyAgICAsIG1faGVhcENlbGxUeXBlRm9ySlNXb3JrbGV0R2xvYmFs
U2NvcGUoSlNDOjpJc29IZWFwQ2VsbFR5cGU6OkFyZ3M8SlNXb3JrbGV0R2xvYmFsU2NvcGU+KCkp
CiAjaWYgRU5BQkxFKENTU19QQUlOVElOR19BUEkpCi0gICAgLCBtX2hlYXBDZWxsVHlwZUZvckpT
UGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUoSlNDOjpJc29IZWFwQ2VsbFR5cGU6OmNyZWF0ZTxKU1Bh
aW50V29ya2xldEdsb2JhbFNjb3BlPigpKQorLy8gICAgLCBtX2hlYXBDZWxsVHlwZUZvckpTUGFp
bnRXb3JrbGV0R2xvYmFsU2NvcGUoSlNDOjpJc29IZWFwQ2VsbFR5cGU6OkFyZ3M8SlNQYWludFdv
cmtsZXRHbG9iYWxTY29wZT4oKSkKICNlbmRpZgogI2lmIEVOQUJMRShXRUJfQVVESU8pCi0gICAg
LCBtX2hlYXBDZWxsVHlwZUZvckpTQXVkaW9Xb3JrbGV0R2xvYmFsU2NvcGUoSlNDOjpJc29IZWFw
Q2VsbFR5cGU6OmNyZWF0ZTxKU0F1ZGlvV29ya2xldEdsb2JhbFNjb3BlPigpKQorLy8gICAgLCBt
X2hlYXBDZWxsVHlwZUZvckpTQXVkaW9Xb3JrbGV0R2xvYmFsU2NvcGUoSlNDOjpJc29IZWFwQ2Vs
bFR5cGU6OkFyZ3M8SlNBdWRpb1dvcmtsZXRHbG9iYWxTY29wZT4oKSkKICNlbmRpZgotICAgICwg
bV9oZWFwQ2VsbFR5cGVGb3JKU0lEQlNlcmlhbGl6YXRpb25HbG9iYWxPYmplY3QoSlNDOjpJc29I
ZWFwQ2VsbFR5cGU6OmNyZWF0ZTxKU0lEQlNlcmlhbGl6YXRpb25HbG9iYWxPYmplY3Q+KCkpCi0g
ICAgLCBtX2RvbUJ1aWx0aW5Db25zdHJ1Y3RvclNwYWNlIElTT19TVUJTUEFDRV9JTklUKHZtLmhl
YXAsICp2bS5jZWxsSGVhcENlbGxUeXBlLCBKU0RPTUJ1aWx0aW5Db25zdHJ1Y3RvckJhc2UpCi0g
ICAgLCBtX2RvbUNvbnN0cnVjdG9yU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZt
LmNlbGxIZWFwQ2VsbFR5cGUsIEpTRE9NQ29uc3RydWN0b3JCYXNlKQotICAgICwgbV9kb21OYW1l
c3BhY2VPYmplY3RTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uY2VsbEhlYXBD
ZWxsVHlwZSwgSlNET01PYmplY3QpCi0gICAgLCBtX2RvbVdpbmRvd1Byb3BlcnRpZXNTcGFjZSBJ
U09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uY2VsbEhlYXBDZWxsVHlwZSwgSlNET01XaW5k
b3dQcm9wZXJ0aWVzKQotICAgICwgbV9ydW50aW1lQXJyYXlTcGFjZSBJU09fU1VCU1BBQ0VfSU5J
VCh2bS5oZWFwLCAqbV9ydW50aW1lQXJyYXlIZWFwQ2VsbFR5cGUsIFJ1bnRpbWVBcnJheSkKLSAg
ICAsIG1fcnVudGltZU1ldGhvZFNwYWNlIElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5j
ZWxsSGVhcENlbGxUeXBlLCBSdW50aW1lTWV0aG9kKSAvLyBIYXNoOjB4ZjcwYzRhODUKLSAgICAs
IG1fcnVudGltZU9iamVjdFNwYWNlIElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICptX3J1bnRp
bWVPYmplY3RIZWFwQ2VsbFR5cGUsIEpTQzo6QmluZGluZ3M6OlJ1bnRpbWVPYmplY3QpCi0gICAg
LCBtX3dpbmRvd1Byb3h5U3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKm1fd2luZG93
UHJveHlIZWFwQ2VsbFR5cGUsIEpTV2luZG93UHJveHkpCi0gICAgLCBtX2lkYlNlcmlhbGl6YXRp
b25TcGFjZSBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqbV9oZWFwQ2VsbFR5cGVGb3JKU0lE
QlNlcmlhbGl6YXRpb25HbG9iYWxPYmplY3QsIEpTSURCU2VyaWFsaXphdGlvbkdsb2JhbE9iamVj
dCkKKy8vICAgICwgbV9oZWFwQ2VsbFR5cGVGb3JKU0lEQlNlcmlhbGl6YXRpb25HbG9iYWxPYmpl
Y3QoSlNDOjpJc29IZWFwQ2VsbFR5cGU6OkFyZ3M8SlNJREJTZXJpYWxpemF0aW9uR2xvYmFsT2Jq
ZWN0PigpKQorICAgICwgbV9kb21CdWlsdGluQ29uc3RydWN0b3JTcGFjZSBJU09fU1VCU1BBQ0Vf
SU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCksIEpTRE9NQnVpbHRpbkNvbnN0cnVj
dG9yQmFzZSkKKyAgICAsIG1fZG9tQ29uc3RydWN0b3JTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVCh2
bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCksIEpTRE9NQ29uc3RydWN0b3JCYXNlKQorICAg
ICwgbV9kb21OYW1lc3BhY2VPYmplY3RTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2
bS5jZWxsSGVhcENlbGxUeXBlKCksIEpTRE9NT2JqZWN0KQorICAgICwgbV9kb21XaW5kb3dQcm9w
ZXJ0aWVzU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlw
ZSgpLCBKU0RPTVdpbmRvd1Byb3BlcnRpZXMpCisgICAgLCBtX3J1bnRpbWVBcnJheVNwYWNlIElT
T19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIG1fcnVudGltZUFycmF5SGVhcENlbGxUeXBlLCBSdW50
aW1lQXJyYXkpCisgICAgLCBtX3J1bnRpbWVNZXRob2RTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVCh2
bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCksIFJ1bnRpbWVNZXRob2QpIC8vIEhhc2g6MHhm
NzBjNGE4NQorICAgICwgbV9ydW50aW1lT2JqZWN0U3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQodm0u
aGVhcCwgbV9ydW50aW1lT2JqZWN0SGVhcENlbGxUeXBlLCBKU0M6OkJpbmRpbmdzOjpSdW50aW1l
T2JqZWN0KQorICAgICwgbV93aW5kb3dQcm94eVNwYWNlIElTT19TVUJTUEFDRV9JTklUKHZtLmhl
YXAsIG1fd2luZG93UHJveHlIZWFwQ2VsbFR5cGUsIEpTV2luZG93UHJveHkpCisgICAgLCBtX2lk
YlNlcmlhbGl6YXRpb25TcGFjZSBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCBtX2hlYXBDZWxs
VHlwZUZvckpTSURCU2VyaWFsaXphdGlvbkdsb2JhbE9iamVjdCwgSlNJREJTZXJpYWxpemF0aW9u
R2xvYmFsT2JqZWN0KQogICAgICwgbV9zdWJzcGFjZXMobWFrZVVuaXF1ZTxET01Jc29TdWJzcGFj
ZXM+KCkpCiB7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9XZWJDb3JlSlND
bGllbnREYXRhLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV2Vi
Q29yZUpTQ2xpZW50RGF0YS5oCShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9XZWJDb3JlSlNDbGllbnREYXRhLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNiAr
MSw2IEBACiAvKgogICogIENvcHlyaWdodCAoQykgMTk5OS0yMDAxIEhhcnJpIFBvcnRlbiAocG9y
dGVuQGtkZS5vcmcpCi0gKiAgQ29weXJpZ2h0IChDKSAyMDAzLTIwMTcgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogIENvcHlyaWdodCAoQykgMjAwMy0yMDIxIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqICBDb3B5cmlnaHQgKEMpIDIwMDcgU2FtdWVsIFdlaW5p
ZyA8c2FtQHdlYmtpdC5vcmc+CiAgKiAgQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSwgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICoKQEAgLTI4LDkgKzI4LDM1IEBACiAjaW5jbHVkZSA8d3Rm
L0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKK25hbWVzcGFjZSBKU0Mgewor
Y2xhc3MgUnVudGltZUFycmF5OworCituYW1lc3BhY2UgQmluZGluZ3MgeworY2xhc3MgUnVudGlt
ZU9iamVjdDsKK30KK30gLy8gbmFtZXNwYWNlIEpTQworCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IGNsYXNzIERPTUlzb1N1YnNwYWNlczsKK2NsYXNzIEpTRE9NV2luZG93OworY2xhc3MgSlNEZWRp
Y2F0ZWRXb3JrZXJHbG9iYWxTY29wZTsKK2NsYXNzIEpTSURCU2VyaWFsaXphdGlvbkdsb2JhbE9i
amVjdDsKK2NsYXNzIEpTUmVtb3RlRE9NV2luZG93OworY2xhc3MgSlNTaGFyZWRXb3JrZXJHbG9i
YWxTY29wZTsKK2NsYXNzIEpTV2luZG93UHJveHk7CitjbGFzcyBKU1dvcmtlckdsb2JhbFNjb3Bl
OworY2xhc3MgSlNXb3JrbGV0R2xvYmFsU2NvcGU7CisKKyNpZiBFTkFCTEUoU0VSVklDRV9XT1JL
RVIpCitjbGFzcyBKU1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZTsKKyNlbmRpZgorI2lmIEVOQUJM
RShDU1NfUEFJTlRJTkdfQVBJKQorY2xhc3MgSlNQYWludFdvcmtsZXRHbG9iYWxTY29wZTsKKyNl
bmRpZgorI2lmIEVOQUJMRShXRUJfQVVESU8pCitjbGFzcyBKU0F1ZGlvV29ya2xldEdsb2JhbFNj
b3BlOworI2VuZGlmCiAKIGNsYXNzIEpTVk1DbGllbnREYXRhIDogcHVibGljIEpTQzo6Vk06OkNs
aWVudERhdGEgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEpTVk1DbGllbnREYXRhKTsgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CkBAIC05MiwyNiArMTE4LDI2IEBAIHByaXZhdGU6CiAgICAg
SlNCdWlsdGluRnVuY3Rpb25zIG1fYnVpbHRpbkZ1bmN0aW9uczsKICAgICBXZWJDb3JlQnVpbHRp
bk5hbWVzIG1fYnVpbHRpbk5hbWVzOwogCi0gICAgc3RkOjp1bmlxdWVfcHRyPEpTQzo6SGVhcENl
bGxUeXBlPiBtX3J1bnRpbWVBcnJheUhlYXBDZWxsVHlwZTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8
SlNDOjpIZWFwQ2VsbFR5cGU+IG1fcnVudGltZU9iamVjdEhlYXBDZWxsVHlwZTsKLSAgICBzdGQ6
OnVuaXF1ZV9wdHI8SlNDOjpIZWFwQ2VsbFR5cGU+IG1fd2luZG93UHJveHlIZWFwQ2VsbFR5cGU7
CisgICAgSlNDOjpJc29IZWFwQ2VsbFR5cGU8SlNDOjpSdW50aW1lQXJyYXk+IG1fcnVudGltZUFy
cmF5SGVhcENlbGxUeXBlOworICAgIEpTQzo6SXNvSGVhcENlbGxUeXBlPEpTQzo6QmluZGluZ3M6
OlJ1bnRpbWVPYmplY3Q+IG1fcnVudGltZU9iamVjdEhlYXBDZWxsVHlwZTsKKyAgICBKU0M6Oklz
b0hlYXBDZWxsVHlwZTxKU1dpbmRvd1Byb3h5PiBtX3dpbmRvd1Byb3h5SGVhcENlbGxUeXBlOwog
cHVibGljOgotICAgIHN0ZDo6dW5pcXVlX3B0cjxKU0M6OkhlYXBDZWxsVHlwZT4gbV9oZWFwQ2Vs
bFR5cGVGb3JKU0RPTVdpbmRvdzsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SlNDOjpIZWFwQ2VsbFR5
cGU+IG1faGVhcENlbGxUeXBlRm9ySlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZTsKLSAgICBz
dGQ6OnVuaXF1ZV9wdHI8SlNDOjpIZWFwQ2VsbFR5cGU+IG1faGVhcENlbGxUeXBlRm9ySlNSZW1v
dGVET01XaW5kb3c7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPEpTQzo6SGVhcENlbGxUeXBlPiBtX2hl
YXBDZWxsVHlwZUZvckpTV29ya2VyR2xvYmFsU2NvcGU7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPEpT
Qzo6SGVhcENlbGxUeXBlPiBtX2hlYXBDZWxsVHlwZUZvckpTU2hhcmVkV29ya2VyR2xvYmFsU2Nv
cGU7CisgICAgSlNDOjpJc29IZWFwQ2VsbFR5cGU8SlNET01XaW5kb3c+IG1faGVhcENlbGxUeXBl
Rm9ySlNET01XaW5kb3c7CisgICAgSlNDOjpJc29IZWFwQ2VsbFR5cGU8SlNEZWRpY2F0ZWRXb3Jr
ZXJHbG9iYWxTY29wZT4gbV9oZWFwQ2VsbFR5cGVGb3JKU0RlZGljYXRlZFdvcmtlckdsb2JhbFNj
b3BlOworICAgIEpTQzo6SXNvSGVhcENlbGxUeXBlPEpTUmVtb3RlRE9NV2luZG93PiBtX2hlYXBD
ZWxsVHlwZUZvckpTUmVtb3RlRE9NV2luZG93OworICAgIEpTQzo6SXNvSGVhcENlbGxUeXBlPEpT
V29ya2VyR2xvYmFsU2NvcGU+IG1faGVhcENlbGxUeXBlRm9ySlNXb3JrZXJHbG9iYWxTY29wZTsK
KyAgICBKU0M6Oklzb0hlYXBDZWxsVHlwZTxKU1NoYXJlZFdvcmtlckdsb2JhbFNjb3BlPiBtX2hl
YXBDZWxsVHlwZUZvckpTU2hhcmVkV29ya2VyR2xvYmFsU2NvcGU7CiAjaWYgRU5BQkxFKFNFUlZJ
Q0VfV09SS0VSKQotICAgIHN0ZDo6dW5pcXVlX3B0cjxKU0M6OkhlYXBDZWxsVHlwZT4gbV9oZWFw
Q2VsbFR5cGVGb3JKU1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZTsKKyAgICBKU0M6Oklzb0hlYXBD
ZWxsVHlwZTxKU1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZT4gbV9oZWFwQ2VsbFR5cGVGb3JKU1Nl
cnZpY2VXb3JrZXJHbG9iYWxTY29wZTsKICNlbmRpZgotICAgIHN0ZDo6dW5pcXVlX3B0cjxKU0M6
OkhlYXBDZWxsVHlwZT4gbV9oZWFwQ2VsbFR5cGVGb3JKU1dvcmtsZXRHbG9iYWxTY29wZTsKKyAg
ICBKU0M6Oklzb0hlYXBDZWxsVHlwZTxKU1dvcmtsZXRHbG9iYWxTY29wZT4gbV9oZWFwQ2VsbFR5
cGVGb3JKU1dvcmtsZXRHbG9iYWxTY29wZTsKICNpZiBFTkFCTEUoQ1NTX1BBSU5USU5HX0FQSSkK
LSAgICBzdGQ6OnVuaXF1ZV9wdHI8SlNDOjpIZWFwQ2VsbFR5cGU+IG1faGVhcENlbGxUeXBlRm9y
SlNQYWludFdvcmtsZXRHbG9iYWxTY29wZTsKKyAgICBKU0M6Oklzb0hlYXBDZWxsVHlwZTxKU1Bh
aW50V29ya2xldEdsb2JhbFNjb3BlPiBtX2hlYXBDZWxsVHlwZUZvckpTUGFpbnRXb3JrbGV0R2xv
YmFsU2NvcGU7CiAjZW5kaWYKICNpZiBFTkFCTEUoV0VCX0FVRElPKQotICAgIHN0ZDo6dW5pcXVl
X3B0cjxKU0M6OkhlYXBDZWxsVHlwZT4gbV9oZWFwQ2VsbFR5cGVGb3JKU0F1ZGlvV29ya2xldEds
b2JhbFNjb3BlOworICAgIEpTQzo6SXNvSGVhcENlbGxUeXBlPEpTQXVkaW9Xb3JrbGV0R2xvYmFs
U2NvcGU+IG1faGVhcENlbGxUeXBlRm9ySlNBdWRpb1dvcmtsZXRHbG9iYWxTY29wZTsKICNlbmRp
ZgotICAgIHN0ZDo6dW5pcXVlX3B0cjxKU0M6OkhlYXBDZWxsVHlwZT4gbV9oZWFwQ2VsbFR5cGVG
b3JKU0lEQlNlcmlhbGl6YXRpb25HbG9iYWxPYmplY3Q7CisgICAgSlNDOjpJc29IZWFwQ2VsbFR5
cGU8SlNJREJTZXJpYWxpemF0aW9uR2xvYmFsT2JqZWN0PiBtX2hlYXBDZWxsVHlwZUZvckpTSURC
U2VyaWFsaXphdGlvbkdsb2JhbE9iamVjdDsKIAogcHJpdmF0ZToKICAgICBKU0M6Oklzb1N1YnNw
YWNlIG1fZG9tQnVpbHRpbkNvbnN0cnVjdG9yU3BhY2U7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQkocmV2aXNpb24gMjg2
MDk1KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMu
cG0JKHdvcmtpbmcgY29weSkKQEAgLTQ4NTIsMTMgKzQ4NTIsMTMgQEAgc3ViIEdlbmVyYXRlSW1w
bGVtZW50YXRpb24KICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBpZiAoYXV0byogc3BhY2Ug
PSBzcGFjZXMubV9zdWJzcGFjZUZvciR7aW50ZXJmYWNlTmFtZX0uZ2V0KCkpXG4iKTsKICAgICBw
dXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgcmV0dXJuIHNwYWNlO1xuIik7CiAgICAgaWYgKElz
RE9NR2xvYmFsT2JqZWN0KCRpbnRlcmZhY2UpKSB7Ci0gICAgICAgIHB1c2goQGltcGxDb250ZW50
LCAiICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yJHtpbnRlcmZhY2VOYW1lfSA9IG1ha2VVbmlxdWU8
SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICpjbGllbnREYXRhLm1faGVh
cENlbGxUeXBlRm9yJHtjbGFzc05hbWV9LCAke2NsYXNzTmFtZX0pO1xuIik7CisgICAgICAgIHB1
c2goQGltcGxDb250ZW50LCAiICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yJHtpbnRlcmZhY2VOYW1l
fSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIGNs
aWVudERhdGEubV9oZWFwQ2VsbFR5cGVGb3Ike2NsYXNzTmFtZX0sICR7Y2xhc3NOYW1lfSk7XG4i
KTsKICAgICB9IGVsc2UgewogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBzdGF0aWNf
YXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsICR7Y2xh
c3NOYW1lfT4gfHwgISR7Y2xhc3NOYW1lfTo6bmVlZHNEZXN0cnVjdGlvbik7XG4iKTsKICAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2Zf
djxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCAke2NsYXNzTmFtZX0+KVxuIik7Ci0gICAgICAg
IHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvciR7aW50ZXJm
YWNlTmFtZX0gPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5o
ZWFwLCAqdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLCAke2NsYXNzTmFtZX0pO1xu
Iik7CisgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICBzcGFjZXMubV9zdWJzcGFj
ZUZvciR7aW50ZXJmYWNlTmFtZX0gPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BB
Q0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwgJHtj
bGFzc05hbWV9KTtcbiIpOwogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBlbHNlXG4i
KTsKLSAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNl
Rm9yJHtpbnRlcmZhY2VOYW1lfSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFD
RV9JTklUKHZtLmhlYXAsICp2bS5jZWxsSGVhcENlbGxUeXBlLCAke2NsYXNzTmFtZX0pO1xuIik7
CisgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZv
ciR7aW50ZXJmYWNlTmFtZX0gPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0Vf
SU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCksICR7Y2xhc3NOYW1lfSk7XG4iKTsK
ICAgICB9CiAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgYXV0byogc3BhY2UgPSBzcGFjZXMu
bV9zdWJzcGFjZUZvciR7aW50ZXJmYWNlTmFtZX0uZ2V0KCk7XG4iKTsKICAgICBwdXNoKEBpbXBs
Q29udGVudCwgIklHTk9SRV9XQVJOSU5HU19CRUdJTihcInVucmVhY2hhYmxlLWNvZGVcIilcbiIp
OwpAQCAtNjczMSw5ICs2NzMxLDkgQEAgcHVibGljOgogICAgICAgICAgICAgcmV0dXJuIHNwYWNl
OwogICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVj
dGlibGVPYmplY3QsICR7aXRlcmF0b3JOYW1lfT4gfHwgISR7aXRlcmF0b3JOYW1lfTo6bmVlZHNE
ZXN0cnVjdGlvbik7CiAgICAgICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlND
OjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgJHtpdGVyYXRvck5hbWV9PikKLSAgICAgICAgICAgIHNw
YWNlcy5tX3N1YnNwYWNlRm9yJHtpdGVyYXRvck5hbWV9ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFj
ZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBD
ZWxsVHlwZS5nZXQoKSwgJHtpdGVyYXRvck5hbWV9KTsKKyAgICAgICAgICAgIHNwYWNlcy5tX3N1
YnNwYWNlRm9yJHtpdGVyYXRvck5hbWV9ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NV
QlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCks
ICR7aXRlcmF0b3JOYW1lfSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHNwYWNlcy5tX3N1
YnNwYWNlRm9yJHtpdGVyYXRvck5hbWV9ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NV
QlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmNlbGxIZWFwQ2VsbFR5cGUsICR7aXRlcmF0b3JOYW1l
fSk7CisgICAgICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvciR7aXRlcmF0b3JOYW1lfSA9IG1h
a2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxI
ZWFwQ2VsbFR5cGUoKSwgJHtpdGVyYXRvck5hbWV9KTsKICAgICAgICAgYXV0byogc3BhY2UgPSBz
cGFjZXMubV9zdWJzcGFjZUZvciR7aXRlcmF0b3JOYW1lfS5nZXQoKTsKIElHTk9SRV9XQVJOSU5H
U19CRUdJTihcInVucmVhY2hhYmxlLWNvZGVcIikKIElHTk9SRV9XQVJOSU5HU19CRUdJTihcInRh
dXRvbG9naWNhbC1jb21wYXJlXCIpCkBAIC03NTI5LDcgKzc1MjksNyBAQCBzdWIgR2VuZXJhdGVQ
cm90b3R5cGVEZWNsYXJhdGlvbgogICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBzdGF0aWMg
SlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pXG4iKTsKICAgICBwdXNo
KEAkb3V0cHV0QXJyYXksICIgICAge1xuIik7CiAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAg
ICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRSgke3Byb3RvdHlwZUNsYXNz
TmFtZX0sIEJhc2UpO1xuIik7Ci0gICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgICAgICByZXR1
cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7XG4iKTsKKyAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIg
ICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpO1xuIik7CiAgICAgcHVzaChAJG91
dHB1dEFycmF5LCAiICAgIH1cbiIpOwogCiAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIHN0
YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpXG4iKTsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU0RPTVdpbmRv
dy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTRE9NV2luZG93LmNwcAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTRE9NV2luZG93LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMzY5LDcgKzM2OSw3IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTRE9NV2luZG93OjpzdWJzcGFj
ZUYKICAgICBhdXRvJiBzcGFjZXMgPSBjbGllbnREYXRhLnN1YnNwYWNlcygpOwogICAgIGlmIChh
dXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yRE9NV2luZG93LmdldCgpKQogICAgICAg
ICByZXR1cm4gc3BhY2U7Ci0gICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JET01XaW5kb3cgPSBtYWtl
VW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqY2xpZW50RGF0
YS5tX2hlYXBDZWxsVHlwZUZvckpTRE9NV2luZG93LCBKU0RPTVdpbmRvdyk7CisgICAgc3BhY2Vz
Lm1fc3Vic3BhY2VGb3JET01XaW5kb3cgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VC
U1BBQ0VfSU5JVCh2bS5oZWFwLCBjbGllbnREYXRhLm1faGVhcENlbGxUeXBlRm9ySlNET01XaW5k
b3csIEpTRE9NV2luZG93KTsKICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9y
RE9NV2luZG93LmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2Rl
IikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRleDog
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTRE9NV2luZG93LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTRE9N
V2luZG93LmgJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU0RPTVdpbmRvdy5oCSh3b3JraW5nIGNvcHkpCkBAIC04NSw3ICs4NSw3
IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlND
OjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFS
QUJMRShKU0RPTVdpbmRvd1Byb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxh
aW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAg
ICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0m
IHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90
b3R5cGUpCiAgICAgewpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU0RlZGljYXRlZFdvcmtlckdsb2Jh
bFNjb3BlLmNwcAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xNzAsNyArMTcwLDcgQEAgSlNDOjpJc29TdWJzcGFjZSogSlNEZWRpY2F0ZWRX
b3JrZXJHbG9iYQogICAgIGF1dG8mIHNwYWNlcyA9IGNsaWVudERhdGEuc3Vic3BhY2VzKCk7CiAg
ICAgaWYgKGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JEZWRpY2F0ZWRXb3JrZXJH
bG9iYWxTY29wZS5nZXQoKSkKICAgICAgICAgcmV0dXJuIHNwYWNlOwotICAgIHNwYWNlcy5tX3N1
YnNwYWNlRm9yRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUgPSBtYWtlVW5pcXVlPElzb1N1YnNw
YWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqY2xpZW50RGF0YS5tX2hlYXBDZWxsVHlw
ZUZvckpTRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUsIEpTRGVkaWNhdGVkV29ya2VyR2xvYmFs
U2NvcGUpOworICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yRGVkaWNhdGVkV29ya2VyR2xvYmFsU2Nv
cGUgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCBj
bGllbnREYXRhLm1faGVhcENlbGxUeXBlRm9ySlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZSwg
SlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZSk7CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMu
bV9zdWJzcGFjZUZvckRlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlLmdldCgpOwogSUdOT1JFX1dB
Uk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigi
dGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNEZWRpY2F0ZWRXb3Jr
ZXJHbG9iYWxTY29wZS5oCShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC04Miw3ICs4Miw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29T
dWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNf
QVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3Bl
UHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOwor
ICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGlj
IEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNFeHBvc2VkU3Rh
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTRXhwb3NlZFN0YXIuY3BwCShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNFeHBvc2VkU3Rhci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTcxLDcgKzcxLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNl
KiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRf
SVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTRXhwb3NlZFN0YXJQcm90b3R5cGUsIEJhc2UpOwotICAg
ICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxh
aW5PYmplY3RTcGFjZSgpOwogICAgIH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0
ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKQEAgLTIzNiw5ICsyMzYsOSBAQCBKU0M6
Oklzb1N1YnNwYWNlKiBKU0V4cG9zZWRTdGFyOjpzdWJzcGFjCiAgICAgICAgIHJldHVybiBzcGFj
ZTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGli
bGVPYmplY3QsIEpTRXhwb3NlZFN0YXI+IHx8ICFKU0V4cG9zZWRTdGFyOjpuZWVkc0Rlc3RydWN0
aW9uKTsKICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVj
dGlibGVPYmplY3QsIEpTRXhwb3NlZFN0YXI+KQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZv
ckV4cG9zZWRTdGFyID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQo
dm0uaGVhcCwgKnZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSwgSlNFeHBvc2VkU3Rh
cik7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yRXhwb3NlZFN0YXIgPSBtYWtlVW5pcXVl
PElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVP
YmplY3RIZWFwQ2VsbFR5cGUoKSwgSlNFeHBvc2VkU3Rhcik7CiAgICAgZWxzZQotICAgICAgICBz
cGFjZXMubV9zdWJzcGFjZUZvckV4cG9zZWRTdGFyID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4g
SVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmNlbGxIZWFwQ2VsbFR5cGUsIEpTRXhwb3Nl
ZFN0YXIpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvckV4cG9zZWRTdGFyID0gbWFrZVVu
aXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBD
ZWxsVHlwZSgpLCBKU0V4cG9zZWRTdGFyKTsKICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1
YnNwYWNlRm9yRXhwb3NlZFN0YXIuZ2V0KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVh
Y2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFy
ZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNFeHBv
c2VkVG9Xb3JrZXJBbmRXaW5kb3cuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU0V4cG9zZWRUb1dvcmtlckFuZFdpbmRvdy5jcHAJKHJl
dmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU0V4cG9zZWRUb1dvcmtlckFuZFdpbmRvdy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExMiw3
ICsxMTIsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNl
Rm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BB
Q0VfU0hBUkFCTEUoSlNFeHBvc2VkVG9Xb3JrZXJBbmRXaW5kb3dQcm90b3R5cGUsIEJhc2UpOwot
ICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0u
cGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNy
ZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKQEAgLTI1Miw5ICsyNTIsOSBAQCBK
U0M6Oklzb1N1YnNwYWNlKiBKU0V4cG9zZWRUb1dvcmtlckFuZFdpCiAgICAgICAgIHJldHVybiBz
cGFjZTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVj
dGlibGVPYmplY3QsIEpTRXhwb3NlZFRvV29ya2VyQW5kV2luZG93PiB8fCAhSlNFeHBvc2VkVG9X
b3JrZXJBbmRXaW5kb3c6Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhwciAoc3Rk
Ojppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNFeHBvc2VkVG9Xb3Jr
ZXJBbmRXaW5kb3c+KQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvckV4cG9zZWRUb1dvcmtl
ckFuZFdpbmRvdyA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZt
LmhlYXAsICp2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUsIEpTRXhwb3NlZFRvV29y
a2VyQW5kV2luZG93KTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JFeHBvc2VkVG9Xb3Jr
ZXJBbmRXaW5kb3cgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2
bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwgSlNFeHBvc2VkVG9X
b3JrZXJBbmRXaW5kb3cpOwogICAgIGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JF
eHBvc2VkVG9Xb3JrZXJBbmRXaW5kb3cgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VC
U1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uY2VsbEhlYXBDZWxsVHlwZSwgSlNFeHBvc2VkVG9Xb3Jr
ZXJBbmRXaW5kb3cpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvckV4cG9zZWRUb1dvcmtl
ckFuZFdpbmRvdyA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZt
LmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNFeHBvc2VkVG9Xb3JrZXJBbmRXaW5kb3cp
OwogICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JFeHBvc2VkVG9Xb3JrZXJB
bmRXaW5kb3cuZ2V0KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUi
KQogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNQYWludFdvcmtsZXRHbG9i
YWxTY29wZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuY3BwCShyZXZpc2lvbiAyODYwOTUp
CisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNQYWludFdvcmts
ZXRHbG9iYWxTY29wZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2OSw3ICsxNjksNyBAQCBKU0M6
Oklzb1N1YnNwYWNlKiBKU1BhaW50V29ya2xldEdsb2JhbFNjCiAgICAgYXV0byYgc3BhY2VzID0g
Y2xpZW50RGF0YS5zdWJzcGFjZXMoKTsKICAgICBpZiAoYXV0byogc3BhY2UgPSBzcGFjZXMubV9z
dWJzcGFjZUZvclBhaW50V29ya2xldEdsb2JhbFNjb3BlLmdldCgpKQogICAgICAgICByZXR1cm4g
c3BhY2U7Ci0gICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JQYWludFdvcmtsZXRHbG9iYWxTY29wZSA9
IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICpjbGll
bnREYXRhLm1faGVhcENlbGxUeXBlRm9ySlNQYWludFdvcmtsZXRHbG9iYWxTY29wZSwgSlNQYWlu
dFdvcmtsZXRHbG9iYWxTY29wZSk7CisgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JQYWludFdvcmts
ZXRHbG9iYWxTY29wZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklU
KHZtLmhlYXAsIGNsaWVudERhdGEubV9oZWFwQ2VsbFR5cGVGb3JKU1BhaW50V29ya2xldEdsb2Jh
bFNjb3BlLCBKU1BhaW50V29ya2xldEdsb2JhbFNjb3BlKTsKICAgICBhdXRvKiBzcGFjZSA9IHNw
YWNlcy5tX3N1YnNwYWNlRm9yUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuZ2V0KCk7CiBJR05PUkVf
V0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lO
KCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNQYWludFdvcmtsZXRHbG9iYWxTY29wZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1BhaW50V29ya2xldEds
b2JhbFNjb3BlLmgJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTgyLDcgKzgyLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNl
KiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRf
SVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGVQcm90b3R5cGUs
IEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJl
dHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1
Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1NlcnZpY2VXb3JrZXJHbG9iYWxT
Y29wZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTU2VydmljZVdvcmtlckdsb2JhbFNjb3BlLmNwcAkocmV2aXNpb24gMjg2MDk1KQor
KysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTU2VydmljZVdvcmtl
ckdsb2JhbFNjb3BlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTY5LDcgKzE2OSw3IEBAIEpTQzo6
SXNvU3Vic3BhY2UqIEpTU2VydmljZVdvcmtlckdsb2JhbFMKICAgICBhdXRvJiBzcGFjZXMgPSBj
bGllbnREYXRhLnN1YnNwYWNlcygpOwogICAgIGlmIChhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1
YnNwYWNlRm9yU2VydmljZVdvcmtlckdsb2JhbFNjb3BlLmdldCgpKQogICAgICAgICByZXR1cm4g
c3BhY2U7Ci0gICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUg
PSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqY2xp
ZW50RGF0YS5tX2hlYXBDZWxsVHlwZUZvckpTU2VydmljZVdvcmtlckdsb2JhbFNjb3BlLCBKU1Nl
cnZpY2VXb3JrZXJHbG9iYWxTY29wZSk7CisgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JTZXJ2aWNl
V29ya2VyR2xvYmFsU2NvcGUgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0Vf
SU5JVCh2bS5oZWFwLCBjbGllbnREYXRhLm1faGVhcENlbGxUeXBlRm9ySlNTZXJ2aWNlV29ya2Vy
R2xvYmFsU2NvcGUsIEpTU2VydmljZVdvcmtlckdsb2JhbFNjb3BlKTsKICAgICBhdXRvKiBzcGFj
ZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yU2VydmljZVdvcmtlckdsb2JhbFNjb3BlLmdldCgpOwog
SUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKIElHTk9SRV9XQVJOSU5H
U19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTU2VydmljZVdvcmtlckdsb2JhbFNjb3BlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTU2Vydmlj
ZVdvcmtlckdsb2JhbFNjb3BlLmgJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC04Miw3ICs4Miw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJ
c29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFU
SUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1NlcnZpY2VXb3JrZXJHbG9iYWxTY29w
ZVByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsK
KyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRp
YyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpJ
bmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTU2hhcmVkV29y
a2VyR2xvYmFsU2NvcGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1NoYXJlZFdvcmtlckdsb2JhbFNjb3BlLmNwcAkocmV2aXNpb24g
Mjg2MDk1KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTU2hh
cmVkV29ya2VyR2xvYmFsU2NvcGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTMsNyArMTUzLDcg
QEAgSlNDOjpJc29TdWJzcGFjZSogSlNTaGFyZWRXb3JrZXJHbG9iYWxTYwogICAgIGF1dG8mIHNw
YWNlcyA9IGNsaWVudERhdGEuc3Vic3BhY2VzKCk7CiAgICAgaWYgKGF1dG8qIHNwYWNlID0gc3Bh
Y2VzLm1fc3Vic3BhY2VGb3JTaGFyZWRXb3JrZXJHbG9iYWxTY29wZS5nZXQoKSkKICAgICAgICAg
cmV0dXJuIHNwYWNlOwotICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yU2hhcmVkV29ya2VyR2xvYmFs
U2NvcGUgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFw
LCAqY2xpZW50RGF0YS5tX2hlYXBDZWxsVHlwZUZvckpTU2hhcmVkV29ya2VyR2xvYmFsU2NvcGUs
IEpTU2hhcmVkV29ya2VyR2xvYmFsU2NvcGUpOworICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yU2hh
cmVkV29ya2VyR2xvYmFsU2NvcGUgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BB
Q0VfSU5JVCh2bS5oZWFwLCBjbGllbnREYXRhLm1faGVhcENlbGxUeXBlRm9ySlNTaGFyZWRXb3Jr
ZXJHbG9iYWxTY29wZSwgSlNTaGFyZWRXb3JrZXJHbG9iYWxTY29wZSk7CiAgICAgYXV0byogc3Bh
Y2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclNoYXJlZFdvcmtlckdsb2JhbFNjb3BlLmdldCgpOwog
SUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKIElHTk9SRV9XQVJOSU5H
U19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTU2hhcmVkV29ya2VyR2xvYmFsU2NvcGUuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNTaGFyZWRX
b3JrZXJHbG9iYWxTY29wZS5oCShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNTaGFyZWRXb3JrZXJHbG9iYWxTY29wZS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC04Miw3ICs4Miw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29T
dWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNf
QVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1NoYXJlZFdvcmtlckdsb2JhbFNjb3BlUHJv
dG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAg
ICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpT
Qzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q0VSZWFjdGlv
bnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RDRVJlYWN0aW9ucy5jcHAJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDRVJlYWN0aW9ucy5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTkxLDcgKzkxLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklz
b1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJ
Q19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdENFUmVhY3Rpb25zUHJvdG90eXBl
LCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICBy
ZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3Ry
dWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC00MzgsOSAr
NDM4LDkgQEAgSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0Q0VSZWFjdGlvbnM6OnN1YgogICAgICAg
ICByZXR1cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6
OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RDRVJlYWN0aW9ucz4gfHwgIUpTVGVzdENFUmVh
Y3Rpb25zOjpuZWVkc0Rlc3RydWN0aW9uKTsKICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFz
ZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdENFUmVhY3Rpb25zPikKLSAg
ICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0Q0VSZWFjdGlvbnMgPSBtYWtlVW5pcXVlPElz
b1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uZGVzdHJ1Y3RpYmxlT2Jq
ZWN0SGVhcENlbGxUeXBlLCBKU1Rlc3RDRVJlYWN0aW9ucyk7CisgICAgICAgIHNwYWNlcy5tX3N1
YnNwYWNlRm9yVGVzdENFUmVhY3Rpb25zID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NV
QlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCks
IEpTVGVzdENFUmVhY3Rpb25zKTsKICAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNl
Rm9yVGVzdENFUmVhY3Rpb25zID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNF
X0lOSVQodm0uaGVhcCwgKnZtLmNlbGxIZWFwQ2VsbFR5cGUsIEpTVGVzdENFUmVhY3Rpb25zKTsK
KyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0Q0VSZWFjdGlvbnMgPSBtYWtlVW5pcXVl
PElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxU
eXBlKCksIEpTVGVzdENFUmVhY3Rpb25zKTsKICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1
YnNwYWNlRm9yVGVzdENFUmVhY3Rpb25zLmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1
bnJlYWNoYWJsZS1jb2RlIikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNv
bXBhcmUiKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVy
LmNwcAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXIuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC03NSw3ICs3NSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSog
c3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lT
T19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyUHJvdG90eXBl
LCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICBy
ZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3Ry
dWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC0yNjQsOSAr
MjY0LDkgQEAgSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0Q0VSZWFjdGlvbnNTdHJpbgogICAgICAg
ICByZXR1cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6
OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyPiB8fCAh
SlNUZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllcjo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgaWYg
Y29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBK
U1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyPikKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VG
b3JUZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElT
T19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5
cGUsIEpTVGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXIpOworICAgICAgICBzcGFjZXMubV9zdWJz
cGFjZUZvclRlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFj
ZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENl
bGxUeXBlKCksIEpTVGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXIpOwogICAgIGVsc2UKLSAgICAg
ICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllciA9IG1ha2VV
bmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5jZWxsSGVh
cENlbGxUeXBlLCBKU1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyKTsKKyAgICAgICAgc3BhY2Vz
Lm1fc3Vic3BhY2VGb3JUZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllciA9IG1ha2VVbmlxdWU8SXNv
U3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUo
KSwgSlNUZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllcik7CiAgICAgYXV0byogc3BhY2UgPSBzcGFj
ZXMubV9zdWJzcGFjZUZvclRlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyLmdldCgpOwogSUdOT1JF
X1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKIElHTk9SRV9XQVJOSU5HU19CRUdJ
TigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdENhbGxUcmFjZXIuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDYWxsVHJhY2VyLmNwcAko
cmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdENhbGxUcmFjZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05Nyw3ICs5Nyw3IEBA
IHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpW
TSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJM
RShKU1Rlc3RDYWxsVHJhY2VyUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5w
bGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsK
ICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpW
TSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHBy
b3RvdHlwZSkKICAgICB7CkBAIC01MTMsOSArNTEzLDkgQEAgSlNDOjpJc29TdWJzcGFjZSogSlNU
ZXN0Q2FsbFRyYWNlcjo6c3VicwogICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fz
c2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RD
YWxsVHJhY2VyPiB8fCAhSlNUZXN0Q2FsbFRyYWNlcjo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAg
aWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0
LCBKU1Rlc3RDYWxsVHJhY2VyPikKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0Q2Fs
bFRyYWNlciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhl
YXAsICp2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUsIEpTVGVzdENhbGxUcmFjZXIp
OworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RDYWxsVHJhY2VyID0gbWFrZVVuaXF1
ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxl
T2JqZWN0SGVhcENlbGxUeXBlKCksIEpTVGVzdENhbGxUcmFjZXIpOwogICAgIGVsc2UKLSAgICAg
ICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0Q2FsbFRyYWNlciA9IG1ha2VVbmlxdWU8SXNvU3Vi
c3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5jZWxsSGVhcENlbGxUeXBlLCBK
U1Rlc3RDYWxsVHJhY2VyKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0Q2FsbFRy
YWNlciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAs
IHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0Q2FsbFRyYWNlcik7CiAgICAgYXV0byogc3Bh
Y2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RDYWxsVHJhY2VyLmdldCgpOwogSUdOT1JFX1dB
Uk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigi
dGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3IuY3BwCShyZXZpc2lvbiAyODYwOTUpCisrKyBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2xhc3NXaXRoSlNC
dWlsdGluQ29uc3RydWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NCw3ICs2NCw3IEBAIHB1
YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYg
dm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShK
U1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3RvclByb3RvdHlwZSwgQmFzZSk7Ci0gICAg
ICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFp
bk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRl
U3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAtMTc2LDkgKzE3Niw5IEBAIEpTQzo6
SXNvU3Vic3BhY2UqIEpTVGVzdENsYXNzV2l0aEpTQnVpbHQKICAgICAgICAgcmV0dXJuIHNwYWNl
OwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJs
ZU9iamVjdCwgSlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3I+IHx8ICFKU1Rlc3RD
bGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3Rvcjo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgaWYg
Y29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBK
U1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3Rvcj4pCi0gICAgICAgIHNwYWNlcy5tX3N1
YnNwYWNlRm9yVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yID0gbWFrZVVuaXF1ZTxJ
c29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmRlc3RydWN0aWJsZU9i
amVjdEhlYXBDZWxsVHlwZSwgSlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3IpOwor
ICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1
Y3RvciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAs
IHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RDbGFzc1dpdGhKU0J1
aWx0aW5Db25zdHJ1Y3Rvcik7CiAgICAgZWxzZQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZv
clRlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3RvciA9IG1ha2VVbmlxdWU8SXNvU3Vic3Bh
Y2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5jZWxsSGVhcENlbGxUeXBlLCBKU1Rl
c3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3Rvcik7CisgICAgICAgIHNwYWNlcy5tX3N1YnNw
YWNlRm9yVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yID0gbWFrZVVuaXF1ZTxJc29T
dWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgp
LCBKU1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3Rvcik7CiAgICAgYXV0byogc3BhY2Ug
PSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3Rvci5n
ZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVf
V0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlcy5jcHAJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDb25kaXRpb25hbEluY2x1
ZGVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTI3LDcgKzEyNyw3IEBAIHB1YmxpYzoKICAgICBz
dGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewog
ICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3RDb25kaXRp
b25hbEluY2x1ZGVzUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9i
amVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9
CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0s
IEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlw
ZSkKICAgICB7CkBAIC03ODksOSArNzg5LDkgQEAgSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0Q29u
ZGl0aW9uYWxJbmNsdQogICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fzc2VydChz
dGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RDb25kaXRp
b25hbEluY2x1ZGVzPiB8fCAhSlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlczo6bmVlZHNEZXN0cnVj
dGlvbik7CiAgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1
Y3RpYmxlT2JqZWN0LCBKU1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzPikKLSAgICAgICAgc3BhY2Vz
Lm1fc3Vic3BhY2VGb3JUZXN0Q29uZGl0aW9uYWxJbmNsdWRlcyA9IG1ha2VVbmlxdWU8SXNvU3Vi
c3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5kZXN0cnVjdGlibGVPYmplY3RI
ZWFwQ2VsbFR5cGUsIEpTVGVzdENvbmRpdGlvbmFsSW5jbHVkZXMpOworICAgICAgICBzcGFjZXMu
bV9zdWJzcGFjZUZvclRlc3RDb25kaXRpb25hbEluY2x1ZGVzID0gbWFrZVVuaXF1ZTxJc29TdWJz
cGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVh
cENlbGxUeXBlKCksIEpTVGVzdENvbmRpdGlvbmFsSW5jbHVkZXMpOwogICAgIGVsc2UKLSAgICAg
ICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0Q29uZGl0aW9uYWxJbmNsdWRlcyA9IG1ha2VVbmlx
dWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5jZWxsSGVhcENl
bGxUeXBlLCBKU1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vi
c3BhY2VGb3JUZXN0Q29uZGl0aW9uYWxJbmNsdWRlcyA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+
IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0
Q29uZGl0aW9uYWxJbmNsdWRlcyk7CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFj
ZUZvclRlc3RDb25kaXRpb25hbEluY2x1ZGVzLmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lO
KCJ1bnJlYWNoYWJsZS1jb2RlIikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2Fs
LWNvbXBhcmUiKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdENvbmRpdGlvbmFsbHlSZWFkV3JpdGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDb25kaXRpb25hbGx5UmVhZFdy
aXRlLmNwcAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdENvbmRpdGlvbmFsbHlSZWFkV3JpdGUuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC05OCw3ICs5OCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFj
ZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJU
X0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3RDb25kaXRpb25hbGx5UmVhZFdyaXRlUHJvdG90
eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAg
ICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6
U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC02MTEs
OSArNjExLDkgQEAgSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0Q29uZGl0aW9uYWxseVJlYQogICAg
ICAgICByZXR1cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxK
U0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RDb25kaXRpb25hbGx5UmVhZFdyaXRlPiB8
fCAhSlNUZXN0Q29uZGl0aW9uYWxseVJlYWRXcml0ZTo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAg
aWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0
LCBKU1Rlc3RDb25kaXRpb25hbGx5UmVhZFdyaXRlPikKLSAgICAgICAgc3BhY2VzLm1fc3Vic3Bh
Y2VGb3JUZXN0Q29uZGl0aW9uYWxseVJlYWRXcml0ZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+
IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2Vs
bFR5cGUsIEpTVGVzdENvbmRpdGlvbmFsbHlSZWFkV3JpdGUpOworICAgICAgICBzcGFjZXMubV9z
dWJzcGFjZUZvclRlc3RDb25kaXRpb25hbGx5UmVhZFdyaXRlID0gbWFrZVVuaXF1ZTxJc29TdWJz
cGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVh
cENlbGxUeXBlKCksIEpTVGVzdENvbmRpdGlvbmFsbHlSZWFkV3JpdGUpOwogICAgIGVsc2UKLSAg
ICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0Q29uZGl0aW9uYWxseVJlYWRXcml0ZSA9IG1h
a2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5jZWxs
SGVhcENlbGxUeXBlLCBKU1Rlc3RDb25kaXRpb25hbGx5UmVhZFdyaXRlKTsKKyAgICAgICAgc3Bh
Y2VzLm1fc3Vic3BhY2VGb3JUZXN0Q29uZGl0aW9uYWxseVJlYWRXcml0ZSA9IG1ha2VVbmlxdWU8
SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5
cGUoKSwgSlNUZXN0Q29uZGl0aW9uYWxseVJlYWRXcml0ZSk7CiAgICAgYXV0byogc3BhY2UgPSBz
cGFjZXMubV9zdWJzcGFjZUZvclRlc3RDb25kaXRpb25hbGx5UmVhZFdyaXRlLmdldCgpOwogSUdO
T1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKIElHTk9SRV9XQVJOSU5HU19C
RUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERPTUpJVC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERPTUpJVC5jcHAJKHJldmlz
aW9uIDI4NjA5NSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RET01KSVQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00ODEsNyArNDgxLDcgQEAgcHVibGlj
OgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkK
ICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVz
dERPTUpJVFByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RT
cGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAg
IHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6
OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAg
ICAgewpAQCAtMTI1Miw5ICsxMjUyLDkgQEAgSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0RE9NSklU
OjpzdWJzcGFjZQogICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6
OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RET01KSVQ+IHx8
ICFKU1Rlc3RET01KSVQ6Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhwciAoc3Rk
Ojppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0RE9NSklUPikK
LSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0RE9NSklUID0gbWFrZVVuaXF1ZTxJc29T
dWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmRlc3RydWN0aWJsZU9iamVj
dEhlYXBDZWxsVHlwZSwgSlNUZXN0RE9NSklUKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VG
b3JUZXN0RE9NSklUID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQo
dm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCksIEpTVGVzdERPTUpJ
VCk7CiAgICAgZWxzZQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RET01KSVQgPSBt
YWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uY2Vs
bEhlYXBDZWxsVHlwZSwgSlNUZXN0RE9NSklUKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VG
b3JUZXN0RE9NSklUID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQo
dm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RET01KSVQpOwogICAgIGF1dG8q
IHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0RE9NSklULmdldCgpOwogSUdOT1JFX1dB
Uk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigi
dGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdERlZmF1bHRUb0pTT04uY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3REZWZhdWx0VG9KU09OLmNw
cAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdERlZmF1bHRUb0pTT04uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjQsNyAr
MTI0LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZv
cihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNF
X1NIQVJBQkxFKEpTVGVzdERlZmF1bHRUb0pTT05Qcm90b3R5cGUsIEJhc2UpOwotICAgICAgICBy
ZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmpl
Y3RTcGFjZSgpOwogICAgIH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVj
dHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6
OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKQEAgLTgwOCw5ICs4MDgsOSBAQCBKU0M6Oklzb1N1
YnNwYWNlKiBKU1Rlc3REZWZhdWx0VG9KU09OOjpzCiAgICAgICAgIHJldHVybiBzcGFjZTsKICAg
ICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmpl
Y3QsIEpTVGVzdERlZmF1bHRUb0pTT04+IHx8ICFKU1Rlc3REZWZhdWx0VG9KU09OOjpuZWVkc0Rl
c3RydWN0aW9uKTsKICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNE
ZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdERlZmF1bHRUb0pTT04+KQotICAgICAgICBzcGFjZXMu
bV9zdWJzcGFjZUZvclRlc3REZWZhdWx0VG9KU09OID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4g
SVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxs
VHlwZSwgSlNUZXN0RGVmYXVsdFRvSlNPTik7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9y
VGVzdERlZmF1bHRUb0pTT04gPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0Vf
SU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0
RGVmYXVsdFRvSlNPTik7CiAgICAgZWxzZQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRl
c3REZWZhdWx0VG9KU09OID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lO
SVQodm0uaGVhcCwgKnZtLmNlbGxIZWFwQ2VsbFR5cGUsIEpTVGVzdERlZmF1bHRUb0pTT04pOwor
ICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3REZWZhdWx0VG9KU09OID0gbWFrZVVuaXF1
ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxs
VHlwZSgpLCBKU1Rlc3REZWZhdWx0VG9KU09OKTsKICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5t
X3N1YnNwYWNlRm9yVGVzdERlZmF1bHRUb0pTT04uZ2V0KCk7CiBJR05PUkVfV0FSTklOR1NfQkVH
SU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2lj
YWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RGVmYXVsdFRv
SlNPTkZpbHRlcmVkQnlFeHBvc2VkLmNwcAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERlZmF1bHRUb0pTT05GaWx0ZXJl
ZEJ5RXhwb3NlZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc1LDcgKzc1LDcgQEAgcHVibGljOgog
ICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKICAg
ICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdERl
ZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZFByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJl
dHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVj
dFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0
dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6
SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAtMjcwLDkgKzI3MCw5IEBAIEpTQzo6SXNvU3Vi
c3BhY2UqIEpTVGVzdERlZmF1bHRUb0pTT05GaWwKICAgICAgICAgcmV0dXJuIHNwYWNlOwogICAg
IHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVj
dCwgSlNUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkPiB8fCAhSlNUZXN0RGVmYXVs
dFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkOjpuZWVkc0Rlc3RydWN0aW9uKTsKICAgICBpZiBjb25z
dGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVz
dERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZD4pCi0gICAgICAgIHNwYWNlcy5tX3N1YnNw
YWNlRm9yVGVzdERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZCA9IG1ha2VVbmlxdWU8SXNv
U3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5kZXN0cnVjdGlibGVPYmpl
Y3RIZWFwQ2VsbFR5cGUsIEpTVGVzdERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZCk7Cisg
ICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhw
b3NlZCA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAs
IHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3REZWZhdWx0VG9KU09O
RmlsdGVyZWRCeUV4cG9zZWQpOwogICAgIGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VG
b3JUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkID0gbWFrZVVuaXF1ZTxJc29TdWJz
cGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmNlbGxIZWFwQ2VsbFR5cGUsIEpT
VGVzdERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZCk7CisgICAgICAgIHNwYWNlcy5tX3N1
YnNwYWNlRm9yVGVzdERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZCA9IG1ha2VVbmlxdWU8
SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5
cGUoKSwgSlNUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkKTsKICAgICBhdXRvKiBz
cGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhw
b3NlZC5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJ
R05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3REZWZhdWx0VG9KU09OSW5k
aXJlY3RJbmhlcml0YW5jZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERlZmF1bHRUb0pTT05JbmRpcmVjdEluaGVyaXRhbmNl
LmNwcAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdERlZmF1bHRUb0pTT05JbmRpcmVjdEluaGVyaXRhbmNlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNjIsNyArNjIsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNv
U3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElD
X0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0RGVmYXVsdFRvSlNPTkluZGlyZWN0
SW5oZXJpdGFuY2VQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2Jq
ZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0K
ICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwg
SlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBl
KQogICAgIHsKQEAgLTE2Miw5ICsxNjIsOSBAQCBKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3REZWZh
dWx0VG9KU09OSW5kCiAgICAgICAgIHJldHVybiBzcGFjZTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0
ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdERlZmF1bHRU
b0pTT05JbmRpcmVjdEluaGVyaXRhbmNlPiB8fCAhSlNUZXN0RGVmYXVsdFRvSlNPTkluZGlyZWN0
SW5oZXJpdGFuY2U6Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjpp
c19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0RGVmYXVsdFRvSlNP
TkluZGlyZWN0SW5oZXJpdGFuY2U+KQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RE
ZWZhdWx0VG9KU09OSW5kaXJlY3RJbmhlcml0YW5jZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+
IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2Vs
bFR5cGUsIEpTVGVzdERlZmF1bHRUb0pTT05JbmRpcmVjdEluaGVyaXRhbmNlKTsKKyAgICAgICAg
c3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0RGVmYXVsdFRvSlNPTkluZGlyZWN0SW5oZXJpdGFuY2Ug
PSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5k
ZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0RGVmYXVsdFRvSlNPTkluZGly
ZWN0SW5oZXJpdGFuY2UpOwogICAgIGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JU
ZXN0RGVmYXVsdFRvSlNPTkluZGlyZWN0SW5oZXJpdGFuY2UgPSBtYWtlVW5pcXVlPElzb1N1YnNw
YWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uY2VsbEhlYXBDZWxsVHlwZSwgSlNU
ZXN0RGVmYXVsdFRvSlNPTkluZGlyZWN0SW5oZXJpdGFuY2UpOworICAgICAgICBzcGFjZXMubV9z
dWJzcGFjZUZvclRlc3REZWZhdWx0VG9KU09OSW5kaXJlY3RJbmhlcml0YW5jZSA9IG1ha2VVbmlx
dWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2Vs
bFR5cGUoKSwgSlNUZXN0RGVmYXVsdFRvSlNPTkluZGlyZWN0SW5oZXJpdGFuY2UpOwogICAgIGF1
dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0RGVmYXVsdFRvSlNPTkluZGlyZWN0
SW5oZXJpdGFuY2UuZ2V0KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNv
ZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RGVmYXVsdFRv
SlNPTkluaGVyaXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3REZWZhdWx0VG9KU09OSW5oZXJpdC5jcHAJKHJldmlzaW9uIDI4
NjA5NSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RE
ZWZhdWx0VG9KU09OSW5oZXJpdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg5LDcgKzg5LDcgQEAg
cHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZN
JiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxF
KEpTVGVzdERlZmF1bHRUb0pTT05Jbmhlcml0UHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0
dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0
U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1
cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpK
U1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC0yOTIsOSArMjkyLDkgQEAgSlNDOjpJc29TdWJz
cGFjZSogSlNUZXN0RGVmYXVsdFRvSlNPTkluaAogICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAg
c3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0
LCBKU1Rlc3REZWZhdWx0VG9KU09OSW5oZXJpdD4gfHwgIUpTVGVzdERlZmF1bHRUb0pTT05Jbmhl
cml0OjpuZWVkc0Rlc3RydWN0aW9uKTsKICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9v
Zl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdERlZmF1bHRUb0pTT05Jbmhlcml0
PikKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0RGVmYXVsdFRvSlNPTkluaGVyaXQg
PSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0u
ZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLCBKU1Rlc3REZWZhdWx0VG9KU09OSW5oZXJp
dCk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdERlZmF1bHRUb0pTT05Jbmhlcml0
ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0u
ZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCksIEpTVGVzdERlZmF1bHRUb0pTT05Jbmhl
cml0KTsKICAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdERlZmF1bHRU
b0pTT05Jbmhlcml0ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQo
dm0uaGVhcCwgKnZtLmNlbGxIZWFwQ2VsbFR5cGUsIEpTVGVzdERlZmF1bHRUb0pTT05Jbmhlcml0
KTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0RGVmYXVsdFRvSlNPTkluaGVyaXQg
PSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5j
ZWxsSGVhcENlbGxUeXBlKCksIEpTVGVzdERlZmF1bHRUb0pTT05Jbmhlcml0KTsKICAgICBhdXRv
KiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdERlZmF1bHRUb0pTT05Jbmhlcml0Lmdl
dCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKIElHTk9SRV9X
QVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRleDogU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERlZmF1bHRUb0pTT05Jbmhlcml0Rmlu
YWwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3REZWZhdWx0VG9KU09OSW5oZXJpdEZpbmFsLmNwcAkocmV2aXNpb24gMjg2MDk1
KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERlZmF1
bHRUb0pTT05Jbmhlcml0RmluYWwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05MSw3ICs5MSw3IEBA
IHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpW
TSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJM
RShKU1Rlc3REZWZhdWx0VG9KU09OSW5oZXJpdEZpbmFsUHJvdG90eXBlLCBCYXNlKTsKLSAgICAg
ICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWlu
T2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVT
dHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
SlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC0zMzIsOSArMzMyLDkgQEAgSlNDOjpJ
c29TdWJzcGFjZSogSlNUZXN0RGVmYXVsdFRvSlNPTkluaAogICAgICAgICByZXR1cm4gc3BhY2U7
CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxl
T2JqZWN0LCBKU1Rlc3REZWZhdWx0VG9KU09OSW5oZXJpdEZpbmFsPiB8fCAhSlNUZXN0RGVmYXVs
dFRvSlNPTkluaGVyaXRGaW5hbDo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3RleHBy
IChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3REZWZh
dWx0VG9KU09OSW5oZXJpdEZpbmFsPikKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0
RGVmYXVsdFRvSlNPTkluaGVyaXRGaW5hbCA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19T
VUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUs
IEpTVGVzdERlZmF1bHRUb0pTT05Jbmhlcml0RmluYWwpOworICAgICAgICBzcGFjZXMubV9zdWJz
cGFjZUZvclRlc3REZWZhdWx0VG9KU09OSW5oZXJpdEZpbmFsID0gbWFrZVVuaXF1ZTxJc29TdWJz
cGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVh
cENlbGxUeXBlKCksIEpTVGVzdERlZmF1bHRUb0pTT05Jbmhlcml0RmluYWwpOwogICAgIGVsc2UK
LSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0RGVmYXVsdFRvSlNPTkluaGVyaXRGaW5h
bCA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2
bS5jZWxsSGVhcENlbGxUeXBlLCBKU1Rlc3REZWZhdWx0VG9KU09OSW5oZXJpdEZpbmFsKTsKKyAg
ICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0RGVmYXVsdFRvSlNPTkluaGVyaXRGaW5hbCA9
IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNl
bGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0RGVmYXVsdFRvSlNPTkluaGVyaXRGaW5hbCk7CiAgICAg
YXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3REZWZhdWx0VG9KU09OSW5oZXJp
dEZpbmFsLmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikK
IElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRleDogU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERlbGVnYXRlVG9TaGFy
ZWRTeW50aGV0aWNBdHRyaWJ1dGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0
cmlidXRlLmNwcAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGUu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC03MCw3ICs3MCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMg
SlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAgICAg
ICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3REZWxlZ2F0ZVRvU2hh
cmVkU3ludGhldGljQXR0cmlidXRlUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2
bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2Uo
KTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlND
OjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVl
IHByb3RvdHlwZSkKICAgICB7CkBAIC0yNDYsOSArMjQ2LDkgQEAgSlNDOjpJc29TdWJzcGFjZSog
SlNUZXN0RGVsZWdhdGVUb1NoYXJlZAogICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAgc3RhdGlj
X2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rl
c3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlPiB8fCAhSlNUZXN0RGVsZWdhdGVU
b1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZTo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgaWYgY29u
c3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rl
c3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlPikKLSAgICAgICAgc3BhY2VzLm1f
c3Vic3BhY2VGb3JUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZSA9IG1ha2VV
bmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5kZXN0cnVj
dGlibGVPYmplY3RIZWFwQ2VsbFR5cGUsIEpTVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNB
dHRyaWJ1dGUpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3REZWxlZ2F0ZVRvU2hh
cmVkU3ludGhldGljQXR0cmlidXRlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQ
QUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCksIEpT
VGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGUpOwogICAgIGVsc2UKLSAgICAg
ICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJp
YnV0ZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAs
ICp2bS5jZWxsSGVhcENlbGxUeXBlLCBKU1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0
cmlidXRlKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0RGVsZWdhdGVUb1NoYXJl
ZFN5bnRoZXRpY0F0dHJpYnV0ZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFD
RV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0RGVsZWdhdGVUb1No
YXJlZFN5bnRoZXRpY0F0dHJpYnV0ZSk7CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJz
cGFjZUZvclRlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlLmdldCgpOwogSUdO
T1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKIElHTk9SRV9XQVJOSU5HU19C
RUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERvbWFpblNlY3VyaXR5LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RG9tYWluU2Vj
dXJpdHkuY3BwCShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0RG9tYWluU2VjdXJpdHkuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC04MCw3ICs4MCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vi
c3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19T
VUJTUEFDRV9TSEFSQUJMRShKU1Rlc3REb21haW5TZWN1cml0eVByb3RvdHlwZSwgQmFzZSk7Ci0g
ICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5w
bGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3Jl
YXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAtMzIwLDkgKzMyMCw5IEBAIEpT
Qzo6SXNvU3Vic3BhY2UqIEpTVGVzdERvbWFpblNlY3VyaXR5OjoKICAgICAgICAgcmV0dXJuIHNw
YWNlOwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0
aWJsZU9iamVjdCwgSlNUZXN0RG9tYWluU2VjdXJpdHk+IHx8ICFKU1Rlc3REb21haW5TZWN1cml0
eTo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2Zf
djxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3REb21haW5TZWN1cml0eT4pCi0gICAg
ICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdERvbWFpblNlY3VyaXR5ID0gbWFrZVVuaXF1ZTxJ
c29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmRlc3RydWN0aWJsZU9i
amVjdEhlYXBDZWxsVHlwZSwgSlNUZXN0RG9tYWluU2VjdXJpdHkpOworICAgICAgICBzcGFjZXMu
bV9zdWJzcGFjZUZvclRlc3REb21haW5TZWN1cml0eSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+
IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxs
VHlwZSgpLCBKU1Rlc3REb21haW5TZWN1cml0eSk7CiAgICAgZWxzZQotICAgICAgICBzcGFjZXMu
bV9zdWJzcGFjZUZvclRlc3REb21haW5TZWN1cml0eSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+
IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5jZWxsSGVhcENlbGxUeXBlLCBKU1Rlc3RE
b21haW5TZWN1cml0eSk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdERvbWFpblNl
Y3VyaXR5ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVh
cCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3REb21haW5TZWN1cml0eSk7CiAgICAgYXV0
byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3REb21haW5TZWN1cml0eS5nZXQoKTsK
IElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklO
R1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFbmFibGVkQnlTZXR0aW5nLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RW5h
YmxlZEJ5U2V0dGluZy5jcHAJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFbmFibGVkQnlTZXR0aW5nLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtOTIsNyArOTIsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vi
c3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FT
U0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0RW5hYmxlZEJ5U2V0dGluZ1Byb3RvdHlw
ZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAg
cmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0
cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAtNDU5LDkg
KzQ1OSw5IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdEVuYWJsZWRCeVNldHRpbmcKICAgICAg
ICAgcmV0dXJuIHNwYWNlOwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlND
OjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0RW5hYmxlZEJ5U2V0dGluZz4gfHwgIUpTVGVz
dEVuYWJsZWRCeVNldHRpbmc6Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhwciAo
c3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0RW5hYmxl
ZEJ5U2V0dGluZz4pCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEVuYWJsZWRCeVNl
dHRpbmcgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFw
LCAqdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLCBKU1Rlc3RFbmFibGVkQnlTZXR0
aW5nKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0RW5hYmxlZEJ5U2V0dGluZyA9
IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRl
c3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RFbmFibGVkQnlTZXR0aW5nKTsK
ICAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEVuYWJsZWRCeVNldHRp
bmcgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAq
dm0uY2VsbEhlYXBDZWxsVHlwZSwgSlNUZXN0RW5hYmxlZEJ5U2V0dGluZyk7CisgICAgICAgIHNw
YWNlcy5tX3N1YnNwYWNlRm9yVGVzdEVuYWJsZWRCeVNldHRpbmcgPSBtYWtlVW5pcXVlPElzb1N1
YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCks
IEpTVGVzdEVuYWJsZWRCeVNldHRpbmcpOwogICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vi
c3BhY2VGb3JUZXN0RW5hYmxlZEJ5U2V0dGluZy5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJ
TigidW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNh
bC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RFbmFibGVkRm9yQ29udGV4dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEVuYWJsZWRGb3JDb250ZXh0LmNwcAko
cmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdEVuYWJsZWRGb3JDb250ZXh0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjYsNyAr
NjYsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9y
KEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0Vf
U0hBUkFCTEUoSlNUZXN0RW5hYmxlZEZvckNvbnRleHRQcm90b3R5cGUsIEJhc2UpOwotICAgICAg
ICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5P
YmplY3RTcGFjZSgpOwogICAgIH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0
cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBK
U0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKQEAgLTE4Niw5ICsxODYsOSBAQCBKU0M6Oklz
b1N1YnNwYWNlKiBKU1Rlc3RFbmFibGVkRm9yQ29udGV4CiAgICAgICAgIHJldHVybiBzcGFjZTsK
ICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVP
YmplY3QsIEpTVGVzdEVuYWJsZWRGb3JDb250ZXh0PiB8fCAhSlNUZXN0RW5hYmxlZEZvckNvbnRl
eHQ6Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29m
X3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0RW5hYmxlZEZvckNvbnRleHQ+KQot
ICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RFbmFibGVkRm9yQ29udGV4dCA9IG1ha2VV
bmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5kZXN0cnVj
dGlibGVPYmplY3RIZWFwQ2VsbFR5cGUsIEpTVGVzdEVuYWJsZWRGb3JDb250ZXh0KTsKKyAgICAg
ICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0RW5hYmxlZEZvckNvbnRleHQgPSBtYWtlVW5pcXVl
PElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVP
YmplY3RIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0RW5hYmxlZEZvckNvbnRleHQpOwogICAgIGVsc2UK
LSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0RW5hYmxlZEZvckNvbnRleHQgPSBtYWtl
VW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uY2VsbEhl
YXBDZWxsVHlwZSwgSlNUZXN0RW5hYmxlZEZvckNvbnRleHQpOworICAgICAgICBzcGFjZXMubV9z
dWJzcGFjZUZvclRlc3RFbmFibGVkRm9yQ29udGV4dCA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+
IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0
RW5hYmxlZEZvckNvbnRleHQpOwogICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VG
b3JUZXN0RW5hYmxlZEZvckNvbnRleHQuZ2V0KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVu
cmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29t
cGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0RXZlbnRDb25zdHJ1Y3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50Q29uc3RydWN0b3IuY3BwCShyZXZpc2lv
biAyODYwOTUpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0RXZlbnRDb25zdHJ1Y3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0Nyw3ICsxNDcsNyBA
QCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6
Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFC
TEUoSlNUZXN0RXZlbnRDb25zdHJ1Y3RvclByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVy
biAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNw
YWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJl
KEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNW
YWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAtMzIxLDkgKzMyMSw5IEBAIEpTQzo6SXNvU3Vic3Bh
Y2UqIEpTVGVzdEV2ZW50Q29uc3RydWN0b3IKICAgICAgICAgcmV0dXJuIHNwYWNlOwogICAgIHN0
YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwg
SlNUZXN0RXZlbnRDb25zdHJ1Y3Rvcj4gfHwgIUpTVGVzdEV2ZW50Q29uc3RydWN0b3I6Om5lZWRz
RGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpK
U0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0RXZlbnRDb25zdHJ1Y3Rvcj4pCi0gICAgICAgIHNw
YWNlcy5tX3N1YnNwYWNlRm9yVGVzdEV2ZW50Q29uc3RydWN0b3IgPSBtYWtlVW5pcXVlPElzb1N1
YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0
SGVhcENlbGxUeXBlLCBKU1Rlc3RFdmVudENvbnN0cnVjdG9yKTsKKyAgICAgICAgc3BhY2VzLm1f
c3Vic3BhY2VGb3JUZXN0RXZlbnRDb25zdHJ1Y3RvciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+
IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxs
VHlwZSgpLCBKU1Rlc3RFdmVudENvbnN0cnVjdG9yKTsKICAgICBlbHNlCi0gICAgICAgIHNwYWNl
cy5tX3N1YnNwYWNlRm9yVGVzdEV2ZW50Q29uc3RydWN0b3IgPSBtYWtlVW5pcXVlPElzb1N1YnNw
YWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uY2VsbEhlYXBDZWxsVHlwZSwgSlNU
ZXN0RXZlbnRDb25zdHJ1Y3Rvcik7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEV2
ZW50Q29uc3RydWN0b3IgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5J
VCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCksIEpTVGVzdEV2ZW50Q29uc3RydWN0b3Ip
OwogICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0RXZlbnRDb25zdHJ1
Y3Rvci5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJ
R05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudFRhcmdldC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdEV2ZW50VGFyZ2V0LmNwcAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50VGFyZ2V0LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNzMsNyArNzMsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3Bh
Y2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VS
VF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0RXZlbnRUYXJnZXRQcm90b3R5cGUsIEJhc2Up
OwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAm
dm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUq
IGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKQEAgLTI2Miw5ICsyNjIsOSBA
QCBKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3RFdmVudFRhcmdldDo6c3ViCiAgICAgICAgIHJldHVy
biBzcGFjZTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0
cnVjdGlibGVPYmplY3QsIEpTVGVzdEV2ZW50VGFyZ2V0PiB8fCAhSlNUZXN0RXZlbnRUYXJnZXQ6
Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8
SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0RXZlbnRUYXJnZXQ+KQotICAgICAgICBz
cGFjZXMubV9zdWJzcGFjZUZvclRlc3RFdmVudFRhcmdldCA9IG1ha2VVbmlxdWU8SXNvU3Vic3Bh
Y2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFw
Q2VsbFR5cGUsIEpTVGVzdEV2ZW50VGFyZ2V0KTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VG
b3JUZXN0RXZlbnRUYXJnZXQgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0Vf
SU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0
RXZlbnRUYXJnZXQpOwogICAgIGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0
RXZlbnRUYXJnZXQgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2
bS5oZWFwLCAqdm0uY2VsbEhlYXBDZWxsVHlwZSwgSlNUZXN0RXZlbnRUYXJnZXQpOworICAgICAg
ICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RFdmVudFRhcmdldCA9IG1ha2VVbmlxdWU8SXNvU3Vi
c3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwg
SlNUZXN0RXZlbnRUYXJnZXQpOwogICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VG
b3JUZXN0RXZlbnRUYXJnZXQuZ2V0KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hh
YmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIp
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXhj
ZXB0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0RXhjZXB0aW9uLmNwcAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV4Y2VwdGlvbi5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTY2LDcgKzY2LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklz
b1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJ
Q19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdEV4Y2VwdGlvblByb3RvdHlwZSwg
QmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0
dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVj
dHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAtMTg3LDkgKzE4
Nyw5IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdEV4Y2VwdGlvbjo6c3Vic3AKICAgICAgICAg
cmV0dXJuIHNwYWNlOwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpK
U0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0RXhjZXB0aW9uPiB8fCAhSlNUZXN0RXhjZXB0aW9u
OjpuZWVkc0Rlc3RydWN0aW9uKTsKICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92
PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdEV4Y2VwdGlvbj4pCi0gICAgICAgIHNw
YWNlcy5tX3N1YnNwYWNlRm9yVGVzdEV4Y2VwdGlvbiA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+
IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2Vs
bFR5cGUsIEpTVGVzdEV4Y2VwdGlvbik7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVz
dEV4Y2VwdGlvbiA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZt
LmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RFeGNlcHRp
b24pOwogICAgIGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0RXhjZXB0aW9u
ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZt
LmNlbGxIZWFwQ2VsbFR5cGUsIEpTVGVzdEV4Y2VwdGlvbik7CisgICAgICAgIHNwYWNlcy5tX3N1
YnNwYWNlRm9yVGVzdEV4Y2VwdGlvbiA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJT
UEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0RXhjZXB0aW9u
KTsKICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEV4Y2VwdGlvbi5n
ZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVf
V0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RHZW5lcmF0ZUFkZE9wYXF1ZVJvb3Qu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RHZW5lcmF0ZUFkZE9wYXF1ZVJvb3QuY3BwCShyZXZpc2lvbiAyODYwOTUpCisrKyBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2VuZXJhdGVBZGRP
cGFxdWVSb290LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjYsNyArNjYsNyBAQCBwdWJsaWM6CiAg
ICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAg
IHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0R2Vu
ZXJhdGVBZGRPcGFxdWVSb290UHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5w
bGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsK
ICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpW
TSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHBy
b3RvdHlwZSkKICAgICB7CkBAIC0xODcsOSArMTg3LDkgQEAgSlNDOjpJc29TdWJzcGFjZSogSlNU
ZXN0R2VuZXJhdGVBZGRPcGFxdQogICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fz
c2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RH
ZW5lcmF0ZUFkZE9wYXF1ZVJvb3Q+IHx8ICFKU1Rlc3RHZW5lcmF0ZUFkZE9wYXF1ZVJvb3Q6Om5l
ZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlND
OjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0R2VuZXJhdGVBZGRPcGFxdWVSb290PikKLSAg
ICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0R2VuZXJhdGVBZGRPcGFxdWVSb290ID0gbWFr
ZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmRlc3Ry
dWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSwgSlNUZXN0R2VuZXJhdGVBZGRPcGFxdWVSb290KTsK
KyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0R2VuZXJhdGVBZGRPcGFxdWVSb290ID0g
bWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVz
dHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCksIEpTVGVzdEdlbmVyYXRlQWRkT3BhcXVlUm9v
dCk7CiAgICAgZWxzZQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RHZW5lcmF0ZUFk
ZE9wYXF1ZVJvb3QgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2
bS5oZWFwLCAqdm0uY2VsbEhlYXBDZWxsVHlwZSwgSlNUZXN0R2VuZXJhdGVBZGRPcGFxdWVSb290
KTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0R2VuZXJhdGVBZGRPcGFxdWVSb290
ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0u
Y2VsbEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RHZW5lcmF0ZUFkZE9wYXF1ZVJvb3QpOwogICAgIGF1
dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0R2VuZXJhdGVBZGRPcGFxdWVSb290
LmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKIElHTk9S
RV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRleDogU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGUu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlLmNwcAkocmV2aXNpb24gMjg2MDk1KQorKysgU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEdlbmVyYXRlSXNSZWFj
aGFibGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02Niw3ICs2Niw3IEBAIHB1YmxpYzoKICAgICBz
dGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewog
ICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3RHZW5lcmF0
ZUlzUmVhY2hhYmxlUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9i
amVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9
CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0s
IEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlw
ZSkKICAgICB7CkBAIC0xOTcsOSArMTk3LDkgQEAgSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0R2Vu
ZXJhdGVJc1JlYWNoYQogICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fzc2VydChz
dGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RHZW5lcmF0
ZUlzUmVhY2hhYmxlPiB8fCAhSlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZTo6bmVlZHNEZXN0cnVj
dGlvbik7CiAgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1
Y3RpYmxlT2JqZWN0LCBKU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlPikKLSAgICAgICAgc3BhY2Vz
Lm1fc3Vic3BhY2VGb3JUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZSA9IG1ha2VVbmlxdWU8SXNvU3Vi
c3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5kZXN0cnVjdGlibGVPYmplY3RI
ZWFwQ2VsbFR5cGUsIEpTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGUpOworICAgICAgICBzcGFjZXMu
bV9zdWJzcGFjZUZvclRlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlID0gbWFrZVVuaXF1ZTxJc29TdWJz
cGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVh
cENlbGxUeXBlKCksIEpTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGUpOwogICAgIGVsc2UKLSAgICAg
ICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZSA9IG1ha2VVbmlx
dWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5jZWxsSGVhcENl
bGxUeXBlLCBKU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vi
c3BhY2VGb3JUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+
IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0
R2VuZXJhdGVJc1JlYWNoYWJsZSk7CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFj
ZUZvclRlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlLmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lO
KCJ1bnJlYWNoYWJsZS1jb2RlIikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2Fs
LWNvbXBhcmUiKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdEdsb2JhbE9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEdsb2JhbE9iamVjdC5jcHAJKHJldmlzaW9uIDI4
NjA5NSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RH
bG9iYWxPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xODE0LDcgKzE4MTQsNyBAQCBKU0M6
Oklzb1N1YnNwYWNlKiBKU1Rlc3RHbG9iYWxPYmplY3Q6OnN1CiAgICAgYXV0byYgc3BhY2VzID0g
Y2xpZW50RGF0YS5zdWJzcGFjZXMoKTsKICAgICBpZiAoYXV0byogc3BhY2UgPSBzcGFjZXMubV9z
dWJzcGFjZUZvclRlc3RHbG9iYWxPYmplY3QuZ2V0KCkpCiAgICAgICAgIHJldHVybiBzcGFjZTsK
LSAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RHbG9iYWxPYmplY3QgPSBtYWtlVW5pcXVlPElz
b1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqY2xpZW50RGF0YS5tX2hlYXBD
ZWxsVHlwZUZvckpTVGVzdEdsb2JhbE9iamVjdCwgSlNUZXN0R2xvYmFsT2JqZWN0KTsKKyAgICBz
cGFjZXMubV9zdWJzcGFjZUZvclRlc3RHbG9iYWxPYmplY3QgPSBtYWtlVW5pcXVlPElzb1N1YnNw
YWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCBjbGllbnREYXRhLm1faGVhcENlbGxUeXBl
Rm9ySlNUZXN0R2xvYmFsT2JqZWN0LCBKU1Rlc3RHbG9iYWxPYmplY3QpOwogICAgIGF1dG8qIHNw
YWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0R2xvYmFsT2JqZWN0LmdldCgpOwogSUdOT1JF
X1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKIElHTk9SRV9XQVJOSU5HU19CRUdJ
TigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdEdsb2JhbE9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RHbG9iYWxPYmplY3QuaAko
cmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdEdsb2JhbE9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC05OCw3ICs5OCw3IEBA
IHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpW
TSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJM
RShKU1Rlc3RHbG9iYWxPYmplY3RQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZt
LnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgp
OwogICAgIH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6
OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUg
cHJvdG90eXBlKQogICAgIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW5kZXhlZFNl
dHRlck5vSWRlbnRpZmllci5jcHAJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVy
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjUsNyArNjUsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGlj
IEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAg
ICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0SW5kZXhlZFNldHRl
ck5vSWRlbnRpZmllclByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5P
YmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAg
fQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZt
LCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5
cGUpCiAgICAgewpAQCAtMjc2LDkgKzI3Niw5IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdElu
ZGV4ZWRTZXR0ZXJOb0kKICAgICAgICAgcmV0dXJuIHNwYWNlOwogICAgIHN0YXRpY19hc3NlcnQo
c3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0SW5kZXhl
ZFNldHRlck5vSWRlbnRpZmllcj4gfHwgIUpTVGVzdEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXI6
Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8
SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0SW5kZXhlZFNldHRlck5vSWRlbnRpZmll
cj4pCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEluZGV4ZWRTZXR0ZXJOb0lkZW50
aWZpZXIgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFw
LCAqdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLCBKU1Rlc3RJbmRleGVkU2V0dGVy
Tm9JZGVudGlmaWVyKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0SW5kZXhlZFNl
dHRlck5vSWRlbnRpZmllciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9J
TklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RJ
bmRleGVkU2V0dGVyTm9JZGVudGlmaWVyKTsKICAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1
YnNwYWNlRm9yVGVzdEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXIgPSBtYWtlVW5pcXVlPElzb1N1
YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uY2VsbEhlYXBDZWxsVHlwZSwg
SlNUZXN0SW5kZXhlZFNldHRlck5vSWRlbnRpZmllcik7CisgICAgICAgIHNwYWNlcy5tX3N1YnNw
YWNlRm9yVGVzdEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXIgPSBtYWtlVW5pcXVlPElzb1N1YnNw
YWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCksIEpT
VGVzdEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXIpOwogICAgIGF1dG8qIHNwYWNlID0gc3BhY2Vz
Lm1fc3Vic3BhY2VGb3JUZXN0SW5kZXhlZFNldHRlck5vSWRlbnRpZmllci5nZXQoKTsKIElHTk9S
RV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVH
SU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24uY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24uY3BwCShyZXZpc2lvbiAyODYwOTUp
CisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW5kZXhl
ZFNldHRlclRocm93aW5nRXhjZXB0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjUsNyArNjUs
NyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpT
Qzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hB
UkFCTEUoSlNUZXN0SW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uUHJvdG90eXBlLCBCYXNl
KTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4g
JnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJl
KiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC0yNzYsOSArMjc2LDkg
QEAgSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0SW5kZXhlZFNldHRlclRocgogICAgICAgICByZXR1
cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVz
dHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24+IHx8
ICFKU1Rlc3RJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb246Om5lZWRzRGVzdHJ1Y3Rpb24p
OwogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJs
ZU9iamVjdCwgSlNUZXN0SW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uPikKLSAgICAgICAg
c3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0SW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uID0g
bWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmRl
c3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSwgSlNUZXN0SW5kZXhlZFNldHRlclRocm93aW5n
RXhjZXB0aW9uKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0SW5kZXhlZFNldHRl
clRocm93aW5nRXhjZXB0aW9uID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNF
X0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCksIEpTVGVz
dEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbik7CiAgICAgZWxzZQotICAgICAgICBzcGFj
ZXMubV9zdWJzcGFjZUZvclRlc3RJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24gPSBtYWtl
VW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uY2VsbEhl
YXBDZWxsVHlwZSwgSlNUZXN0SW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uKTsKKyAgICAg
ICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0SW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9u
ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0u
Y2VsbEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24p
OwogICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0SW5kZXhlZFNldHRl
clRocm93aW5nRXhjZXB0aW9uLmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNo
YWJsZS1jb2RlIikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUi
KQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdElu
ZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRp
Zmllci5jcHAJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXIuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC03Myw3ICs3Myw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29T
dWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNf
QVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3RJbmRleGVkU2V0dGVyV2l0aElkZW50
aWZpZXJQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3Bh
Y2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KICAgICBz
dGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAg
IHsKQEAgLTMwOCw5ICszMDgsOSBAQCBKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3RJbmRleGVkU2V0
dGVyV2l0CiAgICAgICAgIHJldHVybiBzcGFjZTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNf
YmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdEluZGV4ZWRTZXR0ZXJX
aXRoSWRlbnRpZmllcj4gfHwgIUpTVGVzdEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllcjo6bmVl
ZHNEZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6
OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXI+
KQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RJbmRleGVkU2V0dGVyV2l0aElkZW50
aWZpZXIgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFw
LCAqdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLCBKU1Rlc3RJbmRleGVkU2V0dGVy
V2l0aElkZW50aWZpZXIpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RJbmRleGVk
U2V0dGVyV2l0aElkZW50aWZpZXIgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BB
Q0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwgSlNU
ZXN0SW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyKTsKICAgICBlbHNlCi0gICAgICAgIHNwYWNl
cy5tX3N1YnNwYWNlRm9yVGVzdEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllciA9IG1ha2VVbmlx
dWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5jZWxsSGVhcENl
bGxUeXBlLCBKU1Rlc3RJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXIpOworICAgICAgICBzcGFj
ZXMubV9zdWJzcGFjZUZvclRlc3RJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXIgPSBtYWtlVW5p
cXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENl
bGxUeXBlKCksIEpTVGVzdEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllcik7CiAgICAgYXV0byog
c3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RJbmRleGVkU2V0dGVyV2l0aElkZW50aWZp
ZXIuZ2V0KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdO
T1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
SW50ZXJmYWNlLmNwcAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTE4MSw3ICsxODEsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1
YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09f
U1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0SW50ZXJmYWNlUHJvdG90eXBlLCBCYXNlKTsKLSAgICAg
ICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWlu
T2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVT
dHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
SlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC0xMTA0LDkgKzExMDQsOSBAQCBwdWJs
aWM6CiAgICAgICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAgICAgIHN0YXRpY19hc3NlcnQoc3Rk
Ojppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgVGVzdEludGVyZmFjZUl0
ZXJhdG9yPiB8fCAhVGVzdEludGVyZmFjZUl0ZXJhdG9yOjpuZWVkc0Rlc3RydWN0aW9uKTsKICAg
ICAgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxl
T2JqZWN0LCBUZXN0SW50ZXJmYWNlSXRlcmF0b3I+KQotICAgICAgICAgICAgc3BhY2VzLm1fc3Vi
c3BhY2VGb3JUZXN0SW50ZXJmYWNlSXRlcmF0b3IgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJ
U09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxU
eXBlLmdldCgpLCBUZXN0SW50ZXJmYWNlSXRlcmF0b3IpOworICAgICAgICAgICAgc3BhY2VzLm1f
c3Vic3BhY2VGb3JUZXN0SW50ZXJmYWNlSXRlcmF0b3IgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNl
PiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2Vs
bFR5cGUoKSwgVGVzdEludGVyZmFjZUl0ZXJhdG9yKTsKICAgICAgICAgZWxzZQotICAgICAgICAg
ICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0SW50ZXJmYWNlSXRlcmF0b3IgPSBtYWtlVW5pcXVl
PElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uY2VsbEhlYXBDZWxs
VHlwZSwgVGVzdEludGVyZmFjZUl0ZXJhdG9yKTsKKyAgICAgICAgICAgIHNwYWNlcy5tX3N1YnNw
YWNlRm9yVGVzdEludGVyZmFjZUl0ZXJhdG9yID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNP
X1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBUZXN0SW50ZXJm
YWNlSXRlcmF0b3IpOwogICAgICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9y
VGVzdEludGVyZmFjZUl0ZXJhdG9yLmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJl
YWNoYWJsZS1jb2RlIikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBh
cmUiKQpAQCAtMTE5Niw5ICsxMTk2LDkgQEAgSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0SW50ZXJm
YWNlOjpzdWJzcAogICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6
OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RJbnRlcmZhY2U+
IHx8ICFKU1Rlc3RJbnRlcmZhY2U6Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhw
ciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0SW50
ZXJmYWNlPikKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0SW50ZXJmYWNlID0gbWFr
ZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmRlc3Ry
dWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSwgSlNUZXN0SW50ZXJmYWNlKTsKKyAgICAgICAgc3Bh
Y2VzLm1fc3Vic3BhY2VGb3JUZXN0SW50ZXJmYWNlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4g
SVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxU
eXBlKCksIEpTVGVzdEludGVyZmFjZSk7CiAgICAgZWxzZQotICAgICAgICBzcGFjZXMubV9zdWJz
cGFjZUZvclRlc3RJbnRlcmZhY2UgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BB
Q0VfSU5JVCh2bS5oZWFwLCAqdm0uY2VsbEhlYXBDZWxsVHlwZSwgSlNUZXN0SW50ZXJmYWNlKTsK
KyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0SW50ZXJmYWNlID0gbWFrZVVuaXF1ZTxJ
c29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlw
ZSgpLCBKU1Rlc3RJbnRlcmZhY2UpOwogICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3Bh
Y2VGb3JUZXN0SW50ZXJmYWNlLmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNo
YWJsZS1jb2RlIikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUi
KQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdElu
dGVyZmFjZUxlYWRpbmdVbmRlcnNjb3JlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlTGVhZGluZ1VuZGVyc2Nv
cmUuY3BwCShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlTGVhZGluZ1VuZGVyc2NvcmUuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC02Niw3ICs2Niw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJz
cGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNT
RVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3RJbnRlcmZhY2VMZWFkaW5nVW5kZXJzY29y
ZVByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsK
KyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRp
YyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpA
QCAtMTg3LDkgKzE4Nyw5IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdEludGVyZmFjZUxlYWRp
bmcKICAgICAgICAgcmV0dXJuIHNwYWNlOwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNl
X29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0SW50ZXJmYWNlTGVhZGluZ1Vu
ZGVyc2NvcmU+IHx8ICFKU1Rlc3RJbnRlcmZhY2VMZWFkaW5nVW5kZXJzY29yZTo6bmVlZHNEZXN0
cnVjdGlvbik7CiAgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVz
dHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RJbnRlcmZhY2VMZWFkaW5nVW5kZXJzY29yZT4pCi0gICAg
ICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEludGVyZmFjZUxlYWRpbmdVbmRlcnNjb3JlID0g
bWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmRl
c3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSwgSlNUZXN0SW50ZXJmYWNlTGVhZGluZ1VuZGVy
c2NvcmUpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RJbnRlcmZhY2VMZWFkaW5n
VW5kZXJzY29yZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZt
LmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RJbnRlcmZh
Y2VMZWFkaW5nVW5kZXJzY29yZSk7CiAgICAgZWxzZQotICAgICAgICBzcGFjZXMubV9zdWJzcGFj
ZUZvclRlc3RJbnRlcmZhY2VMZWFkaW5nVW5kZXJzY29yZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3Bh
Y2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5jZWxsSGVhcENlbGxUeXBlLCBKU1Rl
c3RJbnRlcmZhY2VMZWFkaW5nVW5kZXJzY29yZSk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNl
Rm9yVGVzdEludGVyZmFjZUxlYWRpbmdVbmRlcnNjb3JlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFj
ZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU1Rl
c3RJbnRlcmZhY2VMZWFkaW5nVW5kZXJzY29yZSk7CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMu
bV9zdWJzcGFjZUZvclRlc3RJbnRlcmZhY2VMZWFkaW5nVW5kZXJzY29yZS5nZXQoKTsKIElHTk9S
RV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVH
SU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJdGVyYWJsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEl0ZXJhYmxlLmNwcAkocmV2
aXNpb24gMjg2MDk1KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdEl0ZXJhYmxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzUsNyArNzUsNyBAQCBwdWJs
aWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZt
KQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNU
ZXN0SXRlcmFibGVQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2Jq
ZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0K
ICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwg
SlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBl
KQogICAgIHsKQEAgLTIwMSw5ICsyMDEsOSBAQCBwdWJsaWM6CiAgICAgICAgICAgICByZXR1cm4g
c3BhY2U7CiAgICAgICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rl
c3RydWN0aWJsZU9iamVjdCwgVGVzdEl0ZXJhYmxlSXRlcmF0b3I+IHx8ICFUZXN0SXRlcmFibGVJ
dGVyYXRvcjo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgICAgIGlmIGNvbnN0ZXhwciAoc3RkOjpp
c19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgVGVzdEl0ZXJhYmxlSXRlcmF0
b3I+KQotICAgICAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0SXRlcmFibGVJdGVyYXRv
ciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2
bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuZ2V0KCksIFRlc3RJdGVyYWJsZUl0ZXJh
dG9yKTsKKyAgICAgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEl0ZXJhYmxlSXRlcmF0
b3IgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2
bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwgVGVzdEl0ZXJhYmxlSXRlcmF0b3Ip
OwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RJdGVy
YWJsZUl0ZXJhdG9yID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQo
dm0uaGVhcCwgKnZtLmNlbGxIZWFwQ2VsbFR5cGUsIFRlc3RJdGVyYWJsZUl0ZXJhdG9yKTsKKyAg
ICAgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEl0ZXJhYmxlSXRlcmF0b3IgPSBtYWtl
VW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVh
cENlbGxUeXBlKCksIFRlc3RJdGVyYWJsZUl0ZXJhdG9yKTsKICAgICAgICAgYXV0byogc3BhY2Ug
PSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RJdGVyYWJsZUl0ZXJhdG9yLmdldCgpOwogSUdOT1JF
X1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKIElHTk9SRV9XQVJOSU5HU19CRUdJ
TigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpAQCAtMjkzLDkgKzI5Myw5IEBAIEpTQzo6SXNvU3Vi
c3BhY2UqIEpTVGVzdEl0ZXJhYmxlOjpzdWJzcGEKICAgICAgICAgcmV0dXJuIHNwYWNlOwogICAg
IHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVj
dCwgSlNUZXN0SXRlcmFibGU+IHx8ICFKU1Rlc3RJdGVyYWJsZTo6bmVlZHNEZXN0cnVjdGlvbik7
CiAgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxl
T2JqZWN0LCBKU1Rlc3RJdGVyYWJsZT4pCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVz
dEl0ZXJhYmxlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0u
aGVhcCwgKnZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSwgSlNUZXN0SXRlcmFibGUp
OworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RJdGVyYWJsZSA9IG1ha2VVbmlxdWU8
SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9i
amVjdEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RJdGVyYWJsZSk7CiAgICAgZWxzZQotICAgICAgICBz
cGFjZXMubV9zdWJzcGFjZUZvclRlc3RJdGVyYWJsZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+
IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5jZWxsSGVhcENlbGxUeXBlLCBKU1Rlc3RJ
dGVyYWJsZSk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEl0ZXJhYmxlID0gbWFr
ZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhl
YXBDZWxsVHlwZSgpLCBKU1Rlc3RJdGVyYWJsZSk7CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMu
bV9zdWJzcGFjZUZvclRlc3RJdGVyYWJsZS5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigi
dW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1j
b21wYXJlIikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yLmNw
cAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NjksNyArNjksNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNw
YWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VC
U1BBQ0VfU0hBUkFCTEUoSlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3JQcm90b3R5cGUsIEJhc2Up
OwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAm
dm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUq
IGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKQEAgLTIzMCw5ICsyMzAsOSBA
QCBKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1CiAgICAgICAgIHJldHVy
biBzcGFjZTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0
cnVjdGlibGVPYmplY3QsIEpTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yPiB8fCAhSlNUZXN0SlNC
dWlsdGluQ29uc3RydWN0b3I6Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhwciAo
c3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0SlNCdWls
dGluQ29uc3RydWN0b3I+KQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RKU0J1aWx0
aW5Db25zdHJ1Y3RvciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklU
KHZtLmhlYXAsICp2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUsIEpTVGVzdEpTQnVp
bHRpbkNvbnN0cnVjdG9yKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0SlNCdWls
dGluQ29uc3RydWN0b3IgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5J
VCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0SlNC
dWlsdGluQ29uc3RydWN0b3IpOwogICAgIGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VG
b3JUZXN0SlNCdWlsdGluQ29uc3RydWN0b3IgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09f
U1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uY2VsbEhlYXBDZWxsVHlwZSwgSlNUZXN0SlNCdWls
dGluQ29uc3RydWN0b3IpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RKU0J1aWx0
aW5Db25zdHJ1Y3RvciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklU
KHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0SlNCdWlsdGluQ29uc3RydWN0
b3IpOwogICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0SlNCdWlsdGlu
Q29uc3RydWN0b3IuZ2V0KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNv
ZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TGVnYWN5RmFj
dG9yeUZ1bmN0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uLmNwcAkocmV2aXNpb24g
Mjg2MDk1KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dExlZ2FjeUZhY3RvcnlGdW5jdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY3LDcgKzY3LDcg
QEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6
OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJB
QkxFKEpTVGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlvblByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAg
IHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9i
amVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3Ry
dWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpT
Qzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAtMjMwLDkgKzIzMCw5IEBAIEpTQzo6SXNv
U3Vic3BhY2UqIEpTVGVzdExlZ2FjeUZhY3RvcnlGdW4KICAgICAgICAgcmV0dXJuIHNwYWNlOwog
ICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9i
amVjdCwgSlNUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uPiB8fCAhSlNUZXN0TGVnYWN5RmFjdG9y
eUZ1bmN0aW9uOjpuZWVkc0Rlc3RydWN0aW9uKTsKICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNf
YmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdExlZ2FjeUZhY3RvcnlG
dW5jdGlvbj4pCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdExlZ2FjeUZhY3RvcnlG
dW5jdGlvbiA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhl
YXAsICp2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUsIEpTVGVzdExlZ2FjeUZhY3Rv
cnlGdW5jdGlvbik7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdExlZ2FjeUZhY3Rv
cnlGdW5jdGlvbiA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZt
LmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RMZWdhY3lG
YWN0b3J5RnVuY3Rpb24pOwogICAgIGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JU
ZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NV
QlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmNlbGxIZWFwQ2VsbFR5cGUsIEpTVGVzdExlZ2FjeUZh
Y3RvcnlGdW5jdGlvbik7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdExlZ2FjeUZh
Y3RvcnlGdW5jdGlvbiA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklU
KHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0
aW9uKTsKICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdExlZ2FjeUZh
Y3RvcnlGdW5jdGlvbi5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUt
Y29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RMZWdhY3lO
b0ludGVyZmFjZU9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0LmNwcAkocmV2
aXNpb24gMjg2MDk1KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtODUs
NyArODUsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNl
Rm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BB
Q0VfU0hBUkFCTEUoSlNUZXN0TGVnYWN5Tm9JbnRlcmZhY2VPYmplY3RQcm90b3R5cGUsIEJhc2Up
OwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAm
dm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUq
IGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKQEAgLTMzNSw5ICszMzUsOSBA
QCBKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3RMZWdhY3lOb0ludGVyZmFjCiAgICAgICAgIHJldHVy
biBzcGFjZTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0
cnVjdGlibGVPYmplY3QsIEpTVGVzdExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0PiB8fCAhSlNUZXN0
TGVnYWN5Tm9JbnRlcmZhY2VPYmplY3Q6Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0
ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0
TGVnYWN5Tm9JbnRlcmZhY2VPYmplY3Q+KQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRl
c3RMZWdhY3lOb0ludGVyZmFjZU9iamVjdCA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19T
VUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUs
IEpTVGVzdExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0KTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3Bh
Y2VGb3JUZXN0TGVnYWN5Tm9JbnRlcmZhY2VPYmplY3QgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNl
PiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2Vs
bFR5cGUoKSwgSlNUZXN0TGVnYWN5Tm9JbnRlcmZhY2VPYmplY3QpOwogICAgIGVsc2UKLSAgICAg
ICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TGVnYWN5Tm9JbnRlcmZhY2VPYmplY3QgPSBtYWtl
VW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uY2VsbEhl
YXBDZWxsVHlwZSwgSlNUZXN0TGVnYWN5Tm9JbnRlcmZhY2VPYmplY3QpOworICAgICAgICBzcGFj
ZXMubV9zdWJzcGFjZUZvclRlc3RMZWdhY3lOb0ludGVyZmFjZU9iamVjdCA9IG1ha2VVbmlxdWU8
SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5
cGUoKSwgSlNUZXN0TGVnYWN5Tm9JbnRlcmZhY2VPYmplY3QpOwogICAgIGF1dG8qIHNwYWNlID0g
c3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TGVnYWN5Tm9JbnRlcmZhY2VPYmplY3QuZ2V0KCk7CiBJ
R05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdT
X0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdElucy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMuY3BwCShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TGVnYWN5T3ZlcnJpZGVCdWls
dElucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTczLDcgKzczLDcgQEAgcHVibGljOgogICAgIHN0
YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAg
ICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdExlZ2FjeU92
ZXJyaWRlQnVpbHRJbnNQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWlu
T2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAg
IH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2
bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90
eXBlKQogICAgIHsKQEAgLTI0OSw5ICsyNDksOSBAQCBKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3RM
ZWdhY3lPdmVycmlkZUJ1CiAgICAgICAgIHJldHVybiBzcGFjZTsKICAgICBzdGF0aWNfYXNzZXJ0
KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdExlZ2Fj
eU92ZXJyaWRlQnVpbHRJbnM+IHx8ICFKU1Rlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zOjpuZWVk
c0Rlc3RydWN0aW9uKTsKICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6
SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM+KQotICAg
ICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zID0gbWFr
ZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmRlc3Ry
dWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSwgSlNUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdElucyk7
CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMg
PSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5k
ZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0TGVnYWN5T3ZlcnJpZGVCdWls
dElucyk7CiAgICAgZWxzZQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RMZWdhY3lP
dmVycmlkZUJ1aWx0SW5zID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lO
SVQodm0uaGVhcCwgKnZtLmNlbGxIZWFwQ2VsbFR5cGUsIEpTVGVzdExlZ2FjeU92ZXJyaWRlQnVp
bHRJbnMpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RMZWdhY3lPdmVycmlkZUJ1
aWx0SW5zID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVh
cCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zKTsK
ICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdExlZ2FjeU92ZXJyaWRl
QnVpbHRJbnMuZ2V0KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUi
KQogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TWFwTGlrZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdE1hcExpa2UuY3BwCShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TWFwTGlrZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTgyLDcgKzgyLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJz
cGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NV
QlNQQUNFX1NIQVJBQkxFKEpTVGVzdE1hcExpa2VQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICBy
ZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmpl
Y3RTcGFjZSgpOwogICAgIH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVj
dHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6
OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKQEAgLTM2Niw5ICszNjYsOSBAQCBKU0M6Oklzb1N1
YnNwYWNlKiBKU1Rlc3RNYXBMaWtlOjpzdWJzcGFjCiAgICAgICAgIHJldHVybiBzcGFjZTsKICAg
ICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmpl
Y3QsIEpTVGVzdE1hcExpa2U+IHx8ICFKU1Rlc3RNYXBMaWtlOjpuZWVkc0Rlc3RydWN0aW9uKTsK
ICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVP
YmplY3QsIEpTVGVzdE1hcExpa2U+KQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RN
YXBMaWtlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVh
cCwgKnZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSwgSlNUZXN0TWFwTGlrZSk7Cisg
ICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE1hcExpa2UgPSBtYWtlVW5pcXVlPElzb1N1
YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RI
ZWFwQ2VsbFR5cGUoKSwgSlNUZXN0TWFwTGlrZSk7CiAgICAgZWxzZQotICAgICAgICBzcGFjZXMu
bV9zdWJzcGFjZUZvclRlc3RNYXBMaWtlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NV
QlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmNlbGxIZWFwQ2VsbFR5cGUsIEpTVGVzdE1hcExpa2Up
OworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RNYXBMaWtlID0gbWFrZVVuaXF1ZTxJ
c29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlw
ZSgpLCBKU1Rlc3RNYXBMaWtlKTsKICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNl
Rm9yVGVzdE1hcExpa2UuZ2V0KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxl
LWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TWFwTGlr
ZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE1hcExpa2VXaXRoT3ZlcnJpZGRlbk9w
ZXJhdGlvbnMuY3BwCShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TWFwTGlrZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9ucy5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTg2LDcgKzg2LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBK
U0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAg
IFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdE1hcExpa2VXaXRoT3Zl
cnJpZGRlbk9wZXJhdGlvbnNQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBs
YWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwog
ICAgIH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZN
JiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJv
dG90eXBlKQogICAgIHsKQEAgLTM4MCw5ICszODAsOSBAQCBKU0M6Oklzb1N1YnNwYWNlKiBKU1Rl
c3RNYXBMaWtlV2l0aE92ZXJyCiAgICAgICAgIHJldHVybiBzcGFjZTsKICAgICBzdGF0aWNfYXNz
ZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdE1h
cExpa2VXaXRoT3ZlcnJpZGRlbk9wZXJhdGlvbnM+IHx8ICFKU1Rlc3RNYXBMaWtlV2l0aE92ZXJy
aWRkZW5PcGVyYXRpb25zOjpuZWVkc0Rlc3RydWN0aW9uKTsKICAgICBpZiBjb25zdGV4cHIgKHN0
ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdE1hcExpa2VX
aXRoT3ZlcnJpZGRlbk9wZXJhdGlvbnM+KQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRl
c3RNYXBMaWtlV2l0aE92ZXJyaWRkZW5PcGVyYXRpb25zID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFj
ZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBD
ZWxsVHlwZSwgSlNUZXN0TWFwTGlrZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9ucyk7CisgICAgICAg
IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE1hcExpa2VXaXRoT3ZlcnJpZGRlbk9wZXJhdGlvbnMg
PSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5k
ZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0TWFwTGlrZVdpdGhPdmVycmlk
ZGVuT3BlcmF0aW9ucyk7CiAgICAgZWxzZQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRl
c3RNYXBMaWtlV2l0aE92ZXJyaWRkZW5PcGVyYXRpb25zID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFj
ZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmNlbGxIZWFwQ2VsbFR5cGUsIEpTVGVz
dE1hcExpa2VXaXRoT3ZlcnJpZGRlbk9wZXJhdGlvbnMpOworICAgICAgICBzcGFjZXMubV9zdWJz
cGFjZUZvclRlc3RNYXBMaWtlV2l0aE92ZXJyaWRkZW5PcGVyYXRpb25zID0gbWFrZVVuaXF1ZTxJ
c29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlw
ZSgpLCBKU1Rlc3RNYXBMaWtlV2l0aE92ZXJyaWRkZW5PcGVyYXRpb25zKTsKICAgICBhdXRvKiBz
cGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE1hcExpa2VXaXRoT3ZlcnJpZGRlbk9wZXJh
dGlvbnMuZ2V0KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQog
SUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRBbmRJbmRleGVk
U2V0dGVyTm9JZGVudGlmaWVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyTm9JZGVudGlm
aWVyLmNwcAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlck5vSWRlbnRpZmllci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTY2LDcgKzY2LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6
Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNU
QVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdE5hbWVkQW5kSW5kZXhlZFNl
dHRlck5vSWRlbnRpZmllclByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxh
aW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAg
ICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0m
IHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90
b3R5cGUpCiAgICAgewpAQCAtMzQ0LDkgKzM0NCw5IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVz
dE5hbWVkQW5kSW5kZXhlZFMKICAgICAgICAgcmV0dXJuIHNwYWNlOwogICAgIHN0YXRpY19hc3Nl
cnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0TmFt
ZWRBbmRJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyPiB8fCAhSlNUZXN0TmFtZWRBbmRJbmRleGVk
U2V0dGVyTm9JZGVudGlmaWVyOjpuZWVkc0Rlc3RydWN0aW9uKTsKICAgICBpZiBjb25zdGV4cHIg
KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdE5hbWVk
QW5kSW5kZXhlZFNldHRlck5vSWRlbnRpZmllcj4pCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNl
Rm9yVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlck5vSWRlbnRpZmllciA9IG1ha2VVbmlxdWU8SXNv
U3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5kZXN0cnVjdGlibGVPYmpl
Y3RIZWFwQ2VsbFR5cGUsIEpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlck5vSWRlbnRpZmllcik7
CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlck5v
SWRlbnRpZmllciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZt
LmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3ROYW1lZEFu
ZEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXIpOwogICAgIGVsc2UKLSAgICAgICAgc3BhY2VzLm1f
c3Vic3BhY2VGb3JUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyID0gbWFrZVVu
aXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmNlbGxIZWFw
Q2VsbFR5cGUsIEpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlck5vSWRlbnRpZmllcik7CisgICAg
ICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlck5vSWRlbnRp
ZmllciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAs
IHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyTm9JZGVu
dGlmaWVyKTsKICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVk
QW5kSW5kZXhlZFNldHRlck5vSWRlbnRpZmllci5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJ
TigidW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNh
bC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5h
bWVkQW5kSW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uLmNwcAkocmV2aXNpb24gMjg2MDk1
KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVk
QW5kSW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NjYsNyArNjYsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNw
YWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VC
U1BBQ0VfU0hBUkFCTEUoSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRp
b25Qcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7
CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KICAgICBzdGF0
aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsK
QEAgLTM0NCw5ICszNDQsOSBAQCBKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3ROYW1lZEFuZEluZGV4
ZWRTCiAgICAgICAgIHJldHVybiBzcGFjZTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFz
ZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdE5hbWVkQW5kSW5kZXhlZFNl
dHRlclRocm93aW5nRXhjZXB0aW9uPiB8fCAhSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyVGhy
b3dpbmdFeGNlcHRpb246Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhwciAoc3Rk
Ojppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0TmFtZWRBbmRJ
bmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24+KQotICAgICAgICBzcGFjZXMubV9zdWJzcGFj
ZUZvclRlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbiA9IG1ha2VVbmlx
dWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5kZXN0cnVjdGli
bGVPYmplY3RIZWFwQ2VsbFR5cGUsIEpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlclRocm93aW5n
RXhjZXB0aW9uKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRBbmRJbmRl
eGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24gPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09f
U1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUo
KSwgSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24pOwogICAgIGVs
c2UKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVy
VGhyb3dpbmdFeGNlcHRpb24gPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0Vf
SU5JVCh2bS5oZWFwLCAqdm0uY2VsbEhlYXBDZWxsVHlwZSwgSlNUZXN0TmFtZWRBbmRJbmRleGVk
U2V0dGVyVGhyb3dpbmdFeGNlcHRpb24pOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRl
c3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbiA9IG1ha2VVbmlxdWU8SXNv
U3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUo
KSwgSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24pOwogICAgIGF1
dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVy
VGhyb3dpbmdFeGNlcHRpb24uZ2V0KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hh
YmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIp
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFt
ZWRBbmRJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXIuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEFuZEluZGV4ZWRT
ZXR0ZXJXaXRoSWRlbnRpZmllci5jcHAJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJX
aXRoSWRlbnRpZmllci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc1LDcgKzc1LDcgQEAgcHVibGlj
OgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkK
ICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVz
dE5hbWVkQW5kSW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyUHJvdG90eXBlLCBCYXNlKTsKLSAg
ICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBs
YWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVh
dGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC00MDEsOSArNDAxLDkgQEAgSlND
OjpJc29TdWJzcGFjZSogSlNUZXN0TmFtZWRBbmRJbmRleGVkUwogICAgICAgICByZXR1cm4gc3Bh
Y2U7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3Rp
YmxlT2JqZWN0LCBKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllcj4gfHwg
IUpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyOjpuZWVkc0Rlc3RydWN0
aW9uKTsKICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVj
dGlibGVPYmplY3QsIEpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyPikK
LSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0
aElkZW50aWZpZXIgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2
bS5oZWFwLCAqdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLCBKU1Rlc3ROYW1lZEFu
ZEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllcik7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNl
Rm9yVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyID0gbWFrZVVuaXF1ZTxJ
c29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2Jq
ZWN0SGVhcENlbGxUeXBlKCksIEpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlcldpdGhJZGVudGlm
aWVyKTsKICAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkQW5k
SW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNP
X1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmNlbGxIZWFwQ2VsbFR5cGUsIEpTVGVzdE5hbWVk
QW5kSW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3Bh
Y2VGb3JUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXIgPSBtYWtlVW5pcXVl
PElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxU
eXBlKCksIEpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyKTsKICAgICBh
dXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRl
cldpdGhJZGVudGlmaWVyLmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJs
ZS1jb2RlIikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJ
bmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVk
RGVsZXRlck5vSWRlbnRpZmllci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlck5vSWRlbnRpZmllci5jcHAJ
KHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJOb0lkZW50aWZpZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC02NSw3ICs2NSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vi
c3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19T
VUJTUEFDRV9TSEFSQUJMRShKU1Rlc3ROYW1lZERlbGV0ZXJOb0lkZW50aWZpZXJQcm90b3R5cGUs
IEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJl
dHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1
Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKQEAgLTI0Niw5ICsy
NDYsOSBAQCBKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3ROYW1lZERlbGV0ZXJOb0lkCiAgICAgICAg
IHJldHVybiBzcGFjZTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6
SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdE5hbWVkRGVsZXRlck5vSWRlbnRpZmllcj4gfHwg
IUpTVGVzdE5hbWVkRGVsZXRlck5vSWRlbnRpZmllcjo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAg
aWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0
LCBKU1Rlc3ROYW1lZERlbGV0ZXJOb0lkZW50aWZpZXI+KQotICAgICAgICBzcGFjZXMubV9zdWJz
cGFjZUZvclRlc3ROYW1lZERlbGV0ZXJOb0lkZW50aWZpZXIgPSBtYWtlVW5pcXVlPElzb1N1YnNw
YWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVh
cENlbGxUeXBlLCBKU1Rlc3ROYW1lZERlbGV0ZXJOb0lkZW50aWZpZXIpOworICAgICAgICBzcGFj
ZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZERlbGV0ZXJOb0lkZW50aWZpZXIgPSBtYWtlVW5pcXVl
PElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVP
YmplY3RIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0TmFtZWREZWxldGVyTm9JZGVudGlmaWVyKTsKICAg
ICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkRGVsZXRlck5vSWRl
bnRpZmllciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhl
YXAsICp2bS5jZWxsSGVhcENlbGxUeXBlLCBKU1Rlc3ROYW1lZERlbGV0ZXJOb0lkZW50aWZpZXIp
OworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZERlbGV0ZXJOb0lkZW50aWZp
ZXIgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2
bS5jZWxsSGVhcENlbGxUeXBlKCksIEpTVGVzdE5hbWVkRGVsZXRlck5vSWRlbnRpZmllcik7CiAg
ICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZERlbGV0ZXJOb0lk
ZW50aWZpZXIuZ2V0KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUi
KQogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVy
VGhyb3dpbmdFeGNlcHRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5j
cHAJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTY1LDcgKzY1LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNw
YWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NF
UlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdE5hbWVkRGVsZXRlclRocm93aW5nRXhjZXB0
aW9uUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNl
OworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3Rh
dGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7
CkBAIC0yNDYsOSArMjQ2LDkgQEAgSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0TmFtZWREZWxldGVy
VGhybwogICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jh
c2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3ROYW1lZERlbGV0ZXJUaHJv
d2luZ0V4Y2VwdGlvbj4gfHwgIUpTVGVzdE5hbWVkRGVsZXRlclRocm93aW5nRXhjZXB0aW9uOjpu
ZWVkc0Rlc3RydWN0aW9uKTsKICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpT
Qzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdE5hbWVkRGVsZXRlclRocm93aW5nRXhjZXB0
aW9uPikKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWREZWxldGVyVGhyb3dp
bmdFeGNlcHRpb24gPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2
bS5oZWFwLCAqdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLCBKU1Rlc3ROYW1lZERl
bGV0ZXJUaHJvd2luZ0V4Y2VwdGlvbik7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVz
dE5hbWVkRGVsZXRlclRocm93aW5nRXhjZXB0aW9uID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4g
SVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxU
eXBlKCksIEpTVGVzdE5hbWVkRGVsZXRlclRocm93aW5nRXhjZXB0aW9uKTsKICAgICBlbHNlCi0g
ICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkRGVsZXRlclRocm93aW5nRXhjZXB0
aW9uID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwg
KnZtLmNlbGxIZWFwQ2VsbFR5cGUsIEpTVGVzdE5hbWVkRGVsZXRlclRocm93aW5nRXhjZXB0aW9u
KTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWREZWxldGVyVGhyb3dpbmdF
eGNlcHRpb24gPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5o
ZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCksIEpTVGVzdE5hbWVkRGVsZXRlclRocm93aW5nRXhj
ZXB0aW9uKTsKICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVk
RGVsZXRlclRocm93aW5nRXhjZXB0aW9uLmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1
bnJlYWNoYWJsZS1jb2RlIikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNv
bXBhcmUiKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdE5hbWVkRGVsZXRlcldpdGhJZGVudGlmaWVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyV2l0aElk
ZW50aWZpZXIuY3BwCShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyV2l0aElkZW50aWZpZXIuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC03Miw3ICs3Miw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJ
c29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFU
SUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSWRl
bnRpZmllclByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RT
cGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAg
IHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6
OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAg
ICAgewpAQCAtMjcwLDkgKzI3MCw5IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdE5hbWVkRGVs
ZXRlcldpdGgKICAgICAgICAgcmV0dXJuIHNwYWNlOwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjpp
c19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0TmFtZWREZWxldGVy
V2l0aElkZW50aWZpZXI+IHx8ICFKU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllcjo6bmVl
ZHNEZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6
OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllcj4p
Ci0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkRGVsZXRlcldpdGhJZGVudGlm
aWVyID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwg
KnZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSwgSlNUZXN0TmFtZWREZWxldGVyV2l0
aElkZW50aWZpZXIpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZERlbGV0
ZXJXaXRoSWRlbnRpZmllciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9J
TklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RO
YW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllcik7CiAgICAgZWxzZQotICAgICAgICBzcGFjZXMubV9z
dWJzcGFjZUZvclRlc3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllciA9IG1ha2VVbmlxdWU8SXNv
U3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5jZWxsSGVhcENlbGxUeXBl
LCBKU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllcik7CisgICAgICAgIHNwYWNlcy5tX3N1
YnNwYWNlRm9yVGVzdE5hbWVkRGVsZXRlcldpdGhJZGVudGlmaWVyID0gbWFrZVVuaXF1ZTxJc29T
dWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgp
LCBKU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllcik7CiAgICAgYXV0byogc3BhY2UgPSBz
cGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllci5nZXQoKTsK
IElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklO
R1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSW5kZXhlZEdldHRl
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdE5hbWVkRGVsZXRlcldpdGhJbmRleGVkR2V0dGVyLmNwcAkocmV2aXNpb24gMjg2
MDk1KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5h
bWVkRGVsZXRlcldpdGhJbmRleGVkR2V0dGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjYsNyAr
NjYsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9y
KEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0Vf
U0hBUkFCTEUoSlNUZXN0TmFtZWREZWxldGVyV2l0aEluZGV4ZWRHZXR0ZXJQcm90b3R5cGUsIEJh
c2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVy
biAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1
cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKQEAgLTI2Miw5ICsyNjIs
OSBAQCBKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3ROYW1lZERlbGV0ZXJXaXRoCiAgICAgICAgIHJl
dHVybiBzcGFjZTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNE
ZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdE5hbWVkRGVsZXRlcldpdGhJbmRleGVkR2V0dGVyPiB8
fCAhSlNUZXN0TmFtZWREZWxldGVyV2l0aEluZGV4ZWRHZXR0ZXI6Om5lZWRzRGVzdHJ1Y3Rpb24p
OwogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJs
ZU9iamVjdCwgSlNUZXN0TmFtZWREZWxldGVyV2l0aEluZGV4ZWRHZXR0ZXI+KQotICAgICAgICBz
cGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZERlbGV0ZXJXaXRoSW5kZXhlZEdldHRlciA9IG1h
a2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5kZXN0
cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUsIEpTVGVzdE5hbWVkRGVsZXRlcldpdGhJbmRleGVk
R2V0dGVyKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWREZWxldGVyV2l0
aEluZGV4ZWRHZXR0ZXIgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5J
VCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0TmFt
ZWREZWxldGVyV2l0aEluZGV4ZWRHZXR0ZXIpOwogICAgIGVsc2UKLSAgICAgICAgc3BhY2VzLm1f
c3Vic3BhY2VGb3JUZXN0TmFtZWREZWxldGVyV2l0aEluZGV4ZWRHZXR0ZXIgPSBtYWtlVW5pcXVl
PElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uY2VsbEhlYXBDZWxs
VHlwZSwgSlNUZXN0TmFtZWREZWxldGVyV2l0aEluZGV4ZWRHZXR0ZXIpOworICAgICAgICBzcGFj
ZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZERlbGV0ZXJXaXRoSW5kZXhlZEdldHRlciA9IG1ha2VV
bmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFw
Q2VsbFR5cGUoKSwgSlNUZXN0TmFtZWREZWxldGVyV2l0aEluZGV4ZWRHZXR0ZXIpOwogICAgIGF1
dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWREZWxldGVyV2l0aEluZGV4
ZWRHZXR0ZXIuZ2V0KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUi
KQogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRHZXR0ZXJD
YWxsV2l0aC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE5hbWVkR2V0dGVyQ2FsbFdpdGguY3BwCShyZXZpc2lvbiAyODYwOTUp
CisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRH
ZXR0ZXJDYWxsV2l0aC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY1LDcgKzY1LDcgQEAgcHVibGlj
OgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkK
ICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVz
dE5hbWVkR2V0dGVyQ2FsbFdpdGhQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZt
LnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgp
OwogICAgIH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6
OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUg
cHJvdG90eXBlKQogICAgIHsKQEAgLTIyMCw5ICsyMjAsOSBAQCBKU0M6Oklzb1N1YnNwYWNlKiBK
U1Rlc3ROYW1lZEdldHRlckNhbGxXCiAgICAgICAgIHJldHVybiBzcGFjZTsKICAgICBzdGF0aWNf
YXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVz
dE5hbWVkR2V0dGVyQ2FsbFdpdGg+IHx8ICFKU1Rlc3ROYW1lZEdldHRlckNhbGxXaXRoOjpuZWVk
c0Rlc3RydWN0aW9uKTsKICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6
SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdE5hbWVkR2V0dGVyQ2FsbFdpdGg+KQotICAgICAg
ICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZEdldHRlckNhbGxXaXRoID0gbWFrZVVuaXF1
ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmRlc3RydWN0aWJs
ZU9iamVjdEhlYXBDZWxsVHlwZSwgSlNUZXN0TmFtZWRHZXR0ZXJDYWxsV2l0aCk7CisgICAgICAg
IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkR2V0dGVyQ2FsbFdpdGggPSBtYWtlVW5pcXVl
PElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVP
YmplY3RIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0TmFtZWRHZXR0ZXJDYWxsV2l0aCk7CiAgICAgZWxz
ZQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZEdldHRlckNhbGxXaXRoID0g
bWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmNl
bGxIZWFwQ2VsbFR5cGUsIEpTVGVzdE5hbWVkR2V0dGVyQ2FsbFdpdGgpOworICAgICAgICBzcGFj
ZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZEdldHRlckNhbGxXaXRoID0gbWFrZVVuaXF1ZTxJc29T
dWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgp
LCBKU1Rlc3ROYW1lZEdldHRlckNhbGxXaXRoKTsKICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5t
X3N1YnNwYWNlRm9yVGVzdE5hbWVkR2V0dGVyQ2FsbFdpdGguZ2V0KCk7CiBJR05PUkVfV0FSTklO
R1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0
b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0TmFtZWRHZXR0ZXJOb0lkZW50aWZpZXIuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEdldHRl
ck5vSWRlbnRpZmllci5jcHAJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEdldHRlck5vSWRlbnRpZmllci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTY1LDcgKzY1LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6
Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNU
QVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdE5hbWVkR2V0dGVyTm9JZGVu
dGlmaWVyUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNw
YWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAg
c3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAg
ICB7CkBAIC0yMjAsOSArMjIwLDkgQEAgSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0TmFtZWRHZXR0
ZXJOb0lkZQogICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6Omlz
X2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3ROYW1lZEdldHRlck5v
SWRlbnRpZmllcj4gfHwgIUpTVGVzdE5hbWVkR2V0dGVyTm9JZGVudGlmaWVyOjpuZWVkc0Rlc3Ry
dWN0aW9uKTsKICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0
cnVjdGlibGVPYmplY3QsIEpTVGVzdE5hbWVkR2V0dGVyTm9JZGVudGlmaWVyPikKLSAgICAgICAg
c3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRHZXR0ZXJOb0lkZW50aWZpZXIgPSBtYWtlVW5p
cXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uZGVzdHJ1Y3Rp
YmxlT2JqZWN0SGVhcENlbGxUeXBlLCBKU1Rlc3ROYW1lZEdldHRlck5vSWRlbnRpZmllcik7Cisg
ICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkR2V0dGVyTm9JZGVudGlmaWVyID0g
bWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVz
dHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCksIEpTVGVzdE5hbWVkR2V0dGVyTm9JZGVudGlm
aWVyKTsKICAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkR2V0
dGVyTm9JZGVudGlmaWVyID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lO
SVQodm0uaGVhcCwgKnZtLmNlbGxIZWFwQ2VsbFR5cGUsIEpTVGVzdE5hbWVkR2V0dGVyTm9JZGVu
dGlmaWVyKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRHZXR0ZXJOb0lk
ZW50aWZpZXIgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5o
ZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCksIEpTVGVzdE5hbWVkR2V0dGVyTm9JZGVudGlmaWVy
KTsKICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkR2V0dGVy
Tm9JZGVudGlmaWVyLmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1j
b2RlIikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRl
eDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkR2V0
dGVyV2l0aElkZW50aWZpZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEdldHRlcldpdGhJZGVudGlmaWVyLmNwcAko
cmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdE5hbWVkR2V0dGVyV2l0aElkZW50aWZpZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC03MCw3ICs3MCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vi
c3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19T
VUJTUEFDRV9TSEFSQUJMRShKU1Rlc3ROYW1lZEdldHRlcldpdGhJZGVudGlmaWVyUHJvdG90eXBl
LCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICBy
ZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3Ry
dWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC0yNDYsOSAr
MjQ2LDkgQEAgSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0TmFtZWRHZXR0ZXJXaXRoSQogICAgICAg
ICByZXR1cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6
OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3ROYW1lZEdldHRlcldpdGhJZGVudGlmaWVyPiB8
fCAhSlNUZXN0TmFtZWRHZXR0ZXJXaXRoSWRlbnRpZmllcjo6bmVlZHNEZXN0cnVjdGlvbik7CiAg
ICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2Jq
ZWN0LCBKU1Rlc3ROYW1lZEdldHRlcldpdGhJZGVudGlmaWVyPikKLSAgICAgICAgc3BhY2VzLm1f
c3Vic3BhY2VGb3JUZXN0TmFtZWRHZXR0ZXJXaXRoSWRlbnRpZmllciA9IG1ha2VVbmlxdWU8SXNv
U3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5kZXN0cnVjdGlibGVPYmpl
Y3RIZWFwQ2VsbFR5cGUsIEpTVGVzdE5hbWVkR2V0dGVyV2l0aElkZW50aWZpZXIpOworICAgICAg
ICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZEdldHRlcldpdGhJZGVudGlmaWVyID0gbWFr
ZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1
Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCksIEpTVGVzdE5hbWVkR2V0dGVyV2l0aElkZW50aWZp
ZXIpOwogICAgIGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRHZXR0
ZXJXaXRoSWRlbnRpZmllciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9J
TklUKHZtLmhlYXAsICp2bS5jZWxsSGVhcENlbGxUeXBlLCBKU1Rlc3ROYW1lZEdldHRlcldpdGhJ
ZGVudGlmaWVyKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRHZXR0ZXJX
aXRoSWRlbnRpZmllciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklU
KHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0TmFtZWRHZXR0ZXJXaXRoSWRl
bnRpZmllcik7CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1l
ZEdldHRlcldpdGhJZGVudGlmaWVyLmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJl
YWNoYWJsZS1jb2RlIikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBh
cmUiKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dE5hbWVkU2V0dGVyTm9JZGVudGlmaWVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJOb0lkZW50aWZpZXIu
Y3BwCShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJOb0lkZW50aWZpZXIuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC02NSw3ICs2NSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSog
c3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lT
T19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3ROYW1lZFNldHRlck5vSWRlbnRpZmllclByb3RvdHlw
ZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAg
cmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0
cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAtMzAwLDkg
KzMwMCw5IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdE5hbWVkU2V0dGVyTm9JZGUKICAgICAg
ICAgcmV0dXJuIHNwYWNlOwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlND
OjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0TmFtZWRTZXR0ZXJOb0lkZW50aWZpZXI+IHx8
ICFKU1Rlc3ROYW1lZFNldHRlck5vSWRlbnRpZmllcjo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAg
aWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0
LCBKU1Rlc3ROYW1lZFNldHRlck5vSWRlbnRpZmllcj4pCi0gICAgICAgIHNwYWNlcy5tX3N1YnNw
YWNlRm9yVGVzdE5hbWVkU2V0dGVyTm9JZGVudGlmaWVyID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFj
ZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBD
ZWxsVHlwZSwgSlNUZXN0TmFtZWRTZXR0ZXJOb0lkZW50aWZpZXIpOworICAgICAgICBzcGFjZXMu
bV9zdWJzcGFjZUZvclRlc3ROYW1lZFNldHRlck5vSWRlbnRpZmllciA9IG1ha2VVbmlxdWU8SXNv
U3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVj
dEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3ROYW1lZFNldHRlck5vSWRlbnRpZmllcik7CiAgICAgZWxz
ZQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZFNldHRlck5vSWRlbnRpZmll
ciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2
bS5jZWxsSGVhcENlbGxUeXBlLCBKU1Rlc3ROYW1lZFNldHRlck5vSWRlbnRpZmllcik7CisgICAg
ICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkU2V0dGVyTm9JZGVudGlmaWVyID0gbWFr
ZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhl
YXBDZWxsVHlwZSgpLCBKU1Rlc3ROYW1lZFNldHRlck5vSWRlbnRpZmllcik7CiAgICAgYXV0byog
c3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZFNldHRlck5vSWRlbnRpZmllci5n
ZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVf
V0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlclRocm93aW5nRXhj
ZXB0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5jcHAJKHJldmlzaW9u
IDI4NjA5NSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3ROYW1lZFNldHRlclRocm93aW5nRXhjZXB0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjUs
NyArNjUsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNl
Rm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BB
Q0VfU0hBUkFCTEUoSlNUZXN0TmFtZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvblByb3RvdHlwZSwg
QmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0
dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVj
dHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAtMzAwLDkgKzMw
MCw5IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdE5hbWVkU2V0dGVyVGhyb3cKICAgICAgICAg
cmV0dXJuIHNwYWNlOwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpK
U0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0TmFtZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbj4g
fHwgIUpTVGVzdE5hbWVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb246Om5lZWRzRGVzdHJ1Y3Rpb24p
OwogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJs
ZU9iamVjdCwgSlNUZXN0TmFtZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbj4pCi0gICAgICAgIHNw
YWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24gPSBtYWtl
VW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uZGVzdHJ1
Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLCBKU1Rlc3ROYW1lZFNldHRlclRocm93aW5nRXhjZXB0
aW9uKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRTZXR0ZXJUaHJvd2lu
Z0V4Y2VwdGlvbiA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZt
LmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3ROYW1lZFNl
dHRlclRocm93aW5nRXhjZXB0aW9uKTsKICAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNw
YWNlRm9yVGVzdE5hbWVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24gPSBtYWtlVW5pcXVlPElzb1N1
YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uY2VsbEhlYXBDZWxsVHlwZSwg
SlNUZXN0TmFtZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbik7CisgICAgICAgIHNwYWNlcy5tX3N1
YnNwYWNlRm9yVGVzdE5hbWVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24gPSBtYWtlVW5pcXVlPElz
b1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBl
KCksIEpTVGVzdE5hbWVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24pOwogICAgIGF1dG8qIHNwYWNl
ID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5n
ZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVf
V0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhJZGVudGlm
aWVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmllci5jcHAJKHJldmlzaW9uIDI4NjA5
NSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1l
ZFNldHRlcldpdGhJZGVudGlmaWVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzIsNyArNzIsNyBA
QCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6
Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFC
TEUoSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmllclByb3RvdHlwZSwgQmFzZSk7Ci0gICAg
ICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFp
bk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRl
U3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAtMzMxLDkgKzMzMSw5IEBAIEpTQzo6
SXNvU3Vic3BhY2UqIEpTVGVzdE5hbWVkU2V0dGVyV2l0aEkKICAgICAgICAgcmV0dXJuIHNwYWNl
OwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJs
ZU9iamVjdCwgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmllcj4gfHwgIUpTVGVzdE5hbWVk
U2V0dGVyV2l0aElkZW50aWZpZXI6Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhw
ciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0TmFt
ZWRTZXR0ZXJXaXRoSWRlbnRpZmllcj4pCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVz
dE5hbWVkU2V0dGVyV2l0aElkZW50aWZpZXIgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09f
U1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBl
LCBKU1Rlc3ROYW1lZFNldHRlcldpdGhJZGVudGlmaWVyKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vi
c3BhY2VGb3JUZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmllciA9IG1ha2VVbmlxdWU8SXNvU3Vi
c3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhl
YXBDZWxsVHlwZSgpLCBKU1Rlc3ROYW1lZFNldHRlcldpdGhJZGVudGlmaWVyKTsKICAgICBlbHNl
Ci0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkU2V0dGVyV2l0aElkZW50aWZp
ZXIgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAq
dm0uY2VsbEhlYXBDZWxsVHlwZSwgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmllcik7Cisg
ICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkU2V0dGVyV2l0aElkZW50aWZpZXIg
PSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5j
ZWxsSGVhcENlbGxUeXBlKCksIEpTVGVzdE5hbWVkU2V0dGVyV2l0aElkZW50aWZpZXIpOwogICAg
IGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRTZXR0ZXJXaXRoSWRl
bnRpZmllci5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIp
CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldp
dGhJbmRleGVkR2V0dGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlci5jcHAJ
KHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNzUsNyArNzUsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2Uq
IHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9J
U09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlclBy
b3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAg
ICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBK
U0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAt
Mzc4LDkgKzM3OCw5IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdE5hbWVkU2V0dGVyV2l0aEkK
ICAgICAgICAgcmV0dXJuIHNwYWNlOwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29m
X3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhl
ZEdldHRlcj4gfHwgIUpTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXI6Om5lZWRzRGVz
dHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rl
c3RydWN0aWJsZU9iamVjdCwgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlcj4pCi0g
ICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0
ZXIgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAq
dm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLCBKU1Rlc3ROYW1lZFNldHRlcldpdGhJ
bmRleGVkR2V0dGVyKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRTZXR0
ZXJXaXRoSW5kZXhlZEdldHRlciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFD
RV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBKU1Rl
c3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyKTsKICAgICBlbHNlCi0gICAgICAgIHNwYWNl
cy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXIgPSBtYWtlVW5p
cXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uY2VsbEhlYXBD
ZWxsVHlwZSwgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlcik7CisgICAgICAgIHNw
YWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXIgPSBtYWtl
VW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVh
cENlbGxUeXBlKCksIEpTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXIpOwogICAgIGF1
dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhl
ZEdldHRlci5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIp
CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldp
dGhJbmRleGVkR2V0dGVyQW5kU2V0dGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdl
dHRlckFuZFNldHRlci5jcHAJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVy
QW5kU2V0dGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzUsNyArNzUsNyBAQCBwdWJsaWM6CiAg
ICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAg
IHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0TmFt
ZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlckFuZFNldHRlclByb3RvdHlwZSwgQmFzZSk7Ci0gICAg
ICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFp
bk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRl
U3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAtNDI4LDkgKzQyOCw5IEBAIEpTQzo6
SXNvU3Vic3BhY2UqIEpTVGVzdE5hbWVkU2V0dGVyV2l0aEkKICAgICAgICAgcmV0dXJuIHNwYWNl
OwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJs
ZU9iamVjdCwgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlckFuZFNldHRlcj4gfHwg
IUpTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0ZXI6Om5lZWRzRGVzdHJ1
Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3Ry
dWN0aWJsZU9iamVjdCwgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlckFuZFNldHRl
cj4pCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4
ZWRHZXR0ZXJBbmRTZXR0ZXIgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0Vf
SU5JVCh2bS5oZWFwLCAqdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLCBKU1Rlc3RO
YW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQW5kU2V0dGVyKTsKKyAgICAgICAgc3BhY2VzLm1f
c3Vic3BhY2VGb3JUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlckFuZFNldHRlciA9IG1h
a2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3Ry
dWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVk
R2V0dGVyQW5kU2V0dGVyKTsKICAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9y
VGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0ZXIgPSBtYWtlVW5pcXVlPElz
b1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uY2VsbEhlYXBDZWxsVHlw
ZSwgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlckFuZFNldHRlcik7CisgICAgICAg
IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRT
ZXR0ZXIgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFw
LCB2bS5jZWxsSGVhcENlbGxUeXBlKCksIEpTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0
ZXJBbmRTZXR0ZXIpOwogICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0
TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlckFuZFNldHRlci5nZXQoKTsKIElHTk9SRV9XQVJO
SU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRh
dXRvbG9naWNhbC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lPdmVycmlkZUJ1aWx0SW5zLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5T3ZlcnJpZGVCdWlsdElucy5jcHAJKHJldmlzaW9u
IDI4NjA5NSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3ROYW1lZFNldHRlcldpdGhMZWdhY3lPdmVycmlkZUJ1aWx0SW5zLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNjUsNyArNjUsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2Uq
IHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9J
U09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5T3ZlcnJpZGVC
dWlsdEluc1Byb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RT
cGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAg
IHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6
OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAg
ICAgewpAQCAtMjc3LDkgKzI3Nyw5IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdE5hbWVkU2V0
dGVyV2l0aEwKICAgICAgICAgcmV0dXJuIHNwYWNlOwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjpp
c19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0TmFtZWRTZXR0ZXJX
aXRoTGVnYWN5T3ZlcnJpZGVCdWlsdElucz4gfHwgIUpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2Fj
eU92ZXJyaWRlQnVpbHRJbnM6Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhwciAo
c3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0TmFtZWRT
ZXR0ZXJXaXRoTGVnYWN5T3ZlcnJpZGVCdWlsdElucz4pCi0gICAgICAgIHNwYWNlcy5tX3N1YnNw
YWNlRm9yVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMgPSBtYWtlVW5p
cXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uZGVzdHJ1Y3Rp
YmxlT2JqZWN0SGVhcENlbGxUeXBlLCBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lPdmVycmlk
ZUJ1aWx0SW5zKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRTZXR0ZXJX
aXRoTGVnYWN5T3ZlcnJpZGVCdWlsdElucyA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19T
VUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgp
LCBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lPdmVycmlkZUJ1aWx0SW5zKTsKICAgICBlbHNl
Ci0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeU92
ZXJyaWRlQnVpbHRJbnMgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5J
VCh2bS5oZWFwLCAqdm0uY2VsbEhlYXBDZWxsVHlwZSwgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVn
YWN5T3ZlcnJpZGVCdWlsdElucyk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5h
bWVkU2V0dGVyV2l0aExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMgPSBtYWtlVW5pcXVlPElzb1N1YnNw
YWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCksIEpT
VGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMpOwogICAgIGF1dG8qIHNw
YWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5T3ZlcnJp
ZGVCdWlsdElucy5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29k
ZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRl
cldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXMuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhM
ZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXMuY3BwCShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRo
TGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzQsNyAr
NzQsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9y
KEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0Vf
U0hBUkFCTEUoSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVz
UHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOwor
ICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGlj
IEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBA
IC0zNjEsOSArMzYxLDkgQEAgSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0TmFtZWRTZXR0ZXJXaXRo
TAogICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vf
b2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdh
Y3lVbmZvcmdlYWJsZVByb3BlcnRpZXM+IHx8ICFKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lV
bmZvcmdlYWJsZVByb3BlcnRpZXM6Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhw
ciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0TmFt
ZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzPikKLSAgICAgICAgc3BhY2Vz
Lm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0
aWVzID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwg
KnZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSwgSlNUZXN0TmFtZWRTZXR0ZXJXaXRo
TGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VG
b3JUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzID0gbWFrZVVu
aXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3Rp
YmxlT2JqZWN0SGVhcENlbGxUeXBlKCksIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9y
Z2VhYmxlUHJvcGVydGllcyk7CiAgICAgZWxzZQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZv
clRlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXMgPSBtYWtlVW5p
cXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uY2VsbEhlYXBD
ZWxsVHlwZSwgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVz
KTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5
VW5mb3JnZWFibGVQcm9wZXJ0aWVzID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQ
QUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3ROYW1lZFNldHRl
cldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXMpOwogICAgIGF1dG8qIHNwYWNlID0gc3Bh
Y2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9w
ZXJ0aWVzLmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikK
IElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRleDogU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0
aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lP
dmVycmlkZUJ1aWx0SW5zLmNwcAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9y
Z2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC03NCw3ICs3NCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFj
ZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJU
X0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdl
YWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zUHJvdG90eXBlLCBCYXNlKTsK
LSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZt
LnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBj
cmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC0zMzgsOSArMzM4LDkgQEAg
SlNDOjpJc29TdWJzcGFjZSogSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTAogICAgICAgICByZXR1cm4g
c3BhY2U7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1
Y3RpYmxlT2JqZWN0LCBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3Bl
cnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zPiB8fCAhSlNUZXN0TmFtZWRTZXR0ZXJXaXRo
TGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdEluczo6bmVl
ZHNEZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6
OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdl
YWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zPikKLSAgICAgICAgc3BhY2Vz
Lm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0
aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdElucyA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElT
T19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5
cGUsIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExl
Z2FjeU92ZXJyaWRlQnVpbHRJbnMpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RO
YW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlk
ZUJ1aWx0SW5zID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0u
aGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCksIEpTVGVzdE5hbWVkU2V0
dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJ
bnMpOwogICAgIGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRTZXR0
ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdElu
cyA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2
bS5jZWxsSGVhcENlbGxUeXBlLCBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJs
ZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zKTsKKyAgICAgICAgc3BhY2VzLm1f
c3Vic3BhY2VGb3JUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVz
QW5kTGVnYWN5T3ZlcnJpZGVCdWlsdElucyA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19T
VUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0TmFtZWRT
ZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWls
dElucyk7CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZFNl
dHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0
SW5zLmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKIElH
Tk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRleDogU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVzcGFjZU9iamVjdC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdE5hbWVzcGFjZU9iamVjdC5jcHAJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lc3BhY2VPYmplY3QuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0yODAsOSArMjgwLDkgQEAgSlNDOjpJc29TdWJzcGFjZSogSlNU
ZXN0TmFtZXNwYWNlT2JqZWN0OgogICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fz
c2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RO
YW1lc3BhY2VPYmplY3Q+IHx8ICFKU1Rlc3ROYW1lc3BhY2VPYmplY3Q6Om5lZWRzRGVzdHJ1Y3Rp
b24pOwogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0
aWJsZU9iamVjdCwgSlNUZXN0TmFtZXNwYWNlT2JqZWN0PikKLSAgICAgICAgc3BhY2VzLm1fc3Vi
c3BhY2VGb3JUZXN0TmFtZXNwYWNlT2JqZWN0ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNP
X1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlw
ZSwgSlNUZXN0TmFtZXNwYWNlT2JqZWN0KTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JU
ZXN0TmFtZXNwYWNlT2JqZWN0ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNF
X0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCksIEpTVGVz
dE5hbWVzcGFjZU9iamVjdCk7CiAgICAgZWxzZQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZv
clRlc3ROYW1lc3BhY2VPYmplY3QgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BB
Q0VfSU5JVCh2bS5oZWFwLCAqdm0uY2VsbEhlYXBDZWxsVHlwZSwgSlNUZXN0TmFtZXNwYWNlT2Jq
ZWN0KTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZXNwYWNlT2JqZWN0ID0g
bWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2Vs
bEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3ROYW1lc3BhY2VPYmplY3QpOwogICAgIGF1dG8qIHNwYWNl
ID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZXNwYWNlT2JqZWN0LmdldCgpOwogSUdOT1JF
X1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKIElHTk9SRV9XQVJOSU5HU19CRUdJ
TigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5vZGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROb2RlLmNwcAkocmV2aXNpb24gMjg2
MDk1KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5v
ZGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05NSw3ICs5NSw3IEBAIHB1YmxpYzoKICAgICBzdGF0
aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAg
ICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3ROb2RlUHJvdG90
eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAg
ICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6
U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC00MDUs
OSArNDA1LDkgQEAgcHVibGljOgogICAgICAgICAgICAgcmV0dXJuIHNwYWNlOwogICAgICAgICBz
dGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3Qs
IFRlc3ROb2RlSXRlcmF0b3I+IHx8ICFUZXN0Tm9kZUl0ZXJhdG9yOjpuZWVkc0Rlc3RydWN0aW9u
KTsKICAgICAgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1
Y3RpYmxlT2JqZWN0LCBUZXN0Tm9kZUl0ZXJhdG9yPikKLSAgICAgICAgICAgIHNwYWNlcy5tX3N1
YnNwYWNlRm9yVGVzdE5vZGVJdGVyYXRvciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19T
VUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUu
Z2V0KCksIFRlc3ROb2RlSXRlcmF0b3IpOworICAgICAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VG
b3JUZXN0Tm9kZUl0ZXJhdG9yID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNF
X0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCksIFRlc3RO
b2RlSXRlcmF0b3IpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBzcGFjZXMubV9zdWJzcGFj
ZUZvclRlc3ROb2RlSXRlcmF0b3IgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BB
Q0VfSU5JVCh2bS5oZWFwLCAqdm0uY2VsbEhlYXBDZWxsVHlwZSwgVGVzdE5vZGVJdGVyYXRvcik7
CisgICAgICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROb2RlSXRlcmF0b3IgPSBtYWtl
VW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVh
cENlbGxUeXBlKCksIFRlc3ROb2RlSXRlcmF0b3IpOwogICAgICAgICBhdXRvKiBzcGFjZSA9IHNw
YWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5vZGVJdGVyYXRvci5nZXQoKTsKIElHTk9SRV9XQVJOSU5H
U19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRv
bG9naWNhbC1jb21wYXJlIikKQEAgLTQ5Nyw5ICs0OTcsOSBAQCBKU0M6Oklzb1N1YnNwYWNlKiBK
U1Rlc3ROb2RlOjpzdWJzcGFjZUZvCiAgICAgICAgIHJldHVybiBzcGFjZTsKICAgICBzdGF0aWNf
YXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVz
dE5vZGU+IHx8ICFKU1Rlc3ROb2RlOjpuZWVkc0Rlc3RydWN0aW9uKTsKICAgICBpZiBjb25zdGV4
cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdE5v
ZGU+KQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROb2RlID0gbWFrZVVuaXF1ZTxJ
c29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmRlc3RydWN0aWJsZU9i
amVjdEhlYXBDZWxsVHlwZSwgSlNUZXN0Tm9kZSk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNl
Rm9yVGVzdE5vZGUgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2
bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0Tm9kZSk7
CiAgICAgZWxzZQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROb2RlID0gbWFrZVVu
aXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmNlbGxIZWFw
Q2VsbFR5cGUsIEpTVGVzdE5vZGUpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RO
b2RlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwg
dm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3ROb2RlKTsKICAgICBhdXRvKiBzcGFjZSA9IHNw
YWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5vZGUuZ2V0KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4o
InVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwt
Y29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0T2JqLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTE4NjYsNyArMTg2Niw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJz
cGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNT
RVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3RPYmpQcm90b3R5cGUsIEJhc2UpOwotICAg
ICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxh
aW5PYmplY3RTcGFjZSgpOwogICAgIH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0
ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKQEAgLTkwMDYsOSArOTAwNiw5IEBAIEpT
Qzo6SXNvU3Vic3BhY2UqIEpTVGVzdE9iajo6c3Vic3BhY2VGb3IKICAgICAgICAgcmV0dXJuIHNw
YWNlOwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0
aWJsZU9iamVjdCwgSlNUZXN0T2JqPiB8fCAhSlNUZXN0T2JqOjpuZWVkc0Rlc3RydWN0aW9uKTsK
ICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVP
YmplY3QsIEpTVGVzdE9iaj4pCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE9iaiA9
IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5k
ZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUsIEpTVGVzdE9iaik7CisgICAgICAgIHNwYWNl
cy5tX3N1YnNwYWNlRm9yVGVzdE9iaiA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJT
UEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBK
U1Rlc3RPYmopOwogICAgIGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0T2Jq
ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZt
LmNlbGxIZWFwQ2VsbFR5cGUsIEpTVGVzdE9iaik7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNl
Rm9yVGVzdE9iaiA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZt
LmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0T2JqKTsKICAgICBhdXRvKiBzcGFj
ZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE9iai5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19C
RUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9n
aWNhbC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RPcGVyYXRpb25Db25kaXRpb25hbC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9wZXJhdGlvbkNvbmRpdGlv
bmFsLmNwcAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdE9wZXJhdGlvbkNvbmRpdGlvbmFsLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtODEsNyArODEsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2Uq
IHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9J
U09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0T3BlcmF0aW9uQ29uZGl0aW9uYWxQcm90b3R5cGUs
IEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJl
dHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1
Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKQEAgLTIzNCw5ICsy
MzQsOSBAQCBKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3RPcGVyYXRpb25Db25kaXRpCiAgICAgICAg
IHJldHVybiBzcGFjZTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6
SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdE9wZXJhdGlvbkNvbmRpdGlvbmFsPiB8fCAhSlNU
ZXN0T3BlcmF0aW9uQ29uZGl0aW9uYWw6Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0
ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0
T3BlcmF0aW9uQ29uZGl0aW9uYWw+KQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RP
cGVyYXRpb25Db25kaXRpb25hbCA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFD
RV9JTklUKHZtLmhlYXAsICp2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUsIEpTVGVz
dE9wZXJhdGlvbkNvbmRpdGlvbmFsKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0
T3BlcmF0aW9uQ29uZGl0aW9uYWwgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BB
Q0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwgSlNU
ZXN0T3BlcmF0aW9uQ29uZGl0aW9uYWwpOwogICAgIGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vi
c3BhY2VGb3JUZXN0T3BlcmF0aW9uQ29uZGl0aW9uYWwgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNl
PiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uY2VsbEhlYXBDZWxsVHlwZSwgSlNUZXN0
T3BlcmF0aW9uQ29uZGl0aW9uYWwpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RP
cGVyYXRpb25Db25kaXRpb25hbCA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFD
RV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0T3BlcmF0aW9uQ29u
ZGl0aW9uYWwpOwogICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0T3Bl
cmF0aW9uQ29uZGl0aW9uYWwuZ2V0KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hh
YmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIp
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3Zl
cmxvYWRlZENvbnN0cnVjdG9ycy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuY3BwCShy
ZXZpc2lvbiAyODYwOTUpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY5
LDcgKzY5LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFj
ZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQ
QUNFX1NIQVJBQkxFKEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNQcm90b3R5cGUsIEJhc2Up
OwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAm
dm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUq
IGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKQEAgLTI5NSw5ICsyOTUsOSBA
QCBKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3RPdmVybG9hZGVkQ29uc3RyCiAgICAgICAgIHJldHVy
biBzcGFjZTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0
cnVjdGlibGVPYmplY3QsIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM+IHx8ICFKU1Rlc3RP
dmVybG9hZGVkQ29uc3RydWN0b3JzOjpuZWVkc0Rlc3RydWN0aW9uKTsKICAgICBpZiBjb25zdGV4
cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdE92
ZXJsb2FkZWRDb25zdHJ1Y3RvcnM+KQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RP
dmVybG9hZGVkQ29uc3RydWN0b3JzID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQ
QUNFX0lOSVQodm0uaGVhcCwgKnZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSwgSlNU
ZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9y
VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09f
U1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUo
KSwgSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyk7CiAgICAgZWxzZQotICAgICAgICBzcGFj
ZXMubV9zdWJzcGFjZUZvclRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzID0gbWFrZVVuaXF1ZTxJ
c29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmNlbGxIZWFwQ2VsbFR5
cGUsIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMpOworICAgICAgICBzcGFjZXMubV9zdWJz
cGFjZUZvclRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFj
ZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU1Rl
c3RPdmVybG9hZGVkQ29uc3RydWN0b3JzKTsKICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1
YnNwYWNlRm9yVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuZ2V0KCk7CiBJR05PUkVfV0FSTklO
R1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0
b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5jZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2UuY3BwCShyZXZpc2lvbiAyODYwOTUp
CisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3Zlcmxv
YWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5jZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY4LDcg
KzY4LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZv
cihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNF
X1NIQVJBQkxFKEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2VQcm90b3R5
cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAg
IHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KICAgICBzdGF0aWMgSlNDOjpT
dHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKQEAgLTIzOCw5
ICsyMzgsOSBAQCBKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3RPdmVybG9hZGVkQ29uc3RyCiAgICAg
ICAgIHJldHVybiBzcGFjZTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpT
Qzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRo
U2VxdWVuY2U+IHx8ICFKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzV2l0aFNlcXVlbmNlOjpu
ZWVkc0Rlc3RydWN0aW9uKTsKICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpT
Qzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRo
U2VxdWVuY2U+KQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RPdmVybG9hZGVkQ29u
c3RydWN0b3JzV2l0aFNlcXVlbmNlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQ
QUNFX0lOSVQodm0uaGVhcCwgKnZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSwgSlNU
ZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5jZSk7CisgICAgICAgIHNwYWNlcy5t
X3N1YnNwYWNlRm9yVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2UgPSBtYWtl
VW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVj
dGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dp
dGhTZXF1ZW5jZSk7CiAgICAgZWxzZQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RP
dmVybG9hZGVkQ29uc3RydWN0b3JzV2l0aFNlcXVlbmNlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFj
ZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmNlbGxIZWFwQ2VsbFR5cGUsIEpTVGVz
dE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2UpOworICAgICAgICBzcGFjZXMubV9z
dWJzcGFjZUZvclRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzV2l0aFNlcXVlbmNlID0gbWFrZVVu
aXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBD
ZWxsVHlwZSgpLCBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzV2l0aFNlcXVlbmNlKTsKICAg
ICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE92ZXJsb2FkZWRDb25zdHJ1
Y3RvcnNXaXRoU2VxdWVuY2UuZ2V0KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hh
YmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIp
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0UGx1
Z2luSW50ZXJmYWNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0UGx1Z2luSW50ZXJmYWNlLmNwcAkocmV2aXNpb24gMjg2MDk1
KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFBsdWdp
bkludGVyZmFjZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY0LDcgKzY0LDcgQEAgcHVibGljOgog
ICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKICAg
ICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdFBs
dWdpbkludGVyZmFjZVByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5P
YmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAg
fQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZt
LCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5
cGUpCiAgICAgewpAQCAtMjQ0LDkgKzI0NCw5IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdFBs
dWdpbkludGVyZmFjZToKICAgICAgICAgcmV0dXJuIHNwYWNlOwogICAgIHN0YXRpY19hc3NlcnQo
c3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0UGx1Z2lu
SW50ZXJmYWNlPiB8fCAhSlNUZXN0UGx1Z2luSW50ZXJmYWNlOjpuZWVkc0Rlc3RydWN0aW9uKTsK
ICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVP
YmplY3QsIEpTVGVzdFBsdWdpbkludGVyZmFjZT4pCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNl
Rm9yVGVzdFBsdWdpbkludGVyZmFjZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJT
UEFDRV9JTklUKHZtLmhlYXAsICp2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUsIEpT
VGVzdFBsdWdpbkludGVyZmFjZSk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFBs
dWdpbkludGVyZmFjZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklU
KHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RQbHVn
aW5JbnRlcmZhY2UpOwogICAgIGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0
UGx1Z2luSW50ZXJmYWNlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lO
SVQodm0uaGVhcCwgKnZtLmNlbGxIZWFwQ2VsbFR5cGUsIEpTVGVzdFBsdWdpbkludGVyZmFjZSk7
CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFBsdWdpbkludGVyZmFjZSA9IG1ha2VV
bmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFw
Q2VsbFR5cGUoKSwgSlNUZXN0UGx1Z2luSW50ZXJmYWNlKTsKICAgICBhdXRvKiBzcGFjZSA9IHNw
YWNlcy5tX3N1YnNwYWNlRm9yVGVzdFBsdWdpbkludGVyZmFjZS5nZXQoKTsKIElHTk9SRV9XQVJO
SU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRh
dXRvbG9naWNhbC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RQcm9taXNlUmVq
ZWN0aW9uRXZlbnQuY3BwCShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTQ4LDcgKzE0OCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJ
c29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFU
SUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZl
bnRQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7
CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KICAgICBzdGF0
aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsK
QEAgLTMwMSw5ICszMDEsOSBAQCBKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3RQcm9taXNlUmVqZWN0
aW9uCiAgICAgICAgIHJldHVybiBzcGFjZTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFz
ZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdFByb21pc2VSZWplY3Rpb25F
dmVudD4gfHwgIUpTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudDo6bmVlZHNEZXN0cnVjdGlvbik7
CiAgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxl
T2JqZWN0LCBKU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQ+KQotICAgICAgICBzcGFjZXMubV9z
dWJzcGFjZUZvclRlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQgPSBtYWtlVW5pcXVlPElzb1N1YnNw
YWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVh
cENlbGxUeXBlLCBKU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQpOworICAgICAgICBzcGFjZXMu
bV9zdWJzcGFjZUZvclRlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQgPSBtYWtlVW5pcXVlPElzb1N1
YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RI
ZWFwQ2VsbFR5cGUoKSwgSlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50KTsKICAgICBlbHNlCi0g
ICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFByb21pc2VSZWplY3Rpb25FdmVudCA9IG1h
a2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5jZWxs
SGVhcENlbGxUeXBlLCBKU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQpOworICAgICAgICBzcGFj
ZXMubV9zdWJzcGFjZUZvclRlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQgPSBtYWtlVW5pcXVlPElz
b1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBl
KCksIEpTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudCk7CiAgICAgYXV0byogc3BhY2UgPSBzcGFj
ZXMubV9zdWJzcGFjZUZvclRlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQuZ2V0KCk7CiBJR05PUkVf
V0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lO
KCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0UmVhZE9ubHlNYXBMaWtlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0UmVhZE9ubHlNYXBM
aWtlLmNwcAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdFJlYWRPbmx5TWFwTGlrZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTc5LDcgKzc5LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJz
cGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NV
QlNQQUNFX1NIQVJBQkxFKEpTVGVzdFJlYWRPbmx5TWFwTGlrZVByb3RvdHlwZSwgQmFzZSk7Ci0g
ICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5w
bGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3Jl
YXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAtMzA1LDkgKzMwNSw5IEBAIEpT
Qzo6SXNvU3Vic3BhY2UqIEpTVGVzdFJlYWRPbmx5TWFwTGlrZToKICAgICAgICAgcmV0dXJuIHNw
YWNlOwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0
aWJsZU9iamVjdCwgSlNUZXN0UmVhZE9ubHlNYXBMaWtlPiB8fCAhSlNUZXN0UmVhZE9ubHlNYXBM
aWtlOjpuZWVkc0Rlc3RydWN0aW9uKTsKICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9v
Zl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdFJlYWRPbmx5TWFwTGlrZT4pCi0g
ICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFJlYWRPbmx5TWFwTGlrZSA9IG1ha2VVbmlx
dWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5kZXN0cnVjdGli
bGVPYmplY3RIZWFwQ2VsbFR5cGUsIEpTVGVzdFJlYWRPbmx5TWFwTGlrZSk7CisgICAgICAgIHNw
YWNlcy5tX3N1YnNwYWNlRm9yVGVzdFJlYWRPbmx5TWFwTGlrZSA9IG1ha2VVbmlxdWU8SXNvU3Vi
c3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhl
YXBDZWxsVHlwZSgpLCBKU1Rlc3RSZWFkT25seU1hcExpa2UpOwogICAgIGVsc2UKLSAgICAgICAg
c3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0UmVhZE9ubHlNYXBMaWtlID0gbWFrZVVuaXF1ZTxJc29T
dWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmNlbGxIZWFwQ2VsbFR5cGUs
IEpTVGVzdFJlYWRPbmx5TWFwTGlrZSk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVz
dFJlYWRPbmx5TWFwTGlrZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9J
TklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0UmVhZE9ubHlNYXBMaWtl
KTsKICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFJlYWRPbmx5TWFw
TGlrZS5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJ
R05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RSZWFkT25seVNldExpa2Uu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RSZWFkT25seVNldExpa2UuY3BwCShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0UmVhZE9ubHlTZXRMaWtlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNzgsNyArNzgsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpT
Qzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAg
U1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0UmVhZE9ubHlTZXRMaWtl
UHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOwor
ICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGlj
IEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBA
IC0yODQsOSArMjg0LDkgQEAgSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0UmVhZE9ubHlTZXRMaWtl
OgogICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vf
b2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RSZWFkT25seVNldExpa2U+IHx8
ICFKU1Rlc3RSZWFkT25seVNldExpa2U6Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0
ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0
UmVhZE9ubHlTZXRMaWtlPikKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0UmVhZE9u
bHlTZXRMaWtlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0u
aGVhcCwgKnZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSwgSlNUZXN0UmVhZE9ubHlT
ZXRMaWtlKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0UmVhZE9ubHlTZXRMaWtl
ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0u
ZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCksIEpTVGVzdFJlYWRPbmx5U2V0TGlrZSk7
CiAgICAgZWxzZQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RSZWFkT25seVNldExp
a2UgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAq
dm0uY2VsbEhlYXBDZWxsVHlwZSwgSlNUZXN0UmVhZE9ubHlTZXRMaWtlKTsKKyAgICAgICAgc3Bh
Y2VzLm1fc3Vic3BhY2VGb3JUZXN0UmVhZE9ubHlTZXRMaWtlID0gbWFrZVVuaXF1ZTxJc29TdWJz
cGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBK
U1Rlc3RSZWFkT25seVNldExpa2UpOwogICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3Bh
Y2VGb3JUZXN0UmVhZE9ubHlTZXRMaWtlLmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1
bnJlYWNoYWJsZS1jb2RlIikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNv
bXBhcmUiKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdFJlcG9ydEV4dHJhTWVtb3J5Q29zdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFJlcG9ydEV4dHJhTWVtb3J5Q29zdC5j
cHAJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RSZXBvcnRFeHRyYU1lbW9yeUNvc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC02Myw3ICs2Myw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vi
c3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19T
VUJTUEFDRV9TSEFSQUJMRShKU1Rlc3RSZXBvcnRFeHRyYU1lbW9yeUNvc3RQcm90b3R5cGUsIEJh
c2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVy
biAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1
cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKQEAgLTE3MSw5ICsxNzEs
OSBAQCBKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3RSZXBvcnRFeHRyYU1lbW9yCiAgICAgICAgIHJl
dHVybiBzcGFjZTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNE
ZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdFJlcG9ydEV4dHJhTWVtb3J5Q29zdD4gfHwgIUpTVGVz
dFJlcG9ydEV4dHJhTWVtb3J5Q29zdDo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3Rl
eHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RS
ZXBvcnRFeHRyYU1lbW9yeUNvc3Q+KQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RS
ZXBvcnRFeHRyYU1lbW9yeUNvc3QgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BB
Q0VfSU5JVCh2bS5oZWFwLCAqdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLCBKU1Rl
c3RSZXBvcnRFeHRyYU1lbW9yeUNvc3QpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRl
c3RSZXBvcnRFeHRyYU1lbW9yeUNvc3QgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VC
U1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwg
SlNUZXN0UmVwb3J0RXh0cmFNZW1vcnlDb3N0KTsKICAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5t
X3N1YnNwYWNlRm9yVGVzdFJlcG9ydEV4dHJhTWVtb3J5Q29zdCA9IG1ha2VVbmlxdWU8SXNvU3Vi
c3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5jZWxsSGVhcENlbGxUeXBlLCBK
U1Rlc3RSZXBvcnRFeHRyYU1lbW9yeUNvc3QpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZv
clRlc3RSZXBvcnRFeHRyYU1lbW9yeUNvc3QgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09f
U1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCksIEpTVGVzdFJlcG9y
dEV4dHJhTWVtb3J5Q29zdCk7CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZv
clRlc3RSZXBvcnRFeHRyYU1lbW9yeUNvc3QuZ2V0KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4o
InVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwt
Y29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXplZFNj
cmlwdFZhbHVlSW50ZXJmYWNlLmNwcAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUlu
dGVyZmFjZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg5LDcgKzg5LDcgQEAgcHVibGljOgogICAg
IHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7
CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVy
biAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNw
YWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJl
KEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNW
YWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAtMzQ5LDkgKzM0OSw5IEBAIEpTQzo6SXNvU3Vic3Bh
Y2UqIEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHQKICAgICAgICAgcmV0dXJuIHNwYWNlOwogICAgIHN0
YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwg
SlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlPiB8fCAhSlNUZXN0U2VyaWFsaXpl
ZFNjcmlwdFZhbHVlSW50ZXJmYWNlOjpuZWVkc0Rlc3RydWN0aW9uKTsKICAgICBpZiBjb25zdGV4
cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZT4pCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNl
Rm9yVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSA9IG1ha2VVbmlxdWU8SXNvU3Vi
c3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5kZXN0cnVjdGlibGVPYmplY3RI
ZWFwQ2VsbFR5cGUsIEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSk7CisgICAg
ICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFj
ZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZt
LmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RTZXJpYWxpemVkU2NyaXB0
VmFsdWVJbnRlcmZhY2UpOwogICAgIGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JU
ZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFj
ZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmNlbGxIZWFwQ2VsbFR5cGUsIEpTVGVz
dFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNw
YWNlRm9yVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSA9IG1ha2VVbmlxdWU8SXNv
U3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUo
KSwgSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlKTsKICAgICBhdXRvKiBzcGFj
ZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFj
ZS5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJR05P
UkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXRMaWtlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2V0
TGlrZS5jcHAJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXRMaWtlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODEsNyAr
ODEsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9y
KEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0Vf
U0hBUkFCTEUoSlNUZXN0U2V0TGlrZVByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAm
dm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNl
KCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpT
Qzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1
ZSBwcm90b3R5cGUpCiAgICAgewpAQCAtMzQyLDkgKzM0Miw5IEBAIEpTQzo6SXNvU3Vic3BhY2Uq
IEpTVGVzdFNldExpa2U6OnN1YnNwYWMKICAgICAgICAgcmV0dXJuIHNwYWNlOwogICAgIHN0YXRp
Y19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNU
ZXN0U2V0TGlrZT4gfHwgIUpTVGVzdFNldExpa2U6Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlm
IGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwg
SlNUZXN0U2V0TGlrZT4pCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFNldExpa2Ug
PSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0u
ZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLCBKU1Rlc3RTZXRMaWtlKTsKKyAgICAgICAg
c3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0U2V0TGlrZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+
IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxs
VHlwZSgpLCBKU1Rlc3RTZXRMaWtlKTsKICAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNw
YWNlRm9yVGVzdFNldExpa2UgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0Vf
SU5JVCh2bS5oZWFwLCAqdm0uY2VsbEhlYXBDZWxsVHlwZSwgSlNUZXN0U2V0TGlrZSk7CisgICAg
ICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFNldExpa2UgPSBtYWtlVW5pcXVlPElzb1N1YnNw
YWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCksIEpT
VGVzdFNldExpa2UpOwogICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0
U2V0TGlrZS5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIp
CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXRMaWtlV2l0aE92
ZXJyaWRkZW5PcGVyYXRpb25zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2V0TGlrZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9u
cy5jcHAJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RTZXRMaWtlV2l0aE92ZXJyaWRkZW5PcGVyYXRpb25zLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtODUsNyArODUsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNv
U3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElD
X0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0U2V0TGlrZVdpdGhPdmVycmlkZGVu
T3BlcmF0aW9uc1Byb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmpl
Y3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQog
ICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBK
U0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUp
CiAgICAgewpAQCAtMzU0LDkgKzM1NCw5IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdFNldExp
a2VXaXRoT3ZlcnIKICAgICAgICAgcmV0dXJuIHNwYWNlOwogICAgIHN0YXRpY19hc3NlcnQoc3Rk
Ojppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0U2V0TGlrZVdp
dGhPdmVycmlkZGVuT3BlcmF0aW9ucz4gfHwgIUpTVGVzdFNldExpa2VXaXRoT3ZlcnJpZGRlbk9w
ZXJhdGlvbnM6Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19i
YXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0U2V0TGlrZVdpdGhPdmVy
cmlkZGVuT3BlcmF0aW9ucz4pCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFNldExp
a2VXaXRoT3ZlcnJpZGRlbk9wZXJhdGlvbnMgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09f
U1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBl
LCBKU1Rlc3RTZXRMaWtlV2l0aE92ZXJyaWRkZW5PcGVyYXRpb25zKTsKKyAgICAgICAgc3BhY2Vz
Lm1fc3Vic3BhY2VGb3JUZXN0U2V0TGlrZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9ucyA9IG1ha2VV
bmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0
aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RTZXRMaWtlV2l0aE92ZXJyaWRkZW5PcGVy
YXRpb25zKTsKICAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFNldExp
a2VXaXRoT3ZlcnJpZGRlbk9wZXJhdGlvbnMgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09f
U1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uY2VsbEhlYXBDZWxsVHlwZSwgSlNUZXN0U2V0TGlr
ZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9ucyk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9y
VGVzdFNldExpa2VXaXRoT3ZlcnJpZGRlbk9wZXJhdGlvbnMgPSBtYWtlVW5pcXVlPElzb1N1YnNw
YWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCksIEpT
VGVzdFNldExpa2VXaXRoT3ZlcnJpZGRlbk9wZXJhdGlvbnMpOwogICAgIGF1dG8qIHNwYWNlID0g
c3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0U2V0TGlrZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9ucy5n
ZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVf
V0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0
cmluZ2lmaWVyLmNwcAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNjksNyArNjksNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1
YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09f
U1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0U3RyaW5naWZpZXJQcm90b3R5cGUsIEJhc2UpOwotICAg
ICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxh
aW5PYmplY3RTcGFjZSgpOwogICAgIH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0
ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKQEAgLTE5Miw5ICsxOTIsOSBAQCBKU0M6
Oklzb1N1YnNwYWNlKiBKU1Rlc3RTdHJpbmdpZmllcjo6c3ViCiAgICAgICAgIHJldHVybiBzcGFj
ZTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGli
bGVPYmplY3QsIEpTVGVzdFN0cmluZ2lmaWVyPiB8fCAhSlNUZXN0U3RyaW5naWZpZXI6Om5lZWRz
RGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpK
U0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0U3RyaW5naWZpZXI+KQotICAgICAgICBzcGFjZXMu
bV9zdWJzcGFjZUZvclRlc3RTdHJpbmdpZmllciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElT
T19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5
cGUsIEpTVGVzdFN0cmluZ2lmaWVyKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0
U3RyaW5naWZpZXIgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2
bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0U3RyaW5n
aWZpZXIpOwogICAgIGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0U3RyaW5n
aWZpZXIgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFw
LCAqdm0uY2VsbEhlYXBDZWxsVHlwZSwgSlNUZXN0U3RyaW5naWZpZXIpOworICAgICAgICBzcGFj
ZXMubV9zdWJzcGFjZUZvclRlc3RTdHJpbmdpZmllciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+
IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0
U3RyaW5naWZpZXIpOwogICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0
U3RyaW5naWZpZXIuZ2V0KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNv
ZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZp
ZXJBbm9ueW1vdXNPcGVyYXRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllckFub255bW91c09wZXJhdGlv
bi5jcHAJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllckFub255bW91c09wZXJhdGlvbi5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTY5LDcgKzY5LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1
YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19B
U1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdFN0cmluZ2lmaWVyQW5vbnltb3VzT3Bl
cmF0aW9uUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNw
YWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAg
c3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAg
ICB7CkBAIC0xOTIsOSArMTkyLDkgQEAgSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0U3RyaW5naWZp
ZXJBbm9ueQogICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6Omlz
X2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RTdHJpbmdpZmllckFu
b255bW91c09wZXJhdGlvbj4gfHwgIUpTVGVzdFN0cmluZ2lmaWVyQW5vbnltb3VzT3BlcmF0aW9u
OjpuZWVkc0Rlc3RydWN0aW9uKTsKICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92
PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdFN0cmluZ2lmaWVyQW5vbnltb3VzT3Bl
cmF0aW9uPikKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0U3RyaW5naWZpZXJBbm9u
eW1vdXNPcGVyYXRpb24gPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5J
VCh2bS5oZWFwLCAqdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLCBKU1Rlc3RTdHJp
bmdpZmllckFub255bW91c09wZXJhdGlvbik7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9y
VGVzdFN0cmluZ2lmaWVyQW5vbnltb3VzT3BlcmF0aW9uID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFj
ZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENl
bGxUeXBlKCksIEpTVGVzdFN0cmluZ2lmaWVyQW5vbnltb3VzT3BlcmF0aW9uKTsKICAgICBlbHNl
Ci0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFN0cmluZ2lmaWVyQW5vbnltb3VzT3Bl
cmF0aW9uID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVh
cCwgKnZtLmNlbGxIZWFwQ2VsbFR5cGUsIEpTVGVzdFN0cmluZ2lmaWVyQW5vbnltb3VzT3BlcmF0
aW9uKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0U3RyaW5naWZpZXJBbm9ueW1v
dXNPcGVyYXRpb24gPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2
bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCksIEpTVGVzdFN0cmluZ2lmaWVyQW5vbnltb3Vz
T3BlcmF0aW9uKTsKICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFN0
cmluZ2lmaWVyQW5vbnltb3VzT3BlcmF0aW9uLmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lO
KCJ1bnJlYWNoYWJsZS1jb2RlIikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2Fs
LWNvbXBhcmUiKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdFN0cmluZ2lmaWVyTmFtZWRPcGVyYXRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllck5hbWVk
T3BlcmF0aW9uLmNwcAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyTmFtZWRPcGVyYXRpb24uY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC03MCw3ICs3MCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJ
c29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFU
SUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3RTdHJpbmdpZmllck5hbWVkT3Bl
cmF0aW9uUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNw
YWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAg
c3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAg
ICB7CkBAIC0yMDksOSArMjA5LDkgQEAgSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0U3RyaW5naWZp
ZXJOYW1lZAogICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6Omlz
X2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RTdHJpbmdpZmllck5h
bWVkT3BlcmF0aW9uPiB8fCAhSlNUZXN0U3RyaW5naWZpZXJOYW1lZE9wZXJhdGlvbjo6bmVlZHNE
ZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpT
RGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RTdHJpbmdpZmllck5hbWVkT3BlcmF0aW9uPikKLSAg
ICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0U3RyaW5naWZpZXJOYW1lZE9wZXJhdGlvbiA9
IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5k
ZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUsIEpTVGVzdFN0cmluZ2lmaWVyTmFtZWRPcGVy
YXRpb24pOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RTdHJpbmdpZmllck5hbWVk
T3BlcmF0aW9uID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0u
aGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCksIEpTVGVzdFN0cmluZ2lm
aWVyTmFtZWRPcGVyYXRpb24pOwogICAgIGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VG
b3JUZXN0U3RyaW5naWZpZXJOYW1lZE9wZXJhdGlvbiA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+
IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5jZWxsSGVhcENlbGxUeXBlLCBKU1Rlc3RT
dHJpbmdpZmllck5hbWVkT3BlcmF0aW9uKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JU
ZXN0U3RyaW5naWZpZXJOYW1lZE9wZXJhdGlvbiA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElT
T19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0U3Ry
aW5naWZpZXJOYW1lZE9wZXJhdGlvbik7CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJz
cGFjZUZvclRlc3RTdHJpbmdpZmllck5hbWVkT3BlcmF0aW9uLmdldCgpOwogSUdOT1JFX1dBUk5J
TkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1
dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uSW1wbGVtZW50ZWRBcy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dFN0cmluZ2lmaWVyT3BlcmF0aW9uSW1wbGVtZW50ZWRBcy5jcHAJKHJldmlzaW9uIDI4NjA5NSkK
KysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdp
Zmllck9wZXJhdGlvbkltcGxlbWVudGVkQXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03MCw3ICs3
MCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3Io
SlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9T
SEFSQUJMRShKU1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbkltcGxlbWVudGVkQXNQcm90b3R5cGUs
IEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJl
dHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1
Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKQEAgLTIwOSw5ICsy
MDksOSBAQCBKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3RTdHJpbmdpZmllck9wZXJhCiAgICAgICAg
IHJldHVybiBzcGFjZTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6
SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uSW1wbGVtZW50
ZWRBcz4gfHwgIUpTVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uSW1wbGVtZW50ZWRBczo6bmVlZHNE
ZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpT
RGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbkltcGxlbWVudGVk
QXM+KQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RTdHJpbmdpZmllck9wZXJhdGlv
bkltcGxlbWVudGVkQXMgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5J
VCh2bS5oZWFwLCAqdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLCBKU1Rlc3RTdHJp
bmdpZmllck9wZXJhdGlvbkltcGxlbWVudGVkQXMpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFj
ZUZvclRlc3RTdHJpbmdpZmllck9wZXJhdGlvbkltcGxlbWVudGVkQXMgPSBtYWtlVW5pcXVlPElz
b1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmpl
Y3RIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25JbXBsZW1lbnRlZEFz
KTsKICAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFN0cmluZ2lmaWVy
T3BlcmF0aW9uSW1wbGVtZW50ZWRBcyA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJT
UEFDRV9JTklUKHZtLmhlYXAsICp2bS5jZWxsSGVhcENlbGxUeXBlLCBKU1Rlc3RTdHJpbmdpZmll
ck9wZXJhdGlvbkltcGxlbWVudGVkQXMpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRl
c3RTdHJpbmdpZmllck9wZXJhdGlvbkltcGxlbWVudGVkQXMgPSBtYWtlVW5pcXVlPElzb1N1YnNw
YWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCksIEpT
VGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uSW1wbGVtZW50ZWRBcyk7CiAgICAgYXV0byogc3BhY2Ug
PSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RTdHJpbmdpZmllck9wZXJhdGlvbkltcGxlbWVudGVk
QXMuZ2V0KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdO
T1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJPcGVyYXRp
b25OYW1lZFRvU3RyaW5nLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25OYW1lZFRvU3RyaW5n
LmNwcAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uTmFtZWRUb1N0cmluZy5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTY5LDcgKzY5LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklz
b1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJ
Q19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9u
TmFtZWRUb1N0cmluZ1Byb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5P
YmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAg
fQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZt
LCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5
cGUpCiAgICAgewpAQCAtMTkyLDkgKzE5Miw5IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdFN0
cmluZ2lmaWVyT3BlcmEKICAgICAgICAgcmV0dXJuIHNwYWNlOwogICAgIHN0YXRpY19hc3NlcnQo
c3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0U3RyaW5n
aWZpZXJPcGVyYXRpb25OYW1lZFRvU3RyaW5nPiB8fCAhSlNUZXN0U3RyaW5naWZpZXJPcGVyYXRp
b25OYW1lZFRvU3RyaW5nOjpuZWVkc0Rlc3RydWN0aW9uKTsKICAgICBpZiBjb25zdGV4cHIgKHN0
ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdFN0cmluZ2lm
aWVyT3BlcmF0aW9uTmFtZWRUb1N0cmluZz4pCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9y
VGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uTmFtZWRUb1N0cmluZyA9IG1ha2VVbmlxdWU8SXNvU3Vi
c3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5kZXN0cnVjdGlibGVPYmplY3RI
ZWFwQ2VsbFR5cGUsIEpTVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uTmFtZWRUb1N0cmluZyk7Cisg
ICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uTmFtZWRU
b1N0cmluZyA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhl
YXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RTdHJpbmdpZmll
ck9wZXJhdGlvbk5hbWVkVG9TdHJpbmcpOwogICAgIGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vi
c3BhY2VGb3JUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25OYW1lZFRvU3RyaW5nID0gbWFrZVVuaXF1
ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmNlbGxIZWFwQ2Vs
bFR5cGUsIEpTVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uTmFtZWRUb1N0cmluZyk7CisgICAgICAg
IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uTmFtZWRUb1N0cmlu
ZyA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZt
LmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25OYW1lZFRvU3Ry
aW5nKTsKICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFN0cmluZ2lm
aWVyT3BlcmF0aW9uTmFtZWRUb1N0cmluZy5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigi
dW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1j
b21wYXJlIikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RTdHJpbmdpZmllclJlYWRPbmx5QXR0cmlidXRlLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJSZWFk
T25seUF0dHJpYnV0ZS5jcHAJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllclJlYWRPbmx5QXR0cmlidXRl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzEsNyArNzEsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGlj
IEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAg
ICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0U3RyaW5naWZpZXJS
ZWFkT25seUF0dHJpYnV0ZVByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxh
aW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAg
ICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0m
IHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90
b3R5cGUpCiAgICAgewpAQCAtMjA4LDkgKzIwOCw5IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVz
dFN0cmluZ2lmaWVyUmVhZE8KICAgICAgICAgcmV0dXJuIHNwYWNlOwogICAgIHN0YXRpY19hc3Nl
cnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0U3Ry
aW5naWZpZXJSZWFkT25seUF0dHJpYnV0ZT4gfHwgIUpTVGVzdFN0cmluZ2lmaWVyUmVhZE9ubHlB
dHRyaWJ1dGU6Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19i
YXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0U3RyaW5naWZpZXJSZWFk
T25seUF0dHJpYnV0ZT4pCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFN0cmluZ2lm
aWVyUmVhZE9ubHlBdHRyaWJ1dGUgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BB
Q0VfSU5JVCh2bS5oZWFwLCAqdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLCBKU1Rl
c3RTdHJpbmdpZmllclJlYWRPbmx5QXR0cmlidXRlKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3Bh
Y2VGb3JUZXN0U3RyaW5naWZpZXJSZWFkT25seUF0dHJpYnV0ZSA9IG1ha2VVbmlxdWU8SXNvU3Vi
c3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhl
YXBDZWxsVHlwZSgpLCBKU1Rlc3RTdHJpbmdpZmllclJlYWRPbmx5QXR0cmlidXRlKTsKICAgICBl
bHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFN0cmluZ2lmaWVyUmVhZE9ubHlB
dHRyaWJ1dGUgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5o
ZWFwLCAqdm0uY2VsbEhlYXBDZWxsVHlwZSwgSlNUZXN0U3RyaW5naWZpZXJSZWFkT25seUF0dHJp
YnV0ZSk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFN0cmluZ2lmaWVyUmVhZE9u
bHlBdHRyaWJ1dGUgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2
bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCksIEpTVGVzdFN0cmluZ2lmaWVyUmVhZE9ubHlB
dHRyaWJ1dGUpOwogICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0U3Ry
aW5naWZpZXJSZWFkT25seUF0dHJpYnV0ZS5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigi
dW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1j
b21wYXJlIikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RTdHJpbmdpZmllclJlYWRXcml0ZUF0dHJpYnV0ZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyUmVh
ZFdyaXRlQXR0cmlidXRlLmNwcAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyUmVhZFdyaXRlQXR0cmli
dXRlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzIsNyArNzIsNyBAQCBwdWJsaWM6CiAgICAgc3Rh
dGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAg
ICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0U3RyaW5naWZp
ZXJSZWFkV3JpdGVBdHRyaWJ1dGVQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZt
LnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgp
OwogICAgIH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6
OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUg
cHJvdG90eXBlKQogICAgIHsKQEAgLTIyNyw5ICsyMjcsOSBAQCBKU0M6Oklzb1N1YnNwYWNlKiBK
U1Rlc3RTdHJpbmdpZmllclJlYWRXCiAgICAgICAgIHJldHVybiBzcGFjZTsKICAgICBzdGF0aWNf
YXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVz
dFN0cmluZ2lmaWVyUmVhZFdyaXRlQXR0cmlidXRlPiB8fCAhSlNUZXN0U3RyaW5naWZpZXJSZWFk
V3JpdGVBdHRyaWJ1dGU6Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhwciAoc3Rk
Ojppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0U3RyaW5naWZp
ZXJSZWFkV3JpdGVBdHRyaWJ1dGU+KQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RT
dHJpbmdpZmllclJlYWRXcml0ZUF0dHJpYnV0ZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElT
T19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5
cGUsIEpTVGVzdFN0cmluZ2lmaWVyUmVhZFdyaXRlQXR0cmlidXRlKTsKKyAgICAgICAgc3BhY2Vz
Lm1fc3Vic3BhY2VGb3JUZXN0U3RyaW5naWZpZXJSZWFkV3JpdGVBdHRyaWJ1dGUgPSBtYWtlVW5p
cXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGli
bGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0U3RyaW5naWZpZXJSZWFkV3JpdGVBdHRyaWJ1
dGUpOwogICAgIGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0U3RyaW5naWZp
ZXJSZWFkV3JpdGVBdHRyaWJ1dGUgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BB
Q0VfSU5JVCh2bS5oZWFwLCAqdm0uY2VsbEhlYXBDZWxsVHlwZSwgSlNUZXN0U3RyaW5naWZpZXJS
ZWFkV3JpdGVBdHRyaWJ1dGUpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RTdHJp
bmdpZmllclJlYWRXcml0ZUF0dHJpYnV0ZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19T
VUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0U3RyaW5n
aWZpZXJSZWFkV3JpdGVBdHRyaWJ1dGUpOwogICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vi
c3BhY2VGb3JUZXN0U3RyaW5naWZpZXJSZWFkV3JpdGVBdHRyaWJ1dGUuZ2V0KCk7CiBJR05PUkVf
V0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lO
KCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0VHlwZWRlZnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RUeXBlZGVmcy5jcHAJKHJldmlz
aW9uIDI4NjA5NSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RUeXBlZGVmcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExNiw3ICsxMTYsNyBAQCBwdWJs
aWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZt
KQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNU
ZXN0VHlwZWRlZnNQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2Jq
ZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0K
ICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwg
SlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBl
KQogICAgIHsKQEAgLTc3OCw5ICs3NzgsOSBAQCBKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3RUeXBl
ZGVmczo6c3Vic3BhCiAgICAgICAgIHJldHVybiBzcGFjZTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0
ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdFR5cGVkZWZz
PiB8fCAhSlNUZXN0VHlwZWRlZnM6Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhw
ciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0VHlw
ZWRlZnM+KQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RUeXBlZGVmcyA9IG1ha2VV
bmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5kZXN0cnVj
dGlibGVPYmplY3RIZWFwQ2VsbFR5cGUsIEpTVGVzdFR5cGVkZWZzKTsKKyAgICAgICAgc3BhY2Vz
Lm1fc3Vic3BhY2VGb3JUZXN0VHlwZWRlZnMgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09f
U1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUo
KSwgSlNUZXN0VHlwZWRlZnMpOwogICAgIGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VG
b3JUZXN0VHlwZWRlZnMgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5J
VCh2bS5oZWFwLCAqdm0uY2VsbEhlYXBDZWxsVHlwZSwgSlNUZXN0VHlwZWRlZnMpOworICAgICAg
ICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RUeXBlZGVmcyA9IG1ha2VVbmlxdWU8SXNvU3Vic3Bh
Y2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNU
ZXN0VHlwZWRlZnMpOwogICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0
VHlwZWRlZnMuZ2V0KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUi
KQogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNXb3JrZXJHbG9iYWxTY29w
ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTV29ya2VyR2xvYmFsU2NvcGUuY3BwCShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNXb3JrZXJHbG9iYWxTY29wZS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTI0OSw3ICsyNDksNyBAQCBKU0M6Oklzb1N1YnNwYWNlKiBKU1dv
cmtlckdsb2JhbFNjb3BlOjpzCiAgICAgYXV0byYgc3BhY2VzID0gY2xpZW50RGF0YS5zdWJzcGFj
ZXMoKTsKICAgICBpZiAoYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvcldvcmtlckds
b2JhbFNjb3BlLmdldCgpKQogICAgICAgICByZXR1cm4gc3BhY2U7Ci0gICAgc3BhY2VzLm1fc3Vi
c3BhY2VGb3JXb3JrZXJHbG9iYWxTY29wZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19T
VUJTUEFDRV9JTklUKHZtLmhlYXAsICpjbGllbnREYXRhLm1faGVhcENlbGxUeXBlRm9ySlNXb3Jr
ZXJHbG9iYWxTY29wZSwgSlNXb3JrZXJHbG9iYWxTY29wZSk7CisgICAgc3BhY2VzLm1fc3Vic3Bh
Y2VGb3JXb3JrZXJHbG9iYWxTY29wZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJT
UEFDRV9JTklUKHZtLmhlYXAsIGNsaWVudERhdGEubV9oZWFwQ2VsbFR5cGVGb3JKU1dvcmtlckds
b2JhbFNjb3BlLCBKU1dvcmtlckdsb2JhbFNjb3BlKTsKICAgICBhdXRvKiBzcGFjZSA9IHNwYWNl
cy5tX3N1YnNwYWNlRm9yV29ya2VyR2xvYmFsU2NvcGUuZ2V0KCk7CiBJR05PUkVfV0FSTklOR1Nf
QkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xv
Z2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNXb3JrZXJHbG9iYWxTY29wZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1dvcmtlckdsb2JhbFNjb3BlLmgJKHJldmlzaW9u
IDI4NjA5NSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1dv
cmtlckdsb2JhbFNjb3BlLmgJKHdvcmtpbmcgY29weSkKQEAgLTg1LDcgKzg1LDcgQEAgcHVibGlj
OgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkK
ICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTV29y
a2VyR2xvYmFsU2NvcGVQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWlu
T2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAg
IH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2
bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90
eXBlKQogICAgIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1dvcmtsZXRHbG9iYWxTY29wZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTV29ya2xldEdsb2JhbFNjb3BlLmNwcAkocmV2aXNp
b24gMjg2MDk1KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
V29ya2xldEdsb2JhbFNjb3BlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTYzLDcgKzE2Myw3IEBA
IEpTQzo6SXNvU3Vic3BhY2UqIEpTV29ya2xldEdsb2JhbFNjb3BlOjoKICAgICBhdXRvJiBzcGFj
ZXMgPSBjbGllbnREYXRhLnN1YnNwYWNlcygpOwogICAgIGlmIChhdXRvKiBzcGFjZSA9IHNwYWNl
cy5tX3N1YnNwYWNlRm9yV29ya2xldEdsb2JhbFNjb3BlLmdldCgpKQogICAgICAgICByZXR1cm4g
c3BhY2U7Ci0gICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JXb3JrbGV0R2xvYmFsU2NvcGUgPSBtYWtl
VW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqY2xpZW50RGF0
YS5tX2hlYXBDZWxsVHlwZUZvckpTV29ya2xldEdsb2JhbFNjb3BlLCBKU1dvcmtsZXRHbG9iYWxT
Y29wZSk7CisgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JXb3JrbGV0R2xvYmFsU2NvcGUgPSBtYWtl
VW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCBjbGllbnREYXRh
Lm1faGVhcENlbGxUeXBlRm9ySlNXb3JrbGV0R2xvYmFsU2NvcGUsIEpTV29ya2xldEdsb2JhbFNj
b3BlKTsKICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yV29ya2xldEdsb2Jh
bFNjb3BlLmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikK
IElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRleDogU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTV29ya2xldEdsb2JhbFNjb3Bl
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTV29ya2xldEdsb2JhbFNjb3BlLmgJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1dvcmtsZXRHbG9iYWxTY29wZS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC04NSw3ICs4NSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29T
dWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNf
QVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1dvcmtsZXRHbG9iYWxTY29wZVByb3RvdHlw
ZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAg
cmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0
cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpJbmRleDogU291
cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19ydW50aW1lLm1tCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfcnVudGltZS5tbQkocmV2aXNpb24gMjg2MDk1
KQorKysgU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19ydW50aW1lLm1tCSh3b3JraW5n
IGNvcHkpCkBAIC0zMzUsNyArMzM1LDcgQEAgYm9vbCBPYmpjRmFsbGJhY2tPYmplY3RJbXA6OnRv
Qm9vbGVhbihKUwogSlNDOjpJc29TdWJzcGFjZSogT2JqY0ZhbGxiYWNrT2JqZWN0SW1wOjpzdWJz
cGFjZUZvckltcGwoSlNDOjpWTSYgdm0pCiB7CiAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEpT
Qzo6SXNvU3Vic3BhY2VQZXJWTT4gcGVyVk0oW10gKEpTQzo6Vk0mIHZtKSB7Ci0gICAgICAgIHJl
dHVybiBJU09fU1VCU1BBQ0VfUEFSQU1FVEVSUygqdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENl
bGxUeXBlLCBPYmpjRmFsbGJhY2tPYmplY3RJbXApOworICAgICAgICByZXR1cm4gSVNPX1NVQlNQ
QUNFX1BBUkFNRVRFUlModm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCksIE9iamNG
YWxsYmFja09iamVjdEltcCk7CiAgICAgfSk7CiAgICAgcmV0dXJuICZwZXJWTS5nZXQoKS5mb3JW
TSh2bSk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck9yV29ya2xldFNj
cmlwdENvbnRyb2xsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dv
cmtlck9yV29ya2xldFNjcmlwdENvbnRyb2xsZXIuaAkocmV2aXNpb24gMjg2MDk1KQorKysgU291
cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJPcldvcmtsZXRTY3JpcHRDb250cm9sbGVyLmgJKHdv
cmtpbmcgY29weSkKQEAgLTM4LDYgKzM4LDcgQEAKIG5hbWVzcGFjZSBKU0MgewogY2xhc3MgRXhj
ZXB0aW9uOwogY2xhc3MgSlNHbG9iYWxPYmplY3Q7CitjbGFzcyBKU01vZHVsZVJlY29yZDsKIGNs
YXNzIFZNOwogfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9Nb2RlbEVs
ZW1lbnRDb250cm9sbGVyQ29jb2EubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQ29jb2EvTW9kZWxFbGVtZW50Q29udHJvbGxlckNvY29hLm1tCShyZXZpc2lvbiAyODYw
OTUpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9Nb2RlbEVsZW1lbnRDb250cm9s
bGVyQ29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTIzMyw2ICsyMzMsMTAgQEAgdm9pZCBNb2Rl
bEVsZW1lbnRDb250cm9sbGVyOjpoYW5kbGVNb3VzZQogCiAjaWYgRU5BQkxFKEFSS0lUX0lOTElO
RV9QUkVWSUVXKQogCisjdW5kZWYgRU5BQkxFX0FSS0lUX0lOTElORV9QUkVWSUVXX0NBTUVSQV9U
UkFOU0ZPUk0gLy8gbWxhbSBIQUNLCisjdW5kZWYgRU5BQkxFX0FSS0lUX0lOTElORV9QUkVWSUVX
X0FOSU1BVElPTlNfQ09OVFJPTCAvLyBtbGFtIEhBQ0sKKyN1bmRlZiBFTkFCTEVfQVJLSVRfSU5M
SU5FX1BSRVZJRVdfQVVESU9fQ09OVFJPTCAvLyBtbGFtIEhBQ0sKKwogc3RhdGljIGJvb2wgcHJl
dmlld0hhc0NhbWVyYVN1cHBvcnQoQVNWSW5saW5lUHJldmlldyAqcHJldmlldykKIHsKICNpZiBF
TkFCTEUoQVJLSVRfSU5MSU5FX1BSRVZJRVdfQ0FNRVJBX1RSQU5TRk9STSkK
</data>
<flag name="commit-queue"
          id="470014"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>444897</attachid>
            <date>2021-11-20 08:27:37 -0800</date>
            <delta_ts>2021-11-21 20:22:53 -0800</delta_ts>
            <desc>work in progress.</desc>
            <filename>bug-233240e.patch</filename>
            <type>text/plain</type>
            <size>409040</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDI4NjA5NSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpA
QCAtNzYzLDYgKzc2Myw5IEBAIHNldChKYXZhU2NyaXB0Q29yZV9QUklWQVRFX0ZSQU1FV09SS19I
RUEKICAgICBoZWFwL0luY3JlbWVudGFsU3dlZXBlci5oCiAgICAgaGVhcC9Jc29DZWxsU2V0LmgK
ICAgICBoZWFwL0lzb0hlYXBDZWxsVHlwZS5oCisgICAgaGVhcC9Jc29IZWFwQ2VsbFR5cGVJbmxp
bmVzLmgKKyAgICBoZWFwL0lzb0lubGluZWRIZWFwQ2VsbFR5cGUuaAorICAgIGhlYXAvSXNvSW5s
aW5lZEhlYXBDZWxsVHlwZUlubGluZXMuaAogICAgIGhlYXAvSXNvU3Vic3BhY2UuaAogICAgIGhl
YXAvSXNvU3Vic3BhY2VJbmxpbmVzLmgKICAgICBoZWFwL0lzb1N1YnNwYWNlUGVyVk0uaApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2pzYy5jcHAJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qc2MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDI5LDcgKzE0MjksNyBAQCBwdWJs
aWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNzPgogICAg
IHN0YXRpYyBDb21wbGV0ZVN1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewotICAg
ICAgICByZXR1cm4gJnZtLmRlc3RydWN0aWJsZU9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4g
JnZtLmRlc3RydWN0aWJsZU9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAgSlNDTWVtb3J5Rm9v
dHByaW50KFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCkBAIC0xNzYyLDcgKzE3NjIsNyBA
QCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNz
PgogICAgIHN0YXRpYyBDb21wbGV0ZVN1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAg
ewotICAgICAgICByZXR1cm4gJnZtLmRlc3RydWN0aWJsZU9iamVjdFNwYWNlOworICAgICAgICBy
ZXR1cm4gJnZtLmRlc3RydWN0aWJsZU9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGlj
IFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
SmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTE5NTks
NyArMTk1OSw3IEBACiAJCUUzQzY5NEIzMjMwMjY4NzcwMDZGQkU0MiAvKiBXYXNtT1NSRW50cnlE
YXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFM0M2
OTRCMTIzMDI2ODczMDA2RkJFNDIgLyogV2FzbU9TUkVudHJ5RGF0YS5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUzQzczQTkxMjVCRkE3M0IwMEVG
RTMwMyAvKiBXYXNtU3RyZWFtaW5nUGxhbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRTNDNzNBOTAyNUJGQTczNDAwRUZFMzAzIC8qIFdhc21TdHJlYW1p
bmdQbGFuLmggKi87IH07CiAJCUUzQzc5Q0FCMURCOUE0REMwMEQxRUNBNCAvKiBET01KSVRFZmZl
Y3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzQzc5
Q0FBMURCOUE0RDYwMEQxRUNBNCAvKiBET01KSVRFZmZlY3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQlFM0M4RUQ0MzIzQTFEQkNCMDAxMzE5NTgg
LyogSXNvSW5saW5lZEhlYXBDZWxsVHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRTNDOEVENDIyM0ExREJDNTAwMTMxOTU4IC8qIElzb0lubGluZWRI
ZWFwQ2VsbFR5cGUuaCAqLzsgfTsKKwkJRTNDOEVENDMyM0ExREJDQjAwMTMxOTU4IC8qIElzb0lu
bGluZWRIZWFwQ2VsbFR5cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEUzQzhFRDQyMjNBMURCQzUwMDEzMTk1OCAvKiBJc29JbmxpbmVkSGVhcENlbGxU
eXBlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
RTNDQTNBNEUyNTI3QUIyRjAwNDgwMkJGIC8qIEpJVE9wZXJhdGlvbkxpc3QuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzQ0EzQTRDMjUyN0FCMkYwMDQ4
MDJCRiAvKiBKSVRPcGVyYXRpb25MaXN0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTNEMjM5QzkxQjgyOUMxQzAwQkJFRjY3IC8qIEpTTW9kdWxl
RW52aXJvbm1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEUzRDIzOUM3MUI4MjlDMUMwMEJCRUY2NyAvKiBKU01vZHVsZUVudmlyb25tZW50LmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTNEMzUxNUYy
NDFCODlENzAwOERDMTZFIC8qIE1hcmtlZEpTVmFsdWVSZWZBcnJheS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTNEMzUxNUQyNDFCODlDRTAwOERDMTZF
IC8qIE1hcmtlZEpTVmFsdWVSZWZBcnJheS5oICovOyB9OwpAQCAtMjA0MSw2ICsyMDQxLDggQEAK
IAkJRkU2M0RENTQxRUE5QjYxRTAwMTAzQTY5IC8qIFByaW50ZXIuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFNjNERDUzMUVBOUI2MEUwMDEwM0E2OSAv
KiBQcmludGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJRkU2NDg3MkUyMTQxRDA0ODAwQUIwRDNFIC8qIE9wY29kZUlubGluZXMuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFNjQ4NzJEMjE0MUQwNDgw
MEFCMEQzRSAvKiBPcGNvZGVJbmxpbmVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJRkU2NDkxMzcxRDc4RjAxRDAwQTY5NEQ0IC8qIEV4Y2VwdGlv
blNjb3BlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBG
RTY0OTEzNjFENzhGMDEzMDBBNjk0RDQgLyogRXhjZXB0aW9uU2NvcGUuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlGRTY1QjE1MTI3NDg2MDFGMDBE
QjVCMTYgLyogSXNvSW5saW5lZEhlYXBDZWxsVHlwZUlubGluZXMuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFNjVCMTUwMjc0ODYwMUYwMERCNUIxNiAv
KiBJc29JbmxpbmVkSGVhcENlbGxUeXBlSW5saW5lcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUZFNjVCMTU1Mjc0OTNGMTQwMERCNUIxNiAvKiBJ
c29IZWFwQ2VsbFR5cGVJbmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBGRTY1QjE1NDI3NDkzRjE0MDBEQjVCMTYgLyogSXNvSGVhcENlbGxUeXBl
SW5saW5lcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCUZFNjhDNjM3MUI5MERFMDQwMDQyQkNCMyAvKiBNYWNyb0Fzc2VtYmxlclByaW50ZXIuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFNjhDNjM2MUI5
MERERDkwMDQyQkNCMyAvKiBNYWNyb0Fzc2VtYmxlclByaW50ZXIuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlGRTZGNTZERTFFNjRFQUQ2MDBEMTc4
MDEgLyogVk1UcmFwcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRkU2RjU2REQxRTY0RTkyMDAwRDE3ODAxIC8qIFZNVHJhcHMuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlGRTc0OTdFNjIwOTAwMUIxMDAw
MzU2NUIgLyogSlNDUHRyVGFnLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBGRTc0OTdFNTIwOTAwMUIwMDAwMzU2NUIgLyogSlNDUHRyVGFnLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTU0OTksNiArNTUw
MSw4IEBACiAJCUZFNjQ4NzJEMjE0MUQwNDgwMEFCMEQzRSAvKiBPcGNvZGVJbmxpbmVzLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE9wY29kZUlubGluZXMuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkU2NDkxMzYxRDc4RjAxMzAwQTY5NEQ0IC8qIEV4Y2VwdGlv
blNjb3BlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEV4Y2VwdGlvblNjb3Bl
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFNjQ5MTM4MUQ3OEYzQTMwMEE2OTRE
NCAvKiBFeGNlcHRpb25TY29wZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBFeGNlcHRpb25TY29wZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZF
NjVCMTUwMjc0ODYwMUYwMERCNUIxNiAvKiBJc29JbmxpbmVkSGVhcENlbGxUeXBlSW5saW5lcy5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJc29JbmxpbmVkSGVhcENlbGxUeXBl
SW5saW5lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGRTY1QjE1NDI3NDkzRjE0
MDBEQjVCMTYgLyogSXNvSGVhcENlbGxUeXBlSW5saW5lcy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBJc29IZWFwQ2VsbFR5cGVJbmxpbmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUZFNjhDNjM1MUI5MERERDkwMDQyQkNCMyAvKiBNYWNyb0Fzc2VtYmxlclBy
aW50ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWFjcm9Bc3Nl
bWJsZXJQcmludGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkU2OEM2MzYx
QjkwREREOTAwNDJCQ0IzIC8qIE1hY3JvQXNzZW1ibGVyUHJpbnRlci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBNYWNyb0Fzc2VtYmxlclByaW50ZXIuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJRkU2RjU2REMxRTY0RTkyMDAwRDE3ODAxIC8qIFZNVHJhcHMuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVk1UcmFwcy5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC02NjAyLDcgKzY2MDYsOSBAQAogCQkJCTBGQjQ2NzdC
MUZEREE2RDgwMDNGQ0IwOSAvKiBJc29DZWxsU2V0SW5saW5lcy5oICovLAogCQkJCUUzQzhFRDQx
MjNBMURCQzQwMDEzMTk1OCAvKiBJc29IZWFwQ2VsbFR5cGUuY3BwICovLAogCQkJCUUzQkYxQkFE
MjM4QUFFRDEwMDNBMUMyQiAvKiBJc29IZWFwQ2VsbFR5cGUuaCAqLywKKwkJCQlGRTY1QjE1NDI3
NDkzRjE0MDBEQjVCMTYgLyogSXNvSGVhcENlbGxUeXBlSW5saW5lcy5oICovLAogCQkJCUUzQzhF
RDQyMjNBMURCQzUwMDEzMTk1OCAvKiBJc29JbmxpbmVkSGVhcENlbGxUeXBlLmggKi8sCisJCQkJ
RkU2NUIxNTAyNzQ4NjAxRjAwREI1QjE2IC8qIElzb0lubGluZWRIZWFwQ2VsbFR5cGVJbmxpbmVz
LmggKi8sCiAJCQkJMEZEQ0UxMkMxRkFGQjRERTAwNkYzOTAxIC8qIElzb1N1YnNwYWNlLmNwcCAq
LywKIAkJCQkwRkRDRTEyQjFGQUZCNERFMDA2RjM5MDEgLyogSXNvU3Vic3BhY2UuaCAqLywKIAkJ
CQkwRkQyRkQ5MjIwQjUyQkRDMDBGMDk0NDEgLyogSXNvU3Vic3BhY2VJbmxpbmVzLmggKi8sCkBA
IC0xMDI0MCw2ICsxMDI0Niw3IEBACiAJCQkJQTEyNTg0NkUxQjQ1QTM2MDAwQ0M3RjZDIC8qIElu
dGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvci5sdXQuaCBpbiBIZWFkZXJzICovLAogCQkJCUUzMjMx
MTY5MjRBMURDMzUwMDY5M0RBNSAvKiBJbnRsTnVtYmVyRm9ybWF0SW5saW5lcy5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQTFENzkzMDExQjQzODY0QjAwNDUxNkY1IC8qIEludGxOdW1iZXJGb3JtYXRQ
cm90b3R5cGUuaCBpbiBIZWFkZXJzICovLAorCQkJCUZFNjVCMTU1Mjc0OTNGMTQwMERCNUIxNiAv
KiBJc29IZWFwQ2VsbFR5cGVJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQlBMTI1ODQ2RjFC
NDVBMzYwMDBDQzdGNkMgLyogSW50bE51bWJlckZvcm1hdFByb3RvdHlwZS5sdXQuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUExMkJCRkYyMUIwNDRBOEIwMDY2NEI2OSAvKiBJbnRsT2JqZWN0LmggaW4g
SGVhZGVycyAqLywKIAkJCQk3MDhFQkUyNDFDRThGMzU4MDA0NTMxNDYgLyogSW50bE9iamVjdElu
bGluZXMuaCBpbiBIZWFkZXJzICovLApAQCAtMTA0MTMsNiArMTA0MjAsNyBAQAogCQkJCUUzM0Y1
MDgxMUI4NDI5QTQwMDQxMzg1NiAvKiBKU0ludGVybmFsUHJvbWlzZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJRTMzRjUwNzkxQjg0MjI1NzAwNDEzODU2IC8qIEpTSW50ZXJuYWxQcm9taXNlQ29uc3Ry
dWN0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUUzM0Y1MDg3MUI4NDQ5RUYwMDQxMzg1NiAvKiBK
U0ludGVybmFsUHJvbWlzZUNvbnN0cnVjdG9yLmx1dC5oIGluIEhlYWRlcnMgKi8sCisJCQkJRkU2
NUIxNTEyNzQ4NjAxRjAwREI1QjE2IC8qIElzb0lubGluZWRIZWFwQ2VsbFR5cGVJbmxpbmVzLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlFMzNGNTA3NTFCODQyMUMwMDA0MTM4NTYgLyogSlNJbnRlcm5h
bFByb21pc2VQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1MDNGQTFFMTg4RTBGQjAw
MDExMEYxNCAvKiBKU0phdmFTY3JpcHRDYWxsRnJhbWVQcm90b3R5cGUuaCBpbiBIZWFkZXJzICov
LAogCQkJCUJDMThDNDE2MEUxNkY1Q0QwMEIzNDQ2MCAvKiBKU0xleGljYWxFbnZpcm9ubWVudC5o
IGluIEhlYWRlcnMgKi8sCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNj
ZXNzQ2FzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0FjY2Vzc0Nhc2UuY3BwCShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIyNzcsNyArMjI3
Nyw3IEBAIHZvaWQgQWNjZXNzQ2FzZTo6Z2VuZXJhdGVJbXBsKEFjY2Vzc0dlbmUKICAgICAgICAg
ICAgIHNpemVfdCBuZXdTaXplID0gbmV3U3RydWN0dXJlKCktPm91dE9mTGluZUNhcGFjaXR5KCkg
KiBzaXplb2YoSlNWYWx1ZSk7CiAKICAgICAgICAgICAgIGlmIChhbGxvY2F0aW5nSW5saW5lKSB7
Ci0gICAgICAgICAgICAgICAgQWxsb2NhdG9yIGFsbG9jYXRvciA9IHZtLmpzVmFsdWVHaWdhY2Fn
ZUF1eGlsaWFyeVNwYWNlLmFsbG9jYXRvckZvcihuZXdTaXplLCBBbGxvY2F0b3JGb3JNb2RlOjpB
bGxvY2F0b3JJZkV4aXN0cyk7CisgICAgICAgICAgICAgICAgQWxsb2NhdG9yIGFsbG9jYXRvciA9
IHZtLmpzVmFsdWVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlKCkuYWxsb2NhdG9yRm9yKG5ld1NpemUs
IEFsbG9jYXRvckZvck1vZGU6OkFsbG9jYXRvcklmRXhpc3RzKTsKIAogICAgICAgICAgICAgICAg
IGppdC5lbWl0QWxsb2NhdGUoc2NyYXRjaEdQUiwgSklUQWxsb2NhdG9yOjpjb25zdGFudChhbGxv
Y2F0b3IpLCBzY3JhdGNoR1BSMiwgc2NyYXRjaEdQUjMsIHNsb3dQYXRoKTsKICAgICAgICAgICAg
ICAgICBqaXQuYWRkUHRyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKG5ld1NpemUgKyBzaXpl
b2YoSW5kZXhpbmdIZWFkZXIpKSwgc2NyYXRjaEdQUik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvREZHRXhpdFByb2ZpbGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvREZHRXhpdFByb2ZpbGUuaAkocmV2aXNpb24gMjg2MDk1KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0RGR0V4aXRQcm9maWxlLmgJKHdvcmtp
bmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDExLTIwMTkg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExLTIw
MjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCkBAIC0zNCw3ICszNCwxMSBAQAogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAj
aW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCi1uYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7
CituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgVW5saW5rZWRDb2RlQmxvY2s7CisKK25hbWVzcGFj
ZSBERkcgewogCiBjbGFzcyBGcmVxdWVudEV4aXRTaXRlIHsKIHB1YmxpYzoKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FdmFsQ29kZUJsb2NrLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0V2YWxDb2RlQmxvY2suaAkocmV2aXNpb24g
Mjg2MDk1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0V2YWxDb2RlQmxvY2su
aAkod29ya2luZyBjb3B5KQpAQCAtNDEsNyArNDEsNyBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8
dHlwZW5hbWUsIFN1YnNwYWNlQWNjZXNzPgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3Bh
Y2VGb3IoVk0mIHZtKQogICAgIHsKLSAgICAgICAgcmV0dXJuICZ2bS5jb2RlQmxvY2tTcGFjZS5z
cGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5jb2RlQmxvY2tTcGFjZSgpLnNwYWNlOwogICAgIH0K
IAogICAgIHN0YXRpYyBFdmFsQ29kZUJsb2NrKiBjcmVhdGUoVk0mIHZtLCBDb3B5UGFyc2VkQmxv
Y2tUYWcsIEV2YWxDb2RlQmxvY2smIG90aGVyKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0V4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2UuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlLmNw
cAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0V4
ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04MSw3ICs4MSw3
IEBAIHZvaWQgRXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZTo6dmlzaXRDaGkKICAgICAgICAgdmlz
aXRvci5hcHBlbmRVbmJhcnJpZXJlZChjb2RlQmxvY2spOwogICAgIAogICAgIGlmICghdmlzaXRv
ci5pc01hcmtlZChjb2RlQmxvY2spKQotICAgICAgICB2bS5leGVjdXRhYmxlVG9Db2RlQmxvY2tF
ZGdlc1dpdGhGaW5hbGl6ZXJzLmFkZChlZGdlKTsKKyAgICAgICAgdm0uZXhlY3V0YWJsZVRvQ29k
ZUJsb2NrRWRnZXNXaXRoRmluYWxpemVycygpLmFkZChlZGdlKTsKICAgICAKICAgICBpZiAoSklU
Q29kZTo6aXNPcHRpbWl6aW5nSklUKGNvZGVCbG9jay0+aml0VHlwZSgpKSkgewogICAgICAgICAv
LyBJZiB3ZSBqZXR0aXNvbiBvdXJzZWx2ZXMgd2UnbGwgaW5zdGFsbCBvdXIgYWx0ZXJuYXRpdmUs
IHNvIG1ha2Ugc3VyZSB0aGF0IGl0CkBAIC0xMTQsNyArMTE0LDcgQEAgdm9pZCBFeGVjdXRhYmxl
VG9Db2RlQmxvY2tFZGdlOjp2aXNpdENoaQogICAgIC8vIG5vdCB5ZXQgbWFya2VkIGJlY2F1c2Ug
aXQgd2Vha2x5IGRlcGVuZHMgb24gYSBzdHJ1Y3R1cmUgdGhhdCB3ZSBkaWQgbm90IHlldCBtYXJr
LCB0aGVuIHdlCiAgICAgLy8gd2lsbCBrZWVwIGZpeHBvaW50aW5nIHVudGlsIHRoZSBlbmQuCiAg
ICAgdmlzaXRvci5hcHBlbmRVbmJhcnJpZXJlZChjb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKTsK
LSAgICB2bS5leGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlc1dpdGhDb25zdHJhaW50cy5hZGQoZWRn
ZSk7CisgICAgdm0uZXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZXNXaXRoQ29uc3RyYWludHMoKS5h
ZGQoZWRnZSk7CiAgICAgZWRnZS0+cnVuQ29uc3RyYWludChsb2NrZXIsIHZtLCB2aXNpdG9yKTsK
IH0KIApAQCAtMTQzLDggKzE0Myw4IEBAIHZvaWQgRXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZTo6
ZmluYWxpemUKICAgICAgICAgbV9jb2RlQmxvY2suY2xlYXIoKTsKICAgICB9CiAgICAgCi0gICAg
dm0uZXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZXNXaXRoRmluYWxpemVycy5yZW1vdmUodGhpcyk7
Ci0gICAgdm0uZXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZXNXaXRoQ29uc3RyYWludHMucmVtb3Zl
KHRoaXMpOworICAgIHZtLmV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2VzV2l0aEZpbmFsaXplcnMo
KS5yZW1vdmUodGhpcyk7CisgICAgdm0uZXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZXNXaXRoQ29u
c3RyYWludHMoKS5yZW1vdmUodGhpcyk7CiB9CiAKIGlubGluZSB2b2lkIEV4ZWN1dGFibGVUb0Nv
ZGVCbG9ja0VkZ2U6OmFjdGl2YXRlKCkKQEAgLTIwMSw3ICsyMDEsNyBAQCB2b2lkIEV4ZWN1dGFi
bGVUb0NvZGVCbG9ja0VkZ2U6OnJ1bkNvbnN0CiAgICAgY29kZUJsb2NrLT5kZXRlcm1pbmVMaXZl
bmVzcyhsb2NrZXIsIHZpc2l0b3IpOwogCiAgICAgaWYgKHZpc2l0b3IuaXNNYXJrZWQoY29kZUJs
b2NrKSkKLSAgICAgICAgdm0uZXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZXNXaXRoQ29uc3RyYWlu
dHMucmVtb3ZlKHRoaXMpOworICAgICAgICB2bS5leGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlc1dp
dGhDb25zdHJhaW50cygpLnJlbW92ZSh0aGlzKTsKIH0KIAogdGVtcGxhdGUgdm9pZCBFeGVjdXRh
YmxlVG9Db2RlQmxvY2tFZGdlOjpydW5Db25zdHJhaW50KGNvbnN0IENvbmN1cnJlbnRKU0xvY2tl
ciYsIFZNJiwgQWJzdHJhY3RTbG90VmlzaXRvciYpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0V4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2UuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZS5o
CShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhl
Y3V0YWJsZVRvQ29kZUJsb2NrRWRnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00Myw3ICs0Myw3IEBA
IHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vic3BhY2VBY2Nlc3M+
CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewotICAg
ICAgICByZXR1cm4gJnZtLmV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2VTcGFjZTsKKyAgICAgICAg
cmV0dXJuICZ2bS5leGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlU3BhY2UoKTsKICAgICB9CiAKICAg
ICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mLCBKU0dsb2JhbE9iamVjdCos
IEpTVmFsdWUgcHJvdG90eXBlKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9GdW5jdGlvbkNvZGVCbG9jay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9GdW5jdGlvbkNvZGVCbG9jay5oCShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRnVuY3Rpb25Db2RlQmxvY2suaAkod29ya2luZyBj
b3B5KQpAQCAtNDIsNyArNDIsNyBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUsIFN1
YnNwYWNlQWNjZXNzPgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZt
KQogICAgIHsKLSAgICAgICAgcmV0dXJuICZ2bS5jb2RlQmxvY2tTcGFjZS5zcGFjZTsKKyAgICAg
ICAgcmV0dXJuICZ2bS5jb2RlQmxvY2tTcGFjZSgpLnNwYWNlOwogICAgIH0KIAogICAgIHN0YXRp
YyBGdW5jdGlvbkNvZGVCbG9jayogY3JlYXRlKFZNJiB2bSwgQ29weVBhcnNlZEJsb2NrVGFnLCBG
dW5jdGlvbkNvZGVCbG9jayYgb3RoZXIpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvTW9kdWxlUHJvZ3JhbUNvZGVCbG9jay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9Nb2R1bGVQcm9ncmFtQ29kZUJsb2NrLmgJKHJldmlzaW9uIDI4
NjA5NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Nb2R1bGVQcm9ncmFtQ29k
ZUJsb2NrLmgJKHdvcmtpbmcgY29weSkKQEAgLTQyLDcgKzQyLDcgQEAgcHVibGljOgogICAgIHRl
bXBsYXRlPHR5cGVuYW1lLCBTdWJzcGFjZUFjY2Vzcz4KICAgICBzdGF0aWMgSXNvU3Vic3BhY2Uq
IHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7Ci0gICAgICAgIHJldHVybiAmdm0uY29kZUJsb2Nr
U3BhY2Uuc3BhY2U7CisgICAgICAgIHJldHVybiAmdm0uY29kZUJsb2NrU3BhY2UoKS5zcGFjZTsK
ICAgICB9CiAKICAgICBzdGF0aWMgTW9kdWxlUHJvZ3JhbUNvZGVCbG9jayogY3JlYXRlKFZNJiB2
bSwgQ29weVBhcnNlZEJsb2NrVGFnLCBNb2R1bGVQcm9ncmFtQ29kZUJsb2NrJiBvdGhlcikKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qcm9ncmFtQ29kZUJsb2NrLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Byb2dyYW1Db2RlQmxv
Y2suaAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1Byb2dyYW1Db2RlQmxvY2suaAkod29ya2luZyBjb3B5KQpAQCAtNDIsNyArNDIsNyBAQCBwdWJs
aWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUsIFN1YnNwYWNlQWNjZXNzPgogICAgIHN0YXRpYyBJ
c29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKLSAgICAgICAgcmV0dXJuICZ2
bS5jb2RlQmxvY2tTcGFjZS5zcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5jb2RlQmxvY2tTcGFj
ZSgpLnNwYWNlOwogICAgIH0KIAogICAgIHN0YXRpYyBQcm9ncmFtQ29kZUJsb2NrKiBjcmVhdGUo
Vk0mIHZtLCBDb3B5UGFyc2VkQmxvY2tUYWcsIFByb2dyYW1Db2RlQmxvY2smIG90aGVyKQpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1JlcGF0Y2guaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUmVwYXRjaC5oCShyZXZpc2lvbiAyODYw
OTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUmVwYXRjaC5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMS0yMDIwIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMS0yMDIx
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtMzEsNiArMzEsNyBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAorY2xhc3MgQ2Fs
bExpbmtJbmZvOwogY2xhc3MgU3RydWN0dXJlU3R1YkluZm87CiAKIGVudW0gY2xhc3MgR2V0QnlL
aW5kIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0
aW9uRXhlY3V0YWJsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmNwcAkocmV2aXNpb24gMjg2MDk1KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRh
YmxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjUxLDcgKzI1MSw3IEBAIFVubGlua2VkRnVuY3Rp
b25Db2RlQmxvY2sqIFVubGlua2VkRnVuY3QKICAgICAgICAgbV91bmxpbmtlZENvZGVCbG9ja0Zv
ckNvbnN0cnVjdC5zZXQodm0sIHRoaXMsIHJlc3VsdCk7CiAgICAgICAgIGJyZWFrOwogICAgIH0K
LSAgICB2bS51bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZVNwYWNlLnNldC5hZGQodGhpcyk7Cisg
ICAgdm0udW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGVTcGFjZSgpLnNldC5hZGQodGhpcyk7CiAg
ICAgcmV0dXJuIHJlc3VsdDsKIH0KIApAQCAtMzEwLDcgKzMxMCw3IEBAIHZvaWQgVW5saW5rZWRG
dW5jdGlvbkV4ZWN1dGFibGU6OmZpbmFsaXoKICAgICAgICAgY2xlYXJJZkRlYWQobV91bmxpbmtl
ZENvZGVCbG9ja0ZvckNhbGwpOwogICAgICAgICBjbGVhcklmRGVhZChtX3VubGlua2VkQ29kZUJs
b2NrRm9yQ29uc3RydWN0KTsKICAgICAgICAgaWYgKGlzQ2xlYXJlZCAmJiAhaXNTdGlsbFZhbGlk
KQotICAgICAgICAgICAgdm0udW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGVTcGFjZS5zZXQucmVt
b3ZlKHRoaXMpOworICAgICAgICAgICAgdm0udW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGVTcGFj
ZSgpLnNldC5yZW1vdmUodGhpcyk7CiAgICAgfQogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFi
bGUuaAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQyLDEzICs0
MiwxNCBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAorY2xhc3MgQ2FjaGVkRnVuY3Rpb25FeGVjdXRh
YmxlOwogY2xhc3MgRGVjb2RlcjsKLWNsYXNzIEZ1bmN0aW9uTWV0YWRhdGFOb2RlOwogY2xhc3Mg
RnVuY3Rpb25FeGVjdXRhYmxlOworY2xhc3MgRnVuY3Rpb25NZXRhZGF0YU5vZGU7CiBjbGFzcyBQ
YXJzZXJFcnJvcjsKK2NsYXNzIFNjcmlwdEV4ZWN1dGFibGU7CiBjbGFzcyBTb3VyY2VQcm92aWRl
cjsKIGNsYXNzIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2s7Ci1jbGFzcyBDYWNoZWRGdW5jdGlv
bkV4ZWN1dGFibGU7CiAKIGVudW0gVW5saW5rZWRGdW5jdGlvbktpbmQgewogICAgIFVubGlua2Vk
Tm9ybWFsRnVuY3Rpb24sCkBAIC02Nyw3ICs2OCw3IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBDZWxsVHlwZSwgU3Vic3BhY2VBY2Nlc3M+CiAgICAgc3RhdGljIElzb1N1YnNwYWNl
KiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewotICAgICAgICByZXR1cm4gJnZtLnVubGlua2Vk
RnVuY3Rpb25FeGVjdXRhYmxlU3BhY2Uuc3BhY2U7CisgICAgICAgIHJldHVybiAmdm0udW5saW5r
ZWRGdW5jdGlvbkV4ZWN1dGFibGVTcGFjZSgpLnNwYWNlOwogICAgIH0KIAogICAgIHN0YXRpYyBV
bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogY3JlYXRlKFZNJiB2bSwgY29uc3QgU291cmNlQ29k
ZSYgc291cmNlLCBGdW5jdGlvbk1ldGFkYXRhTm9kZSogbm9kZSwgVW5saW5rZWRGdW5jdGlvbktp
bmQgdW5saW5rZWRGdW5jdGlvbktpbmQsIENvbnN0cnVjdEFiaWxpdHkgY29uc3RydWN0QWJpbGl0
eSwgSlNQYXJzZXJTY3JpcHRNb2RlIHNjcmlwdE1vZGUsIFJlZlB0cjxURFpFbnZpcm9ubWVudExp
bms+IHBhcmVudFNjb3BlVERaVmFyaWFibGVzLCBzdGQ6Om9wdGlvbmFsPFByaXZhdGVOYW1lRW52
aXJvbm1lbnQ+IHBhcmVudFByaXZhdGVOYW1lRW52aXJvbm1lbnQsIERlcml2ZWRDb250ZXh0VHlw
ZSBkZXJpdmVkQ29udGV4dFR5cGUsIE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyIG5lZWRzQ2xh
c3NGaWVsZEluaXRpYWxpemVyLCBQcml2YXRlQnJhbmRSZXF1aXJlbWVudCBwcml2YXRlQnJhbmRS
ZXF1aXJlbWVudCwgYm9vbCBpc0J1aWx0aW5EZWZhdWx0Q2xhc3NDb25zdHJ1Y3RvciA9IGZhbHNl
KQpAQCAtMTMxLDcgKzEzMiw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIG1fdW5saW5rZWRD
b2RlQmxvY2tGb3JDYWxsLmNsZWFyKCk7CiAgICAgICAgIG1fdW5saW5rZWRDb2RlQmxvY2tGb3JD
b25zdHJ1Y3QuY2xlYXIoKTsKLSAgICAgICAgdm0udW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGVT
cGFjZS5zZXQucmVtb3ZlKHRoaXMpOworICAgICAgICB2bS51bmxpbmtlZEZ1bmN0aW9uRXhlY3V0
YWJsZVNwYWNlKCkuc2V0LnJlbW92ZSh0aGlzKTsKICAgICB9CiAKICAgICB2b2lkIHJlY29yZFBh
cnNlKENvZGVGZWF0dXJlcyBmZWF0dXJlcywgTGV4aWNhbFNjb3BlRmVhdHVyZXMgbGV4aWNhbFNj
b3BlRmVhdHVyZXMsIGJvb2wgaGFzQ2FwdHVyZWRWYXJpYWJsZXMpCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAkocmV2aXNpb24gMjg2
MDk1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTEyMCw3ICsxMjAsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpl
bWl0QWxsb2NhdGVSYXdPYmplCiAKICAgICBWTSYgdm0gPSB0aGlzLT52bSgpOwogICAgIGlmIChz
aXplKSB7Ci0gICAgICAgIGlmIChBbGxvY2F0b3IgYWxsb2NhdG9yID0gdm0uanNWYWx1ZUdpZ2Fj
YWdlQXV4aWxpYXJ5U3BhY2UuYWxsb2NhdG9yRm9yTm9uVmlydHVhbChzaXplLCBBbGxvY2F0b3JG
b3JNb2RlOjpBbGxvY2F0b3JJZkV4aXN0cykpIHsKKyAgICAgICAgaWYgKEFsbG9jYXRvciBhbGxv
Y2F0b3IgPSB2bS5qc1ZhbHVlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZSgpLmFsbG9jYXRvckZvck5v
blZpcnR1YWwoc2l6ZSwgQWxsb2NhdG9yRm9yTW9kZTo6QWxsb2NhdG9ySWZFeGlzdHMpKSB7CiAg
ICAgICAgICAgICBtX2ppdC5lbWl0QWxsb2NhdGUoc3RvcmFnZUdQUiwgSklUQWxsb2NhdG9yOjpj
b25zdGFudChhbGxvY2F0b3IpLCBzY3JhdGNoR1BSLCBzY3JhdGNoMkdQUiwgc2xvd0Nhc2VzKTsK
ICAgICAgICAgICAgIAogICAgICAgICAgICAgbV9qaXQuYWRkUHRyKApAQCAtMTA3MzgsNyArMTA3
MzgsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQWxsb2NhdGVQcm9wCiAgICAgCiAg
ICAgc2l6ZV90IHNpemUgPSBpbml0aWFsT3V0T2ZMaW5lQ2FwYWNpdHkgKiBzaXplb2YoSlNWYWx1
ZSk7CiAKLSAgICBBbGxvY2F0b3IgYWxsb2NhdG9yID0gdm0oKS5qc1ZhbHVlR2lnYWNhZ2VBdXhp
bGlhcnlTcGFjZS5hbGxvY2F0b3JGb3JOb25WaXJ0dWFsKHNpemUsIEFsbG9jYXRvckZvck1vZGU6
OkFsbG9jYXRvcklmRXhpc3RzKTsKKyAgICBBbGxvY2F0b3IgYWxsb2NhdG9yID0gdm0oKS5qc1Zh
bHVlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZSgpLmFsbG9jYXRvckZvck5vblZpcnR1YWwoc2l6ZSwg
QWxsb2NhdG9yRm9yTW9kZTo6QWxsb2NhdG9ySWZFeGlzdHMpOwogCiAgICAgaWYgKCFhbGxvY2F0
b3IgfHwgbm9kZS0+dHJhbnNpdGlvbigpLT5wcmV2aW91cy0+Y291bGRIYXZlSW5kZXhpbmdIZWFk
ZXIoKSkgewogICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUtPmNo
aWxkMSgpKTsKQEAgLTEwNzgyLDcgKzEwNzgyLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZVJlYWxsb2NhdGVQcgogICAgIHNpemVfdCBuZXdTaXplID0gb2xkU2l6ZSAqIG91dE9mTGlu
ZUdyb3d0aEZhY3RvcjsKICAgICBBU1NFUlQobmV3U2l6ZSA9PSBub2RlLT50cmFuc2l0aW9uKCkt
Pm5leHQtPm91dE9mTGluZUNhcGFjaXR5KCkgKiBzaXplb2YoSlNWYWx1ZSkpOwogICAgIAotICAg
IEFsbG9jYXRvciBhbGxvY2F0b3IgPSB2bSgpLmpzVmFsdWVHaWdhY2FnZUF1eGlsaWFyeVNwYWNl
LmFsbG9jYXRvckZvck5vblZpcnR1YWwobmV3U2l6ZSwgQWxsb2NhdG9yRm9yTW9kZTo6QWxsb2Nh
dG9ySWZFeGlzdHMpOworICAgIEFsbG9jYXRvciBhbGxvY2F0b3IgPSB2bSgpLmpzVmFsdWVHaWdh
Y2FnZUF1eGlsaWFyeVNwYWNlKCkuYWxsb2NhdG9yRm9yTm9uVmlydHVhbChuZXdTaXplLCBBbGxv
Y2F0b3JGb3JNb2RlOjpBbGxvY2F0b3JJZkV4aXN0cyk7CiAKICAgICBpZiAoIWFsbG9jYXRvciB8
fCBub2RlLT50cmFuc2l0aW9uKCktPnByZXZpb3VzLT5jb3VsZEhhdmVJbmRleGluZ0hlYWRlcigp
KSB7CiAgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGJhc2UodGhpcywgbm9kZS0+Y2hpbGQx
KCkpOwpAQCAtMTE0OTksNyArMTE0OTksNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0TmV3
VHlwZWRBcnJheVdpCiAgICAgICAgIG1faml0LmFuZDMyKFRydXN0ZWRJbW0zMih+NyksIHNjcmF0
Y2hHUFIpOwogICAgIH0KICAgICBtX2ppdC5lbWl0QWxsb2NhdGVWYXJpYWJsZVNpemVkKAotICAg
ICAgICBzdG9yYWdlR1BSLCB2bSgpLnByaW1pdGl2ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UsIHNj
cmF0Y2hHUFIsIHNjcmF0Y2hHUFIsCisgICAgICAgIHN0b3JhZ2VHUFIsIHZtKCkucHJpbWl0aXZl
R2lnYWNhZ2VBdXhpbGlhcnlTcGFjZSgpLCBzY3JhdGNoR1BSLCBzY3JhdGNoR1BSLAogICAgICAg
ICBzY3JhdGNoR1BSMiwgc2xvd0Nhc2VzKTsKICAgICAKICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVt
cCBkb25lID0gbV9qaXQuYnJhbmNoVGVzdDMyKE1hY3JvQXNzZW1ibGVyOjpaZXJvLCBzaXplR1BS
KTsKQEAgLTEzNzAwLDcgKzEzNzAwLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdEFsbG9j
YXRlQnV0dGVyZgogICAgIGRpZE5vdE92ZXJmbG93LmxpbmsoJm1faml0KTsKICNlbmRpZgogICAg
IG1faml0LmVtaXRBbGxvY2F0ZVZhcmlhYmxlU2l6ZWQoCi0gICAgICAgIHN0b3JhZ2VSZXN1bHRH
UFIsIHZtKCkuanNWYWx1ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UsIHNjcmF0Y2gyLCBzY3JhdGNo
MSwgc2NyYXRjaDMsIHNsb3dDYXNlcyk7CisgICAgICAgIHN0b3JhZ2VSZXN1bHRHUFIsIHZtKCku
anNWYWx1ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UoKSwgc2NyYXRjaDIsIHNjcmF0Y2gxLCBzY3Jh
dGNoMywgc2xvd0Nhc2VzKTsKICAgICBtX2ppdC5hZGRQdHIoVHJ1c3RlZEltbTMyKHNpemVvZihJ
bmRleGluZ0hlYWRlcikpLCBzdG9yYWdlUmVzdWx0R1BSKTsKIAogICAgIG1faml0LnN0b3JlMzIo
c2l6ZUdQUiwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc3RvcmFnZVJlc3VsdEdQUiwgQnV0dGVy
Zmx5OjpvZmZzZXRPZlB1YmxpY0xlbmd0aCgpKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTgzMDAsNyArODMwMCw3IEBAIElHTk9SRV9DTEFOR19XQVJOSU5HU19FTkQKICAgICAgICAg
ICAgICAgICBtX291dC5jb25zdEludFB0cih+c3RhdGljX2Nhc3Q8aW50cHRyX3Q+KDcpKSk7CiAg
ICAgICAgIH0KIAotICAgICAgICBMVmFsdWUgYWxsb2NhdG9yID0gYWxsb2NhdG9yRm9yU2l6ZSh2
bSgpLnByaW1pdGl2ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UsIGJ5dGVTaXplLCBzbG93Q2FzZSk7
CisgICAgICAgIExWYWx1ZSBhbGxvY2F0b3IgPSBhbGxvY2F0b3JGb3JTaXplKHZtKCkucHJpbWl0
aXZlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZSgpLCBieXRlU2l6ZSwgc2xvd0Nhc2UpOwogICAgICAg
ICBMVmFsdWUgc3RvcmFnZSA9IGFsbG9jYXRlSGVhcENlbGwoYWxsb2NhdG9yLCBzbG93Q2FzZSk7
CiAKICAgICAgICAgc3BsYXRXb3JkcygKQEAgLTEzOTIxLDcgKzEzOTIxLDcgQEAgSUdOT1JFX0NM
QU5HX1dBUk5JTkdTX0VORAogICAgICAgICAgICAgICAgIFZhbHVlRnJvbUJsb2NrIG5vQnV0dGVy
Zmx5ID0gbV9vdXQuYW5jaG9yKG1fb3V0LmludFB0clplcm8pOwogICAgICAgICAgICAgICAgIAog
ICAgICAgICAgICAgICAgIExWYWx1ZSBzdGFydE9mU3RvcmFnZSA9IGFsbG9jYXRlSGVhcENlbGwo
Ci0gICAgICAgICAgICAgICAgICAgIGFsbG9jYXRvckZvclNpemUodm0oKS5qc1ZhbHVlR2lnYWNh
Z2VBdXhpbGlhcnlTcGFjZSwgYnV0dGVyZmx5U2l6ZSwgc2xvd1BhdGgpLAorICAgICAgICAgICAg
ICAgICAgICBhbGxvY2F0b3JGb3JTaXplKHZtKCkuanNWYWx1ZUdpZ2FjYWdlQXV4aWxpYXJ5U3Bh
Y2UoKSwgYnV0dGVyZmx5U2l6ZSwgc2xvd1BhdGgpLAogICAgICAgICAgICAgICAgICAgICBzbG93
UGF0aCk7CiAKICAgICAgICAgICAgICAgICBMVmFsdWUgZmFzdEJ1dHRlcmZseVZhbHVlID0gbV9v
dXQuYWRkKApAQCAtMTUwMTYsNyArMTUwMTYsNyBAQCBJR05PUkVfQ0xBTkdfV0FSTklOR1NfRU5E
CiAgICAgICAgIExCYXNpY0Jsb2NrIGxhc3ROZXh0ID0gbV9vdXQuaW5zZXJ0TmV3QmxvY2tzQmVm
b3JlKHNsb3dQYXRoKTsKIAogICAgICAgICBzaXplX3Qgc2l6ZUluQnl0ZXMgPSBzaXplSW5WYWx1
ZXMgKiBzaXplb2YoSlNWYWx1ZSk7Ci0gICAgICAgIEFsbG9jYXRvciBhbGxvY2F0b3IgPSB2bSgp
LmpzVmFsdWVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlLmFsbG9jYXRvckZvck5vblZpcnR1YWwoc2l6
ZUluQnl0ZXMsIEFsbG9jYXRvckZvck1vZGU6OkFsbG9jYXRvcklmRXhpc3RzKTsKKyAgICAgICAg
QWxsb2NhdG9yIGFsbG9jYXRvciA9IHZtKCkuanNWYWx1ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2Uo
KS5hbGxvY2F0b3JGb3JOb25WaXJ0dWFsKHNpemVJbkJ5dGVzLCBBbGxvY2F0b3JGb3JNb2RlOjpB
bGxvY2F0b3JJZkV4aXN0cyk7CiAgICAgICAgIExWYWx1ZSBzdGFydE9mU3RvcmFnZSA9IGFsbG9j
YXRlSGVhcENlbGwoCiAgICAgICAgICAgICBtX291dC5jb25zdEludFB0cihhbGxvY2F0b3IubG9j
YWxBbGxvY2F0b3IoKSksIHNsb3dQYXRoKTsKICAgICAgICAgVmFsdWVGcm9tQmxvY2sgZmFzdEJ1
dHRlcmZseSA9IG1fb3V0LmFuY2hvcigKQEAgLTE3MDM4LDcgKzE3MDM4LDcgQEAgSUdOT1JFX0NM
QU5HX1dBUk5JTkdTX0VORAogICAgICAgICBMVmFsdWUgYnV0dGVyZmx5U2l6ZSA9IG1fb3V0LmFk
ZCgKICAgICAgICAgICAgIHBheWxvYWRTaXplLCBtX291dC5jb25zdEludFB0cihzaXplb2YoSW5k
ZXhpbmdIZWFkZXIpKSk7CiAKLSAgICAgICAgTFZhbHVlIGFsbG9jYXRvciA9IGFsbG9jYXRvckZv
clNpemUodm0oKS5qc1ZhbHVlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZSwgYnV0dGVyZmx5U2l6ZSwg
ZmFpbENhc2UpOworICAgICAgICBMVmFsdWUgYWxsb2NhdG9yID0gYWxsb2NhdG9yRm9yU2l6ZSh2
bSgpLmpzVmFsdWVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlKCksIGJ1dHRlcmZseVNpemUsIGZhaWxD
YXNlKTsKICAgICAgICAgTFZhbHVlIHN0YXJ0T2ZTdG9yYWdlID0gYWxsb2NhdGVIZWFwQ2VsbChh
bGxvY2F0b3IsIGZhaWxDYXNlKTsKIAogICAgICAgICBMVmFsdWUgYnV0dGVyZmx5ID0gbV9vdXQu
YWRkKHN0YXJ0T2ZTdG9yYWdlLCBtX291dC5jb25zdEludFB0cihzaXplb2YoSW5kZXhpbmdIZWFk
ZXIpKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZ2VuZXJhdG9yL0RTTC5yYgo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZ2VuZXJhdG9yL0RTTC5yYgkocmV2aXNp
b24gMjg2MDk1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2dlbmVyYXRvci9EU0wucmIJKHdv
cmtpbmcgY29weSkKQEAgLTEsNCArMSw0IEBACi0jIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIENvcHlyaWdodCAoQykgMjAxOC0yMDIxIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICMKICMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAjIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpA
QCAtMTQ3LDYgKzE0Nyw4IEBAIG1vZHVsZSBEU0wKIAogbmFtZXNwYWNlIEpTQyB7CiAKK2NsYXNz
IEJhc2ljQmxvY2tMb2NhdGlvbjsKKwogdm9pZCBkdW1wQnl0ZWNvZGUoQnl0ZWNvZGVEdW1wZXJC
YXNlKiBkdW1wZXIsIEluc3RydWN0aW9uU3RyZWFtOjpPZmZzZXQsIGNvbnN0IEluc3RydWN0aW9u
Kik7CiAKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9Db2RlQmxvY2tTZXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9Db2RlQmxvY2tTZXQuaAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvQ29kZUJsb2NrU2V0LmgJKHdvcmtpbmcgY29weSkKQEAgLTY2LDggKzY2
LDYgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+IHZvaWQgaXRlcmF0
ZShjb25zdCBGdW5jdG9yJik7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4gdm9pZCBp
dGVyYXRlKGNvbnN0IEFic3RyYWN0TG9ja2VyJiwgY29uc3QgRnVuY3RvciYpOwogCi0gICAgdGVt
cGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4gdm9pZCBpdGVyYXRlVmlhU3Vic3BhY2VzKFZNJiwgY29u
c3QgRnVuY3RvciYpOwotICAgIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+IHZvaWQg
aXRlcmF0ZUN1cnJlbnRseUV4ZWN1dGluZyhjb25zdCBGdW5jdG9yJik7CiAgICAgCiAgICAgdm9p
ZCBkdW1wKFByaW50U3RyZWFtJikgY29uc3Q7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9Db2RlQmxvY2tTZXRJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvQ29kZUJsb2NrU2V0SW5saW5lcy5oCShyZXZpc2lvbiAyODYwOTUpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Db2RlQmxvY2tTZXRJbmxpbmVzLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTYwLDE4ICs2MCw2IEBAIHZvaWQgQ29kZUJsb2NrU2V0OjppdGVyYXRlKGNvbnN0
IEFic3RyYWMKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4KLXZvaWQgQ29kZUJsb2Nr
U2V0OjppdGVyYXRlVmlhU3Vic3BhY2VzKFZNJiB2bSwgY29uc3QgRnVuY3RvciYgZnVuY3RvcikK
LXsKLSAgICB2bS5mb3JFYWNoQ29kZUJsb2NrU3BhY2UoCi0gICAgICAgIFsmXSAoYXV0byYgc3Bh
Y2VBbmRTZXQpIHsKLSAgICAgICAgICAgIHNwYWNlQW5kU2V0LnNwYWNlLmZvckVhY2hMaXZlQ2Vs
bCgKLSAgICAgICAgICAgICAgICBbJl0gKEhlYXBDZWxsKiBjZWxsLCBIZWFwQ2VsbDo6S2luZCkg
ewotICAgICAgICAgICAgICAgICAgICBmdW5jdG9yKGpzQ2FzdDxDb2RlQmxvY2sqPihzdGF0aWNf
Y2FzdDxKU0NlbGwqPihjZWxsKSkpOwotICAgICAgICAgICAgICAgIH0pOwotICAgICAgICB9KTsK
LX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4KIHZvaWQgQ29kZUJsb2NrU2V0OjppdGVy
YXRlQ3VycmVudGx5RXhlY3V0aW5nKGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3IpCiB7CiAgICAgTG9j
a2VyIGxvY2tlciB7IG1fbG9jayB9OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
SGVhcC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5j
cHAJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMSwxMyArMjEsMjAgQEAKICNpbmNsdWRlICJjb25maWcu
aCIKICNpbmNsdWRlICJIZWFwLmgiCiAKKyNpbmNsdWRlICJCaWdJbnRPYmplY3QuaCIKKyNpbmNs
dWRlICJCb29sZWFuT2JqZWN0LmgiCisjaW5jbHVkZSAiQnJhbmRlZFN0cnVjdHVyZS5oIgogI2lu
Y2x1ZGUgIkJ1aWx0aW5FeGVjdXRhYmxlcy5oIgorI2luY2x1ZGUgIkNsb25lZEFyZ3VtZW50cy5o
IgogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgogI2luY2x1ZGUgIkNvZGVCbG9ja1NldElubGluZXMu
aCIKICNpbmNsdWRlICJDb2xsZWN0aW5nU2NvcGUuaCIKICNpbmNsdWRlICJDb25zZXJ2YXRpdmVS
b290cy5oIgorI2luY2x1ZGUgIkRhdGVJbnN0YW5jZS5oIgorI2luY2x1ZGUgIkRlYnVnZ2VyU2Nv
cGUuaCIKICNpbmNsdWRlICJFZGVuR0NBY3Rpdml0eUNhbGxiYWNrLmgiCiAjaW5jbHVkZSAiRXhj
ZXB0aW9uLmgiCisjaW5jbHVkZSAiRmFzdE1hbGxvY0FsaWduZWRNZW1vcnlBbGxvY2F0b3IuaCIK
ICNpbmNsdWRlICJGdWxsR0NBY3Rpdml0eUNhbGxiYWNrLmgiCiAjaW5jbHVkZSAiRnVuY3Rpb25F
eGVjdXRhYmxlSW5saW5lcy5oIgogI2luY2x1ZGUgIkdDQWN0aXZpdHlDYWxsYmFjay5oIgpAQCAt
MzUsNiArNDIsNyBAQAogI2luY2x1ZGUgIkdDSW5jb21pbmdSZWZDb3VudGVkU2V0SW5saW5lcy5o
IgogI2luY2x1ZGUgIkdDU2VnbWVudGVkQXJyYXlJbmxpbmVzLmgiCiAjaW5jbHVkZSAiR0NUeXBl
TWFwLmgiCisjaW5jbHVkZSAiR2V0dGVyU2V0dGVyLmgiCiAjaW5jbHVkZSAiSGFzT3duUHJvcGVy
dHlDYWNoZS5oIgogI2luY2x1ZGUgIkhlYXBIZWxwZXJQb29sLmgiCiAjaW5jbHVkZSAiSGVhcEl0
ZXJhdGlvblNjb3BlLmgiCkBAIC00MywzNyArNTEsMTE5IEBACiAjaW5jbHVkZSAiSGVhcFZlcmlm
aWVyLmgiCiAjaW5jbHVkZSAiSW5jcmVtZW50YWxTd2VlcGVyLmgiCiAjaW5jbHVkZSAiSW50ZXJw
cmV0ZXIuaCIKKyNpbmNsdWRlICJJbnRsQ29sbGF0b3IuaCIKKyNpbmNsdWRlICJJbnRsRGF0ZVRp
bWVGb3JtYXQuaCIKKyNpbmNsdWRlICJJbnRsRGlzcGxheU5hbWVzLmgiCisjaW5jbHVkZSAiSW50
bExpc3RGb3JtYXQuaCIKKyNpbmNsdWRlICJJbnRsTG9jYWxlLmgiCisjaW5jbHVkZSAiSW50bE51
bWJlckZvcm1hdC5oIgorI2luY2x1ZGUgIkludGxQbHVyYWxSdWxlcy5oIgorI2luY2x1ZGUgIklu
dGxSZWxhdGl2ZVRpbWVGb3JtYXQuaCIKKyNpbmNsdWRlICJJbnRsU2VnbWVudEl0ZXJhdG9yLmgi
CisjaW5jbHVkZSAiSW50bFNlZ21lbnRlci5oIgorI2luY2x1ZGUgIkludGxTZWdtZW50cy5oIgog
I2luY2x1ZGUgIklzb0NlbGxTZXRJbmxpbmVzLmgiCisjaW5jbHVkZSAiSXNvSGVhcENlbGxUeXBl
SW5saW5lcy5oIgorI2luY2x1ZGUgIklzb0lubGluZWRIZWFwQ2VsbFR5cGVJbmxpbmVzLmgiCiAj
aW5jbHVkZSAiSklUU3R1YlJvdXRpbmVTZXQuaCIKICNpbmNsdWRlICJKSVRXb3JrbGlzdElubGlu
ZXMuaCIKKyNpbmNsdWRlICJKU0FQSUdsb2JhbE9iamVjdC5oIgorI2luY2x1ZGUgIkpTQVBJVmFs
dWVXcmFwcGVyLmgiCisjaW5jbHVkZSAiSlNBUElXcmFwcGVyT2JqZWN0LmgiCisjaW5jbHVkZSAi
SlNBcnJheS5oIgorI2luY2x1ZGUgIkpTQXJyYXlCdWZmZXIuaCIKKyNpbmNsdWRlICJKU0FycmF5
SXRlcmF0b3IuaCIKKyNpbmNsdWRlICJKU0FzeW5jR2VuZXJhdG9yLmgiCisjaW5jbHVkZSAiSlNC
aWdJbnQuaCIKKyNpbmNsdWRlICJKU0JvdW5kRnVuY3Rpb24uaCIKKyNpbmNsdWRlICJKU0NhbGxi
YWNrQ29uc3RydWN0b3IuaCIKKyNpbmNsdWRlICJKU0NhbGxiYWNrRnVuY3Rpb24uaCIKKyNpbmNs
dWRlICJKU0NhbGxiYWNrT2JqZWN0LmgiCisjaW5jbHVkZSAiSlNDYWxsZWUuaCIKKyNpbmNsdWRl
ICJKU0N1c3RvbUdldHRlckZ1bmN0aW9uLmgiCisjaW5jbHVkZSAiSlNDdXN0b21TZXR0ZXJGdW5j
dGlvbi5oIgorI2luY2x1ZGUgIkpTRGF0YVZpZXcuaCIKICNpbmNsdWRlICJKU0ZpbmFsaXphdGlv
blJlZ2lzdHJ5LmgiCisjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgorI2luY2x1ZGUgIkpTR2xvYmFs
TGV4aWNhbEVudmlyb25tZW50LmgiCisjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKKyNpbmNs
dWRlICJKU0luamVjdGVkU2NyaXB0SG9zdC5oIgorI2luY2x1ZGUgIkpTSmF2YVNjcmlwdENhbGxG
cmFtZS5oIgorI2luY2x1ZGUgIkpTTWFwLmgiCisjaW5jbHVkZSAiSlNNYXBJdGVyYXRvci5oIgor
I2luY2x1ZGUgIkpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0LmgiCisjaW5jbHVkZSAiSlNNb2R1bGVS
ZWNvcmQuaCIKKyNpbmNsdWRlICJKU05hdGl2ZVN0ZEZ1bmN0aW9uLmgiCisjaW5jbHVkZSAiSlNQ
cm9taXNlLmgiCisjaW5jbHVkZSAiSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yLmgiCisjaW5jbHVk
ZSAiSlNQcm94eS5oIgorI2luY2x1ZGUgIkpTU2NyaXB0RmV0Y2hQYXJhbWV0ZXJzLmgiCisjaW5j
bHVkZSAiSlNTY3JpcHRGZXRjaGVyLmgiCisjaW5jbHVkZSAiSlNTZXQuaCIKKyNpbmNsdWRlICJK
U1NldEl0ZXJhdG9yLmgiCisjaW5jbHVkZSAiSlNTb3VyY2VDb2RlLmgiCisjaW5jbHVkZSAiSlNT
dHJpbmcuaCIKKyNpbmNsdWRlICJKU1N0cmluZ0l0ZXJhdG9yLmgiCisjaW5jbHVkZSAiSlNUZW1w
bGF0ZU9iamVjdERlc2NyaXB0b3IuaCIKKyNpbmNsdWRlICJKU1RvV2FzbUlDQ2FsbGVlLmgiCisj
aW5jbHVkZSAiSlNUeXBlZEFycmF5cy5oIgogI2luY2x1ZGUgIkpTVmlydHVhbE1hY2hpbmVJbnRl
cm5hbC5oIgogI2luY2x1ZGUgIkpTV2Vha01hcC5oIgogI2luY2x1ZGUgIkpTV2Vha09iamVjdFJl
Zi5oIgogI2luY2x1ZGUgIkpTV2Vha1NldC5oIgogI2luY2x1ZGUgIkpTV2ViQXNzZW1ibHlDb2Rl
QmxvY2suaCIKKyNpbmNsdWRlICJKU1dlYkFzc2VtYmx5RXhjZXB0aW9uLmgiCisjaW5jbHVkZSAi
SlNXZWJBc3NlbWJseUdsb2JhbC5oIgorI2luY2x1ZGUgIkpTV2ViQXNzZW1ibHlJbnN0YW5jZS5o
IgorI2luY2x1ZGUgIkpTV2ViQXNzZW1ibHlNZW1vcnkuaCIKKyNpbmNsdWRlICJKU1dlYkFzc2Vt
Ymx5TW9kdWxlLmgiCisjaW5jbHVkZSAiSlNXZWJBc3NlbWJseVRhYmxlLmgiCisjaW5jbHVkZSAi
SlNXZWJBc3NlbWJseVRhZy5oIgorI2luY2x1ZGUgIkpTV2l0aFNjb3BlLmgiCiAjaW5jbHVkZSAi
TWFjaGluZVN0YWNrTWFya2VyLmgiCiAjaW5jbHVkZSAiTWFya1N0YWNrTWVyZ2luZ0NvbnN0cmFp
bnQuaCIKICNpbmNsdWRlICJNYXJrZWRKU1ZhbHVlUmVmQXJyYXkuaCIKICNpbmNsdWRlICJNYXJr
ZWRTcGFjZUlubGluZXMuaCIKICNpbmNsdWRlICJNYXJraW5nQ29uc3RyYWludFNldC5oIgorI2lu
Y2x1ZGUgIk5hdGl2ZUV4ZWN1dGFibGUuaCIKICNpbmNsdWRlICJQcmV2ZW50Q29sbGVjdGlvblNj
b3BlLmgiCisjaW5jbHVkZSAiUHJvZ3JhbUV4ZWN1dGFibGUuaCIKKyNpbmNsdWRlICJQcm9wZXJ0
eVRhYmxlLmgiCisjaW5jbHVkZSAiUHJveHlSZXZva2UuaCIKKyNpbmNsdWRlICJSZWdFeHBPYmpl
Y3QuaCIKICNpbmNsdWRlICJTYW1wbGluZ1Byb2ZpbGVyLmgiCisjaW5jbHVkZSAiU2NvcGVkQXJn
dW1lbnRzLmgiCiAjaW5jbHVkZSAiU2hhZG93Q2hpY2tlbi5oIgorI2luY2x1ZGUgIlNoYWRvd1Jl
YWxtT2JqZWN0LmgiCiAjaW5jbHVkZSAiU3BhY2VUaW1lTXV0YXRvclNjaGVkdWxlci5oIgogI2lu
Y2x1ZGUgIlN0b2NoYXN0aWNTcGFjZVRpbWVNdXRhdG9yU2NoZWR1bGVyLmgiCiAjaW5jbHVkZSAi
U3RvcElmTmVjZXNzYXJ5VGltZXIuaCIKKyNpbmNsdWRlICJTdHJpY3RFdmFsQWN0aXZhdGlvbi5o
IgorI2luY2x1ZGUgIlN0cmluZ09iamVjdC5oIgorI2luY2x1ZGUgIlN0cnVjdHVyZUNoYWluLmgi
CiAjaW5jbHVkZSAiU3Vic3BhY2VJbmxpbmVzLmgiCiAjaW5jbHVkZSAiU3VwZXJTYW1wbGVyLmgi
CiAjaW5jbHVkZSAiU3dlZXBpbmdTY29wZS5oIgorI2luY2x1ZGUgIlN5bWJvbE9iamVjdC5oIgog
I2luY2x1ZGUgIlN5bWJvbFRhYmxlSW5saW5lcy5oIgogI2luY2x1ZGUgIlN5bmNocm9ub3VzU3Rv
cFRoZVdvcmxkTXV0YXRvclNjaGVkdWxlci5oIgorI2luY2x1ZGUgIlRlbXBvcmFsQ2FsZW5kYXIu
aCIKKyNpbmNsdWRlICJUZW1wb3JhbER1cmF0aW9uLmgiCisjaW5jbHVkZSAiVGVtcG9yYWxJbnN0
YW50LmgiCisjaW5jbHVkZSAiVGVtcG9yYWxQbGFpblRpbWUuaCIKKyNpbmNsdWRlICJUZW1wb3Jh
bFRpbWVab25lLmgiCiAjaW5jbHVkZSAiVHlwZVByb2ZpbGVyLmgiCiAjaW5jbHVkZSAiVHlwZVBy
b2ZpbGVyTG9nLmgiCisjaW5jbHVkZSAiVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jay5oIgorI2lu
Y2x1ZGUgIlVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jay5oIgorI2luY2x1ZGUgIlVubGlu
a2VkUHJvZ3JhbUNvZGVCbG9jay5oIgogI2luY2x1ZGUgIlZNLmgiCiAjaW5jbHVkZSAiVmVyaWZp
ZXJTbG90VmlzaXRvcklubGluZXMuaCIKICNpbmNsdWRlICJXZWFrTWFwSW1wbElubGluZXMuaCIK
ICNpbmNsdWRlICJXZWFrU2V0SW5saW5lcy5oIgorI2luY2x1ZGUgIldlYkFzc2VtYmx5RnVuY3Rp
b24uaCIKKyNpbmNsdWRlICJXZWJBc3NlbWJseU1vZHVsZVJlY29yZC5oIgorI2luY2x1ZGUgIldl
YkFzc2VtYmx5V3JhcHBlckZ1bmN0aW9uLmgiCiAjaW5jbHVkZSA8YWxnb3JpdGhtPgogI2luY2x1
ZGUgPHd0Zi9DcnlwdG9ncmFwaGljYWxseVJhbmRvbU51bWJlci5oPgogI2luY2x1ZGUgPHd0Zi9M
aXN0RHVtcC5oPgpAQCAtOTAsNyArMTgwLDEzIEBACiAjaW5jbHVkZSA8d3RmL3NwaS9jb2NvYS9v
YmpjU1BJLmg+CiAjZW5kaWYKIAorI2lmIEpTQ19PQkpDX0FQSV9FTkFCTEVECisjaW5jbHVkZSAi
T2JqQ0NhbGxiYWNrRnVuY3Rpb24uaCIKKyNlbmRpZgorCiAjaWZkZWYgSlNDX0dMSUJfQVBJX0VO
QUJMRUQKKyNpbmNsdWRlICJKU0FQSVdyYXBwZXJHbG9iYWxPYmplY3QuaCIKKyNpbmNsdWRlICJK
U0NDYWxsYmFja0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNDR0xpYldyYXBwZXJPYmplY3QuaCIK
ICNlbmRpZgogCkBAIC0yODYsNiArMzgyLDExNCBAQCBIZWFwOjpIZWFwKFZNJiB2bSwgSGVhcFR5
cGUgaGVhcFR5cGUpCiAgICAgLCBtX2hlbHBlckNsaWVudCgmaGVhcEhlbHBlclBvb2woKSkKICAg
ICAsIG1fdGhyZWFkTG9jayhCb3g8TG9jaz46OmNyZWF0ZSgpKQogICAgICwgbV90aHJlYWRDb25k
aXRpb24oQXV0b21hdGljVGhyZWFkQ29uZGl0aW9uOjpjcmVhdGUoKSkKKworICAgIC8vIEhlYXBD
ZWxsVHlwZXMKKyAgICAsIGF1eGlsaWFyeUhlYXBDZWxsVHlwZShDZWxsQXR0cmlidXRlcyhEb2Vz
Tm90TmVlZERlc3RydWN0aW9uLCBIZWFwQ2VsbDo6QXV4aWxpYXJ5KSkKKyAgICAsIGltbXV0YWJs
ZUJ1dHRlcmZseUhlYXBDZWxsVHlwZShDZWxsQXR0cmlidXRlcyhEb2VzTm90TmVlZERlc3RydWN0
aW9uLCBIZWFwQ2VsbDo6SlNDZWxsV2l0aEluZGV4aW5nSGVhZGVyKSkKKyAgICAsIGNlbGxIZWFw
Q2VsbFR5cGUoQ2VsbEF0dHJpYnV0ZXMoRG9lc05vdE5lZWREZXN0cnVjdGlvbiwgSGVhcENlbGw6
OkpTQ2VsbCkpCisgICAgLCBkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlKENlbGxBdHRyaWJ1
dGVzKE5lZWRzRGVzdHJ1Y3Rpb24sIEhlYXBDZWxsOjpKU0NlbGwpKQorLy8gICAgLCBhcGlHbG9i
YWxPYmplY3RIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpBcmdzPEpTQVBJR2xvYmFsT2Jq
ZWN0PigpKQorLy8gICAgLCBjYWxsYmFja0NvbnN0cnVjdG9ySGVhcENlbGxUeXBlKElzb0hlYXBD
ZWxsVHlwZTo6QXJnczxKU0NhbGxiYWNrQ29uc3RydWN0b3I+KCkpCisvLyAgICAsIGNhbGxiYWNr
R2xvYmFsT2JqZWN0SGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6QXJnczxKU0NhbGxiYWNr
T2JqZWN0PEpTR2xvYmFsT2JqZWN0Pj4oKSkKKy8vICAgICwgY2FsbGJhY2tPYmplY3RIZWFwQ2Vs
bFR5cGUoSXNvSGVhcENlbGxUeXBlOjpBcmdzPEpTQ2FsbGJhY2tPYmplY3Q8SlNOb25GaW5hbE9i
amVjdD4+KCkpCisvLyAgICAsIGN1c3RvbUdldHRlckZ1bmN0aW9uSGVhcENlbGxUeXBlKElzb0hl
YXBDZWxsVHlwZTo6QXJnczxKU0N1c3RvbUdldHRlckZ1bmN0aW9uPigpKQorLy8gICAgLCBjdXN0
b21TZXR0ZXJGdW5jdGlvbkhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OkFyZ3M8SlNDdXN0
b21TZXR0ZXJGdW5jdGlvbj4oKSkKKy8vICAgICwgZGF0ZUluc3RhbmNlSGVhcENlbGxUeXBlKElz
b0hlYXBDZWxsVHlwZTo6QXJnczxEYXRlSW5zdGFuY2U+KCkpCisvLyAgICAsIGVycm9ySW5zdGFu
Y2VIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpBcmdzPEVycm9ySW5zdGFuY2U+KCkpCisv
LyAgICAsIGZpbmFsaXphdGlvblJlZ2lzdHJ5Q2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpBcmdz
PEpTRmluYWxpemF0aW9uUmVnaXN0cnk+KCkpCisvLyAgICAsIGdsb2JhbExleGljYWxFbnZpcm9u
bWVudEhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OkFyZ3M8SlNHbG9iYWxMZXhpY2FsRW52
aXJvbm1lbnQ+KCkpCisvLyAgICAsIGdsb2JhbE9iamVjdEhlYXBDZWxsVHlwZShJc29IZWFwQ2Vs
bFR5cGU6OkFyZ3M8SlNHbG9iYWxPYmplY3Q+KCkpCisvLyAgICAsIGluamVjdGVkU2NyaXB0SG9z
dFNwYWNlSGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6QXJnczxJbnNwZWN0b3I6OkpTSW5q
ZWN0ZWRTY3JpcHRIb3N0PigpKQorLy8gICAgLCBqYXZhU2NyaXB0Q2FsbEZyYW1lSGVhcENlbGxU
eXBlKElzb0hlYXBDZWxsVHlwZTo6QXJnczxJbnNwZWN0b3I6OkpTSmF2YVNjcmlwdENhbGxGcmFt
ZT4oKSkKKy8vICAgICwganNNb2R1bGVSZWNvcmRIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBl
OjpBcmdzPEpTTW9kdWxlUmVjb3JkPigpKQorLy8gICAgLCBtb2R1bGVOYW1lc3BhY2VPYmplY3RI
ZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpBcmdzPEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0
PigpKQorLy8gICAgLCBuYXRpdmVTdGRGdW5jdGlvbkhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5
cGU6OkFyZ3M8SlNOYXRpdmVTdGRGdW5jdGlvbj4oKSkKKy8vICAgICwgd2Vha01hcEhlYXBDZWxs
VHlwZShJc29IZWFwQ2VsbFR5cGU6OkFyZ3M8SlNXZWFrTWFwPigpKQorLy8gICAgLCB3ZWFrU2V0
SGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6QXJnczxKU1dlYWtTZXQ+KCkpCisjaWYgSlND
X09CSkNfQVBJX0VOQUJMRUQKKy8vICAgICwgYXBpV3JhcHBlck9iamVjdEhlYXBDZWxsVHlwZShJ
c29IZWFwQ2VsbFR5cGU6OkFyZ3M8SlNDYWxsYmFja09iamVjdDxKU0FQSVdyYXBwZXJPYmplY3Q+
PigpKQorLy8gICAgLCBvYmpDQ2FsbGJhY2tGdW5jdGlvbkhlYXBDZWxsVHlwZShJc29IZWFwQ2Vs
bFR5cGU6OkFyZ3M8T2JqQ0NhbGxiYWNrRnVuY3Rpb24+KCkpCisjZW5kaWYKKyNpZmRlZiBKU0Nf
R0xJQl9BUElfRU5BQkxFRAorLy8gICAgLCBhcGlXcmFwcGVyT2JqZWN0SGVhcENlbGxUeXBlKElz
b0hlYXBDZWxsVHlwZTo6QXJnczxKU0NhbGxiYWNrT2JqZWN0PEpTQVBJV3JhcHBlck9iamVjdD4+
KCkpCisvLyAgICAsIGNhbGxiYWNrQVBJV3JhcHBlckdsb2JhbE9iamVjdEhlYXBDZWxsVHlwZShJ
c29IZWFwQ2VsbFR5cGU6OkFyZ3M8SlNDYWxsYmFja09iamVjdDxKU0FQSVdyYXBwZXJHbG9iYWxP
YmplY3Q+PigpKQorLy8gICAgLCBqc2NDYWxsYmFja0Z1bmN0aW9uSGVhcENlbGxUeXBlKElzb0hl
YXBDZWxsVHlwZTo6QXJnczxKU0NDYWxsYmFja0Z1bmN0aW9uPigpKQorI2VuZGlmCisvLyAgICAs
IGludGxDb2xsYXRvckhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OkFyZ3M8SW50bENvbGxh
dG9yPigpKQorLy8gICAgLCBpbnRsRGF0ZVRpbWVGb3JtYXRIZWFwQ2VsbFR5cGUoSXNvSGVhcENl
bGxUeXBlOjpBcmdzPEludGxEYXRlVGltZUZvcm1hdD4oKSkKKy8vICAgICwgaW50bERpc3BsYXlO
YW1lc0hlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OkFyZ3M8SW50bERpc3BsYXlOYW1lcz4o
KSkKKy8vICAgICwgaW50bExpc3RGb3JtYXRIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpB
cmdzPEludGxMaXN0Rm9ybWF0PigpKQorLy8gICAgLCBpbnRsTG9jYWxlSGVhcENlbGxUeXBlKElz
b0hlYXBDZWxsVHlwZTo6QXJnczxJbnRsTG9jYWxlPigpKQorLy8gICAgLCBpbnRsTnVtYmVyRm9y
bWF0SGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6QXJnczxJbnRsTnVtYmVyRm9ybWF0Pigp
KQorLy8gICAgLCBpbnRsUGx1cmFsUnVsZXNIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpB
cmdzPEludGxQbHVyYWxSdWxlcz4oKSkKKy8vICAgICwgaW50bFJlbGF0aXZlVGltZUZvcm1hdEhl
YXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OkFyZ3M8SW50bFJlbGF0aXZlVGltZUZvcm1hdD4o
KSkKKy8vICAgICwgaW50bFNlZ21lbnRJdGVyYXRvckhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5
cGU6OkFyZ3M8SW50bFNlZ21lbnRJdGVyYXRvcj4oKSkKKy8vICAgICwgaW50bFNlZ21lbnRlckhl
YXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OkFyZ3M8SW50bFNlZ21lbnRlcj4oKSkKKy8vICAg
ICwgaW50bFNlZ21lbnRzSGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6QXJnczxJbnRsU2Vn
bWVudHM+KCkpCisjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQorLy8gICAgLCB3ZWJBc3NlbWJseUNv
ZGVCbG9ja0hlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OkFyZ3M8SlNXZWJBc3NlbWJseUNv
ZGVCbG9jaz4oKSkKKy8vICAgICwgd2ViQXNzZW1ibHlFeGNlcHRpb25IZWFwQ2VsbFR5cGUoSXNv
SGVhcENlbGxUeXBlOjpBcmdzPEpTV2ViQXNzZW1ibHlFeGNlcHRpb24+KCkpCisvLyAgICAsIHdl
YkFzc2VtYmx5RnVuY3Rpb25IZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpBcmdzPFdlYkFz
c2VtYmx5RnVuY3Rpb24+KCkpCisvLyAgICAsIHdlYkFzc2VtYmx5R2xvYmFsSGVhcENlbGxUeXBl
KElzb0hlYXBDZWxsVHlwZTo6QXJnczxKU1dlYkFzc2VtYmx5R2xvYmFsPigpKQorLy8gICAgLCB3
ZWJBc3NlbWJseUluc3RhbmNlSGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6QXJnczxKU1dl
YkFzc2VtYmx5SW5zdGFuY2U+KCkpCisvLyAgICAsIHdlYkFzc2VtYmx5TWVtb3J5SGVhcENlbGxU
eXBlKElzb0hlYXBDZWxsVHlwZTo6QXJnczxKU1dlYkFzc2VtYmx5TWVtb3J5PigpKQorLy8gICAg
LCB3ZWJBc3NlbWJseU1vZHVsZUhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OkFyZ3M8SlNX
ZWJBc3NlbWJseU1vZHVsZT4oKSkKKy8vICAgICwgd2ViQXNzZW1ibHlNb2R1bGVSZWNvcmRIZWFw
Q2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpBcmdzPFdlYkFzc2VtYmx5TW9kdWxlUmVjb3JkPigp
KQorLy8gICAgLCB3ZWJBc3NlbWJseVRhYmxlSGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6
QXJnczxKU1dlYkFzc2VtYmx5VGFibGU+KCkpCisvLyAgICAsIHdlYkFzc2VtYmx5VGFnSGVhcENl
bGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6QXJnczxKU1dlYkFzc2VtYmx5VGFnPigpKQorI2VuZGlm
CisKKyAgICAvLyBBbGlnbmVkTWVtb3J5QWxsb2NhdG9ycworICAgICwgZmFzdE1hbGxvY0FsbG9j
YXRvcihtYWtlVW5pcXVlPEZhc3RNYWxsb2NBbGlnbmVkTWVtb3J5QWxsb2NhdG9yPigpKQorICAg
ICwgcHJpbWl0aXZlR2lnYWNhZ2VBbGxvY2F0b3IobWFrZVVuaXF1ZTxHaWdhY2FnZUFsaWduZWRN
ZW1vcnlBbGxvY2F0b3I+KEdpZ2FjYWdlOjpQcmltaXRpdmUpKQorICAgICwganNWYWx1ZUdpZ2Fj
YWdlQWxsb2NhdG9yKG1ha2VVbmlxdWU8R2lnYWNhZ2VBbGlnbmVkTWVtb3J5QWxsb2NhdG9yPihH
aWdhY2FnZTo6SlNWYWx1ZSkpCisKKyAgICAvLyBTdWJzcGFjZXMKKyAgICAsIHByaW1pdGl2ZUdp
Z2FjYWdlQXV4aWxpYXJ5U3BhY2UoIlByaW1pdGl2ZSBHaWdhY2FnZSBBdXhpbGlhcnkiLCAqdGhp
cywgYXV4aWxpYXJ5SGVhcENlbGxUeXBlLCBwcmltaXRpdmVHaWdhY2FnZUFsbG9jYXRvci5nZXQo
KSkgLy8gSGFzaDoweDNlN2NkNzYyCisgICAgLCBqc1ZhbHVlR2lnYWNhZ2VBdXhpbGlhcnlTcGFj
ZSgiSlNWYWx1ZSBHaWdhY2FnZSBBdXhpbGlhcnkiLCAqdGhpcywgYXV4aWxpYXJ5SGVhcENlbGxU
eXBlLCBqc1ZhbHVlR2lnYWNhZ2VBbGxvY2F0b3IuZ2V0KCkpIC8vIEhhc2g6MHgyNDFlOTQ2Cisg
ICAgLCBpbW11dGFibGVCdXR0ZXJmbHlKU1ZhbHVlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZSgiSW1t
dXRhYmxlQnV0dGVyZmx5IEdpZ2FjYWdlIEpTQ2VsbFdpdGhJbmRleGluZ0hlYWRlciIsICp0aGlz
LCBpbW11dGFibGVCdXR0ZXJmbHlIZWFwQ2VsbFR5cGUsIGpzVmFsdWVHaWdhY2FnZUFsbG9jYXRv
ci5nZXQoKSkgLy8gSGFzaDoweDdhOTQ1MzAwCisgICAgLCBjZWxsU3BhY2UoIkpTQ2VsbCIsICp0
aGlzLCBjZWxsSGVhcENlbGxUeXBlLCBmYXN0TWFsbG9jQWxsb2NhdG9yLmdldCgpKSAvLyBIYXNo
OjB4YWRmYjVhNzkKKyAgICAsIHZhcmlhYmxlU2l6ZWRDZWxsU3BhY2UoIlZhcmlhYmxlIFNpemVk
IEpTQ2VsbCIsICp0aGlzLCBjZWxsSGVhcENlbGxUeXBlLCBmYXN0TWFsbG9jQWxsb2NhdG9yLmdl
dCgpKSAvLyBIYXNoOjB4YmNkNzY5Y2MKKyAgICAsIGRlc3RydWN0aWJsZU9iamVjdFNwYWNlKCJK
U0Rlc3RydWN0aWJsZU9iamVjdCIsICp0aGlzLCBkZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5
cGUsIGZhc3RNYWxsb2NBbGxvY2F0b3IuZ2V0KCkpIC8vIEhhc2g6MHg0ZjVlZDdhOQorICAgICwg
YXJyYXlTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVCgqdGhpcywgY2VsbEhlYXBDZWxsVHlwZSwgSlNB
cnJheSkKKyAgICAsIGJpZ0ludFNwYWNlIElTT19TVUJTUEFDRV9JTklUKCp0aGlzLCBjZWxsSGVh
cENlbGxUeXBlLCBKU0JpZ0ludCkKKyAgICAsIGNhbGxlZVNwYWNlIElTT19TVUJTUEFDRV9JTklU
KCp0aGlzLCBjZWxsSGVhcENlbGxUeXBlLCBKU0NhbGxlZSkKKyAgICAsIGNsb25lZEFyZ3VtZW50
c1NwYWNlIElTT19TVUJTUEFDRV9JTklUKCp0aGlzLCBjZWxsSGVhcENlbGxUeXBlLCBDbG9uZWRB
cmd1bWVudHMpCisgICAgLCBjdXN0b21HZXR0ZXJTZXR0ZXJTcGFjZSBJU09fU1VCU1BBQ0VfSU5J
VCgqdGhpcywgY2VsbEhlYXBDZWxsVHlwZSwgQ3VzdG9tR2V0dGVyU2V0dGVyKQorICAgICwgZGF0
ZUluc3RhbmNlU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoKnRoaXMsIGRhdGVJbnN0YW5jZUhlYXBD
ZWxsVHlwZSwgRGF0ZUluc3RhbmNlKQorICAgICwgZG9tQXR0cmlidXRlR2V0dGVyU2V0dGVyU3Bh
Y2UgSVNPX1NVQlNQQUNFX0lOSVQoKnRoaXMsIGNlbGxIZWFwQ2VsbFR5cGUsIERPTUF0dHJpYnV0
ZUdldHRlclNldHRlcikKKyAgICAsIGV4Y2VwdGlvblNwYWNlIElTT19TVUJTUEFDRV9JTklUKCp0
aGlzLCBkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlLCBFeGNlcHRpb24pCisgICAgLCBleGVj
dXRhYmxlVG9Db2RlQmxvY2tFZGdlU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoKnRoaXMsIGNlbGxI
ZWFwQ2VsbFR5cGUsIEV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2UpIC8vIEhhc2g6MHg3YjczMGIy
MAorICAgICwgZnVuY3Rpb25TcGFjZSBJU09fU1VCU1BBQ0VfSU5JVCgqdGhpcywgY2VsbEhlYXBD
ZWxsVHlwZSwgSlNGdW5jdGlvbikgLy8gSGFzaDoweDgwMGZjYTcyCisgICAgLCBnZXR0ZXJTZXR0
ZXJTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVCgqdGhpcywgY2VsbEhlYXBDZWxsVHlwZSwgR2V0dGVy
U2V0dGVyKQorICAgICwgZ2xvYmFsTGV4aWNhbEVudmlyb25tZW50U3BhY2UgSVNPX1NVQlNQQUNF
X0lOSVQoKnRoaXMsIGdsb2JhbExleGljYWxFbnZpcm9ubWVudEhlYXBDZWxsVHlwZSwgSlNHbG9i
YWxMZXhpY2FsRW52aXJvbm1lbnQpCisgICAgLCBpbnRlcm5hbEZ1bmN0aW9uU3BhY2UgSVNPX1NV
QlNQQUNFX0lOSVQoKnRoaXMsIGNlbGxIZWFwQ2VsbFR5cGUsIEludGVybmFsRnVuY3Rpb24pIC8v
IEhhc2g6MHhmODQ1YzQ2NAorICAgICwganNQcm94eVNwYWNlIElTT19TVUJTUEFDRV9JTklUKCp0
aGlzLCBjZWxsSGVhcENlbGxUeXBlLCBKU1Byb3h5KQorICAgICwgbmF0aXZlRXhlY3V0YWJsZVNw
YWNlIElTT19TVUJTUEFDRV9JTklUKCp0aGlzLCBkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBl
LCBOYXRpdmVFeGVjdXRhYmxlKSAvLyBIYXNoOjB4Njc1NjdmOTUKKyAgICAsIG51bWJlck9iamVj
dFNwYWNlIElTT19TVUJTUEFDRV9JTklUKCp0aGlzLCBjZWxsSGVhcENlbGxUeXBlLCBOdW1iZXJP
YmplY3QpCisgICAgLCBwbGFpbk9iamVjdFNwYWNlIElTT19TVUJTUEFDRV9JTklUKCp0aGlzLCBj
ZWxsSGVhcENlbGxUeXBlLCBKU05vbkZpbmFsT2JqZWN0KSAvLyBNYWlubHkgdXNlZCBmb3IgcHJv
dG90eXBlcy4KKyAgICAsIHByb21pc2VTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVCgqdGhpcywgY2Vs
bEhlYXBDZWxsVHlwZSwgSlNQcm9taXNlKQorICAgICwgcHJvcGVydHlOYW1lRW51bWVyYXRvclNw
YWNlIElTT19TVUJTUEFDRV9JTklUKCp0aGlzLCBjZWxsSGVhcENlbGxUeXBlLCBKU1Byb3BlcnR5
TmFtZUVudW1lcmF0b3IpCisgICAgLCBwcm9wZXJ0eVRhYmxlU3BhY2UgSVNPX1NVQlNQQUNFX0lO
SVQoKnRoaXMsIGRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUsIFByb3BlcnR5VGFibGUpIC8v
IEhhc2g6MHhjNmJjOWYxMgorICAgICwgcmVnRXhwU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoKnRo
aXMsIGRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUsIFJlZ0V4cCkKKyAgICAsIHJlZ0V4cE9i
amVjdFNwYWNlIElTT19TVUJTUEFDRV9JTklUKCp0aGlzLCBjZWxsSGVhcENlbGxUeXBlLCBSZWdF
eHBPYmplY3QpCisgICAgLCByb3BlU3RyaW5nU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoKnRoaXMs
IHN0cmluZ0hlYXBDZWxsVHlwZSwgSlNSb3BlU3RyaW5nKQorICAgICwgc2NvcGVkQXJndW1lbnRz
U3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoKnRoaXMsIGNlbGxIZWFwQ2VsbFR5cGUsIFNjb3BlZEFy
Z3VtZW50cykKKyAgICAsIHNwYXJzZUFycmF5VmFsdWVNYXBTcGFjZSBJU09fU1VCU1BBQ0VfSU5J
VCgqdGhpcywgZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZSwgU3BhcnNlQXJyYXlWYWx1ZU1h
cCkKKyAgICAsIHN0cmluZ1NwYWNlIElTT19TVUJTUEFDRV9JTklUKCp0aGlzLCBzdHJpbmdIZWFw
Q2VsbFR5cGUsIEpTU3RyaW5nKSAvLyBIYXNoOjB4OTBjZjc1OGYKKyAgICAsIHN0cmluZ09iamVj
dFNwYWNlIElTT19TVUJTUEFDRV9JTklUKCp0aGlzLCBjZWxsSGVhcENlbGxUeXBlLCBTdHJpbmdP
YmplY3QpCisgICAgLCBzdHJ1Y3R1cmVDaGFpblNwYWNlIElTT19TVUJTUEFDRV9JTklUKCp0aGlz
LCBjZWxsSGVhcENlbGxUeXBlLCBTdHJ1Y3R1cmVDaGFpbikKKyAgICAsIHN0cnVjdHVyZVJhcmVE
YXRhU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoKnRoaXMsIGRlc3RydWN0aWJsZUNlbGxIZWFwQ2Vs
bFR5cGUsIFN0cnVjdHVyZVJhcmVEYXRhKSAvLyBIYXNoOjB4YWNhNGU2MmQKKyAgICAsIHN0cnVj
dHVyZVNwYWNlIElTT19TVUJTUEFDRV9JTklUKCp0aGlzLCBkZXN0cnVjdGlibGVDZWxsSGVhcENl
bGxUeXBlLCBTdHJ1Y3R1cmUpIC8vIEhhc2g6MHgxZjFiY2RjYQorICAgICwgYnJhbmRlZFN0cnVj
dHVyZVNwYWNlIElTT19TVUJTUEFDRV9JTklUKCp0aGlzLCBkZXN0cnVjdGlibGVDZWxsSGVhcENl
bGxUeXBlLCBCcmFuZGVkU3RydWN0dXJlKQorICAgICwgc3ltYm9sVGFibGVTcGFjZSBJU09fU1VC
U1BBQ0VfSU5JVCgqdGhpcywgZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZSwgU3ltYm9sVGFi
bGUpIC8vIEhhc2g6MHhjNTIxNWFmZAorICAgICwgZXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZXNX
aXRoQ29uc3RyYWludHMoZXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZVNwYWNlKQorICAgICwgZXhl
Y3V0YWJsZVRvQ29kZUJsb2NrRWRnZXNXaXRoRmluYWxpemVycyhleGVjdXRhYmxlVG9Db2RlQmxv
Y2tFZGdlU3BhY2UpCisgICAgLCBjb2RlQmxvY2tTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVCgqdGhp
cywgZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZSwgQ29kZUJsb2NrKSAvLyBIYXNoOjB4Nzdl
NjZlYzkKKyAgICAsIGZ1bmN0aW9uRXhlY3V0YWJsZVNwYWNlIElTT19TVUJTUEFDRV9JTklUKCp0
aGlzLCBkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlLCBGdW5jdGlvbkV4ZWN1dGFibGUpIC8v
IEhhc2g6MHg1ZDE1OGYzCisgICAgLCBwcm9ncmFtRXhlY3V0YWJsZVNwYWNlIElTT19TVUJTUEFD
RV9JTklUKCp0aGlzLCBkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlLCBQcm9ncmFtRXhlY3V0
YWJsZSkgLy8gSGFzaDoweDUyN2M3N2U3CisgICAgLCB1bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJs
ZVNwYWNlIElTT19TVUJTUEFDRV9JTklUKCp0aGlzLCBkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxU
eXBlLCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSkgLy8gSGFzaDoweGY2YjgyOGQ5CisKIHsK
ICAgICBtX3dvcmxkU3RhdGUuc3RvcmUoMCk7CiAKQEAgLTU3OSwzMSArNzgzLDMxIEBAIHZvaWQg
SGVhcDo6ZmluYWxpemVVbmNvbmRpdGlvbmFsRmluYWxpemUKIHsKICAgICBWTSYgdm0gPSB0aGlz
LT52bSgpOwogICAgIHZtLmJ1aWx0aW5FeGVjdXRhYmxlcygpLT5maW5hbGl6ZVVuY29uZGl0aW9u
YWxseSgpOwotICAgIGZpbmFsaXplTWFya2VkVW5jb25kaXRpb25hbEZpbmFsaXplcnM8RnVuY3Rp
b25FeGVjdXRhYmxlPih2bS5mdW5jdGlvbkV4ZWN1dGFibGVTcGFjZS5zcGFjZSk7Ci0gICAgZmlu
YWxpemVNYXJrZWRVbmNvbmRpdGlvbmFsRmluYWxpemVyczxTeW1ib2xUYWJsZT4odm0uc3ltYm9s
VGFibGVTcGFjZSk7Ci0gICAgZmluYWxpemVNYXJrZWRVbmNvbmRpdGlvbmFsRmluYWxpemVyczxF
eGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlPih2bS5leGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlc1dp
dGhGaW5hbGl6ZXJzKTsgLy8gV2UgcnVuIHRoaXMgYmVmb3JlIENvZGVCbG9jaydzIHVuY29uZGl0
aW9uYWwgZmluYWxpemVyIHNpbmNlIENvZGVCbG9jayBsb29rcyBhdCB0aGUgb3duZXIgZXhlY3V0
YWJsZSdzIGluc3RhbGxlZCBDb2RlQmxvY2sgaW4gaXRzIGZpbmFsaXplVW5jb25kaXRpb25hbGx5
LgotICAgIHZtLmZvckVhY2hDb2RlQmxvY2tTcGFjZSgKKyAgICBmaW5hbGl6ZU1hcmtlZFVuY29u
ZGl0aW9uYWxGaW5hbGl6ZXJzPEZ1bmN0aW9uRXhlY3V0YWJsZT4oZnVuY3Rpb25FeGVjdXRhYmxl
U3BhY2Uuc3BhY2UpOworICAgIGZpbmFsaXplTWFya2VkVW5jb25kaXRpb25hbEZpbmFsaXplcnM8
U3ltYm9sVGFibGU+KHN5bWJvbFRhYmxlU3BhY2UpOworICAgIGZpbmFsaXplTWFya2VkVW5jb25k
aXRpb25hbEZpbmFsaXplcnM8RXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZT4oZXhlY3V0YWJsZVRv
Q29kZUJsb2NrRWRnZXNXaXRoRmluYWxpemVycyk7IC8vIFdlIHJ1biB0aGlzIGJlZm9yZSBDb2Rl
QmxvY2sncyB1bmNvbmRpdGlvbmFsIGZpbmFsaXplciBzaW5jZSBDb2RlQmxvY2sgbG9va3MgYXQg
dGhlIG93bmVyIGV4ZWN1dGFibGUncyBpbnN0YWxsZWQgQ29kZUJsb2NrIGluIGl0cyBmaW5hbGl6
ZVVuY29uZGl0aW9uYWxseS4KKyAgICBmb3JFYWNoQ29kZUJsb2NrU3BhY2UoCiAgICAgICAgIFsm
XSAoYXV0byYgc3BhY2UpIHsKICAgICAgICAgICAgIHRoaXMtPmZpbmFsaXplTWFya2VkVW5jb25k
aXRpb25hbEZpbmFsaXplcnM8Q29kZUJsb2NrPihzcGFjZS5zZXQpOwogICAgICAgICB9KTsKLSAg
ICBmaW5hbGl6ZU1hcmtlZFVuY29uZGl0aW9uYWxGaW5hbGl6ZXJzPFN0cnVjdHVyZVJhcmVEYXRh
Pih2bS5zdHJ1Y3R1cmVSYXJlRGF0YVNwYWNlKTsKLSAgICBmaW5hbGl6ZU1hcmtlZFVuY29uZGl0
aW9uYWxGaW5hbGl6ZXJzPFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlPih2bS51bmxpbmtlZEZ1
bmN0aW9uRXhlY3V0YWJsZVNwYWNlLnNldCk7Ci0gICAgaWYgKHZtLm1fd2Vha1NldFNwYWNlKQot
ICAgICAgICBmaW5hbGl6ZU1hcmtlZFVuY29uZGl0aW9uYWxGaW5hbGl6ZXJzPEpTV2Vha1NldD4o
KnZtLm1fd2Vha1NldFNwYWNlKTsKLSAgICBpZiAodm0ubV93ZWFrTWFwU3BhY2UpCi0gICAgICAg
IGZpbmFsaXplTWFya2VkVW5jb25kaXRpb25hbEZpbmFsaXplcnM8SlNXZWFrTWFwPigqdm0ubV93
ZWFrTWFwU3BhY2UpOwotICAgIGlmICh2bS5tX3dlYWtPYmplY3RSZWZTcGFjZSkKLSAgICAgICAg
ZmluYWxpemVNYXJrZWRVbmNvbmRpdGlvbmFsRmluYWxpemVyczxKU1dlYWtPYmplY3RSZWY+KCp2
bS5tX3dlYWtPYmplY3RSZWZTcGFjZSk7Ci0gICAgaWYgKHZtLm1fZXJyb3JJbnN0YW5jZVNwYWNl
KQotICAgICAgICBmaW5hbGl6ZU1hcmtlZFVuY29uZGl0aW9uYWxGaW5hbGl6ZXJzPEVycm9ySW5z
dGFuY2U+KCp2bS5tX2Vycm9ySW5zdGFuY2VTcGFjZSk7CisgICAgZmluYWxpemVNYXJrZWRVbmNv
bmRpdGlvbmFsRmluYWxpemVyczxTdHJ1Y3R1cmVSYXJlRGF0YT4oc3RydWN0dXJlUmFyZURhdGFT
cGFjZSk7CisgICAgZmluYWxpemVNYXJrZWRVbmNvbmRpdGlvbmFsRmluYWxpemVyczxVbmxpbmtl
ZEZ1bmN0aW9uRXhlY3V0YWJsZT4odW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGVTcGFjZS5zZXQp
OworICAgIGlmIChtX3dlYWtTZXRTcGFjZSkKKyAgICAgICAgZmluYWxpemVNYXJrZWRVbmNvbmRp
dGlvbmFsRmluYWxpemVyczxKU1dlYWtTZXQ+KCptX3dlYWtTZXRTcGFjZSk7CisgICAgaWYgKG1f
d2Vha01hcFNwYWNlKQorICAgICAgICBmaW5hbGl6ZU1hcmtlZFVuY29uZGl0aW9uYWxGaW5hbGl6
ZXJzPEpTV2Vha01hcD4oKm1fd2Vha01hcFNwYWNlKTsKKyAgICBpZiAobV93ZWFrT2JqZWN0UmVm
U3BhY2UpCisgICAgICAgIGZpbmFsaXplTWFya2VkVW5jb25kaXRpb25hbEZpbmFsaXplcnM8SlNX
ZWFrT2JqZWN0UmVmPigqbV93ZWFrT2JqZWN0UmVmU3BhY2UpOworICAgIGlmIChtX2Vycm9ySW5z
dGFuY2VTcGFjZSkKKyAgICAgICAgZmluYWxpemVNYXJrZWRVbmNvbmRpdGlvbmFsRmluYWxpemVy
czxFcnJvckluc3RhbmNlPigqbV9lcnJvckluc3RhbmNlU3BhY2UpOwogCiAgICAgLy8gRmluYWxp
emF0aW9uUmVnaXN0cmllcyBjdXJyZW50bHkgcmVseSBvbiBzZXJpYWwgZmluYWxpemF0aW9uIGJl
Y2F1c2UgdGhleSBjYW4gcG9zdCB0YXNrcyB0byB0aGUgZGVmZXJyZWRXb3JrVGltZXIsIHdoaWNo
IG5vcm1hbGx5IGV4cGVjdHMgdGFza3MgdG8gb25seSBiZSBwb3N0ZWQgYnkgdGhlIEFQSSBsb2Nr
IGhvbGRlci4KLSAgICBpZiAodm0ubV9maW5hbGl6YXRpb25SZWdpc3RyeVNwYWNlKQotICAgICAg
ICBmaW5hbGl6ZU1hcmtlZFVuY29uZGl0aW9uYWxGaW5hbGl6ZXJzPEpTRmluYWxpemF0aW9uUmVn
aXN0cnk+KCp2bS5tX2ZpbmFsaXphdGlvblJlZ2lzdHJ5U3BhY2UpOworICAgIGlmIChtX2ZpbmFs
aXphdGlvblJlZ2lzdHJ5U3BhY2UpCisgICAgICAgIGZpbmFsaXplTWFya2VkVW5jb25kaXRpb25h
bEZpbmFsaXplcnM8SlNGaW5hbGl6YXRpb25SZWdpc3RyeT4oKm1fZmluYWxpemF0aW9uUmVnaXN0
cnlTcGFjZSk7CiAKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCi0gICAgaWYgKHZtLm1fd2ViQXNz
ZW1ibHlDb2RlQmxvY2tTcGFjZSkKLSAgICAgICAgZmluYWxpemVNYXJrZWRVbmNvbmRpdGlvbmFs
RmluYWxpemVyczxKU1dlYkFzc2VtYmx5Q29kZUJsb2NrPigqdm0ubV93ZWJBc3NlbWJseUNvZGVC
bG9ja1NwYWNlKTsKKyAgICBpZiAobV93ZWJBc3NlbWJseUNvZGVCbG9ja1NwYWNlKQorICAgICAg
ICBmaW5hbGl6ZU1hcmtlZFVuY29uZGl0aW9uYWxGaW5hbGl6ZXJzPEpTV2ViQXNzZW1ibHlDb2Rl
QmxvY2s+KCptX3dlYkFzc2VtYmx5Q29kZUJsb2NrU3BhY2UpOwogI2VuZGlmCiB9CiAKQEAgLTkw
NSw3ICsxMTA5LDcgQEAgdm9pZCBIZWFwOjpkZWxldGVBbGxDb2RlQmxvY2tzKERlbGV0ZUFsbAog
CiAgICAgY29tcGxldGVBbGxKSVRQbGFucygpOwogCi0gICAgdm0uZm9yRWFjaFNjcmlwdEV4ZWN1
dGFibGVTcGFjZSgKKyAgICBmb3JFYWNoU2NyaXB0RXhlY3V0YWJsZVNwYWNlKAogICAgICAgICBb
Jl0gKGF1dG8mIHNwYWNlQW5kU2V0KSB7CiAgICAgICAgICAgICBIZWFwSXRlcmF0aW9uU2NvcGUg
aGVhcEl0ZXJhdGlvblNjb3BlKCp0aGlzKTsKICAgICAgICAgICAgIGF1dG8mIHNldCA9IHNwYWNl
QW5kU2V0LnNldDsKQEAgLTkyNCw4ICsxMTI4LDggQEAgdm9pZCBIZWFwOjpkZWxldGVBbGxDb2Rl
QmxvY2tzKERlbGV0ZUFsbAogICAgICAgICAvLyBwb2ludHMgaW50byBhIENvZGVCbG9jayB0aGF0
IGNvdWxkIGJlIGRlYWQuIFRoZSBJQyB3aWxsIHN0aWxsIHN1Y2NlZWQgYmVjYXVzZQogICAgICAg
ICAvLyBpdCB1c2VzIGEgY2FsbGVlIGNoZWNrLCBidXQgdGhlbiBpdCB3aWxsIGNhbGwgaW50byBk
ZWFkIGNvZGUuCiAgICAgICAgIEhlYXBJdGVyYXRpb25TY29wZSBoZWFwSXRlcmF0aW9uU2NvcGUo
KnRoaXMpOwotICAgICAgICBpZiAodm0ubV93ZWJBc3NlbWJseUNvZGVCbG9ja1NwYWNlKSB7Ci0g
ICAgICAgICAgICB2bS5tX3dlYkFzc2VtYmx5Q29kZUJsb2NrU3BhY2UtPmZvckVhY2hMaXZlQ2Vs
bChbJl0gKEhlYXBDZWxsKiBjZWxsLCBIZWFwQ2VsbDo6S2luZCBraW5kKSB7CisgICAgICAgIGlm
IChtX3dlYkFzc2VtYmx5Q29kZUJsb2NrU3BhY2UpIHsKKyAgICAgICAgICAgIG1fd2ViQXNzZW1i
bHlDb2RlQmxvY2tTcGFjZS0+Zm9yRWFjaExpdmVDZWxsKFsmXSAoSGVhcENlbGwqIGNlbGwsIEhl
YXBDZWxsOjpLaW5kIGtpbmQpIHsKICAgICAgICAgICAgICAgICBBU1NFUlRfVU5VU0VEKGtpbmQs
IGtpbmQgPT0gSGVhcENlbGw6OkpTQ2VsbCk7CiAgICAgICAgICAgICAgICAgSlNXZWJBc3NlbWJs
eUNvZGVCbG9jayogY29kZUJsb2NrID0gc3RhdGljX2Nhc3Q8SlNXZWJBc3NlbWJseUNvZGVCbG9j
ayo+KGNlbGwpOwogICAgICAgICAgICAgICAgIGNvZGVCbG9jay0+Y2xlYXJKU0NhbGxJQ3Modm0p
OwpAQCAtOTQ2LDcgKzExNTAsNyBAQCB2b2lkIEhlYXA6OmRlbGV0ZUFsbFVubGlua2VkQ29kZUJs
b2NrcyhECiAgICAgUkVMRUFTRV9BU1NFUlQoIW1fY29sbGVjdGlvblNjb3BlKTsKIAogICAgIEhl
YXBJdGVyYXRpb25TY29wZSBoZWFwSXRlcmF0aW9uU2NvcGUoKnRoaXMpOwotICAgIHZtLnVubGlu
a2VkRnVuY3Rpb25FeGVjdXRhYmxlU3BhY2Uuc2V0LmZvckVhY2hMaXZlQ2VsbCgKKyAgICB1bmxp
bmtlZEZ1bmN0aW9uRXhlY3V0YWJsZVNwYWNlLnNldC5mb3JFYWNoTGl2ZUNlbGwoCiAgICAgICAg
IFsmXSAoSGVhcENlbGwqIGNlbGwsIEhlYXBDZWxsOjpLaW5kKSB7CiAgICAgICAgICAgICBVbmxp
bmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSA9IHN0YXRpY19jYXN0PFVubGlua2Vk
RnVuY3Rpb25FeGVjdXRhYmxlKj4oY2VsbCk7CiAgICAgICAgICAgICBleGVjdXRhYmxlLT5jbGVh
ckNvZGUodm0pOwpAQCAtOTU1LDEwICsxMTU5LDEwIEBAIHZvaWQgSGVhcDo6ZGVsZXRlQWxsVW5s
aW5rZWRDb2RlQmxvY2tzKEQKIAogdm9pZCBIZWFwOjpkZWxldGVVbm1hcmtlZENvbXBpbGVkQ29k
ZSgpCiB7Ci0gICAgdm0oKS5mb3JFYWNoU2NyaXB0RXhlY3V0YWJsZVNwYWNlKFtdIChhdXRvJiBz
cGFjZSkgeyBzcGFjZS5zcGFjZS5zd2VlcCgpOyB9KTsKKyAgICBmb3JFYWNoU2NyaXB0RXhlY3V0
YWJsZVNwYWNlKFtdIChhdXRvJiBzcGFjZSkgeyBzcGFjZS5zcGFjZS5zd2VlcDMoKTsgfSk7CiAg
ICAgLy8gU3dlZXBpbmcgbXVzdCBvY2N1ciBiZWZvcmUgZGVsZXRpbmcgc3R1YnMsIG90aGVyd2lz
ZSB0aGUgc3R1YnMgbWlnaHQgc3RpbGwgdGhpbmsgdGhleSdyZSBhbGl2ZSBhcyB0aGV5IGdldCBk
ZWxldGVkLgogICAgIC8vIEFuZCBDb2RlQmxvY2sgZGVzdHJ1Y3RvciBpcyBhc3N1bWluZyB0aGF0
IENvZGVCbG9jayBnZXRzIGRlc3Ryb3llZCBiZWZvcmUgVW5saW5rZWRDb2RlQmxvY2sgZ2V0cyBk
ZXN0cm95ZWQuCi0gICAgdm0oKS5mb3JFYWNoQ29kZUJsb2NrU3BhY2UoW10gKGF1dG8mIHNwYWNl
KSB7IHNwYWNlLnNwYWNlLnN3ZWVwKCk7IH0pOworICAgIGZvckVhY2hDb2RlQmxvY2tTcGFjZShb
XSAoYXV0byYgc3BhY2UpIHsgc3BhY2Uuc3BhY2Uuc3dlZXAzKCk7IH0pOwogICAgIG1faml0U3R1
YlJvdXRpbmVzLT5kZWxldGVVbm1hcmtlZEpldHRpc29uZWRTdHViUm91dGluZXMoKTsKIH0KIApA
QCAtMjEwMyw4ICsyMzA3LDggQEAgdm9pZCBIZWFwOjpzd2VlcEluRmluYWxpemUoKQogICAgIG1f
b2JqZWN0U3BhY2Uuc3dlZXBQcmVjaXNlQWxsb2NhdGlvbnMoKTsKICNpZiBFTkFCTEUoV0VCQVNT
RU1CTFkpCiAgICAgLy8gV2UgaG9sZCBvbnRvIGEgbG90IG9mIG1lbW9yeSwgc28gaXQgbWFrZXMg
YSBsb3Qgb2Ygc2Vuc2UgdG8gYmUgc3dlcHQgZWFnZXJseS4KLSAgICBpZiAodm0oKS5tX3dlYkFz
c2VtYmx5TWVtb3J5U3BhY2UpCi0gICAgICAgIHZtKCkubV93ZWJBc3NlbWJseU1lbW9yeVNwYWNl
LT5zd2VlcCgpOworICAgIGlmIChtX3dlYkFzc2VtYmx5TWVtb3J5U3BhY2UpCisgICAgICAgIG1f
d2ViQXNzZW1ibHlNZW1vcnlTcGFjZS0+c3dlZXAzKCk7CiAjZW5kaWYKIH0KIApAQCAtMjgwNSw3
ICszMDA5LDcgQEAgdm9pZCBIZWFwOjphZGRDb3JlQ29uc3RyYWludHMoKQogICAgICAgICAiTyIs
ICJPdXRwdXQiLAogICAgICAgICBNQUtFX01BUktJTkdfQ09OU1RSQUlOVF9FWEVDVVRPUl9QQUlS
KChbXSAoYXV0byYgdmlzaXRvcikgewogICAgICAgICAgICAgdXNpbmcgVmlzaXRvciA9IGRlY2x0
eXBlKHZpc2l0b3IpOwotICAgICAgICAgICAgVk0mIHZtID0gdmlzaXRvci52bSgpOworICAgICAg
ICAgICAgSGVhcCogaGVhcCA9IHZpc2l0b3IuaGVhcCgpOwogCiAgICAgICAgICAgICAvLyBUaGUg
YHZpc2l0b3IyYCBhcmd1bWVudCBpcyBzdHJhbmdlbHkgbmFtZWQgYmVjYXVzZSB0aGUgV2luQ2Fp
cm8gcG9ydAogICAgICAgICAgICAgLy8gZ2V0cyBjb25mdXNlZCAgYW5kIHRoaW5rcyB3ZSdyZSB0
cnlpbmcgdG8gY2FwdHVyZSB0aGUgb3V0ZXIgdmlzaXRvcgpAQCAtMjgyNCwxMSArMzAyOCwxMSBA
QCB2b2lkIEhlYXA6OmFkZENvcmVDb25zdHJhaW50cygpCiAKICAgICAgICAgICAgIHsKICAgICAg
ICAgICAgICAgICBTZXRSb290TWFya1JlYXNvblNjb3BlIHJvb3RTY29wZSh2aXNpdG9yLCBSb290
TWFya1JlYXNvbjo6RXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZXMpOwotICAgICAgICAgICAgICAg
IGFkZCh2bS5leGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlc1dpdGhDb25zdHJhaW50cyk7CisgICAg
ICAgICAgICAgICAgYWRkKGhlYXAtPmV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2VzV2l0aENvbnN0
cmFpbnRzKTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmICh2bS5tX3dlYWtNYXBTcGFj
ZSkgeworICAgICAgICAgICAgaWYgKGhlYXAtPm1fd2Vha01hcFNwYWNlKSB7CiAgICAgICAgICAg
ICAgICAgU2V0Um9vdE1hcmtSZWFzb25TY29wZSByb290U2NvcGUodmlzaXRvciwgUm9vdE1hcmtS
ZWFzb246OldlYWtNYXBTcGFjZSk7Ci0gICAgICAgICAgICAgICAgYWRkKCp2bS5tX3dlYWtNYXBT
cGFjZSk7CisgICAgICAgICAgICAgICAgYWRkKCpoZWFwLT5tX3dlYWtNYXBTcGFjZSk7CiAgICAg
ICAgICAgICB9CiAgICAgICAgIH0pKSwKICAgICAgICAgQ29uc3RyYWludFZvbGF0aWxpdHk6Okdy
ZXllZEJ5TWFya2luZywKQEAgLTMwNjIsNCArMzI2NiwxMzUgQEAgdm9pZCBIZWFwOjp2ZXJpZnlH
QygpCiAgICAgbV92ZXJpZmllclNsb3RWaXNpdG9yID0gbnVsbHB0cjsKIH0KIAorI2RlZmluZSBE
WU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1cobmFtZSwgaGVhcENlbGxUeXBl
LCB0eXBlKSBcCisgICAgSXNvU3Vic3BhY2UqIEhlYXA6Om5hbWUjI1Nsb3coKSBcCisgICAgeyBc
CisgICAgICAgIEFTU0VSVCghbV8jI25hbWUpOyBcCisgICAgICAgIGF1dG8gc3BhY2UgPSBtYWtl
VW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCgqdGhpcywgaGVhcENlbGxUeXBl
LCB0eXBlKTsgXAorICAgICAgICBXVEY6OnN0b3JlU3RvcmVGZW5jZSgpOyBcCisgICAgICAgIG1f
IyNuYW1lID0gV1RGTW92ZShzcGFjZSk7IFwKKyAgICAgICAgcmV0dXJuIG1fIyNuYW1lLmdldCgp
OyBcCisgICAgfQorCisKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhh
cGlHbG9iYWxPYmplY3RTcGFjZSwgYXBpR2xvYmFsT2JqZWN0SGVhcENlbGxUeXBlLCBKU0FQSUds
b2JhbE9iamVjdCkKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhhcGlW
YWx1ZVdyYXBwZXJTcGFjZSwgY2VsbEhlYXBDZWxsVHlwZSwgSlNBUElWYWx1ZVdyYXBwZXIpCitE
WU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coYXJyYXlCdWZmZXJTcGFjZSwg
Y2VsbEhlYXBDZWxsVHlwZSwgSlNBcnJheUJ1ZmZlcikKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RF
RklORV9NRU1CRVJfU0xPVyhhcnJheUl0ZXJhdG9yU3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUsIEpT
QXJyYXlJdGVyYXRvcikKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhh
c3luY0dlbmVyYXRvclNwYWNlLCBjZWxsSGVhcENlbGxUeXBlLCBKU0FzeW5jR2VuZXJhdG9yKQor
RFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGJpZ0ludDY0QXJyYXlTcGFj
ZSwgY2VsbEhlYXBDZWxsVHlwZSwgSlNCaWdJbnQ2NEFycmF5KQorRFlOQU1JQ19JU09fU1VCU1BB
Q0VfREVGSU5FX01FTUJFUl9TTE9XKGJpZ0ludE9iamVjdFNwYWNlLCBjZWxsSGVhcENlbGxUeXBl
LCBCaWdJbnRPYmplY3QpCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1co
YmlnVWludDY0QXJyYXlTcGFjZSwgY2VsbEhlYXBDZWxsVHlwZSwgSlNCaWdVaW50NjRBcnJheSkK
K0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhib29sZWFuT2JqZWN0U3Bh
Y2UsIGNlbGxIZWFwQ2VsbFR5cGUsIEJvb2xlYW5PYmplY3QpCitEWU5BTUlDX0lTT19TVUJTUEFD
RV9ERUZJTkVfTUVNQkVSX1NMT1coYm91bmRGdW5jdGlvblNwYWNlLCBjZWxsSGVhcENlbGxUeXBl
LCBKU0JvdW5kRnVuY3Rpb24pIC8vIEhhc2g6MHhkNzkxNmQ0MQorRFlOQU1JQ19JU09fU1VCU1BB
Q0VfREVGSU5FX01FTUJFUl9TTE9XKGNhbGxiYWNrQ29uc3RydWN0b3JTcGFjZSwgY2FsbGJhY2tD
b25zdHJ1Y3RvckhlYXBDZWxsVHlwZSwgSlNDYWxsYmFja0NvbnN0cnVjdG9yKQorRFlOQU1JQ19J
U09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGNhbGxiYWNrR2xvYmFsT2JqZWN0U3BhY2Us
IGNhbGxiYWNrR2xvYmFsT2JqZWN0SGVhcENlbGxUeXBlLCBKU0NhbGxiYWNrT2JqZWN0PEpTR2xv
YmFsT2JqZWN0PikKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhjYWxs
YmFja0Z1bmN0aW9uU3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUsIEpTQ2FsbGJhY2tGdW5jdGlvbikg
Ly8gSGFzaDoweGU3NjQ4ZWJjCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NM
T1coY2FsbGJhY2tPYmplY3RTcGFjZSwgY2FsbGJhY2tPYmplY3RIZWFwQ2VsbFR5cGUsIEpTQ2Fs
bGJhY2tPYmplY3Q8SlNOb25GaW5hbE9iamVjdD4pCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJ
TkVfTUVNQkVSX1NMT1coY3VzdG9tR2V0dGVyRnVuY3Rpb25TcGFjZSwgY3VzdG9tR2V0dGVyRnVu
Y3Rpb25IZWFwQ2VsbFR5cGUsIEpTQ3VzdG9tR2V0dGVyRnVuY3Rpb24pCitEWU5BTUlDX0lTT19T
VUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coY3VzdG9tU2V0dGVyRnVuY3Rpb25TcGFjZSwgY3Vz
dG9tU2V0dGVyRnVuY3Rpb25IZWFwQ2VsbFR5cGUsIEpTQ3VzdG9tU2V0dGVyRnVuY3Rpb24pCitE
WU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coZGF0YVZpZXdTcGFjZSwgY2Vs
bEhlYXBDZWxsVHlwZSwgSlNEYXRhVmlldykKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9N
RU1CRVJfU0xPVyhkZWJ1Z2dlclNjb3BlU3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUsIERlYnVnZ2Vy
U2NvcGUpCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coZXJyb3JJbnN0
YW5jZVNwYWNlLCBlcnJvckluc3RhbmNlSGVhcENlbGxUeXBlLCBFcnJvckluc3RhbmNlKSAvLyBI
YXNoOjB4M2Y0MGQ0YQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGZs
b2F0MzJBcnJheVNwYWNlLCBjZWxsSGVhcENlbGxUeXBlLCBKU0Zsb2F0MzJBcnJheSkKK0RZTkFN
SUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhmbG9hdDY0QXJyYXlTcGFjZSwgY2Vs
bEhlYXBDZWxsVHlwZSwgSlNGbG9hdDY0QXJyYXkpCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJ
TkVfTUVNQkVSX1NMT1coZnVuY3Rpb25SYXJlRGF0YVNwYWNlLCBkZXN0cnVjdGlibGVDZWxsSGVh
cENlbGxUeXBlLCBGdW5jdGlvblJhcmVEYXRhKQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5F
X01FTUJFUl9TTE9XKGdlbmVyYXRvclNwYWNlLCBjZWxsSGVhcENlbGxUeXBlLCBKU0dlbmVyYXRv
cikKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhnbG9iYWxPYmplY3RT
cGFjZSwgZ2xvYmFsT2JqZWN0SGVhcENlbGxUeXBlLCBKU0dsb2JhbE9iamVjdCkKK0RZTkFNSUNf
SVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhpbmplY3RlZFNjcmlwdEhvc3RTcGFjZSwg
aW5qZWN0ZWRTY3JpcHRIb3N0U3BhY2VIZWFwQ2VsbFR5cGUsIEluc3BlY3Rvcjo6SlNJbmplY3Rl
ZFNjcmlwdEhvc3QpCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coaW50
OEFycmF5U3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUsIEpTSW50OEFycmF5KQorRFlOQU1JQ19JU09f
U1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGludDE2QXJyYXlTcGFjZSwgY2VsbEhlYXBDZWxs
VHlwZSwgSlNJbnQxNkFycmF5KQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9T
TE9XKGludDMyQXJyYXlTcGFjZSwgY2VsbEhlYXBDZWxsVHlwZSwgSlNJbnQzMkFycmF5KQorRFlO
QU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGphdmFTY3JpcHRDYWxsRnJhbWVT
cGFjZSwgamF2YVNjcmlwdENhbGxGcmFtZUhlYXBDZWxsVHlwZSwgSW5zcGVjdG9yOjpKU0phdmFT
Y3JpcHRDYWxsRnJhbWUpCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1co
anNNb2R1bGVSZWNvcmRTcGFjZSwganNNb2R1bGVSZWNvcmRIZWFwQ2VsbFR5cGUsIEpTTW9kdWxl
UmVjb3JkKQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKG1hcEJ1Y2tl
dFNwYWNlLCBjZWxsSGVhcENlbGxUeXBlLCBKU01hcDo6QnVja2V0VHlwZSkKK0RZTkFNSUNfSVNP
X1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhtYXBJdGVyYXRvclNwYWNlLCBjZWxsSGVhcENl
bGxUeXBlLCBKU01hcEl0ZXJhdG9yKQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJF
Ul9TTE9XKG1hcFNwYWNlLCBjZWxsSGVhcENlbGxUeXBlLCBKU01hcCkKK0RZTkFNSUNfSVNPX1NV
QlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhtb2R1bGVOYW1lc3BhY2VPYmplY3RTcGFjZSwgbW9k
dWxlTmFtZXNwYWNlT2JqZWN0SGVhcENlbGxUeXBlLCBKU01vZHVsZU5hbWVzcGFjZU9iamVjdCkK
K0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhuYXRpdmVTdGRGdW5jdGlv
blNwYWNlLCBuYXRpdmVTdGRGdW5jdGlvbkhlYXBDZWxsVHlwZSwgSlNOYXRpdmVTdGRGdW5jdGlv
bikgLy8gSGFzaDoweDcwZWQ2MWU0CitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVS
X1NMT1cocHJveHlPYmplY3RTcGFjZSwgY2VsbEhlYXBDZWxsVHlwZSwgUHJveHlPYmplY3QpCitE
WU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1cocHJveHlSZXZva2VTcGFjZSwg
Y2VsbEhlYXBDZWxsVHlwZSwgUHJveHlSZXZva2UpIC8vIEhhc2g6MHhiNTA2YTkzOQorRFlOQU1J
Q19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHNjb3BlZEFyZ3VtZW50c1RhYmxlU3Bh
Y2UsIGRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUsIFNjb3BlZEFyZ3VtZW50c1RhYmxlKQor
RFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHNjcmlwdEZldGNoUGFyYW1l
dGVyc1NwYWNlLCBkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlLCBKU1NjcmlwdEZldGNoUGFy
YW1ldGVycykKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhzY3JpcHRG
ZXRjaGVyU3BhY2UsIGRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUsIEpTU2NyaXB0RmV0Y2hl
cikKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhzZXRCdWNrZXRTcGFj
ZSwgY2VsbEhlYXBDZWxsVHlwZSwgSlNTZXQ6OkJ1Y2tldFR5cGUpCitEWU5BTUlDX0lTT19TVUJT
UEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coc2V0SXRlcmF0b3JTcGFjZSwgY2VsbEhlYXBDZWxsVHlw
ZSwgSlNTZXRJdGVyYXRvcikKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xP
VyhzZXRTcGFjZSwgY2VsbEhlYXBDZWxsVHlwZSwgSlNTZXQpCitEWU5BTUlDX0lTT19TVUJTUEFD
RV9ERUZJTkVfTUVNQkVSX1NMT1coc2hhZG93UmVhbG1TcGFjZSwgY2VsbEhlYXBDZWxsVHlwZSwg
U2hhZG93UmVhbG1PYmplY3QpCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NM
T1coc3RyaWN0RXZhbEFjdGl2YXRpb25TcGFjZSwgY2VsbEhlYXBDZWxsVHlwZSwgU3RyaWN0RXZh
bEFjdGl2YXRpb24pCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coc3Ry
aW5nSXRlcmF0b3JTcGFjZSwgY2VsbEhlYXBDZWxsVHlwZSwgSlNTdHJpbmdJdGVyYXRvcikKK0RZ
TkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhzb3VyY2VDb2RlU3BhY2UsIGRl
c3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUsIEpTU291cmNlQ29kZSkKK0RZTkFNSUNfSVNPX1NV
QlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhzeW1ib2xTcGFjZSwgZGVzdHJ1Y3RpYmxlQ2VsbEhl
YXBDZWxsVHlwZSwgU3ltYm9sKQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9T
TE9XKHN5bWJvbE9iamVjdFNwYWNlLCBjZWxsSGVhcENlbGxUeXBlLCBTeW1ib2xPYmplY3QpCitE
WU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1codGVtcGxhdGVPYmplY3REZXNj
cmlwdG9yU3BhY2UsIGRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUsIEpTVGVtcGxhdGVPYmpl
Y3REZXNjcmlwdG9yKQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHRl
bXBvcmFsQ2FsZW5kYXJTcGFjZSwgY2VsbEhlYXBDZWxsVHlwZSwgVGVtcG9yYWxDYWxlbmRhcikK
K0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh0ZW1wb3JhbER1cmF0aW9u
U3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUsIFRlbXBvcmFsRHVyYXRpb24pCitEWU5BTUlDX0lTT19T
VUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1codGVtcG9yYWxJbnN0YW50U3BhY2UsIGNlbGxIZWFw
Q2VsbFR5cGUsIFRlbXBvcmFsSW5zdGFudCkKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9N
RU1CRVJfU0xPVyh0ZW1wb3JhbFBsYWluVGltZVNwYWNlLCBjZWxsSGVhcENlbGxUeXBlLCBUZW1w
b3JhbFBsYWluVGltZSkKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh0
ZW1wb3JhbFRpbWVab25lU3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUsIFRlbXBvcmFsVGltZVpvbmUp
CitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1codWludDhBcnJheVNwYWNl
LCBjZWxsSGVhcENlbGxUeXBlLCBKU1VpbnQ4QXJyYXkpCitEWU5BTUlDX0lTT19TVUJTUEFDRV9E
RUZJTkVfTUVNQkVSX1NMT1codWludDhDbGFtcGVkQXJyYXlTcGFjZSwgY2VsbEhlYXBDZWxsVHlw
ZSwgSlNVaW50OENsYW1wZWRBcnJheSkKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1C
RVJfU0xPVyh1aW50MTZBcnJheVNwYWNlLCBjZWxsSGVhcENlbGxUeXBlLCBKU1VpbnQxNkFycmF5
KQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHVpbnQzMkFycmF5U3Bh
Y2UsIGNlbGxIZWFwQ2VsbFR5cGUsIEpTVWludDMyQXJyYXkpCitEWU5BTUlDX0lTT19TVUJTUEFD
RV9ERUZJTkVfTUVNQkVSX1NMT1codW5saW5rZWRFdmFsQ29kZUJsb2NrU3BhY2UsIGRlc3RydWN0
aWJsZUNlbGxIZWFwQ2VsbFR5cGUsIFVubGlua2VkRXZhbENvZGVCbG9jaykKK0RZTkFNSUNfSVNP
X1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh1bmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrU3Bh
Y2UsIGRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUsIFVubGlua2VkRnVuY3Rpb25Db2RlQmxv
Y2spCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1codW5saW5rZWRNb2R1
bGVQcm9ncmFtQ29kZUJsb2NrU3BhY2UsIGRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUsIFVu
bGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jaykKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklO
RV9NRU1CRVJfU0xPVyh1bmxpbmtlZFByb2dyYW1Db2RlQmxvY2tTcGFjZSwgZGVzdHJ1Y3RpYmxl
Q2VsbEhlYXBDZWxsVHlwZSwgVW5saW5rZWRQcm9ncmFtQ29kZUJsb2NrKQorRFlOQU1JQ19JU09f
U1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHdlYWtNYXBTcGFjZSwgd2Vha01hcEhlYXBDZWxs
VHlwZSwgSlNXZWFrTWFwKSAvLyBIYXNoOjB4NjYyYjEyYTMKK0RZTkFNSUNfSVNPX1NVQlNQQUNF
X0RFRklORV9NRU1CRVJfU0xPVyh3ZWFrU2V0U3BhY2UsIHdlYWtTZXRIZWFwQ2VsbFR5cGUsIEpT
V2Vha1NldCkgLy8gSGFzaDoweDRjNzgxYjMwCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVf
TUVNQkVSX1NMT1cod2Vha09iamVjdFJlZlNwYWNlLCBjZWxsSGVhcENlbGxUeXBlLCBKU1dlYWtP
YmplY3RSZWYpIC8vIEhhc2g6MHg4ZWM2OGYxZgorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5F
X01FTUJFUl9TTE9XKHdpdGhTY29wZVNwYWNlLCBjZWxsSGVhcENlbGxUeXBlLCBKU1dpdGhTY29w
ZSkKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhmaW5hbGl6YXRpb25S
ZWdpc3RyeVNwYWNlLCBmaW5hbGl6YXRpb25SZWdpc3RyeUNlbGxUeXBlLCBKU0ZpbmFsaXphdGlv
blJlZ2lzdHJ5KQorI2lmIEpTQ19PQkpDX0FQSV9FTkFCTEVECitEWU5BTUlDX0lTT19TVUJTUEFD
RV9ERUZJTkVfTUVNQkVSX1NMT1coYXBpV3JhcHBlck9iamVjdFNwYWNlLCBhcGlXcmFwcGVyT2Jq
ZWN0SGVhcENlbGxUeXBlLCBKU0NhbGxiYWNrT2JqZWN0PEpTQVBJV3JhcHBlck9iamVjdD4pCitE
WU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1cob2JqQ0NhbGxiYWNrRnVuY3Rp
b25TcGFjZSwgb2JqQ0NhbGxiYWNrRnVuY3Rpb25IZWFwQ2VsbFR5cGUsIE9iakNDYWxsYmFja0Z1
bmN0aW9uKSAvLyBIYXNoOjB4MTBmNjEwYjgKKyNlbmRpZgorI2lmZGVmIEpTQ19HTElCX0FQSV9F
TkFCTEVECitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coYXBpV3JhcHBl
ck9iamVjdFNwYWNlLCBhcGlXcmFwcGVyT2JqZWN0SGVhcENlbGxUeXBlLCBKU0NhbGxiYWNrT2Jq
ZWN0PEpTQVBJV3JhcHBlck9iamVjdD4pCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVN
QkVSX1NMT1coanNjQ2FsbGJhY2tGdW5jdGlvblNwYWNlLCBqc2NDYWxsYmFja0Z1bmN0aW9uSGVh
cENlbGxUeXBlLCBKU0NDYWxsYmFja0Z1bmN0aW9uKQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVG
SU5FX01FTUJFUl9TTE9XKGNhbGxiYWNrQVBJV3JhcHBlckdsb2JhbE9iamVjdFNwYWNlLCBjYWxs
YmFja0FQSVdyYXBwZXJHbG9iYWxPYmplY3RIZWFwQ2VsbFR5cGUsIEpTQ2FsbGJhY2tPYmplY3Q8
SlNBUElXcmFwcGVyR2xvYmFsT2JqZWN0PikKKyNlbmRpZgorRFlOQU1JQ19JU09fU1VCU1BBQ0Vf
REVGSU5FX01FTUJFUl9TTE9XKGludGxDb2xsYXRvclNwYWNlLCBpbnRsQ29sbGF0b3JIZWFwQ2Vs
bFR5cGUsIEludGxDb2xsYXRvcikKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJf
U0xPVyhpbnRsRGF0ZVRpbWVGb3JtYXRTcGFjZSwgaW50bERhdGVUaW1lRm9ybWF0SGVhcENlbGxU
eXBlLCBJbnRsRGF0ZVRpbWVGb3JtYXQpCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVN
QkVSX1NMT1coaW50bERpc3BsYXlOYW1lc1NwYWNlLCBpbnRsRGlzcGxheU5hbWVzSGVhcENlbGxU
eXBlLCBJbnRsRGlzcGxheU5hbWVzKQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJF
Ul9TTE9XKGludGxMaXN0Rm9ybWF0U3BhY2UsIGludGxMaXN0Rm9ybWF0SGVhcENlbGxUeXBlLCBJ
bnRsTGlzdEZvcm1hdCkKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhp
bnRsTG9jYWxlU3BhY2UsIGludGxMb2NhbGVIZWFwQ2VsbFR5cGUsIEludGxMb2NhbGUpCitEWU5B
TUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coaW50bE51bWJlckZvcm1hdFNwYWNl
LCBpbnRsTnVtYmVyRm9ybWF0SGVhcENlbGxUeXBlLCBJbnRsTnVtYmVyRm9ybWF0KQorRFlOQU1J
Q19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGludGxQbHVyYWxSdWxlc1NwYWNlLCBp
bnRsUGx1cmFsUnVsZXNIZWFwQ2VsbFR5cGUsIEludGxQbHVyYWxSdWxlcykKK0RZTkFNSUNfSVNP
X1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhpbnRsUmVsYXRpdmVUaW1lRm9ybWF0U3BhY2Us
IGludGxSZWxhdGl2ZVRpbWVGb3JtYXRIZWFwQ2VsbFR5cGUsIEludGxSZWxhdGl2ZVRpbWVGb3Jt
YXQpCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coaW50bFNlZ21lbnRJ
dGVyYXRvclNwYWNlLCBpbnRsU2VnbWVudEl0ZXJhdG9ySGVhcENlbGxUeXBlLCBJbnRsU2VnbWVu
dEl0ZXJhdG9yKQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGludGxT
ZWdtZW50ZXJTcGFjZSwgaW50bFNlZ21lbnRlckhlYXBDZWxsVHlwZSwgSW50bFNlZ21lbnRlcikK
K0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhpbnRsU2VnbWVudHNTcGFj
ZSwgaW50bFNlZ21lbnRzSGVhcENlbGxUeXBlLCBJbnRsU2VnbWVudHMpCisjaWYgRU5BQkxFKFdF
QkFTU0VNQkxZKQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGpzVG9X
YXNtSUNDYWxsZWVTcGFjZSwgY2VsbEhlYXBDZWxsVHlwZSwgSlNUb1dhc21JQ0NhbGxlZSkKK0RZ
TkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh3ZWJBc3NlbWJseUNvZGVCbG9j
a1NwYWNlLCB3ZWJBc3NlbWJseUNvZGVCbG9ja0hlYXBDZWxsVHlwZSwgSlNXZWJBc3NlbWJseUNv
ZGVCbG9jaykgLy8gSGFzaDoweDlhZDk5NWNkCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVf
TUVNQkVSX1NMT1cod2ViQXNzZW1ibHlFeGNlcHRpb25TcGFjZSwgd2ViQXNzZW1ibHlFeGNlcHRp
b25IZWFwQ2VsbFR5cGUsIEpTV2ViQXNzZW1ibHlFeGNlcHRpb24pCitEWU5BTUlDX0lTT19TVUJT
UEFDRV9ERUZJTkVfTUVNQkVSX1NMT1cod2ViQXNzZW1ibHlGdW5jdGlvblNwYWNlLCB3ZWJBc3Nl
bWJseUZ1bmN0aW9uSGVhcENlbGxUeXBlLCBXZWJBc3NlbWJseUZ1bmN0aW9uKSAvLyBIYXNoOjB4
OGI3YzMyZGIKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh3ZWJBc3Nl
bWJseUdsb2JhbFNwYWNlLCB3ZWJBc3NlbWJseUdsb2JhbEhlYXBDZWxsVHlwZSwgSlNXZWJBc3Nl
bWJseUdsb2JhbCkKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh3ZWJB
c3NlbWJseUluc3RhbmNlU3BhY2UsIHdlYkFzc2VtYmx5SW5zdGFuY2VIZWFwQ2VsbFR5cGUsIEpT
V2ViQXNzZW1ibHlJbnN0YW5jZSkKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJf
U0xPVyh3ZWJBc3NlbWJseU1lbW9yeVNwYWNlLCB3ZWJBc3NlbWJseU1lbW9yeUhlYXBDZWxsVHlw
ZSwgSlNXZWJBc3NlbWJseU1lbW9yeSkKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1C
RVJfU0xPVyh3ZWJBc3NlbWJseU1vZHVsZVNwYWNlLCB3ZWJBc3NlbWJseU1vZHVsZUhlYXBDZWxs
VHlwZSwgSlNXZWJBc3NlbWJseU1vZHVsZSkKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9N
RU1CRVJfU0xPVyh3ZWJBc3NlbWJseU1vZHVsZVJlY29yZFNwYWNlLCB3ZWJBc3NlbWJseU1vZHVs
ZVJlY29yZEhlYXBDZWxsVHlwZSwgV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQpCitEWU5BTUlDX0lT
T19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1cod2ViQXNzZW1ibHlUYWJsZVNwYWNlLCB3ZWJB
c3NlbWJseVRhYmxlSGVhcENlbGxUeXBlLCBKU1dlYkFzc2VtYmx5VGFibGUpCitEWU5BTUlDX0lT
T19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1cod2ViQXNzZW1ibHlUYWdTcGFjZSwgd2ViQXNz
ZW1ibHlUYWdIZWFwQ2VsbFR5cGUsIEpTV2ViQXNzZW1ibHlUYWcpCitEWU5BTUlDX0lTT19TVUJT
UEFDRV9ERUZJTkVfTUVNQkVSX1NMT1cod2ViQXNzZW1ibHlXcmFwcGVyRnVuY3Rpb25TcGFjZSwg
Y2VsbEhlYXBDZWxsVHlwZSwgV2ViQXNzZW1ibHlXcmFwcGVyRnVuY3Rpb24pIC8vIEhhc2g6MHhk
NGE1ZmYwMQorI2VuZGlmCisKKyN1bmRlZiBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVN
QkVSX1NMT1cKKworI2RlZmluZSBEWU5BTUlDX1NQQUNFX0FORF9TRVRfREVGSU5FX01FTUJFUl9T
TE9XKG5hbWUsIGhlYXBDZWxsVHlwZSwgdHlwZSkgXAorICAgIElzb1N1YnNwYWNlKiBIZWFwOjpu
YW1lIyNTbG93KCkgXAorICAgIHsgXAorICAgICAgICBBU1NFUlQoIW1fIyNuYW1lKTsgXAorICAg
ICAgICBhdXRvIHNwYWNlID0gbWFrZVVuaXF1ZTxTcGFjZUFuZFNldD4gSVNPX1NVQlNQQUNFX0lO
SVQoKnRoaXMsIGhlYXBDZWxsVHlwZSwgdHlwZSk7IFwKKyAgICAgICAgV1RGOjpzdG9yZVN0b3Jl
RmVuY2UoKTsgXAorICAgICAgICBtXyMjbmFtZSA9IFdURk1vdmUoc3BhY2UpOyBcCisgICAgICAg
IHJldHVybiAmbV8jI25hbWUtPnNwYWNlOyBcCisgICAgfQorCitEWU5BTUlDX1NQQUNFX0FORF9T
RVRfREVGSU5FX01FTUJFUl9TTE9XKGV2YWxFeGVjdXRhYmxlU3BhY2UsIGRlc3RydWN0aWJsZUNl
bGxIZWFwQ2VsbFR5cGUsIEV2YWxFeGVjdXRhYmxlKSAvLyBIYXNoOjB4OTU4ZTNlOWQKK0RZTkFN
SUNfU1BBQ0VfQU5EX1NFVF9ERUZJTkVfTUVNQkVSX1NMT1cobW9kdWxlUHJvZ3JhbUV4ZWN1dGFi
bGVTcGFjZSwgZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZSwgTW9kdWxlUHJvZ3JhbUV4ZWN1
dGFibGUpIC8vIEhhc2g6MHg2NTA2ZmEzYworCisjdW5kZWYgRFlOQU1JQ19TUEFDRV9BTkRfU0VU
X0RFRklORV9NRU1CRVJfU0xPVworCiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9IZWFwLmgJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL0hlYXAuaAkod29ya2luZyBjb3B5KQpAQCAtMjUsNiArMjUsNyBAQAogI2luY2x1
ZGUgIkNlbGxTdGF0ZS5oIgogI2luY2x1ZGUgIkNvbGxlY3Rpb25TY29wZS5oIgogI2luY2x1ZGUg
IkNvbGxlY3RvclBoYXNlLmgiCisjaW5jbHVkZSAiQ29tcGxldGVTdWJzcGFjZS5oIgogI2luY2x1
ZGUgIkRlbGV0ZUFsbENvZGVFZmZvcnQuaCIKICNpbmNsdWRlICJHQ0NvbmR1Y3Rvci5oIgogI2lu
Y2x1ZGUgIkdDSW5jb21pbmdSZWZDb3VudGVkU2V0LmgiCkBAIC0zMyw2ICszNCwxMSBAQAogI2lu
Y2x1ZGUgIkhhbmRsZVNldC5oIgogI2luY2x1ZGUgIkhlYXBGaW5hbGl6ZXJDYWxsYmFjay5oIgog
I2luY2x1ZGUgIkhlYXBPYnNlcnZlci5oIgorI2luY2x1ZGUgIklzb0NlbGxTZXQuaCIKKyNpbmNs
dWRlICJJc29IZWFwQ2VsbFR5cGUuaCIKKyNpbmNsdWRlICJJc29JbmxpbmVkSGVhcENlbGxUeXBl
LmgiCisjaW5jbHVkZSAiSXNvU3Vic3BhY2UuaCIKKyNpbmNsdWRlICJKU0Rlc3RydWN0aWJsZU9i
amVjdEhlYXBDZWxsVHlwZS5oIgogI2luY2x1ZGUgIk1hcmtlZEJsb2NrLmgiCiAjaW5jbHVkZSAi
TWFya2VkU3BhY2UuaCIKICNpbmNsdWRlICJNdXRhdG9yU3RhdGUuaCIKQEAgLTUwLDMyICs1Niw2
NSBAQAogI2luY2x1ZGUgPHd0Zi9QYXJhbGxlbEhlbHBlclBvb2wuaD4KICNpbmNsdWRlIDx3dGYv
VGhyZWFkaW5nLmg+CiAKK25hbWVzcGFjZSBJbnNwZWN0b3IgeworY2xhc3MgSlNJbmplY3RlZFNj
cmlwdEhvc3Q7CitjbGFzcyBKU0phdmFTY3JpcHRDYWxsRnJhbWU7Cit9CisKIG5hbWVzcGFjZSBK
U0MgewogCitjbGFzcyBCbG9ja0RpcmVjdG9yeTsKIGNsYXNzIENvZGVCbG9jazsKIGNsYXNzIENv
ZGVCbG9ja1NldDsKIGNsYXNzIENvbGxlY3RpbmdTY29wZTsKIGNsYXNzIENvbnNlcnZhdGl2ZVJv
b3RzOwotY2xhc3MgR0NEZWZlcnJhbENvbnRleHQ7CitjbGFzcyBEYXRlSW5zdGFuY2U7CiBjbGFz
cyBFZGVuR0NBY3Rpdml0eUNhbGxiYWNrOworY2xhc3MgRXJyb3JJbnN0YW5jZTsKK2NsYXNzIEZh
c3RNYWxsb2NBbGlnbmVkTWVtb3J5QWxsb2NhdG9yOwogY2xhc3MgRnVsbEdDQWN0aXZpdHlDYWxs
YmFjazsKIGNsYXNzIEdDQWN0aXZpdHlDYWxsYmFjazsKIGNsYXNzIEdDQXdhcmVKSVRTdHViUm91
dGluZTsKK2NsYXNzIEdDRGVmZXJyYWxDb250ZXh0OworY2xhc3MgR2lnYWNhZ2VBbGlnbmVkTWVt
b3J5QWxsb2NhdG9yOwogY2xhc3MgSGVhcDsKIGNsYXNzIEhlYXBQcm9maWxlcjsKIGNsYXNzIEhl
YXBWZXJpZmllcjsKIGNsYXNzIEluY3JlbWVudGFsU3dlZXBlcjsKK2NsYXNzIEludGxDb2xsYXRv
cjsKK2NsYXNzIEludGxEYXRlVGltZUZvcm1hdDsKK2NsYXNzIEludGxEaXNwbGF5TmFtZXM7Citj
bGFzcyBJbnRsTGlzdEZvcm1hdDsKK2NsYXNzIEludGxMb2NhbGU7CitjbGFzcyBJbnRsTnVtYmVy
Rm9ybWF0OworY2xhc3MgSW50bFBsdXJhbFJ1bGVzOworY2xhc3MgSW50bFJlbGF0aXZlVGltZUZv
cm1hdDsKK2NsYXNzIEludGxTZWdtZW50SXRlcmF0b3I7CitjbGFzcyBJbnRsU2VnbWVudGVyOwor
Y2xhc3MgSW50bFNlZ21lbnRzOwogY2xhc3MgSklUU3R1YlJvdXRpbmU7CiBjbGFzcyBKSVRTdHVi
Um91dGluZVNldDsKK2NsYXNzIEpTQVBJR2xvYmFsT2JqZWN0OworY2xhc3MgSlNDYWxsYmFja0Nv
bnN0cnVjdG9yOwogY2xhc3MgSlNDZWxsOworY2xhc3MgSlNDdXN0b21HZXR0ZXJGdW5jdGlvbjsK
K2NsYXNzIEpTQ3VzdG9tU2V0dGVyRnVuY3Rpb247CitjbGFzcyBKU0ZpbmFsaXphdGlvblJlZ2lz
dHJ5OworY2xhc3MgSlNHbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQ7CitjbGFzcyBKU0dsb2JhbE9i
amVjdDsKIGNsYXNzIEpTSW1tdXRhYmxlQnV0dGVyZmx5OworY2xhc3MgSlNNb2R1bGVOYW1lc3Bh
Y2VPYmplY3Q7CitjbGFzcyBKU01vZHVsZVJlY29yZDsKK2NsYXNzIEpTTmF0aXZlU3RkRnVuY3Rp
b247CitjbGFzcyBKU05vbkZpbmFsT2JqZWN0OworY2xhc3MgSlNTdHJpbmc7CiBjbGFzcyBKU1Zh
bHVlOwotY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOworY2xhc3MgSlNXZWFrTWFwOworY2xh
c3MgSlNXZWFrU2V0OwogY2xhc3MgTWFjaGluZVRocmVhZHM7CiBjbGFzcyBNYXJrU3RhY2tBcnJh
eTsKIGNsYXNzIE1hcmtTdGFja01lcmdpbmdDb25zdHJhaW50OwogY2xhc3MgTWFya2VkSlNWYWx1
ZVJlZkFycmF5OwotY2xhc3MgQmxvY2tEaXJlY3Rvcnk7CiBjbGFzcyBNYXJrZWRBcmd1bWVudEJ1
ZmZlckJhc2U7CiBjbGFzcyBNYXJraW5nQ29uc3RyYWludDsKIGNsYXNzIE1hcmtpbmdDb25zdHJh
aW50U2V0OwpAQCAtOTAsNyArMTI5LDMwIEBAIGNsYXNzIFZlcmlmaWVyU2xvdFZpc2l0b3I7CiBj
bGFzcyBXZWFrR0NIYXNoVGFibGU7CiBzdHJ1Y3QgQ3VycmVudFRocmVhZFN0YXRlOwogCit0ZW1w
bGF0ZSA8Y2xhc3MgUGFyZW50PiBjbGFzcyBKU0NhbGxiYWNrT2JqZWN0OworCisjaWYgRU5BQkxF
KFdFQkFTU0VNQkxZKQorY2xhc3MgSlNXZWJBc3NlbWJseUNvZGVCbG9jazsKK2NsYXNzIEpTV2Vi
QXNzZW1ibHlFeGNlcHRpb247CitjbGFzcyBKU1dlYkFzc2VtYmx5R2xvYmFsOworY2xhc3MgSlNX
ZWJBc3NlbWJseUluc3RhbmNlOworY2xhc3MgSlNXZWJBc3NlbWJseU1lbW9yeTsKK2NsYXNzIEpT
V2ViQXNzZW1ibHlNb2R1bGU7CitjbGFzcyBKU1dlYkFzc2VtYmx5VGFibGU7CitjbGFzcyBKU1dl
YkFzc2VtYmx5VGFnOworY2xhc3MgV2ViQXNzZW1ibHlGdW5jdGlvbjsKK2NsYXNzIFdlYkFzc2Vt
Ymx5TW9kdWxlUmVjb3JkOworI2VuZGlmCisKKyNpZiBKU0NfT0JKQ19BUElfRU5BQkxFRAorY2xh
c3MgSlNBUElXcmFwcGVyT2JqZWN0OworY2xhc3MgT2JqQ0NhbGxiYWNrRnVuY3Rpb247CisjZW5k
aWYKKwogI2lmZGVmIEpTQ19HTElCX0FQSV9FTkFCTEVECitjbGFzcyBKU0FQSVdyYXBwZXJHbG9i
YWxPYmplY3Q7CitjbGFzcyBKU0FQSVdyYXBwZXJPYmplY3Q7CitjbGFzcyBKU0NDYWxsYmFja0Z1
bmN0aW9uOwogY2xhc3MgSlNDR0xpYldyYXBwZXJPYmplY3Q7CiAjZW5kaWYKIApAQCAtNzI5LDYg
Kzc5MSwzMTggQEAgcHJpdmF0ZToKICAgICBib29sIG1fcGFyYWxsZWxNYXJrZXJzU2hvdWxkRXhp
dCB7IGZhbHNlIH07CiAgICAgTG9jayBtX2NvbGxlY3RDb250aW51b3VzbHlMb2NrOwogICAgIENv
bmRpdGlvbiBtX2NvbGxlY3RDb250aW51b3VzbHlDb25kaXRpb247CisKK3B1YmxpYzoKKyAgICAv
LyBIZWFwQ2VsbFR5cGVzCisgICAgSGVhcENlbGxUeXBlIGF1eGlsaWFyeUhlYXBDZWxsVHlwZTsK
KyAgICBIZWFwQ2VsbFR5cGUgaW1tdXRhYmxlQnV0dGVyZmx5SGVhcENlbGxUeXBlOworICAgIEhl
YXBDZWxsVHlwZSBjZWxsSGVhcENlbGxUeXBlOworICAgIEhlYXBDZWxsVHlwZSBkZXN0cnVjdGli
bGVDZWxsSGVhcENlbGxUeXBlOworICAgIElzb0hlYXBDZWxsVHlwZTxKU0FQSUdsb2JhbE9iamVj
dD4gYXBpR2xvYmFsT2JqZWN0SGVhcENlbGxUeXBlOworICAgIElzb0hlYXBDZWxsVHlwZTxKU0Nh
bGxiYWNrQ29uc3RydWN0b3I+IGNhbGxiYWNrQ29uc3RydWN0b3JIZWFwQ2VsbFR5cGU7CisgICAg
SXNvSGVhcENlbGxUeXBlPEpTQ2FsbGJhY2tPYmplY3Q8SlNHbG9iYWxPYmplY3Q+PiBjYWxsYmFj
a0dsb2JhbE9iamVjdEhlYXBDZWxsVHlwZTsKKyAgICBJc29IZWFwQ2VsbFR5cGU8SlNDYWxsYmFj
a09iamVjdDxKU05vbkZpbmFsT2JqZWN0Pj4gY2FsbGJhY2tPYmplY3RIZWFwQ2VsbFR5cGU7Cisg
ICAgSXNvSGVhcENlbGxUeXBlPEpTQ3VzdG9tR2V0dGVyRnVuY3Rpb24+IGN1c3RvbUdldHRlckZ1
bmN0aW9uSGVhcENlbGxUeXBlOworICAgIElzb0hlYXBDZWxsVHlwZTxKU0N1c3RvbVNldHRlckZ1
bmN0aW9uPiBjdXN0b21TZXR0ZXJGdW5jdGlvbkhlYXBDZWxsVHlwZTsKKyAgICBJc29IZWFwQ2Vs
bFR5cGU8RGF0ZUluc3RhbmNlPiBkYXRlSW5zdGFuY2VIZWFwQ2VsbFR5cGU7CisgICAgSXNvSGVh
cENlbGxUeXBlPEVycm9ySW5zdGFuY2U+IGVycm9ySW5zdGFuY2VIZWFwQ2VsbFR5cGU7CisgICAg
SXNvSGVhcENlbGxUeXBlPEpTRmluYWxpemF0aW9uUmVnaXN0cnk+IGZpbmFsaXphdGlvblJlZ2lz
dHJ5Q2VsbFR5cGU7CisgICAgSXNvSGVhcENlbGxUeXBlPEpTR2xvYmFsTGV4aWNhbEVudmlyb25t
ZW50PiBnbG9iYWxMZXhpY2FsRW52aXJvbm1lbnRIZWFwQ2VsbFR5cGU7CisgICAgSXNvSGVhcENl
bGxUeXBlPEpTR2xvYmFsT2JqZWN0PiBnbG9iYWxPYmplY3RIZWFwQ2VsbFR5cGU7CisgICAgSXNv
SGVhcENlbGxUeXBlPEluc3BlY3Rvcjo6SlNJbmplY3RlZFNjcmlwdEhvc3Q+IGluamVjdGVkU2Ny
aXB0SG9zdFNwYWNlSGVhcENlbGxUeXBlOworICAgIElzb0hlYXBDZWxsVHlwZTxJbnNwZWN0b3I6
OkpTSmF2YVNjcmlwdENhbGxGcmFtZT4gamF2YVNjcmlwdENhbGxGcmFtZUhlYXBDZWxsVHlwZTsK
KyAgICBJc29IZWFwQ2VsbFR5cGU8SlNNb2R1bGVSZWNvcmQ+IGpzTW9kdWxlUmVjb3JkSGVhcENl
bGxUeXBlOworICAgIElzb0hlYXBDZWxsVHlwZTxKU01vZHVsZU5hbWVzcGFjZU9iamVjdD4gbW9k
dWxlTmFtZXNwYWNlT2JqZWN0SGVhcENlbGxUeXBlOworICAgIElzb0hlYXBDZWxsVHlwZTxKU05h
dGl2ZVN0ZEZ1bmN0aW9uPiBuYXRpdmVTdGRGdW5jdGlvbkhlYXBDZWxsVHlwZTsKKyAgICBJc29J
bmxpbmVkSGVhcENlbGxUeXBlPEpTU3RyaW5nPiBzdHJpbmdIZWFwQ2VsbFR5cGU7CisgICAgSXNv
SGVhcENlbGxUeXBlPEpTV2Vha01hcD4gd2Vha01hcEhlYXBDZWxsVHlwZTsKKyAgICBJc29IZWFw
Q2VsbFR5cGU8SlNXZWFrU2V0PiB3ZWFrU2V0SGVhcENlbGxUeXBlOworICAgIEpTRGVzdHJ1Y3Rp
YmxlT2JqZWN0SGVhcENlbGxUeXBlIGRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZTsKKyNp
ZiBKU0NfT0JKQ19BUElfRU5BQkxFRAorICAgIElzb0hlYXBDZWxsVHlwZTxKU0NhbGxiYWNrT2Jq
ZWN0PEpTQVBJV3JhcHBlck9iamVjdD4+IGFwaVdyYXBwZXJPYmplY3RIZWFwQ2VsbFR5cGU7Cisg
ICAgSXNvSGVhcENlbGxUeXBlPE9iakNDYWxsYmFja0Z1bmN0aW9uPiBvYmpDQ2FsbGJhY2tGdW5j
dGlvbkhlYXBDZWxsVHlwZTsKKyNlbmRpZgorI2lmZGVmIEpTQ19HTElCX0FQSV9FTkFCTEVECisg
ICAgSXNvSGVhcENlbGxUeXBlPEpTQ2FsbGJhY2tPYmplY3Q8SlNBUElXcmFwcGVyT2JqZWN0Pj4g
YXBpV3JhcHBlck9iamVjdEhlYXBDZWxsVHlwZTsKKyAgICBJc29IZWFwQ2VsbFR5cGU8SlNDYWxs
YmFja09iamVjdDxKU0FQSVdyYXBwZXJHbG9iYWxPYmplY3Q+PiBjYWxsYmFja0FQSVdyYXBwZXJH
bG9iYWxPYmplY3RIZWFwQ2VsbFR5cGU7CisgICAgSXNvSGVhcENlbGxUeXBlPEpTQ0NhbGxiYWNr
RnVuY3Rpb24+IGpzY0NhbGxiYWNrRnVuY3Rpb25IZWFwQ2VsbFR5cGU7CisjZW5kaWYKKyAgICBJ
c29IZWFwQ2VsbFR5cGU8SW50bENvbGxhdG9yPiBpbnRsQ29sbGF0b3JIZWFwQ2VsbFR5cGU7Cisg
ICAgSXNvSGVhcENlbGxUeXBlPEludGxEYXRlVGltZUZvcm1hdD4gaW50bERhdGVUaW1lRm9ybWF0
SGVhcENlbGxUeXBlOworICAgIElzb0hlYXBDZWxsVHlwZTxJbnRsRGlzcGxheU5hbWVzPiBpbnRs
RGlzcGxheU5hbWVzSGVhcENlbGxUeXBlOworICAgIElzb0hlYXBDZWxsVHlwZTxJbnRsTGlzdEZv
cm1hdD4gaW50bExpc3RGb3JtYXRIZWFwQ2VsbFR5cGU7CisgICAgSXNvSGVhcENlbGxUeXBlPElu
dGxMb2NhbGU+IGludGxMb2NhbGVIZWFwQ2VsbFR5cGU7CisgICAgSXNvSGVhcENlbGxUeXBlPElu
dGxOdW1iZXJGb3JtYXQ+IGludGxOdW1iZXJGb3JtYXRIZWFwQ2VsbFR5cGU7CisgICAgSXNvSGVh
cENlbGxUeXBlPEludGxQbHVyYWxSdWxlcz4gaW50bFBsdXJhbFJ1bGVzSGVhcENlbGxUeXBlOwor
ICAgIElzb0hlYXBDZWxsVHlwZTxJbnRsUmVsYXRpdmVUaW1lRm9ybWF0PiBpbnRsUmVsYXRpdmVU
aW1lRm9ybWF0SGVhcENlbGxUeXBlOworICAgIElzb0hlYXBDZWxsVHlwZTxJbnRsU2VnbWVudEl0
ZXJhdG9yPiBpbnRsU2VnbWVudEl0ZXJhdG9ySGVhcENlbGxUeXBlOworICAgIElzb0hlYXBDZWxs
VHlwZTxJbnRsU2VnbWVudGVyPiBpbnRsU2VnbWVudGVySGVhcENlbGxUeXBlOworICAgIElzb0hl
YXBDZWxsVHlwZTxJbnRsU2VnbWVudHM+IGludGxTZWdtZW50c0hlYXBDZWxsVHlwZTsKKyNpZiBF
TkFCTEUoV0VCQVNTRU1CTFkpCisgICAgSXNvSGVhcENlbGxUeXBlPEpTV2ViQXNzZW1ibHlDb2Rl
QmxvY2s+IHdlYkFzc2VtYmx5Q29kZUJsb2NrSGVhcENlbGxUeXBlOworICAgIElzb0hlYXBDZWxs
VHlwZTxKU1dlYkFzc2VtYmx5RXhjZXB0aW9uPiB3ZWJBc3NlbWJseUV4Y2VwdGlvbkhlYXBDZWxs
VHlwZTsKKyAgICBJc29IZWFwQ2VsbFR5cGU8V2ViQXNzZW1ibHlGdW5jdGlvbj4gd2ViQXNzZW1i
bHlGdW5jdGlvbkhlYXBDZWxsVHlwZTsKKyAgICBJc29IZWFwQ2VsbFR5cGU8SlNXZWJBc3NlbWJs
eUdsb2JhbD4gd2ViQXNzZW1ibHlHbG9iYWxIZWFwQ2VsbFR5cGU7CisgICAgSXNvSGVhcENlbGxU
eXBlPEpTV2ViQXNzZW1ibHlJbnN0YW5jZT4gd2ViQXNzZW1ibHlJbnN0YW5jZUhlYXBDZWxsVHlw
ZTsKKyAgICBJc29IZWFwQ2VsbFR5cGU8SlNXZWJBc3NlbWJseU1lbW9yeT4gd2ViQXNzZW1ibHlN
ZW1vcnlIZWFwQ2VsbFR5cGU7CisgICAgSXNvSGVhcENlbGxUeXBlPEpTV2ViQXNzZW1ibHlNb2R1
bGU+IHdlYkFzc2VtYmx5TW9kdWxlSGVhcENlbGxUeXBlOworICAgIElzb0hlYXBDZWxsVHlwZTxX
ZWJBc3NlbWJseU1vZHVsZVJlY29yZD4gd2ViQXNzZW1ibHlNb2R1bGVSZWNvcmRIZWFwQ2VsbFR5
cGU7CisgICAgSXNvSGVhcENlbGxUeXBlPEpTV2ViQXNzZW1ibHlUYWJsZT4gd2ViQXNzZW1ibHlU
YWJsZUhlYXBDZWxsVHlwZTsKKyAgICBJc29IZWFwQ2VsbFR5cGU8SlNXZWJBc3NlbWJseVRhZz4g
d2ViQXNzZW1ibHlUYWdIZWFwQ2VsbFR5cGU7CisjZW5kaWYKKworICAgIC8vIEFsaWduZWRNZW1v
cnlBbGxvY2F0b3JzCisgICAgc3RkOjp1bmlxdWVfcHRyPEZhc3RNYWxsb2NBbGlnbmVkTWVtb3J5
QWxsb2NhdG9yPiBmYXN0TWFsbG9jQWxsb2NhdG9yOworICAgIHN0ZDo6dW5pcXVlX3B0cjxHaWdh
Y2FnZUFsaWduZWRNZW1vcnlBbGxvY2F0b3I+IHByaW1pdGl2ZUdpZ2FjYWdlQWxsb2NhdG9yOwor
ICAgIHN0ZDo6dW5pcXVlX3B0cjxHaWdhY2FnZUFsaWduZWRNZW1vcnlBbGxvY2F0b3I+IGpzVmFs
dWVHaWdhY2FnZUFsbG9jYXRvcjsKKworICAgIC8vIFN1YnNwYWNlcworICAgIENvbXBsZXRlU3Vi
c3BhY2UgcHJpbWl0aXZlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZTsgLy8gVHlwZWQgYXJyYXlzLCBz
dHJpbmdzLCBiaXR2ZWN0b3JzLCBldGMgZ28gaGVyZS4KKyAgICBDb21wbGV0ZVN1YnNwYWNlIGpz
VmFsdWVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlOyAvLyBCdXR0ZXJmbGllcywgYXJyYXlzIG9mIEpT
VmFsdWVzLCBldGMgZ28gaGVyZS4KKyAgICBDb21wbGV0ZVN1YnNwYWNlIGltbXV0YWJsZUJ1dHRl
cmZseUpTVmFsdWVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlOyAvLyBKU0ltbXV0YWJsZUJ1dHRlcmZs
eSBnb2VzIGhlcmUuCisKKyAgICAvLyBXZSBtYWtlIGNyb3NzLWN1dHRpbmcgYXNzdW1wdGlvbnMg
YWJvdXQgdHlwZWQgYXJyYXlzIGJlaW5nIGluIHRoZSBwcmltaXRpdmUgR2lnYWNhZ2UgYW5kIGJ1
dHRlcmZsaWVzCisgICAgLy8gYmVpbmcgaW4gdGhlIEpTVmFsdWUgZ2lnYWNhZ2UuIEZvciBzb21l
IHR5cGVzLCBpdCdzIHN1cGVyIG9idmlvdXMgd2hlcmUgdGhleSBzaG91bGQgZ28sIGFuZCBzbyB3
ZQorICAgIC8vIGNhbiBoYXJkY29kZSB0aGF0IGZhY3QuIEJ1dCBzb21ldGltZXMgaXQncyBub3Qg
Y2xlYXIsIHNvIHdlIGFic3RyYWN0IGl0IGJ5IGhhdmluZyBhIEdpZ2FjYWdlOjpLaW5kCisgICAg
Ly8gY29uc3RhbnQgc29tZXdoZXJlLgorICAgIC8vIEZJWE1FOiBNYXliZSBpdCB3b3VsZCBiZSBi
ZXR0ZXIgaWYgZXZlcnlvbmUgYWJzdHJhY3RlZCB0aGlzPworICAgIC8vIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzUyNDgKKyAgICBBTFdBWVNfSU5MSU5FIENvbXBs
ZXRlU3Vic3BhY2UmIGdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UoR2lnYWNhZ2U6OktpbmQga2luZCkK
KyAgICB7CisgICAgICAgIHN3aXRjaCAoa2luZCkgeworICAgICAgICBjYXNlIEdpZ2FjYWdlOjpQ
cmltaXRpdmU6CisgICAgICAgICAgICByZXR1cm4gcHJpbWl0aXZlR2lnYWNhZ2VBdXhpbGlhcnlT
cGFjZTsKKyAgICAgICAgY2FzZSBHaWdhY2FnZTo6SlNWYWx1ZToKKyAgICAgICAgICAgIHJldHVy
biBqc1ZhbHVlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZTsKKyAgICAgICAgY2FzZSBHaWdhY2FnZTo6
TnVtYmVyT2ZLaW5kczoKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIFJF
TEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiBwcmltaXRpdmVHaWdh
Y2FnZUF1eGlsaWFyeVNwYWNlOworICAgIH0KKyAgICAKKyAgICAvLyBXaGVuZXZlciBwb3NzaWJs
ZSwgdXNlIHN1YnNwYWNlRm9yPENlbGxUeXBlPih2bSkgdG8gZ2V0IG9uZSBvZiB0aGVzZSBzdWJz
cGFjZXMuCisgICAgQ29tcGxldGVTdWJzcGFjZSBjZWxsU3BhY2U7CisgICAgQ29tcGxldGVTdWJz
cGFjZSB2YXJpYWJsZVNpemVkQ2VsbFNwYWNlOyAvLyBGSVhNRTogVGhpcyBzcGFjZSBpcyBwcm9i
bGVtYXRpYyBiZWNhdXNlIHdlIGhhdmUgdGhpbmdzIGluIGhlcmUgbGlrZSBEaXJlY3RBcmd1bWVu
dHMgYW5kIFNjb3BlZEFyZ3VtZW50czsgdGhvc2Ugc2hvdWxkIGJlIHNwbGl0IGludG8gSlNWYWx1
ZU9PQiBjZWxscyBhbmQgSlNWYWx1ZVN0cmljdCBhdXhpbGlhcmllcy4gaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4Mjg1OAorICAgIENvbXBsZXRlU3Vic3BhY2UgZGVz
dHJ1Y3RpYmxlT2JqZWN0U3BhY2U7CisKKyAgICBJc29TdWJzcGFjZSBhcnJheVNwYWNlOworICAg
IElzb1N1YnNwYWNlIGJpZ0ludFNwYWNlOworICAgIElzb1N1YnNwYWNlIGNhbGxlZVNwYWNlOwor
ICAgIElzb1N1YnNwYWNlIGNsb25lZEFyZ3VtZW50c1NwYWNlOworICAgIElzb1N1YnNwYWNlIGN1
c3RvbUdldHRlclNldHRlclNwYWNlOworICAgIElzb1N1YnNwYWNlIGRhdGVJbnN0YW5jZVNwYWNl
OworICAgIElzb1N1YnNwYWNlIGRvbUF0dHJpYnV0ZUdldHRlclNldHRlclNwYWNlOworICAgIElz
b1N1YnNwYWNlIGV4Y2VwdGlvblNwYWNlOworICAgIElzb1N1YnNwYWNlIGV4ZWN1dGFibGVUb0Nv
ZGVCbG9ja0VkZ2VTcGFjZTsKKyAgICBJc29TdWJzcGFjZSBmdW5jdGlvblNwYWNlOworICAgIElz
b1N1YnNwYWNlIGdldHRlclNldHRlclNwYWNlOworICAgIElzb1N1YnNwYWNlIGdsb2JhbExleGlj
YWxFbnZpcm9ubWVudFNwYWNlOworICAgIElzb1N1YnNwYWNlIGludGVybmFsRnVuY3Rpb25TcGFj
ZTsKKyAgICBJc29TdWJzcGFjZSBqc1Byb3h5U3BhY2U7CisgICAgSXNvU3Vic3BhY2UgbmF0aXZl
RXhlY3V0YWJsZVNwYWNlOworICAgIElzb1N1YnNwYWNlIG51bWJlck9iamVjdFNwYWNlOworICAg
IElzb1N1YnNwYWNlIHBsYWluT2JqZWN0U3BhY2U7CisgICAgSXNvU3Vic3BhY2UgcHJvbWlzZVNw
YWNlOworICAgIElzb1N1YnNwYWNlIHByb3BlcnR5TmFtZUVudW1lcmF0b3JTcGFjZTsKKyAgICBJ
c29TdWJzcGFjZSBwcm9wZXJ0eVRhYmxlU3BhY2U7CisgICAgSXNvU3Vic3BhY2UgcmVnRXhwU3Bh
Y2U7CisgICAgSXNvU3Vic3BhY2UgcmVnRXhwT2JqZWN0U3BhY2U7CisgICAgSXNvU3Vic3BhY2Ug
cm9wZVN0cmluZ1NwYWNlOworICAgIElzb1N1YnNwYWNlIHNjb3BlZEFyZ3VtZW50c1NwYWNlOwor
ICAgIElzb1N1YnNwYWNlIHNwYXJzZUFycmF5VmFsdWVNYXBTcGFjZTsKKyAgICBJc29TdWJzcGFj
ZSBzdHJpbmdTcGFjZTsKKyAgICBJc29TdWJzcGFjZSBzdHJpbmdPYmplY3RTcGFjZTsKKyAgICBJ
c29TdWJzcGFjZSBzdHJ1Y3R1cmVDaGFpblNwYWNlOworICAgIElzb1N1YnNwYWNlIHN0cnVjdHVy
ZVJhcmVEYXRhU3BhY2U7CisgICAgSXNvU3Vic3BhY2Ugc3RydWN0dXJlU3BhY2U7CisgICAgSXNv
U3Vic3BhY2UgYnJhbmRlZFN0cnVjdHVyZVNwYWNlOworICAgIElzb1N1YnNwYWNlIHN5bWJvbFRh
YmxlU3BhY2U7CisKKyNkZWZpbmUgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihu
YW1lKSBcCisgICAgdGVtcGxhdGU8U3Vic3BhY2VBY2Nlc3MgbW9kZT4gXAorICAgIElzb1N1YnNw
YWNlKiBuYW1lKCkgXAorICAgIHsgXAorICAgICAgICBpZiAobV8jI25hbWUgfHwgbW9kZSA9PSBT
dWJzcGFjZUFjY2Vzczo6Q29uY3VycmVudGx5KSBcCisgICAgICAgICAgICByZXR1cm4gbV8jI25h
bWUuZ2V0KCk7IFwKKyAgICAgICAgcmV0dXJuIG5hbWUjI1Nsb3coKTsgXAorICAgIH0gXAorICAg
IEpTX0VYUE9SVF9QUklWQVRFIElzb1N1YnNwYWNlKiBuYW1lIyNTbG93KCk7IFwKKyAgICBzdGQ6
OnVuaXF1ZV9wdHI8SXNvU3Vic3BhY2U+IG1fIyNuYW1lOworCisKKyNpZiBKU0NfT0JKQ19BUElf
RU5BQkxFRAorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoYXBpV3JhcHBl
ck9iamVjdFNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIob2Jq
Q0NhbGxiYWNrRnVuY3Rpb25TcGFjZSkKKyNlbmRpZgorI2lmZGVmIEpTQ19HTElCX0FQSV9FTkFC
TEVECisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihhcGlXcmFwcGVyT2Jq
ZWN0U3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihqc2NDYWxs
YmFja0Z1bmN0aW9uU3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJF
UihjYWxsYmFja0FQSVdyYXBwZXJHbG9iYWxPYmplY3RTcGFjZSkKKyNlbmRpZgorICAgIERZTkFN
SUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoYXBpR2xvYmFsT2JqZWN0U3BhY2UpCisgICAg
RFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihhcGlWYWx1ZVdyYXBwZXJTcGFjZSkK
KyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKGFycmF5QnVmZmVyU3BhY2Up
CisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihhcnJheUl0ZXJhdG9yU3Bh
Y2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihhc3luY0dlbmVyYXRv
clNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoYmlnSW50NjRB
cnJheVNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoYmlnSW50
T2JqZWN0U3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihiaWdV
aW50NjRBcnJheVNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIo
Ym9vbGVhbk9iamVjdFNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1C
RVIoYm91bmRGdW5jdGlvblNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9N
RU1CRVIoY2FsbGJhY2tDb25zdHJ1Y3RvclNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNF
X0RFRklORV9NRU1CRVIoY2FsbGJhY2tHbG9iYWxPYmplY3RTcGFjZSkKKyAgICBEWU5BTUlDX0lT
T19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKGNhbGxiYWNrRnVuY3Rpb25TcGFjZSkKKyAgICBEWU5B
TUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKGNhbGxiYWNrT2JqZWN0U3BhY2UpCisgICAg
RFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihjdXN0b21HZXR0ZXJGdW5jdGlvblNw
YWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoY3VzdG9tU2V0dGVy
RnVuY3Rpb25TcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKGRh
dGFWaWV3U3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihkZWJ1
Z2dlclNjb3BlU3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihl
cnJvckluc3RhbmNlU3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJF
UihmbG9hdDMyQXJyYXlTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVN
QkVSKGZsb2F0NjRBcnJheVNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9N
RU1CRVIoZnVuY3Rpb25SYXJlRGF0YVNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RF
RklORV9NRU1CRVIoZ2VuZXJhdG9yU3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVG
SU5FX01FTUJFUihnbG9iYWxPYmplY3RTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9E
RUZJTkVfTUVNQkVSKGluamVjdGVkU2NyaXB0SG9zdFNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NV
QlNQQUNFX0RFRklORV9NRU1CRVIoaW50OEFycmF5U3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VC
U1BBQ0VfREVGSU5FX01FTUJFUihpbnQxNkFycmF5U3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VC
U1BBQ0VfREVGSU5FX01FTUJFUihpbnQzMkFycmF5U3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VC
U1BBQ0VfREVGSU5FX01FTUJFUihqYXZhU2NyaXB0Q2FsbEZyYW1lU3BhY2UpCisgICAgRFlOQU1J
Q19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihqc01vZHVsZVJlY29yZFNwYWNlKQorICAgIERZ
TkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIobWFwQnVja2V0U3BhY2UpCisgICAgRFlO
QU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihtYXBJdGVyYXRvclNwYWNlKQorICAgIERZ
TkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIobWFwU3BhY2UpCisgICAgRFlOQU1JQ19J
U09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihtb2R1bGVOYW1lc3BhY2VPYmplY3RTcGFjZSkKKyAg
ICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKG5hdGl2ZVN0ZEZ1bmN0aW9uU3Bh
Y2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihwcm94eU9iamVjdFNw
YWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIocHJveHlSZXZva2VT
cGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKHNjb3BlZEFyZ3Vt
ZW50c1RhYmxlU3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihz
Y3JpcHRGZXRjaFBhcmFtZXRlcnNTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJ
TkVfTUVNQkVSKHNjcmlwdEZldGNoZXJTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9E
RUZJTkVfTUVNQkVSKHNldEJ1Y2tldFNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RF
RklORV9NRU1CRVIoc2V0SXRlcmF0b3JTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9E
RUZJTkVfTUVNQkVSKHNldFNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9N
RU1CRVIoc2hhZG93UmVhbG1TcGFjZSk7CisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5F
X01FTUJFUihzdHJpY3RFdmFsQWN0aXZhdGlvblNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQ
QUNFX0RFRklORV9NRU1CRVIoc3RyaW5nSXRlcmF0b3JTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19T
VUJTUEFDRV9ERUZJTkVfTUVNQkVSKHNvdXJjZUNvZGVTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19T
VUJTUEFDRV9ERUZJTkVfTUVNQkVSKHN5bWJvbFNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQ
QUNFX0RFRklORV9NRU1CRVIoc3ltYm9sT2JqZWN0U3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VC
U1BBQ0VfREVGSU5FX01FTUJFUih0ZW1wbGF0ZU9iamVjdERlc2NyaXB0b3JTcGFjZSkKKyAgICBE
WU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKHRlbXBvcmFsQ2FsZW5kYXJTcGFjZSkK
KyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKHRlbXBvcmFsRHVyYXRpb25T
cGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKHRlbXBvcmFsSW5z
dGFudFNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIodGVtcG9y
YWxQbGFpblRpbWVTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVS
KHRlbXBvcmFsVGltZVpvbmVTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVf
TUVNQkVSKHVpbnQ4QXJyYXlTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVf
TUVNQkVSKHVpbnQ4Q2xhbXBlZEFycmF5U3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0Vf
REVGSU5FX01FTUJFUih1aW50MTZBcnJheVNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNF
X0RFRklORV9NRU1CRVIodWludDMyQXJyYXlTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFD
RV9ERUZJTkVfTUVNQkVSKHVubGlua2VkRXZhbENvZGVCbG9ja1NwYWNlKQorICAgIERZTkFNSUNf
SVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIodW5saW5rZWRGdW5jdGlvbkNvZGVCbG9ja1NwYWNl
KQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIodW5saW5rZWRNb2R1bGVQ
cm9ncmFtQ29kZUJsb2NrU3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01F
TUJFUih1bmxpbmtlZFByb2dyYW1Db2RlQmxvY2tTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJT
UEFDRV9ERUZJTkVfTUVNQkVSKGZpbmFsaXphdGlvblJlZ2lzdHJ5U3BhY2UpCisgICAgRFlOQU1J
Q19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUih3ZWFrT2JqZWN0UmVmU3BhY2UpCisgICAgRFlO
QU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUih3ZWFrU2V0U3BhY2UpCisgICAgRFlOQU1J
Q19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUih3ZWFrTWFwU3BhY2UpCisgICAgRFlOQU1JQ19J
U09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUih3aXRoU2NvcGVTcGFjZSkKKyAgICBEWU5BTUlDX0lT
T19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKGludGxDb2xsYXRvclNwYWNlKQorICAgIERZTkFNSUNf
SVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoaW50bERhdGVUaW1lRm9ybWF0U3BhY2UpCisgICAg
RFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihpbnRsRGlzcGxheU5hbWVzU3BhY2Up
CisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihpbnRsTGlzdEZvcm1hdFNw
YWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoaW50bExvY2FsZVNw
YWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoaW50bE51bWJlckZv
cm1hdFNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoaW50bFBs
dXJhbFJ1bGVzU3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihp
bnRsUmVsYXRpdmVUaW1lRm9ybWF0U3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVG
SU5FX01FTUJFUihpbnRsU2VnbWVudEl0ZXJhdG9yU3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VC
U1BBQ0VfREVGSU5FX01FTUJFUihpbnRsU2VnbWVudGVyU3BhY2UpCisgICAgRFlOQU1JQ19JU09f
U1VCU1BBQ0VfREVGSU5FX01FTUJFUihpbnRsU2VnbWVudHNTcGFjZSkKKyNpZiBFTkFCTEUoV0VC
QVNTRU1CTFkpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihqc1RvV2Fz
bUlDQ2FsbGVlU3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUih3
ZWJBc3NlbWJseUNvZGVCbG9ja1NwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklO
RV9NRU1CRVIod2ViQXNzZW1ibHlFeGNlcHRpb25TcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJT
UEFDRV9ERUZJTkVfTUVNQkVSKHdlYkFzc2VtYmx5RnVuY3Rpb25TcGFjZSkKKyAgICBEWU5BTUlD
X0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKHdlYkFzc2VtYmx5R2xvYmFsU3BhY2UpCisgICAg
RFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUih3ZWJBc3NlbWJseUluc3RhbmNlU3Bh
Y2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUih3ZWJBc3NlbWJseU1l
bW9yeVNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIod2ViQXNz
ZW1ibHlNb2R1bGVTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVS
KHdlYkFzc2VtYmx5TW9kdWxlUmVjb3JkU3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0Vf
REVGSU5FX01FTUJFUih3ZWJBc3NlbWJseVRhYmxlU3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VC
U1BBQ0VfREVGSU5FX01FTUJFUih3ZWJBc3NlbWJseVRhZ1NwYWNlKQorICAgIERZTkFNSUNfSVNP
X1NVQlNQQUNFX0RFRklORV9NRU1CRVIod2ViQXNzZW1ibHlXcmFwcGVyRnVuY3Rpb25TcGFjZSkK
KyNlbmRpZgorCisjdW5kZWYgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUgorICAg
IAorICAgIElzb0NlbGxTZXQgZXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZXNXaXRoQ29uc3RyYWlu
dHM7CisgICAgSXNvQ2VsbFNldCBleGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlc1dpdGhGaW5hbGl6
ZXJzOworCisjZGVmaW5lIERZTkFNSUNfU1BBQ0VfQU5EX1NFVF9ERUZJTkVfTUVNQkVSKG5hbWUp
IFwKKyAgICB0ZW1wbGF0ZTxTdWJzcGFjZUFjY2VzcyBtb2RlPiBcCisgICAgSXNvU3Vic3BhY2Uq
IG5hbWUoKSBcCisgICAgeyBcCisgICAgICAgIGlmIChhdXRvKiBzcGFjZUFuZFNldCA9IG1fIyNu
YW1lLmdldCgpKSBcCisgICAgICAgICAgICByZXR1cm4gJnNwYWNlQW5kU2V0LT5zcGFjZTsgXAor
ICAgICAgICBpZiAobW9kZSA9PSBTdWJzcGFjZUFjY2Vzczo6Q29uY3VycmVudGx5KSBcCisgICAg
ICAgICAgICByZXR1cm4gbnVsbHB0cjsgXAorICAgICAgICByZXR1cm4gbmFtZSMjU2xvdygpOyBc
CisgICAgfSBcCisgICAgSXNvU3Vic3BhY2UqIG5hbWUjI1Nsb3coKTsgXAorICAgIHN0ZDo6dW5p
cXVlX3B0cjxTcGFjZUFuZFNldD4gbV8jI25hbWU7CisgICAgCisgICAgc3RydWN0IFNwYWNlQW5k
U2V0IHsKKyAgICAgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOworCisgICAgICAg
IElzb1N1YnNwYWNlIHNwYWNlOworICAgICAgICBJc29DZWxsU2V0IHNldDsKKyAgICAgICAgCisg
ICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lLi4uIEFyZ3VtZW50cz4KKyAgICAgICAgU3BhY2VBbmRT
ZXQoQXJndW1lbnRzJiYuLi4gYXJndW1lbnRzKQorICAgICAgICAgICAgOiBzcGFjZShzdGQ6OmZv
cndhcmQ8QXJndW1lbnRzPihhcmd1bWVudHMpLi4uKQorICAgICAgICAgICAgLCBzZXQoc3BhY2Up
CisgICAgICAgIHsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgc3RhdGljIElzb0NlbGxT
ZXQmIHNldEZvcihTdWJzcGFjZSYgc3BhY2UpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVy
biAqYml0d2lzZV9jYXN0PElzb0NlbGxTZXQqPigKKyAgICAgICAgICAgICAgICBiaXR3aXNlX2Nh
c3Q8Y2hhcio+KCZzcGFjZSkgLQorICAgICAgICAgICAgICAgIE9CSkVDVF9PRkZTRVRPRihTcGFj
ZUFuZFNldCwgc3BhY2UpICsKKyAgICAgICAgICAgICAgICBPQkpFQ1RfT0ZGU0VUT0YoU3BhY2VB
bmRTZXQsIHNldCkpOworICAgICAgICB9CisgICAgfTsKKyAgICAKKyAgICBTcGFjZUFuZFNldCBj
b2RlQmxvY2tTcGFjZTsKKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmM+CisgICAgdm9pZCBm
b3JFYWNoQ29kZUJsb2NrU3BhY2UoY29uc3QgRnVuYyYgZnVuYykKKyAgICB7CisgICAgICAgIC8v
IFRoaXMgc2hvdWxkIG5vdCBpbmNsdWRlIHdlYkFzc2VtYmx5Q29kZUJsb2NrU3BhY2UgYmVjYXVz
ZSB0aGlzIGlzIGFib3V0IHN1YnNjbGFzc2VzIG9mCisgICAgICAgIC8vIEpTQzo6Q29kZUJsb2Nr
LgorICAgICAgICBmdW5jKGNvZGVCbG9ja1NwYWNlKTsKKyAgICB9CisKKyAgICBEWU5BTUlDX1NQ
QUNFX0FORF9TRVRfREVGSU5FX01FTUJFUihldmFsRXhlY3V0YWJsZVNwYWNlKQorICAgIERZTkFN
SUNfU1BBQ0VfQU5EX1NFVF9ERUZJTkVfTUVNQkVSKG1vZHVsZVByb2dyYW1FeGVjdXRhYmxlU3Bh
Y2UpCisgICAgU3BhY2VBbmRTZXQgZnVuY3Rpb25FeGVjdXRhYmxlU3BhY2U7CisgICAgU3BhY2VB
bmRTZXQgcHJvZ3JhbUV4ZWN1dGFibGVTcGFjZTsKKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1
bmM+CisgICAgdm9pZCBmb3JFYWNoU2NyaXB0RXhlY3V0YWJsZVNwYWNlKGNvbnN0IEZ1bmMmIGZ1
bmMpCisgICAgeworICAgICAgICBpZiAobV9ldmFsRXhlY3V0YWJsZVNwYWNlKQorICAgICAgICAg
ICAgZnVuYygqbV9ldmFsRXhlY3V0YWJsZVNwYWNlKTsKKyAgICAgICAgZnVuYyhmdW5jdGlvbkV4
ZWN1dGFibGVTcGFjZSk7CisgICAgICAgIGlmIChtX21vZHVsZVByb2dyYW1FeGVjdXRhYmxlU3Bh
Y2UpCisgICAgICAgICAgICBmdW5jKCptX21vZHVsZVByb2dyYW1FeGVjdXRhYmxlU3BhY2UpOwor
ICAgICAgICBmdW5jKHByb2dyYW1FeGVjdXRhYmxlU3BhY2UpOworICAgIH0KKworICAgIFNwYWNl
QW5kU2V0IHVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlU3BhY2U7CisKKyN1bmRlZiBEWU5BTUlD
X1NQQUNFX0FORF9TRVRfREVGSU5FX01FTUJFUgogfTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Jc29IZWFwQ2VsbFR5cGUuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lzb0hlYXBDZWxsVHlwZS5jcHAJ
KHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lzb0hlYXBD
ZWxsVHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxLDIyICszMSw2MSBAQAogCiBuYW1lc3Bh
Y2UgSlNDIHsKIAotSXNvSGVhcENlbGxUeXBlOjpJc29IZWFwQ2VsbFR5cGUoRGVzdHJ1Y3Rpb25N
b2RlIGRlc3RydWN0aW9uTW9kZSwgRGVzdHJveUZ1bmN0aW9uUHRyIGRlc3Ryb3lGdW5jdGlvbikK
LSAgICA6IEhlYXBDZWxsVHlwZShDZWxsQXR0cmlidXRlcyhkZXN0cnVjdGlvbk1vZGUsIEhlYXBD
ZWxsOjpKU0NlbGwpKQotICAgICwgbV9kZXN0cm95KGRlc3Ryb3lGdW5jdGlvbikKKy8vSXNvSGVh
cENlbGxUeXBlOjpJc29IZWFwQ2VsbFR5cGUoRGVzdHJ1Y3Rpb25Nb2RlIGRlc3RydWN0aW9uTW9k
ZSwgRGVzdHJveUZ1bmN0aW9uUHRyIGRlc3Ryb3lGdW5jdGlvbikKKy8vICAgIDogSGVhcENlbGxU
eXBlKENlbGxBdHRyaWJ1dGVzKGRlc3RydWN0aW9uTW9kZSwgSGVhcENlbGw6OkpTQ2VsbCkpCisv
LyAgICAsIG1fZGVzdHJveShkZXN0cm95RnVuY3Rpb24pCisvL3sKKy8vfQorLy8KKy8vSXNvSGVh
cENlbGxUeXBlOjp+SXNvSGVhcENlbGxUeXBlKCkgPSBkZWZhdWx0OworLy8KKy8vdm9pZCBJc29I
ZWFwQ2VsbFR5cGU6OmZpbmlzaFN3ZWVwKE1hcmtlZEJsb2NrOjpIYW5kbGUmIGhhbmRsZSwgRnJl
ZUxpc3QqIGZyZWVMaXN0KSBjb25zdAorLy97CisvLyAgICBoYW5kbGUuZmluaXNoU3dlZXBLbm93
aW5nSGVhcENlbGxUeXBlKGZyZWVMaXN0LCAqdGhpcyk7CisvL30KKy8vCisvL3ZvaWQgSXNvSGVh
cENlbGxUeXBlOjpkZXN0cm95KFZNJiwgSlNDZWxsKiBjZWxsKSBjb25zdAorLy97CisvLyAgICBt
X2Rlc3Ryb3koY2VsbCk7CisvL30KKworSXNvSGVhcENlbGxUeXBlQmFzZTo6SXNvSGVhcENlbGxU
eXBlQmFzZShDZWxsQXR0cmlidXRlcyBhdHRyaWJ1dGVzKQorICAgIDogSGVhcENlbGxUeXBlKGF0
dHJpYnV0ZXMpCiB7CiB9CiAKLUlzb0hlYXBDZWxsVHlwZTo6fklzb0hlYXBDZWxsVHlwZSgpID0g
ZGVmYXVsdDsKK0lzb0hlYXBDZWxsVHlwZUJhc2U6On5Jc29IZWFwQ2VsbFR5cGVCYXNlKCkgPSBk
ZWZhdWx0OwogCi12b2lkIElzb0hlYXBDZWxsVHlwZTo6ZmluaXNoU3dlZXAoTWFya2VkQmxvY2s6
OkhhbmRsZSYgaGFuZGxlLCBGcmVlTGlzdCogZnJlZUxpc3QpIGNvbnN0Cit2b2lkIElzb0hlYXBD
ZWxsVHlwZUJhc2U6OmZpbmlzaFN3ZWVwKE1hcmtlZEJsb2NrOjpIYW5kbGUmIGhhbmRsZSwgRnJl
ZUxpc3QqIGZyZWVMaXN0KSBjb25zdAogewotICAgIGhhbmRsZS5maW5pc2hTd2VlcEtub3dpbmdI
ZWFwQ2VsbFR5cGUoZnJlZUxpc3QsICp0aGlzKTsKKyAgICAvLyBmaW5pc2hTd2VlcEtub3dpbmdI
ZWFwQ2VsbFR5cGUoKSBtYXkgY2FsbCBkZXN0cm95IGluIGEgbG9vcCwgYW5kIHdlIGRvbid0Cisg
ICAgLy8gd2FudCB0byBkbyBhIHZpcnR1YWwgZnVuY3Rpb24gdG8gZG8gdGhlIGRlc3Ryb3kgaW4g
dGhhdCBsb29wLiBJbnN0ZWFkLAorICAgIC8vIHdlIGNhbGwgdGhlIHZpcnR1YWwgZnVuY3Rpb24g
ZGVzdHJveUZ1bmN0aW9uUHRyKCkgb25seSBvbmNlIHRvIGZldGNoIHRoZQorICAgIC8vIERlc3Ry
b3lGdW5jdGlvblB0ciwgYW5kIHVzZSB0aGlzIEludm9rZXIgY2xhc3MgdG8gY2FjaGUgdGhlIHJl
dHVybmVkCisgICAgLy8gRGVzdHJveUZ1bmN0aW9uUHRyLiBmaW5pc2hTd2VlcEtub3dpbmdIZWFw
Q2VsbFR5cGUoKSBjYW4gdGhlbiBpbnZva2UKKyAgICAvLyBkZXN0cm95IHZpYSBJbnZva2VyJ3Mg
Y2FjaGVkIERlc3Ryb3lGdW5jdGlvblB0ci4KKyAgICBjbGFzcyBJbnZva2VyIHsKKyAgICBwdWJs
aWM6CisgICAgICAgIEludm9rZXIoRGVzdHJveUZ1bmN0aW9uUHRyIGRlc3Ryb3lGdW5jdGlvblB0
cikKKyAgICAgICAgICAgIDogbV9kZXN0cm95KGRlc3Ryb3lGdW5jdGlvblB0cikKKyAgICAgICAg
eyB9CisKKyAgICAgICAgQUxXQVlTX0lOTElORSB2b2lkIG9wZXJhdG9yKCkoVk0mLCBKU0NlbGwq
IGNlbGwpIGNvbnN0CisgICAgICAgIHsKKyAgICAgICAgICAgIG1fZGVzdHJveShjZWxsKTsKKyAg
ICAgICAgfQorCisgICAgcHJpdmF0ZToKKyAgICAgICAgRGVzdHJveUZ1bmN0aW9uUHRyIG1fZGVz
dHJveTsKKyAgICB9OworCisgICAgSW52b2tlciBpbnZva2VyKGRlc3Ryb3lGdW5jdGlvblB0cigp
KTsKKyAgICBoYW5kbGUuZmluaXNoU3dlZXBLbm93aW5nSGVhcENlbGxUeXBlKGZyZWVMaXN0LCBp
bnZva2VyKTsKIH0KIAotdm9pZCBJc29IZWFwQ2VsbFR5cGU6OmRlc3Ryb3koVk0mLCBKU0NlbGwq
IGNlbGwpIGNvbnN0CitJc29IZWFwQ2VsbFR5cGVCYXNlOjpEZXN0cm95RnVuY3Rpb25QdHIgSXNv
SGVhcENlbGxUeXBlQmFzZTo6ZGVzdHJveUZ1bmN0aW9uUHRyKCkgY29uc3QKIHsKLSAgICBtX2Rl
c3Ryb3koY2VsbCk7CisgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KIAogfSAv
LyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Jc29IZWFw
Q2VsbFR5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Jc29I
ZWFwQ2VsbFR5cGUuaAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvSXNvSGVhcENlbGxUeXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI5LDMwICsyOSw2OSBA
QAogCiBuYW1lc3BhY2UgSlNDIHsKIAotY2xhc3MgSXNvSGVhcENlbGxUeXBlIGZpbmFsIDogcHVi
bGljIEhlYXBDZWxsVHlwZSB7CisvL2NsYXNzIElzb0hlYXBDZWxsVHlwZSBmaW5hbCA6IHB1Ymxp
YyBIZWFwQ2VsbFR5cGUgeworLy9wdWJsaWM6CisvLyAgICB1c2luZyBEZXN0cm95RnVuY3Rpb25Q
dHIgPSB2b2lkICgqKShKU0NlbGwqKTsKKy8vCisvLyAgICBKU19FWFBPUlRfUFJJVkFURSB+SXNv
SGVhcENlbGxUeXBlKCk7CisvLworLy8gICAgSlNfRVhQT1JUX1BSSVZBVEUgSXNvSGVhcENlbGxU
eXBlKERlc3RydWN0aW9uTW9kZSwgRGVzdHJveUZ1bmN0aW9uUHRyKTsKKy8vCisvLyAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBDZWxsVHlwZT4KKy8vICAgIHN0cnVjdCBBcmdzIHsKKy8vICAgICAgICBB
cmdzKCkKKy8vICAgICAgICAgICAgOiBtb2RlKENlbGxUeXBlOjpuZWVkc0Rlc3RydWN0aW9uID8g
TmVlZHNEZXN0cnVjdGlvbiA6IERvZXNOb3ROZWVkRGVzdHJ1Y3Rpb24pCisvLyAgICAgICAgICAg
ICwgZnVuY3Rpb25QdHIoJkNlbGxUeXBlOjpkZXN0cm95KQorLy8gICAgICAgIHsgfQorLy8KKy8v
ICAgICAgICBEZXN0cnVjdGlvbk1vZGUgbW9kZTsKKy8vICAgICAgICBEZXN0cm95RnVuY3Rpb25Q
dHIgZnVuY3Rpb25QdHI7CisvLyAgICB9OworLy8KKy8vICAgIHRlbXBsYXRlPHR5cGVuYW1lIENl
bGxUeXBlPgorLy8gICAgSXNvSGVhcENlbGxUeXBlKEFyZ3M8Q2VsbFR5cGU+JiYgYXJncykKKy8v
ICAgICAgICA6IElzb0hlYXBDZWxsVHlwZShhcmdzLm1vZGUsIGFyZ3MuZnVuY3Rpb25QdHIpCisv
LyAgICB7IH0KKy8vCisvLyAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIGZpbmlzaFN3ZWVwKE1h
cmtlZEJsb2NrOjpIYW5kbGUmLCBGcmVlTGlzdCopIGNvbnN0IGZpbmFsOworLy8gICAgSlNfRVhQ
T1JUX1BSSVZBVEUgdm9pZCBkZXN0cm95KFZNJiwgSlNDZWxsKikgY29uc3QgZmluYWw7CisvLwor
Ly8gICAgQUxXQVlTX0lOTElORSB2b2lkIG9wZXJhdG9yKCkoVk0mLCBKU0NlbGwqIGNlbGwpIGNv
bnN0CisvLyAgICB7CisvLyAgICAgICAgbV9kZXN0cm95KGNlbGwpOworLy8gICAgfQorLy8KKy8v
cHJpdmF0ZToKKy8vICAgIERlc3Ryb3lGdW5jdGlvblB0ciBXVEZfVlRCTF9GVU5DUFRSX1BUUkFV
VEhfU1RSKCJJc29IZWFwQ2VsbFR5cGUuZGVzdHJveSIpIG1fZGVzdHJveTsKKy8vfTsKKworLy8g
VGhlIHJlYXNvbiB3ZSBuZWVkIGFuIElzb0hlYXBDZWxsVHlwZUJhc2UgaXMganVzdCBzbyBhbGwg
SXNvSGVhcENlbGxUeXBlCisvLyBzcGVjaWFsaXphdGlvbnMgY2FuIHNoYXJlIHRoZSBzYW1lIGZp
bmlzaFN3ZWVwKCkuIGZpbmlzaFN3ZWVwKCkgbmVlZHMgdG8gY2FsbAorLy8gTWFya2VkQmxvY2s6
OkhhbmRsZTo6ZmluaXNoU3dlZXBLbm93aW5nSGVhcENlbGxUeXBlKCksIHdoaWNoIGlzIGEgcmVs
YXRpdmVseQorLy8gbGFyZ2UgdGVtcGxhdGUgZnVuY3Rpb24uIFdlIGRvbid0IHdhbnQgdG8gaW5z
dGFudGlhdGUgYSBzcGVjaWFsaXphdGlvbiBvZgorLy8gZmluaXNoU3dlZXBLbm93aW5nSGVhcENl
bGxUeXBlKCkgZm9yIGVhY2ggSXNvSGVhcENlbGxUeXBlIGNlbGwgdHlwZS4KK2NsYXNzIElzb0hl
YXBDZWxsVHlwZUJhc2UgOiBwdWJsaWMgSGVhcENlbGxUeXBlIHsKIHB1YmxpYzoKICAgICB1c2lu
ZyBEZXN0cm95RnVuY3Rpb25QdHIgPSB2b2lkICgqKShKU0NlbGwqKTsKIAotICAgIEpTX0VYUE9S
VF9QUklWQVRFIH5Jc29IZWFwQ2VsbFR5cGUoKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBJc29I
ZWFwQ2VsbFR5cGVCYXNlKENlbGxBdHRyaWJ1dGVzIGF0dHJpYnV0ZXMpOworICAgIEpTX0VYUE9S
VF9QUklWQVRFIH5Jc29IZWFwQ2VsbFR5cGVCYXNlKCk7CiAKLSAgICBKU19FWFBPUlRfUFJJVkFU
RSBJc29IZWFwQ2VsbFR5cGUoRGVzdHJ1Y3Rpb25Nb2RlLCBEZXN0cm95RnVuY3Rpb25QdHIpOwor
ICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgZmluaXNoU3dlZXAoTWFya2VkQmxvY2s6OkhhbmRs
ZSYgaGFuZGxlLCBGcmVlTGlzdCogZnJlZUxpc3QpIGNvbnN0IGZpbmFsOwogCi0gICAgdGVtcGxh
dGU8dHlwZW5hbWUgQ2VsbFR5cGU+Ci0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxJc29IZWFw
Q2VsbFR5cGU+IGNyZWF0ZSgpCi0gICAgewotICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxJc29I
ZWFwQ2VsbFR5cGU+KENlbGxUeXBlOjpuZWVkc0Rlc3RydWN0aW9uID8gTmVlZHNEZXN0cnVjdGlv
biA6IERvZXNOb3ROZWVkRGVzdHJ1Y3Rpb24sICZDZWxsVHlwZTo6ZGVzdHJveSk7Ci0gICAgfQot
Ci0gICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBmaW5pc2hTd2VlcChNYXJrZWRCbG9jazo6SGFu
ZGxlJiwgRnJlZUxpc3QqKSBjb25zdCBmaW5hbDsKLSAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lk
IGRlc3Ryb3koVk0mLCBKU0NlbGwqKSBjb25zdCBmaW5hbDsKLQotICAgIEFMV0FZU19JTkxJTkUg
dm9pZCBvcGVyYXRvcigpKFZNJiwgSlNDZWxsKiBjZWxsKSBjb25zdAotICAgIHsKLSAgICAgICAg
bV9kZXN0cm95KGNlbGwpOwotICAgIH0KKyAgICB2aXJ0dWFsIERlc3Ryb3lGdW5jdGlvblB0ciBk
ZXN0cm95RnVuY3Rpb25QdHIoKSBjb25zdDsKK307CisKK3RlbXBsYXRlPHR5cGVuYW1lIENlbGxU
eXBlPgorY2xhc3MgSXNvSGVhcENlbGxUeXBlIGZpbmFsIDogcHVibGljIElzb0hlYXBDZWxsVHlw
ZUJhc2UgeworcHVibGljOgorICAgIHVzaW5nIElzb0hlYXBDZWxsVHlwZUJhc2U6OkRlc3Ryb3lG
dW5jdGlvblB0cjsKKworICAgIElzb0hlYXBDZWxsVHlwZSgpOworICAgIH5Jc29IZWFwQ2VsbFR5
cGUoKSA9IGRlZmF1bHQ7CiAKLXByaXZhdGU6Ci0gICAgRGVzdHJveUZ1bmN0aW9uUHRyIFdURl9W
VEJMX0ZVTkNQVFJfUFRSQVVUSF9TVFIoIklzb0hlYXBDZWxsVHlwZS5kZXN0cm95IikgbV9kZXN0
cm95OworICAgIHZvaWQgZGVzdHJveShWTSYsIEpTQ2VsbCogY2VsbCkgY29uc3QgZmluYWw7Cisg
ICAgRGVzdHJveUZ1bmN0aW9uUHRyIGRlc3Ryb3lGdW5jdGlvblB0cigpIGNvbnN0IGZpbmFsOwog
fTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVh
cC9Jc29IZWFwQ2VsbFR5cGVJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvSXNvSGVhcENlbGxUeXBlSW5saW5lcy5oCShub25leGlzdGVudCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lzb0hlYXBDZWxsVHlwZUlubGluZXMuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMCwwICsxLDQ5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
CisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJIZWFwQ2VsbFR5cGUuaCIK
KworbmFtZXNwYWNlIEpTQyB7CisKK3RlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlPgorQUxXQVlT
X0lOTElORSBJc29IZWFwQ2VsbFR5cGU8Q2VsbFR5cGU+OjpJc29IZWFwQ2VsbFR5cGUoKQorICAg
IDogSXNvSGVhcENlbGxUeXBlQmFzZShDZWxsQXR0cmlidXRlcyhDZWxsVHlwZTo6bmVlZHNEZXN0
cnVjdGlvbiA/IE5lZWRzRGVzdHJ1Y3Rpb24gOiBEb2VzTm90TmVlZERlc3RydWN0aW9uLCBIZWFw
Q2VsbDo6SlNDZWxsKSkKK3sgfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZT4KK3ZvaWQg
SXNvSGVhcENlbGxUeXBlPENlbGxUeXBlPjo6ZGVzdHJveShWTSYsIEpTQ2VsbCogY2VsbCkgY29u
c3QKK3sKKyAgICBDZWxsVHlwZTo6ZGVzdHJveShjZWxsKTsKK30KKwordGVtcGxhdGU8dHlwZW5h
bWUgQ2VsbFR5cGU+Cit0eXBlbmFtZSBJc29IZWFwQ2VsbFR5cGU8Q2VsbFR5cGU+OjpEZXN0cm95
RnVuY3Rpb25QdHIgSXNvSGVhcENlbGxUeXBlPENlbGxUeXBlPjo6ZGVzdHJveUZ1bmN0aW9uUHRy
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gJkNlbGxUeXBlOjpkZXN0cm95OworfQorCit9IC8vIG5h
bWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lzb0lubGluZWRI
ZWFwQ2VsbFR5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9J
c29JbmxpbmVkSGVhcENlbGxUeXBlLmgJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL0lzb0lubGluZWRIZWFwQ2VsbFR5cGUuaAkod29ya2luZyBjb3B5KQpA
QCAtMzIsMjggKzMyLDEzIEBAIG5hbWVzcGFjZSBKU0MgewogdGVtcGxhdGU8dHlwZW5hbWUgQ2Vs
bFR5cGU+CiBjbGFzcyBJc29JbmxpbmVkSGVhcENlbGxUeXBlIGZpbmFsIDogcHVibGljIEhlYXBD
ZWxsVHlwZSB7CiBwdWJsaWM6Ci0gICAgSXNvSW5saW5lZEhlYXBDZWxsVHlwZSgpCi0gICAgICAg
IDogSGVhcENlbGxUeXBlKENlbGxBdHRyaWJ1dGVzKENlbGxUeXBlOjpuZWVkc0Rlc3RydWN0aW9u
ID8gTmVlZHNEZXN0cnVjdGlvbiA6IERvZXNOb3ROZWVkRGVzdHJ1Y3Rpb24sIEhlYXBDZWxsOjpK
U0NlbGwpKQotICAgIHsKLSAgICB9Ci0KKyAgICBJc29JbmxpbmVkSGVhcENlbGxUeXBlKCk7CiAg
ICAgc3RydWN0IERlc3Ryb3lGdW5jIHsKLSAgICAgICAgQUxXQVlTX0lOTElORSB2b2lkIG9wZXJh
dG9yKCkoVk0mLCBKU0NlbGwqIGNlbGwpIGNvbnN0Ci0gICAgICAgIHsKLSAgICAgICAgICAgIENl
bGxUeXBlOjpkZXN0cm95KGNlbGwpOwotICAgICAgICB9CisgICAgICAgIEFMV0FZU19JTkxJTkUg
dm9pZCBvcGVyYXRvcigpKFZNJiwgSlNDZWxsKiBjZWxsKSBjb25zdDsKICAgICB9OwogCi0gICAg
dm9pZCBmaW5pc2hTd2VlcChNYXJrZWRCbG9jazo6SGFuZGxlJiBoYW5kbGUsIEZyZWVMaXN0KiBm
cmVlTGlzdCkgY29uc3QgZmluYWwKLSAgICB7Ci0gICAgICAgIGhhbmRsZS5maW5pc2hTd2VlcEtu
b3dpbmdIZWFwQ2VsbFR5cGUoZnJlZUxpc3QsIERlc3Ryb3lGdW5jKCkpOwotICAgIH0KLQotICAg
IHZvaWQgZGVzdHJveShWTSYsIEpTQ2VsbCogY2VsbCkgY29uc3QgZmluYWwKLSAgICB7Ci0gICAg
ICAgIENlbGxUeXBlOjpkZXN0cm95KGNlbGwpOwotICAgIH0KKyAgICB2b2lkIGZpbmlzaFN3ZWVw
KE1hcmtlZEJsb2NrOjpIYW5kbGUmIGhhbmRsZSwgRnJlZUxpc3QqIGZyZWVMaXN0KSBjb25zdCBm
aW5hbDsKKyAgICB2b2lkIGRlc3Ryb3koVk0mLCBKU0NlbGwqIGNlbGwpIGNvbnN0IGZpbmFsOwog
fTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCi0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL0lzb0lubGluZWRIZWFwQ2VsbFR5cGVJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvSXNvSW5saW5lZEhlYXBDZWxsVHlwZUlubGluZXMuaAkobm9u
ZXhpc3RlbnQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Jc29JbmxpbmVkSGVhcENl
bGxUeXBlSW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTggQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lu
Y2x1ZGUgIklzb0lubGluZWRIZWFwQ2VsbFR5cGUuaCIKKworI2luY2x1ZGUgIk1hcmtlZEJsb2Nr
LmgiCisKK25hbWVzcGFjZSBKU0MgeworCit0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZT4KK2lu
bGluZSBJc29JbmxpbmVkSGVhcENlbGxUeXBlPENlbGxUeXBlPjo6SXNvSW5saW5lZEhlYXBDZWxs
VHlwZSgpCisgICAgOiBIZWFwQ2VsbFR5cGUoQ2VsbEF0dHJpYnV0ZXMoQ2VsbFR5cGU6Om5lZWRz
RGVzdHJ1Y3Rpb24gPyBOZWVkc0Rlc3RydWN0aW9uIDogRG9lc05vdE5lZWREZXN0cnVjdGlvbiwg
SGVhcENlbGw6OkpTQ2VsbCkpCit7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlPgor
QUxXQVlTX0lOTElORSB2b2lkIElzb0lubGluZWRIZWFwQ2VsbFR5cGU8Q2VsbFR5cGU+OjpEZXN0
cm95RnVuYzo6b3BlcmF0b3IoKShWTSYsIEpTQ2VsbCogY2VsbCkgY29uc3QKK3sKKyAgICBDZWxs
VHlwZTo6ZGVzdHJveShjZWxsKTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGU+Citp
bmxpbmUgdm9pZCBJc29JbmxpbmVkSGVhcENlbGxUeXBlPENlbGxUeXBlPjo6ZmluaXNoU3dlZXAo
TWFya2VkQmxvY2s6OkhhbmRsZSYgaGFuZGxlLCBGcmVlTGlzdCogZnJlZUxpc3QpIGNvbnN0Cit7
CisgICAgaGFuZGxlLmZpbmlzaFN3ZWVwS25vd2luZ0hlYXBDZWxsVHlwZShmcmVlTGlzdCwgRGVz
dHJveUZ1bmMoKSk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlPgoraW5saW5lIHZv
aWQgSXNvSW5saW5lZEhlYXBDZWxsVHlwZTxDZWxsVHlwZT46OmRlc3Ryb3koVk0mLCBKU0NlbGwq
IGNlbGwpIGNvbnN0Cit7CisgICAgQ2VsbFR5cGU6OmRlc3Ryb3koY2VsbCk7Cit9CisKK30gLy8g
bmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSXNvU3Vic3Bh
Y2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Jc29TdWJzcGFj
ZS5oCShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Jc29T
dWJzcGFjZS5oCSh3b3JraW5nIGNvcHkpCkBAIC01NCw3ICs1NCw3IEBAIHB1YmxpYzoKICAgICB2
b2lkKiB0cnlBbGxvY2F0ZUZyb21Mb3dlclRpZXIoKTsKICAgICB2b2lkIGRlc3Ryb3lMb3dlclRp
ZXJGcmVlTGlzdCgpOwogCi0gICAgdm9pZCBzd2VlcCgpOworICAgIHZvaWQgc3dlZXAzKCk7CiAK
ICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jPiB2b2lkIGZvckVhY2hMb3dlclRpZXJGcmVlTGlz
dGVkUHJlY2lzZUFsbG9jYXRpb24oY29uc3QgRnVuYyYpOwogCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9Jc29TdWJzcGFjZUlubGluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9Jc29TdWJzcGFjZUlubGluZXMuaAkocmV2aXNpb24gMjg2MDk1
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSXNvU3Vic3BhY2VJbmxpbmVzLmgJKHdv
cmtpbmcgY29weSkKQEAgLTQ0LDcgKzQ0LDcgQEAgaW5saW5lIHZvaWQgSXNvU3Vic3BhY2U6OmNs
ZWFySXNvQ2VsbFNldAogICAgICAgICB9KTsKIH0KIAotaW5saW5lIHZvaWQgSXNvU3Vic3BhY2U6
OnN3ZWVwKCkKK2lubGluZSB2b2lkIElzb1N1YnNwYWNlOjpzd2VlcDMoKQogewogICAgIFN1YnNw
YWNlOjpzd2VlcEJsb2NrcygpOwogICAgIC8vIFdlIHN3ZWVwIHByZWNpc2UtYWxsb2NhdGlvbnMg
ZWFnZXJseSwgYnV0IHdlIGRvIG5vdCBmcmVlIGl0IGltbWVkaWF0ZWx5LgpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2tJbmxpbmVzLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2tJbmxpbmVzLmgJKHJldmlzaW9u
IDI4NjA5NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrSW5saW5l
cy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxNi0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAxNi0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjEzLDcgKzIxMyw3IEBAIGlubGluZSBib29sIE1hcmtl
ZEJsb2NrOjpIYW5kbGU6OmFyZU1hcmsKIC8vIHN3ZWVwTW9kZSA9PSBTd2VlcFRvRnJlZUxpc3QK
IC8vIHNjcmliYmxlTW9kZSA9PSBEb250U2NyaWJibGUKIC8vIG5ld2x5QWxsb2NhdGVkTW9kZSA9
PSBEb2VzTm90SGF2ZU5ld2x5QWxsb2NhdGVkCi0vLyBkZXN0cnVjdGlvbk1vZGUgIT0gQmxvY2tI
YXNEZXN0cmljdG9yc0FuZENvbGxlY3RvcklzUnVubmluZworLy8gZGVzdHJ1Y3Rpb25Nb2RlICE9
IEJsb2NrSGFzRGVzdHJ1Y3RvcnNBbmRDb2xsZWN0b3JJc1J1bm5pbmcKIC8vCiAvLyBlbXB0eU1v
ZGUgPSBJc0VtcHR5CiAvLyAgICAgZGVzdHJ1Y3Rpb25Nb2RlID0gRG9lc05vdE5lZWREZXN0cnVj
dGlvbgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0luamVjdGVkU2Ny
aXB0SG9zdFByb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3IvSlNJbmplY3RlZFNjcmlwdEhvc3RQcm90b3R5cGUuaAkocmV2aXNpb24gMjg2MDk1
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0luamVjdGVkU2NyaXB0SG9z
dFByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00MCw3ICs0MCw3IEBAIHB1YmxpYzoKICAg
ICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAg
ewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU0luamVjdGVk
U2NyaXB0SG9zdFByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmpl
Y3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQog
CiAgICAgREVDTEFSRV9JTkZPOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9KU0phdmFTY3JpcHRDYWxsRnJhbWVQcm90b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTSmF2YVNjcmlwdENhbGxGcmFtZVByb3RvdHlwZS5o
CShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pT
SmF2YVNjcmlwdENhbGxGcmFtZVByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00MCw3ICs0
MCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3Io
SlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9T
SEFSQUJMRShKU0phdmFTY3JpcHRDYWxsRnJhbWVQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICBy
ZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmpl
Y3RTcGFjZSgpOwogICAgIH0KIAogICAgIERFQ0xBUkVfSU5GTzsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnRlcnByZXRlci9DYWxsRnJhbWUuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvQ2FsbEZyYW1lLmgJKHJldmlzaW9uIDI4NjA5NSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9DYWxsRnJhbWUuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMzgsNiArMzgsNyBAQCBuYW1lc3BhY2UgSlNDICB7CiAgICAgY2xhc3MgSlND
YWxsZWU7CiAgICAgY2xhc3MgSlNTY29wZTsKICAgICBjbGFzcyBTb3VyY2VPcmlnaW47CisgICAg
Y2xhc3MgVmlydHVhbFJlZ2lzdGVyOwogCiAgICAgc3RydWN0IEluc3RydWN0aW9uOwogCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BZ2dyZWdhdGVFcnJvclByb3RvdHlwZS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FnZ3JlZ2F0ZUVy
cm9yUHJvdG90eXBlLmgJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0FnZ3JlZ2F0ZUVycm9yUHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ0
LDcgKzQ0LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3Io
Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFC
TEUoQWdncmVnYXRlRXJyb3JQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBs
YWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwog
ICAgIH0KIAogICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlJdGVyYXRvclByb3RvdHlwZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5SXRlcmF0b3JQcm90
b3R5cGUuaAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQXJyYXlJdGVyYXRvclByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw3ICszOCw3
IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkK
ICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEFycmF5
SXRlcmF0b3JQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0
U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAog
ICAgIHN0YXRpYyBBcnJheUl0ZXJhdG9yUHJvdG90eXBlKiBjcmVhdGUoVk0mIHZtLCBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FzeW5jRnJvbVN5bmNJdGVyYXRvclByb3RvdHlwZS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FzeW5jRnJvbVN5
bmNJdGVyYXRvclByb3RvdHlwZS5oCShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Bc3luY0Zyb21TeW5jSXRlcmF0b3JQcm90b3R5cGUuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTctMjAxOSBP
bGVrc2FuZHIgU2thY2hrb3YgPGdza2FjaGtvdkBnbWFpbC5jb20+LgorICogQ29weXJpZ2h0IChD
KSAyMDIxIEFwcGxlLCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTM3LDcgKzM4LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJc29T
dWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VS
VF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoQXN5bmNGcm9tU3luY0l0ZXJhdG9yUHJvdG90eXBlLCBC
YXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1
cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBERUNMQVJFX0lORk87Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bc3luY0Z1bmN0aW9uUHJvdG90eXBl
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXN5bmNGdW5j
dGlvblByb3RvdHlwZS5oCShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Bc3luY0Z1bmN0aW9uUHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM4
LDcgKzM4LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3Io
Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFC
TEUoQXN5bmNGdW5jdGlvblByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxh
aW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAg
ICAgfQogCiAgICAgREVDTEFSRV9JTkZPOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQXN5bmNHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FzeW5jR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5
cGUuaAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
QXN5bmNHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw3
ICszOCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZN
JiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxF
KEFzeW5jR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4g
JnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFj
ZSgpOwogICAgIH0KIAogICAgIERFQ0xBUkVfSU5GTzsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0FzeW5jR2VuZXJhdG9yUHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXN5bmNHZW5lcmF0b3JQcm90b3R5cGUuaAkocmV2
aXNpb24gMjg2MDk1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXN5bmNHZW5l
cmF0b3JQcm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtNDEsNyArNDEsNyBAQCBwdWJsaWM6
CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewogICAg
ICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShBc3luY0dlbmVyYXRvclBy
b3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAg
ICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGlj
IEFzeW5jR2VuZXJhdG9yUHJvdG90eXBlKiBjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCos
IFN0cnVjdHVyZSogc3RydWN0dXJlKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQXN5bmNJdGVyYXRvclByb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0FzeW5jSXRlcmF0b3JQcm90b3R5cGUuaAkocmV2aXNpb24gMjg2MDk1
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXN5bmNJdGVyYXRvclByb3RvdHlw
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw3ICszOSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMg
SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19B
U1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEFzeW5jSXRlcmF0b3JQcm90b3R5cGUsIEJhc2Up
OwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAm
dm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBBc3luY0l0ZXJhdG9y
UHJvdG90eXBlKiBjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0F0b21pY3NPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9BdG9taWNzT2JqZWN0LmgJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0F0b21pY3NPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsx
LDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAyMSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM3LDcg
KzM3LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0m
IHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUo
QXRvbWljc09iamVjdCwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFj
ZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIAog
ICAgIHN0YXRpYyBBdG9taWNzT2JqZWN0KiBjcmVhdGUoVk0mLCBKU0dsb2JhbE9iamVjdCosIFN0
cnVjdHVyZSopOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQmlnSW50UHJv
dG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQmln
SW50UHJvdG90eXBlLmgJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0JpZ0ludFByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw3ICszOSw3
IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkK
ICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEJpZ0lu
dFByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsK
KyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAgc3Rh
dGljIEJpZ0ludFByb3RvdHlwZSogY3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9CcmFuZGVkU3RydWN0dXJlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQnJhbmRlZFN0cnVjdHVyZS5oCShyZXZpc2lvbiAyODYwOTUpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9CcmFuZGVkU3RydWN0dXJlLmgJKHdvcmtp
bmcgY29weSkKQEAgLTQ3LDcgKzQ3LDcgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1l
IENlbGxUeXBlLCBTdWJzcGFjZUFjY2Vzcz4KICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNw
YWNlRm9yKFZNJiB2bSkKICAgICB7Ci0gICAgICAgIHJldHVybiAmdm0uYnJhbmRlZFN0cnVjdHVy
ZVNwYWNlOworICAgICAgICByZXR1cm4gJnZtLmJyYW5kZWRTdHJ1Y3R1cmVTcGFjZSgpOwogICAg
IH0KIAogICAgIEFMV0FZU19JTkxJTkUgYm9vbCBjaGVja0JyYW5kKFN5bWJvbCogYnJhbmQpCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9CdXR0ZXJmbHlJbmxpbmVzLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQnV0dGVyZmx5SW5saW5l
cy5oCShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9C
dXR0ZXJmbHlJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTc3LDcgKzc3LDcgQEAgQUxXQVlT
X0lOTElORSB1bnNpZ25lZCBCdXR0ZXJmbHk6Om9wdGltYQogaW5saW5lIEJ1dHRlcmZseSogQnV0
dGVyZmx5Ojp0cnlDcmVhdGVVbmluaXRpYWxpemVkKFZNJiB2bSwgSlNPYmplY3QqLCBzaXplX3Qg
cHJlQ2FwYWNpdHksIHNpemVfdCBwcm9wZXJ0eUNhcGFjaXR5LCBib29sIGhhc0luZGV4aW5nSGVh
ZGVyLCBzaXplX3QgaW5kZXhpbmdQYXlsb2FkU2l6ZUluQnl0ZXMsIEdDRGVmZXJyYWxDb250ZXh0
KiBkZWZlcnJhbENvbnRleHQpCiB7CiAgICAgc2l6ZV90IHNpemUgPSB0b3RhbFNpemUocHJlQ2Fw
YWNpdHksIHByb3BlcnR5Q2FwYWNpdHksIGhhc0luZGV4aW5nSGVhZGVyLCBpbmRleGluZ1BheWxv
YWRTaXplSW5CeXRlcyk7Ci0gICAgdm9pZCogYmFzZSA9IHZtLmpzVmFsdWVHaWdhY2FnZUF1eGls
aWFyeVNwYWNlLmFsbG9jYXRlTm9uVmlydHVhbCh2bSwgc2l6ZSwgZGVmZXJyYWxDb250ZXh0LCBB
bGxvY2F0aW9uRmFpbHVyZU1vZGU6OlJldHVybk51bGwpOworICAgIHZvaWQqIGJhc2UgPSB2bS5q
c1ZhbHVlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZSgpLmFsbG9jYXRlTm9uVmlydHVhbCh2bSwgc2l6
ZSwgZGVmZXJyYWxDb250ZXh0LCBBbGxvY2F0aW9uRmFpbHVyZU1vZGU6OlJldHVybk51bGwpOwog
ICAgIGlmIChVTkxJS0VMWSghYmFzZSkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCkBAIC04
OSw3ICs4OSw3IEBAIGlubGluZSBCdXR0ZXJmbHkqIEJ1dHRlcmZseTo6dHJ5Q3JlYXRlVW4KIGlu
bGluZSBCdXR0ZXJmbHkqIEJ1dHRlcmZseTo6Y3JlYXRlVW5pbml0aWFsaXplZChWTSYgdm0sIEpT
T2JqZWN0Kiwgc2l6ZV90IHByZUNhcGFjaXR5LCBzaXplX3QgcHJvcGVydHlDYXBhY2l0eSwgYm9v
bCBoYXNJbmRleGluZ0hlYWRlciwgc2l6ZV90IGluZGV4aW5nUGF5bG9hZFNpemVJbkJ5dGVzKQog
ewogICAgIHNpemVfdCBzaXplID0gdG90YWxTaXplKHByZUNhcGFjaXR5LCBwcm9wZXJ0eUNhcGFj
aXR5LCBoYXNJbmRleGluZ0hlYWRlciwgaW5kZXhpbmdQYXlsb2FkU2l6ZUluQnl0ZXMpOwotICAg
IHZvaWQqIGJhc2UgPSB2bS5qc1ZhbHVlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZS5hbGxvY2F0ZU5v
blZpcnR1YWwodm0sIHNpemUsIG51bGxwdHIsIEFsbG9jYXRpb25GYWlsdXJlTW9kZTo6QXNzZXJ0
KTsKKyAgICB2b2lkKiBiYXNlID0gdm0uanNWYWx1ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UoKS5h
bGxvY2F0ZU5vblZpcnR1YWwodm0sIHNpemUsIG51bGxwdHIsIEFsbG9jYXRpb25GYWlsdXJlTW9k
ZTo6QXNzZXJ0KTsKICAgICBCdXR0ZXJmbHkqIHJlc3VsdCA9IGZyb21CYXNlKGJhc2UsIHByZUNh
cGFjaXR5LCBwcm9wZXJ0eUNhcGFjaXR5KTsKIAogICAgIHJldHVybiByZXN1bHQ7CkBAIC05OCw3
ICs5OCw3IEBAIGlubGluZSBCdXR0ZXJmbHkqIEJ1dHRlcmZseTo6Y3JlYXRlVW5pbmkKIGlubGlu
ZSBCdXR0ZXJmbHkqIEJ1dHRlcmZseTo6dHJ5Q3JlYXRlKFZNJiB2bSwgSlNPYmplY3QqLCBzaXpl
X3QgcHJlQ2FwYWNpdHksIHNpemVfdCBwcm9wZXJ0eUNhcGFjaXR5LCBib29sIGhhc0luZGV4aW5n
SGVhZGVyLCBjb25zdCBJbmRleGluZ0hlYWRlciYgaW5kZXhpbmdIZWFkZXIsIHNpemVfdCBpbmRl
eGluZ1BheWxvYWRTaXplSW5CeXRlcykKIHsKICAgICBzaXplX3Qgc2l6ZSA9IHRvdGFsU2l6ZShw
cmVDYXBhY2l0eSwgcHJvcGVydHlDYXBhY2l0eSwgaGFzSW5kZXhpbmdIZWFkZXIsIGluZGV4aW5n
UGF5bG9hZFNpemVJbkJ5dGVzKTsKLSAgICB2b2lkKiBiYXNlID0gdm0uanNWYWx1ZUdpZ2FjYWdl
QXV4aWxpYXJ5U3BhY2UuYWxsb2NhdGVOb25WaXJ0dWFsKHZtLCBzaXplLCBudWxscHRyLCBBbGxv
Y2F0aW9uRmFpbHVyZU1vZGU6OlJldHVybk51bGwpOworICAgIHZvaWQqIGJhc2UgPSB2bS5qc1Zh
bHVlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZSgpLmFsbG9jYXRlTm9uVmlydHVhbCh2bSwgc2l6ZSwg
bnVsbHB0ciwgQWxsb2NhdGlvbkZhaWx1cmVNb2RlOjpSZXR1cm5OdWxsKTsKICAgICBpZiAoIWJh
c2UpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIEJ1dHRlcmZseSogcmVzdWx0ID0gZnJv
bUJhc2UoYmFzZSwgcHJlQ2FwYWNpdHksIHByb3BlcnR5Q2FwYWNpdHkpOwpAQCAtMTc0LDcgKzE3
NCw3IEBAIGlubGluZSBCdXR0ZXJmbHkqIEJ1dHRlcmZseTo6Z3Jvd0FycmF5UmkKICAgICB2b2lk
KiB0aGVCYXNlID0gYmFzZSgwLCBwcm9wZXJ0eUNhcGFjaXR5KTsKICAgICBzaXplX3Qgb2xkU2l6
ZSA9IHRvdGFsU2l6ZSgwLCBwcm9wZXJ0eUNhcGFjaXR5LCBoYWRJbmRleGluZ0hlYWRlciwgb2xk
SW5kZXhpbmdQYXlsb2FkU2l6ZUluQnl0ZXMpOwogICAgIHNpemVfdCBuZXdTaXplID0gdG90YWxT
aXplKDAsIHByb3BlcnR5Q2FwYWNpdHksIHRydWUsIG5ld0luZGV4aW5nUGF5bG9hZFNpemVJbkJ5
dGVzKTsKLSAgICB2b2lkKiBuZXdCYXNlID0gdm0uanNWYWx1ZUdpZ2FjYWdlQXV4aWxpYXJ5U3Bh
Y2UuYWxsb2NhdGVOb25WaXJ0dWFsKHZtLCBuZXdTaXplLCBudWxscHRyLCBBbGxvY2F0aW9uRmFp
bHVyZU1vZGU6OlJldHVybk51bGwpOworICAgIHZvaWQqIG5ld0Jhc2UgPSB2bS5qc1ZhbHVlR2ln
YWNhZ2VBdXhpbGlhcnlTcGFjZSgpLmFsbG9jYXRlTm9uVmlydHVhbCh2bSwgbmV3U2l6ZSwgbnVs
bHB0ciwgQWxsb2NhdGlvbkZhaWx1cmVNb2RlOjpSZXR1cm5OdWxsKTsKICAgICBpZiAoIW5ld0Jh
c2UpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIC8vIEZJWE1FOiBUaGlzIHByb2JhYmx5
IHNob3VsZG4ndCBiZSBhIG1lbWNweS4KQEAgLTIxMSwxMyArMjExLDEzIEBAIGlubGluZSBCdXR0
ZXJmbHkqIEJ1dHRlcmZseTo6cmVhbGxvY0FycmEKICAgICAvLyBPYmplY3RzIHdpdGggbm8gcHJv
cGVydGllcyBhcmUgY29tbW9uIGluIGFycmF5cywgYW5kIHdlIGFyZSBmb2N1c2luZyBvbiB2ZXJ5
IGxhcmdlIGFycmF5IGNyYWZ0ZWQgYnkgcmVwZWF0aW5nIEFycmF5I3B1c2gsIHNvLi4uIHRoYXQn
cyBmaW5lIQogICAgIGJvb2wgY2FuUmVhbGxvYyA9ICFwcm9wZXJ0eUNhcGFjaXR5ICYmICF2bS5o
ZWFwLm11dGF0b3JTaG91bGRCZUZlbmNlZCgpICYmIGJpdHdpc2VfY2FzdDxIZWFwQ2VsbCo+KHRo
ZUJhc2UpLT5pc1ByZWNpc2VBbGxvY2F0aW9uKCk7CiAgICAgaWYgKGNhblJlYWxsb2MpIHsKLSAg
ICAgICAgdm9pZCogbmV3QmFzZSA9IHZtLmpzVmFsdWVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlLnJl
YWxsb2NhdGVQcmVjaXNlQWxsb2NhdGlvbk5vblZpcnR1YWwodm0sIGJpdHdpc2VfY2FzdDxIZWFw
Q2VsbCo+KHRoZUJhc2UpLCBuZXdTaXplLCAmZGVmZXJyYWxDb250ZXh0LCBBbGxvY2F0aW9uRmFp
bHVyZU1vZGU6OlJldHVybk51bGwpOworICAgICAgICB2b2lkKiBuZXdCYXNlID0gdm0uanNWYWx1
ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UoKS5yZWFsbG9jYXRlUHJlY2lzZUFsbG9jYXRpb25Ob25W
aXJ0dWFsKHZtLCBiaXR3aXNlX2Nhc3Q8SGVhcENlbGwqPih0aGVCYXNlKSwgbmV3U2l6ZSwgJmRl
ZmVycmFsQ29udGV4dCwgQWxsb2NhdGlvbkZhaWx1cmVNb2RlOjpSZXR1cm5OdWxsKTsKICAgICAg
ICAgaWYgKCFuZXdCYXNlKQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIHJl
dHVybiBmcm9tQmFzZShuZXdCYXNlLCAwLCBwcm9wZXJ0eUNhcGFjaXR5KTsKICAgICB9CiAKLSAg
ICB2b2lkKiBuZXdCYXNlID0gdm0uanNWYWx1ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UuYWxsb2Nh
dGVOb25WaXJ0dWFsKHZtLCBuZXdTaXplLCAmZGVmZXJyYWxDb250ZXh0LCBBbGxvY2F0aW9uRmFp
bHVyZU1vZGU6OlJldHVybk51bGwpOworICAgIHZvaWQqIG5ld0Jhc2UgPSB2bS5qc1ZhbHVlR2ln
YWNhZ2VBdXhpbGlhcnlTcGFjZSgpLmFsbG9jYXRlTm9uVmlydHVhbCh2bSwgbmV3U2l6ZSwgJmRl
ZmVycmFsQ29udGV4dCwgQWxsb2NhdGlvbkZhaWx1cmVNb2RlOjpSZXR1cm5OdWxsKTsKICAgICBp
ZiAoIW5ld0Jhc2UpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIGdjU2FmZU1lbWNweShz
dGF0aWNfY2FzdDxKU1ZhbHVlKj4obmV3QmFzZSksIHN0YXRpY19jYXN0PEpTVmFsdWUqPih0aGVC
YXNlKSwgb2xkU2l6ZSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWNo
ZWRUeXBlcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nh
Y2hlZFR5cGVzLmgJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0NhY2hlZFR5cGVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgot
ICogQ29weXJpZ2h0IChDKSAyMDE4LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDE4LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zOSw2ICszOSw3IEBAIGNs
YXNzIENhY2hlZEJ5dGVjb2RlOwogY2xhc3MgU291cmNlQ29kZUtleTsKIGNsYXNzIFVubGlua2Vk
Q29kZUJsb2NrOwogY2xhc3MgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jazsKK2NsYXNzIFVubGlu
a2VkRnVuY3Rpb25FeGVjdXRhYmxlOwogCiBlbnVtIGNsYXNzIFNvdXJjZUNvZGVUeXBlOwogCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DbG9uZWRBcmd1bWVudHMuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DbG9uZWRBcmd1bWVudHMu
aAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2xv
bmVkQXJndW1lbnRzLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDcgKzQ2LDcgQEAgcHVibGljOgog
ICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAg
ICAgc3RhdGljX2Fzc2VydCghQ2VsbFR5cGU6Om5lZWRzRGVzdHJ1Y3Rpb24sICIiKTsKLSAgICAg
ICAgcmV0dXJuICZ2bS5jbG9uZWRBcmd1bWVudHNTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5j
bG9uZWRBcmd1bWVudHNTcGFjZSgpOwogICAgIH0KICAgICAKIHByaXZhdGU6CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db25zb2xlT2JqZWN0LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29uc29sZU9iamVjdC5oCShyZXZpc2lvbiAy
ODYwOTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db25zb2xlT2JqZWN0LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTM3LDcgKzM3LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJc29T
dWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VS
VF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoQ29uc29sZU9iamVjdCwgQmFzZSk7Ci0gICAgICAgIHJl
dHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVj
dFNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIENvbnNvbGVPYmplY3QqIGNyZWF0ZShWTSYg
dm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlKQpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ3VzdG9tR2V0dGVyU2V0dGVyLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ3VzdG9tR2V0dGVy
U2V0dGVyLmgJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0N1c3RvbUdldHRlclNldHRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC00Myw3ICs0Myw3IEBA
IHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vic3BhY2VBY2Nlc3M+
CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewotICAg
ICAgICByZXR1cm4gJnZtLmN1c3RvbUdldHRlclNldHRlclNwYWNlOworICAgICAgICByZXR1cm4g
JnZtLmN1c3RvbUdldHRlclNldHRlclNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIEN1c3Rv
bUdldHRlclNldHRlciogY3JlYXRlKFZNJiB2bSwgQ3VzdG9tR2V0dGVyIGN1c3RvbUdldHRlciwg
Q3VzdG9tU2V0dGVyIGN1c3RvbVNldHRlcikKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0RPTUF0dHJpYnV0ZUdldHRlclNldHRlci5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0RPTUF0dHJpYnV0ZUdldHRlclNldHRlci5oCShyZXZpc2lv
biAyODYwOTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9ET01BdHRyaWJ1dGVH
ZXR0ZXJTZXR0ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNDMsNyArNDMsNyBAQCBwdWJsaWM6CiAg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNzPgogICAgIHN0YXRp
YyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKLSAgICAgICAgcmV0dXJu
ICZ2bS5kb21BdHRyaWJ1dGVHZXR0ZXJTZXR0ZXJTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5k
b21BdHRyaWJ1dGVHZXR0ZXJTZXR0ZXJTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBET01B
dHRyaWJ1dGVHZXR0ZXJTZXR0ZXIqIGNyZWF0ZShWTSYgdm0sIEN1c3RvbUdldHRlciBjdXN0b21H
ZXR0ZXIsIEN1c3RvbVNldHRlciBjdXN0b21TZXR0ZXIsIERPTUF0dHJpYnV0ZUFubm90YXRpb24g
ZG9tQXR0cmlidXRlKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUlu
c3RhbmNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0
ZUluc3RhbmNlLmgJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0RhdGVJbnN0YW5jZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw3ICszNyw3IEBAIHB1
YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vic3BhY2VBY2Nlc3MgbW9k
ZT4KICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7Ci0g
ICAgICAgIHJldHVybiAmdm0uZGF0ZUluc3RhbmNlU3BhY2U7CisgICAgICAgIHJldHVybiAmdm0u
ZGF0ZUluc3RhbmNlU3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgRGF0ZUluc3RhbmNlKiBj
cmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgZG91YmxlIGRhdGUpCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlUHJvdG90eXBlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZVByb3RvdHlwZS5oCShyZXZpc2lv
biAyODYwOTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlUHJvdG90eXBl
LmgJKHdvcmtpbmcgY29weSkKQEAgLTM1LDcgKzM1LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJ
c29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FT
U0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoRGF0ZVByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAg
IHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9i
amVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIERhdGVQcm90b3R5cGUqIGNyZWF0ZShW
TSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJl
KQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGlyZWN0QXJndW1lbnRzLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGlyZWN0QXJndW1l
bnRzLmgJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0RpcmVjdEFyZ3VtZW50cy5oCSh3b3JraW5nIGNvcHkpCkBAIC01MCw3ICs1MCw3IEBAIHB1Ymxp
YzoKICAgICBzdGF0aWMgQ29tcGxldGVTdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAg
IHsKICAgICAgICAgc3RhdGljX2Fzc2VydCghQ2VsbFR5cGU6Om5lZWRzRGVzdHJ1Y3Rpb24sICIi
KTsKLSAgICAgICAgcmV0dXJuICZ2bS52YXJpYWJsZVNpemVkQ2VsbFNwYWNlOworICAgICAgICBy
ZXR1cm4gJnZtLnZhcmlhYmxlU2l6ZWRDZWxsU3BhY2UoKTsKICAgICB9CiAKICAgICAvLyBDcmVh
dGVzIGFuIGFyZ3VtZW50cyBvYmplY3QgYnV0IGxlYXZlcyBpdCB1bmluaXRpYWxpemVkLiBUaGlz
IGlzIGRhbmdlcm91cyBpZiB3ZSBHQyByaWdodApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvRXJyb3JQcm90b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9FcnJvclByb3RvdHlwZS5oCShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvclByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC00NSw3ICs0NSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNw
YWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNF
X1NIQVJBQkxFKEVycm9yUHJvdG90eXBlQmFzZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0u
cGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7
CiAgICAgfQogCiAgICAgREVDTEFSRV9JTkZPOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvRXhjZXB0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvRXhjZXB0aW9uLmgJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC00MCw3ICs0MCw3
IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vic3BhY2VBY2Nl
c3MgbW9kZT4KICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAg
ICB7Ci0gICAgICAgIHJldHVybiAmdm0uZXhjZXB0aW9uU3BhY2U7CisgICAgICAgIHJldHVybiAm
dm0uZXhjZXB0aW9uU3BhY2UoKTsKICAgICB9CiAKICAgICBlbnVtIFN0YWNrQ2FwdHVyZUFjdGlv
biB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNlcHRpb25TY29wZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9u
U2NvcGUuY3BwCShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9FeGNlcHRpb25TY29wZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAv
KgotICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9GaW5hbGl6YXRpb25SZWdpc3RyeVByb3RvdHlwZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ZpbmFsaXphdGlvblJlZ2lz
dHJ5UHJvdG90eXBlLmgJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0ZpbmFsaXphdGlvblJlZ2lzdHJ5UHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkK
QEAgLTM3LDcgKzM3LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3Bh
Y2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0Vf
U0hBUkFCTEUoRmluYWxpemF0aW9uUmVnaXN0cnlQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICBy
ZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmpl
Y3RTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBGaW5hbGl6YXRpb25SZWdpc3RyeVByb3Rv
dHlwZSogY3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5j
dGlvbkV4ZWN1dGFibGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9GdW5jdGlvbkV4ZWN1dGFibGUuaAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25FeGVjdXRhYmxlLmgJKHdvcmtpbmcgY29weSkK
QEAgLTQ2LDcgKzQ2LDcgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBl
LCBTdWJzcGFjZUFjY2Vzcz4KICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZN
JiB2bSkKICAgICB7Ci0gICAgICAgIHJldHVybiAmdm0uZnVuY3Rpb25FeGVjdXRhYmxlU3BhY2Uu
c3BhY2U7CisgICAgICAgIHJldHVybiAmdm0uZnVuY3Rpb25FeGVjdXRhYmxlU3BhY2UoKS5zcGFj
ZTsKICAgICB9CiAKICAgICBzdGF0aWMgRnVuY3Rpb25FeGVjdXRhYmxlKiBjcmVhdGUoVk0mIHZt
LCBTY3JpcHRFeGVjdXRhYmxlKiB0b3BMZXZlbEV4ZWN1dGFibGUsIGNvbnN0IFNvdXJjZUNvZGUm
IHNvdXJjZSwgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIHVubGlua2VkRXhlY3V0YWJsZSwg
SW50cmluc2ljIGludHJpbnNpYywgYm9vbCBpc0luc2lkZU9yZGluYXJ5RnVuY3Rpb24pCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JGdW5jdGlvblByb3RvdHlw
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRv
ckZ1bmN0aW9uUHJvdG90eXBlLmgJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTQwLDcgKzQwLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vi
c3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BB
Q0VfU0hBUkFCTEUoR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUsIEJhc2UpOwotICAgICAgICBy
ZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmpl
Y3RTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlw
ZSogY3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JQcm90b3R5cGUuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JQcm90b3R5cGUuaAkocmV2aXNp
b24gMjg2MDk1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yUHJv
dG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQxLDcgKzQxLDcgQEAgcHVibGljOgogICAgIHN0
YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAgICAgU1RB
VElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoR2VuZXJhdG9yUHJvdG90eXBlLCBCYXNl
KTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4g
JnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgR2VuZXJhdG9yUHJv
dG90eXBlKiBjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSogc3RydWN0
dXJlKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2V0dGVyU2V0dGVyLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2V0dGVyU2V0dGVy
LmgJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dl
dHRlclNldHRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC01OSw3ICs1OSw3IEBAIHB1YmxpYzoKICAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vic3BhY2VBY2Nlc3M+CiAgICAgc3RhdGlj
IElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewotICAgICAgICByZXR1cm4g
JnZtLmdldHRlclNldHRlclNwYWNlOworICAgICAgICByZXR1cm4gJnZtLmdldHRlclNldHRlclNw
YWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIEdldHRlclNldHRlciogY3JlYXRlKFZNJiB2bSwg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNPYmplY3QqIGdldHRlciwgSlNPYmplY3Qq
IHNldHRlcikKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0hhc2hNYXBJbXBs
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSGFzaE1hcElt
cGwuaAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SGFzaE1hcEltcGwuaAkod29ya2luZyBjb3B5KQpAQCAtMjEzLDcgKzIxMyw3IEBAIHB1YmxpYzoK
ICAgICB7CiAgICAgICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAg
ICAgICAgc2l6ZV90IGFsbG9jYXRpb25TaXplID0gSGFzaE1hcEJ1ZmZlcjo6YWxsb2NhdGlvblNp
emUoY2FwYWNpdHkpOwotICAgICAgICB2b2lkKiBkYXRhID0gdm0uanNWYWx1ZUdpZ2FjYWdlQXV4
aWxpYXJ5U3BhY2UuYWxsb2NhdGVOb25WaXJ0dWFsKHZtLCBhbGxvY2F0aW9uU2l6ZSwgbnVsbHB0
ciwgQWxsb2NhdGlvbkZhaWx1cmVNb2RlOjpSZXR1cm5OdWxsKTsKKyAgICAgICAgdm9pZCogZGF0
YSA9IHZtLmpzVmFsdWVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlKCkuYWxsb2NhdGVOb25WaXJ0dWFs
KHZtLCBhbGxvY2F0aW9uU2l6ZSwgbnVsbHB0ciwgQWxsb2NhdGlvbkZhaWx1cmVNb2RlOjpSZXR1
cm5OdWxsKTsKICAgICAgICAgaWYgKCFkYXRhKSB7CiAgICAgICAgICAgICB0aHJvd091dE9mTWVt
b3J5RXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSk7CiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0
cjsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGVybmFsRnVuY3Rpb24u
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRlcm5hbEZ1
bmN0aW9uLmgJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0ludGVybmFsRnVuY3Rpb24uaAkod29ya2luZyBjb3B5KQpAQCAtNDEsNyArNDEsNyBAQCBw
dWJsaWM6CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAg
ewogICAgICAgICBzdGF0aWNfYXNzZXJ0KHNpemVvZihDZWxsVHlwZSkgPT0gc2l6ZW9mKEludGVy
bmFsRnVuY3Rpb24pLCAiSW50ZXJuYWxGdW5jdGlvbiBzdWJjbGFzc2VzIHRoYXQgYWRkIGZpZWxk
cyBuZWVkIHRvIG92ZXJyaWRlIHN1YnNwYWNlRm9yPD4oKSIpOwotICAgICAgICByZXR1cm4gJnZt
LmludGVybmFsRnVuY3Rpb25TcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5pbnRlcm5hbEZ1bmN0
aW9uU3BhY2UoKTsKICAgICB9CiAKICAgICBERUNMQVJFX0VYUE9SVF9JTkZPOwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bENvbGxhdG9yUHJvdG90eXBlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bENvbGxhdG9yUHJvdG90
eXBlLmgJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0ludGxDb2xsYXRvclByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNiBAQAog
LyoKICAqIENvcHlyaWdodCAoQykgMjAxNSBBbmR5IFZhbldhZ29uZXIgKGFuZHlAdmFud2Fnb25l
ci5mYW1pbHkpCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE5LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zOSw3ICszOSw3
IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkK
ICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEludGxD
b2xsYXRvclByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RT
cGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAg
ICAgc3RhdGljIEludGxDb2xsYXRvclByb3RvdHlwZSogY3JlYXRlKFZNJiwgSlNHbG9iYWxPYmpl
Y3QqLCBTdHJ1Y3R1cmUqKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lu
dGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZS5oCShyZXZpc2lvbiAy
ODYwOTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGF0ZVRpbWVGb3Jt
YXRQcm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiBDb3B5
cmlnaHQgKEMpIDIwMTUgQW5keSBWYW5XYWdvbmVyIChhbmR5QHZhbndhZ29uZXIuZmFtaWx5KQot
ICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAxOS0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzksNyArMzksNyBAQCBwdWJsaWM6
CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewogICAg
ICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShJbnRsRGF0ZVRpbWVGb3Jt
YXRQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7
CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIHN0
YXRpYyBJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUqIGNyZWF0ZShWTSYsIEpTR2xvYmFsT2Jq
ZWN0KiwgU3RydWN0dXJlKik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9J
bnRsRGlzcGxheU5hbWVzUHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSW50bERpc3BsYXlOYW1lc1Byb3RvdHlwZS5oCShyZXZpc2lvbiAyODYw
OTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGlzcGxheU5hbWVzUHJv
dG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAyMC0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzgsNyArMzgsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGlj
IElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNf
QVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShJbnRsRGlzcGxheU5hbWVzUHJvdG90eXBlLCBC
YXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1
cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgSW50bERpc3Bs
YXlOYW1lc1Byb3RvdHlwZSogY3JlYXRlKFZNJiwgU3RydWN0dXJlKik7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTGlzdEZvcm1hdFByb3RvdHlwZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxMaXN0Rm9ybWF0UHJvdG90
eXBlLmgJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0ludGxMaXN0Rm9ybWF0UHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBA
CiAvKgotICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAyMC0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzgsNyArMzgsNyBAQCBw
dWJsaWM6CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAg
ewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShJbnRsTGlzdEZv
cm1hdFByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFj
ZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAg
c3RhdGljIEludGxMaXN0Rm9ybWF0UHJvdG90eXBlKiBjcmVhdGUoVk0mLCBTdHJ1Y3R1cmUqKTsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxMb2NhbGVQcm90b3R5cGUu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTG9jYWxl
UHJvdG90eXBlLmgJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0ludGxMb2NhbGVQcm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDYg
QEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMjAgU29ueSBJbnRlcmFjdGl2ZSBFbnRlcnRhaW5t
ZW50IEluYy4KKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM4LDcgKzM5LDcgQEAg
cHVibGljOgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAg
IHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSW50bExvY2Fs
ZVByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsK
KyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAgc3Rh
dGljIEludGxMb2NhbGVQcm90b3R5cGUqIGNyZWF0ZShWTSYsIFN0cnVjdHVyZSopOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdFByb3RvdHlwZS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJG
b3JtYXRQcm90b3R5cGUuaAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdFByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDYgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxNSBBbmR5IFZhbldhZ29uZXIg
KGFuZHlAdmFud2Fnb25lci5mYW1pbHkpCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE5LTIwMjEgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CkBAIC0zOSw3ICszOSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNw
YWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNF
X1NIQVJBQkxFKEludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1
cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RT
cGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlKiBj
cmVhdGUoVk0mLCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSopOwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxPYmplY3QuaAkocmV2aXNpb24gMjg2MDk1KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE9iamVjdC5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDYgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxNSBBbmR5IFZhbldhZ29u
ZXIgKGFuZHlAdmFud2Fnb25lci5mYW1pbHkpCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTktMjAyMCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTktMjAy
MSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMjAg
U29ueSBJbnRlcmFjdGl2ZSBFbnRlcnRhaW5tZW50IEluYy4KICAqCiAgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKQEAg
LTc2LDcgKzc2LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VG
b3IoVk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hB
UkFCTEUoSW50bE9iamVjdCwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RT
cGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAg
ICAgc3RhdGljIEludGxPYmplY3QqIGNyZWF0ZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0
dXJlKik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsUGx1cmFsUnVs
ZXNQcm90b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9JbnRsUGx1cmFsUnVsZXNQcm90b3R5cGUuaAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFBsdXJhbFJ1bGVzUHJvdG90eXBlLmgJKHdvcmtp
bmcgY29weSkKQEAgLTEsNiArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDE4IEFuZHkg
VmFuV2Fnb25lciAoYW5keUB2YW53YWdvbmVyLmZhbWlseSkKLSAqIENvcHlyaWdodCAoQykgMjAx
OSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkt
MjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTM5LDcgKzM5LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJc29TdWJz
cGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9J
U09fU1VCU1BBQ0VfU0hBUkFCTEUoSW50bFBsdXJhbFJ1bGVzUHJvdG90eXBlLCBCYXNlKTsKLSAg
ICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBs
YWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgSW50bFBsdXJhbFJ1bGVzUHJv
dG90eXBlKiBjcmVhdGUoVk0mLCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSopOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFJlbGF0aXZlVGltZUZvcm1hdFByb3Rv
dHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxS
ZWxhdGl2ZVRpbWVGb3JtYXRQcm90b3R5cGUuaAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFJlbGF0aXZlVGltZUZvcm1hdFByb3RvdHlwZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAy
MCBTb255IEludGVyYWN0aXZlIEVudGVydGFpbm1lbnQgSW5jLgorICogQ29weXJpZ2h0IChDKSAy
MDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwpAQCAtMzgsNyArMzksNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIElzb1N1YnNw
YWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lT
T19TVUJTUEFDRV9TSEFSQUJMRShJbnRsUmVsYXRpdmVUaW1lRm9ybWF0UHJvdG90eXBlLCBCYXNl
KTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4g
JnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgSW50bFJlbGF0aXZl
VGltZUZvcm1hdFByb3RvdHlwZSogY3JlYXRlKFZNJiwgU3RydWN0dXJlKik7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsU2VnbWVudEl0ZXJhdG9yUHJvdG90eXBlLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFNlZ21lbnRJ
dGVyYXRvclByb3RvdHlwZS5oCShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9JbnRsU2VnbWVudEl0ZXJhdG9yUHJvdG90eXBlLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAyMC0yMDIxIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpA
QCAtMzgsNyArMzgsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFj
ZUZvcihWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9T
SEFSQUJMRShJbnRsU2VnbWVudEl0ZXJhdG9yUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0
dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0
U3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgSW50bFNlZ21lbnRJdGVyYXRvclByb3RvdHlw
ZSogY3JlYXRlKFZNJiwgU3RydWN0dXJlKik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9JbnRsU2VnbWVudGVyUHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFNlZ21lbnRlclByb3RvdHlwZS5oCShyZXZpc2lvbiAy
ODYwOTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsU2VnbWVudGVyUHJv
dG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAyMC0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzgsNyArMzgsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGlj
IElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNf
QVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShJbnRsU2VnbWVudGVyUHJvdG90eXBlLCBCYXNl
KTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4g
JnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgSW50bFNlZ21lbnRl
clByb3RvdHlwZSogY3JlYXRlKFZNJiwgU3RydWN0dXJlKik7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9JbnRsU2VnbWVudHNQcm90b3R5cGUuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsU2VnbWVudHNQcm90b3R5cGUuaAkocmV2
aXNpb24gMjg2MDk1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFNlZ21l
bnRzUHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAyMC0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzgsNyArMzgsNyBAQCBwdWJsaWM6CiAgICAg
c3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewogICAgICAgICBT
VEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShJbnRsU2VnbWVudHNQcm90b3R5cGUs
IEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJl
dHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBJbnRsU2Vn
bWVudHNQcm90b3R5cGUqIGNyZWF0ZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKik7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JdGVyYXRvclByb3RvdHlwZS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0l0ZXJhdG9yUHJv
dG90eXBlLmgJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0l0ZXJhdG9yUHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM5LDcgKzM5LDcgQEAg
cHVibGljOgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAg
IHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSXRlcmF0b3JQ
cm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7Cisg
ICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRp
YyBJdGVyYXRvclByb3RvdHlwZSogY3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0FycmF5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0FycmF5LmNwcAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU2LDcgKzU2
LDcgQEAgSlNBcnJheSogSlNBcnJheTo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZAogICAgICAgICAg
ICAgfHwgaGFzQ29udGlndW91cyhpbmRleGluZ1R5cGUpKTsKIAogICAgICAgICB1bnNpZ25lZCB2
ZWN0b3JMZW5ndGggPSBCdXR0ZXJmbHk6Om9wdGltYWxDb250aWd1b3VzVmVjdG9yTGVuZ3RoKHN0
cnVjdHVyZSwgaW5pdGlhbExlbmd0aCk7Ci0gICAgICAgIHZvaWQqIHRlbXAgPSB2bS5qc1ZhbHVl
R2lnYWNhZ2VBdXhpbGlhcnlTcGFjZS5hbGxvY2F0ZU5vblZpcnR1YWwoCisgICAgICAgIHZvaWQq
IHRlbXAgPSB2bS5qc1ZhbHVlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZSgpLmFsbG9jYXRlTm9uVmly
dHVhbCgKICAgICAgICAgICAgIHZtLAogICAgICAgICAgICAgQnV0dGVyZmx5Ojp0b3RhbFNpemUo
MCwgb3V0T2ZMaW5lU3RvcmFnZSwgdHJ1ZSwgdmVjdG9yTGVuZ3RoICogc2l6ZW9mKEVuY29kZWRK
U1ZhbHVlKSksCiAgICAgICAgICAgICBkZWZlcnJhbENvbnRleHQsIEFsbG9jYXRpb25GYWlsdXJl
TW9kZTo6UmV0dXJuTnVsbCk7CkBAIC03OCw3ICs3OCw3IEBAIEpTQXJyYXkqIEpTQXJyYXk6OnRy
eUNyZWF0ZVVuaW5pdGlhbGl6ZWQKICAgICAgICAgICAgIHx8IGluZGV4aW5nVHlwZSA9PSBBcnJh
eVdpdGhBcnJheVN0b3JhZ2UpOwogICAgICAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIGlu
ZGV4QmlhcyA9IDA7CiAgICAgICAgIHVuc2lnbmVkIHZlY3Rvckxlbmd0aCA9IEFycmF5U3RvcmFn
ZTo6b3B0aW1hbFZlY3Rvckxlbmd0aChpbmRleEJpYXMsIHN0cnVjdHVyZSwgaW5pdGlhbExlbmd0
aCk7Ci0gICAgICAgIHZvaWQqIHRlbXAgPSB2bS5qc1ZhbHVlR2lnYWNhZ2VBdXhpbGlhcnlTcGFj
ZS5hbGxvY2F0ZU5vblZpcnR1YWwoCisgICAgICAgIHZvaWQqIHRlbXAgPSB2bS5qc1ZhbHVlR2ln
YWNhZ2VBdXhpbGlhcnlTcGFjZSgpLmFsbG9jYXRlTm9uVmlydHVhbCgKICAgICAgICAgICAgIHZt
LAogICAgICAgICAgICAgQnV0dGVyZmx5Ojp0b3RhbFNpemUoaW5kZXhCaWFzLCBvdXRPZkxpbmVT
dG9yYWdlLCB0cnVlLCBBcnJheVN0b3JhZ2U6OnNpemVGb3IodmVjdG9yTGVuZ3RoKSksCiAgICAg
ICAgICAgICBkZWZlcnJhbENvbnRleHQsIEFsbG9jYXRpb25GYWlsdXJlTW9kZTo6UmV0dXJuTnVs
bCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5oCShyZXZpc2lv
biAyODYwOTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmgJKHdv
cmtpbmcgY29weSkKQEAgLTUxLDcgKzUxLDcgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVu
YW1lIENlbGxUeXBlLCBTdWJzcGFjZUFjY2Vzcz4KICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1
YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7Ci0gICAgICAgIHJldHVybiAmdm0uYXJyYXlTcGFjZTsK
KyAgICAgICAgcmV0dXJuICZ2bS5hcnJheVNwYWNlKCk7CiAgICAgfQogICAgICAgICAKIHByb3Rl
Y3RlZDoKQEAgLTI0NCw3ICsyNDQsNyBAQCBpbmxpbmUgSlNBcnJheSogSlNBcnJheTo6dHJ5Q3Jl
YXRlKFZNJiB2CiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgICAgICB1bnNpZ25l
ZCB2ZWN0b3JMZW5ndGggPSBCdXR0ZXJmbHk6Om9wdGltYWxDb250aWd1b3VzVmVjdG9yTGVuZ3Ro
KHN0cnVjdHVyZSwgdmVjdG9yTGVuZ3RoSGludCk7Ci0gICAgICAgIHZvaWQqIHRlbXAgPSB2bS5q
c1ZhbHVlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZS5hbGxvY2F0ZU5vblZpcnR1YWwoCisgICAgICAg
IHZvaWQqIHRlbXAgPSB2bS5qc1ZhbHVlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZSgpLmFsbG9jYXRl
Tm9uVmlydHVhbCgKICAgICAgICAgICAgIHZtLAogICAgICAgICAgICAgQnV0dGVyZmx5Ojp0b3Rh
bFNpemUoMCwgb3V0T2ZMaW5lU3RvcmFnZSwgdHJ1ZSwgdmVjdG9yTGVuZ3RoICogc2l6ZW9mKEVu
Y29kZWRKU1ZhbHVlKSksCiAgICAgICAgICAgICBudWxscHRyLCBBbGxvY2F0aW9uRmFpbHVyZU1v
ZGU6OlJldHVybk51bGwpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNB
cnJheUJ1ZmZlclByb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJQcm90b3R5cGUuaAkocmV2aXNpb24gMjg2MDk1KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlclByb3RvdHlwZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMywg
MjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTMtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTM3LDcgKzM3LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJc29T
dWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VS
VF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNBcnJheUJ1ZmZlclByb3RvdHlwZSwgQmFzZSk7Ci0g
ICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5w
bGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIEpTQXJyYXlCdWZmZXJQcm90
b3R5cGUqIGNyZWF0ZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgQXJyYXlCdWZm
ZXJTaGFyaW5nTW9kZSA9IEFycmF5QnVmZmVyU2hhcmluZ01vZGU6OkRlZmF1bHQpOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlclZpZXcuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3
LmNwcAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNBcnJheUJ1ZmZlclZpZXcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NCw3ICs2NCw3IEBAIEpT
QXJyYXlCdWZmZXJWaWV3OjpDb25zdHJ1Y3Rpb25Db250ZXh0OjoKICAgICAgICAgLy8gQXR0ZW1w
dCBHQyBhbGxvY2F0aW9uLgogICAgICAgICB2b2lkKiB0ZW1wOwogICAgICAgICBzaXplX3Qgc2l6
ZSA9IHNpemVPZihsZW5ndGgsIGVsZW1lbnRTaXplKTsKLSAgICAgICAgdGVtcCA9IHZtLnByaW1p
dGl2ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UuYWxsb2NhdGVOb25WaXJ0dWFsKHZtLCBzaXplLCBu
dWxscHRyLCBBbGxvY2F0aW9uRmFpbHVyZU1vZGU6OlJldHVybk51bGwpOworICAgICAgICB0ZW1w
ID0gdm0ucHJpbWl0aXZlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZSgpLmFsbG9jYXRlTm9uVmlydHVh
bCh2bSwgc2l6ZSwgbnVsbHB0ciwgQWxsb2NhdGlvbkZhaWx1cmVNb2RlOjpSZXR1cm5OdWxsKTsK
ICAgICAgICAgaWYgKCF0ZW1wKQogICAgICAgICAgICAgcmV0dXJuOwogCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JpZ0ludC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCaWdJbnQuY3BwCShyZXZpc2lvbiAyODYwOTUpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JpZ0ludC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTExNyw3ICsxMTcsNyBAQCBpbmxpbmUgSlNCaWdJbnQqIEpTQmlnSW50OjpjcmVhdGVX
aXRoTGVuCiAgICAgfQogCiAgICAgQVNTRVJUKGxlbmd0aCA8PSBtYXhMZW5ndGgpOwotICAgIHZv
aWQqIGRhdGEgPSB2bS5wcmltaXRpdmVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlLmFsbG9jYXRlTm9u
VmlydHVhbCh2bSwgbGVuZ3RoICogc2l6ZW9mKERpZ2l0KSwgbnVsbHB0ciwgQWxsb2NhdGlvbkZh
aWx1cmVNb2RlOjpSZXR1cm5OdWxsKTsKKyAgICB2b2lkKiBkYXRhID0gdm0ucHJpbWl0aXZlR2ln
YWNhZ2VBdXhpbGlhcnlTcGFjZSgpLmFsbG9jYXRlTm9uVmlydHVhbCh2bSwgbGVuZ3RoICogc2l6
ZW9mKERpZ2l0KSwgbnVsbHB0ciwgQWxsb2NhdGlvbkZhaWx1cmVNb2RlOjpSZXR1cm5OdWxsKTsK
ICAgICBpZiAoVU5MSUtFTFkoIWRhdGEpKSB7CiAgICAgICAgIGlmIChudWxsT3JHbG9iYWxPYmpl
Y3RGb3JPT00pIHsKICAgICAgICAgICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQmlnSW50LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCaWdJbnQuaAkocmV2
aXNpb24gMjg2MDk1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCaWdJbnQu
aAkod29ya2luZyBjb3B5KQpAQCAtNTYsNyArNTYsNyBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8
dHlwZW5hbWUgQ2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNzPgogICAgIHN0YXRpYyBJc29TdWJzcGFj
ZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKLSAgICAgICAgcmV0dXJuICZ2bS5iaWdJbnRT
cGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5iaWdJbnRTcGFjZSgpOwogICAgIH0KIAogICAgIGVu
dW0gY2xhc3MgSW5pdGlhbGl6YXRpb25UeXBlIHsgTm9uZSwgV2l0aFplcm8gfTsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2FsbGVlLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDYWxsZWUuaAkocmV2aXNpb24gMjg2MDk1KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDYWxsZWUuaAkod29ya2luZyBjb3B5
KQpAQCAtNTAsNyArNTAsNyBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5
cGUsIFN1YnNwYWNlQWNjZXNzPgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3Io
Vk0mIHZtKQogICAgIHsKLSAgICAgICAgcmV0dXJuICZ2bS5jYWxsZWVTcGFjZTsKKyAgICAgICAg
cmV0dXJuICZ2bS5jYWxsZWVTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBKU0NhbGxlZSog
Y3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNTY29wZSogc2Nv
cGUpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGFWaWV3UHJvdG90
eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRh
Vmlld1Byb3RvdHlwZS5oCShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0RhdGFWaWV3UHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSAr
MSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMTkgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMjEgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zOCw3
ICszOCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZN
JiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxF
KEpTRGF0YVZpZXdQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2Jq
ZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0K
IAogICAgIHN0YXRpYyBKU0RhdGFWaWV3UHJvdG90eXBlKiBjcmVhdGUoVk0mLCBTdHJ1Y3R1cmUq
KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmgJKHJl
dmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rp
b24uaAkod29ya2luZyBjb3B5KQpAQCAtNjYsNyArNjYsNyBAQCBwdWJsaWM6CiAgICAgdGVtcGxh
dGU8dHlwZW5hbWUgQ2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNzPgogICAgIHN0YXRpYyBJc29TdWJz
cGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKLSAgICAgICAgcmV0dXJuICZ2bS5mdW5j
dGlvblNwYWNlOworICAgICAgICByZXR1cm4gJnZtLmZ1bmN0aW9uU3BhY2UoKTsKICAgICB9CiAg
ICAgCiAgICAgdHlwZWRlZiBKU0NhbGxlZSBCYXNlOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b3R5cGUuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmll
d1Byb3RvdHlwZS5oCShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAyMSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAg
LTM4LDcgKzM4LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VG
b3IoVk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hB
UkFCTEUoSlNHZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICBy
ZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmpl
Y3RTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBKU0dlbmVyaWNUeXBlZEFycmF5Vmlld1By
b3RvdHlwZSogY3JlYXRlKApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNH
bG9iYWxMZXhpY2FsRW52aXJvbm1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0dsb2JhbExleGljYWxFbnZpcm9ubWVudC5oCShyZXZpc2lvbiAyODYw
OTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbExleGljYWxFbnZp
cm9ubWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw3ICszOCw3IEBAIHB1YmxpYzoKICAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vic3BhY2VBY2Nlc3MgbW9kZT4KICAgICBzdGF0
aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7Ci0gICAgICAgIHJldHVy
biAmdm0uZ2xvYmFsTGV4aWNhbEVudmlyb25tZW50U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0u
Z2xvYmFsTGV4aWNhbEVudmlyb25tZW50U3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgSlNH
bG9iYWxMZXhpY2FsRW52aXJvbm1lbnQqIGNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0
dXJlLCBKU1Njb3BlKiBwYXJlbnRTY29wZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTSW1tdXRhYmxlQnV0dGVyZmx5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNJbW11dGFibGVCdXR0ZXJmbHkuaAkocmV2aXNpb24gMjg2MDk1
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNJbW11dGFibGVCdXR0ZXJmbHku
aAkod29ya2luZyBjb3B5KQpAQCAtMTUzLDcgKzE1Myw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMg
Q29tcGxldGVTdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAgICAgLy8g
V2UgYWxsb2NhdGUgb3V0IG9mIHRoZSBKU1ZhbHVlIGdpZ2FjYWdlIGFzIG90aGVyIGNvZGUgZXhw
ZWN0cyBhbGwgYnV0dGVyZmxpZXMgdG8gbGl2ZSB0aGVyZS4KLSAgICAgICAgcmV0dXJuICZ2bS5p
bW11dGFibGVCdXR0ZXJmbHlKU1ZhbHVlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZTsKKyAgICAgICAg
cmV0dXJuICZ2bS5pbW11dGFibGVCdXR0ZXJmbHlKU1ZhbHVlR2lnYWNhZ2VBdXhpbGlhcnlTcGFj
ZSgpOwogICAgIH0KIAogICAgIC8vIE9ubHkgY2FsbCB0aGlzIGlmIHlvdSBqdXN0IGFsbG9jYXRl
ZCB0aGlzIGJ1dHRlcmZseS4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
TGV4aWNhbEVudmlyb25tZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNMZXhpY2FsRW52aXJvbm1lbnQuaAkocmV2aXNpb24gMjg2MDk1KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNMZXhpY2FsRW52aXJvbm1lbnQuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNDQsNyArNDQsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIENvbXBsZXRlU3Vi
c3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAgIHN0YXRpY19hc3NlcnQo
IUNlbGxUeXBlOjpuZWVkc0Rlc3RydWN0aW9uLCAiIik7Ci0gICAgICAgIHJldHVybiAmdm0udmFy
aWFibGVTaXplZENlbGxTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS52YXJpYWJsZVNpemVkQ2Vs
bFNwYWNlKCk7CiAgICAgfQogCiAgICAgdXNpbmcgQmFzZSA9IEpTU3ltYm9sVGFibGVPYmplY3Q7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZUxvYWRlci5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlTG9hZGVy
LmgJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
TW9kdWxlTG9hZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDcgKzQ0LDcgQEAgcHVibGljOgog
ICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAg
ICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNNb2R1bGVMb2FkZXIsIEJh
c2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVy
biAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIGVudW0gU3RhdHVzIHsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT05PYmplY3QuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09OT2JqZWN0LmgJKHJldmlzaW9u
IDI4NjA5NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT05PYmplY3QuaAko
d29ya2luZyBjb3B5KQpAQCAtMzgsNyArMzgsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIElzb1N1
YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJU
X0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU09OT2JqZWN0LCBCYXNlKTsKLSAgICAgICAgcmV0dXJu
ICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3Bh
Y2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgSlNPTk9iamVjdCogY3JlYXRlKFZNJiB2bSwgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U09iamVjdElubGluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU09iamVjdElubGluZXMuaAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3RJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTQx
LDcgKzQxLDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUsIFN1YnNwYWNlQWNjZQogQ29t
cGxldGVTdWJzcGFjZSogSlNGaW5hbE9iamVjdDo6c3Vic3BhY2VGb3IoVk0mIHZtKQogewogICAg
IHN0YXRpY19hc3NlcnQoIUNlbGxUeXBlOjpuZWVkc0Rlc3RydWN0aW9uKTsKLSAgICByZXR1cm4g
JnZtLmNlbGxTcGFjZTsKKyAgICByZXR1cm4gJnZtLmNlbGxTcGFjZSgpOwogfQogCiAvLyBodHRw
czovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWNyZWF0ZWxpc3Rmcm9tYXJyYXlsaWtlCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2UuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2UuaAkocmV2aXNpb24gMjg2MDk1
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9taXNlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTM3LDcgKzM3LDcgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENl
bGxUeXBlLCBTdWJzcGFjZUFjY2VzcyBtb2RlPgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vi
c3BhY2VGb3IoVk0mIHZtKQogICAgIHsKLSAgICAgICAgcmV0dXJuICZ2bS5wcm9taXNlU3BhY2U7
CisgICAgICAgIHJldHVybiAmdm0ucHJvbWlzZVNwYWNlKCk7CiAgICAgfQogCiAgICAgSlNfRVhQ
T1JUX1BSSVZBVEUgc3RhdGljIEpTUHJvbWlzZSogY3JlYXRlKFZNJiwgU3RydWN0dXJlKik7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2VQcm90b3R5cGUuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2VQcm90
b3R5cGUuaAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNQcm9taXNlUHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAv
KgotICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zOCw3ICszOCw3IEBA
IHB1YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAg
ICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTUHJvbWlz
ZVByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsK
KyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAgc3Rh
dGljIEpTUHJvbWlzZVByb3RvdHlwZSogY3JlYXRlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1
Y3R1cmUqKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlO
YW1lRW51bWVyYXRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yLmNwcAkocmV2aXNpb24gMjg2MDk1KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzgsNyArMzgsNyBAQCBKU1Byb3BlcnR5TmFtZUVudW1lcmF0
b3IqIEpTUHJvcGVydHlOYW1lCiAgICAgdW5zaWduZWQgcHJvcGVydHlOYW1lc0J1ZmZlclNpemVJ
bkJ5dGVzID0gQ2hlY2tlZDx1bnNpZ25lZD4ocHJvcGVydHlOYW1lc1NpemUpICogc2l6ZW9mKFdy
aXRlQmFycmllcjxKU1N0cmluZz4pOwogICAgIFdyaXRlQmFycmllcjxKU1N0cmluZz4qIHByb3Bl
cnR5TmFtZXNCdWZmZXIgPSBudWxscHRyOwogICAgIGlmIChwcm9wZXJ0eU5hbWVzQnVmZmVyU2l6
ZUluQnl0ZXMpIHsKLSAgICAgICAgcHJvcGVydHlOYW1lc0J1ZmZlciA9IHN0YXRpY19jYXN0PFdy
aXRlQmFycmllcjxKU1N0cmluZz4qPih2bS5qc1ZhbHVlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZS5h
bGxvY2F0ZU5vblZpcnR1YWwodm0sIHByb3BlcnR5TmFtZXNCdWZmZXJTaXplSW5CeXRlcywgbnVs
bHB0ciwgQWxsb2NhdGlvbkZhaWx1cmVNb2RlOjpBc3NlcnQpKTsKKyAgICAgICAgcHJvcGVydHlO
YW1lc0J1ZmZlciA9IHN0YXRpY19jYXN0PFdyaXRlQmFycmllcjxKU1N0cmluZz4qPih2bS5qc1Zh
bHVlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZSgpLmFsbG9jYXRlTm9uVmlydHVhbCh2bSwgcHJvcGVy
dHlOYW1lc0J1ZmZlclNpemVJbkJ5dGVzLCBudWxscHRyLCBBbGxvY2F0aW9uRmFpbHVyZU1vZGU6
OkFzc2VydCkpOwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcHJvcGVydHlOYW1l
c1NpemU7ICsraSkKICAgICAgICAgICAgIHByb3BlcnR5TmFtZXNCdWZmZXJbaV0uY2xlYXIoKTsK
ICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFt
ZUVudW1lcmF0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU1Byb3BlcnR5TmFtZUVudW1lcmF0b3IuaAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yLmgJKHdvcmtp
bmcgY29weSkKQEAgLTUxLDcgKzUxLDcgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1l
IENlbGxUeXBlLCBTdWJzcGFjZUFjY2VzcyBtb2RlPgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSog
c3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKLSAgICAgICAgcmV0dXJuICZ2bS5wcm9wZXJ0eU5h
bWVFbnVtZXJhdG9yU3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucHJvcGVydHlOYW1lRW51bWVy
YXRvclNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIEpTUHJvcGVydHlOYW1lRW51bWVyYXRv
ciogY3JlYXRlKFZNJiwgU3RydWN0dXJlKiwgdWludDMyX3QsIHVpbnQzMl90LCBQcm9wZXJ0eU5h
bWVBcnJheSYmKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJveHku
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3h5LmgJ
KHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJv
eHkuaAkod29ya2luZyBjb3B5KQpAQCAtMzgsNyArMzgsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGlj
IElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewogICAgICAgICBzdGF0aWNf
YXNzZXJ0KHNpemVvZihDZWxsVHlwZSkgPT0gc2l6ZW9mKEpTUHJveHkpKTsKLSAgICAgICAgcmV0
dXJuICZ2bS5qc1Byb3h5U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0uanNQcm94eVNwYWNlKCk7
CiAgICAgfQogCiAgICAgc3RhdGljIEpTUHJveHkqIGNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSog
c3RydWN0dXJlLCBKU09iamVjdCogdGFyZ2V0KQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNTdHJpbmcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU1N0cmluZy5oCShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU1N0cmluZy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTEsNyArMTExLDcg
QEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lLCBTdWJzcGFjZUFjY2Vzcz4KICAgICBz
dGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7Ci0gICAgICAgIHJl
dHVybiAmdm0uc3RyaW5nU3BhY2U7CisgICAgICAgIHJldHVybiAmdm0uc3RyaW5nU3BhY2UoKTsK
ICAgICB9CiAgICAgCiAgICAgLy8gV2UgZW1wbG95IG92ZXJmbG93IGNoZWNrcyBpbiBtYW55IHBs
YWNlcyB3aXRoIHRoZSBhc3N1bXB0aW9uIHRoYXQgTWF4TGVuZ3RoCkBAIC0yNzAsNyArMjcwLDcg
QEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lLCBTdWJzcGFjZUFjY2Vzcz4KICAgICBz
dGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7Ci0gICAgICAgIHJl
dHVybiAmdm0ucm9wZVN0cmluZ1NwYWNlOworICAgICAgICByZXR1cm4gJnZtLnJvcGVTdHJpbmdT
cGFjZSgpOwogICAgIH0KIAogICAgIC8vIFdlIHVzZSBsb3dlciAzYml0cyBvZiBmaWJlcjAgZm9y
IGZsYWdzLiBUaGVzZSBiaXRzIGFyZSB1c2FibGUgZHVlIHRvIGFsaWdubWVudCwgYW5kIGl0IGlz
IE9LIGV2ZW4gaW4gMzJiaXQgYXJjaGl0ZWN0dXJlLgpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZWRBcnJheVZpZXdQcm90b3R5cGUuaAko
cmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBl
ZEFycmF5Vmlld1Byb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM3LDcgKzM3LDcgQEAgcHVibGlj
OgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAg
ICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUeXBlZEFycmF5Vmll
d1Byb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsK
KyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAgc3Rh
dGljIEpTVHlwZWRBcnJheVZpZXdQcm90b3R5cGUqIGNyZWF0ZShWTSYsIEpTR2xvYmFsT2JqZWN0
KiwgU3RydWN0dXJlKik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXBJ
dGVyYXRvclByb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL01hcEl0ZXJhdG9yUHJvdG90eXBlLmgJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hcEl0ZXJhdG9yUHJvdG90eXBlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTM3LDcgKzM3LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSog
c3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VC
U1BBQ0VfU0hBUkFCTEUoTWFwSXRlcmF0b3JQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1
cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RT
cGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBNYXBJdGVyYXRvclByb3RvdHlwZSogY3JlYXRl
KFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXBQcm90b3R5cGUuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXBQcm90b3R5cGUu
aAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFw
UHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM3LDcgKzM3LDcgQEAgcHVibGljOgogICAg
IHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAgICAg
U1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoTWFwUHJvdG90eXBlLCBCYXNlKTsK
LSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZt
LnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgY29uc3RleHByIHVuc2ln
bmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBIYXNTdGF0aWNQcm9w
ZXJ0eVRhYmxlOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWF0aE9iamVj
dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hdGhPYmpl
Y3QuaAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
TWF0aE9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw3ICszMiw3IEBAIHB1YmxpYzoKICAg
ICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAg
IFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKE1hdGhPYmplY3QsIEJhc2UpOwot
ICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0u
cGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBNYXRoT2JqZWN0KiBjcmVh
dGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUVycm9yUHJv
dG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0
aXZlRXJyb3JQcm90b3R5cGUuaAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvTmF0aXZlRXJyb3JQcm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAt
MzQsNyArMzQsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZv
cihWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFS
QUJMRShOYXRpdmVFcnJvclByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxh
aW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAg
ICAgfQogCiAgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OYXRpdmVFeGVjdXRhYmxlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRXhlY3V0YWJsZS5oCShyZXZp
c2lvbiAyODYwOTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OYXRpdmVFeGVj
dXRhYmxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDA5LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDA5LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00Myw3ICs0Myw3IEBAIHB1YmxpYzoKICAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vic3BhY2VBY2Nlc3M+CiAgICAgc3RhdGljIElz
b1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewotICAgICAgICByZXR1cm4gJnZt
Lm5hdGl2ZUV4ZWN1dGFibGVTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5uYXRpdmVFeGVjdXRh
YmxlU3BhY2UoKTsKICAgICB9CiAKICAgICBDb2RlQmxvY2tIYXNoIGhhc2hGb3IoQ29kZVNwZWNp
YWxpemF0aW9uS2luZCkgY29uc3Q7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9OdW1iZXJPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9OdW1iZXJPYmplY3QuaAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvTnVtYmVyT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTM1LDcgKzM1
LDcgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lLCBTdWJzcGFjZUFjY2VzcyBtb2Rl
PgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKLSAg
ICAgICAgcmV0dXJuICZ2bS5udW1iZXJPYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5u
dW1iZXJPYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBOdW1iZXJPYmplY3QqIGNy
ZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvT2JqZWN0UHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0UHJvdG90eXBlLmgJKHJldmlzaW9uIDI4NjA5NSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdFByb3RvdHlwZS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDYgKzEsNiBAQAogLyoKICAqICBDb3B5cmlnaHQgKEMpIDE5OTktMjAw
MCBIYXJyaSBQb3J0ZW4gKHBvcnRlbkBrZGUub3JnKQotICogIENvcHlyaWdodCAoQykgMjAwOC0y
MDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqICBDb3B5cmlnaHQgKEMpIDIw
MDgtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogIFRoaXMgbGli
cmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAq
ICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVi
bGljCkBAIC0zMyw3ICszMyw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1
YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQ
QUNFX1NIQVJBQkxFKE9iamVjdFByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0u
cGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7
CiAgICAgfQogCiAgICAgc3RhdGljIE9iamVjdFByb3RvdHlwZSogY3JlYXRlKFZNJiwgSlNHbG9i
YWxPYmplY3QqLCBTdHJ1Y3R1cmUqKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1Byb2dyYW1FeGVjdXRhYmxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvUHJvZ3JhbUV4ZWN1dGFibGUuaAkocmV2aXNpb24gMjg2MDk1KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvZ3JhbUV4ZWN1dGFibGUuaAkod29ya2luZyBj
b3B5KQpAQCAtMzAsNiArMzAsOCBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAorY2xhc3MgVW5saW5r
ZWRQcm9ncmFtQ29kZUJsb2NrOworCiBjbGFzcyBQcm9ncmFtRXhlY3V0YWJsZSBmaW5hbCA6IHB1
YmxpYyBHbG9iYWxFeGVjdXRhYmxlIHsKICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0
cmFjdG9yOwogcHVibGljOgpAQCAtMzksNyArNDEsNyBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8
dHlwZW5hbWUgQ2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNzPgogICAgIHN0YXRpYyBJc29TdWJzcGFj
ZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKLSAgICAgICAgcmV0dXJuICZ2bS5wcm9ncmFt
RXhlY3V0YWJsZVNwYWNlLnNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnByb2dyYW1FeGVjdXRh
YmxlU3BhY2UoKS5zcGFjZTsKICAgICB9CiAKICAgICBzdGF0aWMgUHJvZ3JhbUV4ZWN1dGFibGUq
IGNyZWF0ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBTb3VyY2VDb2RlJiBz
b3VyY2UpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eVRhYmxl
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlU
YWJsZS5oCShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Qcm9wZXJ0eVRhYmxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEyOSw3ICsxMjksNyBAQCBwdWJs
aWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNzPgogICAg
IHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKLSAgICAgICAg
cmV0dXJuICZ2bS5wcm9wZXJ0eVRhYmxlU3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucHJvcGVy
dHlUYWJsZVNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIG5lZWRz
RGVzdHJ1Y3Rpb24gPSB0cnVlOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
UmVmbGVjdE9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1JlZmxlY3RPYmplY3QuaAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvUmVmbGVjdE9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw3ICsz
OCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2
bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKFJl
ZmxlY3RPYmplY3QsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7
CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIHN0
YXRpYyBSZWZsZWN0T2JqZWN0KiBjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1JlZ0V4cC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1JlZ0V4cC5oCShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9SZWdFeHAuaAkod29ya2luZyBjb3B5KQpAQCAtNDksNyArNDksNyBAQCBwdWJs
aWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNzIG1vZGU+
CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewotICAg
ICAgICByZXR1cm4gJnZtLnJlZ0V4cFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnJlZ0V4cFNw
YWNlKCk7CiAgICAgfQogCiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFJlZ0V4cCogY3Jl
YXRlKFZNJiwgY29uc3QgU3RyaW5nJiBwYXR0ZXJuLCBPcHRpb25TZXQ8WWFycjo6RmxhZ3M+KTsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE9iamVjdC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE9iamVjdC5oCShy
ZXZpc2lvbiAyODYwOTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBP
YmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtMzYsNyArMzYsNyBAQCBwdWJsaWM6CiAgICAgc3Rh
dGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewogICAgICAgICBzdGF0
aWNfYXNzZXJ0KCFDZWxsVHlwZTo6bmVlZHNEZXN0cnVjdGlvbiwgIiIpOwotICAgICAgICByZXR1
cm4gJnZtLnJlZ0V4cE9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnJlZ0V4cE9iamVj
dFNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIGNvbnN0ZXhwciB1aW50cHRyX3QgbGFzdElu
ZGV4SXNOb3RXcml0YWJsZUZsYWcgPSAwYjAxOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvUmVnRXhwUHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvUmVnRXhwUHJvdG90eXBlLmgJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cFByb3RvdHlwZS5oCSh3b3JraW5nIGNv
cHkpCkBAIC0zNCw3ICszNCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1
YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQ
QUNFX1NIQVJBQkxFKFJlZ0V4cFByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0u
cGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7
CiAgICAgfQogCiAgICAgc3RhdGljIFJlZ0V4cFByb3RvdHlwZSogY3JlYXRlKFZNJiB2bSwgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBTdHJpbmdJdGVyYXRvclByb3RvdHlw
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cFN0
cmluZ0l0ZXJhdG9yUHJvdG90eXBlLmgJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cFN0cmluZ0l0ZXJhdG9yUHJvdG90eXBlLmgJKHdvcmtp
bmcgY29weSkKQEAgLTM5LDcgKzM5LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJc29TdWJzcGFj
ZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09f
U1VCU1BBQ0VfU0hBUkFCTEUoUmVnRXhwU3RyaW5nSXRlcmF0b3JQcm90b3R5cGUsIEJhc2UpOwot
ICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0u
cGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBSZWdFeHBTdHJpbmdJdGVy
YXRvclByb3RvdHlwZSogY3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9TY29wZWRBcmd1bWVudHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1Njb3BlZEFyZ3VtZW50cy5jcHAJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Njb3BlZEFyZ3VtZW50cy5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTU1LDcgKzU1LDcgQEAgU2NvcGVkQXJndW1lbnRzKiBTY29wZWRBcmd1bWVudHM6
OmNyZWF0ZQogICAgIFdyaXRlQmFycmllcjxVbmtub3duPiogc3RvcmFnZSA9IG51bGxwdHI7CiAg
ICAgaWYgKHRvdGFsTGVuZ3RoID4gdGFibGUtPmxlbmd0aCgpKSB7CiAgICAgICAgIENoZWNrZWQ8
dW5zaWduZWQ+IG92ZXJmbG93TGVuZ3RoID0gdG90YWxMZW5ndGggLSB0YWJsZS0+bGVuZ3RoKCk7
Ci0gICAgICAgIHN0b3JhZ2UgPSBzdGF0aWNfY2FzdDxXcml0ZUJhcnJpZXI8VW5rbm93bj4qPih2
bS5qc1ZhbHVlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZS5hbGxvY2F0ZU5vblZpcnR1YWwodm0sIG92
ZXJmbG93TGVuZ3RoICogc2l6ZW9mKFdyaXRlQmFycmllcjxVbmtub3duPiksIG51bGxwdHIsIEFs
bG9jYXRpb25GYWlsdXJlTW9kZTo6QXNzZXJ0KSk7CisgICAgICAgIHN0b3JhZ2UgPSBzdGF0aWNf
Y2FzdDxXcml0ZUJhcnJpZXI8VW5rbm93bj4qPih2bS5qc1ZhbHVlR2lnYWNhZ2VBdXhpbGlhcnlT
cGFjZSgpLmFsbG9jYXRlTm9uVmlydHVhbCh2bSwgb3ZlcmZsb3dMZW5ndGggKiBzaXplb2YoV3Jp
dGVCYXJyaWVyPFVua25vd24+KSwgbnVsbHB0ciwgQWxsb2NhdGlvbkZhaWx1cmVNb2RlOjpBc3Nl
cnQpKTsKICAgICB9CiAKICAgICBTY29wZWRBcmd1bWVudHMqIHJlc3VsdCA9IG5ldyAoCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TY29wZWRBcmd1bWVudHMuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TY29wZWRBcmd1bWVudHMuaAko
cmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2NvcGVk
QXJndW1lbnRzLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ3LDcgKzQ3LDcgQEAgcHVibGljOgogICAg
IHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAgICAg
c3RhdGljX2Fzc2VydCghQ2VsbFR5cGU6Om5lZWRzRGVzdHJ1Y3Rpb24sICIiKTsKLSAgICAgICAg
cmV0dXJuICZ2bS5zY29wZWRBcmd1bWVudHNTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5zY29w
ZWRBcmd1bWVudHNTcGFjZSgpOwogICAgIH0KIAogICAgIC8vIENyZWF0ZXMgYW4gYXJndW1lbnRz
IG9iamVjdCBidXQgbGVhdmVzIGl0IHVuaW5pdGlhbGl6ZWQuIFRoaXMgaXMgZGFuZ2Vyb3VzIGlm
IHdlIEdDIHJpZ2h0CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TZXRJdGVy
YXRvclByb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1NldEl0ZXJhdG9yUHJvdG90eXBlLmgJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1NldEl0ZXJhdG9yUHJvdG90eXBlLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTM3LDcgKzM3LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vi
c3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BB
Q0VfU0hBUkFCTEUoU2V0SXRlcmF0b3JQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4g
JnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFj
ZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBTZXRJdGVyYXRvclByb3RvdHlwZSogY3JlYXRlKFZN
JiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUp
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TZXRQcm90b3R5cGUuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TZXRQcm90b3R5cGUuaAko
cmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2V0UHJv
dG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM3LDcgKzM3LDcgQEAgcHVibGljOgogICAgIHN0
YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAgICAgU1RB
VElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoU2V0UHJvdG90eXBlLCBCYXNlKTsKLSAg
ICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBs
YWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVk
IFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBIYXNTdGF0aWNQcm9wZXJ0
eVRhYmxlOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2hhZG93UmVhbG1Q
cm90b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
aGFkb3dSZWFsbVByb3RvdHlwZS5oCShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9TaGFkb3dSZWFsbVByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBA
IC0zOSw3ICszOSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNl
Rm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NI
QVJBQkxFKFNoYWRvd1JlYWxtUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5w
bGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsK
ICAgICB9CiAKICAgICBzdGF0aWMgU2hhZG93UmVhbG1Qcm90b3R5cGUqIGNyZWF0ZShWTSYgdm0s
IFN0cnVjdHVyZSogc3RydWN0dXJlKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU3BhcnNlQXJyYXlWYWx1ZU1hcC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1NwYXJzZUFycmF5VmFsdWVNYXAuaAkocmV2aXNpb24gMjg2MDk1KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3BhcnNlQXJyYXlWYWx1ZU1hcC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMTAsNyArMTEwLDcgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVu
YW1lIENlbGxUeXBlLCBTdWJzcGFjZUFjY2Vzcz4KICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1
YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7Ci0gICAgICAgIHJldHVybiAmdm0uc3BhcnNlQXJyYXlW
YWx1ZU1hcFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnNwYXJzZUFycmF5VmFsdWVNYXBTcGFj
ZSgpOwogICAgIH0KICAgICAKICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUo
Vk0mLCBKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUgcHJvdG90eXBlKTsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ0l0ZXJhdG9yUHJvdG90eXBlLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nSXRlcmF0b3JQcm90b3R5
cGUuaAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
U3RyaW5nSXRlcmF0b3JQcm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzksNyArMzksNyBA
QCBwdWJsaWM6CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAg
ICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShTdHJpbmdJ
dGVyYXRvclByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RT
cGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAg
ICAgc3RhdGljIFN0cmluZ0l0ZXJhdG9yUHJvdG90eXBlKiBjcmVhdGUoVk0mIHZtLCBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ09iamVjdC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ09iamVjdC5oCShyZXZpc2lvbiAyODYw
OTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdPYmplY3QuaAkod29y
a2luZyBjb3B5KQpAQCAtMzMsNyArMzMsNyBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5h
bWUsIFN1YnNwYWNlQWNjZXNzIG1vZGU+CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFj
ZUZvcihWTSYgdm0pCiAgICAgewotICAgICAgICByZXR1cm4gJnZtLnN0cmluZ09iamVjdFNwYWNl
OworICAgICAgICByZXR1cm4gJnZtLnN0cmluZ09iamVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAg
c3RhdGljIFN0cmluZ09iamVjdCogY3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUp
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaAkocmV2aXNp
b24gMjg2MDk1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTEyOCw3ICsxMjgsNyBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8
dHlwZW5hbWUgQ2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNzPgogICAgIHN0YXRpYyBJc29TdWJzcGFj
ZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKLSAgICAgICAgcmV0dXJuICZ2bS5zdHJ1Y3R1
cmVTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5zdHJ1Y3R1cmVTcGFjZSgpOwogICAgIH0KIAog
ICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIGlzVmFsaWRQcm90b3R5cGUoSlNWYWx1
ZSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVDaGFpbi5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJl
Q2hhaW4uY3BwCShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9TdHJ1Y3R1cmVDaGFpbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDcgKzQ4LDcgQEAg
U3RydWN0dXJlQ2hhaW4qIFN0cnVjdHVyZUNoYWluOjpjcmVhdGUoVgogICAgICAgICArK3NpemU7
CiAgICAgKytzaXplOyAvLyBTZW50aW5lbCBudWxscHRyLgogICAgIHNpemVfdCBieXRlcyA9IENo
ZWNrZWQ8c2l6ZV90PihzaXplKSAqIHNpemVvZihTdHJ1Y3R1cmVJRCk7Ci0gICAgU3RydWN0dXJl
SUQqIHZlY3RvciA9IHN0YXRpY19jYXN0PFN0cnVjdHVyZUlEKj4odm0uanNWYWx1ZUdpZ2FjYWdl
QXV4aWxpYXJ5U3BhY2UuYWxsb2NhdGVOb25WaXJ0dWFsKHZtLCBieXRlcywgbnVsbHB0ciwgQWxs
b2NhdGlvbkZhaWx1cmVNb2RlOjpBc3NlcnQpKTsKKyAgICBTdHJ1Y3R1cmVJRCogdmVjdG9yID0g
c3RhdGljX2Nhc3Q8U3RydWN0dXJlSUQqPih2bS5qc1ZhbHVlR2lnYWNhZ2VBdXhpbGlhcnlTcGFj
ZSgpLmFsbG9jYXRlTm9uVmlydHVhbCh2bSwgYnl0ZXMsIG51bGxwdHIsIEFsbG9jYXRpb25GYWls
dXJlTW9kZTo6QXNzZXJ0KSk7CiAgICAgbWVtc2V0KHZlY3RvciwgMCwgYnl0ZXMpOwogICAgIFN0
cnVjdHVyZUNoYWluKiBjaGFpbiA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFN0cnVjdHVy
ZUNoYWluPih2bSkpIFN0cnVjdHVyZUNoYWluKHZtLCB2bS5zdHJ1Y3R1cmVDaGFpblN0cnVjdHVy
ZS5nZXQoKSwgdmVjdG9yKTsKICAgICBjaGFpbi0+ZmluaXNoQ3JlYXRpb24odm0sIGhlYWQpOwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlQ2hhaW4uaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVDaGFpbi5o
CShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1
Y3R1cmVDaGFpbi5oCSh3b3JraW5nIGNvcHkpCkBAIC00Niw3ICs0Niw3IEBAIHB1YmxpYzoKICAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vic3BhY2VBY2Nlc3M+CiAgICAgc3RhdGlj
IElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewotICAgICAgICByZXR1cm4g
JnZtLnN0cnVjdHVyZUNoYWluU3BhY2U7CisgICAgICAgIHJldHVybiAmdm0uc3RydWN0dXJlQ2hh
aW5TcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBTdHJ1Y3R1cmVDaGFpbiogY3JlYXRlKFZN
JiwgSlNPYmplY3QqKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVj
dHVyZVJhcmVEYXRhLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU3RydWN0dXJlUmFyZURhdGEuaAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlUmFyZURhdGEuaAkod29ya2luZyBjb3B5KQpAQCAt
NjYsNyArNjYsNyBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUsIFN1
YnNwYWNlQWNjZXNzPgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZt
KQogICAgIHsKLSAgICAgICAgcmV0dXJuICZ2bS5zdHJ1Y3R1cmVSYXJlRGF0YVNwYWNlOworICAg
ICAgICByZXR1cm4gJnZtLnN0cnVjdHVyZVJhcmVEYXRhU3BhY2UoKTsKICAgICB9CiAKICAgICBz
dGF0aWMgU3RydWN0dXJlUmFyZURhdGEqIGNyZWF0ZShWTSYsIFN0cnVjdHVyZSopOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sUHJvdG90eXBlLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sUHJvdG90eXBlLmgJKHJl
dmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbFBy
b3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00MSw3ICs0MSw3IEBAIHB1YmxpYzoKICAgICBz
dGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAgIFNU
QVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKFN5bWJvbFByb3RvdHlwZSwgQmFzZSk7
Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2
bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIFN5bWJvbFByb3RvdHlw
ZSogY3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xU
YWJsZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJv
bFRhYmxlLmgJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1N5bWJvbFRhYmxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ1Niw3ICs0NTYsNyBAQCBwdWJs
aWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNzPgogICAg
IHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKLSAgICAgICAg
cmV0dXJuICZ2bS5zeW1ib2xUYWJsZVNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnN5bWJvbFRh
YmxlU3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgU3ltYm9sVGFibGUqIGNyZWF0ZShWTSYg
dm0pCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbENhbGVuZGFy
UHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
VGVtcG9yYWxDYWxlbmRhclByb3RvdHlwZS5oCShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbENhbGVuZGFyUHJvdG90eXBlLmgJKHdvcmtp
bmcgY29weSkKQEAgLTM4LDcgKzM4LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJc29TdWJzcGFj
ZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09f
U1VCU1BBQ0VfU0hBUkFCTEUoVGVtcG9yYWxDYWxlbmRhclByb3RvdHlwZSwgQmFzZSk7Ci0gICAg
ICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFp
bk9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIFRlbXBvcmFsQ2FsZW5kYXJQcm90
b3R5cGUqIGNyZWF0ZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKik7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbER1cmF0aW9uUHJvdG90eXBlLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxEdXJh
dGlvblByb3RvdHlwZS5oCShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9UZW1wb3JhbER1cmF0aW9uUHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAg
LTEsNSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDIxIFNvbnkgSW50ZXJhY3RpdmUg
RW50ZXJ0YWlubWVudCBJbmMuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zOCw3
ICszOSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZN
JiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxF
KFRlbXBvcmFsRHVyYXRpb25Qcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBs
YWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwog
ICAgIH0KIAogICAgIHN0YXRpYyBUZW1wb3JhbER1cmF0aW9uUHJvdG90eXBlKiBjcmVhdGUoVk0m
LCBTdHJ1Y3R1cmUqKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBv
cmFsSW5zdGFudFByb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1RlbXBvcmFsSW5zdGFudFByb3RvdHlwZS5oCShyZXZpc2lvbiAyODYwOTUpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbEluc3RhbnRQcm90b3R5cGUu
aAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIw
MjEgSWdhbGlhIFMuTC4KKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM4LDcgKzM5
LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZt
KQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoVGVt
cG9yYWxJbnN0YW50UHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9i
amVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9
CiAKICAgICBzdGF0aWMgVGVtcG9yYWxJbnN0YW50UHJvdG90eXBlKiBjcmVhdGUoVk0mLCBTdHJ1
Y3R1cmUqKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsTm93
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxO
b3cuaAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
VGVtcG9yYWxOb3cuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiAgQ29w
eXJpZ2h0IChDKSAyMDIxIElnYWxpYSwgUy5MLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogIENv
cHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICog
IFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh
bmQvb3IKICAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdl
bmVyYWwgUHVibGljCkBAIC0zMiw3ICszMyw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vi
c3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRf
SVNPX1NVQlNQQUNFX1NIQVJBQkxFKFRlbXBvcmFsTm93LCBCYXNlKTsKLSAgICAgICAgcmV0dXJu
ICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3Bh
Y2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgVGVtcG9yYWxOb3cqIGNyZWF0ZShWTSYsIFN0cnVj
dHVyZSopOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxPYmpl
Y3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3Jh
bE9iamVjdC5oCShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9UZW1wb3JhbE9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNyBAQAogLyoK
ICAqICBDb3B5cmlnaHQgKEMpIDIwMjEgSWdhbGlhLCBTLkwuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKiAgQ29weXJpZ2h0IChDKSAyMDIxIFNvbnkgSW50ZXJhY3RpdmUgRW50ZXJ0YWlubWVudCBJ
bmMuCisgKiAgQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0
cmlidXRlIGl0IGFuZC9vcgogICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO
VSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKQEAgLTY0LDcgKzY1LDcgQEAgcHVibGljOgogICAgIHN0
YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAgICAgU1RB
VElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoVGVtcG9yYWxPYmplY3QsIEJhc2UpOwot
ICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0u
cGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBUZW1wb3JhbE9iamVjdCog
Y3JlYXRlKFZNJiwgU3RydWN0dXJlKik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9UZW1wb3JhbFBsYWluVGltZVByb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlLmgJKHJldmlz
aW9uIDI4NjA5NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsUGxh
aW5UaW1lUHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICog
Q29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4KKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKQEAgLTM4LDcgKzM4LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vi
c3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BB
Q0VfU0hBUkFCTEUoVGVtcG9yYWxQbGFpblRpbWVQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICBy
ZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmpl
Y3RTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBUZW1wb3JhbFBsYWluVGltZVByb3RvdHlw
ZSogY3JlYXRlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqKTsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsVGltZVpvbmVQcm90b3R5cGUuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbFRpbWVab25l
UHJvdG90eXBlLmgJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1RlbXBvcmFsVGltZVpvbmVQcm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzgs
NyArMzgsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihW
TSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJM
RShUZW1wb3JhbFRpbWVab25lUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5w
bGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsK
ICAgICB9CiAKICAgICBzdGF0aWMgVGVtcG9yYWxUaW1lWm9uZVByb3RvdHlwZSogY3JlYXRlKFZN
JiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1Rocm93U2NvcGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1Rocm93U2NvcGUuY3BwCShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UaHJvd1Njb3BlLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAxOSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAyMSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
QEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJFeGNlcHRpb24uaCIKICNpbmNsdWRlICJKU0NK
U1ZhbHVlSW5saW5lcy5oIgogI2luY2x1ZGUgIlZNLmgiCisjaW5jbHVkZSA8d3RmL1N0YWNrVHJh
Y2UuaD4KIAogbmFtZXNwYWNlIEpTQyB7CiAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9WTS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvVk0uY3BwCShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9WTS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyLDIxICszMiwxNSBAQAogI2luY2x1
ZGUgIkFjY2Vzc0Nhc2UuaCIKICNpbmNsdWRlICJBZ2dyZWdhdGVFcnJvci5oIgogI2luY2x1ZGUg
IkFyZ0xpc3QuaCIKLSNpbmNsdWRlICJCaWdJbnRPYmplY3QuaCIKLSNpbmNsdWRlICJCb29sZWFu
T2JqZWN0LmgiCi0jaW5jbHVkZSAiQnJhbmRlZFN0cnVjdHVyZS5oIgogI2luY2x1ZGUgIkJ1aWx0
aW5FeGVjdXRhYmxlcy5oIgogI2luY2x1ZGUgIkJ5dGVjb2RlSW50cmluc2ljUmVnaXN0cnkuaCIK
ICNpbmNsdWRlICJDaGVja3BvaW50T1NSRXhpdFNpZGVTdGF0ZS5oIgotI2luY2x1ZGUgIkNsb25l
ZEFyZ3VtZW50cy5oIgogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgogI2luY2x1ZGUgIkNvZGVDYWNo
ZS5oIgogI2luY2x1ZGUgIkNvbW1vbklkZW50aWZpZXJzLmgiCiAjaW5jbHVkZSAiQ29udHJvbEZs
b3dQcm9maWxlci5oIgogI2luY2x1ZGUgIkN1c3RvbUdldHRlclNldHRlci5oIgogI2luY2x1ZGUg
IkRPTUF0dHJpYnV0ZUdldHRlclNldHRlci5oIgotI2luY2x1ZGUgIkRhdGVJbnN0YW5jZS5oIgot
I2luY2x1ZGUgIkRlYnVnZ2VyU2NvcGUuaCIKICNpbmNsdWRlICJEZWZlcnJlZFdvcmtUaW1lci5o
IgogI2luY2x1ZGUgIkRpc2Fzc2VtYmxlci5oIgogI2luY2x1ZGUgIkRvdWJsZVByZWRpY3Rpb25G
dXp6ZXJBZ2VudC5oIgpAQCAtNTUsNyArNDksNiBAQAogI2luY2x1ZGUgIkV4Y2VwdGlvbi5oIgog
I2luY2x1ZGUgIkV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2UuaCIKICNpbmNsdWRlICJGVExUaHVu
a3MuaCIKLSNpbmNsdWRlICJGYXN0TWFsbG9jQWxpZ25lZE1lbW9yeUFsbG9jYXRvci5oIgogI2lu
Y2x1ZGUgIkZpbGVCYXNlZEZ1enplckFnZW50LmgiCiAjaW5jbHVkZSAiRnVuY3Rpb25Db2RlQmxv
Y2suaCIKICNpbmNsdWRlICJGdW5jdGlvbkV4ZWN1dGFibGUuaCIKQEAgLTY2LDc3ICs1OSwyNSBA
QAogI2luY2x1ZGUgIkhlYXBQcm9maWxlci5oIgogI2luY2x1ZGUgIkludGVycHJldGVyLmgiCiAj
aW5jbHVkZSAiSW50bENhY2hlLmgiCi0jaW5jbHVkZSAiSW50bENvbGxhdG9yLmgiCi0jaW5jbHVk
ZSAiSW50bERhdGVUaW1lRm9ybWF0LmgiCi0jaW5jbHVkZSAiSW50bERpc3BsYXlOYW1lcy5oIgot
I2luY2x1ZGUgIkludGxMaXN0Rm9ybWF0LmgiCi0jaW5jbHVkZSAiSW50bExvY2FsZS5oIgotI2lu
Y2x1ZGUgIkludGxOdW1iZXJGb3JtYXQuaCIKLSNpbmNsdWRlICJJbnRsUGx1cmFsUnVsZXMuaCIK
LSNpbmNsdWRlICJJbnRsUmVsYXRpdmVUaW1lRm9ybWF0LmgiCi0jaW5jbHVkZSAiSW50bFNlZ21l
bnRJdGVyYXRvci5oIgotI2luY2x1ZGUgIkludGxTZWdtZW50ZXIuaCIKLSNpbmNsdWRlICJJbnRs
U2VnbWVudHMuaCIKLSNpbmNsdWRlICJJc29IZWFwQ2VsbFR5cGUuaCIKLSNpbmNsdWRlICJJc29J
bmxpbmVkSGVhcENlbGxUeXBlLmgiCiAjaW5jbHVkZSAiSklUQ29kZS5oIgogI2luY2x1ZGUgIkpJ
VE9wZXJhdGlvbkxpc3QuaCIKICNpbmNsdWRlICJKSVRTaXplU3RhdGlzdGljcy5oIgogI2luY2x1
ZGUgIkpJVFRodW5rcy5oIgogI2luY2x1ZGUgIkpJVFdvcmtsaXN0LmgiCi0jaW5jbHVkZSAiSlNB
UElHbG9iYWxPYmplY3QuaCIKICNpbmNsdWRlICJKU0FQSVZhbHVlV3JhcHBlci5oIgotI2luY2x1
ZGUgIkpTQVBJV3JhcHBlck9iamVjdC5oIgotI2luY2x1ZGUgIkpTQXJyYXkuaCIKLSNpbmNsdWRl
ICJKU0FycmF5QnVmZmVyLmgiCi0jaW5jbHVkZSAiSlNBcnJheUl0ZXJhdG9yLmgiCi0jaW5jbHVk
ZSAiSlNBc3luY0dlbmVyYXRvci5oIgogI2luY2x1ZGUgIkpTQmlnSW50LmgiCi0jaW5jbHVkZSAi
SlNCb3VuZEZ1bmN0aW9uLmgiCi0jaW5jbHVkZSAiSlNDYWxsYmFja0NvbnN0cnVjdG9yLmgiCi0j
aW5jbHVkZSAiSlNDYWxsYmFja0Z1bmN0aW9uLmgiCi0jaW5jbHVkZSAiSlNDYWxsYmFja09iamVj
dC5oIgotI2luY2x1ZGUgIkpTQ2FsbGVlLmgiCi0jaW5jbHVkZSAiSlNDdXN0b21HZXR0ZXJGdW5j
dGlvbi5oIgotI2luY2x1ZGUgIkpTQ3VzdG9tU2V0dGVyRnVuY3Rpb24uaCIKLSNpbmNsdWRlICJK
U0Rlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5oIgotI2luY2x1ZGUgIkpTRmluYWxpemF0
aW9uUmVnaXN0cnkuaCIKLSNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCi0jaW5jbHVkZSAiSlNHbG9i
YWxMZXhpY2FsRW52aXJvbm1lbnQuaCIKICNpbmNsdWRlICJKU0dsb2JhbE9iamVjdC5oIgogI2lu
Y2x1ZGUgIkpTSW1tdXRhYmxlQnV0dGVyZmx5LmgiCi0jaW5jbHVkZSAiSlNJbmplY3RlZFNjcmlw
dEhvc3QuaCIKLSNpbmNsdWRlICJKU0phdmFTY3JpcHRDYWxsRnJhbWUuaCIKICNpbmNsdWRlICJK
U0xvY2suaCIKICNpbmNsdWRlICJKU01hcC5oIgotI2luY2x1ZGUgIkpTTWFwSXRlcmF0b3IuaCIK
LSNpbmNsdWRlICJKU01vZHVsZU5hbWVzcGFjZU9iamVjdC5oIgotI2luY2x1ZGUgIkpTTW9kdWxl
UmVjb3JkLmgiCi0jaW5jbHVkZSAiSlNOYXRpdmVTdGRGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpT
UHJvbWlzZS5oIgogI2luY2x1ZGUgIkpTUHJvcGVydHlOYW1lRW51bWVyYXRvci5oIgotI2luY2x1
ZGUgIkpTUHJveHkuaCIKICNpbmNsdWRlICJKU1NjcmlwdEZldGNoUGFyYW1ldGVycy5oIgogI2lu
Y2x1ZGUgIkpTU2NyaXB0RmV0Y2hlci5oIgogI2luY2x1ZGUgIkpTU2V0LmgiCi0jaW5jbHVkZSAi
SlNTZXRJdGVyYXRvci5oIgogI2luY2x1ZGUgIkpTU291cmNlQ29kZS5oIgotI2luY2x1ZGUgIkpT
U3RyaW5nSXRlcmF0b3IuaCIKICNpbmNsdWRlICJKU1RlbXBsYXRlT2JqZWN0RGVzY3JpcHRvci5o
IgotI2luY2x1ZGUgIkpTVG9XYXNtSUNDYWxsZWUuaCIKLSNpbmNsdWRlICJKU1R5cGVkQXJyYXlz
LmgiCi0jaW5jbHVkZSAiSlNXZWFrTWFwLmgiCi0jaW5jbHVkZSAiSlNXZWFrT2JqZWN0UmVmLmgi
Ci0jaW5jbHVkZSAiSlNXZWFrU2V0LmgiCiAjaW5jbHVkZSAiSlNXZWJBc3NlbWJseUNvZGVCbG9j
ay5oIgotI2luY2x1ZGUgIkpTV2ViQXNzZW1ibHlFeGNlcHRpb24uaCIKLSNpbmNsdWRlICJKU1dl
YkFzc2VtYmx5R2xvYmFsLmgiCi0jaW5jbHVkZSAiSlNXZWJBc3NlbWJseUluc3RhbmNlLmgiCi0j
aW5jbHVkZSAiSlNXZWJBc3NlbWJseU1lbW9yeS5oIgotI2luY2x1ZGUgIkpTV2ViQXNzZW1ibHlN
b2R1bGUuaCIKLSNpbmNsdWRlICJKU1dlYkFzc2VtYmx5VGFibGUuaCIKLSNpbmNsdWRlICJKU1dl
YkFzc2VtYmx5VGFnLmgiCi0jaW5jbHVkZSAiSlNXaXRoU2NvcGUuaCIKICNpbmNsdWRlICJMTElu
dERhdGEuaCIKICNpbmNsdWRlICJMTEludEV4Y2VwdGlvbnMuaCIKICNpbmNsdWRlICJNYXJrZWRC
bG9ja0lubGluZXMuaCIKQEAgLTE1MSwyNyArOTIsMTYgQEAKICNpbmNsdWRlICJQcm9ncmFtQ29k
ZUJsb2NrLmgiCiAjaW5jbHVkZSAiUHJvZ3JhbUV4ZWN1dGFibGUuaCIKICNpbmNsdWRlICJQcm9w
ZXJ0eVRhYmxlLmgiCi0jaW5jbHVkZSAiUHJveHlSZXZva2UuaCIKICNpbmNsdWRlICJSYW5kb21p
emluZ0Z1enplckFnZW50LmgiCiAjaW5jbHVkZSAiUmVnRXhwQ2FjaGUuaCIKLSNpbmNsdWRlICJS
ZWdFeHBPYmplY3QuaCIKICNpbmNsdWRlICJTYW1wbGluZ1Byb2ZpbGVyLmgiCiAjaW5jbHVkZSAi
U2NvcGVkQXJndW1lbnRzLmgiCiAjaW5jbHVkZSAiU2hhZG93Q2hpY2tlbi5oIgotI2luY2x1ZGUg
IlNoYWRvd1JlYWxtT2JqZWN0LmgiCiAjaW5jbHVkZSAiU2ltcGxlVHlwZWRBcnJheUNvbnRyb2xs
ZXIuaCIKICNpbmNsdWRlICJTb3VyY2VQcm92aWRlckNhY2hlLmgiCi0jaW5jbHVkZSAiU3RyaWN0
RXZhbEFjdGl2YXRpb24uaCIKLSNpbmNsdWRlICJTdHJpbmdPYmplY3QuaCIKICNpbmNsdWRlICJT
dHJvbmdJbmxpbmVzLmgiCiAjaW5jbHVkZSAiU3RydWN0dXJlQ2hhaW4uaCIKICNpbmNsdWRlICJT
dHJ1Y3R1cmVJbmxpbmVzLmgiCi0jaW5jbHVkZSAiU3ltYm9sT2JqZWN0LmgiCi0jaW5jbHVkZSAi
VGVtcG9yYWxDYWxlbmRhci5oIgotI2luY2x1ZGUgIlRlbXBvcmFsRHVyYXRpb24uaCIKLSNpbmNs
dWRlICJUZW1wb3JhbEluc3RhbnQuaCIKLSNpbmNsdWRlICJUZW1wb3JhbFBsYWluVGltZS5oIgot
I2luY2x1ZGUgIlRlbXBvcmFsVGltZVpvbmUuaCIKICNpbmNsdWRlICJUZXN0UnVubmVyVXRpbHMu
aCIKICNpbmNsdWRlICJUaHVua0dlbmVyYXRvcnMuaCIKICNpbmNsdWRlICJUeXBlUHJvZmlsZXIu
aCIKQEAgLTE4MywxOSArMTEzLDE2IEBACiAjaW5jbHVkZSAiV2FzbVdvcmtsaXN0LmgiCiAjaW5j
bHVkZSAiV2F0Y2hkb2cuaCIKICNpbmNsdWRlICJXZWFrR0NNYXBJbmxpbmVzLmgiCi0jaW5jbHVk
ZSAiV2ViQXNzZW1ibHlGdW5jdGlvbi5oIgotI2luY2x1ZGUgIldlYkFzc2VtYmx5TW9kdWxlUmVj
b3JkLmgiCi0jaW5jbHVkZSAiV2ViQXNzZW1ibHlXcmFwcGVyRnVuY3Rpb24uaCIKICNpbmNsdWRl
ICJXaWRlbmluZ051bWJlclByZWRpY3Rpb25GdXp6ZXJBZ2VudC5oIgogI2luY2x1ZGUgPHd0Zi9Q
cm9jZXNzSUQuaD4KICNpbmNsdWRlIDx3dGYvUmVhZFdyaXRlTG9jay5oPgogI2luY2x1ZGUgPHd0
Zi9TaW1wbGVTdGF0cy5oPgorI2luY2x1ZGUgPHd0Zi9TdGFja1RyYWNlLmg+CiAjaW5jbHVkZSA8
d3RmL1N0cmluZ1ByaW50U3RyZWFtLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L0F0b21TdHJpbmdUYWJsZS5oPgogCiAjaWYgRU5BQkxFKENfTE9PUCkK
LSNpbmNsdWRlICJDTG9vcFN0YWNrLmgiCiAjaW5jbHVkZSAiQ0xvb3BTdGFja0lubGluZXMuaCIK
ICNlbmRpZgogCkBAIC0yMDcsMTUgKzEzNCw2IEBACiAjaW5jbHVkZSAiUmVnRXhwLmgiCiAjZW5k
aWYKIAotI2lmIEpTQ19PQkpDX0FQSV9FTkFCTEVECi0jaW5jbHVkZSAiT2JqQ0NhbGxiYWNrRnVu
Y3Rpb24uaCIKLSNlbmRpZgotCi0jaWZkZWYgSlNDX0dMSUJfQVBJX0VOQUJMRUQKLSNpbmNsdWRl
ICJKU0FQSVdyYXBwZXJHbG9iYWxPYmplY3QuaCIKLSNpbmNsdWRlICJKU0NDYWxsYmFja0Z1bmN0
aW9uLmgiCi0jZW5kaWYKLQogbmFtZXNwYWNlIEpTQyB7CiAKIEF0b21pYzx1bnNpZ25lZD4gVk06
OnNfbnVtYmVyT2ZJRHM7CkBAIC0yOTEsMTA5ICsyMDksNiBAQCBWTTo6Vk0oVk1UeXBlIHZtVHlw
ZSwgSGVhcFR5cGUgaGVhcFR5cGUsCiAgICAgLCBtX3JhbmRvbShPcHRpb25zOjpzZWVkT2ZWTVJh
bmRvbUZvckZ1enplcigpID8gT3B0aW9uczo6c2VlZE9mVk1SYW5kb21Gb3JGdXp6ZXIoKSA6IGNy
eXB0b2dyYXBoaWNhbGx5UmFuZG9tTnVtYmVyKCkpCiAgICAgLCBtX2ludGVncml0eVJhbmRvbSgq
dGhpcykKICAgICAsIGhlYXAoKnRoaXMsIGhlYXBUeXBlKQotICAgICwgZmFzdE1hbGxvY0FsbG9j
YXRvcihtYWtlVW5pcXVlPEZhc3RNYWxsb2NBbGlnbmVkTWVtb3J5QWxsb2NhdG9yPigpKQotICAg
ICwgcHJpbWl0aXZlR2lnYWNhZ2VBbGxvY2F0b3IobWFrZVVuaXF1ZTxHaWdhY2FnZUFsaWduZWRN
ZW1vcnlBbGxvY2F0b3I+KEdpZ2FjYWdlOjpQcmltaXRpdmUpKQotICAgICwganNWYWx1ZUdpZ2Fj
YWdlQWxsb2NhdG9yKG1ha2VVbmlxdWU8R2lnYWNhZ2VBbGlnbmVkTWVtb3J5QWxsb2NhdG9yPihH
aWdhY2FnZTo6SlNWYWx1ZSkpCi0gICAgLCBhdXhpbGlhcnlIZWFwQ2VsbFR5cGUobWFrZVVuaXF1
ZTxIZWFwQ2VsbFR5cGU+KENlbGxBdHRyaWJ1dGVzKERvZXNOb3ROZWVkRGVzdHJ1Y3Rpb24sIEhl
YXBDZWxsOjpBdXhpbGlhcnkpKSkKLSAgICAsIGltbXV0YWJsZUJ1dHRlcmZseUhlYXBDZWxsVHlw
ZShtYWtlVW5pcXVlPEhlYXBDZWxsVHlwZT4oQ2VsbEF0dHJpYnV0ZXMoRG9lc05vdE5lZWREZXN0
cnVjdGlvbiwgSGVhcENlbGw6OkpTQ2VsbFdpdGhJbmRleGluZ0hlYWRlcikpKQotICAgICwgY2Vs
bEhlYXBDZWxsVHlwZShtYWtlVW5pcXVlPEhlYXBDZWxsVHlwZT4oQ2VsbEF0dHJpYnV0ZXMoRG9l
c05vdE5lZWREZXN0cnVjdGlvbiwgSGVhcENlbGw6OkpTQ2VsbCkpKQotICAgICwgZGVzdHJ1Y3Rp
YmxlQ2VsbEhlYXBDZWxsVHlwZShtYWtlVW5pcXVlPEhlYXBDZWxsVHlwZT4oQ2VsbEF0dHJpYnV0
ZXMoTmVlZHNEZXN0cnVjdGlvbiwgSGVhcENlbGw6OkpTQ2VsbCkpKQotICAgICwgYXBpR2xvYmFs
T2JqZWN0SGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6Y3JlYXRlPEpTQVBJR2xvYmFsT2Jq
ZWN0PigpKQotICAgICwgY2FsbGJhY2tDb25zdHJ1Y3RvckhlYXBDZWxsVHlwZShJc29IZWFwQ2Vs
bFR5cGU6OmNyZWF0ZTxKU0NhbGxiYWNrQ29uc3RydWN0b3I+KCkpCi0gICAgLCBjYWxsYmFja0ds
b2JhbE9iamVjdEhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OmNyZWF0ZTxKU0NhbGxiYWNr
T2JqZWN0PEpTR2xvYmFsT2JqZWN0Pj4oKSkKLSAgICAsIGNhbGxiYWNrT2JqZWN0SGVhcENlbGxU
eXBlKElzb0hlYXBDZWxsVHlwZTo6Y3JlYXRlPEpTQ2FsbGJhY2tPYmplY3Q8SlNOb25GaW5hbE9i
amVjdD4+KCkpCi0gICAgLCBjdXN0b21HZXR0ZXJGdW5jdGlvbkhlYXBDZWxsVHlwZShJc29IZWFw
Q2VsbFR5cGU6OmNyZWF0ZTxKU0N1c3RvbUdldHRlckZ1bmN0aW9uPigpKQotICAgICwgY3VzdG9t
U2V0dGVyRnVuY3Rpb25IZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpjcmVhdGU8SlNDdXN0
b21TZXR0ZXJGdW5jdGlvbj4oKSkKLSAgICAsIGRhdGVJbnN0YW5jZUhlYXBDZWxsVHlwZShJc29I
ZWFwQ2VsbFR5cGU6OmNyZWF0ZTxEYXRlSW5zdGFuY2U+KCkpCi0gICAgLCBlcnJvckluc3RhbmNl
SGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6Y3JlYXRlPEVycm9ySW5zdGFuY2U+KCkpCi0g
ICAgLCBmaW5hbGl6YXRpb25SZWdpc3RyeUNlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6Y3JlYXRl
PEpTRmluYWxpemF0aW9uUmVnaXN0cnk+KCkpCi0gICAgLCBnbG9iYWxMZXhpY2FsRW52aXJvbm1l
bnRIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpjcmVhdGU8SlNHbG9iYWxMZXhpY2FsRW52
aXJvbm1lbnQ+KCkpCi0gICAgLCBnbG9iYWxPYmplY3RIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxU
eXBlOjpjcmVhdGU8SlNHbG9iYWxPYmplY3Q+KCkpCi0gICAgLCBpbmplY3RlZFNjcmlwdEhvc3RT
cGFjZUhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OmNyZWF0ZTxJbnNwZWN0b3I6OkpTSW5q
ZWN0ZWRTY3JpcHRIb3N0PigpKQotICAgICwgamF2YVNjcmlwdENhbGxGcmFtZUhlYXBDZWxsVHlw
ZShJc29IZWFwQ2VsbFR5cGU6OmNyZWF0ZTxJbnNwZWN0b3I6OkpTSmF2YVNjcmlwdENhbGxGcmFt
ZT4oKSkKLSAgICAsIGpzTW9kdWxlUmVjb3JkSGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6
Y3JlYXRlPEpTTW9kdWxlUmVjb3JkPigpKQotICAgICwgbW9kdWxlTmFtZXNwYWNlT2JqZWN0SGVh
cENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6Y3JlYXRlPEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0
PigpKQotICAgICwgbmF0aXZlU3RkRnVuY3Rpb25IZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBl
OjpjcmVhdGU8SlNOYXRpdmVTdGRGdW5jdGlvbj4oKSkKLSAgICAsIHN0cmluZ0hlYXBDZWxsVHlw
ZShtYWtlVW5pcXVlPElzb0lubGluZWRIZWFwQ2VsbFR5cGU8SlNTdHJpbmc+PigpKQotICAgICwg
d2Vha01hcEhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OmNyZWF0ZTxKU1dlYWtNYXA+KCkp
Ci0gICAgLCB3ZWFrU2V0SGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6Y3JlYXRlPEpTV2Vh
a1NldD4oKSkKLSAgICAsIGRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZShtYWtlVW5pcXVl
PEpTRGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlPigpKQotI2lmIEpTQ19PQkpDX0FQSV9F
TkFCTEVECi0gICAgLCBhcGlXcmFwcGVyT2JqZWN0SGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlw
ZTo6Y3JlYXRlPEpTQ2FsbGJhY2tPYmplY3Q8SlNBUElXcmFwcGVyT2JqZWN0Pj4oKSkKLSAgICAs
IG9iakNDYWxsYmFja0Z1bmN0aW9uSGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6Y3JlYXRl
PE9iakNDYWxsYmFja0Z1bmN0aW9uPigpKQotI2VuZGlmCi0jaWZkZWYgSlNDX0dMSUJfQVBJX0VO
QUJMRUQKLSAgICAsIGFwaVdyYXBwZXJPYmplY3RIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBl
OjpjcmVhdGU8SlNDYWxsYmFja09iamVjdDxKU0FQSVdyYXBwZXJPYmplY3Q+PigpKQotICAgICwg
Y2FsbGJhY2tBUElXcmFwcGVyR2xvYmFsT2JqZWN0SGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlw
ZTo6Y3JlYXRlPEpTQ2FsbGJhY2tPYmplY3Q8SlNBUElXcmFwcGVyR2xvYmFsT2JqZWN0Pj4oKSkK
LSAgICAsIGpzY0NhbGxiYWNrRnVuY3Rpb25IZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpj
cmVhdGU8SlNDQ2FsbGJhY2tGdW5jdGlvbj4oKSkKLSNlbmRpZgotICAgICwgaW50bENvbGxhdG9y
SGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6Y3JlYXRlPEludGxDb2xsYXRvcj4oKSkKLSAg
ICAsIGludGxEYXRlVGltZUZvcm1hdEhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OmNyZWF0
ZTxJbnRsRGF0ZVRpbWVGb3JtYXQ+KCkpCi0gICAgLCBpbnRsRGlzcGxheU5hbWVzSGVhcENlbGxU
eXBlKElzb0hlYXBDZWxsVHlwZTo6Y3JlYXRlPEludGxEaXNwbGF5TmFtZXM+KCkpCi0gICAgLCBp
bnRsTGlzdEZvcm1hdEhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OmNyZWF0ZTxJbnRsTGlz
dEZvcm1hdD4oKSkKLSAgICAsIGludGxMb2NhbGVIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBl
OjpjcmVhdGU8SW50bExvY2FsZT4oKSkKLSAgICAsIGludGxOdW1iZXJGb3JtYXRIZWFwQ2VsbFR5
cGUoSXNvSGVhcENlbGxUeXBlOjpjcmVhdGU8SW50bE51bWJlckZvcm1hdD4oKSkKLSAgICAsIGlu
dGxQbHVyYWxSdWxlc0hlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OmNyZWF0ZTxJbnRsUGx1
cmFsUnVsZXM+KCkpCi0gICAgLCBpbnRsUmVsYXRpdmVUaW1lRm9ybWF0SGVhcENlbGxUeXBlKElz
b0hlYXBDZWxsVHlwZTo6Y3JlYXRlPEludGxSZWxhdGl2ZVRpbWVGb3JtYXQ+KCkpCi0gICAgLCBp
bnRsU2VnbWVudEl0ZXJhdG9ySGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6Y3JlYXRlPElu
dGxTZWdtZW50SXRlcmF0b3I+KCkpCi0gICAgLCBpbnRsU2VnbWVudGVySGVhcENlbGxUeXBlKElz
b0hlYXBDZWxsVHlwZTo6Y3JlYXRlPEludGxTZWdtZW50ZXI+KCkpCi0gICAgLCBpbnRsU2VnbWVu
dHNIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpjcmVhdGU8SW50bFNlZ21lbnRzPigpKQot
I2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKLSAgICAsIHdlYkFzc2VtYmx5Q29kZUJsb2NrSGVhcENl
bGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6Y3JlYXRlPEpTV2ViQXNzZW1ibHlDb2RlQmxvY2s+KCkp
Ci0gICAgLCB3ZWJBc3NlbWJseUV4Y2VwdGlvbkhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6
OmNyZWF0ZTxKU1dlYkFzc2VtYmx5RXhjZXB0aW9uPigpKQotICAgICwgd2ViQXNzZW1ibHlGdW5j
dGlvbkhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OmNyZWF0ZTxXZWJBc3NlbWJseUZ1bmN0
aW9uPigpKQotICAgICwgd2ViQXNzZW1ibHlHbG9iYWxIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxU
eXBlOjpjcmVhdGU8SlNXZWJBc3NlbWJseUdsb2JhbD4oKSkKLSAgICAsIHdlYkFzc2VtYmx5SW5z
dGFuY2VIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpjcmVhdGU8SlNXZWJBc3NlbWJseUlu
c3RhbmNlPigpKQotICAgICwgd2ViQXNzZW1ibHlNZW1vcnlIZWFwQ2VsbFR5cGUoSXNvSGVhcENl
bGxUeXBlOjpjcmVhdGU8SlNXZWJBc3NlbWJseU1lbW9yeT4oKSkKLSAgICAsIHdlYkFzc2VtYmx5
TW9kdWxlSGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6Y3JlYXRlPEpTV2ViQXNzZW1ibHlN
b2R1bGU+KCkpCi0gICAgLCB3ZWJBc3NlbWJseU1vZHVsZVJlY29yZEhlYXBDZWxsVHlwZShJc29I
ZWFwQ2VsbFR5cGU6OmNyZWF0ZTxXZWJBc3NlbWJseU1vZHVsZVJlY29yZD4oKSkKLSAgICAsIHdl
YkFzc2VtYmx5VGFibGVIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpjcmVhdGU8SlNXZWJB
c3NlbWJseVRhYmxlPigpKQotICAgICwgd2ViQXNzZW1ibHlUYWdIZWFwQ2VsbFR5cGUoSXNvSGVh
cENlbGxUeXBlOjpjcmVhdGU8SlNXZWJBc3NlbWJseVRhZz4oKSkKLSNlbmRpZgotICAgICwgcHJp
bWl0aXZlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZSgiUHJpbWl0aXZlIEdpZ2FjYWdlIEF1eGlsaWFy
eSIsIGhlYXAsICphdXhpbGlhcnlIZWFwQ2VsbFR5cGUsIHByaW1pdGl2ZUdpZ2FjYWdlQWxsb2Nh
dG9yLmdldCgpKSAvLyBIYXNoOjB4M2U3Y2Q3NjIKLSAgICAsIGpzVmFsdWVHaWdhY2FnZUF1eGls
aWFyeVNwYWNlKCJKU1ZhbHVlIEdpZ2FjYWdlIEF1eGlsaWFyeSIsIGhlYXAsICphdXhpbGlhcnlI
ZWFwQ2VsbFR5cGUsIGpzVmFsdWVHaWdhY2FnZUFsbG9jYXRvci5nZXQoKSkgLy8gSGFzaDoweDI0
MWU5NDYKLSAgICAsIGltbXV0YWJsZUJ1dHRlcmZseUpTVmFsdWVHaWdhY2FnZUF1eGlsaWFyeVNw
YWNlKCJJbW11dGFibGVCdXR0ZXJmbHkgR2lnYWNhZ2UgSlNDZWxsV2l0aEluZGV4aW5nSGVhZGVy
IiwgaGVhcCwgKmltbXV0YWJsZUJ1dHRlcmZseUhlYXBDZWxsVHlwZSwganNWYWx1ZUdpZ2FjYWdl
QWxsb2NhdG9yLmdldCgpKSAvLyBIYXNoOjB4N2E5NDUzMDAKLSAgICAsIGNlbGxTcGFjZSgiSlND
ZWxsIiwgaGVhcCwgKmNlbGxIZWFwQ2VsbFR5cGUsIGZhc3RNYWxsb2NBbGxvY2F0b3IuZ2V0KCkp
IC8vIEhhc2g6MHhhZGZiNWE3OQotICAgICwgdmFyaWFibGVTaXplZENlbGxTcGFjZSgiVmFyaWFi
bGUgU2l6ZWQgSlNDZWxsIiwgaGVhcCwgKmNlbGxIZWFwQ2VsbFR5cGUsIGZhc3RNYWxsb2NBbGxv
Y2F0b3IuZ2V0KCkpIC8vIEhhc2g6MHhiY2Q3NjljYwotICAgICwgZGVzdHJ1Y3RpYmxlT2JqZWN0
U3BhY2UoIkpTRGVzdHJ1Y3RpYmxlT2JqZWN0IiwgaGVhcCwgKmRlc3RydWN0aWJsZU9iamVjdEhl
YXBDZWxsVHlwZSwgZmFzdE1hbGxvY0FsbG9jYXRvci5nZXQoKSkgLy8gSGFzaDoweDRmNWVkN2E5
Ci0gICAgLCBhcnJheVNwYWNlIElTT19TVUJTUEFDRV9JTklUKGhlYXAsICpjZWxsSGVhcENlbGxU
eXBlLCBKU0FycmF5KQotICAgICwgYmlnSW50U3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoaGVhcCwg
KmNlbGxIZWFwQ2VsbFR5cGUsIEpTQmlnSW50KQotICAgICwgY2FsbGVlU3BhY2UgSVNPX1NVQlNQ
QUNFX0lOSVQoaGVhcCwgKmNlbGxIZWFwQ2VsbFR5cGUsIEpTQ2FsbGVlKQotICAgICwgY2xvbmVk
QXJndW1lbnRzU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoaGVhcCwgKmNlbGxIZWFwQ2VsbFR5cGUs
IENsb25lZEFyZ3VtZW50cykKLSAgICAsIGN1c3RvbUdldHRlclNldHRlclNwYWNlIElTT19TVUJT
UEFDRV9JTklUKGhlYXAsICpjZWxsSGVhcENlbGxUeXBlLCBDdXN0b21HZXR0ZXJTZXR0ZXIpCi0g
ICAgLCBkYXRlSW5zdGFuY2VTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVChoZWFwLCAqZGF0ZUluc3Rh
bmNlSGVhcENlbGxUeXBlLCBEYXRlSW5zdGFuY2UpCi0gICAgLCBkb21BdHRyaWJ1dGVHZXR0ZXJT
ZXR0ZXJTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVChoZWFwLCAqY2VsbEhlYXBDZWxsVHlwZSwgRE9N
QXR0cmlidXRlR2V0dGVyU2V0dGVyKQotICAgICwgZXhjZXB0aW9uU3BhY2UgSVNPX1NVQlNQQUNF
X0lOSVQoaGVhcCwgKmRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUsIEV4Y2VwdGlvbikKLSAg
ICAsIGV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2VTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVChoZWFw
LCAqY2VsbEhlYXBDZWxsVHlwZSwgRXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZSkgLy8gSGFzaDow
eDdiNzMwYjIwCi0gICAgLCBmdW5jdGlvblNwYWNlIElTT19TVUJTUEFDRV9JTklUKGhlYXAsICpj
ZWxsSGVhcENlbGxUeXBlLCBKU0Z1bmN0aW9uKSAvLyBIYXNoOjB4ODAwZmNhNzIKLSAgICAsIGdl
dHRlclNldHRlclNwYWNlIElTT19TVUJTUEFDRV9JTklUKGhlYXAsICpjZWxsSGVhcENlbGxUeXBl
LCBHZXR0ZXJTZXR0ZXIpCi0gICAgLCBnbG9iYWxMZXhpY2FsRW52aXJvbm1lbnRTcGFjZSBJU09f
U1VCU1BBQ0VfSU5JVChoZWFwLCAqZ2xvYmFsTGV4aWNhbEVudmlyb25tZW50SGVhcENlbGxUeXBl
LCBKU0dsb2JhbExleGljYWxFbnZpcm9ubWVudCkKLSAgICAsIGludGVybmFsRnVuY3Rpb25TcGFj
ZSBJU09fU1VCU1BBQ0VfSU5JVChoZWFwLCAqY2VsbEhlYXBDZWxsVHlwZSwgSW50ZXJuYWxGdW5j
dGlvbikgLy8gSGFzaDoweGY4NDVjNDY0Ci0gICAgLCBqc1Byb3h5U3BhY2UgSVNPX1NVQlNQQUNF
X0lOSVQoaGVhcCwgKmNlbGxIZWFwQ2VsbFR5cGUsIEpTUHJveHkpCi0gICAgLCBuYXRpdmVFeGVj
dXRhYmxlU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoaGVhcCwgKmRlc3RydWN0aWJsZUNlbGxIZWFw
Q2VsbFR5cGUsIE5hdGl2ZUV4ZWN1dGFibGUpIC8vIEhhc2g6MHg2NzU2N2Y5NQotICAgICwgbnVt
YmVyT2JqZWN0U3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoaGVhcCwgKmNlbGxIZWFwQ2VsbFR5cGUs
IE51bWJlck9iamVjdCkKLSAgICAsIHBsYWluT2JqZWN0U3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQo
aGVhcCwgKmNlbGxIZWFwQ2VsbFR5cGUsIEpTTm9uRmluYWxPYmplY3QpIC8vIE1haW5seSB1c2Vk
IGZvciBwcm90b3R5cGVzLgotICAgICwgcHJvbWlzZVNwYWNlIElTT19TVUJTUEFDRV9JTklUKGhl
YXAsICpjZWxsSGVhcENlbGxUeXBlLCBKU1Byb21pc2UpCi0gICAgLCBwcm9wZXJ0eU5hbWVFbnVt
ZXJhdG9yU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoaGVhcCwgKmNlbGxIZWFwQ2VsbFR5cGUsIEpT
UHJvcGVydHlOYW1lRW51bWVyYXRvcikKLSAgICAsIHByb3BlcnR5VGFibGVTcGFjZSBJU09fU1VC
U1BBQ0VfSU5JVChoZWFwLCAqZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZSwgUHJvcGVydHlU
YWJsZSkgLy8gSGFzaDoweGM2YmM5ZjEyCi0gICAgLCByZWdFeHBTcGFjZSBJU09fU1VCU1BBQ0Vf
SU5JVChoZWFwLCAqZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZSwgUmVnRXhwKQotICAgICwg
cmVnRXhwT2JqZWN0U3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoaGVhcCwgKmNlbGxIZWFwQ2VsbFR5
cGUsIFJlZ0V4cE9iamVjdCkKLSAgICAsIHJvcGVTdHJpbmdTcGFjZSBJU09fU1VCU1BBQ0VfSU5J
VChoZWFwLCAqc3RyaW5nSGVhcENlbGxUeXBlLCBKU1JvcGVTdHJpbmcpCi0gICAgLCBzY29wZWRB
cmd1bWVudHNTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVChoZWFwLCAqY2VsbEhlYXBDZWxsVHlwZSwg
U2NvcGVkQXJndW1lbnRzKQotICAgICwgc3BhcnNlQXJyYXlWYWx1ZU1hcFNwYWNlIElTT19TVUJT
UEFDRV9JTklUKGhlYXAsICpkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlLCBTcGFyc2VBcnJh
eVZhbHVlTWFwKQotICAgICwgc3RyaW5nU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoaGVhcCwgKnN0
cmluZ0hlYXBDZWxsVHlwZSwgSlNTdHJpbmcpIC8vIEhhc2g6MHg5MGNmNzU4ZgotICAgICwgc3Ry
aW5nT2JqZWN0U3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoaGVhcCwgKmNlbGxIZWFwQ2VsbFR5cGUs
IFN0cmluZ09iamVjdCkKLSAgICAsIHN0cnVjdHVyZUNoYWluU3BhY2UgSVNPX1NVQlNQQUNFX0lO
SVQoaGVhcCwgKmNlbGxIZWFwQ2VsbFR5cGUsIFN0cnVjdHVyZUNoYWluKQotICAgICwgc3RydWN0
dXJlUmFyZURhdGFTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVChoZWFwLCAqZGVzdHJ1Y3RpYmxlQ2Vs
bEhlYXBDZWxsVHlwZSwgU3RydWN0dXJlUmFyZURhdGEpIC8vIEhhc2g6MHhhY2E0ZTYyZAotICAg
ICwgc3RydWN0dXJlU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoaGVhcCwgKmRlc3RydWN0aWJsZUNl
bGxIZWFwQ2VsbFR5cGUsIFN0cnVjdHVyZSkgLy8gSGFzaDoweDFmMWJjZGNhCi0gICAgLCBicmFu
ZGVkU3RydWN0dXJlU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoaGVhcCwgKmRlc3RydWN0aWJsZUNl
bGxIZWFwQ2VsbFR5cGUsIEJyYW5kZWRTdHJ1Y3R1cmUpCi0gICAgLCBzeW1ib2xUYWJsZVNwYWNl
IElTT19TVUJTUEFDRV9JTklUKGhlYXAsICpkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlLCBT
eW1ib2xUYWJsZSkgLy8gSGFzaDoweGM1MjE1YWZkCi0gICAgLCBleGVjdXRhYmxlVG9Db2RlQmxv
Y2tFZGdlc1dpdGhDb25zdHJhaW50cyhleGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlU3BhY2UpCi0g
ICAgLCBleGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlc1dpdGhGaW5hbGl6ZXJzKGV4ZWN1dGFibGVU
b0NvZGVCbG9ja0VkZ2VTcGFjZSkKLSAgICAsIGNvZGVCbG9ja1NwYWNlIElTT19TVUJTUEFDRV9J
TklUKGhlYXAsICpkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlLCBDb2RlQmxvY2spIC8vIEhh
c2g6MHg3N2U2NmVjOQotICAgICwgZnVuY3Rpb25FeGVjdXRhYmxlU3BhY2UgSVNPX1NVQlNQQUNF
X0lOSVQoaGVhcCwgKmRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUsIEZ1bmN0aW9uRXhlY3V0
YWJsZSkgLy8gSGFzaDoweDVkMTU4ZjMKLSAgICAsIHByb2dyYW1FeGVjdXRhYmxlU3BhY2UgSVNP
X1NVQlNQQUNFX0lOSVQoaGVhcCwgKmRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUsIFByb2dy
YW1FeGVjdXRhYmxlKSAvLyBIYXNoOjB4NTI3Yzc3ZTcKLSAgICAsIHVubGlua2VkRnVuY3Rpb25F
eGVjdXRhYmxlU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoaGVhcCwgKmRlc3RydWN0aWJsZUNlbGxI
ZWFwQ2VsbFR5cGUsIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKSAvLyBIYXNoOjB4ZjZiODI4
ZDkKICAgICAsIHZtVHlwZSh2bVR5cGUpCiAgICAgLCBjbGllbnREYXRhKG51bGxwdHIpCiAgICAg
LCB0b3BFbnRyeUZyYW1lKG51bGxwdHIpCkBAIC0xNTcyLDEzNyArMTM4Nyw2IEBAIHZvaWQgVk06
OmVuc3VyZVNoYWRvd0NoaWNrZW4oKQogICAgIG1fc2hhZG93Q2hpY2tlbiA9IG1ha2VVbmlxdWU8
U2hhZG93Q2hpY2tlbj4oKTsKIH0KIAotI2RlZmluZSBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJ
TkVfTUVNQkVSX1NMT1cobmFtZSwgaGVhcENlbGxUeXBlLCB0eXBlKSBcCi0gICAgSXNvU3Vic3Bh
Y2UqIFZNOjpuYW1lIyNTbG93KCkgXAotICAgIHsgXAotICAgICAgICBBU1NFUlQoIW1fIyNuYW1l
KTsgXAotICAgICAgICBhdXRvIHNwYWNlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NV
QlNQQUNFX0lOSVQoaGVhcCwgaGVhcENlbGxUeXBlLCB0eXBlKTsgXAotICAgICAgICBXVEY6OnN0
b3JlU3RvcmVGZW5jZSgpOyBcCi0gICAgICAgIG1fIyNuYW1lID0gV1RGTW92ZShzcGFjZSk7IFwK
LSAgICAgICAgcmV0dXJuIG1fIyNuYW1lLmdldCgpOyBcCi0gICAgfQotCi0KLURZTkFNSUNfSVNP
X1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhhcGlHbG9iYWxPYmplY3RTcGFjZSwgKmFwaUds
b2JhbE9iamVjdEhlYXBDZWxsVHlwZSwgSlNBUElHbG9iYWxPYmplY3QpCi1EWU5BTUlDX0lTT19T
VUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coYXBpVmFsdWVXcmFwcGVyU3BhY2UsICpjZWxsSGVh
cENlbGxUeXBlLCBKU0FQSVZhbHVlV3JhcHBlcikKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklO
RV9NRU1CRVJfU0xPVyhhcnJheUJ1ZmZlclNwYWNlLCAqY2VsbEhlYXBDZWxsVHlwZSwgSlNBcnJh
eUJ1ZmZlcikKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhhcnJheUl0
ZXJhdG9yU3BhY2UsICpjZWxsSGVhcENlbGxUeXBlLCBKU0FycmF5SXRlcmF0b3IpCi1EWU5BTUlD
X0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coYXN5bmNHZW5lcmF0b3JTcGFjZSwgKmNl
bGxIZWFwQ2VsbFR5cGUsIEpTQXN5bmNHZW5lcmF0b3IpCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9E
RUZJTkVfTUVNQkVSX1NMT1coYmlnSW50NjRBcnJheVNwYWNlLCAqY2VsbEhlYXBDZWxsVHlwZSwg
SlNCaWdJbnQ2NEFycmF5KQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9X
KGJpZ0ludE9iamVjdFNwYWNlLCAqY2VsbEhlYXBDZWxsVHlwZSwgQmlnSW50T2JqZWN0KQotRFlO
QU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGJpZ1VpbnQ2NEFycmF5U3BhY2Us
ICpjZWxsSGVhcENlbGxUeXBlLCBKU0JpZ1VpbnQ2NEFycmF5KQotRFlOQU1JQ19JU09fU1VCU1BB
Q0VfREVGSU5FX01FTUJFUl9TTE9XKGJvb2xlYW5PYmplY3RTcGFjZSwgKmNlbGxIZWFwQ2VsbFR5
cGUsIEJvb2xlYW5PYmplY3QpCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NM
T1coYm91bmRGdW5jdGlvblNwYWNlLCAqY2VsbEhlYXBDZWxsVHlwZSwgSlNCb3VuZEZ1bmN0aW9u
KSAvLyBIYXNoOjB4ZDc5MTZkNDEKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJf
U0xPVyhjYWxsYmFja0NvbnN0cnVjdG9yU3BhY2UsICpjYWxsYmFja0NvbnN0cnVjdG9ySGVhcENl
bGxUeXBlLCBKU0NhbGxiYWNrQ29uc3RydWN0b3IpCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJ
TkVfTUVNQkVSX1NMT1coY2FsbGJhY2tHbG9iYWxPYmplY3RTcGFjZSwgKmNhbGxiYWNrR2xvYmFs
T2JqZWN0SGVhcENlbGxUeXBlLCBKU0NhbGxiYWNrT2JqZWN0PEpTR2xvYmFsT2JqZWN0PikKLURZ
TkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhjYWxsYmFja0Z1bmN0aW9uU3Bh
Y2UsICpjZWxsSGVhcENlbGxUeXBlLCBKU0NhbGxiYWNrRnVuY3Rpb24pIC8vIEhhc2g6MHhlNzY0
OGViYwotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGNhbGxiYWNrT2Jq
ZWN0U3BhY2UsICpjYWxsYmFja09iamVjdEhlYXBDZWxsVHlwZSwgSlNDYWxsYmFja09iamVjdDxK
U05vbkZpbmFsT2JqZWN0PikKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xP
VyhjdXN0b21HZXR0ZXJGdW5jdGlvblNwYWNlLCAqY3VzdG9tR2V0dGVyRnVuY3Rpb25IZWFwQ2Vs
bFR5cGUsIEpTQ3VzdG9tR2V0dGVyRnVuY3Rpb24pCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJ
TkVfTUVNQkVSX1NMT1coY3VzdG9tU2V0dGVyRnVuY3Rpb25TcGFjZSwgKmN1c3RvbVNldHRlckZ1
bmN0aW9uSGVhcENlbGxUeXBlLCBKU0N1c3RvbVNldHRlckZ1bmN0aW9uKQotRFlOQU1JQ19JU09f
U1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGRhdGFWaWV3U3BhY2UsICpjZWxsSGVhcENlbGxU
eXBlLCBKU0RhdGFWaWV3KQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9X
KGRlYnVnZ2VyU2NvcGVTcGFjZSwgKmNlbGxIZWFwQ2VsbFR5cGUsIERlYnVnZ2VyU2NvcGUpCi1E
WU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coZXJyb3JJbnN0YW5jZVNwYWNl
LCAqZXJyb3JJbnN0YW5jZUhlYXBDZWxsVHlwZSwgRXJyb3JJbnN0YW5jZSkgLy8gSGFzaDoweDNm
NDBkNGEKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhmbG9hdDMyQXJy
YXlTcGFjZSwgKmNlbGxIZWFwQ2VsbFR5cGUsIEpTRmxvYXQzMkFycmF5KQotRFlOQU1JQ19JU09f
U1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGZsb2F0NjRBcnJheVNwYWNlLCAqY2VsbEhlYXBD
ZWxsVHlwZSwgSlNGbG9hdDY0QXJyYXkpCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVN
QkVSX1NMT1coZnVuY3Rpb25SYXJlRGF0YVNwYWNlLCAqZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxs
VHlwZSwgRnVuY3Rpb25SYXJlRGF0YSkKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1C
RVJfU0xPVyhnZW5lcmF0b3JTcGFjZSwgKmNlbGxIZWFwQ2VsbFR5cGUsIEpTR2VuZXJhdG9yKQot
RFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGdsb2JhbE9iamVjdFNwYWNl
LCAqZ2xvYmFsT2JqZWN0SGVhcENlbGxUeXBlLCBKU0dsb2JhbE9iamVjdCkKLURZTkFNSUNfSVNP
X1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhpbmplY3RlZFNjcmlwdEhvc3RTcGFjZSwgKmlu
amVjdGVkU2NyaXB0SG9zdFNwYWNlSGVhcENlbGxUeXBlLCBJbnNwZWN0b3I6OkpTSW5qZWN0ZWRT
Y3JpcHRIb3N0KQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGludDhB
cnJheVNwYWNlLCAqY2VsbEhlYXBDZWxsVHlwZSwgSlNJbnQ4QXJyYXkpCi1EWU5BTUlDX0lTT19T
VUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coaW50MTZBcnJheVNwYWNlLCAqY2VsbEhlYXBDZWxs
VHlwZSwgSlNJbnQxNkFycmF5KQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9T
TE9XKGludDMyQXJyYXlTcGFjZSwgKmNlbGxIZWFwQ2VsbFR5cGUsIEpTSW50MzJBcnJheSkKLURZ
TkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhqYXZhU2NyaXB0Q2FsbEZyYW1l
U3BhY2UsICpqYXZhU2NyaXB0Q2FsbEZyYW1lSGVhcENlbGxUeXBlLCBJbnNwZWN0b3I6OkpTSmF2
YVNjcmlwdENhbGxGcmFtZSkKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xP
Vyhqc01vZHVsZVJlY29yZFNwYWNlLCAqanNNb2R1bGVSZWNvcmRIZWFwQ2VsbFR5cGUsIEpTTW9k
dWxlUmVjb3JkKQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKG1hcEJ1
Y2tldFNwYWNlLCAqY2VsbEhlYXBDZWxsVHlwZSwgSlNNYXA6OkJ1Y2tldFR5cGUpCi1EWU5BTUlD
X0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1cobWFwSXRlcmF0b3JTcGFjZSwgKmNlbGxI
ZWFwQ2VsbFR5cGUsIEpTTWFwSXRlcmF0b3IpCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVf
TUVNQkVSX1NMT1cobWFwU3BhY2UsICpjZWxsSGVhcENlbGxUeXBlLCBKU01hcCkKLURZTkFNSUNf
SVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhtb2R1bGVOYW1lc3BhY2VPYmplY3RTcGFj
ZSwgKm1vZHVsZU5hbWVzcGFjZU9iamVjdEhlYXBDZWxsVHlwZSwgSlNNb2R1bGVOYW1lc3BhY2VP
YmplY3QpCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1cobmF0aXZlU3Rk
RnVuY3Rpb25TcGFjZSwgKm5hdGl2ZVN0ZEZ1bmN0aW9uSGVhcENlbGxUeXBlLCBKU05hdGl2ZVN0
ZEZ1bmN0aW9uKSAvLyBIYXNoOjB4NzBlZDYxZTQKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklO
RV9NRU1CRVJfU0xPVyhwcm94eU9iamVjdFNwYWNlLCAqY2VsbEhlYXBDZWxsVHlwZSwgUHJveHlP
YmplY3QpCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1cocHJveHlSZXZv
a2VTcGFjZSwgKmNlbGxIZWFwQ2VsbFR5cGUsIFByb3h5UmV2b2tlKSAvLyBIYXNoOjB4YjUwNmE5
MzkKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhzY29wZWRBcmd1bWVu
dHNUYWJsZVNwYWNlLCAqZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZSwgU2NvcGVkQXJndW1l
bnRzVGFibGUpCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coc2NyaXB0
RmV0Y2hQYXJhbWV0ZXJzU3BhY2UsICpkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlLCBKU1Nj
cmlwdEZldGNoUGFyYW1ldGVycykKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJf
U0xPVyhzY3JpcHRGZXRjaGVyU3BhY2UsICpkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlLCBK
U1NjcmlwdEZldGNoZXIpCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1co
c2V0QnVja2V0U3BhY2UsICpjZWxsSGVhcENlbGxUeXBlLCBKU1NldDo6QnVja2V0VHlwZSkKLURZ
TkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhzZXRJdGVyYXRvclNwYWNlLCAq
Y2VsbEhlYXBDZWxsVHlwZSwgSlNTZXRJdGVyYXRvcikKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RF
RklORV9NRU1CRVJfU0xPVyhzZXRTcGFjZSwgKmNlbGxIZWFwQ2VsbFR5cGUsIEpTU2V0KQotRFlO
QU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHNoYWRvd1JlYWxtU3BhY2UsICpj
ZWxsSGVhcENlbGxUeXBlLCBTaGFkb3dSZWFsbU9iamVjdCkKLURZTkFNSUNfSVNPX1NVQlNQQUNF
X0RFRklORV9NRU1CRVJfU0xPVyhzdHJpY3RFdmFsQWN0aXZhdGlvblNwYWNlLCAqY2VsbEhlYXBD
ZWxsVHlwZSwgU3RyaWN0RXZhbEFjdGl2YXRpb24pCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJ
TkVfTUVNQkVSX1NMT1coc3RyaW5nSXRlcmF0b3JTcGFjZSwgKmNlbGxIZWFwQ2VsbFR5cGUsIEpT
U3RyaW5nSXRlcmF0b3IpCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1co
c291cmNlQ29kZVNwYWNlLCAqZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZSwgSlNTb3VyY2VD
b2RlKQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHN5bWJvbFNwYWNl
LCAqZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZSwgU3ltYm9sKQotRFlOQU1JQ19JU09fU1VC
U1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHN5bWJvbE9iamVjdFNwYWNlLCAqY2VsbEhlYXBDZWxs
VHlwZSwgU3ltYm9sT2JqZWN0KQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9T
TE9XKHRlbXBsYXRlT2JqZWN0RGVzY3JpcHRvclNwYWNlLCAqZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBD
ZWxsVHlwZSwgSlNUZW1wbGF0ZU9iamVjdERlc2NyaXB0b3IpCi1EWU5BTUlDX0lTT19TVUJTUEFD
RV9ERUZJTkVfTUVNQkVSX1NMT1codGVtcG9yYWxDYWxlbmRhclNwYWNlLCAqY2VsbEhlYXBDZWxs
VHlwZSwgVGVtcG9yYWxDYWxlbmRhcikKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1C
RVJfU0xPVyh0ZW1wb3JhbER1cmF0aW9uU3BhY2UsICpjZWxsSGVhcENlbGxUeXBlLCBUZW1wb3Jh
bER1cmF0aW9uKQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHRlbXBv
cmFsSW5zdGFudFNwYWNlLCAqY2VsbEhlYXBDZWxsVHlwZSwgVGVtcG9yYWxJbnN0YW50KQotRFlO
QU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHRlbXBvcmFsUGxhaW5UaW1lU3Bh
Y2UsICpjZWxsSGVhcENlbGxUeXBlLCBUZW1wb3JhbFBsYWluVGltZSkKLURZTkFNSUNfSVNPX1NV
QlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh0ZW1wb3JhbFRpbWVab25lU3BhY2UsICpjZWxsSGVh
cENlbGxUeXBlLCBUZW1wb3JhbFRpbWVab25lKQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5F
X01FTUJFUl9TTE9XKHVpbnQ4QXJyYXlTcGFjZSwgKmNlbGxIZWFwQ2VsbFR5cGUsIEpTVWludDhB
cnJheSkKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh1aW50OENsYW1w
ZWRBcnJheVNwYWNlLCAqY2VsbEhlYXBDZWxsVHlwZSwgSlNVaW50OENsYW1wZWRBcnJheSkKLURZ
TkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh1aW50MTZBcnJheVNwYWNlLCAq
Y2VsbEhlYXBDZWxsVHlwZSwgSlNVaW50MTZBcnJheSkKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RF
RklORV9NRU1CRVJfU0xPVyh1aW50MzJBcnJheVNwYWNlLCAqY2VsbEhlYXBDZWxsVHlwZSwgSlNV
aW50MzJBcnJheSkKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh1bmxp
bmtlZEV2YWxDb2RlQmxvY2tTcGFjZSwgKmRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUsIFVu
bGlua2VkRXZhbENvZGVCbG9jaykKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJf
U0xPVyh1bmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrU3BhY2UsICpkZXN0cnVjdGlibGVDZWxsSGVh
cENlbGxUeXBlLCBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKQotRFlOQU1JQ19JU09fU1VCU1BB
Q0VfREVGSU5FX01FTUJFUl9TTE9XKHVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9ja1NwYWNl
LCAqZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZSwgVW5saW5rZWRNb2R1bGVQcm9ncmFtQ29k
ZUJsb2NrKQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHVubGlua2Vk
UHJvZ3JhbUNvZGVCbG9ja1NwYWNlLCAqZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZSwgVW5s
aW5rZWRQcm9ncmFtQ29kZUJsb2NrKQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJF
Ul9TTE9XKHdlYWtNYXBTcGFjZSwgKndlYWtNYXBIZWFwQ2VsbFR5cGUsIEpTV2Vha01hcCkgLy8g
SGFzaDoweDY2MmIxMmEzCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1co
d2Vha1NldFNwYWNlLCAqd2Vha1NldEhlYXBDZWxsVHlwZSwgSlNXZWFrU2V0KSAvLyBIYXNoOjB4
NGM3ODFiMzAKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh3ZWFrT2Jq
ZWN0UmVmU3BhY2UsICpjZWxsSGVhcENlbGxUeXBlLCBKU1dlYWtPYmplY3RSZWYpIC8vIEhhc2g6
MHg4ZWM2OGYxZgotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHdpdGhT
Y29wZVNwYWNlLCAqY2VsbEhlYXBDZWxsVHlwZSwgSlNXaXRoU2NvcGUpCi1EWU5BTUlDX0lTT19T
VUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coZmluYWxpemF0aW9uUmVnaXN0cnlTcGFjZSwgKmZp
bmFsaXphdGlvblJlZ2lzdHJ5Q2VsbFR5cGUsIEpTRmluYWxpemF0aW9uUmVnaXN0cnkpCi0jaWYg
SlNDX09CSkNfQVBJX0VOQUJMRUQKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJf
U0xPVyhhcGlXcmFwcGVyT2JqZWN0U3BhY2UsICphcGlXcmFwcGVyT2JqZWN0SGVhcENlbGxUeXBl
LCBKU0NhbGxiYWNrT2JqZWN0PEpTQVBJV3JhcHBlck9iamVjdD4pCi1EWU5BTUlDX0lTT19TVUJT
UEFDRV9ERUZJTkVfTUVNQkVSX1NMT1cob2JqQ0NhbGxiYWNrRnVuY3Rpb25TcGFjZSwgKm9iakND
YWxsYmFja0Z1bmN0aW9uSGVhcENlbGxUeXBlLCBPYmpDQ2FsbGJhY2tGdW5jdGlvbikgLy8gSGFz
aDoweDEwZjYxMGI4Ci0jZW5kaWYKLSNpZmRlZiBKU0NfR0xJQl9BUElfRU5BQkxFRAotRFlOQU1J
Q19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGFwaVdyYXBwZXJPYmplY3RTcGFjZSwg
KmFwaVdyYXBwZXJPYmplY3RIZWFwQ2VsbFR5cGUsIEpTQ2FsbGJhY2tPYmplY3Q8SlNBUElXcmFw
cGVyT2JqZWN0PikKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhqc2ND
YWxsYmFja0Z1bmN0aW9uU3BhY2UsICpqc2NDYWxsYmFja0Z1bmN0aW9uSGVhcENlbGxUeXBlLCBK
U0NDYWxsYmFja0Z1bmN0aW9uKQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9T
TE9XKGNhbGxiYWNrQVBJV3JhcHBlckdsb2JhbE9iamVjdFNwYWNlLCAqY2FsbGJhY2tBUElXcmFw
cGVyR2xvYmFsT2JqZWN0SGVhcENlbGxUeXBlLCBKU0NhbGxiYWNrT2JqZWN0PEpTQVBJV3JhcHBl
ckdsb2JhbE9iamVjdD4pCi0jZW5kaWYKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1C
RVJfU0xPVyhpbnRsQ29sbGF0b3JTcGFjZSwgKmludGxDb2xsYXRvckhlYXBDZWxsVHlwZSwgSW50
bENvbGxhdG9yKQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGludGxE
YXRlVGltZUZvcm1hdFNwYWNlLCAqaW50bERhdGVUaW1lRm9ybWF0SGVhcENlbGxUeXBlLCBJbnRs
RGF0ZVRpbWVGb3JtYXQpCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1co
aW50bERpc3BsYXlOYW1lc1NwYWNlLCAqaW50bERpc3BsYXlOYW1lc0hlYXBDZWxsVHlwZSwgSW50
bERpc3BsYXlOYW1lcykKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhp
bnRsTGlzdEZvcm1hdFNwYWNlLCAqaW50bExpc3RGb3JtYXRIZWFwQ2VsbFR5cGUsIEludGxMaXN0
Rm9ybWF0KQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGludGxMb2Nh
bGVTcGFjZSwgKmludGxMb2NhbGVIZWFwQ2VsbFR5cGUsIEludGxMb2NhbGUpCi1EWU5BTUlDX0lT
T19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coaW50bE51bWJlckZvcm1hdFNwYWNlLCAqaW50
bE51bWJlckZvcm1hdEhlYXBDZWxsVHlwZSwgSW50bE51bWJlckZvcm1hdCkKLURZTkFNSUNfSVNP
X1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhpbnRsUGx1cmFsUnVsZXNTcGFjZSwgKmludGxQ
bHVyYWxSdWxlc0hlYXBDZWxsVHlwZSwgSW50bFBsdXJhbFJ1bGVzKQotRFlOQU1JQ19JU09fU1VC
U1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGludGxSZWxhdGl2ZVRpbWVGb3JtYXRTcGFjZSwgKmlu
dGxSZWxhdGl2ZVRpbWVGb3JtYXRIZWFwQ2VsbFR5cGUsIEludGxSZWxhdGl2ZVRpbWVGb3JtYXQp
Ci1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coaW50bFNlZ21lbnRJdGVy
YXRvclNwYWNlLCAqaW50bFNlZ21lbnRJdGVyYXRvckhlYXBDZWxsVHlwZSwgSW50bFNlZ21lbnRJ
dGVyYXRvcikKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhpbnRsU2Vn
bWVudGVyU3BhY2UsICppbnRsU2VnbWVudGVySGVhcENlbGxUeXBlLCBJbnRsU2VnbWVudGVyKQot
RFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGludGxTZWdtZW50c1NwYWNl
LCAqaW50bFNlZ21lbnRzSGVhcENlbGxUeXBlLCBJbnRsU2VnbWVudHMpCi0jaWYgRU5BQkxFKFdF
QkFTU0VNQkxZKQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGpzVG9X
YXNtSUNDYWxsZWVTcGFjZSwgKmNlbGxIZWFwQ2VsbFR5cGUsIEpTVG9XYXNtSUNDYWxsZWUpCi1E
WU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1cod2ViQXNzZW1ibHlDb2RlQmxv
Y2tTcGFjZSwgKndlYkFzc2VtYmx5Q29kZUJsb2NrSGVhcENlbGxUeXBlLCBKU1dlYkFzc2VtYmx5
Q29kZUJsb2NrKSAvLyBIYXNoOjB4OWFkOTk1Y2QKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklO
RV9NRU1CRVJfU0xPVyh3ZWJBc3NlbWJseUV4Y2VwdGlvblNwYWNlLCAqd2ViQXNzZW1ibHlFeGNl
cHRpb25IZWFwQ2VsbFR5cGUsIEpTV2ViQXNzZW1ibHlFeGNlcHRpb24pCi1EWU5BTUlDX0lTT19T
VUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1cod2ViQXNzZW1ibHlGdW5jdGlvblNwYWNlLCAqd2Vi
QXNzZW1ibHlGdW5jdGlvbkhlYXBDZWxsVHlwZSwgV2ViQXNzZW1ibHlGdW5jdGlvbikgLy8gSGFz
aDoweDhiN2MzMmRiCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1cod2Vi
QXNzZW1ibHlHbG9iYWxTcGFjZSwgKndlYkFzc2VtYmx5R2xvYmFsSGVhcENlbGxUeXBlLCBKU1dl
YkFzc2VtYmx5R2xvYmFsKQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9X
KHdlYkFzc2VtYmx5SW5zdGFuY2VTcGFjZSwgKndlYkFzc2VtYmx5SW5zdGFuY2VIZWFwQ2VsbFR5
cGUsIEpTV2ViQXNzZW1ibHlJbnN0YW5jZSkKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9N
RU1CRVJfU0xPVyh3ZWJBc3NlbWJseU1lbW9yeVNwYWNlLCAqd2ViQXNzZW1ibHlNZW1vcnlIZWFw
Q2VsbFR5cGUsIEpTV2ViQXNzZW1ibHlNZW1vcnkpCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJ
TkVfTUVNQkVSX1NMT1cod2ViQXNzZW1ibHlNb2R1bGVTcGFjZSwgKndlYkFzc2VtYmx5TW9kdWxl
SGVhcENlbGxUeXBlLCBKU1dlYkFzc2VtYmx5TW9kdWxlKQotRFlOQU1JQ19JU09fU1VCU1BBQ0Vf
REVGSU5FX01FTUJFUl9TTE9XKHdlYkFzc2VtYmx5TW9kdWxlUmVjb3JkU3BhY2UsICp3ZWJBc3Nl
bWJseU1vZHVsZVJlY29yZEhlYXBDZWxsVHlwZSwgV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQpCi1E
WU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1cod2ViQXNzZW1ibHlUYWJsZVNw
YWNlLCAqd2ViQXNzZW1ibHlUYWJsZUhlYXBDZWxsVHlwZSwgSlNXZWJBc3NlbWJseVRhYmxlKQot
RFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHdlYkFzc2VtYmx5VGFnU3Bh
Y2UsICp3ZWJBc3NlbWJseVRhZ0hlYXBDZWxsVHlwZSwgSlNXZWJBc3NlbWJseVRhZykKLURZTkFN
SUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh3ZWJBc3NlbWJseVdyYXBwZXJGdW5j
dGlvblNwYWNlLCAqY2VsbEhlYXBDZWxsVHlwZSwgV2ViQXNzZW1ibHlXcmFwcGVyRnVuY3Rpb24p
IC8vIEhhc2g6MHhkNGE1ZmYwMQotI2VuZGlmCi0KLSN1bmRlZiBEWU5BTUlDX0lTT19TVUJTUEFD
RV9ERUZJTkVfTUVNQkVSX1NMT1cKLQotI2RlZmluZSBEWU5BTUlDX1NQQUNFX0FORF9TRVRfREVG
SU5FX01FTUJFUl9TTE9XKG5hbWUsIGhlYXBDZWxsVHlwZSwgdHlwZSkgXAotICAgIElzb1N1YnNw
YWNlKiBWTTo6bmFtZSMjU2xvdygpIFwKLSAgICB7IFwKLSAgICAgICAgQVNTRVJUKCFtXyMjbmFt
ZSk7IFwKLSAgICAgICAgYXV0byBzcGFjZSA9IG1ha2VVbmlxdWU8U3BhY2VBbmRTZXQ+IElTT19T
VUJTUEFDRV9JTklUKGhlYXAsIGhlYXBDZWxsVHlwZSwgdHlwZSk7IFwKLSAgICAgICAgV1RGOjpz
dG9yZVN0b3JlRmVuY2UoKTsgXAotICAgICAgICBtXyMjbmFtZSA9IFdURk1vdmUoc3BhY2UpOyBc
Ci0gICAgICAgIHJldHVybiAmbV8jI25hbWUtPnNwYWNlOyBcCi0gICAgfQotCi1EWU5BTUlDX1NQ
QUNFX0FORF9TRVRfREVGSU5FX01FTUJFUl9TTE9XKGV2YWxFeGVjdXRhYmxlU3BhY2UsICpkZXN0
cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlLCBFdmFsRXhlY3V0YWJsZSkgLy8gSGFzaDoweDk1OGUz
ZTlkCi1EWU5BTUlDX1NQQUNFX0FORF9TRVRfREVGSU5FX01FTUJFUl9TTE9XKG1vZHVsZVByb2dy
YW1FeGVjdXRhYmxlU3BhY2UsICpkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlLCBNb2R1bGVQ
cm9ncmFtRXhlY3V0YWJsZSkgLy8gSGFzaDoweDY1MDZmYTNjCi0KLSN1bmRlZiBEWU5BTUlDX1NQ
QUNFX0FORF9TRVRfREVGSU5FX01FTUJFUl9TTE9XCi0KIEpTQ2VsbCogVk06OnNlbnRpbmVsU2V0
QnVja2V0U2xvdygpCiB7CiAgICAgQVNTRVJUKCFtX3NlbnRpbmVsU2V0QnVja2V0KTsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAkod29ya2luZyBjb3B5KQpAQCAtMjgsMjggKzI4
LDIzIEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiQ2FsbERhdGEuaCIKICNpbmNsdWRl
ICJDYWxsZWVCaXRzLmgiCiAjaW5jbHVkZSAiQ29kZVNwZWNpYWxpemF0aW9uS2luZC5oIgotI2lu
Y2x1ZGUgIkNvbXBsZXRlU3Vic3BhY2UuaCIKICNpbmNsdWRlICJDb25jdXJyZW50SlNMb2NrLmgi
CiAjaW5jbHVkZSAiREZHRG9lc0dDQ2hlY2suaCIKICNpbmNsdWRlICJEZWxldGVBbGxDb2RlRWZm
b3J0LmgiCi0jaW5jbHVkZSAiRGlzYWxsb3dWTUVudHJ5LmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9u
RXZlbnRMb2NhdGlvbi5oIgogI2luY2x1ZGUgIkZ1bmN0aW9uSGFzRXhlY3V0ZWRDYWNoZS5oIgot
I2luY2x1ZGUgIkZ1enplckFnZW50LmgiCiAjaW5jbHVkZSAiSGVhcC5oIgogI2luY2x1ZGUgIklu
dGVncml0eS5oIgogI2luY2x1ZGUgIkludHJpbnNpYy5oIgotI2luY2x1ZGUgIklzb0NlbGxTZXQu
aCIKLSNpbmNsdWRlICJJc29TdWJzcGFjZS5oIgogI2luY2x1ZGUgIkpTQ0pTVmFsdWUuaCIKICNp
bmNsdWRlICJKU0RhdGVNYXRoLmgiCiAjaW5jbHVkZSAiSlNMb2NrLmgiCiAjaW5jbHVkZSAiSlNP
TkF0b21TdHJpbmdDYWNoZS5oIgogI2luY2x1ZGUgIk1hY3JvQXNzZW1ibGVyQ29kZVJlZi5oIgog
I2luY2x1ZGUgIk1pY3JvdGFzay5oIgorI2luY2x1ZGUgIk5hdGl2ZUZ1bmN0aW9uLmgiCiAjaW5j
bHVkZSAiTnVtZXJpY1N0cmluZ3MuaCIKICNpbmNsdWRlICJTbWFsbFN0cmluZ3MuaCIKICNpbmNs
dWRlICJTdHJvbmcuaCIKQEAgLTU4LDEwICs1Myw4IEBACiAjaW5jbHVkZSAiVGh1bmtHZW5lcmF0
b3IuaCIKICNpbmNsdWRlICJWTVRyYXBzLmgiCiAjaW5jbHVkZSAiV2FzbUNvbnRleHQuaCIKLSNp
bmNsdWRlICJXYXRjaHBvaW50LmgiCiAjaW5jbHVkZSA8d3RmL0J1bXBQb2ludGVyQWxsb2NhdG9y
Lmg+CiAjaW5jbHVkZSA8d3RmL0NoZWNrZWRBcml0aG1ldGljLmg+Ci0jaW5jbHVkZSA8d3RmL0Rh
dGVNYXRoLmg+CiAjaW5jbHVkZSA8d3RmL0RlcXVlLmg+CiAjaW5jbHVkZSA8d3RmL0RvdWJseUxp
bmtlZExpc3QuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgpAQCAtNjksMTEgKzYyLDkgQEAK
ICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5j
bHVkZSA8d3RmL1NldEZvclNjb3BlLmg+Ci0jaW5jbHVkZSA8d3RmL1N0YWNrQm91bmRzLmg+CiAj
aW5jbHVkZSA8d3RmL1N0YWNrUG9pbnRlci5oPgogI2luY2x1ZGUgPHd0Zi9TdG9wd2F0Y2guaD4K
ICNpbmNsdWRlIDx3dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQuaD4KLSNpbmNsdWRlIDx3dGYvVGhy
ZWFkU3BlY2lmaWMuaD4KICNpbmNsdWRlIDx3dGYvVW5pcXVlQXJyYXkuaD4KICNpbmNsdWRlIDx3
dGYvdGV4dC9TeW1ib2xSZWdpc3RyeS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5o
PgpAQCAtODEsMTAgKzcyLDYgQEAKICNpbmNsdWRlIDx3dGYvTGlzdEhhc2hTZXQuaD4KICNlbmRp
ZgogCi0jaWYgRU5BQkxFKEVYQ0VQVElPTl9TQ09QRV9WRVJJRklDQVRJT04pCi0jaW5jbHVkZSA8
d3RmL1N0YWNrVHJhY2UuaD4KLSNlbmRpZgotCiAvLyBFbmFibGUgdGhlIE9iamVjdGl2ZS1DIEFQ
SSBmb3IgcGxhdGZvcm1zIHdpdGggYSBtb2Rlcm4gcnVudGltZS4gVGhpcyBoYXMgdG8gbWF0Y2gg
ZXhhY3RseSB3aGF0IHdlCiAvLyBoYXZlIGluIEpTQmFzZS5oLgogI2lmICFkZWZpbmVkKEpTQ19P
QkpDX0FQSV9FTkFCTEVEKQpAQCAtOTgsMTYgKzg1LDE3IEBACiBuYW1lc3BhY2UgV1RGIHsKIGNs
YXNzIFJ1bkxvb3A7CiBjbGFzcyBTaW1wbGVTdGF0czsKK2NsYXNzIFN0YWNrVHJhY2U7CiB9IC8v
IG5hbWVzcGFjZSBXVEYKIHVzaW5nIFdURjo6U2ltcGxlU3RhdHM7Cit1c2luZyBXVEY6OlN0YWNr
VHJhY2U7CiAKIG5hbWVzcGFjZSBKU0MgewogCi1jbGFzcyBCYXNpY0Jsb2NrTG9jYXRpb247Citj
bGFzcyBBcmdMaXN0OwogY2xhc3MgQnVpbHRpbkV4ZWN1dGFibGVzOwogY2xhc3MgQnl0ZWNvZGVJ
bnRyaW5zaWNSZWdpc3RyeTsKIGNsYXNzIENhbGxGcmFtZTsKLWNsYXNzIENhbGxMaW5rSW5mbzsK
IGVudW0gY2xhc3MgQ2FsbE1vZGU7CiBzdHJ1Y3QgQ2hlY2twb2ludE9TUkV4aXRTaWRlU3RhdGU7
CiBjbGFzcyBDb2RlQmxvY2s7CkBAIC0xMTYsMTAxICsxMDQsNDEgQEAgY2xhc3MgQ29tbW9uSWRl
bnRpZmllcnM7CiBjbGFzcyBDb21wYWN0VERaRW52aXJvbm1lbnRNYXA7CiBjbGFzcyBDb25zZXJ2
YXRpdmVSb290czsKIGNsYXNzIENvbnRyb2xGbG93UHJvZmlsZXI7Ci1jbGFzcyBDdXN0b21HZXR0
ZXJTZXR0ZXI7Ci1jbGFzcyBET01BdHRyaWJ1dGVHZXR0ZXJTZXR0ZXI7Ci1jbGFzcyBEYXRlSW5z
dGFuY2U7Ci1jbGFzcyBFcnJvckluc3RhbmNlOwogY2xhc3MgRXhjZXB0aW9uOwogY2xhc3MgRXhj
ZXB0aW9uU2NvcGU7Ci1jbGFzcyBGYXN0TWFsbG9jQWxpZ25lZE1lbW9yeUFsbG9jYXRvcjsKLWNs
YXNzIEdpZ2FjYWdlQWxpZ25lZE1lbW9yeUFsbG9jYXRvcjsKLWNsYXNzIEhhbmRsZVN0YWNrOwor
Y2xhc3MgRnV6emVyQWdlbnQ7CiBjbGFzcyBIYXNPd25Qcm9wZXJ0eUNhY2hlOwogY2xhc3MgSGVh
cEFuYWx5emVyOwogY2xhc3MgSGVhcFByb2ZpbGVyOwotY2xhc3MgSWRlbnRpZmllcjsKIGNsYXNz
IEludGVycHJldGVyOwogY2xhc3MgSW50bENhY2hlOwotY2xhc3MgSW50bENvbGxhdG9yOwotY2xh
c3MgSW50bERhdGVUaW1lRm9ybWF0OwotY2xhc3MgSW50bERpc3BsYXlOYW1lczsKLWNsYXNzIElu
dGxMaXN0Rm9ybWF0OwotY2xhc3MgSW50bExvY2FsZTsKLWNsYXNzIEludGxOdW1iZXJGb3JtYXQ7
Ci1jbGFzcyBJbnRsUGx1cmFsUnVsZXM7Ci1jbGFzcyBJbnRsUmVsYXRpdmVUaW1lRm9ybWF0Owot
Y2xhc3MgSW50bFNlZ21lbnRJdGVyYXRvcjsKLWNsYXNzIEludGxTZWdtZW50ZXI7Ci1jbGFzcyBJ
bnRsU2VnbWVudHM7Ci1jbGFzcyBKU0FQSUdsb2JhbE9iamVjdDsKLWNsYXNzIEpTQVBJV3JhcHBl
ckdsb2JhbE9iamVjdDsKLWNsYXNzIEpTQVBJV3JhcHBlck9iamVjdDsKLWNsYXNzIEpTQ0NhbGxi
YWNrRnVuY3Rpb247Ci1jbGFzcyBKU0NhbGxiYWNrQ29uc3RydWN0b3I7CiBjbGFzcyBKU0Rlc3Ry
dWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZTsKIGNsYXNzIEpTR2xvYmFsT2JqZWN0OwotY2xhc3Mg
SlNHbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQ7Ci1jbGFzcyBKU01vZHVsZU5hbWVzcGFjZU9iamVj
dDsKLWNsYXNzIEpTTW9kdWxlUmVjb3JkOwotY2xhc3MgSlNOYXRpdmVTdGRGdW5jdGlvbjsKLWNs
YXNzIEpTTm9uRmluYWxPYmplY3Q7CiBjbGFzcyBKU09iamVjdDsKIGNsYXNzIEpTUHJvbWlzZTsK
IGNsYXNzIEpTUHJvcGVydHlOYW1lRW51bWVyYXRvcjsKLWNsYXNzIEpTUnVuTG9vcFRpbWVyOwot
Y2xhc3MgSlNXZWFrTWFwOwotY2xhc3MgSlNXZWFrU2V0OwotY2xhc3MgSlNXZWJBc3NlbWJseUNv
ZGVCbG9jazsKLWNsYXNzIEpTV2ViQXNzZW1ibHlHbG9iYWw7Ci1jbGFzcyBKU1dlYkFzc2VtYmx5
SW5zdGFuY2U7Ci1jbGFzcyBKU1dlYkFzc2VtYmx5TWVtb3J5OwotY2xhc3MgSlNXZWJBc3NlbWJs
eU1vZHVsZTsKLWNsYXNzIEpTV2ViQXNzZW1ibHlUYWJsZTsKIGNsYXNzIEpJVFNpemVTdGF0aXN0
aWNzOwogY2xhc3MgSklUVGh1bmtzOwotY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogY2xh
c3MgTmF0aXZlRXhlY3V0YWJsZTsKLWNsYXNzIE9iakNDYWxsYmFja0Z1bmN0aW9uOwogY2xhc3Mg
RGVmZXJyZWRXb3JrVGltZXI7CiBjbGFzcyBSZWdFeHA7CiBjbGFzcyBSZWdFeHBDYWNoZTsKIGNs
YXNzIFJlZ2lzdGVyOwotY2xhc3MgUmVnaXN0ZXJBdE9mZnNldExpc3Q7CiAjaWYgRU5BQkxFKFNB
TVBMSU5HX1BST0ZJTEVSKQogY2xhc3MgU2FtcGxpbmdQcm9maWxlcjsKICNlbmRpZgogY2xhc3Mg
U2hhZG93Q2hpY2tlbjsKIGNsYXNzIFNoYXJlZEpJVFN0dWJTZXQ7Ci1jbGFzcyBTY3JpcHRFeGVj
dXRhYmxlOwogY2xhc3MgU291cmNlUHJvdmlkZXI7CiBjbGFzcyBTb3VyY2VQcm92aWRlckNhY2hl
OwotY2xhc3MgU3RhY2tGcmFtZTsKIGNsYXNzIFN0cnVjdHVyZTsKLSNpZiBFTkFCTEUoUkVHRVhQ
X1RSQUNJTkcpCi1jbGFzcyBSZWdFeHA7Ci0jZW5kaWYKIGNsYXNzIFN5bWJvbDsKLWNsYXNzIFRl
bXBvcmFsRHVyYXRpb247Ci1jbGFzcyBUZW1wb3JhbEluc3RhbnQ7CiBjbGFzcyBUeXBlZEFycmF5
Q29udHJvbGxlcjsKLWNsYXNzIFVubGlua2VkQ29kZUJsb2NrOwotY2xhc3MgVW5saW5rZWRFdmFs
Q29kZUJsb2NrOwotY2xhc3MgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU7Ci1jbGFzcyBVbmxp
bmtlZFByb2dyYW1Db2RlQmxvY2s7Ci1jbGFzcyBVbmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxv
Y2s7Ci1jbGFzcyBWaXJ0dWFsUmVnaXN0ZXI7CiBjbGFzcyBWTUVudHJ5U2NvcGU7Ci1jbGFzcyBU
ZW1wb3JhbENhbGVuZGFyOwotY2xhc3MgVGVtcG9yYWxQbGFpblRpbWU7Ci1jbGFzcyBUZW1wb3Jh
bFRpbWVab25lOwotY2xhc3MgVG9wTGV2ZWxHbG9iYWxPYmplY3RTY29wZTsKIGNsYXNzIFR5cGVQ
cm9maWxlcjsKIGNsYXNzIFR5cGVQcm9maWxlckxvZzsKIGNsYXNzIFdhdGNoZG9nOwotY2xhc3Mg
V2F0Y2hwb2ludDsKIGNsYXNzIFdhdGNocG9pbnRTZXQ7Ci1jbGFzcyBXZWJBc3NlbWJseUZ1bmN0
aW9uOwotY2xhc3MgV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQ7CiAKICNpZiBFTkFCTEUoREZHX0pJ
VCkgJiYgQVNTRVJUX0VOQUJMRUQKICNkZWZpbmUgRU5BQkxFX0RGR19ET0VTX0dDX1ZBTElEQVRJ
T04gMQpAQCAtMjIwLDEwICsxNDgsNiBAQCBjbGFzcyBXZWJBc3NlbWJseU1vZHVsZVJlY29yZDsK
IAogY29uc3RleHByIGJvb2wgdmFsaWRhdGVERkdEb2VzR0MgPSBFTkFCTEVfREZHX0RPRVNfR0Nf
VkFMSURBVElPTjsKIAotY2xhc3MgSXNvSGVhcENlbGxUeXBlOwotdGVtcGxhdGU8dHlwZW5hbWUg
Q2VsbFR5cGU+IGNsYXNzIElzb0lubGluZWRIZWFwQ2VsbFR5cGU7Ci10ZW1wbGF0ZTx0eXBlbmFt
ZSBQYXJlbnQ+IGNsYXNzIEpTQ2FsbGJhY2tPYmplY3Q7Ci0KICNpZiBFTkFCTEUoRlRMX0pJVCkK
IG5hbWVzcGFjZSBGVEwgewogY2xhc3MgVGh1bmtzOwpAQCAtMjM1LDE0ICsxNTksOSBAQCBjbGFz
cyBEYXRhYmFzZTsKIG5hbWVzcGFjZSBET01KSVQgewogY2xhc3MgU2lnbmF0dXJlOwogfQotbmFt
ZXNwYWNlIFlhcnIgewotY2xhc3MgTWF0Y2hpbmdDb250ZXh0SG9sZGVyOwotfQogCiBzdHJ1Y3Qg
RW50cnlGcmFtZTsKLXN0cnVjdCBIYXNoVGFibGU7CiBzdHJ1Y3QgSW5zdHJ1Y3Rpb247Ci1zdHJ1
Y3QgVmFsdWVQcm9maWxlOwogCiBjbGFzcyBRdWV1ZWRUYXNrIHsKICAgICBXVEZfTUFLRV9OT05D
T1BZQUJMRShRdWV1ZWRUYXNrKTsKQEAgLTI2MSw4ICsxODAsNiBAQCBwcml2YXRlOgogICAgIFJl
ZjxNaWNyb3Rhc2s+IG1fbWljcm90YXNrOwogfTsKIAotY2xhc3MgQ29uc2VydmF0aXZlUm9vdHM7
Ci0KIERFQ0xBUkVfQUxMT0NBVE9SX1dJVEhfSEVBUF9JREVOVElGSUVSKFZNKTsKIAogI2lmIENP
TVBJTEVSKE1TVkMpCkBAIC0zNTcsMTEgKzI3NCw3IEBAIHB1YmxpYzoKICNlbmRpZgogCiAgICAg
RnV6emVyQWdlbnQqIGZ1enplckFnZW50KCkgY29uc3QgeyByZXR1cm4gbV9mdXp6ZXJBZ2VudC5n
ZXQoKTsgfQotICAgIHZvaWQgc2V0RnV6emVyQWdlbnQoc3RkOjp1bmlxdWVfcHRyPEZ1enplckFn
ZW50PiYmIGZ1enplckFnZW50KQotICAgIHsKLSAgICAgICAgUkVMRUFTRV9BU1NFUlRfV0lUSF9N
RVNTQUdFKCFtX2Z1enplckFnZW50LCAiT25seSBvbmUgRnV6emVyQWdlbnQgY2FuIGJlIHNwZWNp
ZmllZCBhdCBhIHRpbWUuIik7Ci0gICAgICAgIG1fZnV6emVyQWdlbnQgPSBXVEZNb3ZlKGZ1enpl
ckFnZW50KTsKLSAgICB9CisgICAgdm9pZCBzZXRGdXp6ZXJBZ2VudChzdGQ6OnVuaXF1ZV9wdHI8
RnV6emVyQWdlbnQ+JiYgZnV6emVyQWdlbnQpOwogCiAgICAgc3RhdGljIHVuc2lnbmVkIG51bWJl
ck9mSURzKCkgeyByZXR1cm4gc19udW1iZXJPZklEcy5sb2FkKCk7IH0KICAgICB1bnNpZ25lZCBp
ZCgpIGNvbnN0IHsgcmV0dXJuIG1faWQ7IH0KQEAgLTQxMywxNDUgKzMyNiw1OCBAQCBwcml2YXRl
OgogCiBwdWJsaWM6CiAgICAgSGVhcCBoZWFwOwotICAgIAotICAgIHN0ZDo6dW5pcXVlX3B0cjxG
YXN0TWFsbG9jQWxpZ25lZE1lbW9yeUFsbG9jYXRvcj4gZmFzdE1hbGxvY0FsbG9jYXRvcjsKLSAg
ICBzdGQ6OnVuaXF1ZV9wdHI8R2lnYWNhZ2VBbGlnbmVkTWVtb3J5QWxsb2NhdG9yPiBwcmltaXRp
dmVHaWdhY2FnZUFsbG9jYXRvcjsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8R2lnYWNhZ2VBbGlnbmVk
TWVtb3J5QWxsb2NhdG9yPiBqc1ZhbHVlR2lnYWNhZ2VBbGxvY2F0b3I7Ci0KLSAgICBzdGQ6OnVu
aXF1ZV9wdHI8SGVhcENlbGxUeXBlPiBhdXhpbGlhcnlIZWFwQ2VsbFR5cGU7Ci0gICAgc3RkOjp1
bmlxdWVfcHRyPEhlYXBDZWxsVHlwZT4gaW1tdXRhYmxlQnV0dGVyZmx5SGVhcENlbGxUeXBlOwot
ICAgIHN0ZDo6dW5pcXVlX3B0cjxIZWFwQ2VsbFR5cGU+IGNlbGxIZWFwQ2VsbFR5cGU7Ci0gICAg
c3RkOjp1bmlxdWVfcHRyPEhlYXBDZWxsVHlwZT4gZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlw
ZTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SXNvSGVhcENlbGxUeXBlPiBhcGlHbG9iYWxPYmplY3RI
ZWFwQ2VsbFR5cGU7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPElzb0hlYXBDZWxsVHlwZT4gY2FsbGJh
Y2tDb25zdHJ1Y3RvckhlYXBDZWxsVHlwZTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SXNvSGVhcENl
bGxUeXBlPiBjYWxsYmFja0dsb2JhbE9iamVjdEhlYXBDZWxsVHlwZTsKLSAgICBzdGQ6OnVuaXF1
ZV9wdHI8SXNvSGVhcENlbGxUeXBlPiBjYWxsYmFja09iamVjdEhlYXBDZWxsVHlwZTsKLSAgICBz
dGQ6OnVuaXF1ZV9wdHI8SXNvSGVhcENlbGxUeXBlPiBjdXN0b21HZXR0ZXJGdW5jdGlvbkhlYXBD
ZWxsVHlwZTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SXNvSGVhcENlbGxUeXBlPiBjdXN0b21TZXR0
ZXJGdW5jdGlvbkhlYXBDZWxsVHlwZTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SXNvSGVhcENlbGxU
eXBlPiBkYXRlSW5zdGFuY2VIZWFwQ2VsbFR5cGU7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPElzb0hl
YXBDZWxsVHlwZT4gZXJyb3JJbnN0YW5jZUhlYXBDZWxsVHlwZTsKLSAgICBzdGQ6OnVuaXF1ZV9w
dHI8SXNvSGVhcENlbGxUeXBlPiBmaW5hbGl6YXRpb25SZWdpc3RyeUNlbGxUeXBlOwotICAgIHN0
ZDo6dW5pcXVlX3B0cjxJc29IZWFwQ2VsbFR5cGU+IGdsb2JhbExleGljYWxFbnZpcm9ubWVudEhl
YXBDZWxsVHlwZTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SXNvSGVhcENlbGxUeXBlPiBnbG9iYWxP
YmplY3RIZWFwQ2VsbFR5cGU7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPElzb0hlYXBDZWxsVHlwZT4g
aW5qZWN0ZWRTY3JpcHRIb3N0U3BhY2VIZWFwQ2VsbFR5cGU7Ci0gICAgc3RkOjp1bmlxdWVfcHRy
PElzb0hlYXBDZWxsVHlwZT4gamF2YVNjcmlwdENhbGxGcmFtZUhlYXBDZWxsVHlwZTsKLSAgICBz
dGQ6OnVuaXF1ZV9wdHI8SXNvSGVhcENlbGxUeXBlPiBqc01vZHVsZVJlY29yZEhlYXBDZWxsVHlw
ZTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SXNvSGVhcENlbGxUeXBlPiBtb2R1bGVOYW1lc3BhY2VP
YmplY3RIZWFwQ2VsbFR5cGU7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPElzb0hlYXBDZWxsVHlwZT4g
bmF0aXZlU3RkRnVuY3Rpb25IZWFwQ2VsbFR5cGU7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPElzb0lu
bGluZWRIZWFwQ2VsbFR5cGU8SlNTdHJpbmc+PiBzdHJpbmdIZWFwQ2VsbFR5cGU7Ci0gICAgc3Rk
Ojp1bmlxdWVfcHRyPElzb0hlYXBDZWxsVHlwZT4gd2Vha01hcEhlYXBDZWxsVHlwZTsKLSAgICBz
dGQ6OnVuaXF1ZV9wdHI8SXNvSGVhcENlbGxUeXBlPiB3ZWFrU2V0SGVhcENlbGxUeXBlOwotICAg
IHN0ZDo6dW5pcXVlX3B0cjxKU0Rlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZT4gZGVzdHJ1
Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlOwotI2lmIEpTQ19PQkpDX0FQSV9FTkFCTEVECi0gICAg
c3RkOjp1bmlxdWVfcHRyPElzb0hlYXBDZWxsVHlwZT4gYXBpV3JhcHBlck9iamVjdEhlYXBDZWxs
VHlwZTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SXNvSGVhcENlbGxUeXBlPiBvYmpDQ2FsbGJhY2tG
dW5jdGlvbkhlYXBDZWxsVHlwZTsKLSNlbmRpZgotI2lmZGVmIEpTQ19HTElCX0FQSV9FTkFCTEVE
Ci0gICAgc3RkOjp1bmlxdWVfcHRyPElzb0hlYXBDZWxsVHlwZT4gYXBpV3JhcHBlck9iamVjdEhl
YXBDZWxsVHlwZTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SXNvSGVhcENlbGxUeXBlPiBjYWxsYmFj
a0FQSVdyYXBwZXJHbG9iYWxPYmplY3RIZWFwQ2VsbFR5cGU7Ci0gICAgc3RkOjp1bmlxdWVfcHRy
PElzb0hlYXBDZWxsVHlwZT4ganNjQ2FsbGJhY2tGdW5jdGlvbkhlYXBDZWxsVHlwZTsKLSNlbmRp
ZgotICAgIHN0ZDo6dW5pcXVlX3B0cjxJc29IZWFwQ2VsbFR5cGU+IGludGxDb2xsYXRvckhlYXBD
ZWxsVHlwZTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SXNvSGVhcENlbGxUeXBlPiBpbnRsRGF0ZVRp
bWVGb3JtYXRIZWFwQ2VsbFR5cGU7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPElzb0hlYXBDZWxsVHlw
ZT4gaW50bERpc3BsYXlOYW1lc0hlYXBDZWxsVHlwZTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SXNv
SGVhcENlbGxUeXBlPiBpbnRsTGlzdEZvcm1hdEhlYXBDZWxsVHlwZTsKLSAgICBzdGQ6OnVuaXF1
ZV9wdHI8SXNvSGVhcENlbGxUeXBlPiBpbnRsTG9jYWxlSGVhcENlbGxUeXBlOwotICAgIHN0ZDo6
dW5pcXVlX3B0cjxJc29IZWFwQ2VsbFR5cGU+IGludGxOdW1iZXJGb3JtYXRIZWFwQ2VsbFR5cGU7
Ci0gICAgc3RkOjp1bmlxdWVfcHRyPElzb0hlYXBDZWxsVHlwZT4gaW50bFBsdXJhbFJ1bGVzSGVh
cENlbGxUeXBlOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxJc29IZWFwQ2VsbFR5cGU+IGludGxSZWxh
dGl2ZVRpbWVGb3JtYXRIZWFwQ2VsbFR5cGU7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPElzb0hlYXBD
ZWxsVHlwZT4gaW50bFNlZ21lbnRJdGVyYXRvckhlYXBDZWxsVHlwZTsKLSAgICBzdGQ6OnVuaXF1
ZV9wdHI8SXNvSGVhcENlbGxUeXBlPiBpbnRsU2VnbWVudGVySGVhcENlbGxUeXBlOwotICAgIHN0
ZDo6dW5pcXVlX3B0cjxJc29IZWFwQ2VsbFR5cGU+IGludGxTZWdtZW50c0hlYXBDZWxsVHlwZTsK
LSNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCi0gICAgc3RkOjp1bmlxdWVfcHRyPElzb0hlYXBDZWxs
VHlwZT4gd2ViQXNzZW1ibHlDb2RlQmxvY2tIZWFwQ2VsbFR5cGU7Ci0gICAgc3RkOjp1bmlxdWVf
cHRyPElzb0hlYXBDZWxsVHlwZT4gd2ViQXNzZW1ibHlFeGNlcHRpb25IZWFwQ2VsbFR5cGU7Ci0g
ICAgc3RkOjp1bmlxdWVfcHRyPElzb0hlYXBDZWxsVHlwZT4gd2ViQXNzZW1ibHlGdW5jdGlvbkhl
YXBDZWxsVHlwZTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SXNvSGVhcENlbGxUeXBlPiB3ZWJBc3Nl
bWJseUdsb2JhbEhlYXBDZWxsVHlwZTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SXNvSGVhcENlbGxU
eXBlPiB3ZWJBc3NlbWJseUluc3RhbmNlSGVhcENlbGxUeXBlOwotICAgIHN0ZDo6dW5pcXVlX3B0
cjxJc29IZWFwQ2VsbFR5cGU+IHdlYkFzc2VtYmx5TWVtb3J5SGVhcENlbGxUeXBlOwotICAgIHN0
ZDo6dW5pcXVlX3B0cjxJc29IZWFwQ2VsbFR5cGU+IHdlYkFzc2VtYmx5TW9kdWxlSGVhcENlbGxU
eXBlOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxJc29IZWFwQ2VsbFR5cGU+IHdlYkFzc2VtYmx5TW9k
dWxlUmVjb3JkSGVhcENlbGxUeXBlOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxJc29IZWFwQ2VsbFR5
cGU+IHdlYkFzc2VtYmx5VGFibGVIZWFwQ2VsbFR5cGU7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPElz
b0hlYXBDZWxsVHlwZT4gd2ViQXNzZW1ibHlUYWdIZWFwQ2VsbFR5cGU7Ci0jZW5kaWYKKworICAg
IGNvbnN0IEhlYXBDZWxsVHlwZSYgY2VsbEhlYXBDZWxsVHlwZSgpIHsgcmV0dXJuIGhlYXAuY2Vs
bEhlYXBDZWxsVHlwZTsgfQorICAgIGNvbnN0IEpTRGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxU
eXBlJiBkZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSB7IHJldHVybiBoZWFwLmRlc3Ry
dWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZTsgfTsKIAogI2lmIEVOQUJMRShKSVQpCiAgICAgc3Rk
Ojp1bmlxdWVfcHRyPEpJVFNpemVTdGF0aXN0aWNzPiBqaXRTaXplU3RhdGlzdGljczsKICNlbmRp
ZgogICAgIAotICAgIENvbXBsZXRlU3Vic3BhY2UgcHJpbWl0aXZlR2lnYWNhZ2VBdXhpbGlhcnlT
cGFjZTsgLy8gVHlwZWQgYXJyYXlzLCBzdHJpbmdzLCBiaXR2ZWN0b3JzLCBldGMgZ28gaGVyZS4K
LSAgICBDb21wbGV0ZVN1YnNwYWNlIGpzVmFsdWVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlOyAvLyBC
dXR0ZXJmbGllcywgYXJyYXlzIG9mIEpTVmFsdWVzLCBldGMgZ28gaGVyZS4KLSAgICBDb21wbGV0
ZVN1YnNwYWNlIGltbXV0YWJsZUJ1dHRlcmZseUpTVmFsdWVHaWdhY2FnZUF1eGlsaWFyeVNwYWNl
OyAvLyBKU0ltbXV0YWJsZUJ1dHRlcmZseSBnb2VzIGhlcmUuCi0KLSAgICAvLyBXZSBtYWtlIGNy
b3NzLWN1dHRpbmcgYXNzdW1wdGlvbnMgYWJvdXQgdHlwZWQgYXJyYXlzIGJlaW5nIGluIHRoZSBw
cmltaXRpdmUgR2lnYWNhZ2UgYW5kIGJ1dHRlcmZsaWVzCi0gICAgLy8gYmVpbmcgaW4gdGhlIEpT
VmFsdWUgZ2lnYWNhZ2UuIEZvciBzb21lIHR5cGVzLCBpdCdzIHN1cGVyIG9idmlvdXMgd2hlcmUg
dGhleSBzaG91bGQgZ28sIGFuZCBzbyB3ZQotICAgIC8vIGNhbiBoYXJkY29kZSB0aGF0IGZhY3Qu
IEJ1dCBzb21ldGltZXMgaXQncyBub3QgY2xlYXIsIHNvIHdlIGFic3RyYWN0IGl0IGJ5IGhhdmlu
ZyBhIEdpZ2FjYWdlOjpLaW5kCi0gICAgLy8gY29uc3RhbnQgc29tZXdoZXJlLgotICAgIC8vIEZJ
WE1FOiBNYXliZSBpdCB3b3VsZCBiZSBiZXR0ZXIgaWYgZXZlcnlvbmUgYWJzdHJhY3RlZCB0aGlz
PwotICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzUyNDgK
LSAgICBBTFdBWVNfSU5MSU5FIENvbXBsZXRlU3Vic3BhY2UmIGdpZ2FjYWdlQXV4aWxpYXJ5U3Bh
Y2UoR2lnYWNhZ2U6OktpbmQga2luZCkKLSAgICB7Ci0gICAgICAgIHN3aXRjaCAoa2luZCkgewot
ICAgICAgICBjYXNlIEdpZ2FjYWdlOjpQcmltaXRpdmU6Ci0gICAgICAgICAgICByZXR1cm4gcHJp
bWl0aXZlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZTsKLSAgICAgICAgY2FzZSBHaWdhY2FnZTo6SlNW
YWx1ZToKLSAgICAgICAgICAgIHJldHVybiBqc1ZhbHVlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZTsK
LSAgICAgICAgY2FzZSBHaWdhY2FnZTo6TnVtYmVyT2ZLaW5kczoKLSAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICB9Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAg
ICAgIHJldHVybiBwcmltaXRpdmVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlOwotICAgIH0KLSAgICAK
LSAgICAvLyBXaGVuZXZlciBwb3NzaWJsZSwgdXNlIHN1YnNwYWNlRm9yPENlbGxUeXBlPih2bSkg
dG8gZ2V0IG9uZSBvZiB0aGVzZSBzdWJzcGFjZXMuCi0gICAgQ29tcGxldGVTdWJzcGFjZSBjZWxs
U3BhY2U7Ci0gICAgQ29tcGxldGVTdWJzcGFjZSB2YXJpYWJsZVNpemVkQ2VsbFNwYWNlOyAvLyBG
SVhNRTogVGhpcyBzcGFjZSBpcyBwcm9ibGVtYXRpYyBiZWNhdXNlIHdlIGhhdmUgdGhpbmdzIGlu
IGhlcmUgbGlrZSBEaXJlY3RBcmd1bWVudHMgYW5kIFNjb3BlZEFyZ3VtZW50czsgdGhvc2Ugc2hv
dWxkIGJlIHNwbGl0IGludG8gSlNWYWx1ZU9PQiBjZWxscyBhbmQgSlNWYWx1ZVN0cmljdCBhdXhp
bGlhcmllcy4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4Mjg1OAot
ICAgIENvbXBsZXRlU3Vic3BhY2UgZGVzdHJ1Y3RpYmxlT2JqZWN0U3BhY2U7Ci0gICAgCi0gICAg
SXNvU3Vic3BhY2UgYXJyYXlTcGFjZTsKLSAgICBJc29TdWJzcGFjZSBiaWdJbnRTcGFjZTsKLSAg
ICBJc29TdWJzcGFjZSBjYWxsZWVTcGFjZTsKLSAgICBJc29TdWJzcGFjZSBjbG9uZWRBcmd1bWVu
dHNTcGFjZTsKLSAgICBJc29TdWJzcGFjZSBjdXN0b21HZXR0ZXJTZXR0ZXJTcGFjZTsKLSAgICBJ
c29TdWJzcGFjZSBkYXRlSW5zdGFuY2VTcGFjZTsKLSAgICBJc29TdWJzcGFjZSBkb21BdHRyaWJ1
dGVHZXR0ZXJTZXR0ZXJTcGFjZTsKLSAgICBJc29TdWJzcGFjZSBleGNlcHRpb25TcGFjZTsKLSAg
ICBJc29TdWJzcGFjZSBleGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlU3BhY2U7Ci0gICAgSXNvU3Vi
c3BhY2UgZnVuY3Rpb25TcGFjZTsKLSAgICBJc29TdWJzcGFjZSBnZXR0ZXJTZXR0ZXJTcGFjZTsK
LSAgICBJc29TdWJzcGFjZSBnbG9iYWxMZXhpY2FsRW52aXJvbm1lbnRTcGFjZTsKLSAgICBJc29T
dWJzcGFjZSBpbnRlcm5hbEZ1bmN0aW9uU3BhY2U7Ci0gICAgSXNvU3Vic3BhY2UganNQcm94eVNw
YWNlOwotICAgIElzb1N1YnNwYWNlIG5hdGl2ZUV4ZWN1dGFibGVTcGFjZTsKLSAgICBJc29TdWJz
cGFjZSBudW1iZXJPYmplY3RTcGFjZTsKLSAgICBJc29TdWJzcGFjZSBwbGFpbk9iamVjdFNwYWNl
OwotICAgIElzb1N1YnNwYWNlIHByb21pc2VTcGFjZTsKLSAgICBJc29TdWJzcGFjZSBwcm9wZXJ0
eU5hbWVFbnVtZXJhdG9yU3BhY2U7Ci0gICAgSXNvU3Vic3BhY2UgcHJvcGVydHlUYWJsZVNwYWNl
OwotICAgIElzb1N1YnNwYWNlIHJlZ0V4cFNwYWNlOwotICAgIElzb1N1YnNwYWNlIHJlZ0V4cE9i
amVjdFNwYWNlOwotICAgIElzb1N1YnNwYWNlIHJvcGVTdHJpbmdTcGFjZTsKLSAgICBJc29TdWJz
cGFjZSBzY29wZWRBcmd1bWVudHNTcGFjZTsKLSAgICBJc29TdWJzcGFjZSBzcGFyc2VBcnJheVZh
bHVlTWFwU3BhY2U7Ci0gICAgSXNvU3Vic3BhY2Ugc3RyaW5nU3BhY2U7Ci0gICAgSXNvU3Vic3Bh
Y2Ugc3RyaW5nT2JqZWN0U3BhY2U7Ci0gICAgSXNvU3Vic3BhY2Ugc3RydWN0dXJlQ2hhaW5TcGFj
ZTsKLSAgICBJc29TdWJzcGFjZSBzdHJ1Y3R1cmVSYXJlRGF0YVNwYWNlOwotICAgIElzb1N1YnNw
YWNlIHN0cnVjdHVyZVNwYWNlOwotICAgIElzb1N1YnNwYWNlIGJyYW5kZWRTdHJ1Y3R1cmVTcGFj
ZTsKLSAgICBJc29TdWJzcGFjZSBzeW1ib2xUYWJsZVNwYWNlOworICAgIEFMV0FZU19JTkxJTkUg
Q29tcGxldGVTdWJzcGFjZSYgcHJpbWl0aXZlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZSgpIHsgcmV0
dXJuIGhlYXAucHJpbWl0aXZlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZTsgfQorICAgIEFMV0FZU19J
TkxJTkUgQ29tcGxldGVTdWJzcGFjZSYganNWYWx1ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UoKSB7
IHJldHVybiBoZWFwLmpzVmFsdWVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlOyB9CisgICAgQUxXQVlT
X0lOTElORSBDb21wbGV0ZVN1YnNwYWNlJiBpbW11dGFibGVCdXR0ZXJmbHlKU1ZhbHVlR2lnYWNh
Z2VBdXhpbGlhcnlTcGFjZSgpIHsgcmV0dXJuIGhlYXAuaW1tdXRhYmxlQnV0dGVyZmx5SlNWYWx1
ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2U7IH0KKyAgICBBTFdBWVNfSU5MSU5FIENvbXBsZXRlU3Vi
c3BhY2UmIGdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UoR2lnYWNhZ2U6OktpbmQga2luZCkgeyByZXR1
cm4gaGVhcC5naWdhY2FnZUF1eGlsaWFyeVNwYWNlKGtpbmQpOyB9CisgICAgQUxXQVlTX0lOTElO
RSBDb21wbGV0ZVN1YnNwYWNlJiBjZWxsU3BhY2UoKSB7IHJldHVybiBoZWFwLmNlbGxTcGFjZTsg
fQorICAgIEFMV0FZU19JTkxJTkUgQ29tcGxldGVTdWJzcGFjZSYgdmFyaWFibGVTaXplZENlbGxT
cGFjZSgpIHsgcmV0dXJuIGhlYXAudmFyaWFibGVTaXplZENlbGxTcGFjZTsgfQorICAgIEFMV0FZ
U19JTkxJTkUgQ29tcGxldGVTdWJzcGFjZSYgZGVzdHJ1Y3RpYmxlT2JqZWN0U3BhY2UoKSB7IHJl
dHVybiBoZWFwLmRlc3RydWN0aWJsZU9iamVjdFNwYWNlOyB9CisKKyAgICBBTFdBWVNfSU5MSU5F
IElzb1N1YnNwYWNlJiBhcnJheVNwYWNlKCkgeyByZXR1cm4gaGVhcC5hcnJheVNwYWNlOyB9Cisg
ICAgQUxXQVlTX0lOTElORSBJc29TdWJzcGFjZSYgYmlnSW50U3BhY2UoKSB7IHJldHVybiBoZWFw
LmJpZ0ludFNwYWNlOyB9CisgICAgQUxXQVlTX0lOTElORSBJc29TdWJzcGFjZSYgY2FsbGVlU3Bh
Y2UoKSB7IHJldHVybiBoZWFwLmNhbGxlZVNwYWNlOyB9CisgICAgQUxXQVlTX0lOTElORSBJc29T
dWJzcGFjZSYgY2xvbmVkQXJndW1lbnRzU3BhY2UoKSB7IHJldHVybiBoZWFwLmNsb25lZEFyZ3Vt
ZW50c1NwYWNlOyB9CisgICAgQUxXQVlTX0lOTElORSBJc29TdWJzcGFjZSYgY3VzdG9tR2V0dGVy
U2V0dGVyU3BhY2UoKSB7IHJldHVybiBoZWFwLmN1c3RvbUdldHRlclNldHRlclNwYWNlOyB9Cisg
ICAgQUxXQVlTX0lOTElORSBJc29TdWJzcGFjZSYgZGF0ZUluc3RhbmNlU3BhY2UoKSB7IHJldHVy
biBoZWFwLmRhdGVJbnN0YW5jZVNwYWNlOyB9CisgICAgQUxXQVlTX0lOTElORSBJc29TdWJzcGFj
ZSYgZG9tQXR0cmlidXRlR2V0dGVyU2V0dGVyU3BhY2UoKSB7IHJldHVybiBoZWFwLmRvbUF0dHJp
YnV0ZUdldHRlclNldHRlclNwYWNlOyB9CisgICAgQUxXQVlTX0lOTElORSBJc29TdWJzcGFjZSYg
ZXhjZXB0aW9uU3BhY2UoKSB7IHJldHVybiBoZWFwLmV4Y2VwdGlvblNwYWNlOyB9CisgICAgQUxX
QVlTX0lOTElORSBJc29TdWJzcGFjZSYgZXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZVNwYWNlKCkg
eyByZXR1cm4gaGVhcC5leGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlU3BhY2U7IH0KKyAgICBBTFdB
WVNfSU5MSU5FIElzb1N1YnNwYWNlJiBmdW5jdGlvblNwYWNlKCkgeyByZXR1cm4gaGVhcC5mdW5j
dGlvblNwYWNlOyB9CisgICAgQUxXQVlTX0lOTElORSBJc29TdWJzcGFjZSYgZ2V0dGVyU2V0dGVy
U3BhY2UoKSB7IHJldHVybiBoZWFwLmdldHRlclNldHRlclNwYWNlOyB9CisgICAgQUxXQVlTX0lO
TElORSBJc29TdWJzcGFjZSYgZ2xvYmFsTGV4aWNhbEVudmlyb25tZW50U3BhY2UoKSB7IHJldHVy
biBoZWFwLmdsb2JhbExleGljYWxFbnZpcm9ubWVudFNwYWNlOyB9CisgICAgQUxXQVlTX0lOTElO
RSBJc29TdWJzcGFjZSYgaW50ZXJuYWxGdW5jdGlvblNwYWNlKCkgeyByZXR1cm4gaGVhcC5pbnRl
cm5hbEZ1bmN0aW9uU3BhY2U7IH0KKyAgICBBTFdBWVNfSU5MSU5FIElzb1N1YnNwYWNlJiBqc1By
b3h5U3BhY2UoKSB7IHJldHVybiBoZWFwLmpzUHJveHlTcGFjZTsgfQorICAgIEFMV0FZU19JTkxJ
TkUgSXNvU3Vic3BhY2UmIG5hdGl2ZUV4ZWN1dGFibGVTcGFjZSgpIHsgcmV0dXJuIGhlYXAubmF0
aXZlRXhlY3V0YWJsZVNwYWNlOyB9CisgICAgQUxXQVlTX0lOTElORSBJc29TdWJzcGFjZSYgbnVt
YmVyT2JqZWN0U3BhY2UoKSB7IHJldHVybiBoZWFwLm51bWJlck9iamVjdFNwYWNlOyB9CisgICAg
QUxXQVlTX0lOTElORSBJc29TdWJzcGFjZSYgcGxhaW5PYmplY3RTcGFjZSgpIHsgcmV0dXJuIGhl
YXAucGxhaW5PYmplY3RTcGFjZTsgfQorICAgIEFMV0FZU19JTkxJTkUgSXNvU3Vic3BhY2UmIHBy
b21pc2VTcGFjZSgpIHsgcmV0dXJuIGhlYXAucHJvbWlzZVNwYWNlOyB9CisgICAgQUxXQVlTX0lO
TElORSBJc29TdWJzcGFjZSYgcHJvcGVydHlOYW1lRW51bWVyYXRvclNwYWNlKCkgeyByZXR1cm4g
aGVhcC5wcm9wZXJ0eU5hbWVFbnVtZXJhdG9yU3BhY2U7IH0KKyAgICBBTFdBWVNfSU5MSU5FIElz
b1N1YnNwYWNlJiBwcm9wZXJ0eVRhYmxlU3BhY2UoKSB7IHJldHVybiBoZWFwLnByb3BlcnR5VGFi
bGVTcGFjZTsgfQorICAgIEFMV0FZU19JTkxJTkUgSXNvU3Vic3BhY2UmIHJlZ0V4cFNwYWNlKCkg
eyByZXR1cm4gaGVhcC5yZWdFeHBTcGFjZTsgfQorICAgIEFMV0FZU19JTkxJTkUgSXNvU3Vic3Bh
Y2UmIHJlZ0V4cE9iamVjdFNwYWNlKCkgeyByZXR1cm4gaGVhcC5yZWdFeHBPYmplY3RTcGFjZTsg
fQorICAgIEFMV0FZU19JTkxJTkUgSXNvU3Vic3BhY2UmIHJvcGVTdHJpbmdTcGFjZSgpIHsgcmV0
dXJuIGhlYXAucm9wZVN0cmluZ1NwYWNlOyB9CisgICAgQUxXQVlTX0lOTElORSBJc29TdWJzcGFj
ZSYgc2NvcGVkQXJndW1lbnRzU3BhY2UoKSB7IHJldHVybiBoZWFwLnNjb3BlZEFyZ3VtZW50c1Nw
YWNlOyB9CisgICAgQUxXQVlTX0lOTElORSBJc29TdWJzcGFjZSYgc3BhcnNlQXJyYXlWYWx1ZU1h
cFNwYWNlKCkgeyByZXR1cm4gaGVhcC5zcGFyc2VBcnJheVZhbHVlTWFwU3BhY2U7IH0KKyAgICBB
TFdBWVNfSU5MSU5FIElzb1N1YnNwYWNlJiBzdHJpbmdTcGFjZSgpIHsgcmV0dXJuIGhlYXAuc3Ry
aW5nU3BhY2U7IH0KKyAgICBBTFdBWVNfSU5MSU5FIElzb1N1YnNwYWNlJiBzdHJpbmdPYmplY3RT
cGFjZSgpIHsgcmV0dXJuIGhlYXAuc3RyaW5nT2JqZWN0U3BhY2U7IH0KKyAgICBBTFdBWVNfSU5M
SU5FIElzb1N1YnNwYWNlJiBzdHJ1Y3R1cmVDaGFpblNwYWNlKCkgeyByZXR1cm4gaGVhcC5zdHJ1
Y3R1cmVDaGFpblNwYWNlOyB9CisgICAgQUxXQVlTX0lOTElORSBJc29TdWJzcGFjZSYgc3RydWN0
dXJlUmFyZURhdGFTcGFjZSgpIHsgcmV0dXJuIGhlYXAuc3RydWN0dXJlUmFyZURhdGFTcGFjZTsg
fQorICAgIEFMV0FZU19JTkxJTkUgSXNvU3Vic3BhY2UmIHN0cnVjdHVyZVNwYWNlKCkgeyByZXR1
cm4gaGVhcC5zdHJ1Y3R1cmVTcGFjZTsgfQorICAgIEFMV0FZU19JTkxJTkUgSXNvU3Vic3BhY2Um
IGJyYW5kZWRTdHJ1Y3R1cmVTcGFjZSgpIHsgcmV0dXJuIGhlYXAuYnJhbmRlZFN0cnVjdHVyZVNw
YWNlOyB9CisgICAgQUxXQVlTX0lOTElORSBJc29TdWJzcGFjZSYgc3ltYm9sVGFibGVTcGFjZSgp
IHsgcmV0dXJuIGhlYXAuc3ltYm9sVGFibGVTcGFjZTsgfQogCiAjZGVmaW5lIERZTkFNSUNfSVNP
X1NVQlNQQUNFX0RFRklORV9NRU1CRVIobmFtZSkgXAogICAgIHRlbXBsYXRlPFN1YnNwYWNlQWNj
ZXNzIG1vZGU+IFwKLSAgICBJc29TdWJzcGFjZSogbmFtZSgpIFwKLSAgICB7IFwKLSAgICAgICAg
aWYgKG1fIyNuYW1lIHx8IG1vZGUgPT0gU3Vic3BhY2VBY2Nlc3M6OkNvbmN1cnJlbnRseSkgXAot
ICAgICAgICAgICAgcmV0dXJuIG1fIyNuYW1lLmdldCgpOyBcCi0gICAgICAgIHJldHVybiBuYW1l
IyNTbG93KCk7IFwKLSAgICB9IFwKLSAgICBKU19FWFBPUlRfUFJJVkFURSBJc29TdWJzcGFjZSog
bmFtZSMjU2xvdygpOyBcCi0gICAgc3RkOjp1bmlxdWVfcHRyPElzb1N1YnNwYWNlPiBtXyMjbmFt
ZTsKLQorICAgIEFMV0FZU19JTkxJTkUgSXNvU3Vic3BhY2UqIG5hbWUoKSB7IHJldHVybiBoZWFw
Lm5hbWU8bW9kZT4oKTsgfQogCiAjaWYgSlNDX09CSkNfQVBJX0VOQUJMRUQKICAgICBEWU5BTUlD
X0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKGFwaVdyYXBwZXJPYmplY3RTcGFjZSkKQEAgLTY1
Nyw3NCArNDgzLDIzIEBAIHB1YmxpYzoKICNlbmRpZgogCiAjdW5kZWYgRFlOQU1JQ19JU09fU1VC
U1BBQ0VfREVGSU5FX01FTUJFUgotICAgIAotICAgIElzb0NlbGxTZXQgZXhlY3V0YWJsZVRvQ29k
ZUJsb2NrRWRnZXNXaXRoQ29uc3RyYWludHM7Ci0gICAgSXNvQ2VsbFNldCBleGVjdXRhYmxlVG9D
b2RlQmxvY2tFZGdlc1dpdGhGaW5hbGl6ZXJzOworCisgICAgQUxXQVlTX0lOTElORSBJc29DZWxs
U2V0JiBleGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlc1dpdGhDb25zdHJhaW50cygpIHsgcmV0dXJu
IGhlYXAuZXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZXNXaXRoQ29uc3RyYWludHM7IH0KKyAgICBB
TFdBWVNfSU5MSU5FIElzb0NlbGxTZXQmIGV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2VzV2l0aEZp
bmFsaXplcnMoKSB7IHJldHVybiBoZWFwLmV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2VzV2l0aEZp
bmFsaXplcnM7IH0KIAogI2RlZmluZSBEWU5BTUlDX1NQQUNFX0FORF9TRVRfREVGSU5FX01FTUJF
UihuYW1lKSBcCiAgICAgdGVtcGxhdGU8U3Vic3BhY2VBY2Nlc3MgbW9kZT4gXAotICAgIElzb1N1
YnNwYWNlKiBuYW1lKCkgXAotICAgIHsgXAotICAgICAgICBpZiAoYXV0byogc3BhY2VBbmRTZXQg
PSBtXyMjbmFtZS5nZXQoKSkgXAotICAgICAgICAgICAgcmV0dXJuICZzcGFjZUFuZFNldC0+c3Bh
Y2U7IFwKLSAgICAgICAgaWYgKG1vZGUgPT0gU3Vic3BhY2VBY2Nlc3M6OkNvbmN1cnJlbnRseSkg
XAotICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7IFwKLSAgICAgICAgcmV0dXJuIG5hbWUjI1Ns
b3coKTsgXAotICAgIH0gXAotICAgIElzb1N1YnNwYWNlKiBuYW1lIyNTbG93KCk7IFwKLSAgICBz
dGQ6OnVuaXF1ZV9wdHI8U3BhY2VBbmRTZXQ+IG1fIyNuYW1lOwotICAgIAotICAgIHN0cnVjdCBT
cGFjZUFuZFNldCB7Ci0gICAgICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKKyAg
ICBBTFdBWVNfSU5MSU5FIElzb1N1YnNwYWNlKiBuYW1lKCkgeyByZXR1cm4gaGVhcC5uYW1lPG1v
ZGU+KCk7IH0KIAotICAgICAgICBJc29TdWJzcGFjZSBzcGFjZTsKLSAgICAgICAgSXNvQ2VsbFNl
dCBzZXQ7Ci0gICAgICAgIAotICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBBcmd1bWVudHM+
Ci0gICAgICAgIFNwYWNlQW5kU2V0KEFyZ3VtZW50cyYmLi4uIGFyZ3VtZW50cykKLSAgICAgICAg
ICAgIDogc3BhY2Uoc3RkOjpmb3J3YXJkPEFyZ3VtZW50cz4oYXJndW1lbnRzKS4uLikKLSAgICAg
ICAgICAgICwgc2V0KHNwYWNlKQotICAgICAgICB7Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAg
ICAgIHN0YXRpYyBJc29DZWxsU2V0JiBzZXRGb3IoU3Vic3BhY2UmIHNwYWNlKQotICAgICAgICB7
Ci0gICAgICAgICAgICByZXR1cm4gKmJpdHdpc2VfY2FzdDxJc29DZWxsU2V0Kj4oCi0gICAgICAg
ICAgICAgICAgYml0d2lzZV9jYXN0PGNoYXIqPigmc3BhY2UpIC0KLSAgICAgICAgICAgICAgICBP
QkpFQ1RfT0ZGU0VUT0YoU3BhY2VBbmRTZXQsIHNwYWNlKSArCi0gICAgICAgICAgICAgICAgT0JK
RUNUX09GRlNFVE9GKFNwYWNlQW5kU2V0LCBzZXQpKTsKLSAgICAgICAgfQotICAgIH07Ci0gICAg
Ci0gICAgU3BhY2VBbmRTZXQgY29kZUJsb2NrU3BhY2U7Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBGdW5jPgotICAgIHZvaWQgZm9yRWFjaENvZGVCbG9ja1NwYWNlKGNvbnN0IEZ1bmMmIGZ1bmMp
Ci0gICAgewotICAgICAgICAvLyBUaGlzIHNob3VsZCBub3QgaW5jbHVkZSB3ZWJBc3NlbWJseUNv
ZGVCbG9ja1NwYWNlIGJlY2F1c2UgdGhpcyBpcyBhYm91dCBzdWJzY2xhc3NlcyBvZgotICAgICAg
ICAvLyBKU0M6OkNvZGVCbG9jay4KLSAgICAgICAgZnVuYyhjb2RlQmxvY2tTcGFjZSk7Ci0gICAg
fQorICAgIHVzaW5nIFNwYWNlQW5kU2V0ID0gSGVhcDo6U3BhY2VBbmRTZXQ7CisgICAgQUxXQVlT
X0lOTElORSBTcGFjZUFuZFNldCYgY29kZUJsb2NrU3BhY2UoKSB7IHJldHVybiBoZWFwLmNvZGVC
bG9ja1NwYWNlOyB9CiAKICAgICBEWU5BTUlDX1NQQUNFX0FORF9TRVRfREVGSU5FX01FTUJFUihl
dmFsRXhlY3V0YWJsZVNwYWNlKQogICAgIERZTkFNSUNfU1BBQ0VfQU5EX1NFVF9ERUZJTkVfTUVN
QkVSKG1vZHVsZVByb2dyYW1FeGVjdXRhYmxlU3BhY2UpCi0gICAgU3BhY2VBbmRTZXQgZnVuY3Rp
b25FeGVjdXRhYmxlU3BhY2U7Ci0gICAgU3BhY2VBbmRTZXQgcHJvZ3JhbUV4ZWN1dGFibGVTcGFj
ZTsKLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmM+Ci0gICAgdm9pZCBmb3JFYWNoU2NyaXB0
RXhlY3V0YWJsZVNwYWNlKGNvbnN0IEZ1bmMmIGZ1bmMpCi0gICAgewotICAgICAgICBpZiAobV9l
dmFsRXhlY3V0YWJsZVNwYWNlKQotICAgICAgICAgICAgZnVuYygqbV9ldmFsRXhlY3V0YWJsZVNw
YWNlKTsKLSAgICAgICAgZnVuYyhmdW5jdGlvbkV4ZWN1dGFibGVTcGFjZSk7Ci0gICAgICAgIGlm
IChtX21vZHVsZVByb2dyYW1FeGVjdXRhYmxlU3BhY2UpCi0gICAgICAgICAgICBmdW5jKCptX21v
ZHVsZVByb2dyYW1FeGVjdXRhYmxlU3BhY2UpOwotICAgICAgICBmdW5jKHByb2dyYW1FeGVjdXRh
YmxlU3BhY2UpOwotICAgIH0KLQotICAgIFNwYWNlQW5kU2V0IHVubGlua2VkRnVuY3Rpb25FeGVj
dXRhYmxlU3BhY2U7CiAKLSN1bmRlZiBEWU5BTUlDX1NQQUNFX0FORF9TRVRfREVGSU5FX01FTUJF
UgorICAgIEFMV0FZU19JTkxJTkUgU3BhY2VBbmRTZXQmIGZ1bmN0aW9uRXhlY3V0YWJsZVNwYWNl
KCkgeyByZXR1cm4gaGVhcC5mdW5jdGlvbkV4ZWN1dGFibGVTcGFjZTsgfQorICAgIEFMV0FZU19J
TkxJTkUgU3BhY2VBbmRTZXQmIHByb2dyYW1FeGVjdXRhYmxlU3BhY2UoKSB7IHJldHVybiBoZWFw
LnByb2dyYW1FeGVjdXRhYmxlU3BhY2U7IH0KKyAgICBBTFdBWVNfSU5MSU5FIFNwYWNlQW5kU2V0
JiB1bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZVNwYWNlKCkgeyByZXR1cm4gaGVhcC51bmxpbmtl
ZEZ1bmN0aW9uRXhlY3V0YWJsZVNwYWNlOyB9CiAKICAgICBWTVR5cGUgdm1UeXBlOwogICAgIENs
aWVudERhdGEqIGNsaWVudERhdGE7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9WTUlubGluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9WTUlubGluZXMuaAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvVk1JbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDYgKzI2LDcgQEAKICNw
cmFnbWEgb25jZQogCiAjaW5jbHVkZSAiRW50cnlGcmFtZS5oIgorI2luY2x1ZGUgIkZ1enplckFn
ZW50LmgiCiAjaW5jbHVkZSAiUHJvZmlsZXJEYXRhYmFzZS5oIgogI2luY2x1ZGUgIlZNLmgiCiAj
aW5jbHVkZSAiV2F0Y2hkb2cuaCIKQEAgLTkwLDQgKzkxLDEwIEBAIGlubGluZSBDYWxsRnJhbWUq
IFZNOjp0b3BKU0NhbGxGcmFtZSgpIGMKICAgICByZXR1cm4gZnJhbWU7CiB9CiAKK2lubGluZSB2
b2lkIFZNOjpzZXRGdXp6ZXJBZ2VudChzdGQ6OnVuaXF1ZV9wdHI8RnV6emVyQWdlbnQ+JiYgZnV6
emVyQWdlbnQpCit7CisgICAgUkVMRUFTRV9BU1NFUlRfV0lUSF9NRVNTQUdFKCFtX2Z1enplckFn
ZW50LCAiT25seSBvbmUgRnV6emVyQWdlbnQgY2FuIGJlIHNwZWNpZmllZCBhdCBhIHRpbWUuIik7
CisgICAgbV9mdXp6ZXJBZ2VudCA9IFdURk1vdmUoZnV6emVyQWdlbnQpOworfQorCiB9IC8vIG5h
bWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dlYWtNYXBQ
cm90b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9X
ZWFrTWFwUHJvdG90eXBlLmgJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1dlYWtNYXBQcm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtNDEsNyAr
NDEsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYg
dm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShX
ZWFrTWFwUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNw
YWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAg
ICBzdGF0aWMgV2Vha01hcFByb3RvdHlwZSogY3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9XZWFrT2JqZWN0UmVmUHJvdG90eXBlLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha09iamVjdFJlZlByb3RvdHlwZS5oCShy
ZXZpc2lvbiAyODYwOTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFrT2Jq
ZWN0UmVmUHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM3LDcgKzM3LDcgQEAgcHVibGlj
OgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAg
ICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoV2Vha09iamVjdFJlZlBy
b3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAg
ICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGlj
IFdlYWtPYmplY3RSZWZQcm90b3R5cGUqIGNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlKQpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvV2Vha1NldFByb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1dlYWtTZXRQcm90b3R5cGUuaAkocmV2aXNpb24gMjg2MDk1
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha1NldFByb3RvdHlwZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC00MSw3ICs0MSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vi
c3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRf
SVNPX1NVQlNQQUNFX1NIQVJBQkxFKFdlYWtTZXRQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICBy
ZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmpl
Y3RTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBXZWFrU2V0UHJvdG90eXBlKiBjcmVhdGUo
Vk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxhclZNLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvSlNEb2xsYXJWTS5jcHAJKHJl
dmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxhclZN
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTMzLDcgKzEzMyw3IEBAIHB1YmxpYzoKICAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vic3BhY2VBY2Nlc3M+CiAgICAgc3RhdGljIENvbXBs
ZXRlU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7Ci0gICAgICAgIHJldHVybiAm
dm0uY2VsbFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLmNlbGxTcGFjZSgpOwogICAgIH0KIAog
ICAgIEpTRG9sbGFyVk1DYWxsRnJhbWUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKQEAg
LTIyMyw3ICsyMjMsNyBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUs
IFN1YnNwYWNlQWNjZXNzPgogICAgIHN0YXRpYyBDb21wbGV0ZVN1YnNwYWNlKiBzdWJzcGFjZUZv
cihWTSYgdm0pCiAgICAgewotICAgICAgICByZXR1cm4gJnZtLmNlbGxTcGFjZTsKKyAgICAgICAg
cmV0dXJuICZ2bS5jZWxsU3BhY2UoKTsKICAgICB9CiAKICAgICBSb290KiByb290KCkgY29uc3Qg
eyByZXR1cm4gbV9yb290LmdldCgpOyB9CkBAIC0yODcsNyArMjg3LDcgQEAgcHVibGljOgogICAg
IHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlLCBTdWJzcGFjZUFjY2Vzcz4KICAgICBzdGF0aWMg
Q29tcGxldGVTdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKLSAgICAgICAgcmV0
dXJuICZ2bS5kZXN0cnVjdGlibGVPYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5kZXN0
cnVjdGlibGVPYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIFJvb3QoVk0mIHZtLCBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSkKQEAgLTM1NCw3ICszNTQsNyBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8
dHlwZW5hbWUgQ2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNzPgogICAgIHN0YXRpYyBDb21wbGV0ZVN1
YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewotICAgICAgICByZXR1cm4gJnZtLmNl
bGxTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5jZWxsU3BhY2UoKTsKICAgICB9CiAKICAgICBz
dGF0aWMgU2ltcGxlT2JqZWN0KiBjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0KQpAQCAtNDI2LDcgKzQyNiw3IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBDZWxsVHlwZSwgU3Vic3BhY2VBY2Nlc3M+CiAgICAgc3RhdGljIENvbXBsZXRlU3Vic3BhY2Uq
IHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7Ci0gICAgICAgIHJldHVybiAmdm0uY2VsbFNwYWNl
OworICAgICAgICByZXR1cm4gJnZtLmNlbGxTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBT
dHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQpAQCAtNTA4LDcgKzUwOCw3IEBAIHB1YmxpYzoKICAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vic3BhY2VBY2Nlc3M+CiAgICAgc3RhdGlj
IENvbXBsZXRlU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7Ci0gICAgICAgIHJl
dHVybiAmdm0uY2VsbFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLmNlbGxTcGFjZSgpOwogICAg
IH0KIAogICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQpAQCAtNTkwLDcgKzU5
MCw3IEBAIElHTk9SRV9XQVJOSU5HU19FTkQKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlw
ZSwgU3Vic3BhY2VBY2Nlc3M+CiAgICAgc3RhdGljIENvbXBsZXRlU3Vic3BhY2UqIHN1YnNwYWNl
Rm9yKFZNJiB2bSkKICAgICB7Ci0gICAgICAgIHJldHVybiAmdm0uY2VsbFNwYWNlOworICAgICAg
ICByZXR1cm4gJnZtLmNlbGxTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBSdW50aW1lQXJy
YXkqIGNyZWF0ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxG
cmFtZSkKQEAgLTc3Miw3ICs3NzIsNyBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUg
Q2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNzPgogICAgIHN0YXRpYyBDb21wbGV0ZVN1YnNwYWNlKiBz
dWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewotICAgICAgICByZXR1cm4gJnZtLmNlbGxTcGFjZTsK
KyAgICAgICAgcmV0dXJuICZ2bS5jZWxsU3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgU3Ry
dWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKQEAgLTg3Miw3ICs4NzIsNyBAQCBwdWJsaWM6CiAgICAg
dGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNzPgogICAgIHN0YXRpYyBD
b21wbGV0ZVN1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewotICAgICAgICByZXR1
cm4gJnZtLmNlbGxTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5jZWxsU3BhY2UoKTsKICAgICB9
CiAKICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKQEAgLTg5Nyw3ICs4OTcs
NyBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUsIFN1YnNwYWNlQWNj
ZXNzPgogICAgIHN0YXRpYyBDb21wbGV0ZVN1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAg
ICAgewotICAgICAgICByZXR1cm4gJnZtLmNlbGxTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5j
ZWxsU3BhY2UoKTsKICAgICB9CiAKICAgICBPYmplY3REb2luZ1NpZGVFZmZlY3RQdXRXaXRob3V0
Q29ycmVjdFNsb3RTdGF0dXMoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKQEAgLTk0OCw3
ICs5NDgsNyBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUsIFN1YnNw
YWNlQWNjZXNzPgogICAgIHN0YXRpYyBDb21wbGV0ZVN1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYg
dm0pCiAgICAgewotICAgICAgICByZXR1cm4gJnZtLmNlbGxTcGFjZTsKKyAgICAgICAgcmV0dXJu
ICZ2bS5jZWxsU3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVT
dHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHBy
b3RvdHlwZSkKQEAgLTE1ODUsNyArMTU4NSw3IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBDZWxsVHlwZSwgU3Vic3BhY2VBY2Nlc3M+CiAgICAgc3RhdGljIENvbXBsZXRlU3Vic3Bh
Y2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7Ci0gICAgICAgIHJldHVybiAmdm0uY2VsbFNw
YWNlOworICAgICAgICByZXR1cm4gJnZtLmNlbGxTcGFjZSgpOwogICAgIH0KIAogICAgIEpTVGVz
dEN1c3RvbUdldHRlclNldHRlcihWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQpAQCAtMTgz
OCw3ICsxODM4LDcgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlLCBT
dWJzcGFjZUFjY2Vzcz4KICAgICBzdGF0aWMgQ29tcGxldGVTdWJzcGFjZSogc3Vic3BhY2VGb3Io
Vk0mIHZtKQogICAgIHsKLSAgICAgICAgcmV0dXJuICZ2bS5kZXN0cnVjdGlibGVPYmplY3RTcGFj
ZTsKKyAgICAgICAgcmV0dXJuICZ2bS5kZXN0cnVjdGlibGVPYmplY3RTcGFjZSgpOwogICAgIH0K
IAogICAgIGNsYXNzIENsaWVudCBmaW5hbCA6IHB1YmxpYyBXYXNtOjpTdHJlYW1pbmdQYXJzZXJD
bGllbnQgewpAQCAtMTkzMyw3ICsxOTMzLDcgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVu
YW1lIENlbGxUeXBlLCBTdWJzcGFjZUFjY2Vzcz4KICAgICBzdGF0aWMgQ29tcGxldGVTdWJzcGFj
ZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKLSAgICAgICAgcmV0dXJuICZ2bS5kZXN0cnVj
dGlibGVPYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5kZXN0cnVjdGlibGVPYmplY3RT
cGFjZSgpOwogICAgIH0KIAogICAgIFdhc21TdHJlYW1pbmdDb21waWxlcihWTSYgdm0sIFN0cnVj
dHVyZSogc3RydWN0dXJlLCBXYXNtOjpDb21waWxlck1vZGUgY29tcGlsZXJNb2RlLCBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1Byb21pc2UqIHByb21pc2UsIEpTT2JqZWN0KiBpbXBv
cnRPYmplY3QpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvSlNEb2xsYXJWTS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxhclZNLmgJ
KHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxh
clZNLmgJKHdvcmtpbmcgY29weSkKQEAgLTQyLDcgKzQyLDcgQEAgcHVibGljOgogICAgIHRlbXBs
YXRlPHR5cGVuYW1lIENlbGxUeXBlLCBTdWJzcGFjZUFjY2Vzcz4KICAgICBzdGF0aWMgQ29tcGxl
dGVTdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKLSAgICAgICAgcmV0dXJuICZ2
bS5jZWxsU3BhY2U7CisgICAgICAgIHJldHVybiAmdm0uY2VsbFNwYWNlKCk7CiAgICAgfQogICAg
IAogICAgIERFQ0xBUkVfRVhQT1JUX0lORk87CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9qcy9KU1dlYkFzc2VtYmx5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vanMvSlNXZWJBc3NlbWJseS5oCShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5LmgJKHdvcmtpbmcgY29weSkKQEAg
LTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMTkgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMjEgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC00MSw3ICs0MSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNl
Rm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NI
QVJBQkxFKEpTV2ViQXNzZW1ibHksIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2Jq
ZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0K
IAogICAgIHN0YXRpYyBKU1dlYkFzc2VtYmx5KiBjcmVhdGUoVk0mLCBKU0dsb2JhbE9iamVjdCos
IFN0cnVjdHVyZSopOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNz
ZW1ibHlDb21waWxlRXJyb3JQcm90b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUNvbXBpbGVFcnJvclByb3RvdHlwZS5oCShyZXZp
c2lvbiAyODYwOTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJs
eUNvbXBpbGVFcnJvclByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAog
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxNi0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNi0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDEsNyArNDEsNyBA
QCBwdWJsaWM6CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAg
ICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShXZWJBc3Nl
bWJseUNvbXBpbGVFcnJvclByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxh
aW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAg
ICAgfQogCiAgICAgc3RhdGljIFdlYkFzc2VtYmx5Q29tcGlsZUVycm9yUHJvdG90eXBlKiBjcmVh
dGUoVk0mLCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSopOwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlFeGNlcHRpb25Qcm90b3R5cGUuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUV4Y2VwdGlv
blByb3RvdHlwZS5oCShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9qcy9XZWJBc3NlbWJseUV4Y2VwdGlvblByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBA
IC00MSw3ICs0MSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNl
Rm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NI
QVJBQkxFKFdlYkFzc2VtYmx5RXhjZXB0aW9uUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0
dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0
U3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgV2ViQXNzZW1ibHlFeGNlcHRpb25Qcm90b3R5
cGUqIGNyZWF0ZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKik7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUdsb2JhbFByb3RvdHlwZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5R2xv
YmFsUHJvdG90eXBlLmgJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL2pzL1dlYkFzc2VtYmx5R2xvYmFsUHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAg
LTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxOS0yMDIxIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDAs
NyArNDAsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihW
TSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJM
RShXZWJBc3NlbWJseUdsb2JhbFByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0u
cGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7
CiAgICAgfQogCiAgICAgc3RhdGljIFdlYkFzc2VtYmx5R2xvYmFsUHJvdG90eXBlKiBjcmVhdGUo
Vk0mLCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSopOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlJbnN0YW5jZVByb3RvdHlwZS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5SW5zdGFuY2VQcm90
b3R5cGUuaAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
anMvV2ViQXNzZW1ibHlJbnN0YW5jZVByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNi0yMDE5IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNi0yMDIxIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDEs
NyArNDEsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihW
TSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJM
RShXZWJBc3NlbWJseUluc3RhbmNlUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2
bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2Uo
KTsKICAgICB9CiAKICAgICBzdGF0aWMgV2ViQXNzZW1ibHlJbnN0YW5jZVByb3RvdHlwZSogY3Jl
YXRlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqKTsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TGlua0Vycm9yUHJvdG90eXBlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlMaW5rRXJy
b3JQcm90b3R5cGUuaAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vanMvV2ViQXNzZW1ibHlMaW5rRXJyb3JQcm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpA
QCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAxOSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAyMSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
QEAgLTQxLDcgKzQxLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3Bh
Y2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0Vf
U0hBUkFCTEUoV2ViQXNzZW1ibHlMaW5rRXJyb3JQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICBy
ZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmpl
Y3RTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBXZWJBc3NlbWJseUxpbmtFcnJvclByb3Rv
dHlwZSogY3JlYXRlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqKTsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TWVtb3J5UHJvdG90eXBlLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlN
ZW1vcnlQcm90b3R5cGUuaAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vanMvV2ViQXNzZW1ibHlNZW1vcnlQcm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpA
QCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAxOSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAyMSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
QEAgLTQxLDcgKzQxLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3Bh
Y2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0Vf
U0hBUkFCTEUoV2ViQXNzZW1ibHlNZW1vcnlQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1
cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RT
cGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBXZWJBc3NlbWJseU1lbW9yeVByb3RvdHlwZSog
Y3JlYXRlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqKTsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TW9kdWxlUHJvdG90eXBlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlNb2R1bGVQ
cm90b3R5cGUuaAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vanMvV2ViQXNzZW1ibHlNb2R1bGVQcm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAxOSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAyMSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQx
LDcgKzQxLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3Io
Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFC
TEUoV2ViQXNzZW1ibHlNb2R1bGVQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZt
LnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgp
OwogICAgIH0KIAogICAgIHN0YXRpYyBXZWJBc3NlbWJseU1vZHVsZVByb3RvdHlwZSogY3JlYXRl
KFZNJiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5UnVudGltZUVycm9yUHJvdG90eXBlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlSdW50aW1l
RXJyb3JQcm90b3R5cGUuaAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vanMvV2ViQXNzZW1ibHlSdW50aW1lRXJyb3JQcm90b3R5cGUuaAkod29ya2luZyBj
b3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAxOSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAyMSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTQxLDcgKzQxLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSog
c3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VC
U1BBQ0VfU0hBUkFCTEUoV2ViQXNzZW1ibHlSdW50aW1lRXJyb3JQcm90b3R5cGUsIEJhc2UpOwot
ICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0u
cGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBXZWJBc3NlbWJseVJ1bnRp
bWVFcnJvclByb3RvdHlwZSogY3JlYXRlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUq
KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5VGFibGVQ
cm90b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9X
ZWJBc3NlbWJseVRhYmxlUHJvdG90eXBlLmgJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5VGFibGVQcm90b3R5cGUuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAxOSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAy
MSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKQEAgLTQxLDcgKzQxLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJc29TdWJzcGFj
ZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09f
U1VCU1BBQ0VfU0hBUkFCTEUoV2ViQXNzZW1ibHlUYWJsZVByb3RvdHlwZSwgQmFzZSk7Ci0gICAg
ICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFp
bk9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIFdlYkFzc2VtYmx5VGFibGVQcm90
b3R5cGUqIGNyZWF0ZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKik7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseVRhZ1Byb3RvdHlwZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5VGFn
UHJvdG90eXBlLmgJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL2pzL1dlYkFzc2VtYmx5VGFnUHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQwLDcg
KzQwLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0m
IHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUo
V2ViQXNzZW1ibHlUYWdQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWlu
T2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAg
IH0KIAogICAgIHN0YXRpYyBXZWJBc3NlbWJseVRhZ1Byb3RvdHlwZSogY3JlYXRlKFZNJiwgSlNH
bG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRE9NQXN5bmNJdGVyYXRvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTRE9NQXN5bmNJdGVyYXRvci5oCShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUFzeW5jSXRlcmF0b3IuaAkod29ya2luZyBjb3B5
KQpAQCAtNDgsNyArNDgsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2Uq
IHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9J
U09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNET01Bc3luY0l0ZXJhdG9yUHJvdG90eXBlLCBCYXNlKTsK
LSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZt
LnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgSlNET01Bc3luY0l0ZXJh
dG9yUHJvdG90eXBlKiBjcmVhdGUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTRE9NSXRlcmF0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0RPTUl0ZXJhdG9yLmgJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NSXRlcmF0b3IuaAkod29ya2luZyBjb3B5KQpA
QCAtNTUsNyArNTUsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1
YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09f
U1VCU1BBQ0VfU0hBUkFCTEUoSlNET01JdGVyYXRvclByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAg
IHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9i
amVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIEpTRE9NSXRlcmF0b3JQcm90b3R5cGUq
IGNyZWF0ZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBK
U0M6OlN0cnVjdHVyZSogc3RydWN0dXJlKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNGaWxlU3lzdGVtRGlyZWN0b3J5SGFuZGxlSXRlcmF0b3IuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRmlsZVN5c3RlbURpcmVjdG9yeUhhbmRsZUl0
ZXJhdG9yLmNwcAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNGaWxlU3lzdGVtRGlyZWN0b3J5SGFuZGxlSXRlcmF0b3IuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC01NSw5ICs1NSw5IEBAIElzb1N1YnNwYWNlKiBKU0ZpbGVTeXN0ZW1EaXJlY3RvcnlIYW5k
bGUKICAgICAgICAgcmV0dXJuIHNwYWNlOwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNl
X29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNGaWxlU3lzdGVtRGlyZWN0b3J5SGFu
ZGxlSXRlcmF0b3I+IHx8ICFKU0ZpbGVTeXN0ZW1EaXJlY3RvcnlIYW5kbGVJdGVyYXRvcjo6bmVl
ZHNEZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6
OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU0ZpbGVTeXN0ZW1EaXJlY3RvcnlIYW5kbGVJdGVyYXRv
cj4pCi0gICAgICAgIGNsaWVudERhdGEuc2V0RmlsZVN5c3RlbURpcmVjdG9yeUhhbmRsZUl0ZXJh
dG9yU3BhY2UobWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVh
cCwgKnZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSwgSlNGaWxlU3lzdGVtRGlyZWN0
b3J5SGFuZGxlSXRlcmF0b3IpKTsKKyAgICAgICAgY2xpZW50RGF0YS5zZXRGaWxlU3lzdGVtRGly
ZWN0b3J5SGFuZGxlSXRlcmF0b3JTcGFjZShtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VC
U1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwg
SlNGaWxlU3lzdGVtRGlyZWN0b3J5SGFuZGxlSXRlcmF0b3IpKTsKICAgICBlbHNlCi0gICAgICAg
IGNsaWVudERhdGEuc2V0RmlsZVN5c3RlbURpcmVjdG9yeUhhbmRsZUl0ZXJhdG9yU3BhY2UobWFr
ZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmNlbGxI
ZWFwQ2VsbFR5cGUsIEpTRmlsZVN5c3RlbURpcmVjdG9yeUhhbmRsZUl0ZXJhdG9yKSk7CisgICAg
ICAgIGNsaWVudERhdGEuc2V0RmlsZVN5c3RlbURpcmVjdG9yeUhhbmRsZUl0ZXJhdG9yU3BhY2Uo
bWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2Vs
bEhlYXBDZWxsVHlwZSgpLCBKU0ZpbGVTeXN0ZW1EaXJlY3RvcnlIYW5kbGVJdGVyYXRvcikpOwog
ICAgIGF1dG8qIHNwYWNlID0gY2xpZW50RGF0YS5maWxlU3lzdGVtRGlyZWN0b3J5SGFuZGxlSXRl
cmF0b3JTcGFjZSgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikK
IElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRleDogU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV2ViQ29yZUpTQ2xpZW50RGF0YS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV2ViQ29yZUpTQ2xpZW50RGF0YS5jcHAJ
KHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dlYkNvcmVK
U0NsaWVudERhdGEuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOCwxMiArMzgsMTMgQEAKICNpbmNs
dWRlICJKU1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmgiCiAjaW5jbHVkZSAiSlNSZW1vdGVET01X
aW5kb3cuaCIKICNpbmNsdWRlICJKU1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS5oIgorI2luY2x1
ZGUgIkpTU2hhcmVkV29ya2VyR2xvYmFsU2NvcGUuaCIKICNpbmNsdWRlICJKU1dpbmRvd1Byb3h5
LmgiCiAjaW5jbHVkZSAiSlNXb3JrZXJHbG9iYWxTY29wZS5oIgogI2luY2x1ZGUgIkpTV29ya2xl
dEdsb2JhbFNjb3BlLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRmFzdE1hbGxvY0FsaWdu
ZWRNZW1vcnlBbGxvY2F0b3IuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9IZWFwSW5saW5l
cy5oPgotI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0lzb0hlYXBDZWxsVHlwZS5oPgorI2luY2x1
ZGUgPEphdmFTY3JpcHRDb3JlL0lzb0hlYXBDZWxsVHlwZUlubGluZXMuaD4KICNpbmNsdWRlIDxK
YXZhU2NyaXB0Q29yZS9KU0Rlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5oPgogI2luY2x1
ZGUgPEphdmFTY3JpcHRDb3JlL01hcmtpbmdDb25zdHJhaW50Lmg+CiAjaW5jbHVkZSA8SmF2YVNj
cmlwdENvcmUvU3Vic3BhY2VJbmxpbmVzLmg+CkBAIC01OSwzMyArNjAsMzQgQEAgdXNpbmcgbmFt
ZXNwYWNlIEpTQzsKIEpTVk1DbGllbnREYXRhOjpKU1ZNQ2xpZW50RGF0YShWTSYgdm0pCiAgICAg
OiBtX2J1aWx0aW5GdW5jdGlvbnModm0pCiAgICAgLCBtX2J1aWx0aW5OYW1lcyh2bSkKLSAgICAs
IG1fcnVudGltZUFycmF5SGVhcENlbGxUeXBlKEpTQzo6SXNvSGVhcENlbGxUeXBlOjpjcmVhdGU8
UnVudGltZUFycmF5PigpKQotICAgICwgbV9ydW50aW1lT2JqZWN0SGVhcENlbGxUeXBlKEpTQzo6
SXNvSGVhcENlbGxUeXBlOjpjcmVhdGU8SlNDOjpCaW5kaW5nczo6UnVudGltZU9iamVjdD4oKSkK
LSAgICAsIG1fd2luZG93UHJveHlIZWFwQ2VsbFR5cGUoSlNDOjpJc29IZWFwQ2VsbFR5cGU6OmNy
ZWF0ZTxKU1dpbmRvd1Byb3h5PigpKQotICAgICwgbV9oZWFwQ2VsbFR5cGVGb3JKU0RPTVdpbmRv
dyhKU0M6Oklzb0hlYXBDZWxsVHlwZTo6Y3JlYXRlPEpTRE9NV2luZG93PigpKQotICAgICwgbV9o
ZWFwQ2VsbFR5cGVGb3JKU0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlKEpTQzo6SXNvSGVhcENl
bGxUeXBlOjpjcmVhdGU8SlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZT4oKSkKLSAgICAsIG1f
aGVhcENlbGxUeXBlRm9ySlNSZW1vdGVET01XaW5kb3coSlNDOjpJc29IZWFwQ2VsbFR5cGU6OmNy
ZWF0ZTxKU1JlbW90ZURPTVdpbmRvdz4oKSkKLSAgICAsIG1faGVhcENlbGxUeXBlRm9ySlNXb3Jr
ZXJHbG9iYWxTY29wZShKU0M6Oklzb0hlYXBDZWxsVHlwZTo6Y3JlYXRlPEpTV29ya2VyR2xvYmFs
U2NvcGU+KCkpCisvLyAgICAsIG1fcnVudGltZUFycmF5SGVhcENlbGxUeXBlKEpTQzo6SXNvSGVh
cENlbGxUeXBlOjpBcmdzPFJ1bnRpbWVBcnJheT4oKSkKKy8vICAgICwgbV9ydW50aW1lT2JqZWN0
SGVhcENlbGxUeXBlKEpTQzo6SXNvSGVhcENlbGxUeXBlOjpBcmdzPEpTQzo6QmluZGluZ3M6OlJ1
bnRpbWVPYmplY3Q+KCkpCisvLyAgICAsIG1fd2luZG93UHJveHlIZWFwQ2VsbFR5cGUoSlNDOjpJ
c29IZWFwQ2VsbFR5cGU6OkFyZ3M8SlNXaW5kb3dQcm94eT4oKSkKKy8vICAgICwgbV9oZWFwQ2Vs
bFR5cGVGb3JKU0RPTVdpbmRvdyhKU0M6Oklzb0hlYXBDZWxsVHlwZTo6QXJnczxKU0RPTVdpbmRv
dz4oKSkKKy8vICAgICwgbV9oZWFwQ2VsbFR5cGVGb3JKU0RlZGljYXRlZFdvcmtlckdsb2JhbFNj
b3BlKEpTQzo6SXNvSGVhcENlbGxUeXBlOjpBcmdzPEpTRGVkaWNhdGVkV29ya2VyR2xvYmFsU2Nv
cGU+KCkpCisvLyAgICAsIG1faGVhcENlbGxUeXBlRm9ySlNSZW1vdGVET01XaW5kb3coSlNDOjpJ
c29IZWFwQ2VsbFR5cGU6OkFyZ3M8SlNSZW1vdGVET01XaW5kb3c+KCkpCisvLyAgICAsIG1faGVh
cENlbGxUeXBlRm9ySlNXb3JrZXJHbG9iYWxTY29wZShKU0M6Oklzb0hlYXBDZWxsVHlwZTo6QXJn
czxKU1dvcmtlckdsb2JhbFNjb3BlPigpKQorLy8gICAgLCBtX2hlYXBDZWxsVHlwZUZvckpTU2hh
cmVkV29ya2VyR2xvYmFsU2NvcGUoSlNDOjpJc29IZWFwQ2VsbFR5cGU6OkFyZ3M8SlNTaGFyZWRX
b3JrZXJHbG9iYWxTY29wZT4oKSkKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi0gICAgLCBt
X2hlYXBDZWxsVHlwZUZvckpTU2VydmljZVdvcmtlckdsb2JhbFNjb3BlKEpTQzo6SXNvSGVhcENl
bGxUeXBlOjpjcmVhdGU8SlNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU+KCkpCisvLyAgICAsIG1f
aGVhcENlbGxUeXBlRm9ySlNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUoSlNDOjpJc29IZWFwQ2Vs
bFR5cGU6OkFyZ3M8SlNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU+KCkpCiAjZW5kaWYKLSAgICAs
IG1faGVhcENlbGxUeXBlRm9ySlNXb3JrbGV0R2xvYmFsU2NvcGUoSlNDOjpJc29IZWFwQ2VsbFR5
cGU6OmNyZWF0ZTxKU1dvcmtsZXRHbG9iYWxTY29wZT4oKSkKKy8vICAgICwgbV9oZWFwQ2VsbFR5
cGVGb3JKU1dvcmtsZXRHbG9iYWxTY29wZShKU0M6Oklzb0hlYXBDZWxsVHlwZTo6QXJnczxKU1dv
cmtsZXRHbG9iYWxTY29wZT4oKSkKICNpZiBFTkFCTEUoQ1NTX1BBSU5USU5HX0FQSSkKLSAgICAs
IG1faGVhcENlbGxUeXBlRm9ySlNQYWludFdvcmtsZXRHbG9iYWxTY29wZShKU0M6Oklzb0hlYXBD
ZWxsVHlwZTo6Y3JlYXRlPEpTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGU+KCkpCisvLyAgICAsIG1f
aGVhcENlbGxUeXBlRm9ySlNQYWludFdvcmtsZXRHbG9iYWxTY29wZShKU0M6Oklzb0hlYXBDZWxs
VHlwZTo6QXJnczxKU1BhaW50V29ya2xldEdsb2JhbFNjb3BlPigpKQogI2VuZGlmCiAjaWYgRU5B
QkxFKFdFQl9BVURJTykKLSAgICAsIG1faGVhcENlbGxUeXBlRm9ySlNBdWRpb1dvcmtsZXRHbG9i
YWxTY29wZShKU0M6Oklzb0hlYXBDZWxsVHlwZTo6Y3JlYXRlPEpTQXVkaW9Xb3JrbGV0R2xvYmFs
U2NvcGU+KCkpCisvLyAgICAsIG1faGVhcENlbGxUeXBlRm9ySlNBdWRpb1dvcmtsZXRHbG9iYWxT
Y29wZShKU0M6Oklzb0hlYXBDZWxsVHlwZTo6QXJnczxKU0F1ZGlvV29ya2xldEdsb2JhbFNjb3Bl
PigpKQogI2VuZGlmCi0gICAgLCBtX2hlYXBDZWxsVHlwZUZvckpTSURCU2VyaWFsaXphdGlvbkds
b2JhbE9iamVjdChKU0M6Oklzb0hlYXBDZWxsVHlwZTo6Y3JlYXRlPEpTSURCU2VyaWFsaXphdGlv
bkdsb2JhbE9iamVjdD4oKSkKLSAgICAsIG1fZG9tQnVpbHRpbkNvbnN0cnVjdG9yU3BhY2UgSVNP
X1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmNlbGxIZWFwQ2VsbFR5cGUsIEpTRE9NQnVpbHRp
bkNvbnN0cnVjdG9yQmFzZSkKLSAgICAsIG1fZG9tQ29uc3RydWN0b3JTcGFjZSBJU09fU1VCU1BB
Q0VfSU5JVCh2bS5oZWFwLCAqdm0uY2VsbEhlYXBDZWxsVHlwZSwgSlNET01Db25zdHJ1Y3RvckJh
c2UpCi0gICAgLCBtX2RvbU5hbWVzcGFjZU9iamVjdFNwYWNlIElTT19TVUJTUEFDRV9JTklUKHZt
LmhlYXAsICp2bS5jZWxsSGVhcENlbGxUeXBlLCBKU0RPTU9iamVjdCkKLSAgICAsIG1fZG9tV2lu
ZG93UHJvcGVydGllc1NwYWNlIElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5jZWxsSGVh
cENlbGxUeXBlLCBKU0RPTVdpbmRvd1Byb3BlcnRpZXMpCi0gICAgLCBtX3J1bnRpbWVBcnJheVNw
YWNlIElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICptX3J1bnRpbWVBcnJheUhlYXBDZWxsVHlw
ZSwgUnVudGltZUFycmF5KQotICAgICwgbV9ydW50aW1lTWV0aG9kU3BhY2UgSVNPX1NVQlNQQUNF
X0lOSVQodm0uaGVhcCwgKnZtLmNlbGxIZWFwQ2VsbFR5cGUsIFJ1bnRpbWVNZXRob2QpIC8vIEhh
c2g6MHhmNzBjNGE4NQotICAgICwgbV9ydW50aW1lT2JqZWN0U3BhY2UgSVNPX1NVQlNQQUNFX0lO
SVQodm0uaGVhcCwgKm1fcnVudGltZU9iamVjdEhlYXBDZWxsVHlwZSwgSlNDOjpCaW5kaW5nczo6
UnVudGltZU9iamVjdCkKLSAgICAsIG1fd2luZG93UHJveHlTcGFjZSBJU09fU1VCU1BBQ0VfSU5J
VCh2bS5oZWFwLCAqbV93aW5kb3dQcm94eUhlYXBDZWxsVHlwZSwgSlNXaW5kb3dQcm94eSkKLSAg
ICAsIG1faWRiU2VyaWFsaXphdGlvblNwYWNlIElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICpt
X2hlYXBDZWxsVHlwZUZvckpTSURCU2VyaWFsaXphdGlvbkdsb2JhbE9iamVjdCwgSlNJREJTZXJp
YWxpemF0aW9uR2xvYmFsT2JqZWN0KQorLy8gICAgLCBtX2hlYXBDZWxsVHlwZUZvckpTSURCU2Vy
aWFsaXphdGlvbkdsb2JhbE9iamVjdChKU0M6Oklzb0hlYXBDZWxsVHlwZTo6QXJnczxKU0lEQlNl
cmlhbGl6YXRpb25HbG9iYWxPYmplY3Q+KCkpCisgICAgLCBtX2RvbUJ1aWx0aW5Db25zdHJ1Y3Rv
clNwYWNlIElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwg
SlNET01CdWlsdGluQ29uc3RydWN0b3JCYXNlKQorICAgICwgbV9kb21Db25zdHJ1Y3RvclNwYWNl
IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNET01D
b25zdHJ1Y3RvckJhc2UpCisgICAgLCBtX2RvbU5hbWVzcGFjZU9iamVjdFNwYWNlIElTT19TVUJT
UEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNET01PYmplY3QpCisg
ICAgLCBtX2RvbVdpbmRvd1Byb3BlcnRpZXNTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFw
LCB2bS5jZWxsSGVhcENlbGxUeXBlKCksIEpTRE9NV2luZG93UHJvcGVydGllcykKKyAgICAsIG1f
cnVudGltZUFycmF5U3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgbV9ydW50aW1lQXJy
YXlIZWFwQ2VsbFR5cGUsIFJ1bnRpbWVBcnJheSkKKyAgICAsIG1fcnVudGltZU1ldGhvZFNwYWNl
IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgUnVudGlt
ZU1ldGhvZCkgLy8gSGFzaDoweGY3MGM0YTg1CisgICAgLCBtX3J1bnRpbWVPYmplY3RTcGFjZSBJ
U09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCBtX3J1bnRpbWVPYmplY3RIZWFwQ2VsbFR5cGUsIEpT
Qzo6QmluZGluZ3M6OlJ1bnRpbWVPYmplY3QpCisgICAgLCBtX3dpbmRvd1Byb3h5U3BhY2UgSVNP
X1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgbV93aW5kb3dQcm94eUhlYXBDZWxsVHlwZSwgSlNXaW5k
b3dQcm94eSkKKyAgICAsIG1faWRiU2VyaWFsaXphdGlvblNwYWNlIElTT19TVUJTUEFDRV9JTklU
KHZtLmhlYXAsIG1faGVhcENlbGxUeXBlRm9ySlNJREJTZXJpYWxpemF0aW9uR2xvYmFsT2JqZWN0
LCBKU0lEQlNlcmlhbGl6YXRpb25HbG9iYWxPYmplY3QpCiAgICAgLCBtX3N1YnNwYWNlcyhtYWtl
VW5pcXVlPERPTUlzb1N1YnNwYWNlcz4oKSkKIHsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL1dlYkNvcmVKU0NsaWVudERhdGEuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9XZWJDb3JlSlNDbGllbnREYXRhLmgJKHJldmlzaW9uIDI4NjA5NSkK
KysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dlYkNvcmVKU0NsaWVudERhdGEuaAkod29y
a2luZyBjb3B5KQpAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiAgQ29weXJpZ2h0IChDKSAxOTk5LTIw
MDEgSGFycmkgUG9ydGVuIChwb3J0ZW5Aa2RlLm9yZykKLSAqICBDb3B5cmlnaHQgKEMpIDIwMDMt
MjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAgQ29weXJpZ2h0IChDKSAy
MDAzLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogIENvcHlyaWdodCAo
QykgMjAwNyBTYW11ZWwgV2VpbmlnIDxzYW1Ad2Via2l0Lm9yZz4KICAqICBDb3B5cmlnaHQgKEMp
IDIwMDkgR29vZ2xlLCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgpAQCAtMjgsOSArMjgs
MzUgQEAKICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4K
IAorbmFtZXNwYWNlIEpTQyB7CitjbGFzcyBSdW50aW1lQXJyYXk7CisKK25hbWVzcGFjZSBCaW5k
aW5ncyB7CitjbGFzcyBSdW50aW1lT2JqZWN0OworfQorfSAvLyBuYW1lc3BhY2UgSlNDCisKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRE9NSXNvU3Vic3BhY2VzOworY2xhc3MgSlNET01X
aW5kb3c7CitjbGFzcyBKU0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlOworY2xhc3MgSlNJREJT
ZXJpYWxpemF0aW9uR2xvYmFsT2JqZWN0OworY2xhc3MgSlNSZW1vdGVET01XaW5kb3c7CitjbGFz
cyBKU1NoYXJlZFdvcmtlckdsb2JhbFNjb3BlOworY2xhc3MgSlNXaW5kb3dQcm94eTsKK2NsYXNz
IEpTV29ya2VyR2xvYmFsU2NvcGU7CitjbGFzcyBKU1dvcmtsZXRHbG9iYWxTY29wZTsKKworI2lm
IEVOQUJMRShTRVJWSUNFX1dPUktFUikKK2NsYXNzIEpTU2VydmljZVdvcmtlckdsb2JhbFNjb3Bl
OworI2VuZGlmCisjaWYgRU5BQkxFKENTU19QQUlOVElOR19BUEkpCitjbGFzcyBKU1BhaW50V29y
a2xldEdsb2JhbFNjb3BlOworI2VuZGlmCisjaWYgRU5BQkxFKFdFQl9BVURJTykKK2NsYXNzIEpT
QXVkaW9Xb3JrbGV0R2xvYmFsU2NvcGU7CisjZW5kaWYKIAogY2xhc3MgSlNWTUNsaWVudERhdGEg
OiBwdWJsaWMgSlNDOjpWTTo6Q2xpZW50RGF0YSB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUo
SlNWTUNsaWVudERhdGEpOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKQEAgLTkyLDI2ICsxMTgs
MjYgQEAgcHJpdmF0ZToKICAgICBKU0J1aWx0aW5GdW5jdGlvbnMgbV9idWlsdGluRnVuY3Rpb25z
OwogICAgIFdlYkNvcmVCdWlsdGluTmFtZXMgbV9idWlsdGluTmFtZXM7CiAKLSAgICBzdGQ6OnVu
aXF1ZV9wdHI8SlNDOjpIZWFwQ2VsbFR5cGU+IG1fcnVudGltZUFycmF5SGVhcENlbGxUeXBlOwot
ICAgIHN0ZDo6dW5pcXVlX3B0cjxKU0M6OkhlYXBDZWxsVHlwZT4gbV9ydW50aW1lT2JqZWN0SGVh
cENlbGxUeXBlOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxKU0M6OkhlYXBDZWxsVHlwZT4gbV93aW5k
b3dQcm94eUhlYXBDZWxsVHlwZTsKKyAgICBKU0M6Oklzb0hlYXBDZWxsVHlwZTxKU0M6OlJ1bnRp
bWVBcnJheT4gbV9ydW50aW1lQXJyYXlIZWFwQ2VsbFR5cGU7CisgICAgSlNDOjpJc29IZWFwQ2Vs
bFR5cGU8SlNDOjpCaW5kaW5nczo6UnVudGltZU9iamVjdD4gbV9ydW50aW1lT2JqZWN0SGVhcENl
bGxUeXBlOworICAgIEpTQzo6SXNvSGVhcENlbGxUeXBlPEpTV2luZG93UHJveHk+IG1fd2luZG93
UHJveHlIZWFwQ2VsbFR5cGU7CiBwdWJsaWM6Ci0gICAgc3RkOjp1bmlxdWVfcHRyPEpTQzo6SGVh
cENlbGxUeXBlPiBtX2hlYXBDZWxsVHlwZUZvckpTRE9NV2luZG93OwotICAgIHN0ZDo6dW5pcXVl
X3B0cjxKU0M6OkhlYXBDZWxsVHlwZT4gbV9oZWFwQ2VsbFR5cGVGb3JKU0RlZGljYXRlZFdvcmtl
ckdsb2JhbFNjb3BlOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxKU0M6OkhlYXBDZWxsVHlwZT4gbV9o
ZWFwQ2VsbFR5cGVGb3JKU1JlbW90ZURPTVdpbmRvdzsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SlND
OjpIZWFwQ2VsbFR5cGU+IG1faGVhcENlbGxUeXBlRm9ySlNXb3JrZXJHbG9iYWxTY29wZTsKLSAg
ICBzdGQ6OnVuaXF1ZV9wdHI8SlNDOjpIZWFwQ2VsbFR5cGU+IG1faGVhcENlbGxUeXBlRm9ySlNT
aGFyZWRXb3JrZXJHbG9iYWxTY29wZTsKKyAgICBKU0M6Oklzb0hlYXBDZWxsVHlwZTxKU0RPTVdp
bmRvdz4gbV9oZWFwQ2VsbFR5cGVGb3JKU0RPTVdpbmRvdzsKKyAgICBKU0M6Oklzb0hlYXBDZWxs
VHlwZTxKU0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlPiBtX2hlYXBDZWxsVHlwZUZvckpTRGVk
aWNhdGVkV29ya2VyR2xvYmFsU2NvcGU7CisgICAgSlNDOjpJc29IZWFwQ2VsbFR5cGU8SlNSZW1v
dGVET01XaW5kb3c+IG1faGVhcENlbGxUeXBlRm9ySlNSZW1vdGVET01XaW5kb3c7CisgICAgSlND
OjpJc29IZWFwQ2VsbFR5cGU8SlNXb3JrZXJHbG9iYWxTY29wZT4gbV9oZWFwQ2VsbFR5cGVGb3JK
U1dvcmtlckdsb2JhbFNjb3BlOworICAgIEpTQzo6SXNvSGVhcENlbGxUeXBlPEpTU2hhcmVkV29y
a2VyR2xvYmFsU2NvcGU+IG1faGVhcENlbGxUeXBlRm9ySlNTaGFyZWRXb3JrZXJHbG9iYWxTY29w
ZTsKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi0gICAgc3RkOjp1bmlxdWVfcHRyPEpTQzo6
SGVhcENlbGxUeXBlPiBtX2hlYXBDZWxsVHlwZUZvckpTU2VydmljZVdvcmtlckdsb2JhbFNjb3Bl
OworICAgIEpTQzo6SXNvSGVhcENlbGxUeXBlPEpTU2VydmljZVdvcmtlckdsb2JhbFNjb3BlPiBt
X2hlYXBDZWxsVHlwZUZvckpTU2VydmljZVdvcmtlckdsb2JhbFNjb3BlOwogI2VuZGlmCi0gICAg
c3RkOjp1bmlxdWVfcHRyPEpTQzo6SGVhcENlbGxUeXBlPiBtX2hlYXBDZWxsVHlwZUZvckpTV29y
a2xldEdsb2JhbFNjb3BlOworICAgIEpTQzo6SXNvSGVhcENlbGxUeXBlPEpTV29ya2xldEdsb2Jh
bFNjb3BlPiBtX2hlYXBDZWxsVHlwZUZvckpTV29ya2xldEdsb2JhbFNjb3BlOwogI2lmIEVOQUJM
RShDU1NfUEFJTlRJTkdfQVBJKQotICAgIHN0ZDo6dW5pcXVlX3B0cjxKU0M6OkhlYXBDZWxsVHlw
ZT4gbV9oZWFwQ2VsbFR5cGVGb3JKU1BhaW50V29ya2xldEdsb2JhbFNjb3BlOworICAgIEpTQzo6
SXNvSGVhcENlbGxUeXBlPEpTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGU+IG1faGVhcENlbGxUeXBl
Rm9ySlNQYWludFdvcmtsZXRHbG9iYWxTY29wZTsKICNlbmRpZgogI2lmIEVOQUJMRShXRUJfQVVE
SU8pCi0gICAgc3RkOjp1bmlxdWVfcHRyPEpTQzo6SGVhcENlbGxUeXBlPiBtX2hlYXBDZWxsVHlw
ZUZvckpTQXVkaW9Xb3JrbGV0R2xvYmFsU2NvcGU7CisgICAgSlNDOjpJc29IZWFwQ2VsbFR5cGU8
SlNBdWRpb1dvcmtsZXRHbG9iYWxTY29wZT4gbV9oZWFwQ2VsbFR5cGVGb3JKU0F1ZGlvV29ya2xl
dEdsb2JhbFNjb3BlOwogI2VuZGlmCi0gICAgc3RkOjp1bmlxdWVfcHRyPEpTQzo6SGVhcENlbGxU
eXBlPiBtX2hlYXBDZWxsVHlwZUZvckpTSURCU2VyaWFsaXphdGlvbkdsb2JhbE9iamVjdDsKKyAg
ICBKU0M6Oklzb0hlYXBDZWxsVHlwZTxKU0lEQlNlcmlhbGl6YXRpb25HbG9iYWxPYmplY3Q+IG1f
aGVhcENlbGxUeXBlRm9ySlNJREJTZXJpYWxpemF0aW9uR2xvYmFsT2JqZWN0OwogCiBwcml2YXRl
OgogICAgIEpTQzo6SXNvU3Vic3BhY2UgbV9kb21CdWlsdGluQ29uc3RydWN0b3JTcGFjZTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRv
ckpTLnBtCShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL0NvZGVHZW5lcmF0b3JKUy5wbQkod29ya2luZyBjb3B5KQpAQCAtNDg1MiwxMyArNDg1Miwx
MyBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgIHB1c2goQGltcGxDb250ZW50LCAi
ICAgIGlmIChhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yJHtpbnRlcmZhY2VOYW1l
fS5nZXQoKSlcbiIpOwogICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICByZXR1cm4gc3Bh
Y2U7XG4iKTsKICAgICBpZiAoSXNET01HbG9iYWxPYmplY3QoJGludGVyZmFjZSkpIHsKLSAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3Ike2ludGVyZmFj
ZU5hbWV9ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVh
cCwgKmNsaWVudERhdGEubV9oZWFwQ2VsbFR5cGVGb3Ike2NsYXNzTmFtZX0sICR7Y2xhc3NOYW1l
fSk7XG4iKTsKKyAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgc3BhY2VzLm1fc3Vic3Bh
Y2VGb3Ike2ludGVyZmFjZU5hbWV9ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQ
QUNFX0lOSVQodm0uaGVhcCwgY2xpZW50RGF0YS5tX2hlYXBDZWxsVHlwZUZvciR7Y2xhc3NOYW1l
fSwgJHtjbGFzc05hbWV9KTtcbiIpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIHB1c2goQGltcGxD
b250ZW50LCAiICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3Ry
dWN0aWJsZU9iamVjdCwgJHtjbGFzc05hbWV9PiB8fCAhJHtjbGFzc05hbWV9OjpuZWVkc0Rlc3Ry
dWN0aW9uKTtcbiIpOwogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBpZiBjb25zdGV4
cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsICR7Y2xhc3NO
YW1lfT4pXG4iKTsKLSAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIHNwYWNlcy5t
X3N1YnNwYWNlRm9yJHtpbnRlcmZhY2VOYW1lfSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElT
T19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5
cGUsICR7Y2xhc3NOYW1lfSk7XG4iKTsKKyAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAg
ICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yJHtpbnRlcmZhY2VOYW1lfSA9IG1ha2VVbmlxdWU8SXNv
U3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVj
dEhlYXBDZWxsVHlwZSgpLCAke2NsYXNzTmFtZX0pO1xuIik7CiAgICAgICAgIHB1c2goQGltcGxD
b250ZW50LCAiICAgIGVsc2VcbiIpOwotICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAg
ICAgc3BhY2VzLm1fc3Vic3BhY2VGb3Ike2ludGVyZmFjZU5hbWV9ID0gbWFrZVVuaXF1ZTxJc29T
dWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmNlbGxIZWFwQ2VsbFR5cGUs
ICR7Y2xhc3NOYW1lfSk7XG4iKTsKKyAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAg
IHNwYWNlcy5tX3N1YnNwYWNlRm9yJHtpbnRlcmZhY2VOYW1lfSA9IG1ha2VVbmlxdWU8SXNvU3Vi
c3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwg
JHtjbGFzc05hbWV9KTtcbiIpOwogICAgIH0KICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBh
dXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yJHtpbnRlcmZhY2VOYW1lfS5nZXQoKTtc
biIpOwogICAgIHB1c2goQGltcGxDb250ZW50LCAiSUdOT1JFX1dBUk5JTkdTX0JFR0lOKFwidW5y
ZWFjaGFibGUtY29kZVwiKVxuIik7CkBAIC02NzMxLDkgKzY3MzEsOSBAQCBwdWJsaWM6CiAgICAg
ICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAgICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNl
X29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgJHtpdGVyYXRvck5hbWV9PiB8fCAhJHtp
dGVyYXRvck5hbWV9OjpuZWVkc0Rlc3RydWN0aW9uKTsKICAgICAgICAgaWYgY29uc3RleHByIChz
dGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCAke2l0ZXJhdG9yTmFt
ZX0+KQotICAgICAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3Ike2l0ZXJhdG9yTmFtZX0gPSBt
YWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uZGVz
dHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmdldCgpLCAke2l0ZXJhdG9yTmFtZX0pOworICAg
ICAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3Ike2l0ZXJhdG9yTmFtZX0gPSBtYWtlVW5pcXVl
PElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVP
YmplY3RIZWFwQ2VsbFR5cGUoKSwgJHtpdGVyYXRvck5hbWV9KTsKICAgICAgICAgZWxzZQotICAg
ICAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3Ike2l0ZXJhdG9yTmFtZX0gPSBtYWtlVW5pcXVl
PElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uY2VsbEhlYXBDZWxs
VHlwZSwgJHtpdGVyYXRvck5hbWV9KTsKKyAgICAgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9y
JHtpdGVyYXRvck5hbWV9ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lO
SVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCAke2l0ZXJhdG9yTmFtZX0pOwogICAg
ICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yJHtpdGVyYXRvck5hbWV9Lmdl
dCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKFwidW5yZWFjaGFibGUtY29kZVwiKQogSUdOT1JF
X1dBUk5JTkdTX0JFR0lOKFwidGF1dG9sb2dpY2FsLWNvbXBhcmVcIikKQEAgLTc1MjksNyArNzUy
OSw3IEBAIHN1YiBHZW5lcmF0ZVByb3RvdHlwZURlY2xhcmF0aW9uCiAgICAgcHVzaChAJG91dHB1
dEFycmF5LCAiICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZN
JiB2bSlcbiIpOwogICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICB7XG4iKTsKICAgICBwdXNo
KEAkb3V0cHV0QXJyYXksICIgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJB
QkxFKCR7cHJvdG90eXBlQ2xhc3NOYW1lfSwgQmFzZSk7XG4iKTsKLSAgICBwdXNoKEAkb3V0cHV0
QXJyYXksICIgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTtcbiIpOworICAgIHB1
c2goQCRvdXRwdXRBcnJheSwgIiAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7
XG4iKTsKICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgfVxuIik7CiAKICAgICBwdXNoKEAk
b3V0cHV0QXJyYXksICIgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUo
SlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1Zh
bHVlIHByb3RvdHlwZSlcbiIpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTRE9NV2luZG93LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNET01XaW5kb3cuY3BwCShyZXZpc2lvbiAyODYwOTUp
CisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNET01XaW5kb3cu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNjksNyArMzY5LDcgQEAgSlNDOjpJc29TdWJzcGFjZSog
SlNET01XaW5kb3c6OnN1YnNwYWNlRgogICAgIGF1dG8mIHNwYWNlcyA9IGNsaWVudERhdGEuc3Vi
c3BhY2VzKCk7CiAgICAgaWYgKGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JET01X
aW5kb3cuZ2V0KCkpCiAgICAgICAgIHJldHVybiBzcGFjZTsKLSAgICBzcGFjZXMubV9zdWJzcGFj
ZUZvckRPTVdpbmRvdyA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklU
KHZtLmhlYXAsICpjbGllbnREYXRhLm1faGVhcENlbGxUeXBlRm9ySlNET01XaW5kb3csIEpTRE9N
V2luZG93KTsKKyAgICBzcGFjZXMubV9zdWJzcGFjZUZvckRPTVdpbmRvdyA9IG1ha2VVbmlxdWU8
SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIGNsaWVudERhdGEubV9oZWFw
Q2VsbFR5cGVGb3JKU0RPTVdpbmRvdywgSlNET01XaW5kb3cpOwogICAgIGF1dG8qIHNwYWNlID0g
c3BhY2VzLm1fc3Vic3BhY2VGb3JET01XaW5kb3cuZ2V0KCk7CiBJR05PUkVfV0FSTklOR1NfQkVH
SU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2lj
YWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNET01XaW5kb3cuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNET01XaW5kb3cuaAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTRE9NV2luZG93LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTg1LDcgKzg1LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNw
YWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NF
UlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTRE9NV2luZG93UHJvdG90eXBlLCBCYXNlKTsKLSAg
ICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBs
YWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVh
dGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
RGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUuY3BwCShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNEZWRpY2F0ZWRXb3JrZXJHbG9i
YWxTY29wZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE3MCw3ICsxNzAsNyBAQCBKU0M6Oklzb1N1
YnNwYWNlKiBKU0RlZGljYXRlZFdvcmtlckdsb2JhCiAgICAgYXV0byYgc3BhY2VzID0gY2xpZW50
RGF0YS5zdWJzcGFjZXMoKTsKICAgICBpZiAoYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFj
ZUZvckRlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlLmdldCgpKQogICAgICAgICByZXR1cm4gc3Bh
Y2U7Ci0gICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZSA9
IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICpjbGll
bnREYXRhLm1faGVhcENlbGxUeXBlRm9ySlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZSwgSlNE
ZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZSk7CisgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JEZWRp
Y2F0ZWRXb3JrZXJHbG9iYWxTY29wZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJT
UEFDRV9JTklUKHZtLmhlYXAsIGNsaWVudERhdGEubV9oZWFwQ2VsbFR5cGVGb3JKU0RlZGljYXRl
ZFdvcmtlckdsb2JhbFNjb3BlLCBKU0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlKTsKICAgICBh
dXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yRGVkaWNhdGVkV29ya2VyR2xvYmFsU2Nv
cGUuZ2V0KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdO
T1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxT
Y29wZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlLmgJKHJldmlzaW9uIDI4NjA5NSkKKysr
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU0RlZGljYXRlZFdvcmtl
ckdsb2JhbFNjb3BlLmgJKHdvcmtpbmcgY29weSkKQEAgLTgyLDcgKzgyLDcgQEAgcHVibGljOgog
ICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKICAg
ICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTRGVkaWNh
dGVkV29ya2VyR2xvYmFsU2NvcGVQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZt
LnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgp
OwogICAgIH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6
OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUg
cHJvdG90eXBlKQogICAgIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU0V4cG9zZWRTdGFyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNFeHBvc2VkU3Rhci5jcHAJKHJldmlzaW9uIDI4NjA5
NSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU0V4cG9zZWRT
dGFyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzEsNyArNzEsNyBAQCBwdWJsaWM6CiAgICAgc3Rh
dGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAg
ICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNFeHBvc2VkU3RhclBy
b3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAg
ICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBK
U0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAt
MjM2LDkgKzIzNiw5IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTRXhwb3NlZFN0YXI6OnN1YnNwYWMK
ICAgICAgICAgcmV0dXJuIHNwYWNlOwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29m
X3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNFeHBvc2VkU3Rhcj4gfHwgIUpTRXhwb3Nl
ZFN0YXI6Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNl
X29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNFeHBvc2VkU3Rhcj4pCi0gICAgICAg
IHNwYWNlcy5tX3N1YnNwYWNlRm9yRXhwb3NlZFN0YXIgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNl
PiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENl
bGxUeXBlLCBKU0V4cG9zZWRTdGFyKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JFeHBv
c2VkU3RhciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhl
YXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBKU0V4cG9zZWRTdGFyKTsK
ICAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yRXhwb3NlZFN0YXIgPSBtYWtl
VW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uY2VsbEhl
YXBDZWxsVHlwZSwgSlNFeHBvc2VkU3Rhcik7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9y
RXhwb3NlZFN0YXIgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2
bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCksIEpTRXhwb3NlZFN0YXIpOwogICAgIGF1dG8q
IHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JFeHBvc2VkU3Rhci5nZXQoKTsKIElHTk9SRV9X
QVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4o
InRhdXRvbG9naWNhbC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU0V4cG9zZWRUb1dvcmtlckFuZFdpbmRvdy5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTRXhwb3NlZFRvV29y
a2VyQW5kV2luZG93LmNwcAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTRXhwb3NlZFRvV29ya2VyQW5kV2luZG93LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTEyLDcgKzExMiw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJ
c29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFU
SUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU0V4cG9zZWRUb1dvcmtlckFuZFdpbmRv
d1Byb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsK
KyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRp
YyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpA
QCAtMjUyLDkgKzI1Miw5IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTRXhwb3NlZFRvV29ya2VyQW5k
V2kKICAgICAgICAgcmV0dXJuIHNwYWNlOwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNl
X29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNFeHBvc2VkVG9Xb3JrZXJBbmRXaW5k
b3c+IHx8ICFKU0V4cG9zZWRUb1dvcmtlckFuZFdpbmRvdzo6bmVlZHNEZXN0cnVjdGlvbik7CiAg
ICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2Jq
ZWN0LCBKU0V4cG9zZWRUb1dvcmtlckFuZFdpbmRvdz4pCi0gICAgICAgIHNwYWNlcy5tX3N1YnNw
YWNlRm9yRXhwb3NlZFRvV29ya2VyQW5kV2luZG93ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4g
SVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxs
VHlwZSwgSlNFeHBvc2VkVG9Xb3JrZXJBbmRXaW5kb3cpOworICAgICAgICBzcGFjZXMubV9zdWJz
cGFjZUZvckV4cG9zZWRUb1dvcmtlckFuZFdpbmRvdyA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+
IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxs
VHlwZSgpLCBKU0V4cG9zZWRUb1dvcmtlckFuZFdpbmRvdyk7CiAgICAgZWxzZQotICAgICAgICBz
cGFjZXMubV9zdWJzcGFjZUZvckV4cG9zZWRUb1dvcmtlckFuZFdpbmRvdyA9IG1ha2VVbmlxdWU8
SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5jZWxsSGVhcENlbGxU
eXBlLCBKU0V4cG9zZWRUb1dvcmtlckFuZFdpbmRvdyk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNw
YWNlRm9yRXhwb3NlZFRvV29ya2VyQW5kV2luZG93ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4g
SVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU0V4cG9z
ZWRUb1dvcmtlckFuZFdpbmRvdyk7CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFj
ZUZvckV4cG9zZWRUb1dvcmtlckFuZFdpbmRvdy5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJ
TigidW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNh
bC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNQYWludFdvcmtsZXRHbG9iYWxTY29wZS5j
cHAJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MTY5LDcgKzE2OSw3IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTUGFpbnRXb3JrbGV0R2xvYmFsU2MK
ICAgICBhdXRvJiBzcGFjZXMgPSBjbGllbnREYXRhLnN1YnNwYWNlcygpOwogICAgIGlmIChhdXRv
KiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuZ2V0
KCkpCiAgICAgICAgIHJldHVybiBzcGFjZTsKLSAgICBzcGFjZXMubV9zdWJzcGFjZUZvclBhaW50
V29ya2xldEdsb2JhbFNjb3BlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNF
X0lOSVQodm0uaGVhcCwgKmNsaWVudERhdGEubV9oZWFwQ2VsbFR5cGVGb3JKU1BhaW50V29ya2xl
dEdsb2JhbFNjb3BlLCBKU1BhaW50V29ya2xldEdsb2JhbFNjb3BlKTsKKyAgICBzcGFjZXMubV9z
dWJzcGFjZUZvclBhaW50V29ya2xldEdsb2JhbFNjb3BlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFj
ZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgY2xpZW50RGF0YS5tX2hlYXBDZWxsVHlwZUZv
ckpTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUsIEpTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUpOwog
ICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JQYWludFdvcmtsZXRHbG9iYWxT
Y29wZS5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJ
R05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1BhaW50V29ya2xldEdsb2JhbFNj
b3BlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuaAkocmV2aXNpb24gMjg2MDk1KQorKysgU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTUGFpbnRXb3JrbGV0R2xvYmFs
U2NvcGUuaAkod29ya2luZyBjb3B5KQpAQCAtODIsNyArODIsNyBAQCBwdWJsaWM6CiAgICAgc3Rh
dGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAg
ICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNQYWludFdvcmtsZXRH
bG9iYWxTY29wZVByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmpl
Y3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQog
ICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBK
U0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUp
CiAgICAgewpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
U2VydmljZVdvcmtlckdsb2JhbFNjb3BlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUuY3Bw
CShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
NjksNyArMTY5LDcgQEAgSlNDOjpJc29TdWJzcGFjZSogSlNTZXJ2aWNlV29ya2VyR2xvYmFsUwog
ICAgIGF1dG8mIHNwYWNlcyA9IGNsaWVudERhdGEuc3Vic3BhY2VzKCk7CiAgICAgaWYgKGF1dG8q
IHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUuZ2V0
KCkpCiAgICAgICAgIHJldHVybiBzcGFjZTsKLSAgICBzcGFjZXMubV9zdWJzcGFjZUZvclNlcnZp
Y2VXb3JrZXJHbG9iYWxTY29wZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFD
RV9JTklUKHZtLmhlYXAsICpjbGllbnREYXRhLm1faGVhcENlbGxUeXBlRm9ySlNTZXJ2aWNlV29y
a2VyR2xvYmFsU2NvcGUsIEpTU2VydmljZVdvcmtlckdsb2JhbFNjb3BlKTsKKyAgICBzcGFjZXMu
bV9zdWJzcGFjZUZvclNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSA9IG1ha2VVbmlxdWU8SXNvU3Vi
c3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIGNsaWVudERhdGEubV9oZWFwQ2VsbFR5
cGVGb3JKU1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSwgSlNTZXJ2aWNlV29ya2VyR2xvYmFsU2Nv
cGUpOwogICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JTZXJ2aWNlV29ya2Vy
R2xvYmFsU2NvcGUuZ2V0KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNv
ZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNTZXJ2aWNlV29ya2Vy
R2xvYmFsU2NvcGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUuaAkocmV2aXNpb24gMjg2MDk1
KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTU2VydmljZVdv
cmtlckdsb2JhbFNjb3BlLmgJKHdvcmtpbmcgY29weSkKQEAgLTgyLDcgKzgyLDcgQEAgcHVibGlj
OgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkK
ICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTU2Vy
dmljZVdvcmtlckdsb2JhbFNjb3BlUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2
bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2Uo
KTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlND
OjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVl
IHByb3RvdHlwZSkKICAgICB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNTaGFyZWRXb3JrZXJHbG9iYWxTY29wZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTU2hhcmVkV29ya2VyR2xvYmFs
U2NvcGUuY3BwCShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNTaGFyZWRXb3JrZXJHbG9iYWxTY29wZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTE1Myw3ICsxNTMsNyBAQCBKU0M6Oklzb1N1YnNwYWNlKiBKU1NoYXJlZFdvcmtlckds
b2JhbFNjCiAgICAgYXV0byYgc3BhY2VzID0gY2xpZW50RGF0YS5zdWJzcGFjZXMoKTsKICAgICBp
ZiAoYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclNoYXJlZFdvcmtlckdsb2JhbFNj
b3BlLmdldCgpKQogICAgICAgICByZXR1cm4gc3BhY2U7Ci0gICAgc3BhY2VzLm1fc3Vic3BhY2VG
b3JTaGFyZWRXb3JrZXJHbG9iYWxTY29wZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19T
VUJTUEFDRV9JTklUKHZtLmhlYXAsICpjbGllbnREYXRhLm1faGVhcENlbGxUeXBlRm9ySlNTaGFy
ZWRXb3JrZXJHbG9iYWxTY29wZSwgSlNTaGFyZWRXb3JrZXJHbG9iYWxTY29wZSk7CisgICAgc3Bh
Y2VzLm1fc3Vic3BhY2VGb3JTaGFyZWRXb3JrZXJHbG9iYWxTY29wZSA9IG1ha2VVbmlxdWU8SXNv
U3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIGNsaWVudERhdGEubV9oZWFwQ2Vs
bFR5cGVGb3JKU1NoYXJlZFdvcmtlckdsb2JhbFNjb3BlLCBKU1NoYXJlZFdvcmtlckdsb2JhbFNj
b3BlKTsKICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yU2hhcmVkV29ya2Vy
R2xvYmFsU2NvcGUuZ2V0KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNv
ZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNTaGFyZWRXb3JrZXJH
bG9iYWxTY29wZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1NoYXJlZFdvcmtlckdsb2JhbFNjb3BlLmgJKHJldmlzaW9uIDI4NjA5NSkK
KysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1NoYXJlZFdvcmtl
ckdsb2JhbFNjb3BlLmgJKHdvcmtpbmcgY29weSkKQEAgLTgyLDcgKzgyLDcgQEAgcHVibGljOgog
ICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKICAg
ICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTU2hhcmVk
V29ya2VyR2xvYmFsU2NvcGVQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBs
YWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwog
ICAgIH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZN
JiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJv
dG90eXBlKQogICAgIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RDRVJlYWN0aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENFUmVhY3Rpb25zLmNwcAkocmV2aXNpb24g
Mjg2MDk1KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dENFUmVhY3Rpb25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTEsNyArOTEsNyBAQCBwdWJsaWM6
CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQog
ICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0
Q0VSZWFjdGlvbnNQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2Jq
ZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0K
ICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwg
SlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBl
KQogICAgIHsKQEAgLTQzOCw5ICs0MzgsOSBAQCBKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3RDRVJl
YWN0aW9uczo6c3ViCiAgICAgICAgIHJldHVybiBzcGFjZTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0
ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdENFUmVhY3Rp
b25zPiB8fCAhSlNUZXN0Q0VSZWFjdGlvbnM6Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNv
bnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNU
ZXN0Q0VSZWFjdGlvbnM+KQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RDRVJlYWN0
aW9ucyA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAs
ICp2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUsIEpTVGVzdENFUmVhY3Rpb25zKTsK
KyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0Q0VSZWFjdGlvbnMgPSBtYWtlVW5pcXVl
PElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVP
YmplY3RIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0Q0VSZWFjdGlvbnMpOwogICAgIGVsc2UKLSAgICAg
ICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0Q0VSZWFjdGlvbnMgPSBtYWtlVW5pcXVlPElzb1N1
YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uY2VsbEhlYXBDZWxsVHlwZSwg
SlNUZXN0Q0VSZWFjdGlvbnMpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RDRVJl
YWN0aW9ucyA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhl
YXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0Q0VSZWFjdGlvbnMpOwogICAgIGF1dG8q
IHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0Q0VSZWFjdGlvbnMuZ2V0KCk7CiBJR05P
UkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JF
R0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENF
UmVhY3Rpb25zU3RyaW5naWZpZXIuY3BwCShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmll
ci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc1LDcgKzc1LDcgQEAgcHVibGljOgogICAgIHN0YXRp
YyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAg
ICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdENFUmVhY3Rpb25z
U3RyaW5naWZpZXJQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2Jq
ZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0K
ICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwg
SlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBl
KQogICAgIHsKQEAgLTI2NCw5ICsyNjQsOSBAQCBKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3RDRVJl
YWN0aW9uc1N0cmluCiAgICAgICAgIHJldHVybiBzcGFjZTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0
ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdENFUmVhY3Rp
b25zU3RyaW5naWZpZXI+IHx8ICFKU1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyOjpuZWVkc0Rl
c3RydWN0aW9uKTsKICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNE
ZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXI+KQotICAgICAg
ICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyID0gbWFrZVVu
aXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmRlc3RydWN0
aWJsZU9iamVjdEhlYXBDZWxsVHlwZSwgSlNUZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllcik7Cisg
ICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXIgPSBt
YWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0
cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmll
cik7CiAgICAgZWxzZQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RDRVJlYWN0aW9u
c1N0cmluZ2lmaWVyID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQo
dm0uaGVhcCwgKnZtLmNlbGxIZWFwQ2VsbFR5cGUsIEpTVGVzdENFUmVhY3Rpb25zU3RyaW5naWZp
ZXIpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RDRVJlYWN0aW9uc1N0cmluZ2lm
aWVyID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwg
dm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyKTsKICAg
ICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdENFUmVhY3Rpb25zU3RyaW5n
aWZpZXIuZ2V0KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQog
SUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2FsbFRyYWNlci5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdENhbGxUcmFjZXIuY3BwCShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2FsbFRyYWNlci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTk3LDcgKzk3LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNl
KiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRf
SVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdENhbGxUcmFjZXJQcm90b3R5cGUsIEJhc2UpOwot
ICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0u
cGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNy
ZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKQEAgLTUxMyw5ICs1MTMsOSBAQCBK
U0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3RDYWxsVHJhY2VyOjpzdWJzCiAgICAgICAgIHJldHVybiBz
cGFjZTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVj
dGlibGVPYmplY3QsIEpTVGVzdENhbGxUcmFjZXI+IHx8ICFKU1Rlc3RDYWxsVHJhY2VyOjpuZWVk
c0Rlc3RydWN0aW9uKTsKICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6
SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdENhbGxUcmFjZXI+KQotICAgICAgICBzcGFjZXMu
bV9zdWJzcGFjZUZvclRlc3RDYWxsVHJhY2VyID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNP
X1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlw
ZSwgSlNUZXN0Q2FsbFRyYWNlcik7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdENh
bGxUcmFjZXIgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5o
ZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0Q2FsbFRyYWNl
cik7CiAgICAgZWxzZQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RDYWxsVHJhY2Vy
ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZt
LmNlbGxIZWFwQ2VsbFR5cGUsIEpTVGVzdENhbGxUcmFjZXIpOworICAgICAgICBzcGFjZXMubV9z
dWJzcGFjZUZvclRlc3RDYWxsVHJhY2VyID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NV
QlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RDYWxsVHJh
Y2VyKTsKICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdENhbGxUcmFj
ZXIuZ2V0KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdO
T1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGlu
Q29uc3RydWN0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3Rvci5jcHAJKHJl
dmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3Rvci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTY0LDcgKzY0LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBz
dWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNP
X1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yUHJv
dG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAg
ICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpT
Qzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC0x
NzYsOSArMTc2LDkgQEAgSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0Q2xhc3NXaXRoSlNCdWlsdAog
ICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2Zf
djxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25z
dHJ1Y3Rvcj4gfHwgIUpTVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yOjpuZWVkc0Rl
c3RydWN0aW9uKTsKICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNE
ZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yPikK
LSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3Ry
dWN0b3IgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFw
LCAqdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLCBKU1Rlc3RDbGFzc1dpdGhKU0J1
aWx0aW5Db25zdHJ1Y3Rvcik7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdENsYXNz
V2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NV
QlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCks
IEpTVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yKTsKICAgICBlbHNlCi0gICAgICAg
IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yID0g
bWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmNl
bGxIZWFwQ2VsbFR5cGUsIEpTVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yKTsKKyAg
ICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0
b3IgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2
bS5jZWxsSGVhcENlbGxUeXBlKCksIEpTVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9y
KTsKICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdENsYXNzV2l0aEpT
QnVpbHRpbkNvbnN0cnVjdG9yLmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNo
YWJsZS1jb2RlIikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUi
KQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENv
bmRpdGlvbmFsSW5jbHVkZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzLmNwcAkocmV2aXNp
b24gMjg2MDk1KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdENvbmRpdGlvbmFsSW5jbHVkZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjcsNyArMTI3
LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihK
U0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NI
QVJBQkxFKEpTVGVzdENvbmRpdGlvbmFsSW5jbHVkZXNQcm90b3R5cGUsIEJhc2UpOwotICAgICAg
ICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5P
YmplY3RTcGFjZSgpOwogICAgIH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0
cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBK
U0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKQEAgLTc4OSw5ICs3ODksOSBAQCBKU0M6Oklz
b1N1YnNwYWNlKiBKU1Rlc3RDb25kaXRpb25hbEluY2x1CiAgICAgICAgIHJldHVybiBzcGFjZTsK
ICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVP
YmplY3QsIEpTVGVzdENvbmRpdGlvbmFsSW5jbHVkZXM+IHx8ICFKU1Rlc3RDb25kaXRpb25hbElu
Y2x1ZGVzOjpuZWVkc0Rlc3RydWN0aW9uKTsKICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFz
ZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdENvbmRpdGlvbmFsSW5jbHVk
ZXM+KQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RDb25kaXRpb25hbEluY2x1ZGVz
ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZt
LmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSwgSlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRl
cyk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdENvbmRpdGlvbmFsSW5jbHVkZXMg
PSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5k
ZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRl
cyk7CiAgICAgZWxzZQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RDb25kaXRpb25h
bEluY2x1ZGVzID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0u
aGVhcCwgKnZtLmNlbGxIZWFwQ2VsbFR5cGUsIEpTVGVzdENvbmRpdGlvbmFsSW5jbHVkZXMpOwor
ICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RDb25kaXRpb25hbEluY2x1ZGVzID0gbWFr
ZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhl
YXBDZWxsVHlwZSgpLCBKU1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzKTsKICAgICBhdXRvKiBzcGFj
ZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdENvbmRpdGlvbmFsSW5jbHVkZXMuZ2V0KCk7CiBJ
R05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdT
X0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q29uZGl0aW9uYWxseVJlYWRXcml0ZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dENvbmRpdGlvbmFsbHlSZWFkV3JpdGUuY3BwCShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q29uZGl0aW9uYWxseVJlYWRX
cml0ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk4LDcgKzk4LDcgQEAgcHVibGljOgogICAgIHN0
YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAg
ICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdENvbmRpdGlv
bmFsbHlSZWFkV3JpdGVQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWlu
T2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAg
IH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2
bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90
eXBlKQogICAgIHsKQEAgLTYxMSw5ICs2MTEsOSBAQCBKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3RD
b25kaXRpb25hbGx5UmVhCiAgICAgICAgIHJldHVybiBzcGFjZTsKICAgICBzdGF0aWNfYXNzZXJ0
KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdENvbmRp
dGlvbmFsbHlSZWFkV3JpdGU+IHx8ICFKU1Rlc3RDb25kaXRpb25hbGx5UmVhZFdyaXRlOjpuZWVk
c0Rlc3RydWN0aW9uKTsKICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6
SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdENvbmRpdGlvbmFsbHlSZWFkV3JpdGU+KQotICAg
ICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RDb25kaXRpb25hbGx5UmVhZFdyaXRlID0gbWFr
ZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmRlc3Ry
dWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSwgSlNUZXN0Q29uZGl0aW9uYWxseVJlYWRXcml0ZSk7
CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdENvbmRpdGlvbmFsbHlSZWFkV3JpdGUg
PSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5k
ZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0Q29uZGl0aW9uYWxseVJlYWRX
cml0ZSk7CiAgICAgZWxzZQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RDb25kaXRp
b25hbGx5UmVhZFdyaXRlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lO
SVQodm0uaGVhcCwgKnZtLmNlbGxIZWFwQ2VsbFR5cGUsIEpTVGVzdENvbmRpdGlvbmFsbHlSZWFk
V3JpdGUpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RDb25kaXRpb25hbGx5UmVh
ZFdyaXRlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVh
cCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RDb25kaXRpb25hbGx5UmVhZFdyaXRlKTsK
ICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdENvbmRpdGlvbmFsbHlS
ZWFkV3JpdGUuZ2V0KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUi
KQogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RE9NSklULmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0RE9NSklULmNwcAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERPTUpJVC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ4
MSw3ICs0ODEsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNw
YWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VC
U1BBQ0VfU0hBUkFCTEUoSlNUZXN0RE9NSklUUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0
dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0
U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1
cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpK
U1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC0xMjUyLDkgKzEyNTIsOSBAQCBKU0M6Oklzb1N1
YnNwYWNlKiBKU1Rlc3RET01KSVQ6OnN1YnNwYWNlCiAgICAgICAgIHJldHVybiBzcGFjZTsKICAg
ICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmpl
Y3QsIEpTVGVzdERPTUpJVD4gfHwgIUpTVGVzdERPTUpJVDo6bmVlZHNEZXN0cnVjdGlvbik7CiAg
ICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2Jq
ZWN0LCBKU1Rlc3RET01KSVQ+KQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RET01K
SVQgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAq
dm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLCBKU1Rlc3RET01KSVQpOworICAgICAg
ICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RET01KSVQgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNl
PiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2Vs
bFR5cGUoKSwgSlNUZXN0RE9NSklUKTsKICAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNw
YWNlRm9yVGVzdERPTUpJVCA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9J
TklUKHZtLmhlYXAsICp2bS5jZWxsSGVhcENlbGxUeXBlLCBKU1Rlc3RET01KSVQpOworICAgICAg
ICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RET01KSVQgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNl
PiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCksIEpTVGVz
dERPTUpJVCk7CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RET01K
SVQuZ2V0KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdO
T1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RGVmYXVsdFRvSlNPTi5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdERlZmF1bHRUb0pTT04uY3BwCShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RGVmYXVsdFRvSlNPTi5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTEyNCw3ICsxMjQsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNv
U3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElD
X0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0RGVmYXVsdFRvSlNPTlByb3RvdHlw
ZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAg
cmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0
cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAtODA4LDkg
KzgwOCw5IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdERlZmF1bHRUb0pTT046OnMKICAgICAg
ICAgcmV0dXJuIHNwYWNlOwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlND
OjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0RGVmYXVsdFRvSlNPTj4gfHwgIUpTVGVzdERl
ZmF1bHRUb0pTT046Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjpp
c19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0RGVmYXVsdFRvSlNP
Tj4pCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdERlZmF1bHRUb0pTT04gPSBtYWtl
VW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uZGVzdHJ1
Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLCBKU1Rlc3REZWZhdWx0VG9KU09OKTsKKyAgICAgICAg
c3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0RGVmYXVsdFRvSlNPTiA9IG1ha2VVbmlxdWU8SXNvU3Vi
c3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhl
YXBDZWxsVHlwZSgpLCBKU1Rlc3REZWZhdWx0VG9KU09OKTsKICAgICBlbHNlCi0gICAgICAgIHNw
YWNlcy5tX3N1YnNwYWNlRm9yVGVzdERlZmF1bHRUb0pTT04gPSBtYWtlVW5pcXVlPElzb1N1YnNw
YWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uY2VsbEhlYXBDZWxsVHlwZSwgSlNU
ZXN0RGVmYXVsdFRvSlNPTik7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdERlZmF1
bHRUb0pTT04gPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5o
ZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCksIEpTVGVzdERlZmF1bHRUb0pTT04pOwogICAgIGF1
dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0RGVmYXVsdFRvSlNPTi5nZXQoKTsK
IElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklO
R1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9z
ZWQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWQuY3BwCShyZXZpc2lvbiAy
ODYwOTUpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzUs
NyArNzUsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNl
Rm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BB
Q0VfU0hBUkFCTEUoSlNUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkUHJvdG90eXBl
LCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICBy
ZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3Ry
dWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC0yNzAsOSAr
MjcwLDkgQEAgSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0RGVmYXVsdFRvSlNPTkZpbAogICAgICAg
ICByZXR1cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6
OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9z
ZWQ+IHx8ICFKU1Rlc3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWQ6Om5lZWRzRGVzdHJ1
Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3Ry
dWN0aWJsZU9iamVjdCwgSlNUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkPikKLSAg
ICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBv
c2VkID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwg
KnZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSwgSlNUZXN0RGVmYXVsdFRvSlNPTkZp
bHRlcmVkQnlFeHBvc2VkKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0RGVmYXVs
dFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NV
QlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCks
IEpTVGVzdERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZCk7CiAgICAgZWxzZQotICAgICAg
ICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWQg
PSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0u
Y2VsbEhlYXBDZWxsVHlwZSwgSlNUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkKTsK
KyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlF
eHBvc2VkID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVh
cCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4
cG9zZWQpOwogICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0RGVmYXVs
dFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkLmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1
bnJlYWNoYWJsZS1jb2RlIikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNv
bXBhcmUiKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdERlZmF1bHRUb0pTT05JbmRpcmVjdEluaGVyaXRhbmNlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RGVmYXVsdFRvSlNP
TkluZGlyZWN0SW5oZXJpdGFuY2UuY3BwCShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RGVmYXVsdFRvSlNPTkluZGlyZWN0
SW5oZXJpdGFuY2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02Miw3ICs2Miw3IEBAIHB1YmxpYzoK
ICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAg
ICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3RE
ZWZhdWx0VG9KU09OSW5kaXJlY3RJbmhlcml0YW5jZVByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAg
IHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9i
amVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3Ry
dWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpT
Qzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAtMTYyLDkgKzE2Miw5IEBAIEpTQzo6SXNv
U3Vic3BhY2UqIEpTVGVzdERlZmF1bHRUb0pTT05JbmQKICAgICAgICAgcmV0dXJuIHNwYWNlOwog
ICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9i
amVjdCwgSlNUZXN0RGVmYXVsdFRvSlNPTkluZGlyZWN0SW5oZXJpdGFuY2U+IHx8ICFKU1Rlc3RE
ZWZhdWx0VG9KU09OSW5kaXJlY3RJbmhlcml0YW5jZTo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAg
aWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0
LCBKU1Rlc3REZWZhdWx0VG9KU09OSW5kaXJlY3RJbmhlcml0YW5jZT4pCi0gICAgICAgIHNwYWNl
cy5tX3N1YnNwYWNlRm9yVGVzdERlZmF1bHRUb0pTT05JbmRpcmVjdEluaGVyaXRhbmNlID0gbWFr
ZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmRlc3Ry
dWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSwgSlNUZXN0RGVmYXVsdFRvSlNPTkluZGlyZWN0SW5o
ZXJpdGFuY2UpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3REZWZhdWx0VG9KU09O
SW5kaXJlY3RJbmhlcml0YW5jZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFD
RV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBKU1Rl
c3REZWZhdWx0VG9KU09OSW5kaXJlY3RJbmhlcml0YW5jZSk7CiAgICAgZWxzZQotICAgICAgICBz
cGFjZXMubV9zdWJzcGFjZUZvclRlc3REZWZhdWx0VG9KU09OSW5kaXJlY3RJbmhlcml0YW5jZSA9
IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5j
ZWxsSGVhcENlbGxUeXBlLCBKU1Rlc3REZWZhdWx0VG9KU09OSW5kaXJlY3RJbmhlcml0YW5jZSk7
CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdERlZmF1bHRUb0pTT05JbmRpcmVjdElu
aGVyaXRhbmNlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0u
aGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3REZWZhdWx0VG9KU09OSW5kaXJlY3RJ
bmhlcml0YW5jZSk7CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RE
ZWZhdWx0VG9KU09OSW5kaXJlY3RJbmhlcml0YW5jZS5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19C
RUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9n
aWNhbC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3REZWZhdWx0VG9KU09OSW5oZXJpdC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERlZmF1bHRUb0pTT05Jbmhl
cml0LmNwcAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdERlZmF1bHRUb0pTT05Jbmhlcml0LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtODksNyArODksNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2Uq
IHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9J
U09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0RGVmYXVsdFRvSlNPTkluaGVyaXRQcm90b3R5cGUs
IEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJl
dHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1
Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKQEAgLTI5Miw5ICsy
OTIsOSBAQCBKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3REZWZhdWx0VG9KU09OSW5oCiAgICAgICAg
IHJldHVybiBzcGFjZTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6
SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdERlZmF1bHRUb0pTT05Jbmhlcml0PiB8fCAhSlNU
ZXN0RGVmYXVsdFRvSlNPTkluaGVyaXQ6Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0
ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0
RGVmYXVsdFRvSlNPTkluaGVyaXQ+KQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RE
ZWZhdWx0VG9KU09OSW5oZXJpdCA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFD
RV9JTklUKHZtLmhlYXAsICp2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUsIEpTVGVz
dERlZmF1bHRUb0pTT05Jbmhlcml0KTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0
RGVmYXVsdFRvSlNPTkluaGVyaXQgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BB
Q0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwgSlNU
ZXN0RGVmYXVsdFRvSlNPTkluaGVyaXQpOwogICAgIGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vi
c3BhY2VGb3JUZXN0RGVmYXVsdFRvSlNPTkluaGVyaXQgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNl
PiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uY2VsbEhlYXBDZWxsVHlwZSwgSlNUZXN0
RGVmYXVsdFRvSlNPTkluaGVyaXQpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RE
ZWZhdWx0VG9KU09OSW5oZXJpdCA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFD
RV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0RGVmYXVsdFRvSlNP
TkluaGVyaXQpOwogICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0RGVm
YXVsdFRvSlNPTkluaGVyaXQuZ2V0KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hh
YmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIp
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RGVm
YXVsdFRvSlNPTkluaGVyaXRGaW5hbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERlZmF1bHRUb0pTT05Jbmhlcml0RmluYWwu
Y3BwCShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0RGVmYXVsdFRvSlNPTkluaGVyaXRGaW5hbC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTkxLDcgKzkxLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNl
KiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRf
SVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdERlZmF1bHRUb0pTT05Jbmhlcml0RmluYWxQcm90
b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAg
ICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KICAgICBzdGF0aWMgSlND
OjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKQEAgLTMz
Miw5ICszMzIsOSBAQCBKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3REZWZhdWx0VG9KU09OSW5oCiAg
ICAgICAgIHJldHVybiBzcGFjZTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92
PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdERlZmF1bHRUb0pTT05Jbmhlcml0Rmlu
YWw+IHx8ICFKU1Rlc3REZWZhdWx0VG9KU09OSW5oZXJpdEZpbmFsOjpuZWVkc0Rlc3RydWN0aW9u
KTsKICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGli
bGVPYmplY3QsIEpTVGVzdERlZmF1bHRUb0pTT05Jbmhlcml0RmluYWw+KQotICAgICAgICBzcGFj
ZXMubV9zdWJzcGFjZUZvclRlc3REZWZhdWx0VG9KU09OSW5oZXJpdEZpbmFsID0gbWFrZVVuaXF1
ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmRlc3RydWN0aWJs
ZU9iamVjdEhlYXBDZWxsVHlwZSwgSlNUZXN0RGVmYXVsdFRvSlNPTkluaGVyaXRGaW5hbCk7Cisg
ICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdERlZmF1bHRUb0pTT05Jbmhlcml0RmluYWwg
PSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5k
ZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0RGVmYXVsdFRvSlNPTkluaGVy
aXRGaW5hbCk7CiAgICAgZWxzZQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3REZWZh
dWx0VG9KU09OSW5oZXJpdEZpbmFsID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQ
QUNFX0lOSVQodm0uaGVhcCwgKnZtLmNlbGxIZWFwQ2VsbFR5cGUsIEpTVGVzdERlZmF1bHRUb0pT
T05Jbmhlcml0RmluYWwpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3REZWZhdWx0
VG9KU09OSW5oZXJpdEZpbmFsID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNF
X0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3REZWZhdWx0VG9KU09O
SW5oZXJpdEZpbmFsKTsKICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVz
dERlZmF1bHRUb0pTT05Jbmhlcml0RmluYWwuZ2V0KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4o
InVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwt
Y29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERlbGVnYXRl
VG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGUuY3BwCShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RGVsZWdhdGVUb1NoYXJl
ZFN5bnRoZXRpY0F0dHJpYnV0ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcwLDcgKzcwLDcgQEAg
cHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZN
JiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxF
KEpTVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGVQcm90b3R5cGUsIEJhc2Up
OwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAm
dm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUq
IGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKQEAgLTI0Niw5ICsyNDYsOSBA
QCBKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3REZWxlZ2F0ZVRvU2hhcmVkCiAgICAgICAgIHJldHVy
biBzcGFjZTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0
cnVjdGlibGVPYmplY3QsIEpTVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGU+
IHx8ICFKU1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlOjpuZWVkc0Rlc3Ry
dWN0aW9uKTsKICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0
cnVjdGlibGVPYmplY3QsIEpTVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGU+
KQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhl
dGljQXR0cmlidXRlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQo
dm0uaGVhcCwgKnZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSwgSlNUZXN0RGVsZWdh
dGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZSk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNl
Rm9yVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGUgPSBtYWtlVW5pcXVlPElz
b1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmpl
Y3RIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0
ZSk7CiAgICAgZWxzZQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3REZWxlZ2F0ZVRv
U2hhcmVkU3ludGhldGljQXR0cmlidXRlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NV
QlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmNlbGxIZWFwQ2VsbFR5cGUsIEpTVGVzdERlbGVnYXRl
VG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGUpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZv
clRlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlID0gbWFrZVVuaXF1ZTxJc29T
dWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgp
LCBKU1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlKTsKICAgICBhdXRvKiBz
cGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNB
dHRyaWJ1dGUuZ2V0KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUi
KQogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RG9tYWluU2VjdXJp
dHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3REb21haW5TZWN1cml0eS5jcHAJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3REb21haW5TZWN1cml0eS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTgwLDcgKzgwLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBK
U0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAg
IFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdERvbWFpblNlY3VyaXR5
UHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOwor
ICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGlj
IEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBA
IC0zMjAsOSArMzIwLDkgQEAgSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0RG9tYWluU2VjdXJpdHk6
OgogICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vf
b2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3REb21haW5TZWN1cml0eT4gfHwg
IUpTVGVzdERvbWFpblNlY3VyaXR5OjpuZWVkc0Rlc3RydWN0aW9uKTsKICAgICBpZiBjb25zdGV4
cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdERv
bWFpblNlY3VyaXR5PikKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0RG9tYWluU2Vj
dXJpdHkgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFw
LCAqdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLCBKU1Rlc3REb21haW5TZWN1cml0
eSk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdERvbWFpblNlY3VyaXR5ID0gbWFr
ZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1
Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCksIEpTVGVzdERvbWFpblNlY3VyaXR5KTsKICAgICBl
bHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdERvbWFpblNlY3VyaXR5ID0gbWFr
ZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmNlbGxI
ZWFwQ2VsbFR5cGUsIEpTVGVzdERvbWFpblNlY3VyaXR5KTsKKyAgICAgICAgc3BhY2VzLm1fc3Vi
c3BhY2VGb3JUZXN0RG9tYWluU2VjdXJpdHkgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09f
U1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCksIEpTVGVzdERvbWFp
blNlY3VyaXR5KTsKICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdERv
bWFpblNlY3VyaXR5LmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1j
b2RlIikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRl
eDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEVuYWJsZWRC
eVNldHRpbmcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RFbmFibGVkQnlTZXR0aW5nLmNwcAkocmV2aXNpb24gMjg2MDk1KQor
KysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEVuYWJsZWRC
eVNldHRpbmcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05Miw3ICs5Miw3IEBAIHB1YmxpYzoKICAg
ICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAg
ewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3RFbmFi
bGVkQnlTZXR0aW5nUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9i
amVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9
CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0s
IEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlw
ZSkKICAgICB7CkBAIC00NTksOSArNDU5LDkgQEAgSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0RW5h
YmxlZEJ5U2V0dGluZwogICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fzc2VydChz
dGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RFbmFibGVk
QnlTZXR0aW5nPiB8fCAhSlNUZXN0RW5hYmxlZEJ5U2V0dGluZzo6bmVlZHNEZXN0cnVjdGlvbik7
CiAgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxl
T2JqZWN0LCBKU1Rlc3RFbmFibGVkQnlTZXR0aW5nPikKLSAgICAgICAgc3BhY2VzLm1fc3Vic3Bh
Y2VGb3JUZXN0RW5hYmxlZEJ5U2V0dGluZyA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19T
VUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUs
IEpTVGVzdEVuYWJsZWRCeVNldHRpbmcpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRl
c3RFbmFibGVkQnlTZXR0aW5nID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNF
X0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCksIEpTVGVz
dEVuYWJsZWRCeVNldHRpbmcpOwogICAgIGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VG
b3JUZXN0RW5hYmxlZEJ5U2V0dGluZyA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJT
UEFDRV9JTklUKHZtLmhlYXAsICp2bS5jZWxsSGVhcENlbGxUeXBlLCBKU1Rlc3RFbmFibGVkQnlT
ZXR0aW5nKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0RW5hYmxlZEJ5U2V0dGlu
ZyA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZt
LmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0RW5hYmxlZEJ5U2V0dGluZyk7CiAgICAgYXV0byog
c3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RFbmFibGVkQnlTZXR0aW5nLmdldCgpOwog
SUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKIElHTk9SRV9XQVJOSU5H
U19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEVuYWJsZWRGb3JDb250ZXh0LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RW5h
YmxlZEZvckNvbnRleHQuY3BwCShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RW5hYmxlZEZvckNvbnRleHQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC02Niw3ICs2Niw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29T
dWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNf
QVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3RFbmFibGVkRm9yQ29udGV4dFByb3Rv
dHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAg
ICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6
OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAtMTg2
LDkgKzE4Niw5IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdEVuYWJsZWRGb3JDb250ZXgKICAg
ICAgICAgcmV0dXJuIHNwYWNlOwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8
SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0RW5hYmxlZEZvckNvbnRleHQ+IHx8ICFK
U1Rlc3RFbmFibGVkRm9yQ29udGV4dDo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3Rl
eHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RF
bmFibGVkRm9yQ29udGV4dD4pCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEVuYWJs
ZWRGb3JDb250ZXh0ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQo
dm0uaGVhcCwgKnZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSwgSlNUZXN0RW5hYmxl
ZEZvckNvbnRleHQpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RFbmFibGVkRm9y
Q29udGV4dCA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhl
YXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RFbmFibGVkRm9y
Q29udGV4dCk7CiAgICAgZWxzZQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RFbmFi
bGVkRm9yQ29udGV4dCA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklU
KHZtLmhlYXAsICp2bS5jZWxsSGVhcENlbGxUeXBlLCBKU1Rlc3RFbmFibGVkRm9yQ29udGV4dCk7
CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEVuYWJsZWRGb3JDb250ZXh0ID0gbWFr
ZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhl
YXBDZWxsVHlwZSgpLCBKU1Rlc3RFbmFibGVkRm9yQ29udGV4dCk7CiAgICAgYXV0byogc3BhY2Ug
PSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RFbmFibGVkRm9yQ29udGV4dC5nZXQoKTsKIElHTk9S
RV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVH
SU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudENvbnN0cnVjdG9yLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRDb25z
dHJ1Y3Rvci5jcHAJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudENvbnN0cnVjdG9yLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTQ3LDcgKzE0Nyw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFj
ZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJU
X0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3RFdmVudENvbnN0cnVjdG9yUHJvdG90eXBlLCBC
YXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1
cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0
dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC0zMjEsOSArMzIx
LDkgQEAgSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0RXZlbnRDb25zdHJ1Y3RvcgogICAgICAgICBy
ZXR1cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpT
RGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RFdmVudENvbnN0cnVjdG9yPiB8fCAhSlNUZXN0RXZl
bnRDb25zdHJ1Y3Rvcjo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3RleHByIChzdGQ6
OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RFdmVudENvbnN0
cnVjdG9yPikKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0RXZlbnRDb25zdHJ1Y3Rv
ciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2
bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUsIEpTVGVzdEV2ZW50Q29uc3RydWN0b3Ip
OworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RFdmVudENvbnN0cnVjdG9yID0gbWFr
ZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1
Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCksIEpTVGVzdEV2ZW50Q29uc3RydWN0b3IpOwogICAg
IGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0RXZlbnRDb25zdHJ1Y3RvciA9
IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5j
ZWxsSGVhcENlbGxUeXBlLCBKU1Rlc3RFdmVudENvbnN0cnVjdG9yKTsKKyAgICAgICAgc3BhY2Vz
Lm1fc3Vic3BhY2VGb3JUZXN0RXZlbnRDb25zdHJ1Y3RvciA9IG1ha2VVbmlxdWU8SXNvU3Vic3Bh
Y2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNU
ZXN0RXZlbnRDb25zdHJ1Y3Rvcik7CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFj
ZUZvclRlc3RFdmVudENvbnN0cnVjdG9yLmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1
bnJlYWNoYWJsZS1jb2RlIikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNv
bXBhcmUiKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdEV2ZW50VGFyZ2V0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRUYXJnZXQuY3BwCShyZXZpc2lvbiAyODYwOTUp
CisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRU
YXJnZXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03Myw3ICs3Myw3IEBAIHB1YmxpYzoKICAgICBz
dGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewog
ICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3RFdmVudFRh
cmdldFByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFj
ZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0
YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAg
ewpAQCAtMjYyLDkgKzI2Miw5IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdEV2ZW50VGFyZ2V0
OjpzdWIKICAgICAgICAgcmV0dXJuIHNwYWNlOwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19i
YXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0RXZlbnRUYXJnZXQ+IHx8
ICFKU1Rlc3RFdmVudFRhcmdldDo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3RleHBy
IChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RFdmVu
dFRhcmdldD4pCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEV2ZW50VGFyZ2V0ID0g
bWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmRl
c3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSwgSlNUZXN0RXZlbnRUYXJnZXQpOworICAgICAg
ICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RFdmVudFRhcmdldCA9IG1ha2VVbmlxdWU8SXNvU3Vi
c3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhl
YXBDZWxsVHlwZSgpLCBKU1Rlc3RFdmVudFRhcmdldCk7CiAgICAgZWxzZQotICAgICAgICBzcGFj
ZXMubV9zdWJzcGFjZUZvclRlc3RFdmVudFRhcmdldCA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+
IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5jZWxsSGVhcENlbGxUeXBlLCBKU1Rlc3RF
dmVudFRhcmdldCk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEV2ZW50VGFyZ2V0
ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0u
Y2VsbEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RFdmVudFRhcmdldCk7CiAgICAgYXV0byogc3BhY2Ug
PSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RFdmVudFRhcmdldC5nZXQoKTsKIElHTk9SRV9XQVJO
SU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRh
dXRvbG9naWNhbC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RFeGNlcHRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFeGNlcHRpb24uY3BwCShyZXZpc2lv
biAyODYwOTUpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0RXhjZXB0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjYsNyArNjYsNyBAQCBwdWJsaWM6
CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQog
ICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0
RXhjZXB0aW9uUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVj
dFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAg
ICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpT
Qzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkK
ICAgICB7CkBAIC0xODcsOSArMTg3LDkgQEAgSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0RXhjZXB0
aW9uOjpzdWJzcAogICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6
OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RFeGNlcHRpb24+
IHx8ICFKU1Rlc3RFeGNlcHRpb246Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhw
ciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0RXhj
ZXB0aW9uPikKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0RXhjZXB0aW9uID0gbWFr
ZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmRlc3Ry
dWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSwgSlNUZXN0RXhjZXB0aW9uKTsKKyAgICAgICAgc3Bh
Y2VzLm1fc3Vic3BhY2VGb3JUZXN0RXhjZXB0aW9uID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4g
SVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxU
eXBlKCksIEpTVGVzdEV4Y2VwdGlvbik7CiAgICAgZWxzZQotICAgICAgICBzcGFjZXMubV9zdWJz
cGFjZUZvclRlc3RFeGNlcHRpb24gPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BB
Q0VfSU5JVCh2bS5oZWFwLCAqdm0uY2VsbEhlYXBDZWxsVHlwZSwgSlNUZXN0RXhjZXB0aW9uKTsK
KyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0RXhjZXB0aW9uID0gbWFrZVVuaXF1ZTxJ
c29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlw
ZSgpLCBKU1Rlc3RFeGNlcHRpb24pOwogICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3Bh
Y2VGb3JUZXN0RXhjZXB0aW9uLmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNo
YWJsZS1jb2RlIikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUi
KQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEdl
bmVyYXRlQWRkT3BhcXVlUm9vdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEdlbmVyYXRlQWRkT3BhcXVlUm9vdC5jcHAJKHJl
dmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RHZW5lcmF0ZUFkZE9wYXF1ZVJvb3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02Niw3
ICs2Niw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VG
b3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFD
RV9TSEFSQUJMRShKU1Rlc3RHZW5lcmF0ZUFkZE9wYXF1ZVJvb3RQcm90b3R5cGUsIEJhc2UpOwot
ICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0u
cGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNy
ZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKQEAgLTE4Nyw5ICsxODcsOSBAQCBK
U0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3RHZW5lcmF0ZUFkZE9wYXF1CiAgICAgICAgIHJldHVybiBz
cGFjZTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVj
dGlibGVPYmplY3QsIEpTVGVzdEdlbmVyYXRlQWRkT3BhcXVlUm9vdD4gfHwgIUpTVGVzdEdlbmVy
YXRlQWRkT3BhcXVlUm9vdDo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3RleHByIChz
dGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RHZW5lcmF0
ZUFkZE9wYXF1ZVJvb3Q+KQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RHZW5lcmF0
ZUFkZE9wYXF1ZVJvb3QgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5J
VCh2bS5oZWFwLCAqdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLCBKU1Rlc3RHZW5l
cmF0ZUFkZE9wYXF1ZVJvb3QpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RHZW5l
cmF0ZUFkZE9wYXF1ZVJvb3QgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0Vf
SU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0
R2VuZXJhdGVBZGRPcGFxdWVSb290KTsKICAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNw
YWNlRm9yVGVzdEdlbmVyYXRlQWRkT3BhcXVlUm9vdCA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+
IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5jZWxsSGVhcENlbGxUeXBlLCBKU1Rlc3RH
ZW5lcmF0ZUFkZE9wYXF1ZVJvb3QpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RH
ZW5lcmF0ZUFkZE9wYXF1ZVJvb3QgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BB
Q0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCksIEpTVGVzdEdlbmVyYXRlQWRk
T3BhcXVlUm9vdCk7CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RH
ZW5lcmF0ZUFkZE9wYXF1ZVJvb3QuZ2V0KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVh
Y2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFy
ZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
R2VuZXJhdGVJc1JlYWNoYWJsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGUuY3BwCShyZXZp
c2lvbiAyODYwOTUpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY2LDcgKzY2
LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihK
U0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NI
QVJBQkxFKEpTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGVQcm90b3R5cGUsIEJhc2UpOwotICAgICAg
ICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5P
YmplY3RTcGFjZSgpOwogICAgIH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0
cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBK
U0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKQEAgLTE5Nyw5ICsxOTcsOSBAQCBKU0M6Oklz
b1N1YnNwYWNlKiBKU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhCiAgICAgICAgIHJldHVybiBzcGFjZTsK
ICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVP
YmplY3QsIEpTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGU+IHx8ICFKU1Rlc3RHZW5lcmF0ZUlzUmVh
Y2hhYmxlOjpuZWVkc0Rlc3RydWN0aW9uKTsKICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFz
ZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdEdlbmVyYXRlSXNSZWFjaGFi
bGU+KQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RHZW5lcmF0ZUlzUmVhY2hhYmxl
ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZt
LmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSwgSlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJs
ZSk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEdlbmVyYXRlSXNSZWFjaGFibGUg
PSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5k
ZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJs
ZSk7CiAgICAgZWxzZQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RHZW5lcmF0ZUlz
UmVhY2hhYmxlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0u
aGVhcCwgKnZtLmNlbGxIZWFwQ2VsbFR5cGUsIEpTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGUpOwor
ICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlID0gbWFr
ZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhl
YXBDZWxsVHlwZSgpLCBKU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlKTsKICAgICBhdXRvKiBzcGFj
ZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEdlbmVyYXRlSXNSZWFjaGFibGUuZ2V0KCk7CiBJ
R05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdT
X0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2xvYmFsT2JqZWN0LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2xvYmFsT2Jq
ZWN0LmNwcAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdEdsb2JhbE9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE4
MTQsNyArMTgxNCw3IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdEdsb2JhbE9iamVjdDo6c3UK
ICAgICBhdXRvJiBzcGFjZXMgPSBjbGllbnREYXRhLnN1YnNwYWNlcygpOwogICAgIGlmIChhdXRv
KiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEdsb2JhbE9iamVjdC5nZXQoKSkKICAg
ICAgICAgcmV0dXJuIHNwYWNlOwotICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEdsb2JhbE9i
amVjdCA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAs
ICpjbGllbnREYXRhLm1faGVhcENlbGxUeXBlRm9ySlNUZXN0R2xvYmFsT2JqZWN0LCBKU1Rlc3RH
bG9iYWxPYmplY3QpOworICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEdsb2JhbE9iamVjdCA9
IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIGNsaWVu
dERhdGEubV9oZWFwQ2VsbFR5cGVGb3JKU1Rlc3RHbG9iYWxPYmplY3QsIEpTVGVzdEdsb2JhbE9i
amVjdCk7CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RHbG9iYWxP
YmplY3QuZ2V0KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQog
SUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2xvYmFsT2JqZWN0LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdEdsb2JhbE9iamVjdC5oCShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2xvYmFsT2JqZWN0LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTk4LDcgKzk4LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNl
KiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRf
SVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdEdsb2JhbE9iamVjdFByb3RvdHlwZSwgQmFzZSk7
Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2
bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSog
Y3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpJbmRleDogU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZp
ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyLmNwcAkocmV2aXNpb24gMjg2MDk1
KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEluZGV4
ZWRTZXR0ZXJOb0lkZW50aWZpZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NSw3ICs2NSw3IEBA
IHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpW
TSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJM
RShKU1Rlc3RJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyUHJvdG90eXBlLCBCYXNlKTsKLSAgICAg
ICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWlu
T2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVT
dHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
SlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC0yNzYsOSArMjc2LDkgQEAgSlNDOjpJ
c29TdWJzcGFjZSogSlNUZXN0SW5kZXhlZFNldHRlck5vSQogICAgICAgICByZXR1cm4gc3BhY2U7
CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxl
T2JqZWN0LCBKU1Rlc3RJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyPiB8fCAhSlNUZXN0SW5kZXhl
ZFNldHRlck5vSWRlbnRpZmllcjo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3RleHBy
IChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RJbmRl
eGVkU2V0dGVyTm9JZGVudGlmaWVyPikKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0
SW5kZXhlZFNldHRlck5vSWRlbnRpZmllciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19T
VUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUs
IEpTVGVzdEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXIpOworICAgICAgICBzcGFjZXMubV9zdWJz
cGFjZUZvclRlc3RJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyID0gbWFrZVVuaXF1ZTxJc29TdWJz
cGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVh
cENlbGxUeXBlKCksIEpTVGVzdEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXIpOwogICAgIGVsc2UK
LSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0SW5kZXhlZFNldHRlck5vSWRlbnRpZmll
ciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2
bS5jZWxsSGVhcENlbGxUeXBlLCBKU1Rlc3RJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyKTsKKyAg
ICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0SW5kZXhlZFNldHRlck5vSWRlbnRpZmllciA9
IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNl
bGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0SW5kZXhlZFNldHRlck5vSWRlbnRpZmllcik7CiAgICAg
YXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RJbmRleGVkU2V0dGVyTm9JZGVu
dGlmaWVyLmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikK
IElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRleDogU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEluZGV4ZWRTZXR0ZXJU
aHJvd2luZ0V4Y2VwdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5j
cHAJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24uY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC02NSw3ICs2NSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJz
cGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNT
RVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3RJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNl
cHRpb25Qcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3Bh
Y2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KICAgICBz
dGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAg
IHsKQEAgLTI3Niw5ICsyNzYsOSBAQCBKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3RJbmRleGVkU2V0
dGVyVGhyCiAgICAgICAgIHJldHVybiBzcGFjZTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNf
YmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdEluZGV4ZWRTZXR0ZXJU
aHJvd2luZ0V4Y2VwdGlvbj4gfHwgIUpTVGVzdEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlv
bjo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2Zf
djxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RJbmRleGVkU2V0dGVyVGhyb3dpbmdF
eGNlcHRpb24+KQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RJbmRleGVkU2V0dGVy
VGhyb3dpbmdFeGNlcHRpb24gPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0Vf
SU5JVCh2bS5oZWFwLCAqdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLCBKU1Rlc3RJ
bmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24pOworICAgICAgICBzcGFjZXMubV9zdWJzcGFj
ZUZvclRlc3RJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24gPSBtYWtlVW5pcXVlPElzb1N1
YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RI
ZWFwQ2VsbFR5cGUoKSwgSlNUZXN0SW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uKTsKICAg
ICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEluZGV4ZWRTZXR0ZXJUaHJv
d2luZ0V4Y2VwdGlvbiA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklU
KHZtLmhlYXAsICp2bS5jZWxsSGVhcENlbGxUeXBlLCBKU1Rlc3RJbmRleGVkU2V0dGVyVGhyb3dp
bmdFeGNlcHRpb24pOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RJbmRleGVkU2V0
dGVyVGhyb3dpbmdFeGNlcHRpb24gPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BB
Q0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCksIEpTVGVzdEluZGV4ZWRTZXR0
ZXJUaHJvd2luZ0V4Y2VwdGlvbik7CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFj
ZUZvclRlc3RJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24uZ2V0KCk7CiBJR05PUkVfV0FS
TklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0
YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0SW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW5k
ZXhlZFNldHRlcldpdGhJZGVudGlmaWVyLmNwcAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEluZGV4ZWRTZXR0ZXJXaXRo
SWRlbnRpZmllci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTczLDcgKzczLDcgQEAgcHVibGljOgog
ICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKICAg
ICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdElu
ZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllclByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVy
biAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNw
YWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJl
KEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNW
YWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAtMzA4LDkgKzMwOCw5IEBAIEpTQzo6SXNvU3Vic3Bh
Y2UqIEpTVGVzdEluZGV4ZWRTZXR0ZXJXaXQKICAgICAgICAgcmV0dXJuIHNwYWNlOwogICAgIHN0
YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwg
SlNUZXN0SW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyPiB8fCAhSlNUZXN0SW5kZXhlZFNldHRl
cldpdGhJZGVudGlmaWVyOjpuZWVkc0Rlc3RydWN0aW9uKTsKICAgICBpZiBjb25zdGV4cHIgKHN0
ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdEluZGV4ZWRT
ZXR0ZXJXaXRoSWRlbnRpZmllcj4pCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdElu
ZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19T
VUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUs
IEpTVGVzdEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllcik7CisgICAgICAgIHNwYWNlcy5tX3N1
YnNwYWNlRm9yVGVzdEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllciA9IG1ha2VVbmlxdWU8SXNv
U3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVj
dEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXIpOwogICAg
IGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0SW5kZXhlZFNldHRlcldpdGhJ
ZGVudGlmaWVyID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0u
aGVhcCwgKnZtLmNlbGxIZWFwQ2VsbFR5cGUsIEpTVGVzdEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRp
Zmllcik7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEluZGV4ZWRTZXR0ZXJXaXRo
SWRlbnRpZmllciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZt
LmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0SW5kZXhlZFNldHRlcldpdGhJZGVu
dGlmaWVyKTsKICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEluZGV4
ZWRTZXR0ZXJXaXRoSWRlbnRpZmllci5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5y
ZWFjaGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21w
YXJlIikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RJbnRlcmZhY2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2UuY3BwCShyZXZpc2lvbiAyODYwOTUpCisrKyBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTgxLDcgKzE4MSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMg
SlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAgICAg
ICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3RJbnRlcmZhY2VQcm90
b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAg
ICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KICAgICBzdGF0aWMgSlND
OjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKQEAgLTEx
MDQsOSArMTEwNCw5IEBAIHB1YmxpYzoKICAgICAgICAgICAgIHJldHVybiBzcGFjZTsKICAgICAg
ICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2Jq
ZWN0LCBUZXN0SW50ZXJmYWNlSXRlcmF0b3I+IHx8ICFUZXN0SW50ZXJmYWNlSXRlcmF0b3I6Om5l
ZWRzRGVzdHJ1Y3Rpb24pOwogICAgICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92
PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIFRlc3RJbnRlcmZhY2VJdGVyYXRvcj4pCi0gICAg
ICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RJbnRlcmZhY2VJdGVyYXRvciA9IG1ha2VV
bmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5kZXN0cnVj
dGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuZ2V0KCksIFRlc3RJbnRlcmZhY2VJdGVyYXRvcik7Cisg
ICAgICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RJbnRlcmZhY2VJdGVyYXRvciA9IG1h
a2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3Ry
dWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBUZXN0SW50ZXJmYWNlSXRlcmF0b3IpOwogICAg
ICAgICBlbHNlCi0gICAgICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RJbnRlcmZhY2VJ
dGVyYXRvciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhl
YXAsICp2bS5jZWxsSGVhcENlbGxUeXBlLCBUZXN0SW50ZXJmYWNlSXRlcmF0b3IpOworICAgICAg
ICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0SW50ZXJmYWNlSXRlcmF0b3IgPSBtYWtlVW5p
cXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENl
bGxUeXBlKCksIFRlc3RJbnRlcmZhY2VJdGVyYXRvcik7CiAgICAgICAgIGF1dG8qIHNwYWNlID0g
c3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0SW50ZXJmYWNlSXRlcmF0b3IuZ2V0KCk7CiBJR05PUkVf
V0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lO
KCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkBAIC0xMTk2LDkgKzExOTYsOSBAQCBKU0M6Oklzb1N1
YnNwYWNlKiBKU1Rlc3RJbnRlcmZhY2U6OnN1YnNwCiAgICAgICAgIHJldHVybiBzcGFjZTsKICAg
ICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmpl
Y3QsIEpTVGVzdEludGVyZmFjZT4gfHwgIUpTVGVzdEludGVyZmFjZTo6bmVlZHNEZXN0cnVjdGlv
bik7CiAgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3Rp
YmxlT2JqZWN0LCBKU1Rlc3RJbnRlcmZhY2U+KQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZv
clRlc3RJbnRlcmZhY2UgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5J
VCh2bS5oZWFwLCAqdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLCBKU1Rlc3RJbnRl
cmZhY2UpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RJbnRlcmZhY2UgPSBtYWtl
VW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVj
dGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0SW50ZXJmYWNlKTsKICAgICBlbHNlCi0g
ICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEludGVyZmFjZSA9IG1ha2VVbmlxdWU8SXNv
U3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5jZWxsSGVhcENlbGxUeXBl
LCBKU1Rlc3RJbnRlcmZhY2UpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RJbnRl
cmZhY2UgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFw
LCB2bS5jZWxsSGVhcENlbGxUeXBlKCksIEpTVGVzdEludGVyZmFjZSk7CiAgICAgYXV0byogc3Bh
Y2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RJbnRlcmZhY2UuZ2V0KCk7CiBJR05PUkVfV0FS
TklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0
YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlTGVhZGluZ1VuZGVyc2NvcmUuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRl
cmZhY2VMZWFkaW5nVW5kZXJzY29yZS5jcHAJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2VMZWFkaW5nVW5k
ZXJzY29yZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY2LDcgKzY2LDcgQEAgcHVibGljOgogICAg
IHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7
CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdEludGVy
ZmFjZUxlYWRpbmdVbmRlcnNjb3JlUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2
bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2Uo
KTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlND
OjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVl
IHByb3RvdHlwZSkKICAgICB7CkBAIC0xODcsOSArMTg3LDkgQEAgSlNDOjpJc29TdWJzcGFjZSog
SlNUZXN0SW50ZXJmYWNlTGVhZGluZwogICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAgc3RhdGlj
X2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rl
c3RJbnRlcmZhY2VMZWFkaW5nVW5kZXJzY29yZT4gfHwgIUpTVGVzdEludGVyZmFjZUxlYWRpbmdV
bmRlcnNjb3JlOjpuZWVkc0Rlc3RydWN0aW9uKTsKICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNf
YmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdEludGVyZmFjZUxlYWRp
bmdVbmRlcnNjb3JlPikKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0SW50ZXJmYWNl
TGVhZGluZ1VuZGVyc2NvcmUgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0Vf
SU5JVCh2bS5oZWFwLCAqdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLCBKU1Rlc3RJ
bnRlcmZhY2VMZWFkaW5nVW5kZXJzY29yZSk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9y
VGVzdEludGVyZmFjZUxlYWRpbmdVbmRlcnNjb3JlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4g
SVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxU
eXBlKCksIEpTVGVzdEludGVyZmFjZUxlYWRpbmdVbmRlcnNjb3JlKTsKICAgICBlbHNlCi0gICAg
ICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEludGVyZmFjZUxlYWRpbmdVbmRlcnNjb3JlID0g
bWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmNl
bGxIZWFwQ2VsbFR5cGUsIEpTVGVzdEludGVyZmFjZUxlYWRpbmdVbmRlcnNjb3JlKTsKKyAgICAg
ICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0SW50ZXJmYWNlTGVhZGluZ1VuZGVyc2NvcmUgPSBt
YWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxs
SGVhcENlbGxUeXBlKCksIEpTVGVzdEludGVyZmFjZUxlYWRpbmdVbmRlcnNjb3JlKTsKICAgICBh
dXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEludGVyZmFjZUxlYWRpbmdVbmRl
cnNjb3JlLmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikK
IElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRleDogU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEl0ZXJhYmxlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0SXRlcmFibGUuY3BwCShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SXRlcmFibGUuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC03NSw3ICs3NSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vi
c3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19T
VUJTUEFDRV9TSEFSQUJMRShKU1Rlc3RJdGVyYWJsZVByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAg
IHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9i
amVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3Ry
dWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpT
Qzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAtMjAxLDkgKzIwMSw5IEBAIHB1YmxpYzoK
ICAgICAgICAgICAgIHJldHVybiBzcGFjZTsKICAgICAgICAgc3RhdGljX2Fzc2VydChzdGQ6Omlz
X2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBUZXN0SXRlcmFibGVJdGVyYXRv
cj4gfHwgIVRlc3RJdGVyYWJsZUl0ZXJhdG9yOjpuZWVkc0Rlc3RydWN0aW9uKTsKICAgICAgICAg
aWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0
LCBUZXN0SXRlcmFibGVJdGVyYXRvcj4pCi0gICAgICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZv
clRlc3RJdGVyYWJsZUl0ZXJhdG9yID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQ
QUNFX0lOSVQodm0uaGVhcCwgKnZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5nZXQo
KSwgVGVzdEl0ZXJhYmxlSXRlcmF0b3IpOworICAgICAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VG
b3JUZXN0SXRlcmFibGVJdGVyYXRvciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJT
UEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBU
ZXN0SXRlcmFibGVJdGVyYXRvcik7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHNwYWNlcy5t
X3N1YnNwYWNlRm9yVGVzdEl0ZXJhYmxlSXRlcmF0b3IgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNl
PiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uY2VsbEhlYXBDZWxsVHlwZSwgVGVzdEl0
ZXJhYmxlSXRlcmF0b3IpOworICAgICAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0SXRl
cmFibGVJdGVyYXRvciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklU
KHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgVGVzdEl0ZXJhYmxlSXRlcmF0b3IpOwog
ICAgICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEl0ZXJhYmxlSXRl
cmF0b3IuZ2V0KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQog
SUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkBAIC0yOTMsOSAr
MjkzLDkgQEAgSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0SXRlcmFibGU6OnN1YnNwYQogICAgICAg
ICByZXR1cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6
OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RJdGVyYWJsZT4gfHwgIUpTVGVzdEl0ZXJhYmxl
OjpuZWVkc0Rlc3RydWN0aW9uKTsKICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92
PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdEl0ZXJhYmxlPikKLSAgICAgICAgc3Bh
Y2VzLm1fc3Vic3BhY2VGb3JUZXN0SXRlcmFibGUgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJ
U09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxU
eXBlLCBKU1Rlc3RJdGVyYWJsZSk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEl0
ZXJhYmxlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVh
cCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCksIEpTVGVzdEl0ZXJhYmxlKTsK
ICAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEl0ZXJhYmxlID0gbWFr
ZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmNlbGxI
ZWFwQ2VsbFR5cGUsIEpTVGVzdEl0ZXJhYmxlKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VG
b3JUZXN0SXRlcmFibGUgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5J
VCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCksIEpTVGVzdEl0ZXJhYmxlKTsKICAgICBh
dXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEl0ZXJhYmxlLmdldCgpOwogSUdO
T1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKIElHTk9SRV9XQVJOSU5HU19C
RUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SlNC
dWlsdGluQ29uc3RydWN0b3IuY3BwCShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3IuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC02OSw3ICs2OSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlND
OjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBT
VEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1
Y3RvclByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFj
ZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0
YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAg
ewpAQCAtMjMwLDkgKzIzMCw5IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdEpTQnVpbHRpbkNv
bnN0cnUKICAgICAgICAgcmV0dXJuIHNwYWNlOwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19i
YXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0SlNCdWlsdGluQ29uc3Ry
dWN0b3I+IHx8ICFKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rvcjo6bmVlZHNEZXN0cnVjdGlvbik7
CiAgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxl
T2JqZWN0LCBKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rvcj4pCi0gICAgICAgIHNwYWNlcy5tX3N1
YnNwYWNlRm9yVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFj
ZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBD
ZWxsVHlwZSwgSlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3IpOworICAgICAgICBzcGFjZXMubV9z
dWJzcGFjZUZvclRlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvciA9IG1ha2VVbmlxdWU8SXNvU3Vic3Bh
Y2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBD
ZWxsVHlwZSgpLCBKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rvcik7CiAgICAgZWxzZQotICAgICAg
ICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvciA9IG1ha2VVbmlx
dWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5jZWxsSGVhcENl
bGxUeXBlLCBKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rvcik7CisgICAgICAgIHNwYWNlcy5tX3N1
YnNwYWNlRm9yVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFj
ZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU1Rl
c3RKU0J1aWx0aW5Db25zdHJ1Y3Rvcik7CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJz
cGFjZUZvclRlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rvci5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19C
RUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9n
aWNhbC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb24uY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RMZWdhY3lGYWN0b3J5RnVu
Y3Rpb24uY3BwCShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNjcsNyArNjcsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3Bh
Y2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VS
VF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uUHJvdG90
eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAg
ICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6
U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC0yMzAs
OSArMjMwLDkgQEAgSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0TGVnYWN5RmFjdG9yeUZ1bgogICAg
ICAgICByZXR1cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxK
U0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb24+IHx8
ICFKU1Rlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb246Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlm
IGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwg
SlNUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uPikKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VG
b3JUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNP
X1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlw
ZSwgSlNUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3Bh
Y2VGb3JUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4g
SVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxU
eXBlKCksIEpTVGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlvbik7CiAgICAgZWxzZQotICAgICAgICBz
cGFjZXMubV9zdWJzcGFjZUZvclRlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb24gPSBtYWtlVW5pcXVl
PElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uY2VsbEhlYXBDZWxs
VHlwZSwgSlNUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vi
c3BhY2VGb3JUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFj
ZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU1Rl
c3RMZWdhY3lGYWN0b3J5RnVuY3Rpb24pOwogICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vi
c3BhY2VGb3JUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uLmdldCgpOwogSUdOT1JFX1dBUk5JTkdT
X0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9s
b2dpY2FsLWNvbXBhcmUiKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TGVnYWN5Tm9JbnRl
cmZhY2VPYmplY3QuY3BwCShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TGVnYWN5Tm9JbnRlcmZhY2VPYmplY3QuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC04NSw3ICs4NSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJ
c29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFU
SUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3RMZWdhY3lOb0ludGVyZmFjZU9i
amVjdFByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFj
ZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0
YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAg
ewpAQCAtMzM1LDkgKzMzNSw5IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdExlZ2FjeU5vSW50
ZXJmYWMKICAgICAgICAgcmV0dXJuIHNwYWNlOwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19i
YXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0TGVnYWN5Tm9JbnRlcmZh
Y2VPYmplY3Q+IHx8ICFKU1Rlc3RMZWdhY3lOb0ludGVyZmFjZU9iamVjdDo6bmVlZHNEZXN0cnVj
dGlvbik7CiAgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1
Y3RpYmxlT2JqZWN0LCBKU1Rlc3RMZWdhY3lOb0ludGVyZmFjZU9iamVjdD4pCi0gICAgICAgIHNw
YWNlcy5tX3N1YnNwYWNlRm9yVGVzdExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0ID0gbWFrZVVuaXF1
ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmRlc3RydWN0aWJs
ZU9iamVjdEhlYXBDZWxsVHlwZSwgSlNUZXN0TGVnYWN5Tm9JbnRlcmZhY2VPYmplY3QpOworICAg
ICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RMZWdhY3lOb0ludGVyZmFjZU9iamVjdCA9IG1h
a2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3Ry
dWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RMZWdhY3lOb0ludGVyZmFjZU9iamVj
dCk7CiAgICAgZWxzZQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RMZWdhY3lOb0lu
dGVyZmFjZU9iamVjdCA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklU
KHZtLmhlYXAsICp2bS5jZWxsSGVhcENlbGxUeXBlLCBKU1Rlc3RMZWdhY3lOb0ludGVyZmFjZU9i
amVjdCk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdExlZ2FjeU5vSW50ZXJmYWNl
T2JqZWN0ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVh
cCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RMZWdhY3lOb0ludGVyZmFjZU9iamVjdCk7
CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RMZWdhY3lOb0ludGVy
ZmFjZU9iamVjdC5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29k
ZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RMZWdhY3lPdmVy
cmlkZUJ1aWx0SW5zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdElucy5jcHAJKHJldmlzaW9u
IDI4NjA5NSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzMsNyArNzMs
NyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpT
Qzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hB
UkFCTEUoSlNUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdEluc1Byb3RvdHlwZSwgQmFzZSk7Ci0gICAg
ICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFp
bk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRl
U3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAtMjQ5LDkgKzI0OSw5IEBAIEpTQzo6
SXNvU3Vic3BhY2UqIEpTVGVzdExlZ2FjeU92ZXJyaWRlQnUKICAgICAgICAgcmV0dXJuIHNwYWNl
OwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJs
ZU9iamVjdCwgSlNUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdElucz4gfHwgIUpTVGVzdExlZ2FjeU92
ZXJyaWRlQnVpbHRJbnM6Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhwciAoc3Rk
Ojppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0TGVnYWN5T3Zl
cnJpZGVCdWlsdElucz4pCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdExlZ2FjeU92
ZXJyaWRlQnVpbHRJbnMgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5J
VCh2bS5oZWFwLCAqdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLCBKU1Rlc3RMZWdh
Y3lPdmVycmlkZUJ1aWx0SW5zKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TGVn
YWN5T3ZlcnJpZGVCdWlsdElucyA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFD
RV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBKU1Rl
c3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zKTsKICAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1
YnNwYWNlRm9yVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMgPSBtYWtlVW5pcXVlPElzb1N1YnNw
YWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uY2VsbEhlYXBDZWxsVHlwZSwgSlNU
ZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdElucyk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9y
VGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09f
U1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCksIEpTVGVzdExlZ2Fj
eU92ZXJyaWRlQnVpbHRJbnMpOwogICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VG
b3JUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdElucy5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJ
TigidW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNh
bC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RNYXBMaWtlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TWFwTGlrZS5jcHAJKHJldmlzaW9uIDI4NjA5NSkKKysr
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RNYXBMaWtlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtODIsNyArODIsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpT
Qzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAg
U1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0TWFwTGlrZVByb3RvdHlw
ZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAg
cmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0
cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAtMzY2LDkg
KzM2Niw5IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdE1hcExpa2U6OnN1YnNwYWMKICAgICAg
ICAgcmV0dXJuIHNwYWNlOwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlND
OjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0TWFwTGlrZT4gfHwgIUpTVGVzdE1hcExpa2U6
Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8
SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0TWFwTGlrZT4pCi0gICAgICAgIHNwYWNl
cy5tX3N1YnNwYWNlRm9yVGVzdE1hcExpa2UgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09f
U1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBl
LCBKU1Rlc3RNYXBMaWtlKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TWFwTGlr
ZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZt
LmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RNYXBMaWtlKTsKICAgICBl
bHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE1hcExpa2UgPSBtYWtlVW5pcXVl
PElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uY2VsbEhlYXBDZWxs
VHlwZSwgSlNUZXN0TWFwTGlrZSk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE1h
cExpa2UgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFw
LCB2bS5jZWxsSGVhcENlbGxUeXBlKCksIEpTVGVzdE1hcExpa2UpOwogICAgIGF1dG8qIHNwYWNl
ID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TWFwTGlrZS5nZXQoKTsKIElHTk9SRV9XQVJOSU5H
U19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRv
bG9naWNhbC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RNYXBMaWtlV2l0aE92ZXJyaWRkZW5PcGVyYXRpb25zLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TWFw
TGlrZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9ucy5jcHAJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RNYXBMaWtlV2l0aE92
ZXJyaWRkZW5PcGVyYXRpb25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODYsNyArODYsNyBAQCBw
dWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0m
IHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUo
SlNUZXN0TWFwTGlrZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9uc1Byb3RvdHlwZSwgQmFzZSk7Ci0g
ICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5w
bGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3Jl
YXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAtMzgwLDkgKzM4MCw5IEBAIEpT
Qzo6SXNvU3Vic3BhY2UqIEpTVGVzdE1hcExpa2VXaXRoT3ZlcnIKICAgICAgICAgcmV0dXJuIHNw
YWNlOwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0
aWJsZU9iamVjdCwgSlNUZXN0TWFwTGlrZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9ucz4gfHwgIUpT
VGVzdE1hcExpa2VXaXRoT3ZlcnJpZGRlbk9wZXJhdGlvbnM6Om5lZWRzRGVzdHJ1Y3Rpb24pOwog
ICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9i
amVjdCwgSlNUZXN0TWFwTGlrZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9ucz4pCi0gICAgICAgIHNw
YWNlcy5tX3N1YnNwYWNlRm9yVGVzdE1hcExpa2VXaXRoT3ZlcnJpZGRlbk9wZXJhdGlvbnMgPSBt
YWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uZGVz
dHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLCBKU1Rlc3RNYXBMaWtlV2l0aE92ZXJyaWRkZW5P
cGVyYXRpb25zKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TWFwTGlrZVdpdGhP
dmVycmlkZGVuT3BlcmF0aW9ucyA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFD
RV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBKU1Rl
c3RNYXBMaWtlV2l0aE92ZXJyaWRkZW5PcGVyYXRpb25zKTsKICAgICBlbHNlCi0gICAgICAgIHNw
YWNlcy5tX3N1YnNwYWNlRm9yVGVzdE1hcExpa2VXaXRoT3ZlcnJpZGRlbk9wZXJhdGlvbnMgPSBt
YWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uY2Vs
bEhlYXBDZWxsVHlwZSwgSlNUZXN0TWFwTGlrZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9ucyk7Cisg
ICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE1hcExpa2VXaXRoT3ZlcnJpZGRlbk9wZXJh
dGlvbnMgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFw
LCB2bS5jZWxsSGVhcENlbGxUeXBlKCksIEpTVGVzdE1hcExpa2VXaXRoT3ZlcnJpZGRlbk9wZXJh
dGlvbnMpOwogICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TWFwTGlr
ZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9ucy5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigi
dW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1j
b21wYXJlIikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXIuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEFuZElu
ZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXIuY3BwCShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0
dGVyTm9JZGVudGlmaWVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjYsNyArNjYsNyBAQCBwdWJs
aWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZt
KQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNU
ZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyUHJvdG90eXBlLCBCYXNlKTsKLSAg
ICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBs
YWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVh
dGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC0zNDQsOSArMzQ0LDkgQEAgSlND
OjpJc29TdWJzcGFjZSogSlNUZXN0TmFtZWRBbmRJbmRleGVkUwogICAgICAgICByZXR1cm4gc3Bh
Y2U7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3Rp
YmxlT2JqZWN0LCBKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXI+IHx8ICFK
U1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXI6Om5lZWRzRGVzdHJ1Y3Rpb24p
OwogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJs
ZU9iamVjdCwgSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyPikKLSAgICAg
ICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyTm9JZGVudGlm
aWVyID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwg
KnZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSwgSlNUZXN0TmFtZWRBbmRJbmRleGVk
U2V0dGVyTm9JZGVudGlmaWVyKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFt
ZWRBbmRJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4g
SVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxU
eXBlKCksIEpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlck5vSWRlbnRpZmllcik7CiAgICAgZWxz
ZQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJO
b0lkZW50aWZpZXIgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2
bS5oZWFwLCAqdm0uY2VsbEhlYXBDZWxsVHlwZSwgSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVy
Tm9JZGVudGlmaWVyKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRBbmRJ
bmRleGVkU2V0dGVyTm9JZGVudGlmaWVyID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NV
QlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3ROYW1lZEFu
ZEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXIpOwogICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1f
c3Vic3BhY2VGb3JUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyLmdldCgpOwog
SUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKIElHTk9SRV9XQVJOSU5H
U19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlclRocm93aW5n
RXhjZXB0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24u
Y3BwCShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24uY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC02Niw3ICs2Niw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlND
OjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBT
VEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3ROYW1lZEFuZEluZGV4ZWRT
ZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvblByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAm
dm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNl
KCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpT
Qzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1
ZSBwcm90b3R5cGUpCiAgICAgewpAQCAtMzQ0LDkgKzM0NCw5IEBAIEpTQzo6SXNvU3Vic3BhY2Uq
IEpTVGVzdE5hbWVkQW5kSW5kZXhlZFMKICAgICAgICAgcmV0dXJuIHNwYWNlOwogICAgIHN0YXRp
Y19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNU
ZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24+IHx8ICFKU1Rlc3ROYW1l
ZEFuZEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbjo6bmVlZHNEZXN0cnVjdGlvbik7CiAg
ICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2Jq
ZWN0LCBKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbj4pCi0gICAg
ICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlclRocm93aW5n
RXhjZXB0aW9uID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0u
aGVhcCwgKnZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSwgSlNUZXN0TmFtZWRBbmRJ
bmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24pOworICAgICAgICBzcGFjZXMubV9zdWJzcGFj
ZUZvclRlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbiA9IG1ha2VVbmlx
dWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJs
ZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJUaHJvd2lu
Z0V4Y2VwdGlvbik7CiAgICAgZWxzZQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RO
YW1lZEFuZEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbiA9IG1ha2VVbmlxdWU8SXNvU3Vi
c3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5jZWxsSGVhcENlbGxUeXBlLCBK
U1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbik7CisgICAgICAgIHNw
YWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0
aW9uID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwg
dm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJUaHJvd2lu
Z0V4Y2VwdGlvbik7CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RO
YW1lZEFuZEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5nZXQoKTsKIElHTk9SRV9XQVJO
SU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRh
dXRvbG9naWNhbC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllci5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyLmNwcAkocmV2aXNpb24gMjg2
MDk1KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5h
bWVkQW5kSW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NzUsNyArNzUsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNw
YWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VC
U1BBQ0VfU0hBUkFCTEUoSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXJQ
cm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7Cisg
ICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KICAgICBzdGF0aWMg
SlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKQEAg
LTQwMSw5ICs0MDEsOSBAQCBKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3ROYW1lZEFuZEluZGV4ZWRT
CiAgICAgICAgIHJldHVybiBzcGFjZTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9v
Zl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRl
cldpdGhJZGVudGlmaWVyPiB8fCAhSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0aElkZW50
aWZpZXI6Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNl
X29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0
dGVyV2l0aElkZW50aWZpZXI+KQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1l
ZEFuZEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+
IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2Vs
bFR5cGUsIEpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyKTsKKyAgICAg
ICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0aElkZW50
aWZpZXIgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFw
LCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0TmFtZWRBbmRJbmRl
eGVkU2V0dGVyV2l0aElkZW50aWZpZXIpOwogICAgIGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vi
c3BhY2VGb3JUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXIgPSBtYWtlVW5p
cXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uY2VsbEhlYXBD
ZWxsVHlwZSwgSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXIpOworICAg
ICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJXaXRoSWRl
bnRpZmllciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhl
YXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0
aElkZW50aWZpZXIpOwogICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0
TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXIuZ2V0KCk7CiBJR05PUkVfV0FSTklO
R1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0
b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyTm9JZGVudGlmaWVyLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxl
dGVyTm9JZGVudGlmaWVyLmNwcAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlck5vSWRlbnRpZmllci5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTY1LDcgKzY1LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBK
U0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAg
IFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdE5hbWVkRGVsZXRlck5v
SWRlbnRpZmllclByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmpl
Y3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQog
ICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBK
U0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUp
CiAgICAgewpAQCAtMjQ2LDkgKzI0Niw5IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdE5hbWVk
RGVsZXRlck5vSWQKICAgICAgICAgcmV0dXJuIHNwYWNlOwogICAgIHN0YXRpY19hc3NlcnQoc3Rk
Ojppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0TmFtZWREZWxl
dGVyTm9JZGVudGlmaWVyPiB8fCAhSlNUZXN0TmFtZWREZWxldGVyTm9JZGVudGlmaWVyOjpuZWVk
c0Rlc3RydWN0aW9uKTsKICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6
SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdE5hbWVkRGVsZXRlck5vSWRlbnRpZmllcj4pCi0g
ICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkRGVsZXRlck5vSWRlbnRpZmllciA9
IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5k
ZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUsIEpTVGVzdE5hbWVkRGVsZXRlck5vSWRlbnRp
Zmllcik7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkRGVsZXRlck5vSWRl
bnRpZmllciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhl
YXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3ROYW1lZERlbGV0
ZXJOb0lkZW50aWZpZXIpOwogICAgIGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JU
ZXN0TmFtZWREZWxldGVyTm9JZGVudGlmaWVyID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNP
X1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmNlbGxIZWFwQ2VsbFR5cGUsIEpTVGVzdE5hbWVk
RGVsZXRlck5vSWRlbnRpZmllcik7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5h
bWVkRGVsZXRlck5vSWRlbnRpZmllciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJT
UEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0TmFtZWREZWxl
dGVyTm9JZGVudGlmaWVyKTsKICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9y
VGVzdE5hbWVkRGVsZXRlck5vSWRlbnRpZmllci5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJ
TigidW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNh
bC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3ROYW1lZERlbGV0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRl
clRocm93aW5nRXhjZXB0aW9uLmNwcAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlclRocm93aW5nRXhj
ZXB0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjUsNyArNjUsNyBAQCBwdWJsaWM6CiAgICAg
c3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsK
ICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0TmFtZWRE
ZWxldGVyVGhyb3dpbmdFeGNlcHRpb25Qcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4g
JnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFj
ZSgpOwogICAgIH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShK
U0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFs
dWUgcHJvdG90eXBlKQogICAgIHsKQEAgLTI0Niw5ICsyNDYsOSBAQCBKU0M6Oklzb1N1YnNwYWNl
KiBKU1Rlc3ROYW1lZERlbGV0ZXJUaHJvCiAgICAgICAgIHJldHVybiBzcGFjZTsKICAgICBzdGF0
aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpT
VGVzdE5hbWVkRGVsZXRlclRocm93aW5nRXhjZXB0aW9uPiB8fCAhSlNUZXN0TmFtZWREZWxldGVy
VGhyb3dpbmdFeGNlcHRpb246Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhwciAo
c3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0TmFtZWRE
ZWxldGVyVGhyb3dpbmdFeGNlcHRpb24+KQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRl
c3ROYW1lZERlbGV0ZXJUaHJvd2luZ0V4Y2VwdGlvbiA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+
IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2Vs
bFR5cGUsIEpTVGVzdE5hbWVkRGVsZXRlclRocm93aW5nRXhjZXB0aW9uKTsKKyAgICAgICAgc3Bh
Y2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWREZWxldGVyVGhyb3dpbmdFeGNlcHRpb24gPSBtYWtl
VW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVj
dGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0TmFtZWREZWxldGVyVGhyb3dpbmdFeGNl
cHRpb24pOwogICAgIGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRE
ZWxldGVyVGhyb3dpbmdFeGNlcHRpb24gPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VC
U1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uY2VsbEhlYXBDZWxsVHlwZSwgSlNUZXN0TmFtZWREZWxl
dGVyVGhyb3dpbmdFeGNlcHRpb24pOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RO
YW1lZERlbGV0ZXJUaHJvd2luZ0V4Y2VwdGlvbiA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElT
T19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0TmFt
ZWREZWxldGVyVGhyb3dpbmdFeGNlcHRpb24pOwogICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1f
c3Vic3BhY2VGb3JUZXN0TmFtZWREZWxldGVyVGhyb3dpbmdFeGNlcHRpb24uZ2V0KCk7CiBJR05P
UkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JF
R0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyV2l0aElkZW50aWZpZXIuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllci5jcHAJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJX
aXRoSWRlbnRpZmllci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcyLDcgKzcyLDcgQEAgcHVibGlj
OgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkK
ICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVz
dE5hbWVkRGVsZXRlcldpdGhJZGVudGlmaWVyUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0
dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0
U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1
cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpK
U1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC0yNzAsOSArMjcwLDkgQEAgSlNDOjpJc29TdWJz
cGFjZSogSlNUZXN0TmFtZWREZWxldGVyV2l0aAogICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAg
c3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0
LCBKU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllcj4gfHwgIUpTVGVzdE5hbWVkRGVsZXRl
cldpdGhJZGVudGlmaWVyOjpuZWVkc0Rlc3RydWN0aW9uKTsKICAgICBpZiBjb25zdGV4cHIgKHN0
ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdE5hbWVkRGVs
ZXRlcldpdGhJZGVudGlmaWVyPikKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFt
ZWREZWxldGVyV2l0aElkZW50aWZpZXIgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VC
U1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLCBK
U1Rlc3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllcik7CisgICAgICAgIHNwYWNlcy5tX3N1YnNw
YWNlRm9yVGVzdE5hbWVkRGVsZXRlcldpdGhJZGVudGlmaWVyID0gbWFrZVVuaXF1ZTxJc29TdWJz
cGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVh
cENlbGxUeXBlKCksIEpTVGVzdE5hbWVkRGVsZXRlcldpdGhJZGVudGlmaWVyKTsKICAgICBlbHNl
Ci0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkRGVsZXRlcldpdGhJZGVudGlm
aWVyID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwg
KnZtLmNlbGxIZWFwQ2VsbFR5cGUsIEpTVGVzdE5hbWVkRGVsZXRlcldpdGhJZGVudGlmaWVyKTsK
KyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWREZWxldGVyV2l0aElkZW50aWZp
ZXIgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2
bS5jZWxsSGVhcENlbGxUeXBlKCksIEpTVGVzdE5hbWVkRGVsZXRlcldpdGhJZGVudGlmaWVyKTsK
ICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkRGVsZXRlcldp
dGhJZGVudGlmaWVyLmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1j
b2RlIikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRl
eDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVs
ZXRlcldpdGhJbmRleGVkR2V0dGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyV2l0aEluZGV4ZWRHZXR0
ZXIuY3BwCShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyV2l0aEluZGV4ZWRHZXR0ZXIuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC02Niw3ICs2Niw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29T
dWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNf
QVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSW5kZXhl
ZEdldHRlclByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RT
cGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAg
IHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6
OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAg
ICAgewpAQCAtMjYyLDkgKzI2Miw5IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdE5hbWVkRGVs
ZXRlcldpdGgKICAgICAgICAgcmV0dXJuIHNwYWNlOwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjpp
c19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0TmFtZWREZWxldGVy
V2l0aEluZGV4ZWRHZXR0ZXI+IHx8ICFKU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSW5kZXhlZEdldHRl
cjo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2Zf
djxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSW5kZXhl
ZEdldHRlcj4pCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkRGVsZXRlcldp
dGhJbmRleGVkR2V0dGVyID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lO
SVQodm0uaGVhcCwgKnZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSwgSlNUZXN0TmFt
ZWREZWxldGVyV2l0aEluZGV4ZWRHZXR0ZXIpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZv
clRlc3ROYW1lZERlbGV0ZXJXaXRoSW5kZXhlZEdldHRlciA9IG1ha2VVbmlxdWU8SXNvU3Vic3Bh
Y2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBD
ZWxsVHlwZSgpLCBKU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSW5kZXhlZEdldHRlcik7CiAgICAgZWxz
ZQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZERlbGV0ZXJXaXRoSW5kZXhl
ZEdldHRlciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhl
YXAsICp2bS5jZWxsSGVhcENlbGxUeXBlLCBKU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSW5kZXhlZEdl
dHRlcik7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkRGVsZXRlcldpdGhJ
bmRleGVkR2V0dGVyID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQo
dm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSW5k
ZXhlZEdldHRlcik7CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RO
YW1lZERlbGV0ZXJXaXRoSW5kZXhlZEdldHRlci5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJ
TigidW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNh
bC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3ROYW1lZEdldHRlckNhbGxXaXRoLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRHZXR0ZXJDYWxsV2l0aC5j
cHAJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3ROYW1lZEdldHRlckNhbGxXaXRoLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NjUsNyArNjUsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNw
YWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VC
U1BBQ0VfU0hBUkFCTEUoSlNUZXN0TmFtZWRHZXR0ZXJDYWxsV2l0aFByb3RvdHlwZSwgQmFzZSk7
Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2
bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSog
Y3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAtMjIwLDkgKzIyMCw5IEBA
IEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdE5hbWVkR2V0dGVyQ2FsbFcKICAgICAgICAgcmV0dXJu
IHNwYWNlOwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3Ry
dWN0aWJsZU9iamVjdCwgSlNUZXN0TmFtZWRHZXR0ZXJDYWxsV2l0aD4gfHwgIUpTVGVzdE5hbWVk
R2V0dGVyQ2FsbFdpdGg6Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhwciAoc3Rk
Ojppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0TmFtZWRHZXR0
ZXJDYWxsV2l0aD4pCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkR2V0dGVy
Q2FsbFdpdGggPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5o
ZWFwLCAqdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLCBKU1Rlc3ROYW1lZEdldHRl
ckNhbGxXaXRoKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRHZXR0ZXJD
YWxsV2l0aCA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhl
YXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3ROYW1lZEdldHRl
ckNhbGxXaXRoKTsKICAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5h
bWVkR2V0dGVyQ2FsbFdpdGggPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0Vf
SU5JVCh2bS5oZWFwLCAqdm0uY2VsbEhlYXBDZWxsVHlwZSwgSlNUZXN0TmFtZWRHZXR0ZXJDYWxs
V2l0aCk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkR2V0dGVyQ2FsbFdp
dGggPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2
bS5jZWxsSGVhcENlbGxUeXBlKCksIEpTVGVzdE5hbWVkR2V0dGVyQ2FsbFdpdGgpOwogICAgIGF1
dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRHZXR0ZXJDYWxsV2l0aC5n
ZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVf
V0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEdldHRlck5vSWRlbnRpZmll
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdE5hbWVkR2V0dGVyTm9JZGVudGlmaWVyLmNwcAkocmV2aXNpb24gMjg2MDk1KQor
KysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkR2V0
dGVyTm9JZGVudGlmaWVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjUsNyArNjUsNyBAQCBwdWJs
aWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZt
KQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNU
ZXN0TmFtZWRHZXR0ZXJOb0lkZW50aWZpZXJQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1
cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RT
cGFjZSgpOwogICAgIH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVy
ZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpT
VmFsdWUgcHJvdG90eXBlKQogICAgIHsKQEAgLTIyMCw5ICsyMjAsOSBAQCBKU0M6Oklzb1N1YnNw
YWNlKiBKU1Rlc3ROYW1lZEdldHRlck5vSWRlCiAgICAgICAgIHJldHVybiBzcGFjZTsKICAgICBz
dGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3Qs
IEpTVGVzdE5hbWVkR2V0dGVyTm9JZGVudGlmaWVyPiB8fCAhSlNUZXN0TmFtZWRHZXR0ZXJOb0lk
ZW50aWZpZXI6Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19i
YXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0TmFtZWRHZXR0ZXJOb0lk
ZW50aWZpZXI+KQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZEdldHRlck5v
SWRlbnRpZmllciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZt
LmhlYXAsICp2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUsIEpTVGVzdE5hbWVkR2V0
dGVyTm9JZGVudGlmaWVyKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRH
ZXR0ZXJOb0lkZW50aWZpZXIgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0Vf
SU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0
TmFtZWRHZXR0ZXJOb0lkZW50aWZpZXIpOwogICAgIGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vi
c3BhY2VGb3JUZXN0TmFtZWRHZXR0ZXJOb0lkZW50aWZpZXIgPSBtYWtlVW5pcXVlPElzb1N1YnNw
YWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uY2VsbEhlYXBDZWxsVHlwZSwgSlNU
ZXN0TmFtZWRHZXR0ZXJOb0lkZW50aWZpZXIpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZv
clRlc3ROYW1lZEdldHRlck5vSWRlbnRpZmllciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElT
T19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0TmFt
ZWRHZXR0ZXJOb0lkZW50aWZpZXIpOwogICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3Bh
Y2VGb3JUZXN0TmFtZWRHZXR0ZXJOb0lkZW50aWZpZXIuZ2V0KCk7CiBJR05PUkVfV0FSTklOR1Nf
QkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xv
Z2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0TmFtZWRHZXR0ZXJXaXRoSWRlbnRpZmllci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkR2V0dGVy
V2l0aElkZW50aWZpZXIuY3BwCShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRHZXR0ZXJXaXRoSWRlbnRpZmllci5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTcwLDcgKzcwLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBK
U0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAg
IFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdE5hbWVkR2V0dGVyV2l0
aElkZW50aWZpZXJQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2Jq
ZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0K
ICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwg
SlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBl
KQogICAgIHsKQEAgLTI0Niw5ICsyNDYsOSBAQCBKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3ROYW1l
ZEdldHRlcldpdGhJCiAgICAgICAgIHJldHVybiBzcGFjZTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0
ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdE5hbWVkR2V0
dGVyV2l0aElkZW50aWZpZXI+IHx8ICFKU1Rlc3ROYW1lZEdldHRlcldpdGhJZGVudGlmaWVyOjpu
ZWVkc0Rlc3RydWN0aW9uKTsKICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpT
Qzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdE5hbWVkR2V0dGVyV2l0aElkZW50aWZpZXI+
KQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZEdldHRlcldpdGhJZGVudGlm
aWVyID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwg
KnZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSwgSlNUZXN0TmFtZWRHZXR0ZXJXaXRo
SWRlbnRpZmllcik7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkR2V0dGVy
V2l0aElkZW50aWZpZXIgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5J
VCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0TmFt
ZWRHZXR0ZXJXaXRoSWRlbnRpZmllcik7CiAgICAgZWxzZQotICAgICAgICBzcGFjZXMubV9zdWJz
cGFjZUZvclRlc3ROYW1lZEdldHRlcldpdGhJZGVudGlmaWVyID0gbWFrZVVuaXF1ZTxJc29TdWJz
cGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmNlbGxIZWFwQ2VsbFR5cGUsIEpT
VGVzdE5hbWVkR2V0dGVyV2l0aElkZW50aWZpZXIpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFj
ZUZvclRlc3ROYW1lZEdldHRlcldpdGhJZGVudGlmaWVyID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFj
ZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU1Rl
c3ROYW1lZEdldHRlcldpdGhJZGVudGlmaWVyKTsKICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5t
X3N1YnNwYWNlRm9yVGVzdE5hbWVkR2V0dGVyV2l0aElkZW50aWZpZXIuZ2V0KCk7CiBJR05PUkVf
V0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lO
KCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJOb0lkZW50aWZpZXIuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1l
ZFNldHRlck5vSWRlbnRpZmllci5jcHAJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlck5vSWRlbnRpZmll
ci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY1LDcgKzY1LDcgQEAgcHVibGljOgogICAgIHN0YXRp
YyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAg
ICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdE5hbWVkU2V0dGVy
Tm9JZGVudGlmaWVyUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9i
amVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9
CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0s
IEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlw
ZSkKICAgICB7CkBAIC0zMDAsOSArMzAwLDkgQEAgSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0TmFt
ZWRTZXR0ZXJOb0lkZQogICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fzc2VydChz
dGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3ROYW1lZFNl
dHRlck5vSWRlbnRpZmllcj4gfHwgIUpTVGVzdE5hbWVkU2V0dGVyTm9JZGVudGlmaWVyOjpuZWVk
c0Rlc3RydWN0aW9uKTsKICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6
SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdE5hbWVkU2V0dGVyTm9JZGVudGlmaWVyPikKLSAg
ICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRTZXR0ZXJOb0lkZW50aWZpZXIgPSBt
YWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uZGVz
dHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLCBKU1Rlc3ROYW1lZFNldHRlck5vSWRlbnRpZmll
cik7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkU2V0dGVyTm9JZGVudGlm
aWVyID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwg
dm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCksIEpTVGVzdE5hbWVkU2V0dGVyTm9J
ZGVudGlmaWVyKTsKICAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5h
bWVkU2V0dGVyTm9JZGVudGlmaWVyID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQ
QUNFX0lOSVQodm0uaGVhcCwgKnZtLmNlbGxIZWFwQ2VsbFR5cGUsIEpTVGVzdE5hbWVkU2V0dGVy
Tm9JZGVudGlmaWVyKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRTZXR0
ZXJOb0lkZW50aWZpZXIgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5J
VCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCksIEpTVGVzdE5hbWVkU2V0dGVyTm9JZGVu
dGlmaWVyKTsKICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVk
U2V0dGVyTm9JZGVudGlmaWVyLmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNo
YWJsZS1jb2RlIikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUi
KQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5h
bWVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlclRocm93aW5nRXhj
ZXB0aW9uLmNwcAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24uY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC02NSw3ICs2NSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJ
c29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFU
SUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3ROYW1lZFNldHRlclRocm93aW5n
RXhjZXB0aW9uUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVj
dFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAg
ICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpT
Qzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkK
ICAgICB7CkBAIC0zMDAsOSArMzAwLDkgQEAgSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0TmFtZWRT
ZXR0ZXJUaHJvdwogICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6
OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3ROYW1lZFNldHRl
clRocm93aW5nRXhjZXB0aW9uPiB8fCAhSlNUZXN0TmFtZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlv
bjo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2Zf
djxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3ROYW1lZFNldHRlclRocm93aW5nRXhj
ZXB0aW9uPikKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRTZXR0ZXJUaHJv
d2luZ0V4Y2VwdGlvbiA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklU
KHZtLmhlYXAsICp2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUsIEpTVGVzdE5hbWVk
U2V0dGVyVGhyb3dpbmdFeGNlcHRpb24pOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRl
c3ROYW1lZFNldHRlclRocm93aW5nRXhjZXB0aW9uID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4g
SVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxU
eXBlKCksIEpTVGVzdE5hbWVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24pOwogICAgIGVsc2UKLSAg
ICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlv
biA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2
bS5jZWxsSGVhcENlbGxUeXBlLCBKU1Rlc3ROYW1lZFNldHRlclRocm93aW5nRXhjZXB0aW9uKTsK
KyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRTZXR0ZXJUaHJvd2luZ0V4Y2Vw
dGlvbiA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAs
IHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0TmFtZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlv
bik7CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZFNldHRl
clRocm93aW5nRXhjZXB0aW9uLmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNo
YWJsZS1jb2RlIikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUi
KQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5h
bWVkU2V0dGVyV2l0aElkZW50aWZpZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhJZGVudGlmaWVy
LmNwcAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aElkZW50aWZpZXIuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC03Miw3ICs3Miw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFj
ZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJU
X0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3ROYW1lZFNldHRlcldpdGhJZGVudGlmaWVyUHJv
dG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAg
ICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpT
Qzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC0z
MzEsOSArMzMxLDkgQEAgSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSQog
ICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2Zf
djxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3ROYW1lZFNldHRlcldpdGhJZGVudGlm
aWVyPiB8fCAhSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmllcjo6bmVlZHNEZXN0cnVjdGlv
bik7CiAgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3Rp
YmxlT2JqZWN0LCBKU1Rlc3ROYW1lZFNldHRlcldpdGhJZGVudGlmaWVyPikKLSAgICAgICAgc3Bh
Y2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmllciA9IG1ha2VVbmlx
dWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5kZXN0cnVjdGli
bGVPYmplY3RIZWFwQ2VsbFR5cGUsIEpTVGVzdE5hbWVkU2V0dGVyV2l0aElkZW50aWZpZXIpOwor
ICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZFNldHRlcldpdGhJZGVudGlmaWVy
ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0u
ZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCksIEpTVGVzdE5hbWVkU2V0dGVyV2l0aElk
ZW50aWZpZXIpOwogICAgIGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFt
ZWRTZXR0ZXJXaXRoSWRlbnRpZmllciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJT
UEFDRV9JTklUKHZtLmhlYXAsICp2bS5jZWxsSGVhcENlbGxUeXBlLCBKU1Rlc3ROYW1lZFNldHRl
cldpdGhJZGVudGlmaWVyKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRT
ZXR0ZXJXaXRoSWRlbnRpZmllciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFD
RV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0TmFtZWRTZXR0ZXJX
aXRoSWRlbnRpZmllcik7CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRl
c3ROYW1lZFNldHRlcldpdGhJZGVudGlmaWVyLmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lO
KCJ1bnJlYWNoYWJsZS1jb2RlIikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2Fs
LWNvbXBhcmUiKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXIuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldp
dGhJbmRleGVkR2V0dGVyLmNwcAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0
ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NSw3ICs3NSw3IEBAIHB1YmxpYzoKICAgICBzdGF0
aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAg
ICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3ROYW1lZFNldHRl
cldpdGhJbmRleGVkR2V0dGVyUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5w
bGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsK
ICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpW
TSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHBy
b3RvdHlwZSkKICAgICB7CkBAIC0zNzgsOSArMzc4LDkgQEAgSlNDOjpJc29TdWJzcGFjZSogSlNU
ZXN0TmFtZWRTZXR0ZXJXaXRoSQogICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fz
c2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RO
YW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyPiB8fCAhSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5k
ZXhlZEdldHRlcjo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3RleHByIChzdGQ6Omlz
X2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3ROYW1lZFNldHRlcldp
dGhJbmRleGVkR2V0dGVyPikKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRT
ZXR0ZXJXaXRoSW5kZXhlZEdldHRlciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJT
UEFDRV9JTklUKHZtLmhlYXAsICp2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUsIEpT
VGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXIpOworICAgICAgICBzcGFjZXMubV9zdWJz
cGFjZUZvclRlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyID0gbWFrZVVuaXF1ZTxJc29T
dWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0
SGVhcENlbGxUeXBlKCksIEpTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXIpOwogICAg
IGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRTZXR0ZXJXaXRoSW5k
ZXhlZEdldHRlciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZt
LmhlYXAsICp2bS5jZWxsSGVhcENlbGxUeXBlLCBKU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVk
R2V0dGVyKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRTZXR0ZXJXaXRo
SW5kZXhlZEdldHRlciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklU
KHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5k
ZXhlZEdldHRlcik7CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RO
YW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyLmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lO
KCJ1bnJlYWNoYWJsZS1jb2RlIikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2Fs
LWNvbXBhcmUiKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0ZXIuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1l
ZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQW5kU2V0dGVyLmNwcAkocmV2aXNpb24gMjg2MDk1KQor
KysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0
dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NSw3
ICs3NSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VG
b3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFD
RV9TSEFSQUJMRShKU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQW5kU2V0dGVyUHJv
dG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAg
ICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpT
Qzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC00
MjgsOSArNDI4LDkgQEAgSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSQog
ICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2Zf
djxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVk
R2V0dGVyQW5kU2V0dGVyPiB8fCAhSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlckFu
ZFNldHRlcjo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jh
c2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3ROYW1lZFNldHRlcldpdGhJ
bmRleGVkR2V0dGVyQW5kU2V0dGVyPikKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0
TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlckFuZFNldHRlciA9IG1ha2VVbmlxdWU8SXNvU3Vi
c3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5kZXN0cnVjdGlibGVPYmplY3RI
ZWFwQ2VsbFR5cGUsIEpTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0ZXIp
OworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZFNldHRlcldpdGhJbmRleGVk
R2V0dGVyQW5kU2V0dGVyID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lO
SVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCksIEpTVGVzdE5h
bWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0ZXIpOwogICAgIGVsc2UKLSAgICAgICAg
c3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlckFuZFNl
dHRlciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAs
ICp2bS5jZWxsSGVhcENlbGxUeXBlLCBKU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVy
QW5kU2V0dGVyKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRTZXR0ZXJX
aXRoSW5kZXhlZEdldHRlckFuZFNldHRlciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19T
VUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0TmFtZWRT
ZXR0ZXJXaXRoSW5kZXhlZEdldHRlckFuZFNldHRlcik7CiAgICAgYXV0byogc3BhY2UgPSBzcGFj
ZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQW5kU2V0dGVy
LmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKIElHTk9S
RV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRleDogU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2Fj
eU92ZXJyaWRlQnVpbHRJbnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lPdmVycmlkZUJ1
aWx0SW5zLmNwcAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeU92ZXJyaWRlQnVpbHRJ
bnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NSw3ICs2NSw3IEBAIHB1YmxpYzoKICAgICBzdGF0
aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAg
ICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3ROYW1lZFNldHRl
cldpdGhMZWdhY3lPdmVycmlkZUJ1aWx0SW5zUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0
dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0
U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1
cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpK
U1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC0yNzcsOSArMjc3LDkgQEAgSlNDOjpJc29TdWJz
cGFjZSogSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTAogICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAg
c3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0
LCBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lPdmVycmlkZUJ1aWx0SW5zPiB8fCAhSlNUZXN0
TmFtZWRTZXR0ZXJXaXRoTGVnYWN5T3ZlcnJpZGVCdWlsdEluczo6bmVlZHNEZXN0cnVjdGlvbik7
CiAgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxl
T2JqZWN0LCBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lPdmVycmlkZUJ1aWx0SW5zPikKLSAg
ICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5T3ZlcnJp
ZGVCdWlsdElucyA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZt
LmhlYXAsICp2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUsIEpTVGVzdE5hbWVkU2V0
dGVyV2l0aExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFj
ZUZvclRlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lPdmVycmlkZUJ1aWx0SW5zID0gbWFrZVVuaXF1
ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxl
T2JqZWN0SGVhcENlbGxUeXBlKCksIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeU92ZXJyaWRl
QnVpbHRJbnMpOwogICAgIGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFt
ZWRTZXR0ZXJXaXRoTGVnYWN5T3ZlcnJpZGVCdWlsdElucyA9IG1ha2VVbmlxdWU8SXNvU3Vic3Bh
Y2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5jZWxsSGVhcENlbGxUeXBlLCBKU1Rl
c3ROYW1lZFNldHRlcldpdGhMZWdhY3lPdmVycmlkZUJ1aWx0SW5zKTsKKyAgICAgICAgc3BhY2Vz
Lm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5T3ZlcnJpZGVCdWlsdElucyA9
IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNl
bGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5T3ZlcnJpZGVCdWls
dElucyk7CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZFNl
dHRlcldpdGhMZWdhY3lPdmVycmlkZUJ1aWx0SW5zLmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JF
R0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dp
Y2FsLWNvbXBhcmUiKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllcy5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllcy5jcHAJKHJldmlz
aW9uIDI4NjA5NSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXMuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC03NCw3ICs3NCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29T
dWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNf
QVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lV
bmZvcmdlYWJsZVByb3BlcnRpZXNQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZt
LnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgp
OwogICAgIH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6
OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUg
cHJvdG90eXBlKQogICAgIHsKQEAgLTM2MSw5ICszNjEsOSBAQCBKU0M6Oklzb1N1YnNwYWNlKiBK
U1Rlc3ROYW1lZFNldHRlcldpdGhMCiAgICAgICAgIHJldHVybiBzcGFjZTsKICAgICBzdGF0aWNf
YXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVz
dE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllcz4gfHwgIUpTVGVzdE5h
bWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllczo6bmVlZHNEZXN0cnVjdGlv
bik7CiAgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3Rp
YmxlT2JqZWN0LCBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRp
ZXM+KQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZFNldHRlcldpdGhMZWdh
Y3lVbmZvcmdlYWJsZVByb3BlcnRpZXMgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VC
U1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLCBK
U1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXMpOworICAgICAg
ICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJs
ZVByb3BlcnRpZXMgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2
bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0TmFtZWRT
ZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzKTsKICAgICBlbHNlCi0gICAgICAg
IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxl
UHJvcGVydGllcyA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZt
LmhlYXAsICp2bS5jZWxsSGVhcENlbGxUeXBlLCBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lV
bmZvcmdlYWJsZVByb3BlcnRpZXMpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RO
YW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXMgPSBtYWtlVW5pcXVlPElz
b1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBl
KCksIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllcyk7CiAg
ICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZFNldHRlcldpdGhM
ZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXMuZ2V0KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4o
InVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwt
Y29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5
T3ZlcnJpZGVCdWlsdElucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxl
UHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMuY3BwCShyZXZpc2lvbiAyODYwOTUp
CisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRT
ZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWls
dElucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc0LDcgKzc0LDcgQEAgcHVibGljOgogICAgIHN0
YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAg
ICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdE5hbWVkU2V0
dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJ
bnNQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7
CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KICAgICBzdGF0
aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsK
QEAgLTMzOCw5ICszMzgsOSBAQCBKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3ROYW1lZFNldHRlcldp
dGhMCiAgICAgICAgIHJldHVybiBzcGFjZTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFz
ZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExl
Z2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM+IHx8ICFK
U1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lP
dmVycmlkZUJ1aWx0SW5zOjpuZWVkc0Rlc3RydWN0aW9uKTsKICAgICBpZiBjb25zdGV4cHIgKHN0
ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdE5hbWVkU2V0
dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJ
bnM+KQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZFNldHRlcldpdGhMZWdh
Y3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zID0gbWFrZVVu
aXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmRlc3RydWN0
aWJsZU9iamVjdEhlYXBDZWxsVHlwZSwgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3Jn
ZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdElucyk7CisgICAgICAgIHNwYWNl
cy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVy
dGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJ
U09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5
cGUoKSwgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5k
TGVnYWN5T3ZlcnJpZGVCdWlsdElucyk7CiAgICAgZWxzZQotICAgICAgICBzcGFjZXMubV9zdWJz
cGFjZUZvclRlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRM
ZWdhY3lPdmVycmlkZUJ1aWx0SW5zID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQ
QUNFX0lOSVQodm0uaGVhcCwgKnZtLmNlbGxIZWFwQ2VsbFR5cGUsIEpTVGVzdE5hbWVkU2V0dGVy
V2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMp
OworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lV
bmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zID0gbWFrZVVuaXF1
ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxs
VHlwZSgpLCBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNB
bmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zKTsKICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1
YnNwYWNlRm9yVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0Fu
ZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMuZ2V0KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVu
cmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29t
cGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0TmFtZXNwYWNlT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZXNwYWNlT2JqZWN0LmNwcAkocmV2aXNpb24g
Mjg2MDk1KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dE5hbWVzcGFjZU9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4MCw5ICsyODAsOSBAQCBK
U0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3ROYW1lc3BhY2VPYmplY3Q6CiAgICAgICAgIHJldHVybiBz
cGFjZTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVj
dGlibGVPYmplY3QsIEpTVGVzdE5hbWVzcGFjZU9iamVjdD4gfHwgIUpTVGVzdE5hbWVzcGFjZU9i
amVjdDo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vf
b2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3ROYW1lc3BhY2VPYmplY3Q+KQot
ICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lc3BhY2VPYmplY3QgPSBtYWtlVW5p
cXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uZGVzdHJ1Y3Rp
YmxlT2JqZWN0SGVhcENlbGxUeXBlLCBKU1Rlc3ROYW1lc3BhY2VPYmplY3QpOworICAgICAgICBz
cGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lc3BhY2VPYmplY3QgPSBtYWtlVW5pcXVlPElzb1N1
YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RI
ZWFwQ2VsbFR5cGUoKSwgSlNUZXN0TmFtZXNwYWNlT2JqZWN0KTsKICAgICBlbHNlCi0gICAgICAg
IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVzcGFjZU9iamVjdCA9IG1ha2VVbmlxdWU8SXNv
U3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5jZWxsSGVhcENlbGxUeXBl
LCBKU1Rlc3ROYW1lc3BhY2VPYmplY3QpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRl
c3ROYW1lc3BhY2VPYmplY3QgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0Vf
SU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCksIEpTVGVzdE5hbWVzcGFjZU9iamVj
dCk7CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lc3BhY2VP
YmplY3QuZ2V0KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQog
SUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Tm9kZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5v
ZGUuY3BwCShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0Tm9kZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk1LDcgKzk1LDcg
QEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6
OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJB
QkxFKEpTVGVzdE5vZGVQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWlu
T2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAg
IH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2
bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90
eXBlKQogICAgIHsKQEAgLTQwNSw5ICs0MDUsOSBAQCBwdWJsaWM6CiAgICAgICAgICAgICByZXR1
cm4gc3BhY2U7CiAgICAgICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpK
U0Rlc3RydWN0aWJsZU9iamVjdCwgVGVzdE5vZGVJdGVyYXRvcj4gfHwgIVRlc3ROb2RlSXRlcmF0
b3I6Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAgICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFz
ZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIFRlc3ROb2RlSXRlcmF0b3I+KQotICAg
ICAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0Tm9kZUl0ZXJhdG9yID0gbWFrZVVuaXF1
ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmRlc3RydWN0aWJs
ZU9iamVjdEhlYXBDZWxsVHlwZS5nZXQoKSwgVGVzdE5vZGVJdGVyYXRvcik7CisgICAgICAgICAg
ICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROb2RlSXRlcmF0b3IgPSBtYWtlVW5pcXVlPElzb1N1
YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RI
ZWFwQ2VsbFR5cGUoKSwgVGVzdE5vZGVJdGVyYXRvcik7CiAgICAgICAgIGVsc2UKLSAgICAgICAg
ICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5vZGVJdGVyYXRvciA9IG1ha2VVbmlxdWU8SXNv
U3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5jZWxsSGVhcENlbGxUeXBl
LCBUZXN0Tm9kZUl0ZXJhdG9yKTsKKyAgICAgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVz
dE5vZGVJdGVyYXRvciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklU
KHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgVGVzdE5vZGVJdGVyYXRvcik7CiAgICAg
ICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0Tm9kZUl0ZXJhdG9yLmdl
dCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKIElHTk9SRV9X
QVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpAQCAtNDk3LDkgKzQ5Nyw5IEBA
IEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdE5vZGU6OnN1YnNwYWNlRm8KICAgICAgICAgcmV0dXJu
IHNwYWNlOwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3Ry
dWN0aWJsZU9iamVjdCwgSlNUZXN0Tm9kZT4gfHwgIUpTVGVzdE5vZGU6Om5lZWRzRGVzdHJ1Y3Rp
b24pOwogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0
aWJsZU9iamVjdCwgSlNUZXN0Tm9kZT4pCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVz
dE5vZGUgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFw
LCAqdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLCBKU1Rlc3ROb2RlKTsKKyAgICAg
ICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0Tm9kZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+
IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxs
VHlwZSgpLCBKU1Rlc3ROb2RlKTsKICAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNl
Rm9yVGVzdE5vZGUgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2
bS5oZWFwLCAqdm0uY2VsbEhlYXBDZWxsVHlwZSwgSlNUZXN0Tm9kZSk7CisgICAgICAgIHNwYWNl
cy5tX3N1YnNwYWNlRm9yVGVzdE5vZGUgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VC
U1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCksIEpTVGVzdE5vZGUpOwog
ICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0Tm9kZS5nZXQoKTsKIElH
Tk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1Nf
QkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCShyZXZpc2lvbiAy
ODYwOTUpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
T2JqLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTg2Niw3ICsxODY2LDcgQEAgcHVibGljOgogICAg
IHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7
CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdE9ialBy
b3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAg
ICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBK
U0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAt
OTAwNiw5ICs5MDA2LDkgQEAgSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0T2JqOjpzdWJzcGFjZUZv
cgogICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vf
b2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RPYmo+IHx8ICFKU1Rlc3RPYmo6
Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8
SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0T2JqPikKLSAgICAgICAgc3BhY2VzLm1f
c3Vic3BhY2VGb3JUZXN0T2JqID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNF
X0lOSVQodm0uaGVhcCwgKnZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSwgSlNUZXN0
T2JqKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0T2JqID0gbWFrZVVuaXF1ZTxJ
c29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2Jq
ZWN0SGVhcENlbGxUeXBlKCksIEpTVGVzdE9iaik7CiAgICAgZWxzZQotICAgICAgICBzcGFjZXMu
bV9zdWJzcGFjZUZvclRlc3RPYmogPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BB
Q0VfSU5JVCh2bS5oZWFwLCAqdm0uY2VsbEhlYXBDZWxsVHlwZSwgSlNUZXN0T2JqKTsKKyAgICAg
ICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0T2JqID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4g
SVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RP
YmopOwogICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0T2JqLmdldCgp
OwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKIElHTk9SRV9XQVJO
SU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRleDogU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9wZXJhdGlvbkNvbmRpdGlvbmFsLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0T3BlcmF0aW9uQ29uZGl0aW9uYWwuY3BwCShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3BlcmF0aW9uQ29uZGl0aW9u
YWwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04MSw3ICs4MSw3IEBAIHB1YmxpYzoKICAgICBzdGF0
aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAg
ICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3RPcGVyYXRpb25D
b25kaXRpb25hbFByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmpl
Y3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQog
ICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBK
U0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUp
CiAgICAgewpAQCAtMjM0LDkgKzIzNCw5IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdE9wZXJh
dGlvbkNvbmRpdGkKICAgICAgICAgcmV0dXJuIHNwYWNlOwogICAgIHN0YXRpY19hc3NlcnQoc3Rk
Ojppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0T3BlcmF0aW9u
Q29uZGl0aW9uYWw+IHx8ICFKU1Rlc3RPcGVyYXRpb25Db25kaXRpb25hbDo6bmVlZHNEZXN0cnVj
dGlvbik7CiAgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1
Y3RpYmxlT2JqZWN0LCBKU1Rlc3RPcGVyYXRpb25Db25kaXRpb25hbD4pCi0gICAgICAgIHNwYWNl
cy5tX3N1YnNwYWNlRm9yVGVzdE9wZXJhdGlvbkNvbmRpdGlvbmFsID0gbWFrZVVuaXF1ZTxJc29T
dWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmRlc3RydWN0aWJsZU9iamVj
dEhlYXBDZWxsVHlwZSwgSlNUZXN0T3BlcmF0aW9uQ29uZGl0aW9uYWwpOworICAgICAgICBzcGFj
ZXMubV9zdWJzcGFjZUZvclRlc3RPcGVyYXRpb25Db25kaXRpb25hbCA9IG1ha2VVbmlxdWU8SXNv
U3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVj
dEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RPcGVyYXRpb25Db25kaXRpb25hbCk7CiAgICAgZWxzZQot
ICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RPcGVyYXRpb25Db25kaXRpb25hbCA9IG1h
a2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5jZWxs
SGVhcENlbGxUeXBlLCBKU1Rlc3RPcGVyYXRpb25Db25kaXRpb25hbCk7CisgICAgICAgIHNwYWNl
cy5tX3N1YnNwYWNlRm9yVGVzdE9wZXJhdGlvbkNvbmRpdGlvbmFsID0gbWFrZVVuaXF1ZTxJc29T
dWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgp
LCBKU1Rlc3RPcGVyYXRpb25Db25kaXRpb25hbCk7CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMu
bV9zdWJzcGFjZUZvclRlc3RPcGVyYXRpb25Db25kaXRpb25hbC5nZXQoKTsKIElHTk9SRV9XQVJO
SU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRh
dXRvbG9naWNhbC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcmxvYWRl
ZENvbnN0cnVjdG9ycy5jcHAJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNjksNyArNjksNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6
SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RB
VElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVj
dG9yc1Byb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFj
ZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0
YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAg
ewpAQCAtMjk1LDkgKzI5NSw5IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdE92ZXJsb2FkZWRD
b25zdHIKICAgICAgICAgcmV0dXJuIHNwYWNlOwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19i
YXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0T3ZlcmxvYWRlZENvbnN0
cnVjdG9ycz4gfHwgIUpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM6Om5lZWRzRGVzdHJ1Y3Rp
b24pOwogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0
aWJsZU9iamVjdCwgSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycz4pCi0gICAgICAgIHNwYWNl
cy5tX3N1YnNwYWNlRm9yVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMgPSBtYWtlVW5pcXVlPElz
b1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uZGVzdHJ1Y3RpYmxlT2Jq
ZWN0SGVhcENlbGxUeXBlLCBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzKTsKKyAgICAgICAg
c3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyA9IG1ha2VVbmlx
dWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJs
ZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzKTsKICAg
ICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE92ZXJsb2FkZWRDb25zdHJ1
Y3RvcnMgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFw
LCAqdm0uY2VsbEhlYXBDZWxsVHlwZSwgSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyk7Cisg
ICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMgPSBt
YWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxs
SGVhcENlbGxUeXBlKCksIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMpOwogICAgIGF1dG8q
IHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5n
ZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVf
V0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3Jz
V2l0aFNlcXVlbmNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5jZS5j
cHAJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzV2l0aFNlcXVlbmNlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNjgsNyArNjgsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNv
U3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElD
X0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9y
c1dpdGhTZXF1ZW5jZVByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5P
YmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAg
fQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZt
LCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5
cGUpCiAgICAgewpAQCAtMjM4LDkgKzIzOCw5IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdE92
ZXJsb2FkZWRDb25zdHIKICAgICAgICAgcmV0dXJuIHNwYWNlOwogICAgIHN0YXRpY19hc3NlcnQo
c3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0T3Zlcmxv
YWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5jZT4gfHwgIUpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1
Y3RvcnNXaXRoU2VxdWVuY2U6Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhwciAo
c3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0T3Zlcmxv
YWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5jZT4pCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNl
Rm9yVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2UgPSBtYWtlVW5pcXVlPElz
b1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uZGVzdHJ1Y3RpYmxlT2Jq
ZWN0SGVhcENlbGxUeXBlLCBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzV2l0aFNlcXVlbmNl
KTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9y
c1dpdGhTZXF1ZW5jZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklU
KHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RPdmVy
bG9hZGVkQ29uc3RydWN0b3JzV2l0aFNlcXVlbmNlKTsKICAgICBlbHNlCi0gICAgICAgIHNwYWNl
cy5tX3N1YnNwYWNlRm9yVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2UgPSBt
YWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uY2Vs
bEhlYXBDZWxsVHlwZSwgSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5jZSk7
CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNX
aXRoU2VxdWVuY2UgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2
bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCksIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3Rv
cnNXaXRoU2VxdWVuY2UpOwogICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JU
ZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5jZS5nZXQoKTsKIElHTk9SRV9XQVJO
SU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRh
dXRvbG9naWNhbC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RQbHVnaW5JbnRlcmZhY2UuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RQbHVnaW5JbnRlcmZhY2Uu
Y3BwCShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0UGx1Z2luSW50ZXJmYWNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjQs
NyArNjQsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNl
Rm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BB
Q0VfU0hBUkFCTEUoSlNUZXN0UGx1Z2luSW50ZXJmYWNlUHJvdG90eXBlLCBCYXNlKTsKLSAgICAg
ICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWlu
T2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVT
dHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
SlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC0yNDQsOSArMjQ0LDkgQEAgSlNDOjpJ
c29TdWJzcGFjZSogSlNUZXN0UGx1Z2luSW50ZXJmYWNlOgogICAgICAgICByZXR1cm4gc3BhY2U7
CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxl
T2JqZWN0LCBKU1Rlc3RQbHVnaW5JbnRlcmZhY2U+IHx8ICFKU1Rlc3RQbHVnaW5JbnRlcmZhY2U6
Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8
SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0UGx1Z2luSW50ZXJmYWNlPikKLSAgICAg
ICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0UGx1Z2luSW50ZXJmYWNlID0gbWFrZVVuaXF1ZTxJ
c29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmRlc3RydWN0aWJsZU9i
amVjdEhlYXBDZWxsVHlwZSwgSlNUZXN0UGx1Z2luSW50ZXJmYWNlKTsKKyAgICAgICAgc3BhY2Vz
Lm1fc3Vic3BhY2VGb3JUZXN0UGx1Z2luSW50ZXJmYWNlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFj
ZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENl
bGxUeXBlKCksIEpTVGVzdFBsdWdpbkludGVyZmFjZSk7CiAgICAgZWxzZQotICAgICAgICBzcGFj
ZXMubV9zdWJzcGFjZUZvclRlc3RQbHVnaW5JbnRlcmZhY2UgPSBtYWtlVW5pcXVlPElzb1N1YnNw
YWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uY2VsbEhlYXBDZWxsVHlwZSwgSlNU
ZXN0UGx1Z2luSW50ZXJmYWNlKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0UGx1
Z2luSW50ZXJmYWNlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQo
dm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RQbHVnaW5JbnRlcmZhY2UpOwog
ICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0UGx1Z2luSW50ZXJmYWNl
LmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKIElHTk9S
RV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRleDogU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFByb21pc2VSZWplY3Rpb25FdmVu
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudC5jcHAJKHJldmlzaW9uIDI4NjA5NSkKKysr
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RQcm9taXNlUmVq
ZWN0aW9uRXZlbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDgsNyArMTQ4LDcgQEAgcHVibGlj
OgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkK
ICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVz
dFByb21pc2VSZWplY3Rpb25FdmVudFByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAm
dm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNl
KCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpT
Qzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1
ZSBwcm90b3R5cGUpCiAgICAgewpAQCAtMzAxLDkgKzMwMSw5IEBAIEpTQzo6SXNvU3Vic3BhY2Uq
IEpTVGVzdFByb21pc2VSZWplY3Rpb24KICAgICAgICAgcmV0dXJuIHNwYWNlOwogICAgIHN0YXRp
Y19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNU
ZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50PiB8fCAhSlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50
OjpuZWVkc0Rlc3RydWN0aW9uKTsKICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92
PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudD4p
Ci0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFByb21pc2VSZWplY3Rpb25FdmVudCA9
IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5k
ZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUsIEpTVGVzdFByb21pc2VSZWplY3Rpb25FdmVu
dCk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFByb21pc2VSZWplY3Rpb25FdmVu
dCA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZt
LmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RQcm9taXNlUmVqZWN0aW9u
RXZlbnQpOwogICAgIGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0UHJvbWlz
ZVJlamVjdGlvbkV2ZW50ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lO
SVQodm0uaGVhcCwgKnZtLmNlbGxIZWFwQ2VsbFR5cGUsIEpTVGVzdFByb21pc2VSZWplY3Rpb25F
dmVudCk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFByb21pc2VSZWplY3Rpb25F
dmVudCA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAs
IHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50KTsKICAg
ICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFByb21pc2VSZWplY3Rpb25F
dmVudC5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJ
R05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RSZWFkT25seU1hcExpa2Uu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RSZWFkT25seU1hcExpa2UuY3BwCShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0UmVhZE9ubHlNYXBMaWtlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNzksNyArNzksNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpT
Qzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAg
U1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0UmVhZE9ubHlNYXBMaWtl
UHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOwor
ICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGlj
IEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBA
IC0zMDUsOSArMzA1LDkgQEAgSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0UmVhZE9ubHlNYXBMaWtl
OgogICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vf
b2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RSZWFkT25seU1hcExpa2U+IHx8
ICFKU1Rlc3RSZWFkT25seU1hcExpa2U6Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0
ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0
UmVhZE9ubHlNYXBMaWtlPikKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0UmVhZE9u
bHlNYXBMaWtlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0u
aGVhcCwgKnZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSwgSlNUZXN0UmVhZE9ubHlN
YXBMaWtlKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0UmVhZE9ubHlNYXBMaWtl
ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0u
ZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCksIEpTVGVzdFJlYWRPbmx5TWFwTGlrZSk7
CiAgICAgZWxzZQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RSZWFkT25seU1hcExp
a2UgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAq
dm0uY2VsbEhlYXBDZWxsVHlwZSwgSlNUZXN0UmVhZE9ubHlNYXBMaWtlKTsKKyAgICAgICAgc3Bh
Y2VzLm1fc3Vic3BhY2VGb3JUZXN0UmVhZE9ubHlNYXBMaWtlID0gbWFrZVVuaXF1ZTxJc29TdWJz
cGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBK
U1Rlc3RSZWFkT25seU1hcExpa2UpOwogICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3Bh
Y2VGb3JUZXN0UmVhZE9ubHlNYXBMaWtlLmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1
bnJlYWNoYWJsZS1jb2RlIikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNv
bXBhcmUiKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdFJlYWRPbmx5U2V0TGlrZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFJlYWRPbmx5U2V0TGlrZS5jcHAJKHJldmlzaW9u
IDI4NjA5NSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RSZWFkT25seVNldExpa2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03OCw3ICs3OCw3IEBAIHB1
YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYg
dm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShK
U1Rlc3RSZWFkT25seVNldExpa2VQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZt
LnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgp
OwogICAgIH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6
OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUg
cHJvdG90eXBlKQogICAgIHsKQEAgLTI4NCw5ICsyODQsOSBAQCBKU0M6Oklzb1N1YnNwYWNlKiBK
U1Rlc3RSZWFkT25seVNldExpa2U6CiAgICAgICAgIHJldHVybiBzcGFjZTsKICAgICBzdGF0aWNf
YXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVz
dFJlYWRPbmx5U2V0TGlrZT4gfHwgIUpTVGVzdFJlYWRPbmx5U2V0TGlrZTo6bmVlZHNEZXN0cnVj
dGlvbik7CiAgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1
Y3RpYmxlT2JqZWN0LCBKU1Rlc3RSZWFkT25seVNldExpa2U+KQotICAgICAgICBzcGFjZXMubV9z
dWJzcGFjZUZvclRlc3RSZWFkT25seVNldExpa2UgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJ
U09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxU
eXBlLCBKU1Rlc3RSZWFkT25seVNldExpa2UpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZv
clRlc3RSZWFkT25seVNldExpa2UgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BB
Q0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwgSlNU
ZXN0UmVhZE9ubHlTZXRMaWtlKTsKICAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNl
Rm9yVGVzdFJlYWRPbmx5U2V0TGlrZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJT
UEFDRV9JTklUKHZtLmhlYXAsICp2bS5jZWxsSGVhcENlbGxUeXBlLCBKU1Rlc3RSZWFkT25seVNl
dExpa2UpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RSZWFkT25seVNldExpa2Ug
PSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5j
ZWxsSGVhcENlbGxUeXBlKCksIEpTVGVzdFJlYWRPbmx5U2V0TGlrZSk7CiAgICAgYXV0byogc3Bh
Y2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RSZWFkT25seVNldExpa2UuZ2V0KCk7CiBJR05P
UkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JF
R0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0UmVwb3J0RXh0cmFNZW1vcnlDb3N0LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0UmVw
b3J0RXh0cmFNZW1vcnlDb3N0LmNwcAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFJlcG9ydEV4dHJhTWVtb3J5Q29zdC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTYzLDcgKzYzLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBK
U0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAg
IFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdFJlcG9ydEV4dHJhTWVt
b3J5Q29zdFByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RT
cGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAg
IHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6
OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAg
ICAgewpAQCAtMTcxLDkgKzE3MSw5IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdFJlcG9ydEV4
dHJhTWVtb3IKICAgICAgICAgcmV0dXJuIHNwYWNlOwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjpp
c19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0UmVwb3J0RXh0cmFN
ZW1vcnlDb3N0PiB8fCAhSlNUZXN0UmVwb3J0RXh0cmFNZW1vcnlDb3N0OjpuZWVkc0Rlc3RydWN0
aW9uKTsKICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVj
dGlibGVPYmplY3QsIEpTVGVzdFJlcG9ydEV4dHJhTWVtb3J5Q29zdD4pCi0gICAgICAgIHNwYWNl
cy5tX3N1YnNwYWNlRm9yVGVzdFJlcG9ydEV4dHJhTWVtb3J5Q29zdCA9IG1ha2VVbmlxdWU8SXNv
U3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5kZXN0cnVjdGlibGVPYmpl
Y3RIZWFwQ2VsbFR5cGUsIEpTVGVzdFJlcG9ydEV4dHJhTWVtb3J5Q29zdCk7CisgICAgICAgIHNw
YWNlcy5tX3N1YnNwYWNlRm9yVGVzdFJlcG9ydEV4dHJhTWVtb3J5Q29zdCA9IG1ha2VVbmlxdWU8
SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9i
amVjdEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RSZXBvcnRFeHRyYU1lbW9yeUNvc3QpOwogICAgIGVs
c2UKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0UmVwb3J0RXh0cmFNZW1vcnlDb3N0
ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZt
LmNlbGxIZWFwQ2VsbFR5cGUsIEpTVGVzdFJlcG9ydEV4dHJhTWVtb3J5Q29zdCk7CisgICAgICAg
IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFJlcG9ydEV4dHJhTWVtb3J5Q29zdCA9IG1ha2VVbmlx
dWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2Vs
bFR5cGUoKSwgSlNUZXN0UmVwb3J0RXh0cmFNZW1vcnlDb3N0KTsKICAgICBhdXRvKiBzcGFjZSA9
IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFJlcG9ydEV4dHJhTWVtb3J5Q29zdC5nZXQoKTsKIElH
Tk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1Nf
QkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2Uu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuY3BwCShyZXZpc2lvbiAyODYw
OTUpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2Vy
aWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODksNyAr
ODksNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9y
KEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0Vf
U0hBUkFCTEUoSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlUHJvdG90eXBlLCBC
YXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1
cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0
dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC0zNDksOSArMzQ5
LDkgQEAgSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0U2VyaWFsaXplZFNjcmlwdAogICAgICAgICBy
ZXR1cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpT
RGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2U+
IHx8ICFKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2U6Om5lZWRzRGVzdHJ1Y3Rp
b24pOwogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0
aWJsZU9iamVjdCwgSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlPikKLSAgICAg
ICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNl
ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZt
LmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSwgSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZh
bHVlSW50ZXJmYWNlKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0U2VyaWFsaXpl
ZFNjcmlwdFZhbHVlSW50ZXJmYWNlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQ
QUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCksIEpT
VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSk7CiAgICAgZWxzZQotICAgICAgICBz
cGFjZXMubV9zdWJzcGFjZUZvclRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UgPSBt
YWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uY2Vs
bEhlYXBDZWxsVHlwZSwgSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlKTsKKyAg
ICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJm
YWNlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwg
dm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZh
Y2UpOwogICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0U2VyaWFsaXpl
ZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJl
YWNoYWJsZS1jb2RlIikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBh
cmUiKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dFNldExpa2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RTZXRMaWtlLmNwcAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNldExpa2UuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC04MSw3ICs4MSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29T
dWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNf
QVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3RTZXRMaWtlUHJvdG90eXBlLCBCYXNl
KTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4g
JnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJl
KiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC0zNDIsOSArMzQyLDkg
QEAgSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0U2V0TGlrZTo6c3Vic3BhYwogICAgICAgICByZXR1
cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVz
dHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RTZXRMaWtlPiB8fCAhSlNUZXN0U2V0TGlrZTo6bmVlZHNE
ZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpT
RGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RTZXRMaWtlPikKLSAgICAgICAgc3BhY2VzLm1fc3Vi
c3BhY2VGb3JUZXN0U2V0TGlrZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFD
RV9JTklUKHZtLmhlYXAsICp2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUsIEpTVGVz
dFNldExpa2UpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RTZXRMaWtlID0gbWFr
ZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1
Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCksIEpTVGVzdFNldExpa2UpOwogICAgIGVsc2UKLSAg
ICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0U2V0TGlrZSA9IG1ha2VVbmlxdWU8SXNvU3Vi
c3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5jZWxsSGVhcENlbGxUeXBlLCBK
U1Rlc3RTZXRMaWtlKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0U2V0TGlrZSA9
IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNl
bGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0U2V0TGlrZSk7CiAgICAgYXV0byogc3BhY2UgPSBzcGFj
ZXMubV9zdWJzcGFjZUZvclRlc3RTZXRMaWtlLmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lO
KCJ1bnJlYWNoYWJsZS1jb2RlIikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2Fs
LWNvbXBhcmUiKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdFNldExpa2VXaXRoT3ZlcnJpZGRlbk9wZXJhdGlvbnMuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXRMaWtlV2l0
aE92ZXJyaWRkZW5PcGVyYXRpb25zLmNwcAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNldExpa2VXaXRoT3ZlcnJpZGRl
bk9wZXJhdGlvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04NSw3ICs4NSw3IEBAIHB1YmxpYzoK
ICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAg
ICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3RT
ZXRMaWtlV2l0aE92ZXJyaWRkZW5PcGVyYXRpb25zUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAg
cmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2Jq
ZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1
Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlND
OjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC0zNTQsOSArMzU0LDkgQEAgSlNDOjpJc29T
dWJzcGFjZSogSlNUZXN0U2V0TGlrZVdpdGhPdmVycgogICAgICAgICByZXR1cm4gc3BhY2U7CiAg
ICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2Jq
ZWN0LCBKU1Rlc3RTZXRMaWtlV2l0aE92ZXJyaWRkZW5PcGVyYXRpb25zPiB8fCAhSlNUZXN0U2V0
TGlrZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9uczo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgaWYg
Y29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBK
U1Rlc3RTZXRMaWtlV2l0aE92ZXJyaWRkZW5PcGVyYXRpb25zPikKLSAgICAgICAgc3BhY2VzLm1f
c3Vic3BhY2VGb3JUZXN0U2V0TGlrZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9ucyA9IG1ha2VVbmlx
dWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5kZXN0cnVjdGli
bGVPYmplY3RIZWFwQ2VsbFR5cGUsIEpTVGVzdFNldExpa2VXaXRoT3ZlcnJpZGRlbk9wZXJhdGlv
bnMpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RTZXRMaWtlV2l0aE92ZXJyaWRk
ZW5PcGVyYXRpb25zID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQo
dm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCksIEpTVGVzdFNldExp
a2VXaXRoT3ZlcnJpZGRlbk9wZXJhdGlvbnMpOwogICAgIGVsc2UKLSAgICAgICAgc3BhY2VzLm1f
c3Vic3BhY2VGb3JUZXN0U2V0TGlrZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9ucyA9IG1ha2VVbmlx
dWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5jZWxsSGVhcENl
bGxUeXBlLCBKU1Rlc3RTZXRMaWtlV2l0aE92ZXJyaWRkZW5PcGVyYXRpb25zKTsKKyAgICAgICAg
c3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0U2V0TGlrZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9ucyA9
IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNl
bGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0U2V0TGlrZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9ucyk7
CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RTZXRMaWtlV2l0aE92
ZXJyaWRkZW5PcGVyYXRpb25zLmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNo
YWJsZS1jb2RlIikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUi
KQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0
cmluZ2lmaWVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXIuY3BwCShyZXZpc2lvbiAyODYwOTUpCisrKyBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXIu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC02OSw3ICs2OSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMg
SlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAgICAg
ICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3RTdHJpbmdpZmllclBy
b3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAg
ICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBK
U0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAt
MTkyLDkgKzE5Miw5IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdFN0cmluZ2lmaWVyOjpzdWIK
ICAgICAgICAgcmV0dXJuIHNwYWNlOwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29m
X3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0U3RyaW5naWZpZXI+IHx8ICFKU1Rl
c3RTdHJpbmdpZmllcjo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3RleHByIChzdGQ6
OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RTdHJpbmdpZmll
cj4pCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFN0cmluZ2lmaWVyID0gbWFrZVVu
aXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmRlc3RydWN0
aWJsZU9iamVjdEhlYXBDZWxsVHlwZSwgSlNUZXN0U3RyaW5naWZpZXIpOworICAgICAgICBzcGFj
ZXMubV9zdWJzcGFjZUZvclRlc3RTdHJpbmdpZmllciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+
IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxs
VHlwZSgpLCBKU1Rlc3RTdHJpbmdpZmllcik7CiAgICAgZWxzZQotICAgICAgICBzcGFjZXMubV9z
dWJzcGFjZUZvclRlc3RTdHJpbmdpZmllciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19T
VUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5jZWxsSGVhcENlbGxUeXBlLCBKU1Rlc3RTdHJpbmdp
Zmllcik7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFN0cmluZ2lmaWVyID0gbWFr
ZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhl
YXBDZWxsVHlwZSgpLCBKU1Rlc3RTdHJpbmdpZmllcik7CiAgICAgYXV0byogc3BhY2UgPSBzcGFj
ZXMubV9zdWJzcGFjZUZvclRlc3RTdHJpbmdpZmllci5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19C
RUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9n
aWNhbC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RTdHJpbmdpZmllckFub255bW91c09wZXJhdGlvbi5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lm
aWVyQW5vbnltb3VzT3BlcmF0aW9uLmNwcAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyQW5vbnltb3Vz
T3BlcmF0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjksNyArNjksNyBAQCBwdWJsaWM6CiAg
ICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAg
IHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0U3Ry
aW5naWZpZXJBbm9ueW1vdXNPcGVyYXRpb25Qcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1
cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RT
cGFjZSgpOwogICAgIH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVy
ZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpT
VmFsdWUgcHJvdG90eXBlKQogICAgIHsKQEAgLTE5Miw5ICsxOTIsOSBAQCBKU0M6Oklzb1N1YnNw
YWNlKiBKU1Rlc3RTdHJpbmdpZmllckFub255CiAgICAgICAgIHJldHVybiBzcGFjZTsKICAgICBz
dGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3Qs
IEpTVGVzdFN0cmluZ2lmaWVyQW5vbnltb3VzT3BlcmF0aW9uPiB8fCAhSlNUZXN0U3RyaW5naWZp
ZXJBbm9ueW1vdXNPcGVyYXRpb246Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhw
ciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0U3Ry
aW5naWZpZXJBbm9ueW1vdXNPcGVyYXRpb24+KQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZv
clRlc3RTdHJpbmdpZmllckFub255bW91c09wZXJhdGlvbiA9IG1ha2VVbmlxdWU8SXNvU3Vic3Bh
Y2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFw
Q2VsbFR5cGUsIEpTVGVzdFN0cmluZ2lmaWVyQW5vbnltb3VzT3BlcmF0aW9uKTsKKyAgICAgICAg
c3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0U3RyaW5naWZpZXJBbm9ueW1vdXNPcGVyYXRpb24gPSBt
YWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0
cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0U3RyaW5naWZpZXJBbm9ueW1vdXNP
cGVyYXRpb24pOwogICAgIGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0U3Ry
aW5naWZpZXJBbm9ueW1vdXNPcGVyYXRpb24gPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09f
U1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uY2VsbEhlYXBDZWxsVHlwZSwgSlNUZXN0U3RyaW5n
aWZpZXJBbm9ueW1vdXNPcGVyYXRpb24pOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRl
c3RTdHJpbmdpZmllckFub255bW91c09wZXJhdGlvbiA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+
IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0
U3RyaW5naWZpZXJBbm9ueW1vdXNPcGVyYXRpb24pOwogICAgIGF1dG8qIHNwYWNlID0gc3BhY2Vz
Lm1fc3Vic3BhY2VGb3JUZXN0U3RyaW5naWZpZXJBbm9ueW1vdXNPcGVyYXRpb24uZ2V0KCk7CiBJ
R05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdT
X0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJOYW1lZE9wZXJhdGlvbi5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdFN0cmluZ2lmaWVyTmFtZWRPcGVyYXRpb24uY3BwCShyZXZpc2lvbiAyODYwOTUpCisrKyBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJO
YW1lZE9wZXJhdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcwLDcgKzcwLDcgQEAgcHVibGlj
OgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkK
ICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVz
dFN0cmluZ2lmaWVyTmFtZWRPcGVyYXRpb25Qcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1
cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RT
cGFjZSgpOwogICAgIH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVy
ZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpT
VmFsdWUgcHJvdG90eXBlKQogICAgIHsKQEAgLTIwOSw5ICsyMDksOSBAQCBKU0M6Oklzb1N1YnNw
YWNlKiBKU1Rlc3RTdHJpbmdpZmllck5hbWVkCiAgICAgICAgIHJldHVybiBzcGFjZTsKICAgICBz
dGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3Qs
IEpTVGVzdFN0cmluZ2lmaWVyTmFtZWRPcGVyYXRpb24+IHx8ICFKU1Rlc3RTdHJpbmdpZmllck5h
bWVkT3BlcmF0aW9uOjpuZWVkc0Rlc3RydWN0aW9uKTsKICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6
aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdFN0cmluZ2lmaWVy
TmFtZWRPcGVyYXRpb24+KQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RTdHJpbmdp
Zmllck5hbWVkT3BlcmF0aW9uID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNF
X0lOSVQodm0uaGVhcCwgKnZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSwgSlNUZXN0
U3RyaW5naWZpZXJOYW1lZE9wZXJhdGlvbik7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9y
VGVzdFN0cmluZ2lmaWVyTmFtZWRPcGVyYXRpb24gPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJ
U09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5
cGUoKSwgSlNUZXN0U3RyaW5naWZpZXJOYW1lZE9wZXJhdGlvbik7CiAgICAgZWxzZQotICAgICAg
ICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RTdHJpbmdpZmllck5hbWVkT3BlcmF0aW9uID0gbWFr
ZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmNlbGxI
ZWFwQ2VsbFR5cGUsIEpTVGVzdFN0cmluZ2lmaWVyTmFtZWRPcGVyYXRpb24pOworICAgICAgICBz
cGFjZXMubV9zdWJzcGFjZUZvclRlc3RTdHJpbmdpZmllck5hbWVkT3BlcmF0aW9uID0gbWFrZVVu
aXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBD
ZWxsVHlwZSgpLCBKU1Rlc3RTdHJpbmdpZmllck5hbWVkT3BlcmF0aW9uKTsKICAgICBhdXRvKiBz
cGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFN0cmluZ2lmaWVyTmFtZWRPcGVyYXRpb24u
Z2V0KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JF
X1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25J
bXBsZW1lbnRlZEFzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25JbXBsZW1lbnRlZEFzLmNw
cAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uSW1wbGVtZW50ZWRBcy5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTcwLDcgKzcwLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1
YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19B
U1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uSW1w
bGVtZW50ZWRBc1Byb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmpl
Y3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQog
ICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBK
U0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUp
CiAgICAgewpAQCAtMjA5LDkgKzIwOSw5IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdFN0cmlu
Z2lmaWVyT3BlcmEKICAgICAgICAgcmV0dXJuIHNwYWNlOwogICAgIHN0YXRpY19hc3NlcnQoc3Rk
Ojppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0U3RyaW5naWZp
ZXJPcGVyYXRpb25JbXBsZW1lbnRlZEFzPiB8fCAhSlNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25J
bXBsZW1lbnRlZEFzOjpuZWVkc0Rlc3RydWN0aW9uKTsKICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6
aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdFN0cmluZ2lmaWVy
T3BlcmF0aW9uSW1wbGVtZW50ZWRBcz4pCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVz
dFN0cmluZ2lmaWVyT3BlcmF0aW9uSW1wbGVtZW50ZWRBcyA9IG1ha2VVbmlxdWU8SXNvU3Vic3Bh
Y2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFw
Q2VsbFR5cGUsIEpTVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uSW1wbGVtZW50ZWRBcyk7CisgICAg
ICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uSW1wbGVtZW50
ZWRBcyA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAs
IHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RTdHJpbmdpZmllck9w
ZXJhdGlvbkltcGxlbWVudGVkQXMpOwogICAgIGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vic3Bh
Y2VGb3JUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25JbXBsZW1lbnRlZEFzID0gbWFrZVVuaXF1ZTxJ
c29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmNlbGxIZWFwQ2VsbFR5
cGUsIEpTVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uSW1wbGVtZW50ZWRBcyk7CisgICAgICAgIHNw
YWNlcy5tX3N1YnNwYWNlRm9yVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uSW1wbGVtZW50ZWRBcyA9
IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNl
bGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25JbXBsZW1lbnRlZEFz
KTsKICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFN0cmluZ2lmaWVy
T3BlcmF0aW9uSW1wbGVtZW50ZWRBcy5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5y
ZWFjaGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21w
YXJlIikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RTdHJpbmdpZmllck9wZXJhdGlvbk5hbWVkVG9TdHJpbmcuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllck9w
ZXJhdGlvbk5hbWVkVG9TdHJpbmcuY3BwCShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25O
YW1lZFRvU3RyaW5nLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjksNyArNjksNyBAQCBwdWJsaWM6
CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQog
ICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0
U3RyaW5naWZpZXJPcGVyYXRpb25OYW1lZFRvU3RyaW5nUHJvdG90eXBlLCBCYXNlKTsKLSAgICAg
ICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWlu
T2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVT
dHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
SlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC0xOTIsOSArMTkyLDkgQEAgSlNDOjpJ
c29TdWJzcGFjZSogSlNUZXN0U3RyaW5naWZpZXJPcGVyYQogICAgICAgICByZXR1cm4gc3BhY2U7
CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxl
T2JqZWN0LCBKU1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbk5hbWVkVG9TdHJpbmc+IHx8ICFKU1Rl
c3RTdHJpbmdpZmllck9wZXJhdGlvbk5hbWVkVG9TdHJpbmc6Om5lZWRzRGVzdHJ1Y3Rpb24pOwog
ICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9i
amVjdCwgSlNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25OYW1lZFRvU3RyaW5nPikKLSAgICAgICAg
c3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25OYW1lZFRvU3RyaW5n
ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZt
LmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSwgSlNUZXN0U3RyaW5naWZpZXJPcGVyYXRp
b25OYW1lZFRvU3RyaW5nKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0U3RyaW5n
aWZpZXJPcGVyYXRpb25OYW1lZFRvU3RyaW5nID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNP
X1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBl
KCksIEpTVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uTmFtZWRUb1N0cmluZyk7CiAgICAgZWxzZQot
ICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RTdHJpbmdpZmllck9wZXJhdGlvbk5hbWVk
VG9TdHJpbmcgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5o
ZWFwLCAqdm0uY2VsbEhlYXBDZWxsVHlwZSwgSlNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25OYW1l
ZFRvU3RyaW5nKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0U3RyaW5naWZpZXJP
cGVyYXRpb25OYW1lZFRvU3RyaW5nID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQ
QUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RTdHJpbmdpZmll
ck9wZXJhdGlvbk5hbWVkVG9TdHJpbmcpOwogICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vi
c3BhY2VGb3JUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25OYW1lZFRvU3RyaW5nLmdldCgpOwogSUdO
T1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKIElHTk9SRV9XQVJOSU5HU19C
RUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyUmVhZE9ubHlBdHRyaWJ1dGUuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RTdHJpbmdpZmllclJlYWRPbmx5QXR0cmlidXRlLmNwcAkocmV2aXNpb24gMjg2MDk1KQor
KysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lm
aWVyUmVhZE9ubHlBdHRyaWJ1dGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03MSw3ICs3MSw3IEBA
IHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpW
TSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJM
RShKU1Rlc3RTdHJpbmdpZmllclJlYWRPbmx5QXR0cmlidXRlUHJvdG90eXBlLCBCYXNlKTsKLSAg
ICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBs
YWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVh
dGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC0yMDgsOSArMjA4LDkgQEAgSlND
OjpJc29TdWJzcGFjZSogSlNUZXN0U3RyaW5naWZpZXJSZWFkTwogICAgICAgICByZXR1cm4gc3Bh
Y2U7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3Rp
YmxlT2JqZWN0LCBKU1Rlc3RTdHJpbmdpZmllclJlYWRPbmx5QXR0cmlidXRlPiB8fCAhSlNUZXN0
U3RyaW5naWZpZXJSZWFkT25seUF0dHJpYnV0ZTo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgaWYg
Y29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBK
U1Rlc3RTdHJpbmdpZmllclJlYWRPbmx5QXR0cmlidXRlPikKLSAgICAgICAgc3BhY2VzLm1fc3Vi
c3BhY2VGb3JUZXN0U3RyaW5naWZpZXJSZWFkT25seUF0dHJpYnV0ZSA9IG1ha2VVbmlxdWU8SXNv
U3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5kZXN0cnVjdGlibGVPYmpl
Y3RIZWFwQ2VsbFR5cGUsIEpTVGVzdFN0cmluZ2lmaWVyUmVhZE9ubHlBdHRyaWJ1dGUpOworICAg
ICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RTdHJpbmdpZmllclJlYWRPbmx5QXR0cmlidXRl
ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0u
ZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCksIEpTVGVzdFN0cmluZ2lmaWVyUmVhZE9u
bHlBdHRyaWJ1dGUpOwogICAgIGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0
U3RyaW5naWZpZXJSZWFkT25seUF0dHJpYnV0ZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElT
T19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5jZWxsSGVhcENlbGxUeXBlLCBKU1Rlc3RTdHJp
bmdpZmllclJlYWRPbmx5QXR0cmlidXRlKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JU
ZXN0U3RyaW5naWZpZXJSZWFkT25seUF0dHJpYnV0ZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+
IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0
U3RyaW5naWZpZXJSZWFkT25seUF0dHJpYnV0ZSk7CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMu
bV9zdWJzcGFjZUZvclRlc3RTdHJpbmdpZmllclJlYWRPbmx5QXR0cmlidXRlLmdldCgpOwogSUdO
T1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKIElHTk9SRV9XQVJOSU5HU19C
RUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyUmVhZFdyaXRlQXR0cmlidXRlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0U3RyaW5naWZpZXJSZWFkV3JpdGVBdHRyaWJ1dGUuY3BwCShyZXZpc2lvbiAyODYwOTUp
CisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5n
aWZpZXJSZWFkV3JpdGVBdHRyaWJ1dGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03Miw3ICs3Miw3
IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlND
OjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFS
QUJMRShKU1Rlc3RTdHJpbmdpZmllclJlYWRXcml0ZUF0dHJpYnV0ZVByb3RvdHlwZSwgQmFzZSk7
Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2
bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSog
Y3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAtMjI3LDkgKzIyNyw5IEBA
IEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdFN0cmluZ2lmaWVyUmVhZFcKICAgICAgICAgcmV0dXJu
IHNwYWNlOwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3Ry
dWN0aWJsZU9iamVjdCwgSlNUZXN0U3RyaW5naWZpZXJSZWFkV3JpdGVBdHRyaWJ1dGU+IHx8ICFK
U1Rlc3RTdHJpbmdpZmllclJlYWRXcml0ZUF0dHJpYnV0ZTo6bmVlZHNEZXN0cnVjdGlvbik7CiAg
ICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2Jq
ZWN0LCBKU1Rlc3RTdHJpbmdpZmllclJlYWRXcml0ZUF0dHJpYnV0ZT4pCi0gICAgICAgIHNwYWNl
cy5tX3N1YnNwYWNlRm9yVGVzdFN0cmluZ2lmaWVyUmVhZFdyaXRlQXR0cmlidXRlID0gbWFrZVVu
aXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmRlc3RydWN0
aWJsZU9iamVjdEhlYXBDZWxsVHlwZSwgSlNUZXN0U3RyaW5naWZpZXJSZWFkV3JpdGVBdHRyaWJ1
dGUpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RTdHJpbmdpZmllclJlYWRXcml0
ZUF0dHJpYnV0ZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZt
LmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RTdHJpbmdp
ZmllclJlYWRXcml0ZUF0dHJpYnV0ZSk7CiAgICAgZWxzZQotICAgICAgICBzcGFjZXMubV9zdWJz
cGFjZUZvclRlc3RTdHJpbmdpZmllclJlYWRXcml0ZUF0dHJpYnV0ZSA9IG1ha2VVbmlxdWU8SXNv
U3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5jZWxsSGVhcENlbGxUeXBl
LCBKU1Rlc3RTdHJpbmdpZmllclJlYWRXcml0ZUF0dHJpYnV0ZSk7CisgICAgICAgIHNwYWNlcy5t
X3N1YnNwYWNlRm9yVGVzdFN0cmluZ2lmaWVyUmVhZFdyaXRlQXR0cmlidXRlID0gbWFrZVVuaXF1
ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxs
VHlwZSgpLCBKU1Rlc3RTdHJpbmdpZmllclJlYWRXcml0ZUF0dHJpYnV0ZSk7CiAgICAgYXV0byog
c3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RTdHJpbmdpZmllclJlYWRXcml0ZUF0dHJp
YnV0ZS5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJ
R05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RUeXBlZGVmcy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dFR5cGVkZWZzLmNwcAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFR5cGVkZWZzLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MTE2LDcgKzExNiw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vi
c3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19T
VUJTUEFDRV9TSEFSQUJMRShKU1Rlc3RUeXBlZGVmc1Byb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAg
IHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9i
amVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3Ry
dWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpT
Qzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAtNzc4LDkgKzc3OCw5IEBAIEpTQzo6SXNv
U3Vic3BhY2UqIEpTVGVzdFR5cGVkZWZzOjpzdWJzcGEKICAgICAgICAgcmV0dXJuIHNwYWNlOwog
ICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9i
amVjdCwgSlNUZXN0VHlwZWRlZnM+IHx8ICFKU1Rlc3RUeXBlZGVmczo6bmVlZHNEZXN0cnVjdGlv
bik7CiAgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3Rp
YmxlT2JqZWN0LCBKU1Rlc3RUeXBlZGVmcz4pCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9y
VGVzdFR5cGVkZWZzID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQo
dm0uaGVhcCwgKnZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSwgSlNUZXN0VHlwZWRl
ZnMpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RUeXBlZGVmcyA9IG1ha2VVbmlx
dWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJs
ZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RUeXBlZGVmcyk7CiAgICAgZWxzZQotICAgICAg
ICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RUeXBlZGVmcyA9IG1ha2VVbmlxdWU8SXNvU3Vic3Bh
Y2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5jZWxsSGVhcENlbGxUeXBlLCBKU1Rl
c3RUeXBlZGVmcyk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFR5cGVkZWZzID0g
bWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2Vs
bEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RUeXBlZGVmcyk7CiAgICAgYXV0byogc3BhY2UgPSBzcGFj
ZXMubV9zdWJzcGFjZUZvclRlc3RUeXBlZGVmcy5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJ
TigidW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNh
bC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1dvcmtlckdsb2JhbFNjb3BlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNXb3JrZXJHbG9iYWxTY29wZS5jcHAJKHJldmlzaW9u
IDI4NjA5NSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1dv
cmtlckdsb2JhbFNjb3BlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjQ5LDcgKzI0OSw3IEBAIEpT
Qzo6SXNvU3Vic3BhY2UqIEpTV29ya2VyR2xvYmFsU2NvcGU6OnMKICAgICBhdXRvJiBzcGFjZXMg
PSBjbGllbnREYXRhLnN1YnNwYWNlcygpOwogICAgIGlmIChhdXRvKiBzcGFjZSA9IHNwYWNlcy5t
X3N1YnNwYWNlRm9yV29ya2VyR2xvYmFsU2NvcGUuZ2V0KCkpCiAgICAgICAgIHJldHVybiBzcGFj
ZTsKLSAgICBzcGFjZXMubV9zdWJzcGFjZUZvcldvcmtlckdsb2JhbFNjb3BlID0gbWFrZVVuaXF1
ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKmNsaWVudERhdGEubV9o
ZWFwQ2VsbFR5cGVGb3JKU1dvcmtlckdsb2JhbFNjb3BlLCBKU1dvcmtlckdsb2JhbFNjb3BlKTsK
KyAgICBzcGFjZXMubV9zdWJzcGFjZUZvcldvcmtlckdsb2JhbFNjb3BlID0gbWFrZVVuaXF1ZTxJ
c29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgY2xpZW50RGF0YS5tX2hlYXBD
ZWxsVHlwZUZvckpTV29ya2VyR2xvYmFsU2NvcGUsIEpTV29ya2VyR2xvYmFsU2NvcGUpOwogICAg
IGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JXb3JrZXJHbG9iYWxTY29wZS5nZXQo
KTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVfV0FS
TklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1dvcmtlckdsb2JhbFNjb3BlLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTV29ya2VyR2xv
YmFsU2NvcGUuaAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTV29ya2VyR2xvYmFsU2NvcGUuaAkod29ya2luZyBjb3B5KQpAQCAt
ODUsNyArODUsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNw
YWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VC
U1BBQ0VfU0hBUkFCTEUoSlNXb3JrZXJHbG9iYWxTY29wZVByb3RvdHlwZSwgQmFzZSk7Ci0gICAg
ICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFp
bk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRl
U3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpJbmRleDogU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTV29ya2xldEdsb2JhbFNjb3BlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNXb3JrbGV0R2xv
YmFsU2NvcGUuY3BwCShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNXb3JrbGV0R2xvYmFsU2NvcGUuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xNjMsNyArMTYzLDcgQEAgSlNDOjpJc29TdWJzcGFjZSogSlNXb3JrbGV0R2xvYmFsU2Nv
cGU6OgogICAgIGF1dG8mIHNwYWNlcyA9IGNsaWVudERhdGEuc3Vic3BhY2VzKCk7CiAgICAgaWYg
KGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JXb3JrbGV0R2xvYmFsU2NvcGUuZ2V0
KCkpCiAgICAgICAgIHJldHVybiBzcGFjZTsKLSAgICBzcGFjZXMubV9zdWJzcGFjZUZvcldvcmts
ZXRHbG9iYWxTY29wZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklU
KHZtLmhlYXAsICpjbGllbnREYXRhLm1faGVhcENlbGxUeXBlRm9ySlNXb3JrbGV0R2xvYmFsU2Nv
cGUsIEpTV29ya2xldEdsb2JhbFNjb3BlKTsKKyAgICBzcGFjZXMubV9zdWJzcGFjZUZvcldvcmts
ZXRHbG9iYWxTY29wZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklU
KHZtLmhlYXAsIGNsaWVudERhdGEubV9oZWFwQ2VsbFR5cGVGb3JKU1dvcmtsZXRHbG9iYWxTY29w
ZSwgSlNXb3JrbGV0R2xvYmFsU2NvcGUpOwogICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vi
c3BhY2VGb3JXb3JrbGV0R2xvYmFsU2NvcGUuZ2V0KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4o
InVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwt
Y29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNXb3JrbGV0R2xvYmFsU2NvcGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNXb3JrbGV0R2xvYmFsU2NvcGUuaAkocmV2aXNpb24gMjg2
MDk1KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTV29ya2xl
dEdsb2JhbFNjb3BlLmgJKHdvcmtpbmcgY29weSkKQEAgLTg1LDcgKzg1LDcgQEAgcHVibGljOgog
ICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKICAg
ICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTV29ya2xl
dEdsb2JhbFNjb3BlUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9i
amVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9
CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0s
IEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlw
ZSkKICAgICB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX3J1bnRpbWUu
bW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19ydW50aW1l
Lm1tCShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpj
X3J1bnRpbWUubW0JKHdvcmtpbmcgY29weSkKQEAgLTMzNSw3ICszMzUsNyBAQCBib29sIE9iamNG
YWxsYmFja09iamVjdEltcDo6dG9Cb29sZWFuKEpTCiBKU0M6Oklzb1N1YnNwYWNlKiBPYmpjRmFs
bGJhY2tPYmplY3RJbXA6OnN1YnNwYWNlRm9ySW1wbChKU0M6OlZNJiB2bSkKIHsKICAgICBzdGF0
aWMgTmV2ZXJEZXN0cm95ZWQ8SlNDOjpJc29TdWJzcGFjZVBlclZNPiBwZXJWTShbXSAoSlNDOjpW
TSYgdm0pIHsKLSAgICAgICAgcmV0dXJuIElTT19TVUJTUEFDRV9QQVJBTUVURVJTKCp2bS5kZXN0
cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUsIE9iamNGYWxsYmFja09iamVjdEltcCk7CisgICAg
ICAgIHJldHVybiBJU09fU1VCU1BBQ0VfUEFSQU1FVEVSUyh2bS5kZXN0cnVjdGlibGVPYmplY3RI
ZWFwQ2VsbFR5cGUoKSwgT2JqY0ZhbGxiYWNrT2JqZWN0SW1wKTsKICAgICB9KTsKICAgICByZXR1
cm4gJnBlclZNLmdldCgpLmZvclZNKHZtKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvV29ya2VyT3JXb3JrbGV0U2NyaXB0Q29udHJvbGxlci5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyT3JXb3JrbGV0U2NyaXB0Q29udHJvbGxlci5oCShyZXZp
c2lvbiAyODYwOTUpCisrKyBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck9yV29ya2xldFNj
cmlwdENvbnRyb2xsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzgsNiArMzgsNyBAQAogbmFtZXNw
YWNlIEpTQyB7CiBjbGFzcyBFeGNlcHRpb247CiBjbGFzcyBKU0dsb2JhbE9iamVjdDsKK2NsYXNz
IEpTTW9kdWxlUmVjb3JkOwogY2xhc3MgVk07CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0NvY29hL01vZGVsRWxlbWVudENvbnRyb2xsZXJDb2NvYS5tbQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9Nb2RlbEVsZW1lbnRDb250cm9sbGVyQ29j
b2EubW0JKHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29h
L01vZGVsRWxlbWVudENvbnRyb2xsZXJDb2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAtMjMzLDYg
KzIzMywxMCBAQCB2b2lkIE1vZGVsRWxlbWVudENvbnRyb2xsZXI6OmhhbmRsZU1vdXNlCiAKICNp
ZiBFTkFCTEUoQVJLSVRfSU5MSU5FX1BSRVZJRVcpCiAKKyN1bmRlZiBFTkFCTEVfQVJLSVRfSU5M
SU5FX1BSRVZJRVdfQ0FNRVJBX1RSQU5TRk9STSAvLyBtbGFtIEhBQ0sKKyN1bmRlZiBFTkFCTEVf
QVJLSVRfSU5MSU5FX1BSRVZJRVdfQU5JTUFUSU9OU19DT05UUk9MIC8vIG1sYW0gSEFDSworI3Vu
ZGVmIEVOQUJMRV9BUktJVF9JTkxJTkVfUFJFVklFV19BVURJT19DT05UUk9MIC8vIG1sYW0gSEFD
SworCiBzdGF0aWMgYm9vbCBwcmV2aWV3SGFzQ2FtZXJhU3VwcG9ydChBU1ZJbmxpbmVQcmV2aWV3
ICpwcmV2aWV3KQogewogI2lmIEVOQUJMRShBUktJVF9JTkxJTkVfUFJFVklFV19DQU1FUkFfVFJB
TlNGT1JNKQo=
</data>
<flag name="commit-queue"
          id="470015"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>444937</attachid>
            <date>2021-11-21 20:22:53 -0800</date>
            <delta_ts>2021-11-21 21:15:00 -0800</delta_ts>
            <desc>EWS test.</desc>
            <filename>bug-233240e.patch</filename>
            <type>text/plain</type>
            <size>409127</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDI4NjA5NSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpA
QCAtNzYzLDYgKzc2Myw5IEBAIHNldChKYXZhU2NyaXB0Q29yZV9QUklWQVRFX0ZSQU1FV09SS19I
RUEKICAgICBoZWFwL0luY3JlbWVudGFsU3dlZXBlci5oCiAgICAgaGVhcC9Jc29DZWxsU2V0LmgK
ICAgICBoZWFwL0lzb0hlYXBDZWxsVHlwZS5oCisgICAgaGVhcC9Jc29IZWFwQ2VsbFR5cGVJbmxp
bmVzLmgKKyAgICBoZWFwL0lzb0lubGluZWRIZWFwQ2VsbFR5cGUuaAorICAgIGhlYXAvSXNvSW5s
aW5lZEhlYXBDZWxsVHlwZUlubGluZXMuaAogICAgIGhlYXAvSXNvU3Vic3BhY2UuaAogICAgIGhl
YXAvSXNvU3Vic3BhY2VJbmxpbmVzLmgKICAgICBoZWFwL0lzb1N1YnNwYWNlUGVyVk0uaApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2pzYy5jcHAJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qc2MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDI5LDcgKzE0MjksNyBAQCBwdWJs
aWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNzPgogICAg
IHN0YXRpYyBDb21wbGV0ZVN1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewotICAg
ICAgICByZXR1cm4gJnZtLmRlc3RydWN0aWJsZU9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4g
JnZtLmRlc3RydWN0aWJsZU9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAgSlNDTWVtb3J5Rm9v
dHByaW50KFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCkBAIC0xNzYyLDcgKzE3NjIsNyBA
QCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNz
PgogICAgIHN0YXRpYyBDb21wbGV0ZVN1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAg
ewotICAgICAgICByZXR1cm4gJnZtLmRlc3RydWN0aWJsZU9iamVjdFNwYWNlOworICAgICAgICBy
ZXR1cm4gJnZtLmRlc3RydWN0aWJsZU9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGlj
IFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
SmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTE5NTks
NyArMTk1OSw3IEBACiAJCUUzQzY5NEIzMjMwMjY4NzcwMDZGQkU0MiAvKiBXYXNtT1NSRW50cnlE
YXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFM0M2
OTRCMTIzMDI2ODczMDA2RkJFNDIgLyogV2FzbU9TUkVudHJ5RGF0YS5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUzQzczQTkxMjVCRkE3M0IwMEVG
RTMwMyAvKiBXYXNtU3RyZWFtaW5nUGxhbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRTNDNzNBOTAyNUJGQTczNDAwRUZFMzAzIC8qIFdhc21TdHJlYW1p
bmdQbGFuLmggKi87IH07CiAJCUUzQzc5Q0FCMURCOUE0REMwMEQxRUNBNCAvKiBET01KSVRFZmZl
Y3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzQzc5
Q0FBMURCOUE0RDYwMEQxRUNBNCAvKiBET01KSVRFZmZlY3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQlFM0M4RUQ0MzIzQTFEQkNCMDAxMzE5NTgg
LyogSXNvSW5saW5lZEhlYXBDZWxsVHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRTNDOEVENDIyM0ExREJDNTAwMTMxOTU4IC8qIElzb0lubGluZWRI
ZWFwQ2VsbFR5cGUuaCAqLzsgfTsKKwkJRTNDOEVENDMyM0ExREJDQjAwMTMxOTU4IC8qIElzb0lu
bGluZWRIZWFwQ2VsbFR5cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEUzQzhFRDQyMjNBMURCQzUwMDEzMTk1OCAvKiBJc29JbmxpbmVkSGVhcENlbGxU
eXBlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
RTNDQTNBNEUyNTI3QUIyRjAwNDgwMkJGIC8qIEpJVE9wZXJhdGlvbkxpc3QuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzQ0EzQTRDMjUyN0FCMkYwMDQ4
MDJCRiAvKiBKSVRPcGVyYXRpb25MaXN0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTNEMjM5QzkxQjgyOUMxQzAwQkJFRjY3IC8qIEpTTW9kdWxl
RW52aXJvbm1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEUzRDIzOUM3MUI4MjlDMUMwMEJCRUY2NyAvKiBKU01vZHVsZUVudmlyb25tZW50LmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTNEMzUxNUYy
NDFCODlENzAwOERDMTZFIC8qIE1hcmtlZEpTVmFsdWVSZWZBcnJheS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTNEMzUxNUQyNDFCODlDRTAwOERDMTZF
IC8qIE1hcmtlZEpTVmFsdWVSZWZBcnJheS5oICovOyB9OwpAQCAtMjA0MSw2ICsyMDQxLDggQEAK
IAkJRkU2M0RENTQxRUE5QjYxRTAwMTAzQTY5IC8qIFByaW50ZXIuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFNjNERDUzMUVBOUI2MEUwMDEwM0E2OSAv
KiBQcmludGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJRkU2NDg3MkUyMTQxRDA0ODAwQUIwRDNFIC8qIE9wY29kZUlubGluZXMuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFNjQ4NzJEMjE0MUQwNDgw
MEFCMEQzRSAvKiBPcGNvZGVJbmxpbmVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJRkU2NDkxMzcxRDc4RjAxRDAwQTY5NEQ0IC8qIEV4Y2VwdGlv
blNjb3BlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBG
RTY0OTEzNjFENzhGMDEzMDBBNjk0RDQgLyogRXhjZXB0aW9uU2NvcGUuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlGRTY1QjE1MTI3NDg2MDFGMDBE
QjVCMTYgLyogSXNvSW5saW5lZEhlYXBDZWxsVHlwZUlubGluZXMuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFNjVCMTUwMjc0ODYwMUYwMERCNUIxNiAv
KiBJc29JbmxpbmVkSGVhcENlbGxUeXBlSW5saW5lcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUZFNjVCMTU1Mjc0OTNGMTQwMERCNUIxNiAvKiBJ
c29IZWFwQ2VsbFR5cGVJbmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBGRTY1QjE1NDI3NDkzRjE0MDBEQjVCMTYgLyogSXNvSGVhcENlbGxUeXBl
SW5saW5lcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCUZFNjhDNjM3MUI5MERFMDQwMDQyQkNCMyAvKiBNYWNyb0Fzc2VtYmxlclByaW50ZXIuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFNjhDNjM2MUI5
MERERDkwMDQyQkNCMyAvKiBNYWNyb0Fzc2VtYmxlclByaW50ZXIuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlGRTZGNTZERTFFNjRFQUQ2MDBEMTc4
MDEgLyogVk1UcmFwcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRkU2RjU2REQxRTY0RTkyMDAwRDE3ODAxIC8qIFZNVHJhcHMuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlGRTc0OTdFNjIwOTAwMUIxMDAw
MzU2NUIgLyogSlNDUHRyVGFnLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBGRTc0OTdFNTIwOTAwMUIwMDAwMzU2NUIgLyogSlNDUHRyVGFnLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTU0OTksNiArNTUw
MSw4IEBACiAJCUZFNjQ4NzJEMjE0MUQwNDgwMEFCMEQzRSAvKiBPcGNvZGVJbmxpbmVzLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE9wY29kZUlubGluZXMuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkU2NDkxMzYxRDc4RjAxMzAwQTY5NEQ0IC8qIEV4Y2VwdGlv
blNjb3BlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEV4Y2VwdGlvblNjb3Bl
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFNjQ5MTM4MUQ3OEYzQTMwMEE2OTRE
NCAvKiBFeGNlcHRpb25TY29wZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBFeGNlcHRpb25TY29wZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZF
NjVCMTUwMjc0ODYwMUYwMERCNUIxNiAvKiBJc29JbmxpbmVkSGVhcENlbGxUeXBlSW5saW5lcy5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJc29JbmxpbmVkSGVhcENlbGxUeXBl
SW5saW5lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGRTY1QjE1NDI3NDkzRjE0
MDBEQjVCMTYgLyogSXNvSGVhcENlbGxUeXBlSW5saW5lcy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBJc29IZWFwQ2VsbFR5cGVJbmxpbmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUZFNjhDNjM1MUI5MERERDkwMDQyQkNCMyAvKiBNYWNyb0Fzc2VtYmxlclBy
aW50ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWFjcm9Bc3Nl
bWJsZXJQcmludGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkU2OEM2MzYx
QjkwREREOTAwNDJCQ0IzIC8qIE1hY3JvQXNzZW1ibGVyUHJpbnRlci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBNYWNyb0Fzc2VtYmxlclByaW50ZXIuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJRkU2RjU2REMxRTY0RTkyMDAwRDE3ODAxIC8qIFZNVHJhcHMuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVk1UcmFwcy5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC02NjAyLDcgKzY2MDYsOSBAQAogCQkJCTBGQjQ2NzdC
MUZEREE2RDgwMDNGQ0IwOSAvKiBJc29DZWxsU2V0SW5saW5lcy5oICovLAogCQkJCUUzQzhFRDQx
MjNBMURCQzQwMDEzMTk1OCAvKiBJc29IZWFwQ2VsbFR5cGUuY3BwICovLAogCQkJCUUzQkYxQkFE
MjM4QUFFRDEwMDNBMUMyQiAvKiBJc29IZWFwQ2VsbFR5cGUuaCAqLywKKwkJCQlGRTY1QjE1NDI3
NDkzRjE0MDBEQjVCMTYgLyogSXNvSGVhcENlbGxUeXBlSW5saW5lcy5oICovLAogCQkJCUUzQzhF
RDQyMjNBMURCQzUwMDEzMTk1OCAvKiBJc29JbmxpbmVkSGVhcENlbGxUeXBlLmggKi8sCisJCQkJ
RkU2NUIxNTAyNzQ4NjAxRjAwREI1QjE2IC8qIElzb0lubGluZWRIZWFwQ2VsbFR5cGVJbmxpbmVz
LmggKi8sCiAJCQkJMEZEQ0UxMkMxRkFGQjRERTAwNkYzOTAxIC8qIElzb1N1YnNwYWNlLmNwcCAq
LywKIAkJCQkwRkRDRTEyQjFGQUZCNERFMDA2RjM5MDEgLyogSXNvU3Vic3BhY2UuaCAqLywKIAkJ
CQkwRkQyRkQ5MjIwQjUyQkRDMDBGMDk0NDEgLyogSXNvU3Vic3BhY2VJbmxpbmVzLmggKi8sCkBA
IC0xMDI0MCw2ICsxMDI0Niw3IEBACiAJCQkJQTEyNTg0NkUxQjQ1QTM2MDAwQ0M3RjZDIC8qIElu
dGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvci5sdXQuaCBpbiBIZWFkZXJzICovLAogCQkJCUUzMjMx
MTY5MjRBMURDMzUwMDY5M0RBNSAvKiBJbnRsTnVtYmVyRm9ybWF0SW5saW5lcy5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQTFENzkzMDExQjQzODY0QjAwNDUxNkY1IC8qIEludGxOdW1iZXJGb3JtYXRQ
cm90b3R5cGUuaCBpbiBIZWFkZXJzICovLAorCQkJCUZFNjVCMTU1Mjc0OTNGMTQwMERCNUIxNiAv
KiBJc29IZWFwQ2VsbFR5cGVJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQlBMTI1ODQ2RjFC
NDVBMzYwMDBDQzdGNkMgLyogSW50bE51bWJlckZvcm1hdFByb3RvdHlwZS5sdXQuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUExMkJCRkYyMUIwNDRBOEIwMDY2NEI2OSAvKiBJbnRsT2JqZWN0LmggaW4g
SGVhZGVycyAqLywKIAkJCQk3MDhFQkUyNDFDRThGMzU4MDA0NTMxNDYgLyogSW50bE9iamVjdElu
bGluZXMuaCBpbiBIZWFkZXJzICovLApAQCAtMTA0MTMsNiArMTA0MjAsNyBAQAogCQkJCUUzM0Y1
MDgxMUI4NDI5QTQwMDQxMzg1NiAvKiBKU0ludGVybmFsUHJvbWlzZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJRTMzRjUwNzkxQjg0MjI1NzAwNDEzODU2IC8qIEpTSW50ZXJuYWxQcm9taXNlQ29uc3Ry
dWN0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUUzM0Y1MDg3MUI4NDQ5RUYwMDQxMzg1NiAvKiBK
U0ludGVybmFsUHJvbWlzZUNvbnN0cnVjdG9yLmx1dC5oIGluIEhlYWRlcnMgKi8sCisJCQkJRkU2
NUIxNTEyNzQ4NjAxRjAwREI1QjE2IC8qIElzb0lubGluZWRIZWFwQ2VsbFR5cGVJbmxpbmVzLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlFMzNGNTA3NTFCODQyMUMwMDA0MTM4NTYgLyogSlNJbnRlcm5h
bFByb21pc2VQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1MDNGQTFFMTg4RTBGQjAw
MDExMEYxNCAvKiBKU0phdmFTY3JpcHRDYWxsRnJhbWVQcm90b3R5cGUuaCBpbiBIZWFkZXJzICov
LAogCQkJCUJDMThDNDE2MEUxNkY1Q0QwMEIzNDQ2MCAvKiBKU0xleGljYWxFbnZpcm9ubWVudC5o
IGluIEhlYWRlcnMgKi8sCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNj
ZXNzQ2FzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0FjY2Vzc0Nhc2UuY3BwCShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIyNzcsNyArMjI3
Nyw3IEBAIHZvaWQgQWNjZXNzQ2FzZTo6Z2VuZXJhdGVJbXBsKEFjY2Vzc0dlbmUKICAgICAgICAg
ICAgIHNpemVfdCBuZXdTaXplID0gbmV3U3RydWN0dXJlKCktPm91dE9mTGluZUNhcGFjaXR5KCkg
KiBzaXplb2YoSlNWYWx1ZSk7CiAKICAgICAgICAgICAgIGlmIChhbGxvY2F0aW5nSW5saW5lKSB7
Ci0gICAgICAgICAgICAgICAgQWxsb2NhdG9yIGFsbG9jYXRvciA9IHZtLmpzVmFsdWVHaWdhY2Fn
ZUF1eGlsaWFyeVNwYWNlLmFsbG9jYXRvckZvcihuZXdTaXplLCBBbGxvY2F0b3JGb3JNb2RlOjpB
bGxvY2F0b3JJZkV4aXN0cyk7CisgICAgICAgICAgICAgICAgQWxsb2NhdG9yIGFsbG9jYXRvciA9
IHZtLmpzVmFsdWVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlKCkuYWxsb2NhdG9yRm9yKG5ld1NpemUs
IEFsbG9jYXRvckZvck1vZGU6OkFsbG9jYXRvcklmRXhpc3RzKTsKIAogICAgICAgICAgICAgICAg
IGppdC5lbWl0QWxsb2NhdGUoc2NyYXRjaEdQUiwgSklUQWxsb2NhdG9yOjpjb25zdGFudChhbGxv
Y2F0b3IpLCBzY3JhdGNoR1BSMiwgc2NyYXRjaEdQUjMsIHNsb3dQYXRoKTsKICAgICAgICAgICAg
ICAgICBqaXQuYWRkUHRyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKG5ld1NpemUgKyBzaXpl
b2YoSW5kZXhpbmdIZWFkZXIpKSwgc2NyYXRjaEdQUik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvREZHRXhpdFByb2ZpbGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvREZHRXhpdFByb2ZpbGUuaAkocmV2aXNpb24gMjg2MDk1KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0RGR0V4aXRQcm9maWxlLmgJKHdvcmtp
bmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDExLTIwMTkg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExLTIw
MjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCkBAIC0zNCw3ICszNCwxMSBAQAogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAj
aW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCi1uYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7
CituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgVW5saW5rZWRDb2RlQmxvY2s7CisKK25hbWVzcGFj
ZSBERkcgewogCiBjbGFzcyBGcmVxdWVudEV4aXRTaXRlIHsKIHB1YmxpYzoKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FdmFsQ29kZUJsb2NrLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0V2YWxDb2RlQmxvY2suaAkocmV2aXNpb24g
Mjg2MDk1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0V2YWxDb2RlQmxvY2su
aAkod29ya2luZyBjb3B5KQpAQCAtNDEsNyArNDEsNyBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8
dHlwZW5hbWUsIFN1YnNwYWNlQWNjZXNzPgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3Bh
Y2VGb3IoVk0mIHZtKQogICAgIHsKLSAgICAgICAgcmV0dXJuICZ2bS5jb2RlQmxvY2tTcGFjZS5z
cGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5jb2RlQmxvY2tTcGFjZSgpLnNwYWNlOwogICAgIH0K
IAogICAgIHN0YXRpYyBFdmFsQ29kZUJsb2NrKiBjcmVhdGUoVk0mIHZtLCBDb3B5UGFyc2VkQmxv
Y2tUYWcsIEV2YWxDb2RlQmxvY2smIG90aGVyKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0V4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2UuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlLmNw
cAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0V4
ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04MSw3ICs4MSw3
IEBAIHZvaWQgRXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZTo6dmlzaXRDaGkKICAgICAgICAgdmlz
aXRvci5hcHBlbmRVbmJhcnJpZXJlZChjb2RlQmxvY2spOwogICAgIAogICAgIGlmICghdmlzaXRv
ci5pc01hcmtlZChjb2RlQmxvY2spKQotICAgICAgICB2bS5leGVjdXRhYmxlVG9Db2RlQmxvY2tF
ZGdlc1dpdGhGaW5hbGl6ZXJzLmFkZChlZGdlKTsKKyAgICAgICAgdm0uZXhlY3V0YWJsZVRvQ29k
ZUJsb2NrRWRnZXNXaXRoRmluYWxpemVycygpLmFkZChlZGdlKTsKICAgICAKICAgICBpZiAoSklU
Q29kZTo6aXNPcHRpbWl6aW5nSklUKGNvZGVCbG9jay0+aml0VHlwZSgpKSkgewogICAgICAgICAv
LyBJZiB3ZSBqZXR0aXNvbiBvdXJzZWx2ZXMgd2UnbGwgaW5zdGFsbCBvdXIgYWx0ZXJuYXRpdmUs
IHNvIG1ha2Ugc3VyZSB0aGF0IGl0CkBAIC0xMTQsNyArMTE0LDcgQEAgdm9pZCBFeGVjdXRhYmxl
VG9Db2RlQmxvY2tFZGdlOjp2aXNpdENoaQogICAgIC8vIG5vdCB5ZXQgbWFya2VkIGJlY2F1c2Ug
aXQgd2Vha2x5IGRlcGVuZHMgb24gYSBzdHJ1Y3R1cmUgdGhhdCB3ZSBkaWQgbm90IHlldCBtYXJr
LCB0aGVuIHdlCiAgICAgLy8gd2lsbCBrZWVwIGZpeHBvaW50aW5nIHVudGlsIHRoZSBlbmQuCiAg
ICAgdmlzaXRvci5hcHBlbmRVbmJhcnJpZXJlZChjb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKTsK
LSAgICB2bS5leGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlc1dpdGhDb25zdHJhaW50cy5hZGQoZWRn
ZSk7CisgICAgdm0uZXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZXNXaXRoQ29uc3RyYWludHMoKS5h
ZGQoZWRnZSk7CiAgICAgZWRnZS0+cnVuQ29uc3RyYWludChsb2NrZXIsIHZtLCB2aXNpdG9yKTsK
IH0KIApAQCAtMTQzLDggKzE0Myw4IEBAIHZvaWQgRXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZTo6
ZmluYWxpemUKICAgICAgICAgbV9jb2RlQmxvY2suY2xlYXIoKTsKICAgICB9CiAgICAgCi0gICAg
dm0uZXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZXNXaXRoRmluYWxpemVycy5yZW1vdmUodGhpcyk7
Ci0gICAgdm0uZXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZXNXaXRoQ29uc3RyYWludHMucmVtb3Zl
KHRoaXMpOworICAgIHZtLmV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2VzV2l0aEZpbmFsaXplcnMo
KS5yZW1vdmUodGhpcyk7CisgICAgdm0uZXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZXNXaXRoQ29u
c3RyYWludHMoKS5yZW1vdmUodGhpcyk7CiB9CiAKIGlubGluZSB2b2lkIEV4ZWN1dGFibGVUb0Nv
ZGVCbG9ja0VkZ2U6OmFjdGl2YXRlKCkKQEAgLTIwMSw3ICsyMDEsNyBAQCB2b2lkIEV4ZWN1dGFi
bGVUb0NvZGVCbG9ja0VkZ2U6OnJ1bkNvbnN0CiAgICAgY29kZUJsb2NrLT5kZXRlcm1pbmVMaXZl
bmVzcyhsb2NrZXIsIHZpc2l0b3IpOwogCiAgICAgaWYgKHZpc2l0b3IuaXNNYXJrZWQoY29kZUJs
b2NrKSkKLSAgICAgICAgdm0uZXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZXNXaXRoQ29uc3RyYWlu
dHMucmVtb3ZlKHRoaXMpOworICAgICAgICB2bS5leGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlc1dp
dGhDb25zdHJhaW50cygpLnJlbW92ZSh0aGlzKTsKIH0KIAogdGVtcGxhdGUgdm9pZCBFeGVjdXRh
YmxlVG9Db2RlQmxvY2tFZGdlOjpydW5Db25zdHJhaW50KGNvbnN0IENvbmN1cnJlbnRKU0xvY2tl
ciYsIFZNJiwgQWJzdHJhY3RTbG90VmlzaXRvciYpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0V4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2UuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZS5o
CShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhl
Y3V0YWJsZVRvQ29kZUJsb2NrRWRnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00Myw3ICs0Myw3IEBA
IHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vic3BhY2VBY2Nlc3M+
CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewotICAg
ICAgICByZXR1cm4gJnZtLmV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2VTcGFjZTsKKyAgICAgICAg
cmV0dXJuICZ2bS5leGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlU3BhY2UoKTsKICAgICB9CiAKICAg
ICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mLCBKU0dsb2JhbE9iamVjdCos
IEpTVmFsdWUgcHJvdG90eXBlKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9GdW5jdGlvbkNvZGVCbG9jay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9GdW5jdGlvbkNvZGVCbG9jay5oCShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRnVuY3Rpb25Db2RlQmxvY2suaAkod29ya2luZyBj
b3B5KQpAQCAtNDIsNyArNDIsNyBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUsIFN1
YnNwYWNlQWNjZXNzPgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZt
KQogICAgIHsKLSAgICAgICAgcmV0dXJuICZ2bS5jb2RlQmxvY2tTcGFjZS5zcGFjZTsKKyAgICAg
ICAgcmV0dXJuICZ2bS5jb2RlQmxvY2tTcGFjZSgpLnNwYWNlOwogICAgIH0KIAogICAgIHN0YXRp
YyBGdW5jdGlvbkNvZGVCbG9jayogY3JlYXRlKFZNJiB2bSwgQ29weVBhcnNlZEJsb2NrVGFnLCBG
dW5jdGlvbkNvZGVCbG9jayYgb3RoZXIpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvTW9kdWxlUHJvZ3JhbUNvZGVCbG9jay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9Nb2R1bGVQcm9ncmFtQ29kZUJsb2NrLmgJKHJldmlzaW9uIDI4
NjA5NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Nb2R1bGVQcm9ncmFtQ29k
ZUJsb2NrLmgJKHdvcmtpbmcgY29weSkKQEAgLTQyLDcgKzQyLDcgQEAgcHVibGljOgogICAgIHRl
bXBsYXRlPHR5cGVuYW1lLCBTdWJzcGFjZUFjY2Vzcz4KICAgICBzdGF0aWMgSXNvU3Vic3BhY2Uq
IHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7Ci0gICAgICAgIHJldHVybiAmdm0uY29kZUJsb2Nr
U3BhY2Uuc3BhY2U7CisgICAgICAgIHJldHVybiAmdm0uY29kZUJsb2NrU3BhY2UoKS5zcGFjZTsK
ICAgICB9CiAKICAgICBzdGF0aWMgTW9kdWxlUHJvZ3JhbUNvZGVCbG9jayogY3JlYXRlKFZNJiB2
bSwgQ29weVBhcnNlZEJsb2NrVGFnLCBNb2R1bGVQcm9ncmFtQ29kZUJsb2NrJiBvdGhlcikKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qcm9ncmFtQ29kZUJsb2NrLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Byb2dyYW1Db2RlQmxv
Y2suaAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1Byb2dyYW1Db2RlQmxvY2suaAkod29ya2luZyBjb3B5KQpAQCAtNDIsNyArNDIsNyBAQCBwdWJs
aWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUsIFN1YnNwYWNlQWNjZXNzPgogICAgIHN0YXRpYyBJ
c29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKLSAgICAgICAgcmV0dXJuICZ2
bS5jb2RlQmxvY2tTcGFjZS5zcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5jb2RlQmxvY2tTcGFj
ZSgpLnNwYWNlOwogICAgIH0KIAogICAgIHN0YXRpYyBQcm9ncmFtQ29kZUJsb2NrKiBjcmVhdGUo
Vk0mIHZtLCBDb3B5UGFyc2VkQmxvY2tUYWcsIFByb2dyYW1Db2RlQmxvY2smIG90aGVyKQpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1JlcGF0Y2guaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUmVwYXRjaC5oCShyZXZpc2lvbiAyODYw
OTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUmVwYXRjaC5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMS0yMDIwIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMS0yMDIx
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtMzEsNiArMzEsNyBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAorY2xhc3MgQ2Fs
bExpbmtJbmZvOwogY2xhc3MgU3RydWN0dXJlU3R1YkluZm87CiAKIGVudW0gY2xhc3MgR2V0QnlL
aW5kIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0
aW9uRXhlY3V0YWJsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmNwcAkocmV2aXNpb24gMjg2MDk1KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRh
YmxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjUxLDcgKzI1MSw3IEBAIFVubGlua2VkRnVuY3Rp
b25Db2RlQmxvY2sqIFVubGlua2VkRnVuY3QKICAgICAgICAgbV91bmxpbmtlZENvZGVCbG9ja0Zv
ckNvbnN0cnVjdC5zZXQodm0sIHRoaXMsIHJlc3VsdCk7CiAgICAgICAgIGJyZWFrOwogICAgIH0K
LSAgICB2bS51bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZVNwYWNlLnNldC5hZGQodGhpcyk7Cisg
ICAgdm0udW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGVTcGFjZSgpLnNldC5hZGQodGhpcyk7CiAg
ICAgcmV0dXJuIHJlc3VsdDsKIH0KIApAQCAtMzEwLDcgKzMxMCw3IEBAIHZvaWQgVW5saW5rZWRG
dW5jdGlvbkV4ZWN1dGFibGU6OmZpbmFsaXoKICAgICAgICAgY2xlYXJJZkRlYWQobV91bmxpbmtl
ZENvZGVCbG9ja0ZvckNhbGwpOwogICAgICAgICBjbGVhcklmRGVhZChtX3VubGlua2VkQ29kZUJs
b2NrRm9yQ29uc3RydWN0KTsKICAgICAgICAgaWYgKGlzQ2xlYXJlZCAmJiAhaXNTdGlsbFZhbGlk
KQotICAgICAgICAgICAgdm0udW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGVTcGFjZS5zZXQucmVt
b3ZlKHRoaXMpOworICAgICAgICAgICAgdm0udW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGVTcGFj
ZSgpLnNldC5yZW1vdmUodGhpcyk7CiAgICAgfQogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFi
bGUuaAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQyLDEzICs0
MiwxNCBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAorY2xhc3MgQ2FjaGVkRnVuY3Rpb25FeGVjdXRh
YmxlOwogY2xhc3MgRGVjb2RlcjsKLWNsYXNzIEZ1bmN0aW9uTWV0YWRhdGFOb2RlOwogY2xhc3Mg
RnVuY3Rpb25FeGVjdXRhYmxlOworY2xhc3MgRnVuY3Rpb25NZXRhZGF0YU5vZGU7CiBjbGFzcyBQ
YXJzZXJFcnJvcjsKK2NsYXNzIFNjcmlwdEV4ZWN1dGFibGU7CiBjbGFzcyBTb3VyY2VQcm92aWRl
cjsKIGNsYXNzIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2s7Ci1jbGFzcyBDYWNoZWRGdW5jdGlv
bkV4ZWN1dGFibGU7CiAKIGVudW0gVW5saW5rZWRGdW5jdGlvbktpbmQgewogICAgIFVubGlua2Vk
Tm9ybWFsRnVuY3Rpb24sCkBAIC02Nyw3ICs2OCw3IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBDZWxsVHlwZSwgU3Vic3BhY2VBY2Nlc3M+CiAgICAgc3RhdGljIElzb1N1YnNwYWNl
KiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewotICAgICAgICByZXR1cm4gJnZtLnVubGlua2Vk
RnVuY3Rpb25FeGVjdXRhYmxlU3BhY2Uuc3BhY2U7CisgICAgICAgIHJldHVybiAmdm0udW5saW5r
ZWRGdW5jdGlvbkV4ZWN1dGFibGVTcGFjZSgpLnNwYWNlOwogICAgIH0KIAogICAgIHN0YXRpYyBV
bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogY3JlYXRlKFZNJiB2bSwgY29uc3QgU291cmNlQ29k
ZSYgc291cmNlLCBGdW5jdGlvbk1ldGFkYXRhTm9kZSogbm9kZSwgVW5saW5rZWRGdW5jdGlvbktp
bmQgdW5saW5rZWRGdW5jdGlvbktpbmQsIENvbnN0cnVjdEFiaWxpdHkgY29uc3RydWN0QWJpbGl0
eSwgSlNQYXJzZXJTY3JpcHRNb2RlIHNjcmlwdE1vZGUsIFJlZlB0cjxURFpFbnZpcm9ubWVudExp
bms+IHBhcmVudFNjb3BlVERaVmFyaWFibGVzLCBzdGQ6Om9wdGlvbmFsPFByaXZhdGVOYW1lRW52
aXJvbm1lbnQ+IHBhcmVudFByaXZhdGVOYW1lRW52aXJvbm1lbnQsIERlcml2ZWRDb250ZXh0VHlw
ZSBkZXJpdmVkQ29udGV4dFR5cGUsIE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyIG5lZWRzQ2xh
c3NGaWVsZEluaXRpYWxpemVyLCBQcml2YXRlQnJhbmRSZXF1aXJlbWVudCBwcml2YXRlQnJhbmRS
ZXF1aXJlbWVudCwgYm9vbCBpc0J1aWx0aW5EZWZhdWx0Q2xhc3NDb25zdHJ1Y3RvciA9IGZhbHNl
KQpAQCAtMTMxLDcgKzEzMiw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIG1fdW5saW5rZWRD
b2RlQmxvY2tGb3JDYWxsLmNsZWFyKCk7CiAgICAgICAgIG1fdW5saW5rZWRDb2RlQmxvY2tGb3JD
b25zdHJ1Y3QuY2xlYXIoKTsKLSAgICAgICAgdm0udW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGVT
cGFjZS5zZXQucmVtb3ZlKHRoaXMpOworICAgICAgICB2bS51bmxpbmtlZEZ1bmN0aW9uRXhlY3V0
YWJsZVNwYWNlKCkuc2V0LnJlbW92ZSh0aGlzKTsKICAgICB9CiAKICAgICB2b2lkIHJlY29yZFBh
cnNlKENvZGVGZWF0dXJlcyBmZWF0dXJlcywgTGV4aWNhbFNjb3BlRmVhdHVyZXMgbGV4aWNhbFNj
b3BlRmVhdHVyZXMsIGJvb2wgaGFzQ2FwdHVyZWRWYXJpYWJsZXMpCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAkocmV2aXNpb24gMjg2
MDk1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTEyMCw3ICsxMjAsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpl
bWl0QWxsb2NhdGVSYXdPYmplCiAKICAgICBWTSYgdm0gPSB0aGlzLT52bSgpOwogICAgIGlmIChz
aXplKSB7Ci0gICAgICAgIGlmIChBbGxvY2F0b3IgYWxsb2NhdG9yID0gdm0uanNWYWx1ZUdpZ2Fj
YWdlQXV4aWxpYXJ5U3BhY2UuYWxsb2NhdG9yRm9yTm9uVmlydHVhbChzaXplLCBBbGxvY2F0b3JG
b3JNb2RlOjpBbGxvY2F0b3JJZkV4aXN0cykpIHsKKyAgICAgICAgaWYgKEFsbG9jYXRvciBhbGxv
Y2F0b3IgPSB2bS5qc1ZhbHVlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZSgpLmFsbG9jYXRvckZvck5v
blZpcnR1YWwoc2l6ZSwgQWxsb2NhdG9yRm9yTW9kZTo6QWxsb2NhdG9ySWZFeGlzdHMpKSB7CiAg
ICAgICAgICAgICBtX2ppdC5lbWl0QWxsb2NhdGUoc3RvcmFnZUdQUiwgSklUQWxsb2NhdG9yOjpj
b25zdGFudChhbGxvY2F0b3IpLCBzY3JhdGNoR1BSLCBzY3JhdGNoMkdQUiwgc2xvd0Nhc2VzKTsK
ICAgICAgICAgICAgIAogICAgICAgICAgICAgbV9qaXQuYWRkUHRyKApAQCAtMTA3MzgsNyArMTA3
MzgsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQWxsb2NhdGVQcm9wCiAgICAgCiAg
ICAgc2l6ZV90IHNpemUgPSBpbml0aWFsT3V0T2ZMaW5lQ2FwYWNpdHkgKiBzaXplb2YoSlNWYWx1
ZSk7CiAKLSAgICBBbGxvY2F0b3IgYWxsb2NhdG9yID0gdm0oKS5qc1ZhbHVlR2lnYWNhZ2VBdXhp
bGlhcnlTcGFjZS5hbGxvY2F0b3JGb3JOb25WaXJ0dWFsKHNpemUsIEFsbG9jYXRvckZvck1vZGU6
OkFsbG9jYXRvcklmRXhpc3RzKTsKKyAgICBBbGxvY2F0b3IgYWxsb2NhdG9yID0gdm0oKS5qc1Zh
bHVlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZSgpLmFsbG9jYXRvckZvck5vblZpcnR1YWwoc2l6ZSwg
QWxsb2NhdG9yRm9yTW9kZTo6QWxsb2NhdG9ySWZFeGlzdHMpOwogCiAgICAgaWYgKCFhbGxvY2F0
b3IgfHwgbm9kZS0+dHJhbnNpdGlvbigpLT5wcmV2aW91cy0+Y291bGRIYXZlSW5kZXhpbmdIZWFk
ZXIoKSkgewogICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUtPmNo
aWxkMSgpKTsKQEAgLTEwNzgyLDcgKzEwNzgyLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZVJlYWxsb2NhdGVQcgogICAgIHNpemVfdCBuZXdTaXplID0gb2xkU2l6ZSAqIG91dE9mTGlu
ZUdyb3d0aEZhY3RvcjsKICAgICBBU1NFUlQobmV3U2l6ZSA9PSBub2RlLT50cmFuc2l0aW9uKCkt
Pm5leHQtPm91dE9mTGluZUNhcGFjaXR5KCkgKiBzaXplb2YoSlNWYWx1ZSkpOwogICAgIAotICAg
IEFsbG9jYXRvciBhbGxvY2F0b3IgPSB2bSgpLmpzVmFsdWVHaWdhY2FnZUF1eGlsaWFyeVNwYWNl
LmFsbG9jYXRvckZvck5vblZpcnR1YWwobmV3U2l6ZSwgQWxsb2NhdG9yRm9yTW9kZTo6QWxsb2Nh
dG9ySWZFeGlzdHMpOworICAgIEFsbG9jYXRvciBhbGxvY2F0b3IgPSB2bSgpLmpzVmFsdWVHaWdh
Y2FnZUF1eGlsaWFyeVNwYWNlKCkuYWxsb2NhdG9yRm9yTm9uVmlydHVhbChuZXdTaXplLCBBbGxv
Y2F0b3JGb3JNb2RlOjpBbGxvY2F0b3JJZkV4aXN0cyk7CiAKICAgICBpZiAoIWFsbG9jYXRvciB8
fCBub2RlLT50cmFuc2l0aW9uKCktPnByZXZpb3VzLT5jb3VsZEhhdmVJbmRleGluZ0hlYWRlcigp
KSB7CiAgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGJhc2UodGhpcywgbm9kZS0+Y2hpbGQx
KCkpOwpAQCAtMTE0OTksNyArMTE0OTksNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0TmV3
VHlwZWRBcnJheVdpCiAgICAgICAgIG1faml0LmFuZDMyKFRydXN0ZWRJbW0zMih+NyksIHNjcmF0
Y2hHUFIpOwogICAgIH0KICAgICBtX2ppdC5lbWl0QWxsb2NhdGVWYXJpYWJsZVNpemVkKAotICAg
ICAgICBzdG9yYWdlR1BSLCB2bSgpLnByaW1pdGl2ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UsIHNj
cmF0Y2hHUFIsIHNjcmF0Y2hHUFIsCisgICAgICAgIHN0b3JhZ2VHUFIsIHZtKCkucHJpbWl0aXZl
R2lnYWNhZ2VBdXhpbGlhcnlTcGFjZSgpLCBzY3JhdGNoR1BSLCBzY3JhdGNoR1BSLAogICAgICAg
ICBzY3JhdGNoR1BSMiwgc2xvd0Nhc2VzKTsKICAgICAKICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVt
cCBkb25lID0gbV9qaXQuYnJhbmNoVGVzdDMyKE1hY3JvQXNzZW1ibGVyOjpaZXJvLCBzaXplR1BS
KTsKQEAgLTEzNzAwLDcgKzEzNzAwLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdEFsbG9j
YXRlQnV0dGVyZgogICAgIGRpZE5vdE92ZXJmbG93LmxpbmsoJm1faml0KTsKICNlbmRpZgogICAg
IG1faml0LmVtaXRBbGxvY2F0ZVZhcmlhYmxlU2l6ZWQoCi0gICAgICAgIHN0b3JhZ2VSZXN1bHRH
UFIsIHZtKCkuanNWYWx1ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UsIHNjcmF0Y2gyLCBzY3JhdGNo
MSwgc2NyYXRjaDMsIHNsb3dDYXNlcyk7CisgICAgICAgIHN0b3JhZ2VSZXN1bHRHUFIsIHZtKCku
anNWYWx1ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UoKSwgc2NyYXRjaDIsIHNjcmF0Y2gxLCBzY3Jh
dGNoMywgc2xvd0Nhc2VzKTsKICAgICBtX2ppdC5hZGRQdHIoVHJ1c3RlZEltbTMyKHNpemVvZihJ
bmRleGluZ0hlYWRlcikpLCBzdG9yYWdlUmVzdWx0R1BSKTsKIAogICAgIG1faml0LnN0b3JlMzIo
c2l6ZUdQUiwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc3RvcmFnZVJlc3VsdEdQUiwgQnV0dGVy
Zmx5OjpvZmZzZXRPZlB1YmxpY0xlbmd0aCgpKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTgzMDAsNyArODMwMCw3IEBAIElHTk9SRV9DTEFOR19XQVJOSU5HU19FTkQKICAgICAgICAg
ICAgICAgICBtX291dC5jb25zdEludFB0cih+c3RhdGljX2Nhc3Q8aW50cHRyX3Q+KDcpKSk7CiAg
ICAgICAgIH0KIAotICAgICAgICBMVmFsdWUgYWxsb2NhdG9yID0gYWxsb2NhdG9yRm9yU2l6ZSh2
bSgpLnByaW1pdGl2ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UsIGJ5dGVTaXplLCBzbG93Q2FzZSk7
CisgICAgICAgIExWYWx1ZSBhbGxvY2F0b3IgPSBhbGxvY2F0b3JGb3JTaXplKHZtKCkucHJpbWl0
aXZlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZSgpLCBieXRlU2l6ZSwgc2xvd0Nhc2UpOwogICAgICAg
ICBMVmFsdWUgc3RvcmFnZSA9IGFsbG9jYXRlSGVhcENlbGwoYWxsb2NhdG9yLCBzbG93Q2FzZSk7
CiAKICAgICAgICAgc3BsYXRXb3JkcygKQEAgLTEzOTIxLDcgKzEzOTIxLDcgQEAgSUdOT1JFX0NM
QU5HX1dBUk5JTkdTX0VORAogICAgICAgICAgICAgICAgIFZhbHVlRnJvbUJsb2NrIG5vQnV0dGVy
Zmx5ID0gbV9vdXQuYW5jaG9yKG1fb3V0LmludFB0clplcm8pOwogICAgICAgICAgICAgICAgIAog
ICAgICAgICAgICAgICAgIExWYWx1ZSBzdGFydE9mU3RvcmFnZSA9IGFsbG9jYXRlSGVhcENlbGwo
Ci0gICAgICAgICAgICAgICAgICAgIGFsbG9jYXRvckZvclNpemUodm0oKS5qc1ZhbHVlR2lnYWNh
Z2VBdXhpbGlhcnlTcGFjZSwgYnV0dGVyZmx5U2l6ZSwgc2xvd1BhdGgpLAorICAgICAgICAgICAg
ICAgICAgICBhbGxvY2F0b3JGb3JTaXplKHZtKCkuanNWYWx1ZUdpZ2FjYWdlQXV4aWxpYXJ5U3Bh
Y2UoKSwgYnV0dGVyZmx5U2l6ZSwgc2xvd1BhdGgpLAogICAgICAgICAgICAgICAgICAgICBzbG93
UGF0aCk7CiAKICAgICAgICAgICAgICAgICBMVmFsdWUgZmFzdEJ1dHRlcmZseVZhbHVlID0gbV9v
dXQuYWRkKApAQCAtMTUwMTYsNyArMTUwMTYsNyBAQCBJR05PUkVfQ0xBTkdfV0FSTklOR1NfRU5E
CiAgICAgICAgIExCYXNpY0Jsb2NrIGxhc3ROZXh0ID0gbV9vdXQuaW5zZXJ0TmV3QmxvY2tzQmVm
b3JlKHNsb3dQYXRoKTsKIAogICAgICAgICBzaXplX3Qgc2l6ZUluQnl0ZXMgPSBzaXplSW5WYWx1
ZXMgKiBzaXplb2YoSlNWYWx1ZSk7Ci0gICAgICAgIEFsbG9jYXRvciBhbGxvY2F0b3IgPSB2bSgp
LmpzVmFsdWVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlLmFsbG9jYXRvckZvck5vblZpcnR1YWwoc2l6
ZUluQnl0ZXMsIEFsbG9jYXRvckZvck1vZGU6OkFsbG9jYXRvcklmRXhpc3RzKTsKKyAgICAgICAg
QWxsb2NhdG9yIGFsbG9jYXRvciA9IHZtKCkuanNWYWx1ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2Uo
KS5hbGxvY2F0b3JGb3JOb25WaXJ0dWFsKHNpemVJbkJ5dGVzLCBBbGxvY2F0b3JGb3JNb2RlOjpB
bGxvY2F0b3JJZkV4aXN0cyk7CiAgICAgICAgIExWYWx1ZSBzdGFydE9mU3RvcmFnZSA9IGFsbG9j
YXRlSGVhcENlbGwoCiAgICAgICAgICAgICBtX291dC5jb25zdEludFB0cihhbGxvY2F0b3IubG9j
YWxBbGxvY2F0b3IoKSksIHNsb3dQYXRoKTsKICAgICAgICAgVmFsdWVGcm9tQmxvY2sgZmFzdEJ1
dHRlcmZseSA9IG1fb3V0LmFuY2hvcigKQEAgLTE3MDM4LDcgKzE3MDM4LDcgQEAgSUdOT1JFX0NM
QU5HX1dBUk5JTkdTX0VORAogICAgICAgICBMVmFsdWUgYnV0dGVyZmx5U2l6ZSA9IG1fb3V0LmFk
ZCgKICAgICAgICAgICAgIHBheWxvYWRTaXplLCBtX291dC5jb25zdEludFB0cihzaXplb2YoSW5k
ZXhpbmdIZWFkZXIpKSk7CiAKLSAgICAgICAgTFZhbHVlIGFsbG9jYXRvciA9IGFsbG9jYXRvckZv
clNpemUodm0oKS5qc1ZhbHVlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZSwgYnV0dGVyZmx5U2l6ZSwg
ZmFpbENhc2UpOworICAgICAgICBMVmFsdWUgYWxsb2NhdG9yID0gYWxsb2NhdG9yRm9yU2l6ZSh2
bSgpLmpzVmFsdWVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlKCksIGJ1dHRlcmZseVNpemUsIGZhaWxD
YXNlKTsKICAgICAgICAgTFZhbHVlIHN0YXJ0T2ZTdG9yYWdlID0gYWxsb2NhdGVIZWFwQ2VsbChh
bGxvY2F0b3IsIGZhaWxDYXNlKTsKIAogICAgICAgICBMVmFsdWUgYnV0dGVyZmx5ID0gbV9vdXQu
YWRkKHN0YXJ0T2ZTdG9yYWdlLCBtX291dC5jb25zdEludFB0cihzaXplb2YoSW5kZXhpbmdIZWFk
ZXIpKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZ2VuZXJhdG9yL0RTTC5yYgo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZ2VuZXJhdG9yL0RTTC5yYgkocmV2aXNp
b24gMjg2MDk1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2dlbmVyYXRvci9EU0wucmIJKHdv
cmtpbmcgY29weSkKQEAgLTEsNCArMSw0IEBACi0jIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIENvcHlyaWdodCAoQykgMjAxOC0yMDIxIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICMKICMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAjIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpA
QCAtMTQ3LDYgKzE0Nyw4IEBAIG1vZHVsZSBEU0wKIAogbmFtZXNwYWNlIEpTQyB7CiAKK2NsYXNz
IEJhc2ljQmxvY2tMb2NhdGlvbjsKKwogdm9pZCBkdW1wQnl0ZWNvZGUoQnl0ZWNvZGVEdW1wZXJC
YXNlKiBkdW1wZXIsIEluc3RydWN0aW9uU3RyZWFtOjpPZmZzZXQsIGNvbnN0IEluc3RydWN0aW9u
Kik7CiAKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9Db2RlQmxvY2tTZXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9Db2RlQmxvY2tTZXQuaAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvQ29kZUJsb2NrU2V0LmgJKHdvcmtpbmcgY29weSkKQEAgLTY2LDggKzY2
LDYgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+IHZvaWQgaXRlcmF0
ZShjb25zdCBGdW5jdG9yJik7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4gdm9pZCBp
dGVyYXRlKGNvbnN0IEFic3RyYWN0TG9ja2VyJiwgY29uc3QgRnVuY3RvciYpOwogCi0gICAgdGVt
cGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4gdm9pZCBpdGVyYXRlVmlhU3Vic3BhY2VzKFZNJiwgY29u
c3QgRnVuY3RvciYpOwotICAgIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+IHZvaWQg
aXRlcmF0ZUN1cnJlbnRseUV4ZWN1dGluZyhjb25zdCBGdW5jdG9yJik7CiAgICAgCiAgICAgdm9p
ZCBkdW1wKFByaW50U3RyZWFtJikgY29uc3Q7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9Db2RlQmxvY2tTZXRJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvQ29kZUJsb2NrU2V0SW5saW5lcy5oCShyZXZpc2lvbiAyODYwOTUpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Db2RlQmxvY2tTZXRJbmxpbmVzLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTYwLDE4ICs2MCw2IEBAIHZvaWQgQ29kZUJsb2NrU2V0OjppdGVyYXRlKGNvbnN0
IEFic3RyYWMKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4KLXZvaWQgQ29kZUJsb2Nr
U2V0OjppdGVyYXRlVmlhU3Vic3BhY2VzKFZNJiB2bSwgY29uc3QgRnVuY3RvciYgZnVuY3RvcikK
LXsKLSAgICB2bS5mb3JFYWNoQ29kZUJsb2NrU3BhY2UoCi0gICAgICAgIFsmXSAoYXV0byYgc3Bh
Y2VBbmRTZXQpIHsKLSAgICAgICAgICAgIHNwYWNlQW5kU2V0LnNwYWNlLmZvckVhY2hMaXZlQ2Vs
bCgKLSAgICAgICAgICAgICAgICBbJl0gKEhlYXBDZWxsKiBjZWxsLCBIZWFwQ2VsbDo6S2luZCkg
ewotICAgICAgICAgICAgICAgICAgICBmdW5jdG9yKGpzQ2FzdDxDb2RlQmxvY2sqPihzdGF0aWNf
Y2FzdDxKU0NlbGwqPihjZWxsKSkpOwotICAgICAgICAgICAgICAgIH0pOwotICAgICAgICB9KTsK
LX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4KIHZvaWQgQ29kZUJsb2NrU2V0OjppdGVy
YXRlQ3VycmVudGx5RXhlY3V0aW5nKGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3IpCiB7CiAgICAgTG9j
a2VyIGxvY2tlciB7IG1fbG9jayB9OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
SGVhcC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5j
cHAJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMSwxMyArMjEsMjAgQEAKICNpbmNsdWRlICJjb25maWcu
aCIKICNpbmNsdWRlICJIZWFwLmgiCiAKKyNpbmNsdWRlICJCaWdJbnRPYmplY3QuaCIKKyNpbmNs
dWRlICJCb29sZWFuT2JqZWN0LmgiCisjaW5jbHVkZSAiQnJhbmRlZFN0cnVjdHVyZS5oIgogI2lu
Y2x1ZGUgIkJ1aWx0aW5FeGVjdXRhYmxlcy5oIgorI2luY2x1ZGUgIkNsb25lZEFyZ3VtZW50cy5o
IgogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgogI2luY2x1ZGUgIkNvZGVCbG9ja1NldElubGluZXMu
aCIKICNpbmNsdWRlICJDb2xsZWN0aW5nU2NvcGUuaCIKICNpbmNsdWRlICJDb25zZXJ2YXRpdmVS
b290cy5oIgorI2luY2x1ZGUgIkRhdGVJbnN0YW5jZS5oIgorI2luY2x1ZGUgIkRlYnVnZ2VyU2Nv
cGUuaCIKICNpbmNsdWRlICJFZGVuR0NBY3Rpdml0eUNhbGxiYWNrLmgiCiAjaW5jbHVkZSAiRXhj
ZXB0aW9uLmgiCisjaW5jbHVkZSAiRmFzdE1hbGxvY0FsaWduZWRNZW1vcnlBbGxvY2F0b3IuaCIK
ICNpbmNsdWRlICJGdWxsR0NBY3Rpdml0eUNhbGxiYWNrLmgiCiAjaW5jbHVkZSAiRnVuY3Rpb25F
eGVjdXRhYmxlSW5saW5lcy5oIgogI2luY2x1ZGUgIkdDQWN0aXZpdHlDYWxsYmFjay5oIgpAQCAt
MzUsNiArNDIsNyBAQAogI2luY2x1ZGUgIkdDSW5jb21pbmdSZWZDb3VudGVkU2V0SW5saW5lcy5o
IgogI2luY2x1ZGUgIkdDU2VnbWVudGVkQXJyYXlJbmxpbmVzLmgiCiAjaW5jbHVkZSAiR0NUeXBl
TWFwLmgiCisjaW5jbHVkZSAiR2V0dGVyU2V0dGVyLmgiCiAjaW5jbHVkZSAiSGFzT3duUHJvcGVy
dHlDYWNoZS5oIgogI2luY2x1ZGUgIkhlYXBIZWxwZXJQb29sLmgiCiAjaW5jbHVkZSAiSGVhcEl0
ZXJhdGlvblNjb3BlLmgiCkBAIC00MywzNyArNTEsMTE5IEBACiAjaW5jbHVkZSAiSGVhcFZlcmlm
aWVyLmgiCiAjaW5jbHVkZSAiSW5jcmVtZW50YWxTd2VlcGVyLmgiCiAjaW5jbHVkZSAiSW50ZXJw
cmV0ZXIuaCIKKyNpbmNsdWRlICJJbnRsQ29sbGF0b3IuaCIKKyNpbmNsdWRlICJJbnRsRGF0ZVRp
bWVGb3JtYXQuaCIKKyNpbmNsdWRlICJJbnRsRGlzcGxheU5hbWVzLmgiCisjaW5jbHVkZSAiSW50
bExpc3RGb3JtYXQuaCIKKyNpbmNsdWRlICJJbnRsTG9jYWxlLmgiCisjaW5jbHVkZSAiSW50bE51
bWJlckZvcm1hdC5oIgorI2luY2x1ZGUgIkludGxQbHVyYWxSdWxlcy5oIgorI2luY2x1ZGUgIklu
dGxSZWxhdGl2ZVRpbWVGb3JtYXQuaCIKKyNpbmNsdWRlICJJbnRsU2VnbWVudEl0ZXJhdG9yLmgi
CisjaW5jbHVkZSAiSW50bFNlZ21lbnRlci5oIgorI2luY2x1ZGUgIkludGxTZWdtZW50cy5oIgog
I2luY2x1ZGUgIklzb0NlbGxTZXRJbmxpbmVzLmgiCisvLyNpbmNsdWRlICJJc29IZWFwQ2VsbFR5
cGVJbmxpbmVzLmgiCisjaW5jbHVkZSAiSXNvSW5saW5lZEhlYXBDZWxsVHlwZUlubGluZXMuaCIK
ICNpbmNsdWRlICJKSVRTdHViUm91dGluZVNldC5oIgogI2luY2x1ZGUgIkpJVFdvcmtsaXN0SW5s
aW5lcy5oIgorI2luY2x1ZGUgIkpTQVBJR2xvYmFsT2JqZWN0LmgiCisjaW5jbHVkZSAiSlNBUElW
YWx1ZVdyYXBwZXIuaCIKKyNpbmNsdWRlICJKU0FQSVdyYXBwZXJPYmplY3QuaCIKKyNpbmNsdWRl
ICJKU0FycmF5LmgiCisjaW5jbHVkZSAiSlNBcnJheUJ1ZmZlci5oIgorI2luY2x1ZGUgIkpTQXJy
YXlJdGVyYXRvci5oIgorI2luY2x1ZGUgIkpTQXN5bmNHZW5lcmF0b3IuaCIKKyNpbmNsdWRlICJK
U0JpZ0ludC5oIgorI2luY2x1ZGUgIkpTQm91bmRGdW5jdGlvbi5oIgorI2luY2x1ZGUgIkpTQ2Fs
bGJhY2tDb25zdHJ1Y3Rvci5oIgorI2luY2x1ZGUgIkpTQ2FsbGJhY2tGdW5jdGlvbi5oIgorI2lu
Y2x1ZGUgIkpTQ2FsbGJhY2tPYmplY3QuaCIKKyNpbmNsdWRlICJKU0NhbGxlZS5oIgorI2luY2x1
ZGUgIkpTQ3VzdG9tR2V0dGVyRnVuY3Rpb24uaCIKKyNpbmNsdWRlICJKU0N1c3RvbVNldHRlckZ1
bmN0aW9uLmgiCisjaW5jbHVkZSAiSlNEYXRhVmlldy5oIgogI2luY2x1ZGUgIkpTRmluYWxpemF0
aW9uUmVnaXN0cnkuaCIKKyNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCisjaW5jbHVkZSAiSlNHbG9i
YWxMZXhpY2FsRW52aXJvbm1lbnQuaCIKKyNpbmNsdWRlICJKU0dsb2JhbE9iamVjdC5oIgorI2lu
Y2x1ZGUgIkpTSW5qZWN0ZWRTY3JpcHRIb3N0LmgiCisjaW5jbHVkZSAiSlNKYXZhU2NyaXB0Q2Fs
bEZyYW1lLmgiCisjaW5jbHVkZSAiSlNNYXAuaCIKKyNpbmNsdWRlICJKU01hcEl0ZXJhdG9yLmgi
CisjaW5jbHVkZSAiSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QuaCIKKyNpbmNsdWRlICJKU01vZHVs
ZVJlY29yZC5oIgorI2luY2x1ZGUgIkpTTmF0aXZlU3RkRnVuY3Rpb24uaCIKKyNpbmNsdWRlICJK
U1Byb21pc2UuaCIKKyNpbmNsdWRlICJKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3IuaCIKKyNpbmNs
dWRlICJKU1Byb3h5LmgiCisjaW5jbHVkZSAiSlNTY3JpcHRGZXRjaFBhcmFtZXRlcnMuaCIKKyNp
bmNsdWRlICJKU1NjcmlwdEZldGNoZXIuaCIKKyNpbmNsdWRlICJKU1NldC5oIgorI2luY2x1ZGUg
IkpTU2V0SXRlcmF0b3IuaCIKKyNpbmNsdWRlICJKU1NvdXJjZUNvZGUuaCIKKyNpbmNsdWRlICJK
U1N0cmluZy5oIgorI2luY2x1ZGUgIkpTU3RyaW5nSXRlcmF0b3IuaCIKKyNpbmNsdWRlICJKU1Rl
bXBsYXRlT2JqZWN0RGVzY3JpcHRvci5oIgorI2luY2x1ZGUgIkpTVG9XYXNtSUNDYWxsZWUuaCIK
KyNpbmNsdWRlICJKU1R5cGVkQXJyYXlzLmgiCiAjaW5jbHVkZSAiSlNWaXJ0dWFsTWFjaGluZUlu
dGVybmFsLmgiCiAjaW5jbHVkZSAiSlNXZWFrTWFwLmgiCiAjaW5jbHVkZSAiSlNXZWFrT2JqZWN0
UmVmLmgiCiAjaW5jbHVkZSAiSlNXZWFrU2V0LmgiCiAjaW5jbHVkZSAiSlNXZWJBc3NlbWJseUNv
ZGVCbG9jay5oIgorI2luY2x1ZGUgIkpTV2ViQXNzZW1ibHlFeGNlcHRpb24uaCIKKyNpbmNsdWRl
ICJKU1dlYkFzc2VtYmx5R2xvYmFsLmgiCisjaW5jbHVkZSAiSlNXZWJBc3NlbWJseUluc3RhbmNl
LmgiCisjaW5jbHVkZSAiSlNXZWJBc3NlbWJseU1lbW9yeS5oIgorI2luY2x1ZGUgIkpTV2ViQXNz
ZW1ibHlNb2R1bGUuaCIKKyNpbmNsdWRlICJKU1dlYkFzc2VtYmx5VGFibGUuaCIKKyNpbmNsdWRl
ICJKU1dlYkFzc2VtYmx5VGFnLmgiCisjaW5jbHVkZSAiSlNXaXRoU2NvcGUuaCIKICNpbmNsdWRl
ICJNYWNoaW5lU3RhY2tNYXJrZXIuaCIKICNpbmNsdWRlICJNYXJrU3RhY2tNZXJnaW5nQ29uc3Ry
YWludC5oIgogI2luY2x1ZGUgIk1hcmtlZEpTVmFsdWVSZWZBcnJheS5oIgogI2luY2x1ZGUgIk1h
cmtlZFNwYWNlSW5saW5lcy5oIgogI2luY2x1ZGUgIk1hcmtpbmdDb25zdHJhaW50U2V0LmgiCisj
aW5jbHVkZSAiTmF0aXZlRXhlY3V0YWJsZS5oIgogI2luY2x1ZGUgIlByZXZlbnRDb2xsZWN0aW9u
U2NvcGUuaCIKKyNpbmNsdWRlICJQcm9ncmFtRXhlY3V0YWJsZS5oIgorI2luY2x1ZGUgIlByb3Bl
cnR5VGFibGUuaCIKKyNpbmNsdWRlICJQcm94eVJldm9rZS5oIgorI2luY2x1ZGUgIlJlZ0V4cE9i
amVjdC5oIgogI2luY2x1ZGUgIlNhbXBsaW5nUHJvZmlsZXIuaCIKKyNpbmNsdWRlICJTY29wZWRB
cmd1bWVudHMuaCIKICNpbmNsdWRlICJTaGFkb3dDaGlja2VuLmgiCisjaW5jbHVkZSAiU2hhZG93
UmVhbG1PYmplY3QuaCIKICNpbmNsdWRlICJTcGFjZVRpbWVNdXRhdG9yU2NoZWR1bGVyLmgiCiAj
aW5jbHVkZSAiU3RvY2hhc3RpY1NwYWNlVGltZU11dGF0b3JTY2hlZHVsZXIuaCIKICNpbmNsdWRl
ICJTdG9wSWZOZWNlc3NhcnlUaW1lci5oIgorI2luY2x1ZGUgIlN0cmljdEV2YWxBY3RpdmF0aW9u
LmgiCisjaW5jbHVkZSAiU3RyaW5nT2JqZWN0LmgiCisjaW5jbHVkZSAiU3RydWN0dXJlQ2hhaW4u
aCIKICNpbmNsdWRlICJTdWJzcGFjZUlubGluZXMuaCIKICNpbmNsdWRlICJTdXBlclNhbXBsZXIu
aCIKICNpbmNsdWRlICJTd2VlcGluZ1Njb3BlLmgiCisjaW5jbHVkZSAiU3ltYm9sT2JqZWN0Lmgi
CiAjaW5jbHVkZSAiU3ltYm9sVGFibGVJbmxpbmVzLmgiCiAjaW5jbHVkZSAiU3luY2hyb25vdXNT
dG9wVGhlV29ybGRNdXRhdG9yU2NoZWR1bGVyLmgiCisjaW5jbHVkZSAiVGVtcG9yYWxDYWxlbmRh
ci5oIgorI2luY2x1ZGUgIlRlbXBvcmFsRHVyYXRpb24uaCIKKyNpbmNsdWRlICJUZW1wb3JhbElu
c3RhbnQuaCIKKyNpbmNsdWRlICJUZW1wb3JhbFBsYWluVGltZS5oIgorI2luY2x1ZGUgIlRlbXBv
cmFsVGltZVpvbmUuaCIKICNpbmNsdWRlICJUeXBlUHJvZmlsZXIuaCIKICNpbmNsdWRlICJUeXBl
UHJvZmlsZXJMb2cuaCIKKyNpbmNsdWRlICJVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrLmgiCisj
aW5jbHVkZSAiVW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrLmgiCisjaW5jbHVkZSAiVW5s
aW5rZWRQcm9ncmFtQ29kZUJsb2NrLmgiCiAjaW5jbHVkZSAiVk0uaCIKICNpbmNsdWRlICJWZXJp
ZmllclNsb3RWaXNpdG9ySW5saW5lcy5oIgogI2luY2x1ZGUgIldlYWtNYXBJbXBsSW5saW5lcy5o
IgogI2luY2x1ZGUgIldlYWtTZXRJbmxpbmVzLmgiCisjaW5jbHVkZSAiV2ViQXNzZW1ibHlGdW5j
dGlvbi5oIgorI2luY2x1ZGUgIldlYkFzc2VtYmx5TW9kdWxlUmVjb3JkLmgiCisjaW5jbHVkZSAi
V2ViQXNzZW1ibHlXcmFwcGVyRnVuY3Rpb24uaCIKICNpbmNsdWRlIDxhbGdvcml0aG0+CiAjaW5j
bHVkZSA8d3RmL0NyeXB0b2dyYXBoaWNhbGx5UmFuZG9tTnVtYmVyLmg+CiAjaW5jbHVkZSA8d3Rm
L0xpc3REdW1wLmg+CkBAIC05MCwxMCArMTgwLDE4IEBACiAjaW5jbHVkZSA8d3RmL3NwaS9jb2Nv
YS9vYmpjU1BJLmg+CiAjZW5kaWYKIAorI2lmIEpTQ19PQkpDX0FQSV9FTkFCTEVECisjaW5jbHVk
ZSAiT2JqQ0NhbGxiYWNrRnVuY3Rpb24uaCIKKyNlbmRpZgorCiAjaWZkZWYgSlNDX0dMSUJfQVBJ
X0VOQUJMRUQKKyNpbmNsdWRlICJKU0FQSVdyYXBwZXJHbG9iYWxPYmplY3QuaCIKKyNpbmNsdWRl
ICJKU0NDYWxsYmFja0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNDR0xpYldyYXBwZXJPYmplY3Qu
aCIKICNlbmRpZgogCisjaW5jbHVkZSAiSXNvSGVhcENlbGxUeXBlSW5saW5lcy5oIiAvLyBtbGFt
IFRFU1QKKwogbmFtZXNwYWNlIEpTQyB7CiAKIG5hbWVzcGFjZSB7CkBAIC0yODYsNiArMzg0LDEx
NCBAQCBIZWFwOjpIZWFwKFZNJiB2bSwgSGVhcFR5cGUgaGVhcFR5cGUpCiAgICAgLCBtX2hlbHBl
ckNsaWVudCgmaGVhcEhlbHBlclBvb2woKSkKICAgICAsIG1fdGhyZWFkTG9jayhCb3g8TG9jaz46
OmNyZWF0ZSgpKQogICAgICwgbV90aHJlYWRDb25kaXRpb24oQXV0b21hdGljVGhyZWFkQ29uZGl0
aW9uOjpjcmVhdGUoKSkKKworICAgIC8vIEhlYXBDZWxsVHlwZXMKKyAgICAsIGF1eGlsaWFyeUhl
YXBDZWxsVHlwZShDZWxsQXR0cmlidXRlcyhEb2VzTm90TmVlZERlc3RydWN0aW9uLCBIZWFwQ2Vs
bDo6QXV4aWxpYXJ5KSkKKyAgICAsIGltbXV0YWJsZUJ1dHRlcmZseUhlYXBDZWxsVHlwZShDZWxs
QXR0cmlidXRlcyhEb2VzTm90TmVlZERlc3RydWN0aW9uLCBIZWFwQ2VsbDo6SlNDZWxsV2l0aElu
ZGV4aW5nSGVhZGVyKSkKKyAgICAsIGNlbGxIZWFwQ2VsbFR5cGUoQ2VsbEF0dHJpYnV0ZXMoRG9l
c05vdE5lZWREZXN0cnVjdGlvbiwgSGVhcENlbGw6OkpTQ2VsbCkpCisgICAgLCBkZXN0cnVjdGli
bGVDZWxsSGVhcENlbGxUeXBlKENlbGxBdHRyaWJ1dGVzKE5lZWRzRGVzdHJ1Y3Rpb24sIEhlYXBD
ZWxsOjpKU0NlbGwpKQorLy8gICAgLCBhcGlHbG9iYWxPYmplY3RIZWFwQ2VsbFR5cGUoSXNvSGVh
cENlbGxUeXBlOjpBcmdzPEpTQVBJR2xvYmFsT2JqZWN0PigpKQorLy8gICAgLCBjYWxsYmFja0Nv
bnN0cnVjdG9ySGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6QXJnczxKU0NhbGxiYWNrQ29u
c3RydWN0b3I+KCkpCisvLyAgICAsIGNhbGxiYWNrR2xvYmFsT2JqZWN0SGVhcENlbGxUeXBlKElz
b0hlYXBDZWxsVHlwZTo6QXJnczxKU0NhbGxiYWNrT2JqZWN0PEpTR2xvYmFsT2JqZWN0Pj4oKSkK
Ky8vICAgICwgY2FsbGJhY2tPYmplY3RIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpBcmdz
PEpTQ2FsbGJhY2tPYmplY3Q8SlNOb25GaW5hbE9iamVjdD4+KCkpCisvLyAgICAsIGN1c3RvbUdl
dHRlckZ1bmN0aW9uSGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6QXJnczxKU0N1c3RvbUdl
dHRlckZ1bmN0aW9uPigpKQorLy8gICAgLCBjdXN0b21TZXR0ZXJGdW5jdGlvbkhlYXBDZWxsVHlw
ZShJc29IZWFwQ2VsbFR5cGU6OkFyZ3M8SlNDdXN0b21TZXR0ZXJGdW5jdGlvbj4oKSkKKy8vICAg
ICwgZGF0ZUluc3RhbmNlSGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6QXJnczxEYXRlSW5z
dGFuY2U+KCkpCisvLyAgICAsIGVycm9ySW5zdGFuY2VIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxU
eXBlOjpBcmdzPEVycm9ySW5zdGFuY2U+KCkpCisvLyAgICAsIGZpbmFsaXphdGlvblJlZ2lzdHJ5
Q2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpBcmdzPEpTRmluYWxpemF0aW9uUmVnaXN0cnk+KCkp
CisvLyAgICAsIGdsb2JhbExleGljYWxFbnZpcm9ubWVudEhlYXBDZWxsVHlwZShJc29IZWFwQ2Vs
bFR5cGU6OkFyZ3M8SlNHbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQ+KCkpCisvLyAgICAsIGdsb2Jh
bE9iamVjdEhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OkFyZ3M8SlNHbG9iYWxPYmplY3Q+
KCkpCisvLyAgICAsIGluamVjdGVkU2NyaXB0SG9zdFNwYWNlSGVhcENlbGxUeXBlKElzb0hlYXBD
ZWxsVHlwZTo6QXJnczxJbnNwZWN0b3I6OkpTSW5qZWN0ZWRTY3JpcHRIb3N0PigpKQorLy8gICAg
LCBqYXZhU2NyaXB0Q2FsbEZyYW1lSGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6QXJnczxJ
bnNwZWN0b3I6OkpTSmF2YVNjcmlwdENhbGxGcmFtZT4oKSkKKy8vICAgICwganNNb2R1bGVSZWNv
cmRIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpBcmdzPEpTTW9kdWxlUmVjb3JkPigpKQor
Ly8gICAgLCBtb2R1bGVOYW1lc3BhY2VPYmplY3RIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBl
OjpBcmdzPEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0PigpKQorLy8gICAgLCBuYXRpdmVTdGRGdW5j
dGlvbkhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OkFyZ3M8SlNOYXRpdmVTdGRGdW5jdGlv
bj4oKSkKKy8vICAgICwgd2Vha01hcEhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OkFyZ3M8
SlNXZWFrTWFwPigpKQorLy8gICAgLCB3ZWFrU2V0SGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlw
ZTo6QXJnczxKU1dlYWtTZXQ+KCkpCisjaWYgSlNDX09CSkNfQVBJX0VOQUJMRUQKKy8vICAgICwg
YXBpV3JhcHBlck9iamVjdEhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OkFyZ3M8SlNDYWxs
YmFja09iamVjdDxKU0FQSVdyYXBwZXJPYmplY3Q+PigpKQorLy8gICAgLCBvYmpDQ2FsbGJhY2tG
dW5jdGlvbkhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OkFyZ3M8T2JqQ0NhbGxiYWNrRnVu
Y3Rpb24+KCkpCisjZW5kaWYKKyNpZmRlZiBKU0NfR0xJQl9BUElfRU5BQkxFRAorLy8gICAgLCBh
cGlXcmFwcGVyT2JqZWN0SGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6QXJnczxKU0NhbGxi
YWNrT2JqZWN0PEpTQVBJV3JhcHBlck9iamVjdD4+KCkpCisvLyAgICAsIGNhbGxiYWNrQVBJV3Jh
cHBlckdsb2JhbE9iamVjdEhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OkFyZ3M8SlNDYWxs
YmFja09iamVjdDxKU0FQSVdyYXBwZXJHbG9iYWxPYmplY3Q+PigpKQorLy8gICAgLCBqc2NDYWxs
YmFja0Z1bmN0aW9uSGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6QXJnczxKU0NDYWxsYmFj
a0Z1bmN0aW9uPigpKQorI2VuZGlmCisvLyAgICAsIGludGxDb2xsYXRvckhlYXBDZWxsVHlwZShJ
c29IZWFwQ2VsbFR5cGU6OkFyZ3M8SW50bENvbGxhdG9yPigpKQorLy8gICAgLCBpbnRsRGF0ZVRp
bWVGb3JtYXRIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpBcmdzPEludGxEYXRlVGltZUZv
cm1hdD4oKSkKKy8vICAgICwgaW50bERpc3BsYXlOYW1lc0hlYXBDZWxsVHlwZShJc29IZWFwQ2Vs
bFR5cGU6OkFyZ3M8SW50bERpc3BsYXlOYW1lcz4oKSkKKy8vICAgICwgaW50bExpc3RGb3JtYXRI
ZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpBcmdzPEludGxMaXN0Rm9ybWF0PigpKQorLy8g
ICAgLCBpbnRsTG9jYWxlSGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6QXJnczxJbnRsTG9j
YWxlPigpKQorLy8gICAgLCBpbnRsTnVtYmVyRm9ybWF0SGVhcENlbGxUeXBlKElzb0hlYXBDZWxs
VHlwZTo6QXJnczxJbnRsTnVtYmVyRm9ybWF0PigpKQorLy8gICAgLCBpbnRsUGx1cmFsUnVsZXNI
ZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpBcmdzPEludGxQbHVyYWxSdWxlcz4oKSkKKy8v
ICAgICwgaW50bFJlbGF0aXZlVGltZUZvcm1hdEhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6
OkFyZ3M8SW50bFJlbGF0aXZlVGltZUZvcm1hdD4oKSkKKy8vICAgICwgaW50bFNlZ21lbnRJdGVy
YXRvckhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OkFyZ3M8SW50bFNlZ21lbnRJdGVyYXRv
cj4oKSkKKy8vICAgICwgaW50bFNlZ21lbnRlckhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6
OkFyZ3M8SW50bFNlZ21lbnRlcj4oKSkKKy8vICAgICwgaW50bFNlZ21lbnRzSGVhcENlbGxUeXBl
KElzb0hlYXBDZWxsVHlwZTo6QXJnczxJbnRsU2VnbWVudHM+KCkpCisjaWYgRU5BQkxFKFdFQkFT
U0VNQkxZKQorLy8gICAgLCB3ZWJBc3NlbWJseUNvZGVCbG9ja0hlYXBDZWxsVHlwZShJc29IZWFw
Q2VsbFR5cGU6OkFyZ3M8SlNXZWJBc3NlbWJseUNvZGVCbG9jaz4oKSkKKy8vICAgICwgd2ViQXNz
ZW1ibHlFeGNlcHRpb25IZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpBcmdzPEpTV2ViQXNz
ZW1ibHlFeGNlcHRpb24+KCkpCisvLyAgICAsIHdlYkFzc2VtYmx5RnVuY3Rpb25IZWFwQ2VsbFR5
cGUoSXNvSGVhcENlbGxUeXBlOjpBcmdzPFdlYkFzc2VtYmx5RnVuY3Rpb24+KCkpCisvLyAgICAs
IHdlYkFzc2VtYmx5R2xvYmFsSGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6QXJnczxKU1dl
YkFzc2VtYmx5R2xvYmFsPigpKQorLy8gICAgLCB3ZWJBc3NlbWJseUluc3RhbmNlSGVhcENlbGxU
eXBlKElzb0hlYXBDZWxsVHlwZTo6QXJnczxKU1dlYkFzc2VtYmx5SW5zdGFuY2U+KCkpCisvLyAg
ICAsIHdlYkFzc2VtYmx5TWVtb3J5SGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6QXJnczxK
U1dlYkFzc2VtYmx5TWVtb3J5PigpKQorLy8gICAgLCB3ZWJBc3NlbWJseU1vZHVsZUhlYXBDZWxs
VHlwZShJc29IZWFwQ2VsbFR5cGU6OkFyZ3M8SlNXZWJBc3NlbWJseU1vZHVsZT4oKSkKKy8vICAg
ICwgd2ViQXNzZW1ibHlNb2R1bGVSZWNvcmRIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpB
cmdzPFdlYkFzc2VtYmx5TW9kdWxlUmVjb3JkPigpKQorLy8gICAgLCB3ZWJBc3NlbWJseVRhYmxl
SGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6QXJnczxKU1dlYkFzc2VtYmx5VGFibGU+KCkp
CisvLyAgICAsIHdlYkFzc2VtYmx5VGFnSGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6QXJn
czxKU1dlYkFzc2VtYmx5VGFnPigpKQorI2VuZGlmCisKKyAgICAvLyBBbGlnbmVkTWVtb3J5QWxs
b2NhdG9ycworICAgICwgZmFzdE1hbGxvY0FsbG9jYXRvcihtYWtlVW5pcXVlPEZhc3RNYWxsb2NB
bGlnbmVkTWVtb3J5QWxsb2NhdG9yPigpKQorICAgICwgcHJpbWl0aXZlR2lnYWNhZ2VBbGxvY2F0
b3IobWFrZVVuaXF1ZTxHaWdhY2FnZUFsaWduZWRNZW1vcnlBbGxvY2F0b3I+KEdpZ2FjYWdlOjpQ
cmltaXRpdmUpKQorICAgICwganNWYWx1ZUdpZ2FjYWdlQWxsb2NhdG9yKG1ha2VVbmlxdWU8R2ln
YWNhZ2VBbGlnbmVkTWVtb3J5QWxsb2NhdG9yPihHaWdhY2FnZTo6SlNWYWx1ZSkpCisKKyAgICAv
LyBTdWJzcGFjZXMKKyAgICAsIHByaW1pdGl2ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UoIlByaW1p
dGl2ZSBHaWdhY2FnZSBBdXhpbGlhcnkiLCAqdGhpcywgYXV4aWxpYXJ5SGVhcENlbGxUeXBlLCBw
cmltaXRpdmVHaWdhY2FnZUFsbG9jYXRvci5nZXQoKSkgLy8gSGFzaDoweDNlN2NkNzYyCisgICAg
LCBqc1ZhbHVlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZSgiSlNWYWx1ZSBHaWdhY2FnZSBBdXhpbGlh
cnkiLCAqdGhpcywgYXV4aWxpYXJ5SGVhcENlbGxUeXBlLCBqc1ZhbHVlR2lnYWNhZ2VBbGxvY2F0
b3IuZ2V0KCkpIC8vIEhhc2g6MHgyNDFlOTQ2CisgICAgLCBpbW11dGFibGVCdXR0ZXJmbHlKU1Zh
bHVlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZSgiSW1tdXRhYmxlQnV0dGVyZmx5IEdpZ2FjYWdlIEpT
Q2VsbFdpdGhJbmRleGluZ0hlYWRlciIsICp0aGlzLCBpbW11dGFibGVCdXR0ZXJmbHlIZWFwQ2Vs
bFR5cGUsIGpzVmFsdWVHaWdhY2FnZUFsbG9jYXRvci5nZXQoKSkgLy8gSGFzaDoweDdhOTQ1MzAw
CisgICAgLCBjZWxsU3BhY2UoIkpTQ2VsbCIsICp0aGlzLCBjZWxsSGVhcENlbGxUeXBlLCBmYXN0
TWFsbG9jQWxsb2NhdG9yLmdldCgpKSAvLyBIYXNoOjB4YWRmYjVhNzkKKyAgICAsIHZhcmlhYmxl
U2l6ZWRDZWxsU3BhY2UoIlZhcmlhYmxlIFNpemVkIEpTQ2VsbCIsICp0aGlzLCBjZWxsSGVhcENl
bGxUeXBlLCBmYXN0TWFsbG9jQWxsb2NhdG9yLmdldCgpKSAvLyBIYXNoOjB4YmNkNzY5Y2MKKyAg
ICAsIGRlc3RydWN0aWJsZU9iamVjdFNwYWNlKCJKU0Rlc3RydWN0aWJsZU9iamVjdCIsICp0aGlz
LCBkZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUsIGZhc3RNYWxsb2NBbGxvY2F0b3IuZ2V0
KCkpIC8vIEhhc2g6MHg0ZjVlZDdhOQorICAgICwgYXJyYXlTcGFjZSBJU09fU1VCU1BBQ0VfSU5J
VCgqdGhpcywgY2VsbEhlYXBDZWxsVHlwZSwgSlNBcnJheSkKKyAgICAsIGJpZ0ludFNwYWNlIElT
T19TVUJTUEFDRV9JTklUKCp0aGlzLCBjZWxsSGVhcENlbGxUeXBlLCBKU0JpZ0ludCkKKyAgICAs
IGNhbGxlZVNwYWNlIElTT19TVUJTUEFDRV9JTklUKCp0aGlzLCBjZWxsSGVhcENlbGxUeXBlLCBK
U0NhbGxlZSkKKyAgICAsIGNsb25lZEFyZ3VtZW50c1NwYWNlIElTT19TVUJTUEFDRV9JTklUKCp0
aGlzLCBjZWxsSGVhcENlbGxUeXBlLCBDbG9uZWRBcmd1bWVudHMpCisgICAgLCBjdXN0b21HZXR0
ZXJTZXR0ZXJTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVCgqdGhpcywgY2VsbEhlYXBDZWxsVHlwZSwg
Q3VzdG9tR2V0dGVyU2V0dGVyKQorICAgICwgZGF0ZUluc3RhbmNlU3BhY2UgSVNPX1NVQlNQQUNF
X0lOSVQoKnRoaXMsIGRhdGVJbnN0YW5jZUhlYXBDZWxsVHlwZSwgRGF0ZUluc3RhbmNlKQorICAg
ICwgZG9tQXR0cmlidXRlR2V0dGVyU2V0dGVyU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoKnRoaXMs
IGNlbGxIZWFwQ2VsbFR5cGUsIERPTUF0dHJpYnV0ZUdldHRlclNldHRlcikKKyAgICAsIGV4Y2Vw
dGlvblNwYWNlIElTT19TVUJTUEFDRV9JTklUKCp0aGlzLCBkZXN0cnVjdGlibGVDZWxsSGVhcENl
bGxUeXBlLCBFeGNlcHRpb24pCisgICAgLCBleGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlU3BhY2Ug
SVNPX1NVQlNQQUNFX0lOSVQoKnRoaXMsIGNlbGxIZWFwQ2VsbFR5cGUsIEV4ZWN1dGFibGVUb0Nv
ZGVCbG9ja0VkZ2UpIC8vIEhhc2g6MHg3YjczMGIyMAorICAgICwgZnVuY3Rpb25TcGFjZSBJU09f
U1VCU1BBQ0VfSU5JVCgqdGhpcywgY2VsbEhlYXBDZWxsVHlwZSwgSlNGdW5jdGlvbikgLy8gSGFz
aDoweDgwMGZjYTcyCisgICAgLCBnZXR0ZXJTZXR0ZXJTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVCgq
dGhpcywgY2VsbEhlYXBDZWxsVHlwZSwgR2V0dGVyU2V0dGVyKQorICAgICwgZ2xvYmFsTGV4aWNh
bEVudmlyb25tZW50U3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoKnRoaXMsIGdsb2JhbExleGljYWxF
bnZpcm9ubWVudEhlYXBDZWxsVHlwZSwgSlNHbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQpCisgICAg
LCBpbnRlcm5hbEZ1bmN0aW9uU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoKnRoaXMsIGNlbGxIZWFw
Q2VsbFR5cGUsIEludGVybmFsRnVuY3Rpb24pIC8vIEhhc2g6MHhmODQ1YzQ2NAorICAgICwganNQ
cm94eVNwYWNlIElTT19TVUJTUEFDRV9JTklUKCp0aGlzLCBjZWxsSGVhcENlbGxUeXBlLCBKU1By
b3h5KQorICAgICwgbmF0aXZlRXhlY3V0YWJsZVNwYWNlIElTT19TVUJTUEFDRV9JTklUKCp0aGlz
LCBkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlLCBOYXRpdmVFeGVjdXRhYmxlKSAvLyBIYXNo
OjB4Njc1NjdmOTUKKyAgICAsIG51bWJlck9iamVjdFNwYWNlIElTT19TVUJTUEFDRV9JTklUKCp0
aGlzLCBjZWxsSGVhcENlbGxUeXBlLCBOdW1iZXJPYmplY3QpCisgICAgLCBwbGFpbk9iamVjdFNw
YWNlIElTT19TVUJTUEFDRV9JTklUKCp0aGlzLCBjZWxsSGVhcENlbGxUeXBlLCBKU05vbkZpbmFs
T2JqZWN0KSAvLyBNYWlubHkgdXNlZCBmb3IgcHJvdG90eXBlcy4KKyAgICAsIHByb21pc2VTcGFj
ZSBJU09fU1VCU1BBQ0VfSU5JVCgqdGhpcywgY2VsbEhlYXBDZWxsVHlwZSwgSlNQcm9taXNlKQor
ICAgICwgcHJvcGVydHlOYW1lRW51bWVyYXRvclNwYWNlIElTT19TVUJTUEFDRV9JTklUKCp0aGlz
LCBjZWxsSGVhcENlbGxUeXBlLCBKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3IpCisgICAgLCBwcm9w
ZXJ0eVRhYmxlU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoKnRoaXMsIGRlc3RydWN0aWJsZUNlbGxI
ZWFwQ2VsbFR5cGUsIFByb3BlcnR5VGFibGUpIC8vIEhhc2g6MHhjNmJjOWYxMgorICAgICwgcmVn
RXhwU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoKnRoaXMsIGRlc3RydWN0aWJsZUNlbGxIZWFwQ2Vs
bFR5cGUsIFJlZ0V4cCkKKyAgICAsIHJlZ0V4cE9iamVjdFNwYWNlIElTT19TVUJTUEFDRV9JTklU
KCp0aGlzLCBjZWxsSGVhcENlbGxUeXBlLCBSZWdFeHBPYmplY3QpCisgICAgLCByb3BlU3RyaW5n
U3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoKnRoaXMsIHN0cmluZ0hlYXBDZWxsVHlwZSwgSlNSb3Bl
U3RyaW5nKQorICAgICwgc2NvcGVkQXJndW1lbnRzU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoKnRo
aXMsIGNlbGxIZWFwQ2VsbFR5cGUsIFNjb3BlZEFyZ3VtZW50cykKKyAgICAsIHNwYXJzZUFycmF5
VmFsdWVNYXBTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVCgqdGhpcywgZGVzdHJ1Y3RpYmxlQ2VsbEhl
YXBDZWxsVHlwZSwgU3BhcnNlQXJyYXlWYWx1ZU1hcCkKKyAgICAsIHN0cmluZ1NwYWNlIElTT19T
VUJTUEFDRV9JTklUKCp0aGlzLCBzdHJpbmdIZWFwQ2VsbFR5cGUsIEpTU3RyaW5nKSAvLyBIYXNo
OjB4OTBjZjc1OGYKKyAgICAsIHN0cmluZ09iamVjdFNwYWNlIElTT19TVUJTUEFDRV9JTklUKCp0
aGlzLCBjZWxsSGVhcENlbGxUeXBlLCBTdHJpbmdPYmplY3QpCisgICAgLCBzdHJ1Y3R1cmVDaGFp
blNwYWNlIElTT19TVUJTUEFDRV9JTklUKCp0aGlzLCBjZWxsSGVhcENlbGxUeXBlLCBTdHJ1Y3R1
cmVDaGFpbikKKyAgICAsIHN0cnVjdHVyZVJhcmVEYXRhU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQo
KnRoaXMsIGRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUsIFN0cnVjdHVyZVJhcmVEYXRhKSAv
LyBIYXNoOjB4YWNhNGU2MmQKKyAgICAsIHN0cnVjdHVyZVNwYWNlIElTT19TVUJTUEFDRV9JTklU
KCp0aGlzLCBkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlLCBTdHJ1Y3R1cmUpIC8vIEhhc2g6
MHgxZjFiY2RjYQorICAgICwgYnJhbmRlZFN0cnVjdHVyZVNwYWNlIElTT19TVUJTUEFDRV9JTklU
KCp0aGlzLCBkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlLCBCcmFuZGVkU3RydWN0dXJlKQor
ICAgICwgc3ltYm9sVGFibGVTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVCgqdGhpcywgZGVzdHJ1Y3Rp
YmxlQ2VsbEhlYXBDZWxsVHlwZSwgU3ltYm9sVGFibGUpIC8vIEhhc2g6MHhjNTIxNWFmZAorICAg
ICwgZXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZXNXaXRoQ29uc3RyYWludHMoZXhlY3V0YWJsZVRv
Q29kZUJsb2NrRWRnZVNwYWNlKQorICAgICwgZXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZXNXaXRo
RmluYWxpemVycyhleGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlU3BhY2UpCisgICAgLCBjb2RlQmxv
Y2tTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVCgqdGhpcywgZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxs
VHlwZSwgQ29kZUJsb2NrKSAvLyBIYXNoOjB4NzdlNjZlYzkKKyAgICAsIGZ1bmN0aW9uRXhlY3V0
YWJsZVNwYWNlIElTT19TVUJTUEFDRV9JTklUKCp0aGlzLCBkZXN0cnVjdGlibGVDZWxsSGVhcENl
bGxUeXBlLCBGdW5jdGlvbkV4ZWN1dGFibGUpIC8vIEhhc2g6MHg1ZDE1OGYzCisgICAgLCBwcm9n
cmFtRXhlY3V0YWJsZVNwYWNlIElTT19TVUJTUEFDRV9JTklUKCp0aGlzLCBkZXN0cnVjdGlibGVD
ZWxsSGVhcENlbGxUeXBlLCBQcm9ncmFtRXhlY3V0YWJsZSkgLy8gSGFzaDoweDUyN2M3N2U3Cisg
ICAgLCB1bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZVNwYWNlIElTT19TVUJTUEFDRV9JTklUKCp0
aGlzLCBkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlLCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0
YWJsZSkgLy8gSGFzaDoweGY2YjgyOGQ5CisKIHsKICAgICBtX3dvcmxkU3RhdGUuc3RvcmUoMCk7
CiAKQEAgLTU3OSwzMSArNzg1LDMxIEBAIHZvaWQgSGVhcDo6ZmluYWxpemVVbmNvbmRpdGlvbmFs
RmluYWxpemUKIHsKICAgICBWTSYgdm0gPSB0aGlzLT52bSgpOwogICAgIHZtLmJ1aWx0aW5FeGVj
dXRhYmxlcygpLT5maW5hbGl6ZVVuY29uZGl0aW9uYWxseSgpOwotICAgIGZpbmFsaXplTWFya2Vk
VW5jb25kaXRpb25hbEZpbmFsaXplcnM8RnVuY3Rpb25FeGVjdXRhYmxlPih2bS5mdW5jdGlvbkV4
ZWN1dGFibGVTcGFjZS5zcGFjZSk7Ci0gICAgZmluYWxpemVNYXJrZWRVbmNvbmRpdGlvbmFsRmlu
YWxpemVyczxTeW1ib2xUYWJsZT4odm0uc3ltYm9sVGFibGVTcGFjZSk7Ci0gICAgZmluYWxpemVN
YXJrZWRVbmNvbmRpdGlvbmFsRmluYWxpemVyczxFeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlPih2
bS5leGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlc1dpdGhGaW5hbGl6ZXJzKTsgLy8gV2UgcnVuIHRo
aXMgYmVmb3JlIENvZGVCbG9jaydzIHVuY29uZGl0aW9uYWwgZmluYWxpemVyIHNpbmNlIENvZGVC
bG9jayBsb29rcyBhdCB0aGUgb3duZXIgZXhlY3V0YWJsZSdzIGluc3RhbGxlZCBDb2RlQmxvY2sg
aW4gaXRzIGZpbmFsaXplVW5jb25kaXRpb25hbGx5LgotICAgIHZtLmZvckVhY2hDb2RlQmxvY2tT
cGFjZSgKKyAgICBmaW5hbGl6ZU1hcmtlZFVuY29uZGl0aW9uYWxGaW5hbGl6ZXJzPEZ1bmN0aW9u
RXhlY3V0YWJsZT4oZnVuY3Rpb25FeGVjdXRhYmxlU3BhY2Uuc3BhY2UpOworICAgIGZpbmFsaXpl
TWFya2VkVW5jb25kaXRpb25hbEZpbmFsaXplcnM8U3ltYm9sVGFibGU+KHN5bWJvbFRhYmxlU3Bh
Y2UpOworICAgIGZpbmFsaXplTWFya2VkVW5jb25kaXRpb25hbEZpbmFsaXplcnM8RXhlY3V0YWJs
ZVRvQ29kZUJsb2NrRWRnZT4oZXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZXNXaXRoRmluYWxpemVy
cyk7IC8vIFdlIHJ1biB0aGlzIGJlZm9yZSBDb2RlQmxvY2sncyB1bmNvbmRpdGlvbmFsIGZpbmFs
aXplciBzaW5jZSBDb2RlQmxvY2sgbG9va3MgYXQgdGhlIG93bmVyIGV4ZWN1dGFibGUncyBpbnN0
YWxsZWQgQ29kZUJsb2NrIGluIGl0cyBmaW5hbGl6ZVVuY29uZGl0aW9uYWxseS4KKyAgICBmb3JF
YWNoQ29kZUJsb2NrU3BhY2UoCiAgICAgICAgIFsmXSAoYXV0byYgc3BhY2UpIHsKICAgICAgICAg
ICAgIHRoaXMtPmZpbmFsaXplTWFya2VkVW5jb25kaXRpb25hbEZpbmFsaXplcnM8Q29kZUJsb2Nr
PihzcGFjZS5zZXQpOwogICAgICAgICB9KTsKLSAgICBmaW5hbGl6ZU1hcmtlZFVuY29uZGl0aW9u
YWxGaW5hbGl6ZXJzPFN0cnVjdHVyZVJhcmVEYXRhPih2bS5zdHJ1Y3R1cmVSYXJlRGF0YVNwYWNl
KTsKLSAgICBmaW5hbGl6ZU1hcmtlZFVuY29uZGl0aW9uYWxGaW5hbGl6ZXJzPFVubGlua2VkRnVu
Y3Rpb25FeGVjdXRhYmxlPih2bS51bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZVNwYWNlLnNldCk7
Ci0gICAgaWYgKHZtLm1fd2Vha1NldFNwYWNlKQotICAgICAgICBmaW5hbGl6ZU1hcmtlZFVuY29u
ZGl0aW9uYWxGaW5hbGl6ZXJzPEpTV2Vha1NldD4oKnZtLm1fd2Vha1NldFNwYWNlKTsKLSAgICBp
ZiAodm0ubV93ZWFrTWFwU3BhY2UpCi0gICAgICAgIGZpbmFsaXplTWFya2VkVW5jb25kaXRpb25h
bEZpbmFsaXplcnM8SlNXZWFrTWFwPigqdm0ubV93ZWFrTWFwU3BhY2UpOwotICAgIGlmICh2bS5t
X3dlYWtPYmplY3RSZWZTcGFjZSkKLSAgICAgICAgZmluYWxpemVNYXJrZWRVbmNvbmRpdGlvbmFs
RmluYWxpemVyczxKU1dlYWtPYmplY3RSZWY+KCp2bS5tX3dlYWtPYmplY3RSZWZTcGFjZSk7Ci0g
ICAgaWYgKHZtLm1fZXJyb3JJbnN0YW5jZVNwYWNlKQotICAgICAgICBmaW5hbGl6ZU1hcmtlZFVu
Y29uZGl0aW9uYWxGaW5hbGl6ZXJzPEVycm9ySW5zdGFuY2U+KCp2bS5tX2Vycm9ySW5zdGFuY2VT
cGFjZSk7CisgICAgZmluYWxpemVNYXJrZWRVbmNvbmRpdGlvbmFsRmluYWxpemVyczxTdHJ1Y3R1
cmVSYXJlRGF0YT4oc3RydWN0dXJlUmFyZURhdGFTcGFjZSk7CisgICAgZmluYWxpemVNYXJrZWRV
bmNvbmRpdGlvbmFsRmluYWxpemVyczxVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZT4odW5saW5r
ZWRGdW5jdGlvbkV4ZWN1dGFibGVTcGFjZS5zZXQpOworICAgIGlmIChtX3dlYWtTZXRTcGFjZSkK
KyAgICAgICAgZmluYWxpemVNYXJrZWRVbmNvbmRpdGlvbmFsRmluYWxpemVyczxKU1dlYWtTZXQ+
KCptX3dlYWtTZXRTcGFjZSk7CisgICAgaWYgKG1fd2Vha01hcFNwYWNlKQorICAgICAgICBmaW5h
bGl6ZU1hcmtlZFVuY29uZGl0aW9uYWxGaW5hbGl6ZXJzPEpTV2Vha01hcD4oKm1fd2Vha01hcFNw
YWNlKTsKKyAgICBpZiAobV93ZWFrT2JqZWN0UmVmU3BhY2UpCisgICAgICAgIGZpbmFsaXplTWFy
a2VkVW5jb25kaXRpb25hbEZpbmFsaXplcnM8SlNXZWFrT2JqZWN0UmVmPigqbV93ZWFrT2JqZWN0
UmVmU3BhY2UpOworICAgIGlmIChtX2Vycm9ySW5zdGFuY2VTcGFjZSkKKyAgICAgICAgZmluYWxp
emVNYXJrZWRVbmNvbmRpdGlvbmFsRmluYWxpemVyczxFcnJvckluc3RhbmNlPigqbV9lcnJvcklu
c3RhbmNlU3BhY2UpOwogCiAgICAgLy8gRmluYWxpemF0aW9uUmVnaXN0cmllcyBjdXJyZW50bHkg
cmVseSBvbiBzZXJpYWwgZmluYWxpemF0aW9uIGJlY2F1c2UgdGhleSBjYW4gcG9zdCB0YXNrcyB0
byB0aGUgZGVmZXJyZWRXb3JrVGltZXIsIHdoaWNoIG5vcm1hbGx5IGV4cGVjdHMgdGFza3MgdG8g
b25seSBiZSBwb3N0ZWQgYnkgdGhlIEFQSSBsb2NrIGhvbGRlci4KLSAgICBpZiAodm0ubV9maW5h
bGl6YXRpb25SZWdpc3RyeVNwYWNlKQotICAgICAgICBmaW5hbGl6ZU1hcmtlZFVuY29uZGl0aW9u
YWxGaW5hbGl6ZXJzPEpTRmluYWxpemF0aW9uUmVnaXN0cnk+KCp2bS5tX2ZpbmFsaXphdGlvblJl
Z2lzdHJ5U3BhY2UpOworICAgIGlmIChtX2ZpbmFsaXphdGlvblJlZ2lzdHJ5U3BhY2UpCisgICAg
ICAgIGZpbmFsaXplTWFya2VkVW5jb25kaXRpb25hbEZpbmFsaXplcnM8SlNGaW5hbGl6YXRpb25S
ZWdpc3RyeT4oKm1fZmluYWxpemF0aW9uUmVnaXN0cnlTcGFjZSk7CiAKICNpZiBFTkFCTEUoV0VC
QVNTRU1CTFkpCi0gICAgaWYgKHZtLm1fd2ViQXNzZW1ibHlDb2RlQmxvY2tTcGFjZSkKLSAgICAg
ICAgZmluYWxpemVNYXJrZWRVbmNvbmRpdGlvbmFsRmluYWxpemVyczxKU1dlYkFzc2VtYmx5Q29k
ZUJsb2NrPigqdm0ubV93ZWJBc3NlbWJseUNvZGVCbG9ja1NwYWNlKTsKKyAgICBpZiAobV93ZWJB
c3NlbWJseUNvZGVCbG9ja1NwYWNlKQorICAgICAgICBmaW5hbGl6ZU1hcmtlZFVuY29uZGl0aW9u
YWxGaW5hbGl6ZXJzPEpTV2ViQXNzZW1ibHlDb2RlQmxvY2s+KCptX3dlYkFzc2VtYmx5Q29kZUJs
b2NrU3BhY2UpOwogI2VuZGlmCiB9CiAKQEAgLTkwNSw3ICsxMTExLDcgQEAgdm9pZCBIZWFwOjpk
ZWxldGVBbGxDb2RlQmxvY2tzKERlbGV0ZUFsbAogCiAgICAgY29tcGxldGVBbGxKSVRQbGFucygp
OwogCi0gICAgdm0uZm9yRWFjaFNjcmlwdEV4ZWN1dGFibGVTcGFjZSgKKyAgICBmb3JFYWNoU2Ny
aXB0RXhlY3V0YWJsZVNwYWNlKAogICAgICAgICBbJl0gKGF1dG8mIHNwYWNlQW5kU2V0KSB7CiAg
ICAgICAgICAgICBIZWFwSXRlcmF0aW9uU2NvcGUgaGVhcEl0ZXJhdGlvblNjb3BlKCp0aGlzKTsK
ICAgICAgICAgICAgIGF1dG8mIHNldCA9IHNwYWNlQW5kU2V0LnNldDsKQEAgLTkyNCw4ICsxMTMw
LDggQEAgdm9pZCBIZWFwOjpkZWxldGVBbGxDb2RlQmxvY2tzKERlbGV0ZUFsbAogICAgICAgICAv
LyBwb2ludHMgaW50byBhIENvZGVCbG9jayB0aGF0IGNvdWxkIGJlIGRlYWQuIFRoZSBJQyB3aWxs
IHN0aWxsIHN1Y2NlZWQgYmVjYXVzZQogICAgICAgICAvLyBpdCB1c2VzIGEgY2FsbGVlIGNoZWNr
LCBidXQgdGhlbiBpdCB3aWxsIGNhbGwgaW50byBkZWFkIGNvZGUuCiAgICAgICAgIEhlYXBJdGVy
YXRpb25TY29wZSBoZWFwSXRlcmF0aW9uU2NvcGUoKnRoaXMpOwotICAgICAgICBpZiAodm0ubV93
ZWJBc3NlbWJseUNvZGVCbG9ja1NwYWNlKSB7Ci0gICAgICAgICAgICB2bS5tX3dlYkFzc2VtYmx5
Q29kZUJsb2NrU3BhY2UtPmZvckVhY2hMaXZlQ2VsbChbJl0gKEhlYXBDZWxsKiBjZWxsLCBIZWFw
Q2VsbDo6S2luZCBraW5kKSB7CisgICAgICAgIGlmIChtX3dlYkFzc2VtYmx5Q29kZUJsb2NrU3Bh
Y2UpIHsKKyAgICAgICAgICAgIG1fd2ViQXNzZW1ibHlDb2RlQmxvY2tTcGFjZS0+Zm9yRWFjaExp
dmVDZWxsKFsmXSAoSGVhcENlbGwqIGNlbGwsIEhlYXBDZWxsOjpLaW5kIGtpbmQpIHsKICAgICAg
ICAgICAgICAgICBBU1NFUlRfVU5VU0VEKGtpbmQsIGtpbmQgPT0gSGVhcENlbGw6OkpTQ2VsbCk7
CiAgICAgICAgICAgICAgICAgSlNXZWJBc3NlbWJseUNvZGVCbG9jayogY29kZUJsb2NrID0gc3Rh
dGljX2Nhc3Q8SlNXZWJBc3NlbWJseUNvZGVCbG9jayo+KGNlbGwpOwogICAgICAgICAgICAgICAg
IGNvZGVCbG9jay0+Y2xlYXJKU0NhbGxJQ3Modm0pOwpAQCAtOTQ2LDcgKzExNTIsNyBAQCB2b2lk
IEhlYXA6OmRlbGV0ZUFsbFVubGlua2VkQ29kZUJsb2NrcyhECiAgICAgUkVMRUFTRV9BU1NFUlQo
IW1fY29sbGVjdGlvblNjb3BlKTsKIAogICAgIEhlYXBJdGVyYXRpb25TY29wZSBoZWFwSXRlcmF0
aW9uU2NvcGUoKnRoaXMpOwotICAgIHZtLnVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlU3BhY2Uu
c2V0LmZvckVhY2hMaXZlQ2VsbCgKKyAgICB1bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZVNwYWNl
LnNldC5mb3JFYWNoTGl2ZUNlbGwoCiAgICAgICAgIFsmXSAoSGVhcENlbGwqIGNlbGwsIEhlYXBD
ZWxsOjpLaW5kKSB7CiAgICAgICAgICAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhl
Y3V0YWJsZSA9IHN0YXRpY19jYXN0PFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKj4oY2VsbCk7
CiAgICAgICAgICAgICBleGVjdXRhYmxlLT5jbGVhckNvZGUodm0pOwpAQCAtOTU1LDEwICsxMTYx
LDEwIEBAIHZvaWQgSGVhcDo6ZGVsZXRlQWxsVW5saW5rZWRDb2RlQmxvY2tzKEQKIAogdm9pZCBI
ZWFwOjpkZWxldGVVbm1hcmtlZENvbXBpbGVkQ29kZSgpCiB7Ci0gICAgdm0oKS5mb3JFYWNoU2Ny
aXB0RXhlY3V0YWJsZVNwYWNlKFtdIChhdXRvJiBzcGFjZSkgeyBzcGFjZS5zcGFjZS5zd2VlcCgp
OyB9KTsKKyAgICBmb3JFYWNoU2NyaXB0RXhlY3V0YWJsZVNwYWNlKFtdIChhdXRvJiBzcGFjZSkg
eyBzcGFjZS5zcGFjZS5zd2VlcDMoKTsgfSk7CiAgICAgLy8gU3dlZXBpbmcgbXVzdCBvY2N1ciBi
ZWZvcmUgZGVsZXRpbmcgc3R1YnMsIG90aGVyd2lzZSB0aGUgc3R1YnMgbWlnaHQgc3RpbGwgdGhp
bmsgdGhleSdyZSBhbGl2ZSBhcyB0aGV5IGdldCBkZWxldGVkLgogICAgIC8vIEFuZCBDb2RlQmxv
Y2sgZGVzdHJ1Y3RvciBpcyBhc3N1bWluZyB0aGF0IENvZGVCbG9jayBnZXRzIGRlc3Ryb3llZCBi
ZWZvcmUgVW5saW5rZWRDb2RlQmxvY2sgZ2V0cyBkZXN0cm95ZWQuCi0gICAgdm0oKS5mb3JFYWNo
Q29kZUJsb2NrU3BhY2UoW10gKGF1dG8mIHNwYWNlKSB7IHNwYWNlLnNwYWNlLnN3ZWVwKCk7IH0p
OworICAgIGZvckVhY2hDb2RlQmxvY2tTcGFjZShbXSAoYXV0byYgc3BhY2UpIHsgc3BhY2Uuc3Bh
Y2Uuc3dlZXAzKCk7IH0pOwogICAgIG1faml0U3R1YlJvdXRpbmVzLT5kZWxldGVVbm1hcmtlZEpl
dHRpc29uZWRTdHViUm91dGluZXMoKTsKIH0KIApAQCAtMjEwMyw4ICsyMzA5LDggQEAgdm9pZCBI
ZWFwOjpzd2VlcEluRmluYWxpemUoKQogICAgIG1fb2JqZWN0U3BhY2Uuc3dlZXBQcmVjaXNlQWxs
b2NhdGlvbnMoKTsKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAgICAgLy8gV2UgaG9sZCBvbnRv
IGEgbG90IG9mIG1lbW9yeSwgc28gaXQgbWFrZXMgYSBsb3Qgb2Ygc2Vuc2UgdG8gYmUgc3dlcHQg
ZWFnZXJseS4KLSAgICBpZiAodm0oKS5tX3dlYkFzc2VtYmx5TWVtb3J5U3BhY2UpCi0gICAgICAg
IHZtKCkubV93ZWJBc3NlbWJseU1lbW9yeVNwYWNlLT5zd2VlcCgpOworICAgIGlmIChtX3dlYkFz
c2VtYmx5TWVtb3J5U3BhY2UpCisgICAgICAgIG1fd2ViQXNzZW1ibHlNZW1vcnlTcGFjZS0+c3dl
ZXAzKCk7CiAjZW5kaWYKIH0KIApAQCAtMjgwNSw3ICszMDExLDcgQEAgdm9pZCBIZWFwOjphZGRD
b3JlQ29uc3RyYWludHMoKQogICAgICAgICAiTyIsICJPdXRwdXQiLAogICAgICAgICBNQUtFX01B
UktJTkdfQ09OU1RSQUlOVF9FWEVDVVRPUl9QQUlSKChbXSAoYXV0byYgdmlzaXRvcikgewogICAg
ICAgICAgICAgdXNpbmcgVmlzaXRvciA9IGRlY2x0eXBlKHZpc2l0b3IpOwotICAgICAgICAgICAg
Vk0mIHZtID0gdmlzaXRvci52bSgpOworICAgICAgICAgICAgSGVhcCogaGVhcCA9IHZpc2l0b3Iu
aGVhcCgpOwogCiAgICAgICAgICAgICAvLyBUaGUgYHZpc2l0b3IyYCBhcmd1bWVudCBpcyBzdHJh
bmdlbHkgbmFtZWQgYmVjYXVzZSB0aGUgV2luQ2Fpcm8gcG9ydAogICAgICAgICAgICAgLy8gZ2V0
cyBjb25mdXNlZCAgYW5kIHRoaW5rcyB3ZSdyZSB0cnlpbmcgdG8gY2FwdHVyZSB0aGUgb3V0ZXIg
dmlzaXRvcgpAQCAtMjgyNCwxMSArMzAzMCwxMSBAQCB2b2lkIEhlYXA6OmFkZENvcmVDb25zdHJh
aW50cygpCiAKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICBTZXRSb290TWFya1JlYXNv
blNjb3BlIHJvb3RTY29wZSh2aXNpdG9yLCBSb290TWFya1JlYXNvbjo6RXhlY3V0YWJsZVRvQ29k
ZUJsb2NrRWRnZXMpOwotICAgICAgICAgICAgICAgIGFkZCh2bS5leGVjdXRhYmxlVG9Db2RlQmxv
Y2tFZGdlc1dpdGhDb25zdHJhaW50cyk7CisgICAgICAgICAgICAgICAgYWRkKGhlYXAtPmV4ZWN1
dGFibGVUb0NvZGVCbG9ja0VkZ2VzV2l0aENvbnN0cmFpbnRzKTsKICAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgIGlmICh2bS5tX3dlYWtNYXBTcGFjZSkgeworICAgICAgICAgICAgaWYgKGhlYXAt
Pm1fd2Vha01hcFNwYWNlKSB7CiAgICAgICAgICAgICAgICAgU2V0Um9vdE1hcmtSZWFzb25TY29w
ZSByb290U2NvcGUodmlzaXRvciwgUm9vdE1hcmtSZWFzb246OldlYWtNYXBTcGFjZSk7Ci0gICAg
ICAgICAgICAgICAgYWRkKCp2bS5tX3dlYWtNYXBTcGFjZSk7CisgICAgICAgICAgICAgICAgYWRk
KCpoZWFwLT5tX3dlYWtNYXBTcGFjZSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0pKSwKICAg
ICAgICAgQ29uc3RyYWludFZvbGF0aWxpdHk6OkdyZXllZEJ5TWFya2luZywKQEAgLTMwNjIsNCAr
MzI2OCwxMzUgQEAgdm9pZCBIZWFwOjp2ZXJpZnlHQygpCiAgICAgbV92ZXJpZmllclNsb3RWaXNp
dG9yID0gbnVsbHB0cjsKIH0KIAorI2RlZmluZSBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVf
TUVNQkVSX1NMT1cobmFtZSwgaGVhcENlbGxUeXBlLCB0eXBlKSBcCisgICAgSXNvU3Vic3BhY2Uq
IEhlYXA6Om5hbWUjI1Nsb3coKSBcCisgICAgeyBcCisgICAgICAgIEFTU0VSVCghbV8jI25hbWUp
OyBcCisgICAgICAgIGF1dG8gc3BhY2UgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VC
U1BBQ0VfSU5JVCgqdGhpcywgaGVhcENlbGxUeXBlLCB0eXBlKTsgXAorICAgICAgICBXVEY6OnN0
b3JlU3RvcmVGZW5jZSgpOyBcCisgICAgICAgIG1fIyNuYW1lID0gV1RGTW92ZShzcGFjZSk7IFwK
KyAgICAgICAgcmV0dXJuIG1fIyNuYW1lLmdldCgpOyBcCisgICAgfQorCisKK0RZTkFNSUNfSVNP
X1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhhcGlHbG9iYWxPYmplY3RTcGFjZSwgYXBpR2xv
YmFsT2JqZWN0SGVhcENlbGxUeXBlLCBKU0FQSUdsb2JhbE9iamVjdCkKK0RZTkFNSUNfSVNPX1NV
QlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhhcGlWYWx1ZVdyYXBwZXJTcGFjZSwgY2VsbEhlYXBD
ZWxsVHlwZSwgSlNBUElWYWx1ZVdyYXBwZXIpCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVf
TUVNQkVSX1NMT1coYXJyYXlCdWZmZXJTcGFjZSwgY2VsbEhlYXBDZWxsVHlwZSwgSlNBcnJheUJ1
ZmZlcikKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhhcnJheUl0ZXJh
dG9yU3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUsIEpTQXJyYXlJdGVyYXRvcikKK0RZTkFNSUNfSVNP
X1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhhc3luY0dlbmVyYXRvclNwYWNlLCBjZWxsSGVh
cENlbGxUeXBlLCBKU0FzeW5jR2VuZXJhdG9yKQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5F
X01FTUJFUl9TTE9XKGJpZ0ludDY0QXJyYXlTcGFjZSwgY2VsbEhlYXBDZWxsVHlwZSwgSlNCaWdJ
bnQ2NEFycmF5KQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGJpZ0lu
dE9iamVjdFNwYWNlLCBjZWxsSGVhcENlbGxUeXBlLCBCaWdJbnRPYmplY3QpCitEWU5BTUlDX0lT
T19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coYmlnVWludDY0QXJyYXlTcGFjZSwgY2VsbEhl
YXBDZWxsVHlwZSwgSlNCaWdVaW50NjRBcnJheSkKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklO
RV9NRU1CRVJfU0xPVyhib29sZWFuT2JqZWN0U3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUsIEJvb2xl
YW5PYmplY3QpCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coYm91bmRG
dW5jdGlvblNwYWNlLCBjZWxsSGVhcENlbGxUeXBlLCBKU0JvdW5kRnVuY3Rpb24pIC8vIEhhc2g6
MHhkNzkxNmQ0MQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGNhbGxi
YWNrQ29uc3RydWN0b3JTcGFjZSwgY2FsbGJhY2tDb25zdHJ1Y3RvckhlYXBDZWxsVHlwZSwgSlND
YWxsYmFja0NvbnN0cnVjdG9yKQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9T
TE9XKGNhbGxiYWNrR2xvYmFsT2JqZWN0U3BhY2UsIGNhbGxiYWNrR2xvYmFsT2JqZWN0SGVhcENl
bGxUeXBlLCBKU0NhbGxiYWNrT2JqZWN0PEpTR2xvYmFsT2JqZWN0PikKK0RZTkFNSUNfSVNPX1NV
QlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhjYWxsYmFja0Z1bmN0aW9uU3BhY2UsIGNlbGxIZWFw
Q2VsbFR5cGUsIEpTQ2FsbGJhY2tGdW5jdGlvbikgLy8gSGFzaDoweGU3NjQ4ZWJjCitEWU5BTUlD
X0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coY2FsbGJhY2tPYmplY3RTcGFjZSwgY2Fs
bGJhY2tPYmplY3RIZWFwQ2VsbFR5cGUsIEpTQ2FsbGJhY2tPYmplY3Q8SlNOb25GaW5hbE9iamVj
dD4pCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coY3VzdG9tR2V0dGVy
RnVuY3Rpb25TcGFjZSwgY3VzdG9tR2V0dGVyRnVuY3Rpb25IZWFwQ2VsbFR5cGUsIEpTQ3VzdG9t
R2V0dGVyRnVuY3Rpb24pCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1co
Y3VzdG9tU2V0dGVyRnVuY3Rpb25TcGFjZSwgY3VzdG9tU2V0dGVyRnVuY3Rpb25IZWFwQ2VsbFR5
cGUsIEpTQ3VzdG9tU2V0dGVyRnVuY3Rpb24pCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVf
TUVNQkVSX1NMT1coZGF0YVZpZXdTcGFjZSwgY2VsbEhlYXBDZWxsVHlwZSwgSlNEYXRhVmlldykK
K0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhkZWJ1Z2dlclNjb3BlU3Bh
Y2UsIGNlbGxIZWFwQ2VsbFR5cGUsIERlYnVnZ2VyU2NvcGUpCitEWU5BTUlDX0lTT19TVUJTUEFD
RV9ERUZJTkVfTUVNQkVSX1NMT1coZXJyb3JJbnN0YW5jZVNwYWNlLCBlcnJvckluc3RhbmNlSGVh
cENlbGxUeXBlLCBFcnJvckluc3RhbmNlKSAvLyBIYXNoOjB4M2Y0MGQ0YQorRFlOQU1JQ19JU09f
U1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGZsb2F0MzJBcnJheVNwYWNlLCBjZWxsSGVhcENl
bGxUeXBlLCBKU0Zsb2F0MzJBcnJheSkKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1C
RVJfU0xPVyhmbG9hdDY0QXJyYXlTcGFjZSwgY2VsbEhlYXBDZWxsVHlwZSwgSlNGbG9hdDY0QXJy
YXkpCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coZnVuY3Rpb25SYXJl
RGF0YVNwYWNlLCBkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlLCBGdW5jdGlvblJhcmVEYXRh
KQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGdlbmVyYXRvclNwYWNl
LCBjZWxsSGVhcENlbGxUeXBlLCBKU0dlbmVyYXRvcikKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RF
RklORV9NRU1CRVJfU0xPVyhnbG9iYWxPYmplY3RTcGFjZSwgZ2xvYmFsT2JqZWN0SGVhcENlbGxU
eXBlLCBKU0dsb2JhbE9iamVjdCkKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJf
U0xPVyhpbmplY3RlZFNjcmlwdEhvc3RTcGFjZSwgaW5qZWN0ZWRTY3JpcHRIb3N0U3BhY2VIZWFw
Q2VsbFR5cGUsIEluc3BlY3Rvcjo6SlNJbmplY3RlZFNjcmlwdEhvc3QpCitEWU5BTUlDX0lTT19T
VUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coaW50OEFycmF5U3BhY2UsIGNlbGxIZWFwQ2VsbFR5
cGUsIEpTSW50OEFycmF5KQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9X
KGludDE2QXJyYXlTcGFjZSwgY2VsbEhlYXBDZWxsVHlwZSwgSlNJbnQxNkFycmF5KQorRFlOQU1J
Q19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGludDMyQXJyYXlTcGFjZSwgY2VsbEhl
YXBDZWxsVHlwZSwgSlNJbnQzMkFycmF5KQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01F
TUJFUl9TTE9XKGphdmFTY3JpcHRDYWxsRnJhbWVTcGFjZSwgamF2YVNjcmlwdENhbGxGcmFtZUhl
YXBDZWxsVHlwZSwgSW5zcGVjdG9yOjpKU0phdmFTY3JpcHRDYWxsRnJhbWUpCitEWU5BTUlDX0lT
T19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coanNNb2R1bGVSZWNvcmRTcGFjZSwganNNb2R1
bGVSZWNvcmRIZWFwQ2VsbFR5cGUsIEpTTW9kdWxlUmVjb3JkKQorRFlOQU1JQ19JU09fU1VCU1BB
Q0VfREVGSU5FX01FTUJFUl9TTE9XKG1hcEJ1Y2tldFNwYWNlLCBjZWxsSGVhcENlbGxUeXBlLCBK
U01hcDo6QnVja2V0VHlwZSkKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xP
VyhtYXBJdGVyYXRvclNwYWNlLCBjZWxsSGVhcENlbGxUeXBlLCBKU01hcEl0ZXJhdG9yKQorRFlO
QU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKG1hcFNwYWNlLCBjZWxsSGVhcENl
bGxUeXBlLCBKU01hcCkKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyht
b2R1bGVOYW1lc3BhY2VPYmplY3RTcGFjZSwgbW9kdWxlTmFtZXNwYWNlT2JqZWN0SGVhcENlbGxU
eXBlLCBKU01vZHVsZU5hbWVzcGFjZU9iamVjdCkKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklO
RV9NRU1CRVJfU0xPVyhuYXRpdmVTdGRGdW5jdGlvblNwYWNlLCBuYXRpdmVTdGRGdW5jdGlvbkhl
YXBDZWxsVHlwZSwgSlNOYXRpdmVTdGRGdW5jdGlvbikgLy8gSGFzaDoweDcwZWQ2MWU0CitEWU5B
TUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1cocHJveHlPYmplY3RTcGFjZSwgY2Vs
bEhlYXBDZWxsVHlwZSwgUHJveHlPYmplY3QpCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVf
TUVNQkVSX1NMT1cocHJveHlSZXZva2VTcGFjZSwgY2VsbEhlYXBDZWxsVHlwZSwgUHJveHlSZXZv
a2UpIC8vIEhhc2g6MHhiNTA2YTkzOQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJF
Ul9TTE9XKHNjb3BlZEFyZ3VtZW50c1RhYmxlU3BhY2UsIGRlc3RydWN0aWJsZUNlbGxIZWFwQ2Vs
bFR5cGUsIFNjb3BlZEFyZ3VtZW50c1RhYmxlKQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5F
X01FTUJFUl9TTE9XKHNjcmlwdEZldGNoUGFyYW1ldGVyc1NwYWNlLCBkZXN0cnVjdGlibGVDZWxs
SGVhcENlbGxUeXBlLCBKU1NjcmlwdEZldGNoUGFyYW1ldGVycykKK0RZTkFNSUNfSVNPX1NVQlNQ
QUNFX0RFRklORV9NRU1CRVJfU0xPVyhzY3JpcHRGZXRjaGVyU3BhY2UsIGRlc3RydWN0aWJsZUNl
bGxIZWFwQ2VsbFR5cGUsIEpTU2NyaXB0RmV0Y2hlcikKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RF
RklORV9NRU1CRVJfU0xPVyhzZXRCdWNrZXRTcGFjZSwgY2VsbEhlYXBDZWxsVHlwZSwgSlNTZXQ6
OkJ1Y2tldFR5cGUpCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coc2V0
SXRlcmF0b3JTcGFjZSwgY2VsbEhlYXBDZWxsVHlwZSwgSlNTZXRJdGVyYXRvcikKK0RZTkFNSUNf
SVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhzZXRTcGFjZSwgY2VsbEhlYXBDZWxsVHlw
ZSwgSlNTZXQpCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coc2hhZG93
UmVhbG1TcGFjZSwgY2VsbEhlYXBDZWxsVHlwZSwgU2hhZG93UmVhbG1PYmplY3QpCitEWU5BTUlD
X0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coc3RyaWN0RXZhbEFjdGl2YXRpb25TcGFj
ZSwgY2VsbEhlYXBDZWxsVHlwZSwgU3RyaWN0RXZhbEFjdGl2YXRpb24pCitEWU5BTUlDX0lTT19T
VUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coc3RyaW5nSXRlcmF0b3JTcGFjZSwgY2VsbEhlYXBD
ZWxsVHlwZSwgSlNTdHJpbmdJdGVyYXRvcikKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9N
RU1CRVJfU0xPVyhzb3VyY2VDb2RlU3BhY2UsIGRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUs
IEpTU291cmNlQ29kZSkKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhz
eW1ib2xTcGFjZSwgZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZSwgU3ltYm9sKQorRFlOQU1J
Q19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHN5bWJvbE9iamVjdFNwYWNlLCBjZWxs
SGVhcENlbGxUeXBlLCBTeW1ib2xPYmplY3QpCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVf
TUVNQkVSX1NMT1codGVtcGxhdGVPYmplY3REZXNjcmlwdG9yU3BhY2UsIGRlc3RydWN0aWJsZUNl
bGxIZWFwQ2VsbFR5cGUsIEpTVGVtcGxhdGVPYmplY3REZXNjcmlwdG9yKQorRFlOQU1JQ19JU09f
U1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHRlbXBvcmFsQ2FsZW5kYXJTcGFjZSwgY2VsbEhl
YXBDZWxsVHlwZSwgVGVtcG9yYWxDYWxlbmRhcikKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklO
RV9NRU1CRVJfU0xPVyh0ZW1wb3JhbER1cmF0aW9uU3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUsIFRl
bXBvcmFsRHVyYXRpb24pCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1co
dGVtcG9yYWxJbnN0YW50U3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUsIFRlbXBvcmFsSW5zdGFudCkK
K0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh0ZW1wb3JhbFBsYWluVGlt
ZVNwYWNlLCBjZWxsSGVhcENlbGxUeXBlLCBUZW1wb3JhbFBsYWluVGltZSkKK0RZTkFNSUNfSVNP
X1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh0ZW1wb3JhbFRpbWVab25lU3BhY2UsIGNlbGxI
ZWFwQ2VsbFR5cGUsIFRlbXBvcmFsVGltZVpvbmUpCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJ
TkVfTUVNQkVSX1NMT1codWludDhBcnJheVNwYWNlLCBjZWxsSGVhcENlbGxUeXBlLCBKU1VpbnQ4
QXJyYXkpCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1codWludDhDbGFt
cGVkQXJyYXlTcGFjZSwgY2VsbEhlYXBDZWxsVHlwZSwgSlNVaW50OENsYW1wZWRBcnJheSkKK0RZ
TkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh1aW50MTZBcnJheVNwYWNlLCBj
ZWxsSGVhcENlbGxUeXBlLCBKU1VpbnQxNkFycmF5KQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVG
SU5FX01FTUJFUl9TTE9XKHVpbnQzMkFycmF5U3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUsIEpTVWlu
dDMyQXJyYXkpCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1codW5saW5r
ZWRFdmFsQ29kZUJsb2NrU3BhY2UsIGRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUsIFVubGlu
a2VkRXZhbENvZGVCbG9jaykKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xP
Vyh1bmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrU3BhY2UsIGRlc3RydWN0aWJsZUNlbGxIZWFwQ2Vs
bFR5cGUsIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2spCitEWU5BTUlDX0lTT19TVUJTUEFDRV9E
RUZJTkVfTUVNQkVSX1NMT1codW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrU3BhY2UsIGRl
c3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUsIFVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9j
aykKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh1bmxpbmtlZFByb2dy
YW1Db2RlQmxvY2tTcGFjZSwgZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZSwgVW5saW5rZWRQ
cm9ncmFtQ29kZUJsb2NrKQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9X
KHdlYWtNYXBTcGFjZSwgd2Vha01hcEhlYXBDZWxsVHlwZSwgSlNXZWFrTWFwKSAvLyBIYXNoOjB4
NjYyYjEyYTMKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh3ZWFrU2V0
U3BhY2UsIHdlYWtTZXRIZWFwQ2VsbFR5cGUsIEpTV2Vha1NldCkgLy8gSGFzaDoweDRjNzgxYjMw
CitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1cod2Vha09iamVjdFJlZlNw
YWNlLCBjZWxsSGVhcENlbGxUeXBlLCBKU1dlYWtPYmplY3RSZWYpIC8vIEhhc2g6MHg4ZWM2OGYx
ZgorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHdpdGhTY29wZVNwYWNl
LCBjZWxsSGVhcENlbGxUeXBlLCBKU1dpdGhTY29wZSkKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RF
RklORV9NRU1CRVJfU0xPVyhmaW5hbGl6YXRpb25SZWdpc3RyeVNwYWNlLCBmaW5hbGl6YXRpb25S
ZWdpc3RyeUNlbGxUeXBlLCBKU0ZpbmFsaXphdGlvblJlZ2lzdHJ5KQorI2lmIEpTQ19PQkpDX0FQ
SV9FTkFCTEVECitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coYXBpV3Jh
cHBlck9iamVjdFNwYWNlLCBhcGlXcmFwcGVyT2JqZWN0SGVhcENlbGxUeXBlLCBKU0NhbGxiYWNr
T2JqZWN0PEpTQVBJV3JhcHBlck9iamVjdD4pCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVf
TUVNQkVSX1NMT1cob2JqQ0NhbGxiYWNrRnVuY3Rpb25TcGFjZSwgb2JqQ0NhbGxiYWNrRnVuY3Rp
b25IZWFwQ2VsbFR5cGUsIE9iakNDYWxsYmFja0Z1bmN0aW9uKSAvLyBIYXNoOjB4MTBmNjEwYjgK
KyNlbmRpZgorI2lmZGVmIEpTQ19HTElCX0FQSV9FTkFCTEVECitEWU5BTUlDX0lTT19TVUJTUEFD
RV9ERUZJTkVfTUVNQkVSX1NMT1coYXBpV3JhcHBlck9iamVjdFNwYWNlLCBhcGlXcmFwcGVyT2Jq
ZWN0SGVhcENlbGxUeXBlLCBKU0NhbGxiYWNrT2JqZWN0PEpTQVBJV3JhcHBlck9iamVjdD4pCitE
WU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coanNjQ2FsbGJhY2tGdW5jdGlv
blNwYWNlLCBqc2NDYWxsYmFja0Z1bmN0aW9uSGVhcENlbGxUeXBlLCBKU0NDYWxsYmFja0Z1bmN0
aW9uKQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGNhbGxiYWNrQVBJ
V3JhcHBlckdsb2JhbE9iamVjdFNwYWNlLCBjYWxsYmFja0FQSVdyYXBwZXJHbG9iYWxPYmplY3RI
ZWFwQ2VsbFR5cGUsIEpTQ2FsbGJhY2tPYmplY3Q8SlNBUElXcmFwcGVyR2xvYmFsT2JqZWN0PikK
KyNlbmRpZgorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGludGxDb2xs
YXRvclNwYWNlLCBpbnRsQ29sbGF0b3JIZWFwQ2VsbFR5cGUsIEludGxDb2xsYXRvcikKK0RZTkFN
SUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhpbnRsRGF0ZVRpbWVGb3JtYXRTcGFj
ZSwgaW50bERhdGVUaW1lRm9ybWF0SGVhcENlbGxUeXBlLCBJbnRsRGF0ZVRpbWVGb3JtYXQpCitE
WU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coaW50bERpc3BsYXlOYW1lc1Nw
YWNlLCBpbnRsRGlzcGxheU5hbWVzSGVhcENlbGxUeXBlLCBJbnRsRGlzcGxheU5hbWVzKQorRFlO
QU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGludGxMaXN0Rm9ybWF0U3BhY2Us
IGludGxMaXN0Rm9ybWF0SGVhcENlbGxUeXBlLCBJbnRsTGlzdEZvcm1hdCkKK0RZTkFNSUNfSVNP
X1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhpbnRsTG9jYWxlU3BhY2UsIGludGxMb2NhbGVI
ZWFwQ2VsbFR5cGUsIEludGxMb2NhbGUpCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVN
QkVSX1NMT1coaW50bE51bWJlckZvcm1hdFNwYWNlLCBpbnRsTnVtYmVyRm9ybWF0SGVhcENlbGxU
eXBlLCBJbnRsTnVtYmVyRm9ybWF0KQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJF
Ul9TTE9XKGludGxQbHVyYWxSdWxlc1NwYWNlLCBpbnRsUGx1cmFsUnVsZXNIZWFwQ2VsbFR5cGUs
IEludGxQbHVyYWxSdWxlcykKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xP
VyhpbnRsUmVsYXRpdmVUaW1lRm9ybWF0U3BhY2UsIGludGxSZWxhdGl2ZVRpbWVGb3JtYXRIZWFw
Q2VsbFR5cGUsIEludGxSZWxhdGl2ZVRpbWVGb3JtYXQpCitEWU5BTUlDX0lTT19TVUJTUEFDRV9E
RUZJTkVfTUVNQkVSX1NMT1coaW50bFNlZ21lbnRJdGVyYXRvclNwYWNlLCBpbnRsU2VnbWVudEl0
ZXJhdG9ySGVhcENlbGxUeXBlLCBJbnRsU2VnbWVudEl0ZXJhdG9yKQorRFlOQU1JQ19JU09fU1VC
U1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGludGxTZWdtZW50ZXJTcGFjZSwgaW50bFNlZ21lbnRl
ckhlYXBDZWxsVHlwZSwgSW50bFNlZ21lbnRlcikKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklO
RV9NRU1CRVJfU0xPVyhpbnRsU2VnbWVudHNTcGFjZSwgaW50bFNlZ21lbnRzSGVhcENlbGxUeXBl
LCBJbnRsU2VnbWVudHMpCisjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQorRFlOQU1JQ19JU09fU1VC
U1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGpzVG9XYXNtSUNDYWxsZWVTcGFjZSwgY2VsbEhlYXBD
ZWxsVHlwZSwgSlNUb1dhc21JQ0NhbGxlZSkKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9N
RU1CRVJfU0xPVyh3ZWJBc3NlbWJseUNvZGVCbG9ja1NwYWNlLCB3ZWJBc3NlbWJseUNvZGVCbG9j
a0hlYXBDZWxsVHlwZSwgSlNXZWJBc3NlbWJseUNvZGVCbG9jaykgLy8gSGFzaDoweDlhZDk5NWNk
CitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1cod2ViQXNzZW1ibHlFeGNl
cHRpb25TcGFjZSwgd2ViQXNzZW1ibHlFeGNlcHRpb25IZWFwQ2VsbFR5cGUsIEpTV2ViQXNzZW1i
bHlFeGNlcHRpb24pCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1cod2Vi
QXNzZW1ibHlGdW5jdGlvblNwYWNlLCB3ZWJBc3NlbWJseUZ1bmN0aW9uSGVhcENlbGxUeXBlLCBX
ZWJBc3NlbWJseUZ1bmN0aW9uKSAvLyBIYXNoOjB4OGI3YzMyZGIKK0RZTkFNSUNfSVNPX1NVQlNQ
QUNFX0RFRklORV9NRU1CRVJfU0xPVyh3ZWJBc3NlbWJseUdsb2JhbFNwYWNlLCB3ZWJBc3NlbWJs
eUdsb2JhbEhlYXBDZWxsVHlwZSwgSlNXZWJBc3NlbWJseUdsb2JhbCkKK0RZTkFNSUNfSVNPX1NV
QlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh3ZWJBc3NlbWJseUluc3RhbmNlU3BhY2UsIHdlYkFz
c2VtYmx5SW5zdGFuY2VIZWFwQ2VsbFR5cGUsIEpTV2ViQXNzZW1ibHlJbnN0YW5jZSkKK0RZTkFN
SUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh3ZWJBc3NlbWJseU1lbW9yeVNwYWNl
LCB3ZWJBc3NlbWJseU1lbW9yeUhlYXBDZWxsVHlwZSwgSlNXZWJBc3NlbWJseU1lbW9yeSkKK0RZ
TkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh3ZWJBc3NlbWJseU1vZHVsZVNw
YWNlLCB3ZWJBc3NlbWJseU1vZHVsZUhlYXBDZWxsVHlwZSwgSlNXZWJBc3NlbWJseU1vZHVsZSkK
K0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh3ZWJBc3NlbWJseU1vZHVs
ZVJlY29yZFNwYWNlLCB3ZWJBc3NlbWJseU1vZHVsZVJlY29yZEhlYXBDZWxsVHlwZSwgV2ViQXNz
ZW1ibHlNb2R1bGVSZWNvcmQpCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NM
T1cod2ViQXNzZW1ibHlUYWJsZVNwYWNlLCB3ZWJBc3NlbWJseVRhYmxlSGVhcENlbGxUeXBlLCBK
U1dlYkFzc2VtYmx5VGFibGUpCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NM
T1cod2ViQXNzZW1ibHlUYWdTcGFjZSwgd2ViQXNzZW1ibHlUYWdIZWFwQ2VsbFR5cGUsIEpTV2Vi
QXNzZW1ibHlUYWcpCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1cod2Vi
QXNzZW1ibHlXcmFwcGVyRnVuY3Rpb25TcGFjZSwgY2VsbEhlYXBDZWxsVHlwZSwgV2ViQXNzZW1i
bHlXcmFwcGVyRnVuY3Rpb24pIC8vIEhhc2g6MHhkNGE1ZmYwMQorI2VuZGlmCisKKyN1bmRlZiBE
WU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1cKKworI2RlZmluZSBEWU5BTUlD
X1NQQUNFX0FORF9TRVRfREVGSU5FX01FTUJFUl9TTE9XKG5hbWUsIGhlYXBDZWxsVHlwZSwgdHlw
ZSkgXAorICAgIElzb1N1YnNwYWNlKiBIZWFwOjpuYW1lIyNTbG93KCkgXAorICAgIHsgXAorICAg
ICAgICBBU1NFUlQoIW1fIyNuYW1lKTsgXAorICAgICAgICBhdXRvIHNwYWNlID0gbWFrZVVuaXF1
ZTxTcGFjZUFuZFNldD4gSVNPX1NVQlNQQUNFX0lOSVQoKnRoaXMsIGhlYXBDZWxsVHlwZSwgdHlw
ZSk7IFwKKyAgICAgICAgV1RGOjpzdG9yZVN0b3JlRmVuY2UoKTsgXAorICAgICAgICBtXyMjbmFt
ZSA9IFdURk1vdmUoc3BhY2UpOyBcCisgICAgICAgIHJldHVybiAmbV8jI25hbWUtPnNwYWNlOyBc
CisgICAgfQorCitEWU5BTUlDX1NQQUNFX0FORF9TRVRfREVGSU5FX01FTUJFUl9TTE9XKGV2YWxF
eGVjdXRhYmxlU3BhY2UsIGRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUsIEV2YWxFeGVjdXRh
YmxlKSAvLyBIYXNoOjB4OTU4ZTNlOWQKK0RZTkFNSUNfU1BBQ0VfQU5EX1NFVF9ERUZJTkVfTUVN
QkVSX1NMT1cobW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGVTcGFjZSwgZGVzdHJ1Y3RpYmxlQ2VsbEhl
YXBDZWxsVHlwZSwgTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUpIC8vIEhhc2g6MHg2NTA2ZmEzYwor
CisjdW5kZWYgRFlOQU1JQ19TUEFDRV9BTkRfU0VUX0RFRklORV9NRU1CRVJfU0xPVworCiB9IC8v
IG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgJKHJldmlzaW9u
IDI4NjA5NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuaAkod29ya2luZyBj
b3B5KQpAQCAtMjUsNiArMjUsNyBAQAogI2luY2x1ZGUgIkNlbGxTdGF0ZS5oIgogI2luY2x1ZGUg
IkNvbGxlY3Rpb25TY29wZS5oIgogI2luY2x1ZGUgIkNvbGxlY3RvclBoYXNlLmgiCisjaW5jbHVk
ZSAiQ29tcGxldGVTdWJzcGFjZS5oIgogI2luY2x1ZGUgIkRlbGV0ZUFsbENvZGVFZmZvcnQuaCIK
ICNpbmNsdWRlICJHQ0NvbmR1Y3Rvci5oIgogI2luY2x1ZGUgIkdDSW5jb21pbmdSZWZDb3VudGVk
U2V0LmgiCkBAIC0zMyw2ICszNCwxMSBAQAogI2luY2x1ZGUgIkhhbmRsZVNldC5oIgogI2luY2x1
ZGUgIkhlYXBGaW5hbGl6ZXJDYWxsYmFjay5oIgogI2luY2x1ZGUgIkhlYXBPYnNlcnZlci5oIgor
I2luY2x1ZGUgIklzb0NlbGxTZXQuaCIKKyNpbmNsdWRlICJJc29IZWFwQ2VsbFR5cGUuaCIKKyNp
bmNsdWRlICJJc29JbmxpbmVkSGVhcENlbGxUeXBlLmgiCisjaW5jbHVkZSAiSXNvU3Vic3BhY2Uu
aCIKKyNpbmNsdWRlICJKU0Rlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5oIgogI2luY2x1
ZGUgIk1hcmtlZEJsb2NrLmgiCiAjaW5jbHVkZSAiTWFya2VkU3BhY2UuaCIKICNpbmNsdWRlICJN
dXRhdG9yU3RhdGUuaCIKQEAgLTUwLDMyICs1Niw2NSBAQAogI2luY2x1ZGUgPHd0Zi9QYXJhbGxl
bEhlbHBlclBvb2wuaD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nLmg+CiAKK25hbWVzcGFjZSBJ
bnNwZWN0b3IgeworY2xhc3MgSlNJbmplY3RlZFNjcmlwdEhvc3Q7CitjbGFzcyBKU0phdmFTY3Jp
cHRDYWxsRnJhbWU7Cit9CisKIG5hbWVzcGFjZSBKU0MgewogCitjbGFzcyBCbG9ja0RpcmVjdG9y
eTsKIGNsYXNzIENvZGVCbG9jazsKIGNsYXNzIENvZGVCbG9ja1NldDsKIGNsYXNzIENvbGxlY3Rp
bmdTY29wZTsKIGNsYXNzIENvbnNlcnZhdGl2ZVJvb3RzOwotY2xhc3MgR0NEZWZlcnJhbENvbnRl
eHQ7CitjbGFzcyBEYXRlSW5zdGFuY2U7CiBjbGFzcyBFZGVuR0NBY3Rpdml0eUNhbGxiYWNrOwor
Y2xhc3MgRXJyb3JJbnN0YW5jZTsKK2NsYXNzIEZhc3RNYWxsb2NBbGlnbmVkTWVtb3J5QWxsb2Nh
dG9yOwogY2xhc3MgRnVsbEdDQWN0aXZpdHlDYWxsYmFjazsKIGNsYXNzIEdDQWN0aXZpdHlDYWxs
YmFjazsKIGNsYXNzIEdDQXdhcmVKSVRTdHViUm91dGluZTsKK2NsYXNzIEdDRGVmZXJyYWxDb250
ZXh0OworY2xhc3MgR2lnYWNhZ2VBbGlnbmVkTWVtb3J5QWxsb2NhdG9yOwogY2xhc3MgSGVhcDsK
IGNsYXNzIEhlYXBQcm9maWxlcjsKIGNsYXNzIEhlYXBWZXJpZmllcjsKIGNsYXNzIEluY3JlbWVu
dGFsU3dlZXBlcjsKK2NsYXNzIEludGxDb2xsYXRvcjsKK2NsYXNzIEludGxEYXRlVGltZUZvcm1h
dDsKK2NsYXNzIEludGxEaXNwbGF5TmFtZXM7CitjbGFzcyBJbnRsTGlzdEZvcm1hdDsKK2NsYXNz
IEludGxMb2NhbGU7CitjbGFzcyBJbnRsTnVtYmVyRm9ybWF0OworY2xhc3MgSW50bFBsdXJhbFJ1
bGVzOworY2xhc3MgSW50bFJlbGF0aXZlVGltZUZvcm1hdDsKK2NsYXNzIEludGxTZWdtZW50SXRl
cmF0b3I7CitjbGFzcyBJbnRsU2VnbWVudGVyOworY2xhc3MgSW50bFNlZ21lbnRzOwogY2xhc3Mg
SklUU3R1YlJvdXRpbmU7CiBjbGFzcyBKSVRTdHViUm91dGluZVNldDsKK2NsYXNzIEpTQVBJR2xv
YmFsT2JqZWN0OworY2xhc3MgSlNDYWxsYmFja0NvbnN0cnVjdG9yOwogY2xhc3MgSlNDZWxsOwor
Y2xhc3MgSlNDdXN0b21HZXR0ZXJGdW5jdGlvbjsKK2NsYXNzIEpTQ3VzdG9tU2V0dGVyRnVuY3Rp
b247CitjbGFzcyBKU0ZpbmFsaXphdGlvblJlZ2lzdHJ5OworY2xhc3MgSlNHbG9iYWxMZXhpY2Fs
RW52aXJvbm1lbnQ7CitjbGFzcyBKU0dsb2JhbE9iamVjdDsKIGNsYXNzIEpTSW1tdXRhYmxlQnV0
dGVyZmx5OworY2xhc3MgSlNNb2R1bGVOYW1lc3BhY2VPYmplY3Q7CitjbGFzcyBKU01vZHVsZVJl
Y29yZDsKK2NsYXNzIEpTTmF0aXZlU3RkRnVuY3Rpb247CitjbGFzcyBKU05vbkZpbmFsT2JqZWN0
OworY2xhc3MgSlNTdHJpbmc7CiBjbGFzcyBKU1ZhbHVlOwotY2xhc3MgTExJbnRPZmZzZXRzRXh0
cmFjdG9yOworY2xhc3MgSlNXZWFrTWFwOworY2xhc3MgSlNXZWFrU2V0OwogY2xhc3MgTWFjaGlu
ZVRocmVhZHM7CiBjbGFzcyBNYXJrU3RhY2tBcnJheTsKIGNsYXNzIE1hcmtTdGFja01lcmdpbmdD
b25zdHJhaW50OwogY2xhc3MgTWFya2VkSlNWYWx1ZVJlZkFycmF5OwotY2xhc3MgQmxvY2tEaXJl
Y3Rvcnk7CiBjbGFzcyBNYXJrZWRBcmd1bWVudEJ1ZmZlckJhc2U7CiBjbGFzcyBNYXJraW5nQ29u
c3RyYWludDsKIGNsYXNzIE1hcmtpbmdDb25zdHJhaW50U2V0OwpAQCAtOTAsNyArMTI5LDMwIEBA
IGNsYXNzIFZlcmlmaWVyU2xvdFZpc2l0b3I7CiBjbGFzcyBXZWFrR0NIYXNoVGFibGU7CiBzdHJ1
Y3QgQ3VycmVudFRocmVhZFN0YXRlOwogCit0ZW1wbGF0ZSA8Y2xhc3MgUGFyZW50PiBjbGFzcyBK
U0NhbGxiYWNrT2JqZWN0OworCisjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQorY2xhc3MgSlNXZWJB
c3NlbWJseUNvZGVCbG9jazsKK2NsYXNzIEpTV2ViQXNzZW1ibHlFeGNlcHRpb247CitjbGFzcyBK
U1dlYkFzc2VtYmx5R2xvYmFsOworY2xhc3MgSlNXZWJBc3NlbWJseUluc3RhbmNlOworY2xhc3Mg
SlNXZWJBc3NlbWJseU1lbW9yeTsKK2NsYXNzIEpTV2ViQXNzZW1ibHlNb2R1bGU7CitjbGFzcyBK
U1dlYkFzc2VtYmx5VGFibGU7CitjbGFzcyBKU1dlYkFzc2VtYmx5VGFnOworY2xhc3MgV2ViQXNz
ZW1ibHlGdW5jdGlvbjsKK2NsYXNzIFdlYkFzc2VtYmx5TW9kdWxlUmVjb3JkOworI2VuZGlmCisK
KyNpZiBKU0NfT0JKQ19BUElfRU5BQkxFRAorY2xhc3MgSlNBUElXcmFwcGVyT2JqZWN0OworY2xh
c3MgT2JqQ0NhbGxiYWNrRnVuY3Rpb247CisjZW5kaWYKKwogI2lmZGVmIEpTQ19HTElCX0FQSV9F
TkFCTEVECitjbGFzcyBKU0FQSVdyYXBwZXJHbG9iYWxPYmplY3Q7CitjbGFzcyBKU0FQSVdyYXBw
ZXJPYmplY3Q7CitjbGFzcyBKU0NDYWxsYmFja0Z1bmN0aW9uOwogY2xhc3MgSlNDR0xpYldyYXBw
ZXJPYmplY3Q7CiAjZW5kaWYKIApAQCAtNzI5LDYgKzc5MSwzMTggQEAgcHJpdmF0ZToKICAgICBi
b29sIG1fcGFyYWxsZWxNYXJrZXJzU2hvdWxkRXhpdCB7IGZhbHNlIH07CiAgICAgTG9jayBtX2Nv
bGxlY3RDb250aW51b3VzbHlMb2NrOwogICAgIENvbmRpdGlvbiBtX2NvbGxlY3RDb250aW51b3Vz
bHlDb25kaXRpb247CisKK3B1YmxpYzoKKyAgICAvLyBIZWFwQ2VsbFR5cGVzCisgICAgSGVhcENl
bGxUeXBlIGF1eGlsaWFyeUhlYXBDZWxsVHlwZTsKKyAgICBIZWFwQ2VsbFR5cGUgaW1tdXRhYmxl
QnV0dGVyZmx5SGVhcENlbGxUeXBlOworICAgIEhlYXBDZWxsVHlwZSBjZWxsSGVhcENlbGxUeXBl
OworICAgIEhlYXBDZWxsVHlwZSBkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlOworICAgIElz
b0hlYXBDZWxsVHlwZTxKU0FQSUdsb2JhbE9iamVjdD4gYXBpR2xvYmFsT2JqZWN0SGVhcENlbGxU
eXBlOworICAgIElzb0hlYXBDZWxsVHlwZTxKU0NhbGxiYWNrQ29uc3RydWN0b3I+IGNhbGxiYWNr
Q29uc3RydWN0b3JIZWFwQ2VsbFR5cGU7CisgICAgSXNvSGVhcENlbGxUeXBlPEpTQ2FsbGJhY2tP
YmplY3Q8SlNHbG9iYWxPYmplY3Q+PiBjYWxsYmFja0dsb2JhbE9iamVjdEhlYXBDZWxsVHlwZTsK
KyAgICBJc29IZWFwQ2VsbFR5cGU8SlNDYWxsYmFja09iamVjdDxKU05vbkZpbmFsT2JqZWN0Pj4g
Y2FsbGJhY2tPYmplY3RIZWFwQ2VsbFR5cGU7CisgICAgSXNvSGVhcENlbGxUeXBlPEpTQ3VzdG9t
R2V0dGVyRnVuY3Rpb24+IGN1c3RvbUdldHRlckZ1bmN0aW9uSGVhcENlbGxUeXBlOworICAgIElz
b0hlYXBDZWxsVHlwZTxKU0N1c3RvbVNldHRlckZ1bmN0aW9uPiBjdXN0b21TZXR0ZXJGdW5jdGlv
bkhlYXBDZWxsVHlwZTsKKyAgICBJc29IZWFwQ2VsbFR5cGU8RGF0ZUluc3RhbmNlPiBkYXRlSW5z
dGFuY2VIZWFwQ2VsbFR5cGU7CisgICAgSXNvSGVhcENlbGxUeXBlPEVycm9ySW5zdGFuY2U+IGVy
cm9ySW5zdGFuY2VIZWFwQ2VsbFR5cGU7CisgICAgSXNvSGVhcENlbGxUeXBlPEpTRmluYWxpemF0
aW9uUmVnaXN0cnk+IGZpbmFsaXphdGlvblJlZ2lzdHJ5Q2VsbFR5cGU7CisgICAgSXNvSGVhcENl
bGxUeXBlPEpTR2xvYmFsTGV4aWNhbEVudmlyb25tZW50PiBnbG9iYWxMZXhpY2FsRW52aXJvbm1l
bnRIZWFwQ2VsbFR5cGU7CisgICAgSXNvSGVhcENlbGxUeXBlPEpTR2xvYmFsT2JqZWN0PiBnbG9i
YWxPYmplY3RIZWFwQ2VsbFR5cGU7CisgICAgSXNvSGVhcENlbGxUeXBlPEluc3BlY3Rvcjo6SlNJ
bmplY3RlZFNjcmlwdEhvc3Q+IGluamVjdGVkU2NyaXB0SG9zdFNwYWNlSGVhcENlbGxUeXBlOwor
ICAgIElzb0hlYXBDZWxsVHlwZTxJbnNwZWN0b3I6OkpTSmF2YVNjcmlwdENhbGxGcmFtZT4gamF2
YVNjcmlwdENhbGxGcmFtZUhlYXBDZWxsVHlwZTsKKyAgICBJc29IZWFwQ2VsbFR5cGU8SlNNb2R1
bGVSZWNvcmQ+IGpzTW9kdWxlUmVjb3JkSGVhcENlbGxUeXBlOworICAgIElzb0hlYXBDZWxsVHlw
ZTxKU01vZHVsZU5hbWVzcGFjZU9iamVjdD4gbW9kdWxlTmFtZXNwYWNlT2JqZWN0SGVhcENlbGxU
eXBlOworICAgIElzb0hlYXBDZWxsVHlwZTxKU05hdGl2ZVN0ZEZ1bmN0aW9uPiBuYXRpdmVTdGRG
dW5jdGlvbkhlYXBDZWxsVHlwZTsKKyAgICBJc29JbmxpbmVkSGVhcENlbGxUeXBlPEpTU3RyaW5n
PiBzdHJpbmdIZWFwQ2VsbFR5cGU7CisgICAgSXNvSGVhcENlbGxUeXBlPEpTV2Vha01hcD4gd2Vh
a01hcEhlYXBDZWxsVHlwZTsKKyAgICBJc29IZWFwQ2VsbFR5cGU8SlNXZWFrU2V0PiB3ZWFrU2V0
SGVhcENlbGxUeXBlOworICAgIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlIGRlc3Ry
dWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZTsKKyNpZiBKU0NfT0JKQ19BUElfRU5BQkxFRAorICAg
IElzb0hlYXBDZWxsVHlwZTxKU0NhbGxiYWNrT2JqZWN0PEpTQVBJV3JhcHBlck9iamVjdD4+IGFw
aVdyYXBwZXJPYmplY3RIZWFwQ2VsbFR5cGU7CisgICAgSXNvSGVhcENlbGxUeXBlPE9iakNDYWxs
YmFja0Z1bmN0aW9uPiBvYmpDQ2FsbGJhY2tGdW5jdGlvbkhlYXBDZWxsVHlwZTsKKyNlbmRpZgor
I2lmZGVmIEpTQ19HTElCX0FQSV9FTkFCTEVECisgICAgSXNvSGVhcENlbGxUeXBlPEpTQ2FsbGJh
Y2tPYmplY3Q8SlNBUElXcmFwcGVyT2JqZWN0Pj4gYXBpV3JhcHBlck9iamVjdEhlYXBDZWxsVHlw
ZTsKKyAgICBJc29IZWFwQ2VsbFR5cGU8SlNDYWxsYmFja09iamVjdDxKU0FQSVdyYXBwZXJHbG9i
YWxPYmplY3Q+PiBjYWxsYmFja0FQSVdyYXBwZXJHbG9iYWxPYmplY3RIZWFwQ2VsbFR5cGU7Cisg
ICAgSXNvSGVhcENlbGxUeXBlPEpTQ0NhbGxiYWNrRnVuY3Rpb24+IGpzY0NhbGxiYWNrRnVuY3Rp
b25IZWFwQ2VsbFR5cGU7CisjZW5kaWYKKyAgICBJc29IZWFwQ2VsbFR5cGU8SW50bENvbGxhdG9y
PiBpbnRsQ29sbGF0b3JIZWFwQ2VsbFR5cGU7CisgICAgSXNvSGVhcENlbGxUeXBlPEludGxEYXRl
VGltZUZvcm1hdD4gaW50bERhdGVUaW1lRm9ybWF0SGVhcENlbGxUeXBlOworICAgIElzb0hlYXBD
ZWxsVHlwZTxJbnRsRGlzcGxheU5hbWVzPiBpbnRsRGlzcGxheU5hbWVzSGVhcENlbGxUeXBlOwor
ICAgIElzb0hlYXBDZWxsVHlwZTxJbnRsTGlzdEZvcm1hdD4gaW50bExpc3RGb3JtYXRIZWFwQ2Vs
bFR5cGU7CisgICAgSXNvSGVhcENlbGxUeXBlPEludGxMb2NhbGU+IGludGxMb2NhbGVIZWFwQ2Vs
bFR5cGU7CisgICAgSXNvSGVhcENlbGxUeXBlPEludGxOdW1iZXJGb3JtYXQ+IGludGxOdW1iZXJG
b3JtYXRIZWFwQ2VsbFR5cGU7CisgICAgSXNvSGVhcENlbGxUeXBlPEludGxQbHVyYWxSdWxlcz4g
aW50bFBsdXJhbFJ1bGVzSGVhcENlbGxUeXBlOworICAgIElzb0hlYXBDZWxsVHlwZTxJbnRsUmVs
YXRpdmVUaW1lRm9ybWF0PiBpbnRsUmVsYXRpdmVUaW1lRm9ybWF0SGVhcENlbGxUeXBlOworICAg
IElzb0hlYXBDZWxsVHlwZTxJbnRsU2VnbWVudEl0ZXJhdG9yPiBpbnRsU2VnbWVudEl0ZXJhdG9y
SGVhcENlbGxUeXBlOworICAgIElzb0hlYXBDZWxsVHlwZTxJbnRsU2VnbWVudGVyPiBpbnRsU2Vn
bWVudGVySGVhcENlbGxUeXBlOworICAgIElzb0hlYXBDZWxsVHlwZTxJbnRsU2VnbWVudHM+IGlu
dGxTZWdtZW50c0hlYXBDZWxsVHlwZTsKKyNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCisgICAgSXNv
SGVhcENlbGxUeXBlPEpTV2ViQXNzZW1ibHlDb2RlQmxvY2s+IHdlYkFzc2VtYmx5Q29kZUJsb2Nr
SGVhcENlbGxUeXBlOworICAgIElzb0hlYXBDZWxsVHlwZTxKU1dlYkFzc2VtYmx5RXhjZXB0aW9u
PiB3ZWJBc3NlbWJseUV4Y2VwdGlvbkhlYXBDZWxsVHlwZTsKKyAgICBJc29IZWFwQ2VsbFR5cGU8
V2ViQXNzZW1ibHlGdW5jdGlvbj4gd2ViQXNzZW1ibHlGdW5jdGlvbkhlYXBDZWxsVHlwZTsKKyAg
ICBJc29IZWFwQ2VsbFR5cGU8SlNXZWJBc3NlbWJseUdsb2JhbD4gd2ViQXNzZW1ibHlHbG9iYWxI
ZWFwQ2VsbFR5cGU7CisgICAgSXNvSGVhcENlbGxUeXBlPEpTV2ViQXNzZW1ibHlJbnN0YW5jZT4g
d2ViQXNzZW1ibHlJbnN0YW5jZUhlYXBDZWxsVHlwZTsKKyAgICBJc29IZWFwQ2VsbFR5cGU8SlNX
ZWJBc3NlbWJseU1lbW9yeT4gd2ViQXNzZW1ibHlNZW1vcnlIZWFwQ2VsbFR5cGU7CisgICAgSXNv
SGVhcENlbGxUeXBlPEpTV2ViQXNzZW1ibHlNb2R1bGU+IHdlYkFzc2VtYmx5TW9kdWxlSGVhcENl
bGxUeXBlOworICAgIElzb0hlYXBDZWxsVHlwZTxXZWJBc3NlbWJseU1vZHVsZVJlY29yZD4gd2Vi
QXNzZW1ibHlNb2R1bGVSZWNvcmRIZWFwQ2VsbFR5cGU7CisgICAgSXNvSGVhcENlbGxUeXBlPEpT
V2ViQXNzZW1ibHlUYWJsZT4gd2ViQXNzZW1ibHlUYWJsZUhlYXBDZWxsVHlwZTsKKyAgICBJc29I
ZWFwQ2VsbFR5cGU8SlNXZWJBc3NlbWJseVRhZz4gd2ViQXNzZW1ibHlUYWdIZWFwQ2VsbFR5cGU7
CisjZW5kaWYKKworICAgIC8vIEFsaWduZWRNZW1vcnlBbGxvY2F0b3JzCisgICAgc3RkOjp1bmlx
dWVfcHRyPEZhc3RNYWxsb2NBbGlnbmVkTWVtb3J5QWxsb2NhdG9yPiBmYXN0TWFsbG9jQWxsb2Nh
dG9yOworICAgIHN0ZDo6dW5pcXVlX3B0cjxHaWdhY2FnZUFsaWduZWRNZW1vcnlBbGxvY2F0b3I+
IHByaW1pdGl2ZUdpZ2FjYWdlQWxsb2NhdG9yOworICAgIHN0ZDo6dW5pcXVlX3B0cjxHaWdhY2Fn
ZUFsaWduZWRNZW1vcnlBbGxvY2F0b3I+IGpzVmFsdWVHaWdhY2FnZUFsbG9jYXRvcjsKKworICAg
IC8vIFN1YnNwYWNlcworICAgIENvbXBsZXRlU3Vic3BhY2UgcHJpbWl0aXZlR2lnYWNhZ2VBdXhp
bGlhcnlTcGFjZTsgLy8gVHlwZWQgYXJyYXlzLCBzdHJpbmdzLCBiaXR2ZWN0b3JzLCBldGMgZ28g
aGVyZS4KKyAgICBDb21wbGV0ZVN1YnNwYWNlIGpzVmFsdWVHaWdhY2FnZUF1eGlsaWFyeVNwYWNl
OyAvLyBCdXR0ZXJmbGllcywgYXJyYXlzIG9mIEpTVmFsdWVzLCBldGMgZ28gaGVyZS4KKyAgICBD
b21wbGV0ZVN1YnNwYWNlIGltbXV0YWJsZUJ1dHRlcmZseUpTVmFsdWVHaWdhY2FnZUF1eGlsaWFy
eVNwYWNlOyAvLyBKU0ltbXV0YWJsZUJ1dHRlcmZseSBnb2VzIGhlcmUuCisKKyAgICAvLyBXZSBt
YWtlIGNyb3NzLWN1dHRpbmcgYXNzdW1wdGlvbnMgYWJvdXQgdHlwZWQgYXJyYXlzIGJlaW5nIGlu
IHRoZSBwcmltaXRpdmUgR2lnYWNhZ2UgYW5kIGJ1dHRlcmZsaWVzCisgICAgLy8gYmVpbmcgaW4g
dGhlIEpTVmFsdWUgZ2lnYWNhZ2UuIEZvciBzb21lIHR5cGVzLCBpdCdzIHN1cGVyIG9idmlvdXMg
d2hlcmUgdGhleSBzaG91bGQgZ28sIGFuZCBzbyB3ZQorICAgIC8vIGNhbiBoYXJkY29kZSB0aGF0
IGZhY3QuIEJ1dCBzb21ldGltZXMgaXQncyBub3QgY2xlYXIsIHNvIHdlIGFic3RyYWN0IGl0IGJ5
IGhhdmluZyBhIEdpZ2FjYWdlOjpLaW5kCisgICAgLy8gY29uc3RhbnQgc29tZXdoZXJlLgorICAg
IC8vIEZJWE1FOiBNYXliZSBpdCB3b3VsZCBiZSBiZXR0ZXIgaWYgZXZlcnlvbmUgYWJzdHJhY3Rl
ZCB0aGlzPworICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NzUyNDgKKyAgICBBTFdBWVNfSU5MSU5FIENvbXBsZXRlU3Vic3BhY2UmIGdpZ2FjYWdlQXV4aWxp
YXJ5U3BhY2UoR2lnYWNhZ2U6OktpbmQga2luZCkKKyAgICB7CisgICAgICAgIHN3aXRjaCAoa2lu
ZCkgeworICAgICAgICBjYXNlIEdpZ2FjYWdlOjpQcmltaXRpdmU6CisgICAgICAgICAgICByZXR1
cm4gcHJpbWl0aXZlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZTsKKyAgICAgICAgY2FzZSBHaWdhY2Fn
ZTo6SlNWYWx1ZToKKyAgICAgICAgICAgIHJldHVybiBqc1ZhbHVlR2lnYWNhZ2VBdXhpbGlhcnlT
cGFjZTsKKyAgICAgICAgY2FzZSBHaWdhY2FnZTo6TnVtYmVyT2ZLaW5kczoKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICB9CisgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7
CisgICAgICAgIHJldHVybiBwcmltaXRpdmVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlOworICAgIH0K
KyAgICAKKyAgICAvLyBXaGVuZXZlciBwb3NzaWJsZSwgdXNlIHN1YnNwYWNlRm9yPENlbGxUeXBl
Pih2bSkgdG8gZ2V0IG9uZSBvZiB0aGVzZSBzdWJzcGFjZXMuCisgICAgQ29tcGxldGVTdWJzcGFj
ZSBjZWxsU3BhY2U7CisgICAgQ29tcGxldGVTdWJzcGFjZSB2YXJpYWJsZVNpemVkQ2VsbFNwYWNl
OyAvLyBGSVhNRTogVGhpcyBzcGFjZSBpcyBwcm9ibGVtYXRpYyBiZWNhdXNlIHdlIGhhdmUgdGhp
bmdzIGluIGhlcmUgbGlrZSBEaXJlY3RBcmd1bWVudHMgYW5kIFNjb3BlZEFyZ3VtZW50czsgdGhv
c2Ugc2hvdWxkIGJlIHNwbGl0IGludG8gSlNWYWx1ZU9PQiBjZWxscyBhbmQgSlNWYWx1ZVN0cmlj
dCBhdXhpbGlhcmllcy4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4
Mjg1OAorICAgIENvbXBsZXRlU3Vic3BhY2UgZGVzdHJ1Y3RpYmxlT2JqZWN0U3BhY2U7CisKKyAg
ICBJc29TdWJzcGFjZSBhcnJheVNwYWNlOworICAgIElzb1N1YnNwYWNlIGJpZ0ludFNwYWNlOwor
ICAgIElzb1N1YnNwYWNlIGNhbGxlZVNwYWNlOworICAgIElzb1N1YnNwYWNlIGNsb25lZEFyZ3Vt
ZW50c1NwYWNlOworICAgIElzb1N1YnNwYWNlIGN1c3RvbUdldHRlclNldHRlclNwYWNlOworICAg
IElzb1N1YnNwYWNlIGRhdGVJbnN0YW5jZVNwYWNlOworICAgIElzb1N1YnNwYWNlIGRvbUF0dHJp
YnV0ZUdldHRlclNldHRlclNwYWNlOworICAgIElzb1N1YnNwYWNlIGV4Y2VwdGlvblNwYWNlOwor
ICAgIElzb1N1YnNwYWNlIGV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2VTcGFjZTsKKyAgICBJc29T
dWJzcGFjZSBmdW5jdGlvblNwYWNlOworICAgIElzb1N1YnNwYWNlIGdldHRlclNldHRlclNwYWNl
OworICAgIElzb1N1YnNwYWNlIGdsb2JhbExleGljYWxFbnZpcm9ubWVudFNwYWNlOworICAgIElz
b1N1YnNwYWNlIGludGVybmFsRnVuY3Rpb25TcGFjZTsKKyAgICBJc29TdWJzcGFjZSBqc1Byb3h5
U3BhY2U7CisgICAgSXNvU3Vic3BhY2UgbmF0aXZlRXhlY3V0YWJsZVNwYWNlOworICAgIElzb1N1
YnNwYWNlIG51bWJlck9iamVjdFNwYWNlOworICAgIElzb1N1YnNwYWNlIHBsYWluT2JqZWN0U3Bh
Y2U7CisgICAgSXNvU3Vic3BhY2UgcHJvbWlzZVNwYWNlOworICAgIElzb1N1YnNwYWNlIHByb3Bl
cnR5TmFtZUVudW1lcmF0b3JTcGFjZTsKKyAgICBJc29TdWJzcGFjZSBwcm9wZXJ0eVRhYmxlU3Bh
Y2U7CisgICAgSXNvU3Vic3BhY2UgcmVnRXhwU3BhY2U7CisgICAgSXNvU3Vic3BhY2UgcmVnRXhw
T2JqZWN0U3BhY2U7CisgICAgSXNvU3Vic3BhY2Ugcm9wZVN0cmluZ1NwYWNlOworICAgIElzb1N1
YnNwYWNlIHNjb3BlZEFyZ3VtZW50c1NwYWNlOworICAgIElzb1N1YnNwYWNlIHNwYXJzZUFycmF5
VmFsdWVNYXBTcGFjZTsKKyAgICBJc29TdWJzcGFjZSBzdHJpbmdTcGFjZTsKKyAgICBJc29TdWJz
cGFjZSBzdHJpbmdPYmplY3RTcGFjZTsKKyAgICBJc29TdWJzcGFjZSBzdHJ1Y3R1cmVDaGFpblNw
YWNlOworICAgIElzb1N1YnNwYWNlIHN0cnVjdHVyZVJhcmVEYXRhU3BhY2U7CisgICAgSXNvU3Vi
c3BhY2Ugc3RydWN0dXJlU3BhY2U7CisgICAgSXNvU3Vic3BhY2UgYnJhbmRlZFN0cnVjdHVyZVNw
YWNlOworICAgIElzb1N1YnNwYWNlIHN5bWJvbFRhYmxlU3BhY2U7CisKKyNkZWZpbmUgRFlOQU1J
Q19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihuYW1lKSBcCisgICAgdGVtcGxhdGU8U3Vic3Bh
Y2VBY2Nlc3MgbW9kZT4gXAorICAgIElzb1N1YnNwYWNlKiBuYW1lKCkgXAorICAgIHsgXAorICAg
ICAgICBpZiAobV8jI25hbWUgfHwgbW9kZSA9PSBTdWJzcGFjZUFjY2Vzczo6Q29uY3VycmVudGx5
KSBcCisgICAgICAgICAgICByZXR1cm4gbV8jI25hbWUuZ2V0KCk7IFwKKyAgICAgICAgcmV0dXJu
IG5hbWUjI1Nsb3coKTsgXAorICAgIH0gXAorICAgIEpTX0VYUE9SVF9QUklWQVRFIElzb1N1YnNw
YWNlKiBuYW1lIyNTbG93KCk7IFwKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8SXNvU3Vic3BhY2U+IG1f
IyNuYW1lOworCisKKyNpZiBKU0NfT0JKQ19BUElfRU5BQkxFRAorICAgIERZTkFNSUNfSVNPX1NV
QlNQQUNFX0RFRklORV9NRU1CRVIoYXBpV3JhcHBlck9iamVjdFNwYWNlKQorICAgIERZTkFNSUNf
SVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIob2JqQ0NhbGxiYWNrRnVuY3Rpb25TcGFjZSkKKyNl
bmRpZgorI2lmZGVmIEpTQ19HTElCX0FQSV9FTkFCTEVECisgICAgRFlOQU1JQ19JU09fU1VCU1BB
Q0VfREVGSU5FX01FTUJFUihhcGlXcmFwcGVyT2JqZWN0U3BhY2UpCisgICAgRFlOQU1JQ19JU09f
U1VCU1BBQ0VfREVGSU5FX01FTUJFUihqc2NDYWxsYmFja0Z1bmN0aW9uU3BhY2UpCisgICAgRFlO
QU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihjYWxsYmFja0FQSVdyYXBwZXJHbG9iYWxP
YmplY3RTcGFjZSkKKyNlbmRpZgorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1C
RVIoYXBpR2xvYmFsT2JqZWN0U3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5F
X01FTUJFUihhcGlWYWx1ZVdyYXBwZXJTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9E
RUZJTkVfTUVNQkVSKGFycmF5QnVmZmVyU3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0Vf
REVGSU5FX01FTUJFUihhcnJheUl0ZXJhdG9yU3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BB
Q0VfREVGSU5FX01FTUJFUihhc3luY0dlbmVyYXRvclNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NV
QlNQQUNFX0RFRklORV9NRU1CRVIoYmlnSW50NjRBcnJheVNwYWNlKQorICAgIERZTkFNSUNfSVNP
X1NVQlNQQUNFX0RFRklORV9NRU1CRVIoYmlnSW50T2JqZWN0U3BhY2UpCisgICAgRFlOQU1JQ19J
U09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihiaWdVaW50NjRBcnJheVNwYWNlKQorICAgIERZTkFN
SUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoYm9vbGVhbk9iamVjdFNwYWNlKQorICAgIERZ
TkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoYm91bmRGdW5jdGlvblNwYWNlKQorICAg
IERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoY2FsbGJhY2tDb25zdHJ1Y3RvclNw
YWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoY2FsbGJhY2tHbG9i
YWxPYmplY3RTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKGNh
bGxiYWNrRnVuY3Rpb25TcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVN
QkVSKGNhbGxiYWNrT2JqZWN0U3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5F
X01FTUJFUihjdXN0b21HZXR0ZXJGdW5jdGlvblNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQ
QUNFX0RFRklORV9NRU1CRVIoY3VzdG9tU2V0dGVyRnVuY3Rpb25TcGFjZSkKKyAgICBEWU5BTUlD
X0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKGRhdGFWaWV3U3BhY2UpCisgICAgRFlOQU1JQ19J
U09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihkZWJ1Z2dlclNjb3BlU3BhY2UpCisgICAgRFlOQU1J
Q19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihlcnJvckluc3RhbmNlU3BhY2UpCisgICAgRFlO
QU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihmbG9hdDMyQXJyYXlTcGFjZSkKKyAgICBE
WU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKGZsb2F0NjRBcnJheVNwYWNlKQorICAg
IERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoZnVuY3Rpb25SYXJlRGF0YVNwYWNl
KQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoZ2VuZXJhdG9yU3BhY2Up
CisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihnbG9iYWxPYmplY3RTcGFj
ZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKGluamVjdGVkU2NyaXB0
SG9zdFNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoaW50OEFy
cmF5U3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihpbnQxNkFy
cmF5U3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihpbnQzMkFy
cmF5U3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihqYXZhU2Ny
aXB0Q2FsbEZyYW1lU3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJF
Uihqc01vZHVsZVJlY29yZFNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9N
RU1CRVIobWFwQnVja2V0U3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01F
TUJFUihtYXBJdGVyYXRvclNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9N
RU1CRVIobWFwU3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUiht
b2R1bGVOYW1lc3BhY2VPYmplY3RTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJ
TkVfTUVNQkVSKG5hdGl2ZVN0ZEZ1bmN0aW9uU3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BB
Q0VfREVGSU5FX01FTUJFUihwcm94eU9iamVjdFNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQ
QUNFX0RFRklORV9NRU1CRVIocHJveHlSZXZva2VTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJT
UEFDRV9ERUZJTkVfTUVNQkVSKHNjb3BlZEFyZ3VtZW50c1RhYmxlU3BhY2UpCisgICAgRFlOQU1J
Q19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihzY3JpcHRGZXRjaFBhcmFtZXRlcnNTcGFjZSkK
KyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKHNjcmlwdEZldGNoZXJTcGFj
ZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKHNldEJ1Y2tldFNwYWNl
KQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoc2V0SXRlcmF0b3JTcGFj
ZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKHNldFNwYWNlKQorICAg
IERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoc2hhZG93UmVhbG1TcGFjZSk7Cisg
ICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihzdHJpY3RFdmFsQWN0aXZhdGlv
blNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoc3RyaW5nSXRl
cmF0b3JTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKHNvdXJj
ZUNvZGVTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKHN5bWJv
bFNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoc3ltYm9sT2Jq
ZWN0U3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUih0ZW1wbGF0
ZU9iamVjdERlc2NyaXB0b3JTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVf
TUVNQkVSKHRlbXBvcmFsQ2FsZW5kYXJTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9E
RUZJTkVfTUVNQkVSKHRlbXBvcmFsRHVyYXRpb25TcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJT
UEFDRV9ERUZJTkVfTUVNQkVSKHRlbXBvcmFsSW5zdGFudFNwYWNlKQorICAgIERZTkFNSUNfSVNP
X1NVQlNQQUNFX0RFRklORV9NRU1CRVIodGVtcG9yYWxQbGFpblRpbWVTcGFjZSkKKyAgICBEWU5B
TUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKHRlbXBvcmFsVGltZVpvbmVTcGFjZSkKKyAg
ICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKHVpbnQ4QXJyYXlTcGFjZSkKKyAg
ICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKHVpbnQ4Q2xhbXBlZEFycmF5U3Bh
Y2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUih1aW50MTZBcnJheVNw
YWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIodWludDMyQXJyYXlT
cGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKHVubGlua2VkRXZh
bENvZGVCbG9ja1NwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIo
dW5saW5rZWRGdW5jdGlvbkNvZGVCbG9ja1NwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNF
X0RFRklORV9NRU1CRVIodW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrU3BhY2UpCisgICAg
RFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUih1bmxpbmtlZFByb2dyYW1Db2RlQmxv
Y2tTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKGZpbmFsaXph
dGlvblJlZ2lzdHJ5U3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJF
Uih3ZWFrT2JqZWN0UmVmU3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01F
TUJFUih3ZWFrU2V0U3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJF
Uih3ZWFrTWFwU3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUih3
aXRoU2NvcGVTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKGlu
dGxDb2xsYXRvclNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIo
aW50bERhdGVUaW1lRm9ybWF0U3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5F
X01FTUJFUihpbnRsRGlzcGxheU5hbWVzU3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0Vf
REVGSU5FX01FTUJFUihpbnRsTGlzdEZvcm1hdFNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQ
QUNFX0RFRklORV9NRU1CRVIoaW50bExvY2FsZVNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQ
QUNFX0RFRklORV9NRU1CRVIoaW50bE51bWJlckZvcm1hdFNwYWNlKQorICAgIERZTkFNSUNfSVNP
X1NVQlNQQUNFX0RFRklORV9NRU1CRVIoaW50bFBsdXJhbFJ1bGVzU3BhY2UpCisgICAgRFlOQU1J
Q19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihpbnRsUmVsYXRpdmVUaW1lRm9ybWF0U3BhY2Up
CisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihpbnRsU2VnbWVudEl0ZXJh
dG9yU3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihpbnRsU2Vn
bWVudGVyU3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihpbnRs
U2VnbWVudHNTcGFjZSkKKyNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCisgICAgRFlOQU1JQ19JU09f
U1VCU1BBQ0VfREVGSU5FX01FTUJFUihqc1RvV2FzbUlDQ2FsbGVlU3BhY2UpCisgICAgRFlOQU1J
Q19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUih3ZWJBc3NlbWJseUNvZGVCbG9ja1NwYWNlKQor
ICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIod2ViQXNzZW1ibHlFeGNlcHRp
b25TcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKHdlYkFzc2Vt
Ymx5RnVuY3Rpb25TcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVS
KHdlYkFzc2VtYmx5R2xvYmFsU3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5F
X01FTUJFUih3ZWJBc3NlbWJseUluc3RhbmNlU3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BB
Q0VfREVGSU5FX01FTUJFUih3ZWJBc3NlbWJseU1lbW9yeVNwYWNlKQorICAgIERZTkFNSUNfSVNP
X1NVQlNQQUNFX0RFRklORV9NRU1CRVIod2ViQXNzZW1ibHlNb2R1bGVTcGFjZSkKKyAgICBEWU5B
TUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKHdlYkFzc2VtYmx5TW9kdWxlUmVjb3JkU3Bh
Y2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUih3ZWJBc3NlbWJseVRh
YmxlU3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUih3ZWJBc3Nl
bWJseVRhZ1NwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIod2Vi
QXNzZW1ibHlXcmFwcGVyRnVuY3Rpb25TcGFjZSkKKyNlbmRpZgorCisjdW5kZWYgRFlOQU1JQ19J
U09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUgorICAgIAorICAgIElzb0NlbGxTZXQgZXhlY3V0YWJs
ZVRvQ29kZUJsb2NrRWRnZXNXaXRoQ29uc3RyYWludHM7CisgICAgSXNvQ2VsbFNldCBleGVjdXRh
YmxlVG9Db2RlQmxvY2tFZGdlc1dpdGhGaW5hbGl6ZXJzOworCisjZGVmaW5lIERZTkFNSUNfU1BB
Q0VfQU5EX1NFVF9ERUZJTkVfTUVNQkVSKG5hbWUpIFwKKyAgICB0ZW1wbGF0ZTxTdWJzcGFjZUFj
Y2VzcyBtb2RlPiBcCisgICAgSXNvU3Vic3BhY2UqIG5hbWUoKSBcCisgICAgeyBcCisgICAgICAg
IGlmIChhdXRvKiBzcGFjZUFuZFNldCA9IG1fIyNuYW1lLmdldCgpKSBcCisgICAgICAgICAgICBy
ZXR1cm4gJnNwYWNlQW5kU2V0LT5zcGFjZTsgXAorICAgICAgICBpZiAobW9kZSA9PSBTdWJzcGFj
ZUFjY2Vzczo6Q29uY3VycmVudGx5KSBcCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsgXAor
ICAgICAgICByZXR1cm4gbmFtZSMjU2xvdygpOyBcCisgICAgfSBcCisgICAgSXNvU3Vic3BhY2Uq
IG5hbWUjI1Nsb3coKTsgXAorICAgIHN0ZDo6dW5pcXVlX3B0cjxTcGFjZUFuZFNldD4gbV8jI25h
bWU7CisgICAgCisgICAgc3RydWN0IFNwYWNlQW5kU2V0IHsKKyAgICAgICAgV1RGX01BS0VfU1RS
VUNUX0ZBU1RfQUxMT0NBVEVEOworCisgICAgICAgIElzb1N1YnNwYWNlIHNwYWNlOworICAgICAg
ICBJc29DZWxsU2V0IHNldDsKKyAgICAgICAgCisgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lLi4u
IEFyZ3VtZW50cz4KKyAgICAgICAgU3BhY2VBbmRTZXQoQXJndW1lbnRzJiYuLi4gYXJndW1lbnRz
KQorICAgICAgICAgICAgOiBzcGFjZShzdGQ6OmZvcndhcmQ8QXJndW1lbnRzPihhcmd1bWVudHMp
Li4uKQorICAgICAgICAgICAgLCBzZXQoc3BhY2UpCisgICAgICAgIHsKKyAgICAgICAgfQorICAg
ICAgICAKKyAgICAgICAgc3RhdGljIElzb0NlbGxTZXQmIHNldEZvcihTdWJzcGFjZSYgc3BhY2Up
CisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiAqYml0d2lzZV9jYXN0PElzb0NlbGxTZXQq
PigKKyAgICAgICAgICAgICAgICBiaXR3aXNlX2Nhc3Q8Y2hhcio+KCZzcGFjZSkgLQorICAgICAg
ICAgICAgICAgIE9CSkVDVF9PRkZTRVRPRihTcGFjZUFuZFNldCwgc3BhY2UpICsKKyAgICAgICAg
ICAgICAgICBPQkpFQ1RfT0ZGU0VUT0YoU3BhY2VBbmRTZXQsIHNldCkpOworICAgICAgICB9Cisg
ICAgfTsKKyAgICAKKyAgICBTcGFjZUFuZFNldCBjb2RlQmxvY2tTcGFjZTsKKworICAgIHRlbXBs
YXRlPHR5cGVuYW1lIEZ1bmM+CisgICAgdm9pZCBmb3JFYWNoQ29kZUJsb2NrU3BhY2UoY29uc3Qg
RnVuYyYgZnVuYykKKyAgICB7CisgICAgICAgIC8vIFRoaXMgc2hvdWxkIG5vdCBpbmNsdWRlIHdl
YkFzc2VtYmx5Q29kZUJsb2NrU3BhY2UgYmVjYXVzZSB0aGlzIGlzIGFib3V0IHN1YnNjbGFzc2Vz
IG9mCisgICAgICAgIC8vIEpTQzo6Q29kZUJsb2NrLgorICAgICAgICBmdW5jKGNvZGVCbG9ja1Nw
YWNlKTsKKyAgICB9CisKKyAgICBEWU5BTUlDX1NQQUNFX0FORF9TRVRfREVGSU5FX01FTUJFUihl
dmFsRXhlY3V0YWJsZVNwYWNlKQorICAgIERZTkFNSUNfU1BBQ0VfQU5EX1NFVF9ERUZJTkVfTUVN
QkVSKG1vZHVsZVByb2dyYW1FeGVjdXRhYmxlU3BhY2UpCisgICAgU3BhY2VBbmRTZXQgZnVuY3Rp
b25FeGVjdXRhYmxlU3BhY2U7CisgICAgU3BhY2VBbmRTZXQgcHJvZ3JhbUV4ZWN1dGFibGVTcGFj
ZTsKKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmM+CisgICAgdm9pZCBmb3JFYWNoU2NyaXB0
RXhlY3V0YWJsZVNwYWNlKGNvbnN0IEZ1bmMmIGZ1bmMpCisgICAgeworICAgICAgICBpZiAobV9l
dmFsRXhlY3V0YWJsZVNwYWNlKQorICAgICAgICAgICAgZnVuYygqbV9ldmFsRXhlY3V0YWJsZVNw
YWNlKTsKKyAgICAgICAgZnVuYyhmdW5jdGlvbkV4ZWN1dGFibGVTcGFjZSk7CisgICAgICAgIGlm
IChtX21vZHVsZVByb2dyYW1FeGVjdXRhYmxlU3BhY2UpCisgICAgICAgICAgICBmdW5jKCptX21v
ZHVsZVByb2dyYW1FeGVjdXRhYmxlU3BhY2UpOworICAgICAgICBmdW5jKHByb2dyYW1FeGVjdXRh
YmxlU3BhY2UpOworICAgIH0KKworICAgIFNwYWNlQW5kU2V0IHVubGlua2VkRnVuY3Rpb25FeGVj
dXRhYmxlU3BhY2U7CisKKyN1bmRlZiBEWU5BTUlDX1NQQUNFX0FORF9TRVRfREVGSU5FX01FTUJF
UgogfTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9Jc29IZWFwQ2VsbFR5cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL0lzb0hlYXBDZWxsVHlwZS5jcHAJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lzb0hlYXBDZWxsVHlwZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTMxLDIyICszMSw2MSBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotSXNvSGVhcENlbGxUeXBl
OjpJc29IZWFwQ2VsbFR5cGUoRGVzdHJ1Y3Rpb25Nb2RlIGRlc3RydWN0aW9uTW9kZSwgRGVzdHJv
eUZ1bmN0aW9uUHRyIGRlc3Ryb3lGdW5jdGlvbikKLSAgICA6IEhlYXBDZWxsVHlwZShDZWxsQXR0
cmlidXRlcyhkZXN0cnVjdGlvbk1vZGUsIEhlYXBDZWxsOjpKU0NlbGwpKQotICAgICwgbV9kZXN0
cm95KGRlc3Ryb3lGdW5jdGlvbikKKy8vSXNvSGVhcENlbGxUeXBlOjpJc29IZWFwQ2VsbFR5cGUo
RGVzdHJ1Y3Rpb25Nb2RlIGRlc3RydWN0aW9uTW9kZSwgRGVzdHJveUZ1bmN0aW9uUHRyIGRlc3Ry
b3lGdW5jdGlvbikKKy8vICAgIDogSGVhcENlbGxUeXBlKENlbGxBdHRyaWJ1dGVzKGRlc3RydWN0
aW9uTW9kZSwgSGVhcENlbGw6OkpTQ2VsbCkpCisvLyAgICAsIG1fZGVzdHJveShkZXN0cm95RnVu
Y3Rpb24pCisvL3sKKy8vfQorLy8KKy8vSXNvSGVhcENlbGxUeXBlOjp+SXNvSGVhcENlbGxUeXBl
KCkgPSBkZWZhdWx0OworLy8KKy8vdm9pZCBJc29IZWFwQ2VsbFR5cGU6OmZpbmlzaFN3ZWVwKE1h
cmtlZEJsb2NrOjpIYW5kbGUmIGhhbmRsZSwgRnJlZUxpc3QqIGZyZWVMaXN0KSBjb25zdAorLy97
CisvLyAgICBoYW5kbGUuZmluaXNoU3dlZXBLbm93aW5nSGVhcENlbGxUeXBlKGZyZWVMaXN0LCAq
dGhpcyk7CisvL30KKy8vCisvL3ZvaWQgSXNvSGVhcENlbGxUeXBlOjpkZXN0cm95KFZNJiwgSlND
ZWxsKiBjZWxsKSBjb25zdAorLy97CisvLyAgICBtX2Rlc3Ryb3koY2VsbCk7CisvL30KKworSXNv
SGVhcENlbGxUeXBlQmFzZTo6SXNvSGVhcENlbGxUeXBlQmFzZShDZWxsQXR0cmlidXRlcyBhdHRy
aWJ1dGVzKQorICAgIDogSGVhcENlbGxUeXBlKGF0dHJpYnV0ZXMpCiB7CiB9CiAKLUlzb0hlYXBD
ZWxsVHlwZTo6fklzb0hlYXBDZWxsVHlwZSgpID0gZGVmYXVsdDsKK0lzb0hlYXBDZWxsVHlwZUJh
c2U6On5Jc29IZWFwQ2VsbFR5cGVCYXNlKCkgPSBkZWZhdWx0OwogCi12b2lkIElzb0hlYXBDZWxs
VHlwZTo6ZmluaXNoU3dlZXAoTWFya2VkQmxvY2s6OkhhbmRsZSYgaGFuZGxlLCBGcmVlTGlzdCog
ZnJlZUxpc3QpIGNvbnN0Cit2b2lkIElzb0hlYXBDZWxsVHlwZUJhc2U6OmZpbmlzaFN3ZWVwKE1h
cmtlZEJsb2NrOjpIYW5kbGUmIGhhbmRsZSwgRnJlZUxpc3QqIGZyZWVMaXN0KSBjb25zdAogewot
ICAgIGhhbmRsZS5maW5pc2hTd2VlcEtub3dpbmdIZWFwQ2VsbFR5cGUoZnJlZUxpc3QsICp0aGlz
KTsKKyAgICAvLyBmaW5pc2hTd2VlcEtub3dpbmdIZWFwQ2VsbFR5cGUoKSBtYXkgY2FsbCBkZXN0
cm95IGluIGEgbG9vcCwgYW5kIHdlIGRvbid0CisgICAgLy8gd2FudCB0byBkbyBhIHZpcnR1YWwg
ZnVuY3Rpb24gdG8gZG8gdGhlIGRlc3Ryb3kgaW4gdGhhdCBsb29wLiBJbnN0ZWFkLAorICAgIC8v
IHdlIGNhbGwgdGhlIHZpcnR1YWwgZnVuY3Rpb24gZGVzdHJveUZ1bmN0aW9uUHRyKCkgb25seSBv
bmNlIHRvIGZldGNoIHRoZQorICAgIC8vIERlc3Ryb3lGdW5jdGlvblB0ciwgYW5kIHVzZSB0aGlz
IEludm9rZXIgY2xhc3MgdG8gY2FjaGUgdGhlIHJldHVybmVkCisgICAgLy8gRGVzdHJveUZ1bmN0
aW9uUHRyLiBmaW5pc2hTd2VlcEtub3dpbmdIZWFwQ2VsbFR5cGUoKSBjYW4gdGhlbiBpbnZva2UK
KyAgICAvLyBkZXN0cm95IHZpYSBJbnZva2VyJ3MgY2FjaGVkIERlc3Ryb3lGdW5jdGlvblB0ci4K
KyAgICBjbGFzcyBJbnZva2VyIHsKKyAgICBwdWJsaWM6CisgICAgICAgIEludm9rZXIoRGVzdHJv
eUZ1bmN0aW9uUHRyIGRlc3Ryb3lGdW5jdGlvblB0cikKKyAgICAgICAgICAgIDogbV9kZXN0cm95
KGRlc3Ryb3lGdW5jdGlvblB0cikKKyAgICAgICAgeyB9CisKKyAgICAgICAgQUxXQVlTX0lOTElO
RSB2b2lkIG9wZXJhdG9yKCkoVk0mLCBKU0NlbGwqIGNlbGwpIGNvbnN0CisgICAgICAgIHsKKyAg
ICAgICAgICAgIG1fZGVzdHJveShjZWxsKTsKKyAgICAgICAgfQorCisgICAgcHJpdmF0ZToKKyAg
ICAgICAgRGVzdHJveUZ1bmN0aW9uUHRyIG1fZGVzdHJveTsKKyAgICB9OworCisgICAgSW52b2tl
ciBpbnZva2VyKGRlc3Ryb3lGdW5jdGlvblB0cigpKTsKKyAgICBoYW5kbGUuZmluaXNoU3dlZXBL
bm93aW5nSGVhcENlbGxUeXBlKGZyZWVMaXN0LCBpbnZva2VyKTsKIH0KIAotdm9pZCBJc29IZWFw
Q2VsbFR5cGU6OmRlc3Ryb3koVk0mLCBKU0NlbGwqIGNlbGwpIGNvbnN0CitJc29IZWFwQ2VsbFR5
cGVCYXNlOjpEZXN0cm95RnVuY3Rpb25QdHIgSXNvSGVhcENlbGxUeXBlQmFzZTo6ZGVzdHJveUZ1
bmN0aW9uUHRyKCkgY29uc3QKIHsKLSAgICBtX2Rlc3Ryb3koY2VsbCk7CisgICAgUkVMRUFTRV9B
U1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Jc29IZWFwQ2VsbFR5cGUuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Jc29IZWFwQ2VsbFR5cGUuaAkocmV2aXNpb24gMjg2
MDk1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSXNvSGVhcENlbGxUeXBlLmgJKHdv
cmtpbmcgY29weSkKQEAgLTI5LDMwICsyOSw2OSBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotY2xh
c3MgSXNvSGVhcENlbGxUeXBlIGZpbmFsIDogcHVibGljIEhlYXBDZWxsVHlwZSB7CisvL2NsYXNz
IElzb0hlYXBDZWxsVHlwZSBmaW5hbCA6IHB1YmxpYyBIZWFwQ2VsbFR5cGUgeworLy9wdWJsaWM6
CisvLyAgICB1c2luZyBEZXN0cm95RnVuY3Rpb25QdHIgPSB2b2lkICgqKShKU0NlbGwqKTsKKy8v
CisvLyAgICBKU19FWFBPUlRfUFJJVkFURSB+SXNvSGVhcENlbGxUeXBlKCk7CisvLworLy8gICAg
SlNfRVhQT1JUX1BSSVZBVEUgSXNvSGVhcENlbGxUeXBlKERlc3RydWN0aW9uTW9kZSwgRGVzdHJv
eUZ1bmN0aW9uUHRyKTsKKy8vCisvLyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZT4KKy8v
ICAgIHN0cnVjdCBBcmdzIHsKKy8vICAgICAgICBBcmdzKCkKKy8vICAgICAgICAgICAgOiBtb2Rl
KENlbGxUeXBlOjpuZWVkc0Rlc3RydWN0aW9uID8gTmVlZHNEZXN0cnVjdGlvbiA6IERvZXNOb3RO
ZWVkRGVzdHJ1Y3Rpb24pCisvLyAgICAgICAgICAgICwgZnVuY3Rpb25QdHIoJkNlbGxUeXBlOjpk
ZXN0cm95KQorLy8gICAgICAgIHsgfQorLy8KKy8vICAgICAgICBEZXN0cnVjdGlvbk1vZGUgbW9k
ZTsKKy8vICAgICAgICBEZXN0cm95RnVuY3Rpb25QdHIgZnVuY3Rpb25QdHI7CisvLyAgICB9Owor
Ly8KKy8vICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlPgorLy8gICAgSXNvSGVhcENlbGxU
eXBlKEFyZ3M8Q2VsbFR5cGU+JiYgYXJncykKKy8vICAgICAgICA6IElzb0hlYXBDZWxsVHlwZShh
cmdzLm1vZGUsIGFyZ3MuZnVuY3Rpb25QdHIpCisvLyAgICB7IH0KKy8vCisvLyAgICBKU19FWFBP
UlRfUFJJVkFURSB2b2lkIGZpbmlzaFN3ZWVwKE1hcmtlZEJsb2NrOjpIYW5kbGUmLCBGcmVlTGlz
dCopIGNvbnN0IGZpbmFsOworLy8gICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBkZXN0cm95KFZN
JiwgSlNDZWxsKikgY29uc3QgZmluYWw7CisvLworLy8gICAgQUxXQVlTX0lOTElORSB2b2lkIG9w
ZXJhdG9yKCkoVk0mLCBKU0NlbGwqIGNlbGwpIGNvbnN0CisvLyAgICB7CisvLyAgICAgICAgbV9k
ZXN0cm95KGNlbGwpOworLy8gICAgfQorLy8KKy8vcHJpdmF0ZToKKy8vICAgIERlc3Ryb3lGdW5j
dGlvblB0ciBXVEZfVlRCTF9GVU5DUFRSX1BUUkFVVEhfU1RSKCJJc29IZWFwQ2VsbFR5cGUuZGVz
dHJveSIpIG1fZGVzdHJveTsKKy8vfTsKKworLy8gVGhlIHJlYXNvbiB3ZSBuZWVkIGFuIElzb0hl
YXBDZWxsVHlwZUJhc2UgaXMganVzdCBzbyBhbGwgSXNvSGVhcENlbGxUeXBlCisvLyBzcGVjaWFs
aXphdGlvbnMgY2FuIHNoYXJlIHRoZSBzYW1lIGZpbmlzaFN3ZWVwKCkuIGZpbmlzaFN3ZWVwKCkg
bmVlZHMgdG8gY2FsbAorLy8gTWFya2VkQmxvY2s6OkhhbmRsZTo6ZmluaXNoU3dlZXBLbm93aW5n
SGVhcENlbGxUeXBlKCksIHdoaWNoIGlzIGEgcmVsYXRpdmVseQorLy8gbGFyZ2UgdGVtcGxhdGUg
ZnVuY3Rpb24uIFdlIGRvbid0IHdhbnQgdG8gaW5zdGFudGlhdGUgYSBzcGVjaWFsaXphdGlvbiBv
ZgorLy8gZmluaXNoU3dlZXBLbm93aW5nSGVhcENlbGxUeXBlKCkgZm9yIGVhY2ggSXNvSGVhcENl
bGxUeXBlIGNlbGwgdHlwZS4KK2NsYXNzIElzb0hlYXBDZWxsVHlwZUJhc2UgOiBwdWJsaWMgSGVh
cENlbGxUeXBlIHsKIHB1YmxpYzoKICAgICB1c2luZyBEZXN0cm95RnVuY3Rpb25QdHIgPSB2b2lk
ICgqKShKU0NlbGwqKTsKIAotICAgIEpTX0VYUE9SVF9QUklWQVRFIH5Jc29IZWFwQ2VsbFR5cGUo
KTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBJc29IZWFwQ2VsbFR5cGVCYXNlKENlbGxBdHRyaWJ1
dGVzIGF0dHJpYnV0ZXMpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIH5Jc29IZWFwQ2VsbFR5cGVC
YXNlKCk7CiAKLSAgICBKU19FWFBPUlRfUFJJVkFURSBJc29IZWFwQ2VsbFR5cGUoRGVzdHJ1Y3Rp
b25Nb2RlLCBEZXN0cm95RnVuY3Rpb25QdHIpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQg
ZmluaXNoU3dlZXAoTWFya2VkQmxvY2s6OkhhbmRsZSYgaGFuZGxlLCBGcmVlTGlzdCogZnJlZUxp
c3QpIGNvbnN0IGZpbmFsOwogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGU+Ci0gICAg
c3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxJc29IZWFwQ2VsbFR5cGU+IGNyZWF0ZSgpCi0gICAgewot
ICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxJc29IZWFwQ2VsbFR5cGU+KENlbGxUeXBlOjpuZWVk
c0Rlc3RydWN0aW9uID8gTmVlZHNEZXN0cnVjdGlvbiA6IERvZXNOb3ROZWVkRGVzdHJ1Y3Rpb24s
ICZDZWxsVHlwZTo6ZGVzdHJveSk7Ci0gICAgfQotCi0gICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9p
ZCBmaW5pc2hTd2VlcChNYXJrZWRCbG9jazo6SGFuZGxlJiwgRnJlZUxpc3QqKSBjb25zdCBmaW5h
bDsKLSAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIGRlc3Ryb3koVk0mLCBKU0NlbGwqKSBjb25z
dCBmaW5hbDsKLQotICAgIEFMV0FZU19JTkxJTkUgdm9pZCBvcGVyYXRvcigpKFZNJiwgSlNDZWxs
KiBjZWxsKSBjb25zdAotICAgIHsKLSAgICAgICAgbV9kZXN0cm95KGNlbGwpOwotICAgIH0KKyAg
ICB2aXJ0dWFsIERlc3Ryb3lGdW5jdGlvblB0ciBkZXN0cm95RnVuY3Rpb25QdHIoKSBjb25zdDsK
K307CisKK3RlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlPgorY2xhc3MgSXNvSGVhcENlbGxUeXBl
IGZpbmFsIDogcHVibGljIElzb0hlYXBDZWxsVHlwZUJhc2UgeworcHVibGljOgorICAgIHVzaW5n
IElzb0hlYXBDZWxsVHlwZUJhc2U6OkRlc3Ryb3lGdW5jdGlvblB0cjsKKworICAgIElzb0hlYXBD
ZWxsVHlwZSgpOworICAgIH5Jc29IZWFwQ2VsbFR5cGUoKSA9IGRlZmF1bHQ7CiAKLXByaXZhdGU6
Ci0gICAgRGVzdHJveUZ1bmN0aW9uUHRyIFdURl9WVEJMX0ZVTkNQVFJfUFRSQVVUSF9TVFIoIklz
b0hlYXBDZWxsVHlwZS5kZXN0cm95IikgbV9kZXN0cm95OworICAgIHZvaWQgZGVzdHJveShWTSYs
IEpTQ2VsbCogY2VsbCkgY29uc3QgZmluYWw7CisgICAgRGVzdHJveUZ1bmN0aW9uUHRyIGRlc3Ry
b3lGdW5jdGlvblB0cigpIGNvbnN0IGZpbmFsOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Jc29IZWFwQ2VsbFR5cGVJbmxpbmVzLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSXNvSGVhcENlbGxUeXBl
SW5saW5lcy5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lz
b0hlYXBDZWxsVHlwZUlubGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQ5IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNl
CisKKyNpbmNsdWRlICJIZWFwQ2VsbFR5cGUuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK3RlbXBs
YXRlPHR5cGVuYW1lIENlbGxUeXBlPgorQUxXQVlTX0lOTElORSBJc29IZWFwQ2VsbFR5cGU8Q2Vs
bFR5cGU+OjpJc29IZWFwQ2VsbFR5cGUoKQorICAgIDogSXNvSGVhcENlbGxUeXBlQmFzZShDZWxs
QXR0cmlidXRlcyhDZWxsVHlwZTo6bmVlZHNEZXN0cnVjdGlvbiA/IE5lZWRzRGVzdHJ1Y3Rpb24g
OiBEb2VzTm90TmVlZERlc3RydWN0aW9uLCBIZWFwQ2VsbDo6SlNDZWxsKSkKK3sgfQorCit0ZW1w
bGF0ZTx0eXBlbmFtZSBDZWxsVHlwZT4KK3ZvaWQgSXNvSGVhcENlbGxUeXBlPENlbGxUeXBlPjo6
ZGVzdHJveShWTSYsIEpTQ2VsbCogY2VsbCkgY29uc3QKK3sKKyAgICBDZWxsVHlwZTo6ZGVzdHJv
eShjZWxsKTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGU+Cit0eXBlbmFtZSBJc29I
ZWFwQ2VsbFR5cGU8Q2VsbFR5cGU+OjpEZXN0cm95RnVuY3Rpb25QdHIgSXNvSGVhcENlbGxUeXBl
PENlbGxUeXBlPjo6ZGVzdHJveUZ1bmN0aW9uUHRyKCkgY29uc3QKK3sKKyAgICByZXR1cm4gJkNl
bGxUeXBlOjpkZXN0cm95OworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL0lzb0lubGluZWRIZWFwQ2VsbFR5cGUuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Jc29JbmxpbmVkSGVhcENlbGxUeXBlLmgJKHJl
dmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lzb0lubGluZWRI
ZWFwQ2VsbFR5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzIsMjggKzMyLDEzIEBAIG5hbWVzcGFj
ZSBKU0MgewogdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGU+CiBjbGFzcyBJc29JbmxpbmVkSGVh
cENlbGxUeXBlIGZpbmFsIDogcHVibGljIEhlYXBDZWxsVHlwZSB7CiBwdWJsaWM6Ci0gICAgSXNv
SW5saW5lZEhlYXBDZWxsVHlwZSgpCi0gICAgICAgIDogSGVhcENlbGxUeXBlKENlbGxBdHRyaWJ1
dGVzKENlbGxUeXBlOjpuZWVkc0Rlc3RydWN0aW9uID8gTmVlZHNEZXN0cnVjdGlvbiA6IERvZXNO
b3ROZWVkRGVzdHJ1Y3Rpb24sIEhlYXBDZWxsOjpKU0NlbGwpKQotICAgIHsKLSAgICB9Ci0KKyAg
ICBJc29JbmxpbmVkSGVhcENlbGxUeXBlKCk7CiAgICAgc3RydWN0IERlc3Ryb3lGdW5jIHsKLSAg
ICAgICAgQUxXQVlTX0lOTElORSB2b2lkIG9wZXJhdG9yKCkoVk0mLCBKU0NlbGwqIGNlbGwpIGNv
bnN0Ci0gICAgICAgIHsKLSAgICAgICAgICAgIENlbGxUeXBlOjpkZXN0cm95KGNlbGwpOwotICAg
ICAgICB9CisgICAgICAgIEFMV0FZU19JTkxJTkUgdm9pZCBvcGVyYXRvcigpKFZNJiwgSlNDZWxs
KiBjZWxsKSBjb25zdDsKICAgICB9OwogCi0gICAgdm9pZCBmaW5pc2hTd2VlcChNYXJrZWRCbG9j
azo6SGFuZGxlJiBoYW5kbGUsIEZyZWVMaXN0KiBmcmVlTGlzdCkgY29uc3QgZmluYWwKLSAgICB7
Ci0gICAgICAgIGhhbmRsZS5maW5pc2hTd2VlcEtub3dpbmdIZWFwQ2VsbFR5cGUoZnJlZUxpc3Qs
IERlc3Ryb3lGdW5jKCkpOwotICAgIH0KLQotICAgIHZvaWQgZGVzdHJveShWTSYsIEpTQ2VsbCog
Y2VsbCkgY29uc3QgZmluYWwKLSAgICB7Ci0gICAgICAgIENlbGxUeXBlOjpkZXN0cm95KGNlbGwp
OwotICAgIH0KKyAgICB2b2lkIGZpbmlzaFN3ZWVwKE1hcmtlZEJsb2NrOjpIYW5kbGUmIGhhbmRs
ZSwgRnJlZUxpc3QqIGZyZWVMaXN0KSBjb25zdCBmaW5hbDsKKyAgICB2b2lkIGRlc3Ryb3koVk0m
LCBKU0NlbGwqIGNlbGwpIGNvbnN0IGZpbmFsOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCi0K
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lzb0lubGluZWRIZWFwQ2VsbFR5cGVJ
bmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSXNvSW5s
aW5lZEhlYXBDZWxsVHlwZUlubGluZXMuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9Jc29JbmxpbmVkSGVhcENlbGxUeXBlSW5saW5lcy5oCSh3b3JraW5nIGNv
cHkpCkBAIC0wLDAgKzEsNTggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIklzb0lubGluZWRIZWFwQ2VsbFR5
cGUuaCIKKworI2luY2x1ZGUgIk1hcmtlZEJsb2NrLmgiCisKK25hbWVzcGFjZSBKU0MgeworCit0
ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZT4KK2lubGluZSBJc29JbmxpbmVkSGVhcENlbGxUeXBl
PENlbGxUeXBlPjo6SXNvSW5saW5lZEhlYXBDZWxsVHlwZSgpCisgICAgOiBIZWFwQ2VsbFR5cGUo
Q2VsbEF0dHJpYnV0ZXMoQ2VsbFR5cGU6Om5lZWRzRGVzdHJ1Y3Rpb24gPyBOZWVkc0Rlc3RydWN0
aW9uIDogRG9lc05vdE5lZWREZXN0cnVjdGlvbiwgSGVhcENlbGw6OkpTQ2VsbCkpCit7Cit9CisK
K3RlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlPgorQUxXQVlTX0lOTElORSB2b2lkIElzb0lubGlu
ZWRIZWFwQ2VsbFR5cGU8Q2VsbFR5cGU+OjpEZXN0cm95RnVuYzo6b3BlcmF0b3IoKShWTSYsIEpT
Q2VsbCogY2VsbCkgY29uc3QKK3sKKyAgICBDZWxsVHlwZTo6ZGVzdHJveShjZWxsKTsKK30KKwor
dGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGU+CitpbmxpbmUgdm9pZCBJc29JbmxpbmVkSGVhcENl
bGxUeXBlPENlbGxUeXBlPjo6ZmluaXNoU3dlZXAoTWFya2VkQmxvY2s6OkhhbmRsZSYgaGFuZGxl
LCBGcmVlTGlzdCogZnJlZUxpc3QpIGNvbnN0Cit7CisgICAgaGFuZGxlLmZpbmlzaFN3ZWVwS25v
d2luZ0hlYXBDZWxsVHlwZShmcmVlTGlzdCwgRGVzdHJveUZ1bmMoKSk7Cit9CisKK3RlbXBsYXRl
PHR5cGVuYW1lIENlbGxUeXBlPgoraW5saW5lIHZvaWQgSXNvSW5saW5lZEhlYXBDZWxsVHlwZTxD
ZWxsVHlwZT46OmRlc3Ryb3koVk0mLCBKU0NlbGwqIGNlbGwpIGNvbnN0Cit7CisgICAgQ2VsbFR5
cGU6OmRlc3Ryb3koY2VsbCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvSXNvU3Vic3BhY2UuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9Jc29TdWJzcGFjZS5oCShyZXZpc2lvbiAyODYwOTUpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Jc29TdWJzcGFjZS5oCSh3b3JraW5nIGNvcHkpCkBA
IC01NCw3ICs1NCw3IEBAIHB1YmxpYzoKICAgICB2b2lkKiB0cnlBbGxvY2F0ZUZyb21Mb3dlclRp
ZXIoKTsKICAgICB2b2lkIGRlc3Ryb3lMb3dlclRpZXJGcmVlTGlzdCgpOwogCi0gICAgdm9pZCBz
d2VlcCgpOworICAgIHZvaWQgc3dlZXAzKCk7CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5j
PiB2b2lkIGZvckVhY2hMb3dlclRpZXJGcmVlTGlzdGVkUHJlY2lzZUFsbG9jYXRpb24oY29uc3Qg
RnVuYyYpOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Jc29TdWJzcGFjZUlu
bGluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Jc29TdWJz
cGFjZUlubGluZXMuaAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvSXNvU3Vic3BhY2VJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDcgKzQ0LDcg
QEAgaW5saW5lIHZvaWQgSXNvU3Vic3BhY2U6OmNsZWFySXNvQ2VsbFNldAogICAgICAgICB9KTsK
IH0KIAotaW5saW5lIHZvaWQgSXNvU3Vic3BhY2U6OnN3ZWVwKCkKK2lubGluZSB2b2lkIElzb1N1
YnNwYWNlOjpzd2VlcDMoKQogewogICAgIFN1YnNwYWNlOjpzd2VlcEJsb2NrcygpOwogICAgIC8v
IFdlIHN3ZWVwIHByZWNpc2UtYWxsb2NhdGlvbnMgZWFnZXJseSwgYnV0IHdlIGRvIG5vdCBmcmVl
IGl0IGltbWVkaWF0ZWx5LgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2Vk
QmxvY2tJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
TWFya2VkQmxvY2tJbmxpbmVzLmgJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrSW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNi0yMDE5IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNi0yMDIxIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjEz
LDcgKzIxMyw3IEBAIGlubGluZSBib29sIE1hcmtlZEJsb2NrOjpIYW5kbGU6OmFyZU1hcmsKIC8v
IHN3ZWVwTW9kZSA9PSBTd2VlcFRvRnJlZUxpc3QKIC8vIHNjcmliYmxlTW9kZSA9PSBEb250U2Ny
aWJibGUKIC8vIG5ld2x5QWxsb2NhdGVkTW9kZSA9PSBEb2VzTm90SGF2ZU5ld2x5QWxsb2NhdGVk
Ci0vLyBkZXN0cnVjdGlvbk1vZGUgIT0gQmxvY2tIYXNEZXN0cmljdG9yc0FuZENvbGxlY3Rvcklz
UnVubmluZworLy8gZGVzdHJ1Y3Rpb25Nb2RlICE9IEJsb2NrSGFzRGVzdHJ1Y3RvcnNBbmRDb2xs
ZWN0b3JJc1J1bm5pbmcKIC8vCiAvLyBlbXB0eU1vZGUgPSBJc0VtcHR5CiAvLyAgICAgZGVzdHJ1
Y3Rpb25Nb2RlID0gRG9lc05vdE5lZWREZXN0cnVjdGlvbgpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9KU0luamVjdGVkU2NyaXB0SG9zdFByb3RvdHlwZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNJbmplY3RlZFNjcmlwdEhv
c3RQcm90b3R5cGUuaAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9KU0luamVjdGVkU2NyaXB0SG9zdFByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC00MCw3ICs0MCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSog
c3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lT
T19TVUJTUEFDRV9TSEFSQUJMRShKU0luamVjdGVkU2NyaXB0SG9zdFByb3RvdHlwZSwgQmFzZSk7
Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2
bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAgREVDTEFSRV9JTkZPOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0phdmFTY3JpcHRDYWxsRnJhbWVQcm90
b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pT
SmF2YVNjcmlwdENhbGxGcmFtZVByb3RvdHlwZS5oCShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTSmF2YVNjcmlwdENhbGxGcmFtZVByb3RvdHlw
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00MCw3ICs0MCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMg
SlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAgICAg
ICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU0phdmFTY3JpcHRDYWxsRnJh
bWVQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7
CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIERF
Q0xBUkVfSU5GTzsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9DYWxs
RnJhbWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIv
Q2FsbEZyYW1lLmgJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnRlcnByZXRlci9DYWxsRnJhbWUuaAkod29ya2luZyBjb3B5KQpAQCAtMzgsNiArMzgsNyBAQCBu
YW1lc3BhY2UgSlNDICB7CiAgICAgY2xhc3MgSlNDYWxsZWU7CiAgICAgY2xhc3MgSlNTY29wZTsK
ICAgICBjbGFzcyBTb3VyY2VPcmlnaW47CisgICAgY2xhc3MgVmlydHVhbFJlZ2lzdGVyOwogCiAg
ICAgc3RydWN0IEluc3RydWN0aW9uOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9BZ2dyZWdhdGVFcnJvclByb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0FnZ3JlZ2F0ZUVycm9yUHJvdG90eXBlLmgJKHJldmlzaW9uIDI4
NjA5NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FnZ3JlZ2F0ZUVycm9yUHJv
dG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDcgKzQ0LDcgQEAgcHVibGljOgogICAgIHN0
YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAgICAgU1RB
VElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoQWdncmVnYXRlRXJyb3JQcm90b3R5cGUs
IEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJl
dHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBTdHJ1Y3R1
cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IEpTVmFsdWUgcHJvdG90eXBlKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
QXJyYXlJdGVyYXRvclByb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0FycmF5SXRlcmF0b3JQcm90b3R5cGUuaAkocmV2aXNpb24gMjg2MDk1KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlJdGVyYXRvclByb3RvdHlwZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC0zOCw3ICszOCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNv
U3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NF
UlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEFycmF5SXRlcmF0b3JQcm90b3R5cGUsIEJhc2UpOwot
ICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0u
cGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBBcnJheUl0ZXJhdG9yUHJv
dG90eXBlKiBjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Fz
eW5jRnJvbVN5bmNJdGVyYXRvclByb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0FzeW5jRnJvbVN5bmNJdGVyYXRvclByb3RvdHlwZS5oCShyZXZp
c2lvbiAyODYwOTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bc3luY0Zyb21T
eW5jSXRlcmF0b3JQcm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDYgQEAKIC8q
CiAgKiBDb3B5cmlnaHQgKEMpIDIwMTctMjAxOSBPbGVrc2FuZHIgU2thY2hrb3YgPGdza2FjaGtv
dkBnbWFpbC5jb20+LgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlLCBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM3LDcgKzM4
LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZt
KQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoQXN5
bmNGcm9tU3luY0l0ZXJhdG9yUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5w
bGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsK
ICAgICB9CiAKICAgICBERUNMQVJFX0lORk87CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Bc3luY0Z1bmN0aW9uUHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQXN5bmNGdW5jdGlvblByb3RvdHlwZS5oCShyZXZpc2lvbiAy
ODYwOTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bc3luY0Z1bmN0aW9uUHJv
dG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM4LDcgKzM4LDcgQEAgcHVibGljOgogICAgIHN0
YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAgICAgU1RB
VElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoQXN5bmNGdW5jdGlvblByb3RvdHlwZSwg
QmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0
dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAgREVDTEFSRV9JTkZPOwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXN5bmNHZW5lcmF0b3JGdW5jdGlv
blByb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0FzeW5jR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuaAkocmV2aXNpb24gMjg2MDk1KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXN5bmNHZW5lcmF0b3JGdW5jdGlvblByb3Rv
dHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw3ICszOCw3IEBAIHB1YmxpYzoKICAgICBzdGF0
aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJ
Q19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEFzeW5jR2VuZXJhdG9yRnVuY3Rpb25Qcm90
b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAg
ICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIERFQ0xBUkVf
SU5GTzsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FzeW5jR2VuZXJhdG9y
UHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
QXN5bmNHZW5lcmF0b3JQcm90b3R5cGUuaAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQXN5bmNHZW5lcmF0b3JQcm90b3R5cGUuaAkod29ya2luZyBj
b3B5KQpAQCAtNDEsNyArNDEsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBz
dWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJT
UEFDRV9TSEFSQUJMRShBc3luY0dlbmVyYXRvclByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJl
dHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVj
dFNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIEFzeW5jR2VuZXJhdG9yUHJvdG90eXBlKiBj
cmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSogc3RydWN0dXJlKQpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXN5bmNJdGVyYXRvclByb3RvdHlwZS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FzeW5jSXRlcmF0
b3JQcm90b3R5cGUuaAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQXN5bmNJdGVyYXRvclByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw3
ICszOSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZN
JiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxF
KEFzeW5jSXRlcmF0b3JQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWlu
T2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAg
IH0KIAogICAgIHN0YXRpYyBBc3luY0l0ZXJhdG9yUHJvdG90eXBlKiBjcmVhdGUoVk0mIHZtLCBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0F0b21pY3NPYmplY3QuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BdG9taWNzT2JqZWN0LmgJKHJldmlz
aW9uIDI4NjA5NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0F0b21pY3NPYmpl
Y3QuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTYtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTYtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM3LDcgKzM3LDcgQEAgcHVibGljOgogICAgIHN0YXRp
YyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElD
X0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoQXRvbWljc09iamVjdCwgQmFzZSk7Ci0gICAg
ICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFp
bk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIAogICAgIHN0YXRpYyBBdG9taWNzT2JqZWN0KiBj
cmVhdGUoVk0mLCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSopOwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQmlnSW50UHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQmlnSW50UHJvdG90eXBlLmgJKHJldmlzaW9uIDI4
NjA5NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0JpZ0ludFByb3RvdHlwZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC0zOSw3ICszOSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNv
U3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NF
UlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEJpZ0ludFByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAg
IHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9i
amVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIEJpZ0ludFByb3RvdHlwZSogY3JlYXRl
KFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9CcmFuZGVkU3RydWN0dXJl
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQnJhbmRlZFN0
cnVjdHVyZS5oCShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9CcmFuZGVkU3RydWN0dXJlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ3LDcgKzQ3LDcgQEAg
cHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlLCBTdWJzcGFjZUFjY2Vzcz4K
ICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7Ci0gICAg
ICAgIHJldHVybiAmdm0uYnJhbmRlZFN0cnVjdHVyZVNwYWNlOworICAgICAgICByZXR1cm4gJnZt
LmJyYW5kZWRTdHJ1Y3R1cmVTcGFjZSgpOwogICAgIH0KIAogICAgIEFMV0FZU19JTkxJTkUgYm9v
bCBjaGVja0JyYW5kKFN5bWJvbCogYnJhbmQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9CdXR0ZXJmbHlJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQnV0dGVyZmx5SW5saW5lcy5oCShyZXZpc2lvbiAyODYwOTUpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9CdXR0ZXJmbHlJbmxpbmVzLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTc3LDcgKzc3LDcgQEAgQUxXQVlTX0lOTElORSB1bnNpZ25lZCBCdXR0ZXJmbHk6
Om9wdGltYQogaW5saW5lIEJ1dHRlcmZseSogQnV0dGVyZmx5Ojp0cnlDcmVhdGVVbmluaXRpYWxp
emVkKFZNJiB2bSwgSlNPYmplY3QqLCBzaXplX3QgcHJlQ2FwYWNpdHksIHNpemVfdCBwcm9wZXJ0
eUNhcGFjaXR5LCBib29sIGhhc0luZGV4aW5nSGVhZGVyLCBzaXplX3QgaW5kZXhpbmdQYXlsb2Fk
U2l6ZUluQnl0ZXMsIEdDRGVmZXJyYWxDb250ZXh0KiBkZWZlcnJhbENvbnRleHQpCiB7CiAgICAg
c2l6ZV90IHNpemUgPSB0b3RhbFNpemUocHJlQ2FwYWNpdHksIHByb3BlcnR5Q2FwYWNpdHksIGhh
c0luZGV4aW5nSGVhZGVyLCBpbmRleGluZ1BheWxvYWRTaXplSW5CeXRlcyk7Ci0gICAgdm9pZCog
YmFzZSA9IHZtLmpzVmFsdWVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlLmFsbG9jYXRlTm9uVmlydHVh
bCh2bSwgc2l6ZSwgZGVmZXJyYWxDb250ZXh0LCBBbGxvY2F0aW9uRmFpbHVyZU1vZGU6OlJldHVy
bk51bGwpOworICAgIHZvaWQqIGJhc2UgPSB2bS5qc1ZhbHVlR2lnYWNhZ2VBdXhpbGlhcnlTcGFj
ZSgpLmFsbG9jYXRlTm9uVmlydHVhbCh2bSwgc2l6ZSwgZGVmZXJyYWxDb250ZXh0LCBBbGxvY2F0
aW9uRmFpbHVyZU1vZGU6OlJldHVybk51bGwpOwogICAgIGlmIChVTkxJS0VMWSghYmFzZSkpCiAg
ICAgICAgIHJldHVybiBudWxscHRyOwogCkBAIC04OSw3ICs4OSw3IEBAIGlubGluZSBCdXR0ZXJm
bHkqIEJ1dHRlcmZseTo6dHJ5Q3JlYXRlVW4KIGlubGluZSBCdXR0ZXJmbHkqIEJ1dHRlcmZseTo6
Y3JlYXRlVW5pbml0aWFsaXplZChWTSYgdm0sIEpTT2JqZWN0Kiwgc2l6ZV90IHByZUNhcGFjaXR5
LCBzaXplX3QgcHJvcGVydHlDYXBhY2l0eSwgYm9vbCBoYXNJbmRleGluZ0hlYWRlciwgc2l6ZV90
IGluZGV4aW5nUGF5bG9hZFNpemVJbkJ5dGVzKQogewogICAgIHNpemVfdCBzaXplID0gdG90YWxT
aXplKHByZUNhcGFjaXR5LCBwcm9wZXJ0eUNhcGFjaXR5LCBoYXNJbmRleGluZ0hlYWRlciwgaW5k
ZXhpbmdQYXlsb2FkU2l6ZUluQnl0ZXMpOwotICAgIHZvaWQqIGJhc2UgPSB2bS5qc1ZhbHVlR2ln
YWNhZ2VBdXhpbGlhcnlTcGFjZS5hbGxvY2F0ZU5vblZpcnR1YWwodm0sIHNpemUsIG51bGxwdHIs
IEFsbG9jYXRpb25GYWlsdXJlTW9kZTo6QXNzZXJ0KTsKKyAgICB2b2lkKiBiYXNlID0gdm0uanNW
YWx1ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UoKS5hbGxvY2F0ZU5vblZpcnR1YWwodm0sIHNpemUs
IG51bGxwdHIsIEFsbG9jYXRpb25GYWlsdXJlTW9kZTo6QXNzZXJ0KTsKICAgICBCdXR0ZXJmbHkq
IHJlc3VsdCA9IGZyb21CYXNlKGJhc2UsIHByZUNhcGFjaXR5LCBwcm9wZXJ0eUNhcGFjaXR5KTsK
IAogICAgIHJldHVybiByZXN1bHQ7CkBAIC05OCw3ICs5OCw3IEBAIGlubGluZSBCdXR0ZXJmbHkq
IEJ1dHRlcmZseTo6Y3JlYXRlVW5pbmkKIGlubGluZSBCdXR0ZXJmbHkqIEJ1dHRlcmZseTo6dHJ5
Q3JlYXRlKFZNJiB2bSwgSlNPYmplY3QqLCBzaXplX3QgcHJlQ2FwYWNpdHksIHNpemVfdCBwcm9w
ZXJ0eUNhcGFjaXR5LCBib29sIGhhc0luZGV4aW5nSGVhZGVyLCBjb25zdCBJbmRleGluZ0hlYWRl
ciYgaW5kZXhpbmdIZWFkZXIsIHNpemVfdCBpbmRleGluZ1BheWxvYWRTaXplSW5CeXRlcykKIHsK
ICAgICBzaXplX3Qgc2l6ZSA9IHRvdGFsU2l6ZShwcmVDYXBhY2l0eSwgcHJvcGVydHlDYXBhY2l0
eSwgaGFzSW5kZXhpbmdIZWFkZXIsIGluZGV4aW5nUGF5bG9hZFNpemVJbkJ5dGVzKTsKLSAgICB2
b2lkKiBiYXNlID0gdm0uanNWYWx1ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UuYWxsb2NhdGVOb25W
aXJ0dWFsKHZtLCBzaXplLCBudWxscHRyLCBBbGxvY2F0aW9uRmFpbHVyZU1vZGU6OlJldHVybk51
bGwpOworICAgIHZvaWQqIGJhc2UgPSB2bS5qc1ZhbHVlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZSgp
LmFsbG9jYXRlTm9uVmlydHVhbCh2bSwgc2l6ZSwgbnVsbHB0ciwgQWxsb2NhdGlvbkZhaWx1cmVN
b2RlOjpSZXR1cm5OdWxsKTsKICAgICBpZiAoIWJhc2UpCiAgICAgICAgIHJldHVybiBudWxscHRy
OwogICAgIEJ1dHRlcmZseSogcmVzdWx0ID0gZnJvbUJhc2UoYmFzZSwgcHJlQ2FwYWNpdHksIHBy
b3BlcnR5Q2FwYWNpdHkpOwpAQCAtMTc0LDcgKzE3NCw3IEBAIGlubGluZSBCdXR0ZXJmbHkqIEJ1
dHRlcmZseTo6Z3Jvd0FycmF5UmkKICAgICB2b2lkKiB0aGVCYXNlID0gYmFzZSgwLCBwcm9wZXJ0
eUNhcGFjaXR5KTsKICAgICBzaXplX3Qgb2xkU2l6ZSA9IHRvdGFsU2l6ZSgwLCBwcm9wZXJ0eUNh
cGFjaXR5LCBoYWRJbmRleGluZ0hlYWRlciwgb2xkSW5kZXhpbmdQYXlsb2FkU2l6ZUluQnl0ZXMp
OwogICAgIHNpemVfdCBuZXdTaXplID0gdG90YWxTaXplKDAsIHByb3BlcnR5Q2FwYWNpdHksIHRy
dWUsIG5ld0luZGV4aW5nUGF5bG9hZFNpemVJbkJ5dGVzKTsKLSAgICB2b2lkKiBuZXdCYXNlID0g
dm0uanNWYWx1ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UuYWxsb2NhdGVOb25WaXJ0dWFsKHZtLCBu
ZXdTaXplLCBudWxscHRyLCBBbGxvY2F0aW9uRmFpbHVyZU1vZGU6OlJldHVybk51bGwpOworICAg
IHZvaWQqIG5ld0Jhc2UgPSB2bS5qc1ZhbHVlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZSgpLmFsbG9j
YXRlTm9uVmlydHVhbCh2bSwgbmV3U2l6ZSwgbnVsbHB0ciwgQWxsb2NhdGlvbkZhaWx1cmVNb2Rl
OjpSZXR1cm5OdWxsKTsKICAgICBpZiAoIW5ld0Jhc2UpCiAgICAgICAgIHJldHVybiBudWxscHRy
OwogICAgIC8vIEZJWE1FOiBUaGlzIHByb2JhYmx5IHNob3VsZG4ndCBiZSBhIG1lbWNweS4KQEAg
LTIxMSwxMyArMjExLDEzIEBAIGlubGluZSBCdXR0ZXJmbHkqIEJ1dHRlcmZseTo6cmVhbGxvY0Fy
cmEKICAgICAvLyBPYmplY3RzIHdpdGggbm8gcHJvcGVydGllcyBhcmUgY29tbW9uIGluIGFycmF5
cywgYW5kIHdlIGFyZSBmb2N1c2luZyBvbiB2ZXJ5IGxhcmdlIGFycmF5IGNyYWZ0ZWQgYnkgcmVw
ZWF0aW5nIEFycmF5I3B1c2gsIHNvLi4uIHRoYXQncyBmaW5lIQogICAgIGJvb2wgY2FuUmVhbGxv
YyA9ICFwcm9wZXJ0eUNhcGFjaXR5ICYmICF2bS5oZWFwLm11dGF0b3JTaG91bGRCZUZlbmNlZCgp
ICYmIGJpdHdpc2VfY2FzdDxIZWFwQ2VsbCo+KHRoZUJhc2UpLT5pc1ByZWNpc2VBbGxvY2F0aW9u
KCk7CiAgICAgaWYgKGNhblJlYWxsb2MpIHsKLSAgICAgICAgdm9pZCogbmV3QmFzZSA9IHZtLmpz
VmFsdWVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlLnJlYWxsb2NhdGVQcmVjaXNlQWxsb2NhdGlvbk5v
blZpcnR1YWwodm0sIGJpdHdpc2VfY2FzdDxIZWFwQ2VsbCo+KHRoZUJhc2UpLCBuZXdTaXplLCAm
ZGVmZXJyYWxDb250ZXh0LCBBbGxvY2F0aW9uRmFpbHVyZU1vZGU6OlJldHVybk51bGwpOworICAg
ICAgICB2b2lkKiBuZXdCYXNlID0gdm0uanNWYWx1ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UoKS5y
ZWFsbG9jYXRlUHJlY2lzZUFsbG9jYXRpb25Ob25WaXJ0dWFsKHZtLCBiaXR3aXNlX2Nhc3Q8SGVh
cENlbGwqPih0aGVCYXNlKSwgbmV3U2l6ZSwgJmRlZmVycmFsQ29udGV4dCwgQWxsb2NhdGlvbkZh
aWx1cmVNb2RlOjpSZXR1cm5OdWxsKTsKICAgICAgICAgaWYgKCFuZXdCYXNlKQogICAgICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIHJldHVybiBmcm9tQmFzZShuZXdCYXNlLCAwLCBw
cm9wZXJ0eUNhcGFjaXR5KTsKICAgICB9CiAKLSAgICB2b2lkKiBuZXdCYXNlID0gdm0uanNWYWx1
ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UuYWxsb2NhdGVOb25WaXJ0dWFsKHZtLCBuZXdTaXplLCAm
ZGVmZXJyYWxDb250ZXh0LCBBbGxvY2F0aW9uRmFpbHVyZU1vZGU6OlJldHVybk51bGwpOworICAg
IHZvaWQqIG5ld0Jhc2UgPSB2bS5qc1ZhbHVlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZSgpLmFsbG9j
YXRlTm9uVmlydHVhbCh2bSwgbmV3U2l6ZSwgJmRlZmVycmFsQ29udGV4dCwgQWxsb2NhdGlvbkZh
aWx1cmVNb2RlOjpSZXR1cm5OdWxsKTsKICAgICBpZiAoIW5ld0Jhc2UpCiAgICAgICAgIHJldHVy
biBudWxscHRyOwogICAgIGdjU2FmZU1lbWNweShzdGF0aWNfY2FzdDxKU1ZhbHVlKj4obmV3QmFz
ZSksIHN0YXRpY19jYXN0PEpTVmFsdWUqPih0aGVCYXNlKSwgb2xkU2l6ZSk7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWNoZWRUeXBlcy5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NhY2hlZFR5cGVzLmgJKHJldmlzaW9uIDI4NjA5
NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NhY2hlZFR5cGVzLmgJKHdvcmtp
bmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE4LTIwMTkg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE4LTIw
MjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCkBAIC0zOSw2ICszOSw3IEBAIGNsYXNzIENhY2hlZEJ5dGVjb2RlOwogY2xhc3Mg
U291cmNlQ29kZUtleTsKIGNsYXNzIFVubGlua2VkQ29kZUJsb2NrOwogY2xhc3MgVW5saW5rZWRG
dW5jdGlvbkNvZGVCbG9jazsKK2NsYXNzIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOwogCiBl
bnVtIGNsYXNzIFNvdXJjZUNvZGVUeXBlOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9DbG9uZWRBcmd1bWVudHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9DbG9uZWRBcmd1bWVudHMuaAkocmV2aXNpb24gMjg2MDk1KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2xvbmVkQXJndW1lbnRzLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTQ2LDcgKzQ2LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vi
c3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAgICAgc3RhdGljX2Fzc2VydCghQ2VsbFR5cGU6
Om5lZWRzRGVzdHJ1Y3Rpb24sICIiKTsKLSAgICAgICAgcmV0dXJuICZ2bS5jbG9uZWRBcmd1bWVu
dHNTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5jbG9uZWRBcmd1bWVudHNTcGFjZSgpOwogICAg
IH0KICAgICAKIHByaXZhdGU6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9D
b25zb2xlT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQ29uc29sZU9iamVjdC5oCShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Db25zb2xlT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTM3LDcgKzM3
LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZt
KQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoQ29u
c29sZU9iamVjdCwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsK
KyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAgc3Rh
dGljIENvbnNvbGVPYmplY3QqIGNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQ3VzdG9tR2V0dGVyU2V0dGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQ3VzdG9tR2V0dGVyU2V0dGVyLmgJKHJldmlzaW9uIDI4NjA5NSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0N1c3RvbUdldHRlclNldHRlci5oCSh3
b3JraW5nIGNvcHkpCkBAIC00Myw3ICs0Myw3IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBDZWxsVHlwZSwgU3Vic3BhY2VBY2Nlc3M+CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBz
dWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewotICAgICAgICByZXR1cm4gJnZtLmN1c3RvbUdldHRl
clNldHRlclNwYWNlOworICAgICAgICByZXR1cm4gJnZtLmN1c3RvbUdldHRlclNldHRlclNwYWNl
KCk7CiAgICAgfQogCiAgICAgc3RhdGljIEN1c3RvbUdldHRlclNldHRlciogY3JlYXRlKFZNJiB2
bSwgQ3VzdG9tR2V0dGVyIGN1c3RvbUdldHRlciwgQ3VzdG9tU2V0dGVyIGN1c3RvbVNldHRlcikK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RPTUF0dHJpYnV0ZUdldHRlclNl
dHRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RPTUF0
dHJpYnV0ZUdldHRlclNldHRlci5oCShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9ET01BdHRyaWJ1dGVHZXR0ZXJTZXR0ZXIuaAkod29ya2luZyBjb3B5
KQpAQCAtNDMsNyArNDMsNyBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5
cGUsIFN1YnNwYWNlQWNjZXNzPgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3Io
Vk0mIHZtKQogICAgIHsKLSAgICAgICAgcmV0dXJuICZ2bS5kb21BdHRyaWJ1dGVHZXR0ZXJTZXR0
ZXJTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5kb21BdHRyaWJ1dGVHZXR0ZXJTZXR0ZXJTcGFj
ZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBET01BdHRyaWJ1dGVHZXR0ZXJTZXR0ZXIqIGNyZWF0
ZShWTSYgdm0sIEN1c3RvbUdldHRlciBjdXN0b21HZXR0ZXIsIEN1c3RvbVNldHRlciBjdXN0b21T
ZXR0ZXIsIERPTUF0dHJpYnV0ZUFubm90YXRpb24gZG9tQXR0cmlidXRlKQpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUluc3RhbmNlLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUluc3RhbmNlLmgJKHJldmlzaW9uIDI4NjA5
NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVJbnN0YW5jZS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zNyw3ICszNyw3IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBDZWxsVHlwZSwgU3Vic3BhY2VBY2Nlc3MgbW9kZT4KICAgICBzdGF0aWMgSXNvU3Vic3BhY2Uq
IHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7Ci0gICAgICAgIHJldHVybiAmdm0uZGF0ZUluc3Rh
bmNlU3BhY2U7CisgICAgICAgIHJldHVybiAmdm0uZGF0ZUluc3RhbmNlU3BhY2UoKTsKICAgICB9
CiAKICAgICBzdGF0aWMgRGF0ZUluc3RhbmNlKiBjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSwgZG91YmxlIGRhdGUpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9EYXRlUHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvRGF0ZVByb3RvdHlwZS5oCShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9EYXRlUHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM1LDcg
KzM1LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0m
IHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUo
RGF0ZVByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFj
ZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAg
c3RhdGljIERhdGVQcm90b3R5cGUqIGNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvRGlyZWN0QXJndW1lbnRzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvRGlyZWN0QXJndW1lbnRzLmgJKHJldmlzaW9uIDI4NjA5NSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RpcmVjdEFyZ3VtZW50cy5oCSh3b3JraW5n
IGNvcHkpCkBAIC01MCw3ICs1MCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgQ29tcGxldGVTdWJz
cGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAgICAgc3RhdGljX2Fzc2VydCgh
Q2VsbFR5cGU6Om5lZWRzRGVzdHJ1Y3Rpb24sICIiKTsKLSAgICAgICAgcmV0dXJuICZ2bS52YXJp
YWJsZVNpemVkQ2VsbFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnZhcmlhYmxlU2l6ZWRDZWxs
U3BhY2UoKTsKICAgICB9CiAKICAgICAvLyBDcmVhdGVzIGFuIGFyZ3VtZW50cyBvYmplY3QgYnV0
IGxlYXZlcyBpdCB1bmluaXRpYWxpemVkLiBUaGlzIGlzIGRhbmdlcm91cyBpZiB3ZSBHQyByaWdo
dApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JQcm90b3R5cGUuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvclByb3RvdHlw
ZS5oCShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9F
cnJvclByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00NSw3ICs0NSw3IEBAIHB1YmxpYzoK
ICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAg
ICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEVycm9yUHJvdG90eXBlQmFz
ZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAg
cmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAgREVDTEFSRV9JTkZP
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9uLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9uLmgJKHJldmlz
aW9uIDI4NjA5NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvbi5o
CSh3b3JraW5nIGNvcHkpCkBAIC00MCw3ICs0MCw3IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBDZWxsVHlwZSwgU3Vic3BhY2VBY2Nlc3MgbW9kZT4KICAgICBzdGF0aWMgSXNvU3Vi
c3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7Ci0gICAgICAgIHJldHVybiAmdm0uZXhj
ZXB0aW9uU3BhY2U7CisgICAgICAgIHJldHVybiAmdm0uZXhjZXB0aW9uU3BhY2UoKTsKICAgICB9
CiAKICAgICBlbnVtIFN0YWNrQ2FwdHVyZUFjdGlvbiB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9FeGNlcHRpb25TY29wZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9uU2NvcGUuY3BwCShyZXZpc2lvbiAyODYwOTUp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNlcHRpb25TY29wZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE2LTIw
MTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE2
LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GaW5hbGl6
YXRpb25SZWdpc3RyeVByb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0ZpbmFsaXphdGlvblJlZ2lzdHJ5UHJvdG90eXBlLmgJKHJldmlzaW9uIDI4
NjA5NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ZpbmFsaXphdGlvblJlZ2lz
dHJ5UHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM3LDcgKzM3LDcgQEAgcHVibGljOgog
ICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAg
ICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoRmluYWxpemF0aW9uUmVnaXN0
cnlQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7
CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIHN0
YXRpYyBGaW5hbGl6YXRpb25SZWdpc3RyeVByb3RvdHlwZSogY3JlYXRlKFZNJiB2bSwgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkV4ZWN1dGFibGUuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkV4ZWN1dGFibGUuaAko
cmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rp
b25FeGVjdXRhYmxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDcgKzQ2LDcgQEAgcHVibGljOgog
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlLCBTdWJzcGFjZUFjY2Vzcz4KICAgICBzdGF0
aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7Ci0gICAgICAgIHJldHVy
biAmdm0uZnVuY3Rpb25FeGVjdXRhYmxlU3BhY2Uuc3BhY2U7CisgICAgICAgIHJldHVybiAmdm0u
ZnVuY3Rpb25FeGVjdXRhYmxlU3BhY2UoKS5zcGFjZTsKICAgICB9CiAKICAgICBzdGF0aWMgRnVu
Y3Rpb25FeGVjdXRhYmxlKiBjcmVhdGUoVk0mIHZtLCBTY3JpcHRFeGVjdXRhYmxlKiB0b3BMZXZl
bEV4ZWN1dGFibGUsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgVW5saW5rZWRGdW5jdGlvbkV4
ZWN1dGFibGUqIHVubGlua2VkRXhlY3V0YWJsZSwgSW50cmluc2ljIGludHJpbnNpYywgYm9vbCBp
c0luc2lkZU9yZGluYXJ5RnVuY3Rpb24pCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9HZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmgJKHJldmlz
aW9uIDI4NjA5NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvckZ1
bmN0aW9uUHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQwLDcgKzQwLDcgQEAgcHVibGlj
OgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAg
ICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoR2VuZXJhdG9yRnVuY3Rp
b25Qcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7
CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIHN0
YXRpYyBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSogY3JlYXRlKFZNJiB2bSwgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0
b3JQcm90b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9HZW5lcmF0b3JQcm90b3R5cGUuaAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yUHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAg
LTQxLDcgKzQxLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VG
b3IoVk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hB
UkFCTEUoR2VuZXJhdG9yUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFp
bk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAg
ICB9CiAKICAgICBzdGF0aWMgR2VuZXJhdG9yUHJvdG90eXBlKiBjcmVhdGUoVk0mIHZtLCBKU0ds
b2JhbE9iamVjdCosIFN0cnVjdHVyZSogc3RydWN0dXJlKQpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvR2V0dGVyU2V0dGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvR2V0dGVyU2V0dGVyLmgJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dldHRlclNldHRlci5oCSh3b3JraW5nIGNvcHkp
CkBAIC01OSw3ICs1OSw3IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlw
ZSwgU3Vic3BhY2VBY2Nlc3M+CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihW
TSYgdm0pCiAgICAgewotICAgICAgICByZXR1cm4gJnZtLmdldHRlclNldHRlclNwYWNlOworICAg
ICAgICByZXR1cm4gJnZtLmdldHRlclNldHRlclNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGlj
IEdldHRlclNldHRlciogY3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgSlNPYmplY3QqIGdldHRlciwgSlNPYmplY3QqIHNldHRlcikKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0hhc2hNYXBJbXBsLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSGFzaE1hcEltcGwuaAkocmV2aXNpb24gMjg2MDk1KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSGFzaE1hcEltcGwuaAkod29ya2luZyBjb3B5
KQpAQCAtMjEzLDcgKzIxMyw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICAgICAgc2l6ZV90IGFsbG9jYXRpb25TaXpl
ID0gSGFzaE1hcEJ1ZmZlcjo6YWxsb2NhdGlvblNpemUoY2FwYWNpdHkpOwotICAgICAgICB2b2lk
KiBkYXRhID0gdm0uanNWYWx1ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UuYWxsb2NhdGVOb25WaXJ0
dWFsKHZtLCBhbGxvY2F0aW9uU2l6ZSwgbnVsbHB0ciwgQWxsb2NhdGlvbkZhaWx1cmVNb2RlOjpS
ZXR1cm5OdWxsKTsKKyAgICAgICAgdm9pZCogZGF0YSA9IHZtLmpzVmFsdWVHaWdhY2FnZUF1eGls
aWFyeVNwYWNlKCkuYWxsb2NhdGVOb25WaXJ0dWFsKHZtLCBhbGxvY2F0aW9uU2l6ZSwgbnVsbHB0
ciwgQWxsb2NhdGlvbkZhaWx1cmVNb2RlOjpSZXR1cm5OdWxsKTsKICAgICAgICAgaWYgKCFkYXRh
KSB7CiAgICAgICAgICAgICB0aHJvd091dE9mTWVtb3J5RXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29w
ZSk7CiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0ludGVybmFsRnVuY3Rpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9JbnRlcm5hbEZ1bmN0aW9uLmgJKHJldmlzaW9uIDI4NjA5NSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGVybmFsRnVuY3Rpb24uaAkod29y
a2luZyBjb3B5KQpAQCAtNDEsNyArNDEsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIElzb1N1YnNw
YWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewogICAgICAgICBzdGF0aWNfYXNzZXJ0KHNp
emVvZihDZWxsVHlwZSkgPT0gc2l6ZW9mKEludGVybmFsRnVuY3Rpb24pLCAiSW50ZXJuYWxGdW5j
dGlvbiBzdWJjbGFzc2VzIHRoYXQgYWRkIGZpZWxkcyBuZWVkIHRvIG92ZXJyaWRlIHN1YnNwYWNl
Rm9yPD4oKSIpOwotICAgICAgICByZXR1cm4gJnZtLmludGVybmFsRnVuY3Rpb25TcGFjZTsKKyAg
ICAgICAgcmV0dXJuICZ2bS5pbnRlcm5hbEZ1bmN0aW9uU3BhY2UoKTsKICAgICB9CiAKICAgICBE
RUNMQVJFX0VYUE9SVF9JTkZPOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SW50bENvbGxhdG9yUHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSW50bENvbGxhdG9yUHJvdG90eXBlLmgJKHJldmlzaW9uIDI4NjA5NSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxDb2xsYXRvclByb3RvdHlwZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxNSBB
bmR5IFZhbldhZ29uZXIgKGFuZHlAdmFud2Fnb25lci5mYW1pbHkpCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDE5LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCkBAIC0zOSw3ICszOSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNv
U3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NF
UlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEludGxDb2xsYXRvclByb3RvdHlwZSwgQmFzZSk7Ci0g
ICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5w
bGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIEludGxDb2xsYXRvclByb3Rv
dHlwZSogY3JlYXRlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqKTsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEYXRlVGlt
ZUZvcm1hdFByb3RvdHlwZS5oCShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUuaAkod29ya2luZyBjb3B5
KQpAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQW5keSBWYW5XYWdv
bmVyIChhbmR5QHZhbndhZ29uZXIuZmFtaWx5KQotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxOS0yMDIxIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwpAQCAtMzksNyArMzksNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBz
dWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJT
UEFDRV9TSEFSQUJMRShJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUsIEJhc2UpOwotICAgICAg
ICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5P
YmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBJbnRsRGF0ZVRpbWVGb3JtYXRQcm90
b3R5cGUqIGNyZWF0ZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKik7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGlzcGxheU5hbWVzUHJvdG90eXBlLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERpc3BsYXlO
YW1lc1Byb3RvdHlwZS5oCShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9JbnRsRGlzcGxheU5hbWVzUHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAg
LTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAyMC0yMDIxIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzgs
NyArMzgsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihW
TSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJM
RShJbnRsRGlzcGxheU5hbWVzUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5w
bGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsK
ICAgICB9CiAKICAgICBzdGF0aWMgSW50bERpc3BsYXlOYW1lc1Byb3RvdHlwZSogY3JlYXRlKFZN
JiwgU3RydWN0dXJlKik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRs
TGlzdEZvcm1hdFByb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0ludGxMaXN0Rm9ybWF0UHJvdG90eXBlLmgJKHJldmlzaW9uIDI4NjA5NSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxMaXN0Rm9ybWF0UHJvdG90eXBlLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDIw
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAyMC0y
MDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwpAQCAtMzgsNyArMzgsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIElzb1N1YnNw
YWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lT
T19TVUJTUEFDRV9TSEFSQUJMRShJbnRsTGlzdEZvcm1hdFByb3RvdHlwZSwgQmFzZSk7Ci0gICAg
ICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFp
bk9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIEludGxMaXN0Rm9ybWF0UHJvdG90
eXBlKiBjcmVhdGUoVk0mLCBTdHJ1Y3R1cmUqKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0ludGxMb2NhbGVQcm90b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTG9jYWxlUHJvdG90eXBlLmgJKHJldmlzaW9uIDI4NjA5
NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxMb2NhbGVQcm90b3R5cGUu
aAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIw
MjAgU29ueSBJbnRlcmFjdGl2ZSBFbnRlcnRhaW5tZW50IEluYy4KKyAqIENvcHlyaWdodCAoQykg
MjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTM4LDcgKzM5LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJc29TdWJz
cGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9J
U09fU1VCU1BBQ0VfU0hBUkFCTEUoSW50bExvY2FsZVByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAg
IHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9i
amVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIEludGxMb2NhbGVQcm90b3R5cGUqIGNy
ZWF0ZShWTSYsIFN0cnVjdHVyZSopOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSW50bE51bWJlckZvcm1hdFByb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUuaAkocmV2aXNpb24g
Mjg2MDk1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1h
dFByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNiBAQAogLyoKICAqIENvcHly
aWdodCAoQykgMjAxNSBBbmR5IFZhbldhZ29uZXIgKGFuZHlAdmFud2Fnb25lci5mYW1pbHkpCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDE5LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zOSw3ICszOSw3IEBAIHB1YmxpYzoK
ICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAg
ICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEludGxOdW1iZXJGb3JtYXRQ
cm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7Cisg
ICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRp
YyBJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlKiBjcmVhdGUoVk0mLCBKU0dsb2JhbE9iamVjdCos
IFN0cnVjdHVyZSopOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE9i
amVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxP
YmplY3QuaAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSW50bE9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNiBAQAogLyoKICAqIENv
cHlyaWdodCAoQykgMjAxNSBBbmR5IFZhbldhZ29uZXIgKGFuZHlAdmFud2Fnb25lci5mYW1pbHkp
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTktMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTktMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMjAgU29ueSBJbnRlcmFjdGl2ZSBFbnRlcnRhaW5t
ZW50IEluYy4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKQEAgLTc2LDcgKzc2LDcgQEAgcHVibGljOgogICAg
IHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAgICAg
U1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSW50bE9iamVjdCwgQmFzZSk7Ci0g
ICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5w
bGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIEludGxPYmplY3QqIGNyZWF0
ZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKik7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9JbnRsUGx1cmFsUnVsZXNQcm90b3R5cGUuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsUGx1cmFsUnVsZXNQcm90b3R5cGUu
aAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50
bFBsdXJhbFJ1bGVzUHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw2IEBACiAv
KgogICogQ29weXJpZ2h0IChDKSAyMDE4IEFuZHkgVmFuV2Fnb25lciAoYW5keUB2YW53YWdvbmVy
LmZhbWlseSkKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTktMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM5LDcgKzM5LDcg
QEAgcHVibGljOgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQog
ICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSW50bFBs
dXJhbFJ1bGVzUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVj
dFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAK
ICAgICBzdGF0aWMgSW50bFBsdXJhbFJ1bGVzUHJvdG90eXBlKiBjcmVhdGUoVk0mLCBKU0dsb2Jh
bE9iamVjdCosIFN0cnVjdHVyZSopOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSW50bFJlbGF0aXZlVGltZUZvcm1hdFByb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxSZWxhdGl2ZVRpbWVGb3JtYXRQcm90b3R5cGUu
aAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50
bFJlbGF0aXZlVGltZUZvcm1hdFByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEs
NiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAyMCBTb255IEludGVyYWN0aXZlIEVudGVydGFp
bm1lbnQgSW5jLgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzgsNyArMzksNyBA
QCBwdWJsaWM6CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAg
ICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShJbnRsUmVs
YXRpdmVUaW1lRm9ybWF0UHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFp
bk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAg
ICB9CiAKICAgICBzdGF0aWMgSW50bFJlbGF0aXZlVGltZUZvcm1hdFByb3RvdHlwZSogY3JlYXRl
KFZNJiwgU3RydWN0dXJlKik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9J
bnRsU2VnbWVudEl0ZXJhdG9yUHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSW50bFNlZ21lbnRJdGVyYXRvclByb3RvdHlwZS5oCShyZXZpc2lv
biAyODYwOTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsU2VnbWVudEl0
ZXJhdG9yUHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICog
Q29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAyMC0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
CiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzgsNyArMzgsNyBAQCBwdWJsaWM6CiAg
ICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewogICAgICAg
ICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShJbnRsU2VnbWVudEl0ZXJhdG9y
UHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOwor
ICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0
aWMgSW50bFNlZ21lbnRJdGVyYXRvclByb3RvdHlwZSogY3JlYXRlKFZNJiwgU3RydWN0dXJlKik7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsU2VnbWVudGVyUHJvdG90
eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFNl
Z21lbnRlclByb3RvdHlwZS5oCShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9JbnRsU2VnbWVudGVyUHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAg
LTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAyMC0yMDIxIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzgs
NyArMzgsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihW
TSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJM
RShJbnRsU2VnbWVudGVyUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFp
bk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAg
ICB9CiAKICAgICBzdGF0aWMgSW50bFNlZ21lbnRlclByb3RvdHlwZSogY3JlYXRlKFZNJiwgU3Ry
dWN0dXJlKik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsU2VnbWVu
dHNQcm90b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9JbnRsU2VnbWVudHNQcm90b3R5cGUuaAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFNlZ21lbnRzUHJvdG90eXBlLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAyMC0yMDIxIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpA
QCAtMzgsNyArMzgsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFj
ZUZvcihWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9T
SEFSQUJMRShJbnRsU2VnbWVudHNQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZt
LnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgp
OwogICAgIH0KIAogICAgIHN0YXRpYyBJbnRsU2VnbWVudHNQcm90b3R5cGUqIGNyZWF0ZShWTSYs
IEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9JdGVyYXRvclByb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0l0ZXJhdG9yUHJvdG90eXBlLmgJKHJldmlzaW9uIDI4NjA5NSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0l0ZXJhdG9yUHJvdG90eXBlLmgJKHdv
cmtpbmcgY29weSkKQEAgLTM5LDcgKzM5LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJc29TdWJz
cGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9J
U09fU1VCU1BBQ0VfU0hBUkFCTEUoSXRlcmF0b3JQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICBy
ZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmpl
Y3RTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBJdGVyYXRvclByb3RvdHlwZSogY3JlYXRl
KFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmNwcAkocmV2
aXNpb24gMjg2MDk1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTU2LDcgKzU2LDcgQEAgSlNBcnJheSogSlNBcnJheTo6dHJ5
Q3JlYXRlVW5pbml0aWFsaXplZAogICAgICAgICAgICAgfHwgaGFzQ29udGlndW91cyhpbmRleGlu
Z1R5cGUpKTsKIAogICAgICAgICB1bnNpZ25lZCB2ZWN0b3JMZW5ndGggPSBCdXR0ZXJmbHk6Om9w
dGltYWxDb250aWd1b3VzVmVjdG9yTGVuZ3RoKHN0cnVjdHVyZSwgaW5pdGlhbExlbmd0aCk7Ci0g
ICAgICAgIHZvaWQqIHRlbXAgPSB2bS5qc1ZhbHVlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZS5hbGxv
Y2F0ZU5vblZpcnR1YWwoCisgICAgICAgIHZvaWQqIHRlbXAgPSB2bS5qc1ZhbHVlR2lnYWNhZ2VB
dXhpbGlhcnlTcGFjZSgpLmFsbG9jYXRlTm9uVmlydHVhbCgKICAgICAgICAgICAgIHZtLAogICAg
ICAgICAgICAgQnV0dGVyZmx5Ojp0b3RhbFNpemUoMCwgb3V0T2ZMaW5lU3RvcmFnZSwgdHJ1ZSwg
dmVjdG9yTGVuZ3RoICogc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKSksCiAgICAgICAgICAgICBkZWZl
cnJhbENvbnRleHQsIEFsbG9jYXRpb25GYWlsdXJlTW9kZTo6UmV0dXJuTnVsbCk7CkBAIC03OCw3
ICs3OCw3IEBAIEpTQXJyYXkqIEpTQXJyYXk6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQKICAgICAg
ICAgICAgIHx8IGluZGV4aW5nVHlwZSA9PSBBcnJheVdpdGhBcnJheVN0b3JhZ2UpOwogICAgICAg
ICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIGluZGV4QmlhcyA9IDA7CiAgICAgICAgIHVuc2ln
bmVkIHZlY3Rvckxlbmd0aCA9IEFycmF5U3RvcmFnZTo6b3B0aW1hbFZlY3Rvckxlbmd0aChpbmRl
eEJpYXMsIHN0cnVjdHVyZSwgaW5pdGlhbExlbmd0aCk7Ci0gICAgICAgIHZvaWQqIHRlbXAgPSB2
bS5qc1ZhbHVlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZS5hbGxvY2F0ZU5vblZpcnR1YWwoCisgICAg
ICAgIHZvaWQqIHRlbXAgPSB2bS5qc1ZhbHVlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZSgpLmFsbG9j
YXRlTm9uVmlydHVhbCgKICAgICAgICAgICAgIHZtLAogICAgICAgICAgICAgQnV0dGVyZmx5Ojp0
b3RhbFNpemUoaW5kZXhCaWFzLCBvdXRPZkxpbmVTdG9yYWdlLCB0cnVlLCBBcnJheVN0b3JhZ2U6
OnNpemVGb3IodmVjdG9yTGVuZ3RoKSksCiAgICAgICAgICAgICBkZWZlcnJhbENvbnRleHQsIEFs
bG9jYXRpb25GYWlsdXJlTW9kZTo6UmV0dXJuTnVsbCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0FycmF5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNBcnJheS5oCShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0FycmF5LmgJKHdvcmtpbmcgY29weSkKQEAgLTUxLDcgKzUxLDcg
QEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlLCBTdWJzcGFjZUFjY2Vz
cz4KICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7Ci0g
ICAgICAgIHJldHVybiAmdm0uYXJyYXlTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5hcnJheVNw
YWNlKCk7CiAgICAgfQogICAgICAgICAKIHByb3RlY3RlZDoKQEAgLTI0NCw3ICsyNDQsNyBAQCBp
bmxpbmUgSlNBcnJheSogSlNBcnJheTo6dHJ5Q3JlYXRlKFZNJiB2CiAgICAgICAgICAgICByZXR1
cm4gbnVsbHB0cjsKIAogICAgICAgICB1bnNpZ25lZCB2ZWN0b3JMZW5ndGggPSBCdXR0ZXJmbHk6
Om9wdGltYWxDb250aWd1b3VzVmVjdG9yTGVuZ3RoKHN0cnVjdHVyZSwgdmVjdG9yTGVuZ3RoSGlu
dCk7Ci0gICAgICAgIHZvaWQqIHRlbXAgPSB2bS5qc1ZhbHVlR2lnYWNhZ2VBdXhpbGlhcnlTcGFj
ZS5hbGxvY2F0ZU5vblZpcnR1YWwoCisgICAgICAgIHZvaWQqIHRlbXAgPSB2bS5qc1ZhbHVlR2ln
YWNhZ2VBdXhpbGlhcnlTcGFjZSgpLmFsbG9jYXRlTm9uVmlydHVhbCgKICAgICAgICAgICAgIHZt
LAogICAgICAgICAgICAgQnV0dGVyZmx5Ojp0b3RhbFNpemUoMCwgb3V0T2ZMaW5lU3RvcmFnZSwg
dHJ1ZSwgdmVjdG9yTGVuZ3RoICogc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKSksCiAgICAgICAgICAg
ICBudWxscHRyLCBBbGxvY2F0aW9uRmFpbHVyZU1vZGU6OlJldHVybk51bGwpOwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlclByb3RvdHlwZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJQcm90
b3R5cGUuaAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNBcnJheUJ1ZmZlclByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBA
QAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM3LDcgKzM3
LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZt
KQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNB
cnJheUJ1ZmZlclByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmpl
Y3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQog
CiAgICAgc3RhdGljIEpTQXJyYXlCdWZmZXJQcm90b3R5cGUqIGNyZWF0ZShWTSYsIEpTR2xvYmFs
T2JqZWN0KiwgU3RydWN0dXJlKiwgQXJyYXlCdWZmZXJTaGFyaW5nTW9kZSA9IEFycmF5QnVmZmVy
U2hhcmluZ01vZGU6OkRlZmF1bHQpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNBcnJheUJ1ZmZlclZpZXcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3LmNwcAkocmV2aXNpb24gMjg2MDk1KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlclZpZXcuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC02NCw3ICs2NCw3IEBAIEpTQXJyYXlCdWZmZXJWaWV3OjpDb25zdHJ1Y3Rp
b25Db250ZXh0OjoKICAgICAgICAgLy8gQXR0ZW1wdCBHQyBhbGxvY2F0aW9uLgogICAgICAgICB2
b2lkKiB0ZW1wOwogICAgICAgICBzaXplX3Qgc2l6ZSA9IHNpemVPZihsZW5ndGgsIGVsZW1lbnRT
aXplKTsKLSAgICAgICAgdGVtcCA9IHZtLnByaW1pdGl2ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2Uu
YWxsb2NhdGVOb25WaXJ0dWFsKHZtLCBzaXplLCBudWxscHRyLCBBbGxvY2F0aW9uRmFpbHVyZU1v
ZGU6OlJldHVybk51bGwpOworICAgICAgICB0ZW1wID0gdm0ucHJpbWl0aXZlR2lnYWNhZ2VBdXhp
bGlhcnlTcGFjZSgpLmFsbG9jYXRlTm9uVmlydHVhbCh2bSwgc2l6ZSwgbnVsbHB0ciwgQWxsb2Nh
dGlvbkZhaWx1cmVNb2RlOjpSZXR1cm5OdWxsKTsKICAgICAgICAgaWYgKCF0ZW1wKQogICAgICAg
ICAgICAgcmV0dXJuOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Jp
Z0ludC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNC
aWdJbnQuY3BwCShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0JpZ0ludC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExNyw3ICsxMTcsNyBAQCBpbmxp
bmUgSlNCaWdJbnQqIEpTQmlnSW50OjpjcmVhdGVXaXRoTGVuCiAgICAgfQogCiAgICAgQVNTRVJU
KGxlbmd0aCA8PSBtYXhMZW5ndGgpOwotICAgIHZvaWQqIGRhdGEgPSB2bS5wcmltaXRpdmVHaWdh
Y2FnZUF1eGlsaWFyeVNwYWNlLmFsbG9jYXRlTm9uVmlydHVhbCh2bSwgbGVuZ3RoICogc2l6ZW9m
KERpZ2l0KSwgbnVsbHB0ciwgQWxsb2NhdGlvbkZhaWx1cmVNb2RlOjpSZXR1cm5OdWxsKTsKKyAg
ICB2b2lkKiBkYXRhID0gdm0ucHJpbWl0aXZlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZSgpLmFsbG9j
YXRlTm9uVmlydHVhbCh2bSwgbGVuZ3RoICogc2l6ZW9mKERpZ2l0KSwgbnVsbHB0ciwgQWxsb2Nh
dGlvbkZhaWx1cmVNb2RlOjpSZXR1cm5OdWxsKTsKICAgICBpZiAoVU5MSUtFTFkoIWRhdGEpKSB7
CiAgICAgICAgIGlmIChudWxsT3JHbG9iYWxPYmplY3RGb3JPT00pIHsKICAgICAgICAgICAgIGF1
dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTQmlnSW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNCaWdJbnQuaAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCaWdJbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNTYsNyAr
NTYsNyBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUsIFN1YnNwYWNl
QWNjZXNzPgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAg
IHsKLSAgICAgICAgcmV0dXJuICZ2bS5iaWdJbnRTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5i
aWdJbnRTcGFjZSgpOwogICAgIH0KIAogICAgIGVudW0gY2xhc3MgSW5pdGlhbGl6YXRpb25UeXBl
IHsgTm9uZSwgV2l0aFplcm8gfTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTQ2FsbGVlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNDYWxsZWUuaAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNDYWxsZWUuaAkod29ya2luZyBjb3B5KQpAQCAtNTAsNyArNTAsNyBAQCBwdWJsaWM6
CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNzPgogICAgIHN0
YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKLSAgICAgICAgcmV0
dXJuICZ2bS5jYWxsZWVTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5jYWxsZWVTcGFjZSgpOwog
ICAgIH0KIAogICAgIHN0YXRpYyBKU0NhbGxlZSogY3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgSlNTY29wZSogc2NvcGUpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0RhdGFWaWV3UHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRhVmlld1Byb3RvdHlwZS5oCShyZXZpc2lvbiAy
ODYwOTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGFWaWV3UHJvdG90
eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChD
KSAyMDEzLTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDEzLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zOCw3ICszOCw3IEBAIHB1YmxpYzoKICAgICBzdGF0
aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJ
Q19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTRGF0YVZpZXdQcm90b3R5cGUsIEJhc2Up
OwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAm
dm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBKU0RhdGFWaWV3UHJv
dG90eXBlKiBjcmVhdGUoVk0mLCBTdHJ1Y3R1cmUqKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmgJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uaAkod29ya2luZyBjb3B5KQpAQCAtNjYs
NyArNjYsNyBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUsIFN1YnNw
YWNlQWNjZXNzPgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQog
ICAgIHsKLSAgICAgICAgcmV0dXJuICZ2bS5mdW5jdGlvblNwYWNlOworICAgICAgICByZXR1cm4g
JnZtLmZ1bmN0aW9uU3BhY2UoKTsKICAgICB9CiAgICAgCiAgICAgdHlwZWRlZiBKU0NhbGxlZSBC
YXNlOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRB
cnJheVZpZXdQcm90b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZS5oCShyZXZpc2lvbiAyODYw
OTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5
Vmlld1Byb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTMtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM4LDcgKzM4LDcgQEAgcHVibGljOgogICAg
IHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAgICAg
U1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNHZW5lcmljVHlwZWRBcnJheVZp
ZXdQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7
CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIHN0
YXRpYyBKU0dlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZSogY3JlYXRlKApJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbExleGlj
YWxFbnZpcm9ubWVudC5oCShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0dsb2JhbExleGljYWxFbnZpcm9ubWVudC5oCSh3b3JraW5nIGNvcHkpCkBA
IC0zOCw3ICszOCw3IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwg
U3Vic3BhY2VBY2Nlc3MgbW9kZT4KICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9y
KFZNJiB2bSkKICAgICB7Ci0gICAgICAgIHJldHVybiAmdm0uZ2xvYmFsTGV4aWNhbEVudmlyb25t
ZW50U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0uZ2xvYmFsTGV4aWNhbEVudmlyb25tZW50U3Bh
Y2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgSlNHbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQqIGNy
ZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBKU1Njb3BlKiBwYXJlbnRTY29wZSkK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTSW1tdXRhYmxlQnV0dGVyZmx5
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNJbW11dGFi
bGVCdXR0ZXJmbHkuaAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNJbW11dGFibGVCdXR0ZXJmbHkuaAkod29ya2luZyBjb3B5KQpAQCAtMTUzLDcg
KzE1Myw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgQ29tcGxldGVTdWJzcGFjZSogc3Vic3BhY2VG
b3IoVk0mIHZtKQogICAgIHsKICAgICAgICAgLy8gV2UgYWxsb2NhdGUgb3V0IG9mIHRoZSBKU1Zh
bHVlIGdpZ2FjYWdlIGFzIG90aGVyIGNvZGUgZXhwZWN0cyBhbGwgYnV0dGVyZmxpZXMgdG8gbGl2
ZSB0aGVyZS4KLSAgICAgICAgcmV0dXJuICZ2bS5pbW11dGFibGVCdXR0ZXJmbHlKU1ZhbHVlR2ln
YWNhZ2VBdXhpbGlhcnlTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5pbW11dGFibGVCdXR0ZXJm
bHlKU1ZhbHVlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZSgpOwogICAgIH0KIAogICAgIC8vIE9ubHkg
Y2FsbCB0aGlzIGlmIHlvdSBqdXN0IGFsbG9jYXRlZCB0aGlzIGJ1dHRlcmZseS4KSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTGV4aWNhbEVudmlyb25tZW50LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNMZXhpY2FsRW52aXJvbm1l
bnQuaAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNMZXhpY2FsRW52aXJvbm1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNDQsNyArNDQsNyBAQCBw
dWJsaWM6CiAgICAgc3RhdGljIENvbXBsZXRlU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkK
ICAgICB7CiAgICAgICAgIHN0YXRpY19hc3NlcnQoIUNlbGxUeXBlOjpuZWVkc0Rlc3RydWN0aW9u
LCAiIik7Ci0gICAgICAgIHJldHVybiAmdm0udmFyaWFibGVTaXplZENlbGxTcGFjZTsKKyAgICAg
ICAgcmV0dXJuICZ2bS52YXJpYWJsZVNpemVkQ2VsbFNwYWNlKCk7CiAgICAgfQogCiAgICAgdXNp
bmcgQmFzZSA9IEpTU3ltYm9sVGFibGVPYmplY3Q7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU01vZHVsZUxvYWRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlTG9hZGVyLmgJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlTG9hZGVyLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTQ0LDcgKzQ0LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vi
c3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BB
Q0VfU0hBUkFCTEUoSlNNb2R1bGVMb2FkZXIsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBs
YWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwog
ICAgIH0KIAogICAgIGVudW0gU3RhdHVzIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTT05PYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU09OT2JqZWN0LmgJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTT05PYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtMzgsNyArMzgs
NyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0p
CiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU09O
T2JqZWN0LCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAg
ICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMg
SlNPTk9iamVjdCogY3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdElubGluZXMuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdElubGluZXMuaAkocmV2
aXNpb24gMjg2MDk1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3RJ
bmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTQxLDcgKzQxLDcgQEAgdGVtcGxhdGU8dHlwZW5h
bWUgQ2VsbFR5cGUsIFN1YnNwYWNlQWNjZQogQ29tcGxldGVTdWJzcGFjZSogSlNGaW5hbE9iamVj
dDo6c3Vic3BhY2VGb3IoVk0mIHZtKQogewogICAgIHN0YXRpY19hc3NlcnQoIUNlbGxUeXBlOjpu
ZWVkc0Rlc3RydWN0aW9uKTsKLSAgICByZXR1cm4gJnZtLmNlbGxTcGFjZTsKKyAgICByZXR1cm4g
JnZtLmNlbGxTcGFjZSgpOwogfQogCiAvLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWNy
ZWF0ZWxpc3Rmcm9tYXJyYXlsaWtlCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU1Byb21pc2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU1Byb21pc2UuaAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNQcm9taXNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM3LDcgKzM3LDcgQEAgcHVi
bGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlLCBTdWJzcGFjZUFjY2VzcyBtb2Rl
PgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKLSAg
ICAgICAgcmV0dXJuICZ2bS5wcm9taXNlU3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucHJvbWlz
ZVNwYWNlKCk7CiAgICAgfQogCiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIEpTUHJvbWlz
ZSogY3JlYXRlKFZNJiwgU3RydWN0dXJlKik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU1Byb21pc2VQcm90b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU1Byb21pc2VQcm90b3R5cGUuaAkocmV2aXNpb24gMjg2MDk1KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9taXNlUHJvdG90eXBlLmgJKHdv
cmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzLTIw
MTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEz
LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCkBAIC0zOCw3ICszOCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vi
c3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRf
SVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTUHJvbWlzZVByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAg
IHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9i
amVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIEpTUHJvbWlzZVByb3RvdHlwZSogY3Jl
YXRlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqKTsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lRW51bWVyYXRvci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVFbnVtZXJh
dG9yLmNwcAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzgsNyAr
MzgsNyBAQCBKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3IqIEpTUHJvcGVydHlOYW1lCiAgICAgdW5z
aWduZWQgcHJvcGVydHlOYW1lc0J1ZmZlclNpemVJbkJ5dGVzID0gQ2hlY2tlZDx1bnNpZ25lZD4o
cHJvcGVydHlOYW1lc1NpemUpICogc2l6ZW9mKFdyaXRlQmFycmllcjxKU1N0cmluZz4pOwogICAg
IFdyaXRlQmFycmllcjxKU1N0cmluZz4qIHByb3BlcnR5TmFtZXNCdWZmZXIgPSBudWxscHRyOwog
ICAgIGlmIChwcm9wZXJ0eU5hbWVzQnVmZmVyU2l6ZUluQnl0ZXMpIHsKLSAgICAgICAgcHJvcGVy
dHlOYW1lc0J1ZmZlciA9IHN0YXRpY19jYXN0PFdyaXRlQmFycmllcjxKU1N0cmluZz4qPih2bS5q
c1ZhbHVlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZS5hbGxvY2F0ZU5vblZpcnR1YWwodm0sIHByb3Bl
cnR5TmFtZXNCdWZmZXJTaXplSW5CeXRlcywgbnVsbHB0ciwgQWxsb2NhdGlvbkZhaWx1cmVNb2Rl
OjpBc3NlcnQpKTsKKyAgICAgICAgcHJvcGVydHlOYW1lc0J1ZmZlciA9IHN0YXRpY19jYXN0PFdy
aXRlQmFycmllcjxKU1N0cmluZz4qPih2bS5qc1ZhbHVlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZSgp
LmFsbG9jYXRlTm9uVmlydHVhbCh2bSwgcHJvcGVydHlOYW1lc0J1ZmZlclNpemVJbkJ5dGVzLCBu
dWxscHRyLCBBbGxvY2F0aW9uRmFpbHVyZU1vZGU6OkFzc2VydCkpOwogICAgICAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgcHJvcGVydHlOYW1lc1NpemU7ICsraSkKICAgICAgICAgICAgIHBy
b3BlcnR5TmFtZXNCdWZmZXJbaV0uY2xlYXIoKTsKICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUVudW1lcmF0b3IuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUVudW1lcmF0b3Iu
aAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQ
cm9wZXJ0eU5hbWVFbnVtZXJhdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTUxLDcgKzUxLDcgQEAg
cHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlLCBTdWJzcGFjZUFjY2VzcyBt
b2RlPgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsK
LSAgICAgICAgcmV0dXJuICZ2bS5wcm9wZXJ0eU5hbWVFbnVtZXJhdG9yU3BhY2U7CisgICAgICAg
IHJldHVybiAmdm0ucHJvcGVydHlOYW1lRW51bWVyYXRvclNwYWNlKCk7CiAgICAgfQogCiAgICAg
c3RhdGljIEpTUHJvcGVydHlOYW1lRW51bWVyYXRvciogY3JlYXRlKFZNJiwgU3RydWN0dXJlKiwg
dWludDMyX3QsIHVpbnQzMl90LCBQcm9wZXJ0eU5hbWVBcnJheSYmKTsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3h5LmgJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAtMzgs
NyArMzgsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihW
TSYgdm0pCiAgICAgewogICAgICAgICBzdGF0aWNfYXNzZXJ0KHNpemVvZihDZWxsVHlwZSkgPT0g
c2l6ZW9mKEpTUHJveHkpKTsKLSAgICAgICAgcmV0dXJuICZ2bS5qc1Byb3h5U3BhY2U7CisgICAg
ICAgIHJldHVybiAmdm0uanNQcm94eVNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIEpTUHJv
eHkqIGNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBKU09iamVjdCogdGFyZ2V0
KQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5oCShyZXZpc2lv
biAyODYwOTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xMTEsNyArMTExLDcgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5
cGVuYW1lLCBTdWJzcGFjZUFjY2Vzcz4KICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNl
Rm9yKFZNJiB2bSkKICAgICB7Ci0gICAgICAgIHJldHVybiAmdm0uc3RyaW5nU3BhY2U7CisgICAg
ICAgIHJldHVybiAmdm0uc3RyaW5nU3BhY2UoKTsKICAgICB9CiAgICAgCiAgICAgLy8gV2UgZW1w
bG95IG92ZXJmbG93IGNoZWNrcyBpbiBtYW55IHBsYWNlcyB3aXRoIHRoZSBhc3N1bXB0aW9uIHRo
YXQgTWF4TGVuZ3RoCkBAIC0yNzAsNyArMjcwLDcgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5
cGVuYW1lLCBTdWJzcGFjZUFjY2Vzcz4KICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNl
Rm9yKFZNJiB2bSkKICAgICB7Ci0gICAgICAgIHJldHVybiAmdm0ucm9wZVN0cmluZ1NwYWNlOwor
ICAgICAgICByZXR1cm4gJnZtLnJvcGVTdHJpbmdTcGFjZSgpOwogICAgIH0KIAogICAgIC8vIFdl
IHVzZSBsb3dlciAzYml0cyBvZiBmaWJlcjAgZm9yIGZsYWdzLiBUaGVzZSBiaXRzIGFyZSB1c2Fi
bGUgZHVlIHRvIGFsaWdubWVudCwgYW5kIGl0IGlzIE9LIGV2ZW4gaW4gMzJiaXQgYXJjaGl0ZWN0
dXJlLgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlZEFycmF5Vmll
d1Byb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTVHlwZWRBcnJheVZpZXdQcm90b3R5cGUuaAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAyMSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTM3LDcgKzM3LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSog
c3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VC
U1BBQ0VfU0hBUkFCTEUoSlNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAg
IHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9i
amVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIEpTVHlwZWRBcnJheVZpZXdQcm90b3R5
cGUqIGNyZWF0ZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKik7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXBJdGVyYXRvclByb3RvdHlwZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hcEl0ZXJhdG9yUHJvdG90eXBl
LmgJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01h
cEl0ZXJhdG9yUHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM3LDcgKzM3LDcgQEAgcHVi
bGljOgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsK
ICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoTWFwSXRlcmF0b3JQ
cm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7Cisg
ICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRp
YyBNYXBJdGVyYXRvclByb3RvdHlwZSogY3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9NYXBQcm90b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9NYXBQcm90b3R5cGUuaAkocmV2aXNpb24gMjg2MDk1KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFwUHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkK
QEAgLTM3LDcgKzM3LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3Bh
Y2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0Vf
U0hBUkFCTEUoTWFwUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9i
amVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9
CiAKICAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6
U3RydWN0dXJlRmxhZ3MgfCBIYXNTdGF0aWNQcm9wZXJ0eVRhYmxlOwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvTWF0aE9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL01hdGhPYmplY3QuaAkocmV2aXNpb24gMjg2MDk1KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWF0aE9iamVjdC5oCSh3b3JraW5nIGNvcHkp
CkBAIC0zMiw3ICszMiw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNw
YWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNF
X1NIQVJBQkxFKE1hdGhPYmplY3QsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2Jq
ZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0K
IAogICAgIHN0YXRpYyBNYXRoT2JqZWN0KiBjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL05hdGl2ZUVycm9yUHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRXJyb3JQcm90b3R5cGUuaAkocmV2aXNp
b24gMjg2MDk1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRXJyb3JQ
cm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzQsNyArMzQsNyBAQCBwdWJsaWM6CiAgICAg
c3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewogICAgICAgICBT
VEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShOYXRpdmVFcnJvclByb3RvdHlwZSwg
QmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0
dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIFN0cnVjdHVy
ZSogY3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
SlNWYWx1ZSBwcm90b3R5cGUpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9O
YXRpdmVFeGVjdXRhYmxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvTmF0aXZlRXhlY3V0YWJsZS5oCShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9OYXRpdmVFeGVjdXRhYmxlLmgJKHdvcmtpbmcgY29weSkKQEAg
LTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA5LTIwMTkgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA5LTIwMjEgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC00Myw3ICs0Myw3IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwg
U3Vic3BhY2VBY2Nlc3M+CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYg
dm0pCiAgICAgewotICAgICAgICByZXR1cm4gJnZtLm5hdGl2ZUV4ZWN1dGFibGVTcGFjZTsKKyAg
ICAgICAgcmV0dXJuICZ2bS5uYXRpdmVFeGVjdXRhYmxlU3BhY2UoKTsKICAgICB9CiAKICAgICBD
b2RlQmxvY2tIYXNoIGhhc2hGb3IoQ29kZVNwZWNpYWxpemF0aW9uS2luZCkgY29uc3Q7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdW1iZXJPYmplY3QuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdW1iZXJPYmplY3QuaAkocmV2aXNp
b24gMjg2MDk1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVyT2JqZWN0
LmgJKHdvcmtpbmcgY29weSkKQEAgLTM1LDcgKzM1LDcgQEAgcHVibGljOgogICAgIHRlbXBsYXRl
PHR5cGVuYW1lLCBTdWJzcGFjZUFjY2VzcyBtb2RlPgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSog
c3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKLSAgICAgICAgcmV0dXJuICZ2bS5udW1iZXJPYmpl
Y3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5udW1iZXJPYmplY3RTcGFjZSgpOwogICAgIH0K
IAogICAgIHN0YXRpYyBOdW1iZXJPYmplY3QqIGNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3Ry
dWN0dXJlKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0UHJvdG90
eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0
UHJvdG90eXBlLmgJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL09iamVjdFByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNiBAQAog
LyoKICAqICBDb3B5cmlnaHQgKEMpIDE5OTktMjAwMCBIYXJyaSBQb3J0ZW4gKHBvcnRlbkBrZGUu
b3JnKQotICogIENvcHlyaWdodCAoQykgMjAwOC0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqICBDb3B5cmlnaHQgKEMpIDIwMDgtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug
Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1z
IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCkBAIC0zMyw3ICszMyw3IEBAIHB1Ymxp
YzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAg
ICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKE9iamVjdFByb3RvdHlw
ZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAg
cmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIE9iamVj
dFByb3RvdHlwZSogY3JlYXRlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqKTsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb2dyYW1FeGVjdXRhYmxlLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvZ3JhbUV4ZWN1dGFi
bGUuaAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
UHJvZ3JhbUV4ZWN1dGFibGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzAsNiArMzAsOCBAQAogCiBu
YW1lc3BhY2UgSlNDIHsKIAorY2xhc3MgVW5saW5rZWRQcm9ncmFtQ29kZUJsb2NrOworCiBjbGFz
cyBQcm9ncmFtRXhlY3V0YWJsZSBmaW5hbCA6IHB1YmxpYyBHbG9iYWxFeGVjdXRhYmxlIHsKICAg
ICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogcHVibGljOgpAQCAtMzksNyAr
NDEsNyBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUsIFN1YnNwYWNl
QWNjZXNzPgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAg
IHsKLSAgICAgICAgcmV0dXJuICZ2bS5wcm9ncmFtRXhlY3V0YWJsZVNwYWNlLnNwYWNlOworICAg
ICAgICByZXR1cm4gJnZtLnByb2dyYW1FeGVjdXRhYmxlU3BhY2UoKS5zcGFjZTsKICAgICB9CiAK
ICAgICBzdGF0aWMgUHJvZ3JhbUV4ZWN1dGFibGUqIGNyZWF0ZShKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UpCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eVRhYmxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlUYWJsZS5oCShyZXZpc2lvbiAyODYwOTUpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eVRhYmxlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTEyOSw3ICsxMjksNyBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUg
Q2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNzPgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3Bh
Y2VGb3IoVk0mIHZtKQogICAgIHsKLSAgICAgICAgcmV0dXJuICZ2bS5wcm9wZXJ0eVRhYmxlU3Bh
Y2U7CisgICAgICAgIHJldHVybiAmdm0ucHJvcGVydHlUYWJsZVNwYWNlKCk7CiAgICAgfQogCiAg
ICAgc3RhdGljIGNvbnN0ZXhwciBib29sIG5lZWRzRGVzdHJ1Y3Rpb24gPSB0cnVlOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVmbGVjdE9iamVjdC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZmxlY3RPYmplY3QuaAkocmV2aXNp
b24gMjg2MDk1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVmbGVjdE9iamVj
dC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw3ICszOCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMg
SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19B
U1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKFJlZmxlY3RPYmplY3QsIEJhc2UpOwotICAgICAg
ICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5P
YmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBSZWZsZWN0T2JqZWN0KiBjcmVhdGUo
Vk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cC5oCShyZXZpc2lvbiAy
ODYwOTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHAuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNDksNyArNDksNyBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUg
Q2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNzIG1vZGU+CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBz
dWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewotICAgICAgICByZXR1cm4gJnZtLnJlZ0V4cFNwYWNl
OworICAgICAgICByZXR1cm4gJnZtLnJlZ0V4cFNwYWNlKCk7CiAgICAgfQogCiAgICAgSlNfRVhQ
T1JUX1BSSVZBVEUgc3RhdGljIFJlZ0V4cCogY3JlYXRlKFZNJiwgY29uc3QgU3RyaW5nJiBwYXR0
ZXJuLCBPcHRpb25TZXQ8WWFycjo6RmxhZ3M+KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1JlZ0V4cE9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1JlZ0V4cE9iamVjdC5oCShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAt
MzYsNyArMzYsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZv
cihWTSYgdm0pCiAgICAgewogICAgICAgICBzdGF0aWNfYXNzZXJ0KCFDZWxsVHlwZTo6bmVlZHNE
ZXN0cnVjdGlvbiwgIiIpOwotICAgICAgICByZXR1cm4gJnZtLnJlZ0V4cE9iamVjdFNwYWNlOwor
ICAgICAgICByZXR1cm4gJnZtLnJlZ0V4cE9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAgc3Rh
dGljIGNvbnN0ZXhwciB1aW50cHRyX3QgbGFzdEluZGV4SXNOb3RXcml0YWJsZUZsYWcgPSAwYjAx
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwUHJvdG90eXBlLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwUHJvdG90
eXBlLmgJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1JlZ0V4cFByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw3ICszNCw3IEBAIHB1Ymxp
YzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAg
ICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKFJlZ0V4cFByb3RvdHlw
ZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAg
cmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIFJlZ0V4
cFByb3RvdHlwZSogY3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9SZWdFeHBTdHJpbmdJdGVyYXRvclByb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cFN0cmluZ0l0ZXJhdG9yUHJvdG90eXBlLmgJKHJl
dmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cFN0
cmluZ0l0ZXJhdG9yUHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM5LDcgKzM5LDcgQEAg
cHVibGljOgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAg
IHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoUmVnRXhwU3Ry
aW5nSXRlcmF0b3JQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2Jq
ZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0K
IAogICAgIHN0YXRpYyBSZWdFeHBTdHJpbmdJdGVyYXRvclByb3RvdHlwZSogY3JlYXRlKFZNJiB2
bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TY29wZWRBcmd1bWVudHMuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Njb3BlZEFyZ3VtZW50
cy5jcHAJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1Njb3BlZEFyZ3VtZW50cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU1LDcgKzU1LDcgQEAgU2Nv
cGVkQXJndW1lbnRzKiBTY29wZWRBcmd1bWVudHM6OmNyZWF0ZQogICAgIFdyaXRlQmFycmllcjxV
bmtub3duPiogc3RvcmFnZSA9IG51bGxwdHI7CiAgICAgaWYgKHRvdGFsTGVuZ3RoID4gdGFibGUt
Pmxlbmd0aCgpKSB7CiAgICAgICAgIENoZWNrZWQ8dW5zaWduZWQ+IG92ZXJmbG93TGVuZ3RoID0g
dG90YWxMZW5ndGggLSB0YWJsZS0+bGVuZ3RoKCk7Ci0gICAgICAgIHN0b3JhZ2UgPSBzdGF0aWNf
Y2FzdDxXcml0ZUJhcnJpZXI8VW5rbm93bj4qPih2bS5qc1ZhbHVlR2lnYWNhZ2VBdXhpbGlhcnlT
cGFjZS5hbGxvY2F0ZU5vblZpcnR1YWwodm0sIG92ZXJmbG93TGVuZ3RoICogc2l6ZW9mKFdyaXRl
QmFycmllcjxVbmtub3duPiksIG51bGxwdHIsIEFsbG9jYXRpb25GYWlsdXJlTW9kZTo6QXNzZXJ0
KSk7CisgICAgICAgIHN0b3JhZ2UgPSBzdGF0aWNfY2FzdDxXcml0ZUJhcnJpZXI8VW5rbm93bj4q
Pih2bS5qc1ZhbHVlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZSgpLmFsbG9jYXRlTm9uVmlydHVhbCh2
bSwgb3ZlcmZsb3dMZW5ndGggKiBzaXplb2YoV3JpdGVCYXJyaWVyPFVua25vd24+KSwgbnVsbHB0
ciwgQWxsb2NhdGlvbkZhaWx1cmVNb2RlOjpBc3NlcnQpKTsKICAgICB9CiAKICAgICBTY29wZWRB
cmd1bWVudHMqIHJlc3VsdCA9IG5ldyAoCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9TY29wZWRBcmd1bWVudHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9TY29wZWRBcmd1bWVudHMuaAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2NvcGVkQXJndW1lbnRzLmgJKHdvcmtpbmcgY29weSkK
QEAgLTQ3LDcgKzQ3LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3Bh
Y2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAgICAgc3RhdGljX2Fzc2VydCghQ2VsbFR5cGU6Om5l
ZWRzRGVzdHJ1Y3Rpb24sICIiKTsKLSAgICAgICAgcmV0dXJuICZ2bS5zY29wZWRBcmd1bWVudHNT
cGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5zY29wZWRBcmd1bWVudHNTcGFjZSgpOwogICAgIH0K
IAogICAgIC8vIENyZWF0ZXMgYW4gYXJndW1lbnRzIG9iamVjdCBidXQgbGVhdmVzIGl0IHVuaW5p
dGlhbGl6ZWQuIFRoaXMgaXMgZGFuZ2Vyb3VzIGlmIHdlIEdDIHJpZ2h0CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TZXRJdGVyYXRvclByb3RvdHlwZS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NldEl0ZXJhdG9yUHJvdG90eXBlLmgJ
KHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NldEl0
ZXJhdG9yUHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM3LDcgKzM3LDcgQEAgcHVibGlj
OgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAg
ICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoU2V0SXRlcmF0b3JQcm90
b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAg
ICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBT
ZXRJdGVyYXRvclByb3RvdHlwZSogY3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9TZXRQcm90b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TZXRQcm90b3R5cGUuaAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2V0UHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAg
LTM3LDcgKzM3LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VG
b3IoVk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hB
UkFCTEUoU2V0UHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVj
dFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAK
ICAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3Ry
dWN0dXJlRmxhZ3MgfCBIYXNTdGF0aWNQcm9wZXJ0eVRhYmxlOwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvU2hhZG93UmVhbG1Qcm90b3R5cGUuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TaGFkb3dSZWFsbVByb3RvdHlwZS5oCShyZXZp
c2lvbiAyODYwOTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TaGFkb3dSZWFs
bVByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw3ICszOSw3IEBAIHB1YmxpYzoKICAg
ICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAg
IFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKFNoYWRvd1JlYWxtUHJvdG90eXBl
LCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICBy
ZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgU2hhZG93
UmVhbG1Qcm90b3R5cGUqIGNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3BhcnNlQXJyYXlWYWx1ZU1hcC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NwYXJzZUFycmF5VmFs
dWVNYXAuaAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU3BhcnNlQXJyYXlWYWx1ZU1hcC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTAsNyArMTEwLDcg
QEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlLCBTdWJzcGFjZUFjY2Vz
cz4KICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7Ci0g
ICAgICAgIHJldHVybiAmdm0uc3BhcnNlQXJyYXlWYWx1ZU1hcFNwYWNlOworICAgICAgICByZXR1
cm4gJnZtLnNwYXJzZUFycmF5VmFsdWVNYXBTcGFjZSgpOwogICAgIH0KICAgICAKICAgICBzdGF0
aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mLCBKU0dsb2JhbE9iamVjdCosIEpTVmFs
dWUgcHJvdG90eXBlKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmlu
Z0l0ZXJhdG9yUHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvU3RyaW5nSXRlcmF0b3JQcm90b3R5cGUuaAkocmV2aXNpb24gMjg2MDk1KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nSXRlcmF0b3JQcm90b3R5cGUuaAko
d29ya2luZyBjb3B5KQpAQCAtMzksNyArMzksNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIElzb1N1
YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJU
X0lTT19TVUJTUEFDRV9TSEFSQUJMRShTdHJpbmdJdGVyYXRvclByb3RvdHlwZSwgQmFzZSk7Ci0g
ICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5w
bGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIFN0cmluZ0l0ZXJhdG9yUHJv
dG90eXBlKiBjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0
cmluZ09iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1N0cmluZ09iamVjdC5oCShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9TdHJpbmdPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtMzMsNyArMzMsNyBA
QCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUsIFN1YnNwYWNlQWNjZXNzIG1vZGU+CiAg
ICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewotICAgICAg
ICByZXR1cm4gJnZtLnN0cmluZ09iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnN0cmlu
Z09iamVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIFN0cmluZ09iamVjdCogY3JlYXRl
KFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9TdHJ1Y3R1cmUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9TdHJ1Y3R1cmUuaAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEyOCw3ICsx
MjgsNyBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUsIFN1YnNwYWNl
QWNjZXNzPgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAg
IHsKLSAgICAgICAgcmV0dXJuICZ2bS5zdHJ1Y3R1cmVTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2
bS5zdHJ1Y3R1cmVTcGFjZSgpOwogICAgIH0KIAogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRp
YyBib29sIGlzVmFsaWRQcm90b3R5cGUoSlNWYWx1ZSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TdHJ1Y3R1cmVDaGFpbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlQ2hhaW4uY3BwCShyZXZpc2lvbiAyODYwOTUp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVDaGFpbi5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTQ4LDcgKzQ4LDcgQEAgU3RydWN0dXJlQ2hhaW4qIFN0cnVjdHVyZUNo
YWluOjpjcmVhdGUoVgogICAgICAgICArK3NpemU7CiAgICAgKytzaXplOyAvLyBTZW50aW5lbCBu
dWxscHRyLgogICAgIHNpemVfdCBieXRlcyA9IENoZWNrZWQ8c2l6ZV90PihzaXplKSAqIHNpemVv
ZihTdHJ1Y3R1cmVJRCk7Ci0gICAgU3RydWN0dXJlSUQqIHZlY3RvciA9IHN0YXRpY19jYXN0PFN0
cnVjdHVyZUlEKj4odm0uanNWYWx1ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UuYWxsb2NhdGVOb25W
aXJ0dWFsKHZtLCBieXRlcywgbnVsbHB0ciwgQWxsb2NhdGlvbkZhaWx1cmVNb2RlOjpBc3NlcnQp
KTsKKyAgICBTdHJ1Y3R1cmVJRCogdmVjdG9yID0gc3RhdGljX2Nhc3Q8U3RydWN0dXJlSUQqPih2
bS5qc1ZhbHVlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZSgpLmFsbG9jYXRlTm9uVmlydHVhbCh2bSwg
Ynl0ZXMsIG51bGxwdHIsIEFsbG9jYXRpb25GYWlsdXJlTW9kZTo6QXNzZXJ0KSk7CiAgICAgbWVt
c2V0KHZlY3RvciwgMCwgYnl0ZXMpOwogICAgIFN0cnVjdHVyZUNoYWluKiBjaGFpbiA9IG5ldyAo
Tm90TnVsbCwgYWxsb2NhdGVDZWxsPFN0cnVjdHVyZUNoYWluPih2bSkpIFN0cnVjdHVyZUNoYWlu
KHZtLCB2bS5zdHJ1Y3R1cmVDaGFpblN0cnVjdHVyZS5nZXQoKSwgdmVjdG9yKTsKICAgICBjaGFp
bi0+ZmluaXNoQ3JlYXRpb24odm0sIGhlYWQpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvU3RydWN0dXJlQ2hhaW4uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TdHJ1Y3R1cmVDaGFpbi5oCShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVDaGFpbi5oCSh3b3JraW5nIGNvcHkp
CkBAIC00Niw3ICs0Niw3IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlw
ZSwgU3Vic3BhY2VBY2Nlc3M+CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihW
TSYgdm0pCiAgICAgewotICAgICAgICByZXR1cm4gJnZtLnN0cnVjdHVyZUNoYWluU3BhY2U7Cisg
ICAgICAgIHJldHVybiAmdm0uc3RydWN0dXJlQ2hhaW5TcGFjZSgpOwogICAgIH0KIAogICAgIHN0
YXRpYyBTdHJ1Y3R1cmVDaGFpbiogY3JlYXRlKFZNJiwgSlNPYmplY3QqKTsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZVJhcmVEYXRhLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlUmFyZURhdGEuaAkocmV2
aXNpb24gMjg2MDk1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJl
UmFyZURhdGEuaAkod29ya2luZyBjb3B5KQpAQCAtNjYsNyArNjYsNyBAQCBwdWJsaWM6CiAgICAg
dGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNzPgogICAgIHN0YXRpYyBJ
c29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKLSAgICAgICAgcmV0dXJuICZ2
bS5zdHJ1Y3R1cmVSYXJlRGF0YVNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnN0cnVjdHVyZVJh
cmVEYXRhU3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgU3RydWN0dXJlUmFyZURhdGEqIGNy
ZWF0ZShWTSYsIFN0cnVjdHVyZSopOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU3ltYm9sUHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvU3ltYm9sUHJvdG90eXBlLmgJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbFByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBA
IC00MSw3ICs0MSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNl
Rm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NI
QVJBQkxFKFN5bWJvbFByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5P
YmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAg
fQogCiAgICAgc3RhdGljIFN5bWJvbFByb3RvdHlwZSogY3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xUYWJsZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbFRhYmxlLmgJKHJldmlzaW9uIDI4NjA5NSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbFRhYmxlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTQ1Niw3ICs0NTYsNyBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUg
Q2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNzPgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3Bh
Y2VGb3IoVk0mIHZtKQogICAgIHsKLSAgICAgICAgcmV0dXJuICZ2bS5zeW1ib2xUYWJsZVNwYWNl
OworICAgICAgICByZXR1cm4gJnZtLnN5bWJvbFRhYmxlU3BhY2UoKTsKICAgICB9CiAKICAgICBz
dGF0aWMgU3ltYm9sVGFibGUqIGNyZWF0ZShWTSYgdm0pCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9UZW1wb3JhbENhbGVuZGFyUHJvdG90eXBlLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxDYWxlbmRhclByb3RvdHlwZS5o
CShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1w
b3JhbENhbGVuZGFyUHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM4LDcgKzM4LDcgQEAg
cHVibGljOgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAg
IHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoVGVtcG9yYWxD
YWxlbmRhclByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RT
cGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAg
ICAgc3RhdGljIFRlbXBvcmFsQ2FsZW5kYXJQcm90b3R5cGUqIGNyZWF0ZShWTSYsIEpTR2xvYmFs
T2JqZWN0KiwgU3RydWN0dXJlKik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9UZW1wb3JhbER1cmF0aW9uUHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxEdXJhdGlvblByb3RvdHlwZS5oCShyZXZpc2lvbiAy
ODYwOTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbER1cmF0aW9u
UHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw2IEBACiAvKgogICogQ29weXJp
Z2h0IChDKSAyMDIxIFNvbnkgSW50ZXJhY3RpdmUgRW50ZXJ0YWlubWVudCBJbmMuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zOCw3ICszOSw3IEBAIHB1YmxpYzoKICAgICBzdGF0
aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJ
Q19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKFRlbXBvcmFsRHVyYXRpb25Qcm90b3R5cGUs
IEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJl
dHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBUZW1wb3Jh
bER1cmF0aW9uUHJvdG90eXBlKiBjcmVhdGUoVk0mLCBTdHJ1Y3R1cmUqKTsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsSW5zdGFudFByb3RvdHlwZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsSW5zdGFudFBy
b3RvdHlwZS5oCShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9UZW1wb3JhbEluc3RhbnRQcm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsx
LDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMjEgSWdhbGlhIFMuTC4KKyAqIENvcHlyaWdo
dCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKQEAgLTM4LDcgKzM5LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJ
c29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FT
U0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoVGVtcG9yYWxJbnN0YW50UHJvdG90eXBlLCBCYXNl
KTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4g
JnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgVGVtcG9yYWxJbnN0
YW50UHJvdG90eXBlKiBjcmVhdGUoVk0mLCBTdHJ1Y3R1cmUqKTsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsTm93LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxOb3cuaAkocmV2aXNpb24gMjg2MDk1KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxOb3cuaAkod29ya2luZyBjb3B5
KQpAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiAgQ29weXJpZ2h0IChDKSAyMDIxIElnYWxpYSwgUy5M
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3
YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqICBtb2RpZnkgaXQgdW5kZXIg
dGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCkBAIC0zMiw3ICszMyw3
IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkK
ICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKFRlbXBv
cmFsTm93LCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAg
ICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMg
VGVtcG9yYWxOb3cqIGNyZWF0ZShWTSYsIFN0cnVjdHVyZSopOwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbE9iamVjdC5oCShyZXZpc2lvbiAyODYwOTUp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbE9iamVjdC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDYgKzEsNyBAQAogLyoKICAqICBDb3B5cmlnaHQgKEMpIDIwMjEgSWdh
bGlhLCBTLkwuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiAgQ29weXJpZ2h0IChDKSAyMDIxIFNv
bnkgSW50ZXJhY3RpdmUgRW50ZXJ0YWlubWVudCBJbmMuCisgKiAgQ29weXJpZ2h0IChDKSAyMDIx
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiAgVGhpcyBsaWJyYXJ5IGlz
IGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogIG1vZGlm
eSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKQEAg
LTY0LDcgKzY1LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VG
b3IoVk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hB
UkFCTEUoVGVtcG9yYWxPYmplY3QsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2Jq
ZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0K
IAogICAgIHN0YXRpYyBUZW1wb3JhbE9iamVjdCogY3JlYXRlKFZNJiwgU3RydWN0dXJlKik7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbFBsYWluVGltZVByb3Rv
dHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBv
cmFsUGxhaW5UaW1lUHJvdG90eXBlLmgJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIElu
Yy4KKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM4LDcgKzM4LDcgQEAgcHVibGlj
OgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAg
ICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoVGVtcG9yYWxQbGFpblRp
bWVQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7
CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIHN0
YXRpYyBUZW1wb3JhbFBsYWluVGltZVByb3RvdHlwZSogY3JlYXRlKFZNJiwgSlNHbG9iYWxPYmpl
Y3QqLCBTdHJ1Y3R1cmUqKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Rl
bXBvcmFsVGltZVpvbmVQcm90b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9UZW1wb3JhbFRpbWVab25lUHJvdG90eXBlLmgJKHJldmlzaW9uIDI4NjA5
NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsVGltZVpvbmVQcm90
b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzgsNyArMzgsNyBAQCBwdWJsaWM6CiAgICAgc3Rh
dGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFU
SUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShUZW1wb3JhbFRpbWVab25lUHJvdG90eXBl
LCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICBy
ZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgVGVtcG9y
YWxUaW1lWm9uZVByb3RvdHlwZSogY3JlYXRlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1
cmUqKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Rocm93U2NvcGUuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Rocm93U2NvcGUu
Y3BwCShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9U
aHJvd1Njb3BlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTYtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTYtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRl
ICJFeGNlcHRpb24uaCIKICNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgogI2luY2x1ZGUg
IlZNLmgiCisjaW5jbHVkZSA8d3RmL1N0YWNrVHJhY2UuaD4KIAogbmFtZXNwYWNlIEpTQyB7CiAg
ICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCShyZXZpc2lvbiAyODYw
OTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTMyLDIxICszMiwxNSBAQAogI2luY2x1ZGUgIkFjY2Vzc0Nhc2UuaCIKICNpbmNsdWRl
ICJBZ2dyZWdhdGVFcnJvci5oIgogI2luY2x1ZGUgIkFyZ0xpc3QuaCIKLSNpbmNsdWRlICJCaWdJ
bnRPYmplY3QuaCIKLSNpbmNsdWRlICJCb29sZWFuT2JqZWN0LmgiCi0jaW5jbHVkZSAiQnJhbmRl
ZFN0cnVjdHVyZS5oIgogI2luY2x1ZGUgIkJ1aWx0aW5FeGVjdXRhYmxlcy5oIgogI2luY2x1ZGUg
IkJ5dGVjb2RlSW50cmluc2ljUmVnaXN0cnkuaCIKICNpbmNsdWRlICJDaGVja3BvaW50T1NSRXhp
dFNpZGVTdGF0ZS5oIgotI2luY2x1ZGUgIkNsb25lZEFyZ3VtZW50cy5oIgogI2luY2x1ZGUgIkNv
ZGVCbG9jay5oIgogI2luY2x1ZGUgIkNvZGVDYWNoZS5oIgogI2luY2x1ZGUgIkNvbW1vbklkZW50
aWZpZXJzLmgiCiAjaW5jbHVkZSAiQ29udHJvbEZsb3dQcm9maWxlci5oIgogI2luY2x1ZGUgIkN1
c3RvbUdldHRlclNldHRlci5oIgogI2luY2x1ZGUgIkRPTUF0dHJpYnV0ZUdldHRlclNldHRlci5o
IgotI2luY2x1ZGUgIkRhdGVJbnN0YW5jZS5oIgotI2luY2x1ZGUgIkRlYnVnZ2VyU2NvcGUuaCIK
ICNpbmNsdWRlICJEZWZlcnJlZFdvcmtUaW1lci5oIgogI2luY2x1ZGUgIkRpc2Fzc2VtYmxlci5o
IgogI2luY2x1ZGUgIkRvdWJsZVByZWRpY3Rpb25GdXp6ZXJBZ2VudC5oIgpAQCAtNTUsNyArNDks
NiBAQAogI2luY2x1ZGUgIkV4Y2VwdGlvbi5oIgogI2luY2x1ZGUgIkV4ZWN1dGFibGVUb0NvZGVC
bG9ja0VkZ2UuaCIKICNpbmNsdWRlICJGVExUaHVua3MuaCIKLSNpbmNsdWRlICJGYXN0TWFsbG9j
QWxpZ25lZE1lbW9yeUFsbG9jYXRvci5oIgogI2luY2x1ZGUgIkZpbGVCYXNlZEZ1enplckFnZW50
LmgiCiAjaW5jbHVkZSAiRnVuY3Rpb25Db2RlQmxvY2suaCIKICNpbmNsdWRlICJGdW5jdGlvbkV4
ZWN1dGFibGUuaCIKQEAgLTY2LDc3ICs1OSwyNSBAQAogI2luY2x1ZGUgIkhlYXBQcm9maWxlci5o
IgogI2luY2x1ZGUgIkludGVycHJldGVyLmgiCiAjaW5jbHVkZSAiSW50bENhY2hlLmgiCi0jaW5j
bHVkZSAiSW50bENvbGxhdG9yLmgiCi0jaW5jbHVkZSAiSW50bERhdGVUaW1lRm9ybWF0LmgiCi0j
aW5jbHVkZSAiSW50bERpc3BsYXlOYW1lcy5oIgotI2luY2x1ZGUgIkludGxMaXN0Rm9ybWF0Lmgi
Ci0jaW5jbHVkZSAiSW50bExvY2FsZS5oIgotI2luY2x1ZGUgIkludGxOdW1iZXJGb3JtYXQuaCIK
LSNpbmNsdWRlICJJbnRsUGx1cmFsUnVsZXMuaCIKLSNpbmNsdWRlICJJbnRsUmVsYXRpdmVUaW1l
Rm9ybWF0LmgiCi0jaW5jbHVkZSAiSW50bFNlZ21lbnRJdGVyYXRvci5oIgotI2luY2x1ZGUgIklu
dGxTZWdtZW50ZXIuaCIKLSNpbmNsdWRlICJJbnRsU2VnbWVudHMuaCIKLSNpbmNsdWRlICJJc29I
ZWFwQ2VsbFR5cGUuaCIKLSNpbmNsdWRlICJJc29JbmxpbmVkSGVhcENlbGxUeXBlLmgiCiAjaW5j
bHVkZSAiSklUQ29kZS5oIgogI2luY2x1ZGUgIkpJVE9wZXJhdGlvbkxpc3QuaCIKICNpbmNsdWRl
ICJKSVRTaXplU3RhdGlzdGljcy5oIgogI2luY2x1ZGUgIkpJVFRodW5rcy5oIgogI2luY2x1ZGUg
IkpJVFdvcmtsaXN0LmgiCi0jaW5jbHVkZSAiSlNBUElHbG9iYWxPYmplY3QuaCIKICNpbmNsdWRl
ICJKU0FQSVZhbHVlV3JhcHBlci5oIgotI2luY2x1ZGUgIkpTQVBJV3JhcHBlck9iamVjdC5oIgot
I2luY2x1ZGUgIkpTQXJyYXkuaCIKLSNpbmNsdWRlICJKU0FycmF5QnVmZmVyLmgiCi0jaW5jbHVk
ZSAiSlNBcnJheUl0ZXJhdG9yLmgiCi0jaW5jbHVkZSAiSlNBc3luY0dlbmVyYXRvci5oIgogI2lu
Y2x1ZGUgIkpTQmlnSW50LmgiCi0jaW5jbHVkZSAiSlNCb3VuZEZ1bmN0aW9uLmgiCi0jaW5jbHVk
ZSAiSlNDYWxsYmFja0NvbnN0cnVjdG9yLmgiCi0jaW5jbHVkZSAiSlNDYWxsYmFja0Z1bmN0aW9u
LmgiCi0jaW5jbHVkZSAiSlNDYWxsYmFja09iamVjdC5oIgotI2luY2x1ZGUgIkpTQ2FsbGVlLmgi
Ci0jaW5jbHVkZSAiSlNDdXN0b21HZXR0ZXJGdW5jdGlvbi5oIgotI2luY2x1ZGUgIkpTQ3VzdG9t
U2V0dGVyRnVuY3Rpb24uaCIKLSNpbmNsdWRlICJKU0Rlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxs
VHlwZS5oIgotI2luY2x1ZGUgIkpTRmluYWxpemF0aW9uUmVnaXN0cnkuaCIKLSNpbmNsdWRlICJK
U0Z1bmN0aW9uLmgiCi0jaW5jbHVkZSAiSlNHbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQuaCIKICNp
bmNsdWRlICJKU0dsb2JhbE9iamVjdC5oIgogI2luY2x1ZGUgIkpTSW1tdXRhYmxlQnV0dGVyZmx5
LmgiCi0jaW5jbHVkZSAiSlNJbmplY3RlZFNjcmlwdEhvc3QuaCIKLSNpbmNsdWRlICJKU0phdmFT
Y3JpcHRDYWxsRnJhbWUuaCIKICNpbmNsdWRlICJKU0xvY2suaCIKICNpbmNsdWRlICJKU01hcC5o
IgotI2luY2x1ZGUgIkpTTWFwSXRlcmF0b3IuaCIKLSNpbmNsdWRlICJKU01vZHVsZU5hbWVzcGFj
ZU9iamVjdC5oIgotI2luY2x1ZGUgIkpTTW9kdWxlUmVjb3JkLmgiCi0jaW5jbHVkZSAiSlNOYXRp
dmVTdGRGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTUHJvbWlzZS5oIgogI2luY2x1ZGUgIkpTUHJv
cGVydHlOYW1lRW51bWVyYXRvci5oIgotI2luY2x1ZGUgIkpTUHJveHkuaCIKICNpbmNsdWRlICJK
U1NjcmlwdEZldGNoUGFyYW1ldGVycy5oIgogI2luY2x1ZGUgIkpTU2NyaXB0RmV0Y2hlci5oIgog
I2luY2x1ZGUgIkpTU2V0LmgiCi0jaW5jbHVkZSAiSlNTZXRJdGVyYXRvci5oIgogI2luY2x1ZGUg
IkpTU291cmNlQ29kZS5oIgotI2luY2x1ZGUgIkpTU3RyaW5nSXRlcmF0b3IuaCIKICNpbmNsdWRl
ICJKU1RlbXBsYXRlT2JqZWN0RGVzY3JpcHRvci5oIgotI2luY2x1ZGUgIkpTVG9XYXNtSUNDYWxs
ZWUuaCIKLSNpbmNsdWRlICJKU1R5cGVkQXJyYXlzLmgiCi0jaW5jbHVkZSAiSlNXZWFrTWFwLmgi
Ci0jaW5jbHVkZSAiSlNXZWFrT2JqZWN0UmVmLmgiCi0jaW5jbHVkZSAiSlNXZWFrU2V0LmgiCiAj
aW5jbHVkZSAiSlNXZWJBc3NlbWJseUNvZGVCbG9jay5oIgotI2luY2x1ZGUgIkpTV2ViQXNzZW1i
bHlFeGNlcHRpb24uaCIKLSNpbmNsdWRlICJKU1dlYkFzc2VtYmx5R2xvYmFsLmgiCi0jaW5jbHVk
ZSAiSlNXZWJBc3NlbWJseUluc3RhbmNlLmgiCi0jaW5jbHVkZSAiSlNXZWJBc3NlbWJseU1lbW9y
eS5oIgotI2luY2x1ZGUgIkpTV2ViQXNzZW1ibHlNb2R1bGUuaCIKLSNpbmNsdWRlICJKU1dlYkFz
c2VtYmx5VGFibGUuaCIKLSNpbmNsdWRlICJKU1dlYkFzc2VtYmx5VGFnLmgiCi0jaW5jbHVkZSAi
SlNXaXRoU2NvcGUuaCIKICNpbmNsdWRlICJMTEludERhdGEuaCIKICNpbmNsdWRlICJMTEludEV4
Y2VwdGlvbnMuaCIKICNpbmNsdWRlICJNYXJrZWRCbG9ja0lubGluZXMuaCIKQEAgLTE1MSwyNyAr
OTIsMTYgQEAKICNpbmNsdWRlICJQcm9ncmFtQ29kZUJsb2NrLmgiCiAjaW5jbHVkZSAiUHJvZ3Jh
bUV4ZWN1dGFibGUuaCIKICNpbmNsdWRlICJQcm9wZXJ0eVRhYmxlLmgiCi0jaW5jbHVkZSAiUHJv
eHlSZXZva2UuaCIKICNpbmNsdWRlICJSYW5kb21pemluZ0Z1enplckFnZW50LmgiCiAjaW5jbHVk
ZSAiUmVnRXhwQ2FjaGUuaCIKLSNpbmNsdWRlICJSZWdFeHBPYmplY3QuaCIKICNpbmNsdWRlICJT
YW1wbGluZ1Byb2ZpbGVyLmgiCiAjaW5jbHVkZSAiU2NvcGVkQXJndW1lbnRzLmgiCiAjaW5jbHVk
ZSAiU2hhZG93Q2hpY2tlbi5oIgotI2luY2x1ZGUgIlNoYWRvd1JlYWxtT2JqZWN0LmgiCiAjaW5j
bHVkZSAiU2ltcGxlVHlwZWRBcnJheUNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJTb3VyY2VQcm92
aWRlckNhY2hlLmgiCi0jaW5jbHVkZSAiU3RyaWN0RXZhbEFjdGl2YXRpb24uaCIKLSNpbmNsdWRl
ICJTdHJpbmdPYmplY3QuaCIKICNpbmNsdWRlICJTdHJvbmdJbmxpbmVzLmgiCiAjaW5jbHVkZSAi
U3RydWN0dXJlQ2hhaW4uaCIKICNpbmNsdWRlICJTdHJ1Y3R1cmVJbmxpbmVzLmgiCi0jaW5jbHVk
ZSAiU3ltYm9sT2JqZWN0LmgiCi0jaW5jbHVkZSAiVGVtcG9yYWxDYWxlbmRhci5oIgotI2luY2x1
ZGUgIlRlbXBvcmFsRHVyYXRpb24uaCIKLSNpbmNsdWRlICJUZW1wb3JhbEluc3RhbnQuaCIKLSNp
bmNsdWRlICJUZW1wb3JhbFBsYWluVGltZS5oIgotI2luY2x1ZGUgIlRlbXBvcmFsVGltZVpvbmUu
aCIKICNpbmNsdWRlICJUZXN0UnVubmVyVXRpbHMuaCIKICNpbmNsdWRlICJUaHVua0dlbmVyYXRv
cnMuaCIKICNpbmNsdWRlICJUeXBlUHJvZmlsZXIuaCIKQEAgLTE4MywxOSArMTEzLDE2IEBACiAj
aW5jbHVkZSAiV2FzbVdvcmtsaXN0LmgiCiAjaW5jbHVkZSAiV2F0Y2hkb2cuaCIKICNpbmNsdWRl
ICJXZWFrR0NNYXBJbmxpbmVzLmgiCi0jaW5jbHVkZSAiV2ViQXNzZW1ibHlGdW5jdGlvbi5oIgot
I2luY2x1ZGUgIldlYkFzc2VtYmx5TW9kdWxlUmVjb3JkLmgiCi0jaW5jbHVkZSAiV2ViQXNzZW1i
bHlXcmFwcGVyRnVuY3Rpb24uaCIKICNpbmNsdWRlICJXaWRlbmluZ051bWJlclByZWRpY3Rpb25G
dXp6ZXJBZ2VudC5oIgogI2luY2x1ZGUgPHd0Zi9Qcm9jZXNzSUQuaD4KICNpbmNsdWRlIDx3dGYv
UmVhZFdyaXRlTG9jay5oPgogI2luY2x1ZGUgPHd0Zi9TaW1wbGVTdGF0cy5oPgorI2luY2x1ZGUg
PHd0Zi9TdGFja1RyYWNlLmg+CiAjaW5jbHVkZSA8d3RmL1N0cmluZ1ByaW50U3RyZWFtLmg+CiAj
aW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21TdHJpbmdU
YWJsZS5oPgogCiAjaWYgRU5BQkxFKENfTE9PUCkKLSNpbmNsdWRlICJDTG9vcFN0YWNrLmgiCiAj
aW5jbHVkZSAiQ0xvb3BTdGFja0lubGluZXMuaCIKICNlbmRpZgogCkBAIC0yMDcsMTUgKzEzNCw2
IEBACiAjaW5jbHVkZSAiUmVnRXhwLmgiCiAjZW5kaWYKIAotI2lmIEpTQ19PQkpDX0FQSV9FTkFC
TEVECi0jaW5jbHVkZSAiT2JqQ0NhbGxiYWNrRnVuY3Rpb24uaCIKLSNlbmRpZgotCi0jaWZkZWYg
SlNDX0dMSUJfQVBJX0VOQUJMRUQKLSNpbmNsdWRlICJKU0FQSVdyYXBwZXJHbG9iYWxPYmplY3Qu
aCIKLSNpbmNsdWRlICJKU0NDYWxsYmFja0Z1bmN0aW9uLmgiCi0jZW5kaWYKLQogbmFtZXNwYWNl
IEpTQyB7CiAKIEF0b21pYzx1bnNpZ25lZD4gVk06OnNfbnVtYmVyT2ZJRHM7CkBAIC0yOTEsMTA5
ICsyMDksNiBAQCBWTTo6Vk0oVk1UeXBlIHZtVHlwZSwgSGVhcFR5cGUgaGVhcFR5cGUsCiAgICAg
LCBtX3JhbmRvbShPcHRpb25zOjpzZWVkT2ZWTVJhbmRvbUZvckZ1enplcigpID8gT3B0aW9uczo6
c2VlZE9mVk1SYW5kb21Gb3JGdXp6ZXIoKSA6IGNyeXB0b2dyYXBoaWNhbGx5UmFuZG9tTnVtYmVy
KCkpCiAgICAgLCBtX2ludGVncml0eVJhbmRvbSgqdGhpcykKICAgICAsIGhlYXAoKnRoaXMsIGhl
YXBUeXBlKQotICAgICwgZmFzdE1hbGxvY0FsbG9jYXRvcihtYWtlVW5pcXVlPEZhc3RNYWxsb2NB
bGlnbmVkTWVtb3J5QWxsb2NhdG9yPigpKQotICAgICwgcHJpbWl0aXZlR2lnYWNhZ2VBbGxvY2F0
b3IobWFrZVVuaXF1ZTxHaWdhY2FnZUFsaWduZWRNZW1vcnlBbGxvY2F0b3I+KEdpZ2FjYWdlOjpQ
cmltaXRpdmUpKQotICAgICwganNWYWx1ZUdpZ2FjYWdlQWxsb2NhdG9yKG1ha2VVbmlxdWU8R2ln
YWNhZ2VBbGlnbmVkTWVtb3J5QWxsb2NhdG9yPihHaWdhY2FnZTo6SlNWYWx1ZSkpCi0gICAgLCBh
dXhpbGlhcnlIZWFwQ2VsbFR5cGUobWFrZVVuaXF1ZTxIZWFwQ2VsbFR5cGU+KENlbGxBdHRyaWJ1
dGVzKERvZXNOb3ROZWVkRGVzdHJ1Y3Rpb24sIEhlYXBDZWxsOjpBdXhpbGlhcnkpKSkKLSAgICAs
IGltbXV0YWJsZUJ1dHRlcmZseUhlYXBDZWxsVHlwZShtYWtlVW5pcXVlPEhlYXBDZWxsVHlwZT4o
Q2VsbEF0dHJpYnV0ZXMoRG9lc05vdE5lZWREZXN0cnVjdGlvbiwgSGVhcENlbGw6OkpTQ2VsbFdp
dGhJbmRleGluZ0hlYWRlcikpKQotICAgICwgY2VsbEhlYXBDZWxsVHlwZShtYWtlVW5pcXVlPEhl
YXBDZWxsVHlwZT4oQ2VsbEF0dHJpYnV0ZXMoRG9lc05vdE5lZWREZXN0cnVjdGlvbiwgSGVhcENl
bGw6OkpTQ2VsbCkpKQotICAgICwgZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZShtYWtlVW5p
cXVlPEhlYXBDZWxsVHlwZT4oQ2VsbEF0dHJpYnV0ZXMoTmVlZHNEZXN0cnVjdGlvbiwgSGVhcENl
bGw6OkpTQ2VsbCkpKQotICAgICwgYXBpR2xvYmFsT2JqZWN0SGVhcENlbGxUeXBlKElzb0hlYXBD
ZWxsVHlwZTo6Y3JlYXRlPEpTQVBJR2xvYmFsT2JqZWN0PigpKQotICAgICwgY2FsbGJhY2tDb25z
dHJ1Y3RvckhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OmNyZWF0ZTxKU0NhbGxiYWNrQ29u
c3RydWN0b3I+KCkpCi0gICAgLCBjYWxsYmFja0dsb2JhbE9iamVjdEhlYXBDZWxsVHlwZShJc29I
ZWFwQ2VsbFR5cGU6OmNyZWF0ZTxKU0NhbGxiYWNrT2JqZWN0PEpTR2xvYmFsT2JqZWN0Pj4oKSkK
LSAgICAsIGNhbGxiYWNrT2JqZWN0SGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6Y3JlYXRl
PEpTQ2FsbGJhY2tPYmplY3Q8SlNOb25GaW5hbE9iamVjdD4+KCkpCi0gICAgLCBjdXN0b21HZXR0
ZXJGdW5jdGlvbkhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OmNyZWF0ZTxKU0N1c3RvbUdl
dHRlckZ1bmN0aW9uPigpKQotICAgICwgY3VzdG9tU2V0dGVyRnVuY3Rpb25IZWFwQ2VsbFR5cGUo
SXNvSGVhcENlbGxUeXBlOjpjcmVhdGU8SlNDdXN0b21TZXR0ZXJGdW5jdGlvbj4oKSkKLSAgICAs
IGRhdGVJbnN0YW5jZUhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OmNyZWF0ZTxEYXRlSW5z
dGFuY2U+KCkpCi0gICAgLCBlcnJvckluc3RhbmNlSGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlw
ZTo6Y3JlYXRlPEVycm9ySW5zdGFuY2U+KCkpCi0gICAgLCBmaW5hbGl6YXRpb25SZWdpc3RyeUNl
bGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6Y3JlYXRlPEpTRmluYWxpemF0aW9uUmVnaXN0cnk+KCkp
Ci0gICAgLCBnbG9iYWxMZXhpY2FsRW52aXJvbm1lbnRIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxU
eXBlOjpjcmVhdGU8SlNHbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQ+KCkpCi0gICAgLCBnbG9iYWxP
YmplY3RIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpjcmVhdGU8SlNHbG9iYWxPYmplY3Q+
KCkpCi0gICAgLCBpbmplY3RlZFNjcmlwdEhvc3RTcGFjZUhlYXBDZWxsVHlwZShJc29IZWFwQ2Vs
bFR5cGU6OmNyZWF0ZTxJbnNwZWN0b3I6OkpTSW5qZWN0ZWRTY3JpcHRIb3N0PigpKQotICAgICwg
amF2YVNjcmlwdENhbGxGcmFtZUhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OmNyZWF0ZTxJ
bnNwZWN0b3I6OkpTSmF2YVNjcmlwdENhbGxGcmFtZT4oKSkKLSAgICAsIGpzTW9kdWxlUmVjb3Jk
SGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6Y3JlYXRlPEpTTW9kdWxlUmVjb3JkPigpKQot
ICAgICwgbW9kdWxlTmFtZXNwYWNlT2JqZWN0SGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6
Y3JlYXRlPEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0PigpKQotICAgICwgbmF0aXZlU3RkRnVuY3Rp
b25IZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpjcmVhdGU8SlNOYXRpdmVTdGRGdW5jdGlv
bj4oKSkKLSAgICAsIHN0cmluZ0hlYXBDZWxsVHlwZShtYWtlVW5pcXVlPElzb0lubGluZWRIZWFw
Q2VsbFR5cGU8SlNTdHJpbmc+PigpKQotICAgICwgd2Vha01hcEhlYXBDZWxsVHlwZShJc29IZWFw
Q2VsbFR5cGU6OmNyZWF0ZTxKU1dlYWtNYXA+KCkpCi0gICAgLCB3ZWFrU2V0SGVhcENlbGxUeXBl
KElzb0hlYXBDZWxsVHlwZTo6Y3JlYXRlPEpTV2Vha1NldD4oKSkKLSAgICAsIGRlc3RydWN0aWJs
ZU9iamVjdEhlYXBDZWxsVHlwZShtYWtlVW5pcXVlPEpTRGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENl
bGxUeXBlPigpKQotI2lmIEpTQ19PQkpDX0FQSV9FTkFCTEVECi0gICAgLCBhcGlXcmFwcGVyT2Jq
ZWN0SGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6Y3JlYXRlPEpTQ2FsbGJhY2tPYmplY3Q8
SlNBUElXcmFwcGVyT2JqZWN0Pj4oKSkKLSAgICAsIG9iakNDYWxsYmFja0Z1bmN0aW9uSGVhcENl
bGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6Y3JlYXRlPE9iakNDYWxsYmFja0Z1bmN0aW9uPigpKQot
I2VuZGlmCi0jaWZkZWYgSlNDX0dMSUJfQVBJX0VOQUJMRUQKLSAgICAsIGFwaVdyYXBwZXJPYmpl
Y3RIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpjcmVhdGU8SlNDYWxsYmFja09iamVjdDxK
U0FQSVdyYXBwZXJPYmplY3Q+PigpKQotICAgICwgY2FsbGJhY2tBUElXcmFwcGVyR2xvYmFsT2Jq
ZWN0SGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6Y3JlYXRlPEpTQ2FsbGJhY2tPYmplY3Q8
SlNBUElXcmFwcGVyR2xvYmFsT2JqZWN0Pj4oKSkKLSAgICAsIGpzY0NhbGxiYWNrRnVuY3Rpb25I
ZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpjcmVhdGU8SlNDQ2FsbGJhY2tGdW5jdGlvbj4o
KSkKLSNlbmRpZgotICAgICwgaW50bENvbGxhdG9ySGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlw
ZTo6Y3JlYXRlPEludGxDb2xsYXRvcj4oKSkKLSAgICAsIGludGxEYXRlVGltZUZvcm1hdEhlYXBD
ZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OmNyZWF0ZTxJbnRsRGF0ZVRpbWVGb3JtYXQ+KCkpCi0g
ICAgLCBpbnRsRGlzcGxheU5hbWVzSGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6Y3JlYXRl
PEludGxEaXNwbGF5TmFtZXM+KCkpCi0gICAgLCBpbnRsTGlzdEZvcm1hdEhlYXBDZWxsVHlwZShJ
c29IZWFwQ2VsbFR5cGU6OmNyZWF0ZTxJbnRsTGlzdEZvcm1hdD4oKSkKLSAgICAsIGludGxMb2Nh
bGVIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpjcmVhdGU8SW50bExvY2FsZT4oKSkKLSAg
ICAsIGludGxOdW1iZXJGb3JtYXRIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpjcmVhdGU8
SW50bE51bWJlckZvcm1hdD4oKSkKLSAgICAsIGludGxQbHVyYWxSdWxlc0hlYXBDZWxsVHlwZShJ
c29IZWFwQ2VsbFR5cGU6OmNyZWF0ZTxJbnRsUGx1cmFsUnVsZXM+KCkpCi0gICAgLCBpbnRsUmVs
YXRpdmVUaW1lRm9ybWF0SGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6Y3JlYXRlPEludGxS
ZWxhdGl2ZVRpbWVGb3JtYXQ+KCkpCi0gICAgLCBpbnRsU2VnbWVudEl0ZXJhdG9ySGVhcENlbGxU
eXBlKElzb0hlYXBDZWxsVHlwZTo6Y3JlYXRlPEludGxTZWdtZW50SXRlcmF0b3I+KCkpCi0gICAg
LCBpbnRsU2VnbWVudGVySGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6Y3JlYXRlPEludGxT
ZWdtZW50ZXI+KCkpCi0gICAgLCBpbnRsU2VnbWVudHNIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxU
eXBlOjpjcmVhdGU8SW50bFNlZ21lbnRzPigpKQotI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKLSAg
ICAsIHdlYkFzc2VtYmx5Q29kZUJsb2NrSGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6Y3Jl
YXRlPEpTV2ViQXNzZW1ibHlDb2RlQmxvY2s+KCkpCi0gICAgLCB3ZWJBc3NlbWJseUV4Y2VwdGlv
bkhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OmNyZWF0ZTxKU1dlYkFzc2VtYmx5RXhjZXB0
aW9uPigpKQotICAgICwgd2ViQXNzZW1ibHlGdW5jdGlvbkhlYXBDZWxsVHlwZShJc29IZWFwQ2Vs
bFR5cGU6OmNyZWF0ZTxXZWJBc3NlbWJseUZ1bmN0aW9uPigpKQotICAgICwgd2ViQXNzZW1ibHlH
bG9iYWxIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpjcmVhdGU8SlNXZWJBc3NlbWJseUds
b2JhbD4oKSkKLSAgICAsIHdlYkFzc2VtYmx5SW5zdGFuY2VIZWFwQ2VsbFR5cGUoSXNvSGVhcENl
bGxUeXBlOjpjcmVhdGU8SlNXZWJBc3NlbWJseUluc3RhbmNlPigpKQotICAgICwgd2ViQXNzZW1i
bHlNZW1vcnlIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpjcmVhdGU8SlNXZWJBc3NlbWJs
eU1lbW9yeT4oKSkKLSAgICAsIHdlYkFzc2VtYmx5TW9kdWxlSGVhcENlbGxUeXBlKElzb0hlYXBD
ZWxsVHlwZTo6Y3JlYXRlPEpTV2ViQXNzZW1ibHlNb2R1bGU+KCkpCi0gICAgLCB3ZWJBc3NlbWJs
eU1vZHVsZVJlY29yZEhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OmNyZWF0ZTxXZWJBc3Nl
bWJseU1vZHVsZVJlY29yZD4oKSkKLSAgICAsIHdlYkFzc2VtYmx5VGFibGVIZWFwQ2VsbFR5cGUo
SXNvSGVhcENlbGxUeXBlOjpjcmVhdGU8SlNXZWJBc3NlbWJseVRhYmxlPigpKQotICAgICwgd2Vi
QXNzZW1ibHlUYWdIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpjcmVhdGU8SlNXZWJBc3Nl
bWJseVRhZz4oKSkKLSNlbmRpZgotICAgICwgcHJpbWl0aXZlR2lnYWNhZ2VBdXhpbGlhcnlTcGFj
ZSgiUHJpbWl0aXZlIEdpZ2FjYWdlIEF1eGlsaWFyeSIsIGhlYXAsICphdXhpbGlhcnlIZWFwQ2Vs
bFR5cGUsIHByaW1pdGl2ZUdpZ2FjYWdlQWxsb2NhdG9yLmdldCgpKSAvLyBIYXNoOjB4M2U3Y2Q3
NjIKLSAgICAsIGpzVmFsdWVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlKCJKU1ZhbHVlIEdpZ2FjYWdl
IEF1eGlsaWFyeSIsIGhlYXAsICphdXhpbGlhcnlIZWFwQ2VsbFR5cGUsIGpzVmFsdWVHaWdhY2Fn
ZUFsbG9jYXRvci5nZXQoKSkgLy8gSGFzaDoweDI0MWU5NDYKLSAgICAsIGltbXV0YWJsZUJ1dHRl
cmZseUpTVmFsdWVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlKCJJbW11dGFibGVCdXR0ZXJmbHkgR2ln
YWNhZ2UgSlNDZWxsV2l0aEluZGV4aW5nSGVhZGVyIiwgaGVhcCwgKmltbXV0YWJsZUJ1dHRlcmZs
eUhlYXBDZWxsVHlwZSwganNWYWx1ZUdpZ2FjYWdlQWxsb2NhdG9yLmdldCgpKSAvLyBIYXNoOjB4
N2E5NDUzMDAKLSAgICAsIGNlbGxTcGFjZSgiSlNDZWxsIiwgaGVhcCwgKmNlbGxIZWFwQ2VsbFR5
cGUsIGZhc3RNYWxsb2NBbGxvY2F0b3IuZ2V0KCkpIC8vIEhhc2g6MHhhZGZiNWE3OQotICAgICwg
dmFyaWFibGVTaXplZENlbGxTcGFjZSgiVmFyaWFibGUgU2l6ZWQgSlNDZWxsIiwgaGVhcCwgKmNl
bGxIZWFwQ2VsbFR5cGUsIGZhc3RNYWxsb2NBbGxvY2F0b3IuZ2V0KCkpIC8vIEhhc2g6MHhiY2Q3
NjljYwotICAgICwgZGVzdHJ1Y3RpYmxlT2JqZWN0U3BhY2UoIkpTRGVzdHJ1Y3RpYmxlT2JqZWN0
IiwgaGVhcCwgKmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSwgZmFzdE1hbGxvY0FsbG9j
YXRvci5nZXQoKSkgLy8gSGFzaDoweDRmNWVkN2E5Ci0gICAgLCBhcnJheVNwYWNlIElTT19TVUJT
UEFDRV9JTklUKGhlYXAsICpjZWxsSGVhcENlbGxUeXBlLCBKU0FycmF5KQotICAgICwgYmlnSW50
U3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoaGVhcCwgKmNlbGxIZWFwQ2VsbFR5cGUsIEpTQmlnSW50
KQotICAgICwgY2FsbGVlU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoaGVhcCwgKmNlbGxIZWFwQ2Vs
bFR5cGUsIEpTQ2FsbGVlKQotICAgICwgY2xvbmVkQXJndW1lbnRzU3BhY2UgSVNPX1NVQlNQQUNF
X0lOSVQoaGVhcCwgKmNlbGxIZWFwQ2VsbFR5cGUsIENsb25lZEFyZ3VtZW50cykKLSAgICAsIGN1
c3RvbUdldHRlclNldHRlclNwYWNlIElTT19TVUJTUEFDRV9JTklUKGhlYXAsICpjZWxsSGVhcENl
bGxUeXBlLCBDdXN0b21HZXR0ZXJTZXR0ZXIpCi0gICAgLCBkYXRlSW5zdGFuY2VTcGFjZSBJU09f
U1VCU1BBQ0VfSU5JVChoZWFwLCAqZGF0ZUluc3RhbmNlSGVhcENlbGxUeXBlLCBEYXRlSW5zdGFu
Y2UpCi0gICAgLCBkb21BdHRyaWJ1dGVHZXR0ZXJTZXR0ZXJTcGFjZSBJU09fU1VCU1BBQ0VfSU5J
VChoZWFwLCAqY2VsbEhlYXBDZWxsVHlwZSwgRE9NQXR0cmlidXRlR2V0dGVyU2V0dGVyKQotICAg
ICwgZXhjZXB0aW9uU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoaGVhcCwgKmRlc3RydWN0aWJsZUNl
bGxIZWFwQ2VsbFR5cGUsIEV4Y2VwdGlvbikKLSAgICAsIGV4ZWN1dGFibGVUb0NvZGVCbG9ja0Vk
Z2VTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVChoZWFwLCAqY2VsbEhlYXBDZWxsVHlwZSwgRXhlY3V0
YWJsZVRvQ29kZUJsb2NrRWRnZSkgLy8gSGFzaDoweDdiNzMwYjIwCi0gICAgLCBmdW5jdGlvblNw
YWNlIElTT19TVUJTUEFDRV9JTklUKGhlYXAsICpjZWxsSGVhcENlbGxUeXBlLCBKU0Z1bmN0aW9u
KSAvLyBIYXNoOjB4ODAwZmNhNzIKLSAgICAsIGdldHRlclNldHRlclNwYWNlIElTT19TVUJTUEFD
RV9JTklUKGhlYXAsICpjZWxsSGVhcENlbGxUeXBlLCBHZXR0ZXJTZXR0ZXIpCi0gICAgLCBnbG9i
YWxMZXhpY2FsRW52aXJvbm1lbnRTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVChoZWFwLCAqZ2xvYmFs
TGV4aWNhbEVudmlyb25tZW50SGVhcENlbGxUeXBlLCBKU0dsb2JhbExleGljYWxFbnZpcm9ubWVu
dCkKLSAgICAsIGludGVybmFsRnVuY3Rpb25TcGFjZSBJU09fU1VCU1BBQ0VfSU5JVChoZWFwLCAq
Y2VsbEhlYXBDZWxsVHlwZSwgSW50ZXJuYWxGdW5jdGlvbikgLy8gSGFzaDoweGY4NDVjNDY0Ci0g
ICAgLCBqc1Byb3h5U3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoaGVhcCwgKmNlbGxIZWFwQ2VsbFR5
cGUsIEpTUHJveHkpCi0gICAgLCBuYXRpdmVFeGVjdXRhYmxlU3BhY2UgSVNPX1NVQlNQQUNFX0lO
SVQoaGVhcCwgKmRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUsIE5hdGl2ZUV4ZWN1dGFibGUp
IC8vIEhhc2g6MHg2NzU2N2Y5NQotICAgICwgbnVtYmVyT2JqZWN0U3BhY2UgSVNPX1NVQlNQQUNF
X0lOSVQoaGVhcCwgKmNlbGxIZWFwQ2VsbFR5cGUsIE51bWJlck9iamVjdCkKLSAgICAsIHBsYWlu
T2JqZWN0U3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoaGVhcCwgKmNlbGxIZWFwQ2VsbFR5cGUsIEpT
Tm9uRmluYWxPYmplY3QpIC8vIE1haW5seSB1c2VkIGZvciBwcm90b3R5cGVzLgotICAgICwgcHJv
bWlzZVNwYWNlIElTT19TVUJTUEFDRV9JTklUKGhlYXAsICpjZWxsSGVhcENlbGxUeXBlLCBKU1By
b21pc2UpCi0gICAgLCBwcm9wZXJ0eU5hbWVFbnVtZXJhdG9yU3BhY2UgSVNPX1NVQlNQQUNFX0lO
SVQoaGVhcCwgKmNlbGxIZWFwQ2VsbFR5cGUsIEpTUHJvcGVydHlOYW1lRW51bWVyYXRvcikKLSAg
ICAsIHByb3BlcnR5VGFibGVTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVChoZWFwLCAqZGVzdHJ1Y3Rp
YmxlQ2VsbEhlYXBDZWxsVHlwZSwgUHJvcGVydHlUYWJsZSkgLy8gSGFzaDoweGM2YmM5ZjEyCi0g
ICAgLCByZWdFeHBTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVChoZWFwLCAqZGVzdHJ1Y3RpYmxlQ2Vs
bEhlYXBDZWxsVHlwZSwgUmVnRXhwKQotICAgICwgcmVnRXhwT2JqZWN0U3BhY2UgSVNPX1NVQlNQ
QUNFX0lOSVQoaGVhcCwgKmNlbGxIZWFwQ2VsbFR5cGUsIFJlZ0V4cE9iamVjdCkKLSAgICAsIHJv
cGVTdHJpbmdTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVChoZWFwLCAqc3RyaW5nSGVhcENlbGxUeXBl
LCBKU1JvcGVTdHJpbmcpCi0gICAgLCBzY29wZWRBcmd1bWVudHNTcGFjZSBJU09fU1VCU1BBQ0Vf
SU5JVChoZWFwLCAqY2VsbEhlYXBDZWxsVHlwZSwgU2NvcGVkQXJndW1lbnRzKQotICAgICwgc3Bh
cnNlQXJyYXlWYWx1ZU1hcFNwYWNlIElTT19TVUJTUEFDRV9JTklUKGhlYXAsICpkZXN0cnVjdGli
bGVDZWxsSGVhcENlbGxUeXBlLCBTcGFyc2VBcnJheVZhbHVlTWFwKQotICAgICwgc3RyaW5nU3Bh
Y2UgSVNPX1NVQlNQQUNFX0lOSVQoaGVhcCwgKnN0cmluZ0hlYXBDZWxsVHlwZSwgSlNTdHJpbmcp
IC8vIEhhc2g6MHg5MGNmNzU4ZgotICAgICwgc3RyaW5nT2JqZWN0U3BhY2UgSVNPX1NVQlNQQUNF
X0lOSVQoaGVhcCwgKmNlbGxIZWFwQ2VsbFR5cGUsIFN0cmluZ09iamVjdCkKLSAgICAsIHN0cnVj
dHVyZUNoYWluU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoaGVhcCwgKmNlbGxIZWFwQ2VsbFR5cGUs
IFN0cnVjdHVyZUNoYWluKQotICAgICwgc3RydWN0dXJlUmFyZURhdGFTcGFjZSBJU09fU1VCU1BB
Q0VfSU5JVChoZWFwLCAqZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZSwgU3RydWN0dXJlUmFy
ZURhdGEpIC8vIEhhc2g6MHhhY2E0ZTYyZAotICAgICwgc3RydWN0dXJlU3BhY2UgSVNPX1NVQlNQ
QUNFX0lOSVQoaGVhcCwgKmRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUsIFN0cnVjdHVyZSkg
Ly8gSGFzaDoweDFmMWJjZGNhCi0gICAgLCBicmFuZGVkU3RydWN0dXJlU3BhY2UgSVNPX1NVQlNQ
QUNFX0lOSVQoaGVhcCwgKmRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUsIEJyYW5kZWRTdHJ1
Y3R1cmUpCi0gICAgLCBzeW1ib2xUYWJsZVNwYWNlIElTT19TVUJTUEFDRV9JTklUKGhlYXAsICpk
ZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlLCBTeW1ib2xUYWJsZSkgLy8gSGFzaDoweGM1MjE1
YWZkCi0gICAgLCBleGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlc1dpdGhDb25zdHJhaW50cyhleGVj
dXRhYmxlVG9Db2RlQmxvY2tFZGdlU3BhY2UpCi0gICAgLCBleGVjdXRhYmxlVG9Db2RlQmxvY2tF
ZGdlc1dpdGhGaW5hbGl6ZXJzKGV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2VTcGFjZSkKLSAgICAs
IGNvZGVCbG9ja1NwYWNlIElTT19TVUJTUEFDRV9JTklUKGhlYXAsICpkZXN0cnVjdGlibGVDZWxs
SGVhcENlbGxUeXBlLCBDb2RlQmxvY2spIC8vIEhhc2g6MHg3N2U2NmVjOQotICAgICwgZnVuY3Rp
b25FeGVjdXRhYmxlU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoaGVhcCwgKmRlc3RydWN0aWJsZUNl
bGxIZWFwQ2VsbFR5cGUsIEZ1bmN0aW9uRXhlY3V0YWJsZSkgLy8gSGFzaDoweDVkMTU4ZjMKLSAg
ICAsIHByb2dyYW1FeGVjdXRhYmxlU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoaGVhcCwgKmRlc3Ry
dWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUsIFByb2dyYW1FeGVjdXRhYmxlKSAvLyBIYXNoOjB4NTI3
Yzc3ZTcKLSAgICAsIHVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlU3BhY2UgSVNPX1NVQlNQQUNF
X0lOSVQoaGVhcCwgKmRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUsIFVubGlua2VkRnVuY3Rp
b25FeGVjdXRhYmxlKSAvLyBIYXNoOjB4ZjZiODI4ZDkKICAgICAsIHZtVHlwZSh2bVR5cGUpCiAg
ICAgLCBjbGllbnREYXRhKG51bGxwdHIpCiAgICAgLCB0b3BFbnRyeUZyYW1lKG51bGxwdHIpCkBA
IC0xNTcyLDEzNyArMTM4Nyw2IEBAIHZvaWQgVk06OmVuc3VyZVNoYWRvd0NoaWNrZW4oKQogICAg
IG1fc2hhZG93Q2hpY2tlbiA9IG1ha2VVbmlxdWU8U2hhZG93Q2hpY2tlbj4oKTsKIH0KIAotI2Rl
ZmluZSBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1cobmFtZSwgaGVhcENl
bGxUeXBlLCB0eXBlKSBcCi0gICAgSXNvU3Vic3BhY2UqIFZNOjpuYW1lIyNTbG93KCkgXAotICAg
IHsgXAotICAgICAgICBBU1NFUlQoIW1fIyNuYW1lKTsgXAotICAgICAgICBhdXRvIHNwYWNlID0g
bWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQoaGVhcCwgaGVhcENlbGxU
eXBlLCB0eXBlKTsgXAotICAgICAgICBXVEY6OnN0b3JlU3RvcmVGZW5jZSgpOyBcCi0gICAgICAg
IG1fIyNuYW1lID0gV1RGTW92ZShzcGFjZSk7IFwKLSAgICAgICAgcmV0dXJuIG1fIyNuYW1lLmdl
dCgpOyBcCi0gICAgfQotCi0KLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xP
VyhhcGlHbG9iYWxPYmplY3RTcGFjZSwgKmFwaUdsb2JhbE9iamVjdEhlYXBDZWxsVHlwZSwgSlNB
UElHbG9iYWxPYmplY3QpCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1co
YXBpVmFsdWVXcmFwcGVyU3BhY2UsICpjZWxsSGVhcENlbGxUeXBlLCBKU0FQSVZhbHVlV3JhcHBl
cikKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhhcnJheUJ1ZmZlclNw
YWNlLCAqY2VsbEhlYXBDZWxsVHlwZSwgSlNBcnJheUJ1ZmZlcikKLURZTkFNSUNfSVNPX1NVQlNQ
QUNFX0RFRklORV9NRU1CRVJfU0xPVyhhcnJheUl0ZXJhdG9yU3BhY2UsICpjZWxsSGVhcENlbGxU
eXBlLCBKU0FycmF5SXRlcmF0b3IpCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVS
X1NMT1coYXN5bmNHZW5lcmF0b3JTcGFjZSwgKmNlbGxIZWFwQ2VsbFR5cGUsIEpTQXN5bmNHZW5l
cmF0b3IpCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coYmlnSW50NjRB
cnJheVNwYWNlLCAqY2VsbEhlYXBDZWxsVHlwZSwgSlNCaWdJbnQ2NEFycmF5KQotRFlOQU1JQ19J
U09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGJpZ0ludE9iamVjdFNwYWNlLCAqY2VsbEhl
YXBDZWxsVHlwZSwgQmlnSW50T2JqZWN0KQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01F
TUJFUl9TTE9XKGJpZ1VpbnQ2NEFycmF5U3BhY2UsICpjZWxsSGVhcENlbGxUeXBlLCBKU0JpZ1Vp
bnQ2NEFycmF5KQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGJvb2xl
YW5PYmplY3RTcGFjZSwgKmNlbGxIZWFwQ2VsbFR5cGUsIEJvb2xlYW5PYmplY3QpCi1EWU5BTUlD
X0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coYm91bmRGdW5jdGlvblNwYWNlLCAqY2Vs
bEhlYXBDZWxsVHlwZSwgSlNCb3VuZEZ1bmN0aW9uKSAvLyBIYXNoOjB4ZDc5MTZkNDEKLURZTkFN
SUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhjYWxsYmFja0NvbnN0cnVjdG9yU3Bh
Y2UsICpjYWxsYmFja0NvbnN0cnVjdG9ySGVhcENlbGxUeXBlLCBKU0NhbGxiYWNrQ29uc3RydWN0
b3IpCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coY2FsbGJhY2tHbG9i
YWxPYmplY3RTcGFjZSwgKmNhbGxiYWNrR2xvYmFsT2JqZWN0SGVhcENlbGxUeXBlLCBKU0NhbGxi
YWNrT2JqZWN0PEpTR2xvYmFsT2JqZWN0PikKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9N
RU1CRVJfU0xPVyhjYWxsYmFja0Z1bmN0aW9uU3BhY2UsICpjZWxsSGVhcENlbGxUeXBlLCBKU0Nh
bGxiYWNrRnVuY3Rpb24pIC8vIEhhc2g6MHhlNzY0OGViYwotRFlOQU1JQ19JU09fU1VCU1BBQ0Vf
REVGSU5FX01FTUJFUl9TTE9XKGNhbGxiYWNrT2JqZWN0U3BhY2UsICpjYWxsYmFja09iamVjdEhl
YXBDZWxsVHlwZSwgSlNDYWxsYmFja09iamVjdDxKU05vbkZpbmFsT2JqZWN0PikKLURZTkFNSUNf
SVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhjdXN0b21HZXR0ZXJGdW5jdGlvblNwYWNl
LCAqY3VzdG9tR2V0dGVyRnVuY3Rpb25IZWFwQ2VsbFR5cGUsIEpTQ3VzdG9tR2V0dGVyRnVuY3Rp
b24pCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coY3VzdG9tU2V0dGVy
RnVuY3Rpb25TcGFjZSwgKmN1c3RvbVNldHRlckZ1bmN0aW9uSGVhcENlbGxUeXBlLCBKU0N1c3Rv
bVNldHRlckZ1bmN0aW9uKQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9X
KGRhdGFWaWV3U3BhY2UsICpjZWxsSGVhcENlbGxUeXBlLCBKU0RhdGFWaWV3KQotRFlOQU1JQ19J
U09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGRlYnVnZ2VyU2NvcGVTcGFjZSwgKmNlbGxI
ZWFwQ2VsbFR5cGUsIERlYnVnZ2VyU2NvcGUpCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVf
TUVNQkVSX1NMT1coZXJyb3JJbnN0YW5jZVNwYWNlLCAqZXJyb3JJbnN0YW5jZUhlYXBDZWxsVHlw
ZSwgRXJyb3JJbnN0YW5jZSkgLy8gSGFzaDoweDNmNDBkNGEKLURZTkFNSUNfSVNPX1NVQlNQQUNF
X0RFRklORV9NRU1CRVJfU0xPVyhmbG9hdDMyQXJyYXlTcGFjZSwgKmNlbGxIZWFwQ2VsbFR5cGUs
IEpTRmxvYXQzMkFycmF5KQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9X
KGZsb2F0NjRBcnJheVNwYWNlLCAqY2VsbEhlYXBDZWxsVHlwZSwgSlNGbG9hdDY0QXJyYXkpCi1E
WU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coZnVuY3Rpb25SYXJlRGF0YVNw
YWNlLCAqZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZSwgRnVuY3Rpb25SYXJlRGF0YSkKLURZ
TkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhnZW5lcmF0b3JTcGFjZSwgKmNl
bGxIZWFwQ2VsbFR5cGUsIEpTR2VuZXJhdG9yKQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5F
X01FTUJFUl9TTE9XKGdsb2JhbE9iamVjdFNwYWNlLCAqZ2xvYmFsT2JqZWN0SGVhcENlbGxUeXBl
LCBKU0dsb2JhbE9iamVjdCkKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xP
VyhpbmplY3RlZFNjcmlwdEhvc3RTcGFjZSwgKmluamVjdGVkU2NyaXB0SG9zdFNwYWNlSGVhcENl
bGxUeXBlLCBJbnNwZWN0b3I6OkpTSW5qZWN0ZWRTY3JpcHRIb3N0KQotRFlOQU1JQ19JU09fU1VC
U1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGludDhBcnJheVNwYWNlLCAqY2VsbEhlYXBDZWxsVHlw
ZSwgSlNJbnQ4QXJyYXkpCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1co
aW50MTZBcnJheVNwYWNlLCAqY2VsbEhlYXBDZWxsVHlwZSwgSlNJbnQxNkFycmF5KQotRFlOQU1J
Q19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGludDMyQXJyYXlTcGFjZSwgKmNlbGxI
ZWFwQ2VsbFR5cGUsIEpTSW50MzJBcnJheSkKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9N
RU1CRVJfU0xPVyhqYXZhU2NyaXB0Q2FsbEZyYW1lU3BhY2UsICpqYXZhU2NyaXB0Q2FsbEZyYW1l
SGVhcENlbGxUeXBlLCBJbnNwZWN0b3I6OkpTSmF2YVNjcmlwdENhbGxGcmFtZSkKLURZTkFNSUNf
SVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhqc01vZHVsZVJlY29yZFNwYWNlLCAqanNN
b2R1bGVSZWNvcmRIZWFwQ2VsbFR5cGUsIEpTTW9kdWxlUmVjb3JkKQotRFlOQU1JQ19JU09fU1VC
U1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKG1hcEJ1Y2tldFNwYWNlLCAqY2VsbEhlYXBDZWxsVHlw
ZSwgSlNNYXA6OkJ1Y2tldFR5cGUpCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVS
X1NMT1cobWFwSXRlcmF0b3JTcGFjZSwgKmNlbGxIZWFwQ2VsbFR5cGUsIEpTTWFwSXRlcmF0b3Ip
Ci1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1cobWFwU3BhY2UsICpjZWxs
SGVhcENlbGxUeXBlLCBKU01hcCkKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJf
U0xPVyhtb2R1bGVOYW1lc3BhY2VPYmplY3RTcGFjZSwgKm1vZHVsZU5hbWVzcGFjZU9iamVjdEhl
YXBDZWxsVHlwZSwgSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QpCi1EWU5BTUlDX0lTT19TVUJTUEFD
RV9ERUZJTkVfTUVNQkVSX1NMT1cobmF0aXZlU3RkRnVuY3Rpb25TcGFjZSwgKm5hdGl2ZVN0ZEZ1
bmN0aW9uSGVhcENlbGxUeXBlLCBKU05hdGl2ZVN0ZEZ1bmN0aW9uKSAvLyBIYXNoOjB4NzBlZDYx
ZTQKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhwcm94eU9iamVjdFNw
YWNlLCAqY2VsbEhlYXBDZWxsVHlwZSwgUHJveHlPYmplY3QpCi1EWU5BTUlDX0lTT19TVUJTUEFD
RV9ERUZJTkVfTUVNQkVSX1NMT1cocHJveHlSZXZva2VTcGFjZSwgKmNlbGxIZWFwQ2VsbFR5cGUs
IFByb3h5UmV2b2tlKSAvLyBIYXNoOjB4YjUwNmE5MzkKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RF
RklORV9NRU1CRVJfU0xPVyhzY29wZWRBcmd1bWVudHNUYWJsZVNwYWNlLCAqZGVzdHJ1Y3RpYmxl
Q2VsbEhlYXBDZWxsVHlwZSwgU2NvcGVkQXJndW1lbnRzVGFibGUpCi1EWU5BTUlDX0lTT19TVUJT
UEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coc2NyaXB0RmV0Y2hQYXJhbWV0ZXJzU3BhY2UsICpkZXN0
cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlLCBKU1NjcmlwdEZldGNoUGFyYW1ldGVycykKLURZTkFN
SUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhzY3JpcHRGZXRjaGVyU3BhY2UsICpk
ZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlLCBKU1NjcmlwdEZldGNoZXIpCi1EWU5BTUlDX0lT
T19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coc2V0QnVja2V0U3BhY2UsICpjZWxsSGVhcENl
bGxUeXBlLCBKU1NldDo6QnVja2V0VHlwZSkKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9N
RU1CRVJfU0xPVyhzZXRJdGVyYXRvclNwYWNlLCAqY2VsbEhlYXBDZWxsVHlwZSwgSlNTZXRJdGVy
YXRvcikKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhzZXRTcGFjZSwg
KmNlbGxIZWFwQ2VsbFR5cGUsIEpTU2V0KQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01F
TUJFUl9TTE9XKHNoYWRvd1JlYWxtU3BhY2UsICpjZWxsSGVhcENlbGxUeXBlLCBTaGFkb3dSZWFs
bU9iamVjdCkKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhzdHJpY3RF
dmFsQWN0aXZhdGlvblNwYWNlLCAqY2VsbEhlYXBDZWxsVHlwZSwgU3RyaWN0RXZhbEFjdGl2YXRp
b24pCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coc3RyaW5nSXRlcmF0
b3JTcGFjZSwgKmNlbGxIZWFwQ2VsbFR5cGUsIEpTU3RyaW5nSXRlcmF0b3IpCi1EWU5BTUlDX0lT
T19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coc291cmNlQ29kZVNwYWNlLCAqZGVzdHJ1Y3Rp
YmxlQ2VsbEhlYXBDZWxsVHlwZSwgSlNTb3VyY2VDb2RlKQotRFlOQU1JQ19JU09fU1VCU1BBQ0Vf
REVGSU5FX01FTUJFUl9TTE9XKHN5bWJvbFNwYWNlLCAqZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxs
VHlwZSwgU3ltYm9sKQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHN5
bWJvbE9iamVjdFNwYWNlLCAqY2VsbEhlYXBDZWxsVHlwZSwgU3ltYm9sT2JqZWN0KQotRFlOQU1J
Q19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHRlbXBsYXRlT2JqZWN0RGVzY3JpcHRv
clNwYWNlLCAqZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZSwgSlNUZW1wbGF0ZU9iamVjdERl
c2NyaXB0b3IpCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1codGVtcG9y
YWxDYWxlbmRhclNwYWNlLCAqY2VsbEhlYXBDZWxsVHlwZSwgVGVtcG9yYWxDYWxlbmRhcikKLURZ
TkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh0ZW1wb3JhbER1cmF0aW9uU3Bh
Y2UsICpjZWxsSGVhcENlbGxUeXBlLCBUZW1wb3JhbER1cmF0aW9uKQotRFlOQU1JQ19JU09fU1VC
U1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHRlbXBvcmFsSW5zdGFudFNwYWNlLCAqY2VsbEhlYXBD
ZWxsVHlwZSwgVGVtcG9yYWxJbnN0YW50KQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01F
TUJFUl9TTE9XKHRlbXBvcmFsUGxhaW5UaW1lU3BhY2UsICpjZWxsSGVhcENlbGxUeXBlLCBUZW1w
b3JhbFBsYWluVGltZSkKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh0
ZW1wb3JhbFRpbWVab25lU3BhY2UsICpjZWxsSGVhcENlbGxUeXBlLCBUZW1wb3JhbFRpbWVab25l
KQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHVpbnQ4QXJyYXlTcGFj
ZSwgKmNlbGxIZWFwQ2VsbFR5cGUsIEpTVWludDhBcnJheSkKLURZTkFNSUNfSVNPX1NVQlNQQUNF
X0RFRklORV9NRU1CRVJfU0xPVyh1aW50OENsYW1wZWRBcnJheVNwYWNlLCAqY2VsbEhlYXBDZWxs
VHlwZSwgSlNVaW50OENsYW1wZWRBcnJheSkKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9N
RU1CRVJfU0xPVyh1aW50MTZBcnJheVNwYWNlLCAqY2VsbEhlYXBDZWxsVHlwZSwgSlNVaW50MTZB
cnJheSkKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh1aW50MzJBcnJh
eVNwYWNlLCAqY2VsbEhlYXBDZWxsVHlwZSwgSlNVaW50MzJBcnJheSkKLURZTkFNSUNfSVNPX1NV
QlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh1bmxpbmtlZEV2YWxDb2RlQmxvY2tTcGFjZSwgKmRl
c3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUsIFVubGlua2VkRXZhbENvZGVCbG9jaykKLURZTkFN
SUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh1bmxpbmtlZEZ1bmN0aW9uQ29kZUJs
b2NrU3BhY2UsICpkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlLCBVbmxpbmtlZEZ1bmN0aW9u
Q29kZUJsb2NrKQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHVubGlu
a2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9ja1NwYWNlLCAqZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxs
VHlwZSwgVW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKQotRFlOQU1JQ19JU09fU1VCU1BB
Q0VfREVGSU5FX01FTUJFUl9TTE9XKHVubGlua2VkUHJvZ3JhbUNvZGVCbG9ja1NwYWNlLCAqZGVz
dHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZSwgVW5saW5rZWRQcm9ncmFtQ29kZUJsb2NrKQotRFlO
QU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHdlYWtNYXBTcGFjZSwgKndlYWtN
YXBIZWFwQ2VsbFR5cGUsIEpTV2Vha01hcCkgLy8gSGFzaDoweDY2MmIxMmEzCi1EWU5BTUlDX0lT
T19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1cod2Vha1NldFNwYWNlLCAqd2Vha1NldEhlYXBD
ZWxsVHlwZSwgSlNXZWFrU2V0KSAvLyBIYXNoOjB4NGM3ODFiMzAKLURZTkFNSUNfSVNPX1NVQlNQ
QUNFX0RFRklORV9NRU1CRVJfU0xPVyh3ZWFrT2JqZWN0UmVmU3BhY2UsICpjZWxsSGVhcENlbGxU
eXBlLCBKU1dlYWtPYmplY3RSZWYpIC8vIEhhc2g6MHg4ZWM2OGYxZgotRFlOQU1JQ19JU09fU1VC
U1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHdpdGhTY29wZVNwYWNlLCAqY2VsbEhlYXBDZWxsVHlw
ZSwgSlNXaXRoU2NvcGUpCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1co
ZmluYWxpemF0aW9uUmVnaXN0cnlTcGFjZSwgKmZpbmFsaXphdGlvblJlZ2lzdHJ5Q2VsbFR5cGUs
IEpTRmluYWxpemF0aW9uUmVnaXN0cnkpCi0jaWYgSlNDX09CSkNfQVBJX0VOQUJMRUQKLURZTkFN
SUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhhcGlXcmFwcGVyT2JqZWN0U3BhY2Us
ICphcGlXcmFwcGVyT2JqZWN0SGVhcENlbGxUeXBlLCBKU0NhbGxiYWNrT2JqZWN0PEpTQVBJV3Jh
cHBlck9iamVjdD4pCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1cob2Jq
Q0NhbGxiYWNrRnVuY3Rpb25TcGFjZSwgKm9iakNDYWxsYmFja0Z1bmN0aW9uSGVhcENlbGxUeXBl
LCBPYmpDQ2FsbGJhY2tGdW5jdGlvbikgLy8gSGFzaDoweDEwZjYxMGI4Ci0jZW5kaWYKLSNpZmRl
ZiBKU0NfR0xJQl9BUElfRU5BQkxFRAotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJF
Ul9TTE9XKGFwaVdyYXBwZXJPYmplY3RTcGFjZSwgKmFwaVdyYXBwZXJPYmplY3RIZWFwQ2VsbFR5
cGUsIEpTQ2FsbGJhY2tPYmplY3Q8SlNBUElXcmFwcGVyT2JqZWN0PikKLURZTkFNSUNfSVNPX1NV
QlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhqc2NDYWxsYmFja0Z1bmN0aW9uU3BhY2UsICpqc2ND
YWxsYmFja0Z1bmN0aW9uSGVhcENlbGxUeXBlLCBKU0NDYWxsYmFja0Z1bmN0aW9uKQotRFlOQU1J
Q19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGNhbGxiYWNrQVBJV3JhcHBlckdsb2Jh
bE9iamVjdFNwYWNlLCAqY2FsbGJhY2tBUElXcmFwcGVyR2xvYmFsT2JqZWN0SGVhcENlbGxUeXBl
LCBKU0NhbGxiYWNrT2JqZWN0PEpTQVBJV3JhcHBlckdsb2JhbE9iamVjdD4pCi0jZW5kaWYKLURZ
TkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhpbnRsQ29sbGF0b3JTcGFjZSwg
KmludGxDb2xsYXRvckhlYXBDZWxsVHlwZSwgSW50bENvbGxhdG9yKQotRFlOQU1JQ19JU09fU1VC
U1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGludGxEYXRlVGltZUZvcm1hdFNwYWNlLCAqaW50bERh
dGVUaW1lRm9ybWF0SGVhcENlbGxUeXBlLCBJbnRsRGF0ZVRpbWVGb3JtYXQpCi1EWU5BTUlDX0lT
T19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coaW50bERpc3BsYXlOYW1lc1NwYWNlLCAqaW50
bERpc3BsYXlOYW1lc0hlYXBDZWxsVHlwZSwgSW50bERpc3BsYXlOYW1lcykKLURZTkFNSUNfSVNP
X1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhpbnRsTGlzdEZvcm1hdFNwYWNlLCAqaW50bExp
c3RGb3JtYXRIZWFwQ2VsbFR5cGUsIEludGxMaXN0Rm9ybWF0KQotRFlOQU1JQ19JU09fU1VCU1BB
Q0VfREVGSU5FX01FTUJFUl9TTE9XKGludGxMb2NhbGVTcGFjZSwgKmludGxMb2NhbGVIZWFwQ2Vs
bFR5cGUsIEludGxMb2NhbGUpCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NM
T1coaW50bE51bWJlckZvcm1hdFNwYWNlLCAqaW50bE51bWJlckZvcm1hdEhlYXBDZWxsVHlwZSwg
SW50bE51bWJlckZvcm1hdCkKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xP
VyhpbnRsUGx1cmFsUnVsZXNTcGFjZSwgKmludGxQbHVyYWxSdWxlc0hlYXBDZWxsVHlwZSwgSW50
bFBsdXJhbFJ1bGVzKQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGlu
dGxSZWxhdGl2ZVRpbWVGb3JtYXRTcGFjZSwgKmludGxSZWxhdGl2ZVRpbWVGb3JtYXRIZWFwQ2Vs
bFR5cGUsIEludGxSZWxhdGl2ZVRpbWVGb3JtYXQpCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJ
TkVfTUVNQkVSX1NMT1coaW50bFNlZ21lbnRJdGVyYXRvclNwYWNlLCAqaW50bFNlZ21lbnRJdGVy
YXRvckhlYXBDZWxsVHlwZSwgSW50bFNlZ21lbnRJdGVyYXRvcikKLURZTkFNSUNfSVNPX1NVQlNQ
QUNFX0RFRklORV9NRU1CRVJfU0xPVyhpbnRsU2VnbWVudGVyU3BhY2UsICppbnRsU2VnbWVudGVy
SGVhcENlbGxUeXBlLCBJbnRsU2VnbWVudGVyKQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5F
X01FTUJFUl9TTE9XKGludGxTZWdtZW50c1NwYWNlLCAqaW50bFNlZ21lbnRzSGVhcENlbGxUeXBl
LCBJbnRsU2VnbWVudHMpCi0jaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQotRFlOQU1JQ19JU09fU1VC
U1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGpzVG9XYXNtSUNDYWxsZWVTcGFjZSwgKmNlbGxIZWFw
Q2VsbFR5cGUsIEpTVG9XYXNtSUNDYWxsZWUpCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVf
TUVNQkVSX1NMT1cod2ViQXNzZW1ibHlDb2RlQmxvY2tTcGFjZSwgKndlYkFzc2VtYmx5Q29kZUJs
b2NrSGVhcENlbGxUeXBlLCBKU1dlYkFzc2VtYmx5Q29kZUJsb2NrKSAvLyBIYXNoOjB4OWFkOTk1
Y2QKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh3ZWJBc3NlbWJseUV4
Y2VwdGlvblNwYWNlLCAqd2ViQXNzZW1ibHlFeGNlcHRpb25IZWFwQ2VsbFR5cGUsIEpTV2ViQXNz
ZW1ibHlFeGNlcHRpb24pCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1co
d2ViQXNzZW1ibHlGdW5jdGlvblNwYWNlLCAqd2ViQXNzZW1ibHlGdW5jdGlvbkhlYXBDZWxsVHlw
ZSwgV2ViQXNzZW1ibHlGdW5jdGlvbikgLy8gSGFzaDoweDhiN2MzMmRiCi1EWU5BTUlDX0lTT19T
VUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1cod2ViQXNzZW1ibHlHbG9iYWxTcGFjZSwgKndlYkFz
c2VtYmx5R2xvYmFsSGVhcENlbGxUeXBlLCBKU1dlYkFzc2VtYmx5R2xvYmFsKQotRFlOQU1JQ19J
U09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHdlYkFzc2VtYmx5SW5zdGFuY2VTcGFjZSwg
KndlYkFzc2VtYmx5SW5zdGFuY2VIZWFwQ2VsbFR5cGUsIEpTV2ViQXNzZW1ibHlJbnN0YW5jZSkK
LURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh3ZWJBc3NlbWJseU1lbW9y
eVNwYWNlLCAqd2ViQXNzZW1ibHlNZW1vcnlIZWFwQ2VsbFR5cGUsIEpTV2ViQXNzZW1ibHlNZW1v
cnkpCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1cod2ViQXNzZW1ibHlN
b2R1bGVTcGFjZSwgKndlYkFzc2VtYmx5TW9kdWxlSGVhcENlbGxUeXBlLCBKU1dlYkFzc2VtYmx5
TW9kdWxlKQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHdlYkFzc2Vt
Ymx5TW9kdWxlUmVjb3JkU3BhY2UsICp3ZWJBc3NlbWJseU1vZHVsZVJlY29yZEhlYXBDZWxsVHlw
ZSwgV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQpCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVf
TUVNQkVSX1NMT1cod2ViQXNzZW1ibHlUYWJsZVNwYWNlLCAqd2ViQXNzZW1ibHlUYWJsZUhlYXBD
ZWxsVHlwZSwgSlNXZWJBc3NlbWJseVRhYmxlKQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5F
X01FTUJFUl9TTE9XKHdlYkFzc2VtYmx5VGFnU3BhY2UsICp3ZWJBc3NlbWJseVRhZ0hlYXBDZWxs
VHlwZSwgSlNXZWJBc3NlbWJseVRhZykKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1C
RVJfU0xPVyh3ZWJBc3NlbWJseVdyYXBwZXJGdW5jdGlvblNwYWNlLCAqY2VsbEhlYXBDZWxsVHlw
ZSwgV2ViQXNzZW1ibHlXcmFwcGVyRnVuY3Rpb24pIC8vIEhhc2g6MHhkNGE1ZmYwMQotI2VuZGlm
Ci0KLSN1bmRlZiBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1cKLQotI2Rl
ZmluZSBEWU5BTUlDX1NQQUNFX0FORF9TRVRfREVGSU5FX01FTUJFUl9TTE9XKG5hbWUsIGhlYXBD
ZWxsVHlwZSwgdHlwZSkgXAotICAgIElzb1N1YnNwYWNlKiBWTTo6bmFtZSMjU2xvdygpIFwKLSAg
ICB7IFwKLSAgICAgICAgQVNTRVJUKCFtXyMjbmFtZSk7IFwKLSAgICAgICAgYXV0byBzcGFjZSA9
IG1ha2VVbmlxdWU8U3BhY2VBbmRTZXQ+IElTT19TVUJTUEFDRV9JTklUKGhlYXAsIGhlYXBDZWxs
VHlwZSwgdHlwZSk7IFwKLSAgICAgICAgV1RGOjpzdG9yZVN0b3JlRmVuY2UoKTsgXAotICAgICAg
ICBtXyMjbmFtZSA9IFdURk1vdmUoc3BhY2UpOyBcCi0gICAgICAgIHJldHVybiAmbV8jI25hbWUt
PnNwYWNlOyBcCi0gICAgfQotCi1EWU5BTUlDX1NQQUNFX0FORF9TRVRfREVGSU5FX01FTUJFUl9T
TE9XKGV2YWxFeGVjdXRhYmxlU3BhY2UsICpkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlLCBF
dmFsRXhlY3V0YWJsZSkgLy8gSGFzaDoweDk1OGUzZTlkCi1EWU5BTUlDX1NQQUNFX0FORF9TRVRf
REVGSU5FX01FTUJFUl9TTE9XKG1vZHVsZVByb2dyYW1FeGVjdXRhYmxlU3BhY2UsICpkZXN0cnVj
dGlibGVDZWxsSGVhcENlbGxUeXBlLCBNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZSkgLy8gSGFzaDow
eDY1MDZmYTNjCi0KLSN1bmRlZiBEWU5BTUlDX1NQQUNFX0FORF9TRVRfREVGSU5FX01FTUJFUl9T
TE9XCi0KIEpTQ2VsbCogVk06OnNlbnRpbmVsU2V0QnVja2V0U2xvdygpCiB7CiAgICAgQVNTRVJU
KCFtX3NlbnRpbmVsU2V0QnVja2V0KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1ZNLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0u
aAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0u
aAkod29ya2luZyBjb3B5KQpAQCAtMjgsMjggKzI4LDIzIEBACiAKICNwcmFnbWEgb25jZQogCi0j
aW5jbHVkZSAiQ2FsbERhdGEuaCIKICNpbmNsdWRlICJDYWxsZWVCaXRzLmgiCiAjaW5jbHVkZSAi
Q29kZVNwZWNpYWxpemF0aW9uS2luZC5oIgotI2luY2x1ZGUgIkNvbXBsZXRlU3Vic3BhY2UuaCIK
ICNpbmNsdWRlICJDb25jdXJyZW50SlNMb2NrLmgiCiAjaW5jbHVkZSAiREZHRG9lc0dDQ2hlY2su
aCIKICNpbmNsdWRlICJEZWxldGVBbGxDb2RlRWZmb3J0LmgiCi0jaW5jbHVkZSAiRGlzYWxsb3dW
TUVudHJ5LmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uRXZlbnRMb2NhdGlvbi5oIgogI2luY2x1ZGUg
IkZ1bmN0aW9uSGFzRXhlY3V0ZWRDYWNoZS5oIgotI2luY2x1ZGUgIkZ1enplckFnZW50LmgiCiAj
aW5jbHVkZSAiSGVhcC5oIgogI2luY2x1ZGUgIkludGVncml0eS5oIgogI2luY2x1ZGUgIkludHJp
bnNpYy5oIgotI2luY2x1ZGUgIklzb0NlbGxTZXQuaCIKLSNpbmNsdWRlICJJc29TdWJzcGFjZS5o
IgogI2luY2x1ZGUgIkpTQ0pTVmFsdWUuaCIKICNpbmNsdWRlICJKU0RhdGVNYXRoLmgiCiAjaW5j
bHVkZSAiSlNMb2NrLmgiCiAjaW5jbHVkZSAiSlNPTkF0b21TdHJpbmdDYWNoZS5oIgogI2luY2x1
ZGUgIk1hY3JvQXNzZW1ibGVyQ29kZVJlZi5oIgogI2luY2x1ZGUgIk1pY3JvdGFzay5oIgorI2lu
Y2x1ZGUgIk5hdGl2ZUZ1bmN0aW9uLmgiCiAjaW5jbHVkZSAiTnVtZXJpY1N0cmluZ3MuaCIKICNp
bmNsdWRlICJTbWFsbFN0cmluZ3MuaCIKICNpbmNsdWRlICJTdHJvbmcuaCIKQEAgLTU4LDEwICs1
Myw4IEBACiAjaW5jbHVkZSAiVGh1bmtHZW5lcmF0b3IuaCIKICNpbmNsdWRlICJWTVRyYXBzLmgi
CiAjaW5jbHVkZSAiV2FzbUNvbnRleHQuaCIKLSNpbmNsdWRlICJXYXRjaHBvaW50LmgiCiAjaW5j
bHVkZSA8d3RmL0J1bXBQb2ludGVyQWxsb2NhdG9yLmg+CiAjaW5jbHVkZSA8d3RmL0NoZWNrZWRB
cml0aG1ldGljLmg+Ci0jaW5jbHVkZSA8d3RmL0RhdGVNYXRoLmg+CiAjaW5jbHVkZSA8d3RmL0Rl
cXVlLmg+CiAjaW5jbHVkZSA8d3RmL0RvdWJseUxpbmtlZExpc3QuaD4KICNpbmNsdWRlIDx3dGYv
Rm9yd2FyZC5oPgpAQCAtNjksMTEgKzYyLDkgQEAKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgog
I2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL1NldEZvclNjb3BlLmg+Ci0j
aW5jbHVkZSA8d3RmL1N0YWNrQm91bmRzLmg+CiAjaW5jbHVkZSA8d3RmL1N0YWNrUG9pbnRlci5o
PgogI2luY2x1ZGUgPHd0Zi9TdG9wd2F0Y2guaD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkU2FmZVJl
ZkNvdW50ZWQuaD4KLSNpbmNsdWRlIDx3dGYvVGhyZWFkU3BlY2lmaWMuaD4KICNpbmNsdWRlIDx3
dGYvVW5pcXVlQXJyYXkuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TeW1ib2xSZWdpc3RyeS5oPgog
I2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgpAQCAtODEsMTAgKzcyLDYgQEAKICNpbmNs
dWRlIDx3dGYvTGlzdEhhc2hTZXQuaD4KICNlbmRpZgogCi0jaWYgRU5BQkxFKEVYQ0VQVElPTl9T
Q09QRV9WRVJJRklDQVRJT04pCi0jaW5jbHVkZSA8d3RmL1N0YWNrVHJhY2UuaD4KLSNlbmRpZgot
CiAvLyBFbmFibGUgdGhlIE9iamVjdGl2ZS1DIEFQSSBmb3IgcGxhdGZvcm1zIHdpdGggYSBtb2Rl
cm4gcnVudGltZS4gVGhpcyBoYXMgdG8gbWF0Y2ggZXhhY3RseSB3aGF0IHdlCiAvLyBoYXZlIGlu
IEpTQmFzZS5oLgogI2lmICFkZWZpbmVkKEpTQ19PQkpDX0FQSV9FTkFCTEVEKQpAQCAtOTgsMTYg
Kzg1LDE3IEBACiBuYW1lc3BhY2UgV1RGIHsKIGNsYXNzIFJ1bkxvb3A7CiBjbGFzcyBTaW1wbGVT
dGF0czsKK2NsYXNzIFN0YWNrVHJhY2U7CiB9IC8vIG5hbWVzcGFjZSBXVEYKIHVzaW5nIFdURjo6
U2ltcGxlU3RhdHM7Cit1c2luZyBXVEY6OlN0YWNrVHJhY2U7CiAKIG5hbWVzcGFjZSBKU0Mgewog
Ci1jbGFzcyBCYXNpY0Jsb2NrTG9jYXRpb247CitjbGFzcyBBcmdMaXN0OwogY2xhc3MgQnVpbHRp
bkV4ZWN1dGFibGVzOwogY2xhc3MgQnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeTsKIGNsYXNzIENh
bGxGcmFtZTsKLWNsYXNzIENhbGxMaW5rSW5mbzsKIGVudW0gY2xhc3MgQ2FsbE1vZGU7CiBzdHJ1
Y3QgQ2hlY2twb2ludE9TUkV4aXRTaWRlU3RhdGU7CiBjbGFzcyBDb2RlQmxvY2s7CkBAIC0xMTYs
MTAxICsxMDQsNDEgQEAgY2xhc3MgQ29tbW9uSWRlbnRpZmllcnM7CiBjbGFzcyBDb21wYWN0VERa
RW52aXJvbm1lbnRNYXA7CiBjbGFzcyBDb25zZXJ2YXRpdmVSb290czsKIGNsYXNzIENvbnRyb2xG
bG93UHJvZmlsZXI7Ci1jbGFzcyBDdXN0b21HZXR0ZXJTZXR0ZXI7Ci1jbGFzcyBET01BdHRyaWJ1
dGVHZXR0ZXJTZXR0ZXI7Ci1jbGFzcyBEYXRlSW5zdGFuY2U7Ci1jbGFzcyBFcnJvckluc3RhbmNl
OwogY2xhc3MgRXhjZXB0aW9uOwogY2xhc3MgRXhjZXB0aW9uU2NvcGU7Ci1jbGFzcyBGYXN0TWFs
bG9jQWxpZ25lZE1lbW9yeUFsbG9jYXRvcjsKLWNsYXNzIEdpZ2FjYWdlQWxpZ25lZE1lbW9yeUFs
bG9jYXRvcjsKLWNsYXNzIEhhbmRsZVN0YWNrOworY2xhc3MgRnV6emVyQWdlbnQ7CiBjbGFzcyBI
YXNPd25Qcm9wZXJ0eUNhY2hlOwogY2xhc3MgSGVhcEFuYWx5emVyOwogY2xhc3MgSGVhcFByb2Zp
bGVyOwotY2xhc3MgSWRlbnRpZmllcjsKIGNsYXNzIEludGVycHJldGVyOwogY2xhc3MgSW50bENh
Y2hlOwotY2xhc3MgSW50bENvbGxhdG9yOwotY2xhc3MgSW50bERhdGVUaW1lRm9ybWF0OwotY2xh
c3MgSW50bERpc3BsYXlOYW1lczsKLWNsYXNzIEludGxMaXN0Rm9ybWF0OwotY2xhc3MgSW50bExv
Y2FsZTsKLWNsYXNzIEludGxOdW1iZXJGb3JtYXQ7Ci1jbGFzcyBJbnRsUGx1cmFsUnVsZXM7Ci1j
bGFzcyBJbnRsUmVsYXRpdmVUaW1lRm9ybWF0OwotY2xhc3MgSW50bFNlZ21lbnRJdGVyYXRvcjsK
LWNsYXNzIEludGxTZWdtZW50ZXI7Ci1jbGFzcyBJbnRsU2VnbWVudHM7Ci1jbGFzcyBKU0FQSUds
b2JhbE9iamVjdDsKLWNsYXNzIEpTQVBJV3JhcHBlckdsb2JhbE9iamVjdDsKLWNsYXNzIEpTQVBJ
V3JhcHBlck9iamVjdDsKLWNsYXNzIEpTQ0NhbGxiYWNrRnVuY3Rpb247Ci1jbGFzcyBKU0NhbGxi
YWNrQ29uc3RydWN0b3I7CiBjbGFzcyBKU0Rlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZTsK
IGNsYXNzIEpTR2xvYmFsT2JqZWN0OwotY2xhc3MgSlNHbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQ7
Ci1jbGFzcyBKU01vZHVsZU5hbWVzcGFjZU9iamVjdDsKLWNsYXNzIEpTTW9kdWxlUmVjb3JkOwot
Y2xhc3MgSlNOYXRpdmVTdGRGdW5jdGlvbjsKLWNsYXNzIEpTTm9uRmluYWxPYmplY3Q7CiBjbGFz
cyBKU09iamVjdDsKIGNsYXNzIEpTUHJvbWlzZTsKIGNsYXNzIEpTUHJvcGVydHlOYW1lRW51bWVy
YXRvcjsKLWNsYXNzIEpTUnVuTG9vcFRpbWVyOwotY2xhc3MgSlNXZWFrTWFwOwotY2xhc3MgSlNX
ZWFrU2V0OwotY2xhc3MgSlNXZWJBc3NlbWJseUNvZGVCbG9jazsKLWNsYXNzIEpTV2ViQXNzZW1i
bHlHbG9iYWw7Ci1jbGFzcyBKU1dlYkFzc2VtYmx5SW5zdGFuY2U7Ci1jbGFzcyBKU1dlYkFzc2Vt
Ymx5TWVtb3J5OwotY2xhc3MgSlNXZWJBc3NlbWJseU1vZHVsZTsKLWNsYXNzIEpTV2ViQXNzZW1i
bHlUYWJsZTsKIGNsYXNzIEpJVFNpemVTdGF0aXN0aWNzOwogY2xhc3MgSklUVGh1bmtzOwotY2xh
c3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogY2xhc3MgTmF0aXZlRXhlY3V0YWJsZTsKLWNsYXNz
IE9iakNDYWxsYmFja0Z1bmN0aW9uOwogY2xhc3MgRGVmZXJyZWRXb3JrVGltZXI7CiBjbGFzcyBS
ZWdFeHA7CiBjbGFzcyBSZWdFeHBDYWNoZTsKIGNsYXNzIFJlZ2lzdGVyOwotY2xhc3MgUmVnaXN0
ZXJBdE9mZnNldExpc3Q7CiAjaWYgRU5BQkxFKFNBTVBMSU5HX1BST0ZJTEVSKQogY2xhc3MgU2Ft
cGxpbmdQcm9maWxlcjsKICNlbmRpZgogY2xhc3MgU2hhZG93Q2hpY2tlbjsKIGNsYXNzIFNoYXJl
ZEpJVFN0dWJTZXQ7Ci1jbGFzcyBTY3JpcHRFeGVjdXRhYmxlOwogY2xhc3MgU291cmNlUHJvdmlk
ZXI7CiBjbGFzcyBTb3VyY2VQcm92aWRlckNhY2hlOwotY2xhc3MgU3RhY2tGcmFtZTsKIGNsYXNz
IFN0cnVjdHVyZTsKLSNpZiBFTkFCTEUoUkVHRVhQX1RSQUNJTkcpCi1jbGFzcyBSZWdFeHA7Ci0j
ZW5kaWYKIGNsYXNzIFN5bWJvbDsKLWNsYXNzIFRlbXBvcmFsRHVyYXRpb247Ci1jbGFzcyBUZW1w
b3JhbEluc3RhbnQ7CiBjbGFzcyBUeXBlZEFycmF5Q29udHJvbGxlcjsKLWNsYXNzIFVubGlua2Vk
Q29kZUJsb2NrOwotY2xhc3MgVW5saW5rZWRFdmFsQ29kZUJsb2NrOwotY2xhc3MgVW5saW5rZWRG
dW5jdGlvbkV4ZWN1dGFibGU7Ci1jbGFzcyBVbmxpbmtlZFByb2dyYW1Db2RlQmxvY2s7Ci1jbGFz
cyBVbmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2s7Ci1jbGFzcyBWaXJ0dWFsUmVnaXN0ZXI7
CiBjbGFzcyBWTUVudHJ5U2NvcGU7Ci1jbGFzcyBUZW1wb3JhbENhbGVuZGFyOwotY2xhc3MgVGVt
cG9yYWxQbGFpblRpbWU7Ci1jbGFzcyBUZW1wb3JhbFRpbWVab25lOwotY2xhc3MgVG9wTGV2ZWxH
bG9iYWxPYmplY3RTY29wZTsKIGNsYXNzIFR5cGVQcm9maWxlcjsKIGNsYXNzIFR5cGVQcm9maWxl
ckxvZzsKIGNsYXNzIFdhdGNoZG9nOwotY2xhc3MgV2F0Y2hwb2ludDsKIGNsYXNzIFdhdGNocG9p
bnRTZXQ7Ci1jbGFzcyBXZWJBc3NlbWJseUZ1bmN0aW9uOwotY2xhc3MgV2ViQXNzZW1ibHlNb2R1
bGVSZWNvcmQ7CiAKICNpZiBFTkFCTEUoREZHX0pJVCkgJiYgQVNTRVJUX0VOQUJMRUQKICNkZWZp
bmUgRU5BQkxFX0RGR19ET0VTX0dDX1ZBTElEQVRJT04gMQpAQCAtMjIwLDEwICsxNDgsNiBAQCBj
bGFzcyBXZWJBc3NlbWJseU1vZHVsZVJlY29yZDsKIAogY29uc3RleHByIGJvb2wgdmFsaWRhdGVE
RkdEb2VzR0MgPSBFTkFCTEVfREZHX0RPRVNfR0NfVkFMSURBVElPTjsKIAotY2xhc3MgSXNvSGVh
cENlbGxUeXBlOwotdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGU+IGNsYXNzIElzb0lubGluZWRI
ZWFwQ2VsbFR5cGU7Ci10ZW1wbGF0ZTx0eXBlbmFtZSBQYXJlbnQ+IGNsYXNzIEpTQ2FsbGJhY2tP
YmplY3Q7Ci0KICNpZiBFTkFCTEUoRlRMX0pJVCkKIG5hbWVzcGFjZSBGVEwgewogY2xhc3MgVGh1
bmtzOwpAQCAtMjM1LDE0ICsxNTksOSBAQCBjbGFzcyBEYXRhYmFzZTsKIG5hbWVzcGFjZSBET01K
SVQgewogY2xhc3MgU2lnbmF0dXJlOwogfQotbmFtZXNwYWNlIFlhcnIgewotY2xhc3MgTWF0Y2hp
bmdDb250ZXh0SG9sZGVyOwotfQogCiBzdHJ1Y3QgRW50cnlGcmFtZTsKLXN0cnVjdCBIYXNoVGFi
bGU7CiBzdHJ1Y3QgSW5zdHJ1Y3Rpb247Ci1zdHJ1Y3QgVmFsdWVQcm9maWxlOwogCiBjbGFzcyBR
dWV1ZWRUYXNrIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShRdWV1ZWRUYXNrKTsKQEAgLTI2
MSw4ICsxODAsNiBAQCBwcml2YXRlOgogICAgIFJlZjxNaWNyb3Rhc2s+IG1fbWljcm90YXNrOwog
fTsKIAotY2xhc3MgQ29uc2VydmF0aXZlUm9vdHM7Ci0KIERFQ0xBUkVfQUxMT0NBVE9SX1dJVEhf
SEVBUF9JREVOVElGSUVSKFZNKTsKIAogI2lmIENPTVBJTEVSKE1TVkMpCkBAIC0zNTcsMTEgKzI3
NCw3IEBAIHB1YmxpYzoKICNlbmRpZgogCiAgICAgRnV6emVyQWdlbnQqIGZ1enplckFnZW50KCkg
Y29uc3QgeyByZXR1cm4gbV9mdXp6ZXJBZ2VudC5nZXQoKTsgfQotICAgIHZvaWQgc2V0RnV6emVy
QWdlbnQoc3RkOjp1bmlxdWVfcHRyPEZ1enplckFnZW50PiYmIGZ1enplckFnZW50KQotICAgIHsK
LSAgICAgICAgUkVMRUFTRV9BU1NFUlRfV0lUSF9NRVNTQUdFKCFtX2Z1enplckFnZW50LCAiT25s
eSBvbmUgRnV6emVyQWdlbnQgY2FuIGJlIHNwZWNpZmllZCBhdCBhIHRpbWUuIik7Ci0gICAgICAg
IG1fZnV6emVyQWdlbnQgPSBXVEZNb3ZlKGZ1enplckFnZW50KTsKLSAgICB9CisgICAgdm9pZCBz
ZXRGdXp6ZXJBZ2VudChzdGQ6OnVuaXF1ZV9wdHI8RnV6emVyQWdlbnQ+JiYgZnV6emVyQWdlbnQp
OwogCiAgICAgc3RhdGljIHVuc2lnbmVkIG51bWJlck9mSURzKCkgeyByZXR1cm4gc19udW1iZXJP
ZklEcy5sb2FkKCk7IH0KICAgICB1bnNpZ25lZCBpZCgpIGNvbnN0IHsgcmV0dXJuIG1faWQ7IH0K
QEAgLTQxMywxNDUgKzMyNiw1OCBAQCBwcml2YXRlOgogCiBwdWJsaWM6CiAgICAgSGVhcCBoZWFw
OwotICAgIAotICAgIHN0ZDo6dW5pcXVlX3B0cjxGYXN0TWFsbG9jQWxpZ25lZE1lbW9yeUFsbG9j
YXRvcj4gZmFzdE1hbGxvY0FsbG9jYXRvcjsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8R2lnYWNhZ2VB
bGlnbmVkTWVtb3J5QWxsb2NhdG9yPiBwcmltaXRpdmVHaWdhY2FnZUFsbG9jYXRvcjsKLSAgICBz
dGQ6OnVuaXF1ZV9wdHI8R2lnYWNhZ2VBbGlnbmVkTWVtb3J5QWxsb2NhdG9yPiBqc1ZhbHVlR2ln
YWNhZ2VBbGxvY2F0b3I7Ci0KLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SGVhcENlbGxUeXBlPiBhdXhp
bGlhcnlIZWFwQ2VsbFR5cGU7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPEhlYXBDZWxsVHlwZT4gaW1t
dXRhYmxlQnV0dGVyZmx5SGVhcENlbGxUeXBlOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxIZWFwQ2Vs
bFR5cGU+IGNlbGxIZWFwQ2VsbFR5cGU7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPEhlYXBDZWxsVHlw
ZT4gZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SXNv
SGVhcENlbGxUeXBlPiBhcGlHbG9iYWxPYmplY3RIZWFwQ2VsbFR5cGU7Ci0gICAgc3RkOjp1bmlx
dWVfcHRyPElzb0hlYXBDZWxsVHlwZT4gY2FsbGJhY2tDb25zdHJ1Y3RvckhlYXBDZWxsVHlwZTsK
LSAgICBzdGQ6OnVuaXF1ZV9wdHI8SXNvSGVhcENlbGxUeXBlPiBjYWxsYmFja0dsb2JhbE9iamVj
dEhlYXBDZWxsVHlwZTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SXNvSGVhcENlbGxUeXBlPiBjYWxs
YmFja09iamVjdEhlYXBDZWxsVHlwZTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SXNvSGVhcENlbGxU
eXBlPiBjdXN0b21HZXR0ZXJGdW5jdGlvbkhlYXBDZWxsVHlwZTsKLSAgICBzdGQ6OnVuaXF1ZV9w
dHI8SXNvSGVhcENlbGxUeXBlPiBjdXN0b21TZXR0ZXJGdW5jdGlvbkhlYXBDZWxsVHlwZTsKLSAg
ICBzdGQ6OnVuaXF1ZV9wdHI8SXNvSGVhcENlbGxUeXBlPiBkYXRlSW5zdGFuY2VIZWFwQ2VsbFR5
cGU7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPElzb0hlYXBDZWxsVHlwZT4gZXJyb3JJbnN0YW5jZUhl
YXBDZWxsVHlwZTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SXNvSGVhcENlbGxUeXBlPiBmaW5hbGl6
YXRpb25SZWdpc3RyeUNlbGxUeXBlOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxJc29IZWFwQ2VsbFR5
cGU+IGdsb2JhbExleGljYWxFbnZpcm9ubWVudEhlYXBDZWxsVHlwZTsKLSAgICBzdGQ6OnVuaXF1
ZV9wdHI8SXNvSGVhcENlbGxUeXBlPiBnbG9iYWxPYmplY3RIZWFwQ2VsbFR5cGU7Ci0gICAgc3Rk
Ojp1bmlxdWVfcHRyPElzb0hlYXBDZWxsVHlwZT4gaW5qZWN0ZWRTY3JpcHRIb3N0U3BhY2VIZWFw
Q2VsbFR5cGU7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPElzb0hlYXBDZWxsVHlwZT4gamF2YVNjcmlw
dENhbGxGcmFtZUhlYXBDZWxsVHlwZTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SXNvSGVhcENlbGxU
eXBlPiBqc01vZHVsZVJlY29yZEhlYXBDZWxsVHlwZTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SXNv
SGVhcENlbGxUeXBlPiBtb2R1bGVOYW1lc3BhY2VPYmplY3RIZWFwQ2VsbFR5cGU7Ci0gICAgc3Rk
Ojp1bmlxdWVfcHRyPElzb0hlYXBDZWxsVHlwZT4gbmF0aXZlU3RkRnVuY3Rpb25IZWFwQ2VsbFR5
cGU7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPElzb0lubGluZWRIZWFwQ2VsbFR5cGU8SlNTdHJpbmc+
PiBzdHJpbmdIZWFwQ2VsbFR5cGU7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPElzb0hlYXBDZWxsVHlw
ZT4gd2Vha01hcEhlYXBDZWxsVHlwZTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SXNvSGVhcENlbGxU
eXBlPiB3ZWFrU2V0SGVhcENlbGxUeXBlOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxKU0Rlc3RydWN0
aWJsZU9iamVjdEhlYXBDZWxsVHlwZT4gZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlOwot
I2lmIEpTQ19PQkpDX0FQSV9FTkFCTEVECi0gICAgc3RkOjp1bmlxdWVfcHRyPElzb0hlYXBDZWxs
VHlwZT4gYXBpV3JhcHBlck9iamVjdEhlYXBDZWxsVHlwZTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8
SXNvSGVhcENlbGxUeXBlPiBvYmpDQ2FsbGJhY2tGdW5jdGlvbkhlYXBDZWxsVHlwZTsKLSNlbmRp
ZgotI2lmZGVmIEpTQ19HTElCX0FQSV9FTkFCTEVECi0gICAgc3RkOjp1bmlxdWVfcHRyPElzb0hl
YXBDZWxsVHlwZT4gYXBpV3JhcHBlck9iamVjdEhlYXBDZWxsVHlwZTsKLSAgICBzdGQ6OnVuaXF1
ZV9wdHI8SXNvSGVhcENlbGxUeXBlPiBjYWxsYmFja0FQSVdyYXBwZXJHbG9iYWxPYmplY3RIZWFw
Q2VsbFR5cGU7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPElzb0hlYXBDZWxsVHlwZT4ganNjQ2FsbGJh
Y2tGdW5jdGlvbkhlYXBDZWxsVHlwZTsKLSNlbmRpZgotICAgIHN0ZDo6dW5pcXVlX3B0cjxJc29I
ZWFwQ2VsbFR5cGU+IGludGxDb2xsYXRvckhlYXBDZWxsVHlwZTsKLSAgICBzdGQ6OnVuaXF1ZV9w
dHI8SXNvSGVhcENlbGxUeXBlPiBpbnRsRGF0ZVRpbWVGb3JtYXRIZWFwQ2VsbFR5cGU7Ci0gICAg
c3RkOjp1bmlxdWVfcHRyPElzb0hlYXBDZWxsVHlwZT4gaW50bERpc3BsYXlOYW1lc0hlYXBDZWxs
VHlwZTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SXNvSGVhcENlbGxUeXBlPiBpbnRsTGlzdEZvcm1h
dEhlYXBDZWxsVHlwZTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SXNvSGVhcENlbGxUeXBlPiBpbnRs
TG9jYWxlSGVhcENlbGxUeXBlOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxJc29IZWFwQ2VsbFR5cGU+
IGludGxOdW1iZXJGb3JtYXRIZWFwQ2VsbFR5cGU7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPElzb0hl
YXBDZWxsVHlwZT4gaW50bFBsdXJhbFJ1bGVzSGVhcENlbGxUeXBlOwotICAgIHN0ZDo6dW5pcXVl
X3B0cjxJc29IZWFwQ2VsbFR5cGU+IGludGxSZWxhdGl2ZVRpbWVGb3JtYXRIZWFwQ2VsbFR5cGU7
Ci0gICAgc3RkOjp1bmlxdWVfcHRyPElzb0hlYXBDZWxsVHlwZT4gaW50bFNlZ21lbnRJdGVyYXRv
ckhlYXBDZWxsVHlwZTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SXNvSGVhcENlbGxUeXBlPiBpbnRs
U2VnbWVudGVySGVhcENlbGxUeXBlOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxJc29IZWFwQ2VsbFR5
cGU+IGludGxTZWdtZW50c0hlYXBDZWxsVHlwZTsKLSNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCi0g
ICAgc3RkOjp1bmlxdWVfcHRyPElzb0hlYXBDZWxsVHlwZT4gd2ViQXNzZW1ibHlDb2RlQmxvY2tI
ZWFwQ2VsbFR5cGU7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPElzb0hlYXBDZWxsVHlwZT4gd2ViQXNz
ZW1ibHlFeGNlcHRpb25IZWFwQ2VsbFR5cGU7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPElzb0hlYXBD
ZWxsVHlwZT4gd2ViQXNzZW1ibHlGdW5jdGlvbkhlYXBDZWxsVHlwZTsKLSAgICBzdGQ6OnVuaXF1
ZV9wdHI8SXNvSGVhcENlbGxUeXBlPiB3ZWJBc3NlbWJseUdsb2JhbEhlYXBDZWxsVHlwZTsKLSAg
ICBzdGQ6OnVuaXF1ZV9wdHI8SXNvSGVhcENlbGxUeXBlPiB3ZWJBc3NlbWJseUluc3RhbmNlSGVh
cENlbGxUeXBlOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxJc29IZWFwQ2VsbFR5cGU+IHdlYkFzc2Vt
Ymx5TWVtb3J5SGVhcENlbGxUeXBlOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxJc29IZWFwQ2VsbFR5
cGU+IHdlYkFzc2VtYmx5TW9kdWxlSGVhcENlbGxUeXBlOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxJ
c29IZWFwQ2VsbFR5cGU+IHdlYkFzc2VtYmx5TW9kdWxlUmVjb3JkSGVhcENlbGxUeXBlOwotICAg
IHN0ZDo6dW5pcXVlX3B0cjxJc29IZWFwQ2VsbFR5cGU+IHdlYkFzc2VtYmx5VGFibGVIZWFwQ2Vs
bFR5cGU7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPElzb0hlYXBDZWxsVHlwZT4gd2ViQXNzZW1ibHlU
YWdIZWFwQ2VsbFR5cGU7Ci0jZW5kaWYKKworICAgIGNvbnN0IEhlYXBDZWxsVHlwZSYgY2VsbEhl
YXBDZWxsVHlwZSgpIHsgcmV0dXJuIGhlYXAuY2VsbEhlYXBDZWxsVHlwZTsgfQorICAgIGNvbnN0
IEpTRGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlJiBkZXN0cnVjdGlibGVPYmplY3RIZWFw
Q2VsbFR5cGUoKSB7IHJldHVybiBoZWFwLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZTsg
fTsKIAogI2lmIEVOQUJMRShKSVQpCiAgICAgc3RkOjp1bmlxdWVfcHRyPEpJVFNpemVTdGF0aXN0
aWNzPiBqaXRTaXplU3RhdGlzdGljczsKICNlbmRpZgogICAgIAotICAgIENvbXBsZXRlU3Vic3Bh
Y2UgcHJpbWl0aXZlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZTsgLy8gVHlwZWQgYXJyYXlzLCBzdHJp
bmdzLCBiaXR2ZWN0b3JzLCBldGMgZ28gaGVyZS4KLSAgICBDb21wbGV0ZVN1YnNwYWNlIGpzVmFs
dWVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlOyAvLyBCdXR0ZXJmbGllcywgYXJyYXlzIG9mIEpTVmFs
dWVzLCBldGMgZ28gaGVyZS4KLSAgICBDb21wbGV0ZVN1YnNwYWNlIGltbXV0YWJsZUJ1dHRlcmZs
eUpTVmFsdWVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlOyAvLyBKU0ltbXV0YWJsZUJ1dHRlcmZseSBn
b2VzIGhlcmUuCi0KLSAgICAvLyBXZSBtYWtlIGNyb3NzLWN1dHRpbmcgYXNzdW1wdGlvbnMgYWJv
dXQgdHlwZWQgYXJyYXlzIGJlaW5nIGluIHRoZSBwcmltaXRpdmUgR2lnYWNhZ2UgYW5kIGJ1dHRl
cmZsaWVzCi0gICAgLy8gYmVpbmcgaW4gdGhlIEpTVmFsdWUgZ2lnYWNhZ2UuIEZvciBzb21lIHR5
cGVzLCBpdCdzIHN1cGVyIG9idmlvdXMgd2hlcmUgdGhleSBzaG91bGQgZ28sIGFuZCBzbyB3ZQot
ICAgIC8vIGNhbiBoYXJkY29kZSB0aGF0IGZhY3QuIEJ1dCBzb21ldGltZXMgaXQncyBub3QgY2xl
YXIsIHNvIHdlIGFic3RyYWN0IGl0IGJ5IGhhdmluZyBhIEdpZ2FjYWdlOjpLaW5kCi0gICAgLy8g
Y29uc3RhbnQgc29tZXdoZXJlLgotICAgIC8vIEZJWE1FOiBNYXliZSBpdCB3b3VsZCBiZSBiZXR0
ZXIgaWYgZXZlcnlvbmUgYWJzdHJhY3RlZCB0aGlzPwotICAgIC8vIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzUyNDgKLSAgICBBTFdBWVNfSU5MSU5FIENvbXBsZXRl
U3Vic3BhY2UmIGdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UoR2lnYWNhZ2U6OktpbmQga2luZCkKLSAg
ICB7Ci0gICAgICAgIHN3aXRjaCAoa2luZCkgewotICAgICAgICBjYXNlIEdpZ2FjYWdlOjpQcmlt
aXRpdmU6Ci0gICAgICAgICAgICByZXR1cm4gcHJpbWl0aXZlR2lnYWNhZ2VBdXhpbGlhcnlTcGFj
ZTsKLSAgICAgICAgY2FzZSBHaWdhY2FnZTo6SlNWYWx1ZToKLSAgICAgICAgICAgIHJldHVybiBq
c1ZhbHVlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZTsKLSAgICAgICAgY2FzZSBHaWdhY2FnZTo6TnVt
YmVyT2ZLaW5kczoKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIFJFTEVB
U0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVybiBwcmltaXRpdmVHaWdhY2Fn
ZUF1eGlsaWFyeVNwYWNlOwotICAgIH0KLSAgICAKLSAgICAvLyBXaGVuZXZlciBwb3NzaWJsZSwg
dXNlIHN1YnNwYWNlRm9yPENlbGxUeXBlPih2bSkgdG8gZ2V0IG9uZSBvZiB0aGVzZSBzdWJzcGFj
ZXMuCi0gICAgQ29tcGxldGVTdWJzcGFjZSBjZWxsU3BhY2U7Ci0gICAgQ29tcGxldGVTdWJzcGFj
ZSB2YXJpYWJsZVNpemVkQ2VsbFNwYWNlOyAvLyBGSVhNRTogVGhpcyBzcGFjZSBpcyBwcm9ibGVt
YXRpYyBiZWNhdXNlIHdlIGhhdmUgdGhpbmdzIGluIGhlcmUgbGlrZSBEaXJlY3RBcmd1bWVudHMg
YW5kIFNjb3BlZEFyZ3VtZW50czsgdGhvc2Ugc2hvdWxkIGJlIHNwbGl0IGludG8gSlNWYWx1ZU9P
QiBjZWxscyBhbmQgSlNWYWx1ZVN0cmljdCBhdXhpbGlhcmllcy4gaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE4Mjg1OAotICAgIENvbXBsZXRlU3Vic3BhY2UgZGVzdHJ1
Y3RpYmxlT2JqZWN0U3BhY2U7Ci0gICAgCi0gICAgSXNvU3Vic3BhY2UgYXJyYXlTcGFjZTsKLSAg
ICBJc29TdWJzcGFjZSBiaWdJbnRTcGFjZTsKLSAgICBJc29TdWJzcGFjZSBjYWxsZWVTcGFjZTsK
LSAgICBJc29TdWJzcGFjZSBjbG9uZWRBcmd1bWVudHNTcGFjZTsKLSAgICBJc29TdWJzcGFjZSBj
dXN0b21HZXR0ZXJTZXR0ZXJTcGFjZTsKLSAgICBJc29TdWJzcGFjZSBkYXRlSW5zdGFuY2VTcGFj
ZTsKLSAgICBJc29TdWJzcGFjZSBkb21BdHRyaWJ1dGVHZXR0ZXJTZXR0ZXJTcGFjZTsKLSAgICBJ
c29TdWJzcGFjZSBleGNlcHRpb25TcGFjZTsKLSAgICBJc29TdWJzcGFjZSBleGVjdXRhYmxlVG9D
b2RlQmxvY2tFZGdlU3BhY2U7Ci0gICAgSXNvU3Vic3BhY2UgZnVuY3Rpb25TcGFjZTsKLSAgICBJ
c29TdWJzcGFjZSBnZXR0ZXJTZXR0ZXJTcGFjZTsKLSAgICBJc29TdWJzcGFjZSBnbG9iYWxMZXhp
Y2FsRW52aXJvbm1lbnRTcGFjZTsKLSAgICBJc29TdWJzcGFjZSBpbnRlcm5hbEZ1bmN0aW9uU3Bh
Y2U7Ci0gICAgSXNvU3Vic3BhY2UganNQcm94eVNwYWNlOwotICAgIElzb1N1YnNwYWNlIG5hdGl2
ZUV4ZWN1dGFibGVTcGFjZTsKLSAgICBJc29TdWJzcGFjZSBudW1iZXJPYmplY3RTcGFjZTsKLSAg
ICBJc29TdWJzcGFjZSBwbGFpbk9iamVjdFNwYWNlOwotICAgIElzb1N1YnNwYWNlIHByb21pc2VT
cGFjZTsKLSAgICBJc29TdWJzcGFjZSBwcm9wZXJ0eU5hbWVFbnVtZXJhdG9yU3BhY2U7Ci0gICAg
SXNvU3Vic3BhY2UgcHJvcGVydHlUYWJsZVNwYWNlOwotICAgIElzb1N1YnNwYWNlIHJlZ0V4cFNw
YWNlOwotICAgIElzb1N1YnNwYWNlIHJlZ0V4cE9iamVjdFNwYWNlOwotICAgIElzb1N1YnNwYWNl
IHJvcGVTdHJpbmdTcGFjZTsKLSAgICBJc29TdWJzcGFjZSBzY29wZWRBcmd1bWVudHNTcGFjZTsK
LSAgICBJc29TdWJzcGFjZSBzcGFyc2VBcnJheVZhbHVlTWFwU3BhY2U7Ci0gICAgSXNvU3Vic3Bh
Y2Ugc3RyaW5nU3BhY2U7Ci0gICAgSXNvU3Vic3BhY2Ugc3RyaW5nT2JqZWN0U3BhY2U7Ci0gICAg
SXNvU3Vic3BhY2Ugc3RydWN0dXJlQ2hhaW5TcGFjZTsKLSAgICBJc29TdWJzcGFjZSBzdHJ1Y3R1
cmVSYXJlRGF0YVNwYWNlOwotICAgIElzb1N1YnNwYWNlIHN0cnVjdHVyZVNwYWNlOwotICAgIElz
b1N1YnNwYWNlIGJyYW5kZWRTdHJ1Y3R1cmVTcGFjZTsKLSAgICBJc29TdWJzcGFjZSBzeW1ib2xU
YWJsZVNwYWNlOworICAgIEFMV0FZU19JTkxJTkUgQ29tcGxldGVTdWJzcGFjZSYgcHJpbWl0aXZl
R2lnYWNhZ2VBdXhpbGlhcnlTcGFjZSgpIHsgcmV0dXJuIGhlYXAucHJpbWl0aXZlR2lnYWNhZ2VB
dXhpbGlhcnlTcGFjZTsgfQorICAgIEFMV0FZU19JTkxJTkUgQ29tcGxldGVTdWJzcGFjZSYganNW
YWx1ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UoKSB7IHJldHVybiBoZWFwLmpzVmFsdWVHaWdhY2Fn
ZUF1eGlsaWFyeVNwYWNlOyB9CisgICAgQUxXQVlTX0lOTElORSBDb21wbGV0ZVN1YnNwYWNlJiBp
bW11dGFibGVCdXR0ZXJmbHlKU1ZhbHVlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZSgpIHsgcmV0dXJu
IGhlYXAuaW1tdXRhYmxlQnV0dGVyZmx5SlNWYWx1ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2U7IH0K
KyAgICBBTFdBWVNfSU5MSU5FIENvbXBsZXRlU3Vic3BhY2UmIGdpZ2FjYWdlQXV4aWxpYXJ5U3Bh
Y2UoR2lnYWNhZ2U6OktpbmQga2luZCkgeyByZXR1cm4gaGVhcC5naWdhY2FnZUF1eGlsaWFyeVNw
YWNlKGtpbmQpOyB9CisgICAgQUxXQVlTX0lOTElORSBDb21wbGV0ZVN1YnNwYWNlJiBjZWxsU3Bh
Y2UoKSB7IHJldHVybiBoZWFwLmNlbGxTcGFjZTsgfQorICAgIEFMV0FZU19JTkxJTkUgQ29tcGxl
dGVTdWJzcGFjZSYgdmFyaWFibGVTaXplZENlbGxTcGFjZSgpIHsgcmV0dXJuIGhlYXAudmFyaWFi
bGVTaXplZENlbGxTcGFjZTsgfQorICAgIEFMV0FZU19JTkxJTkUgQ29tcGxldGVTdWJzcGFjZSYg
ZGVzdHJ1Y3RpYmxlT2JqZWN0U3BhY2UoKSB7IHJldHVybiBoZWFwLmRlc3RydWN0aWJsZU9iamVj
dFNwYWNlOyB9CisKKyAgICBBTFdBWVNfSU5MSU5FIElzb1N1YnNwYWNlJiBhcnJheVNwYWNlKCkg
eyByZXR1cm4gaGVhcC5hcnJheVNwYWNlOyB9CisgICAgQUxXQVlTX0lOTElORSBJc29TdWJzcGFj
ZSYgYmlnSW50U3BhY2UoKSB7IHJldHVybiBoZWFwLmJpZ0ludFNwYWNlOyB9CisgICAgQUxXQVlT
X0lOTElORSBJc29TdWJzcGFjZSYgY2FsbGVlU3BhY2UoKSB7IHJldHVybiBoZWFwLmNhbGxlZVNw
YWNlOyB9CisgICAgQUxXQVlTX0lOTElORSBJc29TdWJzcGFjZSYgY2xvbmVkQXJndW1lbnRzU3Bh
Y2UoKSB7IHJldHVybiBoZWFwLmNsb25lZEFyZ3VtZW50c1NwYWNlOyB9CisgICAgQUxXQVlTX0lO
TElORSBJc29TdWJzcGFjZSYgY3VzdG9tR2V0dGVyU2V0dGVyU3BhY2UoKSB7IHJldHVybiBoZWFw
LmN1c3RvbUdldHRlclNldHRlclNwYWNlOyB9CisgICAgQUxXQVlTX0lOTElORSBJc29TdWJzcGFj
ZSYgZGF0ZUluc3RhbmNlU3BhY2UoKSB7IHJldHVybiBoZWFwLmRhdGVJbnN0YW5jZVNwYWNlOyB9
CisgICAgQUxXQVlTX0lOTElORSBJc29TdWJzcGFjZSYgZG9tQXR0cmlidXRlR2V0dGVyU2V0dGVy
U3BhY2UoKSB7IHJldHVybiBoZWFwLmRvbUF0dHJpYnV0ZUdldHRlclNldHRlclNwYWNlOyB9Cisg
ICAgQUxXQVlTX0lOTElORSBJc29TdWJzcGFjZSYgZXhjZXB0aW9uU3BhY2UoKSB7IHJldHVybiBo
ZWFwLmV4Y2VwdGlvblNwYWNlOyB9CisgICAgQUxXQVlTX0lOTElORSBJc29TdWJzcGFjZSYgZXhl
Y3V0YWJsZVRvQ29kZUJsb2NrRWRnZVNwYWNlKCkgeyByZXR1cm4gaGVhcC5leGVjdXRhYmxlVG9D
b2RlQmxvY2tFZGdlU3BhY2U7IH0KKyAgICBBTFdBWVNfSU5MSU5FIElzb1N1YnNwYWNlJiBmdW5j
dGlvblNwYWNlKCkgeyByZXR1cm4gaGVhcC5mdW5jdGlvblNwYWNlOyB9CisgICAgQUxXQVlTX0lO
TElORSBJc29TdWJzcGFjZSYgZ2V0dGVyU2V0dGVyU3BhY2UoKSB7IHJldHVybiBoZWFwLmdldHRl
clNldHRlclNwYWNlOyB9CisgICAgQUxXQVlTX0lOTElORSBJc29TdWJzcGFjZSYgZ2xvYmFsTGV4
aWNhbEVudmlyb25tZW50U3BhY2UoKSB7IHJldHVybiBoZWFwLmdsb2JhbExleGljYWxFbnZpcm9u
bWVudFNwYWNlOyB9CisgICAgQUxXQVlTX0lOTElORSBJc29TdWJzcGFjZSYgaW50ZXJuYWxGdW5j
dGlvblNwYWNlKCkgeyByZXR1cm4gaGVhcC5pbnRlcm5hbEZ1bmN0aW9uU3BhY2U7IH0KKyAgICBB
TFdBWVNfSU5MSU5FIElzb1N1YnNwYWNlJiBqc1Byb3h5U3BhY2UoKSB7IHJldHVybiBoZWFwLmpz
UHJveHlTcGFjZTsgfQorICAgIEFMV0FZU19JTkxJTkUgSXNvU3Vic3BhY2UmIG5hdGl2ZUV4ZWN1
dGFibGVTcGFjZSgpIHsgcmV0dXJuIGhlYXAubmF0aXZlRXhlY3V0YWJsZVNwYWNlOyB9CisgICAg
QUxXQVlTX0lOTElORSBJc29TdWJzcGFjZSYgbnVtYmVyT2JqZWN0U3BhY2UoKSB7IHJldHVybiBo
ZWFwLm51bWJlck9iamVjdFNwYWNlOyB9CisgICAgQUxXQVlTX0lOTElORSBJc29TdWJzcGFjZSYg
cGxhaW5PYmplY3RTcGFjZSgpIHsgcmV0dXJuIGhlYXAucGxhaW5PYmplY3RTcGFjZTsgfQorICAg
IEFMV0FZU19JTkxJTkUgSXNvU3Vic3BhY2UmIHByb21pc2VTcGFjZSgpIHsgcmV0dXJuIGhlYXAu
cHJvbWlzZVNwYWNlOyB9CisgICAgQUxXQVlTX0lOTElORSBJc29TdWJzcGFjZSYgcHJvcGVydHlO
YW1lRW51bWVyYXRvclNwYWNlKCkgeyByZXR1cm4gaGVhcC5wcm9wZXJ0eU5hbWVFbnVtZXJhdG9y
U3BhY2U7IH0KKyAgICBBTFdBWVNfSU5MSU5FIElzb1N1YnNwYWNlJiBwcm9wZXJ0eVRhYmxlU3Bh
Y2UoKSB7IHJldHVybiBoZWFwLnByb3BlcnR5VGFibGVTcGFjZTsgfQorICAgIEFMV0FZU19JTkxJ
TkUgSXNvU3Vic3BhY2UmIHJlZ0V4cFNwYWNlKCkgeyByZXR1cm4gaGVhcC5yZWdFeHBTcGFjZTsg
fQorICAgIEFMV0FZU19JTkxJTkUgSXNvU3Vic3BhY2UmIHJlZ0V4cE9iamVjdFNwYWNlKCkgeyBy
ZXR1cm4gaGVhcC5yZWdFeHBPYmplY3RTcGFjZTsgfQorICAgIEFMV0FZU19JTkxJTkUgSXNvU3Vi
c3BhY2UmIHJvcGVTdHJpbmdTcGFjZSgpIHsgcmV0dXJuIGhlYXAucm9wZVN0cmluZ1NwYWNlOyB9
CisgICAgQUxXQVlTX0lOTElORSBJc29TdWJzcGFjZSYgc2NvcGVkQXJndW1lbnRzU3BhY2UoKSB7
IHJldHVybiBoZWFwLnNjb3BlZEFyZ3VtZW50c1NwYWNlOyB9CisgICAgQUxXQVlTX0lOTElORSBJ
c29TdWJzcGFjZSYgc3BhcnNlQXJyYXlWYWx1ZU1hcFNwYWNlKCkgeyByZXR1cm4gaGVhcC5zcGFy
c2VBcnJheVZhbHVlTWFwU3BhY2U7IH0KKyAgICBBTFdBWVNfSU5MSU5FIElzb1N1YnNwYWNlJiBz
dHJpbmdTcGFjZSgpIHsgcmV0dXJuIGhlYXAuc3RyaW5nU3BhY2U7IH0KKyAgICBBTFdBWVNfSU5M
SU5FIElzb1N1YnNwYWNlJiBzdHJpbmdPYmplY3RTcGFjZSgpIHsgcmV0dXJuIGhlYXAuc3RyaW5n
T2JqZWN0U3BhY2U7IH0KKyAgICBBTFdBWVNfSU5MSU5FIElzb1N1YnNwYWNlJiBzdHJ1Y3R1cmVD
aGFpblNwYWNlKCkgeyByZXR1cm4gaGVhcC5zdHJ1Y3R1cmVDaGFpblNwYWNlOyB9CisgICAgQUxX
QVlTX0lOTElORSBJc29TdWJzcGFjZSYgc3RydWN0dXJlUmFyZURhdGFTcGFjZSgpIHsgcmV0dXJu
IGhlYXAuc3RydWN0dXJlUmFyZURhdGFTcGFjZTsgfQorICAgIEFMV0FZU19JTkxJTkUgSXNvU3Vi
c3BhY2UmIHN0cnVjdHVyZVNwYWNlKCkgeyByZXR1cm4gaGVhcC5zdHJ1Y3R1cmVTcGFjZTsgfQor
ICAgIEFMV0FZU19JTkxJTkUgSXNvU3Vic3BhY2UmIGJyYW5kZWRTdHJ1Y3R1cmVTcGFjZSgpIHsg
cmV0dXJuIGhlYXAuYnJhbmRlZFN0cnVjdHVyZVNwYWNlOyB9CisgICAgQUxXQVlTX0lOTElORSBJ
c29TdWJzcGFjZSYgc3ltYm9sVGFibGVTcGFjZSgpIHsgcmV0dXJuIGhlYXAuc3ltYm9sVGFibGVT
cGFjZTsgfQogCiAjZGVmaW5lIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIobmFt
ZSkgXAogICAgIHRlbXBsYXRlPFN1YnNwYWNlQWNjZXNzIG1vZGU+IFwKLSAgICBJc29TdWJzcGFj
ZSogbmFtZSgpIFwKLSAgICB7IFwKLSAgICAgICAgaWYgKG1fIyNuYW1lIHx8IG1vZGUgPT0gU3Vi
c3BhY2VBY2Nlc3M6OkNvbmN1cnJlbnRseSkgXAotICAgICAgICAgICAgcmV0dXJuIG1fIyNuYW1l
LmdldCgpOyBcCi0gICAgICAgIHJldHVybiBuYW1lIyNTbG93KCk7IFwKLSAgICB9IFwKLSAgICBK
U19FWFBPUlRfUFJJVkFURSBJc29TdWJzcGFjZSogbmFtZSMjU2xvdygpOyBcCi0gICAgc3RkOjp1
bmlxdWVfcHRyPElzb1N1YnNwYWNlPiBtXyMjbmFtZTsKLQorICAgIEFMV0FZU19JTkxJTkUgSXNv
U3Vic3BhY2UqIG5hbWUoKSB7IHJldHVybiBoZWFwLm5hbWU8bW9kZT4oKTsgfQogCiAjaWYgSlND
X09CSkNfQVBJX0VOQUJMRUQKICAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVS
KGFwaVdyYXBwZXJPYmplY3RTcGFjZSkKQEAgLTY1Nyw3NCArNDgzLDIzIEBAIHB1YmxpYzoKICNl
bmRpZgogCiAjdW5kZWYgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUgotICAgIAot
ICAgIElzb0NlbGxTZXQgZXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZXNXaXRoQ29uc3RyYWludHM7
Ci0gICAgSXNvQ2VsbFNldCBleGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlc1dpdGhGaW5hbGl6ZXJz
OworCisgICAgQUxXQVlTX0lOTElORSBJc29DZWxsU2V0JiBleGVjdXRhYmxlVG9Db2RlQmxvY2tF
ZGdlc1dpdGhDb25zdHJhaW50cygpIHsgcmV0dXJuIGhlYXAuZXhlY3V0YWJsZVRvQ29kZUJsb2Nr
RWRnZXNXaXRoQ29uc3RyYWludHM7IH0KKyAgICBBTFdBWVNfSU5MSU5FIElzb0NlbGxTZXQmIGV4
ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2VzV2l0aEZpbmFsaXplcnMoKSB7IHJldHVybiBoZWFwLmV4
ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2VzV2l0aEZpbmFsaXplcnM7IH0KIAogI2RlZmluZSBEWU5B
TUlDX1NQQUNFX0FORF9TRVRfREVGSU5FX01FTUJFUihuYW1lKSBcCiAgICAgdGVtcGxhdGU8U3Vi
c3BhY2VBY2Nlc3MgbW9kZT4gXAotICAgIElzb1N1YnNwYWNlKiBuYW1lKCkgXAotICAgIHsgXAot
ICAgICAgICBpZiAoYXV0byogc3BhY2VBbmRTZXQgPSBtXyMjbmFtZS5nZXQoKSkgXAotICAgICAg
ICAgICAgcmV0dXJuICZzcGFjZUFuZFNldC0+c3BhY2U7IFwKLSAgICAgICAgaWYgKG1vZGUgPT0g
U3Vic3BhY2VBY2Nlc3M6OkNvbmN1cnJlbnRseSkgXAotICAgICAgICAgICAgcmV0dXJuIG51bGxw
dHI7IFwKLSAgICAgICAgcmV0dXJuIG5hbWUjI1Nsb3coKTsgXAotICAgIH0gXAotICAgIElzb1N1
YnNwYWNlKiBuYW1lIyNTbG93KCk7IFwKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8U3BhY2VBbmRTZXQ+
IG1fIyNuYW1lOwotICAgIAotICAgIHN0cnVjdCBTcGFjZUFuZFNldCB7Ci0gICAgICAgIFdURl9N
QUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKKyAgICBBTFdBWVNfSU5MSU5FIElzb1N1YnNwYWNl
KiBuYW1lKCkgeyByZXR1cm4gaGVhcC5uYW1lPG1vZGU+KCk7IH0KIAotICAgICAgICBJc29TdWJz
cGFjZSBzcGFjZTsKLSAgICAgICAgSXNvQ2VsbFNldCBzZXQ7Ci0gICAgICAgIAotICAgICAgICB0
ZW1wbGF0ZTx0eXBlbmFtZS4uLiBBcmd1bWVudHM+Ci0gICAgICAgIFNwYWNlQW5kU2V0KEFyZ3Vt
ZW50cyYmLi4uIGFyZ3VtZW50cykKLSAgICAgICAgICAgIDogc3BhY2Uoc3RkOjpmb3J3YXJkPEFy
Z3VtZW50cz4oYXJndW1lbnRzKS4uLikKLSAgICAgICAgICAgICwgc2V0KHNwYWNlKQotICAgICAg
ICB7Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIHN0YXRpYyBJc29DZWxsU2V0JiBzZXRG
b3IoU3Vic3BhY2UmIHNwYWNlKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gKmJpdHdp
c2VfY2FzdDxJc29DZWxsU2V0Kj4oCi0gICAgICAgICAgICAgICAgYml0d2lzZV9jYXN0PGNoYXIq
Pigmc3BhY2UpIC0KLSAgICAgICAgICAgICAgICBPQkpFQ1RfT0ZGU0VUT0YoU3BhY2VBbmRTZXQs
IHNwYWNlKSArCi0gICAgICAgICAgICAgICAgT0JKRUNUX09GRlNFVE9GKFNwYWNlQW5kU2V0LCBz
ZXQpKTsKLSAgICAgICAgfQotICAgIH07Ci0gICAgCi0gICAgU3BhY2VBbmRTZXQgY29kZUJsb2Nr
U3BhY2U7Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jPgotICAgIHZvaWQgZm9yRWFjaENv
ZGVCbG9ja1NwYWNlKGNvbnN0IEZ1bmMmIGZ1bmMpCi0gICAgewotICAgICAgICAvLyBUaGlzIHNo
b3VsZCBub3QgaW5jbHVkZSB3ZWJBc3NlbWJseUNvZGVCbG9ja1NwYWNlIGJlY2F1c2UgdGhpcyBp
cyBhYm91dCBzdWJzY2xhc3NlcyBvZgotICAgICAgICAvLyBKU0M6OkNvZGVCbG9jay4KLSAgICAg
ICAgZnVuYyhjb2RlQmxvY2tTcGFjZSk7Ci0gICAgfQorICAgIHVzaW5nIFNwYWNlQW5kU2V0ID0g
SGVhcDo6U3BhY2VBbmRTZXQ7CisgICAgQUxXQVlTX0lOTElORSBTcGFjZUFuZFNldCYgY29kZUJs
b2NrU3BhY2UoKSB7IHJldHVybiBoZWFwLmNvZGVCbG9ja1NwYWNlOyB9CiAKICAgICBEWU5BTUlD
X1NQQUNFX0FORF9TRVRfREVGSU5FX01FTUJFUihldmFsRXhlY3V0YWJsZVNwYWNlKQogICAgIERZ
TkFNSUNfU1BBQ0VfQU5EX1NFVF9ERUZJTkVfTUVNQkVSKG1vZHVsZVByb2dyYW1FeGVjdXRhYmxl
U3BhY2UpCi0gICAgU3BhY2VBbmRTZXQgZnVuY3Rpb25FeGVjdXRhYmxlU3BhY2U7Ci0gICAgU3Bh
Y2VBbmRTZXQgcHJvZ3JhbUV4ZWN1dGFibGVTcGFjZTsKLQotICAgIHRlbXBsYXRlPHR5cGVuYW1l
IEZ1bmM+Ci0gICAgdm9pZCBmb3JFYWNoU2NyaXB0RXhlY3V0YWJsZVNwYWNlKGNvbnN0IEZ1bmMm
IGZ1bmMpCi0gICAgewotICAgICAgICBpZiAobV9ldmFsRXhlY3V0YWJsZVNwYWNlKQotICAgICAg
ICAgICAgZnVuYygqbV9ldmFsRXhlY3V0YWJsZVNwYWNlKTsKLSAgICAgICAgZnVuYyhmdW5jdGlv
bkV4ZWN1dGFibGVTcGFjZSk7Ci0gICAgICAgIGlmIChtX21vZHVsZVByb2dyYW1FeGVjdXRhYmxl
U3BhY2UpCi0gICAgICAgICAgICBmdW5jKCptX21vZHVsZVByb2dyYW1FeGVjdXRhYmxlU3BhY2Up
OwotICAgICAgICBmdW5jKHByb2dyYW1FeGVjdXRhYmxlU3BhY2UpOwotICAgIH0KLQotICAgIFNw
YWNlQW5kU2V0IHVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlU3BhY2U7CiAKLSN1bmRlZiBEWU5B
TUlDX1NQQUNFX0FORF9TRVRfREVGSU5FX01FTUJFUgorICAgIEFMV0FZU19JTkxJTkUgU3BhY2VB
bmRTZXQmIGZ1bmN0aW9uRXhlY3V0YWJsZVNwYWNlKCkgeyByZXR1cm4gaGVhcC5mdW5jdGlvbkV4
ZWN1dGFibGVTcGFjZTsgfQorICAgIEFMV0FZU19JTkxJTkUgU3BhY2VBbmRTZXQmIHByb2dyYW1F
eGVjdXRhYmxlU3BhY2UoKSB7IHJldHVybiBoZWFwLnByb2dyYW1FeGVjdXRhYmxlU3BhY2U7IH0K
KyAgICBBTFdBWVNfSU5MSU5FIFNwYWNlQW5kU2V0JiB1bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJs
ZVNwYWNlKCkgeyByZXR1cm4gaGVhcC51bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZVNwYWNlOyB9
CiAKICAgICBWTVR5cGUgdm1UeXBlOwogICAgIENsaWVudERhdGEqIGNsaWVudERhdGE7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTUlubGluZXMuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTUlubGluZXMuaAkocmV2aXNpb24gMjg2
MDk1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk1JbmxpbmVzLmgJKHdvcmtp
bmcgY29weSkKQEAgLTI2LDYgKzI2LDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiRW50
cnlGcmFtZS5oIgorI2luY2x1ZGUgIkZ1enplckFnZW50LmgiCiAjaW5jbHVkZSAiUHJvZmlsZXJE
YXRhYmFzZS5oIgogI2luY2x1ZGUgIlZNLmgiCiAjaW5jbHVkZSAiV2F0Y2hkb2cuaCIKQEAgLTkw
LDQgKzkxLDEwIEBAIGlubGluZSBDYWxsRnJhbWUqIFZNOjp0b3BKU0NhbGxGcmFtZSgpIGMKICAg
ICByZXR1cm4gZnJhbWU7CiB9CiAKK2lubGluZSB2b2lkIFZNOjpzZXRGdXp6ZXJBZ2VudChzdGQ6
OnVuaXF1ZV9wdHI8RnV6emVyQWdlbnQ+JiYgZnV6emVyQWdlbnQpCit7CisgICAgUkVMRUFTRV9B
U1NFUlRfV0lUSF9NRVNTQUdFKCFtX2Z1enplckFnZW50LCAiT25seSBvbmUgRnV6emVyQWdlbnQg
Y2FuIGJlIHNwZWNpZmllZCBhdCBhIHRpbWUuIik7CisgICAgbV9mdXp6ZXJBZ2VudCA9IFdURk1v
dmUoZnV6emVyQWdlbnQpOworfQorCiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1dlYWtNYXBQcm90b3R5cGUuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFrTWFwUHJvdG90eXBlLmgJKHJldmlzaW9u
IDI4NjA5NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dlYWtNYXBQcm90b3R5
cGUuaAkod29ya2luZyBjb3B5KQpAQCAtNDEsNyArNDEsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGlj
IElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNf
QVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShXZWFrTWFwUHJvdG90eXBlLCBCYXNlKTsKLSAg
ICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBs
YWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgV2Vha01hcFByb3RvdHlwZSog
Y3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFrT2JqZWN0
UmVmUHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvV2Vha09iamVjdFJlZlByb3RvdHlwZS5oCShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFrT2JqZWN0UmVmUHJvdG90eXBlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTM3LDcgKzM3LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSog
c3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VC
U1BBQ0VfU0hBUkFCTEUoV2Vha09iamVjdFJlZlByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJl
dHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVj
dFNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIFdlYWtPYmplY3RSZWZQcm90b3R5cGUqIGNy
ZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3Ry
dWN0dXJlKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha1NldFByb3Rv
dHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dlYWtT
ZXRQcm90b3R5cGUuaAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvV2Vha1NldFByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00MSw3ICs0MSw3
IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkK
ICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKFdlYWtT
ZXRQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7
CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIHN0
YXRpYyBXZWFrU2V0UHJvdG90eXBlKiBjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS90b29scy9KU0RvbGxhclZNLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvdG9vbHMvSlNEb2xsYXJWTS5jcHAJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxhclZNLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTMz
LDcgKzEzMyw3IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vi
c3BhY2VBY2Nlc3M+CiAgICAgc3RhdGljIENvbXBsZXRlU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZN
JiB2bSkKICAgICB7Ci0gICAgICAgIHJldHVybiAmdm0uY2VsbFNwYWNlOworICAgICAgICByZXR1
cm4gJnZtLmNlbGxTcGFjZSgpOwogICAgIH0KIAogICAgIEpTRG9sbGFyVk1DYWxsRnJhbWUoVk0m
IHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKQEAgLTIyMyw3ICsyMjMsNyBAQCBwdWJsaWM6CiAg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNzPgogICAgIHN0YXRp
YyBDb21wbGV0ZVN1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewotICAgICAgICBy
ZXR1cm4gJnZtLmNlbGxTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5jZWxsU3BhY2UoKTsKICAg
ICB9CiAKICAgICBSb290KiByb290KCkgY29uc3QgeyByZXR1cm4gbV9yb290LmdldCgpOyB9CkBA
IC0yODcsNyArMjg3LDcgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBl
LCBTdWJzcGFjZUFjY2Vzcz4KICAgICBzdGF0aWMgQ29tcGxldGVTdWJzcGFjZSogc3Vic3BhY2VG
b3IoVk0mIHZtKQogICAgIHsKLSAgICAgICAgcmV0dXJuICZ2bS5kZXN0cnVjdGlibGVPYmplY3RT
cGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5kZXN0cnVjdGlibGVPYmplY3RTcGFjZSgpOwogICAg
IH0KIAogICAgIFJvb3QoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKQEAgLTM1NCw3ICsz
NTQsNyBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUsIFN1YnNwYWNl
QWNjZXNzPgogICAgIHN0YXRpYyBDb21wbGV0ZVN1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0p
CiAgICAgewotICAgICAgICByZXR1cm4gJnZtLmNlbGxTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2
bS5jZWxsU3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgU2ltcGxlT2JqZWN0KiBjcmVhdGUo
Vk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQpAQCAtNDI2LDcgKzQyNiw3IEBA
IHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vic3BhY2VBY2Nlc3M+
CiAgICAgc3RhdGljIENvbXBsZXRlU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7
Ci0gICAgICAgIHJldHVybiAmdm0uY2VsbFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLmNlbGxT
cGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShW
TSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQpA
QCAtNTA4LDcgKzUwOCw3IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlw
ZSwgU3Vic3BhY2VBY2Nlc3M+CiAgICAgc3RhdGljIENvbXBsZXRlU3Vic3BhY2UqIHN1YnNwYWNl
Rm9yKFZNJiB2bSkKICAgICB7Ci0gICAgICAgIHJldHVybiAmdm0uY2VsbFNwYWNlOworICAgICAg
ICByZXR1cm4gJnZtLmNlbGxTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBTdHJ1Y3R1cmUq
IGNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpT
VmFsdWUgcHJvdG90eXBlKQpAQCAtNTkwLDcgKzU5MCw3IEBAIElHTk9SRV9XQVJOSU5HU19FTkQK
ICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vic3BhY2VBY2Nlc3M+CiAgICAgc3Rh
dGljIENvbXBsZXRlU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7Ci0gICAgICAg
IHJldHVybiAmdm0uY2VsbFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLmNlbGxTcGFjZSgpOwog
ICAgIH0KIAogICAgIHN0YXRpYyBSdW50aW1lQXJyYXkqIGNyZWF0ZShKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKQEAgLTc3Miw3ICs3NzIsNyBAQCBw
dWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNzPgog
ICAgIHN0YXRpYyBDb21wbGV0ZVN1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewot
ICAgICAgICByZXR1cm4gJnZtLmNlbGxTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5jZWxsU3Bh
Y2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0m
IHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKQEAg
LTg3Miw3ICs4NzIsNyBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUs
IFN1YnNwYWNlQWNjZXNzPgogICAgIHN0YXRpYyBDb21wbGV0ZVN1YnNwYWNlKiBzdWJzcGFjZUZv
cihWTSYgdm0pCiAgICAgewotICAgICAgICByZXR1cm4gJnZtLmNlbGxTcGFjZTsKKyAgICAgICAg
cmV0dXJuICZ2bS5jZWxsU3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgU3RydWN0dXJlKiBj
cmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1Zh
bHVlIHByb3RvdHlwZSkKQEAgLTg5Nyw3ICs4OTcsNyBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8
dHlwZW5hbWUgQ2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNzPgogICAgIHN0YXRpYyBDb21wbGV0ZVN1
YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewotICAgICAgICByZXR1cm4gJnZtLmNl
bGxTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5jZWxsU3BhY2UoKTsKICAgICB9CiAKICAgICBP
YmplY3REb2luZ1NpZGVFZmZlY3RQdXRXaXRob3V0Q29ycmVjdFNsb3RTdGF0dXMoVk0mIHZtLCBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSkKQEAgLTk0OCw3ICs5NDgsNyBAQCBwdWJsaWM6CiAgICAgdGVt
cGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNzPgogICAgIHN0YXRpYyBDb21w
bGV0ZVN1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewotICAgICAgICByZXR1cm4g
JnZtLmNlbGxTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5jZWxsU3BhY2UoKTsKICAgICB9CiAK
ICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKQEAgLTE1ODUsNyArMTU4NSw3
IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vic3BhY2VBY2Nl
c3M+CiAgICAgc3RhdGljIENvbXBsZXRlU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAg
ICB7Ci0gICAgICAgIHJldHVybiAmdm0uY2VsbFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLmNl
bGxTcGFjZSgpOwogICAgIH0KIAogICAgIEpTVGVzdEN1c3RvbUdldHRlclNldHRlcihWTSYgdm0s
IFN0cnVjdHVyZSogc3RydWN0dXJlKQpAQCAtMTgzOCw3ICsxODM4LDcgQEAgcHVibGljOgogICAg
IHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlLCBTdWJzcGFjZUFjY2Vzcz4KICAgICBzdGF0aWMg
Q29tcGxldGVTdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKLSAgICAgICAgcmV0
dXJuICZ2bS5kZXN0cnVjdGlibGVPYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5kZXN0
cnVjdGlibGVPYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIGNsYXNzIENsaWVudCBmaW5hbCA6
IHB1YmxpYyBXYXNtOjpTdHJlYW1pbmdQYXJzZXJDbGllbnQgewpAQCAtMTkzMyw3ICsxOTMzLDcg
QEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlLCBTdWJzcGFjZUFjY2Vz
cz4KICAgICBzdGF0aWMgQ29tcGxldGVTdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAg
IHsKLSAgICAgICAgcmV0dXJuICZ2bS5kZXN0cnVjdGlibGVPYmplY3RTcGFjZTsKKyAgICAgICAg
cmV0dXJuICZ2bS5kZXN0cnVjdGlibGVPYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIFdhc21T
dHJlYW1pbmdDb21waWxlcihWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBXYXNtOjpDb21w
aWxlck1vZGUgY29tcGlsZXJNb2RlLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1By
b21pc2UqIHByb21pc2UsIEpTT2JqZWN0KiBpbXBvcnRPYmplY3QpCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvdG9vbHMvSlNEb2xsYXJWTS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS90b29scy9KU0RvbGxhclZNLmgJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxhclZNLmgJKHdvcmtpbmcgY29weSkKQEAgLTQy
LDcgKzQyLDcgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlLCBTdWJz
cGFjZUFjY2Vzcz4KICAgICBzdGF0aWMgQ29tcGxldGVTdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0m
IHZtKQogICAgIHsKLSAgICAgICAgcmV0dXJuICZ2bS5jZWxsU3BhY2U7CisgICAgICAgIHJldHVy
biAmdm0uY2VsbFNwYWNlKCk7CiAgICAgfQogICAgIAogICAgIERFQ0xBUkVfRVhQT1JUX0lORk87
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseS5o
CShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dl
YkFzc2VtYmx5LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDE2LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDE2LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00MSw3ICs0MSw3IEBAIHB1YmxpYzoKICAg
ICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAg
IFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTV2ViQXNzZW1ibHksIEJhc2Up
OwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAm
dm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBKU1dlYkFzc2VtYmx5
KiBjcmVhdGUoVk0mLCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSopOwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlDb21waWxlRXJyb3JQcm90b3R5cGUu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJs
eUNvbXBpbGVFcnJvclByb3RvdHlwZS5oCShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUNvbXBpbGVFcnJvclByb3RvdHlwZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNi0y
MDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAx
Ni0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpAQCAtNDEsNyArNDEsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIElzb1N1
YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJU
X0lTT19TVUJTUEFDRV9TSEFSQUJMRShXZWJBc3NlbWJseUNvbXBpbGVFcnJvclByb3RvdHlwZSwg
QmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0
dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIFdlYkFzc2Vt
Ymx5Q29tcGlsZUVycm9yUHJvdG90eXBlKiBjcmVhdGUoVk0mLCBKU0dsb2JhbE9iamVjdCosIFN0
cnVjdHVyZSopOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1i
bHlFeGNlcHRpb25Qcm90b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9qcy9XZWJBc3NlbWJseUV4Y2VwdGlvblByb3RvdHlwZS5oCShyZXZpc2lvbiAyODYw
OTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUV4Y2VwdGlv
blByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00MSw3ICs0MSw3IEBAIHB1YmxpYzoKICAg
ICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAg
IFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKFdlYkFzc2VtYmx5RXhjZXB0aW9u
UHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOwor
ICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0
aWMgV2ViQXNzZW1ibHlFeGNlcHRpb25Qcm90b3R5cGUqIGNyZWF0ZShWTSYsIEpTR2xvYmFsT2Jq
ZWN0KiwgU3RydWN0dXJlKik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9X
ZWJBc3NlbWJseUdsb2JhbFByb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5R2xvYmFsUHJvdG90eXBlLmgJKHJldmlzaW9uIDI4
NjA5NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5R2xvYmFs
UHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAxOS0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDAsNyArNDAsNyBAQCBwdWJsaWM6CiAgICAgc3Rh
dGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFU
SUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShXZWJBc3NlbWJseUdsb2JhbFByb3RvdHlw
ZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAg
cmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIFdlYkFz
c2VtYmx5R2xvYmFsUHJvdG90eXBlKiBjcmVhdGUoVk0mLCBKU0dsb2JhbE9iamVjdCosIFN0cnVj
dHVyZSopOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlJ
bnN0YW5jZVByb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL2pzL1dlYkFzc2VtYmx5SW5zdGFuY2VQcm90b3R5cGUuaAkocmV2aXNpb24gMjg2MDk1KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlJbnN0YW5jZVByb3Rv
dHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxNi0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAxNi0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDEsNyArNDEsNyBAQCBwdWJsaWM6CiAgICAgc3Rh
dGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFU
SUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShXZWJBc3NlbWJseUluc3RhbmNlUHJvdG90
eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAg
ICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgV2Vi
QXNzZW1ibHlJbnN0YW5jZVByb3RvdHlwZSogY3JlYXRlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBT
dHJ1Y3R1cmUqKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2Vt
Ymx5TGlua0Vycm9yUHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vanMvV2ViQXNzZW1ibHlMaW5rRXJyb3JQcm90b3R5cGUuaAkocmV2aXNpb24gMjg2
MDk1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlMaW5rRXJy
b3JQcm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTYtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTYtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQxLDcgKzQxLDcgQEAgcHVibGljOgog
ICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAg
ICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoV2ViQXNzZW1ibHlMaW5rRXJy
b3JQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7
CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIHN0
YXRpYyBXZWJBc3NlbWJseUxpbmtFcnJvclByb3RvdHlwZSogY3JlYXRlKFZNJiwgSlNHbG9iYWxP
YmplY3QqLCBTdHJ1Y3R1cmUqKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pz
L1dlYkFzc2VtYmx5TWVtb3J5UHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlNZW1vcnlQcm90b3R5cGUuaAkocmV2aXNpb24g
Mjg2MDk1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlNZW1v
cnlQcm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTYtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTYtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQxLDcgKzQxLDcgQEAgcHVibGljOgog
ICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAg
ICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoV2ViQXNzZW1ibHlNZW1vcnlQ
cm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7Cisg
ICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRp
YyBXZWJBc3NlbWJseU1lbW9yeVByb3RvdHlwZSogY3JlYXRlKFZNJiwgSlNHbG9iYWxPYmplY3Qq
LCBTdHJ1Y3R1cmUqKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFz
c2VtYmx5TW9kdWxlUHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vanMvV2ViQXNzZW1ibHlNb2R1bGVQcm90b3R5cGUuaAkocmV2aXNpb24gMjg2MDk1
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlNb2R1bGVQcm90
b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTYtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMTYtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQxLDcgKzQxLDcgQEAgcHVibGljOgogICAgIHN0
YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAgICAgU1RB
VElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoV2ViQXNzZW1ibHlNb2R1bGVQcm90b3R5
cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAg
IHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBXZWJB
c3NlbWJseU1vZHVsZVByb3RvdHlwZSogY3JlYXRlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1
Y3R1cmUqKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5
UnVudGltZUVycm9yUHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vanMvV2ViQXNzZW1ibHlSdW50aW1lRXJyb3JQcm90b3R5cGUuaAkocmV2aXNpb24g
Mjg2MDk1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlSdW50
aW1lRXJyb3JQcm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQxLDcgKzQxLDcgQEAgcHVi
bGljOgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsK
ICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoV2ViQXNzZW1ibHlS
dW50aW1lRXJyb3JQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2Jq
ZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0K
IAogICAgIHN0YXRpYyBXZWJBc3NlbWJseVJ1bnRpbWVFcnJvclByb3RvdHlwZSogY3JlYXRlKFZN
JiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5VGFibGVQcm90b3R5cGUuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseVRhYmxlUHJvdG90eXBlLmgJ
KHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFz
c2VtYmx5VGFibGVQcm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQxLDcgKzQxLDcgQEAg
cHVibGljOgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAg
IHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoV2ViQXNzZW1i
bHlUYWJsZVByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RT
cGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAg
ICAgc3RhdGljIFdlYkFzc2VtYmx5VGFibGVQcm90b3R5cGUqIGNyZWF0ZShWTSYsIEpTR2xvYmFs
T2JqZWN0KiwgU3RydWN0dXJlKik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9q
cy9XZWJBc3NlbWJseVRhZ1Byb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5VGFnUHJvdG90eXBlLmgJKHJldmlzaW9uIDI4NjA5
NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5VGFnUHJvdG90
eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQwLDcgKzQwLDcgQEAgcHVibGljOgogICAgIHN0YXRp
YyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElD
X0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoV2ViQXNzZW1ibHlUYWdQcm90b3R5cGUsIEJh
c2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVy
biAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBXZWJBc3NlbWJs
eVRhZ1Byb3RvdHlwZSogY3JlYXRlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqKTsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQXN5bmNJdGVyYXRvci5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQXN5bmNJdGVyYXRv
ci5oCShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RP
TUFzeW5jSXRlcmF0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtNDgsNyArNDgsNyBAQCBwdWJsaWM6
CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQog
ICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNET01B
c3luY0l0ZXJhdG9yUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9i
amVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9
CiAKICAgICBzdGF0aWMgSlNET01Bc3luY0l0ZXJhdG9yUHJvdG90eXBlKiBjcmVhdGUoSlNDOjpW
TSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NSXRlcmF0
b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUl0ZXJh
dG9yLmgJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RE9NSXRlcmF0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtNTUsNyArNTUsNyBAQCBwdWJsaWM6CiAg
ICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAg
IHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNET01JdGVy
YXRvclByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFj
ZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAg
c3RhdGljIEpTRE9NSXRlcmF0b3JQcm90b3R5cGUqIGNyZWF0ZShKU0M6OlZNJiB2bSwgSlNDOjpK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlKQpJ
bmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNGaWxlU3lzdGVtRGlyZWN0b3J5SGFu
ZGxlSXRlcmF0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTRmlsZVN5c3RlbURpcmVjdG9yeUhhbmRsZUl0ZXJhdG9yLmNwcAkocmV2aXNpb24gMjg2MDk1
KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNGaWxlU3lzdGVtRGlyZWN0b3J5SGFu
ZGxlSXRlcmF0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NSw5ICs1NSw5IEBAIElzb1N1YnNw
YWNlKiBKU0ZpbGVTeXN0ZW1EaXJlY3RvcnlIYW5kbGUKICAgICAgICAgcmV0dXJuIHNwYWNlOwog
ICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9i
amVjdCwgSlNGaWxlU3lzdGVtRGlyZWN0b3J5SGFuZGxlSXRlcmF0b3I+IHx8ICFKU0ZpbGVTeXN0
ZW1EaXJlY3RvcnlIYW5kbGVJdGVyYXRvcjo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgaWYgY29u
c3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU0Zp
bGVTeXN0ZW1EaXJlY3RvcnlIYW5kbGVJdGVyYXRvcj4pCi0gICAgICAgIGNsaWVudERhdGEuc2V0
RmlsZVN5c3RlbURpcmVjdG9yeUhhbmRsZUl0ZXJhdG9yU3BhY2UobWFrZVVuaXF1ZTxJc29TdWJz
cGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmRlc3RydWN0aWJsZU9iamVjdEhl
YXBDZWxsVHlwZSwgSlNGaWxlU3lzdGVtRGlyZWN0b3J5SGFuZGxlSXRlcmF0b3IpKTsKKyAgICAg
ICAgY2xpZW50RGF0YS5zZXRGaWxlU3lzdGVtRGlyZWN0b3J5SGFuZGxlSXRlcmF0b3JTcGFjZSht
YWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0
cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwgSlNGaWxlU3lzdGVtRGlyZWN0b3J5SGFuZGxl
SXRlcmF0b3IpKTsKICAgICBlbHNlCi0gICAgICAgIGNsaWVudERhdGEuc2V0RmlsZVN5c3RlbURp
cmVjdG9yeUhhbmRsZUl0ZXJhdG9yU3BhY2UobWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NV
QlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmNlbGxIZWFwQ2VsbFR5cGUsIEpTRmlsZVN5c3RlbURp
cmVjdG9yeUhhbmRsZUl0ZXJhdG9yKSk7CisgICAgICAgIGNsaWVudERhdGEuc2V0RmlsZVN5c3Rl
bURpcmVjdG9yeUhhbmRsZUl0ZXJhdG9yU3BhY2UobWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNP
X1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU0ZpbGVTeXN0
ZW1EaXJlY3RvcnlIYW5kbGVJdGVyYXRvcikpOwogICAgIGF1dG8qIHNwYWNlID0gY2xpZW50RGF0
YS5maWxlU3lzdGVtRGlyZWN0b3J5SGFuZGxlSXRlcmF0b3JTcGFjZSgpOwogSUdOT1JFX1dBUk5J
TkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1
dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV2Vi
Q29yZUpTQ2xpZW50RGF0YS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvV2ViQ29yZUpTQ2xpZW50RGF0YS5jcHAJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dlYkNvcmVKU0NsaWVudERhdGEuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0zOCwxMiArMzgsMTMgQEAKICNpbmNsdWRlICJKU1BhaW50V29ya2xldEdsb2JhbFNj
b3BlLmgiCiAjaW5jbHVkZSAiSlNSZW1vdGVET01XaW5kb3cuaCIKICNpbmNsdWRlICJKU1NlcnZp
Y2VXb3JrZXJHbG9iYWxTY29wZS5oIgorI2luY2x1ZGUgIkpTU2hhcmVkV29ya2VyR2xvYmFsU2Nv
cGUuaCIKICNpbmNsdWRlICJKU1dpbmRvd1Byb3h5LmgiCiAjaW5jbHVkZSAiSlNXb3JrZXJHbG9i
YWxTY29wZS5oIgogI2luY2x1ZGUgIkpTV29ya2xldEdsb2JhbFNjb3BlLmgiCiAjaW5jbHVkZSA8
SmF2YVNjcmlwdENvcmUvRmFzdE1hbGxvY0FsaWduZWRNZW1vcnlBbGxvY2F0b3IuaD4KICNpbmNs
dWRlIDxKYXZhU2NyaXB0Q29yZS9IZWFwSW5saW5lcy5oPgotI2luY2x1ZGUgPEphdmFTY3JpcHRD
b3JlL0lzb0hlYXBDZWxsVHlwZS5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0lzb0hlYXBD
ZWxsVHlwZUlubGluZXMuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0Rlc3RydWN0aWJs
ZU9iamVjdEhlYXBDZWxsVHlwZS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL01hcmtpbmdD
b25zdHJhaW50Lmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU3Vic3BhY2VJbmxpbmVzLmg+
CkBAIC01OSwzMyArNjAsMzQgQEAgdXNpbmcgbmFtZXNwYWNlIEpTQzsKIEpTVk1DbGllbnREYXRh
OjpKU1ZNQ2xpZW50RGF0YShWTSYgdm0pCiAgICAgOiBtX2J1aWx0aW5GdW5jdGlvbnModm0pCiAg
ICAgLCBtX2J1aWx0aW5OYW1lcyh2bSkKLSAgICAsIG1fcnVudGltZUFycmF5SGVhcENlbGxUeXBl
KEpTQzo6SXNvSGVhcENlbGxUeXBlOjpjcmVhdGU8UnVudGltZUFycmF5PigpKQotICAgICwgbV9y
dW50aW1lT2JqZWN0SGVhcENlbGxUeXBlKEpTQzo6SXNvSGVhcENlbGxUeXBlOjpjcmVhdGU8SlND
OjpCaW5kaW5nczo6UnVudGltZU9iamVjdD4oKSkKLSAgICAsIG1fd2luZG93UHJveHlIZWFwQ2Vs
bFR5cGUoSlNDOjpJc29IZWFwQ2VsbFR5cGU6OmNyZWF0ZTxKU1dpbmRvd1Byb3h5PigpKQotICAg
ICwgbV9oZWFwQ2VsbFR5cGVGb3JKU0RPTVdpbmRvdyhKU0M6Oklzb0hlYXBDZWxsVHlwZTo6Y3Jl
YXRlPEpTRE9NV2luZG93PigpKQotICAgICwgbV9oZWFwQ2VsbFR5cGVGb3JKU0RlZGljYXRlZFdv
cmtlckdsb2JhbFNjb3BlKEpTQzo6SXNvSGVhcENlbGxUeXBlOjpjcmVhdGU8SlNEZWRpY2F0ZWRX
b3JrZXJHbG9iYWxTY29wZT4oKSkKLSAgICAsIG1faGVhcENlbGxUeXBlRm9ySlNSZW1vdGVET01X
aW5kb3coSlNDOjpJc29IZWFwQ2VsbFR5cGU6OmNyZWF0ZTxKU1JlbW90ZURPTVdpbmRvdz4oKSkK
LSAgICAsIG1faGVhcENlbGxUeXBlRm9ySlNXb3JrZXJHbG9iYWxTY29wZShKU0M6Oklzb0hlYXBD
ZWxsVHlwZTo6Y3JlYXRlPEpTV29ya2VyR2xvYmFsU2NvcGU+KCkpCisvLyAgICAsIG1fcnVudGlt
ZUFycmF5SGVhcENlbGxUeXBlKEpTQzo6SXNvSGVhcENlbGxUeXBlOjpBcmdzPFJ1bnRpbWVBcnJh
eT4oKSkKKy8vICAgICwgbV9ydW50aW1lT2JqZWN0SGVhcENlbGxUeXBlKEpTQzo6SXNvSGVhcENl
bGxUeXBlOjpBcmdzPEpTQzo6QmluZGluZ3M6OlJ1bnRpbWVPYmplY3Q+KCkpCisvLyAgICAsIG1f
d2luZG93UHJveHlIZWFwQ2VsbFR5cGUoSlNDOjpJc29IZWFwQ2VsbFR5cGU6OkFyZ3M8SlNXaW5k
b3dQcm94eT4oKSkKKy8vICAgICwgbV9oZWFwQ2VsbFR5cGVGb3JKU0RPTVdpbmRvdyhKU0M6Oklz
b0hlYXBDZWxsVHlwZTo6QXJnczxKU0RPTVdpbmRvdz4oKSkKKy8vICAgICwgbV9oZWFwQ2VsbFR5
cGVGb3JKU0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlKEpTQzo6SXNvSGVhcENlbGxUeXBlOjpB
cmdzPEpTRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGU+KCkpCisvLyAgICAsIG1faGVhcENlbGxU
eXBlRm9ySlNSZW1vdGVET01XaW5kb3coSlNDOjpJc29IZWFwQ2VsbFR5cGU6OkFyZ3M8SlNSZW1v
dGVET01XaW5kb3c+KCkpCisvLyAgICAsIG1faGVhcENlbGxUeXBlRm9ySlNXb3JrZXJHbG9iYWxT
Y29wZShKU0M6Oklzb0hlYXBDZWxsVHlwZTo6QXJnczxKU1dvcmtlckdsb2JhbFNjb3BlPigpKQor
Ly8gICAgLCBtX2hlYXBDZWxsVHlwZUZvckpTU2hhcmVkV29ya2VyR2xvYmFsU2NvcGUoSlNDOjpJ
c29IZWFwQ2VsbFR5cGU6OkFyZ3M8SlNTaGFyZWRXb3JrZXJHbG9iYWxTY29wZT4oKSkKICNpZiBF
TkFCTEUoU0VSVklDRV9XT1JLRVIpCi0gICAgLCBtX2hlYXBDZWxsVHlwZUZvckpTU2VydmljZVdv
cmtlckdsb2JhbFNjb3BlKEpTQzo6SXNvSGVhcENlbGxUeXBlOjpjcmVhdGU8SlNTZXJ2aWNlV29y
a2VyR2xvYmFsU2NvcGU+KCkpCisvLyAgICAsIG1faGVhcENlbGxUeXBlRm9ySlNTZXJ2aWNlV29y
a2VyR2xvYmFsU2NvcGUoSlNDOjpJc29IZWFwQ2VsbFR5cGU6OkFyZ3M8SlNTZXJ2aWNlV29ya2Vy
R2xvYmFsU2NvcGU+KCkpCiAjZW5kaWYKLSAgICAsIG1faGVhcENlbGxUeXBlRm9ySlNXb3JrbGV0
R2xvYmFsU2NvcGUoSlNDOjpJc29IZWFwQ2VsbFR5cGU6OmNyZWF0ZTxKU1dvcmtsZXRHbG9iYWxT
Y29wZT4oKSkKKy8vICAgICwgbV9oZWFwQ2VsbFR5cGVGb3JKU1dvcmtsZXRHbG9iYWxTY29wZShK
U0M6Oklzb0hlYXBDZWxsVHlwZTo6QXJnczxKU1dvcmtsZXRHbG9iYWxTY29wZT4oKSkKICNpZiBF
TkFCTEUoQ1NTX1BBSU5USU5HX0FQSSkKLSAgICAsIG1faGVhcENlbGxUeXBlRm9ySlNQYWludFdv
cmtsZXRHbG9iYWxTY29wZShKU0M6Oklzb0hlYXBDZWxsVHlwZTo6Y3JlYXRlPEpTUGFpbnRXb3Jr
bGV0R2xvYmFsU2NvcGU+KCkpCisvLyAgICAsIG1faGVhcENlbGxUeXBlRm9ySlNQYWludFdvcmts
ZXRHbG9iYWxTY29wZShKU0M6Oklzb0hlYXBDZWxsVHlwZTo6QXJnczxKU1BhaW50V29ya2xldEds
b2JhbFNjb3BlPigpKQogI2VuZGlmCiAjaWYgRU5BQkxFKFdFQl9BVURJTykKLSAgICAsIG1faGVh
cENlbGxUeXBlRm9ySlNBdWRpb1dvcmtsZXRHbG9iYWxTY29wZShKU0M6Oklzb0hlYXBDZWxsVHlw
ZTo6Y3JlYXRlPEpTQXVkaW9Xb3JrbGV0R2xvYmFsU2NvcGU+KCkpCisvLyAgICAsIG1faGVhcENl
bGxUeXBlRm9ySlNBdWRpb1dvcmtsZXRHbG9iYWxTY29wZShKU0M6Oklzb0hlYXBDZWxsVHlwZTo6
QXJnczxKU0F1ZGlvV29ya2xldEdsb2JhbFNjb3BlPigpKQogI2VuZGlmCi0gICAgLCBtX2hlYXBD
ZWxsVHlwZUZvckpTSURCU2VyaWFsaXphdGlvbkdsb2JhbE9iamVjdChKU0M6Oklzb0hlYXBDZWxs
VHlwZTo6Y3JlYXRlPEpTSURCU2VyaWFsaXphdGlvbkdsb2JhbE9iamVjdD4oKSkKLSAgICAsIG1f
ZG9tQnVpbHRpbkNvbnN0cnVjdG9yU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZt
LmNlbGxIZWFwQ2VsbFR5cGUsIEpTRE9NQnVpbHRpbkNvbnN0cnVjdG9yQmFzZSkKLSAgICAsIG1f
ZG9tQ29uc3RydWN0b3JTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uY2VsbEhl
YXBDZWxsVHlwZSwgSlNET01Db25zdHJ1Y3RvckJhc2UpCi0gICAgLCBtX2RvbU5hbWVzcGFjZU9i
amVjdFNwYWNlIElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5jZWxsSGVhcENlbGxUeXBl
LCBKU0RPTU9iamVjdCkKLSAgICAsIG1fZG9tV2luZG93UHJvcGVydGllc1NwYWNlIElTT19TVUJT
UEFDRV9JTklUKHZtLmhlYXAsICp2bS5jZWxsSGVhcENlbGxUeXBlLCBKU0RPTVdpbmRvd1Byb3Bl
cnRpZXMpCi0gICAgLCBtX3J1bnRpbWVBcnJheVNwYWNlIElTT19TVUJTUEFDRV9JTklUKHZtLmhl
YXAsICptX3J1bnRpbWVBcnJheUhlYXBDZWxsVHlwZSwgUnVudGltZUFycmF5KQotICAgICwgbV9y
dW50aW1lTWV0aG9kU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmNlbGxIZWFw
Q2VsbFR5cGUsIFJ1bnRpbWVNZXRob2QpIC8vIEhhc2g6MHhmNzBjNGE4NQotICAgICwgbV9ydW50
aW1lT2JqZWN0U3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKm1fcnVudGltZU9iamVj
dEhlYXBDZWxsVHlwZSwgSlNDOjpCaW5kaW5nczo6UnVudGltZU9iamVjdCkKLSAgICAsIG1fd2lu
ZG93UHJveHlTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqbV93aW5kb3dQcm94eUhl
YXBDZWxsVHlwZSwgSlNXaW5kb3dQcm94eSkKLSAgICAsIG1faWRiU2VyaWFsaXphdGlvblNwYWNl
IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICptX2hlYXBDZWxsVHlwZUZvckpTSURCU2VyaWFs
aXphdGlvbkdsb2JhbE9iamVjdCwgSlNJREJTZXJpYWxpemF0aW9uR2xvYmFsT2JqZWN0KQorLy8g
ICAgLCBtX2hlYXBDZWxsVHlwZUZvckpTSURCU2VyaWFsaXphdGlvbkdsb2JhbE9iamVjdChKU0M6
Oklzb0hlYXBDZWxsVHlwZTo6QXJnczxKU0lEQlNlcmlhbGl6YXRpb25HbG9iYWxPYmplY3Q+KCkp
CisgICAgLCBtX2RvbUJ1aWx0aW5Db25zdHJ1Y3RvclNwYWNlIElTT19TVUJTUEFDRV9JTklUKHZt
LmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNET01CdWlsdGluQ29uc3RydWN0b3JCYXNl
KQorICAgICwgbV9kb21Db25zdHJ1Y3RvclNwYWNlIElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAs
IHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNET01Db25zdHJ1Y3RvckJhc2UpCisgICAgLCBtX2Rv
bU5hbWVzcGFjZU9iamVjdFNwYWNlIElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxI
ZWFwQ2VsbFR5cGUoKSwgSlNET01PYmplY3QpCisgICAgLCBtX2RvbVdpbmRvd1Byb3BlcnRpZXNT
cGFjZSBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCksIEpT
RE9NV2luZG93UHJvcGVydGllcykKKyAgICAsIG1fcnVudGltZUFycmF5U3BhY2UgSVNPX1NVQlNQ
QUNFX0lOSVQodm0uaGVhcCwgbV9ydW50aW1lQXJyYXlIZWFwQ2VsbFR5cGUsIFJ1bnRpbWVBcnJh
eSkKKyAgICAsIG1fcnVudGltZU1ldGhvZFNwYWNlIElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAs
IHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgUnVudGltZU1ldGhvZCkgLy8gSGFzaDoweGY3MGM0YTg1
CisgICAgLCBtX3J1bnRpbWVPYmplY3RTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCBt
X3J1bnRpbWVPYmplY3RIZWFwQ2VsbFR5cGUsIEpTQzo6QmluZGluZ3M6OlJ1bnRpbWVPYmplY3Qp
CisgICAgLCBtX3dpbmRvd1Byb3h5U3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgbV93
aW5kb3dQcm94eUhlYXBDZWxsVHlwZSwgSlNXaW5kb3dQcm94eSkKKyAgICAsIG1faWRiU2VyaWFs
aXphdGlvblNwYWNlIElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIG1faGVhcENlbGxUeXBlRm9y
SlNJREJTZXJpYWxpemF0aW9uR2xvYmFsT2JqZWN0LCBKU0lEQlNlcmlhbGl6YXRpb25HbG9iYWxP
YmplY3QpCiAgICAgLCBtX3N1YnNwYWNlcyhtYWtlVW5pcXVlPERPTUlzb1N1YnNwYWNlcz4oKSkK
IHsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dlYkNvcmVKU0NsaWVudERh
dGEuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9XZWJDb3JlSlND
bGllbnREYXRhLmgJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL1dlYkNvcmVKU0NsaWVudERhdGEuaAkod29ya2luZyBjb3B5KQpAQCAtMSw2ICsxLDYgQEAK
IC8qCiAgKiAgQ29weXJpZ2h0IChDKSAxOTk5LTIwMDEgSGFycmkgUG9ydGVuIChwb3J0ZW5Aa2Rl
Lm9yZykKLSAqICBDb3B5cmlnaHQgKEMpIDIwMDMtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiAgQ29weXJpZ2h0IChDKSAyMDAzLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICogIENvcHlyaWdodCAoQykgMjAwNyBTYW11ZWwgV2VpbmlnIDxzYW1A
d2Via2l0Lm9yZz4KICAqICBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlLCBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgpAQCAtMjgsOSArMjgsMzUgQEAKICNpbmNsdWRlIDx3dGYvSGFzaFNl
dC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIAorbmFtZXNwYWNlIEpTQyB7CitjbGFzcyBS
dW50aW1lQXJyYXk7CisKK25hbWVzcGFjZSBCaW5kaW5ncyB7CitjbGFzcyBSdW50aW1lT2JqZWN0
OworfQorfSAvLyBuYW1lc3BhY2UgSlNDCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3Mg
RE9NSXNvU3Vic3BhY2VzOworY2xhc3MgSlNET01XaW5kb3c7CitjbGFzcyBKU0RlZGljYXRlZFdv
cmtlckdsb2JhbFNjb3BlOworY2xhc3MgSlNJREJTZXJpYWxpemF0aW9uR2xvYmFsT2JqZWN0Owor
Y2xhc3MgSlNSZW1vdGVET01XaW5kb3c7CitjbGFzcyBKU1NoYXJlZFdvcmtlckdsb2JhbFNjb3Bl
OworY2xhc3MgSlNXaW5kb3dQcm94eTsKK2NsYXNzIEpTV29ya2VyR2xvYmFsU2NvcGU7CitjbGFz
cyBKU1dvcmtsZXRHbG9iYWxTY29wZTsKKworI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKK2Ns
YXNzIEpTU2VydmljZVdvcmtlckdsb2JhbFNjb3BlOworI2VuZGlmCisjaWYgRU5BQkxFKENTU19Q
QUlOVElOR19BUEkpCitjbGFzcyBKU1BhaW50V29ya2xldEdsb2JhbFNjb3BlOworI2VuZGlmCisj
aWYgRU5BQkxFKFdFQl9BVURJTykKK2NsYXNzIEpTQXVkaW9Xb3JrbGV0R2xvYmFsU2NvcGU7Cisj
ZW5kaWYKIAogY2xhc3MgSlNWTUNsaWVudERhdGEgOiBwdWJsaWMgSlNDOjpWTTo6Q2xpZW50RGF0
YSB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoSlNWTUNsaWVudERhdGEpOyBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKQEAgLTkyLDI2ICsxMTgsMjYgQEAgcHJpdmF0ZToKICAgICBKU0J1aWx0
aW5GdW5jdGlvbnMgbV9idWlsdGluRnVuY3Rpb25zOwogICAgIFdlYkNvcmVCdWlsdGluTmFtZXMg
bV9idWlsdGluTmFtZXM7CiAKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SlNDOjpIZWFwQ2VsbFR5cGU+
IG1fcnVudGltZUFycmF5SGVhcENlbGxUeXBlOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxKU0M6Okhl
YXBDZWxsVHlwZT4gbV9ydW50aW1lT2JqZWN0SGVhcENlbGxUeXBlOwotICAgIHN0ZDo6dW5pcXVl
X3B0cjxKU0M6OkhlYXBDZWxsVHlwZT4gbV93aW5kb3dQcm94eUhlYXBDZWxsVHlwZTsKKyAgICBK
U0M6Oklzb0hlYXBDZWxsVHlwZTxKU0M6OlJ1bnRpbWVBcnJheT4gbV9ydW50aW1lQXJyYXlIZWFw
Q2VsbFR5cGU7CisgICAgSlNDOjpJc29IZWFwQ2VsbFR5cGU8SlNDOjpCaW5kaW5nczo6UnVudGlt
ZU9iamVjdD4gbV9ydW50aW1lT2JqZWN0SGVhcENlbGxUeXBlOworICAgIEpTQzo6SXNvSGVhcENl
bGxUeXBlPEpTV2luZG93UHJveHk+IG1fd2luZG93UHJveHlIZWFwQ2VsbFR5cGU7CiBwdWJsaWM6
Ci0gICAgc3RkOjp1bmlxdWVfcHRyPEpTQzo6SGVhcENlbGxUeXBlPiBtX2hlYXBDZWxsVHlwZUZv
ckpTRE9NV2luZG93OwotICAgIHN0ZDo6dW5pcXVlX3B0cjxKU0M6OkhlYXBDZWxsVHlwZT4gbV9o
ZWFwQ2VsbFR5cGVGb3JKU0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlOwotICAgIHN0ZDo6dW5p
cXVlX3B0cjxKU0M6OkhlYXBDZWxsVHlwZT4gbV9oZWFwQ2VsbFR5cGVGb3JKU1JlbW90ZURPTVdp
bmRvdzsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SlNDOjpIZWFwQ2VsbFR5cGU+IG1faGVhcENlbGxU
eXBlRm9ySlNXb3JrZXJHbG9iYWxTY29wZTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SlNDOjpIZWFw
Q2VsbFR5cGU+IG1faGVhcENlbGxUeXBlRm9ySlNTaGFyZWRXb3JrZXJHbG9iYWxTY29wZTsKKyAg
ICBKU0M6Oklzb0hlYXBDZWxsVHlwZTxKU0RPTVdpbmRvdz4gbV9oZWFwQ2VsbFR5cGVGb3JKU0RP
TVdpbmRvdzsKKyAgICBKU0M6Oklzb0hlYXBDZWxsVHlwZTxKU0RlZGljYXRlZFdvcmtlckdsb2Jh
bFNjb3BlPiBtX2hlYXBDZWxsVHlwZUZvckpTRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGU7Cisg
ICAgSlNDOjpJc29IZWFwQ2VsbFR5cGU8SlNSZW1vdGVET01XaW5kb3c+IG1faGVhcENlbGxUeXBl
Rm9ySlNSZW1vdGVET01XaW5kb3c7CisgICAgSlNDOjpJc29IZWFwQ2VsbFR5cGU8SlNXb3JrZXJH
bG9iYWxTY29wZT4gbV9oZWFwQ2VsbFR5cGVGb3JKU1dvcmtlckdsb2JhbFNjb3BlOworICAgIEpT
Qzo6SXNvSGVhcENlbGxUeXBlPEpTU2hhcmVkV29ya2VyR2xvYmFsU2NvcGU+IG1faGVhcENlbGxU
eXBlRm9ySlNTaGFyZWRXb3JrZXJHbG9iYWxTY29wZTsKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JL
RVIpCi0gICAgc3RkOjp1bmlxdWVfcHRyPEpTQzo6SGVhcENlbGxUeXBlPiBtX2hlYXBDZWxsVHlw
ZUZvckpTU2VydmljZVdvcmtlckdsb2JhbFNjb3BlOworICAgIEpTQzo6SXNvSGVhcENlbGxUeXBl
PEpTU2VydmljZVdvcmtlckdsb2JhbFNjb3BlPiBtX2hlYXBDZWxsVHlwZUZvckpTU2VydmljZVdv
cmtlckdsb2JhbFNjb3BlOwogI2VuZGlmCi0gICAgc3RkOjp1bmlxdWVfcHRyPEpTQzo6SGVhcENl
bGxUeXBlPiBtX2hlYXBDZWxsVHlwZUZvckpTV29ya2xldEdsb2JhbFNjb3BlOworICAgIEpTQzo6
SXNvSGVhcENlbGxUeXBlPEpTV29ya2xldEdsb2JhbFNjb3BlPiBtX2hlYXBDZWxsVHlwZUZvckpT
V29ya2xldEdsb2JhbFNjb3BlOwogI2lmIEVOQUJMRShDU1NfUEFJTlRJTkdfQVBJKQotICAgIHN0
ZDo6dW5pcXVlX3B0cjxKU0M6OkhlYXBDZWxsVHlwZT4gbV9oZWFwQ2VsbFR5cGVGb3JKU1BhaW50
V29ya2xldEdsb2JhbFNjb3BlOworICAgIEpTQzo6SXNvSGVhcENlbGxUeXBlPEpTUGFpbnRXb3Jr
bGV0R2xvYmFsU2NvcGU+IG1faGVhcENlbGxUeXBlRm9ySlNQYWludFdvcmtsZXRHbG9iYWxTY29w
ZTsKICNlbmRpZgogI2lmIEVOQUJMRShXRUJfQVVESU8pCi0gICAgc3RkOjp1bmlxdWVfcHRyPEpT
Qzo6SGVhcENlbGxUeXBlPiBtX2hlYXBDZWxsVHlwZUZvckpTQXVkaW9Xb3JrbGV0R2xvYmFsU2Nv
cGU7CisgICAgSlNDOjpJc29IZWFwQ2VsbFR5cGU8SlNBdWRpb1dvcmtsZXRHbG9iYWxTY29wZT4g
bV9oZWFwQ2VsbFR5cGVGb3JKU0F1ZGlvV29ya2xldEdsb2JhbFNjb3BlOwogI2VuZGlmCi0gICAg
c3RkOjp1bmlxdWVfcHRyPEpTQzo6SGVhcENlbGxUeXBlPiBtX2hlYXBDZWxsVHlwZUZvckpTSURC
U2VyaWFsaXphdGlvbkdsb2JhbE9iamVjdDsKKyAgICBKU0M6Oklzb0hlYXBDZWxsVHlwZTxKU0lE
QlNlcmlhbGl6YXRpb25HbG9iYWxPYmplY3Q+IG1faGVhcENlbGxUeXBlRm9ySlNJREJTZXJpYWxp
emF0aW9uR2xvYmFsT2JqZWN0OwogCiBwcml2YXRlOgogICAgIEpTQzo6SXNvU3Vic3BhY2UgbV9k
b21CdWlsdGluQ29uc3RydWN0b3JTcGFjZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCShyZXZpc2lvbiAyODYwOTUpCisr
KyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQkod29y
a2luZyBjb3B5KQpAQCAtNDg1MiwxMyArNDg1MiwxMyBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRh
dGlvbgogICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGlmIChhdXRvKiBzcGFjZSA9IHNwYWNl
cy5tX3N1YnNwYWNlRm9yJHtpbnRlcmZhY2VOYW1lfS5nZXQoKSlcbiIpOwogICAgIHB1c2goQGlt
cGxDb250ZW50LCAiICAgICAgICByZXR1cm4gc3BhY2U7XG4iKTsKICAgICBpZiAoSXNET01HbG9i
YWxPYmplY3QoJGludGVyZmFjZSkpIHsKLSAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAg
c3BhY2VzLm1fc3Vic3BhY2VGb3Ike2ludGVyZmFjZU5hbWV9ID0gbWFrZVVuaXF1ZTxJc29TdWJz
cGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKmNsaWVudERhdGEubV9oZWFwQ2VsbFR5
cGVGb3Ike2NsYXNzTmFtZX0sICR7Y2xhc3NOYW1lfSk7XG4iKTsKKyAgICAgICAgcHVzaChAaW1w
bENvbnRlbnQsICIgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3Ike2ludGVyZmFjZU5hbWV9ID0gbWFr
ZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgY2xpZW50RGF0
YS5tX2hlYXBDZWxsVHlwZUZvciR7Y2xhc3NOYW1lfSwgJHtjbGFzc05hbWV9KTtcbiIpOwogICAg
IH0gZWxzZSB7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHN0YXRpY19hc3NlcnQo
c3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgJHtjbGFzc05hbWV9
PiB8fCAhJHtjbGFzc05hbWV9OjpuZWVkc0Rlc3RydWN0aW9uKTtcbiIpOwogICAgICAgICBwdXNo
KEBpbXBsQ29udGVudCwgIiAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6
SlNEZXN0cnVjdGlibGVPYmplY3QsICR7Y2xhc3NOYW1lfT4pXG4iKTsKLSAgICAgICAgcHVzaChA
aW1wbENvbnRlbnQsICIgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yJHtpbnRlcmZhY2VOYW1l
fSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2
bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUsICR7Y2xhc3NOYW1lfSk7XG4iKTsKKyAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yJHtp
bnRlcmZhY2VOYW1lfSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklU
KHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpLCAke2NsYXNzTmFt
ZX0pO1xuIik7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGVsc2VcbiIpOwotICAg
ICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3Ike2lu
dGVyZmFjZU5hbWV9ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQo
dm0uaGVhcCwgKnZtLmNlbGxIZWFwQ2VsbFR5cGUsICR7Y2xhc3NOYW1lfSk7XG4iKTsKKyAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yJHtpbnRl
cmZhY2VOYW1lfSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZt
LmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgJHtjbGFzc05hbWV9KTtcbiIpOwogICAgIH0K
ICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNw
YWNlRm9yJHtpbnRlcmZhY2VOYW1lfS5nZXQoKTtcbiIpOwogICAgIHB1c2goQGltcGxDb250ZW50
LCAiSUdOT1JFX1dBUk5JTkdTX0JFR0lOKFwidW5yZWFjaGFibGUtY29kZVwiKVxuIik7CkBAIC02
NzMxLDkgKzY3MzEsOSBAQCBwdWJsaWM6CiAgICAgICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAg
ICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9i
amVjdCwgJHtpdGVyYXRvck5hbWV9PiB8fCAhJHtpdGVyYXRvck5hbWV9OjpuZWVkc0Rlc3RydWN0
aW9uKTsKICAgICAgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVz
dHJ1Y3RpYmxlT2JqZWN0LCAke2l0ZXJhdG9yTmFtZX0+KQotICAgICAgICAgICAgc3BhY2VzLm1f
c3Vic3BhY2VGb3Ike2l0ZXJhdG9yTmFtZX0gPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09f
U1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBl
LmdldCgpLCAke2l0ZXJhdG9yTmFtZX0pOworICAgICAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VG
b3Ike2l0ZXJhdG9yTmFtZX0gPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0Vf
SU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwgJHtpdGVy
YXRvck5hbWV9KTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VG
b3Ike2l0ZXJhdG9yTmFtZX0gPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0Vf
SU5JVCh2bS5oZWFwLCAqdm0uY2VsbEhlYXBDZWxsVHlwZSwgJHtpdGVyYXRvck5hbWV9KTsKKyAg
ICAgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yJHtpdGVyYXRvck5hbWV9ID0gbWFrZVVuaXF1
ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxs
VHlwZSgpLCAke2l0ZXJhdG9yTmFtZX0pOwogICAgICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5t
X3N1YnNwYWNlRm9yJHtpdGVyYXRvck5hbWV9LmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lO
KFwidW5yZWFjaGFibGUtY29kZVwiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKFwidGF1dG9sb2dp
Y2FsLWNvbXBhcmVcIikKQEAgLTc1MjksNyArNzUyOSw3IEBAIHN1YiBHZW5lcmF0ZVByb3RvdHlw
ZURlY2xhcmF0aW9uCiAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIHN0YXRpYyBKU0M6Oklz
b1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSlcbiIpOwogICAgIHB1c2goQCRvdXRw
dXRBcnJheSwgIiAgICB7XG4iKTsKICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgICAgIFNU
QVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKCR7cHJvdG90eXBlQ2xhc3NOYW1lfSwg
QmFzZSk7XG4iKTsKLSAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgICAgIHJldHVybiAmdm0u
cGxhaW5PYmplY3RTcGFjZTtcbiIpOworICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICAgICAg
cmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7XG4iKTsKICAgICBwdXNoKEAkb3V0cHV0QXJy
YXksICIgICAgfVxuIik7CiAKICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgc3RhdGljIEpT
Qzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSlcbiIpOwpJbmRleDog
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTRE9NV2luZG93LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNE
T01XaW5kb3cuY3BwCShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNET01XaW5kb3cuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNjks
NyArMzY5LDcgQEAgSlNDOjpJc29TdWJzcGFjZSogSlNET01XaW5kb3c6OnN1YnNwYWNlRgogICAg
IGF1dG8mIHNwYWNlcyA9IGNsaWVudERhdGEuc3Vic3BhY2VzKCk7CiAgICAgaWYgKGF1dG8qIHNw
YWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JET01XaW5kb3cuZ2V0KCkpCiAgICAgICAgIHJldHVy
biBzcGFjZTsKLSAgICBzcGFjZXMubV9zdWJzcGFjZUZvckRPTVdpbmRvdyA9IG1ha2VVbmlxdWU8
SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICpjbGllbnREYXRhLm1faGVh
cENlbGxUeXBlRm9ySlNET01XaW5kb3csIEpTRE9NV2luZG93KTsKKyAgICBzcGFjZXMubV9zdWJz
cGFjZUZvckRPTVdpbmRvdyA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9J
TklUKHZtLmhlYXAsIGNsaWVudERhdGEubV9oZWFwQ2VsbFR5cGVGb3JKU0RPTVdpbmRvdywgSlNE
T01XaW5kb3cpOwogICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JET01XaW5k
b3cuZ2V0KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdO
T1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNET01XaW5kb3cuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNET01XaW5kb3cu
aAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTRE9NV2luZG93LmgJKHdvcmtpbmcgY29weSkKQEAgLTg1LDcgKzg1LDcgQEAgcHVi
bGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2
bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpT
RE9NV2luZG93UHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVj
dFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAg
ICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpT
Qzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkK
ICAgICB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNE
ZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUu
Y3BwCShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTE3MCw3ICsxNzAsNyBAQCBKU0M6Oklzb1N1YnNwYWNlKiBKU0RlZGljYXRlZFdvcmtlckds
b2JhCiAgICAgYXV0byYgc3BhY2VzID0gY2xpZW50RGF0YS5zdWJzcGFjZXMoKTsKICAgICBpZiAo
YXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvckRlZGljYXRlZFdvcmtlckdsb2JhbFNj
b3BlLmdldCgpKQogICAgICAgICByZXR1cm4gc3BhY2U7Ci0gICAgc3BhY2VzLm1fc3Vic3BhY2VG
b3JEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElT
T19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICpjbGllbnREYXRhLm1faGVhcENlbGxUeXBlRm9ySlNE
ZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZSwgSlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZSk7
CisgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZSA9IG1h
a2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIGNsaWVudERh
dGEubV9oZWFwQ2VsbFR5cGVGb3JKU0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlLCBKU0RlZGlj
YXRlZFdvcmtlckdsb2JhbFNjb3BlKTsKICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNw
YWNlRm9yRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUuZ2V0KCk7CiBJR05PUkVfV0FSTklOR1Nf
QkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xv
Z2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU0RlZGljYXRlZFdvcmtlckdsb2Jh
bFNjb3BlLmgJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTgyLDcgKzgyLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNl
KiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRf
SVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGVQcm90b3R5
cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAg
IHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KICAgICBzdGF0aWMgSlNDOjpT
dHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU0V4cG9zZWRTdGFyLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNF
eHBvc2VkU3Rhci5jcHAJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU0V4cG9zZWRTdGFyLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NzEsNyArNzEsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNw
YWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VC
U1BBQ0VfU0hBUkFCTEUoSlNFeHBvc2VkU3RhclByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJl
dHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVj
dFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0
dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6
SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAtMjM2LDkgKzIzNiw5IEBAIEpTQzo6SXNvU3Vi
c3BhY2UqIEpTRXhwb3NlZFN0YXI6OnN1YnNwYWMKICAgICAgICAgcmV0dXJuIHNwYWNlOwogICAg
IHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVj
dCwgSlNFeHBvc2VkU3Rhcj4gfHwgIUpTRXhwb3NlZFN0YXI6Om5lZWRzRGVzdHJ1Y3Rpb24pOwog
ICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9i
amVjdCwgSlNFeHBvc2VkU3Rhcj4pCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yRXhwb3Nl
ZFN0YXIgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFw
LCAqdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLCBKU0V4cG9zZWRTdGFyKTsKKyAg
ICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JFeHBvc2VkU3RhciA9IG1ha2VVbmlxdWU8SXNvU3Vi
c3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhl
YXBDZWxsVHlwZSgpLCBKU0V4cG9zZWRTdGFyKTsKICAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5t
X3N1YnNwYWNlRm9yRXhwb3NlZFN0YXIgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VC
U1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uY2VsbEhlYXBDZWxsVHlwZSwgSlNFeHBvc2VkU3Rhcik7
CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yRXhwb3NlZFN0YXIgPSBtYWtlVW5pcXVlPElz
b1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBl
KCksIEpTRXhwb3NlZFN0YXIpOwogICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VG
b3JFeHBvc2VkU3Rhci5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUt
Y29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU0V4cG9zZWRUb1dv
cmtlckFuZFdpbmRvdy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTRXhwb3NlZFRvV29ya2VyQW5kV2luZG93LmNwcAkocmV2aXNpb24g
Mjg2MDk1KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTRXhw
b3NlZFRvV29ya2VyQW5kV2luZG93LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTEyLDcgKzExMiw3
IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlND
OjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFS
QUJMRShKU0V4cG9zZWRUb1dvcmtlckFuZFdpbmRvd1Byb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAg
IHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9i
amVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3Ry
dWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpT
Qzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAtMjUyLDkgKzI1Miw5IEBAIEpTQzo6SXNv
U3Vic3BhY2UqIEpTRXhwb3NlZFRvV29ya2VyQW5kV2kKICAgICAgICAgcmV0dXJuIHNwYWNlOwog
ICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9i
amVjdCwgSlNFeHBvc2VkVG9Xb3JrZXJBbmRXaW5kb3c+IHx8ICFKU0V4cG9zZWRUb1dvcmtlckFu
ZFdpbmRvdzo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jh
c2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU0V4cG9zZWRUb1dvcmtlckFuZFdp
bmRvdz4pCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yRXhwb3NlZFRvV29ya2VyQW5kV2lu
ZG93ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwg
KnZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSwgSlNFeHBvc2VkVG9Xb3JrZXJBbmRX
aW5kb3cpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvckV4cG9zZWRUb1dvcmtlckFuZFdp
bmRvdyA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAs
IHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBKU0V4cG9zZWRUb1dvcmtlckFu
ZFdpbmRvdyk7CiAgICAgZWxzZQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvckV4cG9zZWRU
b1dvcmtlckFuZFdpbmRvdyA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9J
TklUKHZtLmhlYXAsICp2bS5jZWxsSGVhcENlbGxUeXBlLCBKU0V4cG9zZWRUb1dvcmtlckFuZFdp
bmRvdyk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yRXhwb3NlZFRvV29ya2VyQW5kV2lu
ZG93ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwg
dm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU0V4cG9zZWRUb1dvcmtlckFuZFdpbmRvdyk7CiAgICAg
YXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvckV4cG9zZWRUb1dvcmtlckFuZFdpbmRv
dy5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJR05P
UkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1BhaW50V29ya2xldEdsb2JhbFNjb3Bl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNQYWludFdvcmtsZXRHbG9iYWxTY29wZS5jcHAJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1BhaW50V29ya2xldEdsb2Jh
bFNjb3BlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTY5LDcgKzE2OSw3IEBAIEpTQzo6SXNvU3Vi
c3BhY2UqIEpTUGFpbnRXb3JrbGV0R2xvYmFsU2MKICAgICBhdXRvJiBzcGFjZXMgPSBjbGllbnRE
YXRhLnN1YnNwYWNlcygpOwogICAgIGlmIChhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNl
Rm9yUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuZ2V0KCkpCiAgICAgICAgIHJldHVybiBzcGFjZTsK
LSAgICBzcGFjZXMubV9zdWJzcGFjZUZvclBhaW50V29ya2xldEdsb2JhbFNjb3BlID0gbWFrZVVu
aXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKmNsaWVudERhdGEu
bV9oZWFwQ2VsbFR5cGVGb3JKU1BhaW50V29ya2xldEdsb2JhbFNjb3BlLCBKU1BhaW50V29ya2xl
dEdsb2JhbFNjb3BlKTsKKyAgICBzcGFjZXMubV9zdWJzcGFjZUZvclBhaW50V29ya2xldEdsb2Jh
bFNjb3BlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVh
cCwgY2xpZW50RGF0YS5tX2hlYXBDZWxsVHlwZUZvckpTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUs
IEpTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUpOwogICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1f
c3Vic3BhY2VGb3JQYWludFdvcmtsZXRHbG9iYWxTY29wZS5nZXQoKTsKIElHTk9SRV9XQVJOSU5H
U19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRv
bG9naWNhbC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTUGFpbnRXb3JrbGV0R2xvYmFsU2Nv
cGUuaAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuaAkod29ya2luZyBjb3B5KQpAQCAt
ODIsNyArODIsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNw
YWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VC
U1BBQ0VfU0hBUkFCTEUoSlNQYWludFdvcmtsZXRHbG9iYWxTY29wZVByb3RvdHlwZSwgQmFzZSk7
Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2
bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSog
Y3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpJbmRleDogU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTU2VydmljZVdvcmtlckdsb2JhbFNjb3BlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUuY3BwCShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNTZXJ2aWNlV29ya2VyR2xvYmFs
U2NvcGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjksNyArMTY5LDcgQEAgSlNDOjpJc29TdWJz
cGFjZSogSlNTZXJ2aWNlV29ya2VyR2xvYmFsUwogICAgIGF1dG8mIHNwYWNlcyA9IGNsaWVudERh
dGEuc3Vic3BhY2VzKCk7CiAgICAgaWYgKGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VG
b3JTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUuZ2V0KCkpCiAgICAgICAgIHJldHVybiBzcGFjZTsK
LSAgICBzcGFjZXMubV9zdWJzcGFjZUZvclNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSA9IG1ha2VV
bmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICpjbGllbnREYXRh
Lm1faGVhcENlbGxUeXBlRm9ySlNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUsIEpTU2VydmljZVdv
cmtlckdsb2JhbFNjb3BlKTsKKyAgICBzcGFjZXMubV9zdWJzcGFjZUZvclNlcnZpY2VXb3JrZXJH
bG9iYWxTY29wZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZt
LmhlYXAsIGNsaWVudERhdGEubV9oZWFwQ2VsbFR5cGVGb3JKU1NlcnZpY2VXb3JrZXJHbG9iYWxT
Y29wZSwgSlNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUpOwogICAgIGF1dG8qIHNwYWNlID0gc3Bh
Y2VzLm1fc3Vic3BhY2VGb3JTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUuZ2V0KCk7CiBJR05PUkVf
V0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lO
KCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNTZXJ2aWNlV29ya2Vy
R2xvYmFsU2NvcGUuaAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTU2VydmljZVdvcmtlckdsb2JhbFNjb3BlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTgyLDcgKzgyLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNw
YWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NF
UlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTU2VydmljZVdvcmtlckdsb2JhbFNjb3BlUHJvdG90
eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAg
ICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6
U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNTaGFyZWRXb3JrZXJHbG9i
YWxTY29wZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTU2hhcmVkV29ya2VyR2xvYmFsU2NvcGUuY3BwCShyZXZpc2lvbiAyODYwOTUp
CisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNTaGFyZWRXb3Jr
ZXJHbG9iYWxTY29wZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1Myw3ICsxNTMsNyBAQCBKU0M6
Oklzb1N1YnNwYWNlKiBKU1NoYXJlZFdvcmtlckdsb2JhbFNjCiAgICAgYXV0byYgc3BhY2VzID0g
Y2xpZW50RGF0YS5zdWJzcGFjZXMoKTsKICAgICBpZiAoYXV0byogc3BhY2UgPSBzcGFjZXMubV9z
dWJzcGFjZUZvclNoYXJlZFdvcmtlckdsb2JhbFNjb3BlLmdldCgpKQogICAgICAgICByZXR1cm4g
c3BhY2U7Ci0gICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JTaGFyZWRXb3JrZXJHbG9iYWxTY29wZSA9
IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICpjbGll
bnREYXRhLm1faGVhcENlbGxUeXBlRm9ySlNTaGFyZWRXb3JrZXJHbG9iYWxTY29wZSwgSlNTaGFy
ZWRXb3JrZXJHbG9iYWxTY29wZSk7CisgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JTaGFyZWRXb3Jr
ZXJHbG9iYWxTY29wZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklU
KHZtLmhlYXAsIGNsaWVudERhdGEubV9oZWFwQ2VsbFR5cGVGb3JKU1NoYXJlZFdvcmtlckdsb2Jh
bFNjb3BlLCBKU1NoYXJlZFdvcmtlckdsb2JhbFNjb3BlKTsKICAgICBhdXRvKiBzcGFjZSA9IHNw
YWNlcy5tX3N1YnNwYWNlRm9yU2hhcmVkV29ya2VyR2xvYmFsU2NvcGUuZ2V0KCk7CiBJR05PUkVf
V0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lO
KCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNTaGFyZWRXb3JrZXJHbG9iYWxTY29wZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1NoYXJlZFdvcmtlckds
b2JhbFNjb3BlLmgJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1NoYXJlZFdvcmtlckdsb2JhbFNjb3BlLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTgyLDcgKzgyLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNl
KiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRf
SVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTU2hhcmVkV29ya2VyR2xvYmFsU2NvcGVQcm90b3R5cGUs
IEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJl
dHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1
Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDRVJlYWN0aW9ucy5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdENFUmVhY3Rpb25zLmNwcAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENFUmVhY3Rpb25zLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtOTEsNyArOTEsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3Bh
Y2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VS
VF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0Q0VSZWFjdGlvbnNQcm90b3R5cGUsIEJhc2Up
OwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAm
dm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUq
IGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKQEAgLTQzOCw5ICs0MzgsOSBA
QCBKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3RDRVJlYWN0aW9uczo6c3ViCiAgICAgICAgIHJldHVy
biBzcGFjZTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0
cnVjdGlibGVPYmplY3QsIEpTVGVzdENFUmVhY3Rpb25zPiB8fCAhSlNUZXN0Q0VSZWFjdGlvbnM6
Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8
SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0Q0VSZWFjdGlvbnM+KQotICAgICAgICBz
cGFjZXMubV9zdWJzcGFjZUZvclRlc3RDRVJlYWN0aW9ucyA9IG1ha2VVbmlxdWU8SXNvU3Vic3Bh
Y2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFw
Q2VsbFR5cGUsIEpTVGVzdENFUmVhY3Rpb25zKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VG
b3JUZXN0Q0VSZWFjdGlvbnMgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0Vf
SU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0
Q0VSZWFjdGlvbnMpOwogICAgIGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0
Q0VSZWFjdGlvbnMgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2
bS5oZWFwLCAqdm0uY2VsbEhlYXBDZWxsVHlwZSwgSlNUZXN0Q0VSZWFjdGlvbnMpOworICAgICAg
ICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RDRVJlYWN0aW9ucyA9IG1ha2VVbmlxdWU8SXNvU3Vi
c3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwg
SlNUZXN0Q0VSZWFjdGlvbnMpOwogICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VG
b3JUZXN0Q0VSZWFjdGlvbnMuZ2V0KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hh
YmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIp
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q0VS
ZWFjdGlvbnNTdHJpbmdpZmllci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXIuY3BwCShy
ZXZpc2lvbiAyODYwOTUpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc1
LDcgKzc1LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFj
ZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQ
QUNFX1NIQVJBQkxFKEpTVGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXJQcm90b3R5cGUsIEJhc2Up
OwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAm
dm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUq
IGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKQEAgLTI2NCw5ICsyNjQsOSBA
QCBKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3RDRVJlYWN0aW9uc1N0cmluCiAgICAgICAgIHJldHVy
biBzcGFjZTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0
cnVjdGlibGVPYmplY3QsIEpTVGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXI+IHx8ICFKU1Rlc3RD
RVJlYWN0aW9uc1N0cmluZ2lmaWVyOjpuZWVkc0Rlc3RydWN0aW9uKTsKICAgICBpZiBjb25zdGV4
cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdENF
UmVhY3Rpb25zU3RyaW5naWZpZXI+KQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RD
RVJlYWN0aW9uc1N0cmluZ2lmaWVyID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQ
QUNFX0lOSVQodm0uaGVhcCwgKnZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSwgSlNU
ZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllcik7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9y
VGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXIgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09f
U1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUo
KSwgSlNUZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllcik7CiAgICAgZWxzZQotICAgICAgICBzcGFj
ZXMubV9zdWJzcGFjZUZvclRlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyID0gbWFrZVVuaXF1ZTxJ
c29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmNlbGxIZWFwQ2VsbFR5
cGUsIEpTVGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXIpOworICAgICAgICBzcGFjZXMubV9zdWJz
cGFjZUZvclRlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFj
ZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU1Rl
c3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyKTsKICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1
YnNwYWNlRm9yVGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXIuZ2V0KCk7CiBJR05PUkVfV0FSTklO
R1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0
b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0Q2FsbFRyYWNlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENhbGxUcmFjZXIuY3BwCShyZXZpc2lv
biAyODYwOTUpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0Q2FsbFRyYWNlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk3LDcgKzk3LDcgQEAgcHVibGlj
OgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkK
ICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVz
dENhbGxUcmFjZXJQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2Jq
ZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0K
ICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwg
SlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBl
KQogICAgIHsKQEAgLTUxMyw5ICs1MTMsOSBAQCBKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3RDYWxs
VHJhY2VyOjpzdWJzCiAgICAgICAgIHJldHVybiBzcGFjZTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0
ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdENhbGxUcmFj
ZXI+IHx8ICFKU1Rlc3RDYWxsVHJhY2VyOjpuZWVkc0Rlc3RydWN0aW9uKTsKICAgICBpZiBjb25z
dGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVz
dENhbGxUcmFjZXI+KQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RDYWxsVHJhY2Vy
ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZt
LmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSwgSlNUZXN0Q2FsbFRyYWNlcik7CisgICAg
ICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdENhbGxUcmFjZXIgPSBtYWtlVW5pcXVlPElzb1N1
YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RI
ZWFwQ2VsbFR5cGUoKSwgSlNUZXN0Q2FsbFRyYWNlcik7CiAgICAgZWxzZQotICAgICAgICBzcGFj
ZXMubV9zdWJzcGFjZUZvclRlc3RDYWxsVHJhY2VyID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4g
SVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmNlbGxIZWFwQ2VsbFR5cGUsIEpTVGVzdENh
bGxUcmFjZXIpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RDYWxsVHJhY2VyID0g
bWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2Vs
bEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RDYWxsVHJhY2VyKTsKICAgICBhdXRvKiBzcGFjZSA9IHNw
YWNlcy5tX3N1YnNwYWNlRm9yVGVzdENhbGxUcmFjZXIuZ2V0KCk7CiBJR05PUkVfV0FSTklOR1Nf
QkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xv
Z2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3IuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDbGFzc1dp
dGhKU0J1aWx0aW5Db25zdHJ1Y3Rvci5jcHAJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5D
b25zdHJ1Y3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY0LDcgKzY0LDcgQEAgcHVibGljOgog
ICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKICAg
ICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdENs
YXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0
dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0
U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1
cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpK
U1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC0xNzYsOSArMTc2LDkgQEAgSlNDOjpJc29TdWJz
cGFjZSogSlNUZXN0Q2xhc3NXaXRoSlNCdWlsdAogICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAg
c3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0
LCBKU1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3Rvcj4gfHwgIUpTVGVzdENsYXNzV2l0
aEpTQnVpbHRpbkNvbnN0cnVjdG9yOjpuZWVkc0Rlc3RydWN0aW9uKTsKICAgICBpZiBjb25zdGV4
cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdENs
YXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yPikKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VG
b3JUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3IgPSBtYWtlVW5pcXVlPElzb1N1YnNw
YWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVh
cENlbGxUeXBlLCBKU1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3Rvcik7CisgICAgICAg
IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yID0g
bWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVz
dHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCksIEpTVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNv
bnN0cnVjdG9yKTsKICAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdENs
YXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNP
X1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmNlbGxIZWFwQ2VsbFR5cGUsIEpTVGVzdENsYXNz
V2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JU
ZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3IgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNl
PiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCksIEpTVGVz
dENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yKTsKICAgICBhdXRvKiBzcGFjZSA9IHNwYWNl
cy5tX3N1YnNwYWNlRm9yVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yLmdldCgpOwog
SUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKIElHTk9SRV9XQVJOSU5H
U19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENvbmRpdGlvbmFsSW5jbHVkZXMuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RD
b25kaXRpb25hbEluY2x1ZGVzLmNwcAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENvbmRpdGlvbmFsSW5jbHVkZXMuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xMjcsNyArMTI3LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBK
U0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAg
IFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdENvbmRpdGlvbmFsSW5j
bHVkZXNQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3Bh
Y2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KICAgICBz
dGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAg
IHsKQEAgLTc4OSw5ICs3ODksOSBAQCBKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3RDb25kaXRpb25h
bEluY2x1CiAgICAgICAgIHJldHVybiBzcGFjZTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNf
YmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdENvbmRpdGlvbmFsSW5j
bHVkZXM+IHx8ICFKU1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzOjpuZWVkc0Rlc3RydWN0aW9uKTsK
ICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVP
YmplY3QsIEpTVGVzdENvbmRpdGlvbmFsSW5jbHVkZXM+KQotICAgICAgICBzcGFjZXMubV9zdWJz
cGFjZUZvclRlc3RDb25kaXRpb25hbEluY2x1ZGVzID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4g
SVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxs
VHlwZSwgSlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlcyk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNw
YWNlRm9yVGVzdENvbmRpdGlvbmFsSW5jbHVkZXMgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJ
U09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5
cGUoKSwgSlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlcyk7CiAgICAgZWxzZQotICAgICAgICBzcGFj
ZXMubV9zdWJzcGFjZUZvclRlc3RDb25kaXRpb25hbEluY2x1ZGVzID0gbWFrZVVuaXF1ZTxJc29T
dWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmNlbGxIZWFwQ2VsbFR5cGUs
IEpTVGVzdENvbmRpdGlvbmFsSW5jbHVkZXMpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZv
clRlc3RDb25kaXRpb25hbEluY2x1ZGVzID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NV
QlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RDb25kaXRp
b25hbEluY2x1ZGVzKTsKICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVz
dENvbmRpdGlvbmFsSW5jbHVkZXMuZ2V0KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVh
Y2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFy
ZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
Q29uZGl0aW9uYWxseVJlYWRXcml0ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENvbmRpdGlvbmFsbHlSZWFkV3JpdGUuY3Bw
CShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0Q29uZGl0aW9uYWxseVJlYWRXcml0ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTk4LDcgKzk4LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJz
cGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NV
QlNQQUNFX1NIQVJBQkxFKEpTVGVzdENvbmRpdGlvbmFsbHlSZWFkV3JpdGVQcm90b3R5cGUsIEJh
c2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVy
biAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1
cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKQEAgLTYxMSw5ICs2MTEs
OSBAQCBKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3RDb25kaXRpb25hbGx5UmVhCiAgICAgICAgIHJl
dHVybiBzcGFjZTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNE
ZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdENvbmRpdGlvbmFsbHlSZWFkV3JpdGU+IHx8ICFKU1Rl
c3RDb25kaXRpb25hbGx5UmVhZFdyaXRlOjpuZWVkc0Rlc3RydWN0aW9uKTsKICAgICBpZiBjb25z
dGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVz
dENvbmRpdGlvbmFsbHlSZWFkV3JpdGU+KQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRl
c3RDb25kaXRpb25hbGx5UmVhZFdyaXRlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NV
QlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSwg
SlNUZXN0Q29uZGl0aW9uYWxseVJlYWRXcml0ZSk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNl
Rm9yVGVzdENvbmRpdGlvbmFsbHlSZWFkV3JpdGUgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJ
U09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5
cGUoKSwgSlNUZXN0Q29uZGl0aW9uYWxseVJlYWRXcml0ZSk7CiAgICAgZWxzZQotICAgICAgICBz
cGFjZXMubV9zdWJzcGFjZUZvclRlc3RDb25kaXRpb25hbGx5UmVhZFdyaXRlID0gbWFrZVVuaXF1
ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmNlbGxIZWFwQ2Vs
bFR5cGUsIEpTVGVzdENvbmRpdGlvbmFsbHlSZWFkV3JpdGUpOworICAgICAgICBzcGFjZXMubV9z
dWJzcGFjZUZvclRlc3RDb25kaXRpb25hbGx5UmVhZFdyaXRlID0gbWFrZVVuaXF1ZTxJc29TdWJz
cGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBK
U1Rlc3RDb25kaXRpb25hbGx5UmVhZFdyaXRlKTsKICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5t
X3N1YnNwYWNlRm9yVGVzdENvbmRpdGlvbmFsbHlSZWFkV3JpdGUuZ2V0KCk7CiBJR05PUkVfV0FS
TklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0
YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0RE9NSklULmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RE9NSklULmNwcAkocmV2aXNpb24gMjg2
MDk1KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERP
TUpJVC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ4MSw3ICs0ODEsNyBAQCBwdWJsaWM6CiAgICAg
c3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsK
ICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0RE9NSklU
UHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOwor
ICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGlj
IEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBA
IC0xMjUyLDkgKzEyNTIsOSBAQCBKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3RET01KSVQ6OnN1YnNw
YWNlCiAgICAgICAgIHJldHVybiBzcGFjZTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFz
ZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdERPTUpJVD4gfHwgIUpTVGVz
dERPTUpJVDo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jh
c2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RET01KSVQ+KQotICAgICAg
ICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RET01KSVQgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNl
PiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENl
bGxUeXBlLCBKU1Rlc3RET01KSVQpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RE
T01KSVQgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFw
LCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0RE9NSklUKTsKICAg
ICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdERPTUpJVCA9IG1ha2VVbmlx
dWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5jZWxsSGVhcENl
bGxUeXBlLCBKU1Rlc3RET01KSVQpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RE
T01KSVQgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFw
LCB2bS5jZWxsSGVhcENlbGxUeXBlKCksIEpTVGVzdERPTUpJVCk7CiAgICAgYXV0byogc3BhY2Ug
PSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RET01KSVQuZ2V0KCk7CiBJR05PUkVfV0FSTklOR1Nf
QkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xv
Z2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0RGVmYXVsdFRvSlNPTi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERlZmF1bHRUb0pTT04uY3BwCShyZXZp
c2lvbiAyODYwOTUpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0RGVmYXVsdFRvSlNPTi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyNCw3ICsxMjQsNyBA
QCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6
Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFC
TEUoSlNUZXN0RGVmYXVsdFRvSlNPTlByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAm
dm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNl
KCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpT
Qzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1
ZSBwcm90b3R5cGUpCiAgICAgewpAQCAtODA4LDkgKzgwOCw5IEBAIEpTQzo6SXNvU3Vic3BhY2Uq
IEpTVGVzdERlZmF1bHRUb0pTT046OnMKICAgICAgICAgcmV0dXJuIHNwYWNlOwogICAgIHN0YXRp
Y19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNU
ZXN0RGVmYXVsdFRvSlNPTj4gfHwgIUpTVGVzdERlZmF1bHRUb0pTT046Om5lZWRzRGVzdHJ1Y3Rp
b24pOwogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0
aWJsZU9iamVjdCwgSlNUZXN0RGVmYXVsdFRvSlNPTj4pCi0gICAgICAgIHNwYWNlcy5tX3N1YnNw
YWNlRm9yVGVzdERlZmF1bHRUb0pTT04gPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VC
U1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLCBK
U1Rlc3REZWZhdWx0VG9KU09OKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0RGVm
YXVsdFRvSlNPTiA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZt
LmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3REZWZhdWx0
VG9KU09OKTsKICAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdERlZmF1
bHRUb0pTT04gPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5o
ZWFwLCAqdm0uY2VsbEhlYXBDZWxsVHlwZSwgSlNUZXN0RGVmYXVsdFRvSlNPTik7CisgICAgICAg
IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdERlZmF1bHRUb0pTT04gPSBtYWtlVW5pcXVlPElzb1N1
YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCks
IEpTVGVzdERlZmF1bHRUb0pTT04pOwogICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3Bh
Y2VGb3JUZXN0RGVmYXVsdFRvSlNPTi5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5y
ZWFjaGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21w
YXJlIikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3REZWZhdWx0VG9KU09ORmls
dGVyZWRCeUV4cG9zZWQuY3BwCShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBv
c2VkLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzUsNyArNzUsNyBAQCBwdWJsaWM6CiAgICAgc3Rh
dGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAg
ICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0RGVmYXVsdFRv
SlNPTkZpbHRlcmVkQnlFeHBvc2VkUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2
bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2Uo
KTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlND
OjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVl
IHByb3RvdHlwZSkKICAgICB7CkBAIC0yNzAsOSArMjcwLDkgQEAgSlNDOjpJc29TdWJzcGFjZSog
SlNUZXN0RGVmYXVsdFRvSlNPTkZpbAogICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAgc3RhdGlj
X2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rl
c3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWQ+IHx8ICFKU1Rlc3REZWZhdWx0VG9KU09O
RmlsdGVyZWRCeUV4cG9zZWQ6Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhwciAo
c3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0RGVmYXVs
dFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkPikKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JU
ZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFj
ZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBD
ZWxsVHlwZSwgSlNUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkKTsKKyAgICAgICAg
c3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkID0g
bWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVz
dHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCksIEpTVGVzdERlZmF1bHRUb0pTT05GaWx0ZXJl
ZEJ5RXhwb3NlZCk7CiAgICAgZWxzZQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RE
ZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWQgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJ
U09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uY2VsbEhlYXBDZWxsVHlwZSwgSlNUZXN0RGVm
YXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VG
b3JUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkID0gbWFrZVVuaXF1ZTxJc29TdWJz
cGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBK
U1Rlc3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWQpOwogICAgIGF1dG8qIHNwYWNlID0g
c3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkLmdl
dCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKIElHTk9SRV9X
QVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRleDogU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERlZmF1bHRUb0pTT05JbmRpcmVjdElu
aGVyaXRhbmNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0RGVmYXVsdFRvSlNPTkluZGlyZWN0SW5oZXJpdGFuY2UuY3BwCShy
ZXZpc2lvbiAyODYwOTUpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0RGVmYXVsdFRvSlNPTkluZGlyZWN0SW5oZXJpdGFuY2UuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC02Miw3ICs2Miw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFj
ZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJU
X0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3REZWZhdWx0VG9KU09OSW5kaXJlY3RJbmhlcml0
YW5jZVByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFj
ZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0
YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAg
ewpAQCAtMTYyLDkgKzE2Miw5IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdERlZmF1bHRUb0pT
T05JbmQKICAgICAgICAgcmV0dXJuIHNwYWNlOwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19i
YXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0RGVmYXVsdFRvSlNPTklu
ZGlyZWN0SW5oZXJpdGFuY2U+IHx8ICFKU1Rlc3REZWZhdWx0VG9KU09OSW5kaXJlY3RJbmhlcml0
YW5jZTo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vf
b2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3REZWZhdWx0VG9KU09OSW5kaXJl
Y3RJbmhlcml0YW5jZT4pCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdERlZmF1bHRU
b0pTT05JbmRpcmVjdEluaGVyaXRhbmNlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NV
QlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSwg
SlNUZXN0RGVmYXVsdFRvSlNPTkluZGlyZWN0SW5oZXJpdGFuY2UpOworICAgICAgICBzcGFjZXMu
bV9zdWJzcGFjZUZvclRlc3REZWZhdWx0VG9KU09OSW5kaXJlY3RJbmhlcml0YW5jZSA9IG1ha2VV
bmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0
aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3REZWZhdWx0VG9KU09OSW5kaXJlY3RJbmhl
cml0YW5jZSk7CiAgICAgZWxzZQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3REZWZh
dWx0VG9KU09OSW5kaXJlY3RJbmhlcml0YW5jZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElT
T19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5jZWxsSGVhcENlbGxUeXBlLCBKU1Rlc3REZWZh
dWx0VG9KU09OSW5kaXJlY3RJbmhlcml0YW5jZSk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNl
Rm9yVGVzdERlZmF1bHRUb0pTT05JbmRpcmVjdEluaGVyaXRhbmNlID0gbWFrZVVuaXF1ZTxJc29T
dWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgp
LCBKU1Rlc3REZWZhdWx0VG9KU09OSW5kaXJlY3RJbmhlcml0YW5jZSk7CiAgICAgYXV0byogc3Bh
Y2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3REZWZhdWx0VG9KU09OSW5kaXJlY3RJbmhlcml0
YW5jZS5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJ
R05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3REZWZhdWx0VG9KU09OSW5o
ZXJpdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdERlZmF1bHRUb0pTT05Jbmhlcml0LmNwcAkocmV2aXNpb24gMjg2MDk1KQor
KysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERlZmF1bHRU
b0pTT05Jbmhlcml0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtODksNyArODksNyBAQCBwdWJsaWM6
CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQog
ICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0
RGVmYXVsdFRvSlNPTkluaGVyaXRQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZt
LnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgp
OwogICAgIH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6
OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUg
cHJvdG90eXBlKQogICAgIHsKQEAgLTI5Miw5ICsyOTIsOSBAQCBKU0M6Oklzb1N1YnNwYWNlKiBK
U1Rlc3REZWZhdWx0VG9KU09OSW5oCiAgICAgICAgIHJldHVybiBzcGFjZTsKICAgICBzdGF0aWNf
YXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVz
dERlZmF1bHRUb0pTT05Jbmhlcml0PiB8fCAhSlNUZXN0RGVmYXVsdFRvSlNPTkluaGVyaXQ6Om5l
ZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlND
OjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0RGVmYXVsdFRvSlNPTkluaGVyaXQ+KQotICAg
ICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3REZWZhdWx0VG9KU09OSW5oZXJpdCA9IG1ha2VV
bmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5kZXN0cnVj
dGlibGVPYmplY3RIZWFwQ2VsbFR5cGUsIEpTVGVzdERlZmF1bHRUb0pTT05Jbmhlcml0KTsKKyAg
ICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0RGVmYXVsdFRvSlNPTkluaGVyaXQgPSBtYWtl
VW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVj
dGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0RGVmYXVsdFRvSlNPTkluaGVyaXQpOwog
ICAgIGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0RGVmYXVsdFRvSlNPTklu
aGVyaXQgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFw
LCAqdm0uY2VsbEhlYXBDZWxsVHlwZSwgSlNUZXN0RGVmYXVsdFRvSlNPTkluaGVyaXQpOworICAg
ICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3REZWZhdWx0VG9KU09OSW5oZXJpdCA9IG1ha2VV
bmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFw
Q2VsbFR5cGUoKSwgSlNUZXN0RGVmYXVsdFRvSlNPTkluaGVyaXQpOwogICAgIGF1dG8qIHNwYWNl
ID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0RGVmYXVsdFRvSlNPTkluaGVyaXQuZ2V0KCk7CiBJ
R05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdT
X0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RGVmYXVsdFRvSlNPTkluaGVyaXRGaW5hbC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdERlZmF1bHRUb0pTT05Jbmhlcml0RmluYWwuY3BwCShyZXZpc2lvbiAyODYwOTUpCisrKyBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RGVmYXVsdFRvSlNP
TkluaGVyaXRGaW5hbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTkxLDcgKzkxLDcgQEAgcHVibGlj
OgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkK
ICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVz
dERlZmF1bHRUb0pTT05Jbmhlcml0RmluYWxQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1
cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RT
cGFjZSgpOwogICAgIH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVy
ZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpT
VmFsdWUgcHJvdG90eXBlKQogICAgIHsKQEAgLTMzMiw5ICszMzIsOSBAQCBKU0M6Oklzb1N1YnNw
YWNlKiBKU1Rlc3REZWZhdWx0VG9KU09OSW5oCiAgICAgICAgIHJldHVybiBzcGFjZTsKICAgICBz
dGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3Qs
IEpTVGVzdERlZmF1bHRUb0pTT05Jbmhlcml0RmluYWw+IHx8ICFKU1Rlc3REZWZhdWx0VG9KU09O
SW5oZXJpdEZpbmFsOjpuZWVkc0Rlc3RydWN0aW9uKTsKICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6
aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdERlZmF1bHRUb0pT
T05Jbmhlcml0RmluYWw+KQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3REZWZhdWx0
VG9KU09OSW5oZXJpdEZpbmFsID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNF
X0lOSVQodm0uaGVhcCwgKnZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSwgSlNUZXN0
RGVmYXVsdFRvSlNPTkluaGVyaXRGaW5hbCk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9y
VGVzdERlZmF1bHRUb0pTT05Jbmhlcml0RmluYWwgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJ
U09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5
cGUoKSwgSlNUZXN0RGVmYXVsdFRvSlNPTkluaGVyaXRGaW5hbCk7CiAgICAgZWxzZQotICAgICAg
ICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3REZWZhdWx0VG9KU09OSW5oZXJpdEZpbmFsID0gbWFr
ZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmNlbGxI
ZWFwQ2VsbFR5cGUsIEpTVGVzdERlZmF1bHRUb0pTT05Jbmhlcml0RmluYWwpOworICAgICAgICBz
cGFjZXMubV9zdWJzcGFjZUZvclRlc3REZWZhdWx0VG9KU09OSW5oZXJpdEZpbmFsID0gbWFrZVVu
aXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBD
ZWxsVHlwZSgpLCBKU1Rlc3REZWZhdWx0VG9KU09OSW5oZXJpdEZpbmFsKTsKICAgICBhdXRvKiBz
cGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdERlZmF1bHRUb0pTT05Jbmhlcml0RmluYWwu
Z2V0KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JF
X1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRo
ZXRpY0F0dHJpYnV0ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGUu
Y3BwCShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTcwLDcgKzcwLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklz
b1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJ
Q19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50
aGV0aWNBdHRyaWJ1dGVQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWlu
T2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAg
IH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2
bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90
eXBlKQogICAgIHsKQEAgLTI0Niw5ICsyNDYsOSBAQCBKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3RE
ZWxlZ2F0ZVRvU2hhcmVkCiAgICAgICAgIHJldHVybiBzcGFjZTsKICAgICBzdGF0aWNfYXNzZXJ0
KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdERlbGVn
YXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGU+IHx8ICFKU1Rlc3REZWxlZ2F0ZVRvU2hhcmVk
U3ludGhldGljQXR0cmlidXRlOjpuZWVkc0Rlc3RydWN0aW9uKTsKICAgICBpZiBjb25zdGV4cHIg
KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdERlbGVn
YXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGU+KQotICAgICAgICBzcGFjZXMubV9zdWJzcGFj
ZUZvclRlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlID0gbWFrZVVuaXF1ZTxJ
c29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmRlc3RydWN0aWJsZU9i
amVjdEhlYXBDZWxsVHlwZSwgSlNUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0
ZSk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50
aGV0aWNBdHRyaWJ1dGUgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5J
VCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0RGVs
ZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZSk7CiAgICAgZWxzZQotICAgICAgICBzcGFj
ZXMubV9zdWJzcGFjZUZvclRlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlID0g
bWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmNl
bGxIZWFwQ2VsbFR5cGUsIEpTVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGUp
OworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhl
dGljQXR0cmlidXRlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQo
dm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3lu
dGhldGljQXR0cmlidXRlKTsKICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9y
VGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGUuZ2V0KCk7CiBJR05PUkVfV0FS
TklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0
YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0RG9tYWluU2VjdXJpdHkuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3REb21haW5TZWN1cml0eS5j
cHAJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3REb21haW5TZWN1cml0eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgwLDcg
KzgwLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZv
cihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNF
X1NIQVJBQkxFKEpTVGVzdERvbWFpblNlY3VyaXR5UHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAg
cmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2Jq
ZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1
Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlND
OjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC0zMjAsOSArMzIwLDkgQEAgSlNDOjpJc29T
dWJzcGFjZSogSlNUZXN0RG9tYWluU2VjdXJpdHk6OgogICAgICAgICByZXR1cm4gc3BhY2U7CiAg
ICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2Jq
ZWN0LCBKU1Rlc3REb21haW5TZWN1cml0eT4gfHwgIUpTVGVzdERvbWFpblNlY3VyaXR5OjpuZWVk
c0Rlc3RydWN0aW9uKTsKICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6
SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdERvbWFpblNlY3VyaXR5PikKLSAgICAgICAgc3Bh
Y2VzLm1fc3Vic3BhY2VGb3JUZXN0RG9tYWluU2VjdXJpdHkgPSBtYWtlVW5pcXVlPElzb1N1YnNw
YWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVh
cENlbGxUeXBlLCBKU1Rlc3REb21haW5TZWN1cml0eSk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNw
YWNlRm9yVGVzdERvbWFpblNlY3VyaXR5ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NV
QlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCks
IEpTVGVzdERvbWFpblNlY3VyaXR5KTsKICAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNw
YWNlRm9yVGVzdERvbWFpblNlY3VyaXR5ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NV
QlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmNlbGxIZWFwQ2VsbFR5cGUsIEpTVGVzdERvbWFpblNl
Y3VyaXR5KTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0RG9tYWluU2VjdXJpdHkg
PSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5j
ZWxsSGVhcENlbGxUeXBlKCksIEpTVGVzdERvbWFpblNlY3VyaXR5KTsKICAgICBhdXRvKiBzcGFj
ZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdERvbWFpblNlY3VyaXR5LmdldCgpOwogSUdOT1JF
X1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKIElHTk9SRV9XQVJOSU5HU19CRUdJ
TigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdEVuYWJsZWRCeVNldHRpbmcuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFbmFibGVkQnlT
ZXR0aW5nLmNwcAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdEVuYWJsZWRCeVNldHRpbmcuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC05Miw3ICs5Miw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSog
c3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lT
T19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3RFbmFibGVkQnlTZXR0aW5nUHJvdG90eXBlLCBCYXNl
KTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4g
JnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJl
KiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC00NTksOSArNDU5LDkg
QEAgSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0RW5hYmxlZEJ5U2V0dGluZwogICAgICAgICByZXR1
cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVz
dHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RFbmFibGVkQnlTZXR0aW5nPiB8fCAhSlNUZXN0RW5hYmxl
ZEJ5U2V0dGluZzo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3RleHByIChzdGQ6Omlz
X2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RFbmFibGVkQnlTZXR0
aW5nPikKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0RW5hYmxlZEJ5U2V0dGluZyA9
IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5k
ZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUsIEpTVGVzdEVuYWJsZWRCeVNldHRpbmcpOwor
ICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RFbmFibGVkQnlTZXR0aW5nID0gbWFrZVVu
aXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3Rp
YmxlT2JqZWN0SGVhcENlbGxUeXBlKCksIEpTVGVzdEVuYWJsZWRCeVNldHRpbmcpOwogICAgIGVs
c2UKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0RW5hYmxlZEJ5U2V0dGluZyA9IG1h
a2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5jZWxs
SGVhcENlbGxUeXBlLCBKU1Rlc3RFbmFibGVkQnlTZXR0aW5nKTsKKyAgICAgICAgc3BhY2VzLm1f
c3Vic3BhY2VGb3JUZXN0RW5hYmxlZEJ5U2V0dGluZyA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+
IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0
RW5hYmxlZEJ5U2V0dGluZyk7CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZv
clRlc3RFbmFibGVkQnlTZXR0aW5nLmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJl
YWNoYWJsZS1jb2RlIikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBh
cmUiKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dEVuYWJsZWRGb3JDb250ZXh0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RW5hYmxlZEZvckNvbnRleHQuY3BwCShyZXZpc2lv
biAyODYwOTUpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0RW5hYmxlZEZvckNvbnRleHQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02Niw3ICs2Niw3IEBA
IHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpW
TSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJM
RShKU1Rlc3RFbmFibGVkRm9yQ29udGV4dFByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVy
biAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNw
YWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJl
KEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNW
YWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAtMTg2LDkgKzE4Niw5IEBAIEpTQzo6SXNvU3Vic3Bh
Y2UqIEpTVGVzdEVuYWJsZWRGb3JDb250ZXgKICAgICAgICAgcmV0dXJuIHNwYWNlOwogICAgIHN0
YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwg
SlNUZXN0RW5hYmxlZEZvckNvbnRleHQ+IHx8ICFKU1Rlc3RFbmFibGVkRm9yQ29udGV4dDo6bmVl
ZHNEZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6
OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RFbmFibGVkRm9yQ29udGV4dD4pCi0gICAgICAg
IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEVuYWJsZWRGb3JDb250ZXh0ID0gbWFrZVVuaXF1ZTxJ
c29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmRlc3RydWN0aWJsZU9i
amVjdEhlYXBDZWxsVHlwZSwgSlNUZXN0RW5hYmxlZEZvckNvbnRleHQpOworICAgICAgICBzcGFj
ZXMubV9zdWJzcGFjZUZvclRlc3RFbmFibGVkRm9yQ29udGV4dCA9IG1ha2VVbmlxdWU8SXNvU3Vi
c3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhl
YXBDZWxsVHlwZSgpLCBKU1Rlc3RFbmFibGVkRm9yQ29udGV4dCk7CiAgICAgZWxzZQotICAgICAg
ICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RFbmFibGVkRm9yQ29udGV4dCA9IG1ha2VVbmlxdWU8
SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5jZWxsSGVhcENlbGxU
eXBlLCBKU1Rlc3RFbmFibGVkRm9yQ29udGV4dCk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNl
Rm9yVGVzdEVuYWJsZWRGb3JDb250ZXh0ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NV
QlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RFbmFibGVk
Rm9yQ29udGV4dCk7CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RF
bmFibGVkRm9yQ29udGV4dC5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFi
bGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVu
dENvbnN0cnVjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRDb25zdHJ1Y3Rvci5jcHAJKHJldmlzaW9uIDI4NjA5
NSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVu
dENvbnN0cnVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQ3LDcgKzE0Nyw3IEBAIHB1Ymxp
YzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0p
CiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rl
c3RFdmVudENvbnN0cnVjdG9yUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5w
bGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsK
ICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpW
TSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHBy
b3RvdHlwZSkKICAgICB7CkBAIC0zMjEsOSArMzIxLDkgQEAgSlNDOjpJc29TdWJzcGFjZSogSlNU
ZXN0RXZlbnRDb25zdHJ1Y3RvcgogICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fz
c2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RF
dmVudENvbnN0cnVjdG9yPiB8fCAhSlNUZXN0RXZlbnRDb25zdHJ1Y3Rvcjo6bmVlZHNEZXN0cnVj
dGlvbik7CiAgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1
Y3RpYmxlT2JqZWN0LCBKU1Rlc3RFdmVudENvbnN0cnVjdG9yPikKLSAgICAgICAgc3BhY2VzLm1f
c3Vic3BhY2VGb3JUZXN0RXZlbnRDb25zdHJ1Y3RvciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+
IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2Vs
bFR5cGUsIEpTVGVzdEV2ZW50Q29uc3RydWN0b3IpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFj
ZUZvclRlc3RFdmVudENvbnN0cnVjdG9yID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NV
QlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCks
IEpTVGVzdEV2ZW50Q29uc3RydWN0b3IpOwogICAgIGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vi
c3BhY2VGb3JUZXN0RXZlbnRDb25zdHJ1Y3RvciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElT
T19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5jZWxsSGVhcENlbGxUeXBlLCBKU1Rlc3RFdmVu
dENvbnN0cnVjdG9yKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0RXZlbnRDb25z
dHJ1Y3RvciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhl
YXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0RXZlbnRDb25zdHJ1Y3Rvcik7CiAgICAg
YXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RFdmVudENvbnN0cnVjdG9yLmdl
dCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKIElHTk9SRV9X
QVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRleDogU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50VGFyZ2V0LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZl
bnRUYXJnZXQuY3BwCShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRUYXJnZXQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC03Myw3ICs3Myw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vi
c3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19T
VUJTUEFDRV9TSEFSQUJMRShKU1Rlc3RFdmVudFRhcmdldFByb3RvdHlwZSwgQmFzZSk7Ci0gICAg
ICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFp
bk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRl
U3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAtMjYyLDkgKzI2Miw5IEBAIEpTQzo6
SXNvU3Vic3BhY2UqIEpTVGVzdEV2ZW50VGFyZ2V0OjpzdWIKICAgICAgICAgcmV0dXJuIHNwYWNl
OwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJs
ZU9iamVjdCwgSlNUZXN0RXZlbnRUYXJnZXQ+IHx8ICFKU1Rlc3RFdmVudFRhcmdldDo6bmVlZHNE
ZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpT
RGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RFdmVudFRhcmdldD4pCi0gICAgICAgIHNwYWNlcy5t
X3N1YnNwYWNlRm9yVGVzdEV2ZW50VGFyZ2V0ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNP
X1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlw
ZSwgSlNUZXN0RXZlbnRUYXJnZXQpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RF
dmVudFRhcmdldCA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZt
LmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RFdmVudFRh
cmdldCk7CiAgICAgZWxzZQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RFdmVudFRh
cmdldCA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAs
ICp2bS5jZWxsSGVhcENlbGxUeXBlLCBKU1Rlc3RFdmVudFRhcmdldCk7CisgICAgICAgIHNwYWNl
cy5tX3N1YnNwYWNlRm9yVGVzdEV2ZW50VGFyZ2V0ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4g
SVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RF
dmVudFRhcmdldCk7CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RF
dmVudFRhcmdldC5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29k
ZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFeGNlcHRpb24u
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RFeGNlcHRpb24uY3BwCShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXhjZXB0aW9uLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNjYsNyArNjYsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3Bh
Y2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VS
VF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0RXhjZXB0aW9uUHJvdG90eXBlLCBCYXNlKTsK
LSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZt
LnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBj
cmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC0xODcsOSArMTg3LDkgQEAg
SlNDOjpJc29TdWJzcGFjZSogSlNUZXN0RXhjZXB0aW9uOjpzdWJzcAogICAgICAgICByZXR1cm4g
c3BhY2U7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1
Y3RpYmxlT2JqZWN0LCBKU1Rlc3RFeGNlcHRpb24+IHx8ICFKU1Rlc3RFeGNlcHRpb246Om5lZWRz
RGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpK
U0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0RXhjZXB0aW9uPikKLSAgICAgICAgc3BhY2VzLm1f
c3Vic3BhY2VGb3JUZXN0RXhjZXB0aW9uID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NV
QlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSwg
SlNUZXN0RXhjZXB0aW9uKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0RXhjZXB0
aW9uID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwg
dm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCksIEpTVGVzdEV4Y2VwdGlvbik7CiAg
ICAgZWxzZQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RFeGNlcHRpb24gPSBtYWtl
VW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uY2VsbEhl
YXBDZWxsVHlwZSwgSlNUZXN0RXhjZXB0aW9uKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VG
b3JUZXN0RXhjZXB0aW9uID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lO
SVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RFeGNlcHRpb24pOwogICAg
IGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0RXhjZXB0aW9uLmdldCgpOwog
SUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKIElHTk9SRV9XQVJOSU5H
U19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEdlbmVyYXRlQWRkT3BhcXVlUm9vdC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dEdlbmVyYXRlQWRkT3BhcXVlUm9vdC5jcHAJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RHZW5lcmF0ZUFkZE9wYXF1ZVJv
b3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02Niw3ICs2Niw3IEBAIHB1YmxpYzoKICAgICBzdGF0
aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAg
ICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3RHZW5lcmF0ZUFk
ZE9wYXF1ZVJvb3RQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2Jq
ZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0K
ICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwg
SlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBl
KQogICAgIHsKQEAgLTE4Nyw5ICsxODcsOSBAQCBKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3RHZW5l
cmF0ZUFkZE9wYXF1CiAgICAgICAgIHJldHVybiBzcGFjZTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0
ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdEdlbmVyYXRl
QWRkT3BhcXVlUm9vdD4gfHwgIUpTVGVzdEdlbmVyYXRlQWRkT3BhcXVlUm9vdDo6bmVlZHNEZXN0
cnVjdGlvbik7CiAgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVz
dHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RHZW5lcmF0ZUFkZE9wYXF1ZVJvb3Q+KQotICAgICAgICBz
cGFjZXMubV9zdWJzcGFjZUZvclRlc3RHZW5lcmF0ZUFkZE9wYXF1ZVJvb3QgPSBtYWtlVW5pcXVl
PElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uZGVzdHJ1Y3RpYmxl
T2JqZWN0SGVhcENlbGxUeXBlLCBKU1Rlc3RHZW5lcmF0ZUFkZE9wYXF1ZVJvb3QpOworICAgICAg
ICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RHZW5lcmF0ZUFkZE9wYXF1ZVJvb3QgPSBtYWtlVW5p
cXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGli
bGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0R2VuZXJhdGVBZGRPcGFxdWVSb290KTsKICAg
ICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEdlbmVyYXRlQWRkT3BhcXVl
Um9vdCA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAs
ICp2bS5jZWxsSGVhcENlbGxUeXBlLCBKU1Rlc3RHZW5lcmF0ZUFkZE9wYXF1ZVJvb3QpOworICAg
ICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RHZW5lcmF0ZUFkZE9wYXF1ZVJvb3QgPSBtYWtl
VW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVh
cENlbGxUeXBlKCksIEpTVGVzdEdlbmVyYXRlQWRkT3BhcXVlUm9vdCk7CiAgICAgYXV0byogc3Bh
Y2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RHZW5lcmF0ZUFkZE9wYXF1ZVJvb3QuZ2V0KCk7
CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5J
TkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dEdlbmVyYXRlSXNSZWFjaGFibGUuY3BwCShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTY2LDcgKzY2LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBK
U0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAg
IFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdEdlbmVyYXRlSXNSZWFj
aGFibGVQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3Bh
Y2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KICAgICBz
dGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAg
IHsKQEAgLTE5Nyw5ICsxOTcsOSBAQCBKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3RHZW5lcmF0ZUlz
UmVhY2hhCiAgICAgICAgIHJldHVybiBzcGFjZTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNf
YmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdEdlbmVyYXRlSXNSZWFj
aGFibGU+IHx8ICFKU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlOjpuZWVkc0Rlc3RydWN0aW9uKTsK
ICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVP
YmplY3QsIEpTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGU+KQotICAgICAgICBzcGFjZXMubV9zdWJz
cGFjZUZvclRlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4g
SVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxs
VHlwZSwgSlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZSk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNw
YWNlRm9yVGVzdEdlbmVyYXRlSXNSZWFjaGFibGUgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJ
U09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5
cGUoKSwgSlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZSk7CiAgICAgZWxzZQotICAgICAgICBzcGFj
ZXMubV9zdWJzcGFjZUZvclRlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlID0gbWFrZVVuaXF1ZTxJc29T
dWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmNlbGxIZWFwQ2VsbFR5cGUs
IEpTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGUpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZv
clRlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NV
QlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RHZW5lcmF0
ZUlzUmVhY2hhYmxlKTsKICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVz
dEdlbmVyYXRlSXNSZWFjaGFibGUuZ2V0KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVh
Y2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFy
ZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
R2xvYmFsT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2xvYmFsT2JqZWN0LmNwcAkocmV2aXNpb24gMjg2MDk1KQor
KysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEdsb2JhbE9i
amVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE4MTQsNyArMTgxNCw3IEBAIEpTQzo6SXNvU3Vi
c3BhY2UqIEpTVGVzdEdsb2JhbE9iamVjdDo6c3UKICAgICBhdXRvJiBzcGFjZXMgPSBjbGllbnRE
YXRhLnN1YnNwYWNlcygpOwogICAgIGlmIChhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNl
Rm9yVGVzdEdsb2JhbE9iamVjdC5nZXQoKSkKICAgICAgICAgcmV0dXJuIHNwYWNlOwotICAgIHNw
YWNlcy5tX3N1YnNwYWNlRm9yVGVzdEdsb2JhbE9iamVjdCA9IG1ha2VVbmlxdWU8SXNvU3Vic3Bh
Y2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICpjbGllbnREYXRhLm1faGVhcENlbGxUeXBl
Rm9ySlNUZXN0R2xvYmFsT2JqZWN0LCBKU1Rlc3RHbG9iYWxPYmplY3QpOworICAgIHNwYWNlcy5t
X3N1YnNwYWNlRm9yVGVzdEdsb2JhbE9iamVjdCA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElT
T19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIGNsaWVudERhdGEubV9oZWFwQ2VsbFR5cGVGb3JKU1Rl
c3RHbG9iYWxPYmplY3QsIEpTVGVzdEdsb2JhbE9iamVjdCk7CiAgICAgYXV0byogc3BhY2UgPSBz
cGFjZXMubV9zdWJzcGFjZUZvclRlc3RHbG9iYWxPYmplY3QuZ2V0KCk7CiBJR05PUkVfV0FSTklO
R1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0
b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0R2xvYmFsT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEdsb2JhbE9iamVjdC5oCShyZXZpc2lv
biAyODYwOTUpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0R2xvYmFsT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTk4LDcgKzk4LDcgQEAgcHVibGlj
OgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkK
ICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVz
dEdsb2JhbE9iamVjdFByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5P
YmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAg
fQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZt
LCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5
cGUpCiAgICAgewpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXIuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbmRleGVkU2V0dGVyTm9J
ZGVudGlmaWVyLmNwcAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXIuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC02NSw3ICs2NSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJ
c29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFU
SUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3RJbmRleGVkU2V0dGVyTm9JZGVu
dGlmaWVyUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNw
YWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAg
c3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAg
ICB7CkBAIC0yNzYsOSArMjc2LDkgQEAgSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0SW5kZXhlZFNl
dHRlck5vSQogICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6Omlz
X2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RJbmRleGVkU2V0dGVy
Tm9JZGVudGlmaWVyPiB8fCAhSlNUZXN0SW5kZXhlZFNldHRlck5vSWRlbnRpZmllcjo6bmVlZHNE
ZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpT
RGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyPikKLSAg
ICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0SW5kZXhlZFNldHRlck5vSWRlbnRpZmllciA9
IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5k
ZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUsIEpTVGVzdEluZGV4ZWRTZXR0ZXJOb0lkZW50
aWZpZXIpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RJbmRleGVkU2V0dGVyTm9J
ZGVudGlmaWVyID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0u
aGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCksIEpTVGVzdEluZGV4ZWRT
ZXR0ZXJOb0lkZW50aWZpZXIpOwogICAgIGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VG
b3JUZXN0SW5kZXhlZFNldHRlck5vSWRlbnRpZmllciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+
IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5jZWxsSGVhcENlbGxUeXBlLCBKU1Rlc3RJ
bmRleGVkU2V0dGVyTm9JZGVudGlmaWVyKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JU
ZXN0SW5kZXhlZFNldHRlck5vSWRlbnRpZmllciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElT
T19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0SW5k
ZXhlZFNldHRlck5vSWRlbnRpZmllcik7CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJz
cGFjZUZvclRlc3RJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyLmdldCgpOwogSUdOT1JFX1dBUk5J
TkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1
dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdElu
ZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5jcHAJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbmRleGVkU2V0dGVy
VGhyb3dpbmdFeGNlcHRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NSw3ICs2NSw3IEBAIHB1
YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYg
dm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShK
U1Rlc3RJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb25Qcm90b3R5cGUsIEJhc2UpOwotICAg
ICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxh
aW5PYmplY3RTcGFjZSgpOwogICAgIH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0
ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKQEAgLTI3Niw5ICsyNzYsOSBAQCBKU0M6
Oklzb1N1YnNwYWNlKiBKU1Rlc3RJbmRleGVkU2V0dGVyVGhyCiAgICAgICAgIHJldHVybiBzcGFj
ZTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGli
bGVPYmplY3QsIEpTVGVzdEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbj4gfHwgIUpTVGVz
dEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbjo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAg
aWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0
LCBKU1Rlc3RJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24+KQotICAgICAgICBzcGFjZXMu
bV9zdWJzcGFjZUZvclRlc3RJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24gPSBtYWtlVW5p
cXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uZGVzdHJ1Y3Rp
YmxlT2JqZWN0SGVhcENlbGxUeXBlLCBKU1Rlc3RJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRp
b24pOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RJbmRleGVkU2V0dGVyVGhyb3dp
bmdFeGNlcHRpb24gPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2
bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0SW5kZXhl
ZFNldHRlclRocm93aW5nRXhjZXB0aW9uKTsKICAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1
YnNwYWNlRm9yVGVzdEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbiA9IG1ha2VVbmlxdWU8
SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5jZWxsSGVhcENlbGxU
eXBlLCBKU1Rlc3RJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24pOworICAgICAgICBzcGFj
ZXMubV9zdWJzcGFjZUZvclRlc3RJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24gPSBtYWtl
VW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVh
cENlbGxUeXBlKCksIEpTVGVzdEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbik7CiAgICAg
YXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RJbmRleGVkU2V0dGVyVGhyb3dp
bmdFeGNlcHRpb24uZ2V0KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNv
ZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW5kZXhlZFNl
dHRlcldpdGhJZGVudGlmaWVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyLmNw
cAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTczLDcgKzczLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNl
KiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRf
SVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllclBy
b3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAg
ICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBK
U0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAt
MzA4LDkgKzMwOCw5IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdEluZGV4ZWRTZXR0ZXJXaXQK
ICAgICAgICAgcmV0dXJuIHNwYWNlOwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29m
X3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0SW5kZXhlZFNldHRlcldpdGhJZGVu
dGlmaWVyPiB8fCAhSlNUZXN0SW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyOjpuZWVkc0Rlc3Ry
dWN0aW9uKTsKICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0
cnVjdGlibGVPYmplY3QsIEpTVGVzdEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllcj4pCi0gICAg
ICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllciA9
IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5k
ZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUsIEpTVGVzdEluZGV4ZWRTZXR0ZXJXaXRoSWRl
bnRpZmllcik7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEluZGV4ZWRTZXR0ZXJX
aXRoSWRlbnRpZmllciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklU
KHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RJbmRl
eGVkU2V0dGVyV2l0aElkZW50aWZpZXIpOwogICAgIGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vi
c3BhY2VGb3JUZXN0SW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyID0gbWFrZVVuaXF1ZTxJc29T
dWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmNlbGxIZWFwQ2VsbFR5cGUs
IEpTVGVzdEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllcik7CisgICAgICAgIHNwYWNlcy5tX3N1
YnNwYWNlRm9yVGVzdEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllciA9IG1ha2VVbmlxdWU8SXNv
U3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUo
KSwgSlNUZXN0SW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyKTsKICAgICBhdXRvKiBzcGFjZSA9
IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllci5nZXQo
KTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVfV0FS
TklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2UuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZh
Y2UuY3BwCShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTgxLDcg
KzE4MSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VG
b3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFD
RV9TSEFSQUJMRShKU1Rlc3RJbnRlcmZhY2VQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1
cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RT
cGFjZSgpOwogICAgIH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVy
ZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpT
VmFsdWUgcHJvdG90eXBlKQogICAgIHsKQEAgLTExMDQsOSArMTEwNCw5IEBAIHB1YmxpYzoKICAg
ICAgICAgICAgIHJldHVybiBzcGFjZTsKICAgICAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jh
c2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBUZXN0SW50ZXJmYWNlSXRlcmF0b3I+
IHx8ICFUZXN0SW50ZXJmYWNlSXRlcmF0b3I6Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAgICAgICBp
ZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3Qs
IFRlc3RJbnRlcmZhY2VJdGVyYXRvcj4pCi0gICAgICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZv
clRlc3RJbnRlcmZhY2VJdGVyYXRvciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJT
UEFDRV9JTklUKHZtLmhlYXAsICp2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuZ2V0
KCksIFRlc3RJbnRlcmZhY2VJdGVyYXRvcik7CisgICAgICAgICAgICBzcGFjZXMubV9zdWJzcGFj
ZUZvclRlc3RJbnRlcmZhY2VJdGVyYXRvciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19T
VUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgp
LCBUZXN0SW50ZXJmYWNlSXRlcmF0b3IpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBzcGFj
ZXMubV9zdWJzcGFjZUZvclRlc3RJbnRlcmZhY2VJdGVyYXRvciA9IG1ha2VVbmlxdWU8SXNvU3Vi
c3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5jZWxsSGVhcENlbGxUeXBlLCBU
ZXN0SW50ZXJmYWNlSXRlcmF0b3IpOworICAgICAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JU
ZXN0SW50ZXJmYWNlSXRlcmF0b3IgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BB
Q0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCksIFRlc3RJbnRlcmZhY2VJdGVy
YXRvcik7CiAgICAgICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0SW50
ZXJmYWNlSXRlcmF0b3IuZ2V0KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxl
LWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkBA
IC0xMTk2LDkgKzExOTYsOSBAQCBKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3RJbnRlcmZhY2U6OnN1
YnNwCiAgICAgICAgIHJldHVybiBzcGFjZTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFz
ZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdEludGVyZmFjZT4gfHwgIUpT
VGVzdEludGVyZmFjZTo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3RleHByIChzdGQ6
OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RJbnRlcmZhY2U+
KQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RJbnRlcmZhY2UgPSBtYWtlVW5pcXVl
PElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uZGVzdHJ1Y3RpYmxl
T2JqZWN0SGVhcENlbGxUeXBlLCBKU1Rlc3RJbnRlcmZhY2UpOworICAgICAgICBzcGFjZXMubV9z
dWJzcGFjZUZvclRlc3RJbnRlcmZhY2UgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VC
U1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwg
SlNUZXN0SW50ZXJmYWNlKTsKICAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9y
VGVzdEludGVyZmFjZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklU
KHZtLmhlYXAsICp2bS5jZWxsSGVhcENlbGxUeXBlLCBKU1Rlc3RJbnRlcmZhY2UpOworICAgICAg
ICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RJbnRlcmZhY2UgPSBtYWtlVW5pcXVlPElzb1N1YnNw
YWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCksIEpT
VGVzdEludGVyZmFjZSk7CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRl
c3RJbnRlcmZhY2UuZ2V0KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNv
ZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNl
TGVhZGluZ1VuZGVyc2NvcmUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2VMZWFkaW5nVW5kZXJzY29yZS5jcHAJ
KHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RJbnRlcmZhY2VMZWFkaW5nVW5kZXJzY29yZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTY2LDcgKzY2LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBz
dWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNP
X1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdEludGVyZmFjZUxlYWRpbmdVbmRlcnNjb3JlUHJvdG90
eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAg
ICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6
U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC0xODcs
OSArMTg3LDkgQEAgSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0SW50ZXJmYWNlTGVhZGluZwogICAg
ICAgICByZXR1cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxK
U0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RJbnRlcmZhY2VMZWFkaW5nVW5kZXJzY29y
ZT4gfHwgIUpTVGVzdEludGVyZmFjZUxlYWRpbmdVbmRlcnNjb3JlOjpuZWVkc0Rlc3RydWN0aW9u
KTsKICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGli
bGVPYmplY3QsIEpTVGVzdEludGVyZmFjZUxlYWRpbmdVbmRlcnNjb3JlPikKLSAgICAgICAgc3Bh
Y2VzLm1fc3Vic3BhY2VGb3JUZXN0SW50ZXJmYWNlTGVhZGluZ1VuZGVyc2NvcmUgPSBtYWtlVW5p
cXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uZGVzdHJ1Y3Rp
YmxlT2JqZWN0SGVhcENlbGxUeXBlLCBKU1Rlc3RJbnRlcmZhY2VMZWFkaW5nVW5kZXJzY29yZSk7
CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEludGVyZmFjZUxlYWRpbmdVbmRlcnNj
b3JlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwg
dm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCksIEpTVGVzdEludGVyZmFjZUxlYWRp
bmdVbmRlcnNjb3JlKTsKICAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVz
dEludGVyZmFjZUxlYWRpbmdVbmRlcnNjb3JlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNP
X1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmNlbGxIZWFwQ2VsbFR5cGUsIEpTVGVzdEludGVy
ZmFjZUxlYWRpbmdVbmRlcnNjb3JlKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0
SW50ZXJmYWNlTGVhZGluZ1VuZGVyc2NvcmUgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09f
U1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCksIEpTVGVzdEludGVy
ZmFjZUxlYWRpbmdVbmRlcnNjb3JlKTsKICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNw
YWNlRm9yVGVzdEludGVyZmFjZUxlYWRpbmdVbmRlcnNjb3JlLmdldCgpOwogSUdOT1JFX1dBUk5J
TkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1
dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdEl0ZXJhYmxlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SXRlcmFibGUuY3BwCShyZXZpc2lvbiAy
ODYwOTUpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
SXRlcmFibGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NSw3ICs3NSw3IEBAIHB1YmxpYzoKICAg
ICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAg
ewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3RJdGVy
YWJsZVByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFj
ZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0
YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAg
ewpAQCAtMjAxLDkgKzIwMSw5IEBAIHB1YmxpYzoKICAgICAgICAgICAgIHJldHVybiBzcGFjZTsK
ICAgICAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3Rp
YmxlT2JqZWN0LCBUZXN0SXRlcmFibGVJdGVyYXRvcj4gfHwgIVRlc3RJdGVyYWJsZUl0ZXJhdG9y
OjpuZWVkc0Rlc3RydWN0aW9uKTsKICAgICAgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vf
b2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBUZXN0SXRlcmFibGVJdGVyYXRvcj4pCi0g
ICAgICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RJdGVyYWJsZUl0ZXJhdG9yID0gbWFr
ZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmRlc3Ry
dWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5nZXQoKSwgVGVzdEl0ZXJhYmxlSXRlcmF0b3IpOwor
ICAgICAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0SXRlcmFibGVJdGVyYXRvciA9IG1h
a2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3Ry
dWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBUZXN0SXRlcmFibGVJdGVyYXRvcik7CiAgICAg
ICAgIGVsc2UKLSAgICAgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEl0ZXJhYmxlSXRl
cmF0b3IgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFw
LCAqdm0uY2VsbEhlYXBDZWxsVHlwZSwgVGVzdEl0ZXJhYmxlSXRlcmF0b3IpOworICAgICAgICAg
ICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0SXRlcmFibGVJdGVyYXRvciA9IG1ha2VVbmlxdWU8
SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5
cGUoKSwgVGVzdEl0ZXJhYmxlSXRlcmF0b3IpOwogICAgICAgICBhdXRvKiBzcGFjZSA9IHNwYWNl
cy5tX3N1YnNwYWNlRm9yVGVzdEl0ZXJhYmxlSXRlcmF0b3IuZ2V0KCk7CiBJR05PUkVfV0FSTklO
R1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0
b2xvZ2ljYWwtY29tcGFyZSIpCkBAIC0yOTMsOSArMjkzLDkgQEAgSlNDOjpJc29TdWJzcGFjZSog
SlNUZXN0SXRlcmFibGU6OnN1YnNwYQogICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAgc3RhdGlj
X2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rl
c3RJdGVyYWJsZT4gfHwgIUpTVGVzdEl0ZXJhYmxlOjpuZWVkc0Rlc3RydWN0aW9uKTsKICAgICBp
ZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3Qs
IEpTVGVzdEl0ZXJhYmxlPikKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0SXRlcmFi
bGUgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAq
dm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLCBKU1Rlc3RJdGVyYWJsZSk7CisgICAg
ICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEl0ZXJhYmxlID0gbWFrZVVuaXF1ZTxJc29TdWJz
cGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVh
cENlbGxUeXBlKCksIEpTVGVzdEl0ZXJhYmxlKTsKICAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5t
X3N1YnNwYWNlRm9yVGVzdEl0ZXJhYmxlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NV
QlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmNlbGxIZWFwQ2VsbFR5cGUsIEpTVGVzdEl0ZXJhYmxl
KTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0SXRlcmFibGUgPSBtYWtlVW5pcXVl
PElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxU
eXBlKCksIEpTVGVzdEl0ZXJhYmxlKTsKICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNw
YWNlRm9yVGVzdEl0ZXJhYmxlLmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNo
YWJsZS1jb2RlIikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUi
KQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEpT
QnVpbHRpbkNvbnN0cnVjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3IuY3BwCShyZXZp
c2lvbiAyODYwOTUpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02OSw3ICs2
OSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3Io
SlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9T
SEFSQUJMRShKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvclByb3RvdHlwZSwgQmFzZSk7Ci0gICAg
ICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFp
bk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRl
U3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAtMjMwLDkgKzIzMCw5IEBAIEpTQzo6
SXNvU3Vic3BhY2UqIEpTVGVzdEpTQnVpbHRpbkNvbnN0cnUKICAgICAgICAgcmV0dXJuIHNwYWNl
OwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJs
ZU9iamVjdCwgSlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3I+IHx8ICFKU1Rlc3RKU0J1aWx0aW5D
b25zdHJ1Y3Rvcjo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3RleHByIChzdGQ6Omlz
X2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RKU0J1aWx0aW5Db25z
dHJ1Y3Rvcj4pCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEpTQnVpbHRpbkNvbnN0
cnVjdG9yID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVh
cCwgKnZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSwgSlNUZXN0SlNCdWlsdGluQ29u
c3RydWN0b3IpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RKU0J1aWx0aW5Db25z
dHJ1Y3RvciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhl
YXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RKU0J1aWx0aW5D
b25zdHJ1Y3Rvcik7CiAgICAgZWxzZQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RK
U0J1aWx0aW5Db25zdHJ1Y3RvciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFD
RV9JTklUKHZtLmhlYXAsICp2bS5jZWxsSGVhcENlbGxUeXBlLCBKU1Rlc3RKU0J1aWx0aW5Db25z
dHJ1Y3Rvcik7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEpTQnVpbHRpbkNvbnN0
cnVjdG9yID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVh
cCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rvcik7CiAg
ICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RKU0J1aWx0aW5Db25zdHJ1
Y3Rvci5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJ
R05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RMZWdhY3lGYWN0b3J5RnVu
Y3Rpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb24uY3BwCShyZXZpc2lvbiAyODYwOTUp
CisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TGVnYWN5
RmFjdG9yeUZ1bmN0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjcsNyArNjcsNyBAQCBwdWJs
aWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZt
KQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNU
ZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJu
ICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3Bh
Y2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUo
SlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1Zh
bHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC0yMzAsOSArMjMwLDkgQEAgSlNDOjpJc29TdWJzcGFj
ZSogSlNUZXN0TGVnYWN5RmFjdG9yeUZ1bgogICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAgc3Rh
dGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBK
U1Rlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb24+IHx8ICFKU1Rlc3RMZWdhY3lGYWN0b3J5RnVuY3Rp
b246Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29m
X3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9u
PikKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9u
ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZt
LmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSwgSlNUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0
aW9uKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0
aW9uID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwg
dm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCksIEpTVGVzdExlZ2FjeUZhY3RvcnlG
dW5jdGlvbik7CiAgICAgZWxzZQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RMZWdh
Y3lGYWN0b3J5RnVuY3Rpb24gPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0Vf
SU5JVCh2bS5oZWFwLCAqdm0uY2VsbEhlYXBDZWxsVHlwZSwgSlNUZXN0TGVnYWN5RmFjdG9yeUZ1
bmN0aW9uKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TGVnYWN5RmFjdG9yeUZ1
bmN0aW9uID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVh
cCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb24pOwog
ICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TGVnYWN5RmFjdG9yeUZ1
bmN0aW9uLmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikK
IElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRleDogU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdExlZ2FjeU5vSW50ZXJm
YWNlT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0TGVnYWN5Tm9JbnRlcmZhY2VPYmplY3QuY3BwCShyZXZpc2lvbiAy
ODYwOTUpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
TGVnYWN5Tm9JbnRlcmZhY2VPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04NSw3ICs4NSw3
IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlND
OjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFS
QUJMRShKU1Rlc3RMZWdhY3lOb0ludGVyZmFjZU9iamVjdFByb3RvdHlwZSwgQmFzZSk7Ci0gICAg
ICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFp
bk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRl
U3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAtMzM1LDkgKzMzNSw5IEBAIEpTQzo6
SXNvU3Vic3BhY2UqIEpTVGVzdExlZ2FjeU5vSW50ZXJmYWMKICAgICAgICAgcmV0dXJuIHNwYWNl
OwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJs
ZU9iamVjdCwgSlNUZXN0TGVnYWN5Tm9JbnRlcmZhY2VPYmplY3Q+IHx8ICFKU1Rlc3RMZWdhY3lO
b0ludGVyZmFjZU9iamVjdDo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3RleHByIChz
dGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RMZWdhY3lO
b0ludGVyZmFjZU9iamVjdD4pCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdExlZ2Fj
eU5vSW50ZXJmYWNlT2JqZWN0ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNF
X0lOSVQodm0uaGVhcCwgKnZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSwgSlNUZXN0
TGVnYWN5Tm9JbnRlcmZhY2VPYmplY3QpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRl
c3RMZWdhY3lOb0ludGVyZmFjZU9iamVjdCA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19T
VUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgp
LCBKU1Rlc3RMZWdhY3lOb0ludGVyZmFjZU9iamVjdCk7CiAgICAgZWxzZQotICAgICAgICBzcGFj
ZXMubV9zdWJzcGFjZUZvclRlc3RMZWdhY3lOb0ludGVyZmFjZU9iamVjdCA9IG1ha2VVbmlxdWU8
SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5jZWxsSGVhcENlbGxU
eXBlLCBKU1Rlc3RMZWdhY3lOb0ludGVyZmFjZU9iamVjdCk7CisgICAgICAgIHNwYWNlcy5tX3N1
YnNwYWNlRm9yVGVzdExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0ID0gbWFrZVVuaXF1ZTxJc29TdWJz
cGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBK
U1Rlc3RMZWdhY3lOb0ludGVyZmFjZU9iamVjdCk7CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMu
bV9zdWJzcGFjZUZvclRlc3RMZWdhY3lOb0ludGVyZmFjZU9iamVjdC5nZXQoKTsKIElHTk9SRV9X
QVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4o
InRhdXRvbG9naWNhbC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TGVnYWN5
T3ZlcnJpZGVCdWlsdElucy5jcHAJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNzMsNyArNzMsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpT
Qzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAg
U1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0TGVnYWN5T3ZlcnJpZGVC
dWlsdEluc1Byb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RT
cGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAg
IHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6
OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAg
ICAgewpAQCAtMjQ5LDkgKzI0OSw5IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdExlZ2FjeU92
ZXJyaWRlQnUKICAgICAgICAgcmV0dXJuIHNwYWNlOwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjpp
c19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0TGVnYWN5T3ZlcnJp
ZGVCdWlsdElucz4gfHwgIUpTVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM6Om5lZWRzRGVzdHJ1
Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3Ry
dWN0aWJsZU9iamVjdCwgSlNUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdElucz4pCi0gICAgICAgIHNw
YWNlcy5tX3N1YnNwYWNlRm9yVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMgPSBtYWtlVW5pcXVl
PElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uZGVzdHJ1Y3RpYmxl
T2JqZWN0SGVhcENlbGxUeXBlLCBKU1Rlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zKTsKKyAgICAg
ICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdElucyA9IG1ha2VV
bmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0
aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zKTsK
ICAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdExlZ2FjeU92ZXJyaWRl
QnVpbHRJbnMgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5o
ZWFwLCAqdm0uY2VsbEhlYXBDZWxsVHlwZSwgSlNUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdElucyk7
CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMg
PSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5j
ZWxsSGVhcENlbGxUeXBlKCksIEpTVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMpOwogICAgIGF1
dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdElu
cy5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJR05P
UkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RNYXBMaWtlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TWFw
TGlrZS5jcHAJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RNYXBMaWtlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODIsNyAr
ODIsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9y
KEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0Vf
U0hBUkFCTEUoSlNUZXN0TWFwTGlrZVByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAm
dm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNl
KCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpT
Qzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1
ZSBwcm90b3R5cGUpCiAgICAgewpAQCAtMzY2LDkgKzM2Niw5IEBAIEpTQzo6SXNvU3Vic3BhY2Uq
IEpTVGVzdE1hcExpa2U6OnN1YnNwYWMKICAgICAgICAgcmV0dXJuIHNwYWNlOwogICAgIHN0YXRp
Y19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNU
ZXN0TWFwTGlrZT4gfHwgIUpTVGVzdE1hcExpa2U6Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlm
IGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwg
SlNUZXN0TWFwTGlrZT4pCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE1hcExpa2Ug
PSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0u
ZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLCBKU1Rlc3RNYXBMaWtlKTsKKyAgICAgICAg
c3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TWFwTGlrZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+
IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxs
VHlwZSgpLCBKU1Rlc3RNYXBMaWtlKTsKICAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNw
YWNlRm9yVGVzdE1hcExpa2UgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0Vf
SU5JVCh2bS5oZWFwLCAqdm0uY2VsbEhlYXBDZWxsVHlwZSwgSlNUZXN0TWFwTGlrZSk7CisgICAg
ICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE1hcExpa2UgPSBtYWtlVW5pcXVlPElzb1N1YnNw
YWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCksIEpT
VGVzdE1hcExpa2UpOwogICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0
TWFwTGlrZS5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIp
CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RNYXBMaWtlV2l0aE92
ZXJyaWRkZW5PcGVyYXRpb25zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TWFwTGlrZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9u
cy5jcHAJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RNYXBMaWtlV2l0aE92ZXJyaWRkZW5PcGVyYXRpb25zLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtODYsNyArODYsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNv
U3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElD
X0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0TWFwTGlrZVdpdGhPdmVycmlkZGVu
T3BlcmF0aW9uc1Byb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmpl
Y3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQog
ICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBK
U0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUp
CiAgICAgewpAQCAtMzgwLDkgKzM4MCw5IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdE1hcExp
a2VXaXRoT3ZlcnIKICAgICAgICAgcmV0dXJuIHNwYWNlOwogICAgIHN0YXRpY19hc3NlcnQoc3Rk
Ojppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0TWFwTGlrZVdp
dGhPdmVycmlkZGVuT3BlcmF0aW9ucz4gfHwgIUpTVGVzdE1hcExpa2VXaXRoT3ZlcnJpZGRlbk9w
ZXJhdGlvbnM6Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19i
YXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0TWFwTGlrZVdpdGhPdmVy
cmlkZGVuT3BlcmF0aW9ucz4pCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE1hcExp
a2VXaXRoT3ZlcnJpZGRlbk9wZXJhdGlvbnMgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09f
U1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBl
LCBKU1Rlc3RNYXBMaWtlV2l0aE92ZXJyaWRkZW5PcGVyYXRpb25zKTsKKyAgICAgICAgc3BhY2Vz
Lm1fc3Vic3BhY2VGb3JUZXN0TWFwTGlrZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9ucyA9IG1ha2VV
bmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0
aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RNYXBMaWtlV2l0aE92ZXJyaWRkZW5PcGVy
YXRpb25zKTsKICAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE1hcExp
a2VXaXRoT3ZlcnJpZGRlbk9wZXJhdGlvbnMgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09f
U1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uY2VsbEhlYXBDZWxsVHlwZSwgSlNUZXN0TWFwTGlr
ZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9ucyk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9y
VGVzdE1hcExpa2VXaXRoT3ZlcnJpZGRlbk9wZXJhdGlvbnMgPSBtYWtlVW5pcXVlPElzb1N1YnNw
YWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCksIEpT
VGVzdE1hcExpa2VXaXRoT3ZlcnJpZGRlbk9wZXJhdGlvbnMpOwogICAgIGF1dG8qIHNwYWNlID0g
c3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TWFwTGlrZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9ucy5n
ZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVf
V0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJO
b0lkZW50aWZpZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXIuY3Bw
CShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNjYsNyArNjYsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vi
c3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FT
U0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyTm9J
ZGVudGlmaWVyUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVj
dFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAg
ICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpT
Qzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkK
ICAgICB7CkBAIC0zNDQsOSArMzQ0LDkgQEAgSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0TmFtZWRB
bmRJbmRleGVkUwogICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6
OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3ROYW1lZEFuZElu
ZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXI+IHx8ICFKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJO
b0lkZW50aWZpZXI6Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjpp
c19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0TmFtZWRBbmRJbmRl
eGVkU2V0dGVyTm9JZGVudGlmaWVyPikKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0
TmFtZWRBbmRJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFj
ZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBD
ZWxsVHlwZSwgSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyKTsKKyAgICAg
ICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyTm9JZGVudGlm
aWVyID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwg
dm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCksIEpTVGVzdE5hbWVkQW5kSW5kZXhl
ZFNldHRlck5vSWRlbnRpZmllcik7CiAgICAgZWxzZQotICAgICAgICBzcGFjZXMubV9zdWJzcGFj
ZUZvclRlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXIgPSBtYWtlVW5pcXVlPElz
b1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uY2VsbEhlYXBDZWxsVHlw
ZSwgSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyKTsKKyAgICAgICAgc3Bh
Y2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyID0g
bWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2Vs
bEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXIp
OwogICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRBbmRJbmRl
eGVkU2V0dGVyTm9JZGVudGlmaWVyLmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJl
YWNoYWJsZS1jb2RlIikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBh
cmUiKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dE5hbWVkQW5kSW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRBbmRJ
bmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24uY3BwCShyZXZpc2lvbiAyODYwOTUpCisrKyBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRBbmRJbmRl
eGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02Niw3ICs2
Niw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3Io
SlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9T
SEFSQUJMRShKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvblByb3Rv
dHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAg
ICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6
OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAtMzQ0
LDkgKzM0NCw5IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdE5hbWVkQW5kSW5kZXhlZFMKICAg
ICAgICAgcmV0dXJuIHNwYWNlOwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8
SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyVGhy
b3dpbmdFeGNlcHRpb24+IHx8ICFKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4
Y2VwdGlvbjo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jh
c2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3ROYW1lZEFuZEluZGV4ZWRT
ZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbj4pCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVz
dE5hbWVkQW5kSW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uID0gbWFrZVVuaXF1ZTxJc29T
dWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmRlc3RydWN0aWJsZU9iamVj
dEhlYXBDZWxsVHlwZSwgSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRp
b24pOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZEFuZEluZGV4ZWRTZXR0
ZXJUaHJvd2luZ0V4Y2VwdGlvbiA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFD
RV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBKU1Rl
c3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbik7CiAgICAgZWxzZQotICAg
ICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJUaHJvd2lu
Z0V4Y2VwdGlvbiA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZt
LmhlYXAsICp2bS5jZWxsSGVhcENlbGxUeXBlLCBKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJU
aHJvd2luZ0V4Y2VwdGlvbik7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVk
QW5kSW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFj
ZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU1Rl
c3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbik7CiAgICAgYXV0byogc3Bh
Y2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJUaHJvd2lu
Z0V4Y2VwdGlvbi5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29k
ZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEFuZElu
ZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlcldp
dGhJZGVudGlmaWVyLmNwcAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlcldpdGhJZGVu
dGlmaWVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzUsNyArNzUsNyBAQCBwdWJsaWM6CiAgICAg
c3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsK
ICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0TmFtZWRB
bmRJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXJQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICBy
ZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmpl
Y3RTcGFjZSgpOwogICAgIH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVj
dHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6
OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKQEAgLTQwMSw5ICs0MDEsOSBAQCBKU0M6Oklzb1N1
YnNwYWNlKiBKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTCiAgICAgICAgIHJldHVybiBzcGFjZTsKICAg
ICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmpl
Y3QsIEpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyPiB8fCAhSlNUZXN0
TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXI6Om5lZWRzRGVzdHJ1Y3Rpb24pOwog
ICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9i
amVjdCwgSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXI+KQotICAgICAg
ICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRp
ZmllciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAs
ICp2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUsIEpTVGVzdE5hbWVkQW5kSW5kZXhl
ZFNldHRlcldpdGhJZGVudGlmaWVyKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0
TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXIgPSBtYWtlVW5pcXVlPElzb1N1YnNw
YWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFw
Q2VsbFR5cGUoKSwgSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXIpOwog
ICAgIGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRBbmRJbmRleGVk
U2V0dGVyV2l0aElkZW50aWZpZXIgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BB
Q0VfSU5JVCh2bS5oZWFwLCAqdm0uY2VsbEhlYXBDZWxsVHlwZSwgSlNUZXN0TmFtZWRBbmRJbmRl
eGVkU2V0dGVyV2l0aElkZW50aWZpZXIpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRl
c3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllciA9IG1ha2VVbmlxdWU8SXNvU3Vi
c3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwg
SlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXIpOwogICAgIGF1dG8qIHNw
YWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0aElk
ZW50aWZpZXIuZ2V0KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUi
KQogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVy
Tm9JZGVudGlmaWVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyTm9JZGVudGlmaWVyLmNwcAkocmV2aXNp
b24gMjg2MDk1KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdE5hbWVkRGVsZXRlck5vSWRlbnRpZmllci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY1LDcg
KzY1LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZv
cihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNF
X1NIQVJBQkxFKEpTVGVzdE5hbWVkRGVsZXRlck5vSWRlbnRpZmllclByb3RvdHlwZSwgQmFzZSk7
Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2
bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSog
Y3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAtMjQ2LDkgKzI0Niw5IEBA
IEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdE5hbWVkRGVsZXRlck5vSWQKICAgICAgICAgcmV0dXJu
IHNwYWNlOwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3Ry
dWN0aWJsZU9iamVjdCwgSlNUZXN0TmFtZWREZWxldGVyTm9JZGVudGlmaWVyPiB8fCAhSlNUZXN0
TmFtZWREZWxldGVyTm9JZGVudGlmaWVyOjpuZWVkc0Rlc3RydWN0aW9uKTsKICAgICBpZiBjb25z
dGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVz
dE5hbWVkRGVsZXRlck5vSWRlbnRpZmllcj4pCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9y
VGVzdE5hbWVkRGVsZXRlck5vSWRlbnRpZmllciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElT
T19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5
cGUsIEpTVGVzdE5hbWVkRGVsZXRlck5vSWRlbnRpZmllcik7CisgICAgICAgIHNwYWNlcy5tX3N1
YnNwYWNlRm9yVGVzdE5hbWVkRGVsZXRlck5vSWRlbnRpZmllciA9IG1ha2VVbmlxdWU8SXNvU3Vi
c3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhl
YXBDZWxsVHlwZSgpLCBKU1Rlc3ROYW1lZERlbGV0ZXJOb0lkZW50aWZpZXIpOwogICAgIGVsc2UK
LSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWREZWxldGVyTm9JZGVudGlmaWVy
ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZt
LmNlbGxIZWFwQ2VsbFR5cGUsIEpTVGVzdE5hbWVkRGVsZXRlck5vSWRlbnRpZmllcik7CisgICAg
ICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkRGVsZXRlck5vSWRlbnRpZmllciA9IG1h
a2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxI
ZWFwQ2VsbFR5cGUoKSwgSlNUZXN0TmFtZWREZWxldGVyTm9JZGVudGlmaWVyKTsKICAgICBhdXRv
KiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkRGVsZXRlck5vSWRlbnRpZmll
ci5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJR05P
UkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJUaHJvd2lu
Z0V4Y2VwdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlclRocm93aW5nRXhjZXB0aW9uLmNwcAkocmV2
aXNpb24gMjg2MDk1KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdE5hbWVkRGVsZXRlclRocm93aW5nRXhjZXB0aW9uLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNjUsNyArNjUsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1
YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09f
U1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0TmFtZWREZWxldGVyVGhyb3dpbmdFeGNlcHRpb25Qcm90
b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAg
ICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KICAgICBzdGF0aWMgSlND
OjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKQEAgLTI0
Niw5ICsyNDYsOSBAQCBKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3ROYW1lZERlbGV0ZXJUaHJvCiAg
ICAgICAgIHJldHVybiBzcGFjZTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92
PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdE5hbWVkRGVsZXRlclRocm93aW5nRXhj
ZXB0aW9uPiB8fCAhSlNUZXN0TmFtZWREZWxldGVyVGhyb3dpbmdFeGNlcHRpb246Om5lZWRzRGVz
dHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rl
c3RydWN0aWJsZU9iamVjdCwgSlNUZXN0TmFtZWREZWxldGVyVGhyb3dpbmdFeGNlcHRpb24+KQot
ICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZERlbGV0ZXJUaHJvd2luZ0V4Y2Vw
dGlvbiA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAs
ICp2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUsIEpTVGVzdE5hbWVkRGVsZXRlclRo
cm93aW5nRXhjZXB0aW9uKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRE
ZWxldGVyVGhyb3dpbmdFeGNlcHRpb24gPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VC
U1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwg
SlNUZXN0TmFtZWREZWxldGVyVGhyb3dpbmdFeGNlcHRpb24pOwogICAgIGVsc2UKLSAgICAgICAg
c3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWREZWxldGVyVGhyb3dpbmdFeGNlcHRpb24gPSBt
YWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uY2Vs
bEhlYXBDZWxsVHlwZSwgSlNUZXN0TmFtZWREZWxldGVyVGhyb3dpbmdFeGNlcHRpb24pOworICAg
ICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZERlbGV0ZXJUaHJvd2luZ0V4Y2VwdGlv
biA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZt
LmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0TmFtZWREZWxldGVyVGhyb3dpbmdFeGNlcHRpb24p
OwogICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWREZWxldGVy
VGhyb3dpbmdFeGNlcHRpb24uZ2V0KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hh
YmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIp
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFt
ZWREZWxldGVyV2l0aElkZW50aWZpZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRpZmll
ci5jcHAJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllci5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTcyLDcgKzcyLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNw
YWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NF
UlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdE5hbWVkRGVsZXRlcldpdGhJZGVudGlmaWVy
UHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOwor
ICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGlj
IEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBA
IC0yNzAsOSArMjcwLDkgQEAgSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0TmFtZWREZWxldGVyV2l0
aAogICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vf
b2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSWRl
bnRpZmllcj4gfHwgIUpTVGVzdE5hbWVkRGVsZXRlcldpdGhJZGVudGlmaWVyOjpuZWVkc0Rlc3Ry
dWN0aW9uKTsKICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0
cnVjdGlibGVPYmplY3QsIEpTVGVzdE5hbWVkRGVsZXRlcldpdGhJZGVudGlmaWVyPikKLSAgICAg
ICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWREZWxldGVyV2l0aElkZW50aWZpZXIgPSBt
YWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uZGVz
dHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLCBKU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRp
Zmllcik7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkRGVsZXRlcldpdGhJ
ZGVudGlmaWVyID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0u
aGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCksIEpTVGVzdE5hbWVkRGVs
ZXRlcldpdGhJZGVudGlmaWVyKTsKICAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNl
Rm9yVGVzdE5hbWVkRGVsZXRlcldpdGhJZGVudGlmaWVyID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFj
ZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmNlbGxIZWFwQ2VsbFR5cGUsIEpTVGVz
dE5hbWVkRGVsZXRlcldpdGhJZGVudGlmaWVyKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VG
b3JUZXN0TmFtZWREZWxldGVyV2l0aElkZW50aWZpZXIgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNl
PiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCksIEpTVGVz
dE5hbWVkRGVsZXRlcldpdGhJZGVudGlmaWVyKTsKICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5t
X3N1YnNwYWNlRm9yVGVzdE5hbWVkRGVsZXRlcldpdGhJZGVudGlmaWVyLmdldCgpOwogSUdOT1JF
X1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKIElHTk9SRV9XQVJOSU5HU19CRUdJ
TigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlcldpdGhJbmRleGVkR2V0dGVyLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0TmFtZWREZWxldGVyV2l0aEluZGV4ZWRHZXR0ZXIuY3BwCShyZXZpc2lvbiAyODYwOTUpCisr
KyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxl
dGVyV2l0aEluZGV4ZWRHZXR0ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02Niw3ICs2Niw3IEBA
IHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpW
TSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJM
RShKU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSW5kZXhlZEdldHRlclByb3RvdHlwZSwgQmFzZSk7Ci0g
ICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5w
bGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3Jl
YXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAtMjYyLDkgKzI2Miw5IEBAIEpT
Qzo6SXNvU3Vic3BhY2UqIEpTVGVzdE5hbWVkRGVsZXRlcldpdGgKICAgICAgICAgcmV0dXJuIHNw
YWNlOwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0
aWJsZU9iamVjdCwgSlNUZXN0TmFtZWREZWxldGVyV2l0aEluZGV4ZWRHZXR0ZXI+IHx8ICFKU1Rl
c3ROYW1lZERlbGV0ZXJXaXRoSW5kZXhlZEdldHRlcjo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAg
aWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0
LCBKU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSW5kZXhlZEdldHRlcj4pCi0gICAgICAgIHNwYWNlcy5t
X3N1YnNwYWNlRm9yVGVzdE5hbWVkRGVsZXRlcldpdGhJbmRleGVkR2V0dGVyID0gbWFrZVVuaXF1
ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmRlc3RydWN0aWJs
ZU9iamVjdEhlYXBDZWxsVHlwZSwgSlNUZXN0TmFtZWREZWxldGVyV2l0aEluZGV4ZWRHZXR0ZXIp
OworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZERlbGV0ZXJXaXRoSW5kZXhl
ZEdldHRlciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhl
YXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3ROYW1lZERlbGV0
ZXJXaXRoSW5kZXhlZEdldHRlcik7CiAgICAgZWxzZQotICAgICAgICBzcGFjZXMubV9zdWJzcGFj
ZUZvclRlc3ROYW1lZERlbGV0ZXJXaXRoSW5kZXhlZEdldHRlciA9IG1ha2VVbmlxdWU8SXNvU3Vi
c3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5jZWxsSGVhcENlbGxUeXBlLCBK
U1Rlc3ROYW1lZERlbGV0ZXJXaXRoSW5kZXhlZEdldHRlcik7CisgICAgICAgIHNwYWNlcy5tX3N1
YnNwYWNlRm9yVGVzdE5hbWVkRGVsZXRlcldpdGhJbmRleGVkR2V0dGVyID0gbWFrZVVuaXF1ZTxJ
c29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlw
ZSgpLCBKU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSW5kZXhlZEdldHRlcik7CiAgICAgYXV0byogc3Bh
Y2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZERlbGV0ZXJXaXRoSW5kZXhlZEdldHRl
ci5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJR05P
UkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEdldHRlckNhbGxXaXRo
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0TmFtZWRHZXR0ZXJDYWxsV2l0aC5jcHAJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEdldHRlckNh
bGxXaXRoLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjUsNyArNjUsNyBAQCBwdWJsaWM6CiAgICAg
c3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsK
ICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0TmFtZWRH
ZXR0ZXJDYWxsV2l0aFByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5P
YmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAg
fQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZt
LCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5
cGUpCiAgICAgewpAQCAtMjIwLDkgKzIyMCw5IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdE5h
bWVkR2V0dGVyQ2FsbFcKICAgICAgICAgcmV0dXJuIHNwYWNlOwogICAgIHN0YXRpY19hc3NlcnQo
c3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0TmFtZWRH
ZXR0ZXJDYWxsV2l0aD4gfHwgIUpTVGVzdE5hbWVkR2V0dGVyQ2FsbFdpdGg6Om5lZWRzRGVzdHJ1
Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3Ry
dWN0aWJsZU9iamVjdCwgSlNUZXN0TmFtZWRHZXR0ZXJDYWxsV2l0aD4pCi0gICAgICAgIHNwYWNl
cy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkR2V0dGVyQ2FsbFdpdGggPSBtYWtlVW5pcXVlPElzb1N1
YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0
SGVhcENlbGxUeXBlLCBKU1Rlc3ROYW1lZEdldHRlckNhbGxXaXRoKTsKKyAgICAgICAgc3BhY2Vz
Lm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRHZXR0ZXJDYWxsV2l0aCA9IG1ha2VVbmlxdWU8SXNvU3Vi
c3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhl
YXBDZWxsVHlwZSgpLCBKU1Rlc3ROYW1lZEdldHRlckNhbGxXaXRoKTsKICAgICBlbHNlCi0gICAg
ICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkR2V0dGVyQ2FsbFdpdGggPSBtYWtlVW5p
cXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uY2VsbEhlYXBD
ZWxsVHlwZSwgSlNUZXN0TmFtZWRHZXR0ZXJDYWxsV2l0aCk7CisgICAgICAgIHNwYWNlcy5tX3N1
YnNwYWNlRm9yVGVzdE5hbWVkR2V0dGVyQ2FsbFdpdGggPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNl
PiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCksIEpTVGVz
dE5hbWVkR2V0dGVyQ2FsbFdpdGgpOwogICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3Bh
Y2VGb3JUZXN0TmFtZWRHZXR0ZXJDYWxsV2l0aC5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJ
TigidW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNh
bC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3ROYW1lZEdldHRlck5vSWRlbnRpZmllci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkR2V0dGVyTm9JZGVu
dGlmaWVyLmNwcAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkR2V0dGVyTm9JZGVudGlmaWVyLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNjUsNyArNjUsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vi
c3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FT
U0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0TmFtZWRHZXR0ZXJOb0lkZW50aWZpZXJQ
cm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7Cisg
ICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KICAgICBzdGF0aWMg
SlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKQEAg
LTIyMCw5ICsyMjAsOSBAQCBKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3ROYW1lZEdldHRlck5vSWRl
CiAgICAgICAgIHJldHVybiBzcGFjZTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9v
Zl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdE5hbWVkR2V0dGVyTm9JZGVudGlm
aWVyPiB8fCAhSlNUZXN0TmFtZWRHZXR0ZXJOb0lkZW50aWZpZXI6Om5lZWRzRGVzdHJ1Y3Rpb24p
OwogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJs
ZU9iamVjdCwgSlNUZXN0TmFtZWRHZXR0ZXJOb0lkZW50aWZpZXI+KQotICAgICAgICBzcGFjZXMu
bV9zdWJzcGFjZUZvclRlc3ROYW1lZEdldHRlck5vSWRlbnRpZmllciA9IG1ha2VVbmlxdWU8SXNv
U3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5kZXN0cnVjdGlibGVPYmpl
Y3RIZWFwQ2VsbFR5cGUsIEpTVGVzdE5hbWVkR2V0dGVyTm9JZGVudGlmaWVyKTsKKyAgICAgICAg
c3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRHZXR0ZXJOb0lkZW50aWZpZXIgPSBtYWtlVW5p
cXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGli
bGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0TmFtZWRHZXR0ZXJOb0lkZW50aWZpZXIpOwog
ICAgIGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRHZXR0ZXJOb0lk
ZW50aWZpZXIgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5o
ZWFwLCAqdm0uY2VsbEhlYXBDZWxsVHlwZSwgSlNUZXN0TmFtZWRHZXR0ZXJOb0lkZW50aWZpZXIp
OworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZEdldHRlck5vSWRlbnRpZmll
ciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZt
LmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0TmFtZWRHZXR0ZXJOb0lkZW50aWZpZXIpOwogICAg
IGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRHZXR0ZXJOb0lkZW50
aWZpZXIuZ2V0KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQog
SUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRHZXR0ZXJXaXRo
SWRlbnRpZmllci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkR2V0dGVyV2l0aElkZW50aWZpZXIuY3BwCShyZXZpc2lv
biAyODYwOTUpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0TmFtZWRHZXR0ZXJXaXRoSWRlbnRpZmllci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcwLDcg
KzcwLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZv
cihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNF
X1NIQVJBQkxFKEpTVGVzdE5hbWVkR2V0dGVyV2l0aElkZW50aWZpZXJQcm90b3R5cGUsIEJhc2Up
OwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAm
dm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUq
IGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKQEAgLTI0Niw5ICsyNDYsOSBA
QCBKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3ROYW1lZEdldHRlcldpdGhJCiAgICAgICAgIHJldHVy
biBzcGFjZTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0
cnVjdGlibGVPYmplY3QsIEpTVGVzdE5hbWVkR2V0dGVyV2l0aElkZW50aWZpZXI+IHx8ICFKU1Rl
c3ROYW1lZEdldHRlcldpdGhJZGVudGlmaWVyOjpuZWVkc0Rlc3RydWN0aW9uKTsKICAgICBpZiBj
b25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpT
VGVzdE5hbWVkR2V0dGVyV2l0aElkZW50aWZpZXI+KQotICAgICAgICBzcGFjZXMubV9zdWJzcGFj
ZUZvclRlc3ROYW1lZEdldHRlcldpdGhJZGVudGlmaWVyID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFj
ZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBD
ZWxsVHlwZSwgSlNUZXN0TmFtZWRHZXR0ZXJXaXRoSWRlbnRpZmllcik7CisgICAgICAgIHNwYWNl
cy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkR2V0dGVyV2l0aElkZW50aWZpZXIgPSBtYWtlVW5pcXVl
PElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVP
YmplY3RIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0TmFtZWRHZXR0ZXJXaXRoSWRlbnRpZmllcik7CiAg
ICAgZWxzZQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZEdldHRlcldpdGhJ
ZGVudGlmaWVyID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0u
aGVhcCwgKnZtLmNlbGxIZWFwQ2VsbFR5cGUsIEpTVGVzdE5hbWVkR2V0dGVyV2l0aElkZW50aWZp
ZXIpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZEdldHRlcldpdGhJZGVu
dGlmaWVyID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVh
cCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3ROYW1lZEdldHRlcldpdGhJZGVudGlmaWVy
KTsKICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkR2V0dGVy
V2l0aElkZW50aWZpZXIuZ2V0KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxl
LWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRT
ZXR0ZXJOb0lkZW50aWZpZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlck5vSWRlbnRpZmllci5jcHAJKHJl
dmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3ROYW1lZFNldHRlck5vSWRlbnRpZmllci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY1
LDcgKzY1LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFj
ZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQ
QUNFX1NIQVJBQkxFKEpTVGVzdE5hbWVkU2V0dGVyTm9JZGVudGlmaWVyUHJvdG90eXBlLCBCYXNl
KTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4g
JnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJl
KiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC0zMDAsOSArMzAwLDkg
QEAgSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0TmFtZWRTZXR0ZXJOb0lkZQogICAgICAgICByZXR1
cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVz
dHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3ROYW1lZFNldHRlck5vSWRlbnRpZmllcj4gfHwgIUpTVGVz
dE5hbWVkU2V0dGVyTm9JZGVudGlmaWVyOjpuZWVkc0Rlc3RydWN0aW9uKTsKICAgICBpZiBjb25z
dGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVz
dE5hbWVkU2V0dGVyTm9JZGVudGlmaWVyPikKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JU
ZXN0TmFtZWRTZXR0ZXJOb0lkZW50aWZpZXIgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09f
U1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBl
LCBKU1Rlc3ROYW1lZFNldHRlck5vSWRlbnRpZmllcik7CisgICAgICAgIHNwYWNlcy5tX3N1YnNw
YWNlRm9yVGVzdE5hbWVkU2V0dGVyTm9JZGVudGlmaWVyID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFj
ZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENl
bGxUeXBlKCksIEpTVGVzdE5hbWVkU2V0dGVyTm9JZGVudGlmaWVyKTsKICAgICBlbHNlCi0gICAg
ICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkU2V0dGVyTm9JZGVudGlmaWVyID0gbWFr
ZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmNlbGxI
ZWFwQ2VsbFR5cGUsIEpTVGVzdE5hbWVkU2V0dGVyTm9JZGVudGlmaWVyKTsKKyAgICAgICAgc3Bh
Y2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRTZXR0ZXJOb0lkZW50aWZpZXIgPSBtYWtlVW5pcXVl
PElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxU
eXBlKCksIEpTVGVzdE5hbWVkU2V0dGVyTm9JZGVudGlmaWVyKTsKICAgICBhdXRvKiBzcGFjZSA9
IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkU2V0dGVyTm9JZGVudGlmaWVyLmdldCgpOwog
SUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKIElHTk9SRV9XQVJOSU5H
U19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24u
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3ROYW1lZFNldHRlclRocm93aW5nRXhjZXB0aW9uLmNwcAkocmV2aXNpb24gMjg2MDk1
KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVk
U2V0dGVyVGhyb3dpbmdFeGNlcHRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NSw3ICs2NSw3
IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlND
OjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFS
QUJMRShKU1Rlc3ROYW1lZFNldHRlclRocm93aW5nRXhjZXB0aW9uUHJvdG90eXBlLCBCYXNlKTsK
LSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZt
LnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBj
cmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC0zMDAsOSArMzAwLDkgQEAg
SlNDOjpJc29TdWJzcGFjZSogSlNUZXN0TmFtZWRTZXR0ZXJUaHJvdwogICAgICAgICByZXR1cm4g
c3BhY2U7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1
Y3RpYmxlT2JqZWN0LCBKU1Rlc3ROYW1lZFNldHRlclRocm93aW5nRXhjZXB0aW9uPiB8fCAhSlNU
ZXN0TmFtZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbjo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAg
aWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0
LCBKU1Rlc3ROYW1lZFNldHRlclRocm93aW5nRXhjZXB0aW9uPikKLSAgICAgICAgc3BhY2VzLm1f
c3Vic3BhY2VGb3JUZXN0TmFtZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbiA9IG1ha2VVbmlxdWU8
SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5kZXN0cnVjdGlibGVP
YmplY3RIZWFwQ2VsbFR5cGUsIEpTVGVzdE5hbWVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24pOwor
ICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZFNldHRlclRocm93aW5nRXhjZXB0
aW9uID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwg
dm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCksIEpTVGVzdE5hbWVkU2V0dGVyVGhy
b3dpbmdFeGNlcHRpb24pOwogICAgIGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JU
ZXN0TmFtZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbiA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+
IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5jZWxsSGVhcENlbGxUeXBlLCBKU1Rlc3RO
YW1lZFNldHRlclRocm93aW5nRXhjZXB0aW9uKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VG
b3JUZXN0TmFtZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbiA9IG1ha2VVbmlxdWU8SXNvU3Vic3Bh
Y2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNU
ZXN0TmFtZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbik7CiAgICAgYXV0byogc3BhY2UgPSBzcGFj
ZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZFNldHRlclRocm93aW5nRXhjZXB0aW9uLmdldCgpOwog
SUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKIElHTk9SRV9XQVJOSU5H
U19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aElkZW50aWZpZXIuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3ROYW1lZFNldHRlcldpdGhJZGVudGlmaWVyLmNwcAkocmV2aXNpb24gMjg2MDk1KQorKysg
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVy
V2l0aElkZW50aWZpZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03Miw3ICs3Miw3IEBAIHB1Ymxp
YzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0p
CiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rl
c3ROYW1lZFNldHRlcldpdGhJZGVudGlmaWVyUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0
dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0
U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1
cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpK
U1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC0zMzEsOSArMzMxLDkgQEAgSlNDOjpJc29TdWJz
cGFjZSogSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSQogICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAg
c3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0
LCBKU1Rlc3ROYW1lZFNldHRlcldpdGhJZGVudGlmaWVyPiB8fCAhSlNUZXN0TmFtZWRTZXR0ZXJX
aXRoSWRlbnRpZmllcjo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3RleHByIChzdGQ6
OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3ROYW1lZFNldHRl
cldpdGhJZGVudGlmaWVyPikKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRT
ZXR0ZXJXaXRoSWRlbnRpZmllciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFD
RV9JTklUKHZtLmhlYXAsICp2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUsIEpTVGVz
dE5hbWVkU2V0dGVyV2l0aElkZW50aWZpZXIpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZv
clRlc3ROYW1lZFNldHRlcldpdGhJZGVudGlmaWVyID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4g
SVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxU
eXBlKCksIEpTVGVzdE5hbWVkU2V0dGVyV2l0aElkZW50aWZpZXIpOwogICAgIGVsc2UKLSAgICAg
ICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmllciA9IG1h
a2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5jZWxs
SGVhcENlbGxUeXBlLCBKU1Rlc3ROYW1lZFNldHRlcldpdGhJZGVudGlmaWVyKTsKKyAgICAgICAg
c3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmllciA9IG1ha2VV
bmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFw
Q2VsbFR5cGUoKSwgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmllcik7CiAgICAgYXV0byog
c3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZFNldHRlcldpdGhJZGVudGlmaWVy
LmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKIElHTk9S
RV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRleDogU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4
ZWRHZXR0ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyLmNwcAkocmV2aXNp
b24gMjg2MDk1KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03
NSw3ICs3NSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3Bh
Y2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJT
UEFDRV9TSEFSQUJMRShKU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyUHJvdG90eXBl
LCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICBy
ZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3Ry
dWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC0zNzgsOSAr
Mzc4LDkgQEAgSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSQogICAgICAg
ICByZXR1cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6
OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVy
PiB8fCAhSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlcjo6bmVlZHNEZXN0cnVjdGlv
bik7CiAgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3Rp
YmxlT2JqZWN0LCBKU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyPikKLSAgICAgICAg
c3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlciA9IG1h
a2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5kZXN0
cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUsIEpTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRH
ZXR0ZXIpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZFNldHRlcldpdGhJ
bmRleGVkR2V0dGVyID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQo
dm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCksIEpTVGVzdE5hbWVk
U2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXIpOwogICAgIGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vi
c3BhY2VGb3JUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlciA9IG1ha2VVbmlxdWU8SXNv
U3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5jZWxsSGVhcENlbGxUeXBl
LCBKU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyKTsKKyAgICAgICAgc3BhY2VzLm1f
c3Vic3BhY2VGb3JUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlciA9IG1ha2VVbmlxdWU8
SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5
cGUoKSwgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlcik7CiAgICAgYXV0byogc3Bh
Y2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVy
LmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKIElHTk9S
RV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRleDogU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4
ZWRHZXR0ZXJBbmRTZXR0ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQW5k
U2V0dGVyLmNwcAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0
ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NSw3ICs3NSw3IEBAIHB1YmxpYzoKICAgICBzdGF0
aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAg
ICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3ROYW1lZFNldHRl
cldpdGhJbmRleGVkR2V0dGVyQW5kU2V0dGVyUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0
dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0
U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1
cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpK
U1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC00MjgsOSArNDI4LDkgQEAgSlNDOjpJc29TdWJz
cGFjZSogSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSQogICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAg
c3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0
LCBKU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQW5kU2V0dGVyPiB8fCAhSlNUZXN0
TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlckFuZFNldHRlcjo6bmVlZHNEZXN0cnVjdGlvbik7
CiAgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxl
T2JqZWN0LCBKU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQW5kU2V0dGVyPikKLSAg
ICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRl
ckFuZFNldHRlciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZt
LmhlYXAsICp2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUsIEpTVGVzdE5hbWVkU2V0
dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0ZXIpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFj
ZUZvclRlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQW5kU2V0dGVyID0gbWFrZVVuaXF1
ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxl
T2JqZWN0SGVhcENlbGxUeXBlKCksIEpTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJB
bmRTZXR0ZXIpOwogICAgIGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFt
ZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlckFuZFNldHRlciA9IG1ha2VVbmlxdWU8SXNvU3Vic3Bh
Y2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5jZWxsSGVhcENlbGxUeXBlLCBKU1Rl
c3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQW5kU2V0dGVyKTsKKyAgICAgICAgc3BhY2Vz
Lm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlckFuZFNldHRlciA9
IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNl
bGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlckFuZFNl
dHRlcik7CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZFNl
dHRlcldpdGhJbmRleGVkR2V0dGVyQW5kU2V0dGVyLmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JF
R0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dp
Y2FsLWNvbXBhcmUiKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RO
YW1lZFNldHRlcldpdGhMZWdhY3lPdmVycmlkZUJ1aWx0SW5zLmNwcAkocmV2aXNpb24gMjg2MDk1
KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVk
U2V0dGVyV2l0aExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02
NSw3ICs2NSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3Bh
Y2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJT
UEFDRV9TSEFSQUJMRShKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lPdmVycmlkZUJ1aWx0SW5z
UHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOwor
ICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGlj
IEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBA
IC0yNzcsOSArMjc3LDkgQEAgSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0TmFtZWRTZXR0ZXJXaXRo
TAogICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vf
b2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdh
Y3lPdmVycmlkZUJ1aWx0SW5zPiB8fCAhSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5T3ZlcnJp
ZGVCdWlsdEluczo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3RleHByIChzdGQ6Omlz
X2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3ROYW1lZFNldHRlcldp
dGhMZWdhY3lPdmVycmlkZUJ1aWx0SW5zPikKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JU
ZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5T3ZlcnJpZGVCdWlsdElucyA9IG1ha2VVbmlxdWU8SXNv
U3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5kZXN0cnVjdGlibGVPYmpl
Y3RIZWFwQ2VsbFR5cGUsIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeU92ZXJyaWRlQnVpbHRJ
bnMpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZFNldHRlcldpdGhMZWdh
Y3lPdmVycmlkZUJ1aWx0SW5zID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNF
X0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCksIEpTVGVz
dE5hbWVkU2V0dGVyV2l0aExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMpOwogICAgIGVsc2UKLSAgICAg
ICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5T3ZlcnJpZGVC
dWlsdElucyA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhl
YXAsICp2bS5jZWxsSGVhcENlbGxUeXBlLCBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lPdmVy
cmlkZUJ1aWx0SW5zKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRTZXR0
ZXJXaXRoTGVnYWN5T3ZlcnJpZGVCdWlsdElucyA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElT
T19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0TmFt
ZWRTZXR0ZXJXaXRoTGVnYWN5T3ZlcnJpZGVCdWlsdElucyk7CiAgICAgYXV0byogc3BhY2UgPSBz
cGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lPdmVycmlkZUJ1aWx0
SW5zLmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKIElH
Tk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRleDogU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aExl
Z2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVu
Zm9yZ2VhYmxlUHJvcGVydGllcy5jcHAJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lV
bmZvcmdlYWJsZVByb3BlcnRpZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NCw3ICs3NCw3IEBA
IHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpW
TSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJM
RShKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNQcm90b3R5
cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAg
IHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KICAgICBzdGF0aWMgSlNDOjpT
dHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKQEAgLTM2MSw5
ICszNjEsOSBAQCBKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3ROYW1lZFNldHRlcldpdGhMCiAgICAg
ICAgIHJldHVybiBzcGFjZTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpT
Qzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9y
Z2VhYmxlUHJvcGVydGllcz4gfHwgIUpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2Vh
YmxlUHJvcGVydGllczo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3RleHByIChzdGQ6
OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3ROYW1lZFNldHRl
cldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXM+KQotICAgICAgICBzcGFjZXMubV9zdWJz
cGFjZUZvclRlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXMgPSBt
YWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uZGVz
dHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLCBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lV
bmZvcmdlYWJsZVByb3BlcnRpZXMpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RO
YW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXMgPSBtYWtlVW5pcXVlPElz
b1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmpl
Y3RIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQ
cm9wZXJ0aWVzKTsKICAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5h
bWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllcyA9IG1ha2VVbmlxdWU8SXNv
U3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5jZWxsSGVhcENlbGxUeXBl
LCBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXMpOworICAg
ICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdl
YWJsZVByb3BlcnRpZXMgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5J
VCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCksIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExl
Z2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllcyk7CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9z
dWJzcGFjZUZvclRlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXMu
Z2V0KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JF
X1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5
VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdElucy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5h
bWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRl
QnVpbHRJbnMuY3BwCShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQ
cm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdElucy5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTc0LDcgKzc0LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJz
cGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NV
QlNQQUNFX1NIQVJBQkxFKEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJv
cGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnNQcm90b3R5cGUsIEJhc2UpOwotICAgICAg
ICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5P
YmplY3RTcGFjZSgpOwogICAgIH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0
cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBK
U0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKQEAgLTMzOCw5ICszMzgsOSBAQCBKU0M6Oklz
b1N1YnNwYWNlKiBKU1Rlc3ROYW1lZFNldHRlcldpdGhMCiAgICAgICAgIHJldHVybiBzcGFjZTsK
ICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVP
YmplY3QsIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0Fu
ZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM+IHx8ICFKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lV
bmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zOjpuZWVkc0Rlc3Ry
dWN0aW9uKTsKICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0
cnVjdGlibGVPYmplY3QsIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJv
cGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM+KQotICAgICAgICBzcGFjZXMubV9zdWJz
cGFjZUZvclRlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRM
ZWdhY3lPdmVycmlkZUJ1aWx0SW5zID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQ
QUNFX0lOSVQodm0uaGVhcCwgKnZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSwgSlNU
ZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3Zl
cnJpZGVCdWlsdElucyk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkU2V0
dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJ
bnMgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2
bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0TmFtZWRTZXR0ZXJXaXRo
TGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdElucyk7CiAg
ICAgZWxzZQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZFNldHRlcldpdGhM
ZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zID0gbWFr
ZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmNlbGxI
ZWFwQ2VsbFR5cGUsIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVy
dGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFj
ZUZvclRlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdh
Y3lPdmVycmlkZUJ1aWx0SW5zID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNF
X0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3ROYW1lZFNldHRlcldp
dGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zKTsK
ICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkU2V0dGVyV2l0
aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMuZ2V0
KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dB
Uk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZXNwYWNlT2JqZWN0LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
TmFtZXNwYWNlT2JqZWN0LmNwcAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVzcGFjZU9iamVjdC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTI4MCw5ICsyODAsOSBAQCBKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3ROYW1l
c3BhY2VPYmplY3Q6CiAgICAgICAgIHJldHVybiBzcGFjZTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0
ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdE5hbWVzcGFj
ZU9iamVjdD4gfHwgIUpTVGVzdE5hbWVzcGFjZU9iamVjdDo6bmVlZHNEZXN0cnVjdGlvbik7CiAg
ICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2Jq
ZWN0LCBKU1Rlc3ROYW1lc3BhY2VPYmplY3Q+KQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZv
clRlc3ROYW1lc3BhY2VPYmplY3QgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BB
Q0VfSU5JVCh2bS5oZWFwLCAqdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLCBKU1Rl
c3ROYW1lc3BhY2VPYmplY3QpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1l
c3BhY2VPYmplY3QgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2
bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0TmFtZXNw
YWNlT2JqZWN0KTsKICAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5h
bWVzcGFjZU9iamVjdCA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklU
KHZtLmhlYXAsICp2bS5jZWxsSGVhcENlbGxUeXBlLCBKU1Rlc3ROYW1lc3BhY2VPYmplY3QpOwor
ICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lc3BhY2VPYmplY3QgPSBtYWtlVW5p
cXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENl
bGxUeXBlKCksIEpTVGVzdE5hbWVzcGFjZU9iamVjdCk7CiAgICAgYXV0byogc3BhY2UgPSBzcGFj
ZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lc3BhY2VPYmplY3QuZ2V0KCk7CiBJR05PUkVfV0FSTklO
R1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0
b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0Tm9kZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5vZGUuY3BwCShyZXZpc2lvbiAyODYwOTUpCisr
KyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Tm9kZS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTk1LDcgKzk1LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6
Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNU
QVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdE5vZGVQcm90b3R5cGUsIEJh
c2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVy
biAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1
cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKQEAgLTQwNSw5ICs0MDUs
OSBAQCBwdWJsaWM6CiAgICAgICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAgICAgIHN0YXRpY19h
c3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgVGVzdE5v
ZGVJdGVyYXRvcj4gfHwgIVRlc3ROb2RlSXRlcmF0b3I6Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAg
ICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVP
YmplY3QsIFRlc3ROb2RlSXRlcmF0b3I+KQotICAgICAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VG
b3JUZXN0Tm9kZUl0ZXJhdG9yID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNF
X0lOSVQodm0uaGVhcCwgKnZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5nZXQoKSwg
VGVzdE5vZGVJdGVyYXRvcik7CisgICAgICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RO
b2RlSXRlcmF0b3IgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2
bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwgVGVzdE5vZGVJdGVy
YXRvcik7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVz
dE5vZGVJdGVyYXRvciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklU
KHZtLmhlYXAsICp2bS5jZWxsSGVhcENlbGxUeXBlLCBUZXN0Tm9kZUl0ZXJhdG9yKTsKKyAgICAg
ICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5vZGVJdGVyYXRvciA9IG1ha2VVbmlxdWU8
SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5
cGUoKSwgVGVzdE5vZGVJdGVyYXRvcik7CiAgICAgICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1f
c3Vic3BhY2VGb3JUZXN0Tm9kZUl0ZXJhdG9yLmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lO
KCJ1bnJlYWNoYWJsZS1jb2RlIikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2Fs
LWNvbXBhcmUiKQpAQCAtNDk3LDkgKzQ5Nyw5IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdE5v
ZGU6OnN1YnNwYWNlRm8KICAgICAgICAgcmV0dXJuIHNwYWNlOwogICAgIHN0YXRpY19hc3NlcnQo
c3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0Tm9kZT4g
fHwgIUpTVGVzdE5vZGU6Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhwciAoc3Rk
Ojppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0Tm9kZT4pCi0g
ICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5vZGUgPSBtYWtlVW5pcXVlPElzb1N1YnNw
YWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVh
cENlbGxUeXBlLCBKU1Rlc3ROb2RlKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0
Tm9kZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAs
IHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3ROb2RlKTsKICAgICBl
bHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5vZGUgPSBtYWtlVW5pcXVlPElz
b1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uY2VsbEhlYXBDZWxsVHlw
ZSwgSlNUZXN0Tm9kZSk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5vZGUgPSBt
YWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxs
SGVhcENlbGxUeXBlKCksIEpTVGVzdE5vZGUpOwogICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1f
c3Vic3BhY2VGb3JUZXN0Tm9kZS5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFj
aGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJl
IikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RP
YmouY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RPYmouY3BwCShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MTg2Niw3ICsxODY2LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBz
dWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNP
X1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdE9ialByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJl
dHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVj
dFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0
dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6
SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAtOTAwNiw5ICs5MDA2LDkgQEAgSlNDOjpJc29T
dWJzcGFjZSogSlNUZXN0T2JqOjpzdWJzcGFjZUZvcgogICAgICAgICByZXR1cm4gc3BhY2U7CiAg
ICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2Jq
ZWN0LCBKU1Rlc3RPYmo+IHx8ICFKU1Rlc3RPYmo6Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlm
IGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwg
SlNUZXN0T2JqPikKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0T2JqID0gbWFrZVVu
aXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmRlc3RydWN0
aWJsZU9iamVjdEhlYXBDZWxsVHlwZSwgSlNUZXN0T2JqKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vi
c3BhY2VGb3JUZXN0T2JqID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lO
SVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCksIEpTVGVzdE9i
aik7CiAgICAgZWxzZQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RPYmogPSBtYWtl
VW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uY2VsbEhl
YXBDZWxsVHlwZSwgSlNUZXN0T2JqKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0
T2JqID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwg
dm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RPYmopOwogICAgIGF1dG8qIHNwYWNlID0gc3Bh
Y2VzLm1fc3Vic3BhY2VGb3JUZXN0T2JqLmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1
bnJlYWNoYWJsZS1jb2RlIikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNv
bXBhcmUiKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdE9wZXJhdGlvbkNvbmRpdGlvbmFsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3BlcmF0aW9uQ29uZGl0aW9uYWwuY3Bw
CShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0T3BlcmF0aW9uQ29uZGl0aW9uYWwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04
MSw3ICs4MSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3Bh
Y2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJT
UEFDRV9TSEFSQUJMRShKU1Rlc3RPcGVyYXRpb25Db25kaXRpb25hbFByb3RvdHlwZSwgQmFzZSk7
Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2
bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSog
Y3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAtMjM0LDkgKzIzNCw5IEBA
IEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdE9wZXJhdGlvbkNvbmRpdGkKICAgICAgICAgcmV0dXJu
IHNwYWNlOwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3Ry
dWN0aWJsZU9iamVjdCwgSlNUZXN0T3BlcmF0aW9uQ29uZGl0aW9uYWw+IHx8ICFKU1Rlc3RPcGVy
YXRpb25Db25kaXRpb25hbDo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3RleHByIChz
dGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RPcGVyYXRp
b25Db25kaXRpb25hbD4pCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE9wZXJhdGlv
bkNvbmRpdGlvbmFsID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQo
dm0uaGVhcCwgKnZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSwgSlNUZXN0T3BlcmF0
aW9uQ29uZGl0aW9uYWwpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RPcGVyYXRp
b25Db25kaXRpb25hbCA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklU
KHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RPcGVy
YXRpb25Db25kaXRpb25hbCk7CiAgICAgZWxzZQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZv
clRlc3RPcGVyYXRpb25Db25kaXRpb25hbCA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19T
VUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5jZWxsSGVhcENlbGxUeXBlLCBKU1Rlc3RPcGVyYXRp
b25Db25kaXRpb25hbCk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE9wZXJhdGlv
bkNvbmRpdGlvbmFsID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQo
dm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RPcGVyYXRpb25Db25kaXRpb25h
bCk7CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RPcGVyYXRpb25D
b25kaXRpb25hbC5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29k
ZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVybG9hZGVk
Q29uc3RydWN0b3JzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5jcHAJKHJldmlzaW9u
IDI4NjA5NSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjksNyArNjks
NyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpT
Qzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hB
UkFCTEUoSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1Byb3RvdHlwZSwgQmFzZSk7Ci0gICAg
ICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFp
bk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRl
U3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAtMjk1LDkgKzI5NSw5IEBAIEpTQzo6
SXNvU3Vic3BhY2UqIEpTVGVzdE92ZXJsb2FkZWRDb25zdHIKICAgICAgICAgcmV0dXJuIHNwYWNl
OwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJs
ZU9iamVjdCwgSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycz4gfHwgIUpTVGVzdE92ZXJsb2Fk
ZWRDb25zdHJ1Y3RvcnM6Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhwciAoc3Rk
Ojppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0T3ZlcmxvYWRl
ZENvbnN0cnVjdG9ycz4pCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE92ZXJsb2Fk
ZWRDb25zdHJ1Y3RvcnMgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5J
VCh2bS5oZWFwLCAqdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLCBKU1Rlc3RPdmVy
bG9hZGVkQ29uc3RydWN0b3JzKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0T3Zl
cmxvYWRlZENvbnN0cnVjdG9ycyA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFD
RV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBKU1Rl
c3RPdmVybG9hZGVkQ29uc3RydWN0b3JzKTsKICAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1
YnNwYWNlRm9yVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMgPSBtYWtlVW5pcXVlPElzb1N1YnNw
YWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uY2VsbEhlYXBDZWxsVHlwZSwgSlNU
ZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9y
VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09f
U1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCksIEpTVGVzdE92ZXJs
b2FkZWRDb25zdHJ1Y3RvcnMpOwogICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VG
b3JUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJ
TigidW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNh
bC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzV2l0aFNlcXVlbmNlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3Zlcmxv
YWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5jZS5jcHAJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVybG9hZGVkQ29u
c3RydWN0b3JzV2l0aFNlcXVlbmNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjgsNyArNjgsNyBA
QCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6
Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFC
TEUoSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5jZVByb3RvdHlwZSwgQmFz
ZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJu
ICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVy
ZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAtMjM4LDkgKzIzOCw5
IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdE92ZXJsb2FkZWRDb25zdHIKICAgICAgICAgcmV0
dXJuIHNwYWNlOwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rl
c3RydWN0aWJsZU9iamVjdCwgSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5j
ZT4gfHwgIUpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2U6Om5lZWRzRGVz
dHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rl
c3RydWN0aWJsZU9iamVjdCwgSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5j
ZT4pCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3Rv
cnNXaXRoU2VxdWVuY2UgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5J
VCh2bS5oZWFwLCAqdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLCBKU1Rlc3RPdmVy
bG9hZGVkQ29uc3RydWN0b3JzV2l0aFNlcXVlbmNlKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3Bh
Y2VGb3JUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5jZSA9IG1ha2VVbmlxdWU8
SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9i
amVjdEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzV2l0aFNlcXVl
bmNlKTsKICAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE92ZXJsb2Fk
ZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2UgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09f
U1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uY2VsbEhlYXBDZWxsVHlwZSwgSlNUZXN0T3Zlcmxv
YWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5jZSk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNl
Rm9yVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2UgPSBtYWtlVW5pcXVlPElz
b1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBl
KCksIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2UpOwogICAgIGF1dG8q
IHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dp
dGhTZXF1ZW5jZS5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29k
ZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RQbHVnaW5JbnRl
cmZhY2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RQbHVnaW5JbnRlcmZhY2UuY3BwCShyZXZpc2lvbiAyODYwOTUpCisrKyBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0UGx1Z2luSW50ZXJm
YWNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjQsNyArNjQsNyBAQCBwdWJsaWM6CiAgICAgc3Rh
dGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAg
ICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0UGx1Z2luSW50
ZXJmYWNlUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNw
YWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAg
c3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAg
ICB7CkBAIC0yNDQsOSArMjQ0LDkgQEAgSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0UGx1Z2luSW50
ZXJmYWNlOgogICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6Omlz
X2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RQbHVnaW5JbnRlcmZh
Y2U+IHx8ICFKU1Rlc3RQbHVnaW5JbnRlcmZhY2U6Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlm
IGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwg
SlNUZXN0UGx1Z2luSW50ZXJmYWNlPikKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0
UGx1Z2luSW50ZXJmYWNlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lO
SVQodm0uaGVhcCwgKnZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSwgSlNUZXN0UGx1
Z2luSW50ZXJmYWNlKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0UGx1Z2luSW50
ZXJmYWNlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVh
cCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCksIEpTVGVzdFBsdWdpbkludGVy
ZmFjZSk7CiAgICAgZWxzZQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RQbHVnaW5J
bnRlcmZhY2UgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5o
ZWFwLCAqdm0uY2VsbEhlYXBDZWxsVHlwZSwgSlNUZXN0UGx1Z2luSW50ZXJmYWNlKTsKKyAgICAg
ICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0UGx1Z2luSW50ZXJmYWNlID0gbWFrZVVuaXF1ZTxJ
c29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlw
ZSgpLCBKU1Rlc3RQbHVnaW5JbnRlcmZhY2UpOwogICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1f
c3Vic3BhY2VGb3JUZXN0UGx1Z2luSW50ZXJmYWNlLmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JF
R0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dp
Y2FsLWNvbXBhcmUiKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFByb21pc2VSZWplY3Rpb25F
dmVudC5jcHAJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xNDgsNyArMTQ4LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNw
YWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NF
UlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudFByb3Rv
dHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAg
ICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6
OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAtMzAx
LDkgKzMwMSw5IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdFByb21pc2VSZWplY3Rpb24KICAg
ICAgICAgcmV0dXJuIHNwYWNlOwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8
SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50PiB8
fCAhSlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50OjpuZWVkc0Rlc3RydWN0aW9uKTsKICAgICBp
ZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3Qs
IEpTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudD4pCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNl
Rm9yVGVzdFByb21pc2VSZWplY3Rpb25FdmVudCA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElT
T19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5
cGUsIEpTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudCk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNw
YWNlRm9yVGVzdFByb21pc2VSZWplY3Rpb25FdmVudCA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+
IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxs
VHlwZSgpLCBKU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQpOwogICAgIGVsc2UKLSAgICAgICAg
c3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50ID0gbWFrZVVuaXF1
ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmNlbGxIZWFwQ2Vs
bFR5cGUsIEpTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudCk7CisgICAgICAgIHNwYWNlcy5tX3N1
YnNwYWNlRm9yVGVzdFByb21pc2VSZWplY3Rpb25FdmVudCA9IG1ha2VVbmlxdWU8SXNvU3Vic3Bh
Y2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNU
ZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50KTsKICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1
YnNwYWNlRm9yVGVzdFByb21pc2VSZWplY3Rpb25FdmVudC5nZXQoKTsKIElHTk9SRV9XQVJOSU5H
U19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRv
bG9naWNhbC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RSZWFkT25seU1hcExpa2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RSZWFkT25seU1hcExpa2UuY3Bw
CShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0UmVhZE9ubHlNYXBMaWtlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzksNyAr
NzksNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9y
KEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0Vf
U0hBUkFCTEUoSlNUZXN0UmVhZE9ubHlNYXBMaWtlUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAg
cmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2Jq
ZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1
Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlND
OjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC0zMDUsOSArMzA1LDkgQEAgSlNDOjpJc29T
dWJzcGFjZSogSlNUZXN0UmVhZE9ubHlNYXBMaWtlOgogICAgICAgICByZXR1cm4gc3BhY2U7CiAg
ICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2Jq
ZWN0LCBKU1Rlc3RSZWFkT25seU1hcExpa2U+IHx8ICFKU1Rlc3RSZWFkT25seU1hcExpa2U6Om5l
ZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlND
OjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0UmVhZE9ubHlNYXBMaWtlPikKLSAgICAgICAg
c3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0UmVhZE9ubHlNYXBMaWtlID0gbWFrZVVuaXF1ZTxJc29T
dWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmRlc3RydWN0aWJsZU9iamVj
dEhlYXBDZWxsVHlwZSwgSlNUZXN0UmVhZE9ubHlNYXBMaWtlKTsKKyAgICAgICAgc3BhY2VzLm1f
c3Vic3BhY2VGb3JUZXN0UmVhZE9ubHlNYXBMaWtlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4g
SVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxU
eXBlKCksIEpTVGVzdFJlYWRPbmx5TWFwTGlrZSk7CiAgICAgZWxzZQotICAgICAgICBzcGFjZXMu
bV9zdWJzcGFjZUZvclRlc3RSZWFkT25seU1hcExpa2UgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNl
PiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uY2VsbEhlYXBDZWxsVHlwZSwgSlNUZXN0
UmVhZE9ubHlNYXBMaWtlKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0UmVhZE9u
bHlNYXBMaWtlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0u
aGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RSZWFkT25seU1hcExpa2UpOwogICAg
IGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0UmVhZE9ubHlNYXBMaWtlLmdl
dCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKIElHTk9SRV9X
QVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRleDogU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFJlYWRPbmx5U2V0TGlrZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dFJlYWRPbmx5U2V0TGlrZS5jcHAJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RSZWFkT25seVNldExpa2UuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC03OCw3ICs3OCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29T
dWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNf
QVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3RSZWFkT25seVNldExpa2VQcm90b3R5
cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAg
IHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KICAgICBzdGF0aWMgSlNDOjpT
dHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKQEAgLTI4NCw5
ICsyODQsOSBAQCBKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3RSZWFkT25seVNldExpa2U6CiAgICAg
ICAgIHJldHVybiBzcGFjZTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpT
Qzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdFJlYWRPbmx5U2V0TGlrZT4gfHwgIUpTVGVz
dFJlYWRPbmx5U2V0TGlrZTo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3RleHByIChz
dGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RSZWFkT25s
eVNldExpa2U+KQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RSZWFkT25seVNldExp
a2UgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAq
dm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLCBKU1Rlc3RSZWFkT25seVNldExpa2Up
OworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RSZWFkT25seVNldExpa2UgPSBtYWtl
VW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVj
dGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0UmVhZE9ubHlTZXRMaWtlKTsKICAgICBl
bHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFJlYWRPbmx5U2V0TGlrZSA9IG1h
a2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5jZWxs
SGVhcENlbGxUeXBlLCBKU1Rlc3RSZWFkT25seVNldExpa2UpOworICAgICAgICBzcGFjZXMubV9z
dWJzcGFjZUZvclRlc3RSZWFkT25seVNldExpa2UgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJ
U09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCksIEpTVGVzdFJl
YWRPbmx5U2V0TGlrZSk7CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRl
c3RSZWFkT25seVNldExpa2UuZ2V0KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hh
YmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIp
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0UmVw
b3J0RXh0cmFNZW1vcnlDb3N0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0UmVwb3J0RXh0cmFNZW1vcnlDb3N0LmNwcAkocmV2
aXNpb24gMjg2MDk1KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdFJlcG9ydEV4dHJhTWVtb3J5Q29zdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYzLDcg
KzYzLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZv
cihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNF
X1NIQVJBQkxFKEpTVGVzdFJlcG9ydEV4dHJhTWVtb3J5Q29zdFByb3RvdHlwZSwgQmFzZSk7Ci0g
ICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5w
bGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3Jl
YXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAtMTcxLDkgKzE3MSw5IEBAIEpT
Qzo6SXNvU3Vic3BhY2UqIEpTVGVzdFJlcG9ydEV4dHJhTWVtb3IKICAgICAgICAgcmV0dXJuIHNw
YWNlOwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0
aWJsZU9iamVjdCwgSlNUZXN0UmVwb3J0RXh0cmFNZW1vcnlDb3N0PiB8fCAhSlNUZXN0UmVwb3J0
RXh0cmFNZW1vcnlDb3N0OjpuZWVkc0Rlc3RydWN0aW9uKTsKICAgICBpZiBjb25zdGV4cHIgKHN0
ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdFJlcG9ydEV4
dHJhTWVtb3J5Q29zdD4pCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFJlcG9ydEV4
dHJhTWVtb3J5Q29zdCA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklU
KHZtLmhlYXAsICp2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUsIEpTVGVzdFJlcG9y
dEV4dHJhTWVtb3J5Q29zdCk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFJlcG9y
dEV4dHJhTWVtb3J5Q29zdCA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9J
TklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RS
ZXBvcnRFeHRyYU1lbW9yeUNvc3QpOwogICAgIGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vic3Bh
Y2VGb3JUZXN0UmVwb3J0RXh0cmFNZW1vcnlDb3N0ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4g
SVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmNlbGxIZWFwQ2VsbFR5cGUsIEpTVGVzdFJl
cG9ydEV4dHJhTWVtb3J5Q29zdCk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFJl
cG9ydEV4dHJhTWVtb3J5Q29zdCA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFD
RV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0UmVwb3J0RXh0cmFN
ZW1vcnlDb3N0KTsKICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFJl
cG9ydEV4dHJhTWVtb3J5Q29zdC5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFj
aGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJl
IikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RT
ZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFs
dWVJbnRlcmZhY2UuY3BwCShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtODksNyArODksNyBAQCBwdWJsaWM6CiAgICAgc3RhdGlj
IEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAg
ICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0U2VyaWFsaXplZFNj
cmlwdFZhbHVlSW50ZXJmYWNlUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5w
bGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsK
ICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpW
TSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHBy
b3RvdHlwZSkKICAgICB7CkBAIC0zNDksOSArMzQ5LDkgQEAgSlNDOjpJc29TdWJzcGFjZSogSlNU
ZXN0U2VyaWFsaXplZFNjcmlwdAogICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fz
c2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RT
ZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2U+IHx8ICFKU1Rlc3RTZXJpYWxpemVkU2NyaXB0
VmFsdWVJbnRlcmZhY2U6Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhwciAoc3Rk
Ojppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0U2VyaWFsaXpl
ZFNjcmlwdFZhbHVlSW50ZXJmYWNlPikKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0
U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4g
SVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxs
VHlwZSwgSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlKTsKKyAgICAgICAgc3Bh
Y2VzLm1fc3Vic3BhY2VGb3JUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlID0gbWFr
ZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1
Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCksIEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUlu
dGVyZmFjZSk7CiAgICAgZWxzZQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RTZXJp
YWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09f
U1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uY2VsbEhlYXBDZWxsVHlwZSwgSlNUZXN0U2VyaWFs
aXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JU
ZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFj
ZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU1Rl
c3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UpOwogICAgIGF1dG8qIHNwYWNlID0gc3Bh
Y2VzLm1fc3Vic3BhY2VGb3JUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmdldCgp
OwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKIElHTk9SRV9XQVJO
SU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRleDogU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNldExpa2UuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXRMaWtlLmNw
cAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdFNldExpa2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04MSw3ICs4MSw3IEBA
IHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpW
TSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJM
RShKU1Rlc3RTZXRMaWtlUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFp
bk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAg
ICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYg
dm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3Rv
dHlwZSkKICAgICB7CkBAIC0zNDIsOSArMzQyLDkgQEAgSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0
U2V0TGlrZTo6c3Vic3BhYwogICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fzc2Vy
dChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RTZXRM
aWtlPiB8fCAhSlNUZXN0U2V0TGlrZTo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3Rl
eHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RT
ZXRMaWtlPikKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0U2V0TGlrZSA9IG1ha2VV
bmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5kZXN0cnVj
dGlibGVPYmplY3RIZWFwQ2VsbFR5cGUsIEpTVGVzdFNldExpa2UpOworICAgICAgICBzcGFjZXMu
bV9zdWJzcGFjZUZvclRlc3RTZXRMaWtlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NV
QlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCks
IEpTVGVzdFNldExpa2UpOwogICAgIGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JU
ZXN0U2V0TGlrZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZt
LmhlYXAsICp2bS5jZWxsSGVhcENlbGxUeXBlLCBKU1Rlc3RTZXRMaWtlKTsKKyAgICAgICAgc3Bh
Y2VzLm1fc3Vic3BhY2VGb3JUZXN0U2V0TGlrZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElT
T19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0U2V0
TGlrZSk7CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RTZXRMaWtl
LmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKIElHTk9S
RV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRleDogU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNldExpa2VXaXRoT3ZlcnJpZGRl
bk9wZXJhdGlvbnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXRMaWtlV2l0aE92ZXJyaWRkZW5PcGVyYXRpb25zLmNwcAko
cmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdFNldExpa2VXaXRoT3ZlcnJpZGRlbk9wZXJhdGlvbnMuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC04NSw3ICs4NSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFj
ZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJU
X0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3RTZXRMaWtlV2l0aE92ZXJyaWRkZW5PcGVyYXRp
b25zUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNl
OworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3Rh
dGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7
CkBAIC0zNTQsOSArMzU0LDkgQEAgSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0U2V0TGlrZVdpdGhP
dmVycgogICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jh
c2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RTZXRMaWtlV2l0aE92ZXJy
aWRkZW5PcGVyYXRpb25zPiB8fCAhSlNUZXN0U2V0TGlrZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9u
czo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2Zf
djxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RTZXRMaWtlV2l0aE92ZXJyaWRkZW5P
cGVyYXRpb25zPikKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0U2V0TGlrZVdpdGhP
dmVycmlkZGVuT3BlcmF0aW9ucyA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFD
RV9JTklUKHZtLmhlYXAsICp2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUsIEpTVGVz
dFNldExpa2VXaXRoT3ZlcnJpZGRlbk9wZXJhdGlvbnMpOworICAgICAgICBzcGFjZXMubV9zdWJz
cGFjZUZvclRlc3RTZXRMaWtlV2l0aE92ZXJyaWRkZW5PcGVyYXRpb25zID0gbWFrZVVuaXF1ZTxJ
c29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2Jq
ZWN0SGVhcENlbGxUeXBlKCksIEpTVGVzdFNldExpa2VXaXRoT3ZlcnJpZGRlbk9wZXJhdGlvbnMp
OwogICAgIGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0U2V0TGlrZVdpdGhP
dmVycmlkZGVuT3BlcmF0aW9ucyA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFD
RV9JTklUKHZtLmhlYXAsICp2bS5jZWxsSGVhcENlbGxUeXBlLCBKU1Rlc3RTZXRMaWtlV2l0aE92
ZXJyaWRkZW5PcGVyYXRpb25zKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0U2V0
TGlrZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9ucyA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElT
T19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0U2V0
TGlrZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9ucyk7CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMu
bV9zdWJzcGFjZUZvclRlc3RTZXRMaWtlV2l0aE92ZXJyaWRkZW5PcGVyYXRpb25zLmdldCgpOwog
SUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKIElHTk9SRV9XQVJOSU5H
U19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZp
ZXIuY3BwCShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02OSw3
ICs2OSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VG
b3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFD
RV9TSEFSQUJMRShKU1Rlc3RTdHJpbmdpZmllclByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJl
dHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVj
dFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0
dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6
SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAtMTkyLDkgKzE5Miw5IEBAIEpTQzo6SXNvU3Vi
c3BhY2UqIEpTVGVzdFN0cmluZ2lmaWVyOjpzdWIKICAgICAgICAgcmV0dXJuIHNwYWNlOwogICAg
IHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVj
dCwgSlNUZXN0U3RyaW5naWZpZXI+IHx8ICFKU1Rlc3RTdHJpbmdpZmllcjo6bmVlZHNEZXN0cnVj
dGlvbik7CiAgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1
Y3RpYmxlT2JqZWN0LCBKU1Rlc3RTdHJpbmdpZmllcj4pCi0gICAgICAgIHNwYWNlcy5tX3N1YnNw
YWNlRm9yVGVzdFN0cmluZ2lmaWVyID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQ
QUNFX0lOSVQodm0uaGVhcCwgKnZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSwgSlNU
ZXN0U3RyaW5naWZpZXIpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RTdHJpbmdp
ZmllciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAs
IHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RTdHJpbmdpZmllcik7
CiAgICAgZWxzZQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RTdHJpbmdpZmllciA9
IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5j
ZWxsSGVhcENlbGxUeXBlLCBKU1Rlc3RTdHJpbmdpZmllcik7CisgICAgICAgIHNwYWNlcy5tX3N1
YnNwYWNlRm9yVGVzdFN0cmluZ2lmaWVyID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NV
QlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RTdHJpbmdp
Zmllcik7CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RTdHJpbmdp
Zmllci5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJ
R05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllckFub255
bW91c09wZXJhdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyQW5vbnltb3VzT3BlcmF0aW9uLmNwcAko
cmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdFN0cmluZ2lmaWVyQW5vbnltb3VzT3BlcmF0aW9uLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNjksNyArNjksNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2Uq
IHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9J
U09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0U3RyaW5naWZpZXJBbm9ueW1vdXNPcGVyYXRpb25Q
cm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7Cisg
ICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KICAgICBzdGF0aWMg
SlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKQEAg
LTE5Miw5ICsxOTIsOSBAQCBKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3RTdHJpbmdpZmllckFub255
CiAgICAgICAgIHJldHVybiBzcGFjZTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9v
Zl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdFN0cmluZ2lmaWVyQW5vbnltb3Vz
T3BlcmF0aW9uPiB8fCAhSlNUZXN0U3RyaW5naWZpZXJBbm9ueW1vdXNPcGVyYXRpb246Om5lZWRz
RGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpK
U0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0U3RyaW5naWZpZXJBbm9ueW1vdXNPcGVyYXRpb24+
KQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RTdHJpbmdpZmllckFub255bW91c09w
ZXJhdGlvbiA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhl
YXAsICp2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUsIEpTVGVzdFN0cmluZ2lmaWVy
QW5vbnltb3VzT3BlcmF0aW9uKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0U3Ry
aW5naWZpZXJBbm9ueW1vdXNPcGVyYXRpb24gPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09f
U1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUo
KSwgSlNUZXN0U3RyaW5naWZpZXJBbm9ueW1vdXNPcGVyYXRpb24pOwogICAgIGVsc2UKLSAgICAg
ICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0U3RyaW5naWZpZXJBbm9ueW1vdXNPcGVyYXRpb24g
PSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0u
Y2VsbEhlYXBDZWxsVHlwZSwgSlNUZXN0U3RyaW5naWZpZXJBbm9ueW1vdXNPcGVyYXRpb24pOwor
ICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RTdHJpbmdpZmllckFub255bW91c09wZXJh
dGlvbiA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAs
IHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0U3RyaW5naWZpZXJBbm9ueW1vdXNPcGVyYXRp
b24pOwogICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0U3RyaW5naWZp
ZXJBbm9ueW1vdXNPcGVyYXRpb24uZ2V0KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVh
Y2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFy
ZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
U3RyaW5naWZpZXJOYW1lZE9wZXJhdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyTmFtZWRPcGVyYXRp
b24uY3BwCShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJOYW1lZE9wZXJhdGlvbi5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTcwLDcgKzcwLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNw
YWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NF
UlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdFN0cmluZ2lmaWVyTmFtZWRPcGVyYXRpb25Q
cm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7Cisg
ICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KICAgICBzdGF0aWMg
SlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKQEAg
LTIwOSw5ICsyMDksOSBAQCBKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3RTdHJpbmdpZmllck5hbWVk
CiAgICAgICAgIHJldHVybiBzcGFjZTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9v
Zl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdFN0cmluZ2lmaWVyTmFtZWRPcGVy
YXRpb24+IHx8ICFKU1Rlc3RTdHJpbmdpZmllck5hbWVkT3BlcmF0aW9uOjpuZWVkc0Rlc3RydWN0
aW9uKTsKICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVj
dGlibGVPYmplY3QsIEpTVGVzdFN0cmluZ2lmaWVyTmFtZWRPcGVyYXRpb24+KQotICAgICAgICBz
cGFjZXMubV9zdWJzcGFjZUZvclRlc3RTdHJpbmdpZmllck5hbWVkT3BlcmF0aW9uID0gbWFrZVVu
aXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmRlc3RydWN0
aWJsZU9iamVjdEhlYXBDZWxsVHlwZSwgSlNUZXN0U3RyaW5naWZpZXJOYW1lZE9wZXJhdGlvbik7
CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFN0cmluZ2lmaWVyTmFtZWRPcGVyYXRp
b24gPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2
bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0U3RyaW5naWZpZXJOYW1l
ZE9wZXJhdGlvbik7CiAgICAgZWxzZQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RT
dHJpbmdpZmllck5hbWVkT3BlcmF0aW9uID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NV
QlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmNlbGxIZWFwQ2VsbFR5cGUsIEpTVGVzdFN0cmluZ2lm
aWVyTmFtZWRPcGVyYXRpb24pOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RTdHJp
bmdpZmllck5hbWVkT3BlcmF0aW9uID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQ
QUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RTdHJpbmdpZmll
ck5hbWVkT3BlcmF0aW9uKTsKICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9y
VGVzdFN0cmluZ2lmaWVyTmFtZWRPcGVyYXRpb24uZ2V0KCk7CiBJR05PUkVfV0FSTklOR1NfQkVH
SU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2lj
YWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25JbXBsZW1lbnRlZEFzLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5n
aWZpZXJPcGVyYXRpb25JbXBsZW1lbnRlZEFzLmNwcAkocmV2aXNpb24gMjg2MDk1KQorKysgU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyT3Bl
cmF0aW9uSW1wbGVtZW50ZWRBcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcwLDcgKzcwLDcgQEAg
cHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZN
JiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxF
KEpTVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uSW1wbGVtZW50ZWRBc1Byb3RvdHlwZSwgQmFzZSk7
Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2
bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSog
Y3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAtMjA5LDkgKzIwOSw5IEBA
IEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdFN0cmluZ2lmaWVyT3BlcmEKICAgICAgICAgcmV0dXJu
IHNwYWNlOwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3Ry
dWN0aWJsZU9iamVjdCwgSlNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25JbXBsZW1lbnRlZEFzPiB8
fCAhSlNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25JbXBsZW1lbnRlZEFzOjpuZWVkc0Rlc3RydWN0
aW9uKTsKICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVj
dGlibGVPYmplY3QsIEpTVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uSW1wbGVtZW50ZWRBcz4pCi0g
ICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uSW1wbGVt
ZW50ZWRBcyA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhl
YXAsICp2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUsIEpTVGVzdFN0cmluZ2lmaWVy
T3BlcmF0aW9uSW1wbGVtZW50ZWRBcyk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVz
dFN0cmluZ2lmaWVyT3BlcmF0aW9uSW1wbGVtZW50ZWRBcyA9IG1ha2VVbmlxdWU8SXNvU3Vic3Bh
Y2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBD
ZWxsVHlwZSgpLCBKU1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbkltcGxlbWVudGVkQXMpOwogICAg
IGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0U3RyaW5naWZpZXJPcGVyYXRp
b25JbXBsZW1lbnRlZEFzID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lO
SVQodm0uaGVhcCwgKnZtLmNlbGxIZWFwQ2VsbFR5cGUsIEpTVGVzdFN0cmluZ2lmaWVyT3BlcmF0
aW9uSW1wbGVtZW50ZWRBcyk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFN0cmlu
Z2lmaWVyT3BlcmF0aW9uSW1wbGVtZW50ZWRBcyA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElT
T19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0U3Ry
aW5naWZpZXJPcGVyYXRpb25JbXBsZW1lbnRlZEFzKTsKICAgICBhdXRvKiBzcGFjZSA9IHNwYWNl
cy5tX3N1YnNwYWNlRm9yVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uSW1wbGVtZW50ZWRBcy5nZXQo
KTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVfV0FS
TklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbk5hbWVk
VG9TdHJpbmcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbk5hbWVkVG9TdHJpbmcuY3BwCShy
ZXZpc2lvbiAyODYwOTUpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25OYW1lZFRvU3RyaW5nLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNjksNyArNjksNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3Bh
Y2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VS
VF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25OYW1lZFRv
U3RyaW5nUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNw
YWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAg
c3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAg
ICB7CkBAIC0xOTIsOSArMTkyLDkgQEAgSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0U3RyaW5naWZp
ZXJPcGVyYQogICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6Omlz
X2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RTdHJpbmdpZmllck9w
ZXJhdGlvbk5hbWVkVG9TdHJpbmc+IHx8ICFKU1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbk5hbWVk
VG9TdHJpbmc6Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19i
YXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0U3RyaW5naWZpZXJPcGVy
YXRpb25OYW1lZFRvU3RyaW5nPikKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0U3Ry
aW5naWZpZXJPcGVyYXRpb25OYW1lZFRvU3RyaW5nID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4g
SVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxs
VHlwZSwgSlNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25OYW1lZFRvU3RyaW5nKTsKKyAgICAgICAg
c3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25OYW1lZFRvU3RyaW5n
ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0u
ZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCksIEpTVGVzdFN0cmluZ2lmaWVyT3BlcmF0
aW9uTmFtZWRUb1N0cmluZyk7CiAgICAgZWxzZQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZv
clRlc3RTdHJpbmdpZmllck9wZXJhdGlvbk5hbWVkVG9TdHJpbmcgPSBtYWtlVW5pcXVlPElzb1N1
YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uY2VsbEhlYXBDZWxsVHlwZSwg
SlNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25OYW1lZFRvU3RyaW5nKTsKKyAgICAgICAgc3BhY2Vz
Lm1fc3Vic3BhY2VGb3JUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25OYW1lZFRvU3RyaW5nID0gbWFr
ZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhl
YXBDZWxsVHlwZSgpLCBKU1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbk5hbWVkVG9TdHJpbmcpOwog
ICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0U3RyaW5naWZpZXJPcGVy
YXRpb25OYW1lZFRvU3RyaW5nLmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNo
YWJsZS1jb2RlIikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUi
KQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0
cmluZ2lmaWVyUmVhZE9ubHlBdHRyaWJ1dGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllclJlYWRPbmx5QXR0
cmlidXRlLmNwcAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyUmVhZE9ubHlBdHRyaWJ1dGUuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC03MSw3ICs3MSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJ
c29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFU
SUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3RTdHJpbmdpZmllclJlYWRPbmx5
QXR0cmlidXRlUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVj
dFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAg
ICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpT
Qzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkK
ICAgICB7CkBAIC0yMDgsOSArMjA4LDkgQEAgSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0U3RyaW5n
aWZpZXJSZWFkTwogICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6
OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RTdHJpbmdpZmll
clJlYWRPbmx5QXR0cmlidXRlPiB8fCAhSlNUZXN0U3RyaW5naWZpZXJSZWFkT25seUF0dHJpYnV0
ZTo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2Zf
djxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RTdHJpbmdpZmllclJlYWRPbmx5QXR0
cmlidXRlPikKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0U3RyaW5naWZpZXJSZWFk
T25seUF0dHJpYnV0ZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklU
KHZtLmhlYXAsICp2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUsIEpTVGVzdFN0cmlu
Z2lmaWVyUmVhZE9ubHlBdHRyaWJ1dGUpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRl
c3RTdHJpbmdpZmllclJlYWRPbmx5QXR0cmlidXRlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4g
SVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxU
eXBlKCksIEpTVGVzdFN0cmluZ2lmaWVyUmVhZE9ubHlBdHRyaWJ1dGUpOwogICAgIGVsc2UKLSAg
ICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0U3RyaW5naWZpZXJSZWFkT25seUF0dHJpYnV0
ZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2
bS5jZWxsSGVhcENlbGxUeXBlLCBKU1Rlc3RTdHJpbmdpZmllclJlYWRPbmx5QXR0cmlidXRlKTsK
KyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0U3RyaW5naWZpZXJSZWFkT25seUF0dHJp
YnV0ZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAs
IHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0U3RyaW5naWZpZXJSZWFkT25seUF0dHJpYnV0
ZSk7CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RTdHJpbmdpZmll
clJlYWRPbmx5QXR0cmlidXRlLmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNo
YWJsZS1jb2RlIikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUi
KQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0
cmluZ2lmaWVyUmVhZFdyaXRlQXR0cmlidXRlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJSZWFkV3JpdGVB
dHRyaWJ1dGUuY3BwCShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJSZWFkV3JpdGVBdHRyaWJ1dGUuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC03Miw3ICs3Miw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlND
OjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBT
VEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3RTdHJpbmdpZmllclJlYWRX
cml0ZUF0dHJpYnV0ZVByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5P
YmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAg
fQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZt
LCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5
cGUpCiAgICAgewpAQCAtMjI3LDkgKzIyNyw5IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdFN0
cmluZ2lmaWVyUmVhZFcKICAgICAgICAgcmV0dXJuIHNwYWNlOwogICAgIHN0YXRpY19hc3NlcnQo
c3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0U3RyaW5n
aWZpZXJSZWFkV3JpdGVBdHRyaWJ1dGU+IHx8ICFKU1Rlc3RTdHJpbmdpZmllclJlYWRXcml0ZUF0
dHJpYnV0ZTo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jh
c2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RTdHJpbmdpZmllclJlYWRX
cml0ZUF0dHJpYnV0ZT4pCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFN0cmluZ2lm
aWVyUmVhZFdyaXRlQXR0cmlidXRlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQ
QUNFX0lOSVQodm0uaGVhcCwgKnZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSwgSlNU
ZXN0U3RyaW5naWZpZXJSZWFkV3JpdGVBdHRyaWJ1dGUpOworICAgICAgICBzcGFjZXMubV9zdWJz
cGFjZUZvclRlc3RTdHJpbmdpZmllclJlYWRXcml0ZUF0dHJpYnV0ZSA9IG1ha2VVbmlxdWU8SXNv
U3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVj
dEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RTdHJpbmdpZmllclJlYWRXcml0ZUF0dHJpYnV0ZSk7CiAg
ICAgZWxzZQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RTdHJpbmdpZmllclJlYWRX
cml0ZUF0dHJpYnV0ZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklU
KHZtLmhlYXAsICp2bS5jZWxsSGVhcENlbGxUeXBlLCBKU1Rlc3RTdHJpbmdpZmllclJlYWRXcml0
ZUF0dHJpYnV0ZSk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFN0cmluZ2lmaWVy
UmVhZFdyaXRlQXR0cmlidXRlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNF
X0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RTdHJpbmdpZmllclJl
YWRXcml0ZUF0dHJpYnV0ZSk7CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZv
clRlc3RTdHJpbmdpZmllclJlYWRXcml0ZUF0dHJpYnV0ZS5nZXQoKTsKIElHTk9SRV9XQVJOSU5H
U19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRv
bG9naWNhbC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RUeXBlZGVmcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFR5cGVkZWZzLmNwcAkocmV2aXNpb24gMjg2
MDk1KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFR5
cGVkZWZzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE2LDcgKzExNiw3IEBAIHB1YmxpYzoKICAg
ICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAg
ewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3RUeXBl
ZGVmc1Byb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFj
ZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0
YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAg
ewpAQCAtNzc4LDkgKzc3OCw5IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdFR5cGVkZWZzOjpz
dWJzcGEKICAgICAgICAgcmV0dXJuIHNwYWNlOwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19i
YXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0VHlwZWRlZnM+IHx8ICFK
U1Rlc3RUeXBlZGVmczo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3RleHByIChzdGQ6
OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RUeXBlZGVmcz4p
Ci0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFR5cGVkZWZzID0gbWFrZVVuaXF1ZTxJ
c29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmRlc3RydWN0aWJsZU9i
amVjdEhlYXBDZWxsVHlwZSwgSlNUZXN0VHlwZWRlZnMpOworICAgICAgICBzcGFjZXMubV9zdWJz
cGFjZUZvclRlc3RUeXBlZGVmcyA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFD
RV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBKU1Rl
c3RUeXBlZGVmcyk7CiAgICAgZWxzZQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RU
eXBlZGVmcyA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhl
YXAsICp2bS5jZWxsSGVhcENlbGxUeXBlLCBKU1Rlc3RUeXBlZGVmcyk7CisgICAgICAgIHNwYWNl
cy5tX3N1YnNwYWNlRm9yVGVzdFR5cGVkZWZzID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNP
X1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RUeXBl
ZGVmcyk7CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RUeXBlZGVm
cy5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJR05P
UkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1dvcmtlckdsb2JhbFNjb3BlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNX
b3JrZXJHbG9iYWxTY29wZS5jcHAJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1dvcmtlckdsb2JhbFNjb3BlLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMjQ5LDcgKzI0OSw3IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTV29ya2VyR2xv
YmFsU2NvcGU6OnMKICAgICBhdXRvJiBzcGFjZXMgPSBjbGllbnREYXRhLnN1YnNwYWNlcygpOwog
ICAgIGlmIChhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yV29ya2VyR2xvYmFsU2Nv
cGUuZ2V0KCkpCiAgICAgICAgIHJldHVybiBzcGFjZTsKLSAgICBzcGFjZXMubV9zdWJzcGFjZUZv
cldvcmtlckdsb2JhbFNjb3BlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNF
X0lOSVQodm0uaGVhcCwgKmNsaWVudERhdGEubV9oZWFwQ2VsbFR5cGVGb3JKU1dvcmtlckdsb2Jh
bFNjb3BlLCBKU1dvcmtlckdsb2JhbFNjb3BlKTsKKyAgICBzcGFjZXMubV9zdWJzcGFjZUZvcldv
cmtlckdsb2JhbFNjb3BlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lO
SVQodm0uaGVhcCwgY2xpZW50RGF0YS5tX2hlYXBDZWxsVHlwZUZvckpTV29ya2VyR2xvYmFsU2Nv
cGUsIEpTV29ya2VyR2xvYmFsU2NvcGUpOwogICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vi
c3BhY2VGb3JXb3JrZXJHbG9iYWxTY29wZS5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigi
dW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1j
b21wYXJlIikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1dvcmtlckdsb2JhbFNjb3BlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTV29ya2VyR2xvYmFsU2NvcGUuaAkocmV2aXNpb24gMjg2MDk1
KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTV29ya2VyR2xv
YmFsU2NvcGUuaAkod29ya2luZyBjb3B5KQpAQCAtODUsNyArODUsNyBAQCBwdWJsaWM6CiAgICAg
c3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsK
ICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNXb3JrZXJHbG9i
YWxTY29wZVByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RT
cGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAg
IHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6
OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAg
ICAgewpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTV29y
a2xldEdsb2JhbFNjb3BlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNXb3JrbGV0R2xvYmFsU2NvcGUuY3BwCShyZXZpc2lvbiAyODYw
OTUpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNXb3JrbGV0
R2xvYmFsU2NvcGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjMsNyArMTYzLDcgQEAgSlNDOjpJ
c29TdWJzcGFjZSogSlNXb3JrbGV0R2xvYmFsU2NvcGU6OgogICAgIGF1dG8mIHNwYWNlcyA9IGNs
aWVudERhdGEuc3Vic3BhY2VzKCk7CiAgICAgaWYgKGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vi
c3BhY2VGb3JXb3JrbGV0R2xvYmFsU2NvcGUuZ2V0KCkpCiAgICAgICAgIHJldHVybiBzcGFjZTsK
LSAgICBzcGFjZXMubV9zdWJzcGFjZUZvcldvcmtsZXRHbG9iYWxTY29wZSA9IG1ha2VVbmlxdWU8
SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICpjbGllbnREYXRhLm1faGVh
cENlbGxUeXBlRm9ySlNXb3JrbGV0R2xvYmFsU2NvcGUsIEpTV29ya2xldEdsb2JhbFNjb3BlKTsK
KyAgICBzcGFjZXMubV9zdWJzcGFjZUZvcldvcmtsZXRHbG9iYWxTY29wZSA9IG1ha2VVbmlxdWU8
SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIGNsaWVudERhdGEubV9oZWFw
Q2VsbFR5cGVGb3JKU1dvcmtsZXRHbG9iYWxTY29wZSwgSlNXb3JrbGV0R2xvYmFsU2NvcGUpOwog
ICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JXb3JrbGV0R2xvYmFsU2NvcGUu
Z2V0KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JF
X1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNXb3JrbGV0R2xvYmFsU2NvcGUuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNXb3Jr
bGV0R2xvYmFsU2NvcGUuaAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTV29ya2xldEdsb2JhbFNjb3BlLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTg1LDcgKzg1LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNl
KiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRf
SVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTV29ya2xldEdsb2JhbFNjb3BlUHJvdG90eXBlLCBCYXNl
KTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4g
JnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJl
KiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9icmlkZ2Uvb2JqYy9vYmpjX3J1bnRpbWUubW0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvYnJpZGdlL29iamMvb2JqY19ydW50aW1lLm1tCShyZXZpc2lvbiAyODYwOTUpCisrKyBT
b3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX3J1bnRpbWUubW0JKHdvcmtpbmcgY29weSkK
QEAgLTMzNSw3ICszMzUsNyBAQCBib29sIE9iamNGYWxsYmFja09iamVjdEltcDo6dG9Cb29sZWFu
KEpTCiBKU0M6Oklzb1N1YnNwYWNlKiBPYmpjRmFsbGJhY2tPYmplY3RJbXA6OnN1YnNwYWNlRm9y
SW1wbChKU0M6OlZNJiB2bSkKIHsKICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SlNDOjpJc29T
dWJzcGFjZVBlclZNPiBwZXJWTShbXSAoSlNDOjpWTSYgdm0pIHsKLSAgICAgICAgcmV0dXJuIElT
T19TVUJTUEFDRV9QQVJBTUVURVJTKCp2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUs
IE9iamNGYWxsYmFja09iamVjdEltcCk7CisgICAgICAgIHJldHVybiBJU09fU1VCU1BBQ0VfUEFS
QU1FVEVSUyh2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwgT2JqY0ZhbGxiYWNr
T2JqZWN0SW1wKTsKICAgICB9KTsKICAgICByZXR1cm4gJnBlclZNLmdldCgpLmZvclZNKHZtKTsK
IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyT3JXb3JrbGV0U2NyaXB0Q29u
dHJvbGxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyT3JX
b3JrbGV0U2NyaXB0Q29udHJvbGxlci5oCShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL1dvcmtlck9yV29ya2xldFNjcmlwdENvbnRyb2xsZXIuaAkod29ya2luZyBj
b3B5KQpAQCAtMzgsNiArMzgsNyBAQAogbmFtZXNwYWNlIEpTQyB7CiBjbGFzcyBFeGNlcHRpb247
CiBjbGFzcyBKU0dsb2JhbE9iamVjdDsKK2NsYXNzIEpTTW9kdWxlUmVjb3JkOwogY2xhc3MgVk07
CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL01vZGVsRWxlbWVudENv
bnRyb2xsZXJDb2NvYS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9D
b2NvYS9Nb2RlbEVsZW1lbnRDb250cm9sbGVyQ29jb2EubW0JKHJldmlzaW9uIDI4NjA5NSkKKysr
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL01vZGVsRWxlbWVudENvbnRyb2xsZXJDb2Nv
YS5tbQkod29ya2luZyBjb3B5KQpAQCAtMjMzLDYgKzIzMywxMCBAQCB2b2lkIE1vZGVsRWxlbWVu
dENvbnRyb2xsZXI6OmhhbmRsZU1vdXNlCiAKICNpZiBFTkFCTEUoQVJLSVRfSU5MSU5FX1BSRVZJ
RVcpCiAKKyN1bmRlZiBFTkFCTEVfQVJLSVRfSU5MSU5FX1BSRVZJRVdfQ0FNRVJBX1RSQU5TRk9S
TSAvLyBtbGFtIEhBQ0sKKyN1bmRlZiBFTkFCTEVfQVJLSVRfSU5MSU5FX1BSRVZJRVdfQU5JTUFU
SU9OU19DT05UUk9MIC8vIG1sYW0gSEFDSworI3VuZGVmIEVOQUJMRV9BUktJVF9JTkxJTkVfUFJF
VklFV19BVURJT19DT05UUk9MIC8vIG1sYW0gSEFDSworCiBzdGF0aWMgYm9vbCBwcmV2aWV3SGFz
Q2FtZXJhU3VwcG9ydChBU1ZJbmxpbmVQcmV2aWV3ICpwcmV2aWV3KQogewogI2lmIEVOQUJMRShB
UktJVF9JTkxJTkVfUFJFVklFV19DQU1FUkFfVFJBTlNGT1JNKQo=
</data>
<flag name="commit-queue"
          id="470067"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>444996</attachid>
            <date>2021-11-22 20:45:01 -0800</date>
            <delta_ts>2021-11-22 21:40:41 -0800</delta_ts>
            <desc>Another Win EWS test.</desc>
            <filename>bug-233240e2.patch</filename>
            <type>text/plain</type>
            <size>409207</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDI4NjA5NSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpA
QCAtNzYzLDYgKzc2Myw5IEBAIHNldChKYXZhU2NyaXB0Q29yZV9QUklWQVRFX0ZSQU1FV09SS19I
RUEKICAgICBoZWFwL0luY3JlbWVudGFsU3dlZXBlci5oCiAgICAgaGVhcC9Jc29DZWxsU2V0LmgK
ICAgICBoZWFwL0lzb0hlYXBDZWxsVHlwZS5oCisgICAgaGVhcC9Jc29IZWFwQ2VsbFR5cGVJbmxp
bmVzLmgKKyAgICBoZWFwL0lzb0lubGluZWRIZWFwQ2VsbFR5cGUuaAorICAgIGhlYXAvSXNvSW5s
aW5lZEhlYXBDZWxsVHlwZUlubGluZXMuaAogICAgIGhlYXAvSXNvU3Vic3BhY2UuaAogICAgIGhl
YXAvSXNvU3Vic3BhY2VJbmxpbmVzLmgKICAgICBoZWFwL0lzb1N1YnNwYWNlUGVyVk0uaApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2pzYy5jcHAJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qc2MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDI5LDcgKzE0MjksNyBAQCBwdWJs
aWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNzPgogICAg
IHN0YXRpYyBDb21wbGV0ZVN1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewotICAg
ICAgICByZXR1cm4gJnZtLmRlc3RydWN0aWJsZU9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4g
JnZtLmRlc3RydWN0aWJsZU9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAgSlNDTWVtb3J5Rm9v
dHByaW50KFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCkBAIC0xNzYyLDcgKzE3NjIsNyBA
QCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNz
PgogICAgIHN0YXRpYyBDb21wbGV0ZVN1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAg
ewotICAgICAgICByZXR1cm4gJnZtLmRlc3RydWN0aWJsZU9iamVjdFNwYWNlOworICAgICAgICBy
ZXR1cm4gJnZtLmRlc3RydWN0aWJsZU9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGlj
IFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
SmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTE5NTks
NyArMTk1OSw3IEBACiAJCUUzQzY5NEIzMjMwMjY4NzcwMDZGQkU0MiAvKiBXYXNtT1NSRW50cnlE
YXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFM0M2
OTRCMTIzMDI2ODczMDA2RkJFNDIgLyogV2FzbU9TUkVudHJ5RGF0YS5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUzQzczQTkxMjVCRkE3M0IwMEVG
RTMwMyAvKiBXYXNtU3RyZWFtaW5nUGxhbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRTNDNzNBOTAyNUJGQTczNDAwRUZFMzAzIC8qIFdhc21TdHJlYW1p
bmdQbGFuLmggKi87IH07CiAJCUUzQzc5Q0FCMURCOUE0REMwMEQxRUNBNCAvKiBET01KSVRFZmZl
Y3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzQzc5
Q0FBMURCOUE0RDYwMEQxRUNBNCAvKiBET01KSVRFZmZlY3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQlFM0M4RUQ0MzIzQTFEQkNCMDAxMzE5NTgg
LyogSXNvSW5saW5lZEhlYXBDZWxsVHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRTNDOEVENDIyM0ExREJDNTAwMTMxOTU4IC8qIElzb0lubGluZWRI
ZWFwQ2VsbFR5cGUuaCAqLzsgfTsKKwkJRTNDOEVENDMyM0ExREJDQjAwMTMxOTU4IC8qIElzb0lu
bGluZWRIZWFwQ2VsbFR5cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEUzQzhFRDQyMjNBMURCQzUwMDEzMTk1OCAvKiBJc29JbmxpbmVkSGVhcENlbGxU
eXBlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
RTNDQTNBNEUyNTI3QUIyRjAwNDgwMkJGIC8qIEpJVE9wZXJhdGlvbkxpc3QuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzQ0EzQTRDMjUyN0FCMkYwMDQ4
MDJCRiAvKiBKSVRPcGVyYXRpb25MaXN0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTNEMjM5QzkxQjgyOUMxQzAwQkJFRjY3IC8qIEpTTW9kdWxl
RW52aXJvbm1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEUzRDIzOUM3MUI4MjlDMUMwMEJCRUY2NyAvKiBKU01vZHVsZUVudmlyb25tZW50LmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTNEMzUxNUYy
NDFCODlENzAwOERDMTZFIC8qIE1hcmtlZEpTVmFsdWVSZWZBcnJheS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTNEMzUxNUQyNDFCODlDRTAwOERDMTZF
IC8qIE1hcmtlZEpTVmFsdWVSZWZBcnJheS5oICovOyB9OwpAQCAtMjA0MSw2ICsyMDQxLDggQEAK
IAkJRkU2M0RENTQxRUE5QjYxRTAwMTAzQTY5IC8qIFByaW50ZXIuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFNjNERDUzMUVBOUI2MEUwMDEwM0E2OSAv
KiBQcmludGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJRkU2NDg3MkUyMTQxRDA0ODAwQUIwRDNFIC8qIE9wY29kZUlubGluZXMuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFNjQ4NzJEMjE0MUQwNDgw
MEFCMEQzRSAvKiBPcGNvZGVJbmxpbmVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJRkU2NDkxMzcxRDc4RjAxRDAwQTY5NEQ0IC8qIEV4Y2VwdGlv
blNjb3BlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBG
RTY0OTEzNjFENzhGMDEzMDBBNjk0RDQgLyogRXhjZXB0aW9uU2NvcGUuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlGRTY1QjE1MTI3NDg2MDFGMDBE
QjVCMTYgLyogSXNvSW5saW5lZEhlYXBDZWxsVHlwZUlubGluZXMuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFNjVCMTUwMjc0ODYwMUYwMERCNUIxNiAv
KiBJc29JbmxpbmVkSGVhcENlbGxUeXBlSW5saW5lcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUZFNjVCMTU1Mjc0OTNGMTQwMERCNUIxNiAvKiBJ
c29IZWFwQ2VsbFR5cGVJbmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBGRTY1QjE1NDI3NDkzRjE0MDBEQjVCMTYgLyogSXNvSGVhcENlbGxUeXBl
SW5saW5lcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCUZFNjhDNjM3MUI5MERFMDQwMDQyQkNCMyAvKiBNYWNyb0Fzc2VtYmxlclByaW50ZXIuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFNjhDNjM2MUI5
MERERDkwMDQyQkNCMyAvKiBNYWNyb0Fzc2VtYmxlclByaW50ZXIuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlGRTZGNTZERTFFNjRFQUQ2MDBEMTc4
MDEgLyogVk1UcmFwcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRkU2RjU2REQxRTY0RTkyMDAwRDE3ODAxIC8qIFZNVHJhcHMuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlGRTc0OTdFNjIwOTAwMUIxMDAw
MzU2NUIgLyogSlNDUHRyVGFnLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBGRTc0OTdFNTIwOTAwMUIwMDAwMzU2NUIgLyogSlNDUHRyVGFnLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTU0OTksNiArNTUw
MSw4IEBACiAJCUZFNjQ4NzJEMjE0MUQwNDgwMEFCMEQzRSAvKiBPcGNvZGVJbmxpbmVzLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE9wY29kZUlubGluZXMuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkU2NDkxMzYxRDc4RjAxMzAwQTY5NEQ0IC8qIEV4Y2VwdGlv
blNjb3BlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEV4Y2VwdGlvblNjb3Bl
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFNjQ5MTM4MUQ3OEYzQTMwMEE2OTRE
NCAvKiBFeGNlcHRpb25TY29wZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBFeGNlcHRpb25TY29wZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZF
NjVCMTUwMjc0ODYwMUYwMERCNUIxNiAvKiBJc29JbmxpbmVkSGVhcENlbGxUeXBlSW5saW5lcy5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJc29JbmxpbmVkSGVhcENlbGxUeXBl
SW5saW5lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGRTY1QjE1NDI3NDkzRjE0
MDBEQjVCMTYgLyogSXNvSGVhcENlbGxUeXBlSW5saW5lcy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBJc29IZWFwQ2VsbFR5cGVJbmxpbmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUZFNjhDNjM1MUI5MERERDkwMDQyQkNCMyAvKiBNYWNyb0Fzc2VtYmxlclBy
aW50ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWFjcm9Bc3Nl
bWJsZXJQcmludGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkU2OEM2MzYx
QjkwREREOTAwNDJCQ0IzIC8qIE1hY3JvQXNzZW1ibGVyUHJpbnRlci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBNYWNyb0Fzc2VtYmxlclByaW50ZXIuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJRkU2RjU2REMxRTY0RTkyMDAwRDE3ODAxIC8qIFZNVHJhcHMuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVk1UcmFwcy5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC02NjAyLDcgKzY2MDYsOSBAQAogCQkJCTBGQjQ2NzdC
MUZEREE2RDgwMDNGQ0IwOSAvKiBJc29DZWxsU2V0SW5saW5lcy5oICovLAogCQkJCUUzQzhFRDQx
MjNBMURCQzQwMDEzMTk1OCAvKiBJc29IZWFwQ2VsbFR5cGUuY3BwICovLAogCQkJCUUzQkYxQkFE
MjM4QUFFRDEwMDNBMUMyQiAvKiBJc29IZWFwQ2VsbFR5cGUuaCAqLywKKwkJCQlGRTY1QjE1NDI3
NDkzRjE0MDBEQjVCMTYgLyogSXNvSGVhcENlbGxUeXBlSW5saW5lcy5oICovLAogCQkJCUUzQzhF
RDQyMjNBMURCQzUwMDEzMTk1OCAvKiBJc29JbmxpbmVkSGVhcENlbGxUeXBlLmggKi8sCisJCQkJ
RkU2NUIxNTAyNzQ4NjAxRjAwREI1QjE2IC8qIElzb0lubGluZWRIZWFwQ2VsbFR5cGVJbmxpbmVz
LmggKi8sCiAJCQkJMEZEQ0UxMkMxRkFGQjRERTAwNkYzOTAxIC8qIElzb1N1YnNwYWNlLmNwcCAq
LywKIAkJCQkwRkRDRTEyQjFGQUZCNERFMDA2RjM5MDEgLyogSXNvU3Vic3BhY2UuaCAqLywKIAkJ
CQkwRkQyRkQ5MjIwQjUyQkRDMDBGMDk0NDEgLyogSXNvU3Vic3BhY2VJbmxpbmVzLmggKi8sCkBA
IC0xMDI0MCw2ICsxMDI0Niw3IEBACiAJCQkJQTEyNTg0NkUxQjQ1QTM2MDAwQ0M3RjZDIC8qIElu
dGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvci5sdXQuaCBpbiBIZWFkZXJzICovLAogCQkJCUUzMjMx
MTY5MjRBMURDMzUwMDY5M0RBNSAvKiBJbnRsTnVtYmVyRm9ybWF0SW5saW5lcy5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQTFENzkzMDExQjQzODY0QjAwNDUxNkY1IC8qIEludGxOdW1iZXJGb3JtYXRQ
cm90b3R5cGUuaCBpbiBIZWFkZXJzICovLAorCQkJCUZFNjVCMTU1Mjc0OTNGMTQwMERCNUIxNiAv
KiBJc29IZWFwQ2VsbFR5cGVJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQlBMTI1ODQ2RjFC
NDVBMzYwMDBDQzdGNkMgLyogSW50bE51bWJlckZvcm1hdFByb3RvdHlwZS5sdXQuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUExMkJCRkYyMUIwNDRBOEIwMDY2NEI2OSAvKiBJbnRsT2JqZWN0LmggaW4g
SGVhZGVycyAqLywKIAkJCQk3MDhFQkUyNDFDRThGMzU4MDA0NTMxNDYgLyogSW50bE9iamVjdElu
bGluZXMuaCBpbiBIZWFkZXJzICovLApAQCAtMTA0MTMsNiArMTA0MjAsNyBAQAogCQkJCUUzM0Y1
MDgxMUI4NDI5QTQwMDQxMzg1NiAvKiBKU0ludGVybmFsUHJvbWlzZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJRTMzRjUwNzkxQjg0MjI1NzAwNDEzODU2IC8qIEpTSW50ZXJuYWxQcm9taXNlQ29uc3Ry
dWN0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUUzM0Y1MDg3MUI4NDQ5RUYwMDQxMzg1NiAvKiBK
U0ludGVybmFsUHJvbWlzZUNvbnN0cnVjdG9yLmx1dC5oIGluIEhlYWRlcnMgKi8sCisJCQkJRkU2
NUIxNTEyNzQ4NjAxRjAwREI1QjE2IC8qIElzb0lubGluZWRIZWFwQ2VsbFR5cGVJbmxpbmVzLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlFMzNGNTA3NTFCODQyMUMwMDA0MTM4NTYgLyogSlNJbnRlcm5h
bFByb21pc2VQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1MDNGQTFFMTg4RTBGQjAw
MDExMEYxNCAvKiBKU0phdmFTY3JpcHRDYWxsRnJhbWVQcm90b3R5cGUuaCBpbiBIZWFkZXJzICov
LAogCQkJCUJDMThDNDE2MEUxNkY1Q0QwMEIzNDQ2MCAvKiBKU0xleGljYWxFbnZpcm9ubWVudC5o
IGluIEhlYWRlcnMgKi8sCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNj
ZXNzQ2FzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0FjY2Vzc0Nhc2UuY3BwCShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIyNzcsNyArMjI3
Nyw3IEBAIHZvaWQgQWNjZXNzQ2FzZTo6Z2VuZXJhdGVJbXBsKEFjY2Vzc0dlbmUKICAgICAgICAg
ICAgIHNpemVfdCBuZXdTaXplID0gbmV3U3RydWN0dXJlKCktPm91dE9mTGluZUNhcGFjaXR5KCkg
KiBzaXplb2YoSlNWYWx1ZSk7CiAKICAgICAgICAgICAgIGlmIChhbGxvY2F0aW5nSW5saW5lKSB7
Ci0gICAgICAgICAgICAgICAgQWxsb2NhdG9yIGFsbG9jYXRvciA9IHZtLmpzVmFsdWVHaWdhY2Fn
ZUF1eGlsaWFyeVNwYWNlLmFsbG9jYXRvckZvcihuZXdTaXplLCBBbGxvY2F0b3JGb3JNb2RlOjpB
bGxvY2F0b3JJZkV4aXN0cyk7CisgICAgICAgICAgICAgICAgQWxsb2NhdG9yIGFsbG9jYXRvciA9
IHZtLmpzVmFsdWVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlKCkuYWxsb2NhdG9yRm9yKG5ld1NpemUs
IEFsbG9jYXRvckZvck1vZGU6OkFsbG9jYXRvcklmRXhpc3RzKTsKIAogICAgICAgICAgICAgICAg
IGppdC5lbWl0QWxsb2NhdGUoc2NyYXRjaEdQUiwgSklUQWxsb2NhdG9yOjpjb25zdGFudChhbGxv
Y2F0b3IpLCBzY3JhdGNoR1BSMiwgc2NyYXRjaEdQUjMsIHNsb3dQYXRoKTsKICAgICAgICAgICAg
ICAgICBqaXQuYWRkUHRyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKG5ld1NpemUgKyBzaXpl
b2YoSW5kZXhpbmdIZWFkZXIpKSwgc2NyYXRjaEdQUik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvREZHRXhpdFByb2ZpbGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvREZHRXhpdFByb2ZpbGUuaAkocmV2aXNpb24gMjg2MDk1KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0RGR0V4aXRQcm9maWxlLmgJKHdvcmtp
bmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDExLTIwMTkg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExLTIw
MjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCkBAIC0zNCw3ICszNCwxMSBAQAogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAj
aW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCi1uYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7
CituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgVW5saW5rZWRDb2RlQmxvY2s7CisKK25hbWVzcGFj
ZSBERkcgewogCiBjbGFzcyBGcmVxdWVudEV4aXRTaXRlIHsKIHB1YmxpYzoKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FdmFsQ29kZUJsb2NrLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0V2YWxDb2RlQmxvY2suaAkocmV2aXNpb24g
Mjg2MDk1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0V2YWxDb2RlQmxvY2su
aAkod29ya2luZyBjb3B5KQpAQCAtNDEsNyArNDEsNyBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8
dHlwZW5hbWUsIFN1YnNwYWNlQWNjZXNzPgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3Bh
Y2VGb3IoVk0mIHZtKQogICAgIHsKLSAgICAgICAgcmV0dXJuICZ2bS5jb2RlQmxvY2tTcGFjZS5z
cGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5jb2RlQmxvY2tTcGFjZSgpLnNwYWNlOwogICAgIH0K
IAogICAgIHN0YXRpYyBFdmFsQ29kZUJsb2NrKiBjcmVhdGUoVk0mIHZtLCBDb3B5UGFyc2VkQmxv
Y2tUYWcsIEV2YWxDb2RlQmxvY2smIG90aGVyKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0V4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2UuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlLmNw
cAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0V4
ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04MSw3ICs4MSw3
IEBAIHZvaWQgRXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZTo6dmlzaXRDaGkKICAgICAgICAgdmlz
aXRvci5hcHBlbmRVbmJhcnJpZXJlZChjb2RlQmxvY2spOwogICAgIAogICAgIGlmICghdmlzaXRv
ci5pc01hcmtlZChjb2RlQmxvY2spKQotICAgICAgICB2bS5leGVjdXRhYmxlVG9Db2RlQmxvY2tF
ZGdlc1dpdGhGaW5hbGl6ZXJzLmFkZChlZGdlKTsKKyAgICAgICAgdm0uZXhlY3V0YWJsZVRvQ29k
ZUJsb2NrRWRnZXNXaXRoRmluYWxpemVycygpLmFkZChlZGdlKTsKICAgICAKICAgICBpZiAoSklU
Q29kZTo6aXNPcHRpbWl6aW5nSklUKGNvZGVCbG9jay0+aml0VHlwZSgpKSkgewogICAgICAgICAv
LyBJZiB3ZSBqZXR0aXNvbiBvdXJzZWx2ZXMgd2UnbGwgaW5zdGFsbCBvdXIgYWx0ZXJuYXRpdmUs
IHNvIG1ha2Ugc3VyZSB0aGF0IGl0CkBAIC0xMTQsNyArMTE0LDcgQEAgdm9pZCBFeGVjdXRhYmxl
VG9Db2RlQmxvY2tFZGdlOjp2aXNpdENoaQogICAgIC8vIG5vdCB5ZXQgbWFya2VkIGJlY2F1c2Ug
aXQgd2Vha2x5IGRlcGVuZHMgb24gYSBzdHJ1Y3R1cmUgdGhhdCB3ZSBkaWQgbm90IHlldCBtYXJr
LCB0aGVuIHdlCiAgICAgLy8gd2lsbCBrZWVwIGZpeHBvaW50aW5nIHVudGlsIHRoZSBlbmQuCiAg
ICAgdmlzaXRvci5hcHBlbmRVbmJhcnJpZXJlZChjb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKTsK
LSAgICB2bS5leGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlc1dpdGhDb25zdHJhaW50cy5hZGQoZWRn
ZSk7CisgICAgdm0uZXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZXNXaXRoQ29uc3RyYWludHMoKS5h
ZGQoZWRnZSk7CiAgICAgZWRnZS0+cnVuQ29uc3RyYWludChsb2NrZXIsIHZtLCB2aXNpdG9yKTsK
IH0KIApAQCAtMTQzLDggKzE0Myw4IEBAIHZvaWQgRXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZTo6
ZmluYWxpemUKICAgICAgICAgbV9jb2RlQmxvY2suY2xlYXIoKTsKICAgICB9CiAgICAgCi0gICAg
dm0uZXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZXNXaXRoRmluYWxpemVycy5yZW1vdmUodGhpcyk7
Ci0gICAgdm0uZXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZXNXaXRoQ29uc3RyYWludHMucmVtb3Zl
KHRoaXMpOworICAgIHZtLmV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2VzV2l0aEZpbmFsaXplcnMo
KS5yZW1vdmUodGhpcyk7CisgICAgdm0uZXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZXNXaXRoQ29u
c3RyYWludHMoKS5yZW1vdmUodGhpcyk7CiB9CiAKIGlubGluZSB2b2lkIEV4ZWN1dGFibGVUb0Nv
ZGVCbG9ja0VkZ2U6OmFjdGl2YXRlKCkKQEAgLTIwMSw3ICsyMDEsNyBAQCB2b2lkIEV4ZWN1dGFi
bGVUb0NvZGVCbG9ja0VkZ2U6OnJ1bkNvbnN0CiAgICAgY29kZUJsb2NrLT5kZXRlcm1pbmVMaXZl
bmVzcyhsb2NrZXIsIHZpc2l0b3IpOwogCiAgICAgaWYgKHZpc2l0b3IuaXNNYXJrZWQoY29kZUJs
b2NrKSkKLSAgICAgICAgdm0uZXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZXNXaXRoQ29uc3RyYWlu
dHMucmVtb3ZlKHRoaXMpOworICAgICAgICB2bS5leGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlc1dp
dGhDb25zdHJhaW50cygpLnJlbW92ZSh0aGlzKTsKIH0KIAogdGVtcGxhdGUgdm9pZCBFeGVjdXRh
YmxlVG9Db2RlQmxvY2tFZGdlOjpydW5Db25zdHJhaW50KGNvbnN0IENvbmN1cnJlbnRKU0xvY2tl
ciYsIFZNJiwgQWJzdHJhY3RTbG90VmlzaXRvciYpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0V4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2UuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZS5o
CShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhl
Y3V0YWJsZVRvQ29kZUJsb2NrRWRnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00Myw3ICs0Myw3IEBA
IHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vic3BhY2VBY2Nlc3M+
CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewotICAg
ICAgICByZXR1cm4gJnZtLmV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2VTcGFjZTsKKyAgICAgICAg
cmV0dXJuICZ2bS5leGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlU3BhY2UoKTsKICAgICB9CiAKICAg
ICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mLCBKU0dsb2JhbE9iamVjdCos
IEpTVmFsdWUgcHJvdG90eXBlKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9GdW5jdGlvbkNvZGVCbG9jay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9GdW5jdGlvbkNvZGVCbG9jay5oCShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRnVuY3Rpb25Db2RlQmxvY2suaAkod29ya2luZyBj
b3B5KQpAQCAtNDIsNyArNDIsNyBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUsIFN1
YnNwYWNlQWNjZXNzPgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZt
KQogICAgIHsKLSAgICAgICAgcmV0dXJuICZ2bS5jb2RlQmxvY2tTcGFjZS5zcGFjZTsKKyAgICAg
ICAgcmV0dXJuICZ2bS5jb2RlQmxvY2tTcGFjZSgpLnNwYWNlOwogICAgIH0KIAogICAgIHN0YXRp
YyBGdW5jdGlvbkNvZGVCbG9jayogY3JlYXRlKFZNJiB2bSwgQ29weVBhcnNlZEJsb2NrVGFnLCBG
dW5jdGlvbkNvZGVCbG9jayYgb3RoZXIpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvTW9kdWxlUHJvZ3JhbUNvZGVCbG9jay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9Nb2R1bGVQcm9ncmFtQ29kZUJsb2NrLmgJKHJldmlzaW9uIDI4
NjA5NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Nb2R1bGVQcm9ncmFtQ29k
ZUJsb2NrLmgJKHdvcmtpbmcgY29weSkKQEAgLTQyLDcgKzQyLDcgQEAgcHVibGljOgogICAgIHRl
bXBsYXRlPHR5cGVuYW1lLCBTdWJzcGFjZUFjY2Vzcz4KICAgICBzdGF0aWMgSXNvU3Vic3BhY2Uq
IHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7Ci0gICAgICAgIHJldHVybiAmdm0uY29kZUJsb2Nr
U3BhY2Uuc3BhY2U7CisgICAgICAgIHJldHVybiAmdm0uY29kZUJsb2NrU3BhY2UoKS5zcGFjZTsK
ICAgICB9CiAKICAgICBzdGF0aWMgTW9kdWxlUHJvZ3JhbUNvZGVCbG9jayogY3JlYXRlKFZNJiB2
bSwgQ29weVBhcnNlZEJsb2NrVGFnLCBNb2R1bGVQcm9ncmFtQ29kZUJsb2NrJiBvdGhlcikKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qcm9ncmFtQ29kZUJsb2NrLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Byb2dyYW1Db2RlQmxv
Y2suaAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1Byb2dyYW1Db2RlQmxvY2suaAkod29ya2luZyBjb3B5KQpAQCAtNDIsNyArNDIsNyBAQCBwdWJs
aWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUsIFN1YnNwYWNlQWNjZXNzPgogICAgIHN0YXRpYyBJ
c29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKLSAgICAgICAgcmV0dXJuICZ2
bS5jb2RlQmxvY2tTcGFjZS5zcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5jb2RlQmxvY2tTcGFj
ZSgpLnNwYWNlOwogICAgIH0KIAogICAgIHN0YXRpYyBQcm9ncmFtQ29kZUJsb2NrKiBjcmVhdGUo
Vk0mIHZtLCBDb3B5UGFyc2VkQmxvY2tUYWcsIFByb2dyYW1Db2RlQmxvY2smIG90aGVyKQpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1JlcGF0Y2guaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUmVwYXRjaC5oCShyZXZpc2lvbiAyODYw
OTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUmVwYXRjaC5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMS0yMDIwIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMS0yMDIx
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtMzEsNiArMzEsNyBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAorY2xhc3MgQ2Fs
bExpbmtJbmZvOwogY2xhc3MgU3RydWN0dXJlU3R1YkluZm87CiAKIGVudW0gY2xhc3MgR2V0QnlL
aW5kIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0
aW9uRXhlY3V0YWJsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmNwcAkocmV2aXNpb24gMjg2MDk1KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRh
YmxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjUxLDcgKzI1MSw3IEBAIFVubGlua2VkRnVuY3Rp
b25Db2RlQmxvY2sqIFVubGlua2VkRnVuY3QKICAgICAgICAgbV91bmxpbmtlZENvZGVCbG9ja0Zv
ckNvbnN0cnVjdC5zZXQodm0sIHRoaXMsIHJlc3VsdCk7CiAgICAgICAgIGJyZWFrOwogICAgIH0K
LSAgICB2bS51bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZVNwYWNlLnNldC5hZGQodGhpcyk7Cisg
ICAgdm0udW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGVTcGFjZSgpLnNldC5hZGQodGhpcyk7CiAg
ICAgcmV0dXJuIHJlc3VsdDsKIH0KIApAQCAtMzEwLDcgKzMxMCw3IEBAIHZvaWQgVW5saW5rZWRG
dW5jdGlvbkV4ZWN1dGFibGU6OmZpbmFsaXoKICAgICAgICAgY2xlYXJJZkRlYWQobV91bmxpbmtl
ZENvZGVCbG9ja0ZvckNhbGwpOwogICAgICAgICBjbGVhcklmRGVhZChtX3VubGlua2VkQ29kZUJs
b2NrRm9yQ29uc3RydWN0KTsKICAgICAgICAgaWYgKGlzQ2xlYXJlZCAmJiAhaXNTdGlsbFZhbGlk
KQotICAgICAgICAgICAgdm0udW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGVTcGFjZS5zZXQucmVt
b3ZlKHRoaXMpOworICAgICAgICAgICAgdm0udW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGVTcGFj
ZSgpLnNldC5yZW1vdmUodGhpcyk7CiAgICAgfQogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFi
bGUuaAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQyLDEzICs0
MiwxNCBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAorY2xhc3MgQ2FjaGVkRnVuY3Rpb25FeGVjdXRh
YmxlOwogY2xhc3MgRGVjb2RlcjsKLWNsYXNzIEZ1bmN0aW9uTWV0YWRhdGFOb2RlOwogY2xhc3Mg
RnVuY3Rpb25FeGVjdXRhYmxlOworY2xhc3MgRnVuY3Rpb25NZXRhZGF0YU5vZGU7CiBjbGFzcyBQ
YXJzZXJFcnJvcjsKK2NsYXNzIFNjcmlwdEV4ZWN1dGFibGU7CiBjbGFzcyBTb3VyY2VQcm92aWRl
cjsKIGNsYXNzIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2s7Ci1jbGFzcyBDYWNoZWRGdW5jdGlv
bkV4ZWN1dGFibGU7CiAKIGVudW0gVW5saW5rZWRGdW5jdGlvbktpbmQgewogICAgIFVubGlua2Vk
Tm9ybWFsRnVuY3Rpb24sCkBAIC02Nyw3ICs2OCw3IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBDZWxsVHlwZSwgU3Vic3BhY2VBY2Nlc3M+CiAgICAgc3RhdGljIElzb1N1YnNwYWNl
KiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewotICAgICAgICByZXR1cm4gJnZtLnVubGlua2Vk
RnVuY3Rpb25FeGVjdXRhYmxlU3BhY2Uuc3BhY2U7CisgICAgICAgIHJldHVybiAmdm0udW5saW5r
ZWRGdW5jdGlvbkV4ZWN1dGFibGVTcGFjZSgpLnNwYWNlOwogICAgIH0KIAogICAgIHN0YXRpYyBV
bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogY3JlYXRlKFZNJiB2bSwgY29uc3QgU291cmNlQ29k
ZSYgc291cmNlLCBGdW5jdGlvbk1ldGFkYXRhTm9kZSogbm9kZSwgVW5saW5rZWRGdW5jdGlvbktp
bmQgdW5saW5rZWRGdW5jdGlvbktpbmQsIENvbnN0cnVjdEFiaWxpdHkgY29uc3RydWN0QWJpbGl0
eSwgSlNQYXJzZXJTY3JpcHRNb2RlIHNjcmlwdE1vZGUsIFJlZlB0cjxURFpFbnZpcm9ubWVudExp
bms+IHBhcmVudFNjb3BlVERaVmFyaWFibGVzLCBzdGQ6Om9wdGlvbmFsPFByaXZhdGVOYW1lRW52
aXJvbm1lbnQ+IHBhcmVudFByaXZhdGVOYW1lRW52aXJvbm1lbnQsIERlcml2ZWRDb250ZXh0VHlw
ZSBkZXJpdmVkQ29udGV4dFR5cGUsIE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyIG5lZWRzQ2xh
c3NGaWVsZEluaXRpYWxpemVyLCBQcml2YXRlQnJhbmRSZXF1aXJlbWVudCBwcml2YXRlQnJhbmRS
ZXF1aXJlbWVudCwgYm9vbCBpc0J1aWx0aW5EZWZhdWx0Q2xhc3NDb25zdHJ1Y3RvciA9IGZhbHNl
KQpAQCAtMTMxLDcgKzEzMiw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIG1fdW5saW5rZWRD
b2RlQmxvY2tGb3JDYWxsLmNsZWFyKCk7CiAgICAgICAgIG1fdW5saW5rZWRDb2RlQmxvY2tGb3JD
b25zdHJ1Y3QuY2xlYXIoKTsKLSAgICAgICAgdm0udW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGVT
cGFjZS5zZXQucmVtb3ZlKHRoaXMpOworICAgICAgICB2bS51bmxpbmtlZEZ1bmN0aW9uRXhlY3V0
YWJsZVNwYWNlKCkuc2V0LnJlbW92ZSh0aGlzKTsKICAgICB9CiAKICAgICB2b2lkIHJlY29yZFBh
cnNlKENvZGVGZWF0dXJlcyBmZWF0dXJlcywgTGV4aWNhbFNjb3BlRmVhdHVyZXMgbGV4aWNhbFNj
b3BlRmVhdHVyZXMsIGJvb2wgaGFzQ2FwdHVyZWRWYXJpYWJsZXMpCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAkocmV2aXNpb24gMjg2
MDk1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTEyMCw3ICsxMjAsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpl
bWl0QWxsb2NhdGVSYXdPYmplCiAKICAgICBWTSYgdm0gPSB0aGlzLT52bSgpOwogICAgIGlmIChz
aXplKSB7Ci0gICAgICAgIGlmIChBbGxvY2F0b3IgYWxsb2NhdG9yID0gdm0uanNWYWx1ZUdpZ2Fj
YWdlQXV4aWxpYXJ5U3BhY2UuYWxsb2NhdG9yRm9yTm9uVmlydHVhbChzaXplLCBBbGxvY2F0b3JG
b3JNb2RlOjpBbGxvY2F0b3JJZkV4aXN0cykpIHsKKyAgICAgICAgaWYgKEFsbG9jYXRvciBhbGxv
Y2F0b3IgPSB2bS5qc1ZhbHVlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZSgpLmFsbG9jYXRvckZvck5v
blZpcnR1YWwoc2l6ZSwgQWxsb2NhdG9yRm9yTW9kZTo6QWxsb2NhdG9ySWZFeGlzdHMpKSB7CiAg
ICAgICAgICAgICBtX2ppdC5lbWl0QWxsb2NhdGUoc3RvcmFnZUdQUiwgSklUQWxsb2NhdG9yOjpj
b25zdGFudChhbGxvY2F0b3IpLCBzY3JhdGNoR1BSLCBzY3JhdGNoMkdQUiwgc2xvd0Nhc2VzKTsK
ICAgICAgICAgICAgIAogICAgICAgICAgICAgbV9qaXQuYWRkUHRyKApAQCAtMTA3MzgsNyArMTA3
MzgsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQWxsb2NhdGVQcm9wCiAgICAgCiAg
ICAgc2l6ZV90IHNpemUgPSBpbml0aWFsT3V0T2ZMaW5lQ2FwYWNpdHkgKiBzaXplb2YoSlNWYWx1
ZSk7CiAKLSAgICBBbGxvY2F0b3IgYWxsb2NhdG9yID0gdm0oKS5qc1ZhbHVlR2lnYWNhZ2VBdXhp
bGlhcnlTcGFjZS5hbGxvY2F0b3JGb3JOb25WaXJ0dWFsKHNpemUsIEFsbG9jYXRvckZvck1vZGU6
OkFsbG9jYXRvcklmRXhpc3RzKTsKKyAgICBBbGxvY2F0b3IgYWxsb2NhdG9yID0gdm0oKS5qc1Zh
bHVlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZSgpLmFsbG9jYXRvckZvck5vblZpcnR1YWwoc2l6ZSwg
QWxsb2NhdG9yRm9yTW9kZTo6QWxsb2NhdG9ySWZFeGlzdHMpOwogCiAgICAgaWYgKCFhbGxvY2F0
b3IgfHwgbm9kZS0+dHJhbnNpdGlvbigpLT5wcmV2aW91cy0+Y291bGRIYXZlSW5kZXhpbmdIZWFk
ZXIoKSkgewogICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUtPmNo
aWxkMSgpKTsKQEAgLTEwNzgyLDcgKzEwNzgyLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZVJlYWxsb2NhdGVQcgogICAgIHNpemVfdCBuZXdTaXplID0gb2xkU2l6ZSAqIG91dE9mTGlu
ZUdyb3d0aEZhY3RvcjsKICAgICBBU1NFUlQobmV3U2l6ZSA9PSBub2RlLT50cmFuc2l0aW9uKCkt
Pm5leHQtPm91dE9mTGluZUNhcGFjaXR5KCkgKiBzaXplb2YoSlNWYWx1ZSkpOwogICAgIAotICAg
IEFsbG9jYXRvciBhbGxvY2F0b3IgPSB2bSgpLmpzVmFsdWVHaWdhY2FnZUF1eGlsaWFyeVNwYWNl
LmFsbG9jYXRvckZvck5vblZpcnR1YWwobmV3U2l6ZSwgQWxsb2NhdG9yRm9yTW9kZTo6QWxsb2Nh
dG9ySWZFeGlzdHMpOworICAgIEFsbG9jYXRvciBhbGxvY2F0b3IgPSB2bSgpLmpzVmFsdWVHaWdh
Y2FnZUF1eGlsaWFyeVNwYWNlKCkuYWxsb2NhdG9yRm9yTm9uVmlydHVhbChuZXdTaXplLCBBbGxv
Y2F0b3JGb3JNb2RlOjpBbGxvY2F0b3JJZkV4aXN0cyk7CiAKICAgICBpZiAoIWFsbG9jYXRvciB8
fCBub2RlLT50cmFuc2l0aW9uKCktPnByZXZpb3VzLT5jb3VsZEhhdmVJbmRleGluZ0hlYWRlcigp
KSB7CiAgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGJhc2UodGhpcywgbm9kZS0+Y2hpbGQx
KCkpOwpAQCAtMTE0OTksNyArMTE0OTksNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0TmV3
VHlwZWRBcnJheVdpCiAgICAgICAgIG1faml0LmFuZDMyKFRydXN0ZWRJbW0zMih+NyksIHNjcmF0
Y2hHUFIpOwogICAgIH0KICAgICBtX2ppdC5lbWl0QWxsb2NhdGVWYXJpYWJsZVNpemVkKAotICAg
ICAgICBzdG9yYWdlR1BSLCB2bSgpLnByaW1pdGl2ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UsIHNj
cmF0Y2hHUFIsIHNjcmF0Y2hHUFIsCisgICAgICAgIHN0b3JhZ2VHUFIsIHZtKCkucHJpbWl0aXZl
R2lnYWNhZ2VBdXhpbGlhcnlTcGFjZSgpLCBzY3JhdGNoR1BSLCBzY3JhdGNoR1BSLAogICAgICAg
ICBzY3JhdGNoR1BSMiwgc2xvd0Nhc2VzKTsKICAgICAKICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVt
cCBkb25lID0gbV9qaXQuYnJhbmNoVGVzdDMyKE1hY3JvQXNzZW1ibGVyOjpaZXJvLCBzaXplR1BS
KTsKQEAgLTEzNzAwLDcgKzEzNzAwLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdEFsbG9j
YXRlQnV0dGVyZgogICAgIGRpZE5vdE92ZXJmbG93LmxpbmsoJm1faml0KTsKICNlbmRpZgogICAg
IG1faml0LmVtaXRBbGxvY2F0ZVZhcmlhYmxlU2l6ZWQoCi0gICAgICAgIHN0b3JhZ2VSZXN1bHRH
UFIsIHZtKCkuanNWYWx1ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UsIHNjcmF0Y2gyLCBzY3JhdGNo
MSwgc2NyYXRjaDMsIHNsb3dDYXNlcyk7CisgICAgICAgIHN0b3JhZ2VSZXN1bHRHUFIsIHZtKCku
anNWYWx1ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UoKSwgc2NyYXRjaDIsIHNjcmF0Y2gxLCBzY3Jh
dGNoMywgc2xvd0Nhc2VzKTsKICAgICBtX2ppdC5hZGRQdHIoVHJ1c3RlZEltbTMyKHNpemVvZihJ
bmRleGluZ0hlYWRlcikpLCBzdG9yYWdlUmVzdWx0R1BSKTsKIAogICAgIG1faml0LnN0b3JlMzIo
c2l6ZUdQUiwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc3RvcmFnZVJlc3VsdEdQUiwgQnV0dGVy
Zmx5OjpvZmZzZXRPZlB1YmxpY0xlbmd0aCgpKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTgzMDAsNyArODMwMCw3IEBAIElHTk9SRV9DTEFOR19XQVJOSU5HU19FTkQKICAgICAgICAg
ICAgICAgICBtX291dC5jb25zdEludFB0cih+c3RhdGljX2Nhc3Q8aW50cHRyX3Q+KDcpKSk7CiAg
ICAgICAgIH0KIAotICAgICAgICBMVmFsdWUgYWxsb2NhdG9yID0gYWxsb2NhdG9yRm9yU2l6ZSh2
bSgpLnByaW1pdGl2ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UsIGJ5dGVTaXplLCBzbG93Q2FzZSk7
CisgICAgICAgIExWYWx1ZSBhbGxvY2F0b3IgPSBhbGxvY2F0b3JGb3JTaXplKHZtKCkucHJpbWl0
aXZlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZSgpLCBieXRlU2l6ZSwgc2xvd0Nhc2UpOwogICAgICAg
ICBMVmFsdWUgc3RvcmFnZSA9IGFsbG9jYXRlSGVhcENlbGwoYWxsb2NhdG9yLCBzbG93Q2FzZSk7
CiAKICAgICAgICAgc3BsYXRXb3JkcygKQEAgLTEzOTIxLDcgKzEzOTIxLDcgQEAgSUdOT1JFX0NM
QU5HX1dBUk5JTkdTX0VORAogICAgICAgICAgICAgICAgIFZhbHVlRnJvbUJsb2NrIG5vQnV0dGVy
Zmx5ID0gbV9vdXQuYW5jaG9yKG1fb3V0LmludFB0clplcm8pOwogICAgICAgICAgICAgICAgIAog
ICAgICAgICAgICAgICAgIExWYWx1ZSBzdGFydE9mU3RvcmFnZSA9IGFsbG9jYXRlSGVhcENlbGwo
Ci0gICAgICAgICAgICAgICAgICAgIGFsbG9jYXRvckZvclNpemUodm0oKS5qc1ZhbHVlR2lnYWNh
Z2VBdXhpbGlhcnlTcGFjZSwgYnV0dGVyZmx5U2l6ZSwgc2xvd1BhdGgpLAorICAgICAgICAgICAg
ICAgICAgICBhbGxvY2F0b3JGb3JTaXplKHZtKCkuanNWYWx1ZUdpZ2FjYWdlQXV4aWxpYXJ5U3Bh
Y2UoKSwgYnV0dGVyZmx5U2l6ZSwgc2xvd1BhdGgpLAogICAgICAgICAgICAgICAgICAgICBzbG93
UGF0aCk7CiAKICAgICAgICAgICAgICAgICBMVmFsdWUgZmFzdEJ1dHRlcmZseVZhbHVlID0gbV9v
dXQuYWRkKApAQCAtMTUwMTYsNyArMTUwMTYsNyBAQCBJR05PUkVfQ0xBTkdfV0FSTklOR1NfRU5E
CiAgICAgICAgIExCYXNpY0Jsb2NrIGxhc3ROZXh0ID0gbV9vdXQuaW5zZXJ0TmV3QmxvY2tzQmVm
b3JlKHNsb3dQYXRoKTsKIAogICAgICAgICBzaXplX3Qgc2l6ZUluQnl0ZXMgPSBzaXplSW5WYWx1
ZXMgKiBzaXplb2YoSlNWYWx1ZSk7Ci0gICAgICAgIEFsbG9jYXRvciBhbGxvY2F0b3IgPSB2bSgp
LmpzVmFsdWVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlLmFsbG9jYXRvckZvck5vblZpcnR1YWwoc2l6
ZUluQnl0ZXMsIEFsbG9jYXRvckZvck1vZGU6OkFsbG9jYXRvcklmRXhpc3RzKTsKKyAgICAgICAg
QWxsb2NhdG9yIGFsbG9jYXRvciA9IHZtKCkuanNWYWx1ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2Uo
KS5hbGxvY2F0b3JGb3JOb25WaXJ0dWFsKHNpemVJbkJ5dGVzLCBBbGxvY2F0b3JGb3JNb2RlOjpB
bGxvY2F0b3JJZkV4aXN0cyk7CiAgICAgICAgIExWYWx1ZSBzdGFydE9mU3RvcmFnZSA9IGFsbG9j
YXRlSGVhcENlbGwoCiAgICAgICAgICAgICBtX291dC5jb25zdEludFB0cihhbGxvY2F0b3IubG9j
YWxBbGxvY2F0b3IoKSksIHNsb3dQYXRoKTsKICAgICAgICAgVmFsdWVGcm9tQmxvY2sgZmFzdEJ1
dHRlcmZseSA9IG1fb3V0LmFuY2hvcigKQEAgLTE3MDM4LDcgKzE3MDM4LDcgQEAgSUdOT1JFX0NM
QU5HX1dBUk5JTkdTX0VORAogICAgICAgICBMVmFsdWUgYnV0dGVyZmx5U2l6ZSA9IG1fb3V0LmFk
ZCgKICAgICAgICAgICAgIHBheWxvYWRTaXplLCBtX291dC5jb25zdEludFB0cihzaXplb2YoSW5k
ZXhpbmdIZWFkZXIpKSk7CiAKLSAgICAgICAgTFZhbHVlIGFsbG9jYXRvciA9IGFsbG9jYXRvckZv
clNpemUodm0oKS5qc1ZhbHVlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZSwgYnV0dGVyZmx5U2l6ZSwg
ZmFpbENhc2UpOworICAgICAgICBMVmFsdWUgYWxsb2NhdG9yID0gYWxsb2NhdG9yRm9yU2l6ZSh2
bSgpLmpzVmFsdWVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlKCksIGJ1dHRlcmZseVNpemUsIGZhaWxD
YXNlKTsKICAgICAgICAgTFZhbHVlIHN0YXJ0T2ZTdG9yYWdlID0gYWxsb2NhdGVIZWFwQ2VsbChh
bGxvY2F0b3IsIGZhaWxDYXNlKTsKIAogICAgICAgICBMVmFsdWUgYnV0dGVyZmx5ID0gbV9vdXQu
YWRkKHN0YXJ0T2ZTdG9yYWdlLCBtX291dC5jb25zdEludFB0cihzaXplb2YoSW5kZXhpbmdIZWFk
ZXIpKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZ2VuZXJhdG9yL0RTTC5yYgo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZ2VuZXJhdG9yL0RTTC5yYgkocmV2aXNp
b24gMjg2MDk1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2dlbmVyYXRvci9EU0wucmIJKHdv
cmtpbmcgY29weSkKQEAgLTEsNCArMSw0IEBACi0jIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIENvcHlyaWdodCAoQykgMjAxOC0yMDIxIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICMKICMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAjIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpA
QCAtMTQ3LDYgKzE0Nyw4IEBAIG1vZHVsZSBEU0wKIAogbmFtZXNwYWNlIEpTQyB7CiAKK2NsYXNz
IEJhc2ljQmxvY2tMb2NhdGlvbjsKKwogdm9pZCBkdW1wQnl0ZWNvZGUoQnl0ZWNvZGVEdW1wZXJC
YXNlKiBkdW1wZXIsIEluc3RydWN0aW9uU3RyZWFtOjpPZmZzZXQsIGNvbnN0IEluc3RydWN0aW9u
Kik7CiAKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9Db2RlQmxvY2tTZXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9Db2RlQmxvY2tTZXQuaAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvQ29kZUJsb2NrU2V0LmgJKHdvcmtpbmcgY29weSkKQEAgLTY2LDggKzY2
LDYgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+IHZvaWQgaXRlcmF0
ZShjb25zdCBGdW5jdG9yJik7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4gdm9pZCBp
dGVyYXRlKGNvbnN0IEFic3RyYWN0TG9ja2VyJiwgY29uc3QgRnVuY3RvciYpOwogCi0gICAgdGVt
cGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4gdm9pZCBpdGVyYXRlVmlhU3Vic3BhY2VzKFZNJiwgY29u
c3QgRnVuY3RvciYpOwotICAgIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+IHZvaWQg
aXRlcmF0ZUN1cnJlbnRseUV4ZWN1dGluZyhjb25zdCBGdW5jdG9yJik7CiAgICAgCiAgICAgdm9p
ZCBkdW1wKFByaW50U3RyZWFtJikgY29uc3Q7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9Db2RlQmxvY2tTZXRJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvQ29kZUJsb2NrU2V0SW5saW5lcy5oCShyZXZpc2lvbiAyODYwOTUpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Db2RlQmxvY2tTZXRJbmxpbmVzLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTYwLDE4ICs2MCw2IEBAIHZvaWQgQ29kZUJsb2NrU2V0OjppdGVyYXRlKGNvbnN0
IEFic3RyYWMKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4KLXZvaWQgQ29kZUJsb2Nr
U2V0OjppdGVyYXRlVmlhU3Vic3BhY2VzKFZNJiB2bSwgY29uc3QgRnVuY3RvciYgZnVuY3RvcikK
LXsKLSAgICB2bS5mb3JFYWNoQ29kZUJsb2NrU3BhY2UoCi0gICAgICAgIFsmXSAoYXV0byYgc3Bh
Y2VBbmRTZXQpIHsKLSAgICAgICAgICAgIHNwYWNlQW5kU2V0LnNwYWNlLmZvckVhY2hMaXZlQ2Vs
bCgKLSAgICAgICAgICAgICAgICBbJl0gKEhlYXBDZWxsKiBjZWxsLCBIZWFwQ2VsbDo6S2luZCkg
ewotICAgICAgICAgICAgICAgICAgICBmdW5jdG9yKGpzQ2FzdDxDb2RlQmxvY2sqPihzdGF0aWNf
Y2FzdDxKU0NlbGwqPihjZWxsKSkpOwotICAgICAgICAgICAgICAgIH0pOwotICAgICAgICB9KTsK
LX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4KIHZvaWQgQ29kZUJsb2NrU2V0OjppdGVy
YXRlQ3VycmVudGx5RXhlY3V0aW5nKGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3IpCiB7CiAgICAgTG9j
a2VyIGxvY2tlciB7IG1fbG9jayB9OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
SGVhcC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5j
cHAJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xOSwxNSArMTksMjMgQEAKICAqLwogCiAjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiSlNBUElHbG9iYWxPYmplY3QuaCIgLy8gbWxhbSBURVNUIEhB
Q0sgZm9yIFdpbiBFV1MuCiAjaW5jbHVkZSAiSGVhcC5oIgogCisjaW5jbHVkZSAiQmlnSW50T2Jq
ZWN0LmgiCisjaW5jbHVkZSAiQm9vbGVhbk9iamVjdC5oIgorI2luY2x1ZGUgIkJyYW5kZWRTdHJ1
Y3R1cmUuaCIKICNpbmNsdWRlICJCdWlsdGluRXhlY3V0YWJsZXMuaCIKKyNpbmNsdWRlICJDbG9u
ZWRBcmd1bWVudHMuaCIKICNpbmNsdWRlICJDb2RlQmxvY2suaCIKICNpbmNsdWRlICJDb2RlQmxv
Y2tTZXRJbmxpbmVzLmgiCiAjaW5jbHVkZSAiQ29sbGVjdGluZ1Njb3BlLmgiCiAjaW5jbHVkZSAi
Q29uc2VydmF0aXZlUm9vdHMuaCIKKyNpbmNsdWRlICJEYXRlSW5zdGFuY2UuaCIKKyNpbmNsdWRl
ICJEZWJ1Z2dlclNjb3BlLmgiCiAjaW5jbHVkZSAiRWRlbkdDQWN0aXZpdHlDYWxsYmFjay5oIgog
I2luY2x1ZGUgIkV4Y2VwdGlvbi5oIgorI2luY2x1ZGUgIkZhc3RNYWxsb2NBbGlnbmVkTWVtb3J5
QWxsb2NhdG9yLmgiCiAjaW5jbHVkZSAiRnVsbEdDQWN0aXZpdHlDYWxsYmFjay5oIgogI2luY2x1
ZGUgIkZ1bmN0aW9uRXhlY3V0YWJsZUlubGluZXMuaCIKICNpbmNsdWRlICJHQ0FjdGl2aXR5Q2Fs
bGJhY2suaCIKQEAgLTM1LDYgKzQzLDcgQEAKICNpbmNsdWRlICJHQ0luY29taW5nUmVmQ291bnRl
ZFNldElubGluZXMuaCIKICNpbmNsdWRlICJHQ1NlZ21lbnRlZEFycmF5SW5saW5lcy5oIgogI2lu
Y2x1ZGUgIkdDVHlwZU1hcC5oIgorI2luY2x1ZGUgIkdldHRlclNldHRlci5oIgogI2luY2x1ZGUg
Ikhhc093blByb3BlcnR5Q2FjaGUuaCIKICNpbmNsdWRlICJIZWFwSGVscGVyUG9vbC5oIgogI2lu
Y2x1ZGUgIkhlYXBJdGVyYXRpb25TY29wZS5oIgpAQCAtNDMsMzcgKzUyLDExOSBAQAogI2luY2x1
ZGUgIkhlYXBWZXJpZmllci5oIgogI2luY2x1ZGUgIkluY3JlbWVudGFsU3dlZXBlci5oIgogI2lu
Y2x1ZGUgIkludGVycHJldGVyLmgiCisjaW5jbHVkZSAiSW50bENvbGxhdG9yLmgiCisjaW5jbHVk
ZSAiSW50bERhdGVUaW1lRm9ybWF0LmgiCisjaW5jbHVkZSAiSW50bERpc3BsYXlOYW1lcy5oIgor
I2luY2x1ZGUgIkludGxMaXN0Rm9ybWF0LmgiCisjaW5jbHVkZSAiSW50bExvY2FsZS5oIgorI2lu
Y2x1ZGUgIkludGxOdW1iZXJGb3JtYXQuaCIKKyNpbmNsdWRlICJJbnRsUGx1cmFsUnVsZXMuaCIK
KyNpbmNsdWRlICJJbnRsUmVsYXRpdmVUaW1lRm9ybWF0LmgiCisjaW5jbHVkZSAiSW50bFNlZ21l
bnRJdGVyYXRvci5oIgorI2luY2x1ZGUgIkludGxTZWdtZW50ZXIuaCIKKyNpbmNsdWRlICJJbnRs
U2VnbWVudHMuaCIKICNpbmNsdWRlICJJc29DZWxsU2V0SW5saW5lcy5oIgorLy8jaW5jbHVkZSAi
SXNvSGVhcENlbGxUeXBlSW5saW5lcy5oIiAvLyBtbGFtCisjaW5jbHVkZSAiSXNvSW5saW5lZEhl
YXBDZWxsVHlwZUlubGluZXMuaCIKICNpbmNsdWRlICJKSVRTdHViUm91dGluZVNldC5oIgogI2lu
Y2x1ZGUgIkpJVFdvcmtsaXN0SW5saW5lcy5oIgorLy8jaW5jbHVkZSAiSlNBUElHbG9iYWxPYmpl
Y3QuaCIKKyNpbmNsdWRlICJKU0FQSVZhbHVlV3JhcHBlci5oIgorI2luY2x1ZGUgIkpTQVBJV3Jh
cHBlck9iamVjdC5oIgorI2luY2x1ZGUgIkpTQXJyYXkuaCIKKyNpbmNsdWRlICJKU0FycmF5QnVm
ZmVyLmgiCisjaW5jbHVkZSAiSlNBcnJheUl0ZXJhdG9yLmgiCisjaW5jbHVkZSAiSlNBc3luY0dl
bmVyYXRvci5oIgorI2luY2x1ZGUgIkpTQmlnSW50LmgiCisjaW5jbHVkZSAiSlNCb3VuZEZ1bmN0
aW9uLmgiCisjaW5jbHVkZSAiSlNDYWxsYmFja0NvbnN0cnVjdG9yLmgiCisjaW5jbHVkZSAiSlND
YWxsYmFja0Z1bmN0aW9uLmgiCisjaW5jbHVkZSAiSlNDYWxsYmFja09iamVjdC5oIgorI2luY2x1
ZGUgIkpTQ2FsbGVlLmgiCisjaW5jbHVkZSAiSlNDdXN0b21HZXR0ZXJGdW5jdGlvbi5oIgorI2lu
Y2x1ZGUgIkpTQ3VzdG9tU2V0dGVyRnVuY3Rpb24uaCIKKyNpbmNsdWRlICJKU0RhdGFWaWV3Lmgi
CiAjaW5jbHVkZSAiSlNGaW5hbGl6YXRpb25SZWdpc3RyeS5oIgorI2luY2x1ZGUgIkpTRnVuY3Rp
b24uaCIKKyNpbmNsdWRlICJKU0dsb2JhbExleGljYWxFbnZpcm9ubWVudC5oIgorI2luY2x1ZGUg
IkpTR2xvYmFsT2JqZWN0LmgiCisjaW5jbHVkZSAiSlNJbmplY3RlZFNjcmlwdEhvc3QuaCIKKyNp
bmNsdWRlICJKU0phdmFTY3JpcHRDYWxsRnJhbWUuaCIKKyNpbmNsdWRlICJKU01hcC5oIgorI2lu
Y2x1ZGUgIkpTTWFwSXRlcmF0b3IuaCIKKyNpbmNsdWRlICJKU01vZHVsZU5hbWVzcGFjZU9iamVj
dC5oIgorI2luY2x1ZGUgIkpTTW9kdWxlUmVjb3JkLmgiCisjaW5jbHVkZSAiSlNOYXRpdmVTdGRG
dW5jdGlvbi5oIgorI2luY2x1ZGUgIkpTUHJvbWlzZS5oIgorI2luY2x1ZGUgIkpTUHJvcGVydHlO
YW1lRW51bWVyYXRvci5oIgorI2luY2x1ZGUgIkpTUHJveHkuaCIKKyNpbmNsdWRlICJKU1Njcmlw
dEZldGNoUGFyYW1ldGVycy5oIgorI2luY2x1ZGUgIkpTU2NyaXB0RmV0Y2hlci5oIgorI2luY2x1
ZGUgIkpTU2V0LmgiCisjaW5jbHVkZSAiSlNTZXRJdGVyYXRvci5oIgorI2luY2x1ZGUgIkpTU291
cmNlQ29kZS5oIgorI2luY2x1ZGUgIkpTU3RyaW5nLmgiCisjaW5jbHVkZSAiSlNTdHJpbmdJdGVy
YXRvci5oIgorI2luY2x1ZGUgIkpTVGVtcGxhdGVPYmplY3REZXNjcmlwdG9yLmgiCisjaW5jbHVk
ZSAiSlNUb1dhc21JQ0NhbGxlZS5oIgorI2luY2x1ZGUgIkpTVHlwZWRBcnJheXMuaCIKICNpbmNs
dWRlICJKU1ZpcnR1YWxNYWNoaW5lSW50ZXJuYWwuaCIKICNpbmNsdWRlICJKU1dlYWtNYXAuaCIK
ICNpbmNsdWRlICJKU1dlYWtPYmplY3RSZWYuaCIKICNpbmNsdWRlICJKU1dlYWtTZXQuaCIKICNp
bmNsdWRlICJKU1dlYkFzc2VtYmx5Q29kZUJsb2NrLmgiCisjaW5jbHVkZSAiSlNXZWJBc3NlbWJs
eUV4Y2VwdGlvbi5oIgorI2luY2x1ZGUgIkpTV2ViQXNzZW1ibHlHbG9iYWwuaCIKKyNpbmNsdWRl
ICJKU1dlYkFzc2VtYmx5SW5zdGFuY2UuaCIKKyNpbmNsdWRlICJKU1dlYkFzc2VtYmx5TWVtb3J5
LmgiCisjaW5jbHVkZSAiSlNXZWJBc3NlbWJseU1vZHVsZS5oIgorI2luY2x1ZGUgIkpTV2ViQXNz
ZW1ibHlUYWJsZS5oIgorI2luY2x1ZGUgIkpTV2ViQXNzZW1ibHlUYWcuaCIKKyNpbmNsdWRlICJK
U1dpdGhTY29wZS5oIgogI2luY2x1ZGUgIk1hY2hpbmVTdGFja01hcmtlci5oIgogI2luY2x1ZGUg
Ik1hcmtTdGFja01lcmdpbmdDb25zdHJhaW50LmgiCiAjaW5jbHVkZSAiTWFya2VkSlNWYWx1ZVJl
ZkFycmF5LmgiCiAjaW5jbHVkZSAiTWFya2VkU3BhY2VJbmxpbmVzLmgiCiAjaW5jbHVkZSAiTWFy
a2luZ0NvbnN0cmFpbnRTZXQuaCIKKyNpbmNsdWRlICJOYXRpdmVFeGVjdXRhYmxlLmgiCiAjaW5j
bHVkZSAiUHJldmVudENvbGxlY3Rpb25TY29wZS5oIgorI2luY2x1ZGUgIlByb2dyYW1FeGVjdXRh
YmxlLmgiCisjaW5jbHVkZSAiUHJvcGVydHlUYWJsZS5oIgorI2luY2x1ZGUgIlByb3h5UmV2b2tl
LmgiCisjaW5jbHVkZSAiUmVnRXhwT2JqZWN0LmgiCiAjaW5jbHVkZSAiU2FtcGxpbmdQcm9maWxl
ci5oIgorI2luY2x1ZGUgIlNjb3BlZEFyZ3VtZW50cy5oIgogI2luY2x1ZGUgIlNoYWRvd0NoaWNr
ZW4uaCIKKyNpbmNsdWRlICJTaGFkb3dSZWFsbU9iamVjdC5oIgogI2luY2x1ZGUgIlNwYWNlVGlt
ZU11dGF0b3JTY2hlZHVsZXIuaCIKICNpbmNsdWRlICJTdG9jaGFzdGljU3BhY2VUaW1lTXV0YXRv
clNjaGVkdWxlci5oIgogI2luY2x1ZGUgIlN0b3BJZk5lY2Vzc2FyeVRpbWVyLmgiCisjaW5jbHVk
ZSAiU3RyaWN0RXZhbEFjdGl2YXRpb24uaCIKKyNpbmNsdWRlICJTdHJpbmdPYmplY3QuaCIKKyNp
bmNsdWRlICJTdHJ1Y3R1cmVDaGFpbi5oIgogI2luY2x1ZGUgIlN1YnNwYWNlSW5saW5lcy5oIgog
I2luY2x1ZGUgIlN1cGVyU2FtcGxlci5oIgogI2luY2x1ZGUgIlN3ZWVwaW5nU2NvcGUuaCIKKyNp
bmNsdWRlICJTeW1ib2xPYmplY3QuaCIKICNpbmNsdWRlICJTeW1ib2xUYWJsZUlubGluZXMuaCIK
ICNpbmNsdWRlICJTeW5jaHJvbm91c1N0b3BUaGVXb3JsZE11dGF0b3JTY2hlZHVsZXIuaCIKKyNp
bmNsdWRlICJUZW1wb3JhbENhbGVuZGFyLmgiCisjaW5jbHVkZSAiVGVtcG9yYWxEdXJhdGlvbi5o
IgorI2luY2x1ZGUgIlRlbXBvcmFsSW5zdGFudC5oIgorI2luY2x1ZGUgIlRlbXBvcmFsUGxhaW5U
aW1lLmgiCisjaW5jbHVkZSAiVGVtcG9yYWxUaW1lWm9uZS5oIgogI2luY2x1ZGUgIlR5cGVQcm9m
aWxlci5oIgogI2luY2x1ZGUgIlR5cGVQcm9maWxlckxvZy5oIgorI2luY2x1ZGUgIlVubGlua2Vk
RnVuY3Rpb25Db2RlQmxvY2suaCIKKyNpbmNsdWRlICJVbmxpbmtlZE1vZHVsZVByb2dyYW1Db2Rl
QmxvY2suaCIKKyNpbmNsdWRlICJVbmxpbmtlZFByb2dyYW1Db2RlQmxvY2suaCIKICNpbmNsdWRl
ICJWTS5oIgogI2luY2x1ZGUgIlZlcmlmaWVyU2xvdFZpc2l0b3JJbmxpbmVzLmgiCiAjaW5jbHVk
ZSAiV2Vha01hcEltcGxJbmxpbmVzLmgiCiAjaW5jbHVkZSAiV2Vha1NldElubGluZXMuaCIKKyNp
bmNsdWRlICJXZWJBc3NlbWJseUZ1bmN0aW9uLmgiCisjaW5jbHVkZSAiV2ViQXNzZW1ibHlNb2R1
bGVSZWNvcmQuaCIKKyNpbmNsdWRlICJXZWJBc3NlbWJseVdyYXBwZXJGdW5jdGlvbi5oIgogI2lu
Y2x1ZGUgPGFsZ29yaXRobT4KICNpbmNsdWRlIDx3dGYvQ3J5cHRvZ3JhcGhpY2FsbHlSYW5kb21O
dW1iZXIuaD4KICNpbmNsdWRlIDx3dGYvTGlzdER1bXAuaD4KQEAgLTkwLDEwICsxODEsMTggQEAK
ICNpbmNsdWRlIDx3dGYvc3BpL2NvY29hL29iamNTUEkuaD4KICNlbmRpZgogCisjaWYgSlNDX09C
SkNfQVBJX0VOQUJMRUQKKyNpbmNsdWRlICJPYmpDQ2FsbGJhY2tGdW5jdGlvbi5oIgorI2VuZGlm
CisKICNpZmRlZiBKU0NfR0xJQl9BUElfRU5BQkxFRAorI2luY2x1ZGUgIkpTQVBJV3JhcHBlckds
b2JhbE9iamVjdC5oIgorI2luY2x1ZGUgIkpTQ0NhbGxiYWNrRnVuY3Rpb24uaCIKICNpbmNsdWRl
ICJKU0NHTGliV3JhcHBlck9iamVjdC5oIgogI2VuZGlmCiAKKyNpbmNsdWRlICJJc29IZWFwQ2Vs
bFR5cGVJbmxpbmVzLmgiIC8vIG1sYW0gVEVTVAorCiBuYW1lc3BhY2UgSlNDIHsKIAogbmFtZXNw
YWNlIHsKQEAgLTI4Niw2ICszODUsMTE0IEBAIEhlYXA6OkhlYXAoVk0mIHZtLCBIZWFwVHlwZSBo
ZWFwVHlwZSkKICAgICAsIG1faGVscGVyQ2xpZW50KCZoZWFwSGVscGVyUG9vbCgpKQogICAgICwg
bV90aHJlYWRMb2NrKEJveDxMb2NrPjo6Y3JlYXRlKCkpCiAgICAgLCBtX3RocmVhZENvbmRpdGlv
bihBdXRvbWF0aWNUaHJlYWRDb25kaXRpb246OmNyZWF0ZSgpKQorCisgICAgLy8gSGVhcENlbGxU
eXBlcworICAgICwgYXV4aWxpYXJ5SGVhcENlbGxUeXBlKENlbGxBdHRyaWJ1dGVzKERvZXNOb3RO
ZWVkRGVzdHJ1Y3Rpb24sIEhlYXBDZWxsOjpBdXhpbGlhcnkpKQorICAgICwgaW1tdXRhYmxlQnV0
dGVyZmx5SGVhcENlbGxUeXBlKENlbGxBdHRyaWJ1dGVzKERvZXNOb3ROZWVkRGVzdHJ1Y3Rpb24s
IEhlYXBDZWxsOjpKU0NlbGxXaXRoSW5kZXhpbmdIZWFkZXIpKQorICAgICwgY2VsbEhlYXBDZWxs
VHlwZShDZWxsQXR0cmlidXRlcyhEb2VzTm90TmVlZERlc3RydWN0aW9uLCBIZWFwQ2VsbDo6SlND
ZWxsKSkKKyAgICAsIGRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUoQ2VsbEF0dHJpYnV0ZXMo
TmVlZHNEZXN0cnVjdGlvbiwgSGVhcENlbGw6OkpTQ2VsbCkpCisvLyAgICAsIGFwaUdsb2JhbE9i
amVjdEhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OkFyZ3M8SlNBUElHbG9iYWxPYmplY3Q+
KCkpCisvLyAgICAsIGNhbGxiYWNrQ29uc3RydWN0b3JIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxU
eXBlOjpBcmdzPEpTQ2FsbGJhY2tDb25zdHJ1Y3Rvcj4oKSkKKy8vICAgICwgY2FsbGJhY2tHbG9i
YWxPYmplY3RIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpBcmdzPEpTQ2FsbGJhY2tPYmpl
Y3Q8SlNHbG9iYWxPYmplY3Q+PigpKQorLy8gICAgLCBjYWxsYmFja09iamVjdEhlYXBDZWxsVHlw
ZShJc29IZWFwQ2VsbFR5cGU6OkFyZ3M8SlNDYWxsYmFja09iamVjdDxKU05vbkZpbmFsT2JqZWN0
Pj4oKSkKKy8vICAgICwgY3VzdG9tR2V0dGVyRnVuY3Rpb25IZWFwQ2VsbFR5cGUoSXNvSGVhcENl
bGxUeXBlOjpBcmdzPEpTQ3VzdG9tR2V0dGVyRnVuY3Rpb24+KCkpCisvLyAgICAsIGN1c3RvbVNl
dHRlckZ1bmN0aW9uSGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6QXJnczxKU0N1c3RvbVNl
dHRlckZ1bmN0aW9uPigpKQorLy8gICAgLCBkYXRlSW5zdGFuY2VIZWFwQ2VsbFR5cGUoSXNvSGVh
cENlbGxUeXBlOjpBcmdzPERhdGVJbnN0YW5jZT4oKSkKKy8vICAgICwgZXJyb3JJbnN0YW5jZUhl
YXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OkFyZ3M8RXJyb3JJbnN0YW5jZT4oKSkKKy8vICAg
ICwgZmluYWxpemF0aW9uUmVnaXN0cnlDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OkFyZ3M8SlNG
aW5hbGl6YXRpb25SZWdpc3RyeT4oKSkKKy8vICAgICwgZ2xvYmFsTGV4aWNhbEVudmlyb25tZW50
SGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6QXJnczxKU0dsb2JhbExleGljYWxFbnZpcm9u
bWVudD4oKSkKKy8vICAgICwgZ2xvYmFsT2JqZWN0SGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlw
ZTo6QXJnczxKU0dsb2JhbE9iamVjdD4oKSkKKy8vICAgICwgaW5qZWN0ZWRTY3JpcHRIb3N0U3Bh
Y2VIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpBcmdzPEluc3BlY3Rvcjo6SlNJbmplY3Rl
ZFNjcmlwdEhvc3Q+KCkpCisvLyAgICAsIGphdmFTY3JpcHRDYWxsRnJhbWVIZWFwQ2VsbFR5cGUo
SXNvSGVhcENlbGxUeXBlOjpBcmdzPEluc3BlY3Rvcjo6SlNKYXZhU2NyaXB0Q2FsbEZyYW1lPigp
KQorLy8gICAgLCBqc01vZHVsZVJlY29yZEhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OkFy
Z3M8SlNNb2R1bGVSZWNvcmQ+KCkpCisvLyAgICAsIG1vZHVsZU5hbWVzcGFjZU9iamVjdEhlYXBD
ZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OkFyZ3M8SlNNb2R1bGVOYW1lc3BhY2VPYmplY3Q+KCkp
CisvLyAgICAsIG5hdGl2ZVN0ZEZ1bmN0aW9uSGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6
QXJnczxKU05hdGl2ZVN0ZEZ1bmN0aW9uPigpKQorLy8gICAgLCB3ZWFrTWFwSGVhcENlbGxUeXBl
KElzb0hlYXBDZWxsVHlwZTo6QXJnczxKU1dlYWtNYXA+KCkpCisvLyAgICAsIHdlYWtTZXRIZWFw
Q2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpBcmdzPEpTV2Vha1NldD4oKSkKKyNpZiBKU0NfT0JK
Q19BUElfRU5BQkxFRAorLy8gICAgLCBhcGlXcmFwcGVyT2JqZWN0SGVhcENlbGxUeXBlKElzb0hl
YXBDZWxsVHlwZTo6QXJnczxKU0NhbGxiYWNrT2JqZWN0PEpTQVBJV3JhcHBlck9iamVjdD4+KCkp
CisvLyAgICAsIG9iakNDYWxsYmFja0Z1bmN0aW9uSGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlw
ZTo6QXJnczxPYmpDQ2FsbGJhY2tGdW5jdGlvbj4oKSkKKyNlbmRpZgorI2lmZGVmIEpTQ19HTElC
X0FQSV9FTkFCTEVECisvLyAgICAsIGFwaVdyYXBwZXJPYmplY3RIZWFwQ2VsbFR5cGUoSXNvSGVh
cENlbGxUeXBlOjpBcmdzPEpTQ2FsbGJhY2tPYmplY3Q8SlNBUElXcmFwcGVyT2JqZWN0Pj4oKSkK
Ky8vICAgICwgY2FsbGJhY2tBUElXcmFwcGVyR2xvYmFsT2JqZWN0SGVhcENlbGxUeXBlKElzb0hl
YXBDZWxsVHlwZTo6QXJnczxKU0NhbGxiYWNrT2JqZWN0PEpTQVBJV3JhcHBlckdsb2JhbE9iamVj
dD4+KCkpCisvLyAgICAsIGpzY0NhbGxiYWNrRnVuY3Rpb25IZWFwQ2VsbFR5cGUoSXNvSGVhcENl
bGxUeXBlOjpBcmdzPEpTQ0NhbGxiYWNrRnVuY3Rpb24+KCkpCisjZW5kaWYKKy8vICAgICwgaW50
bENvbGxhdG9ySGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6QXJnczxJbnRsQ29sbGF0b3I+
KCkpCisvLyAgICAsIGludGxEYXRlVGltZUZvcm1hdEhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5
cGU6OkFyZ3M8SW50bERhdGVUaW1lRm9ybWF0PigpKQorLy8gICAgLCBpbnRsRGlzcGxheU5hbWVz
SGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6QXJnczxJbnRsRGlzcGxheU5hbWVzPigpKQor
Ly8gICAgLCBpbnRsTGlzdEZvcm1hdEhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OkFyZ3M8
SW50bExpc3RGb3JtYXQ+KCkpCisvLyAgICAsIGludGxMb2NhbGVIZWFwQ2VsbFR5cGUoSXNvSGVh
cENlbGxUeXBlOjpBcmdzPEludGxMb2NhbGU+KCkpCisvLyAgICAsIGludGxOdW1iZXJGb3JtYXRI
ZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpBcmdzPEludGxOdW1iZXJGb3JtYXQ+KCkpCisv
LyAgICAsIGludGxQbHVyYWxSdWxlc0hlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OkFyZ3M8
SW50bFBsdXJhbFJ1bGVzPigpKQorLy8gICAgLCBpbnRsUmVsYXRpdmVUaW1lRm9ybWF0SGVhcENl
bGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6QXJnczxJbnRsUmVsYXRpdmVUaW1lRm9ybWF0PigpKQor
Ly8gICAgLCBpbnRsU2VnbWVudEl0ZXJhdG9ySGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6
QXJnczxJbnRsU2VnbWVudEl0ZXJhdG9yPigpKQorLy8gICAgLCBpbnRsU2VnbWVudGVySGVhcENl
bGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6QXJnczxJbnRsU2VnbWVudGVyPigpKQorLy8gICAgLCBp
bnRsU2VnbWVudHNIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpBcmdzPEludGxTZWdtZW50
cz4oKSkKKyNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCisvLyAgICAsIHdlYkFzc2VtYmx5Q29kZUJs
b2NrSGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6QXJnczxKU1dlYkFzc2VtYmx5Q29kZUJs
b2NrPigpKQorLy8gICAgLCB3ZWJBc3NlbWJseUV4Y2VwdGlvbkhlYXBDZWxsVHlwZShJc29IZWFw
Q2VsbFR5cGU6OkFyZ3M8SlNXZWJBc3NlbWJseUV4Y2VwdGlvbj4oKSkKKy8vICAgICwgd2ViQXNz
ZW1ibHlGdW5jdGlvbkhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OkFyZ3M8V2ViQXNzZW1i
bHlGdW5jdGlvbj4oKSkKKy8vICAgICwgd2ViQXNzZW1ibHlHbG9iYWxIZWFwQ2VsbFR5cGUoSXNv
SGVhcENlbGxUeXBlOjpBcmdzPEpTV2ViQXNzZW1ibHlHbG9iYWw+KCkpCisvLyAgICAsIHdlYkFz
c2VtYmx5SW5zdGFuY2VIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpBcmdzPEpTV2ViQXNz
ZW1ibHlJbnN0YW5jZT4oKSkKKy8vICAgICwgd2ViQXNzZW1ibHlNZW1vcnlIZWFwQ2VsbFR5cGUo
SXNvSGVhcENlbGxUeXBlOjpBcmdzPEpTV2ViQXNzZW1ibHlNZW1vcnk+KCkpCisvLyAgICAsIHdl
YkFzc2VtYmx5TW9kdWxlSGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6QXJnczxKU1dlYkFz
c2VtYmx5TW9kdWxlPigpKQorLy8gICAgLCB3ZWJBc3NlbWJseU1vZHVsZVJlY29yZEhlYXBDZWxs
VHlwZShJc29IZWFwQ2VsbFR5cGU6OkFyZ3M8V2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQ+KCkpCisv
LyAgICAsIHdlYkFzc2VtYmx5VGFibGVIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpBcmdz
PEpTV2ViQXNzZW1ibHlUYWJsZT4oKSkKKy8vICAgICwgd2ViQXNzZW1ibHlUYWdIZWFwQ2VsbFR5
cGUoSXNvSGVhcENlbGxUeXBlOjpBcmdzPEpTV2ViQXNzZW1ibHlUYWc+KCkpCisjZW5kaWYKKwor
ICAgIC8vIEFsaWduZWRNZW1vcnlBbGxvY2F0b3JzCisgICAgLCBmYXN0TWFsbG9jQWxsb2NhdG9y
KG1ha2VVbmlxdWU8RmFzdE1hbGxvY0FsaWduZWRNZW1vcnlBbGxvY2F0b3I+KCkpCisgICAgLCBw
cmltaXRpdmVHaWdhY2FnZUFsbG9jYXRvcihtYWtlVW5pcXVlPEdpZ2FjYWdlQWxpZ25lZE1lbW9y
eUFsbG9jYXRvcj4oR2lnYWNhZ2U6OlByaW1pdGl2ZSkpCisgICAgLCBqc1ZhbHVlR2lnYWNhZ2VB
bGxvY2F0b3IobWFrZVVuaXF1ZTxHaWdhY2FnZUFsaWduZWRNZW1vcnlBbGxvY2F0b3I+KEdpZ2Fj
YWdlOjpKU1ZhbHVlKSkKKworICAgIC8vIFN1YnNwYWNlcworICAgICwgcHJpbWl0aXZlR2lnYWNh
Z2VBdXhpbGlhcnlTcGFjZSgiUHJpbWl0aXZlIEdpZ2FjYWdlIEF1eGlsaWFyeSIsICp0aGlzLCBh
dXhpbGlhcnlIZWFwQ2VsbFR5cGUsIHByaW1pdGl2ZUdpZ2FjYWdlQWxsb2NhdG9yLmdldCgpKSAv
LyBIYXNoOjB4M2U3Y2Q3NjIKKyAgICAsIGpzVmFsdWVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlKCJK
U1ZhbHVlIEdpZ2FjYWdlIEF1eGlsaWFyeSIsICp0aGlzLCBhdXhpbGlhcnlIZWFwQ2VsbFR5cGUs
IGpzVmFsdWVHaWdhY2FnZUFsbG9jYXRvci5nZXQoKSkgLy8gSGFzaDoweDI0MWU5NDYKKyAgICAs
IGltbXV0YWJsZUJ1dHRlcmZseUpTVmFsdWVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlKCJJbW11dGFi
bGVCdXR0ZXJmbHkgR2lnYWNhZ2UgSlNDZWxsV2l0aEluZGV4aW5nSGVhZGVyIiwgKnRoaXMsIGlt
bXV0YWJsZUJ1dHRlcmZseUhlYXBDZWxsVHlwZSwganNWYWx1ZUdpZ2FjYWdlQWxsb2NhdG9yLmdl
dCgpKSAvLyBIYXNoOjB4N2E5NDUzMDAKKyAgICAsIGNlbGxTcGFjZSgiSlNDZWxsIiwgKnRoaXMs
IGNlbGxIZWFwQ2VsbFR5cGUsIGZhc3RNYWxsb2NBbGxvY2F0b3IuZ2V0KCkpIC8vIEhhc2g6MHhh
ZGZiNWE3OQorICAgICwgdmFyaWFibGVTaXplZENlbGxTcGFjZSgiVmFyaWFibGUgU2l6ZWQgSlND
ZWxsIiwgKnRoaXMsIGNlbGxIZWFwQ2VsbFR5cGUsIGZhc3RNYWxsb2NBbGxvY2F0b3IuZ2V0KCkp
IC8vIEhhc2g6MHhiY2Q3NjljYworICAgICwgZGVzdHJ1Y3RpYmxlT2JqZWN0U3BhY2UoIkpTRGVz
dHJ1Y3RpYmxlT2JqZWN0IiwgKnRoaXMsIGRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSwg
ZmFzdE1hbGxvY0FsbG9jYXRvci5nZXQoKSkgLy8gSGFzaDoweDRmNWVkN2E5CisgICAgLCBhcnJh
eVNwYWNlIElTT19TVUJTUEFDRV9JTklUKCp0aGlzLCBjZWxsSGVhcENlbGxUeXBlLCBKU0FycmF5
KQorICAgICwgYmlnSW50U3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoKnRoaXMsIGNlbGxIZWFwQ2Vs
bFR5cGUsIEpTQmlnSW50KQorICAgICwgY2FsbGVlU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoKnRo
aXMsIGNlbGxIZWFwQ2VsbFR5cGUsIEpTQ2FsbGVlKQorICAgICwgY2xvbmVkQXJndW1lbnRzU3Bh
Y2UgSVNPX1NVQlNQQUNFX0lOSVQoKnRoaXMsIGNlbGxIZWFwQ2VsbFR5cGUsIENsb25lZEFyZ3Vt
ZW50cykKKyAgICAsIGN1c3RvbUdldHRlclNldHRlclNwYWNlIElTT19TVUJTUEFDRV9JTklUKCp0
aGlzLCBjZWxsSGVhcENlbGxUeXBlLCBDdXN0b21HZXR0ZXJTZXR0ZXIpCisgICAgLCBkYXRlSW5z
dGFuY2VTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVCgqdGhpcywgZGF0ZUluc3RhbmNlSGVhcENlbGxU
eXBlLCBEYXRlSW5zdGFuY2UpCisgICAgLCBkb21BdHRyaWJ1dGVHZXR0ZXJTZXR0ZXJTcGFjZSBJ
U09fU1VCU1BBQ0VfSU5JVCgqdGhpcywgY2VsbEhlYXBDZWxsVHlwZSwgRE9NQXR0cmlidXRlR2V0
dGVyU2V0dGVyKQorICAgICwgZXhjZXB0aW9uU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoKnRoaXMs
IGRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUsIEV4Y2VwdGlvbikKKyAgICAsIGV4ZWN1dGFi
bGVUb0NvZGVCbG9ja0VkZ2VTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVCgqdGhpcywgY2VsbEhlYXBD
ZWxsVHlwZSwgRXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZSkgLy8gSGFzaDoweDdiNzMwYjIwCisg
ICAgLCBmdW5jdGlvblNwYWNlIElTT19TVUJTUEFDRV9JTklUKCp0aGlzLCBjZWxsSGVhcENlbGxU
eXBlLCBKU0Z1bmN0aW9uKSAvLyBIYXNoOjB4ODAwZmNhNzIKKyAgICAsIGdldHRlclNldHRlclNw
YWNlIElTT19TVUJTUEFDRV9JTklUKCp0aGlzLCBjZWxsSGVhcENlbGxUeXBlLCBHZXR0ZXJTZXR0
ZXIpCisgICAgLCBnbG9iYWxMZXhpY2FsRW52aXJvbm1lbnRTcGFjZSBJU09fU1VCU1BBQ0VfSU5J
VCgqdGhpcywgZ2xvYmFsTGV4aWNhbEVudmlyb25tZW50SGVhcENlbGxUeXBlLCBKU0dsb2JhbExl
eGljYWxFbnZpcm9ubWVudCkKKyAgICAsIGludGVybmFsRnVuY3Rpb25TcGFjZSBJU09fU1VCU1BB
Q0VfSU5JVCgqdGhpcywgY2VsbEhlYXBDZWxsVHlwZSwgSW50ZXJuYWxGdW5jdGlvbikgLy8gSGFz
aDoweGY4NDVjNDY0CisgICAgLCBqc1Byb3h5U3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoKnRoaXMs
IGNlbGxIZWFwQ2VsbFR5cGUsIEpTUHJveHkpCisgICAgLCBuYXRpdmVFeGVjdXRhYmxlU3BhY2Ug
SVNPX1NVQlNQQUNFX0lOSVQoKnRoaXMsIGRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUsIE5h
dGl2ZUV4ZWN1dGFibGUpIC8vIEhhc2g6MHg2NzU2N2Y5NQorICAgICwgbnVtYmVyT2JqZWN0U3Bh
Y2UgSVNPX1NVQlNQQUNFX0lOSVQoKnRoaXMsIGNlbGxIZWFwQ2VsbFR5cGUsIE51bWJlck9iamVj
dCkKKyAgICAsIHBsYWluT2JqZWN0U3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoKnRoaXMsIGNlbGxI
ZWFwQ2VsbFR5cGUsIEpTTm9uRmluYWxPYmplY3QpIC8vIE1haW5seSB1c2VkIGZvciBwcm90b3R5
cGVzLgorICAgICwgcHJvbWlzZVNwYWNlIElTT19TVUJTUEFDRV9JTklUKCp0aGlzLCBjZWxsSGVh
cENlbGxUeXBlLCBKU1Byb21pc2UpCisgICAgLCBwcm9wZXJ0eU5hbWVFbnVtZXJhdG9yU3BhY2Ug
SVNPX1NVQlNQQUNFX0lOSVQoKnRoaXMsIGNlbGxIZWFwQ2VsbFR5cGUsIEpTUHJvcGVydHlOYW1l
RW51bWVyYXRvcikKKyAgICAsIHByb3BlcnR5VGFibGVTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVCgq
dGhpcywgZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZSwgUHJvcGVydHlUYWJsZSkgLy8gSGFz
aDoweGM2YmM5ZjEyCisgICAgLCByZWdFeHBTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVCgqdGhpcywg
ZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZSwgUmVnRXhwKQorICAgICwgcmVnRXhwT2JqZWN0
U3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoKnRoaXMsIGNlbGxIZWFwQ2VsbFR5cGUsIFJlZ0V4cE9i
amVjdCkKKyAgICAsIHJvcGVTdHJpbmdTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVCgqdGhpcywgc3Ry
aW5nSGVhcENlbGxUeXBlLCBKU1JvcGVTdHJpbmcpCisgICAgLCBzY29wZWRBcmd1bWVudHNTcGFj
ZSBJU09fU1VCU1BBQ0VfSU5JVCgqdGhpcywgY2VsbEhlYXBDZWxsVHlwZSwgU2NvcGVkQXJndW1l
bnRzKQorICAgICwgc3BhcnNlQXJyYXlWYWx1ZU1hcFNwYWNlIElTT19TVUJTUEFDRV9JTklUKCp0
aGlzLCBkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlLCBTcGFyc2VBcnJheVZhbHVlTWFwKQor
ICAgICwgc3RyaW5nU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoKnRoaXMsIHN0cmluZ0hlYXBDZWxs
VHlwZSwgSlNTdHJpbmcpIC8vIEhhc2g6MHg5MGNmNzU4ZgorICAgICwgc3RyaW5nT2JqZWN0U3Bh
Y2UgSVNPX1NVQlNQQUNFX0lOSVQoKnRoaXMsIGNlbGxIZWFwQ2VsbFR5cGUsIFN0cmluZ09iamVj
dCkKKyAgICAsIHN0cnVjdHVyZUNoYWluU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoKnRoaXMsIGNl
bGxIZWFwQ2VsbFR5cGUsIFN0cnVjdHVyZUNoYWluKQorICAgICwgc3RydWN0dXJlUmFyZURhdGFT
cGFjZSBJU09fU1VCU1BBQ0VfSU5JVCgqdGhpcywgZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlw
ZSwgU3RydWN0dXJlUmFyZURhdGEpIC8vIEhhc2g6MHhhY2E0ZTYyZAorICAgICwgc3RydWN0dXJl
U3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoKnRoaXMsIGRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5
cGUsIFN0cnVjdHVyZSkgLy8gSGFzaDoweDFmMWJjZGNhCisgICAgLCBicmFuZGVkU3RydWN0dXJl
U3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoKnRoaXMsIGRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5
cGUsIEJyYW5kZWRTdHJ1Y3R1cmUpCisgICAgLCBzeW1ib2xUYWJsZVNwYWNlIElTT19TVUJTUEFD
RV9JTklUKCp0aGlzLCBkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlLCBTeW1ib2xUYWJsZSkg
Ly8gSGFzaDoweGM1MjE1YWZkCisgICAgLCBleGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlc1dpdGhD
b25zdHJhaW50cyhleGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlU3BhY2UpCisgICAgLCBleGVjdXRh
YmxlVG9Db2RlQmxvY2tFZGdlc1dpdGhGaW5hbGl6ZXJzKGV4ZWN1dGFibGVUb0NvZGVCbG9ja0Vk
Z2VTcGFjZSkKKyAgICAsIGNvZGVCbG9ja1NwYWNlIElTT19TVUJTUEFDRV9JTklUKCp0aGlzLCBk
ZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlLCBDb2RlQmxvY2spIC8vIEhhc2g6MHg3N2U2NmVj
OQorICAgICwgZnVuY3Rpb25FeGVjdXRhYmxlU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoKnRoaXMs
IGRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUsIEZ1bmN0aW9uRXhlY3V0YWJsZSkgLy8gSGFz
aDoweDVkMTU4ZjMKKyAgICAsIHByb2dyYW1FeGVjdXRhYmxlU3BhY2UgSVNPX1NVQlNQQUNFX0lO
SVQoKnRoaXMsIGRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUsIFByb2dyYW1FeGVjdXRhYmxl
KSAvLyBIYXNoOjB4NTI3Yzc3ZTcKKyAgICAsIHVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlU3Bh
Y2UgSVNPX1NVQlNQQUNFX0lOSVQoKnRoaXMsIGRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUs
IFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKSAvLyBIYXNoOjB4ZjZiODI4ZDkKKwogewogICAg
IG1fd29ybGRTdGF0ZS5zdG9yZSgwKTsKIApAQCAtNTc5LDMxICs3ODYsMzEgQEAgdm9pZCBIZWFw
OjpmaW5hbGl6ZVVuY29uZGl0aW9uYWxGaW5hbGl6ZQogewogICAgIFZNJiB2bSA9IHRoaXMtPnZt
KCk7CiAgICAgdm0uYnVpbHRpbkV4ZWN1dGFibGVzKCktPmZpbmFsaXplVW5jb25kaXRpb25hbGx5
KCk7Ci0gICAgZmluYWxpemVNYXJrZWRVbmNvbmRpdGlvbmFsRmluYWxpemVyczxGdW5jdGlvbkV4
ZWN1dGFibGU+KHZtLmZ1bmN0aW9uRXhlY3V0YWJsZVNwYWNlLnNwYWNlKTsKLSAgICBmaW5hbGl6
ZU1hcmtlZFVuY29uZGl0aW9uYWxGaW5hbGl6ZXJzPFN5bWJvbFRhYmxlPih2bS5zeW1ib2xUYWJs
ZVNwYWNlKTsKLSAgICBmaW5hbGl6ZU1hcmtlZFVuY29uZGl0aW9uYWxGaW5hbGl6ZXJzPEV4ZWN1
dGFibGVUb0NvZGVCbG9ja0VkZ2U+KHZtLmV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2VzV2l0aEZp
bmFsaXplcnMpOyAvLyBXZSBydW4gdGhpcyBiZWZvcmUgQ29kZUJsb2NrJ3MgdW5jb25kaXRpb25h
bCBmaW5hbGl6ZXIgc2luY2UgQ29kZUJsb2NrIGxvb2tzIGF0IHRoZSBvd25lciBleGVjdXRhYmxl
J3MgaW5zdGFsbGVkIENvZGVCbG9jayBpbiBpdHMgZmluYWxpemVVbmNvbmRpdGlvbmFsbHkuCi0g
ICAgdm0uZm9yRWFjaENvZGVCbG9ja1NwYWNlKAorICAgIGZpbmFsaXplTWFya2VkVW5jb25kaXRp
b25hbEZpbmFsaXplcnM8RnVuY3Rpb25FeGVjdXRhYmxlPihmdW5jdGlvbkV4ZWN1dGFibGVTcGFj
ZS5zcGFjZSk7CisgICAgZmluYWxpemVNYXJrZWRVbmNvbmRpdGlvbmFsRmluYWxpemVyczxTeW1i
b2xUYWJsZT4oc3ltYm9sVGFibGVTcGFjZSk7CisgICAgZmluYWxpemVNYXJrZWRVbmNvbmRpdGlv
bmFsRmluYWxpemVyczxFeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlPihleGVjdXRhYmxlVG9Db2Rl
QmxvY2tFZGdlc1dpdGhGaW5hbGl6ZXJzKTsgLy8gV2UgcnVuIHRoaXMgYmVmb3JlIENvZGVCbG9j
aydzIHVuY29uZGl0aW9uYWwgZmluYWxpemVyIHNpbmNlIENvZGVCbG9jayBsb29rcyBhdCB0aGUg
b3duZXIgZXhlY3V0YWJsZSdzIGluc3RhbGxlZCBDb2RlQmxvY2sgaW4gaXRzIGZpbmFsaXplVW5j
b25kaXRpb25hbGx5LgorICAgIGZvckVhY2hDb2RlQmxvY2tTcGFjZSgKICAgICAgICAgWyZdIChh
dXRvJiBzcGFjZSkgewogICAgICAgICAgICAgdGhpcy0+ZmluYWxpemVNYXJrZWRVbmNvbmRpdGlv
bmFsRmluYWxpemVyczxDb2RlQmxvY2s+KHNwYWNlLnNldCk7CiAgICAgICAgIH0pOwotICAgIGZp
bmFsaXplTWFya2VkVW5jb25kaXRpb25hbEZpbmFsaXplcnM8U3RydWN0dXJlUmFyZURhdGE+KHZt
LnN0cnVjdHVyZVJhcmVEYXRhU3BhY2UpOwotICAgIGZpbmFsaXplTWFya2VkVW5jb25kaXRpb25h
bEZpbmFsaXplcnM8VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU+KHZtLnVubGlua2VkRnVuY3Rp
b25FeGVjdXRhYmxlU3BhY2Uuc2V0KTsKLSAgICBpZiAodm0ubV93ZWFrU2V0U3BhY2UpCi0gICAg
ICAgIGZpbmFsaXplTWFya2VkVW5jb25kaXRpb25hbEZpbmFsaXplcnM8SlNXZWFrU2V0Pigqdm0u
bV93ZWFrU2V0U3BhY2UpOwotICAgIGlmICh2bS5tX3dlYWtNYXBTcGFjZSkKLSAgICAgICAgZmlu
YWxpemVNYXJrZWRVbmNvbmRpdGlvbmFsRmluYWxpemVyczxKU1dlYWtNYXA+KCp2bS5tX3dlYWtN
YXBTcGFjZSk7Ci0gICAgaWYgKHZtLm1fd2Vha09iamVjdFJlZlNwYWNlKQotICAgICAgICBmaW5h
bGl6ZU1hcmtlZFVuY29uZGl0aW9uYWxGaW5hbGl6ZXJzPEpTV2Vha09iamVjdFJlZj4oKnZtLm1f
d2Vha09iamVjdFJlZlNwYWNlKTsKLSAgICBpZiAodm0ubV9lcnJvckluc3RhbmNlU3BhY2UpCi0g
ICAgICAgIGZpbmFsaXplTWFya2VkVW5jb25kaXRpb25hbEZpbmFsaXplcnM8RXJyb3JJbnN0YW5j
ZT4oKnZtLm1fZXJyb3JJbnN0YW5jZVNwYWNlKTsKKyAgICBmaW5hbGl6ZU1hcmtlZFVuY29uZGl0
aW9uYWxGaW5hbGl6ZXJzPFN0cnVjdHVyZVJhcmVEYXRhPihzdHJ1Y3R1cmVSYXJlRGF0YVNwYWNl
KTsKKyAgICBmaW5hbGl6ZU1hcmtlZFVuY29uZGl0aW9uYWxGaW5hbGl6ZXJzPFVubGlua2VkRnVu
Y3Rpb25FeGVjdXRhYmxlPih1bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZVNwYWNlLnNldCk7Cisg
ICAgaWYgKG1fd2Vha1NldFNwYWNlKQorICAgICAgICBmaW5hbGl6ZU1hcmtlZFVuY29uZGl0aW9u
YWxGaW5hbGl6ZXJzPEpTV2Vha1NldD4oKm1fd2Vha1NldFNwYWNlKTsKKyAgICBpZiAobV93ZWFr
TWFwU3BhY2UpCisgICAgICAgIGZpbmFsaXplTWFya2VkVW5jb25kaXRpb25hbEZpbmFsaXplcnM8
SlNXZWFrTWFwPigqbV93ZWFrTWFwU3BhY2UpOworICAgIGlmIChtX3dlYWtPYmplY3RSZWZTcGFj
ZSkKKyAgICAgICAgZmluYWxpemVNYXJrZWRVbmNvbmRpdGlvbmFsRmluYWxpemVyczxKU1dlYWtP
YmplY3RSZWY+KCptX3dlYWtPYmplY3RSZWZTcGFjZSk7CisgICAgaWYgKG1fZXJyb3JJbnN0YW5j
ZVNwYWNlKQorICAgICAgICBmaW5hbGl6ZU1hcmtlZFVuY29uZGl0aW9uYWxGaW5hbGl6ZXJzPEVy
cm9ySW5zdGFuY2U+KCptX2Vycm9ySW5zdGFuY2VTcGFjZSk7CiAKICAgICAvLyBGaW5hbGl6YXRp
b25SZWdpc3RyaWVzIGN1cnJlbnRseSByZWx5IG9uIHNlcmlhbCBmaW5hbGl6YXRpb24gYmVjYXVz
ZSB0aGV5IGNhbiBwb3N0IHRhc2tzIHRvIHRoZSBkZWZlcnJlZFdvcmtUaW1lciwgd2hpY2ggbm9y
bWFsbHkgZXhwZWN0cyB0YXNrcyB0byBvbmx5IGJlIHBvc3RlZCBieSB0aGUgQVBJIGxvY2sgaG9s
ZGVyLgotICAgIGlmICh2bS5tX2ZpbmFsaXphdGlvblJlZ2lzdHJ5U3BhY2UpCi0gICAgICAgIGZp
bmFsaXplTWFya2VkVW5jb25kaXRpb25hbEZpbmFsaXplcnM8SlNGaW5hbGl6YXRpb25SZWdpc3Ry
eT4oKnZtLm1fZmluYWxpemF0aW9uUmVnaXN0cnlTcGFjZSk7CisgICAgaWYgKG1fZmluYWxpemF0
aW9uUmVnaXN0cnlTcGFjZSkKKyAgICAgICAgZmluYWxpemVNYXJrZWRVbmNvbmRpdGlvbmFsRmlu
YWxpemVyczxKU0ZpbmFsaXphdGlvblJlZ2lzdHJ5PigqbV9maW5hbGl6YXRpb25SZWdpc3RyeVNw
YWNlKTsKIAogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKLSAgICBpZiAodm0ubV93ZWJBc3NlbWJs
eUNvZGVCbG9ja1NwYWNlKQotICAgICAgICBmaW5hbGl6ZU1hcmtlZFVuY29uZGl0aW9uYWxGaW5h
bGl6ZXJzPEpTV2ViQXNzZW1ibHlDb2RlQmxvY2s+KCp2bS5tX3dlYkFzc2VtYmx5Q29kZUJsb2Nr
U3BhY2UpOworICAgIGlmIChtX3dlYkFzc2VtYmx5Q29kZUJsb2NrU3BhY2UpCisgICAgICAgIGZp
bmFsaXplTWFya2VkVW5jb25kaXRpb25hbEZpbmFsaXplcnM8SlNXZWJBc3NlbWJseUNvZGVCbG9j
az4oKm1fd2ViQXNzZW1ibHlDb2RlQmxvY2tTcGFjZSk7CiAjZW5kaWYKIH0KIApAQCAtOTA1LDcg
KzExMTIsNyBAQCB2b2lkIEhlYXA6OmRlbGV0ZUFsbENvZGVCbG9ja3MoRGVsZXRlQWxsCiAKICAg
ICBjb21wbGV0ZUFsbEpJVFBsYW5zKCk7CiAKLSAgICB2bS5mb3JFYWNoU2NyaXB0RXhlY3V0YWJs
ZVNwYWNlKAorICAgIGZvckVhY2hTY3JpcHRFeGVjdXRhYmxlU3BhY2UoCiAgICAgICAgIFsmXSAo
YXV0byYgc3BhY2VBbmRTZXQpIHsKICAgICAgICAgICAgIEhlYXBJdGVyYXRpb25TY29wZSBoZWFw
SXRlcmF0aW9uU2NvcGUoKnRoaXMpOwogICAgICAgICAgICAgYXV0byYgc2V0ID0gc3BhY2VBbmRT
ZXQuc2V0OwpAQCAtOTI0LDggKzExMzEsOCBAQCB2b2lkIEhlYXA6OmRlbGV0ZUFsbENvZGVCbG9j
a3MoRGVsZXRlQWxsCiAgICAgICAgIC8vIHBvaW50cyBpbnRvIGEgQ29kZUJsb2NrIHRoYXQgY291
bGQgYmUgZGVhZC4gVGhlIElDIHdpbGwgc3RpbGwgc3VjY2VlZCBiZWNhdXNlCiAgICAgICAgIC8v
IGl0IHVzZXMgYSBjYWxsZWUgY2hlY2ssIGJ1dCB0aGVuIGl0IHdpbGwgY2FsbCBpbnRvIGRlYWQg
Y29kZS4KICAgICAgICAgSGVhcEl0ZXJhdGlvblNjb3BlIGhlYXBJdGVyYXRpb25TY29wZSgqdGhp
cyk7Ci0gICAgICAgIGlmICh2bS5tX3dlYkFzc2VtYmx5Q29kZUJsb2NrU3BhY2UpIHsKLSAgICAg
ICAgICAgIHZtLm1fd2ViQXNzZW1ibHlDb2RlQmxvY2tTcGFjZS0+Zm9yRWFjaExpdmVDZWxsKFsm
XSAoSGVhcENlbGwqIGNlbGwsIEhlYXBDZWxsOjpLaW5kIGtpbmQpIHsKKyAgICAgICAgaWYgKG1f
d2ViQXNzZW1ibHlDb2RlQmxvY2tTcGFjZSkgeworICAgICAgICAgICAgbV93ZWJBc3NlbWJseUNv
ZGVCbG9ja1NwYWNlLT5mb3JFYWNoTGl2ZUNlbGwoWyZdIChIZWFwQ2VsbCogY2VsbCwgSGVhcENl
bGw6OktpbmQga2luZCkgewogICAgICAgICAgICAgICAgIEFTU0VSVF9VTlVTRUQoa2luZCwga2lu
ZCA9PSBIZWFwQ2VsbDo6SlNDZWxsKTsKICAgICAgICAgICAgICAgICBKU1dlYkFzc2VtYmx5Q29k
ZUJsb2NrKiBjb2RlQmxvY2sgPSBzdGF0aWNfY2FzdDxKU1dlYkFzc2VtYmx5Q29kZUJsb2NrKj4o
Y2VsbCk7CiAgICAgICAgICAgICAgICAgY29kZUJsb2NrLT5jbGVhckpTQ2FsbElDcyh2bSk7CkBA
IC05NDYsNyArMTE1Myw3IEBAIHZvaWQgSGVhcDo6ZGVsZXRlQWxsVW5saW5rZWRDb2RlQmxvY2tz
KEQKICAgICBSRUxFQVNFX0FTU0VSVCghbV9jb2xsZWN0aW9uU2NvcGUpOwogCiAgICAgSGVhcEl0
ZXJhdGlvblNjb3BlIGhlYXBJdGVyYXRpb25TY29wZSgqdGhpcyk7Ci0gICAgdm0udW5saW5rZWRG
dW5jdGlvbkV4ZWN1dGFibGVTcGFjZS5zZXQuZm9yRWFjaExpdmVDZWxsKAorICAgIHVubGlua2Vk
RnVuY3Rpb25FeGVjdXRhYmxlU3BhY2Uuc2V0LmZvckVhY2hMaXZlQ2VsbCgKICAgICAgICAgWyZd
IChIZWFwQ2VsbCogY2VsbCwgSGVhcENlbGw6OktpbmQpIHsKICAgICAgICAgICAgIFVubGlua2Vk
RnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlID0gc3RhdGljX2Nhc3Q8VW5saW5rZWRGdW5j
dGlvbkV4ZWN1dGFibGUqPihjZWxsKTsKICAgICAgICAgICAgIGV4ZWN1dGFibGUtPmNsZWFyQ29k
ZSh2bSk7CkBAIC05NTUsMTAgKzExNjIsMTAgQEAgdm9pZCBIZWFwOjpkZWxldGVBbGxVbmxpbmtl
ZENvZGVCbG9ja3MoRAogCiB2b2lkIEhlYXA6OmRlbGV0ZVVubWFya2VkQ29tcGlsZWRDb2RlKCkK
IHsKLSAgICB2bSgpLmZvckVhY2hTY3JpcHRFeGVjdXRhYmxlU3BhY2UoW10gKGF1dG8mIHNwYWNl
KSB7IHNwYWNlLnNwYWNlLnN3ZWVwKCk7IH0pOworICAgIGZvckVhY2hTY3JpcHRFeGVjdXRhYmxl
U3BhY2UoW10gKGF1dG8mIHNwYWNlKSB7IHNwYWNlLnNwYWNlLnN3ZWVwMygpOyB9KTsKICAgICAv
LyBTd2VlcGluZyBtdXN0IG9jY3VyIGJlZm9yZSBkZWxldGluZyBzdHVicywgb3RoZXJ3aXNlIHRo
ZSBzdHVicyBtaWdodCBzdGlsbCB0aGluayB0aGV5J3JlIGFsaXZlIGFzIHRoZXkgZ2V0IGRlbGV0
ZWQuCiAgICAgLy8gQW5kIENvZGVCbG9jayBkZXN0cnVjdG9yIGlzIGFzc3VtaW5nIHRoYXQgQ29k
ZUJsb2NrIGdldHMgZGVzdHJveWVkIGJlZm9yZSBVbmxpbmtlZENvZGVCbG9jayBnZXRzIGRlc3Ry
b3llZC4KLSAgICB2bSgpLmZvckVhY2hDb2RlQmxvY2tTcGFjZShbXSAoYXV0byYgc3BhY2UpIHsg
c3BhY2Uuc3BhY2Uuc3dlZXAoKTsgfSk7CisgICAgZm9yRWFjaENvZGVCbG9ja1NwYWNlKFtdIChh
dXRvJiBzcGFjZSkgeyBzcGFjZS5zcGFjZS5zd2VlcDMoKTsgfSk7CiAgICAgbV9qaXRTdHViUm91
dGluZXMtPmRlbGV0ZVVubWFya2VkSmV0dGlzb25lZFN0dWJSb3V0aW5lcygpOwogfQogCkBAIC0y
MTAzLDggKzIzMTAsOCBAQCB2b2lkIEhlYXA6OnN3ZWVwSW5GaW5hbGl6ZSgpCiAgICAgbV9vYmpl
Y3RTcGFjZS5zd2VlcFByZWNpc2VBbGxvY2F0aW9ucygpOwogI2lmIEVOQUJMRShXRUJBU1NFTUJM
WSkKICAgICAvLyBXZSBob2xkIG9udG8gYSBsb3Qgb2YgbWVtb3J5LCBzbyBpdCBtYWtlcyBhIGxv
dCBvZiBzZW5zZSB0byBiZSBzd2VwdCBlYWdlcmx5LgotICAgIGlmICh2bSgpLm1fd2ViQXNzZW1i
bHlNZW1vcnlTcGFjZSkKLSAgICAgICAgdm0oKS5tX3dlYkFzc2VtYmx5TWVtb3J5U3BhY2UtPnN3
ZWVwKCk7CisgICAgaWYgKG1fd2ViQXNzZW1ibHlNZW1vcnlTcGFjZSkKKyAgICAgICAgbV93ZWJB
c3NlbWJseU1lbW9yeVNwYWNlLT5zd2VlcDMoKTsKICNlbmRpZgogfQogCkBAIC0yODA1LDcgKzMw
MTIsNyBAQCB2b2lkIEhlYXA6OmFkZENvcmVDb25zdHJhaW50cygpCiAgICAgICAgICJPIiwgIk91
dHB1dCIsCiAgICAgICAgIE1BS0VfTUFSS0lOR19DT05TVFJBSU5UX0VYRUNVVE9SX1BBSVIoKFtd
IChhdXRvJiB2aXNpdG9yKSB7CiAgICAgICAgICAgICB1c2luZyBWaXNpdG9yID0gZGVjbHR5cGUo
dmlzaXRvcik7Ci0gICAgICAgICAgICBWTSYgdm0gPSB2aXNpdG9yLnZtKCk7CisgICAgICAgICAg
ICBIZWFwKiBoZWFwID0gdmlzaXRvci5oZWFwKCk7CiAKICAgICAgICAgICAgIC8vIFRoZSBgdmlz
aXRvcjJgIGFyZ3VtZW50IGlzIHN0cmFuZ2VseSBuYW1lZCBiZWNhdXNlIHRoZSBXaW5DYWlybyBw
b3J0CiAgICAgICAgICAgICAvLyBnZXRzIGNvbmZ1c2VkICBhbmQgdGhpbmtzIHdlJ3JlIHRyeWlu
ZyB0byBjYXB0dXJlIHRoZSBvdXRlciB2aXNpdG9yCkBAIC0yODI0LDExICszMDMxLDExIEBAIHZv
aWQgSGVhcDo6YWRkQ29yZUNvbnN0cmFpbnRzKCkKIAogICAgICAgICAgICAgewogICAgICAgICAg
ICAgICAgIFNldFJvb3RNYXJrUmVhc29uU2NvcGUgcm9vdFNjb3BlKHZpc2l0b3IsIFJvb3RNYXJr
UmVhc29uOjpFeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlcyk7Ci0gICAgICAgICAgICAgICAgYWRk
KHZtLmV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2VzV2l0aENvbnN0cmFpbnRzKTsKKyAgICAgICAg
ICAgICAgICBhZGQoaGVhcC0+ZXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZXNXaXRoQ29uc3RyYWlu
dHMpOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKHZtLm1fd2Vha01hcFNwYWNlKSB7
CisgICAgICAgICAgICBpZiAoaGVhcC0+bV93ZWFrTWFwU3BhY2UpIHsKICAgICAgICAgICAgICAg
ICBTZXRSb290TWFya1JlYXNvblNjb3BlIHJvb3RTY29wZSh2aXNpdG9yLCBSb290TWFya1JlYXNv
bjo6V2Vha01hcFNwYWNlKTsKLSAgICAgICAgICAgICAgICBhZGQoKnZtLm1fd2Vha01hcFNwYWNl
KTsKKyAgICAgICAgICAgICAgICBhZGQoKmhlYXAtPm1fd2Vha01hcFNwYWNlKTsKICAgICAgICAg
ICAgIH0KICAgICAgICAgfSkpLAogICAgICAgICBDb25zdHJhaW50Vm9sYXRpbGl0eTo6R3JleWVk
QnlNYXJraW5nLApAQCAtMzA2Miw0ICszMjY5LDEzNSBAQCB2b2lkIEhlYXA6OnZlcmlmeUdDKCkK
ICAgICBtX3ZlcmlmaWVyU2xvdFZpc2l0b3IgPSBudWxscHRyOwogfQogCisjZGVmaW5lIERZTkFN
SUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhuYW1lLCBoZWFwQ2VsbFR5cGUsIHR5
cGUpIFwKKyAgICBJc29TdWJzcGFjZSogSGVhcDo6bmFtZSMjU2xvdygpIFwKKyAgICB7IFwKKyAg
ICAgICAgQVNTRVJUKCFtXyMjbmFtZSk7IFwKKyAgICAgICAgYXV0byBzcGFjZSA9IG1ha2VVbmlx
dWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKCp0aGlzLCBoZWFwQ2VsbFR5cGUsIHR5
cGUpOyBcCisgICAgICAgIFdURjo6c3RvcmVTdG9yZUZlbmNlKCk7IFwKKyAgICAgICAgbV8jI25h
bWUgPSBXVEZNb3ZlKHNwYWNlKTsgXAorICAgICAgICByZXR1cm4gbV8jI25hbWUuZ2V0KCk7IFwK
KyAgICB9CisKKworRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGFwaUds
b2JhbE9iamVjdFNwYWNlLCBhcGlHbG9iYWxPYmplY3RIZWFwQ2VsbFR5cGUsIEpTQVBJR2xvYmFs
T2JqZWN0KQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGFwaVZhbHVl
V3JhcHBlclNwYWNlLCBjZWxsSGVhcENlbGxUeXBlLCBKU0FQSVZhbHVlV3JhcHBlcikKK0RZTkFN
SUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhhcnJheUJ1ZmZlclNwYWNlLCBjZWxs
SGVhcENlbGxUeXBlLCBKU0FycmF5QnVmZmVyKQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5F
X01FTUJFUl9TTE9XKGFycmF5SXRlcmF0b3JTcGFjZSwgY2VsbEhlYXBDZWxsVHlwZSwgSlNBcnJh
eUl0ZXJhdG9yKQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGFzeW5j
R2VuZXJhdG9yU3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUsIEpTQXN5bmNHZW5lcmF0b3IpCitEWU5B
TUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coYmlnSW50NjRBcnJheVNwYWNlLCBj
ZWxsSGVhcENlbGxUeXBlLCBKU0JpZ0ludDY0QXJyYXkpCitEWU5BTUlDX0lTT19TVUJTUEFDRV9E
RUZJTkVfTUVNQkVSX1NMT1coYmlnSW50T2JqZWN0U3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUsIEJp
Z0ludE9iamVjdCkKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhiaWdV
aW50NjRBcnJheVNwYWNlLCBjZWxsSGVhcENlbGxUeXBlLCBKU0JpZ1VpbnQ2NEFycmF5KQorRFlO
QU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGJvb2xlYW5PYmplY3RTcGFjZSwg
Y2VsbEhlYXBDZWxsVHlwZSwgQm9vbGVhbk9iamVjdCkKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RF
RklORV9NRU1CRVJfU0xPVyhib3VuZEZ1bmN0aW9uU3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUsIEpT
Qm91bmRGdW5jdGlvbikgLy8gSGFzaDoweGQ3OTE2ZDQxCitEWU5BTUlDX0lTT19TVUJTUEFDRV9E
RUZJTkVfTUVNQkVSX1NMT1coY2FsbGJhY2tDb25zdHJ1Y3RvclNwYWNlLCBjYWxsYmFja0NvbnN0
cnVjdG9ySGVhcENlbGxUeXBlLCBKU0NhbGxiYWNrQ29uc3RydWN0b3IpCitEWU5BTUlDX0lTT19T
VUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coY2FsbGJhY2tHbG9iYWxPYmplY3RTcGFjZSwgY2Fs
bGJhY2tHbG9iYWxPYmplY3RIZWFwQ2VsbFR5cGUsIEpTQ2FsbGJhY2tPYmplY3Q8SlNHbG9iYWxP
YmplY3Q+KQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGNhbGxiYWNr
RnVuY3Rpb25TcGFjZSwgY2VsbEhlYXBDZWxsVHlwZSwgSlNDYWxsYmFja0Z1bmN0aW9uKSAvLyBI
YXNoOjB4ZTc2NDhlYmMKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhj
YWxsYmFja09iamVjdFNwYWNlLCBjYWxsYmFja09iamVjdEhlYXBDZWxsVHlwZSwgSlNDYWxsYmFj
a09iamVjdDxKU05vbkZpbmFsT2JqZWN0PikKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9N
RU1CRVJfU0xPVyhjdXN0b21HZXR0ZXJGdW5jdGlvblNwYWNlLCBjdXN0b21HZXR0ZXJGdW5jdGlv
bkhlYXBDZWxsVHlwZSwgSlNDdXN0b21HZXR0ZXJGdW5jdGlvbikKK0RZTkFNSUNfSVNPX1NVQlNQ
QUNFX0RFRklORV9NRU1CRVJfU0xPVyhjdXN0b21TZXR0ZXJGdW5jdGlvblNwYWNlLCBjdXN0b21T
ZXR0ZXJGdW5jdGlvbkhlYXBDZWxsVHlwZSwgSlNDdXN0b21TZXR0ZXJGdW5jdGlvbikKK0RZTkFN
SUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhkYXRhVmlld1NwYWNlLCBjZWxsSGVh
cENlbGxUeXBlLCBKU0RhdGFWaWV3KQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJF
Ul9TTE9XKGRlYnVnZ2VyU2NvcGVTcGFjZSwgY2VsbEhlYXBDZWxsVHlwZSwgRGVidWdnZXJTY29w
ZSkKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhlcnJvckluc3RhbmNl
U3BhY2UsIGVycm9ySW5zdGFuY2VIZWFwQ2VsbFR5cGUsIEVycm9ySW5zdGFuY2UpIC8vIEhhc2g6
MHgzZjQwZDRhCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coZmxvYXQz
MkFycmF5U3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUsIEpTRmxvYXQzMkFycmF5KQorRFlOQU1JQ19J
U09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGZsb2F0NjRBcnJheVNwYWNlLCBjZWxsSGVh
cENlbGxUeXBlLCBKU0Zsb2F0NjRBcnJheSkKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9N
RU1CRVJfU0xPVyhmdW5jdGlvblJhcmVEYXRhU3BhY2UsIGRlc3RydWN0aWJsZUNlbGxIZWFwQ2Vs
bFR5cGUsIEZ1bmN0aW9uUmFyZURhdGEpCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVN
QkVSX1NMT1coZ2VuZXJhdG9yU3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUsIEpTR2VuZXJhdG9yKQor
RFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGdsb2JhbE9iamVjdFNwYWNl
LCBnbG9iYWxPYmplY3RIZWFwQ2VsbFR5cGUsIEpTR2xvYmFsT2JqZWN0KQorRFlOQU1JQ19JU09f
U1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGluamVjdGVkU2NyaXB0SG9zdFNwYWNlLCBpbmpl
Y3RlZFNjcmlwdEhvc3RTcGFjZUhlYXBDZWxsVHlwZSwgSW5zcGVjdG9yOjpKU0luamVjdGVkU2Ny
aXB0SG9zdCkKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhpbnQ4QXJy
YXlTcGFjZSwgY2VsbEhlYXBDZWxsVHlwZSwgSlNJbnQ4QXJyYXkpCitEWU5BTUlDX0lTT19TVUJT
UEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coaW50MTZBcnJheVNwYWNlLCBjZWxsSGVhcENlbGxUeXBl
LCBKU0ludDE2QXJyYXkpCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1co
aW50MzJBcnJheVNwYWNlLCBjZWxsSGVhcENlbGxUeXBlLCBKU0ludDMyQXJyYXkpCitEWU5BTUlD
X0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coamF2YVNjcmlwdENhbGxGcmFtZVNwYWNl
LCBqYXZhU2NyaXB0Q2FsbEZyYW1lSGVhcENlbGxUeXBlLCBJbnNwZWN0b3I6OkpTSmF2YVNjcmlw
dENhbGxGcmFtZSkKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhqc01v
ZHVsZVJlY29yZFNwYWNlLCBqc01vZHVsZVJlY29yZEhlYXBDZWxsVHlwZSwgSlNNb2R1bGVSZWNv
cmQpCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1cobWFwQnVja2V0U3Bh
Y2UsIGNlbGxIZWFwQ2VsbFR5cGUsIEpTTWFwOjpCdWNrZXRUeXBlKQorRFlOQU1JQ19JU09fU1VC
U1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKG1hcEl0ZXJhdG9yU3BhY2UsIGNlbGxIZWFwQ2VsbFR5
cGUsIEpTTWFwSXRlcmF0b3IpCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NM
T1cobWFwU3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUsIEpTTWFwKQorRFlOQU1JQ19JU09fU1VCU1BB
Q0VfREVGSU5FX01FTUJFUl9TTE9XKG1vZHVsZU5hbWVzcGFjZU9iamVjdFNwYWNlLCBtb2R1bGVO
YW1lc3BhY2VPYmplY3RIZWFwQ2VsbFR5cGUsIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0KQorRFlO
QU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKG5hdGl2ZVN0ZEZ1bmN0aW9uU3Bh
Y2UsIG5hdGl2ZVN0ZEZ1bmN0aW9uSGVhcENlbGxUeXBlLCBKU05hdGl2ZVN0ZEZ1bmN0aW9uKSAv
LyBIYXNoOjB4NzBlZDYxZTQKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xP
Vyhwcm94eU9iamVjdFNwYWNlLCBjZWxsSGVhcENlbGxUeXBlLCBQcm94eU9iamVjdCkKK0RZTkFN
SUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhwcm94eVJldm9rZVNwYWNlLCBjZWxs
SGVhcENlbGxUeXBlLCBQcm94eVJldm9rZSkgLy8gSGFzaDoweGI1MDZhOTM5CitEWU5BTUlDX0lT
T19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coc2NvcGVkQXJndW1lbnRzVGFibGVTcGFjZSwg
ZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZSwgU2NvcGVkQXJndW1lbnRzVGFibGUpCitEWU5B
TUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coc2NyaXB0RmV0Y2hQYXJhbWV0ZXJz
U3BhY2UsIGRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUsIEpTU2NyaXB0RmV0Y2hQYXJhbWV0
ZXJzKQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHNjcmlwdEZldGNo
ZXJTcGFjZSwgZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZSwgSlNTY3JpcHRGZXRjaGVyKQor
RFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHNldEJ1Y2tldFNwYWNlLCBj
ZWxsSGVhcENlbGxUeXBlLCBKU1NldDo6QnVja2V0VHlwZSkKK0RZTkFNSUNfSVNPX1NVQlNQQUNF
X0RFRklORV9NRU1CRVJfU0xPVyhzZXRJdGVyYXRvclNwYWNlLCBjZWxsSGVhcENlbGxUeXBlLCBK
U1NldEl0ZXJhdG9yKQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHNl
dFNwYWNlLCBjZWxsSGVhcENlbGxUeXBlLCBKU1NldCkKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RF
RklORV9NRU1CRVJfU0xPVyhzaGFkb3dSZWFsbVNwYWNlLCBjZWxsSGVhcENlbGxUeXBlLCBTaGFk
b3dSZWFsbU9iamVjdCkKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhz
dHJpY3RFdmFsQWN0aXZhdGlvblNwYWNlLCBjZWxsSGVhcENlbGxUeXBlLCBTdHJpY3RFdmFsQWN0
aXZhdGlvbikKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhzdHJpbmdJ
dGVyYXRvclNwYWNlLCBjZWxsSGVhcENlbGxUeXBlLCBKU1N0cmluZ0l0ZXJhdG9yKQorRFlOQU1J
Q19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHNvdXJjZUNvZGVTcGFjZSwgZGVzdHJ1
Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZSwgSlNTb3VyY2VDb2RlKQorRFlOQU1JQ19JU09fU1VCU1BB
Q0VfREVGSU5FX01FTUJFUl9TTE9XKHN5bWJvbFNwYWNlLCBkZXN0cnVjdGlibGVDZWxsSGVhcENl
bGxUeXBlLCBTeW1ib2wpCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1co
c3ltYm9sT2JqZWN0U3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUsIFN5bWJvbE9iamVjdCkKK0RZTkFN
SUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh0ZW1wbGF0ZU9iamVjdERlc2NyaXB0
b3JTcGFjZSwgZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZSwgSlNUZW1wbGF0ZU9iamVjdERl
c2NyaXB0b3IpCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1codGVtcG9y
YWxDYWxlbmRhclNwYWNlLCBjZWxsSGVhcENlbGxUeXBlLCBUZW1wb3JhbENhbGVuZGFyKQorRFlO
QU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHRlbXBvcmFsRHVyYXRpb25TcGFj
ZSwgY2VsbEhlYXBDZWxsVHlwZSwgVGVtcG9yYWxEdXJhdGlvbikKK0RZTkFNSUNfSVNPX1NVQlNQ
QUNFX0RFRklORV9NRU1CRVJfU0xPVyh0ZW1wb3JhbEluc3RhbnRTcGFjZSwgY2VsbEhlYXBDZWxs
VHlwZSwgVGVtcG9yYWxJbnN0YW50KQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJF
Ul9TTE9XKHRlbXBvcmFsUGxhaW5UaW1lU3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUsIFRlbXBvcmFs
UGxhaW5UaW1lKQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHRlbXBv
cmFsVGltZVpvbmVTcGFjZSwgY2VsbEhlYXBDZWxsVHlwZSwgVGVtcG9yYWxUaW1lWm9uZSkKK0RZ
TkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh1aW50OEFycmF5U3BhY2UsIGNl
bGxIZWFwQ2VsbFR5cGUsIEpTVWludDhBcnJheSkKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklO
RV9NRU1CRVJfU0xPVyh1aW50OENsYW1wZWRBcnJheVNwYWNlLCBjZWxsSGVhcENlbGxUeXBlLCBK
U1VpbnQ4Q2xhbXBlZEFycmF5KQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9T
TE9XKHVpbnQxNkFycmF5U3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUsIEpTVWludDE2QXJyYXkpCitE
WU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1codWludDMyQXJyYXlTcGFjZSwg
Y2VsbEhlYXBDZWxsVHlwZSwgSlNVaW50MzJBcnJheSkKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RF
RklORV9NRU1CRVJfU0xPVyh1bmxpbmtlZEV2YWxDb2RlQmxvY2tTcGFjZSwgZGVzdHJ1Y3RpYmxl
Q2VsbEhlYXBDZWxsVHlwZSwgVW5saW5rZWRFdmFsQ29kZUJsb2NrKQorRFlOQU1JQ19JU09fU1VC
U1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2tTcGFjZSwg
ZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZSwgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jaykK
K0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh1bmxpbmtlZE1vZHVsZVBy
b2dyYW1Db2RlQmxvY2tTcGFjZSwgZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZSwgVW5saW5r
ZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01F
TUJFUl9TTE9XKHVubGlua2VkUHJvZ3JhbUNvZGVCbG9ja1NwYWNlLCBkZXN0cnVjdGlibGVDZWxs
SGVhcENlbGxUeXBlLCBVbmxpbmtlZFByb2dyYW1Db2RlQmxvY2spCitEWU5BTUlDX0lTT19TVUJT
UEFDRV9ERUZJTkVfTUVNQkVSX1NMT1cod2Vha01hcFNwYWNlLCB3ZWFrTWFwSGVhcENlbGxUeXBl
LCBKU1dlYWtNYXApIC8vIEhhc2g6MHg2NjJiMTJhMworRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVG
SU5FX01FTUJFUl9TTE9XKHdlYWtTZXRTcGFjZSwgd2Vha1NldEhlYXBDZWxsVHlwZSwgSlNXZWFr
U2V0KSAvLyBIYXNoOjB4NGM3ODFiMzAKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1C
RVJfU0xPVyh3ZWFrT2JqZWN0UmVmU3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUsIEpTV2Vha09iamVj
dFJlZikgLy8gSGFzaDoweDhlYzY4ZjFmCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVN
QkVSX1NMT1cod2l0aFNjb3BlU3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUsIEpTV2l0aFNjb3BlKQor
RFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGZpbmFsaXphdGlvblJlZ2lz
dHJ5U3BhY2UsIGZpbmFsaXphdGlvblJlZ2lzdHJ5Q2VsbFR5cGUsIEpTRmluYWxpemF0aW9uUmVn
aXN0cnkpCisjaWYgSlNDX09CSkNfQVBJX0VOQUJMRUQKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RF
RklORV9NRU1CRVJfU0xPVyhhcGlXcmFwcGVyT2JqZWN0U3BhY2UsIGFwaVdyYXBwZXJPYmplY3RI
ZWFwQ2VsbFR5cGUsIEpTQ2FsbGJhY2tPYmplY3Q8SlNBUElXcmFwcGVyT2JqZWN0PikKK0RZTkFN
SUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhvYmpDQ2FsbGJhY2tGdW5jdGlvblNw
YWNlLCBvYmpDQ2FsbGJhY2tGdW5jdGlvbkhlYXBDZWxsVHlwZSwgT2JqQ0NhbGxiYWNrRnVuY3Rp
b24pIC8vIEhhc2g6MHgxMGY2MTBiOAorI2VuZGlmCisjaWZkZWYgSlNDX0dMSUJfQVBJX0VOQUJM
RUQKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhhcGlXcmFwcGVyT2Jq
ZWN0U3BhY2UsIGFwaVdyYXBwZXJPYmplY3RIZWFwQ2VsbFR5cGUsIEpTQ2FsbGJhY2tPYmplY3Q8
SlNBUElXcmFwcGVyT2JqZWN0PikKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJf
U0xPVyhqc2NDYWxsYmFja0Z1bmN0aW9uU3BhY2UsIGpzY0NhbGxiYWNrRnVuY3Rpb25IZWFwQ2Vs
bFR5cGUsIEpTQ0NhbGxiYWNrRnVuY3Rpb24pCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVf
TUVNQkVSX1NMT1coY2FsbGJhY2tBUElXcmFwcGVyR2xvYmFsT2JqZWN0U3BhY2UsIGNhbGxiYWNr
QVBJV3JhcHBlckdsb2JhbE9iamVjdEhlYXBDZWxsVHlwZSwgSlNDYWxsYmFja09iamVjdDxKU0FQ
SVdyYXBwZXJHbG9iYWxPYmplY3Q+KQorI2VuZGlmCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJ
TkVfTUVNQkVSX1NMT1coaW50bENvbGxhdG9yU3BhY2UsIGludGxDb2xsYXRvckhlYXBDZWxsVHlw
ZSwgSW50bENvbGxhdG9yKQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9X
KGludGxEYXRlVGltZUZvcm1hdFNwYWNlLCBpbnRsRGF0ZVRpbWVGb3JtYXRIZWFwQ2VsbFR5cGUs
IEludGxEYXRlVGltZUZvcm1hdCkKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJf
U0xPVyhpbnRsRGlzcGxheU5hbWVzU3BhY2UsIGludGxEaXNwbGF5TmFtZXNIZWFwQ2VsbFR5cGUs
IEludGxEaXNwbGF5TmFtZXMpCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NM
T1coaW50bExpc3RGb3JtYXRTcGFjZSwgaW50bExpc3RGb3JtYXRIZWFwQ2VsbFR5cGUsIEludGxM
aXN0Rm9ybWF0KQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGludGxM
b2NhbGVTcGFjZSwgaW50bExvY2FsZUhlYXBDZWxsVHlwZSwgSW50bExvY2FsZSkKK0RZTkFNSUNf
SVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhpbnRsTnVtYmVyRm9ybWF0U3BhY2UsIGlu
dGxOdW1iZXJGb3JtYXRIZWFwQ2VsbFR5cGUsIEludGxOdW1iZXJGb3JtYXQpCitEWU5BTUlDX0lT
T19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coaW50bFBsdXJhbFJ1bGVzU3BhY2UsIGludGxQ
bHVyYWxSdWxlc0hlYXBDZWxsVHlwZSwgSW50bFBsdXJhbFJ1bGVzKQorRFlOQU1JQ19JU09fU1VC
U1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGludGxSZWxhdGl2ZVRpbWVGb3JtYXRTcGFjZSwgaW50
bFJlbGF0aXZlVGltZUZvcm1hdEhlYXBDZWxsVHlwZSwgSW50bFJlbGF0aXZlVGltZUZvcm1hdCkK
K0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhpbnRsU2VnbWVudEl0ZXJh
dG9yU3BhY2UsIGludGxTZWdtZW50SXRlcmF0b3JIZWFwQ2VsbFR5cGUsIEludGxTZWdtZW50SXRl
cmF0b3IpCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coaW50bFNlZ21l
bnRlclNwYWNlLCBpbnRsU2VnbWVudGVySGVhcENlbGxUeXBlLCBJbnRsU2VnbWVudGVyKQorRFlO
QU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGludGxTZWdtZW50c1NwYWNlLCBp
bnRsU2VnbWVudHNIZWFwQ2VsbFR5cGUsIEludGxTZWdtZW50cykKKyNpZiBFTkFCTEUoV0VCQVNT
RU1CTFkpCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coanNUb1dhc21J
Q0NhbGxlZVNwYWNlLCBjZWxsSGVhcENlbGxUeXBlLCBKU1RvV2FzbUlDQ2FsbGVlKQorRFlOQU1J
Q19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHdlYkFzc2VtYmx5Q29kZUJsb2NrU3Bh
Y2UsIHdlYkFzc2VtYmx5Q29kZUJsb2NrSGVhcENlbGxUeXBlLCBKU1dlYkFzc2VtYmx5Q29kZUJs
b2NrKSAvLyBIYXNoOjB4OWFkOTk1Y2QKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1C
RVJfU0xPVyh3ZWJBc3NlbWJseUV4Y2VwdGlvblNwYWNlLCB3ZWJBc3NlbWJseUV4Y2VwdGlvbkhl
YXBDZWxsVHlwZSwgSlNXZWJBc3NlbWJseUV4Y2VwdGlvbikKK0RZTkFNSUNfSVNPX1NVQlNQQUNF
X0RFRklORV9NRU1CRVJfU0xPVyh3ZWJBc3NlbWJseUZ1bmN0aW9uU3BhY2UsIHdlYkFzc2VtYmx5
RnVuY3Rpb25IZWFwQ2VsbFR5cGUsIFdlYkFzc2VtYmx5RnVuY3Rpb24pIC8vIEhhc2g6MHg4Yjdj
MzJkYgorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHdlYkFzc2VtYmx5
R2xvYmFsU3BhY2UsIHdlYkFzc2VtYmx5R2xvYmFsSGVhcENlbGxUeXBlLCBKU1dlYkFzc2VtYmx5
R2xvYmFsKQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHdlYkFzc2Vt
Ymx5SW5zdGFuY2VTcGFjZSwgd2ViQXNzZW1ibHlJbnN0YW5jZUhlYXBDZWxsVHlwZSwgSlNXZWJB
c3NlbWJseUluc3RhbmNlKQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9X
KHdlYkFzc2VtYmx5TWVtb3J5U3BhY2UsIHdlYkFzc2VtYmx5TWVtb3J5SGVhcENlbGxUeXBlLCBK
U1dlYkFzc2VtYmx5TWVtb3J5KQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9T
TE9XKHdlYkFzc2VtYmx5TW9kdWxlU3BhY2UsIHdlYkFzc2VtYmx5TW9kdWxlSGVhcENlbGxUeXBl
LCBKU1dlYkFzc2VtYmx5TW9kdWxlKQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJF
Ul9TTE9XKHdlYkFzc2VtYmx5TW9kdWxlUmVjb3JkU3BhY2UsIHdlYkFzc2VtYmx5TW9kdWxlUmVj
b3JkSGVhcENlbGxUeXBlLCBXZWJBc3NlbWJseU1vZHVsZVJlY29yZCkKK0RZTkFNSUNfSVNPX1NV
QlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh3ZWJBc3NlbWJseVRhYmxlU3BhY2UsIHdlYkFzc2Vt
Ymx5VGFibGVIZWFwQ2VsbFR5cGUsIEpTV2ViQXNzZW1ibHlUYWJsZSkKK0RZTkFNSUNfSVNPX1NV
QlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh3ZWJBc3NlbWJseVRhZ1NwYWNlLCB3ZWJBc3NlbWJs
eVRhZ0hlYXBDZWxsVHlwZSwgSlNXZWJBc3NlbWJseVRhZykKK0RZTkFNSUNfSVNPX1NVQlNQQUNF
X0RFRklORV9NRU1CRVJfU0xPVyh3ZWJBc3NlbWJseVdyYXBwZXJGdW5jdGlvblNwYWNlLCBjZWxs
SGVhcENlbGxUeXBlLCBXZWJBc3NlbWJseVdyYXBwZXJGdW5jdGlvbikgLy8gSGFzaDoweGQ0YTVm
ZjAxCisjZW5kaWYKKworI3VuZGVmIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJf
U0xPVworCisjZGVmaW5lIERZTkFNSUNfU1BBQ0VfQU5EX1NFVF9ERUZJTkVfTUVNQkVSX1NMT1co
bmFtZSwgaGVhcENlbGxUeXBlLCB0eXBlKSBcCisgICAgSXNvU3Vic3BhY2UqIEhlYXA6Om5hbWUj
I1Nsb3coKSBcCisgICAgeyBcCisgICAgICAgIEFTU0VSVCghbV8jI25hbWUpOyBcCisgICAgICAg
IGF1dG8gc3BhY2UgPSBtYWtlVW5pcXVlPFNwYWNlQW5kU2V0PiBJU09fU1VCU1BBQ0VfSU5JVCgq
dGhpcywgaGVhcENlbGxUeXBlLCB0eXBlKTsgXAorICAgICAgICBXVEY6OnN0b3JlU3RvcmVGZW5j
ZSgpOyBcCisgICAgICAgIG1fIyNuYW1lID0gV1RGTW92ZShzcGFjZSk7IFwKKyAgICAgICAgcmV0
dXJuICZtXyMjbmFtZS0+c3BhY2U7IFwKKyAgICB9CisKK0RZTkFNSUNfU1BBQ0VfQU5EX1NFVF9E
RUZJTkVfTUVNQkVSX1NMT1coZXZhbEV4ZWN1dGFibGVTcGFjZSwgZGVzdHJ1Y3RpYmxlQ2VsbEhl
YXBDZWxsVHlwZSwgRXZhbEV4ZWN1dGFibGUpIC8vIEhhc2g6MHg5NThlM2U5ZAorRFlOQU1JQ19T
UEFDRV9BTkRfU0VUX0RFRklORV9NRU1CRVJfU0xPVyhtb2R1bGVQcm9ncmFtRXhlY3V0YWJsZVNw
YWNlLCBkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlLCBNb2R1bGVQcm9ncmFtRXhlY3V0YWJs
ZSkgLy8gSGFzaDoweDY1MDZmYTNjCisKKyN1bmRlZiBEWU5BTUlDX1NQQUNFX0FORF9TRVRfREVG
SU5FX01FTUJFUl9TTE9XCisKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvSGVhcC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL0hlYXAuaAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvSGVhcC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw2ICsyNSw3IEBACiAjaW5jbHVkZSAi
Q2VsbFN0YXRlLmgiCiAjaW5jbHVkZSAiQ29sbGVjdGlvblNjb3BlLmgiCiAjaW5jbHVkZSAiQ29s
bGVjdG9yUGhhc2UuaCIKKyNpbmNsdWRlICJDb21wbGV0ZVN1YnNwYWNlLmgiCiAjaW5jbHVkZSAi
RGVsZXRlQWxsQ29kZUVmZm9ydC5oIgogI2luY2x1ZGUgIkdDQ29uZHVjdG9yLmgiCiAjaW5jbHVk
ZSAiR0NJbmNvbWluZ1JlZkNvdW50ZWRTZXQuaCIKQEAgLTMzLDYgKzM0LDExIEBACiAjaW5jbHVk
ZSAiSGFuZGxlU2V0LmgiCiAjaW5jbHVkZSAiSGVhcEZpbmFsaXplckNhbGxiYWNrLmgiCiAjaW5j
bHVkZSAiSGVhcE9ic2VydmVyLmgiCisjaW5jbHVkZSAiSXNvQ2VsbFNldC5oIgorI2luY2x1ZGUg
Iklzb0hlYXBDZWxsVHlwZS5oIgorI2luY2x1ZGUgIklzb0lubGluZWRIZWFwQ2VsbFR5cGUuaCIK
KyNpbmNsdWRlICJJc29TdWJzcGFjZS5oIgorI2luY2x1ZGUgIkpTRGVzdHJ1Y3RpYmxlT2JqZWN0
SGVhcENlbGxUeXBlLmgiCiAjaW5jbHVkZSAiTWFya2VkQmxvY2suaCIKICNpbmNsdWRlICJNYXJr
ZWRTcGFjZS5oIgogI2luY2x1ZGUgIk11dGF0b3JTdGF0ZS5oIgpAQCAtNTAsMzIgKzU2LDY1IEBA
CiAjaW5jbHVkZSA8d3RmL1BhcmFsbGVsSGVscGVyUG9vbC5oPgogI2luY2x1ZGUgPHd0Zi9UaHJl
YWRpbmcuaD4KIAorbmFtZXNwYWNlIEluc3BlY3RvciB7CitjbGFzcyBKU0luamVjdGVkU2NyaXB0
SG9zdDsKK2NsYXNzIEpTSmF2YVNjcmlwdENhbGxGcmFtZTsKK30KKwogbmFtZXNwYWNlIEpTQyB7
CiAKK2NsYXNzIEJsb2NrRGlyZWN0b3J5OwogY2xhc3MgQ29kZUJsb2NrOwogY2xhc3MgQ29kZUJs
b2NrU2V0OwogY2xhc3MgQ29sbGVjdGluZ1Njb3BlOwogY2xhc3MgQ29uc2VydmF0aXZlUm9vdHM7
Ci1jbGFzcyBHQ0RlZmVycmFsQ29udGV4dDsKK2NsYXNzIERhdGVJbnN0YW5jZTsKIGNsYXNzIEVk
ZW5HQ0FjdGl2aXR5Q2FsbGJhY2s7CitjbGFzcyBFcnJvckluc3RhbmNlOworY2xhc3MgRmFzdE1h
bGxvY0FsaWduZWRNZW1vcnlBbGxvY2F0b3I7CiBjbGFzcyBGdWxsR0NBY3Rpdml0eUNhbGxiYWNr
OwogY2xhc3MgR0NBY3Rpdml0eUNhbGxiYWNrOwogY2xhc3MgR0NBd2FyZUpJVFN0dWJSb3V0aW5l
OworY2xhc3MgR0NEZWZlcnJhbENvbnRleHQ7CitjbGFzcyBHaWdhY2FnZUFsaWduZWRNZW1vcnlB
bGxvY2F0b3I7CiBjbGFzcyBIZWFwOwogY2xhc3MgSGVhcFByb2ZpbGVyOwogY2xhc3MgSGVhcFZl
cmlmaWVyOwogY2xhc3MgSW5jcmVtZW50YWxTd2VlcGVyOworY2xhc3MgSW50bENvbGxhdG9yOwor
Y2xhc3MgSW50bERhdGVUaW1lRm9ybWF0OworY2xhc3MgSW50bERpc3BsYXlOYW1lczsKK2NsYXNz
IEludGxMaXN0Rm9ybWF0OworY2xhc3MgSW50bExvY2FsZTsKK2NsYXNzIEludGxOdW1iZXJGb3Jt
YXQ7CitjbGFzcyBJbnRsUGx1cmFsUnVsZXM7CitjbGFzcyBJbnRsUmVsYXRpdmVUaW1lRm9ybWF0
OworY2xhc3MgSW50bFNlZ21lbnRJdGVyYXRvcjsKK2NsYXNzIEludGxTZWdtZW50ZXI7CitjbGFz
cyBJbnRsU2VnbWVudHM7CiBjbGFzcyBKSVRTdHViUm91dGluZTsKIGNsYXNzIEpJVFN0dWJSb3V0
aW5lU2V0OworY2xhc3MgSlNBUElHbG9iYWxPYmplY3Q7CitjbGFzcyBKU0NhbGxiYWNrQ29uc3Ry
dWN0b3I7CiBjbGFzcyBKU0NlbGw7CitjbGFzcyBKU0N1c3RvbUdldHRlckZ1bmN0aW9uOworY2xh
c3MgSlNDdXN0b21TZXR0ZXJGdW5jdGlvbjsKK2NsYXNzIEpTRmluYWxpemF0aW9uUmVnaXN0cnk7
CitjbGFzcyBKU0dsb2JhbExleGljYWxFbnZpcm9ubWVudDsKK2NsYXNzIEpTR2xvYmFsT2JqZWN0
OwogY2xhc3MgSlNJbW11dGFibGVCdXR0ZXJmbHk7CitjbGFzcyBKU01vZHVsZU5hbWVzcGFjZU9i
amVjdDsKK2NsYXNzIEpTTW9kdWxlUmVjb3JkOworY2xhc3MgSlNOYXRpdmVTdGRGdW5jdGlvbjsK
K2NsYXNzIEpTTm9uRmluYWxPYmplY3Q7CitjbGFzcyBKU1N0cmluZzsKIGNsYXNzIEpTVmFsdWU7
Ci1jbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CitjbGFzcyBKU1dlYWtNYXA7CitjbGFzcyBK
U1dlYWtTZXQ7CiBjbGFzcyBNYWNoaW5lVGhyZWFkczsKIGNsYXNzIE1hcmtTdGFja0FycmF5Owog
Y2xhc3MgTWFya1N0YWNrTWVyZ2luZ0NvbnN0cmFpbnQ7CiBjbGFzcyBNYXJrZWRKU1ZhbHVlUmVm
QXJyYXk7Ci1jbGFzcyBCbG9ja0RpcmVjdG9yeTsKIGNsYXNzIE1hcmtlZEFyZ3VtZW50QnVmZmVy
QmFzZTsKIGNsYXNzIE1hcmtpbmdDb25zdHJhaW50OwogY2xhc3MgTWFya2luZ0NvbnN0cmFpbnRT
ZXQ7CkBAIC05MCw3ICsxMjksMzAgQEAgY2xhc3MgVmVyaWZpZXJTbG90VmlzaXRvcjsKIGNsYXNz
IFdlYWtHQ0hhc2hUYWJsZTsKIHN0cnVjdCBDdXJyZW50VGhyZWFkU3RhdGU7CiAKK3RlbXBsYXRl
IDxjbGFzcyBQYXJlbnQ+IGNsYXNzIEpTQ2FsbGJhY2tPYmplY3Q7CisKKyNpZiBFTkFCTEUoV0VC
QVNTRU1CTFkpCitjbGFzcyBKU1dlYkFzc2VtYmx5Q29kZUJsb2NrOworY2xhc3MgSlNXZWJBc3Nl
bWJseUV4Y2VwdGlvbjsKK2NsYXNzIEpTV2ViQXNzZW1ibHlHbG9iYWw7CitjbGFzcyBKU1dlYkFz
c2VtYmx5SW5zdGFuY2U7CitjbGFzcyBKU1dlYkFzc2VtYmx5TWVtb3J5OworY2xhc3MgSlNXZWJB
c3NlbWJseU1vZHVsZTsKK2NsYXNzIEpTV2ViQXNzZW1ibHlUYWJsZTsKK2NsYXNzIEpTV2ViQXNz
ZW1ibHlUYWc7CitjbGFzcyBXZWJBc3NlbWJseUZ1bmN0aW9uOworY2xhc3MgV2ViQXNzZW1ibHlN
b2R1bGVSZWNvcmQ7CisjZW5kaWYKKworI2lmIEpTQ19PQkpDX0FQSV9FTkFCTEVECitjbGFzcyBK
U0FQSVdyYXBwZXJPYmplY3Q7CitjbGFzcyBPYmpDQ2FsbGJhY2tGdW5jdGlvbjsKKyNlbmRpZgor
CiAjaWZkZWYgSlNDX0dMSUJfQVBJX0VOQUJMRUQKK2NsYXNzIEpTQVBJV3JhcHBlckdsb2JhbE9i
amVjdDsKK2NsYXNzIEpTQVBJV3JhcHBlck9iamVjdDsKK2NsYXNzIEpTQ0NhbGxiYWNrRnVuY3Rp
b247CiBjbGFzcyBKU0NHTGliV3JhcHBlck9iamVjdDsKICNlbmRpZgogCkBAIC03MjksNiArNzkx
LDMxOCBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9wYXJhbGxlbE1hcmtlcnNTaG91bGRFeGl0IHsg
ZmFsc2UgfTsKICAgICBMb2NrIG1fY29sbGVjdENvbnRpbnVvdXNseUxvY2s7CiAgICAgQ29uZGl0
aW9uIG1fY29sbGVjdENvbnRpbnVvdXNseUNvbmRpdGlvbjsKKworcHVibGljOgorICAgIC8vIEhl
YXBDZWxsVHlwZXMKKyAgICBIZWFwQ2VsbFR5cGUgYXV4aWxpYXJ5SGVhcENlbGxUeXBlOworICAg
IEhlYXBDZWxsVHlwZSBpbW11dGFibGVCdXR0ZXJmbHlIZWFwQ2VsbFR5cGU7CisgICAgSGVhcENl
bGxUeXBlIGNlbGxIZWFwQ2VsbFR5cGU7CisgICAgSGVhcENlbGxUeXBlIGRlc3RydWN0aWJsZUNl
bGxIZWFwQ2VsbFR5cGU7CisgICAgSXNvSGVhcENlbGxUeXBlPEpTQVBJR2xvYmFsT2JqZWN0PiBh
cGlHbG9iYWxPYmplY3RIZWFwQ2VsbFR5cGU7CisgICAgSXNvSGVhcENlbGxUeXBlPEpTQ2FsbGJh
Y2tDb25zdHJ1Y3Rvcj4gY2FsbGJhY2tDb25zdHJ1Y3RvckhlYXBDZWxsVHlwZTsKKyAgICBJc29I
ZWFwQ2VsbFR5cGU8SlNDYWxsYmFja09iamVjdDxKU0dsb2JhbE9iamVjdD4+IGNhbGxiYWNrR2xv
YmFsT2JqZWN0SGVhcENlbGxUeXBlOworICAgIElzb0hlYXBDZWxsVHlwZTxKU0NhbGxiYWNrT2Jq
ZWN0PEpTTm9uRmluYWxPYmplY3Q+PiBjYWxsYmFja09iamVjdEhlYXBDZWxsVHlwZTsKKyAgICBJ
c29IZWFwQ2VsbFR5cGU8SlNDdXN0b21HZXR0ZXJGdW5jdGlvbj4gY3VzdG9tR2V0dGVyRnVuY3Rp
b25IZWFwQ2VsbFR5cGU7CisgICAgSXNvSGVhcENlbGxUeXBlPEpTQ3VzdG9tU2V0dGVyRnVuY3Rp
b24+IGN1c3RvbVNldHRlckZ1bmN0aW9uSGVhcENlbGxUeXBlOworICAgIElzb0hlYXBDZWxsVHlw
ZTxEYXRlSW5zdGFuY2U+IGRhdGVJbnN0YW5jZUhlYXBDZWxsVHlwZTsKKyAgICBJc29IZWFwQ2Vs
bFR5cGU8RXJyb3JJbnN0YW5jZT4gZXJyb3JJbnN0YW5jZUhlYXBDZWxsVHlwZTsKKyAgICBJc29I
ZWFwQ2VsbFR5cGU8SlNGaW5hbGl6YXRpb25SZWdpc3RyeT4gZmluYWxpemF0aW9uUmVnaXN0cnlD
ZWxsVHlwZTsKKyAgICBJc29IZWFwQ2VsbFR5cGU8SlNHbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQ+
IGdsb2JhbExleGljYWxFbnZpcm9ubWVudEhlYXBDZWxsVHlwZTsKKyAgICBJc29IZWFwQ2VsbFR5
cGU8SlNHbG9iYWxPYmplY3Q+IGdsb2JhbE9iamVjdEhlYXBDZWxsVHlwZTsKKyAgICBJc29IZWFw
Q2VsbFR5cGU8SW5zcGVjdG9yOjpKU0luamVjdGVkU2NyaXB0SG9zdD4gaW5qZWN0ZWRTY3JpcHRI
b3N0U3BhY2VIZWFwQ2VsbFR5cGU7CisgICAgSXNvSGVhcENlbGxUeXBlPEluc3BlY3Rvcjo6SlNK
YXZhU2NyaXB0Q2FsbEZyYW1lPiBqYXZhU2NyaXB0Q2FsbEZyYW1lSGVhcENlbGxUeXBlOworICAg
IElzb0hlYXBDZWxsVHlwZTxKU01vZHVsZVJlY29yZD4ganNNb2R1bGVSZWNvcmRIZWFwQ2VsbFR5
cGU7CisgICAgSXNvSGVhcENlbGxUeXBlPEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0PiBtb2R1bGVO
YW1lc3BhY2VPYmplY3RIZWFwQ2VsbFR5cGU7CisgICAgSXNvSGVhcENlbGxUeXBlPEpTTmF0aXZl
U3RkRnVuY3Rpb24+IG5hdGl2ZVN0ZEZ1bmN0aW9uSGVhcENlbGxUeXBlOworICAgIElzb0lubGlu
ZWRIZWFwQ2VsbFR5cGU8SlNTdHJpbmc+IHN0cmluZ0hlYXBDZWxsVHlwZTsKKyAgICBJc29IZWFw
Q2VsbFR5cGU8SlNXZWFrTWFwPiB3ZWFrTWFwSGVhcENlbGxUeXBlOworICAgIElzb0hlYXBDZWxs
VHlwZTxKU1dlYWtTZXQ+IHdlYWtTZXRIZWFwQ2VsbFR5cGU7CisgICAgSlNEZXN0cnVjdGlibGVP
YmplY3RIZWFwQ2VsbFR5cGUgZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlOworI2lmIEpT
Q19PQkpDX0FQSV9FTkFCTEVECisgICAgSXNvSGVhcENlbGxUeXBlPEpTQ2FsbGJhY2tPYmplY3Q8
SlNBUElXcmFwcGVyT2JqZWN0Pj4gYXBpV3JhcHBlck9iamVjdEhlYXBDZWxsVHlwZTsKKyAgICBJ
c29IZWFwQ2VsbFR5cGU8T2JqQ0NhbGxiYWNrRnVuY3Rpb24+IG9iakNDYWxsYmFja0Z1bmN0aW9u
SGVhcENlbGxUeXBlOworI2VuZGlmCisjaWZkZWYgSlNDX0dMSUJfQVBJX0VOQUJMRUQKKyAgICBJ
c29IZWFwQ2VsbFR5cGU8SlNDYWxsYmFja09iamVjdDxKU0FQSVdyYXBwZXJPYmplY3Q+PiBhcGlX
cmFwcGVyT2JqZWN0SGVhcENlbGxUeXBlOworICAgIElzb0hlYXBDZWxsVHlwZTxKU0NhbGxiYWNr
T2JqZWN0PEpTQVBJV3JhcHBlckdsb2JhbE9iamVjdD4+IGNhbGxiYWNrQVBJV3JhcHBlckdsb2Jh
bE9iamVjdEhlYXBDZWxsVHlwZTsKKyAgICBJc29IZWFwQ2VsbFR5cGU8SlNDQ2FsbGJhY2tGdW5j
dGlvbj4ganNjQ2FsbGJhY2tGdW5jdGlvbkhlYXBDZWxsVHlwZTsKKyNlbmRpZgorICAgIElzb0hl
YXBDZWxsVHlwZTxJbnRsQ29sbGF0b3I+IGludGxDb2xsYXRvckhlYXBDZWxsVHlwZTsKKyAgICBJ
c29IZWFwQ2VsbFR5cGU8SW50bERhdGVUaW1lRm9ybWF0PiBpbnRsRGF0ZVRpbWVGb3JtYXRIZWFw
Q2VsbFR5cGU7CisgICAgSXNvSGVhcENlbGxUeXBlPEludGxEaXNwbGF5TmFtZXM+IGludGxEaXNw
bGF5TmFtZXNIZWFwQ2VsbFR5cGU7CisgICAgSXNvSGVhcENlbGxUeXBlPEludGxMaXN0Rm9ybWF0
PiBpbnRsTGlzdEZvcm1hdEhlYXBDZWxsVHlwZTsKKyAgICBJc29IZWFwQ2VsbFR5cGU8SW50bExv
Y2FsZT4gaW50bExvY2FsZUhlYXBDZWxsVHlwZTsKKyAgICBJc29IZWFwQ2VsbFR5cGU8SW50bE51
bWJlckZvcm1hdD4gaW50bE51bWJlckZvcm1hdEhlYXBDZWxsVHlwZTsKKyAgICBJc29IZWFwQ2Vs
bFR5cGU8SW50bFBsdXJhbFJ1bGVzPiBpbnRsUGx1cmFsUnVsZXNIZWFwQ2VsbFR5cGU7CisgICAg
SXNvSGVhcENlbGxUeXBlPEludGxSZWxhdGl2ZVRpbWVGb3JtYXQ+IGludGxSZWxhdGl2ZVRpbWVG
b3JtYXRIZWFwQ2VsbFR5cGU7CisgICAgSXNvSGVhcENlbGxUeXBlPEludGxTZWdtZW50SXRlcmF0
b3I+IGludGxTZWdtZW50SXRlcmF0b3JIZWFwQ2VsbFR5cGU7CisgICAgSXNvSGVhcENlbGxUeXBl
PEludGxTZWdtZW50ZXI+IGludGxTZWdtZW50ZXJIZWFwQ2VsbFR5cGU7CisgICAgSXNvSGVhcENl
bGxUeXBlPEludGxTZWdtZW50cz4gaW50bFNlZ21lbnRzSGVhcENlbGxUeXBlOworI2lmIEVOQUJM
RShXRUJBU1NFTUJMWSkKKyAgICBJc29IZWFwQ2VsbFR5cGU8SlNXZWJBc3NlbWJseUNvZGVCbG9j
az4gd2ViQXNzZW1ibHlDb2RlQmxvY2tIZWFwQ2VsbFR5cGU7CisgICAgSXNvSGVhcENlbGxUeXBl
PEpTV2ViQXNzZW1ibHlFeGNlcHRpb24+IHdlYkFzc2VtYmx5RXhjZXB0aW9uSGVhcENlbGxUeXBl
OworICAgIElzb0hlYXBDZWxsVHlwZTxXZWJBc3NlbWJseUZ1bmN0aW9uPiB3ZWJBc3NlbWJseUZ1
bmN0aW9uSGVhcENlbGxUeXBlOworICAgIElzb0hlYXBDZWxsVHlwZTxKU1dlYkFzc2VtYmx5R2xv
YmFsPiB3ZWJBc3NlbWJseUdsb2JhbEhlYXBDZWxsVHlwZTsKKyAgICBJc29IZWFwQ2VsbFR5cGU8
SlNXZWJBc3NlbWJseUluc3RhbmNlPiB3ZWJBc3NlbWJseUluc3RhbmNlSGVhcENlbGxUeXBlOwor
ICAgIElzb0hlYXBDZWxsVHlwZTxKU1dlYkFzc2VtYmx5TWVtb3J5PiB3ZWJBc3NlbWJseU1lbW9y
eUhlYXBDZWxsVHlwZTsKKyAgICBJc29IZWFwQ2VsbFR5cGU8SlNXZWJBc3NlbWJseU1vZHVsZT4g
d2ViQXNzZW1ibHlNb2R1bGVIZWFwQ2VsbFR5cGU7CisgICAgSXNvSGVhcENlbGxUeXBlPFdlYkFz
c2VtYmx5TW9kdWxlUmVjb3JkPiB3ZWJBc3NlbWJseU1vZHVsZVJlY29yZEhlYXBDZWxsVHlwZTsK
KyAgICBJc29IZWFwQ2VsbFR5cGU8SlNXZWJBc3NlbWJseVRhYmxlPiB3ZWJBc3NlbWJseVRhYmxl
SGVhcENlbGxUeXBlOworICAgIElzb0hlYXBDZWxsVHlwZTxKU1dlYkFzc2VtYmx5VGFnPiB3ZWJB
c3NlbWJseVRhZ0hlYXBDZWxsVHlwZTsKKyNlbmRpZgorCisgICAgLy8gQWxpZ25lZE1lbW9yeUFs
bG9jYXRvcnMKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8RmFzdE1hbGxvY0FsaWduZWRNZW1vcnlBbGxv
Y2F0b3I+IGZhc3RNYWxsb2NBbGxvY2F0b3I7CisgICAgc3RkOjp1bmlxdWVfcHRyPEdpZ2FjYWdl
QWxpZ25lZE1lbW9yeUFsbG9jYXRvcj4gcHJpbWl0aXZlR2lnYWNhZ2VBbGxvY2F0b3I7CisgICAg
c3RkOjp1bmlxdWVfcHRyPEdpZ2FjYWdlQWxpZ25lZE1lbW9yeUFsbG9jYXRvcj4ganNWYWx1ZUdp
Z2FjYWdlQWxsb2NhdG9yOworCisgICAgLy8gU3Vic3BhY2VzCisgICAgQ29tcGxldGVTdWJzcGFj
ZSBwcmltaXRpdmVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlOyAvLyBUeXBlZCBhcnJheXMsIHN0cmlu
Z3MsIGJpdHZlY3RvcnMsIGV0YyBnbyBoZXJlLgorICAgIENvbXBsZXRlU3Vic3BhY2UganNWYWx1
ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2U7IC8vIEJ1dHRlcmZsaWVzLCBhcnJheXMgb2YgSlNWYWx1
ZXMsIGV0YyBnbyBoZXJlLgorICAgIENvbXBsZXRlU3Vic3BhY2UgaW1tdXRhYmxlQnV0dGVyZmx5
SlNWYWx1ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2U7IC8vIEpTSW1tdXRhYmxlQnV0dGVyZmx5IGdv
ZXMgaGVyZS4KKworICAgIC8vIFdlIG1ha2UgY3Jvc3MtY3V0dGluZyBhc3N1bXB0aW9ucyBhYm91
dCB0eXBlZCBhcnJheXMgYmVpbmcgaW4gdGhlIHByaW1pdGl2ZSBHaWdhY2FnZSBhbmQgYnV0dGVy
ZmxpZXMKKyAgICAvLyBiZWluZyBpbiB0aGUgSlNWYWx1ZSBnaWdhY2FnZS4gRm9yIHNvbWUgdHlw
ZXMsIGl0J3Mgc3VwZXIgb2J2aW91cyB3aGVyZSB0aGV5IHNob3VsZCBnbywgYW5kIHNvIHdlCisg
ICAgLy8gY2FuIGhhcmRjb2RlIHRoYXQgZmFjdC4gQnV0IHNvbWV0aW1lcyBpdCdzIG5vdCBjbGVh
ciwgc28gd2UgYWJzdHJhY3QgaXQgYnkgaGF2aW5nIGEgR2lnYWNhZ2U6OktpbmQKKyAgICAvLyBj
b25zdGFudCBzb21ld2hlcmUuCisgICAgLy8gRklYTUU6IE1heWJlIGl0IHdvdWxkIGJlIGJldHRl
ciBpZiBldmVyeW9uZSBhYnN0cmFjdGVkIHRoaXM/CisgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NTI0OAorICAgIEFMV0FZU19JTkxJTkUgQ29tcGxldGVT
dWJzcGFjZSYgZ2lnYWNhZ2VBdXhpbGlhcnlTcGFjZShHaWdhY2FnZTo6S2luZCBraW5kKQorICAg
IHsKKyAgICAgICAgc3dpdGNoIChraW5kKSB7CisgICAgICAgIGNhc2UgR2lnYWNhZ2U6OlByaW1p
dGl2ZToKKyAgICAgICAgICAgIHJldHVybiBwcmltaXRpdmVHaWdhY2FnZUF1eGlsaWFyeVNwYWNl
OworICAgICAgICBjYXNlIEdpZ2FjYWdlOjpKU1ZhbHVlOgorICAgICAgICAgICAgcmV0dXJuIGpz
VmFsdWVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlOworICAgICAgICBjYXNlIEdpZ2FjYWdlOjpOdW1i
ZXJPZktpbmRzOgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgUkVMRUFT
RV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIHByaW1pdGl2ZUdpZ2FjYWdl
QXV4aWxpYXJ5U3BhY2U7CisgICAgfQorICAgIAorICAgIC8vIFdoZW5ldmVyIHBvc3NpYmxlLCB1
c2Ugc3Vic3BhY2VGb3I8Q2VsbFR5cGU+KHZtKSB0byBnZXQgb25lIG9mIHRoZXNlIHN1YnNwYWNl
cy4KKyAgICBDb21wbGV0ZVN1YnNwYWNlIGNlbGxTcGFjZTsKKyAgICBDb21wbGV0ZVN1YnNwYWNl
IHZhcmlhYmxlU2l6ZWRDZWxsU3BhY2U7IC8vIEZJWE1FOiBUaGlzIHNwYWNlIGlzIHByb2JsZW1h
dGljIGJlY2F1c2Ugd2UgaGF2ZSB0aGluZ3MgaW4gaGVyZSBsaWtlIERpcmVjdEFyZ3VtZW50cyBh
bmQgU2NvcGVkQXJndW1lbnRzOyB0aG9zZSBzaG91bGQgYmUgc3BsaXQgaW50byBKU1ZhbHVlT09C
IGNlbGxzIGFuZCBKU1ZhbHVlU3RyaWN0IGF1eGlsaWFyaWVzLiBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgyODU4CisgICAgQ29tcGxldGVTdWJzcGFjZSBkZXN0cnVj
dGlibGVPYmplY3RTcGFjZTsKKworICAgIElzb1N1YnNwYWNlIGFycmF5U3BhY2U7CisgICAgSXNv
U3Vic3BhY2UgYmlnSW50U3BhY2U7CisgICAgSXNvU3Vic3BhY2UgY2FsbGVlU3BhY2U7CisgICAg
SXNvU3Vic3BhY2UgY2xvbmVkQXJndW1lbnRzU3BhY2U7CisgICAgSXNvU3Vic3BhY2UgY3VzdG9t
R2V0dGVyU2V0dGVyU3BhY2U7CisgICAgSXNvU3Vic3BhY2UgZGF0ZUluc3RhbmNlU3BhY2U7Cisg
ICAgSXNvU3Vic3BhY2UgZG9tQXR0cmlidXRlR2V0dGVyU2V0dGVyU3BhY2U7CisgICAgSXNvU3Vi
c3BhY2UgZXhjZXB0aW9uU3BhY2U7CisgICAgSXNvU3Vic3BhY2UgZXhlY3V0YWJsZVRvQ29kZUJs
b2NrRWRnZVNwYWNlOworICAgIElzb1N1YnNwYWNlIGZ1bmN0aW9uU3BhY2U7CisgICAgSXNvU3Vi
c3BhY2UgZ2V0dGVyU2V0dGVyU3BhY2U7CisgICAgSXNvU3Vic3BhY2UgZ2xvYmFsTGV4aWNhbEVu
dmlyb25tZW50U3BhY2U7CisgICAgSXNvU3Vic3BhY2UgaW50ZXJuYWxGdW5jdGlvblNwYWNlOwor
ICAgIElzb1N1YnNwYWNlIGpzUHJveHlTcGFjZTsKKyAgICBJc29TdWJzcGFjZSBuYXRpdmVFeGVj
dXRhYmxlU3BhY2U7CisgICAgSXNvU3Vic3BhY2UgbnVtYmVyT2JqZWN0U3BhY2U7CisgICAgSXNv
U3Vic3BhY2UgcGxhaW5PYmplY3RTcGFjZTsKKyAgICBJc29TdWJzcGFjZSBwcm9taXNlU3BhY2U7
CisgICAgSXNvU3Vic3BhY2UgcHJvcGVydHlOYW1lRW51bWVyYXRvclNwYWNlOworICAgIElzb1N1
YnNwYWNlIHByb3BlcnR5VGFibGVTcGFjZTsKKyAgICBJc29TdWJzcGFjZSByZWdFeHBTcGFjZTsK
KyAgICBJc29TdWJzcGFjZSByZWdFeHBPYmplY3RTcGFjZTsKKyAgICBJc29TdWJzcGFjZSByb3Bl
U3RyaW5nU3BhY2U7CisgICAgSXNvU3Vic3BhY2Ugc2NvcGVkQXJndW1lbnRzU3BhY2U7CisgICAg
SXNvU3Vic3BhY2Ugc3BhcnNlQXJyYXlWYWx1ZU1hcFNwYWNlOworICAgIElzb1N1YnNwYWNlIHN0
cmluZ1NwYWNlOworICAgIElzb1N1YnNwYWNlIHN0cmluZ09iamVjdFNwYWNlOworICAgIElzb1N1
YnNwYWNlIHN0cnVjdHVyZUNoYWluU3BhY2U7CisgICAgSXNvU3Vic3BhY2Ugc3RydWN0dXJlUmFy
ZURhdGFTcGFjZTsKKyAgICBJc29TdWJzcGFjZSBzdHJ1Y3R1cmVTcGFjZTsKKyAgICBJc29TdWJz
cGFjZSBicmFuZGVkU3RydWN0dXJlU3BhY2U7CisgICAgSXNvU3Vic3BhY2Ugc3ltYm9sVGFibGVT
cGFjZTsKKworI2RlZmluZSBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKG5hbWUp
IFwKKyAgICB0ZW1wbGF0ZTxTdWJzcGFjZUFjY2VzcyBtb2RlPiBcCisgICAgSXNvU3Vic3BhY2Uq
IG5hbWUoKSBcCisgICAgeyBcCisgICAgICAgIGlmIChtXyMjbmFtZSB8fCBtb2RlID09IFN1YnNw
YWNlQWNjZXNzOjpDb25jdXJyZW50bHkpIFwKKyAgICAgICAgICAgIHJldHVybiBtXyMjbmFtZS5n
ZXQoKTsgXAorICAgICAgICByZXR1cm4gbmFtZSMjU2xvdygpOyBcCisgICAgfSBcCisgICAgSlNf
RVhQT1JUX1BSSVZBVEUgSXNvU3Vic3BhY2UqIG5hbWUjI1Nsb3coKTsgXAorICAgIHN0ZDo6dW5p
cXVlX3B0cjxJc29TdWJzcGFjZT4gbV8jI25hbWU7CisKKworI2lmIEpTQ19PQkpDX0FQSV9FTkFC
TEVECisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihhcGlXcmFwcGVyT2Jq
ZWN0U3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihvYmpDQ2Fs
bGJhY2tGdW5jdGlvblNwYWNlKQorI2VuZGlmCisjaWZkZWYgSlNDX0dMSUJfQVBJX0VOQUJMRUQK
KyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKGFwaVdyYXBwZXJPYmplY3RT
cGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKGpzY0NhbGxiYWNr
RnVuY3Rpb25TcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKGNh
bGxiYWNrQVBJV3JhcHBlckdsb2JhbE9iamVjdFNwYWNlKQorI2VuZGlmCisgICAgRFlOQU1JQ19J
U09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihhcGlHbG9iYWxPYmplY3RTcGFjZSkKKyAgICBEWU5B
TUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKGFwaVZhbHVlV3JhcHBlclNwYWNlKQorICAg
IERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoYXJyYXlCdWZmZXJTcGFjZSkKKyAg
ICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKGFycmF5SXRlcmF0b3JTcGFjZSkK
KyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKGFzeW5jR2VuZXJhdG9yU3Bh
Y2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihiaWdJbnQ2NEFycmF5
U3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihiaWdJbnRPYmpl
Y3RTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKGJpZ1VpbnQ2
NEFycmF5U3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihib29s
ZWFuT2JqZWN0U3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihi
b3VuZEZ1bmN0aW9uU3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJF
UihjYWxsYmFja0NvbnN0cnVjdG9yU3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVG
SU5FX01FTUJFUihjYWxsYmFja0dsb2JhbE9iamVjdFNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NV
QlNQQUNFX0RFRklORV9NRU1CRVIoY2FsbGJhY2tGdW5jdGlvblNwYWNlKQorICAgIERZTkFNSUNf
SVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoY2FsbGJhY2tPYmplY3RTcGFjZSkKKyAgICBEWU5B
TUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKGN1c3RvbUdldHRlckZ1bmN0aW9uU3BhY2Up
CisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihjdXN0b21TZXR0ZXJGdW5j
dGlvblNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoZGF0YVZp
ZXdTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKGRlYnVnZ2Vy
U2NvcGVTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKGVycm9y
SW5zdGFuY2VTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKGZs
b2F0MzJBcnJheVNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIo
ZmxvYXQ2NEFycmF5U3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJF
UihmdW5jdGlvblJhcmVEYXRhU3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5F
X01FTUJFUihnZW5lcmF0b3JTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVf
TUVNQkVSKGdsb2JhbE9iamVjdFNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklO
RV9NRU1CRVIoaW5qZWN0ZWRTY3JpcHRIb3N0U3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BB
Q0VfREVGSU5FX01FTUJFUihpbnQ4QXJyYXlTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFD
RV9ERUZJTkVfTUVNQkVSKGludDE2QXJyYXlTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFD
RV9ERUZJTkVfTUVNQkVSKGludDMyQXJyYXlTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFD
RV9ERUZJTkVfTUVNQkVSKGphdmFTY3JpcHRDYWxsRnJhbWVTcGFjZSkKKyAgICBEWU5BTUlDX0lT
T19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKGpzTW9kdWxlUmVjb3JkU3BhY2UpCisgICAgRFlOQU1J
Q19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihtYXBCdWNrZXRTcGFjZSkKKyAgICBEWU5BTUlD
X0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKG1hcEl0ZXJhdG9yU3BhY2UpCisgICAgRFlOQU1J
Q19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihtYXBTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19T
VUJTUEFDRV9ERUZJTkVfTUVNQkVSKG1vZHVsZU5hbWVzcGFjZU9iamVjdFNwYWNlKQorICAgIERZ
TkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIobmF0aXZlU3RkRnVuY3Rpb25TcGFjZSkK
KyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKHByb3h5T2JqZWN0U3BhY2Up
CisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihwcm94eVJldm9rZVNwYWNl
KQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoc2NvcGVkQXJndW1lbnRz
VGFibGVTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKHNjcmlw
dEZldGNoUGFyYW1ldGVyc1NwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9N
RU1CRVIoc2NyaXB0RmV0Y2hlclNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklO
RV9NRU1CRVIoc2V0QnVja2V0U3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5F
X01FTUJFUihzZXRJdGVyYXRvclNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklO
RV9NRU1CRVIoc2V0U3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJF
UihzaGFkb3dSZWFsbVNwYWNlKTsKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVN
QkVSKHN0cmljdEV2YWxBY3RpdmF0aW9uU3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0Vf
REVGSU5FX01FTUJFUihzdHJpbmdJdGVyYXRvclNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQ
QUNFX0RFRklORV9NRU1CRVIoc291cmNlQ29kZVNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQ
QUNFX0RFRklORV9NRU1CRVIoc3ltYm9sU3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0Vf
REVGSU5FX01FTUJFUihzeW1ib2xPYmplY3RTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFD
RV9ERUZJTkVfTUVNQkVSKHRlbXBsYXRlT2JqZWN0RGVzY3JpcHRvclNwYWNlKQorICAgIERZTkFN
SUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIodGVtcG9yYWxDYWxlbmRhclNwYWNlKQorICAg
IERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIodGVtcG9yYWxEdXJhdGlvblNwYWNl
KQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIodGVtcG9yYWxJbnN0YW50
U3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUih0ZW1wb3JhbFBs
YWluVGltZVNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIodGVt
cG9yYWxUaW1lWm9uZVNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1C
RVIodWludDhBcnJheVNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1C
RVIodWludDhDbGFtcGVkQXJyYXlTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJ
TkVfTUVNQkVSKHVpbnQxNkFycmF5U3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVG
SU5FX01FTUJFUih1aW50MzJBcnJheVNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RF
RklORV9NRU1CRVIodW5saW5rZWRFdmFsQ29kZUJsb2NrU3BhY2UpCisgICAgRFlOQU1JQ19JU09f
U1VCU1BBQ0VfREVGSU5FX01FTUJFUih1bmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrU3BhY2UpCisg
ICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUih1bmxpbmtlZE1vZHVsZVByb2dy
YW1Db2RlQmxvY2tTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVS
KHVubGlua2VkUHJvZ3JhbUNvZGVCbG9ja1NwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNF
X0RFRklORV9NRU1CRVIoZmluYWxpemF0aW9uUmVnaXN0cnlTcGFjZSkKKyAgICBEWU5BTUlDX0lT
T19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKHdlYWtPYmplY3RSZWZTcGFjZSkKKyAgICBEWU5BTUlD
X0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKHdlYWtTZXRTcGFjZSkKKyAgICBEWU5BTUlDX0lT
T19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKHdlYWtNYXBTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19T
VUJTUEFDRV9ERUZJTkVfTUVNQkVSKHdpdGhTY29wZVNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NV
QlNQQUNFX0RFRklORV9NRU1CRVIoaW50bENvbGxhdG9yU3BhY2UpCisgICAgRFlOQU1JQ19JU09f
U1VCU1BBQ0VfREVGSU5FX01FTUJFUihpbnRsRGF0ZVRpbWVGb3JtYXRTcGFjZSkKKyAgICBEWU5B
TUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKGludGxEaXNwbGF5TmFtZXNTcGFjZSkKKyAg
ICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKGludGxMaXN0Rm9ybWF0U3BhY2Up
CisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihpbnRsTG9jYWxlU3BhY2Up
CisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihpbnRsTnVtYmVyRm9ybWF0
U3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihpbnRsUGx1cmFs
UnVsZXNTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKGludGxS
ZWxhdGl2ZVRpbWVGb3JtYXRTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVf
TUVNQkVSKGludGxTZWdtZW50SXRlcmF0b3JTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFD
RV9ERUZJTkVfTUVNQkVSKGludGxTZWdtZW50ZXJTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJT
UEFDRV9ERUZJTkVfTUVNQkVSKGludGxTZWdtZW50c1NwYWNlKQorI2lmIEVOQUJMRShXRUJBU1NF
TUJMWSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKGpzVG9XYXNtSUND
YWxsZWVTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKHdlYkFz
c2VtYmx5Q29kZUJsb2NrU3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01F
TUJFUih3ZWJBc3NlbWJseUV4Y2VwdGlvblNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNF
X0RFRklORV9NRU1CRVIod2ViQXNzZW1ibHlGdW5jdGlvblNwYWNlKQorICAgIERZTkFNSUNfSVNP
X1NVQlNQQUNFX0RFRklORV9NRU1CRVIod2ViQXNzZW1ibHlHbG9iYWxTcGFjZSkKKyAgICBEWU5B
TUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKHdlYkFzc2VtYmx5SW5zdGFuY2VTcGFjZSkK
KyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKHdlYkFzc2VtYmx5TWVtb3J5
U3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUih3ZWJBc3NlbWJs
eU1vZHVsZVNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIod2Vi
QXNzZW1ibHlNb2R1bGVSZWNvcmRTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJ
TkVfTUVNQkVSKHdlYkFzc2VtYmx5VGFibGVTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFD
RV9ERUZJTkVfTUVNQkVSKHdlYkFzc2VtYmx5VGFnU3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VC
U1BBQ0VfREVGSU5FX01FTUJFUih3ZWJBc3NlbWJseVdyYXBwZXJGdW5jdGlvblNwYWNlKQorI2Vu
ZGlmCisKKyN1bmRlZiBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSCisgICAgCisg
ICAgSXNvQ2VsbFNldCBleGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlc1dpdGhDb25zdHJhaW50czsK
KyAgICBJc29DZWxsU2V0IGV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2VzV2l0aEZpbmFsaXplcnM7
CisKKyNkZWZpbmUgRFlOQU1JQ19TUEFDRV9BTkRfU0VUX0RFRklORV9NRU1CRVIobmFtZSkgXAor
ICAgIHRlbXBsYXRlPFN1YnNwYWNlQWNjZXNzIG1vZGU+IFwKKyAgICBJc29TdWJzcGFjZSogbmFt
ZSgpIFwKKyAgICB7IFwKKyAgICAgICAgaWYgKGF1dG8qIHNwYWNlQW5kU2V0ID0gbV8jI25hbWUu
Z2V0KCkpIFwKKyAgICAgICAgICAgIHJldHVybiAmc3BhY2VBbmRTZXQtPnNwYWNlOyBcCisgICAg
ICAgIGlmIChtb2RlID09IFN1YnNwYWNlQWNjZXNzOjpDb25jdXJyZW50bHkpIFwKKyAgICAgICAg
ICAgIHJldHVybiBudWxscHRyOyBcCisgICAgICAgIHJldHVybiBuYW1lIyNTbG93KCk7IFwKKyAg
ICB9IFwKKyAgICBJc29TdWJzcGFjZSogbmFtZSMjU2xvdygpOyBcCisgICAgc3RkOjp1bmlxdWVf
cHRyPFNwYWNlQW5kU2V0PiBtXyMjbmFtZTsKKyAgICAKKyAgICBzdHJ1Y3QgU3BhY2VBbmRTZXQg
eworICAgICAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7CisKKyAgICAgICAgSXNv
U3Vic3BhY2Ugc3BhY2U7CisgICAgICAgIElzb0NlbGxTZXQgc2V0OworICAgICAgICAKKyAgICAg
ICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gQXJndW1lbnRzPgorICAgICAgICBTcGFjZUFuZFNldChB
cmd1bWVudHMmJi4uLiBhcmd1bWVudHMpCisgICAgICAgICAgICA6IHNwYWNlKHN0ZDo6Zm9yd2Fy
ZDxBcmd1bWVudHM+KGFyZ3VtZW50cykuLi4pCisgICAgICAgICAgICAsIHNldChzcGFjZSkKKyAg
ICAgICAgeworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBzdGF0aWMgSXNvQ2VsbFNldCYg
c2V0Rm9yKFN1YnNwYWNlJiBzcGFjZSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuICpi
aXR3aXNlX2Nhc3Q8SXNvQ2VsbFNldCo+KAorICAgICAgICAgICAgICAgIGJpdHdpc2VfY2FzdDxj
aGFyKj4oJnNwYWNlKSAtCisgICAgICAgICAgICAgICAgT0JKRUNUX09GRlNFVE9GKFNwYWNlQW5k
U2V0LCBzcGFjZSkgKworICAgICAgICAgICAgICAgIE9CSkVDVF9PRkZTRVRPRihTcGFjZUFuZFNl
dCwgc2V0KSk7CisgICAgICAgIH0KKyAgICB9OworICAgIAorICAgIFNwYWNlQW5kU2V0IGNvZGVC
bG9ja1NwYWNlOworCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuYz4KKyAgICB2b2lkIGZvckVh
Y2hDb2RlQmxvY2tTcGFjZShjb25zdCBGdW5jJiBmdW5jKQorICAgIHsKKyAgICAgICAgLy8gVGhp
cyBzaG91bGQgbm90IGluY2x1ZGUgd2ViQXNzZW1ibHlDb2RlQmxvY2tTcGFjZSBiZWNhdXNlIHRo
aXMgaXMgYWJvdXQgc3Vic2NsYXNzZXMgb2YKKyAgICAgICAgLy8gSlNDOjpDb2RlQmxvY2suCisg
ICAgICAgIGZ1bmMoY29kZUJsb2NrU3BhY2UpOworICAgIH0KKworICAgIERZTkFNSUNfU1BBQ0Vf
QU5EX1NFVF9ERUZJTkVfTUVNQkVSKGV2YWxFeGVjdXRhYmxlU3BhY2UpCisgICAgRFlOQU1JQ19T
UEFDRV9BTkRfU0VUX0RFRklORV9NRU1CRVIobW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGVTcGFjZSkK
KyAgICBTcGFjZUFuZFNldCBmdW5jdGlvbkV4ZWN1dGFibGVTcGFjZTsKKyAgICBTcGFjZUFuZFNl
dCBwcm9ncmFtRXhlY3V0YWJsZVNwYWNlOworCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuYz4K
KyAgICB2b2lkIGZvckVhY2hTY3JpcHRFeGVjdXRhYmxlU3BhY2UoY29uc3QgRnVuYyYgZnVuYykK
KyAgICB7CisgICAgICAgIGlmIChtX2V2YWxFeGVjdXRhYmxlU3BhY2UpCisgICAgICAgICAgICBm
dW5jKCptX2V2YWxFeGVjdXRhYmxlU3BhY2UpOworICAgICAgICBmdW5jKGZ1bmN0aW9uRXhlY3V0
YWJsZVNwYWNlKTsKKyAgICAgICAgaWYgKG1fbW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGVTcGFjZSkK
KyAgICAgICAgICAgIGZ1bmMoKm1fbW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGVTcGFjZSk7CisgICAg
ICAgIGZ1bmMocHJvZ3JhbUV4ZWN1dGFibGVTcGFjZSk7CisgICAgfQorCisgICAgU3BhY2VBbmRT
ZXQgdW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGVTcGFjZTsKKworI3VuZGVmIERZTkFNSUNfU1BB
Q0VfQU5EX1NFVF9ERUZJTkVfTUVNQkVSCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lzb0hlYXBDZWxsVHlwZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSXNvSGVhcENlbGxUeXBlLmNwcAkocmV2
aXNpb24gMjg2MDk1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSXNvSGVhcENlbGxU
eXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzEsMjIgKzMxLDYxIEBACiAKIG5hbWVzcGFjZSBK
U0MgewogCi1Jc29IZWFwQ2VsbFR5cGU6Oklzb0hlYXBDZWxsVHlwZShEZXN0cnVjdGlvbk1vZGUg
ZGVzdHJ1Y3Rpb25Nb2RlLCBEZXN0cm95RnVuY3Rpb25QdHIgZGVzdHJveUZ1bmN0aW9uKQotICAg
IDogSGVhcENlbGxUeXBlKENlbGxBdHRyaWJ1dGVzKGRlc3RydWN0aW9uTW9kZSwgSGVhcENlbGw6
OkpTQ2VsbCkpCi0gICAgLCBtX2Rlc3Ryb3koZGVzdHJveUZ1bmN0aW9uKQorLy9Jc29IZWFwQ2Vs
bFR5cGU6Oklzb0hlYXBDZWxsVHlwZShEZXN0cnVjdGlvbk1vZGUgZGVzdHJ1Y3Rpb25Nb2RlLCBE
ZXN0cm95RnVuY3Rpb25QdHIgZGVzdHJveUZ1bmN0aW9uKQorLy8gICAgOiBIZWFwQ2VsbFR5cGUo
Q2VsbEF0dHJpYnV0ZXMoZGVzdHJ1Y3Rpb25Nb2RlLCBIZWFwQ2VsbDo6SlNDZWxsKSkKKy8vICAg
ICwgbV9kZXN0cm95KGRlc3Ryb3lGdW5jdGlvbikKKy8veworLy99CisvLworLy9Jc29IZWFwQ2Vs
bFR5cGU6On5Jc29IZWFwQ2VsbFR5cGUoKSA9IGRlZmF1bHQ7CisvLworLy92b2lkIElzb0hlYXBD
ZWxsVHlwZTo6ZmluaXNoU3dlZXAoTWFya2VkQmxvY2s6OkhhbmRsZSYgaGFuZGxlLCBGcmVlTGlz
dCogZnJlZUxpc3QpIGNvbnN0CisvL3sKKy8vICAgIGhhbmRsZS5maW5pc2hTd2VlcEtub3dpbmdI
ZWFwQ2VsbFR5cGUoZnJlZUxpc3QsICp0aGlzKTsKKy8vfQorLy8KKy8vdm9pZCBJc29IZWFwQ2Vs
bFR5cGU6OmRlc3Ryb3koVk0mLCBKU0NlbGwqIGNlbGwpIGNvbnN0CisvL3sKKy8vICAgIG1fZGVz
dHJveShjZWxsKTsKKy8vfQorCitJc29IZWFwQ2VsbFR5cGVCYXNlOjpJc29IZWFwQ2VsbFR5cGVC
YXNlKENlbGxBdHRyaWJ1dGVzIGF0dHJpYnV0ZXMpCisgICAgOiBIZWFwQ2VsbFR5cGUoYXR0cmli
dXRlcykKIHsKIH0KIAotSXNvSGVhcENlbGxUeXBlOjp+SXNvSGVhcENlbGxUeXBlKCkgPSBkZWZh
dWx0OworSXNvSGVhcENlbGxUeXBlQmFzZTo6fklzb0hlYXBDZWxsVHlwZUJhc2UoKSA9IGRlZmF1
bHQ7CiAKLXZvaWQgSXNvSGVhcENlbGxUeXBlOjpmaW5pc2hTd2VlcChNYXJrZWRCbG9jazo6SGFu
ZGxlJiBoYW5kbGUsIEZyZWVMaXN0KiBmcmVlTGlzdCkgY29uc3QKK3ZvaWQgSXNvSGVhcENlbGxU
eXBlQmFzZTo6ZmluaXNoU3dlZXAoTWFya2VkQmxvY2s6OkhhbmRsZSYgaGFuZGxlLCBGcmVlTGlz
dCogZnJlZUxpc3QpIGNvbnN0CiB7Ci0gICAgaGFuZGxlLmZpbmlzaFN3ZWVwS25vd2luZ0hlYXBD
ZWxsVHlwZShmcmVlTGlzdCwgKnRoaXMpOworICAgIC8vIGZpbmlzaFN3ZWVwS25vd2luZ0hlYXBD
ZWxsVHlwZSgpIG1heSBjYWxsIGRlc3Ryb3kgaW4gYSBsb29wLCBhbmQgd2UgZG9uJ3QKKyAgICAv
LyB3YW50IHRvIGRvIGEgdmlydHVhbCBmdW5jdGlvbiB0byBkbyB0aGUgZGVzdHJveSBpbiB0aGF0
IGxvb3AuIEluc3RlYWQsCisgICAgLy8gd2UgY2FsbCB0aGUgdmlydHVhbCBmdW5jdGlvbiBkZXN0
cm95RnVuY3Rpb25QdHIoKSBvbmx5IG9uY2UgdG8gZmV0Y2ggdGhlCisgICAgLy8gRGVzdHJveUZ1
bmN0aW9uUHRyLCBhbmQgdXNlIHRoaXMgSW52b2tlciBjbGFzcyB0byBjYWNoZSB0aGUgcmV0dXJu
ZWQKKyAgICAvLyBEZXN0cm95RnVuY3Rpb25QdHIuIGZpbmlzaFN3ZWVwS25vd2luZ0hlYXBDZWxs
VHlwZSgpIGNhbiB0aGVuIGludm9rZQorICAgIC8vIGRlc3Ryb3kgdmlhIEludm9rZXIncyBjYWNo
ZWQgRGVzdHJveUZ1bmN0aW9uUHRyLgorICAgIGNsYXNzIEludm9rZXIgeworICAgIHB1YmxpYzoK
KyAgICAgICAgSW52b2tlcihEZXN0cm95RnVuY3Rpb25QdHIgZGVzdHJveUZ1bmN0aW9uUHRyKQor
ICAgICAgICAgICAgOiBtX2Rlc3Ryb3koZGVzdHJveUZ1bmN0aW9uUHRyKQorICAgICAgICB7IH0K
KworICAgICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgb3BlcmF0b3IoKShWTSYsIEpTQ2VsbCogY2Vs
bCkgY29uc3QKKyAgICAgICAgeworICAgICAgICAgICAgbV9kZXN0cm95KGNlbGwpOworICAgICAg
ICB9CisKKyAgICBwcml2YXRlOgorICAgICAgICBEZXN0cm95RnVuY3Rpb25QdHIgbV9kZXN0cm95
OworICAgIH07CisKKyAgICBJbnZva2VyIGludm9rZXIoZGVzdHJveUZ1bmN0aW9uUHRyKCkpOwor
ICAgIGhhbmRsZS5maW5pc2hTd2VlcEtub3dpbmdIZWFwQ2VsbFR5cGUoZnJlZUxpc3QsIGludm9r
ZXIpOwogfQogCi12b2lkIElzb0hlYXBDZWxsVHlwZTo6ZGVzdHJveShWTSYsIEpTQ2VsbCogY2Vs
bCkgY29uc3QKK0lzb0hlYXBDZWxsVHlwZUJhc2U6OkRlc3Ryb3lGdW5jdGlvblB0ciBJc29IZWFw
Q2VsbFR5cGVCYXNlOjpkZXN0cm95RnVuY3Rpb25QdHIoKSBjb25zdAogewotICAgIG1fZGVzdHJv
eShjZWxsKTsKKyAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCiB9IC8vIG5h
bWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lzb0hlYXBDZWxs
VHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lzb0hlYXBD
ZWxsVHlwZS5oCShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVh
cC9Jc29IZWFwQ2VsbFR5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMjksMzAgKzI5LDY5IEBACiAK
IG5hbWVzcGFjZSBKU0MgewogCi1jbGFzcyBJc29IZWFwQ2VsbFR5cGUgZmluYWwgOiBwdWJsaWMg
SGVhcENlbGxUeXBlIHsKKy8vY2xhc3MgSXNvSGVhcENlbGxUeXBlIGZpbmFsIDogcHVibGljIEhl
YXBDZWxsVHlwZSB7CisvL3B1YmxpYzoKKy8vICAgIHVzaW5nIERlc3Ryb3lGdW5jdGlvblB0ciA9
IHZvaWQgKCopKEpTQ2VsbCopOworLy8KKy8vICAgIEpTX0VYUE9SVF9QUklWQVRFIH5Jc29IZWFw
Q2VsbFR5cGUoKTsKKy8vCisvLyAgICBKU19FWFBPUlRfUFJJVkFURSBJc29IZWFwQ2VsbFR5cGUo
RGVzdHJ1Y3Rpb25Nb2RlLCBEZXN0cm95RnVuY3Rpb25QdHIpOworLy8KKy8vICAgIHRlbXBsYXRl
PHR5cGVuYW1lIENlbGxUeXBlPgorLy8gICAgc3RydWN0IEFyZ3MgeworLy8gICAgICAgIEFyZ3Mo
KQorLy8gICAgICAgICAgICA6IG1vZGUoQ2VsbFR5cGU6Om5lZWRzRGVzdHJ1Y3Rpb24gPyBOZWVk
c0Rlc3RydWN0aW9uIDogRG9lc05vdE5lZWREZXN0cnVjdGlvbikKKy8vICAgICAgICAgICAgLCBm
dW5jdGlvblB0cigmQ2VsbFR5cGU6OmRlc3Ryb3kpCisvLyAgICAgICAgeyB9CisvLworLy8gICAg
ICAgIERlc3RydWN0aW9uTW9kZSBtb2RlOworLy8gICAgICAgIERlc3Ryb3lGdW5jdGlvblB0ciBm
dW5jdGlvblB0cjsKKy8vICAgIH07CisvLworLy8gICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5
cGU+CisvLyAgICBJc29IZWFwQ2VsbFR5cGUoQXJnczxDZWxsVHlwZT4mJiBhcmdzKQorLy8gICAg
ICAgIDogSXNvSGVhcENlbGxUeXBlKGFyZ3MubW9kZSwgYXJncy5mdW5jdGlvblB0cikKKy8vICAg
IHsgfQorLy8KKy8vICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgZmluaXNoU3dlZXAoTWFya2Vk
QmxvY2s6OkhhbmRsZSYsIEZyZWVMaXN0KikgY29uc3QgZmluYWw7CisvLyAgICBKU19FWFBPUlRf
UFJJVkFURSB2b2lkIGRlc3Ryb3koVk0mLCBKU0NlbGwqKSBjb25zdCBmaW5hbDsKKy8vCisvLyAg
ICBBTFdBWVNfSU5MSU5FIHZvaWQgb3BlcmF0b3IoKShWTSYsIEpTQ2VsbCogY2VsbCkgY29uc3QK
Ky8vICAgIHsKKy8vICAgICAgICBtX2Rlc3Ryb3koY2VsbCk7CisvLyAgICB9CisvLworLy9wcml2
YXRlOgorLy8gICAgRGVzdHJveUZ1bmN0aW9uUHRyIFdURl9WVEJMX0ZVTkNQVFJfUFRSQVVUSF9T
VFIoIklzb0hlYXBDZWxsVHlwZS5kZXN0cm95IikgbV9kZXN0cm95OworLy99OworCisvLyBUaGUg
cmVhc29uIHdlIG5lZWQgYW4gSXNvSGVhcENlbGxUeXBlQmFzZSBpcyBqdXN0IHNvIGFsbCBJc29I
ZWFwQ2VsbFR5cGUKKy8vIHNwZWNpYWxpemF0aW9ucyBjYW4gc2hhcmUgdGhlIHNhbWUgZmluaXNo
U3dlZXAoKS4gZmluaXNoU3dlZXAoKSBuZWVkcyB0byBjYWxsCisvLyBNYXJrZWRCbG9jazo6SGFu
ZGxlOjpmaW5pc2hTd2VlcEtub3dpbmdIZWFwQ2VsbFR5cGUoKSwgd2hpY2ggaXMgYSByZWxhdGl2
ZWx5CisvLyBsYXJnZSB0ZW1wbGF0ZSBmdW5jdGlvbi4gV2UgZG9uJ3Qgd2FudCB0byBpbnN0YW50
aWF0ZSBhIHNwZWNpYWxpemF0aW9uIG9mCisvLyBmaW5pc2hTd2VlcEtub3dpbmdIZWFwQ2VsbFR5
cGUoKSBmb3IgZWFjaCBJc29IZWFwQ2VsbFR5cGUgY2VsbCB0eXBlLgorY2xhc3MgSXNvSGVhcENl
bGxUeXBlQmFzZSA6IHB1YmxpYyBIZWFwQ2VsbFR5cGUgewogcHVibGljOgogICAgIHVzaW5nIERl
c3Ryb3lGdW5jdGlvblB0ciA9IHZvaWQgKCopKEpTQ2VsbCopOwogCi0gICAgSlNfRVhQT1JUX1BS
SVZBVEUgfklzb0hlYXBDZWxsVHlwZSgpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIElzb0hlYXBD
ZWxsVHlwZUJhc2UoQ2VsbEF0dHJpYnV0ZXMgYXR0cmlidXRlcyk7CisgICAgSlNfRVhQT1JUX1BS
SVZBVEUgfklzb0hlYXBDZWxsVHlwZUJhc2UoKTsKIAotICAgIEpTX0VYUE9SVF9QUklWQVRFIElz
b0hlYXBDZWxsVHlwZShEZXN0cnVjdGlvbk1vZGUsIERlc3Ryb3lGdW5jdGlvblB0cik7CisgICAg
SlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBmaW5pc2hTd2VlcChNYXJrZWRCbG9jazo6SGFuZGxlJiBo
YW5kbGUsIEZyZWVMaXN0KiBmcmVlTGlzdCkgY29uc3QgZmluYWw7CiAKLSAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBDZWxsVHlwZT4KLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPElzb0hlYXBDZWxs
VHlwZT4gY3JlYXRlKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBtYWtlVW5pcXVlPElzb0hlYXBD
ZWxsVHlwZT4oQ2VsbFR5cGU6Om5lZWRzRGVzdHJ1Y3Rpb24gPyBOZWVkc0Rlc3RydWN0aW9uIDog
RG9lc05vdE5lZWREZXN0cnVjdGlvbiwgJkNlbGxUeXBlOjpkZXN0cm95KTsKLSAgICB9Ci0KLSAg
ICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIGZpbmlzaFN3ZWVwKE1hcmtlZEJsb2NrOjpIYW5kbGUm
LCBGcmVlTGlzdCopIGNvbnN0IGZpbmFsOwotICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgZGVz
dHJveShWTSYsIEpTQ2VsbCopIGNvbnN0IGZpbmFsOwotCi0gICAgQUxXQVlTX0lOTElORSB2b2lk
IG9wZXJhdG9yKCkoVk0mLCBKU0NlbGwqIGNlbGwpIGNvbnN0Ci0gICAgewotICAgICAgICBtX2Rl
c3Ryb3koY2VsbCk7Ci0gICAgfQorICAgIHZpcnR1YWwgRGVzdHJveUZ1bmN0aW9uUHRyIGRlc3Ry
b3lGdW5jdGlvblB0cigpIGNvbnN0OworfTsKKwordGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGU+
CitjbGFzcyBJc29IZWFwQ2VsbFR5cGUgZmluYWwgOiBwdWJsaWMgSXNvSGVhcENlbGxUeXBlQmFz
ZSB7CitwdWJsaWM6CisgICAgdXNpbmcgSXNvSGVhcENlbGxUeXBlQmFzZTo6RGVzdHJveUZ1bmN0
aW9uUHRyOworCisgICAgSXNvSGVhcENlbGxUeXBlKCk7CisgICAgfklzb0hlYXBDZWxsVHlwZSgp
ID0gZGVmYXVsdDsKIAotcHJpdmF0ZToKLSAgICBEZXN0cm95RnVuY3Rpb25QdHIgV1RGX1ZUQkxf
RlVOQ1BUUl9QVFJBVVRIX1NUUigiSXNvSGVhcENlbGxUeXBlLmRlc3Ryb3kiKSBtX2Rlc3Ryb3k7
CisgICAgdm9pZCBkZXN0cm95KFZNJiwgSlNDZWxsKiBjZWxsKSBjb25zdCBmaW5hbDsKKyAgICBE
ZXN0cm95RnVuY3Rpb25QdHIgZGVzdHJveUZ1bmN0aW9uUHRyKCkgY29uc3QgZmluYWw7CiB9Owog
CiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lz
b0hlYXBDZWxsVHlwZUlubGluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9Jc29IZWFwQ2VsbFR5cGVJbmxpbmVzLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvSXNvSGVhcENlbGxUeXBlSW5saW5lcy5oCSh3b3JraW5nIGNv
cHkpCkBAIC0wLDAgKzEsNDkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkhlYXBDZWxsVHlwZS5oIgorCitu
YW1lc3BhY2UgSlNDIHsKKwordGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGU+CitBTFdBWVNfSU5M
SU5FIElzb0hlYXBDZWxsVHlwZTxDZWxsVHlwZT46Oklzb0hlYXBDZWxsVHlwZSgpCisgICAgOiBJ
c29IZWFwQ2VsbFR5cGVCYXNlKENlbGxBdHRyaWJ1dGVzKENlbGxUeXBlOjpuZWVkc0Rlc3RydWN0
aW9uID8gTmVlZHNEZXN0cnVjdGlvbiA6IERvZXNOb3ROZWVkRGVzdHJ1Y3Rpb24sIEhlYXBDZWxs
OjpKU0NlbGwpKQoreyB9CisKK3RlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlPgordm9pZCBJc29I
ZWFwQ2VsbFR5cGU8Q2VsbFR5cGU+OjpkZXN0cm95KFZNJiwgSlNDZWxsKiBjZWxsKSBjb25zdAor
eworICAgIENlbGxUeXBlOjpkZXN0cm95KGNlbGwpOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBD
ZWxsVHlwZT4KK3R5cGVuYW1lIElzb0hlYXBDZWxsVHlwZTxDZWxsVHlwZT46OkRlc3Ryb3lGdW5j
dGlvblB0ciBJc29IZWFwQ2VsbFR5cGU8Q2VsbFR5cGU+OjpkZXN0cm95RnVuY3Rpb25QdHIoKSBj
b25zdAoreworICAgIHJldHVybiAmQ2VsbFR5cGU6OmRlc3Ryb3k7Cit9CisKK30gLy8gbmFtZXNw
YWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSXNvSW5saW5lZEhlYXBD
ZWxsVHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lzb0lu
bGluZWRIZWFwQ2VsbFR5cGUuaAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvSXNvSW5saW5lZEhlYXBDZWxsVHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0z
MiwyOCArMzIsMTMgQEAgbmFtZXNwYWNlIEpTQyB7CiB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlw
ZT4KIGNsYXNzIElzb0lubGluZWRIZWFwQ2VsbFR5cGUgZmluYWwgOiBwdWJsaWMgSGVhcENlbGxU
eXBlIHsKIHB1YmxpYzoKLSAgICBJc29JbmxpbmVkSGVhcENlbGxUeXBlKCkKLSAgICAgICAgOiBI
ZWFwQ2VsbFR5cGUoQ2VsbEF0dHJpYnV0ZXMoQ2VsbFR5cGU6Om5lZWRzRGVzdHJ1Y3Rpb24gPyBO
ZWVkc0Rlc3RydWN0aW9uIDogRG9lc05vdE5lZWREZXN0cnVjdGlvbiwgSGVhcENlbGw6OkpTQ2Vs
bCkpCi0gICAgewotICAgIH0KLQorICAgIElzb0lubGluZWRIZWFwQ2VsbFR5cGUoKTsKICAgICBz
dHJ1Y3QgRGVzdHJveUZ1bmMgewotICAgICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgb3BlcmF0b3Io
KShWTSYsIEpTQ2VsbCogY2VsbCkgY29uc3QKLSAgICAgICAgewotICAgICAgICAgICAgQ2VsbFR5
cGU6OmRlc3Ryb3koY2VsbCk7Ci0gICAgICAgIH0KKyAgICAgICAgQUxXQVlTX0lOTElORSB2b2lk
IG9wZXJhdG9yKCkoVk0mLCBKU0NlbGwqIGNlbGwpIGNvbnN0OwogICAgIH07CiAKLSAgICB2b2lk
IGZpbmlzaFN3ZWVwKE1hcmtlZEJsb2NrOjpIYW5kbGUmIGhhbmRsZSwgRnJlZUxpc3QqIGZyZWVM
aXN0KSBjb25zdCBmaW5hbAotICAgIHsKLSAgICAgICAgaGFuZGxlLmZpbmlzaFN3ZWVwS25vd2lu
Z0hlYXBDZWxsVHlwZShmcmVlTGlzdCwgRGVzdHJveUZ1bmMoKSk7Ci0gICAgfQotCi0gICAgdm9p
ZCBkZXN0cm95KFZNJiwgSlNDZWxsKiBjZWxsKSBjb25zdCBmaW5hbAotICAgIHsKLSAgICAgICAg
Q2VsbFR5cGU6OmRlc3Ryb3koY2VsbCk7Ci0gICAgfQorICAgIHZvaWQgZmluaXNoU3dlZXAoTWFy
a2VkQmxvY2s6OkhhbmRsZSYgaGFuZGxlLCBGcmVlTGlzdCogZnJlZUxpc3QpIGNvbnN0IGZpbmFs
OworICAgIHZvaWQgZGVzdHJveShWTSYsIEpTQ2VsbCogY2VsbCkgY29uc3QgZmluYWw7CiB9Owog
CiB9IC8vIG5hbWVzcGFjZSBKU0MKLQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
SXNvSW5saW5lZEhlYXBDZWxsVHlwZUlubGluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9Jc29JbmxpbmVkSGVhcENlbGxUeXBlSW5saW5lcy5oCShub25leGlz
dGVudCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lzb0lubGluZWRIZWFwQ2VsbFR5
cGVJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1OCBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisg
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVk
ZSAiSXNvSW5saW5lZEhlYXBDZWxsVHlwZS5oIgorCisjaW5jbHVkZSAiTWFya2VkQmxvY2suaCIK
KworbmFtZXNwYWNlIEpTQyB7CisKK3RlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlPgoraW5saW5l
IElzb0lubGluZWRIZWFwQ2VsbFR5cGU8Q2VsbFR5cGU+OjpJc29JbmxpbmVkSGVhcENlbGxUeXBl
KCkKKyAgICA6IEhlYXBDZWxsVHlwZShDZWxsQXR0cmlidXRlcyhDZWxsVHlwZTo6bmVlZHNEZXN0
cnVjdGlvbiA/IE5lZWRzRGVzdHJ1Y3Rpb24gOiBEb2VzTm90TmVlZERlc3RydWN0aW9uLCBIZWFw
Q2VsbDo6SlNDZWxsKSkKK3sKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGU+CitBTFdB
WVNfSU5MSU5FIHZvaWQgSXNvSW5saW5lZEhlYXBDZWxsVHlwZTxDZWxsVHlwZT46OkRlc3Ryb3lG
dW5jOjpvcGVyYXRvcigpKFZNJiwgSlNDZWxsKiBjZWxsKSBjb25zdAoreworICAgIENlbGxUeXBl
OjpkZXN0cm95KGNlbGwpOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZT4KK2lubGlu
ZSB2b2lkIElzb0lubGluZWRIZWFwQ2VsbFR5cGU8Q2VsbFR5cGU+OjpmaW5pc2hTd2VlcChNYXJr
ZWRCbG9jazo6SGFuZGxlJiBoYW5kbGUsIEZyZWVMaXN0KiBmcmVlTGlzdCkgY29uc3QKK3sKKyAg
ICBoYW5kbGUuZmluaXNoU3dlZXBLbm93aW5nSGVhcENlbGxUeXBlKGZyZWVMaXN0LCBEZXN0cm95
RnVuYygpKTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGU+CitpbmxpbmUgdm9pZCBJ
c29JbmxpbmVkSGVhcENlbGxUeXBlPENlbGxUeXBlPjo6ZGVzdHJveShWTSYsIEpTQ2VsbCogY2Vs
bCkgY29uc3QKK3sKKyAgICBDZWxsVHlwZTo6ZGVzdHJveShjZWxsKTsKK30KKworfSAvLyBuYW1l
c3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Jc29TdWJzcGFjZS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lzb1N1YnNwYWNlLmgJ
KHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lzb1N1YnNw
YWNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTU0LDcgKzU0LDcgQEAgcHVibGljOgogICAgIHZvaWQq
IHRyeUFsbG9jYXRlRnJvbUxvd2VyVGllcigpOwogICAgIHZvaWQgZGVzdHJveUxvd2VyVGllckZy
ZWVMaXN0KCk7CiAKLSAgICB2b2lkIHN3ZWVwKCk7CisgICAgdm9pZCBzd2VlcDMoKTsKIAogICAg
IHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmM+IHZvaWQgZm9yRWFjaExvd2VyVGllckZyZWVMaXN0ZWRQ
cmVjaXNlQWxsb2NhdGlvbihjb25zdCBGdW5jJik7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL0lzb1N1YnNwYWNlSW5saW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL0lzb1N1YnNwYWNlSW5saW5lcy5oCShyZXZpc2lvbiAyODYwOTUpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Jc29TdWJzcGFjZUlubGluZXMuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNDQsNyArNDQsNyBAQCBpbmxpbmUgdm9pZCBJc29TdWJzcGFjZTo6Y2xlYXJJ
c29DZWxsU2V0CiAgICAgICAgIH0pOwogfQogCi1pbmxpbmUgdm9pZCBJc29TdWJzcGFjZTo6c3dl
ZXAoKQoraW5saW5lIHZvaWQgSXNvU3Vic3BhY2U6OnN3ZWVwMygpCiB7CiAgICAgU3Vic3BhY2U6
OnN3ZWVwQmxvY2tzKCk7CiAgICAgLy8gV2Ugc3dlZXAgcHJlY2lzZS1hbGxvY2F0aW9ucyBlYWdl
cmx5LCBidXQgd2UgZG8gbm90IGZyZWUgaXQgaW1tZWRpYXRlbHkuCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9ja0lubGluZXMuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9ja0lubGluZXMuaAkocmV2aXNpb24gMjg2
MDk1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2tJbmxpbmVzLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE2
LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDE2LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCkBAIC0yMTMsNyArMjEzLDcgQEAgaW5saW5lIGJvb2wgTWFya2VkQmxv
Y2s6OkhhbmRsZTo6YXJlTWFyawogLy8gc3dlZXBNb2RlID09IFN3ZWVwVG9GcmVlTGlzdAogLy8g
c2NyaWJibGVNb2RlID09IERvbnRTY3JpYmJsZQogLy8gbmV3bHlBbGxvY2F0ZWRNb2RlID09IERv
ZXNOb3RIYXZlTmV3bHlBbGxvY2F0ZWQKLS8vIGRlc3RydWN0aW9uTW9kZSAhPSBCbG9ja0hhc0Rl
c3RyaWN0b3JzQW5kQ29sbGVjdG9ySXNSdW5uaW5nCisvLyBkZXN0cnVjdGlvbk1vZGUgIT0gQmxv
Y2tIYXNEZXN0cnVjdG9yc0FuZENvbGxlY3RvcklzUnVubmluZwogLy8KIC8vIGVtcHR5TW9kZSA9
IElzRW1wdHkKIC8vICAgICBkZXN0cnVjdGlvbk1vZGUgPSBEb2VzTm90TmVlZERlc3RydWN0aW9u
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTSW5qZWN0ZWRTY3JpcHRI
b3N0UHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9KU0luamVjdGVkU2NyaXB0SG9zdFByb3RvdHlwZS5oCShyZXZpc2lvbiAyODYwOTUpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTSW5qZWN0ZWRTY3JpcHRIb3N0UHJv
dG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQwLDcgKzQwLDcgQEAgcHVibGljOgogICAgIHN0
YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAg
ICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTSW5qZWN0ZWRTY3Jp
cHRIb3N0UHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNw
YWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAg
ICBERUNMQVJFX0lORk87CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pT
SmF2YVNjcmlwdENhbGxGcmFtZVByb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNKYXZhU2NyaXB0Q2FsbEZyYW1lUHJvdG90eXBlLmgJKHJl
dmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNKYXZh
U2NyaXB0Q2FsbEZyYW1lUHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQwLDcgKzQwLDcg
QEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6
OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJB
QkxFKEpTSmF2YVNjcmlwdENhbGxGcmFtZVByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVy
biAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNw
YWNlKCk7CiAgICAgfQogCiAgICAgREVDTEFSRV9JTkZPOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ludGVycHJldGVyL0NhbGxGcmFtZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnRlcnByZXRlci9DYWxsRnJhbWUuaAkocmV2aXNpb24gMjg2MDk1KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0NhbGxGcmFtZS5oCSh3b3JraW5nIGNv
cHkpCkBAIC0zOCw2ICszOCw3IEBAIG5hbWVzcGFjZSBKU0MgIHsKICAgICBjbGFzcyBKU0NhbGxl
ZTsKICAgICBjbGFzcyBKU1Njb3BlOwogICAgIGNsYXNzIFNvdXJjZU9yaWdpbjsKKyAgICBjbGFz
cyBWaXJ0dWFsUmVnaXN0ZXI7CiAKICAgICBzdHJ1Y3QgSW5zdHJ1Y3Rpb247CiAKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FnZ3JlZ2F0ZUVycm9yUHJvdG90eXBlLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQWdncmVnYXRlRXJyb3JQ
cm90b3R5cGUuaAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQWdncmVnYXRlRXJyb3JQcm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtNDQsNyAr
NDQsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYg
dm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShB
Z2dyZWdhdGVFcnJvclByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5P
YmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAg
fQogCiAgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUl0ZXJhdG9yUHJvdG90eXBlLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlJdGVyYXRvclByb3RvdHlw
ZS5oCShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9B
cnJheUl0ZXJhdG9yUHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM4LDcgKzM4LDcgQEAg
cHVibGljOgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAg
IHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoQXJyYXlJdGVy
YXRvclByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFj
ZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAg
c3RhdGljIEFycmF5SXRlcmF0b3JQcm90b3R5cGUqIGNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlKQpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQXN5bmNGcm9tU3luY0l0ZXJhdG9yUHJvdG90eXBlLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXN5bmNGcm9tU3luY0l0
ZXJhdG9yUHJvdG90eXBlLmgJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0FzeW5jRnJvbVN5bmNJdGVyYXRvclByb3RvdHlwZS5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxNy0yMDE5IE9sZWtz
YW5kciBTa2FjaGtvdiA8Z3NrYWNoa292QGdtYWlsLmNvbT4uCisgKiBDb3B5cmlnaHQgKEMpIDIw
MjEgQXBwbGUsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwpAQCAtMzcsNyArMzgsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIElzb1N1YnNw
YWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lT
T19TVUJTUEFDRV9TSEFSQUJMRShBc3luY0Zyb21TeW5jSXRlcmF0b3JQcm90b3R5cGUsIEJhc2Up
OwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAm
dm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIERFQ0xBUkVfSU5GTzsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FzeW5jRnVuY3Rpb25Qcm90b3R5cGUuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bc3luY0Z1bmN0aW9u
UHJvdG90eXBlLmgJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0FzeW5jRnVuY3Rpb25Qcm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzgsNyAr
MzgsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYg
dm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShB
c3luY0Z1bmN0aW9uUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9i
amVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9
CiAKICAgICBERUNMQVJFX0lORk87CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Bc3luY0dlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXN5bmNHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5o
CShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bc3lu
Y0dlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM4LDcgKzM4
LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZt
KQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoQXN5
bmNHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0u
cGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7
CiAgICAgfQogCiAgICAgREVDTEFSRV9JTkZPOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQXN5bmNHZW5lcmF0b3JQcm90b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Bc3luY0dlbmVyYXRvclByb3RvdHlwZS5oCShyZXZpc2lv
biAyODYwOTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bc3luY0dlbmVyYXRv
clByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00MSw3ICs0MSw3IEBAIHB1YmxpYzoKICAg
ICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAg
IFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEFzeW5jR2VuZXJhdG9yUHJvdG90
eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAg
ICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgQXN5
bmNHZW5lcmF0b3JQcm90b3R5cGUqIGNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiwgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9B
c3luY0l0ZXJhdG9yUHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQXN5bmNJdGVyYXRvclByb3RvdHlwZS5oCShyZXZpc2lvbiAyODYwOTUpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bc3luY0l0ZXJhdG9yUHJvdG90eXBlLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTM5LDcgKzM5LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJc29T
dWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VS
VF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoQXN5bmNJdGVyYXRvclByb3RvdHlwZSwgQmFzZSk7Ci0g
ICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5w
bGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIEFzeW5jSXRlcmF0b3JQcm90
b3R5cGUqIGNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVj
dHVyZSogc3RydWN0dXJlKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXRv
bWljc09iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0F0b21pY3NPYmplY3QuaAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQXRvbWljc09iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBA
QAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNi0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNi0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzcsNyArMzcs
NyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0p
CiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShBdG9t
aWNzT2JqZWN0LCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOwor
ICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgCiAgICAg
c3RhdGljIEF0b21pY3NPYmplY3QqIGNyZWF0ZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0
dXJlKik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9CaWdJbnRQcm90b3R5
cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9CaWdJbnRQ
cm90b3R5cGUuaAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQmlnSW50UHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM5LDcgKzM5LDcgQEAg
cHVibGljOgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAg
IHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoQmlnSW50UHJv
dG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAg
ICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMg
QmlnSW50UHJvdG90eXBlKiBjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0JyYW5kZWRTdHJ1Y3R1cmUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9CcmFuZGVkU3RydWN0dXJlLmgJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0JyYW5kZWRTdHJ1Y3R1cmUuaAkod29ya2luZyBj
b3B5KQpAQCAtNDcsNyArNDcsNyBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2Vs
bFR5cGUsIFN1YnNwYWNlQWNjZXNzPgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VG
b3IoVk0mIHZtKQogICAgIHsKLSAgICAgICAgcmV0dXJuICZ2bS5icmFuZGVkU3RydWN0dXJlU3Bh
Y2U7CisgICAgICAgIHJldHVybiAmdm0uYnJhbmRlZFN0cnVjdHVyZVNwYWNlKCk7CiAgICAgfQog
CiAgICAgQUxXQVlTX0lOTElORSBib29sIGNoZWNrQnJhbmQoU3ltYm9sKiBicmFuZCkKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0J1dHRlcmZseUlubGluZXMuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9CdXR0ZXJmbHlJbmxpbmVzLmgJ
KHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0J1dHRl
cmZseUlubGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtNzcsNyArNzcsNyBAQCBBTFdBWVNfSU5M
SU5FIHVuc2lnbmVkIEJ1dHRlcmZseTo6b3B0aW1hCiBpbmxpbmUgQnV0dGVyZmx5KiBCdXR0ZXJm
bHk6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQoVk0mIHZtLCBKU09iamVjdCosIHNpemVfdCBwcmVD
YXBhY2l0eSwgc2l6ZV90IHByb3BlcnR5Q2FwYWNpdHksIGJvb2wgaGFzSW5kZXhpbmdIZWFkZXIs
IHNpemVfdCBpbmRleGluZ1BheWxvYWRTaXplSW5CeXRlcywgR0NEZWZlcnJhbENvbnRleHQqIGRl
ZmVycmFsQ29udGV4dCkKIHsKICAgICBzaXplX3Qgc2l6ZSA9IHRvdGFsU2l6ZShwcmVDYXBhY2l0
eSwgcHJvcGVydHlDYXBhY2l0eSwgaGFzSW5kZXhpbmdIZWFkZXIsIGluZGV4aW5nUGF5bG9hZFNp
emVJbkJ5dGVzKTsKLSAgICB2b2lkKiBiYXNlID0gdm0uanNWYWx1ZUdpZ2FjYWdlQXV4aWxpYXJ5
U3BhY2UuYWxsb2NhdGVOb25WaXJ0dWFsKHZtLCBzaXplLCBkZWZlcnJhbENvbnRleHQsIEFsbG9j
YXRpb25GYWlsdXJlTW9kZTo6UmV0dXJuTnVsbCk7CisgICAgdm9pZCogYmFzZSA9IHZtLmpzVmFs
dWVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlKCkuYWxsb2NhdGVOb25WaXJ0dWFsKHZtLCBzaXplLCBk
ZWZlcnJhbENvbnRleHQsIEFsbG9jYXRpb25GYWlsdXJlTW9kZTo6UmV0dXJuTnVsbCk7CiAgICAg
aWYgKFVOTElLRUxZKCFiYXNlKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKQEAgLTg5LDcg
Kzg5LDcgQEAgaW5saW5lIEJ1dHRlcmZseSogQnV0dGVyZmx5Ojp0cnlDcmVhdGVVbgogaW5saW5l
IEJ1dHRlcmZseSogQnV0dGVyZmx5OjpjcmVhdGVVbmluaXRpYWxpemVkKFZNJiB2bSwgSlNPYmpl
Y3QqLCBzaXplX3QgcHJlQ2FwYWNpdHksIHNpemVfdCBwcm9wZXJ0eUNhcGFjaXR5LCBib29sIGhh
c0luZGV4aW5nSGVhZGVyLCBzaXplX3QgaW5kZXhpbmdQYXlsb2FkU2l6ZUluQnl0ZXMpCiB7CiAg
ICAgc2l6ZV90IHNpemUgPSB0b3RhbFNpemUocHJlQ2FwYWNpdHksIHByb3BlcnR5Q2FwYWNpdHks
IGhhc0luZGV4aW5nSGVhZGVyLCBpbmRleGluZ1BheWxvYWRTaXplSW5CeXRlcyk7Ci0gICAgdm9p
ZCogYmFzZSA9IHZtLmpzVmFsdWVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlLmFsbG9jYXRlTm9uVmly
dHVhbCh2bSwgc2l6ZSwgbnVsbHB0ciwgQWxsb2NhdGlvbkZhaWx1cmVNb2RlOjpBc3NlcnQpOwor
ICAgIHZvaWQqIGJhc2UgPSB2bS5qc1ZhbHVlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZSgpLmFsbG9j
YXRlTm9uVmlydHVhbCh2bSwgc2l6ZSwgbnVsbHB0ciwgQWxsb2NhdGlvbkZhaWx1cmVNb2RlOjpB
c3NlcnQpOwogICAgIEJ1dHRlcmZseSogcmVzdWx0ID0gZnJvbUJhc2UoYmFzZSwgcHJlQ2FwYWNp
dHksIHByb3BlcnR5Q2FwYWNpdHkpOwogCiAgICAgcmV0dXJuIHJlc3VsdDsKQEAgLTk4LDcgKzk4
LDcgQEAgaW5saW5lIEJ1dHRlcmZseSogQnV0dGVyZmx5OjpjcmVhdGVVbmluaQogaW5saW5lIEJ1
dHRlcmZseSogQnV0dGVyZmx5Ojp0cnlDcmVhdGUoVk0mIHZtLCBKU09iamVjdCosIHNpemVfdCBw
cmVDYXBhY2l0eSwgc2l6ZV90IHByb3BlcnR5Q2FwYWNpdHksIGJvb2wgaGFzSW5kZXhpbmdIZWFk
ZXIsIGNvbnN0IEluZGV4aW5nSGVhZGVyJiBpbmRleGluZ0hlYWRlciwgc2l6ZV90IGluZGV4aW5n
UGF5bG9hZFNpemVJbkJ5dGVzKQogewogICAgIHNpemVfdCBzaXplID0gdG90YWxTaXplKHByZUNh
cGFjaXR5LCBwcm9wZXJ0eUNhcGFjaXR5LCBoYXNJbmRleGluZ0hlYWRlciwgaW5kZXhpbmdQYXls
b2FkU2l6ZUluQnl0ZXMpOwotICAgIHZvaWQqIGJhc2UgPSB2bS5qc1ZhbHVlR2lnYWNhZ2VBdXhp
bGlhcnlTcGFjZS5hbGxvY2F0ZU5vblZpcnR1YWwodm0sIHNpemUsIG51bGxwdHIsIEFsbG9jYXRp
b25GYWlsdXJlTW9kZTo6UmV0dXJuTnVsbCk7CisgICAgdm9pZCogYmFzZSA9IHZtLmpzVmFsdWVH
aWdhY2FnZUF1eGlsaWFyeVNwYWNlKCkuYWxsb2NhdGVOb25WaXJ0dWFsKHZtLCBzaXplLCBudWxs
cHRyLCBBbGxvY2F0aW9uRmFpbHVyZU1vZGU6OlJldHVybk51bGwpOwogICAgIGlmICghYmFzZSkK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgQnV0dGVyZmx5KiByZXN1bHQgPSBmcm9tQmFz
ZShiYXNlLCBwcmVDYXBhY2l0eSwgcHJvcGVydHlDYXBhY2l0eSk7CkBAIC0xNzQsNyArMTc0LDcg
QEAgaW5saW5lIEJ1dHRlcmZseSogQnV0dGVyZmx5Ojpncm93QXJyYXlSaQogICAgIHZvaWQqIHRo
ZUJhc2UgPSBiYXNlKDAsIHByb3BlcnR5Q2FwYWNpdHkpOwogICAgIHNpemVfdCBvbGRTaXplID0g
dG90YWxTaXplKDAsIHByb3BlcnR5Q2FwYWNpdHksIGhhZEluZGV4aW5nSGVhZGVyLCBvbGRJbmRl
eGluZ1BheWxvYWRTaXplSW5CeXRlcyk7CiAgICAgc2l6ZV90IG5ld1NpemUgPSB0b3RhbFNpemUo
MCwgcHJvcGVydHlDYXBhY2l0eSwgdHJ1ZSwgbmV3SW5kZXhpbmdQYXlsb2FkU2l6ZUluQnl0ZXMp
OwotICAgIHZvaWQqIG5ld0Jhc2UgPSB2bS5qc1ZhbHVlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZS5h
bGxvY2F0ZU5vblZpcnR1YWwodm0sIG5ld1NpemUsIG51bGxwdHIsIEFsbG9jYXRpb25GYWlsdXJl
TW9kZTo6UmV0dXJuTnVsbCk7CisgICAgdm9pZCogbmV3QmFzZSA9IHZtLmpzVmFsdWVHaWdhY2Fn
ZUF1eGlsaWFyeVNwYWNlKCkuYWxsb2NhdGVOb25WaXJ0dWFsKHZtLCBuZXdTaXplLCBudWxscHRy
LCBBbGxvY2F0aW9uRmFpbHVyZU1vZGU6OlJldHVybk51bGwpOwogICAgIGlmICghbmV3QmFzZSkK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgLy8gRklYTUU6IFRoaXMgcHJvYmFibHkgc2hv
dWxkbid0IGJlIGEgbWVtY3B5LgpAQCAtMjExLDEzICsyMTEsMTMgQEAgaW5saW5lIEJ1dHRlcmZs
eSogQnV0dGVyZmx5OjpyZWFsbG9jQXJyYQogICAgIC8vIE9iamVjdHMgd2l0aCBubyBwcm9wZXJ0
aWVzIGFyZSBjb21tb24gaW4gYXJyYXlzLCBhbmQgd2UgYXJlIGZvY3VzaW5nIG9uIHZlcnkgbGFy
Z2UgYXJyYXkgY3JhZnRlZCBieSByZXBlYXRpbmcgQXJyYXkjcHVzaCwgc28uLi4gdGhhdCdzIGZp
bmUhCiAgICAgYm9vbCBjYW5SZWFsbG9jID0gIXByb3BlcnR5Q2FwYWNpdHkgJiYgIXZtLmhlYXAu
bXV0YXRvclNob3VsZEJlRmVuY2VkKCkgJiYgYml0d2lzZV9jYXN0PEhlYXBDZWxsKj4odGhlQmFz
ZSktPmlzUHJlY2lzZUFsbG9jYXRpb24oKTsKICAgICBpZiAoY2FuUmVhbGxvYykgewotICAgICAg
ICB2b2lkKiBuZXdCYXNlID0gdm0uanNWYWx1ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UucmVhbGxv
Y2F0ZVByZWNpc2VBbGxvY2F0aW9uTm9uVmlydHVhbCh2bSwgYml0d2lzZV9jYXN0PEhlYXBDZWxs
Kj4odGhlQmFzZSksIG5ld1NpemUsICZkZWZlcnJhbENvbnRleHQsIEFsbG9jYXRpb25GYWlsdXJl
TW9kZTo6UmV0dXJuTnVsbCk7CisgICAgICAgIHZvaWQqIG5ld0Jhc2UgPSB2bS5qc1ZhbHVlR2ln
YWNhZ2VBdXhpbGlhcnlTcGFjZSgpLnJlYWxsb2NhdGVQcmVjaXNlQWxsb2NhdGlvbk5vblZpcnR1
YWwodm0sIGJpdHdpc2VfY2FzdDxIZWFwQ2VsbCo+KHRoZUJhc2UpLCBuZXdTaXplLCAmZGVmZXJy
YWxDb250ZXh0LCBBbGxvY2F0aW9uRmFpbHVyZU1vZGU6OlJldHVybk51bGwpOwogICAgICAgICBp
ZiAoIW5ld0Jhc2UpCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgcmV0dXJu
IGZyb21CYXNlKG5ld0Jhc2UsIDAsIHByb3BlcnR5Q2FwYWNpdHkpOwogICAgIH0KIAotICAgIHZv
aWQqIG5ld0Jhc2UgPSB2bS5qc1ZhbHVlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZS5hbGxvY2F0ZU5v
blZpcnR1YWwodm0sIG5ld1NpemUsICZkZWZlcnJhbENvbnRleHQsIEFsbG9jYXRpb25GYWlsdXJl
TW9kZTo6UmV0dXJuTnVsbCk7CisgICAgdm9pZCogbmV3QmFzZSA9IHZtLmpzVmFsdWVHaWdhY2Fn
ZUF1eGlsaWFyeVNwYWNlKCkuYWxsb2NhdGVOb25WaXJ0dWFsKHZtLCBuZXdTaXplLCAmZGVmZXJy
YWxDb250ZXh0LCBBbGxvY2F0aW9uRmFpbHVyZU1vZGU6OlJldHVybk51bGwpOwogICAgIGlmICgh
bmV3QmFzZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgZ2NTYWZlTWVtY3B5KHN0YXRp
Y19jYXN0PEpTVmFsdWUqPihuZXdCYXNlKSwgc3RhdGljX2Nhc3Q8SlNWYWx1ZSo+KHRoZUJhc2Up
LCBvbGRTaXplKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NhY2hlZFR5
cGVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FjaGVk
VHlwZXMuaAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQ2FjaGVkVHlwZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTgtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTgtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM5LDYgKzM5LDcgQEAgY2xhc3Mg
Q2FjaGVkQnl0ZWNvZGU7CiBjbGFzcyBTb3VyY2VDb2RlS2V5OwogY2xhc3MgVW5saW5rZWRDb2Rl
QmxvY2s7CiBjbGFzcyBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrOworY2xhc3MgVW5saW5rZWRG
dW5jdGlvbkV4ZWN1dGFibGU7CiAKIGVudW0gY2xhc3MgU291cmNlQ29kZVR5cGU7CiAKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nsb25lZEFyZ3VtZW50cy5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nsb25lZEFyZ3VtZW50cy5oCShy
ZXZpc2lvbiAyODYwOTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DbG9uZWRB
cmd1bWVudHMuaAkod29ya2luZyBjb3B5KQpAQCAtNDYsNyArNDYsNyBAQCBwdWJsaWM6CiAgICAg
c3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewogICAgICAgICBz
dGF0aWNfYXNzZXJ0KCFDZWxsVHlwZTo6bmVlZHNEZXN0cnVjdGlvbiwgIiIpOwotICAgICAgICBy
ZXR1cm4gJnZtLmNsb25lZEFyZ3VtZW50c1NwYWNlOworICAgICAgICByZXR1cm4gJnZtLmNsb25l
ZEFyZ3VtZW50c1NwYWNlKCk7CiAgICAgfQogICAgIAogcHJpdmF0ZToKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbnNvbGVPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db25zb2xlT2JqZWN0LmgJKHJldmlzaW9uIDI4NjA5
NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbnNvbGVPYmplY3QuaAkod29y
a2luZyBjb3B5KQpAQCAtMzcsNyArMzcsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIElzb1N1YnNw
YWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lT
T19TVUJTUEFDRV9TSEFSQUJMRShDb25zb2xlT2JqZWN0LCBCYXNlKTsKLSAgICAgICAgcmV0dXJu
ICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3Bh
Y2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgQ29uc29sZU9iamVjdCogY3JlYXRlKFZNJiB2bSwg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DdXN0b21HZXR0ZXJTZXR0ZXIuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DdXN0b21HZXR0ZXJTZXR0
ZXIuaAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Q3VzdG9tR2V0dGVyU2V0dGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTQzLDcgKzQzLDcgQEAgcHVi
bGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlLCBTdWJzcGFjZUFjY2Vzcz4KICAg
ICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7Ci0gICAgICAg
IHJldHVybiAmdm0uY3VzdG9tR2V0dGVyU2V0dGVyU3BhY2U7CisgICAgICAgIHJldHVybiAmdm0u
Y3VzdG9tR2V0dGVyU2V0dGVyU3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgQ3VzdG9tR2V0
dGVyU2V0dGVyKiBjcmVhdGUoVk0mIHZtLCBDdXN0b21HZXR0ZXIgY3VzdG9tR2V0dGVyLCBDdXN0
b21TZXR0ZXIgY3VzdG9tU2V0dGVyKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvRE9NQXR0cmlidXRlR2V0dGVyU2V0dGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvRE9NQXR0cmlidXRlR2V0dGVyU2V0dGVyLmgJKHJldmlzaW9uIDI4
NjA5NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RPTUF0dHJpYnV0ZUdldHRl
clNldHRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC00Myw3ICs0Myw3IEBAIHB1YmxpYzoKICAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vic3BhY2VBY2Nlc3M+CiAgICAgc3RhdGljIElz
b1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewotICAgICAgICByZXR1cm4gJnZt
LmRvbUF0dHJpYnV0ZUdldHRlclNldHRlclNwYWNlOworICAgICAgICByZXR1cm4gJnZtLmRvbUF0
dHJpYnV0ZUdldHRlclNldHRlclNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIERPTUF0dHJp
YnV0ZUdldHRlclNldHRlciogY3JlYXRlKFZNJiB2bSwgQ3VzdG9tR2V0dGVyIGN1c3RvbUdldHRl
ciwgQ3VzdG9tU2V0dGVyIGN1c3RvbVNldHRlciwgRE9NQXR0cmlidXRlQW5ub3RhdGlvbiBkb21B
dHRyaWJ1dGUpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlSW5zdGFu
Y2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlSW5z
dGFuY2UuaAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvRGF0ZUluc3RhbmNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM3LDcgKzM3LDcgQEAgcHVibGlj
OgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlLCBTdWJzcGFjZUFjY2VzcyBtb2RlPgog
ICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKLSAgICAg
ICAgcmV0dXJuICZ2bS5kYXRlSW5zdGFuY2VTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5kYXRl
SW5zdGFuY2VTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBEYXRlSW5zdGFuY2UqIGNyZWF0
ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBkb3VibGUgZGF0ZSkKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVQcm90b3R5cGUuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlUHJvdG90eXBlLmgJKHJldmlzaW9uIDI4
NjA5NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVQcm90b3R5cGUuaAko
d29ya2luZyBjb3B5KQpAQCAtMzUsNyArMzUsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIElzb1N1
YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJU
X0lTT19TVUJTUEFDRV9TSEFSQUJMRShEYXRlUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0
dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0
U3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgRGF0ZVByb3RvdHlwZSogY3JlYXRlKFZNJiB2
bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EaXJlY3RBcmd1bWVudHMuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EaXJlY3RBcmd1bWVudHMu
aAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGly
ZWN0QXJndW1lbnRzLmgJKHdvcmtpbmcgY29weSkKQEAgLTUwLDcgKzUwLDcgQEAgcHVibGljOgog
ICAgIHN0YXRpYyBDb21wbGV0ZVN1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewog
ICAgICAgICBzdGF0aWNfYXNzZXJ0KCFDZWxsVHlwZTo6bmVlZHNEZXN0cnVjdGlvbiwgIiIpOwot
ICAgICAgICByZXR1cm4gJnZtLnZhcmlhYmxlU2l6ZWRDZWxsU3BhY2U7CisgICAgICAgIHJldHVy
biAmdm0udmFyaWFibGVTaXplZENlbGxTcGFjZSgpOwogICAgIH0KIAogICAgIC8vIENyZWF0ZXMg
YW4gYXJndW1lbnRzIG9iamVjdCBidXQgbGVhdmVzIGl0IHVuaW5pdGlhbGl6ZWQuIFRoaXMgaXMg
ZGFuZ2Vyb3VzIGlmIHdlIEdDIHJpZ2h0CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9FcnJvclByb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0Vycm9yUHJvdG90eXBlLmgJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yUHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAg
LTQ1LDcgKzQ1LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VG
b3IoVk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hB
UkFCTEUoRXJyb3JQcm90b3R5cGVCYXNlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFp
bk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAg
ICB9CiAKICAgICBERUNMQVJFX0lORk87CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9FeGNlcHRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9FeGNlcHRpb24uaAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvRXhjZXB0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTQwLDcgKzQwLDcgQEAg
cHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlLCBTdWJzcGFjZUFjY2VzcyBt
b2RlPgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsK
LSAgICAgICAgcmV0dXJuICZ2bS5leGNlcHRpb25TcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5l
eGNlcHRpb25TcGFjZSgpOwogICAgIH0KIAogICAgIGVudW0gU3RhY2tDYXB0dXJlQWN0aW9uIHsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvblNjb3BlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNlcHRpb25TY29w
ZS5jcHAJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0V4Y2VwdGlvblNjb3BlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0ZpbmFsaXphdGlvblJlZ2lzdHJ5UHJvdG90eXBlLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRmluYWxpemF0aW9uUmVnaXN0cnlQ
cm90b3R5cGUuaAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvRmluYWxpemF0aW9uUmVnaXN0cnlQcm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAt
MzcsNyArMzcsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZv
cihWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFS
QUJMRShGaW5hbGl6YXRpb25SZWdpc3RyeVByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVy
biAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNw
YWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIEZpbmFsaXphdGlvblJlZ2lzdHJ5UHJvdG90eXBl
KiBjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9u
RXhlY3V0YWJsZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0Z1bmN0aW9uRXhlY3V0YWJsZS5oCShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkV4ZWN1dGFibGUuaAkod29ya2luZyBjb3B5KQpAQCAt
NDYsNyArNDYsNyBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUsIFN1
YnNwYWNlQWNjZXNzPgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZt
KQogICAgIHsKLSAgICAgICAgcmV0dXJuICZ2bS5mdW5jdGlvbkV4ZWN1dGFibGVTcGFjZS5zcGFj
ZTsKKyAgICAgICAgcmV0dXJuICZ2bS5mdW5jdGlvbkV4ZWN1dGFibGVTcGFjZSgpLnNwYWNlOwog
ICAgIH0KIAogICAgIHN0YXRpYyBGdW5jdGlvbkV4ZWN1dGFibGUqIGNyZWF0ZShWTSYgdm0sIFNj
cmlwdEV4ZWN1dGFibGUqIHRvcExldmVsRXhlY3V0YWJsZSwgY29uc3QgU291cmNlQ29kZSYgc291
cmNlLCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogdW5saW5rZWRFeGVjdXRhYmxlLCBJbnRy
aW5zaWMgaW50cmluc2ljLCBib29sIGlzSW5zaWRlT3JkaW5hcnlGdW5jdGlvbikKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yRnVu
Y3Rpb25Qcm90b3R5cGUuaAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpA
QCAtNDAsNyArNDAsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFj
ZUZvcihWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9T
SEFSQUJMRShHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVy
biAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNw
YWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlKiBj
cmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvclByb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvclByb3RvdHlwZS5oCShyZXZpc2lvbiAy
ODYwOTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JQcm90b3R5
cGUuaAkod29ya2luZyBjb3B5KQpAQCAtNDEsNyArNDEsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGlj
IElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNf
QVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShHZW5lcmF0b3JQcm90b3R5cGUsIEJhc2UpOwot
ICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0u
cGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBHZW5lcmF0b3JQcm90b3R5
cGUqIGNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUp
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZXR0ZXJTZXR0ZXIuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZXR0ZXJTZXR0ZXIuaAko
cmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2V0dGVy
U2V0dGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTU5LDcgKzU5LDcgQEAgcHVibGljOgogICAgIHRl
bXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlLCBTdWJzcGFjZUFjY2Vzcz4KICAgICBzdGF0aWMgSXNv
U3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7Ci0gICAgICAgIHJldHVybiAmdm0u
Z2V0dGVyU2V0dGVyU3BhY2U7CisgICAgICAgIHJldHVybiAmdm0uZ2V0dGVyU2V0dGVyU3BhY2Uo
KTsKICAgICB9CiAKICAgICBzdGF0aWMgR2V0dGVyU2V0dGVyKiBjcmVhdGUoVk0mIHZtLCBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU09iamVjdCogZ2V0dGVyLCBKU09iamVjdCogc2V0
dGVyKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSGFzaE1hcEltcGwuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9IYXNoTWFwSW1wbC5o
CShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9IYXNo
TWFwSW1wbC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMTMsNyArMjEzLDcgQEAgcHVibGljOgogICAg
IHsKICAgICAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgICAg
ICBzaXplX3QgYWxsb2NhdGlvblNpemUgPSBIYXNoTWFwQnVmZmVyOjphbGxvY2F0aW9uU2l6ZShj
YXBhY2l0eSk7Ci0gICAgICAgIHZvaWQqIGRhdGEgPSB2bS5qc1ZhbHVlR2lnYWNhZ2VBdXhpbGlh
cnlTcGFjZS5hbGxvY2F0ZU5vblZpcnR1YWwodm0sIGFsbG9jYXRpb25TaXplLCBudWxscHRyLCBB
bGxvY2F0aW9uRmFpbHVyZU1vZGU6OlJldHVybk51bGwpOworICAgICAgICB2b2lkKiBkYXRhID0g
dm0uanNWYWx1ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UoKS5hbGxvY2F0ZU5vblZpcnR1YWwodm0s
IGFsbG9jYXRpb25TaXplLCBudWxscHRyLCBBbGxvY2F0aW9uRmFpbHVyZU1vZGU6OlJldHVybk51
bGwpOwogICAgICAgICBpZiAoIWRhdGEpIHsKICAgICAgICAgICAgIHRocm93T3V0T2ZNZW1vcnlF
cnJvcihnbG9iYWxPYmplY3QsIHNjb3BlKTsKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50ZXJuYWxGdW5jdGlvbi5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGVybmFsRnVuY3Rp
b24uaAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SW50ZXJuYWxGdW5jdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC00MSw3ICs0MSw3IEBAIHB1Ymxp
YzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAg
ICAgICAgIHN0YXRpY19hc3NlcnQoc2l6ZW9mKENlbGxUeXBlKSA9PSBzaXplb2YoSW50ZXJuYWxG
dW5jdGlvbiksICJJbnRlcm5hbEZ1bmN0aW9uIHN1YmNsYXNzZXMgdGhhdCBhZGQgZmllbGRzIG5l
ZWQgdG8gb3ZlcnJpZGUgc3Vic3BhY2VGb3I8PigpIik7Ci0gICAgICAgIHJldHVybiAmdm0uaW50
ZXJuYWxGdW5jdGlvblNwYWNlOworICAgICAgICByZXR1cm4gJnZtLmludGVybmFsRnVuY3Rpb25T
cGFjZSgpOwogICAgIH0KIAogICAgIERFQ0xBUkVfRVhQT1JUX0lORk87CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsQ29sbGF0b3JQcm90b3R5cGUuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsQ29sbGF0b3JQcm90b3R5cGUu
aAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50
bENvbGxhdG9yUHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw2IEBACiAvKgog
ICogQ29weXJpZ2h0IChDKSAyMDE1IEFuZHkgVmFuV2Fnb25lciAoYW5keUB2YW53YWdvbmVyLmZh
bWlseSkKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTktMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM5LDcgKzM5LDcgQEAg
cHVibGljOgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAg
IHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSW50bENvbGxh
dG9yUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNl
OworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBz
dGF0aWMgSW50bENvbGxhdG9yUHJvdG90eXBlKiBjcmVhdGUoVk0mLCBKU0dsb2JhbE9iamVjdCos
IFN0cnVjdHVyZSopOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERh
dGVUaW1lRm9ybWF0UHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlLmgJKHJldmlzaW9uIDI4NjA5
NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdFBy
b3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNiBAQAogLyoKICAqIENvcHlyaWdo
dCAoQykgMjAxNSBBbmR5IFZhbldhZ29uZXIgKGFuZHlAdmFud2Fnb25lci5mYW1pbHkpCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDE5LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zOSw3ICszOSw3IEBAIHB1YmxpYzoKICAg
ICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAg
IFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEludGxEYXRlVGltZUZvcm1hdFBy
b3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAg
ICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGlj
IEludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZSogY3JlYXRlKFZNJiwgSlNHbG9iYWxPYmplY3Qq
LCBTdHJ1Y3R1cmUqKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxE
aXNwbGF5TmFtZXNQcm90b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9JbnRsRGlzcGxheU5hbWVzUHJvdG90eXBlLmgJKHJldmlzaW9uIDI4NjA5NSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEaXNwbGF5TmFtZXNQcm90b3R5
cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDIwLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCkBAIC0zOCw3ICszOCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNv
U3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NF
UlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEludGxEaXNwbGF5TmFtZXNQcm90b3R5cGUsIEJhc2Up
OwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAm
dm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBJbnRsRGlzcGxheU5h
bWVzUHJvdG90eXBlKiBjcmVhdGUoVk0mLCBTdHJ1Y3R1cmUqKTsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0ludGxMaXN0Rm9ybWF0UHJvdG90eXBlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bExpc3RGb3JtYXRQcm90b3R5cGUu
aAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50
bExpc3RGb3JtYXRQcm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDIwLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zOCw3ICszOCw3IEBAIHB1Ymxp
YzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAg
ICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEludGxMaXN0Rm9ybWF0
UHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOwor
ICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0
aWMgSW50bExpc3RGb3JtYXRQcm90b3R5cGUqIGNyZWF0ZShWTSYsIFN0cnVjdHVyZSopOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bExvY2FsZVByb3RvdHlwZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxMb2NhbGVQcm90
b3R5cGUuaAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSW50bExvY2FsZVByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNiBAQAog
LyoKICAqIENvcHlyaWdodCAoQykgMjAyMCBTb255IEludGVyYWN0aXZlIEVudGVydGFpbm1lbnQg
SW5jLgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzgsNyArMzksNyBAQCBwdWJs
aWM6CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewog
ICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShJbnRsTG9jYWxlUHJv
dG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAg
ICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMg
SW50bExvY2FsZVByb3RvdHlwZSogY3JlYXRlKFZNJiwgU3RydWN0dXJlKik7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1h
dFByb3RvdHlwZS5oCShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9JbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEs
NiArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDE1IEFuZHkgVmFuV2Fnb25lciAoYW5k
eUB2YW53YWdvbmVyLmZhbWlseSkKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTktMjAyMSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAg
LTM5LDcgKzM5LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VG
b3IoVk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hB
UkFCTEUoSW50bE51bWJlckZvcm1hdFByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAm
dm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNl
KCk7CiAgICAgfQogCiAgICAgc3RhdGljIEludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUqIGNyZWF0
ZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKik7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9JbnRsT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSW50bE9iamVjdC5oCShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAg
LTEsNiArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDE1IEFuZHkgVmFuV2Fnb25lciAo
YW5keUB2YW53YWdvbmVyLmZhbWlseSkKLSAqIENvcHlyaWdodCAoQykgMjAxOS0yMDIwIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxOS0yMDIxIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAyMCBTb255
IEludGVyYWN0aXZlIEVudGVydGFpbm1lbnQgSW5jLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dApAQCAtNzYs
NyArNzYsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihW
TSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJM
RShJbnRsT2JqZWN0LCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNl
OworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBz
dGF0aWMgSW50bE9iamVjdCogY3JlYXRlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUq
KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxQbHVyYWxSdWxlc1By
b3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lu
dGxQbHVyYWxSdWxlc1Byb3RvdHlwZS5oCShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9JbnRsUGx1cmFsUnVsZXNQcm90b3R5cGUuaAkod29ya2luZyBj
b3B5KQpAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTggQW5keSBWYW5X
YWdvbmVyIChhbmR5QHZhbndhZ29uZXIuZmFtaWx5KQotICogQ29weXJpZ2h0IChDKSAyMDE5IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxOS0yMDIx
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtMzksNyArMzksNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIElzb1N1YnNwYWNl
KiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19T
VUJTUEFDRV9TSEFSQUJMRShJbnRsUGx1cmFsUnVsZXNQcm90b3R5cGUsIEJhc2UpOwotICAgICAg
ICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5P
YmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBJbnRsUGx1cmFsUnVsZXNQcm90b3R5
cGUqIGNyZWF0ZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKik7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsUmVsYXRpdmVUaW1lRm9ybWF0UHJvdG90eXBl
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFJlbGF0
aXZlVGltZUZvcm1hdFByb3RvdHlwZS5oCShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9JbnRsUmVsYXRpdmVUaW1lRm9ybWF0UHJvdG90eXBlLmgJKHdv
cmtpbmcgY29weSkKQEAgLTEsNSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDIwIFNv
bnkgSW50ZXJhY3RpdmUgRW50ZXJ0YWlubWVudCBJbmMuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCkBAIC0zOCw3ICszOSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2Uq
IHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NV
QlNQQUNFX1NIQVJBQkxFKEludGxSZWxhdGl2ZVRpbWVGb3JtYXRQcm90b3R5cGUsIEJhc2UpOwot
ICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0u
cGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBJbnRsUmVsYXRpdmVUaW1l
Rm9ybWF0UHJvdG90eXBlKiBjcmVhdGUoVk0mLCBTdHJ1Y3R1cmUqKTsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxTZWdtZW50SXRlcmF0b3JQcm90b3R5cGUuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsU2VnbWVudEl0ZXJh
dG9yUHJvdG90eXBlLmgJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0ludGxTZWdtZW50SXRlcmF0b3JQcm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpA
QCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDIwLTIwMjEgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0z
OCw3ICszOCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9y
KFZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJB
QkxFKEludGxTZWdtZW50SXRlcmF0b3JQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4g
JnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFj
ZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBJbnRsU2VnbWVudEl0ZXJhdG9yUHJvdG90eXBlKiBj
cmVhdGUoVk0mLCBTdHJ1Y3R1cmUqKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0ludGxTZWdtZW50ZXJQcm90b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9JbnRsU2VnbWVudGVyUHJvdG90eXBlLmgJKHJldmlzaW9uIDI4NjA5
NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxTZWdtZW50ZXJQcm90b3R5
cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDIwLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCkBAIC0zOCw3ICszOCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNv
U3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NF
UlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEludGxTZWdtZW50ZXJQcm90b3R5cGUsIEJhc2UpOwot
ICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0u
cGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBJbnRsU2VnbWVudGVyUHJv
dG90eXBlKiBjcmVhdGUoVk0mLCBTdHJ1Y3R1cmUqKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0ludGxTZWdtZW50c1Byb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxTZWdtZW50c1Byb3RvdHlwZS5oCShyZXZpc2lv
biAyODYwOTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsU2VnbWVudHNQ
cm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDIwLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zOCw3ICszOCw3IEBAIHB1YmxpYzoKICAgICBzdGF0
aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJ
Q19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEludGxTZWdtZW50c1Byb3RvdHlwZSwgQmFz
ZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJu
ICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIEludGxTZWdtZW50
c1Byb3RvdHlwZSogY3JlYXRlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqKTsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0l0ZXJhdG9yUHJvdG90eXBlLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSXRlcmF0b3JQcm90b3R5
cGUuaAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SXRlcmF0b3JQcm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzksNyArMzksNyBAQCBwdWJs
aWM6CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewog
ICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShJdGVyYXRvclByb3Rv
dHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAg
ICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIEl0
ZXJhdG9yUHJvdG90eXBlKiBjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTQXJyYXkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTQXJyYXkuY3BwCShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0FycmF5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTYsNyArNTYsNyBA
QCBKU0FycmF5KiBKU0FycmF5Ojp0cnlDcmVhdGVVbmluaXRpYWxpemVkCiAgICAgICAgICAgICB8
fCBoYXNDb250aWd1b3VzKGluZGV4aW5nVHlwZSkpOwogCiAgICAgICAgIHVuc2lnbmVkIHZlY3Rv
ckxlbmd0aCA9IEJ1dHRlcmZseTo6b3B0aW1hbENvbnRpZ3VvdXNWZWN0b3JMZW5ndGgoc3RydWN0
dXJlLCBpbml0aWFsTGVuZ3RoKTsKLSAgICAgICAgdm9pZCogdGVtcCA9IHZtLmpzVmFsdWVHaWdh
Y2FnZUF1eGlsaWFyeVNwYWNlLmFsbG9jYXRlTm9uVmlydHVhbCgKKyAgICAgICAgdm9pZCogdGVt
cCA9IHZtLmpzVmFsdWVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlKCkuYWxsb2NhdGVOb25WaXJ0dWFs
KAogICAgICAgICAgICAgdm0sCiAgICAgICAgICAgICBCdXR0ZXJmbHk6OnRvdGFsU2l6ZSgwLCBv
dXRPZkxpbmVTdG9yYWdlLCB0cnVlLCB2ZWN0b3JMZW5ndGggKiBzaXplb2YoRW5jb2RlZEpTVmFs
dWUpKSwKICAgICAgICAgICAgIGRlZmVycmFsQ29udGV4dCwgQWxsb2NhdGlvbkZhaWx1cmVNb2Rl
OjpSZXR1cm5OdWxsKTsKQEAgLTc4LDcgKzc4LDcgQEAgSlNBcnJheSogSlNBcnJheTo6dHJ5Q3Jl
YXRlVW5pbml0aWFsaXplZAogICAgICAgICAgICAgfHwgaW5kZXhpbmdUeXBlID09IEFycmF5V2l0
aEFycmF5U3RvcmFnZSk7CiAgICAgICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgaW5kZXhC
aWFzID0gMDsKICAgICAgICAgdW5zaWduZWQgdmVjdG9yTGVuZ3RoID0gQXJyYXlTdG9yYWdlOjpv
cHRpbWFsVmVjdG9yTGVuZ3RoKGluZGV4Qmlhcywgc3RydWN0dXJlLCBpbml0aWFsTGVuZ3RoKTsK
LSAgICAgICAgdm9pZCogdGVtcCA9IHZtLmpzVmFsdWVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlLmFs
bG9jYXRlTm9uVmlydHVhbCgKKyAgICAgICAgdm9pZCogdGVtcCA9IHZtLmpzVmFsdWVHaWdhY2Fn
ZUF1eGlsaWFyeVNwYWNlKCkuYWxsb2NhdGVOb25WaXJ0dWFsKAogICAgICAgICAgICAgdm0sCiAg
ICAgICAgICAgICBCdXR0ZXJmbHk6OnRvdGFsU2l6ZShpbmRleEJpYXMsIG91dE9mTGluZVN0b3Jh
Z2UsIHRydWUsIEFycmF5U3RvcmFnZTo6c2l6ZUZvcih2ZWN0b3JMZW5ndGgpKSwKICAgICAgICAg
ICAgIGRlZmVycmFsQ29udGV4dCwgQWxsb2NhdGlvbkZhaWx1cmVNb2RlOjpSZXR1cm5OdWxsKTsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmgJKHJldmlzaW9uIDI4
NjA5NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNTEsNyArNTEsNyBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUg
Q2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNzPgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3Bh
Y2VGb3IoVk0mIHZtKQogICAgIHsKLSAgICAgICAgcmV0dXJuICZ2bS5hcnJheVNwYWNlOworICAg
ICAgICByZXR1cm4gJnZtLmFycmF5U3BhY2UoKTsKICAgICB9CiAgICAgICAgIAogcHJvdGVjdGVk
OgpAQCAtMjQ0LDcgKzI0NCw3IEBAIGlubGluZSBKU0FycmF5KiBKU0FycmF5Ojp0cnlDcmVhdGUo
Vk0mIHYKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgICAgIHVuc2lnbmVkIHZl
Y3Rvckxlbmd0aCA9IEJ1dHRlcmZseTo6b3B0aW1hbENvbnRpZ3VvdXNWZWN0b3JMZW5ndGgoc3Ry
dWN0dXJlLCB2ZWN0b3JMZW5ndGhIaW50KTsKLSAgICAgICAgdm9pZCogdGVtcCA9IHZtLmpzVmFs
dWVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlLmFsbG9jYXRlTm9uVmlydHVhbCgKKyAgICAgICAgdm9p
ZCogdGVtcCA9IHZtLmpzVmFsdWVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlKCkuYWxsb2NhdGVOb25W
aXJ0dWFsKAogICAgICAgICAgICAgdm0sCiAgICAgICAgICAgICBCdXR0ZXJmbHk6OnRvdGFsU2l6
ZSgwLCBvdXRPZkxpbmVTdG9yYWdlLCB0cnVlLCB2ZWN0b3JMZW5ndGggKiBzaXplb2YoRW5jb2Rl
ZEpTVmFsdWUpKSwKICAgICAgICAgICAgIG51bGxwdHIsIEFsbG9jYXRpb25GYWlsdXJlTW9kZTo6
UmV0dXJuTnVsbCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5
QnVmZmVyUHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNBcnJheUJ1ZmZlclByb3RvdHlwZS5oCShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyUHJvdG90eXBlLmgJKHdvcmtp
bmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE2
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMy0y
MDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwpAQCAtMzcsNyArMzcsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIElzb1N1YnNw
YWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lT
T19TVUJTUEFDRV9TSEFSQUJMRShKU0FycmF5QnVmZmVyUHJvdG90eXBlLCBCYXNlKTsKLSAgICAg
ICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWlu
T2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgSlNBcnJheUJ1ZmZlclByb3RvdHlw
ZSogY3JlYXRlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBBcnJheUJ1ZmZlclNo
YXJpbmdNb2RlID0gQXJyYXlCdWZmZXJTaGFyaW5nTW9kZTo6RGVmYXVsdCk7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyVmlldy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlclZpZXcuY3Bw
CShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Fy
cmF5QnVmZmVyVmlldy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY0LDcgKzY0LDcgQEAgSlNBcnJh
eUJ1ZmZlclZpZXc6OkNvbnN0cnVjdGlvbkNvbnRleHQ6OgogICAgICAgICAvLyBBdHRlbXB0IEdD
IGFsbG9jYXRpb24uCiAgICAgICAgIHZvaWQqIHRlbXA7CiAgICAgICAgIHNpemVfdCBzaXplID0g
c2l6ZU9mKGxlbmd0aCwgZWxlbWVudFNpemUpOwotICAgICAgICB0ZW1wID0gdm0ucHJpbWl0aXZl
R2lnYWNhZ2VBdXhpbGlhcnlTcGFjZS5hbGxvY2F0ZU5vblZpcnR1YWwodm0sIHNpemUsIG51bGxw
dHIsIEFsbG9jYXRpb25GYWlsdXJlTW9kZTo6UmV0dXJuTnVsbCk7CisgICAgICAgIHRlbXAgPSB2
bS5wcmltaXRpdmVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlKCkuYWxsb2NhdGVOb25WaXJ0dWFsKHZt
LCBzaXplLCBudWxscHRyLCBBbGxvY2F0aW9uRmFpbHVyZU1vZGU6OlJldHVybk51bGwpOwogICAg
ICAgICBpZiAoIXRlbXApCiAgICAgICAgICAgICByZXR1cm47CiAKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTQmlnSW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0JpZ0ludC5jcHAJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQmlnSW50LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTE3LDcgKzExNyw3IEBAIGlubGluZSBKU0JpZ0ludCogSlNCaWdJbnQ6OmNyZWF0ZVdpdGhM
ZW4KICAgICB9CiAKICAgICBBU1NFUlQobGVuZ3RoIDw9IG1heExlbmd0aCk7Ci0gICAgdm9pZCog
ZGF0YSA9IHZtLnByaW1pdGl2ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UuYWxsb2NhdGVOb25WaXJ0
dWFsKHZtLCBsZW5ndGggKiBzaXplb2YoRGlnaXQpLCBudWxscHRyLCBBbGxvY2F0aW9uRmFpbHVy
ZU1vZGU6OlJldHVybk51bGwpOworICAgIHZvaWQqIGRhdGEgPSB2bS5wcmltaXRpdmVHaWdhY2Fn
ZUF1eGlsaWFyeVNwYWNlKCkuYWxsb2NhdGVOb25WaXJ0dWFsKHZtLCBsZW5ndGggKiBzaXplb2Yo
RGlnaXQpLCBudWxscHRyLCBBbGxvY2F0aW9uRmFpbHVyZU1vZGU6OlJldHVybk51bGwpOwogICAg
IGlmIChVTkxJS0VMWSghZGF0YSkpIHsKICAgICAgICAgaWYgKG51bGxPckdsb2JhbE9iamVjdEZv
ck9PTSkgewogICAgICAgICAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCaWdJbnQuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JpZ0ludC5oCShyZXZpc2lv
biAyODYwOTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JpZ0ludC5oCSh3
b3JraW5nIGNvcHkpCkBAIC01Niw3ICs1Niw3IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBDZWxsVHlwZSwgU3Vic3BhY2VBY2Nlc3M+CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBz
dWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewotICAgICAgICByZXR1cm4gJnZtLmJpZ0ludFNwYWNl
OworICAgICAgICByZXR1cm4gJnZtLmJpZ0ludFNwYWNlKCk7CiAgICAgfQogCiAgICAgZW51bSBj
bGFzcyBJbml0aWFsaXphdGlvblR5cGUgeyBOb25lLCBXaXRoWmVybyB9OwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDYWxsZWUuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NhbGxlZS5oCShyZXZpc2lvbiAyODYwOTUpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NhbGxlZS5oCSh3b3JraW5nIGNvcHkpCkBA
IC01MCw3ICs1MCw3IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwg
U3Vic3BhY2VBY2Nlc3M+CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYg
dm0pCiAgICAgewotICAgICAgICByZXR1cm4gJnZtLmNhbGxlZVNwYWNlOworICAgICAgICByZXR1
cm4gJnZtLmNhbGxlZVNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIEpTQ2FsbGVlKiBjcmVh
dGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1Njb3BlKiBzY29wZSkK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0YVZpZXdQcm90b3R5cGUu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGFWaWV3
UHJvdG90eXBlLmgJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTRGF0YVZpZXdQcm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUg
QEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM4LDcgKzM4
LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZt
KQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNE
YXRhVmlld1Byb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RT
cGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAg
ICAgc3RhdGljIEpTRGF0YVZpZXdQcm90b3R5cGUqIGNyZWF0ZShWTSYsIFN0cnVjdHVyZSopOwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uaAkocmV2aXNp
b24gMjg2MDk1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5o
CSh3b3JraW5nIGNvcHkpCkBAIC02Niw3ICs2Niw3IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBDZWxsVHlwZSwgU3Vic3BhY2VBY2Nlc3M+CiAgICAgc3RhdGljIElzb1N1YnNwYWNl
KiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewotICAgICAgICByZXR1cm4gJnZtLmZ1bmN0aW9u
U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0uZnVuY3Rpb25TcGFjZSgpOwogICAgIH0KICAgICAK
ICAgICB0eXBlZGVmIEpTQ2FsbGVlIEJhc2U7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJv
dG90eXBlLmgJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAg
LTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDIxIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzgs
NyArMzgsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihW
TSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJM
RShKU0dlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVy
biAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNw
YWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG90
eXBlKiBjcmVhdGUoCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2Jh
bExleGljYWxFbnZpcm9ubWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTR2xvYmFsTGV4aWNhbEVudmlyb25tZW50LmgJKHJldmlzaW9uIDI4NjA5NSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsTGV4aWNhbEVudmlyb25t
ZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTM4LDcgKzM4LDcgQEAgcHVibGljOgogICAgIHRlbXBs
YXRlPHR5cGVuYW1lIENlbGxUeXBlLCBTdWJzcGFjZUFjY2VzcyBtb2RlPgogICAgIHN0YXRpYyBJ
c29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKLSAgICAgICAgcmV0dXJuICZ2
bS5nbG9iYWxMZXhpY2FsRW52aXJvbm1lbnRTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5nbG9i
YWxMZXhpY2FsRW52aXJvbm1lbnRTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBKU0dsb2Jh
bExleGljYWxFbnZpcm9ubWVudCogY3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUs
IEpTU2NvcGUqIHBhcmVudFNjb3BlKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNJbW11dGFibGVCdXR0ZXJmbHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0ltbXV0YWJsZUJ1dHRlcmZseS5oCShyZXZpc2lvbiAyODYwOTUpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ltbXV0YWJsZUJ1dHRlcmZseS5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xNTMsNyArMTUzLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBDb21w
bGV0ZVN1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewogICAgICAgICAvLyBXZSBh
bGxvY2F0ZSBvdXQgb2YgdGhlIEpTVmFsdWUgZ2lnYWNhZ2UgYXMgb3RoZXIgY29kZSBleHBlY3Rz
IGFsbCBidXR0ZXJmbGllcyB0byBsaXZlIHRoZXJlLgotICAgICAgICByZXR1cm4gJnZtLmltbXV0
YWJsZUJ1dHRlcmZseUpTVmFsdWVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlOworICAgICAgICByZXR1
cm4gJnZtLmltbXV0YWJsZUJ1dHRlcmZseUpTVmFsdWVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlKCk7
CiAgICAgfQogCiAgICAgLy8gT25seSBjYWxsIHRoaXMgaWYgeW91IGp1c3QgYWxsb2NhdGVkIHRo
aXMgYnV0dGVyZmx5LgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNMZXhp
Y2FsRW52aXJvbm1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0xleGljYWxFbnZpcm9ubWVudC5oCShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xleGljYWxFbnZpcm9ubWVudC5oCSh3b3JraW5nIGNv
cHkpCkBAIC00NCw3ICs0NCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgQ29tcGxldGVTdWJzcGFj
ZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAgICAgc3RhdGljX2Fzc2VydCghQ2Vs
bFR5cGU6Om5lZWRzRGVzdHJ1Y3Rpb24sICIiKTsKLSAgICAgICAgcmV0dXJuICZ2bS52YXJpYWJs
ZVNpemVkQ2VsbFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnZhcmlhYmxlU2l6ZWRDZWxsU3Bh
Y2UoKTsKICAgICB9CiAKICAgICB1c2luZyBCYXNlID0gSlNTeW1ib2xUYWJsZU9iamVjdDsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlTG9hZGVyLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVMb2FkZXIuaAko
cmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1
bGVMb2FkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNDQsNyArNDQsNyBAQCBwdWJsaWM6CiAgICAg
c3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewogICAgICAgICBT
VEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU01vZHVsZUxvYWRlciwgQmFzZSk7
Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2
bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAgZW51bSBTdGF0dXMgewpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPTk9iamVjdC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT05PYmplY3QuaAkocmV2aXNpb24gMjg2
MDk1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPTk9iamVjdC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zOCw3ICszOCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vic3Bh
Y2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNP
X1NVQlNQQUNFX1NIQVJBQkxFKEpTT05PYmplY3QsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZt
LnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgp
OwogICAgIH0KIAogICAgIHN0YXRpYyBKU09OT2JqZWN0KiBjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2Jq
ZWN0SW5saW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTT2JqZWN0SW5saW5lcy5oCShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU09iamVjdElubGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtNDEsNyAr
NDEsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vic3BhY2VBY2NlCiBDb21wbGV0
ZVN1YnNwYWNlKiBKU0ZpbmFsT2JqZWN0OjpzdWJzcGFjZUZvcihWTSYgdm0pCiB7CiAgICAgc3Rh
dGljX2Fzc2VydCghQ2VsbFR5cGU6Om5lZWRzRGVzdHJ1Y3Rpb24pOwotICAgIHJldHVybiAmdm0u
Y2VsbFNwYWNlOworICAgIHJldHVybiAmdm0uY2VsbFNwYWNlKCk7CiB9CiAKIC8vIGh0dHBzOi8v
dGMzOS5lcy9lY21hMjYyLyNzZWMtY3JlYXRlbGlzdGZyb21hcnJheWxpa2UKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZS5oCShyZXZpc2lvbiAyODYwOTUpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2UuaAkod29ya2luZyBjb3B5
KQpAQCAtMzcsNyArMzcsNyBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5
cGUsIFN1YnNwYWNlQWNjZXNzIG1vZGU+CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFj
ZUZvcihWTSYgdm0pCiAgICAgewotICAgICAgICByZXR1cm4gJnZtLnByb21pc2VTcGFjZTsKKyAg
ICAgICAgcmV0dXJuICZ2bS5wcm9taXNlU3BhY2UoKTsKICAgICB9CiAKICAgICBKU19FWFBPUlRf
UFJJVkFURSBzdGF0aWMgSlNQcm9taXNlKiBjcmVhdGUoVk0mLCBTdHJ1Y3R1cmUqKTsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZVByb3RvdHlwZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZVByb3RvdHlw
ZS5oCShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U1Byb21pc2VQcm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM4LDcgKzM4LDcgQEAgcHVi
bGljOgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsK
ICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNQcm9taXNlUHJv
dG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAg
ICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMg
SlNQcm9taXNlUHJvdG90eXBlKiBjcmVhdGUoVk0mLCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVy
ZSopOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVF
bnVtZXJhdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU1Byb3BlcnR5TmFtZUVudW1lcmF0b3IuY3BwCShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUVudW1lcmF0b3IuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zOCw3ICszOCw3IEBAIEpTUHJvcGVydHlOYW1lRW51bWVyYXRvciog
SlNQcm9wZXJ0eU5hbWUKICAgICB1bnNpZ25lZCBwcm9wZXJ0eU5hbWVzQnVmZmVyU2l6ZUluQnl0
ZXMgPSBDaGVja2VkPHVuc2lnbmVkPihwcm9wZXJ0eU5hbWVzU2l6ZSkgKiBzaXplb2YoV3JpdGVC
YXJyaWVyPEpTU3RyaW5nPik7CiAgICAgV3JpdGVCYXJyaWVyPEpTU3RyaW5nPiogcHJvcGVydHlO
YW1lc0J1ZmZlciA9IG51bGxwdHI7CiAgICAgaWYgKHByb3BlcnR5TmFtZXNCdWZmZXJTaXplSW5C
eXRlcykgewotICAgICAgICBwcm9wZXJ0eU5hbWVzQnVmZmVyID0gc3RhdGljX2Nhc3Q8V3JpdGVC
YXJyaWVyPEpTU3RyaW5nPio+KHZtLmpzVmFsdWVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlLmFsbG9j
YXRlTm9uVmlydHVhbCh2bSwgcHJvcGVydHlOYW1lc0J1ZmZlclNpemVJbkJ5dGVzLCBudWxscHRy
LCBBbGxvY2F0aW9uRmFpbHVyZU1vZGU6OkFzc2VydCkpOworICAgICAgICBwcm9wZXJ0eU5hbWVz
QnVmZmVyID0gc3RhdGljX2Nhc3Q8V3JpdGVCYXJyaWVyPEpTU3RyaW5nPio+KHZtLmpzVmFsdWVH
aWdhY2FnZUF1eGlsaWFyeVNwYWNlKCkuYWxsb2NhdGVOb25WaXJ0dWFsKHZtLCBwcm9wZXJ0eU5h
bWVzQnVmZmVyU2l6ZUluQnl0ZXMsIG51bGxwdHIsIEFsbG9jYXRpb25GYWlsdXJlTW9kZTo6QXNz
ZXJ0KSk7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBwcm9wZXJ0eU5hbWVzU2l6
ZTsgKytpKQogICAgICAgICAgICAgcHJvcGVydHlOYW1lc0J1ZmZlcltpXS5jbGVhcigpOwogICAg
IH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lRW51
bWVyYXRvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
UHJvcGVydHlOYW1lRW51bWVyYXRvci5oCShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUVudW1lcmF0b3IuaAkod29ya2luZyBj
b3B5KQpAQCAtNTEsNyArNTEsNyBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2Vs
bFR5cGUsIFN1YnNwYWNlQWNjZXNzIG1vZGU+CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJz
cGFjZUZvcihWTSYgdm0pCiAgICAgewotICAgICAgICByZXR1cm4gJnZtLnByb3BlcnR5TmFtZUVu
dW1lcmF0b3JTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wcm9wZXJ0eU5hbWVFbnVtZXJhdG9y
U3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yKiBj
cmVhdGUoVk0mLCBTdHJ1Y3R1cmUqLCB1aW50MzJfdCwgdWludDMyX3QsIFByb3BlcnR5TmFtZUFy
cmF5JiYpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm94eS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJveHkuaAkocmV2
aXNpb24gMjg2MDk1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm94eS5o
CSh3b3JraW5nIGNvcHkpCkBAIC0zOCw3ICszOCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNv
U3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAgIHN0YXRpY19hc3Nl
cnQoc2l6ZW9mKENlbGxUeXBlKSA9PSBzaXplb2YoSlNQcm94eSkpOwotICAgICAgICByZXR1cm4g
JnZtLmpzUHJveHlTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5qc1Byb3h5U3BhY2UoKTsKICAg
ICB9CiAKICAgICBzdGF0aWMgSlNQcm94eSogY3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUsIEpTT2JqZWN0KiB0YXJnZXQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU1N0cmluZy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTU3RyaW5nLmgJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTU3RyaW5nLmgJKHdvcmtpbmcgY29weSkKQEAgLTExMSw3ICsxMTEsNyBAQCBw
dWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUsIFN1YnNwYWNlQWNjZXNzPgogICAgIHN0YXRp
YyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKLSAgICAgICAgcmV0dXJu
ICZ2bS5zdHJpbmdTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5zdHJpbmdTcGFjZSgpOwogICAg
IH0KICAgICAKICAgICAvLyBXZSBlbXBsb3kgb3ZlcmZsb3cgY2hlY2tzIGluIG1hbnkgcGxhY2Vz
IHdpdGggdGhlIGFzc3VtcHRpb24gdGhhdCBNYXhMZW5ndGgKQEAgLTI3MCw3ICsyNzAsNyBAQCBw
dWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUsIFN1YnNwYWNlQWNjZXNzPgogICAgIHN0YXRp
YyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKLSAgICAgICAgcmV0dXJu
ICZ2bS5yb3BlU3RyaW5nU3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucm9wZVN0cmluZ1NwYWNl
KCk7CiAgICAgfQogCiAgICAgLy8gV2UgdXNlIGxvd2VyIDNiaXRzIG9mIGZpYmVyMCBmb3IgZmxh
Z3MuIFRoZXNlIGJpdHMgYXJlIHVzYWJsZSBkdWUgdG8gYWxpZ25tZW50LCBhbmQgaXQgaXMgT0sg
ZXZlbiBpbiAzMmJpdCBhcmNoaXRlY3R1cmUuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZS5oCShyZXZp
c2lvbiAyODYwOTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGVkQXJy
YXlWaWV3UHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICog
Q29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAxNS0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
CiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzcsNyArMzcsNyBAQCBwdWJsaWM6CiAg
ICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewogICAgICAg
ICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1R5cGVkQXJyYXlWaWV3UHJv
dG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAg
ICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMg
SlNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZSogY3JlYXRlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBT
dHJ1Y3R1cmUqKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hcEl0ZXJh
dG9yUHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvTWFwSXRlcmF0b3JQcm90b3R5cGUuaAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFwSXRlcmF0b3JQcm90b3R5cGUuaAkod29ya2luZyBjb3B5
KQpAQCAtMzcsNyArMzcsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJz
cGFjZUZvcihWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFD
RV9TSEFSQUJMRShNYXBJdGVyYXRvclByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAm
dm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNl
KCk7CiAgICAgfQogCiAgICAgc3RhdGljIE1hcEl0ZXJhdG9yUHJvdG90eXBlKiBjcmVhdGUoVk0m
IHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hcFByb3RvdHlwZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hcFByb3RvdHlwZS5oCShy
ZXZpc2lvbiAyODYwOTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXBQcm90
b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzcsNyArMzcsNyBAQCBwdWJsaWM6CiAgICAgc3Rh
dGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFU
SUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShNYXBQcm90b3R5cGUsIEJhc2UpOwotICAg
ICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxh
aW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQg
U3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IEhhc1N0YXRpY1Byb3BlcnR5
VGFibGU7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXRoT2JqZWN0LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWF0aE9iamVjdC5o
CShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXRo
T2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTMyLDcgKzMyLDcgQEAgcHVibGljOgogICAgIHN0
YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAgICAgU1RB
VElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoTWF0aE9iamVjdCwgQmFzZSk7Ci0gICAg
ICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFp
bk9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIE1hdGhPYmplY3QqIGNyZWF0ZShW
TSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJl
KQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRXJyb3JQcm90b3R5
cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OYXRpdmVF
cnJvclByb3RvdHlwZS5oCShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9OYXRpdmVFcnJvclByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw3
ICszNCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZN
JiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxF
KE5hdGl2ZUVycm9yUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9i
amVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9
CiAKICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUV4ZWN1dGFibGUuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OYXRpdmVFeGVjdXRhYmxlLmgJKHJldmlzaW9u
IDI4NjA5NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUV4ZWN1dGFi
bGUuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMDktMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMDktMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQzLDcgKzQzLDcgQEAgcHVibGljOgogICAgIHRlbXBs
YXRlPHR5cGVuYW1lIENlbGxUeXBlLCBTdWJzcGFjZUFjY2Vzcz4KICAgICBzdGF0aWMgSXNvU3Vi
c3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7Ci0gICAgICAgIHJldHVybiAmdm0ubmF0
aXZlRXhlY3V0YWJsZVNwYWNlOworICAgICAgICByZXR1cm4gJnZtLm5hdGl2ZUV4ZWN1dGFibGVT
cGFjZSgpOwogICAgIH0KIAogICAgIENvZGVCbG9ja0hhc2ggaGFzaEZvcihDb2RlU3BlY2lhbGl6
YXRpb25LaW5kKSBjb25zdDsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051
bWJlck9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L051bWJlck9iamVjdC5oCShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9OdW1iZXJPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtMzUsNyArMzUsNyBA
QCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUsIFN1YnNwYWNlQWNjZXNzIG1vZGU+CiAg
ICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewotICAgICAg
ICByZXR1cm4gJnZtLm51bWJlck9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLm51bWJl
ck9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIE51bWJlck9iamVjdCogY3JlYXRl
KFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9PYmplY3RQcm90b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9PYmplY3RQcm90b3R5cGUuaAkocmV2aXNpb24gMjg2MDk1KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0UHJvdG90eXBlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTEsNiArMSw2IEBACiAvKgogICogIENvcHlyaWdodCAoQykgMTk5OS0yMDAwIEhh
cnJpIFBvcnRlbiAocG9ydGVuQGtkZS5vcmcpCi0gKiAgQ29weXJpZ2h0IChDKSAyMDA4LTIwMTkg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogIENvcHlyaWdodCAoQykgMjAwOC0y
MDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiAgVGhpcyBsaWJyYXJ5
IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogIG1v
ZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMK
QEAgLTMzLDcgKzMzLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3Bh
Y2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0Vf
U0hBUkFCTEUoT2JqZWN0UHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFp
bk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAg
ICB9CiAKICAgICBzdGF0aWMgT2JqZWN0UHJvdG90eXBlKiBjcmVhdGUoVk0mLCBKU0dsb2JhbE9i
amVjdCosIFN0cnVjdHVyZSopOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
UHJvZ3JhbUV4ZWN1dGFibGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Qcm9ncmFtRXhlY3V0YWJsZS5oCShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9ncmFtRXhlY3V0YWJsZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC0zMCw2ICszMCw4IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCitjbGFzcyBVbmxpbmtlZFBy
b2dyYW1Db2RlQmxvY2s7CisKIGNsYXNzIFByb2dyYW1FeGVjdXRhYmxlIGZpbmFsIDogcHVibGlj
IEdsb2JhbEV4ZWN1dGFibGUgewogICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0
b3I7CiBwdWJsaWM6CkBAIC0zOSw3ICs0MSw3IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBDZWxsVHlwZSwgU3Vic3BhY2VBY2Nlc3M+CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBz
dWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewotICAgICAgICByZXR1cm4gJnZtLnByb2dyYW1FeGVj
dXRhYmxlU3BhY2Uuc3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucHJvZ3JhbUV4ZWN1dGFibGVT
cGFjZSgpLnNwYWNlOwogICAgIH0KIAogICAgIHN0YXRpYyBQcm9ncmFtRXhlY3V0YWJsZSogY3Jl
YXRlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJj
ZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5VGFibGUuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eVRhYmxl
LmgJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1By
b3BlcnR5VGFibGUuaAkod29ya2luZyBjb3B5KQpAQCAtMTI5LDcgKzEyOSw3IEBAIHB1YmxpYzoK
ICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vic3BhY2VBY2Nlc3M+CiAgICAgc3Rh
dGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewotICAgICAgICByZXR1
cm4gJnZtLnByb3BlcnR5VGFibGVTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wcm9wZXJ0eVRh
YmxlU3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgbmVlZHNEZXN0
cnVjdGlvbiA9IHRydWU7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWZs
ZWN0T2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
UmVmbGVjdE9iamVjdC5oCShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9SZWZsZWN0T2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTM4LDcgKzM4LDcg
QEAgcHVibGljOgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQog
ICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoUmVmbGVj
dE9iamVjdCwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAg
ICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGlj
IFJlZmxlY3RPYmplY3QqIGNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIFN0cnVjdHVyZSogc3RydWN0dXJlKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvUmVnRXhwLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvUmVnRXhwLmgJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1JlZ0V4cC5oCSh3b3JraW5nIGNvcHkpCkBAIC00OSw3ICs0OSw3IEBAIHB1YmxpYzoK
ICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vic3BhY2VBY2Nlc3MgbW9kZT4KICAg
ICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7Ci0gICAgICAg
IHJldHVybiAmdm0ucmVnRXhwU3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucmVnRXhwU3BhY2Uo
KTsKICAgICB9CiAKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVnRXhwKiBjcmVhdGUo
Vk0mLCBjb25zdCBTdHJpbmcmIHBhdHRlcm4sIE9wdGlvblNldDxZYXJyOjpGbGFncz4pOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwT2JqZWN0LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwT2JqZWN0LmgJKHJldmlz
aW9uIDI4NjA5NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE9iamVj
dC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw3ICszNiw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMg
SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAgIHN0YXRpY19h
c3NlcnQoIUNlbGxUeXBlOjpuZWVkc0Rlc3RydWN0aW9uLCAiIik7Ci0gICAgICAgIHJldHVybiAm
dm0ucmVnRXhwT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucmVnRXhwT2JqZWN0U3Bh
Y2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgY29uc3RleHByIHVpbnRwdHJfdCBsYXN0SW5kZXhJ
c05vdFdyaXRhYmxlRmxhZyA9IDBiMDE7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9SZWdFeHBQcm90b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9SZWdFeHBQcm90b3R5cGUuaAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwUHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkK
QEAgLTM0LDcgKzM0LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3Bh
Y2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0Vf
U0hBUkFCTEUoUmVnRXhwUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFp
bk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAg
ICB9CiAKICAgICBzdGF0aWMgUmVnRXhwUHJvdG90eXBlKiBjcmVhdGUoVk0mIHZtLCBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cFN0cmluZ0l0ZXJhdG9yUHJvdG90eXBlLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwU3RyaW5n
SXRlcmF0b3JQcm90b3R5cGUuaAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvUmVnRXhwU3RyaW5nSXRlcmF0b3JQcm90b3R5cGUuaAkod29ya2luZyBj
b3B5KQpAQCAtMzksNyArMzksNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBz
dWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJT
UEFDRV9TSEFSQUJMRShSZWdFeHBTdHJpbmdJdGVyYXRvclByb3RvdHlwZSwgQmFzZSk7Ci0gICAg
ICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFp
bk9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIFJlZ0V4cFN0cmluZ0l0ZXJhdG9y
UHJvdG90eXBlKiBjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1Njb3BlZEFyZ3VtZW50cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvU2NvcGVkQXJndW1lbnRzLmNwcAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2NvcGVkQXJndW1lbnRzLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNTUsNyArNTUsNyBAQCBTY29wZWRBcmd1bWVudHMqIFNjb3BlZEFyZ3VtZW50czo6Y3Jl
YXRlCiAgICAgV3JpdGVCYXJyaWVyPFVua25vd24+KiBzdG9yYWdlID0gbnVsbHB0cjsKICAgICBp
ZiAodG90YWxMZW5ndGggPiB0YWJsZS0+bGVuZ3RoKCkpIHsKICAgICAgICAgQ2hlY2tlZDx1bnNp
Z25lZD4gb3ZlcmZsb3dMZW5ndGggPSB0b3RhbExlbmd0aCAtIHRhYmxlLT5sZW5ndGgoKTsKLSAg
ICAgICAgc3RvcmFnZSA9IHN0YXRpY19jYXN0PFdyaXRlQmFycmllcjxVbmtub3duPio+KHZtLmpz
VmFsdWVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlLmFsbG9jYXRlTm9uVmlydHVhbCh2bSwgb3ZlcmZs
b3dMZW5ndGggKiBzaXplb2YoV3JpdGVCYXJyaWVyPFVua25vd24+KSwgbnVsbHB0ciwgQWxsb2Nh
dGlvbkZhaWx1cmVNb2RlOjpBc3NlcnQpKTsKKyAgICAgICAgc3RvcmFnZSA9IHN0YXRpY19jYXN0
PFdyaXRlQmFycmllcjxVbmtub3duPio+KHZtLmpzVmFsdWVHaWdhY2FnZUF1eGlsaWFyeVNwYWNl
KCkuYWxsb2NhdGVOb25WaXJ0dWFsKHZtLCBvdmVyZmxvd0xlbmd0aCAqIHNpemVvZihXcml0ZUJh
cnJpZXI8VW5rbm93bj4pLCBudWxscHRyLCBBbGxvY2F0aW9uRmFpbHVyZU1vZGU6OkFzc2VydCkp
OwogICAgIH0KIAogICAgIFNjb3BlZEFyZ3VtZW50cyogcmVzdWx0ID0gbmV3ICgKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Njb3BlZEFyZ3VtZW50cy5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Njb3BlZEFyZ3VtZW50cy5oCShyZXZp
c2lvbiAyODYwOTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TY29wZWRBcmd1
bWVudHMuaAkod29ya2luZyBjb3B5KQpAQCAtNDcsNyArNDcsNyBAQCBwdWJsaWM6CiAgICAgc3Rh
dGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewogICAgICAgICBzdGF0
aWNfYXNzZXJ0KCFDZWxsVHlwZTo6bmVlZHNEZXN0cnVjdGlvbiwgIiIpOwotICAgICAgICByZXR1
cm4gJnZtLnNjb3BlZEFyZ3VtZW50c1NwYWNlOworICAgICAgICByZXR1cm4gJnZtLnNjb3BlZEFy
Z3VtZW50c1NwYWNlKCk7CiAgICAgfQogCiAgICAgLy8gQ3JlYXRlcyBhbiBhcmd1bWVudHMgb2Jq
ZWN0IGJ1dCBsZWF2ZXMgaXQgdW5pbml0aWFsaXplZC4gVGhpcyBpcyBkYW5nZXJvdXMgaWYgd2Ug
R0MgcmlnaHQKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NldEl0ZXJhdG9y
UHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
U2V0SXRlcmF0b3JQcm90b3R5cGUuaAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvU2V0SXRlcmF0b3JQcm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpA
QCAtMzcsNyArMzcsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFj
ZUZvcihWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9T
SEFSQUJMRShTZXRJdGVyYXRvclByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0u
cGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7
CiAgICAgfQogCiAgICAgc3RhdGljIFNldEl0ZXJhdG9yUHJvdG90eXBlKiBjcmVhdGUoVk0mIHZt
LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NldFByb3RvdHlwZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NldFByb3RvdHlwZS5oCShyZXZp
c2lvbiAyODYwOTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TZXRQcm90b3R5
cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzcsNyArMzcsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGlj
IElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNf
QVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShTZXRQcm90b3R5cGUsIEJhc2UpOwotICAgICAg
ICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5P
YmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgU3Ry
dWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IEhhc1N0YXRpY1Byb3BlcnR5VGFi
bGU7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TaGFkb3dSZWFsbVByb3Rv
dHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NoYWRv
d1JlYWxtUHJvdG90eXBlLmgJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1NoYWRvd1JlYWxtUHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM5
LDcgKzM5LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3Io
Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFC
TEUoU2hhZG93UmVhbG1Qcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWlu
T2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAg
IH0KIAogICAgIHN0YXRpYyBTaGFkb3dSZWFsbVByb3RvdHlwZSogY3JlYXRlKFZNJiB2bSwgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
cGFyc2VBcnJheVZhbHVlTWFwLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvU3BhcnNlQXJyYXlWYWx1ZU1hcC5oCShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TcGFyc2VBcnJheVZhbHVlTWFwLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTExMCw3ICsxMTAsNyBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUg
Q2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNzPgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3Bh
Y2VGb3IoVk0mIHZtKQogICAgIHsKLSAgICAgICAgcmV0dXJuICZ2bS5zcGFyc2VBcnJheVZhbHVl
TWFwU3BhY2U7CisgICAgICAgIHJldHVybiAmdm0uc3BhcnNlQXJyYXlWYWx1ZU1hcFNwYWNlKCk7
CiAgICAgfQogICAgIAogICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYs
IEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSBwcm90b3R5cGUpOwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nSXRlcmF0b3JQcm90b3R5cGUuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdJdGVyYXRvclByb3RvdHlwZS5o
CShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJp
bmdJdGVyYXRvclByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw3ICszOSw3IEBAIHB1
YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7
CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKFN0cmluZ0l0ZXJh
dG9yUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNl
OworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBz
dGF0aWMgU3RyaW5nSXRlcmF0b3JQcm90b3R5cGUqIGNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlKQpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nT2JqZWN0LmgJKHJldmlzaW9uIDI4NjA5NSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ09iamVjdC5oCSh3b3JraW5n
IGNvcHkpCkBAIC0zMyw3ICszMyw3IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSwg
U3Vic3BhY2VBY2Nlc3MgbW9kZT4KICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9y
KFZNJiB2bSkKICAgICB7Ci0gICAgICAgIHJldHVybiAmdm0uc3RyaW5nT2JqZWN0U3BhY2U7Cisg
ICAgICAgIHJldHVybiAmdm0uc3RyaW5nT2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0
aWMgU3RyaW5nT2JqZWN0KiBjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oCShyZXZpc2lvbiAy
ODYwOTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaAkod29y
a2luZyBjb3B5KQpAQCAtMTI4LDcgKzEyOCw3IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBDZWxsVHlwZSwgU3Vic3BhY2VBY2Nlc3M+CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBz
dWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewotICAgICAgICByZXR1cm4gJnZtLnN0cnVjdHVyZVNw
YWNlOworICAgICAgICByZXR1cm4gJnZtLnN0cnVjdHVyZVNwYWNlKCk7CiAgICAgfQogCiAgICAg
SlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGJvb2wgaXNWYWxpZFByb3RvdHlwZShKU1ZhbHVlKTsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUNoYWluLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVDaGFp
bi5jcHAJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1N0cnVjdHVyZUNoYWluLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDgsNyArNDgsNyBAQCBTdHJ1
Y3R1cmVDaGFpbiogU3RydWN0dXJlQ2hhaW46OmNyZWF0ZShWCiAgICAgICAgICsrc2l6ZTsKICAg
ICArK3NpemU7IC8vIFNlbnRpbmVsIG51bGxwdHIuCiAgICAgc2l6ZV90IGJ5dGVzID0gQ2hlY2tl
ZDxzaXplX3Q+KHNpemUpICogc2l6ZW9mKFN0cnVjdHVyZUlEKTsKLSAgICBTdHJ1Y3R1cmVJRCog
dmVjdG9yID0gc3RhdGljX2Nhc3Q8U3RydWN0dXJlSUQqPih2bS5qc1ZhbHVlR2lnYWNhZ2VBdXhp
bGlhcnlTcGFjZS5hbGxvY2F0ZU5vblZpcnR1YWwodm0sIGJ5dGVzLCBudWxscHRyLCBBbGxvY2F0
aW9uRmFpbHVyZU1vZGU6OkFzc2VydCkpOworICAgIFN0cnVjdHVyZUlEKiB2ZWN0b3IgPSBzdGF0
aWNfY2FzdDxTdHJ1Y3R1cmVJRCo+KHZtLmpzVmFsdWVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlKCku
YWxsb2NhdGVOb25WaXJ0dWFsKHZtLCBieXRlcywgbnVsbHB0ciwgQWxsb2NhdGlvbkZhaWx1cmVN
b2RlOjpBc3NlcnQpKTsKICAgICBtZW1zZXQodmVjdG9yLCAwLCBieXRlcyk7CiAgICAgU3RydWN0
dXJlQ2hhaW4qIGNoYWluID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8U3RydWN0dXJlQ2hh
aW4+KHZtKSkgU3RydWN0dXJlQ2hhaW4odm0sIHZtLnN0cnVjdHVyZUNoYWluU3RydWN0dXJlLmdl
dCgpLCB2ZWN0b3IpOwogICAgIGNoYWluLT5maW5pc2hDcmVhdGlvbih2bSwgaGVhZCk7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVDaGFpbi5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUNoYWluLmgJKHJl
dmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVy
ZUNoYWluLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDcgKzQ2LDcgQEAgcHVibGljOgogICAgIHRl
bXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlLCBTdWJzcGFjZUFjY2Vzcz4KICAgICBzdGF0aWMgSXNv
U3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7Ci0gICAgICAgIHJldHVybiAmdm0u
c3RydWN0dXJlQ2hhaW5TcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5zdHJ1Y3R1cmVDaGFpblNw
YWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIFN0cnVjdHVyZUNoYWluKiBjcmVhdGUoVk0mLCBK
U09iamVjdCopOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJl
UmFyZURhdGEuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
dHJ1Y3R1cmVSYXJlRGF0YS5oCShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TdHJ1Y3R1cmVSYXJlRGF0YS5oCSh3b3JraW5nIGNvcHkpCkBAIC02Niw3
ICs2Niw3IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vic3Bh
Y2VBY2Nlc3M+CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAg
ICAgewotICAgICAgICByZXR1cm4gJnZtLnN0cnVjdHVyZVJhcmVEYXRhU3BhY2U7CisgICAgICAg
IHJldHVybiAmdm0uc3RydWN0dXJlUmFyZURhdGFTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRp
YyBTdHJ1Y3R1cmVSYXJlRGF0YSogY3JlYXRlKFZNJiwgU3RydWN0dXJlKik7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xQcm90b3R5cGUuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xQcm90b3R5cGUuaAkocmV2aXNp
b24gMjg2MDk1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sUHJvdG90
eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQxLDcgKzQxLDcgQEAgcHVibGljOgogICAgIHN0YXRp
YyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElD
X0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoU3ltYm9sUHJvdG90eXBlLCBCYXNlKTsKLSAg
ICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBs
YWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgU3ltYm9sUHJvdG90eXBlKiBj
cmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbFRhYmxl
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sVGFi
bGUuaAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
U3ltYm9sVGFibGUuaAkod29ya2luZyBjb3B5KQpAQCAtNDU2LDcgKzQ1Niw3IEBAIHB1YmxpYzoK
ICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vic3BhY2VBY2Nlc3M+CiAgICAgc3Rh
dGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewotICAgICAgICByZXR1
cm4gJnZtLnN5bWJvbFRhYmxlU3BhY2U7CisgICAgICAgIHJldHVybiAmdm0uc3ltYm9sVGFibGVT
cGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBTeW1ib2xUYWJsZSogY3JlYXRlKFZNJiB2bSkK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsQ2FsZW5kYXJQcm90
b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1w
b3JhbENhbGVuZGFyUHJvdG90eXBlLmgJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsQ2FsZW5kYXJQcm90b3R5cGUuaAkod29ya2luZyBj
b3B5KQpAQCAtMzgsNyArMzgsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBz
dWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJT
UEFDRV9TSEFSQUJMRShUZW1wb3JhbENhbGVuZGFyUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAg
cmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2Jq
ZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgVGVtcG9yYWxDYWxlbmRhclByb3RvdHlw
ZSogY3JlYXRlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqKTsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsRHVyYXRpb25Qcm90b3R5cGUuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbER1cmF0aW9u
UHJvdG90eXBlLmgJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1RlbXBvcmFsRHVyYXRpb25Qcm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1
ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMjEgU29ueSBJbnRlcmFjdGl2ZSBFbnRl
cnRhaW5tZW50IEluYy4KKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM4LDcgKzM5
LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZt
KQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoVGVt
cG9yYWxEdXJhdGlvblByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5P
YmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAg
fQogCiAgICAgc3RhdGljIFRlbXBvcmFsRHVyYXRpb25Qcm90b3R5cGUqIGNyZWF0ZShWTSYsIFN0
cnVjdHVyZSopOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxJ
bnN0YW50UHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvVGVtcG9yYWxJbnN0YW50UHJvdG90eXBlLmgJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsSW5zdGFudFByb3RvdHlwZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAyMSBJ
Z2FsaWEgUy5MLgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzgsNyArMzksNyBA
QCBwdWJsaWM6CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAg
ICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShUZW1wb3Jh
bEluc3RhbnRQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0
U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAog
ICAgIHN0YXRpYyBUZW1wb3JhbEluc3RhbnRQcm90b3R5cGUqIGNyZWF0ZShWTSYsIFN0cnVjdHVy
ZSopOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxOb3cuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbE5vdy5o
CShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1w
b3JhbE5vdy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqICBDb3B5cmln
aHQgKEMpIDIwMjEgSWdhbGlhLCBTLkwuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAgQ29weXJp
Z2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiAgVGhp
cyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v
cgogICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJh
bCBQdWJsaWMKQEAgLTMyLDcgKzMzLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJc29TdWJzcGFj
ZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09f
U1VCU1BBQ0VfU0hBUkFCTEUoVGVtcG9yYWxOb3csIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZt
LnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgp
OwogICAgIH0KIAogICAgIHN0YXRpYyBUZW1wb3JhbE5vdyogY3JlYXRlKFZNJiwgU3RydWN0dXJl
Kik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbE9iamVjdC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsT2Jq
ZWN0LmgJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1RlbXBvcmFsT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw3IEBACiAvKgogICog
IENvcHlyaWdodCAoQykgMjAyMSBJZ2FsaWEsIFMuTC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
ICBDb3B5cmlnaHQgKEMpIDIwMjEgU29ueSBJbnRlcmFjdGl2ZSBFbnRlcnRhaW5tZW50IEluYy4K
KyAqICBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1
dGUgaXQgYW5kL29yCiAgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExl
c3NlciBHZW5lcmFsIFB1YmxpYwpAQCAtNjQsNyArNjUsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGlj
IElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNf
QVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShUZW1wb3JhbE9iamVjdCwgQmFzZSk7Ci0gICAg
ICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFp
bk9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIFRlbXBvcmFsT2JqZWN0KiBjcmVh
dGUoVk0mLCBTdHJ1Y3R1cmUqKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1RlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxQbGFpblRpbWVQcm90b3R5cGUuaAkocmV2aXNpb24g
Mjg2MDk1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxQbGFpblRp
bWVQcm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpA
QCAtMzgsNyArMzgsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFj
ZUZvcihWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9T
SEFSQUJMRShUZW1wb3JhbFBsYWluVGltZVByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVy
biAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNw
YWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIFRlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlKiBj
cmVhdGUoVk0mLCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSopOwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxUaW1lWm9uZVByb3RvdHlwZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsVGltZVpvbmVQcm90
b3R5cGUuaAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvVGVtcG9yYWxUaW1lWm9uZVByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw3ICsz
OCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2
bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKFRl
bXBvcmFsVGltZVpvbmVQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWlu
T2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAg
IH0KIAogICAgIHN0YXRpYyBUZW1wb3JhbFRpbWVab25lUHJvdG90eXBlKiBjcmVhdGUoVk0mLCBK
U0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSopOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvVGhyb3dTY29wZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvVGhyb3dTY29wZS5jcHAJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1Rocm93U2NvcGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNi0yMDE5IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNi0yMDIxIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAt
MjksNiArMjksNyBAQAogI2luY2x1ZGUgIkV4Y2VwdGlvbi5oIgogI2luY2x1ZGUgIkpTQ0pTVmFs
dWVJbmxpbmVzLmgiCiAjaW5jbHVkZSAiVk0uaCIKKyNpbmNsdWRlIDx3dGYvU3RhY2tUcmFjZS5o
PgogCiBuYW1lc3BhY2UgSlNDIHsKICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1ZNLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9WTS5jcHAJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1ZNLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzIsMjEgKzMyLDE1IEBACiAjaW5jbHVkZSAi
QWNjZXNzQ2FzZS5oIgogI2luY2x1ZGUgIkFnZ3JlZ2F0ZUVycm9yLmgiCiAjaW5jbHVkZSAiQXJn
TGlzdC5oIgotI2luY2x1ZGUgIkJpZ0ludE9iamVjdC5oIgotI2luY2x1ZGUgIkJvb2xlYW5PYmpl
Y3QuaCIKLSNpbmNsdWRlICJCcmFuZGVkU3RydWN0dXJlLmgiCiAjaW5jbHVkZSAiQnVpbHRpbkV4
ZWN1dGFibGVzLmgiCiAjaW5jbHVkZSAiQnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeS5oIgogI2lu
Y2x1ZGUgIkNoZWNrcG9pbnRPU1JFeGl0U2lkZVN0YXRlLmgiCi0jaW5jbHVkZSAiQ2xvbmVkQXJn
dW1lbnRzLmgiCiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCiAjaW5jbHVkZSAiQ29kZUNhY2hlLmgi
CiAjaW5jbHVkZSAiQ29tbW9uSWRlbnRpZmllcnMuaCIKICNpbmNsdWRlICJDb250cm9sRmxvd1By
b2ZpbGVyLmgiCiAjaW5jbHVkZSAiQ3VzdG9tR2V0dGVyU2V0dGVyLmgiCiAjaW5jbHVkZSAiRE9N
QXR0cmlidXRlR2V0dGVyU2V0dGVyLmgiCi0jaW5jbHVkZSAiRGF0ZUluc3RhbmNlLmgiCi0jaW5j
bHVkZSAiRGVidWdnZXJTY29wZS5oIgogI2luY2x1ZGUgIkRlZmVycmVkV29ya1RpbWVyLmgiCiAj
aW5jbHVkZSAiRGlzYXNzZW1ibGVyLmgiCiAjaW5jbHVkZSAiRG91YmxlUHJlZGljdGlvbkZ1enpl
ckFnZW50LmgiCkBAIC01NSw3ICs0OSw2IEBACiAjaW5jbHVkZSAiRXhjZXB0aW9uLmgiCiAjaW5j
bHVkZSAiRXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZS5oIgogI2luY2x1ZGUgIkZUTFRodW5rcy5o
IgotI2luY2x1ZGUgIkZhc3RNYWxsb2NBbGlnbmVkTWVtb3J5QWxsb2NhdG9yLmgiCiAjaW5jbHVk
ZSAiRmlsZUJhc2VkRnV6emVyQWdlbnQuaCIKICNpbmNsdWRlICJGdW5jdGlvbkNvZGVCbG9jay5o
IgogI2luY2x1ZGUgIkZ1bmN0aW9uRXhlY3V0YWJsZS5oIgpAQCAtNjYsNzcgKzU5LDI1IEBACiAj
aW5jbHVkZSAiSGVhcFByb2ZpbGVyLmgiCiAjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKICNpbmNs
dWRlICJJbnRsQ2FjaGUuaCIKLSNpbmNsdWRlICJJbnRsQ29sbGF0b3IuaCIKLSNpbmNsdWRlICJJ
bnRsRGF0ZVRpbWVGb3JtYXQuaCIKLSNpbmNsdWRlICJJbnRsRGlzcGxheU5hbWVzLmgiCi0jaW5j
bHVkZSAiSW50bExpc3RGb3JtYXQuaCIKLSNpbmNsdWRlICJJbnRsTG9jYWxlLmgiCi0jaW5jbHVk
ZSAiSW50bE51bWJlckZvcm1hdC5oIgotI2luY2x1ZGUgIkludGxQbHVyYWxSdWxlcy5oIgotI2lu
Y2x1ZGUgIkludGxSZWxhdGl2ZVRpbWVGb3JtYXQuaCIKLSNpbmNsdWRlICJJbnRsU2VnbWVudEl0
ZXJhdG9yLmgiCi0jaW5jbHVkZSAiSW50bFNlZ21lbnRlci5oIgotI2luY2x1ZGUgIkludGxTZWdt
ZW50cy5oIgotI2luY2x1ZGUgIklzb0hlYXBDZWxsVHlwZS5oIgotI2luY2x1ZGUgIklzb0lubGlu
ZWRIZWFwQ2VsbFR5cGUuaCIKICNpbmNsdWRlICJKSVRDb2RlLmgiCiAjaW5jbHVkZSAiSklUT3Bl
cmF0aW9uTGlzdC5oIgogI2luY2x1ZGUgIkpJVFNpemVTdGF0aXN0aWNzLmgiCiAjaW5jbHVkZSAi
SklUVGh1bmtzLmgiCiAjaW5jbHVkZSAiSklUV29ya2xpc3QuaCIKLSNpbmNsdWRlICJKU0FQSUds
b2JhbE9iamVjdC5oIgogI2luY2x1ZGUgIkpTQVBJVmFsdWVXcmFwcGVyLmgiCi0jaW5jbHVkZSAi
SlNBUElXcmFwcGVyT2JqZWN0LmgiCi0jaW5jbHVkZSAiSlNBcnJheS5oIgotI2luY2x1ZGUgIkpT
QXJyYXlCdWZmZXIuaCIKLSNpbmNsdWRlICJKU0FycmF5SXRlcmF0b3IuaCIKLSNpbmNsdWRlICJK
U0FzeW5jR2VuZXJhdG9yLmgiCiAjaW5jbHVkZSAiSlNCaWdJbnQuaCIKLSNpbmNsdWRlICJKU0Jv
dW5kRnVuY3Rpb24uaCIKLSNpbmNsdWRlICJKU0NhbGxiYWNrQ29uc3RydWN0b3IuaCIKLSNpbmNs
dWRlICJKU0NhbGxiYWNrRnVuY3Rpb24uaCIKLSNpbmNsdWRlICJKU0NhbGxiYWNrT2JqZWN0Lmgi
Ci0jaW5jbHVkZSAiSlNDYWxsZWUuaCIKLSNpbmNsdWRlICJKU0N1c3RvbUdldHRlckZ1bmN0aW9u
LmgiCi0jaW5jbHVkZSAiSlNDdXN0b21TZXR0ZXJGdW5jdGlvbi5oIgotI2luY2x1ZGUgIkpTRGVz
dHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmgiCi0jaW5jbHVkZSAiSlNGaW5hbGl6YXRpb25S
ZWdpc3RyeS5oIgotI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKLSNpbmNsdWRlICJKU0dsb2JhbExl
eGljYWxFbnZpcm9ubWVudC5oIgogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCiAjaW5jbHVk
ZSAiSlNJbW11dGFibGVCdXR0ZXJmbHkuaCIKLSNpbmNsdWRlICJKU0luamVjdGVkU2NyaXB0SG9z
dC5oIgotI2luY2x1ZGUgIkpTSmF2YVNjcmlwdENhbGxGcmFtZS5oIgogI2luY2x1ZGUgIkpTTG9j
ay5oIgogI2luY2x1ZGUgIkpTTWFwLmgiCi0jaW5jbHVkZSAiSlNNYXBJdGVyYXRvci5oIgotI2lu
Y2x1ZGUgIkpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0LmgiCi0jaW5jbHVkZSAiSlNNb2R1bGVSZWNv
cmQuaCIKLSNpbmNsdWRlICJKU05hdGl2ZVN0ZEZ1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNQcm9t
aXNlLmgiCiAjaW5jbHVkZSAiSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yLmgiCi0jaW5jbHVkZSAi
SlNQcm94eS5oIgogI2luY2x1ZGUgIkpTU2NyaXB0RmV0Y2hQYXJhbWV0ZXJzLmgiCiAjaW5jbHVk
ZSAiSlNTY3JpcHRGZXRjaGVyLmgiCiAjaW5jbHVkZSAiSlNTZXQuaCIKLSNpbmNsdWRlICJKU1Nl
dEl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiSlNTb3VyY2VDb2RlLmgiCi0jaW5jbHVkZSAiSlNTdHJp
bmdJdGVyYXRvci5oIgogI2luY2x1ZGUgIkpTVGVtcGxhdGVPYmplY3REZXNjcmlwdG9yLmgiCi0j
aW5jbHVkZSAiSlNUb1dhc21JQ0NhbGxlZS5oIgotI2luY2x1ZGUgIkpTVHlwZWRBcnJheXMuaCIK
LSNpbmNsdWRlICJKU1dlYWtNYXAuaCIKLSNpbmNsdWRlICJKU1dlYWtPYmplY3RSZWYuaCIKLSNp
bmNsdWRlICJKU1dlYWtTZXQuaCIKICNpbmNsdWRlICJKU1dlYkFzc2VtYmx5Q29kZUJsb2NrLmgi
Ci0jaW5jbHVkZSAiSlNXZWJBc3NlbWJseUV4Y2VwdGlvbi5oIgotI2luY2x1ZGUgIkpTV2ViQXNz
ZW1ibHlHbG9iYWwuaCIKLSNpbmNsdWRlICJKU1dlYkFzc2VtYmx5SW5zdGFuY2UuaCIKLSNpbmNs
dWRlICJKU1dlYkFzc2VtYmx5TWVtb3J5LmgiCi0jaW5jbHVkZSAiSlNXZWJBc3NlbWJseU1vZHVs
ZS5oIgotI2luY2x1ZGUgIkpTV2ViQXNzZW1ibHlUYWJsZS5oIgotI2luY2x1ZGUgIkpTV2ViQXNz
ZW1ibHlUYWcuaCIKLSNpbmNsdWRlICJKU1dpdGhTY29wZS5oIgogI2luY2x1ZGUgIkxMSW50RGF0
YS5oIgogI2luY2x1ZGUgIkxMSW50RXhjZXB0aW9ucy5oIgogI2luY2x1ZGUgIk1hcmtlZEJsb2Nr
SW5saW5lcy5oIgpAQCAtMTUxLDI3ICs5MiwxNiBAQAogI2luY2x1ZGUgIlByb2dyYW1Db2RlQmxv
Y2suaCIKICNpbmNsdWRlICJQcm9ncmFtRXhlY3V0YWJsZS5oIgogI2luY2x1ZGUgIlByb3BlcnR5
VGFibGUuaCIKLSNpbmNsdWRlICJQcm94eVJldm9rZS5oIgogI2luY2x1ZGUgIlJhbmRvbWl6aW5n
RnV6emVyQWdlbnQuaCIKICNpbmNsdWRlICJSZWdFeHBDYWNoZS5oIgotI2luY2x1ZGUgIlJlZ0V4
cE9iamVjdC5oIgogI2luY2x1ZGUgIlNhbXBsaW5nUHJvZmlsZXIuaCIKICNpbmNsdWRlICJTY29w
ZWRBcmd1bWVudHMuaCIKICNpbmNsdWRlICJTaGFkb3dDaGlja2VuLmgiCi0jaW5jbHVkZSAiU2hh
ZG93UmVhbG1PYmplY3QuaCIKICNpbmNsdWRlICJTaW1wbGVUeXBlZEFycmF5Q29udHJvbGxlci5o
IgogI2luY2x1ZGUgIlNvdXJjZVByb3ZpZGVyQ2FjaGUuaCIKLSNpbmNsdWRlICJTdHJpY3RFdmFs
QWN0aXZhdGlvbi5oIgotI2luY2x1ZGUgIlN0cmluZ09iamVjdC5oIgogI2luY2x1ZGUgIlN0cm9u
Z0lubGluZXMuaCIKICNpbmNsdWRlICJTdHJ1Y3R1cmVDaGFpbi5oIgogI2luY2x1ZGUgIlN0cnVj
dHVyZUlubGluZXMuaCIKLSNpbmNsdWRlICJTeW1ib2xPYmplY3QuaCIKLSNpbmNsdWRlICJUZW1w
b3JhbENhbGVuZGFyLmgiCi0jaW5jbHVkZSAiVGVtcG9yYWxEdXJhdGlvbi5oIgotI2luY2x1ZGUg
IlRlbXBvcmFsSW5zdGFudC5oIgotI2luY2x1ZGUgIlRlbXBvcmFsUGxhaW5UaW1lLmgiCi0jaW5j
bHVkZSAiVGVtcG9yYWxUaW1lWm9uZS5oIgogI2luY2x1ZGUgIlRlc3RSdW5uZXJVdGlscy5oIgog
I2luY2x1ZGUgIlRodW5rR2VuZXJhdG9ycy5oIgogI2luY2x1ZGUgIlR5cGVQcm9maWxlci5oIgpA
QCAtMTgzLDE5ICsxMTMsMTYgQEAKICNpbmNsdWRlICJXYXNtV29ya2xpc3QuaCIKICNpbmNsdWRl
ICJXYXRjaGRvZy5oIgogI2luY2x1ZGUgIldlYWtHQ01hcElubGluZXMuaCIKLSNpbmNsdWRlICJX
ZWJBc3NlbWJseUZ1bmN0aW9uLmgiCi0jaW5jbHVkZSAiV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQu
aCIKLSNpbmNsdWRlICJXZWJBc3NlbWJseVdyYXBwZXJGdW5jdGlvbi5oIgogI2luY2x1ZGUgIldp
ZGVuaW5nTnVtYmVyUHJlZGljdGlvbkZ1enplckFnZW50LmgiCiAjaW5jbHVkZSA8d3RmL1Byb2Nl
c3NJRC5oPgogI2luY2x1ZGUgPHd0Zi9SZWFkV3JpdGVMb2NrLmg+CiAjaW5jbHVkZSA8d3RmL1Np
bXBsZVN0YXRzLmg+CisjaW5jbHVkZSA8d3RmL1N0YWNrVHJhY2UuaD4KICNpbmNsdWRlIDx3dGYv
U3RyaW5nUHJpbnRTdHJlYW0uaD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nLmg+CiAjaW5jbHVk
ZSA8d3RmL3RleHQvQXRvbVN0cmluZ1RhYmxlLmg+CiAKICNpZiBFTkFCTEUoQ19MT09QKQotI2lu
Y2x1ZGUgIkNMb29wU3RhY2suaCIKICNpbmNsdWRlICJDTG9vcFN0YWNrSW5saW5lcy5oIgogI2Vu
ZGlmCiAKQEAgLTIwNywxNSArMTM0LDYgQEAKICNpbmNsdWRlICJSZWdFeHAuaCIKICNlbmRpZgog
Ci0jaWYgSlNDX09CSkNfQVBJX0VOQUJMRUQKLSNpbmNsdWRlICJPYmpDQ2FsbGJhY2tGdW5jdGlv
bi5oIgotI2VuZGlmCi0KLSNpZmRlZiBKU0NfR0xJQl9BUElfRU5BQkxFRAotI2luY2x1ZGUgIkpT
QVBJV3JhcHBlckdsb2JhbE9iamVjdC5oIgotI2luY2x1ZGUgIkpTQ0NhbGxiYWNrRnVuY3Rpb24u
aCIKLSNlbmRpZgotCiBuYW1lc3BhY2UgSlNDIHsKIAogQXRvbWljPHVuc2lnbmVkPiBWTTo6c19u
dW1iZXJPZklEczsKQEAgLTI5MSwxMDkgKzIwOSw2IEBAIFZNOjpWTShWTVR5cGUgdm1UeXBlLCBI
ZWFwVHlwZSBoZWFwVHlwZSwKICAgICAsIG1fcmFuZG9tKE9wdGlvbnM6OnNlZWRPZlZNUmFuZG9t
Rm9yRnV6emVyKCkgPyBPcHRpb25zOjpzZWVkT2ZWTVJhbmRvbUZvckZ1enplcigpIDogY3J5cHRv
Z3JhcGhpY2FsbHlSYW5kb21OdW1iZXIoKSkKICAgICAsIG1faW50ZWdyaXR5UmFuZG9tKCp0aGlz
KQogICAgICwgaGVhcCgqdGhpcywgaGVhcFR5cGUpCi0gICAgLCBmYXN0TWFsbG9jQWxsb2NhdG9y
KG1ha2VVbmlxdWU8RmFzdE1hbGxvY0FsaWduZWRNZW1vcnlBbGxvY2F0b3I+KCkpCi0gICAgLCBw
cmltaXRpdmVHaWdhY2FnZUFsbG9jYXRvcihtYWtlVW5pcXVlPEdpZ2FjYWdlQWxpZ25lZE1lbW9y
eUFsbG9jYXRvcj4oR2lnYWNhZ2U6OlByaW1pdGl2ZSkpCi0gICAgLCBqc1ZhbHVlR2lnYWNhZ2VB
bGxvY2F0b3IobWFrZVVuaXF1ZTxHaWdhY2FnZUFsaWduZWRNZW1vcnlBbGxvY2F0b3I+KEdpZ2Fj
YWdlOjpKU1ZhbHVlKSkKLSAgICAsIGF1eGlsaWFyeUhlYXBDZWxsVHlwZShtYWtlVW5pcXVlPEhl
YXBDZWxsVHlwZT4oQ2VsbEF0dHJpYnV0ZXMoRG9lc05vdE5lZWREZXN0cnVjdGlvbiwgSGVhcENl
bGw6OkF1eGlsaWFyeSkpKQotICAgICwgaW1tdXRhYmxlQnV0dGVyZmx5SGVhcENlbGxUeXBlKG1h
a2VVbmlxdWU8SGVhcENlbGxUeXBlPihDZWxsQXR0cmlidXRlcyhEb2VzTm90TmVlZERlc3RydWN0
aW9uLCBIZWFwQ2VsbDo6SlNDZWxsV2l0aEluZGV4aW5nSGVhZGVyKSkpCi0gICAgLCBjZWxsSGVh
cENlbGxUeXBlKG1ha2VVbmlxdWU8SGVhcENlbGxUeXBlPihDZWxsQXR0cmlidXRlcyhEb2VzTm90
TmVlZERlc3RydWN0aW9uLCBIZWFwQ2VsbDo6SlNDZWxsKSkpCi0gICAgLCBkZXN0cnVjdGlibGVD
ZWxsSGVhcENlbGxUeXBlKG1ha2VVbmlxdWU8SGVhcENlbGxUeXBlPihDZWxsQXR0cmlidXRlcyhO
ZWVkc0Rlc3RydWN0aW9uLCBIZWFwQ2VsbDo6SlNDZWxsKSkpCi0gICAgLCBhcGlHbG9iYWxPYmpl
Y3RIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpjcmVhdGU8SlNBUElHbG9iYWxPYmplY3Q+
KCkpCi0gICAgLCBjYWxsYmFja0NvbnN0cnVjdG9ySGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlw
ZTo6Y3JlYXRlPEpTQ2FsbGJhY2tDb25zdHJ1Y3Rvcj4oKSkKLSAgICAsIGNhbGxiYWNrR2xvYmFs
T2JqZWN0SGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6Y3JlYXRlPEpTQ2FsbGJhY2tPYmpl
Y3Q8SlNHbG9iYWxPYmplY3Q+PigpKQotICAgICwgY2FsbGJhY2tPYmplY3RIZWFwQ2VsbFR5cGUo
SXNvSGVhcENlbGxUeXBlOjpjcmVhdGU8SlNDYWxsYmFja09iamVjdDxKU05vbkZpbmFsT2JqZWN0
Pj4oKSkKLSAgICAsIGN1c3RvbUdldHRlckZ1bmN0aW9uSGVhcENlbGxUeXBlKElzb0hlYXBDZWxs
VHlwZTo6Y3JlYXRlPEpTQ3VzdG9tR2V0dGVyRnVuY3Rpb24+KCkpCi0gICAgLCBjdXN0b21TZXR0
ZXJGdW5jdGlvbkhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OmNyZWF0ZTxKU0N1c3RvbVNl
dHRlckZ1bmN0aW9uPigpKQotICAgICwgZGF0ZUluc3RhbmNlSGVhcENlbGxUeXBlKElzb0hlYXBD
ZWxsVHlwZTo6Y3JlYXRlPERhdGVJbnN0YW5jZT4oKSkKLSAgICAsIGVycm9ySW5zdGFuY2VIZWFw
Q2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpjcmVhdGU8RXJyb3JJbnN0YW5jZT4oKSkKLSAgICAs
IGZpbmFsaXphdGlvblJlZ2lzdHJ5Q2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpjcmVhdGU8SlNG
aW5hbGl6YXRpb25SZWdpc3RyeT4oKSkKLSAgICAsIGdsb2JhbExleGljYWxFbnZpcm9ubWVudEhl
YXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OmNyZWF0ZTxKU0dsb2JhbExleGljYWxFbnZpcm9u
bWVudD4oKSkKLSAgICAsIGdsb2JhbE9iamVjdEhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6
OmNyZWF0ZTxKU0dsb2JhbE9iamVjdD4oKSkKLSAgICAsIGluamVjdGVkU2NyaXB0SG9zdFNwYWNl
SGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6Y3JlYXRlPEluc3BlY3Rvcjo6SlNJbmplY3Rl
ZFNjcmlwdEhvc3Q+KCkpCi0gICAgLCBqYXZhU2NyaXB0Q2FsbEZyYW1lSGVhcENlbGxUeXBlKElz
b0hlYXBDZWxsVHlwZTo6Y3JlYXRlPEluc3BlY3Rvcjo6SlNKYXZhU2NyaXB0Q2FsbEZyYW1lPigp
KQotICAgICwganNNb2R1bGVSZWNvcmRIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpjcmVh
dGU8SlNNb2R1bGVSZWNvcmQ+KCkpCi0gICAgLCBtb2R1bGVOYW1lc3BhY2VPYmplY3RIZWFwQ2Vs
bFR5cGUoSXNvSGVhcENlbGxUeXBlOjpjcmVhdGU8SlNNb2R1bGVOYW1lc3BhY2VPYmplY3Q+KCkp
Ci0gICAgLCBuYXRpdmVTdGRGdW5jdGlvbkhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OmNy
ZWF0ZTxKU05hdGl2ZVN0ZEZ1bmN0aW9uPigpKQotICAgICwgc3RyaW5nSGVhcENlbGxUeXBlKG1h
a2VVbmlxdWU8SXNvSW5saW5lZEhlYXBDZWxsVHlwZTxKU1N0cmluZz4+KCkpCi0gICAgLCB3ZWFr
TWFwSGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6Y3JlYXRlPEpTV2Vha01hcD4oKSkKLSAg
ICAsIHdlYWtTZXRIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpjcmVhdGU8SlNXZWFrU2V0
PigpKQotICAgICwgZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKG1ha2VVbmlxdWU8SlNE
ZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGU+KCkpCi0jaWYgSlNDX09CSkNfQVBJX0VOQUJM
RUQKLSAgICAsIGFwaVdyYXBwZXJPYmplY3RIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpj
cmVhdGU8SlNDYWxsYmFja09iamVjdDxKU0FQSVdyYXBwZXJPYmplY3Q+PigpKQotICAgICwgb2Jq
Q0NhbGxiYWNrRnVuY3Rpb25IZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpjcmVhdGU8T2Jq
Q0NhbGxiYWNrRnVuY3Rpb24+KCkpCi0jZW5kaWYKLSNpZmRlZiBKU0NfR0xJQl9BUElfRU5BQkxF
RAotICAgICwgYXBpV3JhcHBlck9iamVjdEhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OmNy
ZWF0ZTxKU0NhbGxiYWNrT2JqZWN0PEpTQVBJV3JhcHBlck9iamVjdD4+KCkpCi0gICAgLCBjYWxs
YmFja0FQSVdyYXBwZXJHbG9iYWxPYmplY3RIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpj
cmVhdGU8SlNDYWxsYmFja09iamVjdDxKU0FQSVdyYXBwZXJHbG9iYWxPYmplY3Q+PigpKQotICAg
ICwganNjQ2FsbGJhY2tGdW5jdGlvbkhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OmNyZWF0
ZTxKU0NDYWxsYmFja0Z1bmN0aW9uPigpKQotI2VuZGlmCi0gICAgLCBpbnRsQ29sbGF0b3JIZWFw
Q2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpjcmVhdGU8SW50bENvbGxhdG9yPigpKQotICAgICwg
aW50bERhdGVUaW1lRm9ybWF0SGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6Y3JlYXRlPElu
dGxEYXRlVGltZUZvcm1hdD4oKSkKLSAgICAsIGludGxEaXNwbGF5TmFtZXNIZWFwQ2VsbFR5cGUo
SXNvSGVhcENlbGxUeXBlOjpjcmVhdGU8SW50bERpc3BsYXlOYW1lcz4oKSkKLSAgICAsIGludGxM
aXN0Rm9ybWF0SGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6Y3JlYXRlPEludGxMaXN0Rm9y
bWF0PigpKQotICAgICwgaW50bExvY2FsZUhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OmNy
ZWF0ZTxJbnRsTG9jYWxlPigpKQotICAgICwgaW50bE51bWJlckZvcm1hdEhlYXBDZWxsVHlwZShJ
c29IZWFwQ2VsbFR5cGU6OmNyZWF0ZTxJbnRsTnVtYmVyRm9ybWF0PigpKQotICAgICwgaW50bFBs
dXJhbFJ1bGVzSGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6Y3JlYXRlPEludGxQbHVyYWxS
dWxlcz4oKSkKLSAgICAsIGludGxSZWxhdGl2ZVRpbWVGb3JtYXRIZWFwQ2VsbFR5cGUoSXNvSGVh
cENlbGxUeXBlOjpjcmVhdGU8SW50bFJlbGF0aXZlVGltZUZvcm1hdD4oKSkKLSAgICAsIGludGxT
ZWdtZW50SXRlcmF0b3JIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpjcmVhdGU8SW50bFNl
Z21lbnRJdGVyYXRvcj4oKSkKLSAgICAsIGludGxTZWdtZW50ZXJIZWFwQ2VsbFR5cGUoSXNvSGVh
cENlbGxUeXBlOjpjcmVhdGU8SW50bFNlZ21lbnRlcj4oKSkKLSAgICAsIGludGxTZWdtZW50c0hl
YXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OmNyZWF0ZTxJbnRsU2VnbWVudHM+KCkpCi0jaWYg
RU5BQkxFKFdFQkFTU0VNQkxZKQotICAgICwgd2ViQXNzZW1ibHlDb2RlQmxvY2tIZWFwQ2VsbFR5
cGUoSXNvSGVhcENlbGxUeXBlOjpjcmVhdGU8SlNXZWJBc3NlbWJseUNvZGVCbG9jaz4oKSkKLSAg
ICAsIHdlYkFzc2VtYmx5RXhjZXB0aW9uSGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6Y3Jl
YXRlPEpTV2ViQXNzZW1ibHlFeGNlcHRpb24+KCkpCi0gICAgLCB3ZWJBc3NlbWJseUZ1bmN0aW9u
SGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6Y3JlYXRlPFdlYkFzc2VtYmx5RnVuY3Rpb24+
KCkpCi0gICAgLCB3ZWJBc3NlbWJseUdsb2JhbEhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6
OmNyZWF0ZTxKU1dlYkFzc2VtYmx5R2xvYmFsPigpKQotICAgICwgd2ViQXNzZW1ibHlJbnN0YW5j
ZUhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OmNyZWF0ZTxKU1dlYkFzc2VtYmx5SW5zdGFu
Y2U+KCkpCi0gICAgLCB3ZWJBc3NlbWJseU1lbW9yeUhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5
cGU6OmNyZWF0ZTxKU1dlYkFzc2VtYmx5TWVtb3J5PigpKQotICAgICwgd2ViQXNzZW1ibHlNb2R1
bGVIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpjcmVhdGU8SlNXZWJBc3NlbWJseU1vZHVs
ZT4oKSkKLSAgICAsIHdlYkFzc2VtYmx5TW9kdWxlUmVjb3JkSGVhcENlbGxUeXBlKElzb0hlYXBD
ZWxsVHlwZTo6Y3JlYXRlPFdlYkFzc2VtYmx5TW9kdWxlUmVjb3JkPigpKQotICAgICwgd2ViQXNz
ZW1ibHlUYWJsZUhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OmNyZWF0ZTxKU1dlYkFzc2Vt
Ymx5VGFibGU+KCkpCi0gICAgLCB3ZWJBc3NlbWJseVRhZ0hlYXBDZWxsVHlwZShJc29IZWFwQ2Vs
bFR5cGU6OmNyZWF0ZTxKU1dlYkFzc2VtYmx5VGFnPigpKQotI2VuZGlmCi0gICAgLCBwcmltaXRp
dmVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlKCJQcmltaXRpdmUgR2lnYWNhZ2UgQXV4aWxpYXJ5Iiwg
aGVhcCwgKmF1eGlsaWFyeUhlYXBDZWxsVHlwZSwgcHJpbWl0aXZlR2lnYWNhZ2VBbGxvY2F0b3Iu
Z2V0KCkpIC8vIEhhc2g6MHgzZTdjZDc2MgotICAgICwganNWYWx1ZUdpZ2FjYWdlQXV4aWxpYXJ5
U3BhY2UoIkpTVmFsdWUgR2lnYWNhZ2UgQXV4aWxpYXJ5IiwgaGVhcCwgKmF1eGlsaWFyeUhlYXBD
ZWxsVHlwZSwganNWYWx1ZUdpZ2FjYWdlQWxsb2NhdG9yLmdldCgpKSAvLyBIYXNoOjB4MjQxZTk0
NgotICAgICwgaW1tdXRhYmxlQnV0dGVyZmx5SlNWYWx1ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2Uo
IkltbXV0YWJsZUJ1dHRlcmZseSBHaWdhY2FnZSBKU0NlbGxXaXRoSW5kZXhpbmdIZWFkZXIiLCBo
ZWFwLCAqaW1tdXRhYmxlQnV0dGVyZmx5SGVhcENlbGxUeXBlLCBqc1ZhbHVlR2lnYWNhZ2VBbGxv
Y2F0b3IuZ2V0KCkpIC8vIEhhc2g6MHg3YTk0NTMwMAotICAgICwgY2VsbFNwYWNlKCJKU0NlbGwi
LCBoZWFwLCAqY2VsbEhlYXBDZWxsVHlwZSwgZmFzdE1hbGxvY0FsbG9jYXRvci5nZXQoKSkgLy8g
SGFzaDoweGFkZmI1YTc5Ci0gICAgLCB2YXJpYWJsZVNpemVkQ2VsbFNwYWNlKCJWYXJpYWJsZSBT
aXplZCBKU0NlbGwiLCBoZWFwLCAqY2VsbEhlYXBDZWxsVHlwZSwgZmFzdE1hbGxvY0FsbG9jYXRv
ci5nZXQoKSkgLy8gSGFzaDoweGJjZDc2OWNjCi0gICAgLCBkZXN0cnVjdGlibGVPYmplY3RTcGFj
ZSgiSlNEZXN0cnVjdGlibGVPYmplY3QiLCBoZWFwLCAqZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENl
bGxUeXBlLCBmYXN0TWFsbG9jQWxsb2NhdG9yLmdldCgpKSAvLyBIYXNoOjB4NGY1ZWQ3YTkKLSAg
ICAsIGFycmF5U3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoaGVhcCwgKmNlbGxIZWFwQ2VsbFR5cGUs
IEpTQXJyYXkpCi0gICAgLCBiaWdJbnRTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVChoZWFwLCAqY2Vs
bEhlYXBDZWxsVHlwZSwgSlNCaWdJbnQpCi0gICAgLCBjYWxsZWVTcGFjZSBJU09fU1VCU1BBQ0Vf
SU5JVChoZWFwLCAqY2VsbEhlYXBDZWxsVHlwZSwgSlNDYWxsZWUpCi0gICAgLCBjbG9uZWRBcmd1
bWVudHNTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVChoZWFwLCAqY2VsbEhlYXBDZWxsVHlwZSwgQ2xv
bmVkQXJndW1lbnRzKQotICAgICwgY3VzdG9tR2V0dGVyU2V0dGVyU3BhY2UgSVNPX1NVQlNQQUNF
X0lOSVQoaGVhcCwgKmNlbGxIZWFwQ2VsbFR5cGUsIEN1c3RvbUdldHRlclNldHRlcikKLSAgICAs
IGRhdGVJbnN0YW5jZVNwYWNlIElTT19TVUJTUEFDRV9JTklUKGhlYXAsICpkYXRlSW5zdGFuY2VI
ZWFwQ2VsbFR5cGUsIERhdGVJbnN0YW5jZSkKLSAgICAsIGRvbUF0dHJpYnV0ZUdldHRlclNldHRl
clNwYWNlIElTT19TVUJTUEFDRV9JTklUKGhlYXAsICpjZWxsSGVhcENlbGxUeXBlLCBET01BdHRy
aWJ1dGVHZXR0ZXJTZXR0ZXIpCi0gICAgLCBleGNlcHRpb25TcGFjZSBJU09fU1VCU1BBQ0VfSU5J
VChoZWFwLCAqZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZSwgRXhjZXB0aW9uKQotICAgICwg
ZXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZVNwYWNlIElTT19TVUJTUEFDRV9JTklUKGhlYXAsICpj
ZWxsSGVhcENlbGxUeXBlLCBFeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlKSAvLyBIYXNoOjB4N2I3
MzBiMjAKLSAgICAsIGZ1bmN0aW9uU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoaGVhcCwgKmNlbGxI
ZWFwQ2VsbFR5cGUsIEpTRnVuY3Rpb24pIC8vIEhhc2g6MHg4MDBmY2E3MgotICAgICwgZ2V0dGVy
U2V0dGVyU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoaGVhcCwgKmNlbGxIZWFwQ2VsbFR5cGUsIEdl
dHRlclNldHRlcikKLSAgICAsIGdsb2JhbExleGljYWxFbnZpcm9ubWVudFNwYWNlIElTT19TVUJT
UEFDRV9JTklUKGhlYXAsICpnbG9iYWxMZXhpY2FsRW52aXJvbm1lbnRIZWFwQ2VsbFR5cGUsIEpT
R2xvYmFsTGV4aWNhbEVudmlyb25tZW50KQotICAgICwgaW50ZXJuYWxGdW5jdGlvblNwYWNlIElT
T19TVUJTUEFDRV9JTklUKGhlYXAsICpjZWxsSGVhcENlbGxUeXBlLCBJbnRlcm5hbEZ1bmN0aW9u
KSAvLyBIYXNoOjB4Zjg0NWM0NjQKLSAgICAsIGpzUHJveHlTcGFjZSBJU09fU1VCU1BBQ0VfSU5J
VChoZWFwLCAqY2VsbEhlYXBDZWxsVHlwZSwgSlNQcm94eSkKLSAgICAsIG5hdGl2ZUV4ZWN1dGFi
bGVTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVChoZWFwLCAqZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxs
VHlwZSwgTmF0aXZlRXhlY3V0YWJsZSkgLy8gSGFzaDoweDY3NTY3Zjk1Ci0gICAgLCBudW1iZXJP
YmplY3RTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVChoZWFwLCAqY2VsbEhlYXBDZWxsVHlwZSwgTnVt
YmVyT2JqZWN0KQotICAgICwgcGxhaW5PYmplY3RTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVChoZWFw
LCAqY2VsbEhlYXBDZWxsVHlwZSwgSlNOb25GaW5hbE9iamVjdCkgLy8gTWFpbmx5IHVzZWQgZm9y
IHByb3RvdHlwZXMuCi0gICAgLCBwcm9taXNlU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoaGVhcCwg
KmNlbGxIZWFwQ2VsbFR5cGUsIEpTUHJvbWlzZSkKLSAgICAsIHByb3BlcnR5TmFtZUVudW1lcmF0
b3JTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVChoZWFwLCAqY2VsbEhlYXBDZWxsVHlwZSwgSlNQcm9w
ZXJ0eU5hbWVFbnVtZXJhdG9yKQotICAgICwgcHJvcGVydHlUYWJsZVNwYWNlIElTT19TVUJTUEFD
RV9JTklUKGhlYXAsICpkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlLCBQcm9wZXJ0eVRhYmxl
KSAvLyBIYXNoOjB4YzZiYzlmMTIKLSAgICAsIHJlZ0V4cFNwYWNlIElTT19TVUJTUEFDRV9JTklU
KGhlYXAsICpkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlLCBSZWdFeHApCi0gICAgLCByZWdF
eHBPYmplY3RTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVChoZWFwLCAqY2VsbEhlYXBDZWxsVHlwZSwg
UmVnRXhwT2JqZWN0KQotICAgICwgcm9wZVN0cmluZ1NwYWNlIElTT19TVUJTUEFDRV9JTklUKGhl
YXAsICpzdHJpbmdIZWFwQ2VsbFR5cGUsIEpTUm9wZVN0cmluZykKLSAgICAsIHNjb3BlZEFyZ3Vt
ZW50c1NwYWNlIElTT19TVUJTUEFDRV9JTklUKGhlYXAsICpjZWxsSGVhcENlbGxUeXBlLCBTY29w
ZWRBcmd1bWVudHMpCi0gICAgLCBzcGFyc2VBcnJheVZhbHVlTWFwU3BhY2UgSVNPX1NVQlNQQUNF
X0lOSVQoaGVhcCwgKmRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUsIFNwYXJzZUFycmF5VmFs
dWVNYXApCi0gICAgLCBzdHJpbmdTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVChoZWFwLCAqc3RyaW5n
SGVhcENlbGxUeXBlLCBKU1N0cmluZykgLy8gSGFzaDoweDkwY2Y3NThmCi0gICAgLCBzdHJpbmdP
YmplY3RTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVChoZWFwLCAqY2VsbEhlYXBDZWxsVHlwZSwgU3Ry
aW5nT2JqZWN0KQotICAgICwgc3RydWN0dXJlQ2hhaW5TcGFjZSBJU09fU1VCU1BBQ0VfSU5JVCho
ZWFwLCAqY2VsbEhlYXBDZWxsVHlwZSwgU3RydWN0dXJlQ2hhaW4pCi0gICAgLCBzdHJ1Y3R1cmVS
YXJlRGF0YVNwYWNlIElTT19TVUJTUEFDRV9JTklUKGhlYXAsICpkZXN0cnVjdGlibGVDZWxsSGVh
cENlbGxUeXBlLCBTdHJ1Y3R1cmVSYXJlRGF0YSkgLy8gSGFzaDoweGFjYTRlNjJkCi0gICAgLCBz
dHJ1Y3R1cmVTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVChoZWFwLCAqZGVzdHJ1Y3RpYmxlQ2VsbEhl
YXBDZWxsVHlwZSwgU3RydWN0dXJlKSAvLyBIYXNoOjB4MWYxYmNkY2EKLSAgICAsIGJyYW5kZWRT
dHJ1Y3R1cmVTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVChoZWFwLCAqZGVzdHJ1Y3RpYmxlQ2VsbEhl
YXBDZWxsVHlwZSwgQnJhbmRlZFN0cnVjdHVyZSkKLSAgICAsIHN5bWJvbFRhYmxlU3BhY2UgSVNP
X1NVQlNQQUNFX0lOSVQoaGVhcCwgKmRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUsIFN5bWJv
bFRhYmxlKSAvLyBIYXNoOjB4YzUyMTVhZmQKLSAgICAsIGV4ZWN1dGFibGVUb0NvZGVCbG9ja0Vk
Z2VzV2l0aENvbnN0cmFpbnRzKGV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2VTcGFjZSkKLSAgICAs
IGV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2VzV2l0aEZpbmFsaXplcnMoZXhlY3V0YWJsZVRvQ29k
ZUJsb2NrRWRnZVNwYWNlKQotICAgICwgY29kZUJsb2NrU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQo
aGVhcCwgKmRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUsIENvZGVCbG9jaykgLy8gSGFzaDow
eDc3ZTY2ZWM5Ci0gICAgLCBmdW5jdGlvbkV4ZWN1dGFibGVTcGFjZSBJU09fU1VCU1BBQ0VfSU5J
VChoZWFwLCAqZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZSwgRnVuY3Rpb25FeGVjdXRhYmxl
KSAvLyBIYXNoOjB4NWQxNThmMwotICAgICwgcHJvZ3JhbUV4ZWN1dGFibGVTcGFjZSBJU09fU1VC
U1BBQ0VfSU5JVChoZWFwLCAqZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZSwgUHJvZ3JhbUV4
ZWN1dGFibGUpIC8vIEhhc2g6MHg1MjdjNzdlNwotICAgICwgdW5saW5rZWRGdW5jdGlvbkV4ZWN1
dGFibGVTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVChoZWFwLCAqZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBD
ZWxsVHlwZSwgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUpIC8vIEhhc2g6MHhmNmI4MjhkOQog
ICAgICwgdm1UeXBlKHZtVHlwZSkKICAgICAsIGNsaWVudERhdGEobnVsbHB0cikKICAgICAsIHRv
cEVudHJ5RnJhbWUobnVsbHB0cikKQEAgLTE1NzIsMTM3ICsxMzg3LDYgQEAgdm9pZCBWTTo6ZW5z
dXJlU2hhZG93Q2hpY2tlbigpCiAgICAgbV9zaGFkb3dDaGlja2VuID0gbWFrZVVuaXF1ZTxTaGFk
b3dDaGlja2VuPigpOwogfQogCi0jZGVmaW5lIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9N
RU1CRVJfU0xPVyhuYW1lLCBoZWFwQ2VsbFR5cGUsIHR5cGUpIFwKLSAgICBJc29TdWJzcGFjZSog
Vk06Om5hbWUjI1Nsb3coKSBcCi0gICAgeyBcCi0gICAgICAgIEFTU0VSVCghbV8jI25hbWUpOyBc
Ci0gICAgICAgIGF1dG8gc3BhY2UgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BB
Q0VfSU5JVChoZWFwLCBoZWFwQ2VsbFR5cGUsIHR5cGUpOyBcCi0gICAgICAgIFdURjo6c3RvcmVT
dG9yZUZlbmNlKCk7IFwKLSAgICAgICAgbV8jI25hbWUgPSBXVEZNb3ZlKHNwYWNlKTsgXAotICAg
ICAgICByZXR1cm4gbV8jI25hbWUuZ2V0KCk7IFwKLSAgICB9Ci0KLQotRFlOQU1JQ19JU09fU1VC
U1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGFwaUdsb2JhbE9iamVjdFNwYWNlLCAqYXBpR2xvYmFs
T2JqZWN0SGVhcENlbGxUeXBlLCBKU0FQSUdsb2JhbE9iamVjdCkKLURZTkFNSUNfSVNPX1NVQlNQ
QUNFX0RFRklORV9NRU1CRVJfU0xPVyhhcGlWYWx1ZVdyYXBwZXJTcGFjZSwgKmNlbGxIZWFwQ2Vs
bFR5cGUsIEpTQVBJVmFsdWVXcmFwcGVyKQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01F
TUJFUl9TTE9XKGFycmF5QnVmZmVyU3BhY2UsICpjZWxsSGVhcENlbGxUeXBlLCBKU0FycmF5QnVm
ZmVyKQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGFycmF5SXRlcmF0
b3JTcGFjZSwgKmNlbGxIZWFwQ2VsbFR5cGUsIEpTQXJyYXlJdGVyYXRvcikKLURZTkFNSUNfSVNP
X1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhhc3luY0dlbmVyYXRvclNwYWNlLCAqY2VsbEhl
YXBDZWxsVHlwZSwgSlNBc3luY0dlbmVyYXRvcikKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklO
RV9NRU1CRVJfU0xPVyhiaWdJbnQ2NEFycmF5U3BhY2UsICpjZWxsSGVhcENlbGxUeXBlLCBKU0Jp
Z0ludDY0QXJyYXkpCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coYmln
SW50T2JqZWN0U3BhY2UsICpjZWxsSGVhcENlbGxUeXBlLCBCaWdJbnRPYmplY3QpCi1EWU5BTUlD
X0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coYmlnVWludDY0QXJyYXlTcGFjZSwgKmNl
bGxIZWFwQ2VsbFR5cGUsIEpTQmlnVWludDY0QXJyYXkpCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9E
RUZJTkVfTUVNQkVSX1NMT1coYm9vbGVhbk9iamVjdFNwYWNlLCAqY2VsbEhlYXBDZWxsVHlwZSwg
Qm9vbGVhbk9iamVjdCkKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhi
b3VuZEZ1bmN0aW9uU3BhY2UsICpjZWxsSGVhcENlbGxUeXBlLCBKU0JvdW5kRnVuY3Rpb24pIC8v
IEhhc2g6MHhkNzkxNmQ0MQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9X
KGNhbGxiYWNrQ29uc3RydWN0b3JTcGFjZSwgKmNhbGxiYWNrQ29uc3RydWN0b3JIZWFwQ2VsbFR5
cGUsIEpTQ2FsbGJhY2tDb25zdHJ1Y3RvcikKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9N
RU1CRVJfU0xPVyhjYWxsYmFja0dsb2JhbE9iamVjdFNwYWNlLCAqY2FsbGJhY2tHbG9iYWxPYmpl
Y3RIZWFwQ2VsbFR5cGUsIEpTQ2FsbGJhY2tPYmplY3Q8SlNHbG9iYWxPYmplY3Q+KQotRFlOQU1J
Q19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGNhbGxiYWNrRnVuY3Rpb25TcGFjZSwg
KmNlbGxIZWFwQ2VsbFR5cGUsIEpTQ2FsbGJhY2tGdW5jdGlvbikgLy8gSGFzaDoweGU3NjQ4ZWJj
Ci1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coY2FsbGJhY2tPYmplY3RT
cGFjZSwgKmNhbGxiYWNrT2JqZWN0SGVhcENlbGxUeXBlLCBKU0NhbGxiYWNrT2JqZWN0PEpTTm9u
RmluYWxPYmplY3Q+KQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGN1
c3RvbUdldHRlckZ1bmN0aW9uU3BhY2UsICpjdXN0b21HZXR0ZXJGdW5jdGlvbkhlYXBDZWxsVHlw
ZSwgSlNDdXN0b21HZXR0ZXJGdW5jdGlvbikKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9N
RU1CRVJfU0xPVyhjdXN0b21TZXR0ZXJGdW5jdGlvblNwYWNlLCAqY3VzdG9tU2V0dGVyRnVuY3Rp
b25IZWFwQ2VsbFR5cGUsIEpTQ3VzdG9tU2V0dGVyRnVuY3Rpb24pCi1EWU5BTUlDX0lTT19TVUJT
UEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coZGF0YVZpZXdTcGFjZSwgKmNlbGxIZWFwQ2VsbFR5cGUs
IEpTRGF0YVZpZXcpCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coZGVi
dWdnZXJTY29wZVNwYWNlLCAqY2VsbEhlYXBDZWxsVHlwZSwgRGVidWdnZXJTY29wZSkKLURZTkFN
SUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhlcnJvckluc3RhbmNlU3BhY2UsICpl
cnJvckluc3RhbmNlSGVhcENlbGxUeXBlLCBFcnJvckluc3RhbmNlKSAvLyBIYXNoOjB4M2Y0MGQ0
YQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGZsb2F0MzJBcnJheVNw
YWNlLCAqY2VsbEhlYXBDZWxsVHlwZSwgSlNGbG9hdDMyQXJyYXkpCi1EWU5BTUlDX0lTT19TVUJT
UEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coZmxvYXQ2NEFycmF5U3BhY2UsICpjZWxsSGVhcENlbGxU
eXBlLCBKU0Zsb2F0NjRBcnJheSkKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJf
U0xPVyhmdW5jdGlvblJhcmVEYXRhU3BhY2UsICpkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBl
LCBGdW5jdGlvblJhcmVEYXRhKQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9T
TE9XKGdlbmVyYXRvclNwYWNlLCAqY2VsbEhlYXBDZWxsVHlwZSwgSlNHZW5lcmF0b3IpCi1EWU5B
TUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coZ2xvYmFsT2JqZWN0U3BhY2UsICpn
bG9iYWxPYmplY3RIZWFwQ2VsbFR5cGUsIEpTR2xvYmFsT2JqZWN0KQotRFlOQU1JQ19JU09fU1VC
U1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGluamVjdGVkU2NyaXB0SG9zdFNwYWNlLCAqaW5qZWN0
ZWRTY3JpcHRIb3N0U3BhY2VIZWFwQ2VsbFR5cGUsIEluc3BlY3Rvcjo6SlNJbmplY3RlZFNjcmlw
dEhvc3QpCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coaW50OEFycmF5
U3BhY2UsICpjZWxsSGVhcENlbGxUeXBlLCBKU0ludDhBcnJheSkKLURZTkFNSUNfSVNPX1NVQlNQ
QUNFX0RFRklORV9NRU1CRVJfU0xPVyhpbnQxNkFycmF5U3BhY2UsICpjZWxsSGVhcENlbGxUeXBl
LCBKU0ludDE2QXJyYXkpCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1co
aW50MzJBcnJheVNwYWNlLCAqY2VsbEhlYXBDZWxsVHlwZSwgSlNJbnQzMkFycmF5KQotRFlOQU1J
Q19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGphdmFTY3JpcHRDYWxsRnJhbWVTcGFj
ZSwgKmphdmFTY3JpcHRDYWxsRnJhbWVIZWFwQ2VsbFR5cGUsIEluc3BlY3Rvcjo6SlNKYXZhU2Ny
aXB0Q2FsbEZyYW1lKQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGpz
TW9kdWxlUmVjb3JkU3BhY2UsICpqc01vZHVsZVJlY29yZEhlYXBDZWxsVHlwZSwgSlNNb2R1bGVS
ZWNvcmQpCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1cobWFwQnVja2V0
U3BhY2UsICpjZWxsSGVhcENlbGxUeXBlLCBKU01hcDo6QnVja2V0VHlwZSkKLURZTkFNSUNfSVNP
X1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhtYXBJdGVyYXRvclNwYWNlLCAqY2VsbEhlYXBD
ZWxsVHlwZSwgSlNNYXBJdGVyYXRvcikKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1C
RVJfU0xPVyhtYXBTcGFjZSwgKmNlbGxIZWFwQ2VsbFR5cGUsIEpTTWFwKQotRFlOQU1JQ19JU09f
U1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKG1vZHVsZU5hbWVzcGFjZU9iamVjdFNwYWNlLCAq
bW9kdWxlTmFtZXNwYWNlT2JqZWN0SGVhcENlbGxUeXBlLCBKU01vZHVsZU5hbWVzcGFjZU9iamVj
dCkKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhuYXRpdmVTdGRGdW5j
dGlvblNwYWNlLCAqbmF0aXZlU3RkRnVuY3Rpb25IZWFwQ2VsbFR5cGUsIEpTTmF0aXZlU3RkRnVu
Y3Rpb24pIC8vIEhhc2g6MHg3MGVkNjFlNAotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01F
TUJFUl9TTE9XKHByb3h5T2JqZWN0U3BhY2UsICpjZWxsSGVhcENlbGxUeXBlLCBQcm94eU9iamVj
dCkKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhwcm94eVJldm9rZVNw
YWNlLCAqY2VsbEhlYXBDZWxsVHlwZSwgUHJveHlSZXZva2UpIC8vIEhhc2g6MHhiNTA2YTkzOQot
RFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHNjb3BlZEFyZ3VtZW50c1Rh
YmxlU3BhY2UsICpkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlLCBTY29wZWRBcmd1bWVudHNU
YWJsZSkKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhzY3JpcHRGZXRj
aFBhcmFtZXRlcnNTcGFjZSwgKmRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUsIEpTU2NyaXB0
RmV0Y2hQYXJhbWV0ZXJzKQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9X
KHNjcmlwdEZldGNoZXJTcGFjZSwgKmRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUsIEpTU2Ny
aXB0RmV0Y2hlcikKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhzZXRC
dWNrZXRTcGFjZSwgKmNlbGxIZWFwQ2VsbFR5cGUsIEpTU2V0OjpCdWNrZXRUeXBlKQotRFlOQU1J
Q19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHNldEl0ZXJhdG9yU3BhY2UsICpjZWxs
SGVhcENlbGxUeXBlLCBKU1NldEl0ZXJhdG9yKQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5F
X01FTUJFUl9TTE9XKHNldFNwYWNlLCAqY2VsbEhlYXBDZWxsVHlwZSwgSlNTZXQpCi1EWU5BTUlD
X0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coc2hhZG93UmVhbG1TcGFjZSwgKmNlbGxI
ZWFwQ2VsbFR5cGUsIFNoYWRvd1JlYWxtT2JqZWN0KQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVG
SU5FX01FTUJFUl9TTE9XKHN0cmljdEV2YWxBY3RpdmF0aW9uU3BhY2UsICpjZWxsSGVhcENlbGxU
eXBlLCBTdHJpY3RFdmFsQWN0aXZhdGlvbikKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9N
RU1CRVJfU0xPVyhzdHJpbmdJdGVyYXRvclNwYWNlLCAqY2VsbEhlYXBDZWxsVHlwZSwgSlNTdHJp
bmdJdGVyYXRvcikKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhzb3Vy
Y2VDb2RlU3BhY2UsICpkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlLCBKU1NvdXJjZUNvZGUp
Ci1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coc3ltYm9sU3BhY2UsICpk
ZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlLCBTeW1ib2wpCi1EWU5BTUlDX0lTT19TVUJTUEFD
RV9ERUZJTkVfTUVNQkVSX1NMT1coc3ltYm9sT2JqZWN0U3BhY2UsICpjZWxsSGVhcENlbGxUeXBl
LCBTeW1ib2xPYmplY3QpCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1co
dGVtcGxhdGVPYmplY3REZXNjcmlwdG9yU3BhY2UsICpkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxU
eXBlLCBKU1RlbXBsYXRlT2JqZWN0RGVzY3JpcHRvcikKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RF
RklORV9NRU1CRVJfU0xPVyh0ZW1wb3JhbENhbGVuZGFyU3BhY2UsICpjZWxsSGVhcENlbGxUeXBl
LCBUZW1wb3JhbENhbGVuZGFyKQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9T
TE9XKHRlbXBvcmFsRHVyYXRpb25TcGFjZSwgKmNlbGxIZWFwQ2VsbFR5cGUsIFRlbXBvcmFsRHVy
YXRpb24pCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1codGVtcG9yYWxJ
bnN0YW50U3BhY2UsICpjZWxsSGVhcENlbGxUeXBlLCBUZW1wb3JhbEluc3RhbnQpCi1EWU5BTUlD
X0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1codGVtcG9yYWxQbGFpblRpbWVTcGFjZSwg
KmNlbGxIZWFwQ2VsbFR5cGUsIFRlbXBvcmFsUGxhaW5UaW1lKQotRFlOQU1JQ19JU09fU1VCU1BB
Q0VfREVGSU5FX01FTUJFUl9TTE9XKHRlbXBvcmFsVGltZVpvbmVTcGFjZSwgKmNlbGxIZWFwQ2Vs
bFR5cGUsIFRlbXBvcmFsVGltZVpvbmUpCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVN
QkVSX1NMT1codWludDhBcnJheVNwYWNlLCAqY2VsbEhlYXBDZWxsVHlwZSwgSlNVaW50OEFycmF5
KQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHVpbnQ4Q2xhbXBlZEFy
cmF5U3BhY2UsICpjZWxsSGVhcENlbGxUeXBlLCBKU1VpbnQ4Q2xhbXBlZEFycmF5KQotRFlOQU1J
Q19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHVpbnQxNkFycmF5U3BhY2UsICpjZWxs
SGVhcENlbGxUeXBlLCBKU1VpbnQxNkFycmF5KQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5F
X01FTUJFUl9TTE9XKHVpbnQzMkFycmF5U3BhY2UsICpjZWxsSGVhcENlbGxUeXBlLCBKU1VpbnQz
MkFycmF5KQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHVubGlua2Vk
RXZhbENvZGVCbG9ja1NwYWNlLCAqZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZSwgVW5saW5r
ZWRFdmFsQ29kZUJsb2NrKQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9X
KHVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2tTcGFjZSwgKmRlc3RydWN0aWJsZUNlbGxIZWFwQ2Vs
bFR5cGUsIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2spCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9E
RUZJTkVfTUVNQkVSX1NMT1codW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrU3BhY2UsICpk
ZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlLCBVbmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxv
Y2spCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1codW5saW5rZWRQcm9n
cmFtQ29kZUJsb2NrU3BhY2UsICpkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlLCBVbmxpbmtl
ZFByb2dyYW1Db2RlQmxvY2spCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NM
T1cod2Vha01hcFNwYWNlLCAqd2Vha01hcEhlYXBDZWxsVHlwZSwgSlNXZWFrTWFwKSAvLyBIYXNo
OjB4NjYyYjEyYTMKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh3ZWFr
U2V0U3BhY2UsICp3ZWFrU2V0SGVhcENlbGxUeXBlLCBKU1dlYWtTZXQpIC8vIEhhc2g6MHg0Yzc4
MWIzMAotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHdlYWtPYmplY3RS
ZWZTcGFjZSwgKmNlbGxIZWFwQ2VsbFR5cGUsIEpTV2Vha09iamVjdFJlZikgLy8gSGFzaDoweDhl
YzY4ZjFmCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1cod2l0aFNjb3Bl
U3BhY2UsICpjZWxsSGVhcENlbGxUeXBlLCBKU1dpdGhTY29wZSkKLURZTkFNSUNfSVNPX1NVQlNQ
QUNFX0RFRklORV9NRU1CRVJfU0xPVyhmaW5hbGl6YXRpb25SZWdpc3RyeVNwYWNlLCAqZmluYWxp
emF0aW9uUmVnaXN0cnlDZWxsVHlwZSwgSlNGaW5hbGl6YXRpb25SZWdpc3RyeSkKLSNpZiBKU0Nf
T0JKQ19BUElfRU5BQkxFRAotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9X
KGFwaVdyYXBwZXJPYmplY3RTcGFjZSwgKmFwaVdyYXBwZXJPYmplY3RIZWFwQ2VsbFR5cGUsIEpT
Q2FsbGJhY2tPYmplY3Q8SlNBUElXcmFwcGVyT2JqZWN0PikKLURZTkFNSUNfSVNPX1NVQlNQQUNF
X0RFRklORV9NRU1CRVJfU0xPVyhvYmpDQ2FsbGJhY2tGdW5jdGlvblNwYWNlLCAqb2JqQ0NhbGxi
YWNrRnVuY3Rpb25IZWFwQ2VsbFR5cGUsIE9iakNDYWxsYmFja0Z1bmN0aW9uKSAvLyBIYXNoOjB4
MTBmNjEwYjgKLSNlbmRpZgotI2lmZGVmIEpTQ19HTElCX0FQSV9FTkFCTEVECi1EWU5BTUlDX0lT
T19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coYXBpV3JhcHBlck9iamVjdFNwYWNlLCAqYXBp
V3JhcHBlck9iamVjdEhlYXBDZWxsVHlwZSwgSlNDYWxsYmFja09iamVjdDxKU0FQSVdyYXBwZXJP
YmplY3Q+KQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGpzY0NhbGxi
YWNrRnVuY3Rpb25TcGFjZSwgKmpzY0NhbGxiYWNrRnVuY3Rpb25IZWFwQ2VsbFR5cGUsIEpTQ0Nh
bGxiYWNrRnVuY3Rpb24pCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1co
Y2FsbGJhY2tBUElXcmFwcGVyR2xvYmFsT2JqZWN0U3BhY2UsICpjYWxsYmFja0FQSVdyYXBwZXJH
bG9iYWxPYmplY3RIZWFwQ2VsbFR5cGUsIEpTQ2FsbGJhY2tPYmplY3Q8SlNBUElXcmFwcGVyR2xv
YmFsT2JqZWN0PikKLSNlbmRpZgotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9T
TE9XKGludGxDb2xsYXRvclNwYWNlLCAqaW50bENvbGxhdG9ySGVhcENlbGxUeXBlLCBJbnRsQ29s
bGF0b3IpCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coaW50bERhdGVU
aW1lRm9ybWF0U3BhY2UsICppbnRsRGF0ZVRpbWVGb3JtYXRIZWFwQ2VsbFR5cGUsIEludGxEYXRl
VGltZUZvcm1hdCkKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhpbnRs
RGlzcGxheU5hbWVzU3BhY2UsICppbnRsRGlzcGxheU5hbWVzSGVhcENlbGxUeXBlLCBJbnRsRGlz
cGxheU5hbWVzKQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGludGxM
aXN0Rm9ybWF0U3BhY2UsICppbnRsTGlzdEZvcm1hdEhlYXBDZWxsVHlwZSwgSW50bExpc3RGb3Jt
YXQpCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coaW50bExvY2FsZVNw
YWNlLCAqaW50bExvY2FsZUhlYXBDZWxsVHlwZSwgSW50bExvY2FsZSkKLURZTkFNSUNfSVNPX1NV
QlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhpbnRsTnVtYmVyRm9ybWF0U3BhY2UsICppbnRsTnVt
YmVyRm9ybWF0SGVhcENlbGxUeXBlLCBJbnRsTnVtYmVyRm9ybWF0KQotRFlOQU1JQ19JU09fU1VC
U1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGludGxQbHVyYWxSdWxlc1NwYWNlLCAqaW50bFBsdXJh
bFJ1bGVzSGVhcENlbGxUeXBlLCBJbnRsUGx1cmFsUnVsZXMpCi1EWU5BTUlDX0lTT19TVUJTUEFD
RV9ERUZJTkVfTUVNQkVSX1NMT1coaW50bFJlbGF0aXZlVGltZUZvcm1hdFNwYWNlLCAqaW50bFJl
bGF0aXZlVGltZUZvcm1hdEhlYXBDZWxsVHlwZSwgSW50bFJlbGF0aXZlVGltZUZvcm1hdCkKLURZ
TkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhpbnRsU2VnbWVudEl0ZXJhdG9y
U3BhY2UsICppbnRsU2VnbWVudEl0ZXJhdG9ySGVhcENlbGxUeXBlLCBJbnRsU2VnbWVudEl0ZXJh
dG9yKQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGludGxTZWdtZW50
ZXJTcGFjZSwgKmludGxTZWdtZW50ZXJIZWFwQ2VsbFR5cGUsIEludGxTZWdtZW50ZXIpCi1EWU5B
TUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coaW50bFNlZ21lbnRzU3BhY2UsICpp
bnRsU2VnbWVudHNIZWFwQ2VsbFR5cGUsIEludGxTZWdtZW50cykKLSNpZiBFTkFCTEUoV0VCQVNT
RU1CTFkpCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coanNUb1dhc21J
Q0NhbGxlZVNwYWNlLCAqY2VsbEhlYXBDZWxsVHlwZSwgSlNUb1dhc21JQ0NhbGxlZSkKLURZTkFN
SUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh3ZWJBc3NlbWJseUNvZGVCbG9ja1Nw
YWNlLCAqd2ViQXNzZW1ibHlDb2RlQmxvY2tIZWFwQ2VsbFR5cGUsIEpTV2ViQXNzZW1ibHlDb2Rl
QmxvY2spIC8vIEhhc2g6MHg5YWQ5OTVjZAotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01F
TUJFUl9TTE9XKHdlYkFzc2VtYmx5RXhjZXB0aW9uU3BhY2UsICp3ZWJBc3NlbWJseUV4Y2VwdGlv
bkhlYXBDZWxsVHlwZSwgSlNXZWJBc3NlbWJseUV4Y2VwdGlvbikKLURZTkFNSUNfSVNPX1NVQlNQ
QUNFX0RFRklORV9NRU1CRVJfU0xPVyh3ZWJBc3NlbWJseUZ1bmN0aW9uU3BhY2UsICp3ZWJBc3Nl
bWJseUZ1bmN0aW9uSGVhcENlbGxUeXBlLCBXZWJBc3NlbWJseUZ1bmN0aW9uKSAvLyBIYXNoOjB4
OGI3YzMyZGIKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh3ZWJBc3Nl
bWJseUdsb2JhbFNwYWNlLCAqd2ViQXNzZW1ibHlHbG9iYWxIZWFwQ2VsbFR5cGUsIEpTV2ViQXNz
ZW1ibHlHbG9iYWwpCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1cod2Vi
QXNzZW1ibHlJbnN0YW5jZVNwYWNlLCAqd2ViQXNzZW1ibHlJbnN0YW5jZUhlYXBDZWxsVHlwZSwg
SlNXZWJBc3NlbWJseUluc3RhbmNlKQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJF
Ul9TTE9XKHdlYkFzc2VtYmx5TWVtb3J5U3BhY2UsICp3ZWJBc3NlbWJseU1lbW9yeUhlYXBDZWxs
VHlwZSwgSlNXZWJBc3NlbWJseU1lbW9yeSkKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9N
RU1CRVJfU0xPVyh3ZWJBc3NlbWJseU1vZHVsZVNwYWNlLCAqd2ViQXNzZW1ibHlNb2R1bGVIZWFw
Q2VsbFR5cGUsIEpTV2ViQXNzZW1ibHlNb2R1bGUpCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJ
TkVfTUVNQkVSX1NMT1cod2ViQXNzZW1ibHlNb2R1bGVSZWNvcmRTcGFjZSwgKndlYkFzc2VtYmx5
TW9kdWxlUmVjb3JkSGVhcENlbGxUeXBlLCBXZWJBc3NlbWJseU1vZHVsZVJlY29yZCkKLURZTkFN
SUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh3ZWJBc3NlbWJseVRhYmxlU3BhY2Us
ICp3ZWJBc3NlbWJseVRhYmxlSGVhcENlbGxUeXBlLCBKU1dlYkFzc2VtYmx5VGFibGUpCi1EWU5B
TUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1cod2ViQXNzZW1ibHlUYWdTcGFjZSwg
KndlYkFzc2VtYmx5VGFnSGVhcENlbGxUeXBlLCBKU1dlYkFzc2VtYmx5VGFnKQotRFlOQU1JQ19J
U09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHdlYkFzc2VtYmx5V3JhcHBlckZ1bmN0aW9u
U3BhY2UsICpjZWxsSGVhcENlbGxUeXBlLCBXZWJBc3NlbWJseVdyYXBwZXJGdW5jdGlvbikgLy8g
SGFzaDoweGQ0YTVmZjAxCi0jZW5kaWYKLQotI3VuZGVmIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RF
RklORV9NRU1CRVJfU0xPVwotCi0jZGVmaW5lIERZTkFNSUNfU1BBQ0VfQU5EX1NFVF9ERUZJTkVf
TUVNQkVSX1NMT1cobmFtZSwgaGVhcENlbGxUeXBlLCB0eXBlKSBcCi0gICAgSXNvU3Vic3BhY2Uq
IFZNOjpuYW1lIyNTbG93KCkgXAotICAgIHsgXAotICAgICAgICBBU1NFUlQoIW1fIyNuYW1lKTsg
XAotICAgICAgICBhdXRvIHNwYWNlID0gbWFrZVVuaXF1ZTxTcGFjZUFuZFNldD4gSVNPX1NVQlNQ
QUNFX0lOSVQoaGVhcCwgaGVhcENlbGxUeXBlLCB0eXBlKTsgXAotICAgICAgICBXVEY6OnN0b3Jl
U3RvcmVGZW5jZSgpOyBcCi0gICAgICAgIG1fIyNuYW1lID0gV1RGTW92ZShzcGFjZSk7IFwKLSAg
ICAgICAgcmV0dXJuICZtXyMjbmFtZS0+c3BhY2U7IFwKLSAgICB9Ci0KLURZTkFNSUNfU1BBQ0Vf
QU5EX1NFVF9ERUZJTkVfTUVNQkVSX1NMT1coZXZhbEV4ZWN1dGFibGVTcGFjZSwgKmRlc3RydWN0
aWJsZUNlbGxIZWFwQ2VsbFR5cGUsIEV2YWxFeGVjdXRhYmxlKSAvLyBIYXNoOjB4OTU4ZTNlOWQK
LURZTkFNSUNfU1BBQ0VfQU5EX1NFVF9ERUZJTkVfTUVNQkVSX1NMT1cobW9kdWxlUHJvZ3JhbUV4
ZWN1dGFibGVTcGFjZSwgKmRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUsIE1vZHVsZVByb2dy
YW1FeGVjdXRhYmxlKSAvLyBIYXNoOjB4NjUwNmZhM2MKLQotI3VuZGVmIERZTkFNSUNfU1BBQ0Vf
QU5EX1NFVF9ERUZJTkVfTUVNQkVSX1NMT1cKLQogSlNDZWxsKiBWTTo6c2VudGluZWxTZXRCdWNr
ZXRTbG93KCkKIHsKICAgICBBU1NFUlQoIW1fc2VudGluZWxTZXRCdWNrZXQpOwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOCwyOCArMjgsMjMg
QEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJDYWxsRGF0YS5oIgogI2luY2x1ZGUgIkNh
bGxlZUJpdHMuaCIKICNpbmNsdWRlICJDb2RlU3BlY2lhbGl6YXRpb25LaW5kLmgiCi0jaW5jbHVk
ZSAiQ29tcGxldGVTdWJzcGFjZS5oIgogI2luY2x1ZGUgIkNvbmN1cnJlbnRKU0xvY2suaCIKICNp
bmNsdWRlICJERkdEb2VzR0NDaGVjay5oIgogI2luY2x1ZGUgIkRlbGV0ZUFsbENvZGVFZmZvcnQu
aCIKLSNpbmNsdWRlICJEaXNhbGxvd1ZNRW50cnkuaCIKICNpbmNsdWRlICJFeGNlcHRpb25FdmVu
dExvY2F0aW9uLmgiCiAjaW5jbHVkZSAiRnVuY3Rpb25IYXNFeGVjdXRlZENhY2hlLmgiCi0jaW5j
bHVkZSAiRnV6emVyQWdlbnQuaCIKICNpbmNsdWRlICJIZWFwLmgiCiAjaW5jbHVkZSAiSW50ZWdy
aXR5LmgiCiAjaW5jbHVkZSAiSW50cmluc2ljLmgiCi0jaW5jbHVkZSAiSXNvQ2VsbFNldC5oIgot
I2luY2x1ZGUgIklzb1N1YnNwYWNlLmgiCiAjaW5jbHVkZSAiSlNDSlNWYWx1ZS5oIgogI2luY2x1
ZGUgIkpTRGF0ZU1hdGguaCIKICNpbmNsdWRlICJKU0xvY2suaCIKICNpbmNsdWRlICJKU09OQXRv
bVN0cmluZ0NhY2hlLmgiCiAjaW5jbHVkZSAiTWFjcm9Bc3NlbWJsZXJDb2RlUmVmLmgiCiAjaW5j
bHVkZSAiTWljcm90YXNrLmgiCisjaW5jbHVkZSAiTmF0aXZlRnVuY3Rpb24uaCIKICNpbmNsdWRl
ICJOdW1lcmljU3RyaW5ncy5oIgogI2luY2x1ZGUgIlNtYWxsU3RyaW5ncy5oIgogI2luY2x1ZGUg
IlN0cm9uZy5oIgpAQCAtNTgsMTAgKzUzLDggQEAKICNpbmNsdWRlICJUaHVua0dlbmVyYXRvci5o
IgogI2luY2x1ZGUgIlZNVHJhcHMuaCIKICNpbmNsdWRlICJXYXNtQ29udGV4dC5oIgotI2luY2x1
ZGUgIldhdGNocG9pbnQuaCIKICNpbmNsdWRlIDx3dGYvQnVtcFBvaW50ZXJBbGxvY2F0b3IuaD4K
ICNpbmNsdWRlIDx3dGYvQ2hlY2tlZEFyaXRobWV0aWMuaD4KLSNpbmNsdWRlIDx3dGYvRGF0ZU1h
dGguaD4KICNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KICNpbmNsdWRlIDx3dGYvRG91Ymx5TGlua2Vk
TGlzdC5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CkBAIC02OSwxMSArNjIsOSBAQAogI2lu
Y2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRl
IDx3dGYvU2V0Rm9yU2NvcGUuaD4KLSNpbmNsdWRlIDx3dGYvU3RhY2tCb3VuZHMuaD4KICNpbmNs
dWRlIDx3dGYvU3RhY2tQb2ludGVyLmg+CiAjaW5jbHVkZSA8d3RmL1N0b3B3YXRjaC5oPgogI2lu
Y2x1ZGUgPHd0Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5oPgotI2luY2x1ZGUgPHd0Zi9UaHJlYWRT
cGVjaWZpYy5oPgogI2luY2x1ZGUgPHd0Zi9VbmlxdWVBcnJheS5oPgogI2luY2x1ZGUgPHd0Zi90
ZXh0L1N5bWJvbFJlZ2lzdHJ5Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CkBA
IC04MSwxMCArNzIsNiBAQAogI2luY2x1ZGUgPHd0Zi9MaXN0SGFzaFNldC5oPgogI2VuZGlmCiAK
LSNpZiBFTkFCTEUoRVhDRVBUSU9OX1NDT1BFX1ZFUklGSUNBVElPTikKLSNpbmNsdWRlIDx3dGYv
U3RhY2tUcmFjZS5oPgotI2VuZGlmCi0KIC8vIEVuYWJsZSB0aGUgT2JqZWN0aXZlLUMgQVBJIGZv
ciBwbGF0Zm9ybXMgd2l0aCBhIG1vZGVybiBydW50aW1lLiBUaGlzIGhhcyB0byBtYXRjaCBleGFj
dGx5IHdoYXQgd2UKIC8vIGhhdmUgaW4gSlNCYXNlLmguCiAjaWYgIWRlZmluZWQoSlNDX09CSkNf
QVBJX0VOQUJMRUQpCkBAIC05OCwxNiArODUsMTcgQEAKIG5hbWVzcGFjZSBXVEYgewogY2xhc3Mg
UnVuTG9vcDsKIGNsYXNzIFNpbXBsZVN0YXRzOworY2xhc3MgU3RhY2tUcmFjZTsKIH0gLy8gbmFt
ZXNwYWNlIFdURgogdXNpbmcgV1RGOjpTaW1wbGVTdGF0czsKK3VzaW5nIFdURjo6U3RhY2tUcmFj
ZTsKIAogbmFtZXNwYWNlIEpTQyB7CiAKLWNsYXNzIEJhc2ljQmxvY2tMb2NhdGlvbjsKK2NsYXNz
IEFyZ0xpc3Q7CiBjbGFzcyBCdWlsdGluRXhlY3V0YWJsZXM7CiBjbGFzcyBCeXRlY29kZUludHJp
bnNpY1JlZ2lzdHJ5OwogY2xhc3MgQ2FsbEZyYW1lOwotY2xhc3MgQ2FsbExpbmtJbmZvOwogZW51
bSBjbGFzcyBDYWxsTW9kZTsKIHN0cnVjdCBDaGVja3BvaW50T1NSRXhpdFNpZGVTdGF0ZTsKIGNs
YXNzIENvZGVCbG9jazsKQEAgLTExNiwxMDEgKzEwNCw0MSBAQCBjbGFzcyBDb21tb25JZGVudGlm
aWVyczsKIGNsYXNzIENvbXBhY3RURFpFbnZpcm9ubWVudE1hcDsKIGNsYXNzIENvbnNlcnZhdGl2
ZVJvb3RzOwogY2xhc3MgQ29udHJvbEZsb3dQcm9maWxlcjsKLWNsYXNzIEN1c3RvbUdldHRlclNl
dHRlcjsKLWNsYXNzIERPTUF0dHJpYnV0ZUdldHRlclNldHRlcjsKLWNsYXNzIERhdGVJbnN0YW5j
ZTsKLWNsYXNzIEVycm9ySW5zdGFuY2U7CiBjbGFzcyBFeGNlcHRpb247CiBjbGFzcyBFeGNlcHRp
b25TY29wZTsKLWNsYXNzIEZhc3RNYWxsb2NBbGlnbmVkTWVtb3J5QWxsb2NhdG9yOwotY2xhc3Mg
R2lnYWNhZ2VBbGlnbmVkTWVtb3J5QWxsb2NhdG9yOwotY2xhc3MgSGFuZGxlU3RhY2s7CitjbGFz
cyBGdXp6ZXJBZ2VudDsKIGNsYXNzIEhhc093blByb3BlcnR5Q2FjaGU7CiBjbGFzcyBIZWFwQW5h
bHl6ZXI7CiBjbGFzcyBIZWFwUHJvZmlsZXI7Ci1jbGFzcyBJZGVudGlmaWVyOwogY2xhc3MgSW50
ZXJwcmV0ZXI7CiBjbGFzcyBJbnRsQ2FjaGU7Ci1jbGFzcyBJbnRsQ29sbGF0b3I7Ci1jbGFzcyBJ
bnRsRGF0ZVRpbWVGb3JtYXQ7Ci1jbGFzcyBJbnRsRGlzcGxheU5hbWVzOwotY2xhc3MgSW50bExp
c3RGb3JtYXQ7Ci1jbGFzcyBJbnRsTG9jYWxlOwotY2xhc3MgSW50bE51bWJlckZvcm1hdDsKLWNs
YXNzIEludGxQbHVyYWxSdWxlczsKLWNsYXNzIEludGxSZWxhdGl2ZVRpbWVGb3JtYXQ7Ci1jbGFz
cyBJbnRsU2VnbWVudEl0ZXJhdG9yOwotY2xhc3MgSW50bFNlZ21lbnRlcjsKLWNsYXNzIEludGxT
ZWdtZW50czsKLWNsYXNzIEpTQVBJR2xvYmFsT2JqZWN0OwotY2xhc3MgSlNBUElXcmFwcGVyR2xv
YmFsT2JqZWN0OwotY2xhc3MgSlNBUElXcmFwcGVyT2JqZWN0OwotY2xhc3MgSlNDQ2FsbGJhY2tG
dW5jdGlvbjsKLWNsYXNzIEpTQ2FsbGJhY2tDb25zdHJ1Y3RvcjsKIGNsYXNzIEpTRGVzdHJ1Y3Rp
YmxlT2JqZWN0SGVhcENlbGxUeXBlOwogY2xhc3MgSlNHbG9iYWxPYmplY3Q7Ci1jbGFzcyBKU0ds
b2JhbExleGljYWxFbnZpcm9ubWVudDsKLWNsYXNzIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0Owot
Y2xhc3MgSlNNb2R1bGVSZWNvcmQ7Ci1jbGFzcyBKU05hdGl2ZVN0ZEZ1bmN0aW9uOwotY2xhc3Mg
SlNOb25GaW5hbE9iamVjdDsKIGNsYXNzIEpTT2JqZWN0OwogY2xhc3MgSlNQcm9taXNlOwogY2xh
c3MgSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yOwotY2xhc3MgSlNSdW5Mb29wVGltZXI7Ci1jbGFz
cyBKU1dlYWtNYXA7Ci1jbGFzcyBKU1dlYWtTZXQ7Ci1jbGFzcyBKU1dlYkFzc2VtYmx5Q29kZUJs
b2NrOwotY2xhc3MgSlNXZWJBc3NlbWJseUdsb2JhbDsKLWNsYXNzIEpTV2ViQXNzZW1ibHlJbnN0
YW5jZTsKLWNsYXNzIEpTV2ViQXNzZW1ibHlNZW1vcnk7Ci1jbGFzcyBKU1dlYkFzc2VtYmx5TW9k
dWxlOwotY2xhc3MgSlNXZWJBc3NlbWJseVRhYmxlOwogY2xhc3MgSklUU2l6ZVN0YXRpc3RpY3M7
CiBjbGFzcyBKSVRUaHVua3M7Ci1jbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiBjbGFzcyBO
YXRpdmVFeGVjdXRhYmxlOwotY2xhc3MgT2JqQ0NhbGxiYWNrRnVuY3Rpb247CiBjbGFzcyBEZWZl
cnJlZFdvcmtUaW1lcjsKIGNsYXNzIFJlZ0V4cDsKIGNsYXNzIFJlZ0V4cENhY2hlOwogY2xhc3Mg
UmVnaXN0ZXI7Ci1jbGFzcyBSZWdpc3RlckF0T2Zmc2V0TGlzdDsKICNpZiBFTkFCTEUoU0FNUExJ
TkdfUFJPRklMRVIpCiBjbGFzcyBTYW1wbGluZ1Byb2ZpbGVyOwogI2VuZGlmCiBjbGFzcyBTaGFk
b3dDaGlja2VuOwogY2xhc3MgU2hhcmVkSklUU3R1YlNldDsKLWNsYXNzIFNjcmlwdEV4ZWN1dGFi
bGU7CiBjbGFzcyBTb3VyY2VQcm92aWRlcjsKIGNsYXNzIFNvdXJjZVByb3ZpZGVyQ2FjaGU7Ci1j
bGFzcyBTdGFja0ZyYW1lOwogY2xhc3MgU3RydWN0dXJlOwotI2lmIEVOQUJMRShSRUdFWFBfVFJB
Q0lORykKLWNsYXNzIFJlZ0V4cDsKLSNlbmRpZgogY2xhc3MgU3ltYm9sOwotY2xhc3MgVGVtcG9y
YWxEdXJhdGlvbjsKLWNsYXNzIFRlbXBvcmFsSW5zdGFudDsKIGNsYXNzIFR5cGVkQXJyYXlDb250
cm9sbGVyOwotY2xhc3MgVW5saW5rZWRDb2RlQmxvY2s7Ci1jbGFzcyBVbmxpbmtlZEV2YWxDb2Rl
QmxvY2s7Ci1jbGFzcyBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTsKLWNsYXNzIFVubGlua2Vk
UHJvZ3JhbUNvZGVCbG9jazsKLWNsYXNzIFVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jazsK
LWNsYXNzIFZpcnR1YWxSZWdpc3RlcjsKIGNsYXNzIFZNRW50cnlTY29wZTsKLWNsYXNzIFRlbXBv
cmFsQ2FsZW5kYXI7Ci1jbGFzcyBUZW1wb3JhbFBsYWluVGltZTsKLWNsYXNzIFRlbXBvcmFsVGlt
ZVpvbmU7Ci1jbGFzcyBUb3BMZXZlbEdsb2JhbE9iamVjdFNjb3BlOwogY2xhc3MgVHlwZVByb2Zp
bGVyOwogY2xhc3MgVHlwZVByb2ZpbGVyTG9nOwogY2xhc3MgV2F0Y2hkb2c7Ci1jbGFzcyBXYXRj
aHBvaW50OwogY2xhc3MgV2F0Y2hwb2ludFNldDsKLWNsYXNzIFdlYkFzc2VtYmx5RnVuY3Rpb247
Ci1jbGFzcyBXZWJBc3NlbWJseU1vZHVsZVJlY29yZDsKIAogI2lmIEVOQUJMRShERkdfSklUKSAm
JiBBU1NFUlRfRU5BQkxFRAogI2RlZmluZSBFTkFCTEVfREZHX0RPRVNfR0NfVkFMSURBVElPTiAx
CkBAIC0yMjAsMTAgKzE0OCw2IEBAIGNsYXNzIFdlYkFzc2VtYmx5TW9kdWxlUmVjb3JkOwogCiBj
b25zdGV4cHIgYm9vbCB2YWxpZGF0ZURGR0RvZXNHQyA9IEVOQUJMRV9ERkdfRE9FU19HQ19WQUxJ
REFUSU9OOwogCi1jbGFzcyBJc29IZWFwQ2VsbFR5cGU7Ci10ZW1wbGF0ZTx0eXBlbmFtZSBDZWxs
VHlwZT4gY2xhc3MgSXNvSW5saW5lZEhlYXBDZWxsVHlwZTsKLXRlbXBsYXRlPHR5cGVuYW1lIFBh
cmVudD4gY2xhc3MgSlNDYWxsYmFja09iamVjdDsKLQogI2lmIEVOQUJMRShGVExfSklUKQogbmFt
ZXNwYWNlIEZUTCB7CiBjbGFzcyBUaHVua3M7CkBAIC0yMzUsMTQgKzE1OSw5IEBAIGNsYXNzIERh
dGFiYXNlOwogbmFtZXNwYWNlIERPTUpJVCB7CiBjbGFzcyBTaWduYXR1cmU7CiB9Ci1uYW1lc3Bh
Y2UgWWFyciB7Ci1jbGFzcyBNYXRjaGluZ0NvbnRleHRIb2xkZXI7Ci19CiAKIHN0cnVjdCBFbnRy
eUZyYW1lOwotc3RydWN0IEhhc2hUYWJsZTsKIHN0cnVjdCBJbnN0cnVjdGlvbjsKLXN0cnVjdCBW
YWx1ZVByb2ZpbGU7CiAKIGNsYXNzIFF1ZXVlZFRhc2sgewogICAgIFdURl9NQUtFX05PTkNPUFlB
QkxFKFF1ZXVlZFRhc2spOwpAQCAtMjYxLDggKzE4MCw2IEBAIHByaXZhdGU6CiAgICAgUmVmPE1p
Y3JvdGFzaz4gbV9taWNyb3Rhc2s7CiB9OwogCi1jbGFzcyBDb25zZXJ2YXRpdmVSb290czsKLQog
REVDTEFSRV9BTExPQ0FUT1JfV0lUSF9IRUFQX0lERU5USUZJRVIoVk0pOwogCiAjaWYgQ09NUElM
RVIoTVNWQykKQEAgLTM1NywxMSArMjc0LDcgQEAgcHVibGljOgogI2VuZGlmCiAKICAgICBGdXp6
ZXJBZ2VudCogZnV6emVyQWdlbnQoKSBjb25zdCB7IHJldHVybiBtX2Z1enplckFnZW50LmdldCgp
OyB9Ci0gICAgdm9pZCBzZXRGdXp6ZXJBZ2VudChzdGQ6OnVuaXF1ZV9wdHI8RnV6emVyQWdlbnQ+
JiYgZnV6emVyQWdlbnQpCi0gICAgewotICAgICAgICBSRUxFQVNFX0FTU0VSVF9XSVRIX01FU1NB
R0UoIW1fZnV6emVyQWdlbnQsICJPbmx5IG9uZSBGdXp6ZXJBZ2VudCBjYW4gYmUgc3BlY2lmaWVk
IGF0IGEgdGltZS4iKTsKLSAgICAgICAgbV9mdXp6ZXJBZ2VudCA9IFdURk1vdmUoZnV6emVyQWdl
bnQpOwotICAgIH0KKyAgICB2b2lkIHNldEZ1enplckFnZW50KHN0ZDo6dW5pcXVlX3B0cjxGdXp6
ZXJBZ2VudD4mJiBmdXp6ZXJBZ2VudCk7CiAKICAgICBzdGF0aWMgdW5zaWduZWQgbnVtYmVyT2ZJ
RHMoKSB7IHJldHVybiBzX251bWJlck9mSURzLmxvYWQoKTsgfQogICAgIHVuc2lnbmVkIGlkKCkg
Y29uc3QgeyByZXR1cm4gbV9pZDsgfQpAQCAtNDEzLDE0NSArMzI2LDU4IEBAIHByaXZhdGU6CiAK
IHB1YmxpYzoKICAgICBIZWFwIGhlYXA7Ci0gICAgCi0gICAgc3RkOjp1bmlxdWVfcHRyPEZhc3RN
YWxsb2NBbGlnbmVkTWVtb3J5QWxsb2NhdG9yPiBmYXN0TWFsbG9jQWxsb2NhdG9yOwotICAgIHN0
ZDo6dW5pcXVlX3B0cjxHaWdhY2FnZUFsaWduZWRNZW1vcnlBbGxvY2F0b3I+IHByaW1pdGl2ZUdp
Z2FjYWdlQWxsb2NhdG9yOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxHaWdhY2FnZUFsaWduZWRNZW1v
cnlBbGxvY2F0b3I+IGpzVmFsdWVHaWdhY2FnZUFsbG9jYXRvcjsKLQotICAgIHN0ZDo6dW5pcXVl
X3B0cjxIZWFwQ2VsbFR5cGU+IGF1eGlsaWFyeUhlYXBDZWxsVHlwZTsKLSAgICBzdGQ6OnVuaXF1
ZV9wdHI8SGVhcENlbGxUeXBlPiBpbW11dGFibGVCdXR0ZXJmbHlIZWFwQ2VsbFR5cGU7Ci0gICAg
c3RkOjp1bmlxdWVfcHRyPEhlYXBDZWxsVHlwZT4gY2VsbEhlYXBDZWxsVHlwZTsKLSAgICBzdGQ6
OnVuaXF1ZV9wdHI8SGVhcENlbGxUeXBlPiBkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlOwot
ICAgIHN0ZDo6dW5pcXVlX3B0cjxJc29IZWFwQ2VsbFR5cGU+IGFwaUdsb2JhbE9iamVjdEhlYXBD
ZWxsVHlwZTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SXNvSGVhcENlbGxUeXBlPiBjYWxsYmFja0Nv
bnN0cnVjdG9ySGVhcENlbGxUeXBlOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxJc29IZWFwQ2VsbFR5
cGU+IGNhbGxiYWNrR2xvYmFsT2JqZWN0SGVhcENlbGxUeXBlOwotICAgIHN0ZDo6dW5pcXVlX3B0
cjxJc29IZWFwQ2VsbFR5cGU+IGNhbGxiYWNrT2JqZWN0SGVhcENlbGxUeXBlOwotICAgIHN0ZDo6
dW5pcXVlX3B0cjxJc29IZWFwQ2VsbFR5cGU+IGN1c3RvbUdldHRlckZ1bmN0aW9uSGVhcENlbGxU
eXBlOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxJc29IZWFwQ2VsbFR5cGU+IGN1c3RvbVNldHRlckZ1
bmN0aW9uSGVhcENlbGxUeXBlOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxJc29IZWFwQ2VsbFR5cGU+
IGRhdGVJbnN0YW5jZUhlYXBDZWxsVHlwZTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SXNvSGVhcENl
bGxUeXBlPiBlcnJvckluc3RhbmNlSGVhcENlbGxUeXBlOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxJ
c29IZWFwQ2VsbFR5cGU+IGZpbmFsaXphdGlvblJlZ2lzdHJ5Q2VsbFR5cGU7Ci0gICAgc3RkOjp1
bmlxdWVfcHRyPElzb0hlYXBDZWxsVHlwZT4gZ2xvYmFsTGV4aWNhbEVudmlyb25tZW50SGVhcENl
bGxUeXBlOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxJc29IZWFwQ2VsbFR5cGU+IGdsb2JhbE9iamVj
dEhlYXBDZWxsVHlwZTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SXNvSGVhcENlbGxUeXBlPiBpbmpl
Y3RlZFNjcmlwdEhvc3RTcGFjZUhlYXBDZWxsVHlwZTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SXNv
SGVhcENlbGxUeXBlPiBqYXZhU2NyaXB0Q2FsbEZyYW1lSGVhcENlbGxUeXBlOwotICAgIHN0ZDo6
dW5pcXVlX3B0cjxJc29IZWFwQ2VsbFR5cGU+IGpzTW9kdWxlUmVjb3JkSGVhcENlbGxUeXBlOwot
ICAgIHN0ZDo6dW5pcXVlX3B0cjxJc29IZWFwQ2VsbFR5cGU+IG1vZHVsZU5hbWVzcGFjZU9iamVj
dEhlYXBDZWxsVHlwZTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SXNvSGVhcENlbGxUeXBlPiBuYXRp
dmVTdGRGdW5jdGlvbkhlYXBDZWxsVHlwZTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SXNvSW5saW5l
ZEhlYXBDZWxsVHlwZTxKU1N0cmluZz4+IHN0cmluZ0hlYXBDZWxsVHlwZTsKLSAgICBzdGQ6OnVu
aXF1ZV9wdHI8SXNvSGVhcENlbGxUeXBlPiB3ZWFrTWFwSGVhcENlbGxUeXBlOwotICAgIHN0ZDo6
dW5pcXVlX3B0cjxJc29IZWFwQ2VsbFR5cGU+IHdlYWtTZXRIZWFwQ2VsbFR5cGU7Ci0gICAgc3Rk
Ojp1bmlxdWVfcHRyPEpTRGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlPiBkZXN0cnVjdGli
bGVPYmplY3RIZWFwQ2VsbFR5cGU7Ci0jaWYgSlNDX09CSkNfQVBJX0VOQUJMRUQKLSAgICBzdGQ6
OnVuaXF1ZV9wdHI8SXNvSGVhcENlbGxUeXBlPiBhcGlXcmFwcGVyT2JqZWN0SGVhcENlbGxUeXBl
OwotICAgIHN0ZDo6dW5pcXVlX3B0cjxJc29IZWFwQ2VsbFR5cGU+IG9iakNDYWxsYmFja0Z1bmN0
aW9uSGVhcENlbGxUeXBlOwotI2VuZGlmCi0jaWZkZWYgSlNDX0dMSUJfQVBJX0VOQUJMRUQKLSAg
ICBzdGQ6OnVuaXF1ZV9wdHI8SXNvSGVhcENlbGxUeXBlPiBhcGlXcmFwcGVyT2JqZWN0SGVhcENl
bGxUeXBlOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxJc29IZWFwQ2VsbFR5cGU+IGNhbGxiYWNrQVBJ
V3JhcHBlckdsb2JhbE9iamVjdEhlYXBDZWxsVHlwZTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SXNv
SGVhcENlbGxUeXBlPiBqc2NDYWxsYmFja0Z1bmN0aW9uSGVhcENlbGxUeXBlOwotI2VuZGlmCi0g
ICAgc3RkOjp1bmlxdWVfcHRyPElzb0hlYXBDZWxsVHlwZT4gaW50bENvbGxhdG9ySGVhcENlbGxU
eXBlOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxJc29IZWFwQ2VsbFR5cGU+IGludGxEYXRlVGltZUZv
cm1hdEhlYXBDZWxsVHlwZTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SXNvSGVhcENlbGxUeXBlPiBp
bnRsRGlzcGxheU5hbWVzSGVhcENlbGxUeXBlOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxJc29IZWFw
Q2VsbFR5cGU+IGludGxMaXN0Rm9ybWF0SGVhcENlbGxUeXBlOwotICAgIHN0ZDo6dW5pcXVlX3B0
cjxJc29IZWFwQ2VsbFR5cGU+IGludGxMb2NhbGVIZWFwQ2VsbFR5cGU7Ci0gICAgc3RkOjp1bmlx
dWVfcHRyPElzb0hlYXBDZWxsVHlwZT4gaW50bE51bWJlckZvcm1hdEhlYXBDZWxsVHlwZTsKLSAg
ICBzdGQ6OnVuaXF1ZV9wdHI8SXNvSGVhcENlbGxUeXBlPiBpbnRsUGx1cmFsUnVsZXNIZWFwQ2Vs
bFR5cGU7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPElzb0hlYXBDZWxsVHlwZT4gaW50bFJlbGF0aXZl
VGltZUZvcm1hdEhlYXBDZWxsVHlwZTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SXNvSGVhcENlbGxU
eXBlPiBpbnRsU2VnbWVudEl0ZXJhdG9ySGVhcENlbGxUeXBlOwotICAgIHN0ZDo6dW5pcXVlX3B0
cjxJc29IZWFwQ2VsbFR5cGU+IGludGxTZWdtZW50ZXJIZWFwQ2VsbFR5cGU7Ci0gICAgc3RkOjp1
bmlxdWVfcHRyPElzb0hlYXBDZWxsVHlwZT4gaW50bFNlZ21lbnRzSGVhcENlbGxUeXBlOwotI2lm
IEVOQUJMRShXRUJBU1NFTUJMWSkKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SXNvSGVhcENlbGxUeXBl
PiB3ZWJBc3NlbWJseUNvZGVCbG9ja0hlYXBDZWxsVHlwZTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8
SXNvSGVhcENlbGxUeXBlPiB3ZWJBc3NlbWJseUV4Y2VwdGlvbkhlYXBDZWxsVHlwZTsKLSAgICBz
dGQ6OnVuaXF1ZV9wdHI8SXNvSGVhcENlbGxUeXBlPiB3ZWJBc3NlbWJseUZ1bmN0aW9uSGVhcENl
bGxUeXBlOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxJc29IZWFwQ2VsbFR5cGU+IHdlYkFzc2VtYmx5
R2xvYmFsSGVhcENlbGxUeXBlOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxJc29IZWFwQ2VsbFR5cGU+
IHdlYkFzc2VtYmx5SW5zdGFuY2VIZWFwQ2VsbFR5cGU7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPElz
b0hlYXBDZWxsVHlwZT4gd2ViQXNzZW1ibHlNZW1vcnlIZWFwQ2VsbFR5cGU7Ci0gICAgc3RkOjp1
bmlxdWVfcHRyPElzb0hlYXBDZWxsVHlwZT4gd2ViQXNzZW1ibHlNb2R1bGVIZWFwQ2VsbFR5cGU7
Ci0gICAgc3RkOjp1bmlxdWVfcHRyPElzb0hlYXBDZWxsVHlwZT4gd2ViQXNzZW1ibHlNb2R1bGVS
ZWNvcmRIZWFwQ2VsbFR5cGU7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPElzb0hlYXBDZWxsVHlwZT4g
d2ViQXNzZW1ibHlUYWJsZUhlYXBDZWxsVHlwZTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SXNvSGVh
cENlbGxUeXBlPiB3ZWJBc3NlbWJseVRhZ0hlYXBDZWxsVHlwZTsKLSNlbmRpZgorCisgICAgY29u
c3QgSGVhcENlbGxUeXBlJiBjZWxsSGVhcENlbGxUeXBlKCkgeyByZXR1cm4gaGVhcC5jZWxsSGVh
cENlbGxUeXBlOyB9CisgICAgY29uc3QgSlNEZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUm
IGRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpIHsgcmV0dXJuIGhlYXAuZGVzdHJ1Y3Rp
YmxlT2JqZWN0SGVhcENlbGxUeXBlOyB9OwogCiAjaWYgRU5BQkxFKEpJVCkKICAgICBzdGQ6OnVu
aXF1ZV9wdHI8SklUU2l6ZVN0YXRpc3RpY3M+IGppdFNpemVTdGF0aXN0aWNzOwogI2VuZGlmCiAg
ICAgCi0gICAgQ29tcGxldGVTdWJzcGFjZSBwcmltaXRpdmVHaWdhY2FnZUF1eGlsaWFyeVNwYWNl
OyAvLyBUeXBlZCBhcnJheXMsIHN0cmluZ3MsIGJpdHZlY3RvcnMsIGV0YyBnbyBoZXJlLgotICAg
IENvbXBsZXRlU3Vic3BhY2UganNWYWx1ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2U7IC8vIEJ1dHRl
cmZsaWVzLCBhcnJheXMgb2YgSlNWYWx1ZXMsIGV0YyBnbyBoZXJlLgotICAgIENvbXBsZXRlU3Vi
c3BhY2UgaW1tdXRhYmxlQnV0dGVyZmx5SlNWYWx1ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2U7IC8v
IEpTSW1tdXRhYmxlQnV0dGVyZmx5IGdvZXMgaGVyZS4KLQotICAgIC8vIFdlIG1ha2UgY3Jvc3Mt
Y3V0dGluZyBhc3N1bXB0aW9ucyBhYm91dCB0eXBlZCBhcnJheXMgYmVpbmcgaW4gdGhlIHByaW1p
dGl2ZSBHaWdhY2FnZSBhbmQgYnV0dGVyZmxpZXMKLSAgICAvLyBiZWluZyBpbiB0aGUgSlNWYWx1
ZSBnaWdhY2FnZS4gRm9yIHNvbWUgdHlwZXMsIGl0J3Mgc3VwZXIgb2J2aW91cyB3aGVyZSB0aGV5
IHNob3VsZCBnbywgYW5kIHNvIHdlCi0gICAgLy8gY2FuIGhhcmRjb2RlIHRoYXQgZmFjdC4gQnV0
IHNvbWV0aW1lcyBpdCdzIG5vdCBjbGVhciwgc28gd2UgYWJzdHJhY3QgaXQgYnkgaGF2aW5nIGEg
R2lnYWNhZ2U6OktpbmQKLSAgICAvLyBjb25zdGFudCBzb21ld2hlcmUuCi0gICAgLy8gRklYTUU6
IE1heWJlIGl0IHdvdWxkIGJlIGJldHRlciBpZiBldmVyeW9uZSBhYnN0cmFjdGVkIHRoaXM/Ci0g
ICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NTI0OAotICAg
IEFMV0FZU19JTkxJTkUgQ29tcGxldGVTdWJzcGFjZSYgZ2lnYWNhZ2VBdXhpbGlhcnlTcGFjZShH
aWdhY2FnZTo6S2luZCBraW5kKQotICAgIHsKLSAgICAgICAgc3dpdGNoIChraW5kKSB7Ci0gICAg
ICAgIGNhc2UgR2lnYWNhZ2U6OlByaW1pdGl2ZToKLSAgICAgICAgICAgIHJldHVybiBwcmltaXRp
dmVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlOwotICAgICAgICBjYXNlIEdpZ2FjYWdlOjpKU1ZhbHVl
OgotICAgICAgICAgICAgcmV0dXJuIGpzVmFsdWVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlOwotICAg
ICAgICBjYXNlIEdpZ2FjYWdlOjpOdW1iZXJPZktpbmRzOgotICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgIH0KLSAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAg
cmV0dXJuIHByaW1pdGl2ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2U7Ci0gICAgfQotICAgIAotICAg
IC8vIFdoZW5ldmVyIHBvc3NpYmxlLCB1c2Ugc3Vic3BhY2VGb3I8Q2VsbFR5cGU+KHZtKSB0byBn
ZXQgb25lIG9mIHRoZXNlIHN1YnNwYWNlcy4KLSAgICBDb21wbGV0ZVN1YnNwYWNlIGNlbGxTcGFj
ZTsKLSAgICBDb21wbGV0ZVN1YnNwYWNlIHZhcmlhYmxlU2l6ZWRDZWxsU3BhY2U7IC8vIEZJWE1F
OiBUaGlzIHNwYWNlIGlzIHByb2JsZW1hdGljIGJlY2F1c2Ugd2UgaGF2ZSB0aGluZ3MgaW4gaGVy
ZSBsaWtlIERpcmVjdEFyZ3VtZW50cyBhbmQgU2NvcGVkQXJndW1lbnRzOyB0aG9zZSBzaG91bGQg
YmUgc3BsaXQgaW50byBKU1ZhbHVlT09CIGNlbGxzIGFuZCBKU1ZhbHVlU3RyaWN0IGF1eGlsaWFy
aWVzLiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgyODU4Ci0gICAg
Q29tcGxldGVTdWJzcGFjZSBkZXN0cnVjdGlibGVPYmplY3RTcGFjZTsKLSAgICAKLSAgICBJc29T
dWJzcGFjZSBhcnJheVNwYWNlOwotICAgIElzb1N1YnNwYWNlIGJpZ0ludFNwYWNlOwotICAgIElz
b1N1YnNwYWNlIGNhbGxlZVNwYWNlOwotICAgIElzb1N1YnNwYWNlIGNsb25lZEFyZ3VtZW50c1Nw
YWNlOwotICAgIElzb1N1YnNwYWNlIGN1c3RvbUdldHRlclNldHRlclNwYWNlOwotICAgIElzb1N1
YnNwYWNlIGRhdGVJbnN0YW5jZVNwYWNlOwotICAgIElzb1N1YnNwYWNlIGRvbUF0dHJpYnV0ZUdl
dHRlclNldHRlclNwYWNlOwotICAgIElzb1N1YnNwYWNlIGV4Y2VwdGlvblNwYWNlOwotICAgIElz
b1N1YnNwYWNlIGV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2VTcGFjZTsKLSAgICBJc29TdWJzcGFj
ZSBmdW5jdGlvblNwYWNlOwotICAgIElzb1N1YnNwYWNlIGdldHRlclNldHRlclNwYWNlOwotICAg
IElzb1N1YnNwYWNlIGdsb2JhbExleGljYWxFbnZpcm9ubWVudFNwYWNlOwotICAgIElzb1N1YnNw
YWNlIGludGVybmFsRnVuY3Rpb25TcGFjZTsKLSAgICBJc29TdWJzcGFjZSBqc1Byb3h5U3BhY2U7
Ci0gICAgSXNvU3Vic3BhY2UgbmF0aXZlRXhlY3V0YWJsZVNwYWNlOwotICAgIElzb1N1YnNwYWNl
IG51bWJlck9iamVjdFNwYWNlOwotICAgIElzb1N1YnNwYWNlIHBsYWluT2JqZWN0U3BhY2U7Ci0g
ICAgSXNvU3Vic3BhY2UgcHJvbWlzZVNwYWNlOwotICAgIElzb1N1YnNwYWNlIHByb3BlcnR5TmFt
ZUVudW1lcmF0b3JTcGFjZTsKLSAgICBJc29TdWJzcGFjZSBwcm9wZXJ0eVRhYmxlU3BhY2U7Ci0g
ICAgSXNvU3Vic3BhY2UgcmVnRXhwU3BhY2U7Ci0gICAgSXNvU3Vic3BhY2UgcmVnRXhwT2JqZWN0
U3BhY2U7Ci0gICAgSXNvU3Vic3BhY2Ugcm9wZVN0cmluZ1NwYWNlOwotICAgIElzb1N1YnNwYWNl
IHNjb3BlZEFyZ3VtZW50c1NwYWNlOwotICAgIElzb1N1YnNwYWNlIHNwYXJzZUFycmF5VmFsdWVN
YXBTcGFjZTsKLSAgICBJc29TdWJzcGFjZSBzdHJpbmdTcGFjZTsKLSAgICBJc29TdWJzcGFjZSBz
dHJpbmdPYmplY3RTcGFjZTsKLSAgICBJc29TdWJzcGFjZSBzdHJ1Y3R1cmVDaGFpblNwYWNlOwot
ICAgIElzb1N1YnNwYWNlIHN0cnVjdHVyZVJhcmVEYXRhU3BhY2U7Ci0gICAgSXNvU3Vic3BhY2Ug
c3RydWN0dXJlU3BhY2U7Ci0gICAgSXNvU3Vic3BhY2UgYnJhbmRlZFN0cnVjdHVyZVNwYWNlOwot
ICAgIElzb1N1YnNwYWNlIHN5bWJvbFRhYmxlU3BhY2U7CisgICAgQUxXQVlTX0lOTElORSBDb21w
bGV0ZVN1YnNwYWNlJiBwcmltaXRpdmVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlKCkgeyByZXR1cm4g
aGVhcC5wcmltaXRpdmVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlOyB9CisgICAgQUxXQVlTX0lOTElO
RSBDb21wbGV0ZVN1YnNwYWNlJiBqc1ZhbHVlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZSgpIHsgcmV0
dXJuIGhlYXAuanNWYWx1ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2U7IH0KKyAgICBBTFdBWVNfSU5M
SU5FIENvbXBsZXRlU3Vic3BhY2UmIGltbXV0YWJsZUJ1dHRlcmZseUpTVmFsdWVHaWdhY2FnZUF1
eGlsaWFyeVNwYWNlKCkgeyByZXR1cm4gaGVhcC5pbW11dGFibGVCdXR0ZXJmbHlKU1ZhbHVlR2ln
YWNhZ2VBdXhpbGlhcnlTcGFjZTsgfQorICAgIEFMV0FZU19JTkxJTkUgQ29tcGxldGVTdWJzcGFj
ZSYgZ2lnYWNhZ2VBdXhpbGlhcnlTcGFjZShHaWdhY2FnZTo6S2luZCBraW5kKSB7IHJldHVybiBo
ZWFwLmdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2Uoa2luZCk7IH0KKyAgICBBTFdBWVNfSU5MSU5FIENv
bXBsZXRlU3Vic3BhY2UmIGNlbGxTcGFjZSgpIHsgcmV0dXJuIGhlYXAuY2VsbFNwYWNlOyB9Cisg
ICAgQUxXQVlTX0lOTElORSBDb21wbGV0ZVN1YnNwYWNlJiB2YXJpYWJsZVNpemVkQ2VsbFNwYWNl
KCkgeyByZXR1cm4gaGVhcC52YXJpYWJsZVNpemVkQ2VsbFNwYWNlOyB9CisgICAgQUxXQVlTX0lO
TElORSBDb21wbGV0ZVN1YnNwYWNlJiBkZXN0cnVjdGlibGVPYmplY3RTcGFjZSgpIHsgcmV0dXJu
IGhlYXAuZGVzdHJ1Y3RpYmxlT2JqZWN0U3BhY2U7IH0KKworICAgIEFMV0FZU19JTkxJTkUgSXNv
U3Vic3BhY2UmIGFycmF5U3BhY2UoKSB7IHJldHVybiBoZWFwLmFycmF5U3BhY2U7IH0KKyAgICBB
TFdBWVNfSU5MSU5FIElzb1N1YnNwYWNlJiBiaWdJbnRTcGFjZSgpIHsgcmV0dXJuIGhlYXAuYmln
SW50U3BhY2U7IH0KKyAgICBBTFdBWVNfSU5MSU5FIElzb1N1YnNwYWNlJiBjYWxsZWVTcGFjZSgp
IHsgcmV0dXJuIGhlYXAuY2FsbGVlU3BhY2U7IH0KKyAgICBBTFdBWVNfSU5MSU5FIElzb1N1YnNw
YWNlJiBjbG9uZWRBcmd1bWVudHNTcGFjZSgpIHsgcmV0dXJuIGhlYXAuY2xvbmVkQXJndW1lbnRz
U3BhY2U7IH0KKyAgICBBTFdBWVNfSU5MSU5FIElzb1N1YnNwYWNlJiBjdXN0b21HZXR0ZXJTZXR0
ZXJTcGFjZSgpIHsgcmV0dXJuIGhlYXAuY3VzdG9tR2V0dGVyU2V0dGVyU3BhY2U7IH0KKyAgICBB
TFdBWVNfSU5MSU5FIElzb1N1YnNwYWNlJiBkYXRlSW5zdGFuY2VTcGFjZSgpIHsgcmV0dXJuIGhl
YXAuZGF0ZUluc3RhbmNlU3BhY2U7IH0KKyAgICBBTFdBWVNfSU5MSU5FIElzb1N1YnNwYWNlJiBk
b21BdHRyaWJ1dGVHZXR0ZXJTZXR0ZXJTcGFjZSgpIHsgcmV0dXJuIGhlYXAuZG9tQXR0cmlidXRl
R2V0dGVyU2V0dGVyU3BhY2U7IH0KKyAgICBBTFdBWVNfSU5MSU5FIElzb1N1YnNwYWNlJiBleGNl
cHRpb25TcGFjZSgpIHsgcmV0dXJuIGhlYXAuZXhjZXB0aW9uU3BhY2U7IH0KKyAgICBBTFdBWVNf
SU5MSU5FIElzb1N1YnNwYWNlJiBleGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlU3BhY2UoKSB7IHJl
dHVybiBoZWFwLmV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2VTcGFjZTsgfQorICAgIEFMV0FZU19J
TkxJTkUgSXNvU3Vic3BhY2UmIGZ1bmN0aW9uU3BhY2UoKSB7IHJldHVybiBoZWFwLmZ1bmN0aW9u
U3BhY2U7IH0KKyAgICBBTFdBWVNfSU5MSU5FIElzb1N1YnNwYWNlJiBnZXR0ZXJTZXR0ZXJTcGFj
ZSgpIHsgcmV0dXJuIGhlYXAuZ2V0dGVyU2V0dGVyU3BhY2U7IH0KKyAgICBBTFdBWVNfSU5MSU5F
IElzb1N1YnNwYWNlJiBnbG9iYWxMZXhpY2FsRW52aXJvbm1lbnRTcGFjZSgpIHsgcmV0dXJuIGhl
YXAuZ2xvYmFsTGV4aWNhbEVudmlyb25tZW50U3BhY2U7IH0KKyAgICBBTFdBWVNfSU5MSU5FIElz
b1N1YnNwYWNlJiBpbnRlcm5hbEZ1bmN0aW9uU3BhY2UoKSB7IHJldHVybiBoZWFwLmludGVybmFs
RnVuY3Rpb25TcGFjZTsgfQorICAgIEFMV0FZU19JTkxJTkUgSXNvU3Vic3BhY2UmIGpzUHJveHlT
cGFjZSgpIHsgcmV0dXJuIGhlYXAuanNQcm94eVNwYWNlOyB9CisgICAgQUxXQVlTX0lOTElORSBJ
c29TdWJzcGFjZSYgbmF0aXZlRXhlY3V0YWJsZVNwYWNlKCkgeyByZXR1cm4gaGVhcC5uYXRpdmVF
eGVjdXRhYmxlU3BhY2U7IH0KKyAgICBBTFdBWVNfSU5MSU5FIElzb1N1YnNwYWNlJiBudW1iZXJP
YmplY3RTcGFjZSgpIHsgcmV0dXJuIGhlYXAubnVtYmVyT2JqZWN0U3BhY2U7IH0KKyAgICBBTFdB
WVNfSU5MSU5FIElzb1N1YnNwYWNlJiBwbGFpbk9iamVjdFNwYWNlKCkgeyByZXR1cm4gaGVhcC5w
bGFpbk9iamVjdFNwYWNlOyB9CisgICAgQUxXQVlTX0lOTElORSBJc29TdWJzcGFjZSYgcHJvbWlz
ZVNwYWNlKCkgeyByZXR1cm4gaGVhcC5wcm9taXNlU3BhY2U7IH0KKyAgICBBTFdBWVNfSU5MSU5F
IElzb1N1YnNwYWNlJiBwcm9wZXJ0eU5hbWVFbnVtZXJhdG9yU3BhY2UoKSB7IHJldHVybiBoZWFw
LnByb3BlcnR5TmFtZUVudW1lcmF0b3JTcGFjZTsgfQorICAgIEFMV0FZU19JTkxJTkUgSXNvU3Vi
c3BhY2UmIHByb3BlcnR5VGFibGVTcGFjZSgpIHsgcmV0dXJuIGhlYXAucHJvcGVydHlUYWJsZVNw
YWNlOyB9CisgICAgQUxXQVlTX0lOTElORSBJc29TdWJzcGFjZSYgcmVnRXhwU3BhY2UoKSB7IHJl
dHVybiBoZWFwLnJlZ0V4cFNwYWNlOyB9CisgICAgQUxXQVlTX0lOTElORSBJc29TdWJzcGFjZSYg
cmVnRXhwT2JqZWN0U3BhY2UoKSB7IHJldHVybiBoZWFwLnJlZ0V4cE9iamVjdFNwYWNlOyB9Cisg
ICAgQUxXQVlTX0lOTElORSBJc29TdWJzcGFjZSYgcm9wZVN0cmluZ1NwYWNlKCkgeyByZXR1cm4g
aGVhcC5yb3BlU3RyaW5nU3BhY2U7IH0KKyAgICBBTFdBWVNfSU5MSU5FIElzb1N1YnNwYWNlJiBz
Y29wZWRBcmd1bWVudHNTcGFjZSgpIHsgcmV0dXJuIGhlYXAuc2NvcGVkQXJndW1lbnRzU3BhY2U7
IH0KKyAgICBBTFdBWVNfSU5MSU5FIElzb1N1YnNwYWNlJiBzcGFyc2VBcnJheVZhbHVlTWFwU3Bh
Y2UoKSB7IHJldHVybiBoZWFwLnNwYXJzZUFycmF5VmFsdWVNYXBTcGFjZTsgfQorICAgIEFMV0FZ
U19JTkxJTkUgSXNvU3Vic3BhY2UmIHN0cmluZ1NwYWNlKCkgeyByZXR1cm4gaGVhcC5zdHJpbmdT
cGFjZTsgfQorICAgIEFMV0FZU19JTkxJTkUgSXNvU3Vic3BhY2UmIHN0cmluZ09iamVjdFNwYWNl
KCkgeyByZXR1cm4gaGVhcC5zdHJpbmdPYmplY3RTcGFjZTsgfQorICAgIEFMV0FZU19JTkxJTkUg
SXNvU3Vic3BhY2UmIHN0cnVjdHVyZUNoYWluU3BhY2UoKSB7IHJldHVybiBoZWFwLnN0cnVjdHVy
ZUNoYWluU3BhY2U7IH0KKyAgICBBTFdBWVNfSU5MSU5FIElzb1N1YnNwYWNlJiBzdHJ1Y3R1cmVS
YXJlRGF0YVNwYWNlKCkgeyByZXR1cm4gaGVhcC5zdHJ1Y3R1cmVSYXJlRGF0YVNwYWNlOyB9Cisg
ICAgQUxXQVlTX0lOTElORSBJc29TdWJzcGFjZSYgc3RydWN0dXJlU3BhY2UoKSB7IHJldHVybiBo
ZWFwLnN0cnVjdHVyZVNwYWNlOyB9CisgICAgQUxXQVlTX0lOTElORSBJc29TdWJzcGFjZSYgYnJh
bmRlZFN0cnVjdHVyZVNwYWNlKCkgeyByZXR1cm4gaGVhcC5icmFuZGVkU3RydWN0dXJlU3BhY2U7
IH0KKyAgICBBTFdBWVNfSU5MSU5FIElzb1N1YnNwYWNlJiBzeW1ib2xUYWJsZVNwYWNlKCkgeyBy
ZXR1cm4gaGVhcC5zeW1ib2xUYWJsZVNwYWNlOyB9CiAKICNkZWZpbmUgRFlOQU1JQ19JU09fU1VC
U1BBQ0VfREVGSU5FX01FTUJFUihuYW1lKSBcCiAgICAgdGVtcGxhdGU8U3Vic3BhY2VBY2Nlc3Mg
bW9kZT4gXAotICAgIElzb1N1YnNwYWNlKiBuYW1lKCkgXAotICAgIHsgXAotICAgICAgICBpZiAo
bV8jI25hbWUgfHwgbW9kZSA9PSBTdWJzcGFjZUFjY2Vzczo6Q29uY3VycmVudGx5KSBcCi0gICAg
ICAgICAgICByZXR1cm4gbV8jI25hbWUuZ2V0KCk7IFwKLSAgICAgICAgcmV0dXJuIG5hbWUjI1Ns
b3coKTsgXAotICAgIH0gXAotICAgIEpTX0VYUE9SVF9QUklWQVRFIElzb1N1YnNwYWNlKiBuYW1l
IyNTbG93KCk7IFwKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SXNvU3Vic3BhY2U+IG1fIyNuYW1lOwot
CisgICAgQUxXQVlTX0lOTElORSBJc29TdWJzcGFjZSogbmFtZSgpIHsgcmV0dXJuIGhlYXAubmFt
ZTxtb2RlPigpOyB9CiAKICNpZiBKU0NfT0JKQ19BUElfRU5BQkxFRAogICAgIERZTkFNSUNfSVNP
X1NVQlNQQUNFX0RFRklORV9NRU1CRVIoYXBpV3JhcHBlck9iamVjdFNwYWNlKQpAQCAtNjU3LDc0
ICs0ODMsMjMgQEAgcHVibGljOgogI2VuZGlmCiAKICN1bmRlZiBEWU5BTUlDX0lTT19TVUJTUEFD
RV9ERUZJTkVfTUVNQkVSCi0gICAgCi0gICAgSXNvQ2VsbFNldCBleGVjdXRhYmxlVG9Db2RlQmxv
Y2tFZGdlc1dpdGhDb25zdHJhaW50czsKLSAgICBJc29DZWxsU2V0IGV4ZWN1dGFibGVUb0NvZGVC
bG9ja0VkZ2VzV2l0aEZpbmFsaXplcnM7CisKKyAgICBBTFdBWVNfSU5MSU5FIElzb0NlbGxTZXQm
IGV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2VzV2l0aENvbnN0cmFpbnRzKCkgeyByZXR1cm4gaGVh
cC5leGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlc1dpdGhDb25zdHJhaW50czsgfQorICAgIEFMV0FZ
U19JTkxJTkUgSXNvQ2VsbFNldCYgZXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZXNXaXRoRmluYWxp
emVycygpIHsgcmV0dXJuIGhlYXAuZXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZXNXaXRoRmluYWxp
emVyczsgfQogCiAjZGVmaW5lIERZTkFNSUNfU1BBQ0VfQU5EX1NFVF9ERUZJTkVfTUVNQkVSKG5h
bWUpIFwKICAgICB0ZW1wbGF0ZTxTdWJzcGFjZUFjY2VzcyBtb2RlPiBcCi0gICAgSXNvU3Vic3Bh
Y2UqIG5hbWUoKSBcCi0gICAgeyBcCi0gICAgICAgIGlmIChhdXRvKiBzcGFjZUFuZFNldCA9IG1f
IyNuYW1lLmdldCgpKSBcCi0gICAgICAgICAgICByZXR1cm4gJnNwYWNlQW5kU2V0LT5zcGFjZTsg
XAotICAgICAgICBpZiAobW9kZSA9PSBTdWJzcGFjZUFjY2Vzczo6Q29uY3VycmVudGx5KSBcCi0g
ICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsgXAotICAgICAgICByZXR1cm4gbmFtZSMjU2xvdygp
OyBcCi0gICAgfSBcCi0gICAgSXNvU3Vic3BhY2UqIG5hbWUjI1Nsb3coKTsgXAotICAgIHN0ZDo6
dW5pcXVlX3B0cjxTcGFjZUFuZFNldD4gbV8jI25hbWU7Ci0gICAgCi0gICAgc3RydWN0IFNwYWNl
QW5kU2V0IHsKLSAgICAgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOworICAgIEFM
V0FZU19JTkxJTkUgSXNvU3Vic3BhY2UqIG5hbWUoKSB7IHJldHVybiBoZWFwLm5hbWU8bW9kZT4o
KTsgfQogCi0gICAgICAgIElzb1N1YnNwYWNlIHNwYWNlOwotICAgICAgICBJc29DZWxsU2V0IHNl
dDsKLSAgICAgICAgCi0gICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lLi4uIEFyZ3VtZW50cz4KLSAg
ICAgICAgU3BhY2VBbmRTZXQoQXJndW1lbnRzJiYuLi4gYXJndW1lbnRzKQotICAgICAgICAgICAg
OiBzcGFjZShzdGQ6OmZvcndhcmQ8QXJndW1lbnRzPihhcmd1bWVudHMpLi4uKQotICAgICAgICAg
ICAgLCBzZXQoc3BhY2UpCi0gICAgICAgIHsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAg
c3RhdGljIElzb0NlbGxTZXQmIHNldEZvcihTdWJzcGFjZSYgc3BhY2UpCi0gICAgICAgIHsKLSAg
ICAgICAgICAgIHJldHVybiAqYml0d2lzZV9jYXN0PElzb0NlbGxTZXQqPigKLSAgICAgICAgICAg
ICAgICBiaXR3aXNlX2Nhc3Q8Y2hhcio+KCZzcGFjZSkgLQotICAgICAgICAgICAgICAgIE9CSkVD
VF9PRkZTRVRPRihTcGFjZUFuZFNldCwgc3BhY2UpICsKLSAgICAgICAgICAgICAgICBPQkpFQ1Rf
T0ZGU0VUT0YoU3BhY2VBbmRTZXQsIHNldCkpOwotICAgICAgICB9Ci0gICAgfTsKLSAgICAKLSAg
ICBTcGFjZUFuZFNldCBjb2RlQmxvY2tTcGFjZTsKLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1
bmM+Ci0gICAgdm9pZCBmb3JFYWNoQ29kZUJsb2NrU3BhY2UoY29uc3QgRnVuYyYgZnVuYykKLSAg
ICB7Ci0gICAgICAgIC8vIFRoaXMgc2hvdWxkIG5vdCBpbmNsdWRlIHdlYkFzc2VtYmx5Q29kZUJs
b2NrU3BhY2UgYmVjYXVzZSB0aGlzIGlzIGFib3V0IHN1YnNjbGFzc2VzIG9mCi0gICAgICAgIC8v
IEpTQzo6Q29kZUJsb2NrLgotICAgICAgICBmdW5jKGNvZGVCbG9ja1NwYWNlKTsKLSAgICB9Cisg
ICAgdXNpbmcgU3BhY2VBbmRTZXQgPSBIZWFwOjpTcGFjZUFuZFNldDsKKyAgICBBTFdBWVNfSU5M
SU5FIFNwYWNlQW5kU2V0JiBjb2RlQmxvY2tTcGFjZSgpIHsgcmV0dXJuIGhlYXAuY29kZUJsb2Nr
U3BhY2U7IH0KIAogICAgIERZTkFNSUNfU1BBQ0VfQU5EX1NFVF9ERUZJTkVfTUVNQkVSKGV2YWxF
eGVjdXRhYmxlU3BhY2UpCiAgICAgRFlOQU1JQ19TUEFDRV9BTkRfU0VUX0RFRklORV9NRU1CRVIo
bW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGVTcGFjZSkKLSAgICBTcGFjZUFuZFNldCBmdW5jdGlvbkV4
ZWN1dGFibGVTcGFjZTsKLSAgICBTcGFjZUFuZFNldCBwcm9ncmFtRXhlY3V0YWJsZVNwYWNlOwot
Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuYz4KLSAgICB2b2lkIGZvckVhY2hTY3JpcHRFeGVj
dXRhYmxlU3BhY2UoY29uc3QgRnVuYyYgZnVuYykKLSAgICB7Ci0gICAgICAgIGlmIChtX2V2YWxF
eGVjdXRhYmxlU3BhY2UpCi0gICAgICAgICAgICBmdW5jKCptX2V2YWxFeGVjdXRhYmxlU3BhY2Up
OwotICAgICAgICBmdW5jKGZ1bmN0aW9uRXhlY3V0YWJsZVNwYWNlKTsKLSAgICAgICAgaWYgKG1f
bW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGVTcGFjZSkKLSAgICAgICAgICAgIGZ1bmMoKm1fbW9kdWxl
UHJvZ3JhbUV4ZWN1dGFibGVTcGFjZSk7Ci0gICAgICAgIGZ1bmMocHJvZ3JhbUV4ZWN1dGFibGVT
cGFjZSk7Ci0gICAgfQotCi0gICAgU3BhY2VBbmRTZXQgdW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFi
bGVTcGFjZTsKIAotI3VuZGVmIERZTkFNSUNfU1BBQ0VfQU5EX1NFVF9ERUZJTkVfTUVNQkVSCisg
ICAgQUxXQVlTX0lOTElORSBTcGFjZUFuZFNldCYgZnVuY3Rpb25FeGVjdXRhYmxlU3BhY2UoKSB7
IHJldHVybiBoZWFwLmZ1bmN0aW9uRXhlY3V0YWJsZVNwYWNlOyB9CisgICAgQUxXQVlTX0lOTElO
RSBTcGFjZUFuZFNldCYgcHJvZ3JhbUV4ZWN1dGFibGVTcGFjZSgpIHsgcmV0dXJuIGhlYXAucHJv
Z3JhbUV4ZWN1dGFibGVTcGFjZTsgfQorICAgIEFMV0FZU19JTkxJTkUgU3BhY2VBbmRTZXQmIHVu
bGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlU3BhY2UoKSB7IHJldHVybiBoZWFwLnVubGlua2VkRnVu
Y3Rpb25FeGVjdXRhYmxlU3BhY2U7IH0KIAogICAgIFZNVHlwZSB2bVR5cGU7CiAgICAgQ2xpZW50
RGF0YSogY2xpZW50RGF0YTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZN
SW5saW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZN
SW5saW5lcy5oCShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9WTUlubGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMjYsNiArMjYsNyBAQAogI3ByYWdt
YSBvbmNlCiAKICNpbmNsdWRlICJFbnRyeUZyYW1lLmgiCisjaW5jbHVkZSAiRnV6emVyQWdlbnQu
aCIKICNpbmNsdWRlICJQcm9maWxlckRhdGFiYXNlLmgiCiAjaW5jbHVkZSAiVk0uaCIKICNpbmNs
dWRlICJXYXRjaGRvZy5oIgpAQCAtOTAsNCArOTEsMTAgQEAgaW5saW5lIENhbGxGcmFtZSogVk06
OnRvcEpTQ2FsbEZyYW1lKCkgYwogICAgIHJldHVybiBmcmFtZTsKIH0KIAoraW5saW5lIHZvaWQg
Vk06OnNldEZ1enplckFnZW50KHN0ZDo6dW5pcXVlX3B0cjxGdXp6ZXJBZ2VudD4mJiBmdXp6ZXJB
Z2VudCkKK3sKKyAgICBSRUxFQVNFX0FTU0VSVF9XSVRIX01FU1NBR0UoIW1fZnV6emVyQWdlbnQs
ICJPbmx5IG9uZSBGdXp6ZXJBZ2VudCBjYW4gYmUgc3BlY2lmaWVkIGF0IGEgdGltZS4iKTsKKyAg
ICBtX2Z1enplckFnZW50ID0gV1RGTW92ZShmdXp6ZXJBZ2VudCk7Cit9CisKIH0gLy8gbmFtZXNw
YWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha01hcFByb3Rv
dHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dlYWtN
YXBQcm90b3R5cGUuaAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvV2Vha01hcFByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00MSw3ICs0MSw3
IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkK
ICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKFdlYWtN
YXBQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7
CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIHN0
YXRpYyBXZWFrTWFwUHJvdG90eXBlKiBjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1dlYWtPYmplY3RSZWZQcm90b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFrT2JqZWN0UmVmUHJvdG90eXBlLmgJKHJldmlz
aW9uIDI4NjA5NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dlYWtPYmplY3RS
ZWZQcm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzcsNyArMzcsNyBAQCBwdWJsaWM6CiAg
ICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewogICAgICAg
ICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShXZWFrT2JqZWN0UmVmUHJvdG90
eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAg
ICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgV2Vh
a09iamVjdFJlZlByb3RvdHlwZSogY3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9XZWFrU2V0UHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvV2Vha1NldFByb3RvdHlwZS5oCShyZXZpc2lvbiAyODYwOTUpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFrU2V0UHJvdG90eXBlLmgJKHdvcmtp
bmcgY29weSkKQEAgLTQxLDcgKzQxLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJc29TdWJzcGFj
ZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09f
U1VCU1BBQ0VfU0hBUkFCTEUoV2Vha1NldFByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVy
biAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNw
YWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIFdlYWtTZXRQcm90b3R5cGUqIGNyZWF0ZShWTSYg
dm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlKQpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0pTRG9sbGFyVk0uY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxhclZNLmNwcAkocmV2aXNp
b24gMjg2MDk1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0pTRG9sbGFyVk0uY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xMzMsNyArMTMzLDcgQEAgcHVibGljOgogICAgIHRlbXBsYXRl
PHR5cGVuYW1lIENlbGxUeXBlLCBTdWJzcGFjZUFjY2Vzcz4KICAgICBzdGF0aWMgQ29tcGxldGVT
dWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKLSAgICAgICAgcmV0dXJuICZ2bS5j
ZWxsU3BhY2U7CisgICAgICAgIHJldHVybiAmdm0uY2VsbFNwYWNlKCk7CiAgICAgfQogCiAgICAg
SlNEb2xsYXJWTUNhbGxGcmFtZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQpAQCAtMjIz
LDcgKzIyMyw3IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vi
c3BhY2VBY2Nlc3M+CiAgICAgc3RhdGljIENvbXBsZXRlU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZN
JiB2bSkKICAgICB7Ci0gICAgICAgIHJldHVybiAmdm0uY2VsbFNwYWNlOworICAgICAgICByZXR1
cm4gJnZtLmNlbGxTcGFjZSgpOwogICAgIH0KIAogICAgIFJvb3QqIHJvb3QoKSBjb25zdCB7IHJl
dHVybiBtX3Jvb3QuZ2V0KCk7IH0KQEAgLTI4Nyw3ICsyODcsNyBAQCBwdWJsaWM6CiAgICAgdGVt
cGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNzPgogICAgIHN0YXRpYyBDb21w
bGV0ZVN1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewotICAgICAgICByZXR1cm4g
JnZtLmRlc3RydWN0aWJsZU9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLmRlc3RydWN0
aWJsZU9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAgUm9vdChWTSYgdm0sIFN0cnVjdHVyZSog
c3RydWN0dXJlKQpAQCAtMzU0LDcgKzM1NCw3IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBDZWxsVHlwZSwgU3Vic3BhY2VBY2Nlc3M+CiAgICAgc3RhdGljIENvbXBsZXRlU3Vic3Bh
Y2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7Ci0gICAgICAgIHJldHVybiAmdm0uY2VsbFNw
YWNlOworICAgICAgICByZXR1cm4gJnZtLmNlbGxTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRp
YyBTaW1wbGVPYmplY3QqIGNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QpCkBAIC00MjYsNyArNDI2LDcgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENl
bGxUeXBlLCBTdWJzcGFjZUFjY2Vzcz4KICAgICBzdGF0aWMgQ29tcGxldGVTdWJzcGFjZSogc3Vi
c3BhY2VGb3IoVk0mIHZtKQogICAgIHsKLSAgICAgICAgcmV0dXJuICZ2bS5jZWxsU3BhY2U7Cisg
ICAgICAgIHJldHVybiAmdm0uY2VsbFNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIFN0cnVj
dHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgSlNWYWx1ZSBwcm90b3R5cGUpCkBAIC01MDgsNyArNTA4LDcgQEAgcHVibGljOgogICAgIHRl
bXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlLCBTdWJzcGFjZUFjY2Vzcz4KICAgICBzdGF0aWMgQ29t
cGxldGVTdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKLSAgICAgICAgcmV0dXJu
ICZ2bS5jZWxsU3BhY2U7CisgICAgICAgIHJldHVybiAmdm0uY2VsbFNwYWNlKCk7CiAgICAgfQog
CiAgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCkBAIC01OTAsNyArNTkwLDcg
QEAgSUdOT1JFX1dBUk5JTkdTX0VORAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlLCBT
dWJzcGFjZUFjY2Vzcz4KICAgICBzdGF0aWMgQ29tcGxldGVTdWJzcGFjZSogc3Vic3BhY2VGb3Io
Vk0mIHZtKQogICAgIHsKLSAgICAgICAgcmV0dXJuICZ2bS5jZWxsU3BhY2U7CisgICAgICAgIHJl
dHVybiAmdm0uY2VsbFNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIFJ1bnRpbWVBcnJheSog
Y3JlYXRlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1l
KQpAQCAtNzcyLDcgKzc3Miw3IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxs
VHlwZSwgU3Vic3BhY2VBY2Nlc3M+CiAgICAgc3RhdGljIENvbXBsZXRlU3Vic3BhY2UqIHN1YnNw
YWNlRm9yKFZNJiB2bSkKICAgICB7Ci0gICAgICAgIHJldHVybiAmdm0uY2VsbFNwYWNlOworICAg
ICAgICByZXR1cm4gJnZtLmNlbGxTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBTdHJ1Y3R1
cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IEpTVmFsdWUgcHJvdG90eXBlKQpAQCAtODcyLDcgKzg3Miw3IEBAIHB1YmxpYzoKICAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vic3BhY2VBY2Nlc3M+CiAgICAgc3RhdGljIENvbXBs
ZXRlU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7Ci0gICAgICAgIHJldHVybiAm
dm0uY2VsbFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLmNlbGxTcGFjZSgpOwogICAgIH0KIAog
ICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQpAQCAtODk3LDcgKzg5Nyw3IEBA
IHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vic3BhY2VBY2Nlc3M+
CiAgICAgc3RhdGljIENvbXBsZXRlU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7
Ci0gICAgICAgIHJldHVybiAmdm0uY2VsbFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLmNlbGxT
cGFjZSgpOwogICAgIH0KIAogICAgIE9iamVjdERvaW5nU2lkZUVmZmVjdFB1dFdpdGhvdXRDb3Jy
ZWN0U2xvdFN0YXR1cyhWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQpAQCAtOTQ4LDcgKzk0
OCw3IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vic3BhY2VB
Y2Nlc3M+CiAgICAgc3RhdGljIENvbXBsZXRlU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkK
ICAgICB7Ci0gICAgICAgIHJldHVybiAmdm0uY2VsbFNwYWNlOworICAgICAgICByZXR1cm4gJnZt
LmNlbGxTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVj
dHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90
eXBlKQpAQCAtMTU4NSw3ICsxNTg1LDcgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1l
IENlbGxUeXBlLCBTdWJzcGFjZUFjY2Vzcz4KICAgICBzdGF0aWMgQ29tcGxldGVTdWJzcGFjZSog
c3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKLSAgICAgICAgcmV0dXJuICZ2bS5jZWxsU3BhY2U7
CisgICAgICAgIHJldHVybiAmdm0uY2VsbFNwYWNlKCk7CiAgICAgfQogCiAgICAgSlNUZXN0Q3Vz
dG9tR2V0dGVyU2V0dGVyKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCkBAIC0xODM4LDcg
KzE4MzgsNyBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUsIFN1YnNw
YWNlQWNjZXNzPgogICAgIHN0YXRpYyBDb21wbGV0ZVN1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYg
dm0pCiAgICAgewotICAgICAgICByZXR1cm4gJnZtLmRlc3RydWN0aWJsZU9iamVjdFNwYWNlOwor
ICAgICAgICByZXR1cm4gJnZtLmRlc3RydWN0aWJsZU9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAg
ICAgY2xhc3MgQ2xpZW50IGZpbmFsIDogcHVibGljIFdhc206OlN0cmVhbWluZ1BhcnNlckNsaWVu
dCB7CkBAIC0xOTMzLDcgKzE5MzMsNyBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUg
Q2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNzPgogICAgIHN0YXRpYyBDb21wbGV0ZVN1YnNwYWNlKiBz
dWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewotICAgICAgICByZXR1cm4gJnZtLmRlc3RydWN0aWJs
ZU9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLmRlc3RydWN0aWJsZU9iamVjdFNwYWNl
KCk7CiAgICAgfQogCiAgICAgV2FzbVN0cmVhbWluZ0NvbXBpbGVyKFZNJiB2bSwgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUsIFdhc206OkNvbXBpbGVyTW9kZSBjb21waWxlck1vZGUsIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIEpTUHJvbWlzZSogcHJvbWlzZSwgSlNPYmplY3QqIGltcG9ydE9i
amVjdCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxhclZNLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0pTRG9sbGFyVk0uaAkocmV2
aXNpb24gMjg2MDk1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0pTRG9sbGFyVk0u
aAkod29ya2luZyBjb3B5KQpAQCAtNDIsNyArNDIsNyBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8
dHlwZW5hbWUgQ2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNzPgogICAgIHN0YXRpYyBDb21wbGV0ZVN1
YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewotICAgICAgICByZXR1cm4gJnZtLmNl
bGxTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5jZWxsU3BhY2UoKTsKICAgICB9CiAgICAgCiAg
ICAgREVDTEFSRV9FWFBPUlRfSU5GTzsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L2pzL0pTV2ViQXNzZW1ibHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9qcy9KU1dlYkFzc2VtYmx5LmgJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHkuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAxOSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAyMSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQx
LDcgKzQxLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3Io
Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFC
TEUoSlNXZWJBc3NlbWJseSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RT
cGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAg
ICAgc3RhdGljIEpTV2ViQXNzZW1ibHkqIGNyZWF0ZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgU3Ry
dWN0dXJlKik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJs
eUNvbXBpbGVFcnJvclByb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5Q29tcGlsZUVycm9yUHJvdG90eXBlLmgJKHJldmlzaW9u
IDI4NjA5NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5Q29t
cGlsZUVycm9yUHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgot
ICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00MSw3ICs0MSw3IEBAIHB1
YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7
CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKFdlYkFzc2VtYmx5
Q29tcGlsZUVycm9yUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9i
amVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9
CiAKICAgICBzdGF0aWMgV2ViQXNzZW1ibHlDb21waWxlRXJyb3JQcm90b3R5cGUqIGNyZWF0ZShW
TSYsIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUV4Y2VwdGlvblByb3RvdHlwZS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5RXhjZXB0aW9uUHJv
dG90eXBlLmgJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L2pzL1dlYkFzc2VtYmx5RXhjZXB0aW9uUHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQx
LDcgKzQxLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3Io
Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFC
TEUoV2ViQXNzZW1ibHlFeGNlcHRpb25Qcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4g
JnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFj
ZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBXZWJBc3NlbWJseUV4Y2VwdGlvblByb3RvdHlwZSog
Y3JlYXRlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqKTsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5R2xvYmFsUHJvdG90eXBlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlHbG9iYWxQ
cm90b3R5cGUuaAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vanMvV2ViQXNzZW1ibHlHbG9iYWxQcm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE5LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00MCw3ICs0
MCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2
bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKFdl
YkFzc2VtYmx5R2xvYmFsUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFp
bk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAg
ICB9CiAKICAgICBzdGF0aWMgV2ViQXNzZW1ibHlHbG9iYWxQcm90b3R5cGUqIGNyZWF0ZShWTSYs
IEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9qcy9XZWJBc3NlbWJseUluc3RhbmNlUHJvdG90eXBlLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlJbnN0YW5jZVByb3RvdHlw
ZS5oCShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9X
ZWJBc3NlbWJseUluc3RhbmNlUHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1
IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00MSw3ICs0
MSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2
bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKFdl
YkFzc2VtYmx5SW5zdGFuY2VQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBs
YWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwog
ICAgIH0KIAogICAgIHN0YXRpYyBXZWJBc3NlbWJseUluc3RhbmNlUHJvdG90eXBlKiBjcmVhdGUo
Vk0mLCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSopOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlMaW5rRXJyb3JQcm90b3R5cGUuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUxpbmtFcnJvclBy
b3RvdHlwZS5oCShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9qcy9XZWJBc3NlbWJseUxpbmtFcnJvclByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNi0yMDE5IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNi0yMDIxIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAt
NDEsNyArNDEsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZv
cihWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFS
QUJMRShXZWJBc3NlbWJseUxpbmtFcnJvclByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVy
biAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNw
YWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIFdlYkFzc2VtYmx5TGlua0Vycm9yUHJvdG90eXBl
KiBjcmVhdGUoVk0mLCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSopOwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlNZW1vcnlQcm90b3R5cGUuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseU1lbW9y
eVByb3RvdHlwZS5oCShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9qcy9XZWJBc3NlbWJseU1lbW9yeVByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNi0yMDE5IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNi0yMDIxIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAt
NDEsNyArNDEsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZv
cihWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFS
QUJMRShXZWJBc3NlbWJseU1lbW9yeVByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAm
dm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNl
KCk7CiAgICAgfQogCiAgICAgc3RhdGljIFdlYkFzc2VtYmx5TWVtb3J5UHJvdG90eXBlKiBjcmVh
dGUoVk0mLCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSopOwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlNb2R1bGVQcm90b3R5cGUuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseU1vZHVsZVByb3Rv
dHlwZS5oCShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9q
cy9XZWJBc3NlbWJseU1vZHVsZVByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEs
NSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNi0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNi0yMDIxIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDEsNyAr
NDEsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYg
dm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShX
ZWJBc3NlbWJseU1vZHVsZVByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxh
aW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAg
ICAgfQogCiAgICAgc3RhdGljIFdlYkFzc2VtYmx5TW9kdWxlUHJvdG90eXBlKiBjcmVhdGUoVk0m
LCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSopOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vanMvV2ViQXNzZW1ibHlSdW50aW1lRXJyb3JQcm90b3R5cGUuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseVJ1bnRpbWVFcnJv
clByb3RvdHlwZS5oCShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9qcy9XZWJBc3NlbWJseVJ1bnRpbWVFcnJvclByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNi0yMDE5IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNi0yMDIxIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwpAQCAtNDEsNyArNDEsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJz
cGFjZUZvcihWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFD
RV9TSEFSQUJMRShXZWJBc3NlbWJseVJ1bnRpbWVFcnJvclByb3RvdHlwZSwgQmFzZSk7Ci0gICAg
ICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFp
bk9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIFdlYkFzc2VtYmx5UnVudGltZUVy
cm9yUHJvdG90eXBlKiBjcmVhdGUoVk0mLCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSopOwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlUYWJsZVByb3Rv
dHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFz
c2VtYmx5VGFibGVQcm90b3R5cGUuaAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlUYWJsZVByb3RvdHlwZS5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNi0yMDE5IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNi0yMDIxIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwpAQCAtNDEsNyArNDEsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBz
dWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJT
UEFDRV9TSEFSQUJMRShXZWJBc3NlbWJseVRhYmxlUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAg
cmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2Jq
ZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgV2ViQXNzZW1ibHlUYWJsZVByb3RvdHlw
ZSogY3JlYXRlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqKTsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5VGFnUHJvdG90eXBlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlUYWdQcm90
b3R5cGUuaAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
anMvV2ViQXNzZW1ibHlUYWdQcm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtNDAsNyArNDAs
NyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0p
CiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShXZWJB
c3NlbWJseVRhZ1Byb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmpl
Y3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQog
CiAgICAgc3RhdGljIFdlYkFzc2VtYmx5VGFnUHJvdG90eXBlKiBjcmVhdGUoVk0mLCBKU0dsb2Jh
bE9iamVjdCosIFN0cnVjdHVyZSopOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNET01Bc3luY0l0ZXJhdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNET01Bc3luY0l0ZXJhdG9yLmgJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQXN5bmNJdGVyYXRvci5oCSh3b3JraW5nIGNvcHkpCkBA
IC00OCw3ICs0OCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vi
c3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19T
VUJTUEFDRV9TSEFSQUJMRShKU0RPTUFzeW5jSXRlcmF0b3JQcm90b3R5cGUsIEJhc2UpOwotICAg
ICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxh
aW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBKU0RPTUFzeW5jSXRlcmF0b3JQ
cm90b3R5cGUqIGNyZWF0ZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlKQpJbmRleDogU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNET01JdGVyYXRvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRE9NSXRlcmF0b3IuaAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01JdGVyYXRvci5oCSh3b3JraW5nIGNvcHkpCkBAIC01
NSw3ICs1NSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3Bh
Y2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJT
UEFDRV9TSEFSQUJMRShKU0RPTUl0ZXJhdG9yUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0
dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0
U3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgSlNET01JdGVyYXRvclByb3RvdHlwZSogY3Jl
YXRlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6
U3RydWN0dXJlKiBzdHJ1Y3R1cmUpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0ZpbGVTeXN0ZW1EaXJlY3RvcnlIYW5kbGVJdGVyYXRvci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNGaWxlU3lzdGVtRGlyZWN0b3J5SGFuZGxlSXRlcmF0
b3IuY3BwCShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0ZpbGVTeXN0ZW1EaXJlY3RvcnlIYW5kbGVJdGVyYXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTU1LDkgKzU1LDkgQEAgSXNvU3Vic3BhY2UqIEpTRmlsZVN5c3RlbURpcmVjdG9yeUhhbmRsZQog
ICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2Zf
djxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU0ZpbGVTeXN0ZW1EaXJlY3RvcnlIYW5kbGVJ
dGVyYXRvcj4gfHwgIUpTRmlsZVN5c3RlbURpcmVjdG9yeUhhbmRsZUl0ZXJhdG9yOjpuZWVkc0Rl
c3RydWN0aW9uKTsKICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNE
ZXN0cnVjdGlibGVPYmplY3QsIEpTRmlsZVN5c3RlbURpcmVjdG9yeUhhbmRsZUl0ZXJhdG9yPikK
LSAgICAgICAgY2xpZW50RGF0YS5zZXRGaWxlU3lzdGVtRGlyZWN0b3J5SGFuZGxlSXRlcmF0b3JT
cGFjZShtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAq
dm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLCBKU0ZpbGVTeXN0ZW1EaXJlY3RvcnlI
YW5kbGVJdGVyYXRvcikpOworICAgICAgICBjbGllbnREYXRhLnNldEZpbGVTeXN0ZW1EaXJlY3Rv
cnlIYW5kbGVJdGVyYXRvclNwYWNlKG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFD
RV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBKU0Zp
bGVTeXN0ZW1EaXJlY3RvcnlIYW5kbGVJdGVyYXRvcikpOwogICAgIGVsc2UKLSAgICAgICAgY2xp
ZW50RGF0YS5zZXRGaWxlU3lzdGVtRGlyZWN0b3J5SGFuZGxlSXRlcmF0b3JTcGFjZShtYWtlVW5p
cXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uY2VsbEhlYXBD
ZWxsVHlwZSwgSlNGaWxlU3lzdGVtRGlyZWN0b3J5SGFuZGxlSXRlcmF0b3IpKTsKKyAgICAgICAg
Y2xpZW50RGF0YS5zZXRGaWxlU3lzdGVtRGlyZWN0b3J5SGFuZGxlSXRlcmF0b3JTcGFjZShtYWtl
VW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVh
cENlbGxUeXBlKCksIEpTRmlsZVN5c3RlbURpcmVjdG9yeUhhbmRsZUl0ZXJhdG9yKSk7CiAgICAg
YXV0byogc3BhY2UgPSBjbGllbnREYXRhLmZpbGVTeXN0ZW1EaXJlY3RvcnlIYW5kbGVJdGVyYXRv
clNwYWNlKCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdO
T1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9XZWJDb3JlSlNDbGllbnREYXRhLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9XZWJDb3JlSlNDbGllbnREYXRhLmNwcAkocmV2
aXNpb24gMjg2MDk1KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV2ViQ29yZUpTQ2xp
ZW50RGF0YS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM4LDEyICszOCwxMyBAQAogI2luY2x1ZGUg
IkpTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuaCIKICNpbmNsdWRlICJKU1JlbW90ZURPTVdpbmRv
dy5oIgogI2luY2x1ZGUgIkpTU2VydmljZVdvcmtlckdsb2JhbFNjb3BlLmgiCisjaW5jbHVkZSAi
SlNTaGFyZWRXb3JrZXJHbG9iYWxTY29wZS5oIgogI2luY2x1ZGUgIkpTV2luZG93UHJveHkuaCIK
ICNpbmNsdWRlICJKU1dvcmtlckdsb2JhbFNjb3BlLmgiCiAjaW5jbHVkZSAiSlNXb3JrbGV0R2xv
YmFsU2NvcGUuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9GYXN0TWFsbG9jQWxpZ25lZE1l
bW9yeUFsbG9jYXRvci5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBJbmxpbmVzLmg+
Ci0jaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSXNvSGVhcENlbGxUeXBlLmg+CisjaW5jbHVkZSA8
SmF2YVNjcmlwdENvcmUvSXNvSGVhcENlbGxUeXBlSW5saW5lcy5oPgogI2luY2x1ZGUgPEphdmFT
Y3JpcHRDb3JlL0pTRGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmg+CiAjaW5jbHVkZSA8
SmF2YVNjcmlwdENvcmUvTWFya2luZ0NvbnN0cmFpbnQuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0
Q29yZS9TdWJzcGFjZUlubGluZXMuaD4KQEAgLTU5LDMzICs2MCwzNCBAQCB1c2luZyBuYW1lc3Bh
Y2UgSlNDOwogSlNWTUNsaWVudERhdGE6OkpTVk1DbGllbnREYXRhKFZNJiB2bSkKICAgICA6IG1f
YnVpbHRpbkZ1bmN0aW9ucyh2bSkKICAgICAsIG1fYnVpbHRpbk5hbWVzKHZtKQotICAgICwgbV9y
dW50aW1lQXJyYXlIZWFwQ2VsbFR5cGUoSlNDOjpJc29IZWFwQ2VsbFR5cGU6OmNyZWF0ZTxSdW50
aW1lQXJyYXk+KCkpCi0gICAgLCBtX3J1bnRpbWVPYmplY3RIZWFwQ2VsbFR5cGUoSlNDOjpJc29I
ZWFwQ2VsbFR5cGU6OmNyZWF0ZTxKU0M6OkJpbmRpbmdzOjpSdW50aW1lT2JqZWN0PigpKQotICAg
ICwgbV93aW5kb3dQcm94eUhlYXBDZWxsVHlwZShKU0M6Oklzb0hlYXBDZWxsVHlwZTo6Y3JlYXRl
PEpTV2luZG93UHJveHk+KCkpCi0gICAgLCBtX2hlYXBDZWxsVHlwZUZvckpTRE9NV2luZG93KEpT
Qzo6SXNvSGVhcENlbGxUeXBlOjpjcmVhdGU8SlNET01XaW5kb3c+KCkpCi0gICAgLCBtX2hlYXBD
ZWxsVHlwZUZvckpTRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUoSlNDOjpJc29IZWFwQ2VsbFR5
cGU6OmNyZWF0ZTxKU0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlPigpKQotICAgICwgbV9oZWFw
Q2VsbFR5cGVGb3JKU1JlbW90ZURPTVdpbmRvdyhKU0M6Oklzb0hlYXBDZWxsVHlwZTo6Y3JlYXRl
PEpTUmVtb3RlRE9NV2luZG93PigpKQotICAgICwgbV9oZWFwQ2VsbFR5cGVGb3JKU1dvcmtlckds
b2JhbFNjb3BlKEpTQzo6SXNvSGVhcENlbGxUeXBlOjpjcmVhdGU8SlNXb3JrZXJHbG9iYWxTY29w
ZT4oKSkKKy8vICAgICwgbV9ydW50aW1lQXJyYXlIZWFwQ2VsbFR5cGUoSlNDOjpJc29IZWFwQ2Vs
bFR5cGU6OkFyZ3M8UnVudGltZUFycmF5PigpKQorLy8gICAgLCBtX3J1bnRpbWVPYmplY3RIZWFw
Q2VsbFR5cGUoSlNDOjpJc29IZWFwQ2VsbFR5cGU6OkFyZ3M8SlNDOjpCaW5kaW5nczo6UnVudGlt
ZU9iamVjdD4oKSkKKy8vICAgICwgbV93aW5kb3dQcm94eUhlYXBDZWxsVHlwZShKU0M6Oklzb0hl
YXBDZWxsVHlwZTo6QXJnczxKU1dpbmRvd1Byb3h5PigpKQorLy8gICAgLCBtX2hlYXBDZWxsVHlw
ZUZvckpTRE9NV2luZG93KEpTQzo6SXNvSGVhcENlbGxUeXBlOjpBcmdzPEpTRE9NV2luZG93Pigp
KQorLy8gICAgLCBtX2hlYXBDZWxsVHlwZUZvckpTRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUo
SlNDOjpJc29IZWFwQ2VsbFR5cGU6OkFyZ3M8SlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZT4o
KSkKKy8vICAgICwgbV9oZWFwQ2VsbFR5cGVGb3JKU1JlbW90ZURPTVdpbmRvdyhKU0M6Oklzb0hl
YXBDZWxsVHlwZTo6QXJnczxKU1JlbW90ZURPTVdpbmRvdz4oKSkKKy8vICAgICwgbV9oZWFwQ2Vs
bFR5cGVGb3JKU1dvcmtlckdsb2JhbFNjb3BlKEpTQzo6SXNvSGVhcENlbGxUeXBlOjpBcmdzPEpT
V29ya2VyR2xvYmFsU2NvcGU+KCkpCisvLyAgICAsIG1faGVhcENlbGxUeXBlRm9ySlNTaGFyZWRX
b3JrZXJHbG9iYWxTY29wZShKU0M6Oklzb0hlYXBDZWxsVHlwZTo6QXJnczxKU1NoYXJlZFdvcmtl
ckdsb2JhbFNjb3BlPigpKQogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLSAgICAsIG1faGVh
cENlbGxUeXBlRm9ySlNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUoSlNDOjpJc29IZWFwQ2VsbFR5
cGU6OmNyZWF0ZTxKU1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZT4oKSkKKy8vICAgICwgbV9oZWFw
Q2VsbFR5cGVGb3JKU1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZShKU0M6Oklzb0hlYXBDZWxsVHlw
ZTo6QXJnczxKU1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZT4oKSkKICNlbmRpZgotICAgICwgbV9o
ZWFwQ2VsbFR5cGVGb3JKU1dvcmtsZXRHbG9iYWxTY29wZShKU0M6Oklzb0hlYXBDZWxsVHlwZTo6
Y3JlYXRlPEpTV29ya2xldEdsb2JhbFNjb3BlPigpKQorLy8gICAgLCBtX2hlYXBDZWxsVHlwZUZv
ckpTV29ya2xldEdsb2JhbFNjb3BlKEpTQzo6SXNvSGVhcENlbGxUeXBlOjpBcmdzPEpTV29ya2xl
dEdsb2JhbFNjb3BlPigpKQogI2lmIEVOQUJMRShDU1NfUEFJTlRJTkdfQVBJKQotICAgICwgbV9o
ZWFwQ2VsbFR5cGVGb3JKU1BhaW50V29ya2xldEdsb2JhbFNjb3BlKEpTQzo6SXNvSGVhcENlbGxU
eXBlOjpjcmVhdGU8SlNQYWludFdvcmtsZXRHbG9iYWxTY29wZT4oKSkKKy8vICAgICwgbV9oZWFw
Q2VsbFR5cGVGb3JKU1BhaW50V29ya2xldEdsb2JhbFNjb3BlKEpTQzo6SXNvSGVhcENlbGxUeXBl
OjpBcmdzPEpTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGU+KCkpCiAjZW5kaWYKICNpZiBFTkFCTEUo
V0VCX0FVRElPKQotICAgICwgbV9oZWFwQ2VsbFR5cGVGb3JKU0F1ZGlvV29ya2xldEdsb2JhbFNj
b3BlKEpTQzo6SXNvSGVhcENlbGxUeXBlOjpjcmVhdGU8SlNBdWRpb1dvcmtsZXRHbG9iYWxTY29w
ZT4oKSkKKy8vICAgICwgbV9oZWFwQ2VsbFR5cGVGb3JKU0F1ZGlvV29ya2xldEdsb2JhbFNjb3Bl
KEpTQzo6SXNvSGVhcENlbGxUeXBlOjpBcmdzPEpTQXVkaW9Xb3JrbGV0R2xvYmFsU2NvcGU+KCkp
CiAjZW5kaWYKLSAgICAsIG1faGVhcENlbGxUeXBlRm9ySlNJREJTZXJpYWxpemF0aW9uR2xvYmFs
T2JqZWN0KEpTQzo6SXNvSGVhcENlbGxUeXBlOjpjcmVhdGU8SlNJREJTZXJpYWxpemF0aW9uR2xv
YmFsT2JqZWN0PigpKQotICAgICwgbV9kb21CdWlsdGluQ29uc3RydWN0b3JTcGFjZSBJU09fU1VC
U1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uY2VsbEhlYXBDZWxsVHlwZSwgSlNET01CdWlsdGluQ29u
c3RydWN0b3JCYXNlKQotICAgICwgbV9kb21Db25zdHJ1Y3RvclNwYWNlIElTT19TVUJTUEFDRV9J
TklUKHZtLmhlYXAsICp2bS5jZWxsSGVhcENlbGxUeXBlLCBKU0RPTUNvbnN0cnVjdG9yQmFzZSkK
LSAgICAsIG1fZG9tTmFtZXNwYWNlT2JqZWN0U3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVh
cCwgKnZtLmNlbGxIZWFwQ2VsbFR5cGUsIEpTRE9NT2JqZWN0KQotICAgICwgbV9kb21XaW5kb3dQ
cm9wZXJ0aWVzU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmNlbGxIZWFwQ2Vs
bFR5cGUsIEpTRE9NV2luZG93UHJvcGVydGllcykKLSAgICAsIG1fcnVudGltZUFycmF5U3BhY2Ug
SVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKm1fcnVudGltZUFycmF5SGVhcENlbGxUeXBlLCBS
dW50aW1lQXJyYXkpCi0gICAgLCBtX3J1bnRpbWVNZXRob2RTcGFjZSBJU09fU1VCU1BBQ0VfSU5J
VCh2bS5oZWFwLCAqdm0uY2VsbEhlYXBDZWxsVHlwZSwgUnVudGltZU1ldGhvZCkgLy8gSGFzaDow
eGY3MGM0YTg1Ci0gICAgLCBtX3J1bnRpbWVPYmplY3RTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVCh2
bS5oZWFwLCAqbV9ydW50aW1lT2JqZWN0SGVhcENlbGxUeXBlLCBKU0M6OkJpbmRpbmdzOjpSdW50
aW1lT2JqZWN0KQotICAgICwgbV93aW5kb3dQcm94eVNwYWNlIElTT19TVUJTUEFDRV9JTklUKHZt
LmhlYXAsICptX3dpbmRvd1Byb3h5SGVhcENlbGxUeXBlLCBKU1dpbmRvd1Byb3h5KQotICAgICwg
bV9pZGJTZXJpYWxpemF0aW9uU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKm1faGVh
cENlbGxUeXBlRm9ySlNJREJTZXJpYWxpemF0aW9uR2xvYmFsT2JqZWN0LCBKU0lEQlNlcmlhbGl6
YXRpb25HbG9iYWxPYmplY3QpCisvLyAgICAsIG1faGVhcENlbGxUeXBlRm9ySlNJREJTZXJpYWxp
emF0aW9uR2xvYmFsT2JqZWN0KEpTQzo6SXNvSGVhcENlbGxUeXBlOjpBcmdzPEpTSURCU2VyaWFs
aXphdGlvbkdsb2JhbE9iamVjdD4oKSkKKyAgICAsIG1fZG9tQnVpbHRpbkNvbnN0cnVjdG9yU3Bh
Y2UgSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU0RP
TUJ1aWx0aW5Db25zdHJ1Y3RvckJhc2UpCisgICAgLCBtX2RvbUNvbnN0cnVjdG9yU3BhY2UgSVNP
X1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU0RPTUNvbnN0
cnVjdG9yQmFzZSkKKyAgICAsIG1fZG9tTmFtZXNwYWNlT2JqZWN0U3BhY2UgSVNPX1NVQlNQQUNF
X0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU0RPTU9iamVjdCkKKyAgICAs
IG1fZG9tV2luZG93UHJvcGVydGllc1NwYWNlIElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZt
LmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNET01XaW5kb3dQcm9wZXJ0aWVzKQorICAgICwgbV9ydW50
aW1lQXJyYXlTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCBtX3J1bnRpbWVBcnJheUhl
YXBDZWxsVHlwZSwgUnVudGltZUFycmF5KQorICAgICwgbV9ydW50aW1lTWV0aG9kU3BhY2UgSVNP
X1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBSdW50aW1lTWV0
aG9kKSAvLyBIYXNoOjB4ZjcwYzRhODUKKyAgICAsIG1fcnVudGltZU9iamVjdFNwYWNlIElTT19T
VUJTUEFDRV9JTklUKHZtLmhlYXAsIG1fcnVudGltZU9iamVjdEhlYXBDZWxsVHlwZSwgSlNDOjpC
aW5kaW5nczo6UnVudGltZU9iamVjdCkKKyAgICAsIG1fd2luZG93UHJveHlTcGFjZSBJU09fU1VC
U1BBQ0VfSU5JVCh2bS5oZWFwLCBtX3dpbmRvd1Byb3h5SGVhcENlbGxUeXBlLCBKU1dpbmRvd1By
b3h5KQorICAgICwgbV9pZGJTZXJpYWxpemF0aW9uU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQodm0u
aGVhcCwgbV9oZWFwQ2VsbFR5cGVGb3JKU0lEQlNlcmlhbGl6YXRpb25HbG9iYWxPYmplY3QsIEpT
SURCU2VyaWFsaXphdGlvbkdsb2JhbE9iamVjdCkKICAgICAsIG1fc3Vic3BhY2VzKG1ha2VVbmlx
dWU8RE9NSXNvU3Vic3BhY2VzPigpKQogewogfQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvV2ViQ29yZUpTQ2xpZW50RGF0YS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL1dlYkNvcmVKU0NsaWVudERhdGEuaAkocmV2aXNpb24gMjg2MDk1KQorKysg
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV2ViQ29yZUpTQ2xpZW50RGF0YS5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDYgKzEsNiBAQAogLyoKICAqICBDb3B5cmlnaHQgKEMpIDE5OTktMjAwMSBI
YXJyaSBQb3J0ZW4gKHBvcnRlbkBrZGUub3JnKQotICogIENvcHlyaWdodCAoQykgMjAwMy0yMDE3
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqICBDb3B5cmlnaHQgKEMpIDIwMDMt
MjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiAgQ29weXJpZ2h0IChDKSAy
MDA3IFNhbXVlbCBXZWluaWcgPHNhbUB3ZWJraXQub3JnPgogICogIENvcHlyaWdodCAoQykgMjAw
OSBHb29nbGUsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCkBAIC0yOCw5ICsyOCwzNSBA
QAogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCitu
YW1lc3BhY2UgSlNDIHsKK2NsYXNzIFJ1bnRpbWVBcnJheTsKKworbmFtZXNwYWNlIEJpbmRpbmdz
IHsKK2NsYXNzIFJ1bnRpbWVPYmplY3Q7Cit9Cit9IC8vIG5hbWVzcGFjZSBKU0MKKwogbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBjbGFzcyBET01Jc29TdWJzcGFjZXM7CitjbGFzcyBKU0RPTVdpbmRv
dzsKK2NsYXNzIEpTRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGU7CitjbGFzcyBKU0lEQlNlcmlh
bGl6YXRpb25HbG9iYWxPYmplY3Q7CitjbGFzcyBKU1JlbW90ZURPTVdpbmRvdzsKK2NsYXNzIEpT
U2hhcmVkV29ya2VyR2xvYmFsU2NvcGU7CitjbGFzcyBKU1dpbmRvd1Byb3h5OworY2xhc3MgSlNX
b3JrZXJHbG9iYWxTY29wZTsKK2NsYXNzIEpTV29ya2xldEdsb2JhbFNjb3BlOworCisjaWYgRU5B
QkxFKFNFUlZJQ0VfV09SS0VSKQorY2xhc3MgSlNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU7Cisj
ZW5kaWYKKyNpZiBFTkFCTEUoQ1NTX1BBSU5USU5HX0FQSSkKK2NsYXNzIEpTUGFpbnRXb3JrbGV0
R2xvYmFsU2NvcGU7CisjZW5kaWYKKyNpZiBFTkFCTEUoV0VCX0FVRElPKQorY2xhc3MgSlNBdWRp
b1dvcmtsZXRHbG9iYWxTY29wZTsKKyNlbmRpZgogCiBjbGFzcyBKU1ZNQ2xpZW50RGF0YSA6IHB1
YmxpYyBKU0M6OlZNOjpDbGllbnREYXRhIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShKU1ZN
Q2xpZW50RGF0YSk7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwpAQCAtOTIsMjYgKzExOCwyNiBA
QCBwcml2YXRlOgogICAgIEpTQnVpbHRpbkZ1bmN0aW9ucyBtX2J1aWx0aW5GdW5jdGlvbnM7CiAg
ICAgV2ViQ29yZUJ1aWx0aW5OYW1lcyBtX2J1aWx0aW5OYW1lczsKIAotICAgIHN0ZDo6dW5pcXVl
X3B0cjxKU0M6OkhlYXBDZWxsVHlwZT4gbV9ydW50aW1lQXJyYXlIZWFwQ2VsbFR5cGU7Ci0gICAg
c3RkOjp1bmlxdWVfcHRyPEpTQzo6SGVhcENlbGxUeXBlPiBtX3J1bnRpbWVPYmplY3RIZWFwQ2Vs
bFR5cGU7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPEpTQzo6SGVhcENlbGxUeXBlPiBtX3dpbmRvd1By
b3h5SGVhcENlbGxUeXBlOworICAgIEpTQzo6SXNvSGVhcENlbGxUeXBlPEpTQzo6UnVudGltZUFy
cmF5PiBtX3J1bnRpbWVBcnJheUhlYXBDZWxsVHlwZTsKKyAgICBKU0M6Oklzb0hlYXBDZWxsVHlw
ZTxKU0M6OkJpbmRpbmdzOjpSdW50aW1lT2JqZWN0PiBtX3J1bnRpbWVPYmplY3RIZWFwQ2VsbFR5
cGU7CisgICAgSlNDOjpJc29IZWFwQ2VsbFR5cGU8SlNXaW5kb3dQcm94eT4gbV93aW5kb3dQcm94
eUhlYXBDZWxsVHlwZTsKIHB1YmxpYzoKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SlNDOjpIZWFwQ2Vs
bFR5cGU+IG1faGVhcENlbGxUeXBlRm9ySlNET01XaW5kb3c7Ci0gICAgc3RkOjp1bmlxdWVfcHRy
PEpTQzo6SGVhcENlbGxUeXBlPiBtX2hlYXBDZWxsVHlwZUZvckpTRGVkaWNhdGVkV29ya2VyR2xv
YmFsU2NvcGU7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPEpTQzo6SGVhcENlbGxUeXBlPiBtX2hlYXBD
ZWxsVHlwZUZvckpTUmVtb3RlRE9NV2luZG93OwotICAgIHN0ZDo6dW5pcXVlX3B0cjxKU0M6Okhl
YXBDZWxsVHlwZT4gbV9oZWFwQ2VsbFR5cGVGb3JKU1dvcmtlckdsb2JhbFNjb3BlOwotICAgIHN0
ZDo6dW5pcXVlX3B0cjxKU0M6OkhlYXBDZWxsVHlwZT4gbV9oZWFwQ2VsbFR5cGVGb3JKU1NoYXJl
ZFdvcmtlckdsb2JhbFNjb3BlOworICAgIEpTQzo6SXNvSGVhcENlbGxUeXBlPEpTRE9NV2luZG93
PiBtX2hlYXBDZWxsVHlwZUZvckpTRE9NV2luZG93OworICAgIEpTQzo6SXNvSGVhcENlbGxUeXBl
PEpTRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGU+IG1faGVhcENlbGxUeXBlRm9ySlNEZWRpY2F0
ZWRXb3JrZXJHbG9iYWxTY29wZTsKKyAgICBKU0M6Oklzb0hlYXBDZWxsVHlwZTxKU1JlbW90ZURP
TVdpbmRvdz4gbV9oZWFwQ2VsbFR5cGVGb3JKU1JlbW90ZURPTVdpbmRvdzsKKyAgICBKU0M6Oklz
b0hlYXBDZWxsVHlwZTxKU1dvcmtlckdsb2JhbFNjb3BlPiBtX2hlYXBDZWxsVHlwZUZvckpTV29y
a2VyR2xvYmFsU2NvcGU7CisgICAgSlNDOjpJc29IZWFwQ2VsbFR5cGU8SlNTaGFyZWRXb3JrZXJH
bG9iYWxTY29wZT4gbV9oZWFwQ2VsbFR5cGVGb3JKU1NoYXJlZFdvcmtlckdsb2JhbFNjb3BlOwog
I2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SlNDOjpIZWFw
Q2VsbFR5cGU+IG1faGVhcENlbGxUeXBlRm9ySlNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU7Cisg
ICAgSlNDOjpJc29IZWFwQ2VsbFR5cGU8SlNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU+IG1faGVh
cENlbGxUeXBlRm9ySlNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU7CiAjZW5kaWYKLSAgICBzdGQ6
OnVuaXF1ZV9wdHI8SlNDOjpIZWFwQ2VsbFR5cGU+IG1faGVhcENlbGxUeXBlRm9ySlNXb3JrbGV0
R2xvYmFsU2NvcGU7CisgICAgSlNDOjpJc29IZWFwQ2VsbFR5cGU8SlNXb3JrbGV0R2xvYmFsU2Nv
cGU+IG1faGVhcENlbGxUeXBlRm9ySlNXb3JrbGV0R2xvYmFsU2NvcGU7CiAjaWYgRU5BQkxFKENT
U19QQUlOVElOR19BUEkpCi0gICAgc3RkOjp1bmlxdWVfcHRyPEpTQzo6SGVhcENlbGxUeXBlPiBt
X2hlYXBDZWxsVHlwZUZvckpTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGU7CisgICAgSlNDOjpJc29I
ZWFwQ2VsbFR5cGU8SlNQYWludFdvcmtsZXRHbG9iYWxTY29wZT4gbV9oZWFwQ2VsbFR5cGVGb3JK
U1BhaW50V29ya2xldEdsb2JhbFNjb3BlOwogI2VuZGlmCiAjaWYgRU5BQkxFKFdFQl9BVURJTykK
LSAgICBzdGQ6OnVuaXF1ZV9wdHI8SlNDOjpIZWFwQ2VsbFR5cGU+IG1faGVhcENlbGxUeXBlRm9y
SlNBdWRpb1dvcmtsZXRHbG9iYWxTY29wZTsKKyAgICBKU0M6Oklzb0hlYXBDZWxsVHlwZTxKU0F1
ZGlvV29ya2xldEdsb2JhbFNjb3BlPiBtX2hlYXBDZWxsVHlwZUZvckpTQXVkaW9Xb3JrbGV0R2xv
YmFsU2NvcGU7CiAjZW5kaWYKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SlNDOjpIZWFwQ2VsbFR5cGU+
IG1faGVhcENlbGxUeXBlRm9ySlNJREJTZXJpYWxpemF0aW9uR2xvYmFsT2JqZWN0OworICAgIEpT
Qzo6SXNvSGVhcENlbGxUeXBlPEpTSURCU2VyaWFsaXphdGlvbkdsb2JhbE9iamVjdD4gbV9oZWFw
Q2VsbFR5cGVGb3JKU0lEQlNlcmlhbGl6YXRpb25HbG9iYWxPYmplY3Q7CiAKIHByaXZhdGU6CiAg
ICAgSlNDOjpJc29TdWJzcGFjZSBtX2RvbUJ1aWx0aW5Db25zdHJ1Y3RvclNwYWNlOwpJbmRleDog
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMu
cG0JKHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
Q29kZUdlbmVyYXRvckpTLnBtCSh3b3JraW5nIGNvcHkpCkBAIC00ODUyLDEzICs0ODUyLDEzIEBA
IHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAg
aWYgKGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3Ike2ludGVyZmFjZU5hbWV9Lmdl
dCgpKVxuIik7CiAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIHJldHVybiBzcGFjZTtc
biIpOwogICAgIGlmIChJc0RPTUdsb2JhbE9iamVjdCgkaW50ZXJmYWNlKSkgewotICAgICAgICBw
dXNoKEBpbXBsQ29udGVudCwgIiAgICBzcGFjZXMubV9zdWJzcGFjZUZvciR7aW50ZXJmYWNlTmFt
ZX0gPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAq
Y2xpZW50RGF0YS5tX2hlYXBDZWxsVHlwZUZvciR7Y2xhc3NOYW1lfSwgJHtjbGFzc05hbWV9KTtc
biIpOworICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBzcGFjZXMubV9zdWJzcGFjZUZv
ciR7aW50ZXJmYWNlTmFtZX0gPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0Vf
SU5JVCh2bS5oZWFwLCBjbGllbnREYXRhLm1faGVhcENlbGxUeXBlRm9yJHtjbGFzc05hbWV9LCAk
e2NsYXNzTmFtZX0pO1xuIik7CiAgICAgfSBlbHNlIHsKICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICIgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3Rp
YmxlT2JqZWN0LCAke2NsYXNzTmFtZX0+IHx8ICEke2NsYXNzTmFtZX06Om5lZWRzRGVzdHJ1Y3Rp
b24pO1xuIik7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGlmIGNvbnN0ZXhwciAo
c3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgJHtjbGFzc05hbWV9
PilcbiIpOwotICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgc3BhY2VzLm1fc3Vi
c3BhY2VGb3Ike2ludGVyZmFjZU5hbWV9ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NV
QlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSwg
JHtjbGFzc05hbWV9KTtcbiIpOworICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAg
c3BhY2VzLm1fc3Vic3BhY2VGb3Ike2ludGVyZmFjZU5hbWV9ID0gbWFrZVVuaXF1ZTxJc29TdWJz
cGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVh
cENlbGxUeXBlKCksICR7Y2xhc3NOYW1lfSk7XG4iKTsKICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICIgICAgZWxzZVxuIik7Ci0gICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICBz
cGFjZXMubV9zdWJzcGFjZUZvciR7aW50ZXJmYWNlTmFtZX0gPSBtYWtlVW5pcXVlPElzb1N1YnNw
YWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uY2VsbEhlYXBDZWxsVHlwZSwgJHtj
bGFzc05hbWV9KTtcbiIpOworICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgc3Bh
Y2VzLm1fc3Vic3BhY2VGb3Ike2ludGVyZmFjZU5hbWV9ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFj
ZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCAke2Ns
YXNzTmFtZX0pO1xuIik7CiAgICAgfQogICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGF1dG8q
IHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3Ike2ludGVyZmFjZU5hbWV9LmdldCgpO1xuIik7
CiAgICAgcHVzaChAaW1wbENvbnRlbnQsICJJR05PUkVfV0FSTklOR1NfQkVHSU4oXCJ1bnJlYWNo
YWJsZS1jb2RlXCIpXG4iKTsKQEAgLTY3MzEsOSArNjczMSw5IEBAIHB1YmxpYzoKICAgICAgICAg
ICAgIHJldHVybiBzcGFjZTsKICAgICAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2Zf
djxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCAke2l0ZXJhdG9yTmFtZX0+IHx8ICEke2l0ZXJh
dG9yTmFtZX06Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAgICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6
aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsICR7aXRlcmF0b3JOYW1lfT4p
Ci0gICAgICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvciR7aXRlcmF0b3JOYW1lfSA9IG1ha2VV
bmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5kZXN0cnVj
dGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuZ2V0KCksICR7aXRlcmF0b3JOYW1lfSk7CisgICAgICAg
ICAgICBzcGFjZXMubV9zdWJzcGFjZUZvciR7aXRlcmF0b3JOYW1lfSA9IG1ha2VVbmlxdWU8SXNv
U3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVj
dEhlYXBDZWxsVHlwZSgpLCAke2l0ZXJhdG9yTmFtZX0pOwogICAgICAgICBlbHNlCi0gICAgICAg
ICAgICBzcGFjZXMubV9zdWJzcGFjZUZvciR7aXRlcmF0b3JOYW1lfSA9IG1ha2VVbmlxdWU8SXNv
U3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5jZWxsSGVhcENlbGxUeXBl
LCAke2l0ZXJhdG9yTmFtZX0pOworICAgICAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3Ike2l0
ZXJhdG9yTmFtZX0gPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2
bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCksICR7aXRlcmF0b3JOYW1lfSk7CiAgICAgICAg
IGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3Ike2l0ZXJhdG9yTmFtZX0uZ2V0KCk7
CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oXCJ1bnJlYWNoYWJsZS1jb2RlXCIpCiBJR05PUkVfV0FS
TklOR1NfQkVHSU4oXCJ0YXV0b2xvZ2ljYWwtY29tcGFyZVwiKQpAQCAtNzUyOSw3ICs3NTI5LDcg
QEAgc3ViIEdlbmVyYXRlUHJvdG90eXBlRGVjbGFyYXRpb24KICAgICBwdXNoKEAkb3V0cHV0QXJy
YXksICIgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZt
KVxuIik7CiAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIHtcbiIpOwogICAgIHB1c2goQCRv
dXRwdXRBcnJheSwgIiAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUo
JHtwcm90b3R5cGVDbGFzc05hbWV9LCBCYXNlKTtcbiIpOwotICAgIHB1c2goQCRvdXRwdXRBcnJh
eSwgIiAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlO1xuIik7CisgICAgcHVzaChA
JG91dHB1dEFycmF5LCAiICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTtcbiIp
OwogICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICB9XG4iKTsKIAogICAgIHB1c2goQCRvdXRw
dXRBcnJheSwgIiAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6
OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUg
cHJvdG90eXBlKVxuIik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNET01XaW5kb3cuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU0RPTVdpbmRvdy5jcHAJKHJldmlzaW9uIDI4NjA5NSkKKysr
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU0RPTVdpbmRvdy5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTM2OSw3ICszNjksNyBAQCBKU0M6Oklzb1N1YnNwYWNlKiBKU0RP
TVdpbmRvdzo6c3Vic3BhY2VGCiAgICAgYXV0byYgc3BhY2VzID0gY2xpZW50RGF0YS5zdWJzcGFj
ZXMoKTsKICAgICBpZiAoYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvckRPTVdpbmRv
dy5nZXQoKSkKICAgICAgICAgcmV0dXJuIHNwYWNlOwotICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9y
RE9NV2luZG93ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0u
aGVhcCwgKmNsaWVudERhdGEubV9oZWFwQ2VsbFR5cGVGb3JKU0RPTVdpbmRvdywgSlNET01XaW5k
b3cpOworICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yRE9NV2luZG93ID0gbWFrZVVuaXF1ZTxJc29T
dWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgY2xpZW50RGF0YS5tX2hlYXBDZWxs
VHlwZUZvckpTRE9NV2luZG93LCBKU0RPTVdpbmRvdyk7CiAgICAgYXV0byogc3BhY2UgPSBzcGFj
ZXMubV9zdWJzcGFjZUZvckRPTVdpbmRvdy5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigi
dW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1j
b21wYXJlIikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U0RPTVdpbmRvdy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU0RPTVdpbmRvdy5oCShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNET01XaW5kb3cuaAkod29ya2luZyBjb3B5
KQpAQCAtODUsNyArODUsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2Uq
IHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9J
U09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNET01XaW5kb3dQcm90b3R5cGUsIEJhc2UpOwotICAgICAg
ICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5P
YmplY3RTcGFjZSgpOwogICAgIH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0
cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBK
U0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNEZWRp
Y2F0ZWRXb3JrZXJHbG9iYWxTY29wZS5jcHAJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU0RlZGljYXRlZFdvcmtlckdsb2JhbFNj
b3BlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTcwLDcgKzE3MCw3IEBAIEpTQzo6SXNvU3Vic3Bh
Y2UqIEpTRGVkaWNhdGVkV29ya2VyR2xvYmEKICAgICBhdXRvJiBzcGFjZXMgPSBjbGllbnREYXRh
LnN1YnNwYWNlcygpOwogICAgIGlmIChhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9y
RGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUuZ2V0KCkpCiAgICAgICAgIHJldHVybiBzcGFjZTsK
LSAgICBzcGFjZXMubV9zdWJzcGFjZUZvckRlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlID0gbWFr
ZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKmNsaWVudERh
dGEubV9oZWFwQ2VsbFR5cGVGb3JKU0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlLCBKU0RlZGlj
YXRlZFdvcmtlckdsb2JhbFNjb3BlKTsKKyAgICBzcGFjZXMubV9zdWJzcGFjZUZvckRlZGljYXRl
ZFdvcmtlckdsb2JhbFNjb3BlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNF
X0lOSVQodm0uaGVhcCwgY2xpZW50RGF0YS5tX2hlYXBDZWxsVHlwZUZvckpTRGVkaWNhdGVkV29y
a2VyR2xvYmFsU2NvcGUsIEpTRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUpOwogICAgIGF1dG8q
IHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZS5n
ZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVf
V0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3Bl
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUuaAkocmV2aXNpb24gMjg2MDk1KQorKysgU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTRGVkaWNhdGVkV29ya2VyR2xv
YmFsU2NvcGUuaAkod29ya2luZyBjb3B5KQpAQCAtODIsNyArODIsNyBAQCBwdWJsaWM6CiAgICAg
c3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsK
ICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNEZWRpY2F0ZWRX
b3JrZXJHbG9iYWxTY29wZVByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxh
aW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAg
ICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0m
IHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90
b3R5cGUpCiAgICAgewpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTRXhwb3NlZFN0YXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU0V4cG9zZWRTdGFyLmNwcAkocmV2aXNpb24gMjg2MDk1KQor
KysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTRXhwb3NlZFN0YXIu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC03MSw3ICs3MSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMg
SlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAgICAg
ICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU0V4cG9zZWRTdGFyUHJvdG90
eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAg
ICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6
U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC0yMzYs
OSArMjM2LDkgQEAgSlNDOjpJc29TdWJzcGFjZSogSlNFeHBvc2VkU3Rhcjo6c3Vic3BhYwogICAg
ICAgICByZXR1cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxK
U0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU0V4cG9zZWRTdGFyPiB8fCAhSlNFeHBvc2VkU3Rh
cjo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2Zf
djxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU0V4cG9zZWRTdGFyPikKLSAgICAgICAgc3Bh
Y2VzLm1fc3Vic3BhY2VGb3JFeHBvc2VkU3RhciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElT
T19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5
cGUsIEpTRXhwb3NlZFN0YXIpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvckV4cG9zZWRT
dGFyID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwg
dm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCksIEpTRXhwb3NlZFN0YXIpOwogICAg
IGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JFeHBvc2VkU3RhciA9IG1ha2VVbmlx
dWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5jZWxsSGVhcENl
bGxUeXBlLCBKU0V4cG9zZWRTdGFyKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JFeHBv
c2VkU3RhciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhl
YXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNFeHBvc2VkU3Rhcik7CiAgICAgYXV0byogc3Bh
Y2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvckV4cG9zZWRTdGFyLmdldCgpOwogSUdOT1JFX1dBUk5J
TkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1
dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTRXhwb3NlZFRvV29ya2VyQW5kV2luZG93LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNFeHBvc2VkVG9Xb3JrZXJB
bmRXaW5kb3cuY3BwCShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNFeHBvc2VkVG9Xb3JrZXJBbmRXaW5kb3cuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xMTIsNyArMTEyLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1
YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19B
U1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTRXhwb3NlZFRvV29ya2VyQW5kV2luZG93UHJv
dG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAg
ICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpT
Qzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC0y
NTIsOSArMjUyLDkgQEAgSlNDOjpJc29TdWJzcGFjZSogSlNFeHBvc2VkVG9Xb3JrZXJBbmRXaQog
ICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2Zf
djxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU0V4cG9zZWRUb1dvcmtlckFuZFdpbmRvdz4g
fHwgIUpTRXhwb3NlZFRvV29ya2VyQW5kV2luZG93OjpuZWVkc0Rlc3RydWN0aW9uKTsKICAgICBp
ZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3Qs
IEpTRXhwb3NlZFRvV29ya2VyQW5kV2luZG93PikKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VG
b3JFeHBvc2VkVG9Xb3JrZXJBbmRXaW5kb3cgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09f
U1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBl
LCBKU0V4cG9zZWRUb1dvcmtlckFuZFdpbmRvdyk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNl
Rm9yRXhwb3NlZFRvV29ya2VyQW5kV2luZG93ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNP
X1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBl
KCksIEpTRXhwb3NlZFRvV29ya2VyQW5kV2luZG93KTsKICAgICBlbHNlCi0gICAgICAgIHNwYWNl
cy5tX3N1YnNwYWNlRm9yRXhwb3NlZFRvV29ya2VyQW5kV2luZG93ID0gbWFrZVVuaXF1ZTxJc29T
dWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmNlbGxIZWFwQ2VsbFR5cGUs
IEpTRXhwb3NlZFRvV29ya2VyQW5kV2luZG93KTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VG
b3JFeHBvc2VkVG9Xb3JrZXJBbmRXaW5kb3cgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09f
U1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCksIEpTRXhwb3NlZFRv
V29ya2VyQW5kV2luZG93KTsKICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9y
RXhwb3NlZFRvV29ya2VyQW5kV2luZG93LmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1
bnJlYWNoYWJsZS1jb2RlIikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNv
bXBhcmUiKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
UGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmNwcAko
cmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjks
NyArMTY5LDcgQEAgSlNDOjpJc29TdWJzcGFjZSogSlNQYWludFdvcmtsZXRHbG9iYWxTYwogICAg
IGF1dG8mIHNwYWNlcyA9IGNsaWVudERhdGEuc3Vic3BhY2VzKCk7CiAgICAgaWYgKGF1dG8qIHNw
YWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JQYWludFdvcmtsZXRHbG9iYWxTY29wZS5nZXQoKSkK
ICAgICAgICAgcmV0dXJuIHNwYWNlOwotICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yUGFpbnRXb3Jr
bGV0R2xvYmFsU2NvcGUgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5J
VCh2bS5oZWFwLCAqY2xpZW50RGF0YS5tX2hlYXBDZWxsVHlwZUZvckpTUGFpbnRXb3JrbGV0R2xv
YmFsU2NvcGUsIEpTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUpOworICAgIHNwYWNlcy5tX3N1YnNw
YWNlRm9yUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJ
U09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCBjbGllbnREYXRhLm1faGVhcENlbGxUeXBlRm9ySlNQ
YWludFdvcmtsZXRHbG9iYWxTY29wZSwgSlNQYWludFdvcmtsZXRHbG9iYWxTY29wZSk7CiAgICAg
YXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclBhaW50V29ya2xldEdsb2JhbFNjb3Bl
LmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKIElHTk9S
RV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRleDogU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNQYWludFdvcmtsZXRHbG9iYWxTY29wZS5oCShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNQYWludFdvcmtsZXRHbG9iYWxTY29w
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC04Miw3ICs4Miw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMg
SlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAgICAg
ICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1BhaW50V29ya2xldEdsb2Jh
bFNjb3BlUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNw
YWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAg
c3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAg
ICB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNTZXJ2
aWNlV29ya2VyR2xvYmFsU2NvcGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS5jcHAJKHJl
dmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2OSw3
ICsxNjksNyBAQCBKU0M6Oklzb1N1YnNwYWNlKiBKU1NlcnZpY2VXb3JrZXJHbG9iYWxTCiAgICAg
YXV0byYgc3BhY2VzID0gY2xpZW50RGF0YS5zdWJzcGFjZXMoKTsKICAgICBpZiAoYXV0byogc3Bh
Y2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS5nZXQoKSkK
ICAgICAgICAgcmV0dXJuIHNwYWNlOwotICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yU2VydmljZVdv
cmtlckdsb2JhbFNjb3BlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lO
SVQodm0uaGVhcCwgKmNsaWVudERhdGEubV9oZWFwQ2VsbFR5cGVGb3JKU1NlcnZpY2VXb3JrZXJH
bG9iYWxTY29wZSwgSlNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUpOworICAgIHNwYWNlcy5tX3N1
YnNwYWNlRm9yU2VydmljZVdvcmtlckdsb2JhbFNjb3BlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFj
ZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgY2xpZW50RGF0YS5tX2hlYXBDZWxsVHlwZUZv
ckpTU2VydmljZVdvcmtlckdsb2JhbFNjb3BlLCBKU1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSk7
CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclNlcnZpY2VXb3JrZXJHbG9i
YWxTY29wZS5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIp
CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1NlcnZpY2VXb3JrZXJHbG9i
YWxTY29wZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS5oCShyZXZpc2lvbiAyODYwOTUpCisr
KyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNTZXJ2aWNlV29ya2Vy
R2xvYmFsU2NvcGUuaAkod29ya2luZyBjb3B5KQpAQCAtODIsNyArODIsNyBAQCBwdWJsaWM6CiAg
ICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAg
IHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNTZXJ2aWNl
V29ya2VyR2xvYmFsU2NvcGVQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBs
YWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwog
ICAgIH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZN
JiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJv
dG90eXBlKQogICAgIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1NoYXJlZFdvcmtlckdsb2JhbFNjb3BlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNTaGFyZWRXb3JrZXJHbG9iYWxTY29w
ZS5jcHAJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1NoYXJlZFdvcmtlckdsb2JhbFNjb3BlLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTUzLDcgKzE1Myw3IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTU2hhcmVkV29ya2VyR2xvYmFs
U2MKICAgICBhdXRvJiBzcGFjZXMgPSBjbGllbnREYXRhLnN1YnNwYWNlcygpOwogICAgIGlmIChh
dXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yU2hhcmVkV29ya2VyR2xvYmFsU2NvcGUu
Z2V0KCkpCiAgICAgICAgIHJldHVybiBzcGFjZTsKLSAgICBzcGFjZXMubV9zdWJzcGFjZUZvclNo
YXJlZFdvcmtlckdsb2JhbFNjb3BlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQ
QUNFX0lOSVQodm0uaGVhcCwgKmNsaWVudERhdGEubV9oZWFwQ2VsbFR5cGVGb3JKU1NoYXJlZFdv
cmtlckdsb2JhbFNjb3BlLCBKU1NoYXJlZFdvcmtlckdsb2JhbFNjb3BlKTsKKyAgICBzcGFjZXMu
bV9zdWJzcGFjZUZvclNoYXJlZFdvcmtlckdsb2JhbFNjb3BlID0gbWFrZVVuaXF1ZTxJc29TdWJz
cGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgY2xpZW50RGF0YS5tX2hlYXBDZWxsVHlw
ZUZvckpTU2hhcmVkV29ya2VyR2xvYmFsU2NvcGUsIEpTU2hhcmVkV29ya2VyR2xvYmFsU2NvcGUp
OwogICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JTaGFyZWRXb3JrZXJHbG9i
YWxTY29wZS5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIp
CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1NoYXJlZFdvcmtlckdsb2Jh
bFNjb3BlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTU2hhcmVkV29ya2VyR2xvYmFsU2NvcGUuaAkocmV2aXNpb24gMjg2MDk1KQorKysg
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTU2hhcmVkV29ya2VyR2xv
YmFsU2NvcGUuaAkod29ya2luZyBjb3B5KQpAQCAtODIsNyArODIsNyBAQCBwdWJsaWM6CiAgICAg
c3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsK
ICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNTaGFyZWRXb3Jr
ZXJHbG9iYWxTY29wZVByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5P
YmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAg
fQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZt
LCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5
cGUpCiAgICAgewpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdENFUmVhY3Rpb25zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q0VSZWFjdGlvbnMuY3BwCShyZXZpc2lvbiAyODYw
OTUpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q0VS
ZWFjdGlvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05MSw3ICs5MSw3IEBAIHB1YmxpYzoKICAg
ICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAg
ewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3RDRVJl
YWN0aW9uc1Byb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RT
cGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAg
IHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6
OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAg
ICAgewpAQCAtNDM4LDkgKzQzOCw5IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdENFUmVhY3Rp
b25zOjpzdWIKICAgICAgICAgcmV0dXJuIHNwYWNlOwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjpp
c19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0Q0VSZWFjdGlvbnM+
IHx8ICFKU1Rlc3RDRVJlYWN0aW9uczo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3Rl
eHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RD
RVJlYWN0aW9ucz4pCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdENFUmVhY3Rpb25z
ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZt
LmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSwgSlNUZXN0Q0VSZWFjdGlvbnMpOworICAg
ICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RDRVJlYWN0aW9ucyA9IG1ha2VVbmlxdWU8SXNv
U3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVj
dEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RDRVJlYWN0aW9ucyk7CiAgICAgZWxzZQotICAgICAgICBz
cGFjZXMubV9zdWJzcGFjZUZvclRlc3RDRVJlYWN0aW9ucyA9IG1ha2VVbmlxdWU8SXNvU3Vic3Bh
Y2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5jZWxsSGVhcENlbGxUeXBlLCBKU1Rl
c3RDRVJlYWN0aW9ucyk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdENFUmVhY3Rp
b25zID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwg
dm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RDRVJlYWN0aW9ucyk7CiAgICAgYXV0byogc3Bh
Y2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RDRVJlYWN0aW9ucy5nZXQoKTsKIElHTk9SRV9X
QVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4o
InRhdXRvbG9naWNhbC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q0VSZWFj
dGlvbnNTdHJpbmdpZmllci5jcHAJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNzUsNyArNzUsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpT
Qzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAg
U1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0Q0VSZWFjdGlvbnNTdHJp
bmdpZmllclByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RT
cGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAg
IHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6
OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAg
ICAgewpAQCAtMjY0LDkgKzI2NCw5IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdENFUmVhY3Rp
b25zU3RyaW4KICAgICAgICAgcmV0dXJuIHNwYWNlOwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjpp
c19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0Q0VSZWFjdGlvbnNT
dHJpbmdpZmllcj4gfHwgIUpTVGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXI6Om5lZWRzRGVzdHJ1
Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3Ry
dWN0aWJsZU9iamVjdCwgSlNUZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllcj4pCi0gICAgICAgIHNw
YWNlcy5tX3N1YnNwYWNlRm9yVGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXIgPSBtYWtlVW5pcXVl
PElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uZGVzdHJ1Y3RpYmxl
T2JqZWN0SGVhcENlbGxUeXBlLCBKU1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyKTsKKyAgICAg
ICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllciA9IG1ha2VV
bmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0
aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyKTsK
ICAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdENFUmVhY3Rpb25zU3Ry
aW5naWZpZXIgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5o
ZWFwLCAqdm0uY2VsbEhlYXBDZWxsVHlwZSwgSlNUZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllcik7
CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXIg
PSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5j
ZWxsSGVhcENlbGxUeXBlKCksIEpTVGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXIpOwogICAgIGF1
dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmll
ci5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJR05P
UkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDYWxsVHJhY2VyLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
Q2FsbFRyYWNlci5jcHAJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDYWxsVHJhY2VyLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtOTcsNyArOTcsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1
YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09f
U1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0Q2FsbFRyYWNlclByb3RvdHlwZSwgQmFzZSk7Ci0gICAg
ICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFp
bk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRl
U3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAtNTEzLDkgKzUxMyw5IEBAIEpTQzo6
SXNvU3Vic3BhY2UqIEpTVGVzdENhbGxUcmFjZXI6OnN1YnMKICAgICAgICAgcmV0dXJuIHNwYWNl
OwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJs
ZU9iamVjdCwgSlNUZXN0Q2FsbFRyYWNlcj4gfHwgIUpTVGVzdENhbGxUcmFjZXI6Om5lZWRzRGVz
dHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rl
c3RydWN0aWJsZU9iamVjdCwgSlNUZXN0Q2FsbFRyYWNlcj4pCi0gICAgICAgIHNwYWNlcy5tX3N1
YnNwYWNlRm9yVGVzdENhbGxUcmFjZXIgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VC
U1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLCBK
U1Rlc3RDYWxsVHJhY2VyKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0Q2FsbFRy
YWNlciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAs
IHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RDYWxsVHJhY2VyKTsK
ICAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdENhbGxUcmFjZXIgPSBt
YWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uY2Vs
bEhlYXBDZWxsVHlwZSwgSlNUZXN0Q2FsbFRyYWNlcik7CisgICAgICAgIHNwYWNlcy5tX3N1YnNw
YWNlRm9yVGVzdENhbGxUcmFjZXIgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BB
Q0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCksIEpTVGVzdENhbGxUcmFjZXIp
OwogICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0Q2FsbFRyYWNlci5n
ZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVf
V0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25z
dHJ1Y3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yLmNwcAkocmV2aXNp
b24gMjg2MDk1KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NjQsNyArNjQsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNw
YWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VC
U1BBQ0VfU0hBUkFCTEUoSlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3JQcm90b3R5
cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAg
IHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KICAgICBzdGF0aWMgSlNDOjpT
dHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKQEAgLTE3Niw5
ICsxNzYsOSBAQCBKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3RDbGFzc1dpdGhKU0J1aWx0CiAgICAg
ICAgIHJldHVybiBzcGFjZTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpT
Qzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVj
dG9yPiB8fCAhSlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3I6Om5lZWRzRGVzdHJ1
Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3Ry
dWN0aWJsZU9iamVjdCwgSlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3I+KQotICAg
ICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3Rv
ciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2
bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUsIEpTVGVzdENsYXNzV2l0aEpTQnVpbHRp
bkNvbnN0cnVjdG9yKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0Q2xhc3NXaXRo
SlNCdWlsdGluQ29uc3RydWN0b3IgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BB
Q0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwgSlNU
ZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3IpOwogICAgIGVsc2UKLSAgICAgICAgc3Bh
Y2VzLm1fc3Vic3BhY2VGb3JUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3IgPSBtYWtl
VW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uY2VsbEhl
YXBDZWxsVHlwZSwgSlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3IpOworICAgICAg
ICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3RvciA9
IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNl
bGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3IpOwog
ICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0Q2xhc3NXaXRoSlNCdWls
dGluQ29uc3RydWN0b3IuZ2V0KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxl
LWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q29uZGl0
aW9uYWxJbmNsdWRlcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdENvbmRpdGlvbmFsSW5jbHVkZXMuY3BwCShyZXZpc2lvbiAy
ODYwOTUpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
Q29uZGl0aW9uYWxJbmNsdWRlcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyNyw3ICsxMjcsNyBA
QCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6
Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFC
TEUoSlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlc1Byb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJl
dHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVj
dFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0
dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6
SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAtNzg5LDkgKzc4OSw5IEBAIEpTQzo6SXNvU3Vi
c3BhY2UqIEpTVGVzdENvbmRpdGlvbmFsSW5jbHUKICAgICAgICAgcmV0dXJuIHNwYWNlOwogICAg
IHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVj
dCwgSlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlcz4gfHwgIUpTVGVzdENvbmRpdGlvbmFsSW5jbHVk
ZXM6Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29m
X3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlcz4p
Ci0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdENvbmRpdGlvbmFsSW5jbHVkZXMgPSBt
YWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uZGVz
dHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLCBKU1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzKTsK
KyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0Q29uZGl0aW9uYWxJbmNsdWRlcyA9IG1h
a2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3Ry
dWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzKTsK
ICAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdENvbmRpdGlvbmFsSW5j
bHVkZXMgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFw
LCAqdm0uY2VsbEhlYXBDZWxsVHlwZSwgSlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlcyk7CisgICAg
ICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdENvbmRpdGlvbmFsSW5jbHVkZXMgPSBtYWtlVW5p
cXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENl
bGxUeXBlKCksIEpTVGVzdENvbmRpdGlvbmFsSW5jbHVkZXMpOwogICAgIGF1dG8qIHNwYWNlID0g
c3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0Q29uZGl0aW9uYWxJbmNsdWRlcy5nZXQoKTsKIElHTk9S
RV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVH
SU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDb25kaXRpb25hbGx5UmVhZFdyaXRlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q29u
ZGl0aW9uYWxseVJlYWRXcml0ZS5jcHAJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDb25kaXRpb25hbGx5UmVhZFdyaXRl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTgsNyArOTgsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGlj
IEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAg
ICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0Q29uZGl0aW9uYWxs
eVJlYWRXcml0ZVByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmpl
Y3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQog
ICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBK
U0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUp
CiAgICAgewpAQCAtNjExLDkgKzYxMSw5IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdENvbmRp
dGlvbmFsbHlSZWEKICAgICAgICAgcmV0dXJuIHNwYWNlOwogICAgIHN0YXRpY19hc3NlcnQoc3Rk
Ojppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0Q29uZGl0aW9u
YWxseVJlYWRXcml0ZT4gfHwgIUpTVGVzdENvbmRpdGlvbmFsbHlSZWFkV3JpdGU6Om5lZWRzRGVz
dHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rl
c3RydWN0aWJsZU9iamVjdCwgSlNUZXN0Q29uZGl0aW9uYWxseVJlYWRXcml0ZT4pCi0gICAgICAg
IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdENvbmRpdGlvbmFsbHlSZWFkV3JpdGUgPSBtYWtlVW5p
cXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uZGVzdHJ1Y3Rp
YmxlT2JqZWN0SGVhcENlbGxUeXBlLCBKU1Rlc3RDb25kaXRpb25hbGx5UmVhZFdyaXRlKTsKKyAg
ICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0Q29uZGl0aW9uYWxseVJlYWRXcml0ZSA9IG1h
a2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3Ry
dWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RDb25kaXRpb25hbGx5UmVhZFdyaXRl
KTsKICAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdENvbmRpdGlvbmFs
bHlSZWFkV3JpdGUgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2
bS5oZWFwLCAqdm0uY2VsbEhlYXBDZWxsVHlwZSwgSlNUZXN0Q29uZGl0aW9uYWxseVJlYWRXcml0
ZSk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdENvbmRpdGlvbmFsbHlSZWFkV3Jp
dGUgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2
bS5jZWxsSGVhcENlbGxUeXBlKCksIEpTVGVzdENvbmRpdGlvbmFsbHlSZWFkV3JpdGUpOwogICAg
IGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0Q29uZGl0aW9uYWxseVJlYWRX
cml0ZS5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJ
R05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RET01KSVQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RE
T01KSVQuY3BwCShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0RE9NSklULmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDgxLDcg
KzQ4MSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VG
b3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFD
RV9TSEFSQUJMRShKU1Rlc3RET01KSVRQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4g
JnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFj
ZSgpOwogICAgIH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShK
U0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFs
dWUgcHJvdG90eXBlKQogICAgIHsKQEAgLTEyNTIsOSArMTI1Miw5IEBAIEpTQzo6SXNvU3Vic3Bh
Y2UqIEpTVGVzdERPTUpJVDo6c3Vic3BhY2UKICAgICAgICAgcmV0dXJuIHNwYWNlOwogICAgIHN0
YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwg
SlNUZXN0RE9NSklUPiB8fCAhSlNUZXN0RE9NSklUOjpuZWVkc0Rlc3RydWN0aW9uKTsKICAgICBp
ZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3Qs
IEpTVGVzdERPTUpJVD4pCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdERPTUpJVCA9
IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5k
ZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUsIEpTVGVzdERPTUpJVCk7CisgICAgICAgIHNw
YWNlcy5tX3N1YnNwYWNlRm9yVGVzdERPTUpJVCA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElT
T19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlw
ZSgpLCBKU1Rlc3RET01KSVQpOwogICAgIGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VG
b3JUZXN0RE9NSklUID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQo
dm0uaGVhcCwgKnZtLmNlbGxIZWFwQ2VsbFR5cGUsIEpTVGVzdERPTUpJVCk7CisgICAgICAgIHNw
YWNlcy5tX3N1YnNwYWNlRm9yVGVzdERPTUpJVCA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElT
T19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0RE9N
SklUKTsKICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdERPTUpJVC5n
ZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVf
V0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3REZWZhdWx0VG9KU09OLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
RGVmYXVsdFRvSlNPTi5jcHAJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3REZWZhdWx0VG9KU09OLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTI0LDcgKzEyNCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJz
cGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNT
RVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3REZWZhdWx0VG9KU09OUHJvdG90eXBlLCBC
YXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1
cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0
dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC04MDgsOSArODA4
LDkgQEAgSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0RGVmYXVsdFRvSlNPTjo6cwogICAgICAgICBy
ZXR1cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpT
RGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3REZWZhdWx0VG9KU09OPiB8fCAhSlNUZXN0RGVmYXVs
dFRvSlNPTjo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jh
c2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3REZWZhdWx0VG9KU09OPikK
LSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0RGVmYXVsdFRvSlNPTiA9IG1ha2VVbmlx
dWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5kZXN0cnVjdGli
bGVPYmplY3RIZWFwQ2VsbFR5cGUsIEpTVGVzdERlZmF1bHRUb0pTT04pOworICAgICAgICBzcGFj
ZXMubV9zdWJzcGFjZUZvclRlc3REZWZhdWx0VG9KU09OID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFj
ZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENl
bGxUeXBlKCksIEpTVGVzdERlZmF1bHRUb0pTT04pOwogICAgIGVsc2UKLSAgICAgICAgc3BhY2Vz
Lm1fc3Vic3BhY2VGb3JUZXN0RGVmYXVsdFRvSlNPTiA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+
IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5jZWxsSGVhcENlbGxUeXBlLCBKU1Rlc3RE
ZWZhdWx0VG9KU09OKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0RGVmYXVsdFRv
SlNPTiA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAs
IHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0RGVmYXVsdFRvSlNPTik7CiAgICAgYXV0byog
c3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3REZWZhdWx0VG9KU09OLmdldCgpOwogSUdO
T1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKIElHTk9SRV9XQVJOSU5HU19C
RUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZC5jcHAJKHJldmlzaW9uIDI4NjA5
NSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3REZWZh
dWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NSw3ICs3
NSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3Io
SlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9T
SEFSQUJMRShKU1Rlc3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWRQcm90b3R5cGUsIEJh
c2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVy
biAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1
cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKQEAgLTI3MCw5ICsyNzAs
OSBAQCBKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3REZWZhdWx0VG9KU09ORmlsCiAgICAgICAgIHJl
dHVybiBzcGFjZTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNE
ZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZD4g
fHwgIUpTVGVzdERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZDo6bmVlZHNEZXN0cnVjdGlv
bik7CiAgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3Rp
YmxlT2JqZWN0LCBKU1Rlc3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWQ+KQotICAgICAg
ICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWQg
PSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0u
ZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLCBKU1Rlc3REZWZhdWx0VG9KU09ORmlsdGVy
ZWRCeUV4cG9zZWQpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3REZWZhdWx0VG9K
U09ORmlsdGVyZWRCeUV4cG9zZWQgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BB
Q0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwgSlNU
ZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkKTsKICAgICBlbHNlCi0gICAgICAgIHNw
YWNlcy5tX3N1YnNwYWNlRm9yVGVzdERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZCA9IG1h
a2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5jZWxs
SGVhcENlbGxUeXBlLCBKU1Rlc3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWQpOworICAg
ICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9z
ZWQgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2
bS5jZWxsSGVhcENlbGxUeXBlKCksIEpTVGVzdERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3Nl
ZCk7CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3REZWZhdWx0VG9K
U09ORmlsdGVyZWRCeUV4cG9zZWQuZ2V0KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVh
Y2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFy
ZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
RGVmYXVsdFRvSlNPTkluZGlyZWN0SW5oZXJpdGFuY2UuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3REZWZhdWx0VG9KU09OSW5k
aXJlY3RJbmhlcml0YW5jZS5jcHAJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3REZWZhdWx0VG9KU09OSW5kaXJlY3RJbmhl
cml0YW5jZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYyLDcgKzYyLDcgQEAgcHVibGljOgogICAg
IHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7
CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdERlZmF1
bHRUb0pTT05JbmRpcmVjdEluaGVyaXRhbmNlUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0
dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0
U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1
cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpK
U1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC0xNjIsOSArMTYyLDkgQEAgSlNDOjpJc29TdWJz
cGFjZSogSlNUZXN0RGVmYXVsdFRvSlNPTkluZAogICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAg
c3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0
LCBKU1Rlc3REZWZhdWx0VG9KU09OSW5kaXJlY3RJbmhlcml0YW5jZT4gfHwgIUpTVGVzdERlZmF1
bHRUb0pTT05JbmRpcmVjdEluaGVyaXRhbmNlOjpuZWVkc0Rlc3RydWN0aW9uKTsKICAgICBpZiBj
b25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpT
VGVzdERlZmF1bHRUb0pTT05JbmRpcmVjdEluaGVyaXRhbmNlPikKLSAgICAgICAgc3BhY2VzLm1f
c3Vic3BhY2VGb3JUZXN0RGVmYXVsdFRvSlNPTkluZGlyZWN0SW5oZXJpdGFuY2UgPSBtYWtlVW5p
cXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uZGVzdHJ1Y3Rp
YmxlT2JqZWN0SGVhcENlbGxUeXBlLCBKU1Rlc3REZWZhdWx0VG9KU09OSW5kaXJlY3RJbmhlcml0
YW5jZSk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdERlZmF1bHRUb0pTT05JbmRp
cmVjdEluaGVyaXRhbmNlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lO
SVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCksIEpTVGVzdERl
ZmF1bHRUb0pTT05JbmRpcmVjdEluaGVyaXRhbmNlKTsKICAgICBlbHNlCi0gICAgICAgIHNwYWNl
cy5tX3N1YnNwYWNlRm9yVGVzdERlZmF1bHRUb0pTT05JbmRpcmVjdEluaGVyaXRhbmNlID0gbWFr
ZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmNlbGxI
ZWFwQ2VsbFR5cGUsIEpTVGVzdERlZmF1bHRUb0pTT05JbmRpcmVjdEluaGVyaXRhbmNlKTsKKyAg
ICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0RGVmYXVsdFRvSlNPTkluZGlyZWN0SW5oZXJp
dGFuY2UgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFw
LCB2bS5jZWxsSGVhcENlbGxUeXBlKCksIEpTVGVzdERlZmF1bHRUb0pTT05JbmRpcmVjdEluaGVy
aXRhbmNlKTsKICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdERlZmF1
bHRUb0pTT05JbmRpcmVjdEluaGVyaXRhbmNlLmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lO
KCJ1bnJlYWNoYWJsZS1jb2RlIikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2Fs
LWNvbXBhcmUiKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdERlZmF1bHRUb0pTT05Jbmhlcml0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RGVmYXVsdFRvSlNPTkluaGVyaXQu
Y3BwCShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0RGVmYXVsdFRvSlNPTkluaGVyaXQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC04OSw3ICs4OSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vi
c3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19T
VUJTUEFDRV9TSEFSQUJMRShKU1Rlc3REZWZhdWx0VG9KU09OSW5oZXJpdFByb3RvdHlwZSwgQmFz
ZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJu
ICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVy
ZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAtMjkyLDkgKzI5Miw5
IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdERlZmF1bHRUb0pTT05JbmgKICAgICAgICAgcmV0
dXJuIHNwYWNlOwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rl
c3RydWN0aWJsZU9iamVjdCwgSlNUZXN0RGVmYXVsdFRvSlNPTkluaGVyaXQ+IHx8ICFKU1Rlc3RE
ZWZhdWx0VG9KU09OSW5oZXJpdDo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3RleHBy
IChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3REZWZh
dWx0VG9KU09OSW5oZXJpdD4pCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdERlZmF1
bHRUb0pTT05Jbmhlcml0ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lO
SVQodm0uaGVhcCwgKnZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSwgSlNUZXN0RGVm
YXVsdFRvSlNPTkluaGVyaXQpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3REZWZh
dWx0VG9KU09OSW5oZXJpdCA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9J
TklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RE
ZWZhdWx0VG9KU09OSW5oZXJpdCk7CiAgICAgZWxzZQotICAgICAgICBzcGFjZXMubV9zdWJzcGFj
ZUZvclRlc3REZWZhdWx0VG9KU09OSW5oZXJpdCA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElT
T19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5jZWxsSGVhcENlbGxUeXBlLCBKU1Rlc3REZWZh
dWx0VG9KU09OSW5oZXJpdCk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdERlZmF1
bHRUb0pTT05Jbmhlcml0ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lO
SVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3REZWZhdWx0VG9KU09OSW5o
ZXJpdCk7CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3REZWZhdWx0
VG9KU09OSW5oZXJpdC5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUt
Y29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3REZWZhdWx0
VG9KU09OSW5oZXJpdEZpbmFsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RGVmYXVsdFRvSlNPTkluaGVyaXRGaW5hbC5jcHAJ
KHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3REZWZhdWx0VG9KU09OSW5oZXJpdEZpbmFsLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtOTEsNyArOTEsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1
YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09f
U1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0RGVmYXVsdFRvSlNPTkluaGVyaXRGaW5hbFByb3RvdHlw
ZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAg
cmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0
cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAtMzMyLDkg
KzMzMiw5IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdERlZmF1bHRUb0pTT05JbmgKICAgICAg
ICAgcmV0dXJuIHNwYWNlOwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlND
OjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0RGVmYXVsdFRvSlNPTkluaGVyaXRGaW5hbD4g
fHwgIUpTVGVzdERlZmF1bHRUb0pTT05Jbmhlcml0RmluYWw6Om5lZWRzRGVzdHJ1Y3Rpb24pOwog
ICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9i
amVjdCwgSlNUZXN0RGVmYXVsdFRvSlNPTkluaGVyaXRGaW5hbD4pCi0gICAgICAgIHNwYWNlcy5t
X3N1YnNwYWNlRm9yVGVzdERlZmF1bHRUb0pTT05Jbmhlcml0RmluYWwgPSBtYWtlVW5pcXVlPElz
b1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uZGVzdHJ1Y3RpYmxlT2Jq
ZWN0SGVhcENlbGxUeXBlLCBKU1Rlc3REZWZhdWx0VG9KU09OSW5oZXJpdEZpbmFsKTsKKyAgICAg
ICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0RGVmYXVsdFRvSlNPTkluaGVyaXRGaW5hbCA9IG1h
a2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3Ry
dWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3REZWZhdWx0VG9KU09OSW5oZXJpdEZp
bmFsKTsKICAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdERlZmF1bHRU
b0pTT05Jbmhlcml0RmluYWwgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0Vf
SU5JVCh2bS5oZWFwLCAqdm0uY2VsbEhlYXBDZWxsVHlwZSwgSlNUZXN0RGVmYXVsdFRvSlNPTklu
aGVyaXRGaW5hbCk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdERlZmF1bHRUb0pT
T05Jbmhlcml0RmluYWwgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5J
VCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCksIEpTVGVzdERlZmF1bHRUb0pTT05Jbmhl
cml0RmluYWwpOwogICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0RGVm
YXVsdFRvSlNPTkluaGVyaXRGaW5hbC5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5y
ZWFjaGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21w
YXJlIikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RGVsZWdhdGVUb1No
YXJlZFN5bnRoZXRpY0F0dHJpYnV0ZS5jcHAJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3lu
dGhldGljQXR0cmlidXRlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzAsNyArNzAsNyBAQCBwdWJs
aWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZt
KQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNU
ZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZVByb3RvdHlwZSwgQmFzZSk7Ci0g
ICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5w
bGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3Jl
YXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAtMjQ2LDkgKzI0Niw5IEBAIEpT
Qzo6SXNvU3Vic3BhY2UqIEpTVGVzdERlbGVnYXRlVG9TaGFyZWQKICAgICAgICAgcmV0dXJuIHNw
YWNlOwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0
aWJsZU9iamVjdCwgSlNUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZT4gfHwg
IUpTVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGU6Om5lZWRzRGVzdHJ1Y3Rp
b24pOwogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0
aWJsZU9iamVjdCwgSlNUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZT4pCi0g
ICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNB
dHRyaWJ1dGUgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5o
ZWFwLCAqdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLCBKU1Rlc3REZWxlZ2F0ZVRv
U2hhcmVkU3ludGhldGljQXR0cmlidXRlKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JU
ZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZSA9IG1ha2VVbmlxdWU8SXNvU3Vi
c3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhl
YXBDZWxsVHlwZSgpLCBKU1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlKTsK
ICAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdERlbGVnYXRlVG9TaGFy
ZWRTeW50aGV0aWNBdHRyaWJ1dGUgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BB
Q0VfSU5JVCh2bS5oZWFwLCAqdm0uY2VsbEhlYXBDZWxsVHlwZSwgSlNUZXN0RGVsZWdhdGVUb1No
YXJlZFN5bnRoZXRpY0F0dHJpYnV0ZSk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVz
dERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGUgPSBtYWtlVW5pcXVlPElzb1N1YnNw
YWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCksIEpT
VGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGUpOwogICAgIGF1dG8qIHNwYWNl
ID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJp
YnV0ZS5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJ
R05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3REb21haW5TZWN1cml0eS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdERvbWFpblNlY3VyaXR5LmNwcAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERvbWFpblNlY3VyaXR5LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtODAsNyArODAsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6
SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RB
VElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0RG9tYWluU2VjdXJpdHlQcm90
b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAg
ICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KICAgICBzdGF0aWMgSlND
OjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKQEAgLTMy
MCw5ICszMjAsOSBAQCBKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3REb21haW5TZWN1cml0eTo6CiAg
ICAgICAgIHJldHVybiBzcGFjZTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92
PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdERvbWFpblNlY3VyaXR5PiB8fCAhSlNU
ZXN0RG9tYWluU2VjdXJpdHk6Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhwciAo
c3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0RG9tYWlu
U2VjdXJpdHk+KQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3REb21haW5TZWN1cml0
eSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2
bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUsIEpTVGVzdERvbWFpblNlY3VyaXR5KTsK
KyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0RG9tYWluU2VjdXJpdHkgPSBtYWtlVW5p
cXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGli
bGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0RG9tYWluU2VjdXJpdHkpOwogICAgIGVsc2UK
LSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0RG9tYWluU2VjdXJpdHkgPSBtYWtlVW5p
cXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uY2VsbEhlYXBD
ZWxsVHlwZSwgSlNUZXN0RG9tYWluU2VjdXJpdHkpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFj
ZUZvclRlc3REb21haW5TZWN1cml0eSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJT
UEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0RG9tYWluU2Vj
dXJpdHkpOwogICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0RG9tYWlu
U2VjdXJpdHkuZ2V0KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUi
KQogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RW5hYmxlZEJ5U2V0
dGluZy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdEVuYWJsZWRCeVNldHRpbmcuY3BwCShyZXZpc2lvbiAyODYwOTUpCisrKyBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RW5hYmxlZEJ5U2V0
dGluZy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTkyLDcgKzkyLDcgQEAgcHVibGljOgogICAgIHN0
YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAg
ICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdEVuYWJsZWRC
eVNldHRpbmdQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0
U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KICAg
ICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlND
OjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQog
ICAgIHsKQEAgLTQ1OSw5ICs0NTksOSBAQCBKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3RFbmFibGVk
QnlTZXR0aW5nCiAgICAgICAgIHJldHVybiBzcGFjZTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6
aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdEVuYWJsZWRCeVNl
dHRpbmc+IHx8ICFKU1Rlc3RFbmFibGVkQnlTZXR0aW5nOjpuZWVkc0Rlc3RydWN0aW9uKTsKICAg
ICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmpl
Y3QsIEpTVGVzdEVuYWJsZWRCeVNldHRpbmc+KQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZv
clRlc3RFbmFibGVkQnlTZXR0aW5nID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQ
QUNFX0lOSVQodm0uaGVhcCwgKnZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSwgSlNU
ZXN0RW5hYmxlZEJ5U2V0dGluZyk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEVu
YWJsZWRCeVNldHRpbmcgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5J
VCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0RW5h
YmxlZEJ5U2V0dGluZyk7CiAgICAgZWxzZQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRl
c3RFbmFibGVkQnlTZXR0aW5nID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNF
X0lOSVQodm0uaGVhcCwgKnZtLmNlbGxIZWFwQ2VsbFR5cGUsIEpTVGVzdEVuYWJsZWRCeVNldHRp
bmcpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RFbmFibGVkQnlTZXR0aW5nID0g
bWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2Vs
bEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RFbmFibGVkQnlTZXR0aW5nKTsKICAgICBhdXRvKiBzcGFj
ZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEVuYWJsZWRCeVNldHRpbmcuZ2V0KCk7CiBJR05P
UkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JF
R0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RW5hYmxlZEZvckNvbnRleHQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFbmFibGVk
Rm9yQ29udGV4dC5jcHAJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFbmFibGVkRm9yQ29udGV4dC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTY2LDcgKzY2LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNw
YWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NF
UlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdEVuYWJsZWRGb3JDb250ZXh0UHJvdG90eXBl
LCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICBy
ZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3Ry
dWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC0xODYsOSAr
MTg2LDkgQEAgSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0RW5hYmxlZEZvckNvbnRleAogICAgICAg
ICByZXR1cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6
OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RFbmFibGVkRm9yQ29udGV4dD4gfHwgIUpTVGVz
dEVuYWJsZWRGb3JDb250ZXh0OjpuZWVkc0Rlc3RydWN0aW9uKTsKICAgICBpZiBjb25zdGV4cHIg
KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdEVuYWJs
ZWRGb3JDb250ZXh0PikKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0RW5hYmxlZEZv
ckNvbnRleHQgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5o
ZWFwLCAqdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLCBKU1Rlc3RFbmFibGVkRm9y
Q29udGV4dCk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEVuYWJsZWRGb3JDb250
ZXh0ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwg
dm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCksIEpTVGVzdEVuYWJsZWRGb3JDb250
ZXh0KTsKICAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEVuYWJsZWRG
b3JDb250ZXh0ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0u
aGVhcCwgKnZtLmNlbGxIZWFwQ2VsbFR5cGUsIEpTVGVzdEVuYWJsZWRGb3JDb250ZXh0KTsKKyAg
ICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0RW5hYmxlZEZvckNvbnRleHQgPSBtYWtlVW5p
cXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENl
bGxUeXBlKCksIEpTVGVzdEVuYWJsZWRGb3JDb250ZXh0KTsKICAgICBhdXRvKiBzcGFjZSA9IHNw
YWNlcy5tX3N1YnNwYWNlRm9yVGVzdEVuYWJsZWRGb3JDb250ZXh0LmdldCgpOwogSUdOT1JFX1dB
Uk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigi
dGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50Q29uc3RydWN0b3IuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudENvbnN0cnVj
dG9yLmNwcAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50Q29uc3RydWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xNDcsNyArMTQ3LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBz
dWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNP
X1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdEV2ZW50Q29uc3RydWN0b3JQcm90b3R5cGUsIEJhc2Up
OwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAm
dm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUq
IGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKQEAgLTMyMSw5ICszMjEsOSBA
QCBKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3RFdmVudENvbnN0cnVjdG9yCiAgICAgICAgIHJldHVy
biBzcGFjZTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0
cnVjdGlibGVPYmplY3QsIEpTVGVzdEV2ZW50Q29uc3RydWN0b3I+IHx8ICFKU1Rlc3RFdmVudENv
bnN0cnVjdG9yOjpuZWVkc0Rlc3RydWN0aW9uKTsKICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNf
YmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdEV2ZW50Q29uc3RydWN0
b3I+KQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RFdmVudENvbnN0cnVjdG9yID0g
bWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmRl
c3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSwgSlNUZXN0RXZlbnRDb25zdHJ1Y3Rvcik7Cisg
ICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEV2ZW50Q29uc3RydWN0b3IgPSBtYWtlVW5p
cXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGli
bGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0RXZlbnRDb25zdHJ1Y3Rvcik7CiAgICAgZWxz
ZQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RFdmVudENvbnN0cnVjdG9yID0gbWFr
ZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmNlbGxI
ZWFwQ2VsbFR5cGUsIEpTVGVzdEV2ZW50Q29uc3RydWN0b3IpOworICAgICAgICBzcGFjZXMubV9z
dWJzcGFjZUZvclRlc3RFdmVudENvbnN0cnVjdG9yID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4g
SVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RF
dmVudENvbnN0cnVjdG9yKTsKICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9y
VGVzdEV2ZW50Q29uc3RydWN0b3IuZ2V0KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVh
Y2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFy
ZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
RXZlbnRUYXJnZXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudFRhcmdldC5jcHAJKHJldmlzaW9uIDI4NjA5NSkKKysr
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudFRhcmdl
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTczLDcgKzczLDcgQEAgcHVibGljOgogICAgIHN0YXRp
YyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAg
ICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdEV2ZW50VGFyZ2V0
UHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOwor
ICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGlj
IEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBA
IC0yNjIsOSArMjYyLDkgQEAgSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0RXZlbnRUYXJnZXQ6OnN1
YgogICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vf
b2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RFdmVudFRhcmdldD4gfHwgIUpT
VGVzdEV2ZW50VGFyZ2V0OjpuZWVkc0Rlc3RydWN0aW9uKTsKICAgICBpZiBjb25zdGV4cHIgKHN0
ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdEV2ZW50VGFy
Z2V0PikKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0RXZlbnRUYXJnZXQgPSBtYWtl
VW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uZGVzdHJ1
Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLCBKU1Rlc3RFdmVudFRhcmdldCk7CisgICAgICAgIHNw
YWNlcy5tX3N1YnNwYWNlRm9yVGVzdEV2ZW50VGFyZ2V0ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFj
ZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENl
bGxUeXBlKCksIEpTVGVzdEV2ZW50VGFyZ2V0KTsKICAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5t
X3N1YnNwYWNlRm9yVGVzdEV2ZW50VGFyZ2V0ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNP
X1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmNlbGxIZWFwQ2VsbFR5cGUsIEpTVGVzdEV2ZW50
VGFyZ2V0KTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0RXZlbnRUYXJnZXQgPSBt
YWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxs
SGVhcENlbGxUeXBlKCksIEpTVGVzdEV2ZW50VGFyZ2V0KTsKICAgICBhdXRvKiBzcGFjZSA9IHNw
YWNlcy5tX3N1YnNwYWNlRm9yVGVzdEV2ZW50VGFyZ2V0LmdldCgpOwogSUdOT1JFX1dBUk5JTkdT
X0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9s
b2dpY2FsLWNvbXBhcmUiKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdEV4Y2VwdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV4Y2VwdGlvbi5jcHAJKHJldmlzaW9uIDI4
NjA5NSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RF
eGNlcHRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02Niw3ICs2Niw3IEBAIHB1YmxpYzoKICAg
ICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAg
ewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3RFeGNl
cHRpb25Qcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3Bh
Y2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KICAgICBz
dGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAg
IHsKQEAgLTE4Nyw5ICsxODcsOSBAQCBKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3RFeGNlcHRpb246
OnN1YnNwCiAgICAgICAgIHJldHVybiBzcGFjZTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNf
YmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdEV4Y2VwdGlvbj4gfHwg
IUpTVGVzdEV4Y2VwdGlvbjo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3RleHByIChz
dGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RFeGNlcHRp
b24+KQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RFeGNlcHRpb24gPSBtYWtlVW5p
cXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uZGVzdHJ1Y3Rp
YmxlT2JqZWN0SGVhcENlbGxUeXBlLCBKU1Rlc3RFeGNlcHRpb24pOworICAgICAgICBzcGFjZXMu
bV9zdWJzcGFjZUZvclRlc3RFeGNlcHRpb24gPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09f
U1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUo
KSwgSlNUZXN0RXhjZXB0aW9uKTsKICAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNl
Rm9yVGVzdEV4Y2VwdGlvbiA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9J
TklUKHZtLmhlYXAsICp2bS5jZWxsSGVhcENlbGxUeXBlLCBKU1Rlc3RFeGNlcHRpb24pOworICAg
ICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RFeGNlcHRpb24gPSBtYWtlVW5pcXVlPElzb1N1
YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCks
IEpTVGVzdEV4Y2VwdGlvbik7CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZv
clRlc3RFeGNlcHRpb24uZ2V0KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxl
LWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2VuZXJh
dGVBZGRPcGFxdWVSb290LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2VuZXJhdGVBZGRPcGFxdWVSb290LmNwcAkocmV2aXNp
b24gMjg2MDk1KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdEdlbmVyYXRlQWRkT3BhcXVlUm9vdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY2LDcgKzY2
LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihK
U0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NI
QVJBQkxFKEpTVGVzdEdlbmVyYXRlQWRkT3BhcXVlUm9vdFByb3RvdHlwZSwgQmFzZSk7Ci0gICAg
ICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFp
bk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRl
U3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAtMTg3LDkgKzE4Nyw5IEBAIEpTQzo6
SXNvU3Vic3BhY2UqIEpTVGVzdEdlbmVyYXRlQWRkT3BhcXUKICAgICAgICAgcmV0dXJuIHNwYWNl
OwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJs
ZU9iamVjdCwgSlNUZXN0R2VuZXJhdGVBZGRPcGFxdWVSb290PiB8fCAhSlNUZXN0R2VuZXJhdGVB
ZGRPcGFxdWVSb290OjpuZWVkc0Rlc3RydWN0aW9uKTsKICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6
aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdEdlbmVyYXRlQWRk
T3BhcXVlUm9vdD4pCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEdlbmVyYXRlQWRk
T3BhcXVlUm9vdCA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZt
LmhlYXAsICp2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUsIEpTVGVzdEdlbmVyYXRl
QWRkT3BhcXVlUm9vdCk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEdlbmVyYXRl
QWRkT3BhcXVlUm9vdCA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklU
KHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RHZW5l
cmF0ZUFkZE9wYXF1ZVJvb3QpOwogICAgIGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VG
b3JUZXN0R2VuZXJhdGVBZGRPcGFxdWVSb290ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNP
X1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmNlbGxIZWFwQ2VsbFR5cGUsIEpTVGVzdEdlbmVy
YXRlQWRkT3BhcXVlUm9vdCk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEdlbmVy
YXRlQWRkT3BhcXVlUm9vdCA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9J
TklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0R2VuZXJhdGVBZGRPcGFx
dWVSb290KTsKICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEdlbmVy
YXRlQWRkT3BhcXVlUm9vdC5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFi
bGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RHZW5l
cmF0ZUlzUmVhY2hhYmxlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZS5jcHAJKHJldmlzaW9u
IDI4NjA5NSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RHZW5lcmF0ZUlzUmVhY2hhYmxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjYsNyArNjYsNyBA
QCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6
Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFC
TEUoSlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZVByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJl
dHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVj
dFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0
dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6
SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAtMTk3LDkgKzE5Nyw5IEBAIEpTQzo6SXNvU3Vi
c3BhY2UqIEpTVGVzdEdlbmVyYXRlSXNSZWFjaGEKICAgICAgICAgcmV0dXJuIHNwYWNlOwogICAg
IHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVj
dCwgSlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZT4gfHwgIUpTVGVzdEdlbmVyYXRlSXNSZWFjaGFi
bGU6Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29m
X3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZT4p
Ci0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEdlbmVyYXRlSXNSZWFjaGFibGUgPSBt
YWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uZGVz
dHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLCBKU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlKTsK
KyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZSA9IG1h
a2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3Ry
dWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlKTsK
ICAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEdlbmVyYXRlSXNSZWFj
aGFibGUgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFw
LCAqdm0uY2VsbEhlYXBDZWxsVHlwZSwgSlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZSk7CisgICAg
ICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEdlbmVyYXRlSXNSZWFjaGFibGUgPSBtYWtlVW5p
cXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENl
bGxUeXBlKCksIEpTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGUpOwogICAgIGF1dG8qIHNwYWNlID0g
c3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZS5nZXQoKTsKIElHTk9S
RV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVH
SU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RHbG9iYWxPYmplY3QuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RHbG9iYWxPYmplY3Qu
Y3BwCShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0R2xvYmFsT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTgxNCw3
ICsxODE0LDcgQEAgSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0R2xvYmFsT2JqZWN0OjpzdQogICAg
IGF1dG8mIHNwYWNlcyA9IGNsaWVudERhdGEuc3Vic3BhY2VzKCk7CiAgICAgaWYgKGF1dG8qIHNw
YWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0R2xvYmFsT2JqZWN0LmdldCgpKQogICAgICAg
ICByZXR1cm4gc3BhY2U7Ci0gICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0R2xvYmFsT2JqZWN0
ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKmNs
aWVudERhdGEubV9oZWFwQ2VsbFR5cGVGb3JKU1Rlc3RHbG9iYWxPYmplY3QsIEpTVGVzdEdsb2Jh
bE9iamVjdCk7CisgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0R2xvYmFsT2JqZWN0ID0gbWFr
ZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgY2xpZW50RGF0
YS5tX2hlYXBDZWxsVHlwZUZvckpTVGVzdEdsb2JhbE9iamVjdCwgSlNUZXN0R2xvYmFsT2JqZWN0
KTsKICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEdsb2JhbE9iamVj
dC5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJR05P
UkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RHbG9iYWxPYmplY3QuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
R2xvYmFsT2JqZWN0LmgJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RHbG9iYWxPYmplY3QuaAkod29ya2luZyBjb3B5KQpA
QCAtOTgsNyArOTgsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1
YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09f
U1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0R2xvYmFsT2JqZWN0UHJvdG90eXBlLCBCYXNlKTsKLSAg
ICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBs
YWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVh
dGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW5kZXhlZFNldHRlck5vSWRlbnRpZmllci5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXIuY3BwCShyZXZpc2lvbiAyODYwOTUpCisr
KyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW5kZXhlZFNl
dHRlck5vSWRlbnRpZmllci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY1LDcgKzY1LDcgQEAgcHVi
bGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2
bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpT
VGVzdEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXJQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICBy
ZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmpl
Y3RTcGFjZSgpOwogICAgIH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVj
dHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6
OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKQEAgLTI3Niw5ICsyNzYsOSBAQCBKU0M6Oklzb1N1
YnNwYWNlKiBKU1Rlc3RJbmRleGVkU2V0dGVyTm9JCiAgICAgICAgIHJldHVybiBzcGFjZTsKICAg
ICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmpl
Y3QsIEpTVGVzdEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXI+IHx8ICFKU1Rlc3RJbmRleGVkU2V0
dGVyTm9JZGVudGlmaWVyOjpuZWVkc0Rlc3RydWN0aW9uKTsKICAgICBpZiBjb25zdGV4cHIgKHN0
ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdEluZGV4ZWRT
ZXR0ZXJOb0lkZW50aWZpZXI+KQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RJbmRl
eGVkU2V0dGVyTm9JZGVudGlmaWVyID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQ
QUNFX0lOSVQodm0uaGVhcCwgKnZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSwgSlNU
ZXN0SW5kZXhlZFNldHRlck5vSWRlbnRpZmllcik7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNl
Rm9yVGVzdEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXIgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNl
PiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2Vs
bFR5cGUoKSwgSlNUZXN0SW5kZXhlZFNldHRlck5vSWRlbnRpZmllcik7CiAgICAgZWxzZQotICAg
ICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyID0g
bWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmNl
bGxIZWFwQ2VsbFR5cGUsIEpTVGVzdEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXIpOworICAgICAg
ICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyID0gbWFr
ZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhl
YXBDZWxsVHlwZSgpLCBKU1Rlc3RJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyKTsKICAgICBhdXRv
KiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZp
ZXIuZ2V0KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdO
T1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW5kZXhlZFNldHRlclRocm93
aW5nRXhjZXB0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uLmNwcAko
cmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTY1LDcgKzY1LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNl
KiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRf
SVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlv
blByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsK
KyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRp
YyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpA
QCAtMjc2LDkgKzI3Niw5IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdEluZGV4ZWRTZXR0ZXJU
aHIKICAgICAgICAgcmV0dXJuIHNwYWNlOwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNl
X29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0SW5kZXhlZFNldHRlclRocm93
aW5nRXhjZXB0aW9uPiB8fCAhSlNUZXN0SW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uOjpu
ZWVkc0Rlc3RydWN0aW9uKTsKICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpT
Qzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2Vw
dGlvbj4pCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEluZGV4ZWRTZXR0ZXJUaHJv
d2luZ0V4Y2VwdGlvbiA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklU
KHZtLmhlYXAsICp2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUsIEpTVGVzdEluZGV4
ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbik7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9y
VGVzdEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbiA9IG1ha2VVbmlxdWU8SXNvU3Vic3Bh
Y2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBD
ZWxsVHlwZSgpLCBKU1Rlc3RJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24pOwogICAgIGVs
c2UKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0SW5kZXhlZFNldHRlclRocm93aW5n
RXhjZXB0aW9uID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0u
aGVhcCwgKnZtLmNlbGxIZWFwQ2VsbFR5cGUsIEpTVGVzdEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4
Y2VwdGlvbik7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEluZGV4ZWRTZXR0ZXJU
aHJvd2luZ0V4Y2VwdGlvbiA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9J
TklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0SW5kZXhlZFNldHRlclRo
cm93aW5nRXhjZXB0aW9uKTsKICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9y
VGVzdEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5nZXQoKTsKIElHTk9SRV9XQVJOSU5H
U19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRv
bG9naWNhbC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXIuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbmRleGVk
U2V0dGVyV2l0aElkZW50aWZpZXIuY3BwCShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW5kZXhlZFNldHRlcldpdGhJZGVu
dGlmaWVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzMsNyArNzMsNyBAQCBwdWJsaWM6CiAgICAg
c3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsK
ICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0SW5kZXhl
ZFNldHRlcldpdGhJZGVudGlmaWVyUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2
bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2Uo
KTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlND
OjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVl
IHByb3RvdHlwZSkKICAgICB7CkBAIC0zMDgsOSArMzA4LDkgQEAgSlNDOjpJc29TdWJzcGFjZSog
SlNUZXN0SW5kZXhlZFNldHRlcldpdAogICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAgc3RhdGlj
X2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rl
c3RJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXI+IHx8ICFKU1Rlc3RJbmRleGVkU2V0dGVyV2l0
aElkZW50aWZpZXI6Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjpp
c19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0SW5kZXhlZFNldHRl
cldpdGhJZGVudGlmaWVyPikKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0SW5kZXhl
ZFNldHRlcldpdGhJZGVudGlmaWVyID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQ
QUNFX0lOSVQodm0uaGVhcCwgKnZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSwgSlNU
ZXN0SW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3Bh
Y2VGb3JUZXN0SW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyID0gbWFrZVVuaXF1ZTxJc29TdWJz
cGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVh
cENlbGxUeXBlKCksIEpTVGVzdEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllcik7CiAgICAgZWxz
ZQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RJbmRleGVkU2V0dGVyV2l0aElkZW50
aWZpZXIgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFw
LCAqdm0uY2VsbEhlYXBDZWxsVHlwZSwgSlNUZXN0SW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVy
KTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0SW5kZXhlZFNldHRlcldpdGhJZGVu
dGlmaWVyID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVh
cCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RJbmRleGVkU2V0dGVyV2l0aElkZW50aWZp
ZXIpOwogICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0SW5kZXhlZFNl
dHRlcldpdGhJZGVudGlmaWVyLmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNo
YWJsZS1jb2RlIikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUi
KQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdElu
dGVyZmFjZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZS5jcHAJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2UuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xODEsNyArMTgxLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6
Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNU
QVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdEludGVyZmFjZVByb3RvdHlw
ZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAg
cmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0
cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAtMTEwNCw5
ICsxMTA0LDkgQEAgcHVibGljOgogICAgICAgICAgICAgcmV0dXJuIHNwYWNlOwogICAgICAgICBz
dGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3Qs
IFRlc3RJbnRlcmZhY2VJdGVyYXRvcj4gfHwgIVRlc3RJbnRlcmZhY2VJdGVyYXRvcjo6bmVlZHNE
ZXN0cnVjdGlvbik7CiAgICAgICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlND
OjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgVGVzdEludGVyZmFjZUl0ZXJhdG9yPikKLSAgICAgICAg
ICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEludGVyZmFjZUl0ZXJhdG9yID0gbWFrZVVuaXF1
ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmRlc3RydWN0aWJs
ZU9iamVjdEhlYXBDZWxsVHlwZS5nZXQoKSwgVGVzdEludGVyZmFjZUl0ZXJhdG9yKTsKKyAgICAg
ICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEludGVyZmFjZUl0ZXJhdG9yID0gbWFrZVVu
aXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3Rp
YmxlT2JqZWN0SGVhcENlbGxUeXBlKCksIFRlc3RJbnRlcmZhY2VJdGVyYXRvcik7CiAgICAgICAg
IGVsc2UKLSAgICAgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEludGVyZmFjZUl0ZXJh
dG9yID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwg
KnZtLmNlbGxIZWFwQ2VsbFR5cGUsIFRlc3RJbnRlcmZhY2VJdGVyYXRvcik7CisgICAgICAgICAg
ICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RJbnRlcmZhY2VJdGVyYXRvciA9IG1ha2VVbmlxdWU8
SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5
cGUoKSwgVGVzdEludGVyZmFjZUl0ZXJhdG9yKTsKICAgICAgICAgYXV0byogc3BhY2UgPSBzcGFj
ZXMubV9zdWJzcGFjZUZvclRlc3RJbnRlcmZhY2VJdGVyYXRvci5nZXQoKTsKIElHTk9SRV9XQVJO
SU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRh
dXRvbG9naWNhbC1jb21wYXJlIikKQEAgLTExOTYsOSArMTE5Niw5IEBAIEpTQzo6SXNvU3Vic3Bh
Y2UqIEpTVGVzdEludGVyZmFjZTo6c3Vic3AKICAgICAgICAgcmV0dXJuIHNwYWNlOwogICAgIHN0
YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwg
SlNUZXN0SW50ZXJmYWNlPiB8fCAhSlNUZXN0SW50ZXJmYWNlOjpuZWVkc0Rlc3RydWN0aW9uKTsK
ICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVP
YmplY3QsIEpTVGVzdEludGVyZmFjZT4pCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVz
dEludGVyZmFjZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZt
LmhlYXAsICp2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUsIEpTVGVzdEludGVyZmFj
ZSk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEludGVyZmFjZSA9IG1ha2VVbmlx
dWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJs
ZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RJbnRlcmZhY2UpOwogICAgIGVsc2UKLSAgICAg
ICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0SW50ZXJmYWNlID0gbWFrZVVuaXF1ZTxJc29TdWJz
cGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmNlbGxIZWFwQ2VsbFR5cGUsIEpT
VGVzdEludGVyZmFjZSk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEludGVyZmFj
ZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZt
LmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0SW50ZXJmYWNlKTsKICAgICBhdXRvKiBzcGFjZSA9
IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEludGVyZmFjZS5nZXQoKTsKIElHTk9SRV9XQVJOSU5H
U19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRv
bG9naWNhbC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2VMZWFkaW5nVW5kZXJzY29yZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFj
ZUxlYWRpbmdVbmRlcnNjb3JlLmNwcAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZUxlYWRpbmdVbmRlcnNj
b3JlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjYsNyArNjYsNyBAQCBwdWJsaWM6CiAgICAgc3Rh
dGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAg
ICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0SW50ZXJmYWNl
TGVhZGluZ1VuZGVyc2NvcmVQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBs
YWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwog
ICAgIH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZN
JiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJv
dG90eXBlKQogICAgIHsKQEAgLTE4Nyw5ICsxODcsOSBAQCBKU0M6Oklzb1N1YnNwYWNlKiBKU1Rl
c3RJbnRlcmZhY2VMZWFkaW5nCiAgICAgICAgIHJldHVybiBzcGFjZTsKICAgICBzdGF0aWNfYXNz
ZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdElu
dGVyZmFjZUxlYWRpbmdVbmRlcnNjb3JlPiB8fCAhSlNUZXN0SW50ZXJmYWNlTGVhZGluZ1VuZGVy
c2NvcmU6Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNl
X29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0SW50ZXJmYWNlTGVhZGluZ1Vu
ZGVyc2NvcmU+KQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RJbnRlcmZhY2VMZWFk
aW5nVW5kZXJzY29yZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklU
KHZtLmhlYXAsICp2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUsIEpTVGVzdEludGVy
ZmFjZUxlYWRpbmdVbmRlcnNjb3JlKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0
SW50ZXJmYWNlTGVhZGluZ1VuZGVyc2NvcmUgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09f
U1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUo
KSwgSlNUZXN0SW50ZXJmYWNlTGVhZGluZ1VuZGVyc2NvcmUpOwogICAgIGVsc2UKLSAgICAgICAg
c3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0SW50ZXJmYWNlTGVhZGluZ1VuZGVyc2NvcmUgPSBtYWtl
VW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uY2VsbEhl
YXBDZWxsVHlwZSwgSlNUZXN0SW50ZXJmYWNlTGVhZGluZ1VuZGVyc2NvcmUpOworICAgICAgICBz
cGFjZXMubV9zdWJzcGFjZUZvclRlc3RJbnRlcmZhY2VMZWFkaW5nVW5kZXJzY29yZSA9IG1ha2VV
bmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFw
Q2VsbFR5cGUoKSwgSlNUZXN0SW50ZXJmYWNlTGVhZGluZ1VuZGVyc2NvcmUpOwogICAgIGF1dG8q
IHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0SW50ZXJmYWNlTGVhZGluZ1VuZGVyc2Nv
cmUuZ2V0KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdO
T1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SXRlcmFibGUuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJ
dGVyYWJsZS5jcHAJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJdGVyYWJsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc1
LDcgKzc1LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFj
ZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQ
QUNFX1NIQVJBQkxFKEpTVGVzdEl0ZXJhYmxlUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0
dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0
U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1
cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpK
U1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC0yMDEsOSArMjAxLDkgQEAgcHVibGljOgogICAg
ICAgICAgICAgcmV0dXJuIHNwYWNlOwogICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFz
ZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIFRlc3RJdGVyYWJsZUl0ZXJhdG9yPiB8
fCAhVGVzdEl0ZXJhYmxlSXRlcmF0b3I6Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAgICAgICBpZiBj
b25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIFRl
c3RJdGVyYWJsZUl0ZXJhdG9yPikKLSAgICAgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVz
dEl0ZXJhYmxlSXRlcmF0b3IgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0Vf
SU5JVCh2bS5oZWFwLCAqdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmdldCgpLCBU
ZXN0SXRlcmFibGVJdGVyYXRvcik7CisgICAgICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRl
c3RJdGVyYWJsZUl0ZXJhdG9yID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNF
X0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCksIFRlc3RJ
dGVyYWJsZUl0ZXJhdG9yKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgc3BhY2VzLm1fc3Vi
c3BhY2VGb3JUZXN0SXRlcmFibGVJdGVyYXRvciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElT
T19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5jZWxsSGVhcENlbGxUeXBlLCBUZXN0SXRlcmFi
bGVJdGVyYXRvcik7CisgICAgICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RJdGVyYWJs
ZUl0ZXJhdG9yID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0u
aGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBUZXN0SXRlcmFibGVJdGVyYXRvcik7CiAgICAg
ICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0SXRlcmFibGVJdGVyYXRv
ci5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJR05P
UkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKQEAgLTI5Myw5ICsyOTMs
OSBAQCBKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3RJdGVyYWJsZTo6c3Vic3BhCiAgICAgICAgIHJl
dHVybiBzcGFjZTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNE
ZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdEl0ZXJhYmxlPiB8fCAhSlNUZXN0SXRlcmFibGU6Om5l
ZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlND
OjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0SXRlcmFibGU+KQotICAgICAgICBzcGFjZXMu
bV9zdWJzcGFjZUZvclRlc3RJdGVyYWJsZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19T
VUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUs
IEpTVGVzdEl0ZXJhYmxlKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0SXRlcmFi
bGUgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2
bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0SXRlcmFibGUpOwogICAg
IGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0SXRlcmFibGUgPSBtYWtlVW5p
cXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uY2VsbEhlYXBD
ZWxsVHlwZSwgSlNUZXN0SXRlcmFibGUpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRl
c3RJdGVyYWJsZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZt
LmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0SXRlcmFibGUpOwogICAgIGF1dG8q
IHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0SXRlcmFibGUuZ2V0KCk7CiBJR05PUkVf
V0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lO
KCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3IuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RKU0J1aWx0
aW5Db25zdHJ1Y3Rvci5jcHAJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rvci5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTY5LDcgKzY5LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklz
b1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJ
Q19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9y
UHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOwor
ICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGlj
IEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBA
IC0yMzAsOSArMjMwLDkgQEAgSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0SlNCdWlsdGluQ29uc3Ry
dQogICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vf
b2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rv
cj4gfHwgIUpTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yOjpuZWVkc0Rlc3RydWN0aW9uKTsKICAg
ICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmpl
Y3QsIEpTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yPikKLSAgICAgICAgc3BhY2VzLm1fc3Vic3Bh
Y2VGb3JUZXN0SlNCdWlsdGluQ29uc3RydWN0b3IgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJ
U09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxU
eXBlLCBKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rvcik7CisgICAgICAgIHNwYWNlcy5tX3N1YnNw
YWNlRm9yVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4g
SVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxU
eXBlKCksIEpTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yKTsKICAgICBlbHNlCi0gICAgICAgIHNw
YWNlcy5tX3N1YnNwYWNlRm9yVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yID0gbWFrZVVuaXF1ZTxJ
c29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmNlbGxIZWFwQ2VsbFR5
cGUsIEpTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3Bh
Y2VGb3JUZXN0SlNCdWlsdGluQ29uc3RydWN0b3IgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJ
U09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCksIEpTVGVzdEpT
QnVpbHRpbkNvbnN0cnVjdG9yKTsKICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNl
Rm9yVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yLmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lO
KCJ1bnJlYWNoYWJsZS1jb2RlIikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2Fs
LWNvbXBhcmUiKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlv
bi5jcHAJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb24uY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC02Nyw3ICs2Nyw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSog
c3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lT
T19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb25Qcm90b3R5cGUs
IEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJl
dHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1
Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKQEAgLTIzMCw5ICsy
MzAsOSBAQCBKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3RMZWdhY3lGYWN0b3J5RnVuCiAgICAgICAg
IHJldHVybiBzcGFjZTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6
SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlvbj4gfHwgIUpT
VGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlvbjo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgaWYgY29u
c3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rl
c3RMZWdhY3lGYWN0b3J5RnVuY3Rpb24+KQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRl
c3RMZWdhY3lGYWN0b3J5RnVuY3Rpb24gPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VC
U1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLCBK
U1Rlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb24pOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZv
clRlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb24gPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09f
U1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUo
KSwgSlNUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uKTsKICAgICBlbHNlCi0gICAgICAgIHNwYWNl
cy5tX3N1YnNwYWNlRm9yVGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlvbiA9IG1ha2VVbmlxdWU8SXNv
U3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5jZWxsSGVhcENlbGxUeXBl
LCBKU1Rlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb24pOworICAgICAgICBzcGFjZXMubV9zdWJzcGFj
ZUZvclRlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb24gPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJ
U09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCksIEpTVGVzdExl
Z2FjeUZhY3RvcnlGdW5jdGlvbik7CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFj
ZUZvclRlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb24uZ2V0KCk7CiBJR05PUkVfV0FSTklOR1NfQkVH
SU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2lj
YWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0TGVnYWN5Tm9JbnRlcmZhY2VPYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RMZWdhY3lOb0ludGVyZmFj
ZU9iamVjdC5jcHAJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RMZWdhY3lOb0ludGVyZmFjZU9iamVjdC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTg1LDcgKzg1LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1
YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19B
U1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0
UHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOwor
ICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGlj
IEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBA
IC0zMzUsOSArMzM1LDkgQEAgSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0TGVnYWN5Tm9JbnRlcmZh
YwogICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vf
b2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RMZWdhY3lOb0ludGVyZmFjZU9i
amVjdD4gfHwgIUpTVGVzdExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0OjpuZWVkc0Rlc3RydWN0aW9u
KTsKICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGli
bGVPYmplY3QsIEpTVGVzdExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0PikKLSAgICAgICAgc3BhY2Vz
Lm1fc3Vic3BhY2VGb3JUZXN0TGVnYWN5Tm9JbnRlcmZhY2VPYmplY3QgPSBtYWtlVW5pcXVlPElz
b1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uZGVzdHJ1Y3RpYmxlT2Jq
ZWN0SGVhcENlbGxUeXBlLCBKU1Rlc3RMZWdhY3lOb0ludGVyZmFjZU9iamVjdCk7CisgICAgICAg
IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0ID0gbWFrZVVu
aXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3Rp
YmxlT2JqZWN0SGVhcENlbGxUeXBlKCksIEpTVGVzdExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0KTsK
ICAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdExlZ2FjeU5vSW50ZXJm
YWNlT2JqZWN0ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0u
aGVhcCwgKnZtLmNlbGxIZWFwQ2VsbFR5cGUsIEpTVGVzdExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0
KTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TGVnYWN5Tm9JbnRlcmZhY2VPYmpl
Y3QgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2
bS5jZWxsSGVhcENlbGxUeXBlKCksIEpTVGVzdExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0KTsKICAg
ICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdExlZ2FjeU5vSW50ZXJmYWNl
T2JqZWN0LmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikK
IElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRleDogU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdExlZ2FjeU92ZXJyaWRl
QnVpbHRJbnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zLmNwcAkocmV2aXNpb24gMjg2
MDk1KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdExl
Z2FjeU92ZXJyaWRlQnVpbHRJbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03Myw3ICs3Myw3IEBA
IHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpW
TSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJM
RShKU1Rlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAg
cmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2Jq
ZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1
Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlND
OjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC0yNDksOSArMjQ5LDkgQEAgSlNDOjpJc29T
dWJzcGFjZSogSlNUZXN0TGVnYWN5T3ZlcnJpZGVCdQogICAgICAgICByZXR1cm4gc3BhY2U7CiAg
ICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2Jq
ZWN0LCBKU1Rlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zPiB8fCAhSlNUZXN0TGVnYWN5T3ZlcnJp
ZGVCdWlsdEluczo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3RleHByIChzdGQ6Omlz
X2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RMZWdhY3lPdmVycmlk
ZUJ1aWx0SW5zPikKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TGVnYWN5T3ZlcnJp
ZGVCdWlsdElucyA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZt
LmhlYXAsICp2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUsIEpTVGVzdExlZ2FjeU92
ZXJyaWRlQnVpbHRJbnMpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RMZWdhY3lP
dmVycmlkZUJ1aWx0SW5zID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lO
SVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCksIEpTVGVzdExl
Z2FjeU92ZXJyaWRlQnVpbHRJbnMpOwogICAgIGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vic3Bh
Y2VGb3JUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdElucyA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+
IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5jZWxsSGVhcENlbGxUeXBlLCBKU1Rlc3RM
ZWdhY3lPdmVycmlkZUJ1aWx0SW5zKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0
TGVnYWN5T3ZlcnJpZGVCdWlsdElucyA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJT
UEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0TGVnYWN5T3Zl
cnJpZGVCdWlsdElucyk7CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRl
c3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zLmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1
bnJlYWNoYWJsZS1jb2RlIikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNv
bXBhcmUiKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdE1hcExpa2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RNYXBMaWtlLmNwcAkocmV2aXNpb24gMjg2MDk1KQorKysgU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE1hcExpa2UuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC04Miw3ICs4Miw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJ
c29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFU
SUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3RNYXBMaWtlUHJvdG90eXBlLCBC
YXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1
cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0
dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC0zNjYsOSArMzY2
LDkgQEAgSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0TWFwTGlrZTo6c3Vic3BhYwogICAgICAgICBy
ZXR1cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpT
RGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RNYXBMaWtlPiB8fCAhSlNUZXN0TWFwTGlrZTo6bmVl
ZHNEZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6
OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RNYXBMaWtlPikKLSAgICAgICAgc3BhY2VzLm1f
c3Vic3BhY2VGb3JUZXN0TWFwTGlrZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJT
UEFDRV9JTklUKHZtLmhlYXAsICp2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUsIEpT
VGVzdE1hcExpa2UpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RNYXBMaWtlID0g
bWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVz
dHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCksIEpTVGVzdE1hcExpa2UpOwogICAgIGVsc2UK
LSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TWFwTGlrZSA9IG1ha2VVbmlxdWU8SXNv
U3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5jZWxsSGVhcENlbGxUeXBl
LCBKU1Rlc3RNYXBMaWtlKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TWFwTGlr
ZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZt
LmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0TWFwTGlrZSk7CiAgICAgYXV0byogc3BhY2UgPSBz
cGFjZXMubV9zdWJzcGFjZUZvclRlc3RNYXBMaWtlLmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JF
R0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dp
Y2FsLWNvbXBhcmUiKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdE1hcExpa2VXaXRoT3ZlcnJpZGRlbk9wZXJhdGlvbnMuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RNYXBMaWtl
V2l0aE92ZXJyaWRkZW5PcGVyYXRpb25zLmNwcAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE1hcExpa2VXaXRoT3ZlcnJp
ZGRlbk9wZXJhdGlvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04Niw3ICs4Niw3IEBAIHB1Ymxp
YzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0p
CiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rl
c3RNYXBMaWtlV2l0aE92ZXJyaWRkZW5PcGVyYXRpb25zUHJvdG90eXBlLCBCYXNlKTsKLSAgICAg
ICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWlu
T2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVT
dHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
SlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC0zODAsOSArMzgwLDkgQEAgSlNDOjpJ
c29TdWJzcGFjZSogSlNUZXN0TWFwTGlrZVdpdGhPdmVycgogICAgICAgICByZXR1cm4gc3BhY2U7
CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxl
T2JqZWN0LCBKU1Rlc3RNYXBMaWtlV2l0aE92ZXJyaWRkZW5PcGVyYXRpb25zPiB8fCAhSlNUZXN0
TWFwTGlrZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9uczo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAg
aWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0
LCBKU1Rlc3RNYXBMaWtlV2l0aE92ZXJyaWRkZW5PcGVyYXRpb25zPikKLSAgICAgICAgc3BhY2Vz
Lm1fc3Vic3BhY2VGb3JUZXN0TWFwTGlrZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9ucyA9IG1ha2VV
bmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5kZXN0cnVj
dGlibGVPYmplY3RIZWFwQ2VsbFR5cGUsIEpTVGVzdE1hcExpa2VXaXRoT3ZlcnJpZGRlbk9wZXJh
dGlvbnMpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RNYXBMaWtlV2l0aE92ZXJy
aWRkZW5PcGVyYXRpb25zID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lO
SVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCksIEpTVGVzdE1h
cExpa2VXaXRoT3ZlcnJpZGRlbk9wZXJhdGlvbnMpOwogICAgIGVsc2UKLSAgICAgICAgc3BhY2Vz
Lm1fc3Vic3BhY2VGb3JUZXN0TWFwTGlrZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9ucyA9IG1ha2VV
bmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5jZWxsSGVh
cENlbGxUeXBlLCBKU1Rlc3RNYXBMaWtlV2l0aE92ZXJyaWRkZW5PcGVyYXRpb25zKTsKKyAgICAg
ICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TWFwTGlrZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9u
cyA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZt
LmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0TWFwTGlrZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9u
cyk7CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RNYXBMaWtlV2l0
aE92ZXJyaWRkZW5PcGVyYXRpb25zLmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJl
YWNoYWJsZS1jb2RlIikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBh
cmUiKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dE5hbWVkQW5kSW5kZXhlZFNldHRlck5vSWRlbnRpZmllci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQW5kSW5kZXhl
ZFNldHRlck5vSWRlbnRpZmllci5jcHAJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJO
b0lkZW50aWZpZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02Niw3ICs2Niw3IEBAIHB1YmxpYzoK
ICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAg
ICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3RO
YW1lZEFuZEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXJQcm90b3R5cGUsIEJhc2UpOwotICAgICAg
ICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5P
YmplY3RTcGFjZSgpOwogICAgIH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0
cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBK
U0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKQEAgLTM0NCw5ICszNDQsOSBAQCBKU0M6Oklz
b1N1YnNwYWNlKiBKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTCiAgICAgICAgIHJldHVybiBzcGFjZTsK
ICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVP
YmplY3QsIEpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlck5vSWRlbnRpZmllcj4gfHwgIUpTVGVz
dE5hbWVkQW5kSW5kZXhlZFNldHRlck5vSWRlbnRpZmllcjo6bmVlZHNEZXN0cnVjdGlvbik7CiAg
ICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2Jq
ZWN0LCBKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXI+KQotICAgICAgICBz
cGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXIg
PSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0u
ZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLCBKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0
ZXJOb0lkZW50aWZpZXIpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZEFu
ZEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXIgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09f
U1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUo
KSwgSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyKTsKICAgICBlbHNlCi0g
ICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlck5vSWRl
bnRpZmllciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhl
YXAsICp2bS5jZWxsSGVhcENlbGxUeXBlLCBKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJOb0lk
ZW50aWZpZXIpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZEFuZEluZGV4
ZWRTZXR0ZXJOb0lkZW50aWZpZXIgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BB
Q0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCksIEpTVGVzdE5hbWVkQW5kSW5k
ZXhlZFNldHRlck5vSWRlbnRpZmllcik7CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJz
cGFjZUZvclRlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXIuZ2V0KCk7CiBJR05P
UkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JF
R0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNl
cHRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5jcHAJ
KHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTY2LDcgKzY2LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklz
b1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJ
Q19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRl
clRocm93aW5nRXhjZXB0aW9uUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5w
bGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsK
ICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpW
TSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHBy
b3RvdHlwZSkKICAgICB7CkBAIC0zNDQsOSArMzQ0LDkgQEAgSlNDOjpJc29TdWJzcGFjZSogSlNU
ZXN0TmFtZWRBbmRJbmRleGVkUwogICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fz
c2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RO
YW1lZEFuZEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbj4gfHwgIUpTVGVzdE5hbWVkQW5k
SW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uOjpuZWVkc0Rlc3RydWN0aW9uKTsKICAgICBp
ZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3Qs
IEpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uPikKLSAgICAgICAg
c3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNl
cHRpb24gPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFw
LCAqdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLCBKU1Rlc3ROYW1lZEFuZEluZGV4
ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbik7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9y
VGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uID0gbWFrZVVuaXF1ZTxJ
c29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2Jq
ZWN0SGVhcENlbGxUeXBlKCksIEpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlclRocm93aW5nRXhj
ZXB0aW9uKTsKICAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVk
QW5kSW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFj
ZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmNlbGxIZWFwQ2VsbFR5cGUsIEpTVGVz
dE5hbWVkQW5kSW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uKTsKKyAgICAgICAgc3BhY2Vz
Lm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24g
PSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5j
ZWxsSGVhcENlbGxUeXBlKCksIEpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlclRocm93aW5nRXhj
ZXB0aW9uKTsKICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVk
QW5kSW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uLmdldCgpOwogSUdOT1JFX1dBUk5JTkdT
X0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9s
b2dpY2FsLWNvbXBhcmUiKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXIuY3BwCShyZXZpc2lvbiAyODYwOTUp
CisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRB
bmRJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NSw3
ICs3NSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VG
b3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFD
RV9TSEFSQUJMRShKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllclByb3Rv
dHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAg
ICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6
OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAtNDAx
LDkgKzQwMSw5IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdE5hbWVkQW5kSW5kZXhlZFMKICAg
ICAgICAgcmV0dXJuIHNwYWNlOwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8
SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0
aElkZW50aWZpZXI+IHx8ICFKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmll
cjo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2Zf
djxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJX
aXRoSWRlbnRpZmllcj4pCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkQW5k
SW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNP
X1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlw
ZSwgSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXIpOworICAgICAgICBz
cGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmll
ciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZt
LmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3ROYW1lZEFuZEluZGV4ZWRT
ZXR0ZXJXaXRoSWRlbnRpZmllcik7CiAgICAgZWxzZQotICAgICAgICBzcGFjZXMubV9zdWJzcGFj
ZUZvclRlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllciA9IG1ha2VVbmlxdWU8
SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5jZWxsSGVhcENlbGxU
eXBlLCBKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllcik7CisgICAgICAg
IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlcldpdGhJZGVudGlm
aWVyID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwg
dm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJXaXRoSWRl
bnRpZmllcik7CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1l
ZEFuZEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllci5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19C
RUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9n
aWNhbC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJOb0lkZW50aWZpZXIuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJO
b0lkZW50aWZpZXIuY3BwCShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyTm9JZGVudGlmaWVyLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNjUsNyArNjUsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6
SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RB
VElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0TmFtZWREZWxldGVyTm9JZGVu
dGlmaWVyUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNw
YWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAg
c3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAg
ICB7CkBAIC0yNDYsOSArMjQ2LDkgQEAgSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0TmFtZWREZWxl
dGVyTm9JZAogICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6Omlz
X2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3ROYW1lZERlbGV0ZXJO
b0lkZW50aWZpZXI+IHx8ICFKU1Rlc3ROYW1lZERlbGV0ZXJOb0lkZW50aWZpZXI6Om5lZWRzRGVz
dHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rl
c3RydWN0aWJsZU9iamVjdCwgSlNUZXN0TmFtZWREZWxldGVyTm9JZGVudGlmaWVyPikKLSAgICAg
ICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWREZWxldGVyTm9JZGVudGlmaWVyID0gbWFr
ZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmRlc3Ry
dWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSwgSlNUZXN0TmFtZWREZWxldGVyTm9JZGVudGlmaWVy
KTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWREZWxldGVyTm9JZGVudGlm
aWVyID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwg
dm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCksIEpTVGVzdE5hbWVkRGVsZXRlck5v
SWRlbnRpZmllcik7CiAgICAgZWxzZQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RO
YW1lZERlbGV0ZXJOb0lkZW50aWZpZXIgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VC
U1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uY2VsbEhlYXBDZWxsVHlwZSwgSlNUZXN0TmFtZWREZWxl
dGVyTm9JZGVudGlmaWVyKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRE
ZWxldGVyTm9JZGVudGlmaWVyID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNF
X0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3ROYW1lZERlbGV0ZXJO
b0lkZW50aWZpZXIpOwogICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0
TmFtZWREZWxldGVyTm9JZGVudGlmaWVyLmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1
bnJlYWNoYWJsZS1jb2RlIikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNv
bXBhcmUiKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdE5hbWVkRGVsZXRlclRocm93aW5nRXhjZXB0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyVGhy
b3dpbmdFeGNlcHRpb24uY3BwCShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyVGhyb3dpbmdFeGNlcHRp
b24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NSw3ICs2NSw3IEBAIHB1YmxpYzoKICAgICBzdGF0
aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAg
ICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3ROYW1lZERlbGV0
ZXJUaHJvd2luZ0V4Y2VwdGlvblByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0u
cGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7
CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6
Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBw
cm90b3R5cGUpCiAgICAgewpAQCAtMjQ2LDkgKzI0Niw5IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpT
VGVzdE5hbWVkRGVsZXRlclRocm8KICAgICAgICAgcmV0dXJuIHNwYWNlOwogICAgIHN0YXRpY19h
c3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0
TmFtZWREZWxldGVyVGhyb3dpbmdFeGNlcHRpb24+IHx8ICFKU1Rlc3ROYW1lZERlbGV0ZXJUaHJv
d2luZ0V4Y2VwdGlvbjo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3RleHByIChzdGQ6
OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3ROYW1lZERlbGV0
ZXJUaHJvd2luZ0V4Y2VwdGlvbj4pCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5h
bWVkRGVsZXRlclRocm93aW5nRXhjZXB0aW9uID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNP
X1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlw
ZSwgSlNUZXN0TmFtZWREZWxldGVyVGhyb3dpbmdFeGNlcHRpb24pOworICAgICAgICBzcGFjZXMu
bV9zdWJzcGFjZUZvclRlc3ROYW1lZERlbGV0ZXJUaHJvd2luZ0V4Y2VwdGlvbiA9IG1ha2VVbmlx
dWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJs
ZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3ROYW1lZERlbGV0ZXJUaHJvd2luZ0V4Y2VwdGlv
bik7CiAgICAgZWxzZQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZERlbGV0
ZXJUaHJvd2luZ0V4Y2VwdGlvbiA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFD
RV9JTklUKHZtLmhlYXAsICp2bS5jZWxsSGVhcENlbGxUeXBlLCBKU1Rlc3ROYW1lZERlbGV0ZXJU
aHJvd2luZ0V4Y2VwdGlvbik7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVk
RGVsZXRlclRocm93aW5nRXhjZXB0aW9uID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NV
QlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3ROYW1lZERl
bGV0ZXJUaHJvd2luZ0V4Y2VwdGlvbik7CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJz
cGFjZUZvclRlc3ROYW1lZERlbGV0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5nZXQoKTsKIElHTk9SRV9X
QVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4o
InRhdXRvbG9naWNhbC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5h
bWVkRGVsZXRlcldpdGhJZGVudGlmaWVyLmNwcAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlcldpdGhJ
ZGVudGlmaWVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzIsNyArNzIsNyBAQCBwdWJsaWM6CiAg
ICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAg
IHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0TmFt
ZWREZWxldGVyV2l0aElkZW50aWZpZXJQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4g
JnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFj
ZSgpOwogICAgIH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShK
U0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFs
dWUgcHJvdG90eXBlKQogICAgIHsKQEAgLTI3MCw5ICsyNzAsOSBAQCBKU0M6Oklzb1N1YnNwYWNl
KiBKU1Rlc3ROYW1lZERlbGV0ZXJXaXRoCiAgICAgICAgIHJldHVybiBzcGFjZTsKICAgICBzdGF0
aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpT
VGVzdE5hbWVkRGVsZXRlcldpdGhJZGVudGlmaWVyPiB8fCAhSlNUZXN0TmFtZWREZWxldGVyV2l0
aElkZW50aWZpZXI6Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjpp
c19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0TmFtZWREZWxldGVy
V2l0aElkZW50aWZpZXI+KQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZERl
bGV0ZXJXaXRoSWRlbnRpZmllciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFD
RV9JTklUKHZtLmhlYXAsICp2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUsIEpTVGVz
dE5hbWVkRGVsZXRlcldpdGhJZGVudGlmaWVyKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VG
b3JUZXN0TmFtZWREZWxldGVyV2l0aElkZW50aWZpZXIgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNl
PiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2Vs
bFR5cGUoKSwgSlNUZXN0TmFtZWREZWxldGVyV2l0aElkZW50aWZpZXIpOwogICAgIGVsc2UKLSAg
ICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWREZWxldGVyV2l0aElkZW50aWZpZXIg
PSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0u
Y2VsbEhlYXBDZWxsVHlwZSwgSlNUZXN0TmFtZWREZWxldGVyV2l0aElkZW50aWZpZXIpOworICAg
ICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllciA9
IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNl
bGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0TmFtZWREZWxldGVyV2l0aElkZW50aWZpZXIpOwogICAg
IGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWREZWxldGVyV2l0aElk
ZW50aWZpZXIuZ2V0KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUi
KQogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVy
V2l0aEluZGV4ZWRHZXR0ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSW5kZXhlZEdldHRlci5j
cHAJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSW5kZXhlZEdldHRlci5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTY2LDcgKzY2LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNw
YWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NF
UlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdE5hbWVkRGVsZXRlcldpdGhJbmRleGVkR2V0
dGVyUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNl
OworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3Rh
dGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7
CkBAIC0yNjIsOSArMjYyLDkgQEAgSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0TmFtZWREZWxldGVy
V2l0aAogICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jh
c2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3ROYW1lZERlbGV0ZXJXaXRo
SW5kZXhlZEdldHRlcj4gfHwgIUpTVGVzdE5hbWVkRGVsZXRlcldpdGhJbmRleGVkR2V0dGVyOjpu
ZWVkc0Rlc3RydWN0aW9uKTsKICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpT
Qzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdE5hbWVkRGVsZXRlcldpdGhJbmRleGVkR2V0
dGVyPikKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWREZWxldGVyV2l0aElu
ZGV4ZWRHZXR0ZXIgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2
bS5oZWFwLCAqdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLCBKU1Rlc3ROYW1lZERl
bGV0ZXJXaXRoSW5kZXhlZEdldHRlcik7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVz
dE5hbWVkRGVsZXRlcldpdGhJbmRleGVkR2V0dGVyID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4g
SVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxU
eXBlKCksIEpTVGVzdE5hbWVkRGVsZXRlcldpdGhJbmRleGVkR2V0dGVyKTsKICAgICBlbHNlCi0g
ICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkRGVsZXRlcldpdGhJbmRleGVkR2V0
dGVyID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwg
KnZtLmNlbGxIZWFwQ2VsbFR5cGUsIEpTVGVzdE5hbWVkRGVsZXRlcldpdGhJbmRleGVkR2V0dGVy
KTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWREZWxldGVyV2l0aEluZGV4
ZWRHZXR0ZXIgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5o
ZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCksIEpTVGVzdE5hbWVkRGVsZXRlcldpdGhJbmRleGVk
R2V0dGVyKTsKICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVk
RGVsZXRlcldpdGhJbmRleGVkR2V0dGVyLmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1
bnJlYWNoYWJsZS1jb2RlIikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNv
bXBhcmUiKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdE5hbWVkR2V0dGVyQ2FsbFdpdGguY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEdldHRlckNhbGxXaXRoLmNwcAko
cmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdE5hbWVkR2V0dGVyQ2FsbFdpdGguY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NSw3
ICs2NSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VG
b3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFD
RV9TSEFSQUJMRShKU1Rlc3ROYW1lZEdldHRlckNhbGxXaXRoUHJvdG90eXBlLCBCYXNlKTsKLSAg
ICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBs
YWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVh
dGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC0yMjAsOSArMjIwLDkgQEAgSlND
OjpJc29TdWJzcGFjZSogSlNUZXN0TmFtZWRHZXR0ZXJDYWxsVwogICAgICAgICByZXR1cm4gc3Bh
Y2U7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3Rp
YmxlT2JqZWN0LCBKU1Rlc3ROYW1lZEdldHRlckNhbGxXaXRoPiB8fCAhSlNUZXN0TmFtZWRHZXR0
ZXJDYWxsV2l0aDo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3RleHByIChzdGQ6Omlz
X2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3ROYW1lZEdldHRlckNh
bGxXaXRoPikKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRHZXR0ZXJDYWxs
V2l0aCA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAs
ICp2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUsIEpTVGVzdE5hbWVkR2V0dGVyQ2Fs
bFdpdGgpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZEdldHRlckNhbGxX
aXRoID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwg
dm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCksIEpTVGVzdE5hbWVkR2V0dGVyQ2Fs
bFdpdGgpOwogICAgIGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRH
ZXR0ZXJDYWxsV2l0aCA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklU
KHZtLmhlYXAsICp2bS5jZWxsSGVhcENlbGxUeXBlLCBKU1Rlc3ROYW1lZEdldHRlckNhbGxXaXRo
KTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRHZXR0ZXJDYWxsV2l0aCA9
IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNl
bGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0TmFtZWRHZXR0ZXJDYWxsV2l0aCk7CiAgICAgYXV0byog
c3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZEdldHRlckNhbGxXaXRoLmdldCgp
OwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKIElHTk9SRV9XQVJO
SU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRleDogU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkR2V0dGVyTm9JZGVudGlmaWVyLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0TmFtZWRHZXR0ZXJOb0lkZW50aWZpZXIuY3BwCShyZXZpc2lvbiAyODYwOTUpCisrKyBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRHZXR0ZXJO
b0lkZW50aWZpZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NSw3ICs2NSw3IEBAIHB1YmxpYzoK
ICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAg
ICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3RO
YW1lZEdldHRlck5vSWRlbnRpZmllclByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAm
dm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNl
KCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpT
Qzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1
ZSBwcm90b3R5cGUpCiAgICAgewpAQCAtMjIwLDkgKzIyMCw5IEBAIEpTQzo6SXNvU3Vic3BhY2Uq
IEpTVGVzdE5hbWVkR2V0dGVyTm9JZGUKICAgICAgICAgcmV0dXJuIHNwYWNlOwogICAgIHN0YXRp
Y19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNU
ZXN0TmFtZWRHZXR0ZXJOb0lkZW50aWZpZXI+IHx8ICFKU1Rlc3ROYW1lZEdldHRlck5vSWRlbnRp
Zmllcjo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vf
b2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3ROYW1lZEdldHRlck5vSWRlbnRp
Zmllcj4pCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkR2V0dGVyTm9JZGVu
dGlmaWVyID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVh
cCwgKnZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSwgSlNUZXN0TmFtZWRHZXR0ZXJO
b0lkZW50aWZpZXIpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZEdldHRl
ck5vSWRlbnRpZmllciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklU
KHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3ROYW1l
ZEdldHRlck5vSWRlbnRpZmllcik7CiAgICAgZWxzZQotICAgICAgICBzcGFjZXMubV9zdWJzcGFj
ZUZvclRlc3ROYW1lZEdldHRlck5vSWRlbnRpZmllciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+
IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5jZWxsSGVhcENlbGxUeXBlLCBKU1Rlc3RO
YW1lZEdldHRlck5vSWRlbnRpZmllcik7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVz
dE5hbWVkR2V0dGVyTm9JZGVudGlmaWVyID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NV
QlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3ROYW1lZEdl
dHRlck5vSWRlbnRpZmllcik7CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZv
clRlc3ROYW1lZEdldHRlck5vSWRlbnRpZmllci5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJ
TigidW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNh
bC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3ROYW1lZEdldHRlcldpdGhJZGVudGlmaWVyLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRHZXR0ZXJXaXRo
SWRlbnRpZmllci5jcHAJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEdldHRlcldpdGhJZGVudGlmaWVyLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNzAsNyArNzAsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6
SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RB
VElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0TmFtZWRHZXR0ZXJXaXRoSWRl
bnRpZmllclByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RT
cGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAg
IHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6
OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAg
ICAgewpAQCAtMjQ2LDkgKzI0Niw5IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdE5hbWVkR2V0
dGVyV2l0aEkKICAgICAgICAgcmV0dXJuIHNwYWNlOwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjpp
c19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0TmFtZWRHZXR0ZXJX
aXRoSWRlbnRpZmllcj4gfHwgIUpTVGVzdE5hbWVkR2V0dGVyV2l0aElkZW50aWZpZXI6Om5lZWRz
RGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpK
U0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0TmFtZWRHZXR0ZXJXaXRoSWRlbnRpZmllcj4pCi0g
ICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkR2V0dGVyV2l0aElkZW50aWZpZXIg
PSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0u
ZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLCBKU1Rlc3ROYW1lZEdldHRlcldpdGhJZGVu
dGlmaWVyKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRHZXR0ZXJXaXRo
SWRlbnRpZmllciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZt
LmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3ROYW1lZEdl
dHRlcldpdGhJZGVudGlmaWVyKTsKICAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNl
Rm9yVGVzdE5hbWVkR2V0dGVyV2l0aElkZW50aWZpZXIgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNl
PiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uY2VsbEhlYXBDZWxsVHlwZSwgSlNUZXN0
TmFtZWRHZXR0ZXJXaXRoSWRlbnRpZmllcik7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9y
VGVzdE5hbWVkR2V0dGVyV2l0aElkZW50aWZpZXIgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJ
U09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCksIEpTVGVzdE5h
bWVkR2V0dGVyV2l0aElkZW50aWZpZXIpOwogICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vi
c3BhY2VGb3JUZXN0TmFtZWRHZXR0ZXJXaXRoSWRlbnRpZmllci5nZXQoKTsKIElHTk9SRV9XQVJO
SU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRh
dXRvbG9naWNhbC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlck5vSWRlbnRpZmllci5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0
dGVyTm9JZGVudGlmaWVyLmNwcAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyTm9JZGVudGlmaWVyLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNjUsNyArNjUsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpT
Qzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAg
U1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0TmFtZWRTZXR0ZXJOb0lk
ZW50aWZpZXJQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0
U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KICAg
ICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlND
OjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQog
ICAgIHsKQEAgLTMwMCw5ICszMDAsOSBAQCBKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3ROYW1lZFNl
dHRlck5vSWRlCiAgICAgICAgIHJldHVybiBzcGFjZTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6
aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdE5hbWVkU2V0dGVy
Tm9JZGVudGlmaWVyPiB8fCAhSlNUZXN0TmFtZWRTZXR0ZXJOb0lkZW50aWZpZXI6Om5lZWRzRGVz
dHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rl
c3RydWN0aWJsZU9iamVjdCwgSlNUZXN0TmFtZWRTZXR0ZXJOb0lkZW50aWZpZXI+KQotICAgICAg
ICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZFNldHRlck5vSWRlbnRpZmllciA9IG1ha2VV
bmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5kZXN0cnVj
dGlibGVPYmplY3RIZWFwQ2VsbFR5cGUsIEpTVGVzdE5hbWVkU2V0dGVyTm9JZGVudGlmaWVyKTsK
KyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRTZXR0ZXJOb0lkZW50aWZpZXIg
PSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5k
ZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0TmFtZWRTZXR0ZXJOb0lkZW50
aWZpZXIpOwogICAgIGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRT
ZXR0ZXJOb0lkZW50aWZpZXIgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0Vf
SU5JVCh2bS5oZWFwLCAqdm0uY2VsbEhlYXBDZWxsVHlwZSwgSlNUZXN0TmFtZWRTZXR0ZXJOb0lk
ZW50aWZpZXIpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZFNldHRlck5v
SWRlbnRpZmllciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZt
LmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0TmFtZWRTZXR0ZXJOb0lkZW50aWZp
ZXIpOwogICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRTZXR0
ZXJOb0lkZW50aWZpZXIuZ2V0KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxl
LWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRT
ZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyVGhyb3dpbmdFeGNlcHRp
b24uY3BwCShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTY1LDcgKzY1LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1
YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19B
U1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdE5hbWVkU2V0dGVyVGhyb3dpbmdFeGNl
cHRpb25Qcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3Bh
Y2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KICAgICBz
dGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAg
IHsKQEAgLTMwMCw5ICszMDAsOSBAQCBKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3ROYW1lZFNldHRl
clRocm93CiAgICAgICAgIHJldHVybiBzcGFjZTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNf
YmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdE5hbWVkU2V0dGVyVGhy
b3dpbmdFeGNlcHRpb24+IHx8ICFKU1Rlc3ROYW1lZFNldHRlclRocm93aW5nRXhjZXB0aW9uOjpu
ZWVkc0Rlc3RydWN0aW9uKTsKICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpT
Qzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdE5hbWVkU2V0dGVyVGhyb3dpbmdFeGNlcHRp
b24+KQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZFNldHRlclRocm93aW5n
RXhjZXB0aW9uID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0u
aGVhcCwgKnZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSwgSlNUZXN0TmFtZWRTZXR0
ZXJUaHJvd2luZ0V4Y2VwdGlvbik7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5h
bWVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24gPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09f
U1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUo
KSwgSlNUZXN0TmFtZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbik7CiAgICAgZWxzZQotICAgICAg
ICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZFNldHRlclRocm93aW5nRXhjZXB0aW9uID0g
bWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmNl
bGxIZWFwQ2VsbFR5cGUsIEpTVGVzdE5hbWVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24pOworICAg
ICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZFNldHRlclRocm93aW5nRXhjZXB0aW9u
ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0u
Y2VsbEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3ROYW1lZFNldHRlclRocm93aW5nRXhjZXB0aW9uKTsK
ICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkU2V0dGVyVGhy
b3dpbmdFeGNlcHRpb24uZ2V0KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxl
LWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRT
ZXR0ZXJXaXRoSWRlbnRpZmllci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aElkZW50aWZpZXIuY3Bw
CShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmllci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTcyLDcgKzcyLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBz
dWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNP
X1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdE5hbWVkU2V0dGVyV2l0aElkZW50aWZpZXJQcm90b3R5
cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAg
IHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KICAgICBzdGF0aWMgSlNDOjpT
dHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKQEAgLTMzMSw5
ICszMzEsOSBAQCBKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3ROYW1lZFNldHRlcldpdGhJCiAgICAg
ICAgIHJldHVybiBzcGFjZTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpT
Qzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdE5hbWVkU2V0dGVyV2l0aElkZW50aWZpZXI+
IHx8ICFKU1Rlc3ROYW1lZFNldHRlcldpdGhJZGVudGlmaWVyOjpuZWVkc0Rlc3RydWN0aW9uKTsK
ICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVP
YmplY3QsIEpTVGVzdE5hbWVkU2V0dGVyV2l0aElkZW50aWZpZXI+KQotICAgICAgICBzcGFjZXMu
bV9zdWJzcGFjZUZvclRlc3ROYW1lZFNldHRlcldpdGhJZGVudGlmaWVyID0gbWFrZVVuaXF1ZTxJ
c29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmRlc3RydWN0aWJsZU9i
amVjdEhlYXBDZWxsVHlwZSwgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmllcik7CisgICAg
ICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkU2V0dGVyV2l0aElkZW50aWZpZXIgPSBt
YWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0
cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRp
Zmllcik7CiAgICAgZWxzZQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZFNl
dHRlcldpdGhJZGVudGlmaWVyID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNF
X0lOSVQodm0uaGVhcCwgKnZtLmNlbGxIZWFwQ2VsbFR5cGUsIEpTVGVzdE5hbWVkU2V0dGVyV2l0
aElkZW50aWZpZXIpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZFNldHRl
cldpdGhJZGVudGlmaWVyID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lO
SVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3ROYW1lZFNldHRlcldpdGhJ
ZGVudGlmaWVyKTsKICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5h
bWVkU2V0dGVyV2l0aElkZW50aWZpZXIuZ2V0KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVu
cmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29t
cGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aElu
ZGV4ZWRHZXR0ZXIuY3BwCShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlci5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTc1LDcgKzc1LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBK
U0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAg
IFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdE5hbWVkU2V0dGVyV2l0
aEluZGV4ZWRHZXR0ZXJQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWlu
T2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAg
IH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2
bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90
eXBlKQogICAgIHsKQEAgLTM3OCw5ICszNzgsOSBAQCBKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3RO
YW1lZFNldHRlcldpdGhJCiAgICAgICAgIHJldHVybiBzcGFjZTsKICAgICBzdGF0aWNfYXNzZXJ0
KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdE5hbWVk
U2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXI+IHx8ICFKU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVk
R2V0dGVyOjpuZWVkc0Rlc3RydWN0aW9uKTsKICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFz
ZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdE5hbWVkU2V0dGVyV2l0aElu
ZGV4ZWRHZXR0ZXI+KQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZFNldHRl
cldpdGhJbmRleGVkR2V0dGVyID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNF
X0lOSVQodm0uaGVhcCwgKnZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSwgSlNUZXN0
TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlcik7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNl
Rm9yVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXIgPSBtYWtlVW5pcXVlPElzb1N1YnNw
YWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFw
Q2VsbFR5cGUoKSwgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlcik7CiAgICAgZWxz
ZQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZFNldHRlcldpdGhJbmRleGVk
R2V0dGVyID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVh
cCwgKnZtLmNlbGxIZWFwQ2VsbFR5cGUsIEpTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0
ZXIpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZFNldHRlcldpdGhJbmRl
eGVkR2V0dGVyID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0u
aGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVk
R2V0dGVyKTsKICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVk
U2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXIuZ2V0KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVu
cmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29t
cGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlckFuZFNldHRlci5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0
dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0ZXIuY3BwCShyZXZpc2lvbiAyODYwOTUpCisrKyBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJX
aXRoSW5kZXhlZEdldHRlckFuZFNldHRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc1LDcgKzc1
LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihK
U0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NI
QVJBQkxFKEpTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0ZXJQcm90b3R5
cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAg
IHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KICAgICBzdGF0aWMgSlNDOjpT
dHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKQEAgLTQyOCw5
ICs0MjgsOSBAQCBKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3ROYW1lZFNldHRlcldpdGhJCiAgICAg
ICAgIHJldHVybiBzcGFjZTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpT
Qzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0
ZXJBbmRTZXR0ZXI+IHx8ICFKU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQW5kU2V0
dGVyOjpuZWVkc0Rlc3RydWN0aW9uKTsKICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9v
Zl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4
ZWRHZXR0ZXJBbmRTZXR0ZXI+KQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1l
ZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQW5kU2V0dGVyID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFj
ZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBD
ZWxsVHlwZSwgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlckFuZFNldHRlcik7Cisg
ICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0
ZXJBbmRTZXR0ZXIgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2
bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0TmFtZWRT
ZXR0ZXJXaXRoSW5kZXhlZEdldHRlckFuZFNldHRlcik7CiAgICAgZWxzZQotICAgICAgICBzcGFj
ZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQW5kU2V0dGVy
ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZt
LmNlbGxIZWFwQ2VsbFR5cGUsIEpTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRT
ZXR0ZXIpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZFNldHRlcldpdGhJ
bmRleGVkR2V0dGVyQW5kU2V0dGVyID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQ
QUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3ROYW1lZFNldHRl
cldpdGhJbmRleGVkR2V0dGVyQW5kU2V0dGVyKTsKICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5t
X3N1YnNwYWNlRm9yVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0ZXIuZ2V0
KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dB
Uk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5T3Zl
cnJpZGVCdWlsdElucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeU92ZXJyaWRlQnVpbHRJ
bnMuY3BwCShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5T3ZlcnJpZGVCdWlsdElucy5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTY1LDcgKzY1LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBK
U0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAg
IFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdE5hbWVkU2V0dGVyV2l0
aExlZ2FjeU92ZXJyaWRlQnVpbHRJbnNQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4g
JnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFj
ZSgpOwogICAgIH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShK
U0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFs
dWUgcHJvdG90eXBlKQogICAgIHsKQEAgLTI3Nyw5ICsyNzcsOSBAQCBKU0M6Oklzb1N1YnNwYWNl
KiBKU1Rlc3ROYW1lZFNldHRlcldpdGhMCiAgICAgICAgIHJldHVybiBzcGFjZTsKICAgICBzdGF0
aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpT
VGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM+IHx8ICFKU1Rlc3ROYW1l
ZFNldHRlcldpdGhMZWdhY3lPdmVycmlkZUJ1aWx0SW5zOjpuZWVkc0Rlc3RydWN0aW9uKTsKICAg
ICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmpl
Y3QsIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM+KQotICAgICAg
ICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lPdmVycmlkZUJ1
aWx0SW5zID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVh
cCwgKnZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSwgSlNUZXN0TmFtZWRTZXR0ZXJX
aXRoTGVnYWN5T3ZlcnJpZGVCdWlsdElucyk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9y
VGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMgPSBtYWtlVW5pcXVlPElz
b1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmpl
Y3RIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5T3ZlcnJpZGVCdWls
dElucyk7CiAgICAgZWxzZQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZFNl
dHRlcldpdGhMZWdhY3lPdmVycmlkZUJ1aWx0SW5zID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4g
SVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmNlbGxIZWFwQ2VsbFR5cGUsIEpTVGVzdE5h
bWVkU2V0dGVyV2l0aExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMpOworICAgICAgICBzcGFjZXMubV9z
dWJzcGFjZUZvclRlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lPdmVycmlkZUJ1aWx0SW5zID0gbWFr
ZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhl
YXBDZWxsVHlwZSgpLCBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lPdmVycmlkZUJ1aWx0SW5z
KTsKICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkU2V0dGVy
V2l0aExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMuZ2V0KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4o
InVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwt
Y29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzLmNwcAkocmV2aXNpb24g
Mjg2MDk1KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllcy5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTc0LDcgKzc0LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNw
YWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NF
UlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9y
Z2VhYmxlUHJvcGVydGllc1Byb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxh
aW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAg
ICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0m
IHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90
b3R5cGUpCiAgICAgewpAQCAtMzYxLDkgKzM2MSw5IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVz
dE5hbWVkU2V0dGVyV2l0aEwKICAgICAgICAgcmV0dXJuIHNwYWNlOwogICAgIHN0YXRpY19hc3Nl
cnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0TmFt
ZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzPiB8fCAhSlNUZXN0TmFtZWRT
ZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzOjpuZWVkc0Rlc3RydWN0aW9uKTsK
ICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVP
YmplY3QsIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllcz4p
Ci0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVu
Zm9yZ2VhYmxlUHJvcGVydGllcyA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFD
RV9JTklUKHZtLmhlYXAsICp2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUsIEpTVGVz
dE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllcyk7CisgICAgICAgIHNw
YWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJv
cGVydGllcyA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhl
YXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3ROYW1lZFNldHRl
cldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXMpOwogICAgIGVsc2UKLSAgICAgICAgc3Bh
Y2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9w
ZXJ0aWVzID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVh
cCwgKnZtLmNlbGxIZWFwQ2VsbFR5cGUsIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9y
Z2VhYmxlUHJvcGVydGllcyk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVk
U2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllcyA9IG1ha2VVbmlxdWU8SXNvU3Vi
c3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwg
SlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzKTsKICAgICBh
dXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2Fj
eVVuZm9yZ2VhYmxlUHJvcGVydGllcy5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5y
ZWFjaGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21w
YXJlIikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVy
cmlkZUJ1aWx0SW5zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9w
ZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdElucy5jcHAJKHJldmlzaW9uIDI4NjA5NSkKKysr
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRl
cldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5z
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzQsNyArNzQsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGlj
IEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAg
ICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0TmFtZWRTZXR0ZXJX
aXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdEluc1By
b3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAg
ICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBK
U0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAt
MzM4LDkgKzMzOCw5IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdE5hbWVkU2V0dGVyV2l0aEwK
ICAgICAgICAgcmV0dXJuIHNwYWNlOwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29m
X3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5
VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdElucz4gfHwgIUpTVGVz
dE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJy
aWRlQnVpbHRJbnM6Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjpp
c19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0TmFtZWRTZXR0ZXJX
aXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdElucz4p
Ci0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVu
Zm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMgPSBtYWtlVW5pcXVl
PElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uZGVzdHJ1Y3RpYmxl
T2JqZWN0SGVhcENlbGxUeXBlLCBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJs
ZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zKTsKKyAgICAgICAgc3BhY2VzLm1f
c3Vic3BhY2VGb3JUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVz
QW5kTGVnYWN5T3ZlcnJpZGVCdWlsdElucyA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19T
VUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgp
LCBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdh
Y3lPdmVycmlkZUJ1aWx0SW5zKTsKICAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNl
Rm9yVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2Fj
eU92ZXJyaWRlQnVpbHRJbnMgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0Vf
SU5JVCh2bS5oZWFwLCAqdm0uY2VsbEhlYXBDZWxsVHlwZSwgSlNUZXN0TmFtZWRTZXR0ZXJXaXRo
TGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdElucyk7Cisg
ICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9y
Z2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMgPSBtYWtlVW5pcXVlPElz
b1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBl
KCksIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExl
Z2FjeU92ZXJyaWRlQnVpbHRJbnMpOwogICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3Bh
Y2VGb3JUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVn
YWN5T3ZlcnJpZGVCdWlsdElucy5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFj
aGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJl
IikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RO
YW1lc3BhY2VPYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lc3BhY2VPYmplY3QuY3BwCShyZXZpc2lvbiAyODYw
OTUpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFt
ZXNwYWNlT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjgwLDkgKzI4MCw5IEBAIEpTQzo6
SXNvU3Vic3BhY2UqIEpTVGVzdE5hbWVzcGFjZU9iamVjdDoKICAgICAgICAgcmV0dXJuIHNwYWNl
OwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJs
ZU9iamVjdCwgSlNUZXN0TmFtZXNwYWNlT2JqZWN0PiB8fCAhSlNUZXN0TmFtZXNwYWNlT2JqZWN0
OjpuZWVkc0Rlc3RydWN0aW9uKTsKICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92
PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdE5hbWVzcGFjZU9iamVjdD4pCi0gICAg
ICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVzcGFjZU9iamVjdCA9IG1ha2VVbmlxdWU8
SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5kZXN0cnVjdGlibGVP
YmplY3RIZWFwQ2VsbFR5cGUsIEpTVGVzdE5hbWVzcGFjZU9iamVjdCk7CisgICAgICAgIHNwYWNl
cy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVzcGFjZU9iamVjdCA9IG1ha2VVbmlxdWU8SXNvU3Vic3Bh
Y2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBD
ZWxsVHlwZSgpLCBKU1Rlc3ROYW1lc3BhY2VPYmplY3QpOwogICAgIGVsc2UKLSAgICAgICAgc3Bh
Y2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZXNwYWNlT2JqZWN0ID0gbWFrZVVuaXF1ZTxJc29TdWJz
cGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmNlbGxIZWFwQ2VsbFR5cGUsIEpT
VGVzdE5hbWVzcGFjZU9iamVjdCk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5h
bWVzcGFjZU9iamVjdCA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklU
KHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0TmFtZXNwYWNlT2JqZWN0KTsK
ICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVzcGFjZU9iamVj
dC5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJR05P
UkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROb2RlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Tm9kZS5j
cHAJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3ROb2RlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTUsNyArOTUsNyBAQCBw
dWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0m
IHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUo
SlNUZXN0Tm9kZVByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmpl
Y3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQog
ICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBK
U0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUp
CiAgICAgewpAQCAtNDA1LDkgKzQwNSw5IEBAIHB1YmxpYzoKICAgICAgICAgICAgIHJldHVybiBz
cGFjZTsKICAgICAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVz
dHJ1Y3RpYmxlT2JqZWN0LCBUZXN0Tm9kZUl0ZXJhdG9yPiB8fCAhVGVzdE5vZGVJdGVyYXRvcjo6
bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29m
X3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgVGVzdE5vZGVJdGVyYXRvcj4pCi0gICAgICAg
ICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROb2RlSXRlcmF0b3IgPSBtYWtlVW5pcXVlPElz
b1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uZGVzdHJ1Y3RpYmxlT2Jq
ZWN0SGVhcENlbGxUeXBlLmdldCgpLCBUZXN0Tm9kZUl0ZXJhdG9yKTsKKyAgICAgICAgICAgIHNw
YWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5vZGVJdGVyYXRvciA9IG1ha2VVbmlxdWU8SXNvU3Vic3Bh
Y2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBD
ZWxsVHlwZSgpLCBUZXN0Tm9kZUl0ZXJhdG9yKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAg
c3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0Tm9kZUl0ZXJhdG9yID0gbWFrZVVuaXF1ZTxJc29TdWJz
cGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmNlbGxIZWFwQ2VsbFR5cGUsIFRl
c3ROb2RlSXRlcmF0b3IpOworICAgICAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0Tm9k
ZUl0ZXJhdG9yID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0u
aGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBUZXN0Tm9kZUl0ZXJhdG9yKTsKICAgICAgICAg
YXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROb2RlSXRlcmF0b3IuZ2V0KCk7
CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5J
TkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkBAIC00OTcsOSArNDk3LDkgQEAgSlND
OjpJc29TdWJzcGFjZSogSlNUZXN0Tm9kZTo6c3Vic3BhY2VGbwogICAgICAgICByZXR1cm4gc3Bh
Y2U7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3Rp
YmxlT2JqZWN0LCBKU1Rlc3ROb2RlPiB8fCAhSlNUZXN0Tm9kZTo6bmVlZHNEZXN0cnVjdGlvbik7
CiAgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxl
T2JqZWN0LCBKU1Rlc3ROb2RlPikKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0Tm9k
ZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2
bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUsIEpTVGVzdE5vZGUpOworICAgICAgICBz
cGFjZXMubV9zdWJzcGFjZUZvclRlc3ROb2RlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNP
X1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBl
KCksIEpTVGVzdE5vZGUpOwogICAgIGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JU
ZXN0Tm9kZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhl
YXAsICp2bS5jZWxsSGVhcENlbGxUeXBlLCBKU1Rlc3ROb2RlKTsKKyAgICAgICAgc3BhY2VzLm1f
c3Vic3BhY2VGb3JUZXN0Tm9kZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFD
RV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0Tm9kZSk7CiAgICAg
YXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROb2RlLmdldCgpOwogSUdOT1JF
X1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKIElHTk9SRV9XQVJOSU5HU19CRUdJ
TigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAJKHJldmlzaW9uIDI4NjA5
NSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmou
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xODY2LDcgKzE4NjYsNyBAQCBwdWJsaWM6CiAgICAgc3Rh
dGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAg
ICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0T2JqUHJvdG90
eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAg
ICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6
U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC05MDA2
LDkgKzkwMDYsOSBAQCBKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3RPYmo6OnN1YnNwYWNlRm9yCiAg
ICAgICAgIHJldHVybiBzcGFjZTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92
PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdE9iaj4gfHwgIUpTVGVzdE9iajo6bmVl
ZHNEZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6
OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RPYmo+KQotICAgICAgICBzcGFjZXMubV9zdWJz
cGFjZUZvclRlc3RPYmogPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5J
VCh2bS5oZWFwLCAqdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLCBKU1Rlc3RPYmop
OworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RPYmogPSBtYWtlVW5pcXVlPElzb1N1
YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RI
ZWFwQ2VsbFR5cGUoKSwgSlNUZXN0T2JqKTsKICAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1
YnNwYWNlRm9yVGVzdE9iaiA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9J
TklUKHZtLmhlYXAsICp2bS5jZWxsSGVhcENlbGxUeXBlLCBKU1Rlc3RPYmopOworICAgICAgICBz
cGFjZXMubV9zdWJzcGFjZUZvclRlc3RPYmogPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09f
U1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCksIEpTVGVzdE9iaik7
CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RPYmouZ2V0KCk7CiBJ
R05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdT
X0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3BlcmF0aW9uQ29uZGl0aW9uYWwuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RP
cGVyYXRpb25Db25kaXRpb25hbC5jcHAJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPcGVyYXRpb25Db25kaXRpb25hbC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTgxLDcgKzgxLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBK
U0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAg
IFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdE9wZXJhdGlvbkNvbmRp
dGlvbmFsUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNw
YWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAg
c3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAg
ICB7CkBAIC0yMzQsOSArMjM0LDkgQEAgSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0T3BlcmF0aW9u
Q29uZGl0aQogICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6Omlz
X2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RPcGVyYXRpb25Db25k
aXRpb25hbD4gfHwgIUpTVGVzdE9wZXJhdGlvbkNvbmRpdGlvbmFsOjpuZWVkc0Rlc3RydWN0aW9u
KTsKICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGli
bGVPYmplY3QsIEpTVGVzdE9wZXJhdGlvbkNvbmRpdGlvbmFsPikKLSAgICAgICAgc3BhY2VzLm1f
c3Vic3BhY2VGb3JUZXN0T3BlcmF0aW9uQ29uZGl0aW9uYWwgPSBtYWtlVW5pcXVlPElzb1N1YnNw
YWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVh
cENlbGxUeXBlLCBKU1Rlc3RPcGVyYXRpb25Db25kaXRpb25hbCk7CisgICAgICAgIHNwYWNlcy5t
X3N1YnNwYWNlRm9yVGVzdE9wZXJhdGlvbkNvbmRpdGlvbmFsID0gbWFrZVVuaXF1ZTxJc29TdWJz
cGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVh
cENlbGxUeXBlKCksIEpTVGVzdE9wZXJhdGlvbkNvbmRpdGlvbmFsKTsKICAgICBlbHNlCi0gICAg
ICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE9wZXJhdGlvbkNvbmRpdGlvbmFsID0gbWFrZVVu
aXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmNlbGxIZWFw
Q2VsbFR5cGUsIEpTVGVzdE9wZXJhdGlvbkNvbmRpdGlvbmFsKTsKKyAgICAgICAgc3BhY2VzLm1f
c3Vic3BhY2VGb3JUZXN0T3BlcmF0aW9uQ29uZGl0aW9uYWwgPSBtYWtlVW5pcXVlPElzb1N1YnNw
YWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCksIEpT
VGVzdE9wZXJhdGlvbkNvbmRpdGlvbmFsKTsKICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1
YnNwYWNlRm9yVGVzdE9wZXJhdGlvbkNvbmRpdGlvbmFsLmdldCgpOwogSUdOT1JFX1dBUk5JTkdT
X0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9s
b2dpY2FsLWNvbXBhcmUiKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVybG9hZGVkQ29u
c3RydWN0b3JzLmNwcAkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC02OSw3ICs2OSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29T
dWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNf
QVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3Jz
UHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOwor
ICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGlj
IEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBA
IC0yOTUsOSArMjk1LDkgQEAgSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0T3ZlcmxvYWRlZENvbnN0
cgogICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vf
b2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0
b3JzPiB8fCAhSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczo6bmVlZHNEZXN0cnVjdGlvbik7
CiAgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxl
T2JqZWN0LCBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzPikKLSAgICAgICAgc3BhY2VzLm1f
c3Vic3BhY2VGb3JUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyA9IG1ha2VVbmlxdWU8SXNvU3Vi
c3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5kZXN0cnVjdGlibGVPYmplY3RI
ZWFwQ2VsbFR5cGUsIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMpOworICAgICAgICBzcGFj
ZXMubV9zdWJzcGFjZUZvclRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzID0gbWFrZVVuaXF1ZTxJ
c29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2Jq
ZWN0SGVhcENlbGxUeXBlKCksIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMpOwogICAgIGVs
c2UKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9y
cyA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2
bS5jZWxsSGVhcENlbGxUeXBlLCBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzKTsKKyAgICAg
ICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyA9IG1ha2VV
bmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFw
Q2VsbFR5cGUoKSwgSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyk7CiAgICAgYXV0byogc3Bh
Y2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmdldCgp
OwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKIElHTk9SRV9XQVJO
SU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRleDogU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRo
U2VxdWVuY2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzV2l0aFNlcXVlbmNlLmNwcAko
cmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2UuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC02OCw3ICs2OCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJz
cGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNT
RVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzV2l0
aFNlcXVlbmNlUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVj
dFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAg
ICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpT
Qzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkK
ICAgICB7CkBAIC0yMzgsOSArMjM4LDkgQEAgSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0T3Zlcmxv
YWRlZENvbnN0cgogICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6
OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RPdmVybG9hZGVk
Q29uc3RydWN0b3JzV2l0aFNlcXVlbmNlPiB8fCAhSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9y
c1dpdGhTZXF1ZW5jZTo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3RleHByIChzdGQ6
OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RPdmVybG9hZGVk
Q29uc3RydWN0b3JzV2l0aFNlcXVlbmNlPikKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JU
ZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5jZSA9IG1ha2VVbmlxdWU8SXNvU3Vi
c3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5kZXN0cnVjdGlibGVPYmplY3RI
ZWFwQ2VsbFR5cGUsIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2UpOwor
ICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzV2l0
aFNlcXVlbmNlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0u
aGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCksIEpTVGVzdE92ZXJsb2Fk
ZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2UpOwogICAgIGVsc2UKLSAgICAgICAgc3BhY2VzLm1f
c3Vic3BhY2VGb3JUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5jZSA9IG1ha2VV
bmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5jZWxsSGVh
cENlbGxUeXBlLCBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzV2l0aFNlcXVlbmNlKTsKKyAg
ICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dpdGhT
ZXF1ZW5jZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhl
YXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dp
dGhTZXF1ZW5jZSk7CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RP
dmVybG9hZGVkQ29uc3RydWN0b3JzV2l0aFNlcXVlbmNlLmdldCgpOwogSUdOT1JFX1dBUk5JTkdT
X0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9s
b2dpY2FsLWNvbXBhcmUiKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdFBsdWdpbkludGVyZmFjZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFBsdWdpbkludGVyZmFjZS5jcHAJ
KHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RQbHVnaW5JbnRlcmZhY2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NCw3ICs2
NCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3Io
SlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9T
SEFSQUJMRShKU1Rlc3RQbHVnaW5JbnRlcmZhY2VQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICBy
ZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmpl
Y3RTcGFjZSgpOwogICAgIH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVj
dHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6
OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKQEAgLTI0NCw5ICsyNDQsOSBAQCBKU0M6Oklzb1N1
YnNwYWNlKiBKU1Rlc3RQbHVnaW5JbnRlcmZhY2U6CiAgICAgICAgIHJldHVybiBzcGFjZTsKICAg
ICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmpl
Y3QsIEpTVGVzdFBsdWdpbkludGVyZmFjZT4gfHwgIUpTVGVzdFBsdWdpbkludGVyZmFjZTo6bmVl
ZHNEZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6
OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RQbHVnaW5JbnRlcmZhY2U+KQotICAgICAgICBz
cGFjZXMubV9zdWJzcGFjZUZvclRlc3RQbHVnaW5JbnRlcmZhY2UgPSBtYWtlVW5pcXVlPElzb1N1
YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0
SGVhcENlbGxUeXBlLCBKU1Rlc3RQbHVnaW5JbnRlcmZhY2UpOworICAgICAgICBzcGFjZXMubV9z
dWJzcGFjZUZvclRlc3RQbHVnaW5JbnRlcmZhY2UgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJ
U09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5
cGUoKSwgSlNUZXN0UGx1Z2luSW50ZXJmYWNlKTsKICAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5t
X3N1YnNwYWNlRm9yVGVzdFBsdWdpbkludGVyZmFjZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+
IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5jZWxsSGVhcENlbGxUeXBlLCBKU1Rlc3RQ
bHVnaW5JbnRlcmZhY2UpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RQbHVnaW5J
bnRlcmZhY2UgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5o
ZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCksIEpTVGVzdFBsdWdpbkludGVyZmFjZSk7CiAgICAg
YXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RQbHVnaW5JbnRlcmZhY2UuZ2V0
KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dB
Uk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50LmNwcAkocmV2aXNpb24gMjg2MDk1KQorKysgU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFByb21pc2VSZWplY3Rp
b25FdmVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0OCw3ICsxNDgsNyBAQCBwdWJsaWM6CiAg
ICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAg
IHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0UHJv
bWlzZVJlamVjdGlvbkV2ZW50UHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5w
bGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsK
ICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpW
TSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHBy
b3RvdHlwZSkKICAgICB7CkBAIC0zMDEsOSArMzAxLDkgQEAgSlNDOjpJc29TdWJzcGFjZSogSlNU
ZXN0UHJvbWlzZVJlamVjdGlvbgogICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fz
c2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RQ
cm9taXNlUmVqZWN0aW9uRXZlbnQ+IHx8ICFKU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQ6Om5l
ZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlND
OjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50PikKLSAg
ICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50ID0gbWFr
ZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmRlc3Ry
dWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSwgSlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50KTsK
KyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50ID0g
bWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVz
dHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCksIEpTVGVzdFByb21pc2VSZWplY3Rpb25FdmVu
dCk7CiAgICAgZWxzZQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RQcm9taXNlUmVq
ZWN0aW9uRXZlbnQgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2
bS5oZWFwLCAqdm0uY2VsbEhlYXBDZWxsVHlwZSwgSlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50
KTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50
ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0u
Y2VsbEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQpOwogICAgIGF1
dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50
LmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKIElHTk9S
RV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRleDogU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFJlYWRPbmx5TWFwTGlrZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdFJlYWRPbmx5TWFwTGlrZS5jcHAJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RSZWFkT25seU1hcExpa2UuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC03OSw3ICs3OSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJ
c29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFU
SUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3RSZWFkT25seU1hcExpa2VQcm90
b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAg
ICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KICAgICBzdGF0aWMgSlND
OjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKQEAgLTMw
NSw5ICszMDUsOSBAQCBKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3RSZWFkT25seU1hcExpa2U6CiAg
ICAgICAgIHJldHVybiBzcGFjZTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92
PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdFJlYWRPbmx5TWFwTGlrZT4gfHwgIUpT
VGVzdFJlYWRPbmx5TWFwTGlrZTo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3RleHBy
IChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RSZWFk
T25seU1hcExpa2U+KQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RSZWFkT25seU1h
cExpa2UgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFw
LCAqdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLCBKU1Rlc3RSZWFkT25seU1hcExp
a2UpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RSZWFkT25seU1hcExpa2UgPSBt
YWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0
cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0UmVhZE9ubHlNYXBMaWtlKTsKICAg
ICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFJlYWRPbmx5TWFwTGlrZSA9
IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5j
ZWxsSGVhcENlbGxUeXBlLCBKU1Rlc3RSZWFkT25seU1hcExpa2UpOworICAgICAgICBzcGFjZXMu
bV9zdWJzcGFjZUZvclRlc3RSZWFkT25seU1hcExpa2UgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNl
PiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCksIEpTVGVz
dFJlYWRPbmx5TWFwTGlrZSk7CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZv
clRlc3RSZWFkT25seU1hcExpa2UuZ2V0KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVh
Y2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFy
ZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
UmVhZE9ubHlTZXRMaWtlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0UmVhZE9ubHlTZXRMaWtlLmNwcAkocmV2aXNpb24gMjg2
MDk1KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFJl
YWRPbmx5U2V0TGlrZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc4LDcgKzc4LDcgQEAgcHVibGlj
OgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkK
ICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVz
dFJlYWRPbmx5U2V0TGlrZVByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxh
aW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAg
ICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0m
IHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90
b3R5cGUpCiAgICAgewpAQCAtMjg0LDkgKzI4NCw5IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVz
dFJlYWRPbmx5U2V0TGlrZToKICAgICAgICAgcmV0dXJuIHNwYWNlOwogICAgIHN0YXRpY19hc3Nl
cnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0UmVh
ZE9ubHlTZXRMaWtlPiB8fCAhSlNUZXN0UmVhZE9ubHlTZXRMaWtlOjpuZWVkc0Rlc3RydWN0aW9u
KTsKICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGli
bGVPYmplY3QsIEpTVGVzdFJlYWRPbmx5U2V0TGlrZT4pCi0gICAgICAgIHNwYWNlcy5tX3N1YnNw
YWNlRm9yVGVzdFJlYWRPbmx5U2V0TGlrZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19T
VUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUs
IEpTVGVzdFJlYWRPbmx5U2V0TGlrZSk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVz
dFJlYWRPbmx5U2V0TGlrZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9J
TklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RS
ZWFkT25seVNldExpa2UpOwogICAgIGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JU
ZXN0UmVhZE9ubHlTZXRMaWtlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNF
X0lOSVQodm0uaGVhcCwgKnZtLmNlbGxIZWFwQ2VsbFR5cGUsIEpTVGVzdFJlYWRPbmx5U2V0TGlr
ZSk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFJlYWRPbmx5U2V0TGlrZSA9IG1h
a2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxI
ZWFwQ2VsbFR5cGUoKSwgSlNUZXN0UmVhZE9ubHlTZXRMaWtlKTsKICAgICBhdXRvKiBzcGFjZSA9
IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFJlYWRPbmx5U2V0TGlrZS5nZXQoKTsKIElHTk9SRV9X
QVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4o
InRhdXRvbG9naWNhbC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RSZXBvcnRFeHRyYU1lbW9yeUNvc3QuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RSZXBvcnRF
eHRyYU1lbW9yeUNvc3QuY3BwCShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0UmVwb3J0RXh0cmFNZW1vcnlDb3N0LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNjMsNyArNjMsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6
SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RB
VElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0UmVwb3J0RXh0cmFNZW1vcnlD
b3N0UHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNl
OworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3Rh
dGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7
CkBAIC0xNzEsOSArMTcxLDkgQEAgSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0UmVwb3J0RXh0cmFN
ZW1vcgogICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jh
c2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RSZXBvcnRFeHRyYU1lbW9y
eUNvc3Q+IHx8ICFKU1Rlc3RSZXBvcnRFeHRyYU1lbW9yeUNvc3Q6Om5lZWRzRGVzdHJ1Y3Rpb24p
OwogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJs
ZU9iamVjdCwgSlNUZXN0UmVwb3J0RXh0cmFNZW1vcnlDb3N0PikKLSAgICAgICAgc3BhY2VzLm1f
c3Vic3BhY2VGb3JUZXN0UmVwb3J0RXh0cmFNZW1vcnlDb3N0ID0gbWFrZVVuaXF1ZTxJc29TdWJz
cGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmRlc3RydWN0aWJsZU9iamVjdEhl
YXBDZWxsVHlwZSwgSlNUZXN0UmVwb3J0RXh0cmFNZW1vcnlDb3N0KTsKKyAgICAgICAgc3BhY2Vz
Lm1fc3Vic3BhY2VGb3JUZXN0UmVwb3J0RXh0cmFNZW1vcnlDb3N0ID0gbWFrZVVuaXF1ZTxJc29T
dWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0
SGVhcENlbGxUeXBlKCksIEpTVGVzdFJlcG9ydEV4dHJhTWVtb3J5Q29zdCk7CiAgICAgZWxzZQot
ICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RSZXBvcnRFeHRyYU1lbW9yeUNvc3QgPSBt
YWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uY2Vs
bEhlYXBDZWxsVHlwZSwgSlNUZXN0UmVwb3J0RXh0cmFNZW1vcnlDb3N0KTsKKyAgICAgICAgc3Bh
Y2VzLm1fc3Vic3BhY2VGb3JUZXN0UmVwb3J0RXh0cmFNZW1vcnlDb3N0ID0gbWFrZVVuaXF1ZTxJ
c29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlw
ZSgpLCBKU1Rlc3RSZXBvcnRFeHRyYU1lbW9yeUNvc3QpOwogICAgIGF1dG8qIHNwYWNlID0gc3Bh
Y2VzLm1fc3Vic3BhY2VGb3JUZXN0UmVwb3J0RXh0cmFNZW1vcnlDb3N0LmdldCgpOwogSUdOT1JF
X1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKIElHTk9SRV9XQVJOSU5HU19CRUdJ
TigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5jcHAJKHJldmlzaW9uIDI4NjA5NSkK
KysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxp
emVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04OSw3ICs4OSw3
IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlND
OjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFS
QUJMRShKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VQcm90b3R5cGUsIEJhc2Up
OwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAm
dm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUq
IGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKQEAgLTM0OSw5ICszNDksOSBA
QCBKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3RTZXJpYWxpemVkU2NyaXB0CiAgICAgICAgIHJldHVy
biBzcGFjZTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0
cnVjdGlibGVPYmplY3QsIEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZT4gfHwg
IUpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZTo6bmVlZHNEZXN0cnVjdGlvbik7
CiAgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxl
T2JqZWN0LCBKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2U+KQotICAgICAgICBz
cGFjZXMubV9zdWJzcGFjZUZvclRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UgPSBt
YWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uZGVz
dHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLCBKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJ
bnRlcmZhY2UpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RTZXJpYWxpemVkU2Ny
aXB0VmFsdWVJbnRlcmZhY2UgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0Vf
SU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0
U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlKTsKICAgICBlbHNlCi0gICAgICAgIHNwYWNl
cy5tX3N1YnNwYWNlRm9yVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSA9IG1ha2VV
bmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5jZWxsSGVh
cENlbGxUeXBlLCBKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UpOworICAgICAg
ICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2Ug
PSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5j
ZWxsSGVhcENlbGxUeXBlKCksIEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSk7
CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RTZXJpYWxpemVkU2Ny
aXB0VmFsdWVJbnRlcmZhY2UuZ2V0KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hh
YmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIp
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2V0
TGlrZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdFNldExpa2UuY3BwCShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2V0TGlrZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTgxLDcgKzgxLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNw
YWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NF
UlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdFNldExpa2VQcm90b3R5cGUsIEJhc2UpOwot
ICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0u
cGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNy
ZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKQEAgLTM0Miw5ICszNDIsOSBAQCBK
U0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3RTZXRMaWtlOjpzdWJzcGFjCiAgICAgICAgIHJldHVybiBz
cGFjZTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVj
dGlibGVPYmplY3QsIEpTVGVzdFNldExpa2U+IHx8ICFKU1Rlc3RTZXRMaWtlOjpuZWVkc0Rlc3Ry
dWN0aW9uKTsKICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0
cnVjdGlibGVPYmplY3QsIEpTVGVzdFNldExpa2U+KQotICAgICAgICBzcGFjZXMubV9zdWJzcGFj
ZUZvclRlc3RTZXRMaWtlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lO
SVQodm0uaGVhcCwgKnZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSwgSlNUZXN0U2V0
TGlrZSk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFNldExpa2UgPSBtYWtlVW5p
cXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGli
bGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0U2V0TGlrZSk7CiAgICAgZWxzZQotICAgICAg
ICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RTZXRMaWtlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFj
ZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmNlbGxIZWFwQ2VsbFR5cGUsIEpTVGVz
dFNldExpa2UpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RTZXRMaWtlID0gbWFr
ZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhl
YXBDZWxsVHlwZSgpLCBKU1Rlc3RTZXRMaWtlKTsKICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5t
X3N1YnNwYWNlRm9yVGVzdFNldExpa2UuZ2V0KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVu
cmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29t
cGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0U2V0TGlrZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNldExpa2VXaXRoT3Zl
cnJpZGRlbk9wZXJhdGlvbnMuY3BwCShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2V0TGlrZVdpdGhPdmVycmlkZGVuT3Bl
cmF0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg1LDcgKzg1LDcgQEAgcHVibGljOgogICAg
IHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7
CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdFNldExp
a2VXaXRoT3ZlcnJpZGRlbk9wZXJhdGlvbnNQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1
cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RT
cGFjZSgpOwogICAgIH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVy
ZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpT
VmFsdWUgcHJvdG90eXBlKQogICAgIHsKQEAgLTM1NCw5ICszNTQsOSBAQCBKU0M6Oklzb1N1YnNw
YWNlKiBKU1Rlc3RTZXRMaWtlV2l0aE92ZXJyCiAgICAgICAgIHJldHVybiBzcGFjZTsKICAgICBz
dGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3Qs
IEpTVGVzdFNldExpa2VXaXRoT3ZlcnJpZGRlbk9wZXJhdGlvbnM+IHx8ICFKU1Rlc3RTZXRMaWtl
V2l0aE92ZXJyaWRkZW5PcGVyYXRpb25zOjpuZWVkc0Rlc3RydWN0aW9uKTsKICAgICBpZiBjb25z
dGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVz
dFNldExpa2VXaXRoT3ZlcnJpZGRlbk9wZXJhdGlvbnM+KQotICAgICAgICBzcGFjZXMubV9zdWJz
cGFjZUZvclRlc3RTZXRMaWtlV2l0aE92ZXJyaWRkZW5PcGVyYXRpb25zID0gbWFrZVVuaXF1ZTxJ
c29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmRlc3RydWN0aWJsZU9i
amVjdEhlYXBDZWxsVHlwZSwgSlNUZXN0U2V0TGlrZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9ucyk7
CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFNldExpa2VXaXRoT3ZlcnJpZGRlbk9w
ZXJhdGlvbnMgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5o
ZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0U2V0TGlrZVdp
dGhPdmVycmlkZGVuT3BlcmF0aW9ucyk7CiAgICAgZWxzZQotICAgICAgICBzcGFjZXMubV9zdWJz
cGFjZUZvclRlc3RTZXRMaWtlV2l0aE92ZXJyaWRkZW5PcGVyYXRpb25zID0gbWFrZVVuaXF1ZTxJ
c29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmNlbGxIZWFwQ2VsbFR5
cGUsIEpTVGVzdFNldExpa2VXaXRoT3ZlcnJpZGRlbk9wZXJhdGlvbnMpOworICAgICAgICBzcGFj
ZXMubV9zdWJzcGFjZUZvclRlc3RTZXRMaWtlV2l0aE92ZXJyaWRkZW5PcGVyYXRpb25zID0gbWFr
ZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhl
YXBDZWxsVHlwZSgpLCBKU1Rlc3RTZXRMaWtlV2l0aE92ZXJyaWRkZW5PcGVyYXRpb25zKTsKICAg
ICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFNldExpa2VXaXRoT3ZlcnJp
ZGRlbk9wZXJhdGlvbnMuZ2V0KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxl
LWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5n
aWZpZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllci5jcHAJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTY5LDcgKzY5LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6
Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNU
QVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdFN0cmluZ2lmaWVyUHJvdG90
eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAg
ICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6
U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC0xOTIs
OSArMTkyLDkgQEAgSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0U3RyaW5naWZpZXI6OnN1YgogICAg
ICAgICByZXR1cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxK
U0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RTdHJpbmdpZmllcj4gfHwgIUpTVGVzdFN0
cmluZ2lmaWVyOjpuZWVkc0Rlc3RydWN0aW9uKTsKICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNf
YmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdFN0cmluZ2lmaWVyPikK
LSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0U3RyaW5naWZpZXIgPSBtYWtlVW5pcXVl
PElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uZGVzdHJ1Y3RpYmxl
T2JqZWN0SGVhcENlbGxUeXBlLCBKU1Rlc3RTdHJpbmdpZmllcik7CisgICAgICAgIHNwYWNlcy5t
X3N1YnNwYWNlRm9yVGVzdFN0cmluZ2lmaWVyID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNP
X1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBl
KCksIEpTVGVzdFN0cmluZ2lmaWVyKTsKICAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNw
YWNlRm9yVGVzdFN0cmluZ2lmaWVyID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQ
QUNFX0lOSVQodm0uaGVhcCwgKnZtLmNlbGxIZWFwQ2VsbFR5cGUsIEpTVGVzdFN0cmluZ2lmaWVy
KTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0U3RyaW5naWZpZXIgPSBtYWtlVW5p
cXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENl
bGxUeXBlKCksIEpTVGVzdFN0cmluZ2lmaWVyKTsKICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5t
X3N1YnNwYWNlRm9yVGVzdFN0cmluZ2lmaWVyLmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lO
KCJ1bnJlYWNoYWJsZS1jb2RlIikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2Fs
LWNvbXBhcmUiKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdFN0cmluZ2lmaWVyQW5vbnltb3VzT3BlcmF0aW9uLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJB
bm9ueW1vdXNPcGVyYXRpb24uY3BwCShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJBbm9ueW1vdXNPcGVy
YXRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02OSw3ICs2OSw3IEBAIHB1YmxpYzoKICAgICBz
dGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewog
ICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3RTdHJpbmdp
ZmllckFub255bW91c09wZXJhdGlvblByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAm
dm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNl
KCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpT
Qzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1
ZSBwcm90b3R5cGUpCiAgICAgewpAQCAtMTkyLDkgKzE5Miw5IEBAIEpTQzo6SXNvU3Vic3BhY2Uq
IEpTVGVzdFN0cmluZ2lmaWVyQW5vbnkKICAgICAgICAgcmV0dXJuIHNwYWNlOwogICAgIHN0YXRp
Y19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNU
ZXN0U3RyaW5naWZpZXJBbm9ueW1vdXNPcGVyYXRpb24+IHx8ICFKU1Rlc3RTdHJpbmdpZmllckFu
b255bW91c09wZXJhdGlvbjo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3RleHByIChz
dGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RTdHJpbmdp
ZmllckFub255bW91c09wZXJhdGlvbj4pCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVz
dFN0cmluZ2lmaWVyQW5vbnltb3VzT3BlcmF0aW9uID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4g
SVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxs
VHlwZSwgSlNUZXN0U3RyaW5naWZpZXJBbm9ueW1vdXNPcGVyYXRpb24pOworICAgICAgICBzcGFj
ZXMubV9zdWJzcGFjZUZvclRlc3RTdHJpbmdpZmllckFub255bW91c09wZXJhdGlvbiA9IG1ha2VV
bmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0
aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RTdHJpbmdpZmllckFub255bW91c09wZXJh
dGlvbik7CiAgICAgZWxzZQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RTdHJpbmdp
ZmllckFub255bW91c09wZXJhdGlvbiA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJT
UEFDRV9JTklUKHZtLmhlYXAsICp2bS5jZWxsSGVhcENlbGxUeXBlLCBKU1Rlc3RTdHJpbmdpZmll
ckFub255bW91c09wZXJhdGlvbik7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFN0
cmluZ2lmaWVyQW5vbnltb3VzT3BlcmF0aW9uID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNP
X1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RTdHJp
bmdpZmllckFub255bW91c09wZXJhdGlvbik7CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9z
dWJzcGFjZUZvclRlc3RTdHJpbmdpZmllckFub255bW91c09wZXJhdGlvbi5nZXQoKTsKIElHTk9S
RV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVH
SU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllck5hbWVkT3BlcmF0aW9uLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
U3RyaW5naWZpZXJOYW1lZE9wZXJhdGlvbi5jcHAJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllck5hbWVk
T3BlcmF0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzAsNyArNzAsNyBAQCBwdWJsaWM6CiAg
ICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAg
IHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0U3Ry
aW5naWZpZXJOYW1lZE9wZXJhdGlvblByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAm
dm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNl
KCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpT
Qzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1
ZSBwcm90b3R5cGUpCiAgICAgewpAQCAtMjA5LDkgKzIwOSw5IEBAIEpTQzo6SXNvU3Vic3BhY2Uq
IEpTVGVzdFN0cmluZ2lmaWVyTmFtZWQKICAgICAgICAgcmV0dXJuIHNwYWNlOwogICAgIHN0YXRp
Y19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNU
ZXN0U3RyaW5naWZpZXJOYW1lZE9wZXJhdGlvbj4gfHwgIUpTVGVzdFN0cmluZ2lmaWVyTmFtZWRP
cGVyYXRpb246Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19i
YXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0U3RyaW5naWZpZXJOYW1l
ZE9wZXJhdGlvbj4pCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFN0cmluZ2lmaWVy
TmFtZWRPcGVyYXRpb24gPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5J
VCh2bS5oZWFwLCAqdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLCBKU1Rlc3RTdHJp
bmdpZmllck5hbWVkT3BlcmF0aW9uKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0
U3RyaW5naWZpZXJOYW1lZE9wZXJhdGlvbiA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19T
VUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgp
LCBKU1Rlc3RTdHJpbmdpZmllck5hbWVkT3BlcmF0aW9uKTsKICAgICBlbHNlCi0gICAgICAgIHNw
YWNlcy5tX3N1YnNwYWNlRm9yVGVzdFN0cmluZ2lmaWVyTmFtZWRPcGVyYXRpb24gPSBtYWtlVW5p
cXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uY2VsbEhlYXBD
ZWxsVHlwZSwgSlNUZXN0U3RyaW5naWZpZXJOYW1lZE9wZXJhdGlvbik7CisgICAgICAgIHNwYWNl
cy5tX3N1YnNwYWNlRm9yVGVzdFN0cmluZ2lmaWVyTmFtZWRPcGVyYXRpb24gPSBtYWtlVW5pcXVl
PElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxU
eXBlKCksIEpTVGVzdFN0cmluZ2lmaWVyTmFtZWRPcGVyYXRpb24pOwogICAgIGF1dG8qIHNwYWNl
ID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0U3RyaW5naWZpZXJOYW1lZE9wZXJhdGlvbi5nZXQo
KTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVfV0FS
TklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbkltcGxl
bWVudGVkQXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbkltcGxlbWVudGVkQXMuY3BwCShy
ZXZpc2lvbiAyODYwOTUpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25JbXBsZW1lbnRlZEFzLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNzAsNyArNzAsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3Bh
Y2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VS
VF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25JbXBsZW1l
bnRlZEFzUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNw
YWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAg
c3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAg
ICB7CkBAIC0yMDksOSArMjA5LDkgQEAgSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0U3RyaW5naWZp
ZXJPcGVyYQogICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6Omlz
X2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RTdHJpbmdpZmllck9w
ZXJhdGlvbkltcGxlbWVudGVkQXM+IHx8ICFKU1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbkltcGxl
bWVudGVkQXM6Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19i
YXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0U3RyaW5naWZpZXJPcGVy
YXRpb25JbXBsZW1lbnRlZEFzPikKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0U3Ry
aW5naWZpZXJPcGVyYXRpb25JbXBsZW1lbnRlZEFzID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4g
SVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxs
VHlwZSwgSlNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25JbXBsZW1lbnRlZEFzKTsKKyAgICAgICAg
c3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25JbXBsZW1lbnRlZEFz
ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0u
ZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCksIEpTVGVzdFN0cmluZ2lmaWVyT3BlcmF0
aW9uSW1wbGVtZW50ZWRBcyk7CiAgICAgZWxzZQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZv
clRlc3RTdHJpbmdpZmllck9wZXJhdGlvbkltcGxlbWVudGVkQXMgPSBtYWtlVW5pcXVlPElzb1N1
YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uY2VsbEhlYXBDZWxsVHlwZSwg
SlNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25JbXBsZW1lbnRlZEFzKTsKKyAgICAgICAgc3BhY2Vz
Lm1fc3Vic3BhY2VGb3JUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25JbXBsZW1lbnRlZEFzID0gbWFr
ZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhl
YXBDZWxsVHlwZSgpLCBKU1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbkltcGxlbWVudGVkQXMpOwog
ICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0U3RyaW5naWZpZXJPcGVy
YXRpb25JbXBsZW1lbnRlZEFzLmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNo
YWJsZS1jb2RlIikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUi
KQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0
cmluZ2lmaWVyT3BlcmF0aW9uTmFtZWRUb1N0cmluZy5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyT3BlcmF0
aW9uTmFtZWRUb1N0cmluZy5jcHAJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbk5hbWVk
VG9TdHJpbmcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02OSw3ICs2OSw3IEBAIHB1YmxpYzoKICAg
ICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAg
ewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3RTdHJp
bmdpZmllck9wZXJhdGlvbk5hbWVkVG9TdHJpbmdQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICBy
ZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmpl
Y3RTcGFjZSgpOwogICAgIH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVj
dHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6
OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKQEAgLTE5Miw5ICsxOTIsOSBAQCBKU0M6Oklzb1N1
YnNwYWNlKiBKU1Rlc3RTdHJpbmdpZmllck9wZXJhCiAgICAgICAgIHJldHVybiBzcGFjZTsKICAg
ICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmpl
Y3QsIEpTVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uTmFtZWRUb1N0cmluZz4gfHwgIUpTVGVzdFN0
cmluZ2lmaWVyT3BlcmF0aW9uTmFtZWRUb1N0cmluZzo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAg
aWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0
LCBKU1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbk5hbWVkVG9TdHJpbmc+KQotICAgICAgICBzcGFj
ZXMubV9zdWJzcGFjZUZvclRlc3RTdHJpbmdpZmllck9wZXJhdGlvbk5hbWVkVG9TdHJpbmcgPSBt
YWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uZGVz
dHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLCBKU1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbk5h
bWVkVG9TdHJpbmcpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RTdHJpbmdpZmll
ck9wZXJhdGlvbk5hbWVkVG9TdHJpbmcgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VC
U1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwg
SlNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25OYW1lZFRvU3RyaW5nKTsKICAgICBlbHNlCi0gICAg
ICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uTmFtZWRUb1N0
cmluZyA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAs
ICp2bS5jZWxsSGVhcENlbGxUeXBlLCBKU1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbk5hbWVkVG9T
dHJpbmcpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RTdHJpbmdpZmllck9wZXJh
dGlvbk5hbWVkVG9TdHJpbmcgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0Vf
SU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCksIEpTVGVzdFN0cmluZ2lmaWVyT3Bl
cmF0aW9uTmFtZWRUb1N0cmluZyk7CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFj
ZUZvclRlc3RTdHJpbmdpZmllck9wZXJhdGlvbk5hbWVkVG9TdHJpbmcuZ2V0KCk7CiBJR05PUkVf
V0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lO
KCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJSZWFkT25seUF0dHJpYnV0ZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dFN0cmluZ2lmaWVyUmVhZE9ubHlBdHRyaWJ1dGUuY3BwCShyZXZpc2lvbiAyODYwOTUpCisrKyBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJS
ZWFkT25seUF0dHJpYnV0ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcxLDcgKzcxLDcgQEAgcHVi
bGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2
bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpT
VGVzdFN0cmluZ2lmaWVyUmVhZE9ubHlBdHRyaWJ1dGVQcm90b3R5cGUsIEJhc2UpOwotICAgICAg
ICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5P
YmplY3RTcGFjZSgpOwogICAgIH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0
cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBK
U0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKQEAgLTIwOCw5ICsyMDgsOSBAQCBKU0M6Oklz
b1N1YnNwYWNlKiBKU1Rlc3RTdHJpbmdpZmllclJlYWRPCiAgICAgICAgIHJldHVybiBzcGFjZTsK
ICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVP
YmplY3QsIEpTVGVzdFN0cmluZ2lmaWVyUmVhZE9ubHlBdHRyaWJ1dGU+IHx8ICFKU1Rlc3RTdHJp
bmdpZmllclJlYWRPbmx5QXR0cmlidXRlOjpuZWVkc0Rlc3RydWN0aW9uKTsKICAgICBpZiBjb25z
dGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVz
dFN0cmluZ2lmaWVyUmVhZE9ubHlBdHRyaWJ1dGU+KQotICAgICAgICBzcGFjZXMubV9zdWJzcGFj
ZUZvclRlc3RTdHJpbmdpZmllclJlYWRPbmx5QXR0cmlidXRlID0gbWFrZVVuaXF1ZTxJc29TdWJz
cGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmRlc3RydWN0aWJsZU9iamVjdEhl
YXBDZWxsVHlwZSwgSlNUZXN0U3RyaW5naWZpZXJSZWFkT25seUF0dHJpYnV0ZSk7CisgICAgICAg
IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFN0cmluZ2lmaWVyUmVhZE9ubHlBdHRyaWJ1dGUgPSBt
YWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0
cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0U3RyaW5naWZpZXJSZWFkT25seUF0
dHJpYnV0ZSk7CiAgICAgZWxzZQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RTdHJp
bmdpZmllclJlYWRPbmx5QXR0cmlidXRlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NV
QlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmNlbGxIZWFwQ2VsbFR5cGUsIEpTVGVzdFN0cmluZ2lm
aWVyUmVhZE9ubHlBdHRyaWJ1dGUpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RT
dHJpbmdpZmllclJlYWRPbmx5QXR0cmlidXRlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNP
X1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RTdHJp
bmdpZmllclJlYWRPbmx5QXR0cmlidXRlKTsKICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1
YnNwYWNlRm9yVGVzdFN0cmluZ2lmaWVyUmVhZE9ubHlBdHRyaWJ1dGUuZ2V0KCk7CiBJR05PUkVf
V0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lO
KCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJSZWFkV3JpdGVBdHRyaWJ1dGUuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RTdHJpbmdpZmllclJlYWRXcml0ZUF0dHJpYnV0ZS5jcHAJKHJldmlzaW9uIDI4NjA5NSkKKysr
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmll
clJlYWRXcml0ZUF0dHJpYnV0ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcyLDcgKzcyLDcgQEAg
cHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZN
JiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxF
KEpTVGVzdFN0cmluZ2lmaWVyUmVhZFdyaXRlQXR0cmlidXRlUHJvdG90eXBlLCBCYXNlKTsKLSAg
ICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBs
YWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVh
dGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC0yMjcsOSArMjI3LDkgQEAgSlND
OjpJc29TdWJzcGFjZSogSlNUZXN0U3RyaW5naWZpZXJSZWFkVwogICAgICAgICByZXR1cm4gc3Bh
Y2U7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3Rp
YmxlT2JqZWN0LCBKU1Rlc3RTdHJpbmdpZmllclJlYWRXcml0ZUF0dHJpYnV0ZT4gfHwgIUpTVGVz
dFN0cmluZ2lmaWVyUmVhZFdyaXRlQXR0cmlidXRlOjpuZWVkc0Rlc3RydWN0aW9uKTsKICAgICBp
ZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3Qs
IEpTVGVzdFN0cmluZ2lmaWVyUmVhZFdyaXRlQXR0cmlidXRlPikKLSAgICAgICAgc3BhY2VzLm1f
c3Vic3BhY2VGb3JUZXN0U3RyaW5naWZpZXJSZWFkV3JpdGVBdHRyaWJ1dGUgPSBtYWtlVW5pcXVl
PElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uZGVzdHJ1Y3RpYmxl
T2JqZWN0SGVhcENlbGxUeXBlLCBKU1Rlc3RTdHJpbmdpZmllclJlYWRXcml0ZUF0dHJpYnV0ZSk7
CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFN0cmluZ2lmaWVyUmVhZFdyaXRlQXR0
cmlidXRlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVh
cCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCksIEpTVGVzdFN0cmluZ2lmaWVy
UmVhZFdyaXRlQXR0cmlidXRlKTsKICAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNl
Rm9yVGVzdFN0cmluZ2lmaWVyUmVhZFdyaXRlQXR0cmlidXRlID0gbWFrZVVuaXF1ZTxJc29TdWJz
cGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmNlbGxIZWFwQ2VsbFR5cGUsIEpT
VGVzdFN0cmluZ2lmaWVyUmVhZFdyaXRlQXR0cmlidXRlKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vi
c3BhY2VGb3JUZXN0U3RyaW5naWZpZXJSZWFkV3JpdGVBdHRyaWJ1dGUgPSBtYWtlVW5pcXVlPElz
b1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBl
KCksIEpTVGVzdFN0cmluZ2lmaWVyUmVhZFdyaXRlQXR0cmlidXRlKTsKICAgICBhdXRvKiBzcGFj
ZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFN0cmluZ2lmaWVyUmVhZFdyaXRlQXR0cmlidXRl
LmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKIElHTk9S
RV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRleDogU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFR5cGVkZWZzLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0VHlw
ZWRlZnMuY3BwCShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0VHlwZWRlZnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTYs
NyArMTE2LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFj
ZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQ
QUNFX1NIQVJBQkxFKEpTVGVzdFR5cGVkZWZzUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0
dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0
U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1
cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpK
U1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC03NzgsOSArNzc4LDkgQEAgSlNDOjpJc29TdWJz
cGFjZSogSlNUZXN0VHlwZWRlZnM6OnN1YnNwYQogICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAg
c3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0
LCBKU1Rlc3RUeXBlZGVmcz4gfHwgIUpTVGVzdFR5cGVkZWZzOjpuZWVkc0Rlc3RydWN0aW9uKTsK
ICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVP
YmplY3QsIEpTVGVzdFR5cGVkZWZzPikKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0
VHlwZWRlZnMgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5o
ZWFwLCAqdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLCBKU1Rlc3RUeXBlZGVmcyk7
CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFR5cGVkZWZzID0gbWFrZVVuaXF1ZTxJ
c29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2Jq
ZWN0SGVhcENlbGxUeXBlKCksIEpTVGVzdFR5cGVkZWZzKTsKICAgICBlbHNlCi0gICAgICAgIHNw
YWNlcy5tX3N1YnNwYWNlRm9yVGVzdFR5cGVkZWZzID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4g
SVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmNlbGxIZWFwQ2VsbFR5cGUsIEpTVGVzdFR5
cGVkZWZzKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0VHlwZWRlZnMgPSBtYWtl
VW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVh
cENlbGxUeXBlKCksIEpTVGVzdFR5cGVkZWZzKTsKICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5t
X3N1YnNwYWNlRm9yVGVzdFR5cGVkZWZzLmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1
bnJlYWNoYWJsZS1jb2RlIikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNv
bXBhcmUiKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
V29ya2VyR2xvYmFsU2NvcGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1dvcmtlckdsb2JhbFNjb3BlLmNwcAkocmV2aXNpb24gMjg2
MDk1KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTV29ya2Vy
R2xvYmFsU2NvcGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNDksNyArMjQ5LDcgQEAgSlNDOjpJ
c29TdWJzcGFjZSogSlNXb3JrZXJHbG9iYWxTY29wZTo6cwogICAgIGF1dG8mIHNwYWNlcyA9IGNs
aWVudERhdGEuc3Vic3BhY2VzKCk7CiAgICAgaWYgKGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vi
c3BhY2VGb3JXb3JrZXJHbG9iYWxTY29wZS5nZXQoKSkKICAgICAgICAgcmV0dXJuIHNwYWNlOwot
ICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yV29ya2VyR2xvYmFsU2NvcGUgPSBtYWtlVW5pcXVlPElz
b1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqY2xpZW50RGF0YS5tX2hlYXBD
ZWxsVHlwZUZvckpTV29ya2VyR2xvYmFsU2NvcGUsIEpTV29ya2VyR2xvYmFsU2NvcGUpOworICAg
IHNwYWNlcy5tX3N1YnNwYWNlRm9yV29ya2VyR2xvYmFsU2NvcGUgPSBtYWtlVW5pcXVlPElzb1N1
YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCBjbGllbnREYXRhLm1faGVhcENlbGxU
eXBlRm9ySlNXb3JrZXJHbG9iYWxTY29wZSwgSlNXb3JrZXJHbG9iYWxTY29wZSk7CiAgICAgYXV0
byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvcldvcmtlckdsb2JhbFNjb3BlLmdldCgpOwog
SUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKIElHTk9SRV9XQVJOSU5H
U19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTV29ya2VyR2xvYmFsU2NvcGUuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNXb3JrZXJHbG9iYWxT
Y29wZS5oCShyZXZpc2lvbiAyODYwOTUpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNXb3JrZXJHbG9iYWxTY29wZS5oCSh3b3JraW5nIGNvcHkpCkBAIC04NSw3
ICs4NSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VG
b3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFD
RV9TSEFSQUJMRShKU1dvcmtlckdsb2JhbFNjb3BlUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAg
cmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2Jq
ZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1
Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlND
OjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNXb3JrbGV0R2xvYmFsU2NvcGUuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1dvcmtsZXRHbG9iYWxT
Y29wZS5jcHAJKHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1dvcmtsZXRHbG9iYWxTY29wZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTE2Myw3ICsxNjMsNyBAQCBKU0M6Oklzb1N1YnNwYWNlKiBKU1dvcmtsZXRHbG9iYWxTY29wZTo6
CiAgICAgYXV0byYgc3BhY2VzID0gY2xpZW50RGF0YS5zdWJzcGFjZXMoKTsKICAgICBpZiAoYXV0
byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvcldvcmtsZXRHbG9iYWxTY29wZS5nZXQoKSkK
ICAgICAgICAgcmV0dXJuIHNwYWNlOwotICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yV29ya2xldEds
b2JhbFNjb3BlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0u
aGVhcCwgKmNsaWVudERhdGEubV9oZWFwQ2VsbFR5cGVGb3JKU1dvcmtsZXRHbG9iYWxTY29wZSwg
SlNXb3JrbGV0R2xvYmFsU2NvcGUpOworICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yV29ya2xldEds
b2JhbFNjb3BlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0u
aGVhcCwgY2xpZW50RGF0YS5tX2hlYXBDZWxsVHlwZUZvckpTV29ya2xldEdsb2JhbFNjb3BlLCBK
U1dvcmtsZXRHbG9iYWxTY29wZSk7CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFj
ZUZvcldvcmtsZXRHbG9iYWxTY29wZS5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5y
ZWFjaGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21w
YXJlIikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1dv
cmtsZXRHbG9iYWxTY29wZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1dvcmtsZXRHbG9iYWxTY29wZS5oCShyZXZpc2lvbiAyODYwOTUp
CisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNXb3JrbGV0R2xv
YmFsU2NvcGUuaAkod29ya2luZyBjb3B5KQpAQCAtODUsNyArODUsNyBAQCBwdWJsaWM6CiAgICAg
c3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsK
ICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNXb3JrbGV0R2xv
YmFsU2NvcGVQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0
U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KICAg
ICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlND
OjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQog
ICAgIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfcnVudGltZS5tbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX3J1bnRpbWUubW0J
KHJldmlzaW9uIDI4NjA5NSkKKysrIFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfcnVu
dGltZS5tbQkod29ya2luZyBjb3B5KQpAQCAtMzM1LDcgKzMzNSw3IEBAIGJvb2wgT2JqY0ZhbGxi
YWNrT2JqZWN0SW1wOjp0b0Jvb2xlYW4oSlMKIEpTQzo6SXNvU3Vic3BhY2UqIE9iamNGYWxsYmFj
a09iamVjdEltcDo6c3Vic3BhY2VGb3JJbXBsKEpTQzo6Vk0mIHZtKQogewogICAgIHN0YXRpYyBO
ZXZlckRlc3Ryb3llZDxKU0M6Oklzb1N1YnNwYWNlUGVyVk0+IHBlclZNKFtdIChKU0M6OlZNJiB2
bSkgewotICAgICAgICByZXR1cm4gSVNPX1NVQlNQQUNFX1BBUkFNRVRFUlMoKnZtLmRlc3RydWN0
aWJsZU9iamVjdEhlYXBDZWxsVHlwZSwgT2JqY0ZhbGxiYWNrT2JqZWN0SW1wKTsKKyAgICAgICAg
cmV0dXJuIElTT19TVUJTUEFDRV9QQVJBTUVURVJTKHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBD
ZWxsVHlwZSgpLCBPYmpjRmFsbGJhY2tPYmplY3RJbXApOwogICAgIH0pOwogICAgIHJldHVybiAm
cGVyVk0uZ2V0KCkuZm9yVk0odm0pOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvd29ya2Vycy9X
b3JrZXJPcldvcmtsZXRTY3JpcHRDb250cm9sbGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvd29ya2Vycy9Xb3JrZXJPcldvcmtsZXRTY3JpcHRDb250cm9sbGVyLmgJKHJldmlzaW9u
IDI4NjA5NSkKKysrIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyT3JXb3JrbGV0U2NyaXB0
Q29udHJvbGxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw2ICszOCw3IEBACiBuYW1lc3BhY2Ug
SlNDIHsKIGNsYXNzIEV4Y2VwdGlvbjsKIGNsYXNzIEpTR2xvYmFsT2JqZWN0OworY2xhc3MgSlNN
b2R1bGVSZWNvcmQ7CiBjbGFzcyBWTTsKIH0KIApJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQ29jb2EvTW9kZWxFbGVtZW50Q29udHJvbGxlckNvY29hLm1tCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL01vZGVsRWxlbWVudENvbnRyb2xsZXJDb2NvYS5t
bQkocmV2aXNpb24gMjg2MDk1KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTW9k
ZWxFbGVtZW50Q29udHJvbGxlckNvY29hLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yMzMsNiArMjMz
LDEwIEBAIHZvaWQgTW9kZWxFbGVtZW50Q29udHJvbGxlcjo6aGFuZGxlTW91c2UKIAogI2lmIEVO
QUJMRShBUktJVF9JTkxJTkVfUFJFVklFVykKIAorI3VuZGVmIEVOQUJMRV9BUktJVF9JTkxJTkVf
UFJFVklFV19DQU1FUkFfVFJBTlNGT1JNIC8vIG1sYW0gSEFDSworI3VuZGVmIEVOQUJMRV9BUktJ
VF9JTkxJTkVfUFJFVklFV19BTklNQVRJT05TX0NPTlRST0wgLy8gbWxhbSBIQUNLCisjdW5kZWYg
RU5BQkxFX0FSS0lUX0lOTElORV9QUkVWSUVXX0FVRElPX0NPTlRST0wgLy8gbWxhbSBIQUNLCisK
IHN0YXRpYyBib29sIHByZXZpZXdIYXNDYW1lcmFTdXBwb3J0KEFTVklubGluZVByZXZpZXcgKnBy
ZXZpZXcpCiB7CiAjaWYgRU5BQkxFKEFSS0lUX0lOTElORV9QUkVWSUVXX0NBTUVSQV9UUkFOU0ZP
Uk0pCg==
</data>
<flag name="commit-queue"
          id="470132"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
      

    </bug>

</bugzilla>